Большое спасибо за детальные комментарий ув. Долгий и ув. Jack of shadows.
Проблема в том, что как я понимаю, если в хуке UnitMove я возвращаю not nil, то юнит не должен дальше перемещаться. У меня же получается ситуация, почему-то, что юнит и кастует заклинание, и делает ход, при чём ход он делает первым. Я перепроверил документацию Novik'a, там тоже написано, что UnitMove должен вызываться перед каждым ходом стека существа.
То есть, ожидаемая последовательность действий:
1. Существо получает ход
2. Наступает хук UnitMove
3. В хуке я накладываю слепоту и возвращаю not nil
4. Существо остаётся на своём месте, проиграв анимацию заклинания.
Реальная последовательность действий:
1. Существо получает ход
2. Наступакт хук UnitMove
3. Существо делает действие (бежит вперёд или атакует, если дотягивается)
4. Передаётся действие моему обработчику и существо накладывает заклинание
5. возвращается not nil
Можете подсказать, пожалуйста, в каком направлении я допустил ошибку? Я так понимаю, что должно сначала выполняться тело хука, а потом только действие существа, а не наоборот.