Thank you for the suggestion Le Jingle
Here is where I was going and ended up 
Code:
procedure StartBattle();
var
x, y, failSafe: Integer;
loopRuntime: Integer;
begin
// Find and click the start button
FindDTM(DTMFromString(startButtonDTMString), x, y, GSX1, GSY1, GSX2, GSY2);
Mouse(x, y, 0, 0, mouse_Left);
Wait(1500);
failSafe := 0;
MarkTime(loopRuntime);
while (not(FindDTM(DTMFromString(fightStartedDTMString), x, y, GSX1, GSY1, GSX2, GSY2))) do
begin
// While the fight started DTM is not found wait 150 ms and try again
Wait(150);
// If we have waited 10 seconds and the fight hasn't started
if (TimeFromMark(loopRuntime) > 10000) then
begin
// Reset the timer and increment the failSafe counter
MarkTime(loopRuntime);
Inc(failSafe);
// If we have waited 10 seconds twice then something is wrong
if (failSafe > 1) then
ThrowErrorAndTerminate('Error Starting Fight');
// If the start button is found click it
if (FindDTM(DTMFromString(startButtonDTMString), x, y, GSX1, GSY1, GSX2, GSY2)) then
Mouse(x, y, 0, 0, mouse_Left);
end;
end;
end;