Игра не собирается дожидаться, пока герой дойдёт до точки. Отпустила в свободное плавание — и вперёд. Вам надо либо придумать хитрое условие, по которому проверять, напал ли герой, — while УСЛОВИЕ do sleep() end и потом уже ифы с роликами. Либо — битву запускать старткомбатом (сразу после MoveHero) и ролик вынести со всеми остальными ифами в новую функцию, которую указать коллбэком для старткомбата.