Вот теперь всё норм.
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 гекс (нельзя настраивать на кавалеристов, драконов и т. п.).
Добавлено:
Кстати, комментарии можно не стирать, они не помешают работе скрипта.