Прикручиваем "книгу действий"

Прикручивал «книгу действий» - экран который вызывается при нажатии на персонажа.
Легко нарисовал прямоугольник, вставил первый клип – активация телепорта, и столкнулся с проблемой №1.Не называешь клип как инстанцию – не получаешь к ней доступа, называешь – ошибка , что данный клип используется другой инстанцией. Отжимаешь галку экспорт в ActiveScript – ошибка пропадает, но т.к. клип лежит на другом клипе (книге), то доступа до него нет. Короче что-то не то. И уже было (с кнопкой конец хода)

Затем нашлась другая проблема – клики по геймплею перехватываются onClipEvent (mouseUp) – когда отжата левая кнопка мыши. При нажатии на крестик-кнопку у книжке, книга закрывалась (_visible=false), переключался режим _root.gamemode=1 (по нему я отслеживаю режим игры 1 – поле, 2 – книга) и срабатывал event уже на поле (gamemode уже было равно 1.

На обработчик повесил проверку lastclick = getTimer(), и обработка только если прошло времени больше 100ms, а при закрытии книги – присваивал ему нужное значение. Пока фиксил этот баг – нашел фичу – у меня возможность перехода на клетку пока определяется просто – если клетка свободная то можно. И получается, что если две стены образуют угол то можно пройти сквозь них по диагонали (это я определил когда сработал event после кнопки «закрыть» - кнопка была строго по диагонали). Пофиксил переход по диагонали возможен только при возможном переходе по периметру.

Самый коварный баг подстерегал меня на последок. При активации телепорта, сервер получал сигнал активации, выводил персонаж из лабиринта и генерил событие «покидания лабиринта», которое должно быть обработано клиентом владельца персонажа и отрефрешить игровую страницу. Для остальных – появилось бы сообщение «Игрок XXXX покинул лабиринт».

Все красиво на бумаге, но забыли про овраги. Сервер обрабатывает запрос, генерит событие и выводить персонаж из лабиринта (помечает mazeid = 0). Клиент получает ответ, что событие успешно получено и есть не полученные события (lastaction приходил) и соотвественно запрашивал, а что это за события? (а событие – типа покидание лабиринта) на что сервер честно отвечал – «а ты не в лабиринте, браток».
Пофиксил – теперь последние события возвращаются также после makeAction (аналогично getactionlist).