Знаю что стенсил тут не популярен, но возможно кто то просто поймет какая у меня ошибка в логике.
Начну с того, что сделать по нормальному движение по клеткам, я в стенсиле не сумел. Потому сделал его тем способом, до которого додумался

Задача, сделать движение в 2 этапа: ход игрока, ход монстров.
Переменные:
Stay -может ли двигаться игрок в свой ход (тру - да, фолз - нет).
StepHero - ходит ли сейчас игрок (тру - да, фолз - нет).
StepEnemy - ходит ли сейчас монстр (тру - да, фолз - нет).
1) Если отпускаем S, проверяем, если Stay и StepHero = Trye, то делаем Stay = false (чтобы нельзя было сделать еще один шаг в свой ход)
Создаем "СтопКоробку" в определенных координатах, и направляем игрока в эти координаты.

2) Проверяем, если игрок колизится со "СтопКоробкой", останавливаем игрока. Делаем StepHero = false (Ход игрока окончен), Делаем StepEnemy = trye (Начинается ход монстров).

3) Логики у монстров пока нет, поэтому проверяю работоспособность кода простой проверкой.
Если StepHero не равен Trye, если Stay не равен Trye, если Step Enemy = trye, то по истечении 2х секунд запускам код: Приравниваем Step Enemy к False, StepHero к Trye, Stay к Trye.

Проблема: После первого шага, пауза есть, она равна 2-м секундам, но после этой паузы, если быстро жать кнопку ходьбы, почему то можно сделать несколько шагов сразу, потом опять пауза, если жать еще быстрее, то можно ходить даже больше 2х секунд (при этом почему то за то время пока игрок двигается Step постоянно равняется trye, то есть можно создавать несколько стопбоксов).
Вот сам swf:
http://gametrax.eu/game/34e17ef20c