Да, на этой основе. И это, на самом деле, даже лучше, чем просто в начале первого раунда - Альянс ангелов, например, накладывает молитву именно перед первым ходом стека своей стороны.
!#UN:A13/156/49/50/51;Устанавливаем сборный артефакт и его части.
!#UN:A156/1/50000;Устанавливаем стоимость сборного артефакта.
!#UN:A156/2/9;Устанавливаем позицию для сборного артефакта.
!#UN:A156/3/16;Устанавливаем класс сборного артефакта.
!#UN:A156/4/13;Устанавливаем номер сборного артефакта.
!#UN:A156/5/-1;Сбрасываем принадлежность сборному артефакту.
!#UN:A156/8/0;Сбрасываем получение заклинаний от сборного артефакта.
!#UN:A156/9/0;Сбрасываем имя сборного артефакта на стандартное.
!#VRz181:S^В начале боя накладывает Щит и Ускорение на все войска героя и восстанавливает их каждый раунд. Эффект пропадает после 20 раунда.^;Подготавливаем переменную с описанием сборного артефакта.
!#UN:A156/10/181;Устанавливаем описание сборного артефакта.
!?BA0;В начале битвы... !!VRv9303:S0;Сбрасываем контрольную переменную.
!?BR&v997=0;В начале первого раунда (после тактической фазы)... !!VRv9303:S3;Устанавливаем контрольную переменную в 3 (т. е. 1-й и 2-й биты в 1).
!?FU77007;(Триггер Эры) перед действием существа... !!SN:X?v2;Считываем номер ходящего стека. !!VRy-7:Sv2:21;Вычисляем номер ходящей стороны. !!VRy-7:+1;Вычисляем номер бита контрольной переменной для ходящей стороны. !!VRy-1:Sv9303&y-7;Проверяем соответствующий ходящей стороне бит контрольной переменной на 0. !!FU&y-1=0:E;Если это не первое действие атакующей стороны нетактической фазы боя (т. е. соответствующий ходящей стороне бит контрольной переменной равен 0), выходим из триггера. !!VRv9303:-y-7;Обнуляем соответствующий ходящей стороне бит контрольной переменной. !!VRy-7:-1;Возвращаем номер ходящей стороны. !!BA:Hy-7/?y-1;Считываем номер героя ходящей стороны. !!FU&y-1<=-2:E;Если у ходящей стороны нет героя, выходим из триггера. !!HEy-1:A2/156/d/?y-2;Проверяем, сколько на героя надето артефактов №156. !!FU&y-2<=0:E;Если ни одного, выходим из триггера. !!HEy-1:A2/0/d/?y-4;Проверяем, сколько на героя надето книг заклинаний. !!HEy-1&y-4=0:A4/0;Если ни одной, даём книгу заклинаний герою. !!BHy-7:M?y-5;Считываем возможность героя колдовать. !!HEy-1:I?y-6/1;Считываем количество маны у героя (без обновления экрана - иначе будет видна строка ресурсов). !!BHy-7:C27/0/3/0;Колдуем щит героем. !!BHy-7:C53/0/3/0;Колдуем ускорение героем. !!BHy-7:My-5;Восстанавливаем возможность героя колдовать. !!HEy-1:Iy-6/1;Восстанавливаем ману героя (без обновления). !!HEy-1&y-4=0:A3/0/1/1;Если у героя не было книг заклинаний, отнимаем ту, которую дали. !!VRy-8:Sy-7*21;Вычисляем номер первого стека ходящей стороны. !!VRy-9:Sy-7*21+20;Вычисляем номер последнего стека ходящей стороны. !!DO10051/y-8/y-9/1:P27/53;Запускаем цикл, проходящийся по всем стекам стороны и устанавливающий длительность двух заклинаний (номера - первый и второй параметры).
!?BR&v997>=1/v997<=19;В начале каждого раунда между вторым и девятнадцатым (атакующий)... !!BA:H0/?y-1;Считываем номер атакующего героя. !!FU&y-1<=-2:E;Если у атакующего нет героя, выходим из триггера. !!HEy-1:A2/156/d/?y-2;Проверяем, сколько на героя надето артефактов №156. !!FU&y-2<=0:E;Если ни одного, выходим из триггера. !!DO10050/0/20/1:P27/53/?y-3;Запускаем цикл, проходящийся по всем стекам стороны и проверяющий, наложены ли на них два заклинания (номера - первый и второй параметры). !!FU&y-3=0:E;Если контрольная переменная равна 0 (заклинания на всех наложены), выходим из триггера. !!HEy-1:A2/0/d/?y-4;Проверяем, сколько на героя надето книг заклинаний. !!HEy-1&y-4=0:A4/0;Если ни одной, даём книгу заклинаний герою. !!BH0:M?y-5;Считываем возможность героя колдовать. !!HEy-1:I?y-6/1;Считываем количество маны у героя (без обновления экрана - иначе будет видна строка ресурсов). !!BH0:C27/0/3/0;Колдуем щит героем. !!BH0:C53/0/3/0;Колдуем ускорение героем. !!BH0:My-5;Восстанавливаем возможность героя колдовать. !!HEy-1:Iy-6/1;Восстанавливаем ману героя (без обновления). !!HEy-1&y-4=0:A3/0/1/1;Если у героя не было книг заклинаний, отнимаем ту, которую дали. !!DO10051/0/20/1:P27/53;Запускаем цикл, проходящийся по всем стекам стороны и устанавливающий длительность двух заклинаний (номера - первый и второй параметры).
!?BR&v997>=1/v997<=19;В начале каждого раунда между вторым и девятнадцатым (защищающийся)... !!BA:H1/?y-1;Считываем номер защищающегося героя. !!FU&y-1<=-2:E;Если у защищающегося нет героя, выходим из триггера. !!HEy-1:A2/156/d/?y-2;Проверяем, сколько на героя надето артефактов №156. !!FU&y-2<=0:E;Если ни одного, выходим из триггера. !!DO10050/21/41/1:P27/53/?y-3;Запускаем цикл, проходящийся по всем стекам стороны и проверяющий, наложены ли на них два заклинания (номера - первый и второй параметры). !!FU&y-3=0:E;Если контрольная переменная равна 0 (заклинания на всех наложены), выходим из триггера. !!HEy-1:A2/0/d/?y-4;Проверяем, сколько на героя надето книг заклинаний. !!HEy-1&y-4=0:A4/0;Если ни одной, даём книгу заклинаний герою. !!BH0:M?y-5;Считываем возможность героя колдовать. !!HEy-1:I?y-6/1;Считываем количество маны у героя (без обновления). !!BH1:C27/0/3/0;Колдуем щит героем. !!BH1:C53/0/3/0;Колдуем ускорение героем. !!BH0:My-5;Восстанавливаем возможность героя колдовать. !!HEy-1:Iy-6/1;Восстанавливаем ману героя (без обновления). !!HEy-1&y-4=0:A3/0/1/1;Если у героя не было книг заклинаний, отнимаем ту, которую дали. !!DO10051/21/41/1:P27/53;Запускаем цикл, проходящийся по всем стекам стороны и устанавливающий длительность заклинаний (номера - первый и второй параметры).
;Функции контроля длительности двух заклинаний на стеках.
!?FU10050;Функция проверки длительности двух заклинаний на стеке. !!VRx3:S0;Сбрасываем контрольную переменную. !!BMx16:N?y1;Считываем количество существ в стеке. !!FU&y1<=0:E;Если в стеке нет существ, завершаем функцию. !!BMx16:Gx1/?y1/d;Считываем длительность первого заклинания на стеке. !!BMx16:Gx2/?y2/d;Считываем длительность второго заклинания на стеке. !!VRx3&y1<=0|y2<=0:S1;Если на стеке нет одного из двух заклинаний, устанавливаем контрольную переменную в 1. !!VRx16&y1<=0|y2<=0:S42;Если на стеке нет одного из двух заклинаний, выходим из цикла.
!?FU10051;Функция установки длительности двух заклинаний на стеке. !!BMx16:N?y1;Считываем количество существ в стеке. !!FU&y1<=0:E;Если в стеке нет существ, завершаем функцию. !!VRy1:S20-v997;Вычисляем длительность заклинаний. !!BMx16:Gx1/y1/d;Продлеваем первое заклинание. !!BMx16:Gx2/y1/d;Продлеваем второе заклинание.
Требуется Эра, без неё, скорее всего, скрипт будет работать так же, как и прошлый - со второго раунда. Также нельзя использовать переменную v9303 во время битвы (в остальное время - сколько угодно, но после битвы её значение будет испорчено).
Если убрать следующие триггеры (вместе с их ресейверами):
!?BR&v997>=1/v997<=19; (оба) и !?FU10050;
то наложение заклинания от артефакта будет проходить абсолютно так же, как и у артов типа Альянса ангелов (если не убирать, то в начале каждого раунда со 2-ого по 19-й будет проверяться, не сняты ли заклинания с существ и, если сняты, будут восстанавливаться).
(This post was last modified: 05.11.2010 19:14 by Sav.)