Очередная бета-версия. Хаос слегка устранен, использование переменных, функций и флагов упорядочено и задокументировано. Ограничения в три дня опять еще нет, возродить можно только потери в последней проведенной битве.
1) Ежемесячный рестор вроде работает, хотя иногда вроде глючит, если сидеть на алтаре. Также в этом случае не срабатывает функция подгонки названия объекта под игрока (для тех, кто этот объект еще не посещал, для тех, кто посещал, и для тех, кто в этом месяце пользовался - разные сообщения.).
2) Воскрешение теперь платное. Стоимость воскрешения 3*цена покупки (только золото). В процессе кодирования в голову пришла такая идея: Поместья (или Дипломатия) уменьшает стоимость воскрешения до 2.5, 2, 1.5 цен покупки... Стоит ли, и Поместья, Дипломатия или что-то другое?
3) Воскрешаются ВСЕ, включая элементалов, нежить и големов... Имеет ли это смысл менять?
4) Тестировалось на версии 3.58f.
ZVSE
Задействованы:
функции: 1-4 (инициализация и поддержка Алтаря) 5(2**N) 6(форматирование варианта воскрешения)
переменные: w151-157 (тип армии в потерях), w158-w164 (размер потерь), w165(счетчик дней), z23-30(разные сообщения), z31-z37(тексты о цене возрождения), v1(а как же без нее?

), v10-12 (координаты Алтаря, локально)
флаги: 15(проверка на наличие потерь),16(контроль инициализации)
CW Алтаря: 00000000 00000000 vvvvvvvv uuuuuuuu ( v-алтарь посещен хотя бы раз игроком номер 0-7. u-алтарь использовался этим игроком и должен перезарядиться )
!#VRz22:S^А я никого не буду воскрешать!^;
!#VRz23:S^Выберите, кого вернуть?^;
!#VRz24:S^Алтарь Возрождения^;
!#VRz25:S^Алтарь Возрождения
(посещен)^;
!#VRz26:S^Алтарь Возрождения
(воскрешает павших воинов)^;
!#VRz27:S^{Алтарь Возрождения}
Вы подходите к древнему алтарю, по слухам, позволяющему возрождать мертвых. Слава Богу, все Ваши воины пока живы и его помощь Вам не нужна.^;
!#VRz28:S^{Алтарь Возрождения}
Вы подходите к древнему алтарю, по слухам, позволяющему возрождать мертвых. Впрочем, все Ваши попытки активировать алтарь ни к чему не привели. Скорее всего, он сломан.^;
!#VRz29:S^{Алтарь Возрождения}
Вы подходите к древнему алтарю, по слухам, позволяющему возрождать мертвых. Вам повезло — алтарь работает! Хотите ли Вы воспользоваться им сегодня?^;
!#VRz30:S^Воскрешение не бесплатно. Сегодня у Вас явно недостаточно золота для того, чтобы воскресить хоть кого-то...^;
Инициализация Алтаря, w-переменных и ежемесячный сброс признака посещенности.
!#TM1:S1/999/28/255;
!?TM1;
!!DO1/0/155/1&-16:P; [правильная установка w-переменных]
!!UN:U63/4/?y1; [перебираем Алтари Воскрешения]
!!DO3/1/y1/1:P; [инициализируем очередной Алтарь]
!!IF&-16:V16/1;
Прописывание подходящей подписи Алтарю, в зависимости от цвета игрока.
!#TM2:S1/999/1/255;
!?TM2;
!!UN:U63/4/?y1; [перебираем Алтари Воскрешения]
!!DO4/1/y1/1:P; [оскверняем очередной Алтарь надписями

]
Функция сбрасывает данные о потерях указанного героя
!?FU1; !!IF:Wx16; !!DO2/151/157/1:P;
Функция сбрасывает данные о потерях указанного стека
!?FU2; !!VRwx16:S-1;
Функция инициализирует алтарь по его номеру и делает его непосещенным
!?FU3;
!!UN:U63/4/x16/10;
!!OB10&-16:C0; !!OW:C?y1; !!FU5:Py1/?y3/?y4; !!OB10:C?y2;
!!VRy2:|y3Xy3; !!OB10:Cy2;
!?FU4;
!!UN:U63/4/x16/10; !!OW:C?y1; !!FU5:Py1/?y3/?y4; !!OB10:C?y2; !!VRy3:&y2; !!VRy4:&y2;
!!OB10:H24; !!FU&y4=0:E; !!OB10:H26; !!FU&y3=0:E; !!OB10:H25;
Функция возведения 2 в степень x1 и в степень x1+8.
!?FU5;
!!VRx2&x1=0:S1; !!VRx2&x1=1:S2; !!VRx2&x1=2:S4; !!VRx2&x1=3:S8;
!!VRx2&x1=4:S16; !!VRx2&x1=5:S32; !!VRx2&x1=6:S64; !!VRx2&x1=7:S128;
!!VRx3:Sx2*256;
!?OB63/4?1000;
[перво-наперво лезем в CW на предмет посещенности]
!!OW:C?y1; !!OB998:C?y2; !!FU5:Py1/?y3/?y4; !!VRy2:|y4; !!OB998:Cy2; [указываем, что мы тут уже были]
!!OB998:H25; !!VRy3:&y2; !!IF&y3>0:M1/28; !!FU&y3>0:E; [y3>0, если уже и попользовались]
!!OB998:H26; [здесь был Вася, но не пользовался]
[теперь смотрим на наши трупы, а есть ли?]
!!IF:W-1 V15/0; !!OW:R-1/6/?y5;
[y6-y12 - установить номер z-переменной, если есть труп]
!!VRy6:S0; !!VRy6&w151>=0/w158>0:S31;
!!VRy7:S0; !!VRy7&w152>=0/w159>0:S32;
!!VRy8:S0; !!VRy8&w153>=0/w160>0:S33;
!!VRy9:S0; !!VRy9&w154>=0/w161>0:S34;
!!VRy10:S0; !!VRy10&w155>=0/w162>0:S35;
!!VRy11:S0; !!VRy11&w156>=0/w163>0:S36;
!!VRy12:S0; !!VRy12&w157>=0/w164>0:S37;
!!IF:V15/1; !!IF&y6=0/y7=0/y8=0/y9=0/y10=0/y11=0/y12=0:V15/0;
!!IF&-15:M1/27; !!FU&-15:E; !!IF:Q1/29; !!FU&-1:E;
[отформатировать строки, тех, кого не тянем по деньгам - ф топку]
!!FU6&y6>0:Py6/w151/w158/?y13; !!VRy6&y13>y5:S0;
!!FU6&y7>0:Py7/w152/w159/?y14; !!VRy7&y14>y5:S0;
!!FU6&y8>0:Py8/w153/w160/?y15; !!VRy8&y15>y5:S0;
!!FU6&y9>0:Py9/w154/w161/?y16; !!VRy9&y16>y5:S0;
!!FU6&y10>0:Py10/w155/w162/?y17; !!VRy10&y17>y5:S0;
!!FU6&y11>0:Py11/w156/w163/?y18; !!VRy11&y18>y5:S0;
!!FU6&y12>0:Py12/w157/w164/?y19; !!VRy12&y19>y5:S0;
!!IF:V15/1; !!IF&y6=0/y7=0/y8=0/y9=0/y10=0/y11=0/y12=0:V15/0;
!!IF&-15:M1/30; !!FU&-15:E; [все живы, зря]
!!IF:G1/1/0/23/y6/y7/y8/y9/y10/y11/y12/22/0/0/0/0;
!!IF&v1=128:M^Ну, как хотите!^; !!FU&v1=128:E;
!!VRy20&v1=1:Sw151; !!VRy21&v1=1:Sw158; !!VRy5&v1=1:-y13; !!VRw151&v1=1:S-1;
!!VRy20&v1=2:Sw152; !!VRy21&v1=2:Sw159; !!VRy5&v1=2:-y14; !!VRw152&v1=2:S-1;
!!VRy20&v1=4:Sw153; !!VRy21&v1=4:Sw160; !!VRy5&v1=4:-y15; !!VRw153&v1=4:S-1;
!!VRy20&v1=8:Sw154; !!VRy21&v1=8:Sw161; !!VRy5&v1=8:-y16; !!VRw154&v1=8:S-1;
!!VRy20&v1=16:Sw155; !!VRy21&v1=16:Sw162; !!VRy5&v1=16:-y17; !!VRw155&v1=16:S-1;
!!VRy20&v1=32:Sw156; !!VRy21&v1=32:Sw163; !!VRy5&v1=32:-y18; !!VRw156&v1=32:S-1;
!!VRy20&v1=64:Sw157; !!VRy21&v1=64:Sw164; !!VRy5&v1=64:-y19; !!VRw157&v1=64:S-1;
!!OW:R-1/6/y5; !!HE-1:Cy20/y21/-1/0/-1/0/-1/0/-1/0/-1/0/-1/0;
!!FU5:Py1/?y3/?y4; !!VRy2:|y3; !!OB998:Cy2 H25;
!?FU6; [zvar mon cnt ?cost]
!!VRz-1:M3/x3; !!UN&x3=1:N3/z-2/x2/0; !!UN&x3>1:N3/z-2/x2/1;
!!VRz-1:+^ ^;!!VRz-1:+z-2; [есть тип и есть число, осталось цены]
!!MA:Cx2/6/?x4; !!VRx4:*x3*3; !!VRz-2:M3/x4;
!!VRz-1:+^ за ^; !!VRz-1:+z-2; !!VRz-1:+^ золота.^;
!!VRzx1:Sz-1;
!?BA52&1000;
!!BA:H0/?y15 H1/?y16;
!!HE-10:C0/0/?y1/?y2 C0/1/?y3/?y4 C0/2/?y5/?y6 C0/3/?y7/?y8 C0/4/?y9/?y10 C0/5/?y11/?y12 C0/6/?y13/?y14;
!!IF:Wy15;
!!VRw151:Sy1; !!VRw158:Sy2; !!VRw152:Sy3; !!VRw159:Sy4;
!!VRw153:Sy5; !!VRw160:Sy6; !!VRw154:Sy7; !!VRw161:Sy8;
!!VRw155:Sy9; !!VRw162:Sy10; !!VRw156:Sy11; !!VRw163:Sy12;
!!VRw157:Sy13; !!VRw164:Sy14; !!VRw165:S3;
!!FU&y16=-2:E;
!!HE-20:C0/0/?y1/?y2 C0/1/?y3/?y4 C0/2/?y5/?y6 C0/3/?y7/?y8 C0/4/?y9/?y10 C0/5/?y11/?y12 C0/6/?y13/?y14;
!!IF:Wy16;
!!VRw151:Sy1; !!VRw158:Sy2; !!VRw152:Sy3; !!VRw159:Sy4;
!!VRw153:Sy5; !!VRw160:Sy6; !!VRw154:Sy7; !!VRw161:Sy8;
!!VRw155:Sy9; !!VRw162:Sy10; !!VRw156:Sy11; !!VRw163:Sy12;
!!VRw157:Sy13; !!VRw164:Sy14; !!VRw165:S3;
!?BA53&1000;
!!BA:H0/?y15 H1/?y16;
!!HE-10:C0/0/?y1/?y2 C0/1/?y3/?y4 C0/2/?y5/?y6 C0/3/?y7/?y8 C0/4/?y9/?y10 C0/5/?y11/?y12 C0/6/?y13/?y14;
!!IF:Wy15;
!!VRw158:-y2; !!VRw159:-y4; !!VRw160:-y6; !!VRw161:-y8; !!VRw162:-y10; !!VRw163:-y12; !!VRw164:-y14;
!!FU&y16=-2:E;
!!HE-20:C0/0/?y1/?y2 C0/1/?y3/?y4 C0/2/?y5/?y6 C0/3/?y7/?y8 C0/4/?y9/?y10 C0/5/?y11/?y12 C0/6/?y13/?y14;
!!IF:Wy16;
!!VRw158:-y2; !!VRw159:-y4; !!VRw160:-y6; !!VRw161:-y8; !!VRw162:-y10; !!VRw163:-y12; !!VRw164:-y14;