wessonsm, без условий никак: на карте десятки скриптовых боёв - они должны различаться.
Но я догадываюсь в чём дело, но не могу сообразить как с этим бороться.
Объясню подробнее. Стоит на карте монстр и никого не пропускает. Мимо него можно пройти, но сейчас не об этом. Монстр (снайпер) в бою имеет первый ход и стреляет без перерыва, пока не уничтожит всю армию героя. Так вот в конце этого боя и не срабатывает !?FU(OnAfterBattleUniversal);
Я сделал этот бой на выпадении постоянной морали у Снайпера, так как если через UN:C давать повторный ход, то идут разные глюки и в бою и после боя. Так вот я подозреваю, что когда Снайпер всех убивает, то бой как бы не заканчивается... Его где-то нужно прервать.
Вот код после вызова и идентификации боя:
!?BA0&i^id_Battle^=10;
!!BA:Q0; нет быстрой битве
!!SN:W^canv_morale_stack_index^/-1; сбрасываю номер стека, который будет моралиться
!?BF&i^id_Battle^=10;
!!BF:C; очищаю поле боя, чтобы не мигало
!?FU(FireMorale);
!!SN:W^canv_morale_stack_index^/21; указываю номер стека который будет моралиться (он всегда такой)
!?FU(OnBattleStackObtainsTurn)&i^id_Battle^=10; отряд получает ход в бою
; x1 = сторона (0 - левая, 1 - правая)
; x2 = номер отряда у стороны (0..21)
!!FU(FireMorale):P;
!!SN:W^canv_morale_stack_index^/?(act:y); узнаю, моралился ли уже текущий стек
!!SN:W^canv_morale_stack_index^/-1; сбрасываю значение морали у стека
!!FU&(act)=-1:E;
!!VRx1:S1;
!!VRx2:S0;
!?FU(OnAfterBattleUniversal)&i^id_Battle^=10; этот триггер, здесь не срабатывает