То есть все появляющиеся монсты будут иметь количество менее 80, 70 и т. д.?
Тогда можно и просто проверять монстров в каждой неделе. Но тогда стоящие в начале игры монстры должны иметь количестово 80, 70 и т. д. и более.
У меня была пара недочётов, исправил.
!#TM1 : S8/999/7/1;Устанавливаем таймер на каждый 1 день.
!?PI;В начале игры.
UN : X?y-1/?y-2;Считываем размер карты.
!!DO11/1/y-1/1 : Py-1/y-2/0;Вызываем цикл, устанавливающий PO-типы объектов.
!?TM1;Каждый 1 день...
!!UN : X?y-1/?y-2;Считываем размер карты.
!!DO11/0/y-2/1 : Py-1/y-2/1;Вызываем цикл, проверяющий карту на новых монстров и работающий с ними.
!?BA0;В начале битвы...
!!BA : P?v11/?v12/?v13;Получаем координаты атакованного.
!?BA1;В конце битвы...
!!НЕ-1 : O?y-1;Проверяем, победил ли герой.
!!POv11/v12/v13&y-1>-1 : T?y-2;Если герой победил, проверяем, монстра ли он победил.
!!POv11/v12/v13&y-1>-1/y-2=54 : T0;Если герой победил монстра, сбрасываем PO-тип объекта в этой точке.
;Функции установки PO-типов объектов и проверки монстров в одной вертикали на всех уровнях карты.
!?FU11;Функция прохода по вертикали карты.
!!DO12/1/x1/1 : Px2/x16/x3;Вызываем цикл, проходящий по вертикали карты.
!?FU12;Функция прохода по уровням в одной и той же координате карты и выбора установки или проверки.
!!DO13/0/x1/1&x3=0 : Px2/x16;Вызываем цикл установки клеток на разных уровнях в одной и той же координате карты.
!!DO14/0/x1/1&x3=1 : Px2/x16;Вызываем цикл проверки клеток на разных уровнях в одной и той же координате карты.
!!FU13;Функция установки клетки карты.
!!TRx1/x2/x16 : E?y1;Проверяем, нет ли объекта на клетке карты.
!!POx1/x2/x16&y1=1 : T0;Если на клетке карты нет объекта, сбрасываем PO-тип объекта.
!!FU&y1=1 : E;Если на клетке карты нет объекта, завершаем функцию.
!!OBx1/x2/x16 : T?y1;Проверяем тип объекта.
!!POx1/x2/x16&y1=34 : T0;Если объект - герой, сбрасываем тип объекта на 0.
!!POx1/x2/x16&y1<>34 : Ty1;Если объект - не герой, устанавливаем PO-тип объекта.
!!FU14;Функции проверки клетки карты на монстров.
!!POx1/x2/x16 : T?y1;Проверяем PO-тип объекта на клетке карты.
!!FU&y1=54 : E;Если PO-тип объекта - монстр, завершаем функцию.
!!TRx1/x2/x16 : E?y1;Проверяем, нет ли объекта на клетке карты.
!!FU&y1=1 : E;Если на клетке карты нет объекта, завершаем функцию.
!!OBx1/x2/x16 : U?y1;Считываем номер монстра.
!!MA : Ly1/?y2;Считываем уровень монстра.
!!VRy3&y2=0 : S80;Если монстры - 1 уровня, устанавливаем переменную их количества.
!!VRy3&y2=0 : R20;Если монстры - 1 уровня, добавляем к переменной их количества случайное число.
!!VRy3&y2=1 : S70;Если монстры - 2 уровня, устанавливаем переменную их количества.
!!VRy3&y2=1 : R20;Если монстры - 1 уровня, добавляем к переменной их количества случайное число.
!!MOx1/x2/x16&y2=0|y2=1 : Gy3;Устанавливаем количество монстров.
!!POx1/x2/x16 : T54;Устанавливаем PO-тии объекта на клетке карты.
Смысл моего скрипта в том, что он в начале игры устанавливает PO-переменные для жёлтых (со входом, с монстром и т. д.) клеток карты на типы объектов, на них стоящих. В начале недели скрипт проверяет все клетки карты и, если видит, что на этой клетке есть монстр, но PO-тип этой клетки карты не соответсвует типу "монстр" (54), то скрипт считает такого монстра появившимся в начале недели и устанавливает его количество, а также устанавливает PO-переменную для этой клетки в 54 (чтобы больше этих монстров не трогать). Если какой-либо монстр побеждён в битве, скрипт сбрасывает PO-переменную на его клетке в 0. Всех поставленных скриптом монстров мой скрипт будет считать появившимися в начале недели, поэтому для каждой постановки объекта надо устанавливать PO-переменную в тип поставленного объекта, а для каждого удаления - в 0.
Вот только будет ли работать -не знаю.