Немного оффтопа. Wait используется для выполнения опкодов, а также для прерывания на заданное кол-во времени. Что это значит: пока игра не встретит wait, все опкоды не будут применены, а также если не будет wait игра встанет на паузу (черный экран). По сути обязательное условие. Исключение составляет конец скрипта. По идее wait надо назвать так: "execute_with_timer". Благодаря wait мы имеем склейку опкодов, т.е. это гарантирует, при отсутствии ошибок, последовательное применение данных опкодов за один раз (конечно за одну и ту же долю секунду это не произодет по понятным причинам). Из этого расчета и строится весь скрипт. Например, мы хотим применить какие-то задачи для актера, при условии что это выполнимо, можно писать, без проверки что актер жив, сколько угодно опкодов для актера. НО в самом начале необходимо поставить проверку, далее когда наши условия будут удовлетворены, ставим wait, и что происходит, начинается обработка опкодов и применение их. Так устроен движок, а именно, все активные потоки, включая main, проходят по этапно от wait к wait. Движок проверяет, найден wait идем дальше, нету в потоке wait и поток завершился игра встает на паузу, что мы наблюдаем при неграматном скриптинге.
Еще офтоп. Вообще это плохо, что нету встроенной проверки обхода ошибок - предсказуемого поведения при наличии ошибок. Это обеспечило бы скриптеру фору по времени и не пришлось бы перезапускать все, но это не сделано и скорей всего не так просто, поэтому ошибки целиком и полностью перекладываются на руки скириптера.