Ah, I see. So EScore will change (possibly) during the time delay. Try this. Syntax etc not guaranteed.
_counter = EScore
; EScore may change in this interval
~30
?(_counter == EScore):Goto "Lose"
?(_counter < EScore):hint format ["My script is fubar.\n_counter - %1\nEScore - %2", _counter, EScore"]
exit
#Lose
hint format ["Lose activated!\n_counter - %1\nEScore - %2", _counter, EScore"]
DisableUserInput True;
FlagE Setflagowner ap1
~8
titlecut ["","PLAIN DOWN"] <---- is this meant to be blank?
[ap1] exec "westwin.sqs"
exit