ZVSE
!?BR&v997=-1/1000;В начале боя человека... !!DO90/0/41/1 : P9/0;Вызываем цикл, вызывающий стражу всех стеков. !!BU : R;Обновляем.
;Функции вызова стражи.
!?FU90;Функция поиска гексов для стражи. !!BMx16 : T?y7;Проверяем тип монстра. !!FU&y7<>x1 : E;Если монстр не подходит, выходим из функции. !!BMx16 : P?y7;Считываем позицию монстра. !!VRy8 : Sy7:17;Вычисляем ряд позиции монстра. !!VRy9 : Sy8%2;Вычисляем чётность ряда позиции монстра. !!VRy1 : Sy7-1;Вычисляем позицию 1 стражи. !!VRy2&y9=0 : Sy7-17;Вычисляем позицию 2 стражи, в зависимости от чётности ряда позиции монстра. !!VRy2&y9=1 : Sy7-18;Вычисляем позицию 2 стражи, в зависимости от чётности ряда позиции монстра. !!VRy3 : Sy2+1;Вычисляем позицию 3 стражи. !!VRy4 : Sy7+1;Вычисляем позицию 4 стражи. !!VRy5 : Sy2+35;Вычисляем позицию 5 стражи. !!VRy6 : Sy5-1;Вычисляем позицию 6 стражи. !!BMx16 : B?y10;Считываем количество монстров. !!BMx16 : I?y11;Считываем сторону монстра. !!DO91/1/6/1 : Py1/y2/y3/y4/y5/y6/y10/x2/y11;Вызываем цикл, вызывающий стражу на каждую клетку.
!?FU91;Функция постановки стражи на гекс. !!VRy1 : Sxx16%17;Считываем столбец позиции монстра. !!FU&y1=0|y1=16/xx16<1/xx16>185 : E;Если гекс вне поля боя, завершаем функцию. !!BU : Oxx16/?y1;Проверяем, нет ли препятствий на гексе. !!FU&y1>0 : E;Если на гексе есть препятствия, завершаем функцию. !!BU : Exx16/?y1;Проверяем, нет ли стека на гексе. !!BMy1&y1>-1 : T?y2;Если на гексе есть стек, проверяем тип монстра стека. !!BMy1&y1>-1 : S?y3;Если на гексе есть стек, проверяем скорость монстра стека. !!BMy1&y1>-1/y2=x8/y3=0 : Ndx7;Если на гексе есть стек, его тип монстра - нужный, а скорость равна 0, добавляем туда нужное количество монстров. !!FU&y1>-1 : E;Если на гексе есть стек, завершаем функцию. !!BU : Sx8/x7/xx16/x9/-1/0;Вызываем стражу на гекс. !!BU : Exx16/?y1;Получаем номер стека стражи. !!BMy1 : S0;Устанавливаем скорость стражи в 0.
Если 2 охранника должны быть поставлены в один и тот же гекс, они объединяются в один стек. Скорость охранников равна 0, но если на них сделать замедление, она станет 1. При гибели охраняемого скорость остаётся 0.
Как изменить существ:
В 3 строчке ( !!DO90/0/41/1 : P9/0;Вызываем цикл, вызывающий стражу всех стеков.) заменить цифры после P 9 - на номер типа охраняемого монстра, 0 - на номер типа охранника. И тот и другой должны занимать 1 гекс (нельзя настраивать на кавалеристов, драконов и т. п.). Добавлено:
Кстати, комментарии можно не стирать, они не помешают работе скрипта.
(This post was last modified: 10.08.2010 16:30 by Sav.)