Места и нюансы срабатывания событий и некоторых хуков
Описано еще не всё, исправления дополнения можно выкладывать в эту тему, буду добавлять в пост
 
OnTownMouseHint 
ПОСЛЕ вывода любой подсказки в экране города, НЕ работает в экранах замка/городского холла/рынка/таверны/жилищ и пр. 
 
OnEnterTownHall 
ПЕРЕД входом в городской холл из экране города 
 
OnLeaveTownHall 
ПОСЛЕ выхода в экран города из экрана городского холла 
при постройке здания срабатывает ПОСЛЕ OnBuildTownBuilding и отрисовки здания в экране города 
 
OnBuildTownBuilding 
после постройки здания и закрытия экрана городского холла, но до отрисовко здания в экране города 
 
OnSwitchTownScreen 
перед переключением на другой город из окна города. Срабатывают: OnSwitchTownScreen, OnPostTownScreen, OnPreTownScreen. 
События OnOpenTownScreen, OnCloseTownScreen при переключении НЕ срабатывают 
 
OnOpenTownScreen, OnPreTownScreen 
перед открытием окна города, срабатывают в порядке: OnOpenTownScreen, OnPreTownScreen до появления окна города на экране 
 
OnPostTownScreen, OnCloseTownScreen 
после закрытия окна города (после исчезновения с экрана) срабатывают в порядке: OnPostTownScreen, OnCloseTownScreen   
OnOpenHeroScreen, OnLoadHeroScreen, OnPreHeroScreen 
перед открытием окна героя срабатывают в порядке: OnOpenHeroScreen, OnLoadHeroScreen, OnPreHeroScreen до появления окна героя на экране 
срабатывают также при просмотре героя в таверне или из окна встречи героев 
 
OnPostHeroScreen, OnCloseHeroScreen 
после закрытия окна героя (после исчезновения с экрана) срабатывают в порядке: OnPostHeroScreen, OnCloseHeroScreen 
срабатывают также при просмотре героя в таверне или из окна встречи героев 
 
При переключении между героями ВНУТРИ окна героя отрабатывают события OnPostHeroScreen, OnLoadHeroScreen, OnPreHeroScreen. События OnCloseHeroScreen и OnOpenHeroScreen не отрабатывают. 
 
OnHeroMove 
при движении героя, срабатывает ПЕРЕД каждым шагом героя 
 
OnHeroGainLevel 
перед повышением уровня героя, но после повышения уровня и закрытия окна командира. Если повышается сразу на несколько уровней - перед каждым повышением 
 
Хук в 5090553 [диалог повышения уровня героя без выбора втор. навыков] 
Хук в 5090672 [диалог повышения уровня героя с 1 втор.навыком] 
Хук в 5090948 [диалог повышения уровня героя с 2 втор.навыками] 
перед открытием окна диалога повышения уровня героя с соответствующим количеством предлагаемых вторичных навыков 
 
OnEquipArt 
при надевании артефакта, срабатывает даже до OnAfterErmInstructions (PI) при получении героями стартовых артефактов 
 
OnUnequipArt 
при снятии артефакта 
 
 НАЗВАНИЯ СОБЫТИЙ OnEquipArt и OnUnequipArt НА ДАННЫЙ МОМЕНТ ПЕРЕПУТАНЫ !!! 
 
OnOpenCommanderWindow 
перед открытием окна командира из окна героя (до появления окна командира на экране) 
 
OnCloseCommanderWindow 
после закрытия (исчезновения с экрана) окна командира 
 
если командиры отключены или командир не нанят, OnOpenCommanderWindow и OnCloseCommanderWindow не отрабатывают 
 
OnAfterCommanderBuy 
после покупки командира при посещении города 
 
OnAfterCommanderResurrect 
после воскрешение мертвого командира при посещении города. НЕ срабатывает при воскрешении командира Шлемом бессмертия 
 
OnBeforeHeroInteraction 
перед встречей героев (перед появлением окна встречи) 
 
OnAfterHeroInteraction 
после встречи героев (после исчезновения окна встречи)  
OnOpenRecruitDlg 
перед открытием диалога найма существ. НЕ срабатывает при открытии кузницы 
 
OnRecruitDlgRecalc 
перед открытием диалога найма существ 
перед изменением нанимаемого количества в диалоге найма существ 
после нажатии кнопки найма и OnRecruitDlgAction 
 
OnRecruitDlgAction 
при нажатии кнопки найма в диалоге найма существ, ДО закрытия диалога 
 
OnCloseRecruitDlg 
после закрытия диалога найма существ.  НЕ срабатывает при закрытии кузницы 
 
OnCustomDialogEvent 
ПЕРЕД активацией любого события в пользовательском DL-диалоге  
OnEverySecond, OnEvery2Seconds, OnEvery5Seconds, OnEvery10Seconds, OnEveryMinute 
События начинают срабатывать сразу после инициализации ERM и отработки инструкций 
Сомневаюсь в целесообразнисти их использования  
 
OnEveryDay 
в начале нового игрового дня (включая день 1) для каждого игрока до TM1 и TM2 
 
Распространенный WoG-таймер !?TM1; 
в начале нового игрового дня (включая день 1) для каждого игрока после OnEveryDay и до и TM2 
 
Распространенный WoG-таймер !?TM2; 
в начале нового игрового дня (включая день 1) для каждого игрока после OnEveryDay и TM1 
 
OnGameEnter 
при входе в игру после OnEveryDay, TM1, TM2 или после загрузки сохраненной игры и показа карты. 
 
OnSavegameRead 
после выбора загружаемого сохранения и инициализации ERM в окне загрузки до показа карты, перед чтением файла сохранения 
 
OnAfterLoadGame 
после чтения файла сохранения в окне загрузки до показа карты после OnSavegameRead 
 
OnBeforeSaveGame 
перед сохранением игры после ввода имени сохранения и закрытия диалога выбора сохранки, но до создания файла 
 
OnSavegameWrite 
после создания файла сохранения (~160КБ), но до записи данных 
 
OnAfterSaveGame 
после записи всех данных в файл сохранения, но до сообщения "<имя сохранки> удалось сохранить" 
 
OnAfterErmInstructions 
непосредственно перед показом карты при старте НОВОЙ игры, при загрузке сохраненной игры НЕ срабатывает 
 
OnGameLeave 
после подтверждения выхода в главное меню (новая игра, загрузить игру). НЕ срабатывает при закрытии окна "крестиком"/через Alt+F4  
OnMp3MusicChange 
при изменении ФОНОВОЙ мелодии (mp3-темы) 
если мелодия не менялась, просто пошел повтор, событие НЕ срабатывает 
после воспроизведения звукового эффекта (например, звук движения героя, звук отстроенного здания), НЕ срабатывает после звука "щелчок" на элементах 
 
OnSoundPlay 
в начале воспроизведения мелодии (wav-Звуки), например, при проигрывании мелодий посещаемых объектов -  камень знания и пр. 
НЕ срабатывает на звук "щелчок" на элементах и прочие подобные звуковые эффекты 
 
OnKeyPressed 
при нажатии любой клавиши на клавиатуре 
 
OnAdventureMapRightMouseClick 
ПКМ на карте приключений 
 
OnAdventureMapLeftMouseClick 
ЛКМ на карте приключений 
 
OnBattleScreenMouseClick 
любой клик в экране боя 
 
OnTownMouseClick 
любой клик в ГЛАВНОМ экране города 
 
OnTownHallMouseClick 
любой клик в экране ЗАМКА 
НЕ срабатывает не в экране городского холла 
 
OnRecruitDlgMouseClick 
любой клик в экране найма существ. НЕ срабатывает в экране кузницы 
 
OnKingdomOverviewMouseClick 
любой клик в экране обзора королевства 
 
OnHeroScreenMouseClick 
любой клик в экране героя 
 
OnHeroesMeetScreenMouseClick 
любой клик в экране встречи героев 
 
OnChat 
перед входом в строку чата И перед отправкой написанного в окно игры. При выводе сообщений через IF:L НЕ срабатывает 
 
Хук в 6027880 [расчет дохода города] 
при выборе города в списке 
при входе/выходе из обзора королевства 
при входе в город 
ПОСЛЕ выхода в экран города из экрана городского холла (до OnLeaveTownHall), экранов Замка, жилищ (после OnCloseRecruitDlg) 
НЕ срабатывает ПОСЛЕ выхода в экран города из экрана рынка 
при постройке здания срабатывает до выхода из экрана городского холла И ДВАЖДЫ после отрисовки здания в экране города и OnLeaveTownHall 
 
Хук в 5011264 [AddGoldForArt] 
срабатывает при входе в обзора королевства (AddResForArt не срабатывает) 
 
Хук в 4950687 [AddResForArt] 
в начале каждого дня каждого игрока в следующем порядке: AddResForArt, расчет дохода города, AddGoldForArt. Не срабатывают для первого дня первого игрока  
Подготовка к бою
Хук в 7710213 [перед битвой перед BA0] 
OnBeforeBattle (BA0) 
OnBeforeBattleUniversal (BA52) 
OnBeforeBattlefieldVisible 
OnBattleRound (BR) (round -1) 
OnSetupBattlefield (BF) 
появление поля боя 
OnBattlefieldVisible 
OnCombatRound 
сообщение "Тактическая фаза" 
выполнение действий отрядов начиная с получения хода (расстановка) 
нажатие кнопки "Начать битву" 
OnAfterTacticsPhase 
OnCombatRound 
OnBattleRound (BR) (round 0) 
выполнение действий отрядов начиная с получения хода  
Хук в 7710213 [перед битвой перед BA0] 
OnBeforeBattle (BA0) 
OnBeforeBattleUniversal (BA52) 
OnBeforeBattlefieldVisible 
OnBattleRound (BR) (round -1) 
OnSetupBattlefield (BF) 
OnAfterTacticsPhase 
OnBattleRound (BR) (round 0) 
появление поля боя 
OnBattlefieldVisible 
OnCombatRound 
OnBattleRound (BR) (round 0), да, еще раз нулевой раунд 
выполнение действий отрядов начиная с получения хода  
OnBeforeBattleAction (BG0) для последнего действующего отряда в раунде 
OnCombatRound 
OnBattleRound (BR) (round n+1) 
выполнение действий отрядов начиная с получения хода  
Действия отрядов
OnBattleRegeneratePhase 
OnBattleStackObtainsTurn 
отряд выполняет спец. действие, например похищение маны призраками 
отряд получает ход и подсвечивается обводкой 
Хук в 4609014 [после фазы регенерации; проверки на мораль, страх; и после установки активного стека] 
OnAfterBattleAction (BG1) - не срабатывает для самого первого действия первого отряда в бою 
выбор и выполнение действия  
OnBeforeBattleAction (BG0) 
анимация + звук перемещения отряда, если перемещение 
выполнение действий отрядов начиная с получения хода  
наведение курсора на врага 
OnStackToStackDamage (срабатывает 2/3 раза для рукопашников/стрелков соответственно) 
выводится подсказка с оценкой урона, который может быть нанесен 
клик атаки 
OnBeforeBattleAction (BG0) 
анимация + звук выстрела/подхода/подлета 
OnStackToStackDamage 
OnMonsterPhysicalDamage (MF1) 
анимация + звук атаки нападающим и получения урона целью 
Хук в 4455129 [после выстрела] или Хук в 4462998 [после атаки] 
начало контратаки, если есть 
OnStackToStackDamage 
OnMonsterPhysicalDamage (MF1) 
анимация + звук атаки нападающим и получения урона целью 
Хук в 4462998 [после атаки] 
конец контратаки 
анимация возврата для гарпий 
если атака/контратака уничтожила последний отряд какой-либо стороны: 
отображение окна результатов боя 
нажатие кнопки "ок" в окне результатов боя 
OnAfterBattleAction (BG1) 
получение уровня командиром/героем, если получено достаточно опыта 
OnAfterBattle (BA1) 
OnAfterBattleUniversal (BA53) 
выполнение действий отрядов начиная с получения хода  
OnStackToStackDamage x2/x3 + OnAICalcStackAttackEffect (срабатывает для каждой потенциальной цели, даже если она недосягаема) 
OnAICalcStackAttackEffect 
OnBeforeBattleAction (BG0) 
выполнение действия как и для отряда человека 
выполнение действий отрядов начиная с получения хода   
			 
			
			
  
			
		 |