edit: scrap that. I misread the OP.
But still, you can't implement a delay or wait function over one run of a script's execution. Your game will freeze for as long it takes this delay to end.
You will have to let your script run to its end so other scripts and processes get the chance to run and do something.
You can use GetSecondsPassed to make a timer run down which is checked against < 0 for the next run through your script, basically making your script wait for the timer to run out before it does anything again.
... set timer to timer - GetSecondsPassed if timer > 0 return ; ends execution of your script for this frame so others can execute endif ... ; some place in your script where the updated dialog option shall be used if waitForDlgOptToUpdate == 1 ; we were waiting 2 seconds for it to update set (quest).fQuestDelayTime to 5 set waitForDlgOptToUpdate to 0 ; execute this block only once ; do whatever you had to wait for the update for endif ; --- ... ; some place in your script where you want the dialog option to update set timer to 2 ; will make it wait 2 seconds, as in not pass the initial check above before 2 seconds are over set (quest).fQuestDelayTime to 0.1 set waitForDlgOptToUpdate to 1 ; --- ...