10.08.2010, 21:21
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
10.08.2010, 21:25
gamecreator, слабость, медлительность, болезнь, паралич, старость.
Sav, просмотрел тут анимации. Кажется, лучше для анимации горына использовать #14 (разрушающий луч, достигший цели). Он красноват и будто какая-то пыль разлетается. Имхо, отлично подойдёт.
Sav, просмотрел тут анимации. Кажется, лучше для анимации горына использовать #14 (разрушающий луч, достигший цели). Он красноват и будто какая-то пыль разлетается. Имхо, отлично подойдёт.
10.08.2010, 21:30
Quote:Кажется, лучше для анимации горына использовать #14 (разрушающий луч, достигший цели). Он красноват и будто какая-то пыль разлетается. Имхо, отлично подойдёт.Вполне нормально.
10.08.2010, 22:38
Sav, ты тестил паралич 5%?
10.08.2010, 23:41
Нет, я пока не могу разобраться с его несниманием. Завтра буду тестить рандом.
11.08.2010, 00:13
Sav, а зачем делать его неснимаемым? Пусть можно будет снять. Разве это плохо? Всякие магические атаки прочих существ снимаются и лечатся, чем горыныч лучше?
11.08.2010, 10:47
Я имею ввиду с тем, чтобы горыныч при атаке не снимал паралич.
Кстати, может сделать заклы горыныча совсем без анимации, только со звуком? Тогда будет выглядеть, как будто горыныч колдует их при ударе, а не перед ударом.
Кстати, может сделать заклы горыныча совсем без анимации, только со звуком? Тогда будет выглядеть, как будто горыныч колдует их при ударе, а не перед ударом.
11.08.2010, 21:26
Текущий прогресс - горыныч не снимает паралич.
Spoiler (Click to View)
;Горыныч.
!#MA : A168/35 C168/6/17500 C168/0/24 D168/35 E168/60 F168/27145 H168/3 I168/30027 M168/50 P168/750 S168/10 V168/1;Устанавливаем характеристики горыныча.
;Горыныч колдует заклинание на всех вокруг.
!?BG0;При действии существа...
!!VRv6001 : S0;Обнуляем контрольную переменную.
!!BG : N?v6002;Находим номер стека, совершившего действие.
!!BMv6002 : T?y-1;Находим, какое существо совершило действие.
!!BG&y-1=168 : A?y-2;Если существо - горыныч, находим, какое действие он совершил.
!!VRv6001&y-1=168/y-2=6 : S1;Если действие было ближним ударом и ударял горыныч, устанавливаем контрольную переменную в 1.
!!VRv6003&v6001=1 : S6001;Устанавливаем управляющую переменную целей.
!?MF1&v6001=1;При нанесении физического урона, если контрольная переменная равна 1...
!!MF : E?y-1;Определяем, не был ли урон блокирован.
!!FU&y-1=0 : E;Если урон был блокирован, завершаем функцию.
!!VRv6003 : Sv6003+4;Устанавливаем управляющую переменную целей на следующее значение.
!!VRy-1 : Sv6003-1;Вычисляем вторую управляющую переменную целей.
!!VRy-2 : Sv6003+1;Вычисляем третью управляющую переменную целей.
!!VRy-3 : Sv6003+2;Вычисляем четвёртую управляющую переменную целей.
!!MF : N?vy-1;Определяем номер стека, получающего урон.
!!FU9015 : Pv6003;Вызываем функцию наложения заклинаний.
!!BMvy-1 : G74/?vv6003/d;Определяем, есть ли пралич, у получающего урон.
!!BMvy-1&vv6003>0 : F?y-4;Если стек, получающий урон, парализован, считываем его флаги.
!!VRy-4&vv6003>0 : &67108864;Если стек, получающий урон, парализован, проверяем, ходил ли он.
!!BMvy-1&vv6003>0/y-4<1 : Fd67108864;Если стек, получающий урон, парализован и не ходил, он теряет ход.
!!VRvy-2&vv6003>0/y-4<1 : S1;Если стек, получающий урон, парализован и не ходил, уставливаем переменную потери хода стека.
!!BMvy-1&vv6003>0 : R?y-4;Если стек, получающий урон, парализован, проверяем, сколько у него ответных ударов.
!!BMvy-1&vv6003>0/y-4>0 : R0;Если стек, получающий урон, парализован и у него есть ответные удары, обнуляем их.
!!VRvy-3&vv6003>0/y-4>0 : Sy-4;Если стек, получающий урон, парализован и у него есть ответные удары, записываем их количество в переменную потери ответного удара стека.
!?BG1&v6001=1;После совершения действия, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
!?BR&v6001=1;В начале нового раунда, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
;Функции наложения и продления заклинания.
!?FU9015;Функция подготовки к наложению заклинаний.
!!VRy1 : Sx1-1;Вычисляем адрес номера целевого стека.
!!VRy3 : S0;Устанавливаем переменную рандома в 0.
!!VRy3 : R4;Добавляем к переменной рандома в случайное число от 0 до 4.
!!FU9016&y3=0 : Pvy1/45;Если переменная рандома равна 0, вызываем функцию наложения и продления слабости.
!!FU9016&y3=1 : Pvy1/54;Если переменная рандома равна 1, вызываем функцию наложения и продления медлительности.
!!FU9016&y3=2 : Pvy1/73;Если переменная рандома равна 2, вызываем функцию наложения и продления болезни.
!!FU9016&y3=3 : Pvy1/74;Если переменная рандома равна 3, вызываем функцию наложения и продления паралича.
!!FU9016&y3=4 : Pvy1/75;Если переменная рандома равна 4, вызываем функцию наложения и продления старости.
!?FU9016;;Функция наложения и продления заклинания.
!!VRz754&x2=45 : S^WEAKNESS.WAV^;Выбираем звук.
!!VRz754&x2=54 : S^MUCKMIRE.WAV^;Выбираем звук.
!!VRz754&x2=73 : S^DISEASE.WAV^;Выбираем звук.
!!VRz754&x2=74 : S^PARALYZE.WAV^;Выбираем звук.
!!VRz754&x2=75 : S^AGE.WAV^;Выбираем звук.
!!SN : Pz754;Проигрываем звук закла.
!!BMx1 : Gx2/?y1/d;Проверяем, не наложено ли заклинание на цель.
!!BMx1&y1<1 : Mx2/3/2;Если заклинание не наложено, накладываем его.
!!BMx1&y1>0 : Gx2/d3/2;Если заклинание наложено, увеличиваем его длительность на 3 раунда и усиляем его, если надо.
!!VRz754&x2=45 : S^Змей Горыныч заразил врагов слабостью!^;Выбираем сообщение.
!!VRz754&x2=54 : S^Змей Горыныч заразил врагов медлительностью!^;Выбираем сообщение.
!!VRz754&x2=73 : S^Змей Горыныч заразил врагов болезнью!^;Выбираем сообщение.
!!VRz754&x2=74 : S^Змей Горыныч заразил врагов параличем!^;Выбираем сообщение.
!!VRz754&x2=75 : S^Змей Горыныч заразил врагов старостью!^;Выбираем сообщение.
!!BU : Mz754;Пишем сообщение в лог.
!?FU9017;Функция восстаноения паралича.
!!VRy1 : Sx16-1;Вычисляем адрес номера стека.
!!VRy2 : Sx16+1;Вычисляем адрес потери хода стека.
!!VRy3 : Sx16+2;Вычисляем адрес потери ответного удара стека.
!!BMvy1&vx16>0 : M74/vx16/2;Воссанавливаем паралич, если он был.
!!BMvy1 : F?y4;Считываем флаги стека.
!!VRy4 : &67108864;Проверяем, ходил ли стек.
!!BMvy1&vy2=1/y4>0 : Fd-67108864;Если стек потерял ход, восстанавливаем его.
!!BMvy1 : R?y4;Проверяем количество ответных уаров стека.
!!BMvy1&vy3>0/y4=0 : Rvy3;Если стек потерял ответные удары, восстанавливаем их.
!!VRvy1 : S0;Сбрасываем переменную номера стека.
!!VRvx16 : S0;Сбрасываем переменную длительности паралича.
!!VRvy2 : S0;Сбрасываем переменную потери хода стека.
!!VRvy3 : S0;Сбрасываем переменную потери ответного удара стека.
!#MA : A168/35 C168/6/17500 C168/0/24 D168/35 E168/60 F168/27145 H168/3 I168/30027 M168/50 P168/750 S168/10 V168/1;Устанавливаем характеристики горыныча.
;Горыныч колдует заклинание на всех вокруг.
!?BG0;При действии существа...
!!VRv6001 : S0;Обнуляем контрольную переменную.
!!BG : N?v6002;Находим номер стека, совершившего действие.
!!BMv6002 : T?y-1;Находим, какое существо совершило действие.
!!BG&y-1=168 : A?y-2;Если существо - горыныч, находим, какое действие он совершил.
!!VRv6001&y-1=168/y-2=6 : S1;Если действие было ближним ударом и ударял горыныч, устанавливаем контрольную переменную в 1.
!!VRv6003&v6001=1 : S6001;Устанавливаем управляющую переменную целей.
!?MF1&v6001=1;При нанесении физического урона, если контрольная переменная равна 1...
!!MF : E?y-1;Определяем, не был ли урон блокирован.
!!FU&y-1=0 : E;Если урон был блокирован, завершаем функцию.
!!VRv6003 : Sv6003+4;Устанавливаем управляющую переменную целей на следующее значение.
!!VRy-1 : Sv6003-1;Вычисляем вторую управляющую переменную целей.
!!VRy-2 : Sv6003+1;Вычисляем третью управляющую переменную целей.
!!VRy-3 : Sv6003+2;Вычисляем четвёртую управляющую переменную целей.
!!MF : N?vy-1;Определяем номер стека, получающего урон.
!!FU9015 : Pv6003;Вызываем функцию наложения заклинаний.
!!BMvy-1 : G74/?vv6003/d;Определяем, есть ли пралич, у получающего урон.
!!BMvy-1&vv6003>0 : F?y-4;Если стек, получающий урон, парализован, считываем его флаги.
!!VRy-4&vv6003>0 : &67108864;Если стек, получающий урон, парализован, проверяем, ходил ли он.
!!BMvy-1&vv6003>0/y-4<1 : Fd67108864;Если стек, получающий урон, парализован и не ходил, он теряет ход.
!!VRvy-2&vv6003>0/y-4<1 : S1;Если стек, получающий урон, парализован и не ходил, уставливаем переменную потери хода стека.
!!BMvy-1&vv6003>0 : R?y-4;Если стек, получающий урон, парализован, проверяем, сколько у него ответных ударов.
!!BMvy-1&vv6003>0/y-4>0 : R0;Если стек, получающий урон, парализован и у него есть ответные удары, обнуляем их.
!!VRvy-3&vv6003>0/y-4>0 : Sy-4;Если стек, получающий урон, парализован и у него есть ответные удары, записываем их количество в переменную потери ответного удара стека.
!?BG1&v6001=1;После совершения действия, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
!?BR&v6001=1;В начале нового раунда, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
;Функции наложения и продления заклинания.
!?FU9015;Функция подготовки к наложению заклинаний.
!!VRy1 : Sx1-1;Вычисляем адрес номера целевого стека.
!!VRy3 : S0;Устанавливаем переменную рандома в 0.
!!VRy3 : R4;Добавляем к переменной рандома в случайное число от 0 до 4.
!!FU9016&y3=0 : Pvy1/45;Если переменная рандома равна 0, вызываем функцию наложения и продления слабости.
!!FU9016&y3=1 : Pvy1/54;Если переменная рандома равна 1, вызываем функцию наложения и продления медлительности.
!!FU9016&y3=2 : Pvy1/73;Если переменная рандома равна 2, вызываем функцию наложения и продления болезни.
!!FU9016&y3=3 : Pvy1/74;Если переменная рандома равна 3, вызываем функцию наложения и продления паралича.
!!FU9016&y3=4 : Pvy1/75;Если переменная рандома равна 4, вызываем функцию наложения и продления старости.
!?FU9016;;Функция наложения и продления заклинания.
!!VRz754&x2=45 : S^WEAKNESS.WAV^;Выбираем звук.
!!VRz754&x2=54 : S^MUCKMIRE.WAV^;Выбираем звук.
!!VRz754&x2=73 : S^DISEASE.WAV^;Выбираем звук.
!!VRz754&x2=74 : S^PARALYZE.WAV^;Выбираем звук.
!!VRz754&x2=75 : S^AGE.WAV^;Выбираем звук.
!!SN : Pz754;Проигрываем звук закла.
!!BMx1 : Gx2/?y1/d;Проверяем, не наложено ли заклинание на цель.
!!BMx1&y1<1 : Mx2/3/2;Если заклинание не наложено, накладываем его.
!!BMx1&y1>0 : Gx2/d3/2;Если заклинание наложено, увеличиваем его длительность на 3 раунда и усиляем его, если надо.
!!VRz754&x2=45 : S^Змей Горыныч заразил врагов слабостью!^;Выбираем сообщение.
!!VRz754&x2=54 : S^Змей Горыныч заразил врагов медлительностью!^;Выбираем сообщение.
!!VRz754&x2=73 : S^Змей Горыныч заразил врагов болезнью!^;Выбираем сообщение.
!!VRz754&x2=74 : S^Змей Горыныч заразил врагов параличем!^;Выбираем сообщение.
!!VRz754&x2=75 : S^Змей Горыныч заразил врагов старостью!^;Выбираем сообщение.
!!BU : Mz754;Пишем сообщение в лог.
!?FU9017;Функция восстаноения паралича.
!!VRy1 : Sx16-1;Вычисляем адрес номера стека.
!!VRy2 : Sx16+1;Вычисляем адрес потери хода стека.
!!VRy3 : Sx16+2;Вычисляем адрес потери ответного удара стека.
!!BMvy1&vx16>0 : M74/vx16/2;Воссанавливаем паралич, если он был.
!!BMvy1 : F?y4;Считываем флаги стека.
!!VRy4 : &67108864;Проверяем, ходил ли стек.
!!BMvy1&vy2=1/y4>0 : Fd-67108864;Если стек потерял ход, восстанавливаем его.
!!BMvy1 : R?y4;Проверяем количество ответных уаров стека.
!!BMvy1&vy3>0/y4=0 : Rvy3;Если стек потерял ответные удары, восстанавливаем их.
!!VRvy1 : S0;Сбрасываем переменную номера стека.
!!VRvx16 : S0;Сбрасываем переменную длительности паралича.
!!VRvy2 : S0;Сбрасываем переменную потери хода стека.
!!VRvy3 : S0;Сбрасываем переменную потери ответного удара стека.
11.08.2010, 21:56
Параличом пусть пореже заражает (читайте: редко). И хорошо бы, наверное, выводить тип существа, зараженного горынычем. Например, такие вот сообщения:
Слабость: "%monsters% заболели и не могут сражаться в полную силу!"
Болезнь: "%monsters% заболели и не могут толком ни атаковать, ни защищаться!"
Медлительность: "%monsters% заболели и едва стоят на ногах!"
Паралич: "%monsters% парализованы неизвестной болезнью!"
Слабость: "%monsters% заболели и не могут сражаться в полную силу!"
Болезнь: "%monsters% заболели и не могут толком ни атаковать, ни защищаться!"
Медлительность: "%monsters% заболели и едва стоят на ногах!"
Паралич: "%monsters% парализованы неизвестной болезнью!"
11.08.2010, 22:01
Quote:Параличом пусть пореже заражаетРандом я пока нормальный не сделал.
Quote:И хорошо бы, наверное, выводить тип существа, зараженного горынычем.Сделаю, но после.
Сейчас главная проблема, которую я решаю - реализация заражения при ответном ударе.
11.08.2010, 22:42
хм, а разве BG не вызывается для ответки?
11.08.2010, 22:55
Как оказалось, нет, ответка происходит внутри !!BG атакующего.
11.08.2010, 23:01
ну тогда !?BG1 и проверяй отвечающего (вот только будет ли его количество ответок уже вычтенное - хз)
11.08.2010, 23:14
Заклы у меня накладываются в !?MF.
Я уже сделал через проверку стороны атакующего и получающего урон.
Текущий прогресс (Всё работает и при ответке):
Я уже сделал через проверку стороны атакующего и получающего урон.
Текущий прогресс (Всё работает и при ответке):
Spoiler (Click to View)
;Горыныч.
!#MA : A168/35 C168/6/17500 C168/0/24 D168/35 E168/60 F168/27145 H168/3 I168/30027 M168/50 P168/750 S168/10 V168/1;Устанавливаем характеристики горыныча.
;Горыныч колдует заклинание на всех вокруг.
!?BG0;При действии существа...
!!BG : A?y-1;Если существо - горыныч, находим, какое действие он совершил.
!!FU&y-1<>6 : E;Если действие - не атака, выходим из триггера.
!!VRv6001 : S0;Обнуляем контрольную переменную.
!!BG : N?v6002;Находим номер атакующего стека.
!!BMv6002 : T?y-1;Находим, какое существо атаковало.
!!BMv6002 : I?v6070;Считываем принадлежность атакующего стека.
!!VRv6001&y-1=168 : S1;Если атаковал горыныч, устанавливаем контрольную переменную в 1.
!!BG : E?y-2;Находим номер целевого стека.
!!BMy-2 : T?y-3;Находим, какое существо было атаковано.
!!VRv6001&y-3=168 : Sv6001+2;Если атаковали горыныча, добавляем к контрольной переменной 2.
!!VRv6003&v6001>0 : S6001;Если контрольная переменная больше 0, устанавливаем управляющую переменную целей.
!?MF1&v6001>0;При нанесении физического урона, если контрольная переменная больше 0...
!!MF&v6001<3 : N?y-1;Если контрольная переменная меньше 3, считываем номер стека, получающего урон.
!!BMy-1&v6001<3 : I?y-2;Если контрольная переменная меньше 3, считываем принадлежность стека, получающего урон.
!!FU&v6001=1/y-2=v6070 : E;Если контрольная переменная равна 1, а принадлежность атакующего стека соответствует принадлежности стека, получающего урон, выходим из триггера.
!!FU&v6001=2/y-2<>v6070 : E;Если контрольная переменная равна 2, а принадлежность атакующего стека не соответствует принадлежности стека, получающего урон, выходим из триггера.
!!MF : E?y-1;Определяем, не был ли урон блокирован.
!!FU&y-1=0 : E;Если урон был блокирован, завершаем функцию.
!!VRv6003 : Sv6003+4;Устанавливаем управляющую переменную целей на следующее значение.
!!VRy-1 : Sv6003-1;Вычисляем вторую управляющую переменную целей.
!!VRy-2 : Sv6003+1;Вычисляем третью управляющую переменную целей.
!!VRy-3 : Sv6003+2;Вычисляем четвёртую управляющую переменную целей.
!!MF : N?vy-1;Определяем номер стека, получающего урон.
!!FU9015 : Pv6003;Вызываем функцию наложения заклинаний.
!!BMvy-1 : G74/?vv6003/d;Определяем, есть ли пралич, у получающего урон.
!!BMvy-1&vv6003>0 : F?y-4;Если стек, получающий урон, парализован, считываем его флаги.
!!VRy-4&vv6003>0 : &67108864;Если стек, получающий урон, парализован, проверяем, ходил ли он.
!!BMvy-1&vv6003>0/y-4<1 : Fd67108864;Если стек, получающий урон, парализован и не ходил, он теряет ход.
!!VRvy-2&vv6003>0/y-4<1 : S1;Если стек, получающий урон, парализован и не ходил, уставливаем переменную потери хода стека.
!!BMvy-1&vv6003>0 : R?y-4;Если стек, получающий урон, парализован, проверяем, сколько у него ответных ударов.
!!BMvy-1&vv6003>0/y-4>0 : R0;Если стек, получающий урон, парализован и у него есть ответные удары, обнуляем их.
!!VRvy-3&vv6003>0/y-4>0 : Sy-4;Если стек, получающий урон, парализован и у него есть ответные удары, записываем их количество в переменную потери ответного удара стека.
!?BG1&v6001>0;После совершения действия, если контрольная переменная больше 0...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
!?BR&v6001>0;В начале нового раунда, если контрольная переменная больше 0...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
;Функции наложения и продления заклинания.
!?FU9015;Функция подготовки к наложению заклинаний.
!!VRy1 : Sx1-1;Вычисляем адрес номера целевого стека.
!!VRy3 : S0;Устанавливаем переменную рандома в 0.
!!VRy3 : R4;Добавляем к переменной рандома в случайное число от 0 до 4.
!!FU9016&y3=0 : Pvy1/45;Если переменная рандома равна 0, вызываем функцию наложения и продления слабости.
!!FU9016&y3=1 : Pvy1/54;Если переменная рандома равна 1, вызываем функцию наложения и продления медлительности.
!!FU9016&y3=2 : Pvy1/73;Если переменная рандома равна 2, вызываем функцию наложения и продления болезни.
!!FU9016&y3=3 : Pvy1/74;Если переменная рандома равна 3, вызываем функцию наложения и продления паралича.
!!FU9016&y3=4 : Pvy1/75;Если переменная рандома равна 4, вызываем функцию наложения и продления старости.
!?FU9016;;Функция наложения и продления заклинания.
!!VRz754&x2=45 : S^WEAKNESS.WAV^;Выбираем звук.
!!VRz754&x2=54 : S^MUCKMIRE.WAV^;Выбираем звук.
!!VRz754&x2=73 : S^DISEASE.WAV^;Выбираем звук.
!!VRz754&x2=74 : S^PARALYZE.WAV^;Выбираем звук.
!!VRz754&x2=75 : S^AGE.WAV^;Выбираем звук.
!!SN : Pz754;Проигрываем звук закла.
!!BMx1 : Gx2/?y1/d;Проверяем, не наложено ли заклинание на цель.
!!BMx1&y1<1 : Mx2/3/2;Если заклинание не наложено, накладываем его.
!!BMx1&y1>0 : Gx2/d3/2;Если заклинание наложено, увеличиваем его длительность на 3 раунда и усиляем его, если надо.
!!VRz754&x2=45 : S^Змей Горыныч заразил врагов слабостью!^;Выбираем сообщение.
!!VRz754&x2=54 : S^Змей Горыныч заразил врагов медлительностью!^;Выбираем сообщение.
!!VRz754&x2=73 : S^Змей Горыныч заразил врагов болезнью!^;Выбираем сообщение.
!!VRz754&x2=74 : S^Змей Горыныч заразил врагов параличем!^;Выбираем сообщение.
!!VRz754&x2=75 : S^Змей Горыныч заразил врагов старостью!^;Выбираем сообщение.
!!BU : Mz754;Пишем сообщение в лог.
!?FU9017;Функция восстаноения паралича.
!!VRy1 : Sx16-1;Вычисляем адрес номера стека.
!!VRy2 : Sx16+1;Вычисляем адрес потери хода стека.
!!VRy3 : Sx16+2;Вычисляем адрес потери ответного удара стека.
!!BMvy1&vx16>0 : M74/vx16/2;Воссанавливаем паралич, если он был.
!!BMvy1 : F?y4;Считываем флаги стека.
!!VRy4 : &67108864;Проверяем, ходил ли стек.
!!BMvy1&vy2=1/y4>0 : Fd-67108864;Если стек потерял ход, восстанавливаем его.
!!BMvy1 : R?y4;Проверяем количество ответных уаров стека.
!!BMvy1&vy3>0/y4=0 : Rvy3;Если стек потерял ответные удары, восстанавливаем их.
!!VRvy1 : S0;Сбрасываем переменную номера стека.
!!VRvx16 : S0;Сбрасываем переменную длительности паралича.
!!VRvy2 : S0;Сбрасываем переменную потери хода стека.
!!VRvy3 : S0;Сбрасываем переменную потери ответного удара стека.
!#MA : A168/35 C168/6/17500 C168/0/24 D168/35 E168/60 F168/27145 H168/3 I168/30027 M168/50 P168/750 S168/10 V168/1;Устанавливаем характеристики горыныча.
;Горыныч колдует заклинание на всех вокруг.
!?BG0;При действии существа...
!!BG : A?y-1;Если существо - горыныч, находим, какое действие он совершил.
!!FU&y-1<>6 : E;Если действие - не атака, выходим из триггера.
!!VRv6001 : S0;Обнуляем контрольную переменную.
!!BG : N?v6002;Находим номер атакующего стека.
!!BMv6002 : T?y-1;Находим, какое существо атаковало.
!!BMv6002 : I?v6070;Считываем принадлежность атакующего стека.
!!VRv6001&y-1=168 : S1;Если атаковал горыныч, устанавливаем контрольную переменную в 1.
!!BG : E?y-2;Находим номер целевого стека.
!!BMy-2 : T?y-3;Находим, какое существо было атаковано.
!!VRv6001&y-3=168 : Sv6001+2;Если атаковали горыныча, добавляем к контрольной переменной 2.
!!VRv6003&v6001>0 : S6001;Если контрольная переменная больше 0, устанавливаем управляющую переменную целей.
!?MF1&v6001>0;При нанесении физического урона, если контрольная переменная больше 0...
!!MF&v6001<3 : N?y-1;Если контрольная переменная меньше 3, считываем номер стека, получающего урон.
!!BMy-1&v6001<3 : I?y-2;Если контрольная переменная меньше 3, считываем принадлежность стека, получающего урон.
!!FU&v6001=1/y-2=v6070 : E;Если контрольная переменная равна 1, а принадлежность атакующего стека соответствует принадлежности стека, получающего урон, выходим из триггера.
!!FU&v6001=2/y-2<>v6070 : E;Если контрольная переменная равна 2, а принадлежность атакующего стека не соответствует принадлежности стека, получающего урон, выходим из триггера.
!!MF : E?y-1;Определяем, не был ли урон блокирован.
!!FU&y-1=0 : E;Если урон был блокирован, завершаем функцию.
!!VRv6003 : Sv6003+4;Устанавливаем управляющую переменную целей на следующее значение.
!!VRy-1 : Sv6003-1;Вычисляем вторую управляющую переменную целей.
!!VRy-2 : Sv6003+1;Вычисляем третью управляющую переменную целей.
!!VRy-3 : Sv6003+2;Вычисляем четвёртую управляющую переменную целей.
!!MF : N?vy-1;Определяем номер стека, получающего урон.
!!FU9015 : Pv6003;Вызываем функцию наложения заклинаний.
!!BMvy-1 : G74/?vv6003/d;Определяем, есть ли пралич, у получающего урон.
!!BMvy-1&vv6003>0 : F?y-4;Если стек, получающий урон, парализован, считываем его флаги.
!!VRy-4&vv6003>0 : &67108864;Если стек, получающий урон, парализован, проверяем, ходил ли он.
!!BMvy-1&vv6003>0/y-4<1 : Fd67108864;Если стек, получающий урон, парализован и не ходил, он теряет ход.
!!VRvy-2&vv6003>0/y-4<1 : S1;Если стек, получающий урон, парализован и не ходил, уставливаем переменную потери хода стека.
!!BMvy-1&vv6003>0 : R?y-4;Если стек, получающий урон, парализован, проверяем, сколько у него ответных ударов.
!!BMvy-1&vv6003>0/y-4>0 : R0;Если стек, получающий урон, парализован и у него есть ответные удары, обнуляем их.
!!VRvy-3&vv6003>0/y-4>0 : Sy-4;Если стек, получающий урон, парализован и у него есть ответные удары, записываем их количество в переменную потери ответного удара стека.
!?BG1&v6001>0;После совершения действия, если контрольная переменная больше 0...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
!?BR&v6001>0;В начале нового раунда, если контрольная переменная больше 0...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
;Функции наложения и продления заклинания.
!?FU9015;Функция подготовки к наложению заклинаний.
!!VRy1 : Sx1-1;Вычисляем адрес номера целевого стека.
!!VRy3 : S0;Устанавливаем переменную рандома в 0.
!!VRy3 : R4;Добавляем к переменной рандома в случайное число от 0 до 4.
!!FU9016&y3=0 : Pvy1/45;Если переменная рандома равна 0, вызываем функцию наложения и продления слабости.
!!FU9016&y3=1 : Pvy1/54;Если переменная рандома равна 1, вызываем функцию наложения и продления медлительности.
!!FU9016&y3=2 : Pvy1/73;Если переменная рандома равна 2, вызываем функцию наложения и продления болезни.
!!FU9016&y3=3 : Pvy1/74;Если переменная рандома равна 3, вызываем функцию наложения и продления паралича.
!!FU9016&y3=4 : Pvy1/75;Если переменная рандома равна 4, вызываем функцию наложения и продления старости.
!?FU9016;;Функция наложения и продления заклинания.
!!VRz754&x2=45 : S^WEAKNESS.WAV^;Выбираем звук.
!!VRz754&x2=54 : S^MUCKMIRE.WAV^;Выбираем звук.
!!VRz754&x2=73 : S^DISEASE.WAV^;Выбираем звук.
!!VRz754&x2=74 : S^PARALYZE.WAV^;Выбираем звук.
!!VRz754&x2=75 : S^AGE.WAV^;Выбираем звук.
!!SN : Pz754;Проигрываем звук закла.
!!BMx1 : Gx2/?y1/d;Проверяем, не наложено ли заклинание на цель.
!!BMx1&y1<1 : Mx2/3/2;Если заклинание не наложено, накладываем его.
!!BMx1&y1>0 : Gx2/d3/2;Если заклинание наложено, увеличиваем его длительность на 3 раунда и усиляем его, если надо.
!!VRz754&x2=45 : S^Змей Горыныч заразил врагов слабостью!^;Выбираем сообщение.
!!VRz754&x2=54 : S^Змей Горыныч заразил врагов медлительностью!^;Выбираем сообщение.
!!VRz754&x2=73 : S^Змей Горыныч заразил врагов болезнью!^;Выбираем сообщение.
!!VRz754&x2=74 : S^Змей Горыныч заразил врагов параличем!^;Выбираем сообщение.
!!VRz754&x2=75 : S^Змей Горыныч заразил врагов старостью!^;Выбираем сообщение.
!!BU : Mz754;Пишем сообщение в лог.
!?FU9017;Функция восстаноения паралича.
!!VRy1 : Sx16-1;Вычисляем адрес номера стека.
!!VRy2 : Sx16+1;Вычисляем адрес потери хода стека.
!!VRy3 : Sx16+2;Вычисляем адрес потери ответного удара стека.
!!BMvy1&vx16>0 : M74/vx16/2;Воссанавливаем паралич, если он был.
!!BMvy1 : F?y4;Считываем флаги стека.
!!VRy4 : &67108864;Проверяем, ходил ли стек.
!!BMvy1&vy2=1/y4>0 : Fd-67108864;Если стек потерял ход, восстанавливаем его.
!!BMvy1 : R?y4;Проверяем количество ответных уаров стека.
!!BMvy1&vy3>0/y4=0 : Rvy3;Если стек потерял ответные удары, восстанавливаем их.
!!VRvy1 : S0;Сбрасываем переменную номера стека.
!!VRvx16 : S0;Сбрасываем переменную длительности паралича.
!!VRvy2 : S0;Сбрасываем переменную потери хода стека.
!!VRvy3 : S0;Сбрасываем переменную потери ответного удара стека.
11.08.2010, 23:30
Осуществил более полноценный лог на поле боя. Привязка к количеству существ и их полу есть.
Spoiler (Click to View)
; Предварительная настройка горыныча
!?PI&v470=1;Триггер на пост-инструкцию.
!!MA : A168/35 C168/6/17500 C168/0/24 D168/35 E168/60 F168/27145 H168/3 I168/30027 M168/50 P168/750 S168/10 V168/1;Устанавливаем характеристики горыныча.
!!VRz755 : S^Заразный. Иммунитет к болезням. Безответная атака всех вокруг.^;Записываем описание кристального дракона в переменную.
!!UN : G1/168/2/z755;Установить описание для кристального дракона.
; Добавить сопротивление к ослабляющим заклинаниям
!?MR2&v470=1; Когда срабатывает гномье сопротивление
!!MR:M?y-1;Запомнить тип существа
!!MR:S?y-2; Запомнить тип заклинания
!!MR&y-1=168/y-2=45:F100; Добавить иммунитет к заклинанию "Слабость"
!!MR&y-1=168/y-2=54:F100; Добавить иммунитет к заклинанию "Медлительность"
!!MR&y-1=168/y-2=73:F100; Добавить иммунитет к заклинанию "Болезнь"
!!MR&y-1=168/y-2=74:F100; Добавить иммунитет к заклинанию "Паралич"
!!MR&y-1=168/y-2=71:F100; Добавить иммунитет к заклинанию "Яд"
;Горыныч колдует заклинание на всех вокруг.
!?BG0;При действии существа...
!!VRv6001 : S0;Обнуляем контрольную переменную.
!!BG : N?v6002;Находим номер стека, совершившего действие.
!!BMv6002 : T?y-1;Находим, какое существо совершило действие.
!!BG&y-1=168 : A?y-2;Если существо - горыныч, находим, какое действие он совершил.
!!VRv6001&y-1=168/y-2=6 : S1;Если действие было ближним ударом и ударял горыныч, устанавливаем контрольную переменную в 1.
!!VRv6003&v6001=1 : S6001;Устанавливаем управляющую переменную целей.
!?MF1&v6001=1;При нанесении физического урона, если контрольная переменная равна 1...
!!MF : E?y-1;Определяем, не был ли урон блокирован.
!!FU&y-1=0 : E;Если урон был блокирован, завершаем функцию.
!!VRv6003 : Sv6003+4;Устанавливаем управляющую переменную целей на следующее значение.
!!VRy-1 : Sv6003-1;Вычисляем вторую управляющую переменную целей.
!!VRy-2 : Sv6003+1;Вычисляем третью управляющую переменную целей.
!!VRy-3 : Sv6003+2;Вычисляем четвёртую управляющую переменную целей.
!!MF : N?vy-1;Определяем номер стека, получающего урон.
!!FU9015 : Pv6003;Вызываем функцию наложения заклинаний.
!!BMvy-1 : G74/?vv6003/d;Определяем, есть ли пралич, у получающего урон.
!!BMvy-1&vv6003>0 : F?y-4;Если стек, получающий урон, парализован, считываем его флаги.
!!VRy-4&vv6003>0 : &67108864;Если стек, получающий урон, парализован, проверяем, ходил ли он.
!!BMvy-1&vv6003>0/y-4<1 : Fd67108864;Если стек, получающий урон, парализован и не ходил, он теряет ход.
!!VRvy-2&vv6003>0/y-4<1 : S1;Если стек, получающий урон, парализован и не ходил, уставливаем переменную потери хода стека.
!!BMvy-1&vv6003>0 : R?y-4;Если стек, получающий урон, парализован, проверяем, сколько у него ответных ударов.
!!BMvy-1&vv6003>0/y-4>0 : R0;Если стек, получающий урон, парализован и у него есть ответные удары, обнуляем их.
!!VRvy-3&vv6003>0/y-4>0 : Sy-4;Если стек, получающий урон, парализован и у него есть ответные удары, записываем их количество в переменную потери ответного удара стека.
!?BG1&v6001=1;После совершения действия, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
!?BR&v6001=1;В начале нового раунда, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
;Функции наложения и продления заклинания.
!?FU9015;Функция подготовки к наложению заклинаний.
!!VRy1 : Sx1-1;Вычисляем адрес номера целевого стека.
!!VRy3 : S0;Устанавливаем переменную рандома в 0.
!!VRy3 : R4;Добавляем к переменной рандома в случайное число от 0 до 4.
!!FU9016&y3=0 : Pvy1/45;Если переменная рандома равна 0, вызываем функцию наложения и продления слабости.
!!FU9016&y3=1 : Pvy1/54;Если переменная рандома равна 1, вызываем функцию наложения и продления медлительности.
!!FU9016&y3=2 : Pvy1/73;Если переменная рандома равна 2, вызываем функцию наложения и продления болезни.
!!FU9016&y3=3 : Pvy1/74;Если переменная рандома равна 3, вызываем функцию наложения и продления паралича.
!!FU9016&y3=4 : Pvy1/75;Если переменная рандома равна 4, вызываем функцию наложения и продления старости.
!?FU9016;;Функция наложения и продления заклинания.
!!VRz769&x2=45 : S^WEAKNESS.WAV^;Выбираем звук.
!!VRz769&x2=54 : S^MUCKMIRE.WAV^;Выбираем звук.
!!VRz769&x2=73 : S^DISEASE.WAV^;Выбираем звук.
!!VRz769&x2=74 : S^PARALYZE.WAV^;Выбираем звук.
!!VRz769&x2=75 : S^AGE.WAV^;Выбираем звук.
!!SN : Pz769;Проигрываем звук закла.
!!BMx1 : Gx2/?y1/d;Проверяем, не наложено ли заклинание на цель.
!!BMx1&y1<1 : Mx2/3/2;Если заклинание не наложено, накладываем его.
!!BMx1&y1>0 : Gx2/d3/2;Если заклинание наложено, увеличиваем его длительность на 3 раунда и усиляем его, если надо.
!!BMx1:N?y2 T?y3; Запомнить количество и тип существ
!!UN&y2=1:N3/z730/y3/0; Если количество существ равно 1
!!UN&y2>1:N3/z730/y3/1; Если количество существ больше 1
; Настроить текст в зависимости от количества и пола
!!VRz731&y2=1:S^^; Любое существо мужского пола
!!VRz731&y2=1/y3=30:S^а^; Каменная горгулья
!!VRz731&y2=1/y3=31:S^а^; Обсидиановая горгулья
!!VRz731&y2=1/y3=36:S^а^; Джинн
!!VRz731&y2=1/y3=38:S^а^; Нага
!!VRz731&y2=1/y3=39:S^а^; Королева-нага
!!VRz731&y2=1/y3=46:S^а^; Адская гончая
!!VRz731&y2=1/y3=61:S^о^; Привидение
!!VRz731&y2=1/y3=72:S^а^; Гарпия
!!VRz731&y2=1/y3=73:S^а^; Гарпия-ведьма
!!VRz731&y2=1/y3=76:S^а^; Медуза
!!VRz731&y2=1/y3=47:S^а^; Королева-медуза
!!VRz731&y2=1/y3=80:S^а^; Мантикора
!!VRz731&y2=1/y3=81:S^а^; Скорпикора
!!VRz731&y2=1/y3=93:S^а^; Птица-гром
!!VRz731&y2=1/y3=102:S^а^; Горгона
!!VRz731&y2=1/y3=103:S^а^; Могучая горгона
!!VRz731&y2=1/y3=110:S^а^; Гидра
!!VRz731&y2=1/y3=111:S^а^; Гидра Хаоса
!!VRz731&y2=1/y3=118:S^а^; Маленькая фея
!!VRz731&y2=1/y3=119:S^а^; Фея
!!VRz731&y2=1/y3=130:S^а^; Огненная птица
!!VRz731&y2=1/y3=141:S^а^; Мумия
!!VRz731&y2=1/y3=157:S^а^; Кошмарная гидра
!!VRz731&y2=1/y3=193:S^а^; Волшебница
!!VRz731&y2=1/y3=159:S^о^; Привидение Энрота
; Показать сообщение для одного существа
!!VRz799&x2=45/y2=1:S^%Z730 заболел%Z731 и не может сражаться в полную силу!^; Слабость
!!VRz799&x2=54/y2=1:S^%Z730 заболел%Z731 и едва стоит на ногах!^; Медлительность
!!VRz799&x2=73/y2=1:S^%Z730 заболел%Z731 и не может толком ни атаковать, ни защищаться!^; Болезнь
!!VRz799&x2=74/y2=1:S^%Z730 парализован%Z731 неизвестной болезнью!^; Паралич
; Настроить сообщение для нескольких существ
!!VRz799&x2=45/y2>1:S^%Z730 заболели и не могут сражаться в полную силу!^; Слабость
!!VRz799&x2=54/y2>1:S^%Z730 заболели и едва стоят на ногах!^; Медлительность
!!VRz799&x2=73/y2>1:S^%Z730 заболели и не могут толком ни атаковать, ни защищаться!^; Болезнь
!!VRz799&x2=74/y2>1:S^%Z730 парализованы неизвестной болезнью!^; Паралич
!!VRz799&x2=74/y2>1:S^%Z730 стали немощнее старика!^; Старость
!!BU : Mz799;Пишем сообщение в лог.
!?FU9017;Функция восстаноения паралича.
!!VRy1 : Sx16-1;Вычисляем адрес номера стека.
!!VRy2 : Sx16+1;Вычисляем адрес потери хода стека.
!!VRy3 : Sx16+2;Вычисляем адрес потери ответного удара стека.
!!BMvy1&vx16>0 : M74/vx16/2;Воссанавливаем паралич, если он был.
!!BMvy1 : F?y4;Считываем флаги стека.
!!VRy4 : &67108864;Проверяем, ходил ли стек.
!!BMvy1&vy2=1/y4>0 : Fd-67108864;Если стек потерял ход, восстанавливаем его.
!!BMvy1 : R?y4;Проверяем количество ответных уаров стека.
!!BMvy1&vy3>0/y4=0 : Rvy3;Если стек потерял ответные удары, восстанавливаем их.
!!VRvy1 : S0;Сбрасываем переменную номера стека.
!!VRvx16 : S0;Сбрасываем переменную длительности паралича.
!!VRvy2 : S0;Сбрасываем переменную потери хода стека.
!!VRvy3 : S0;Сбрасываем переменную потери ответного удара стека.
!?PI&v470=1;Триггер на пост-инструкцию.
!!MA : A168/35 C168/6/17500 C168/0/24 D168/35 E168/60 F168/27145 H168/3 I168/30027 M168/50 P168/750 S168/10 V168/1;Устанавливаем характеристики горыныча.
!!VRz755 : S^Заразный. Иммунитет к болезням. Безответная атака всех вокруг.^;Записываем описание кристального дракона в переменную.
!!UN : G1/168/2/z755;Установить описание для кристального дракона.
; Добавить сопротивление к ослабляющим заклинаниям
!?MR2&v470=1; Когда срабатывает гномье сопротивление
!!MR:M?y-1;Запомнить тип существа
!!MR:S?y-2; Запомнить тип заклинания
!!MR&y-1=168/y-2=45:F100; Добавить иммунитет к заклинанию "Слабость"
!!MR&y-1=168/y-2=54:F100; Добавить иммунитет к заклинанию "Медлительность"
!!MR&y-1=168/y-2=73:F100; Добавить иммунитет к заклинанию "Болезнь"
!!MR&y-1=168/y-2=74:F100; Добавить иммунитет к заклинанию "Паралич"
!!MR&y-1=168/y-2=71:F100; Добавить иммунитет к заклинанию "Яд"
;Горыныч колдует заклинание на всех вокруг.
!?BG0;При действии существа...
!!VRv6001 : S0;Обнуляем контрольную переменную.
!!BG : N?v6002;Находим номер стека, совершившего действие.
!!BMv6002 : T?y-1;Находим, какое существо совершило действие.
!!BG&y-1=168 : A?y-2;Если существо - горыныч, находим, какое действие он совершил.
!!VRv6001&y-1=168/y-2=6 : S1;Если действие было ближним ударом и ударял горыныч, устанавливаем контрольную переменную в 1.
!!VRv6003&v6001=1 : S6001;Устанавливаем управляющую переменную целей.
!?MF1&v6001=1;При нанесении физического урона, если контрольная переменная равна 1...
!!MF : E?y-1;Определяем, не был ли урон блокирован.
!!FU&y-1=0 : E;Если урон был блокирован, завершаем функцию.
!!VRv6003 : Sv6003+4;Устанавливаем управляющую переменную целей на следующее значение.
!!VRy-1 : Sv6003-1;Вычисляем вторую управляющую переменную целей.
!!VRy-2 : Sv6003+1;Вычисляем третью управляющую переменную целей.
!!VRy-3 : Sv6003+2;Вычисляем четвёртую управляющую переменную целей.
!!MF : N?vy-1;Определяем номер стека, получающего урон.
!!FU9015 : Pv6003;Вызываем функцию наложения заклинаний.
!!BMvy-1 : G74/?vv6003/d;Определяем, есть ли пралич, у получающего урон.
!!BMvy-1&vv6003>0 : F?y-4;Если стек, получающий урон, парализован, считываем его флаги.
!!VRy-4&vv6003>0 : &67108864;Если стек, получающий урон, парализован, проверяем, ходил ли он.
!!BMvy-1&vv6003>0/y-4<1 : Fd67108864;Если стек, получающий урон, парализован и не ходил, он теряет ход.
!!VRvy-2&vv6003>0/y-4<1 : S1;Если стек, получающий урон, парализован и не ходил, уставливаем переменную потери хода стека.
!!BMvy-1&vv6003>0 : R?y-4;Если стек, получающий урон, парализован, проверяем, сколько у него ответных ударов.
!!BMvy-1&vv6003>0/y-4>0 : R0;Если стек, получающий урон, парализован и у него есть ответные удары, обнуляем их.
!!VRvy-3&vv6003>0/y-4>0 : Sy-4;Если стек, получающий урон, парализован и у него есть ответные удары, записываем их количество в переменную потери ответного удара стека.
!?BG1&v6001=1;После совершения действия, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
!?BR&v6001=1;В начале нового раунда, если контрольная переменная равна 1...
!!DO9017/6005/v6003/4 : P;Взываем цикл, восстанавливающий паралич у атакованных горынычем существ.
!!VRv6001 : S0;Устанавливаем контрольную переменную в 0.
!!VRv6002 : S0;Сбрасываем переменную стека, совершившего действие.
!!VRv6003 : S0;Сбрасываем управляющую переменную целей.
;Функции наложения и продления заклинания.
!?FU9015;Функция подготовки к наложению заклинаний.
!!VRy1 : Sx1-1;Вычисляем адрес номера целевого стека.
!!VRy3 : S0;Устанавливаем переменную рандома в 0.
!!VRy3 : R4;Добавляем к переменной рандома в случайное число от 0 до 4.
!!FU9016&y3=0 : Pvy1/45;Если переменная рандома равна 0, вызываем функцию наложения и продления слабости.
!!FU9016&y3=1 : Pvy1/54;Если переменная рандома равна 1, вызываем функцию наложения и продления медлительности.
!!FU9016&y3=2 : Pvy1/73;Если переменная рандома равна 2, вызываем функцию наложения и продления болезни.
!!FU9016&y3=3 : Pvy1/74;Если переменная рандома равна 3, вызываем функцию наложения и продления паралича.
!!FU9016&y3=4 : Pvy1/75;Если переменная рандома равна 4, вызываем функцию наложения и продления старости.
!?FU9016;;Функция наложения и продления заклинания.
!!VRz769&x2=45 : S^WEAKNESS.WAV^;Выбираем звук.
!!VRz769&x2=54 : S^MUCKMIRE.WAV^;Выбираем звук.
!!VRz769&x2=73 : S^DISEASE.WAV^;Выбираем звук.
!!VRz769&x2=74 : S^PARALYZE.WAV^;Выбираем звук.
!!VRz769&x2=75 : S^AGE.WAV^;Выбираем звук.
!!SN : Pz769;Проигрываем звук закла.
!!BMx1 : Gx2/?y1/d;Проверяем, не наложено ли заклинание на цель.
!!BMx1&y1<1 : Mx2/3/2;Если заклинание не наложено, накладываем его.
!!BMx1&y1>0 : Gx2/d3/2;Если заклинание наложено, увеличиваем его длительность на 3 раунда и усиляем его, если надо.
!!BMx1:N?y2 T?y3; Запомнить количество и тип существ
!!UN&y2=1:N3/z730/y3/0; Если количество существ равно 1
!!UN&y2>1:N3/z730/y3/1; Если количество существ больше 1
; Настроить текст в зависимости от количества и пола
!!VRz731&y2=1:S^^; Любое существо мужского пола
!!VRz731&y2=1/y3=30:S^а^; Каменная горгулья
!!VRz731&y2=1/y3=31:S^а^; Обсидиановая горгулья
!!VRz731&y2=1/y3=36:S^а^; Джинн
!!VRz731&y2=1/y3=38:S^а^; Нага
!!VRz731&y2=1/y3=39:S^а^; Королева-нага
!!VRz731&y2=1/y3=46:S^а^; Адская гончая
!!VRz731&y2=1/y3=61:S^о^; Привидение
!!VRz731&y2=1/y3=72:S^а^; Гарпия
!!VRz731&y2=1/y3=73:S^а^; Гарпия-ведьма
!!VRz731&y2=1/y3=76:S^а^; Медуза
!!VRz731&y2=1/y3=47:S^а^; Королева-медуза
!!VRz731&y2=1/y3=80:S^а^; Мантикора
!!VRz731&y2=1/y3=81:S^а^; Скорпикора
!!VRz731&y2=1/y3=93:S^а^; Птица-гром
!!VRz731&y2=1/y3=102:S^а^; Горгона
!!VRz731&y2=1/y3=103:S^а^; Могучая горгона
!!VRz731&y2=1/y3=110:S^а^; Гидра
!!VRz731&y2=1/y3=111:S^а^; Гидра Хаоса
!!VRz731&y2=1/y3=118:S^а^; Маленькая фея
!!VRz731&y2=1/y3=119:S^а^; Фея
!!VRz731&y2=1/y3=130:S^а^; Огненная птица
!!VRz731&y2=1/y3=141:S^а^; Мумия
!!VRz731&y2=1/y3=157:S^а^; Кошмарная гидра
!!VRz731&y2=1/y3=193:S^а^; Волшебница
!!VRz731&y2=1/y3=159:S^о^; Привидение Энрота
; Показать сообщение для одного существа
!!VRz799&x2=45/y2=1:S^%Z730 заболел%Z731 и не может сражаться в полную силу!^; Слабость
!!VRz799&x2=54/y2=1:S^%Z730 заболел%Z731 и едва стоит на ногах!^; Медлительность
!!VRz799&x2=73/y2=1:S^%Z730 заболел%Z731 и не может толком ни атаковать, ни защищаться!^; Болезнь
!!VRz799&x2=74/y2=1:S^%Z730 парализован%Z731 неизвестной болезнью!^; Паралич
; Настроить сообщение для нескольких существ
!!VRz799&x2=45/y2>1:S^%Z730 заболели и не могут сражаться в полную силу!^; Слабость
!!VRz799&x2=54/y2>1:S^%Z730 заболели и едва стоят на ногах!^; Медлительность
!!VRz799&x2=73/y2>1:S^%Z730 заболели и не могут толком ни атаковать, ни защищаться!^; Болезнь
!!VRz799&x2=74/y2>1:S^%Z730 парализованы неизвестной болезнью!^; Паралич
!!VRz799&x2=74/y2>1:S^%Z730 стали немощнее старика!^; Старость
!!BU : Mz799;Пишем сообщение в лог.
!?FU9017;Функция восстаноения паралича.
!!VRy1 : Sx16-1;Вычисляем адрес номера стека.
!!VRy2 : Sx16+1;Вычисляем адрес потери хода стека.
!!VRy3 : Sx16+2;Вычисляем адрес потери ответного удара стека.
!!BMvy1&vx16>0 : M74/vx16/2;Воссанавливаем паралич, если он был.
!!BMvy1 : F?y4;Считываем флаги стека.
!!VRy4 : &67108864;Проверяем, ходил ли стек.
!!BMvy1&vy2=1/y4>0 : Fd-67108864;Если стек потерял ход, восстанавливаем его.
!!BMvy1 : R?y4;Проверяем количество ответных уаров стека.
!!BMvy1&vy3>0/y4=0 : Rvy3;Если стек потерял ответные удары, восстанавливаем их.
!!VRvy1 : S0;Сбрасываем переменную номера стека.
!!VRvx16 : S0;Сбрасываем переменную длительности паралича.
!!VRvy2 : S0;Сбрасываем переменную потери хода стека.
!!VRvy3 : S0;Сбрасываем переменную потери ответного удара стека.