Игровая механика
 
 

Оглавление

Уровни сложности игры
Провинции
Урон от заклинаний
Боевой дух
Выносливость
Тяжёлые ранения
Расчёт урона при атаках
Опыт за бой
Таблица опыта юнита
Таблица опыта героя
Медали юнитов
Медали за осколок
Цены на ресурсы
Коррупция
Износ оружия и брони
Паника
Знание леса/болот/холмов
Лечение
Диверсии
Бонус/штраф от кармы к БД юнитов
Способности "Мародёр" и "Грабитель"
Цвета предметов (раритетность)
Боевое безумие

Уровни сложности игры

Уровень сложности
Жизнь нейтралов
Опыт за сражения
Золото
Кристаллы
Коррупция
Количество очков
доход
старт
доход
старт
макс
пров
Начинающий
55%
130%
+15
1000
+5
100
54%
20
25%
Опытный
70%
120%
+10
850
+3
85
60%
18
50%
Знающий
85%
110%
+5
700
+1
70
66%
16
75%
Эксперт
100%
100%
-
600
-
55
72%
14
100%
Мастер
115%
90%
-
500
-
40
78%
12
125%
Повелитель
130%
80%
-
500
-
30
84%
10
150%
Властелин
145%
70%
-
500
-
20
90%
8
175%

Провинции

В зависимости от количества жителей различают 11 уровней провинций:

Название
Максимальное количество жителей
1
Проклятая земля
-10
-100%
0%
2
Мёртвая земля
0
-100%
0%
3
Новые земли
100
0%
0%
4
Освоенные земли
250
10%
20%
5
Небольшое поселение
500
20%
25%
6
Деревня
1000
30%
30%
7
Село
2000
50%
40%
8
Большая деревня
4000
70%
50%
9
Небольшой город
8000
90%
60%
10
Город
15000
120%
70%
11
Большой город
30000
150%
70%

Примечания:
1. Номер уровня провинции подставляется в формулы для вычисления эффектов некоторых ритуалов (например, Зачарованный ларец).
2. Модификатор дохода зависит от типа земель. Технически там несколько сложнее, чем простое перемножение и сложение.
3. "Исследовано" - процент исследованных территорий, необходимый, чтобы в провинции данного уровня дальше росло население.

Настроение жителей влияет на доход с провинции, скорость прироста и скорость накопления/уменьшения недовольства. Настроение изменяется дискретно. Возможны состояния:

-5
Полны ненависти
-4
В ярости
-3
Возмущены
-2
Очень недовольны
-1
Недовольны
0
Спокойны
+1
Довольны
+2
Очень довольны
+3
Счастливы

Урон от заклинаний

У большинства заклинаний есть скрытые характеристики - "множитель силы мага" (PowerMod) и "множитель сопротивления цели" (ResistPower).

Точная формула урона от заклинаний выглядит так:
TotalDamage = MagAttak + MagAttak/5 - Random(2*(MagAttak/5) + 1) - TotalResist*ResistPower ,
или в приближенном виде:
TotalDamage = MagAttak * random(0.8; 1.2) - TotalResist*ResistPower ,
где
MagAttak = BaseDamage + Power * PowerMod;
BaseDamage - базовый урон заклинания (из таблички ниже), он же отображается в описании заклинания;
Power - величина умения "Сила мага" героя, применяющего заклинание;
PowerMod - модификатор "Силы мага" для этого заклинания (см. табличку ниже);
TotalResist - результирующее сопротивление цели (зависит от параметра "Сопротивление" цели и "Преодоление сопротивления" героя, применяющего заклинание). Формула:
 TotalResist = Resist - ResistPierce ,
   где Resist - величина параметра "Сопротивление" цели;
   ResistPierce - величина умения "Преодоление сопротивления" у героя, применяющего заклинание.
   TotalResist не может стать меньше 0 (в этом случае приравнивается нулю).
ResistPower - модификатор "Сопротивления" цели для этого заклинания (см. табличку ниже);
random(x; y) - случайное число в интервале от x до y.

Табличка "ударных" заклинаний:

Заклинание
Круг
Power
Mod
ResistPower
BaseDamage
Радиус
0
1
1
4 (Жизнь)
Цель
0
0.5
1
5 (Выносливость)
Цель
1
0.7
1 (защита)
9 (Жизнь)
Цель
1
0.5
1
6 (Боевой дух)
Цель
1
1
1
6 (Жизнь и снаряды)
Цель
1
1
1
9 (Жизнь)
Цель
2
1
1
7 (Жизнь)
Область (1)
2
0.5
1 (защита)
5 (Жизнь)
Область (2)
2
2
0.5
16 (Жизнь)
Цель
3
1
0.5 (защита)
15 (Жизнь)
Цель
3
2
2
20 (Жизнь)
Цель
3
1
1
10 (Жизнь)
Область (1)
4
1
1
9 (Жизнь)
Все
4
1
1
10 (Боевой дух)
Область (2)
4
3
2
15 (Жизнь)
Все
4
3
2
30 (Жизнь)
Цель
4
2
1.5
10 (Жизнь)
Область (2)
4
2
1
13 (Жизнь)
Все
5
0
0.2
8 (Выносливость)
Цель
5
0
0.25
8 (Жизнь)
Цель
5
1
1
7 (Жизнь)
Область (2)
5
1
1.5
13 (Жизнь)
Все
1
0.5
0.2
3 (Снаряды)
Цель
5
1
0
8 (Жизнь и снаряды)
Цель
5
2
1
3 (Жизнь)
Область (1)
5
1
1
6 (Жизнь)
Область (1)
3
1
1
15 (Жизнь)
Область (1)
2
1
0.5 (защита)
12 (Жизнь)
Цель
5
1
1 (защита)
10 (Жизнь)
Цель
5
2
0.5
6 (Жизнь)
Область (2)
5
2
0.5
18 (Жизнь)
Цель
5
2
0.5
16 (Жизнь)
Область (1)
5
2
0
4 (Жизнь)
Цель
5
2
0
5 (Выносливость)
Цель
5
1
0
15 (Жизнь)
Цель
1
1
0.5
15 (Жизнь)
Цель
4
1
0
10 (Жизнь)
Все
4
2
1
15 (Жизнь)
Область (2)
5
0.5
0.5
10 (Жизнь)
Область (2)
3
1
1
20 (Жизнь)
Цель
2
1
0.5
12 (Жизнь)
Цель
4
1
0.5
15 (Жизнь)
Область (2)
4
0.5
0.5 (защита)
12 (Жизнь)
Все
3
0.5
1
10 (Жизнь)
Область (1)
5
1
0.5
12 (Жизнь)
Все
5
1
0.5
16 (Жизнь)
Все
5
0
1
20 (Боевой дух)
Цель
5
0
1
8 (Боевой дух)
Область (1)
5
0.01
0
2 (Выносливость)
Цель
5
1
0
2 (Боевой дух)
4 (Жизнь)
Область (2)
3
2
1
8 (Жизнь и снаряды)
Область (2)
4
5
1
50 (Жизнь)
Цель
4
0.5
1
12 (Выносливость)
Все
2
2
0.5 (защита)
12 (Жизнь)
Цель
5
0
0.25
8 (Боевой дух)
Цель
4
0
0.5
15 (Жизнь)
Область (2)
4
1
0.5
5 (Жизнь)
Все
2
0.5
1
10 (Жизнь)
Цель
3
0.01
0.5
15 (Жизнь)
Область (1)
3
1.5
1.5
10 (Жизнь)
Область (2)
2
1
1.5
5 (Выносливость)
Область (1)
3
0.5
1
14 (Боевой дух)
Область (1)
4
1.5
1
20 (Жизнь)
Область (2)
5
0
0.5
30 (Жизнь)
Цель
5
0
0
20 (Жизнь)
Область (1)
5
0.5
0
9 (Жизнь)
Все
5
1
0
15 (Жизнь)
Все
5
0
0
4 (Боевой дух)
Область (1)
3
2
0.5
15 (Жизнь)
Область (1)
3
1
1
12 (Жизнь)
Область (1)
3
2
1
15 (Жизнь)
Цель
5
2
0
3 (Боевой дух)
3 (Жизнь)
3 (Выносливость)
Цель
1
-0.5
0
6 (Боевой дух)
Цель
1
0.5
0.5
3 (Жизнь)
Цель
3
0.5
0
5 (Жизнь)
Все
5
2
1
7 (Жизнь)
Область вокруг (1)
5
0
0
4 (Боевой дух)
Все

Примечания:
1. Для большинства заклинаний единичка "Силы мага" увеличивает урон на 1, но для некоторых больше или меньше. Например, для "Испепеления" - на 3 за единичку "Силы мага".
2. Высокоуровневые заклинания прямого урона очень чувствительны к "Сопротивлению" цели. Например, "Пламя Хаоса" снижает урон на 2 единички за каждую единичку "Сопротивления". Поэтому умение Тавматургия очень полезно магу, нацеленному на прямой урон.
3. Некоторые заклинания (например, "Каменный дождь") используют Защиту цели вместо Сопротивления.


Боевой дух

Есть базовое и текущее значение Боевого духа.
Базовое - зависит от воина, бонусов/штрафов, от мировоззрения других существ в отряде и мировоззрения игрока. У героев - повышается от умений, предметов и параметра Здоровье. У воинов может повышаться при повышении уровня и от умений героя-командира.
Текущее значение Боевого духа напрямую влияет на значения атак (Атака, Контратака, Дистанционная атака): даёт процентный бонус к значениям атак (если Боевой дух больше либо равен 16); даёт процентный штраф к значениям атак (если Боевой дух меньше или равен 5).
Точная зависимость атак от Боевого духа следующая:
1) Если Боевой дух меньше или равен 5, то к значениям всех атак применяется множитель равный 0.4 + 0.1*БоевойДух,
или в виде таблицы:

Боевой дух
Множитель
5
0,9
4
0,8
3
0,7
2
0,6
1
0,5
0
0,4 + Паника

Например, если у воина базовая Атака равна 10, то при Боевом духе равном 0 она упадёт до значения равного 0.4 * 10 = 4.

2) Если Боевой дух больше или равен 16, то к значениям всех атак применяется множитель, определяемый следующей таблицей:

Боевой дух
Множитель
16-17
1,05
18-20
1,10
21-24
1,15
25-29
1,20
30-35
1,25
36-42
1,30
43-50
1,35
и так далее

То есть, за 2 единицы Боевого духа после 15 даётся +5% бонус к атакам, за следующие 3 единицы - +10% бонус, за следующие 4 - +15% бонус и т.д.

Текущее значение Боевого духа изменяется и в бою, и на карте. При найме воина/героя оно равно базовому значению.
В течение боя Боевой дух воина (и героя) изменяется в случаях:
+1, если воин убил врага врукопашную или дистанционно;
+0, если воин убил врага заклинанием;
+1, если умер враг на соседней с воином клетке;
-1, если убили союзника, стоящего на соседней с воином клетке (у убитого не должно быть скрытой абилки №254, которая предотвращает падение духа у соседних союзников, - это, например, тотемы);
-1, если воину нанесена серьёзная рана; серьёзная рана - это когда воину за один удар наносится урон >15% максимального здоровья (или больше 5 единиц) за один удар, урон от эффектов (яда, горения и т.д.) не считается;
- если у воина не хватает Выносливости на действие, то нехватающее для действия количество Выносливости вычитается из текущего Боевого духа;
- если на воина применили заклинание/умение, обладающее эффектом понижения/повышения Боевого духа;
- если у воина есть умение Жажда крови(Х), то, убив противника рукопашной атакой, воин получает +Х Боевого духа. При убийстве противника контратакой или выстрелом воин получит только половину этого значения (Х/2, округление вниз до целого);
- Оглушающий удар, Оглушающий выстрел и Удар щитом отнимают единицу боевого духа, когда у цели заканчивается выносливость;
- Удар в спину увеличивает у атакующего боевой дух на 1;
- Кража снарядов при успешной краже снижает боевой дух цели на количество украденных снарядов.

При смерти героя (у игрока или ИИ) Боевой дух дополнительно изменяется:
- смерть героя у ИИ снижает Боевой дух всех воинов ИИ на 1 и увеличивает Боевой дух всех воинов (и героя) у игрока на 1;
- смерть героя у игрока - то же самое, но если герой имеет подкласс "командир" - то Боевой дух дополнительно снижается на 5, а у врагов дополнительно повышается на 2 (если класс первичный), или снижается на 4/повышается на 2 (если класс вторичный); если герой имеет класс "командир-командир" (Генерал), то, соответственно, -10 у своих и +5 у врагов.

Смерть воинов отряда (не призванных) под руководством героя может приводить к дополнительному снижению его Боевого духа. Вероятность этого тем выше, чем светлее карма игрока. Также смерть воинов вражеского отряда повышает Боевой дух героя-командира (точные цифры не разглашаются).

Если Боевой дух становится равным 0, то воин впадает в панику - пропускает ходы (но на удары врагов отвечает), убегает от врага, может дезертировать с поля боя, если дойдёт до "своего" края поля боя. Дезертиры останутся живы, но потеряют половину оставшихся единиц жизни. Ваши воины, сбежавшие с поля боя, останутся живы только в случае победы. Существует активное (через кнопку интерфейса) умение Паника, позволяющее воину пробежать с увеличенной скоростью в сторону "своего" края поля боя вплоть до полного сбегания из боя (при применении умения Боевой дух воина снижается на 1). Через несколько ходов паника проходит - воин получает +1 Боевого духа.

В конце боя Боевой дух каждого воина (и героя) ограничивается сверху значением равным базовому значению (т.е. превышение Боевого духа сбрасывается) .

На карте, если текущий Боевой дух воина меньше базового, то он повышается на 1 в случаях:
- сразу же после боя;
- за каждые 2 хода на карте без боя.

Исключения:
- Если воин обладает умением Неустрашимый, то его Боевой дух не снижается, но растёт вдвое слабее.
- Если на воина наложен эффект Боевое безумие, то текущий Боевой дух воина восстанавливается до базового значения (если был меньше) и на воина перестают действовать все эффекты, влияющие на Боевой дух (как положительные, так и отрицательные).

Примечания:
- В окне характеристик на карте Атака, Контратака, Дистанционная Атака у воина (героя) отображаются без учёта Боевого духа. В бою - с учётом Боевого духа.
- Сначала к Атаке применяются "плюсуемые" бонусы - от умений, предметов, заклинаний, а потом уже "умножаемые" (от Боевого духа и прочие). Поэтому, например, воину-герою плюсуемые бонусы к Атаке реально дают больше, чем указывается в их описании.


Выносливость

Есть базовое и текущее значение Выносливости.
После каждого боя текущая Выносливость восстанавливается до базового значения.
В бою текущая Выносливость изменяется следующим образом:
- -2 за каждую атаку (рукопашная, выстрел, но не Лечение и применение заклинания), если воин перед атакой прошёл одну или несколько клеток;
- -1 за каждую атаку, если воин атаковал, не сдвигаясь с места;
- понижается с применением заклинания (на сколько понижается - написано в описании заклинания; умение Умелый заклинатель(Х) уменьшает затраты выносливости на применение заклинания на Х, вплоть до 0);
- +(2+бонус) за каждый пропуск хода (когда воин стоит на месте и ничего не делает). Бонус задаётся умением существа "Восстановление сил". Если воин находится под эффектом "Зуд" (абилка №249), то бонус = 0, независимо от Восстановления сил;
- +(2+бонус) за выполнение команды Отдых. При выполнении этой команды воин дополнительно не будет отвечать на атаки врагов. Бонус также задаётся умением существа "Восстановление сил". Если воин находится под эффектом "Зуд" (абилка №249), то бонус = 0, независимо от Восстановления сил;
- -1 за каждую пройденную клетку с холмами или болотами (за исключением случая, когда у воина есть умение Знание холмов/Знание болот);
- -1 за каждую пройденную клетку, если Скорость эффектами снижена до 0 или ниже;
- понижается за каждое передвижение на одну или несколько клеток (учитывается сам факт передвижения, не важно на сколько клеток) у воинов с умением Тяжёлая броня (на величину умения);
- если на воина применили заклинание/умение, обладающее эффектом понижения/повышения Выносливости;
- если воин применил умение, требующее определённых затрат Выносливости (такое как Круговая атака); в этом случае тратится на 1 Выносливость больше, чем написано в описании умения (она тратится за факт атаки);
- повышается в начале каждого хода у воинов, обладающих умением Прилив сил (на величину умения).

Если текущая Выносливость становится меньше или равна 5, то воин начинает получать процентный штраф к значениям всех атак и Скорости.
Если текущая Выносливость воина становится равной 0, то воин в свой следующий ход принудительно выполняет команду Отдых (пропускает ход и не отвечает на атаки), кроме того, его Защита и Защита от выстрела уменьшаются в 2 раза (т.е. применяется множитель к защитам равный 0.5), также Оглушающий удар, Оглушающий выстрел и Удар щитом противником дополнительно отнимают единицу боевого духа.

Если Выносливость меньше или равна 5, то к значениям всех атак применяется множитель равный 0.4 + 0.1*Выносливость; а Скорость уменьшается на 1, если Выносливость равна 3 или 4, и на 2, если Выносливость меньше или равна 2. Скорость не может стать меньше 1.
В виде таблицы:

Выносливость
Множитель Атаки
Штраф Скорости
Множитель Защиты
5
0,9
-0
1,0
4
0,8
-1
1,0
3
0,7
-1
1,0
2
0,6
-2
1,0
1
0,5
-2
1,0
0
0,4
-2
0,5 + Отдых

Исключения:
- Если воин обладает умением Неутомимый (нежить, различные механизмы, некоторые артефакты для героя) - его текущая Выносливость не уменьшается ни за какие действия.
- Воины с умениями Летающий и Низколетающий не тратят Выносливость для преодоления холмов, лесов и болот.


Тяжёлые ранения

Если текущая Жизнь воина становится меньше 50% от базового значения, то к значениям всех атакам воина применяется множитель равный 0.5 + ТекущееЗдоровье/БазовоеЗдоровье.
Или, в виде таблицы:

Жизнь
Множитель
50%
1,0
40%
0,9
30%
0,8
20%
0,7
10%
0,6
~0%
~0,5

Исключения:
- Воины, обладающие умением Не чувствует боли не получают штрафной множитель к значениям атак от низкого значения Жизни.
- Если на воина наложен эффект Боевое безумие, то штрафной множитель к значениям атак от низкого значения Жизни не применяется.

Примечание:
Все множители к атакам от Выносливости, Боевого духа и Ранений перемножаются. Формула:
ТекущаяАтака = (БазоваяАтака + ПлюсуемыеБонусы) * StaminaMod * MoraleMod * WoundMod ,
где БазоваяАтака - базовое значение одной из атак воина (Атака, Контратака, Дистанционная Атака);
ПлюсуемыеБонусы - бонусы к атакам от умений/предметов/заклинаний, в описании которых написано, что "увеличивает/уменьшает атаку на X" (таких большинство);
StaminaMod - множитель к атакам от Выносливости;
MoraleMod - множитель к атакам от Боевого духа;
WoundMod - множитель к атакам от Ранений.


Расчёт урона при атаках

Точная формула
Сначала вычисляется итоговая атака цели с учётом случайного разброса:
Если Атака >= 5:
  ИтоговаяАтака = Атака + Атака/5 - Random(2 * (Атака/5) + 1);
Если Атака < 5:
  ИтоговаяАтака = Атака + 1 - Random(3),
где Атака - текущее значение Атаки/Контратаки/Дист.Атаки атакущего (с учётом всех умений и навыков воина);
Random(x) - целое случайное число в интервале [0; x-1];
все операции деления в формуле являются целочисленными и сразу округляются вниз.

ИтоговаяАтака не может стать меньше 1 (в этом случае становится равной 1). Исключение - если у воина есть умение "Не сражается"; в этом случае атака, контратака и дистанционная атака равна нулю, и воин не может атаковать и контратаковать.

Затем вычисляется урон:
  Урон = ИтоговаяАтака - Защита,
где Защита - итоговое значение Защиты/Защиты от выстрела/Сопротивления обороняющегося (с учётом всех умений и навыков), не может быть меньше 0 (в этом случае становится равной 0).

То есть, если Атака < 5, то она варьируется в интервале [Атака-1; Атака+1]; если атака >= 5, то в интервале [Атака - Атака/5; Атака + Атака/5]. После этого из полученного значения Атаки вычитается Защита цели.

"Отрицательный" урон
Если после вычислений по приведённым выше формулам Урон становится меньше или равен 0 (но не меньше -9), то всё равно существует определённая вероятность нанести урон = 1, если будет выполнено условие:
  Random(20 + Урон) >= 10,
где Урон - урон (отрицательное значение, поэтому перед ним знак "+"), вычисленный по приведённой выше формуле;
Random(x) - целое случайное число в интервале [0; x-1].
Из этого условия можно вывести вероятность нанесения единицы урона:
  Вероятность = (1 - 10 / (20 + Урон)) * 100%
или в виде таблицы:

Урон
Вероятность
0
50%
–1
47%
–2
44%
–3
41%
–4
38%
–5
33%
–6
29%
–7
23%
–8
17%
–9
9%
<=–10
0%

Упрощённая формула (более наглядная, но есть небольшое отклонение результатов):
  Урон = Атака * Random(0.8; 1.2) - Защита,
где Random(x; y) - случайное число в интервале от x до y.
Результат округляется вниз до целого. Если урон получается меньшим либо равным 0 - то наносится единица урона с вероятностью, приведённой в таблице выше.

Упрощённое описание формулы расчёта урона
При нанесении урона текущая Атака атакующего изменяется на +/-20% и из неё вычитается Защита цели.
Если полученное значение >= 1 - наносится урон, равный этому значению.
Если полученное значение <=–10, то урон не наносится.
Если полученное значение <= 0, но > –10, то наносится урон = 1 с определённой вероятностью - при значении 0 существует вероятность = 50%, при -5 - вероятность 33%, при -9 - 10%.


Влияние различных умений на расчёт урона
Далее используются сокращения:
A - атакующий;
D - обороняющийся (цель атакующего).

Общие правила
- Если у D есть умение Первый удар, а у A нет умения Первый удар, то D первым наносит урон.

- Если у A есть умение Сокрушение Зла(X), то против воинов с кармой < 0 (Беспринципный = –1, Злой = –2, Исчадие Зла = –3) Атака воина A увеличивается на значение равное X * abs(КармаD).
(Например, при Сокрушении Зла(2) против воина с кармой -3 Атака A будет увеличена на 2 * abs(-3) = 6).
Аналогично действует Тёмное превосходство(X), только для воинов с положительной кармой.

- Если у A есть умение Охотник на нежить(X) или Охотник на демонов(X), то против нежити или демонов соответственно Атака воина A увеличивается на значение равное X * Ранг_НежитиD или X * Ранг_ДемонаD соответственно.
(Например, при Охотнике на нежить(3) против Вампира (Ранг=4) Атака A будет увеличена на 3 * 4 = 12).

- Если у D есть умение Броня веры(X), а A является нежитью или демоном, то урон будет уменьшен на X%.

- Значения атаки/контратаки/защиты воинов (A и D) пересчитываются в момент перед ответным ударом (например, если после удара A жизнь D упала до значения меньшего 50%, то его контратака будет снижена в момент ответного удара).

Эффекты от умений ближнего боя
- Если A атакует умением Сокрушающий удар, то его Атака увеличивается на значение равное Атака/2 (округление вниз до целого).

- Если у A есть умение Магический удар, то вместо Защиты воина D берётся его Сопротивление. Кроме того, на урон воина A в этом случае не влияют умения Точный Удар, Бронебойный Удар и Парирование (но учитываются Контроль энергий и Неодолимая сила).

- Умение Бронебойный удар (Неодолимая сила при наличии Магического удара) уменьшает при расчёте урона Защиту (Сопротивление, соответственно) врага в 2 раза (округление вниз). Умение работает как при атаках, так и при контратаках воина.

- Умение Точный удар(X) (Контроль энергий(X) при наличии Магического удара) уменьшает при расчёте урона Защиту (Сопротивление, соответственно) врага на X (но не меньше 0). Умение работает только при атаках (при контратаках не работает).

- Умение воина Парирование(X) увеличивает Защиту воина на X при первой атаке в текущем раунде против этого воина. Умение не защищает от контратак врагов. Умение не работает, если Выносливость воина равна 0, или он обездвижен каким-либо эффектом.

- Если у воина A есть умение Ловкость, а у воина D - умение Парирование, то умение Парирование "сработает" против удара A.

- Если у воина A есть Бронейбойный удар и Точный удар, а у воина D - Парирование, то порядок срабатывания умений следующий: Бронебойный удар, Парирование, Точный удар.

- Урон от умения Зачарованный клинок(X) добавляется в конце атаки, он равен значению (X - СопротивлениеЦели) (урон не может быть меньше 0). При наличии Магического удара урон от умения полностью складывается с магическим ударом - общий урон становится равным (А + X - СопротивлениеЦели).

- Умение Атака с разгона(Р) применяется в самом конце, после всех расчётов урона, и добавляет +Р повреждений за каждую клетку между атакующим и целью (перед началом атаки), если у цели нет умения Стена копий, а сама цель не является бестелесной. При значении Р=3 и выше позволяет стоптать цель атаки, если у неё не осталось здоровья. (Точнее, там немного неправильно вычисляется количествово клеток между A и D. Получается отклонение от нужного в ту или иную сторону на 1 и более.
Урон от умения считается как abs(XA - XD) + abs (YA - YD) - 2, где X и Y - координаты воинов A и D на поле боя перед атакой - от 0 до 7 каждая; координата 0,0 - это верхний левый угол поля боя).

- Умение Удар в спину(X) применяется в самом конце, после всех расчётов урона, и добавляет +X повреждений, если с противоположной от воина стороны врага находится дружественный воин (кроме юнитов с подтипами "Ловушка" и "Преграда").

- Скрытая абилка с индексом 229 обнуляет при расчёте урона Защиту (Сопротивление при Магическом ударе) врага при ударе в спину. Умение работает как при атаках, так и при контратаках воина. Наличие умения Удар в спину не обязательно.

- Умение Затаптывание(X) не применяется при контратаке. Оно применяется при атаке, в случае если после нанесения урона у D осталось жизни меньше, чем X.


Эффекты от дистанционных умений
- Если A атакует умением Мощный выстрел, то его Атака увеличивается на значение равное Атака/2 (округление вниз до целого).

- Если у A есть умение Магический выстрел, то вместо Защиты D берётся его Сопротивление. Кроме того, на урон воина A в этом случае не влияют умения Точный выстрел и Бронебойный выстрел (но учитываются Контроль энергий и Неодолимая сила).

- Умение Точный выстрел(X) (Контроль энергий(X) при наличии Магического выстрела) уменьшает при расчёте урона Защиту от выстрела (Сопротивление, соответственно) врага на X (но не меньше 0).

- Умение Бронебойный выстрел (Неодолимая сила при наличии Магического выстрела) уменьшает при расчёте урона Защиту от выстрела (Сопротивление, соответственно) врага в 2 раза (округление вниз).

- Если у воина A есть умения Бронейбойный выстрел и Точный выстрел, то порядок срабатывания умений такой: Бронебойный выстрел, Точный выстрел.

- Урон от умения Зачарованные стрелы(X) добавляется в конце атаки, он равен значению (X - СопротивлениеЦели) (урон не может быть меньше 0). При наличии Магического выстрела урон от умения полностью складывается с магическим выстрелом - общий урон становится равным (А + X - СопротивлениеЦели).

- При наличии умения Дополнительный выстрел(X) урон и эффекты от обоих выстрелов рассчитываются отдельно. У воина вычитается X дополнительной Выносливости (+1 за факт атаки с места). Выносливость уменьшается после второго выстрела. (Следует иметь в виду, что при этом не работает Бронейбойный выстрел, а Точный выстрел воина считается вдвое меньшим; плюс ещё есть умение Дополнительный выстрел с индексом 160, которое разрешает действовать Бронебойному выстрелу).


Опыт за бой


Общий принцип получения опыта за бой - расcчитывается суммарный опыт за убитую вражескую армию, затем он делится между героем и юнитами армии-победителя.

Общий опыт за вражескую армию:
Опыт за одного вражеского юнита:
EnemyUnitExp = TableExp * (1 + 0.1 * Level), где
TableExp - базовое значение опыта, даваемое за убийство юнита
Level - уровень убитого юнита.

Опыт за вражеского героя:
EnemyHeroExp = 10 * Level, где
Level - уровень вражеского героя. Если вражеского героя нет - EnemyHeroExp = 0.

Общий опыт за вражескую армию рассчитывается по формуле:
EnemyArmyExp = (EnemyHeroExp + (EnemyUnitExp1 + EnemyUnitExp2 + ... EnemyUnitExpN)) * (1 + HeroArmyBonus/100)
, тут EnemyHeroExp - опыт за вражеского героя (из формулы выше);
EnemyUnitExpi - опыт за вражеского юнита;
HeroArmyBonus - бонус = X от навыка "Опыт войскам(X)" "нашего" героя (применяется только если герой жив на момент окончания боя).

Считается опыт и за призыванных по время боя вражеских юнитов, а также за убийство юнита, имеющего любой тип возрождения, например, перерождающиеся на поле боя посредством "Тёмного пакта" или через способность с индексом 191 "Возрождение" (т.е. суммарно за убийство и первоначального существа, и впоследствии возродившегося).

То есть, опыт за вражескую армию равен суммарному опыту за героя и каждого юнита. Опыт за юнита зависит от его базового табличного значения и увеличивается на 10% за каждый уровень юнита, опыт за героя = 10 единиц за каждый его уровень. Если у героя есть навык "Опыт войскам(X)", то суммарный опыт увеличивается на X%.


Распределение опыта между героем и юнитами
Опыт делится между юнитами и героем победившей армии следующим образом:
- 40% опыта даётся напрямую герою;
- 24% опыта делится между участвующими в бою, в том числе не пережившим его. Но герой тут не учитывается, равно как и все призванные существа;
- 36% опыта делится между всеми существами в армии в зависимости от "набитых фрагов" (наносил/получал урон, стрелял etc). Герой тут уже учитывается, но призванные существа по-прежнему исключены.

Таким образом, герой-солист будет терять примерно четверть опыта впустую, если не имеет армии.

Если героя вообще нет в армии (охрана провинции или гарнизон), то опыт распределяется так: 40% - делится поровну, 60% - делится в зависимости от активности (формулы во 2 и 3 подразделах ниже будут использовать коэффициенты 0.4 и 0.6 вместо 0.24 и 0.36).

По достижении 30-го уровня герои перестают получать те 40% опыта, которые даются напрямую; его "законные" 40% идут в общую копилку и распределяются как в предыдущем пункте: 40% - делится поровну, 60% - делится в зависимости от активности.

Опыт для героя
HeroExp = 0.4 * EnemyArmyExp * (1 + HeroSelfBonus/100)
, тут EnemyArmyExp - суммарный опыт за вражескую армию;
HeroSelfBonus - бонус = X от умения "Опыт героя(X)" героя.

Опыт добавляется герою даже если он мёртв на момент окончания боя (но его уровень в этот момент повышен не будет, повысится после следующего боя).

Опыт поровну на всех
Распределяется поровну между всеми юнитами (включая убитых), кроме героя и призванных существ - назовём их "считаемыми". Точнее, распределение зависит от того, сколько раундов провёл юнит в бою живым (и не важно - как именно эти раунды он провёл - стоял на месте или проявлял активность).

Сначала считается общее число туров, которые провели все "считаемые" юниты в бою:
TotalUnitTurns = UnitTurns1 + UnitTurns2 + ... + UnitTurnsN
, где UnitTurnsi - кол-во раундов, которые провёл юнит i в бою.

Затем даётся опыт каждому "считаемому" юниту:
UnitExp = 0.24 * EnemyArmyExp * (UnitTurns / TotalUnitTurns)
, тут EnemyArmyExp - суммарный опыт за вражескую армию;
UnitTurns - кол-во раундов, которые провёл юнит в бою живым;
TotalUnitTurns - общее кол-во раундов, которые провели все юниты и герой в этом бою.

То есть, если все юниты выжили до конца боя, то они получат равные части от 24% общего опыта. Если юнит был убит - он получит меньше опыта, чем остальные.

Опыт в зависимости от активности
Распределяется между всеми юнитами (исключая призванных) и героем, включая убитых, в зависимости от их "рейтинга активности" в бою.

Рейтинг активности каждого юнита вычисляется по формуле:
UnitActRating = 20*MeleeKills + 10*RangedKills + 2*MeleeDamage + RangedDamage + DamageReceived + 3*SpellsStamina + 2*UsedHealing + UsedStamina + 1
, тут
MeleeKills - количество врагов, убитых юнитом в ближнем бою;
RangedKills - количество врагов, убитых юнитом стрелковыми атаками (включая стрелковые с магическим уроном);
MeleeDamage - суммарный урон, нанесённый юнитом в ближнем бою;
RangedDamage - суммарный урон, нанесённый юнитом дистанционными атаками;
DamageReceived - суммарный урон, который был нанесён юниту в бою;
SpellsStamina - кол-во Выносливости, потраченной юнитом на применение заклинаний;
UsedHealing - суммарное здоровье, восстановленное юнитом Целительством;
UsedStamina - израсходованная юнитом в бою Выносливость.

Затем считается общий рейтинг всех юнитов (включая героя и убитых) по формуле:
TotalActRating = UnitActRating1 + UnitActRating2 + ... UnitActRatingN
, тут UnitActRatingi - рейтинг активности юнита/героя в бою, расчитанный по формуле выше.

Затем даётся опыт каждому юниту (включая убитых и героя):
UnitActExp = 0.36 * EnemyArmyExp * (UnitActRating/TotalActRating)
, тут EnemyArmyExp - суммарный опыт за вражескую армию;
UnitActRating - рейтинг активности юнита/героя в бою;
TotalActRating - суммарный рейтинг активности всей армии.

То есть, герой и все юниты делят оставшиеся 36% опыта в зависимости от нанесённого ими урона, кол-ва убитых врагов (ближний бой ценится в 2 раза больше дальнего; за убитых дают приличный бонус), полученного урона и прочей активности в бою. Юнит получает часть опыта в зависимости от своей "активности" на фоне общей "активности".

Итоговый опыт
В итоге, герою даётся суммарный опыт, полученный с 2-х частей "дележа": индивидуальный и поделённый с армией в зависимости от рейтинга активности.

Убитый герой получает опыт по тем же правилам, но его уровень будет повышен не сразу, а после следующего победного боя.

Выжившему юниту даётся суммарный опыт с 2-х частей: поделённый поровну с армией, поделённый с армией в зависимости от рейтинга активности.

Убитым юнитам опыт даётся по тем же правилам, что и "выжившим", но этот опыт "сгорает", в итоге "выжившие" получают меньше опыта.

Призванные юниты в распределении опыта не участвуют.

Таблица необходимого юниту опыта для получения уровня

Кол-во опыта, нужного для получения уровня N с уровня N-1 равно 10 * (N+1) * ExpMod/100.
Тут ExpMod - "модификатор опыта", скорость роста необходимого для уровня опыта - значение из странички юнитов (страница - там);
Ниже, в виде таблицы, суммарное значение опыта, необходимое для получения уровня N начиная с 0-го для юнитов с ExpMod=100:

Ур. Опыт      Ур. Опыт      Ур. Опыт
1.   20       11. 770       21. 2520
2.   50       12. 900       22. 2750
3.   90       13. 1040      23. 2990
4.   140      14. 1190      24. 3240
5.   200      15. 1350      25. 3500
6.   270      16. 1520      26. 3770
7.   350      17. 1700      27. 4050
8.   440      18. 1890      28. 4340
9.   540      19. 2090      29. 4640
10.  650      20. 2300      30. 4950
				

То есть, юниту для достижения 1-го уровня нужно 20 опыта, а для каждого следующего - на 10 больше, чем для предыдущего. Таблица опыта "растягивается" в зависимости от ExpMod: при ExpMod = 100 - нужно 100% от указанного опыта, при ExpMod = 200 - 200% от указанного опыта и т.д.

Таблица необходимого герою опыта для получения уровня

Базовая таблица опыта формируется так (без учёта уровня сложности и ExpMod):
Для перехода с 0 на 1 уровень надо 40 опыта.
С 1 по 10 уровень - чтобы перейти на уровень N с N-1 надо на 30 опыта больше, чем надо с уровня N-2 на N-1.
с 11 по 20 уровень - на 60 больше.
с 20 по 30 уровень - на 90 больше.

Точная формула для опыта, необходимого для следующего уровня (жутковатая):
ExpToNext = 10 * (3 + 3 * floor((PrevLevel + 1) / 10)))
, тут PrevLevel - номер предыдущего уровня;
floor(x) - округление x вниз до целого.

В итоге, таблица базового опыта выглядит так:

Ур. Опыт    Ур. Опыт    Ур. Опыт
1.     40   11.  2120   21.  9150
2.    110   12.  2550   22. 10240
3.    210   13.  3040   23. 11420
4.    340   14.  3590   24. 12690
5.    500   15.  4200   25. 14050
6.    690   16.  4870   26. 15500
7.    910   17.  5600   27. 17040
8.   1160   18.  6390   28. 18670
9.   1440   19.  7240   29. 20390
10.  1750   20.  8150   30. 22200
					

Эта таблица "растягивается" в зависимости от уровня сложности игры - необходимый для получения уровня опыт увеличивается на 80% + Сложность * 10%.
Тут Сложность = 0 для Начинающий, =1 для Опытный, =2 для Знающий, =3 для Эксперт и т.д.

Медали юнитов

Общее

Всего может быть 3 медали у юнита. Для получения медали нужно, чтобы выполнились все условия в списке "Условия получения". За один бой юнит может получить только одну медаль. Юниты с типом "Нежить", "Механизм", "Животное" и "Стихийный дух" не могут получить медаль. Те медали, которые выше по списку, получаются с большим приоритетом (если сработали все условия сразу для нескольких медалей, то юнит получит ту, которая выше в списке).

Часть условий выполняются с определённой вероятностью - такие условия содержат функцию Random(x).
Функция Random(x) возвращает целое случайное число в диапазоне [0; x-1].

Большинство условий содержат общие термины:
MeleeKills - количество врагов, убитых юнитом в ближнем бою;
RangedKills - количество врагов, убитых юнитом стрелковыми атаками (включая стрелково-магические);
MeleeDamage - суммарный урон, нанесённый юнитом в ближнем бою;
RangedDamage - суммарный урон, нанесённый юнитом дистанционными атаками;
Attack - значение Атаки юнита перед боем (без бонусов от героя и боевого духа);
CounterAttack - значение Контратаки юнита перед боем (без бонусов от героя и боевого духа);
RangedAttack - значение Дистанционной атаки юнита перед боем (без бонусов от героя и боевого духа).

Некоторые упрощения

Если условие содержит выражение:
Random(x) >= y
то вероятность его выполнения (вероятность получения медали) будет вычисляться по формуле:
Вероятность% = (1-y/x) * 100%

Большинство "вероятностных" условий получения медалей содержат выражения вида:
Random(21 + A) >= 20
В этом случае вероятность выполнения условия в зависимости от значения A можно представить в виде таблицы:

A   Вер%
0    5
1    9
2   13
3   17
4   20
5   23
10  35
15  44
20  51
25  57
30  61
50  72
				

Список медалей

Внимание: только для оригинальной игры!
В моде "Новые Горизонты" медали и условия их получения изменены!


Крест Героя

Бонус: Атака/Контратака +2, Защита/Защита от выстрела/Сопротивление +1
Содержание: 10 зол

Условия получения:
MeleeKills + RangedKills > 4
DamageReceived >= MaxLife * 2 / 3
Random(11 + MeleeKills + RangedKills) >= 13
Упрощённое описание:
Юнит может получить медаль, если он убивает минимум 5 врагов в бою и получает урона не менее чем на 2/3 максимального количества жизней. Вероятность получения, в зависимости от количества убитых:
Kills Вер%
5 19
6 24
7 28
8 32
9 35
10 38
16 52
20 58


Звезда Мага

Бонус: Дистанционная атака +1, контроль энергий +1
Содержание: 5 зол + 1 кр

Условия получения:
MagicShotAbility > 0
RangedDamage >= 3 * RangedAttack
RangedKills > 1
Random(21 + RangedDamage + 5 * RangedKills - 3 * RangedAttack * Ammos) >= 30
Random(NumMageMedals + 1) == 0
, где Ammos - значение характеристики Запас снарядов юнита перед боем;
MagicShotAbility - значение характеристики Магический выстрел юнита;
NumMageMedals - кол-во "Звёзд Мага" у юнита перед боем.
Упрощённое описание:
Медаль может получить юнит-маг, убивший хотя бы одного врага и нанёсший урон, в 3 раза превышающий его дистанционную атаку.
Чем больше нанесённый урон и количество убитых врагов, тем выше вероятность получения медали.
Также вероятность зависит от количества уже полученных этим юнитом медалей "Звезда Мага": при 1 медали вероятность получить медаль меньше в 2 раза, при 2 медалях - в 3 раза.


Орден Снайпера

Бонус: Дистанционная атака +1, Точный выстрел +1
Содержание: 8 зол

Условия получения:
Ammos > 2
MagicShotAbility == 0
RangedDamage >= 3 * RangedAttack
RangedKills > 1
Random(21 + RangedDamage + 5 * RangedKills - 3 * RangedAttack * Ammos) >= 30
Random(NumSniperMedals + 1) == 0
, где Ammos - значение характеристики Запас снарядов юнита перед боем (без бонусов от героя);
MagicShotAbility - значение характеристики Магический выстрел юнита;
NumSniperMedals - кол-во "Орденов Снайпера" у юнита перед боем.
Упрощённое описание:
Медаль может получить юнит-стрелок (не маг, не варвар/копейщик), убивший хотя бы одного врага и нанёсший урон, в 3 раза превышающий его дистанционную атаку.
Чем больше нанесённый урон и количество убитых врагов, тем выше вероятность получения медали.
Также вероятность зависит от количества уже полученных этим юнитом медалей "Орден Снайпера": при 1 медали вероятность получить медаль меньше в 2 раза, при 2 медалях - в 3 раза.

Медаль Целителя

Бонус: Целительство +2, Запас снарядов +1
Содержание: 3 зол + 1 кр

Условия получения:
HealingAbility > 0
HealedLife >= 3 * HealingAbility
Random(21 + HealedLife - HealingAbility * 3) >= 20
Random(NumHealingMedals + 1) == 0
где HealingAbility - значение навыка юнита Целительство;
HealedLife - суммарное здоровье, восстановленное юнитом Целительством;
NumHealingMedals - кол-во "Медалей Целителя" у юнита перед боем.
Упрощённое описание:
Медаль может получить любой целитель, вылечивший кол-во здоровья, в 3 раза превышающее значение его умения Исцеление.
Чем больше излечено здоровья - тем выше вероятность получения медали.
Также вероятность зависит от количества уже полученных этим юнитом медалей "Медаль Целителя": при 1 медали вероятность получить медаль меньше в 2 раза, при 2 медалях - в 3 раза.


Орден за Волю к Победе

Бонус: Атака/Контратака +2
Содержание: 5 зол

Условия получения:
MeleeDamage > 3 * (Attack + CounterAttack)
Random(21 + MeleeDamage - 3 * (Attack + CounterAttack)) >= 20
Упрощённое описание:
Медаль может получить любой юнит, нанёсший суммарный урон, в 3 раза превышающий сумму его Атаки и Контратаки.
Чем больше нанесено урона - тем больше вероятность получения медали.


Медаль за Стойкость

Бонус: Жизнь +4, Контратака +1, Защита +1
Содержание: 4 зол

Условия получения:
TotalDamageReceived >= MaxLife
MeleeKills + RangedKills > 0
Random(21 + TotalDamageReceived - MaxLife) >= 20
где TotalDamageReceived - суммарный урон, который был нанесён юниту в бою;
MaxLife - максимальное значение характеристики Жизнь юнита.
Упрощённое описание:
Медаль может получить любой юнит, получивший в бою урон, превышающий его максимальное значение здоровья.
Чем больше получено урона - тем больше вероятность получения медали.


Орден Победителя

Бонус: Жизнь +5, Атака +2, Контратака +1, Боевой дух +3
Содержание: 10 зол

Условия получения:
floor(TotalAllies / AliveAllies) > 5
MeleeKills + RangedKills > 0
Random(21 + TotalAllies + MeleeKills + RangedKills) >= 20,
где TotalAllies - всего юнитов в армии на начало боя (считая героя);
AliveAllies - живых юнитов в армии на конце боя (не считая героя);
floor(x) - округление числа x вниз до ближайшего целого.
Упрощённое описание:
Медаль может получить юнит, оставшийся в живых в бою, где погибло минимум 80% его армии (например, в армии из 5 юнитов + герой выжил только 1 юнит + герой).
Чем больше врагов убил юнит, и чем больше юнитов было в армии перед боем - тем выше вероятность получения медали.


Медаль за Непоколебимость

Бонус: Сопротивление +2, Боевой дух +2
Содержание: 3 зол

Условия получения:
SpellDamageReceived > CurrentLife/2
MeleeKills + RangedKills > 0
Random(21 + SpellDamageReceived - CurrentLife/2) >= 20,
где SpellDamageReceived - суммарный урон от заклинаний, который был нанесён юниту в бою (магическо-стрелковые атаки не считаются);
CurrentLife - текущее значение Жизни юнита на конец боя.
Упрощённое описание:
Медаль может получить любой юнит, получивший достаточно много урона от заклинаний в бою и убивший хотя бы одного врага.
Чем больше получено урона, и чем меньше осталось жизни у юнита - тем больше вероятность получения медали.
Баг??? Возможно, в реализации этой и двух следующих медалей есть баг - вместо макс. значения Жизни используется текущее значение Жизни. Условие получения смотрелось бы логичнее, если бы уроном определённого вида выбивалось половина жизни.


Орден Защитника

Бонус: +2 Защита, +1 Контратака
Содержание: 4 зол

Условия получения:
MeleeDamageReceived > CurrentLife/2
MeleeKills > 0
Random(21 + MeleeDamageReceived - CurrentLife/2) >= 20,
где MeleeDamageReceived - суммарный урон от атак ближнего боя, который был нанесён юниту в бою;
CurrentLife - текущее значение Жизни юнита на конец боя.
Упрощённое описание:
Медаль может получить любой юнит, получивший достаточно много урона в ближнем бою, и убивший в ближнем бою хотя бы одного врага.
Чем больше получено урона и чем меньше осталось жизни у юнита - тем больше вероятность получения медали.


Медаль за Сноровку

Бонус: Защита от выстрела +2, Выносливость +2
Содержание: 3 зол

Условия получения:
RangedDamageReceived > CurrentLife/2
MeleeKills + RangedKills > 0
Random(21 + RangedDamageReceived - CurrentLife/2) >= 20,
где RangedDamageReceived - суммарный урон от дистанционных атак (включая стрелково-магические), который был нанесён юниту в бою;
CurrentLife - текущее значение Жизни юнита на конец боя.
Упрощённое описание:
Медаль может получить любой юнит, получивший достаточно много урона от дистанционных атак, и убивший хотя бы одного врага.
Чем больше получено урона и чем меньше осталось жизни у юнита - тем больше вероятность получения медали.


Медаль за Отвагу

Бонус: Атака +1, Боевой дух +4
Содержание: 3 зол

Условия получения:
CurrentMorale - MaxMorale - MapMorale/2 > 5
MeleeKills + RangedKills > 0
Random(21 + CurrentMorale - MaxMorale) >= 30,
где CurrentMorale - значение текущего Боевого духа юнита на конец боя:
MaxMorale - значение максимального Боевоего духа юнита на начало боя (базовое, то есть то, которое пишется как характеристика, а не в виде "синей полоски").
MapMorale - Бонус к боевому духу на глобальной карте
Упрощённое описание:
Медаль может получить любой юнит, набравший боевого духа в бою на 5 и больше выше максимального значения, и убивший хотя бы одного врага.
Чем больше набрано боевого духа выше максимума - тем больше вероятность получения медали.


Медаль за Рвение

Бонус: +1 Контратака, +3 Выносливость
Содержание: 3 зол

Условия получения:
UsedStamina >= MaxStamina
Random(21 + UsedStamina - MaxStamina) >= 20,
где UsedStamina - израсходованная юнитом в бою Выносливость;
MaxStamina - макс. Выносливость юнита (без учёта бонусов от героя);
Упрощённое описание:
Медаль может получить любой юнит, истративший суммарно выносливости больше, чем у него было перед началом боя.
Чем больше выносливости потрачено - тем больше вероятность получения медали.


Знак наёмника

Бонус: Увеличенная плата +100%
Содержание: -

Условия получения: Найм юнита в таверне

Знак чародея

Повышает запас выстрелов и выносливость на 2. Плата золота возрастает на 4. Плата кристаллов возрастает на 1.

Условия получения:
SpellsStamina >= 3
RangedKills > 0
Random(10 + SpellsStamina + RangedKills) >= 10
Random(NumBattlemageBadges + 1) == 0

Упрощённое описание:
Медаль может получить юнит, потративший на использование книги заклинаний не менее 3 выносливости, и убивший хотя бы одного врага в дальнем бою. Чем больше потрачено выносливости и сделано убийств, тем выше шанс.
Также вероятность зависит от количества уже полученных этим юнитом медалей "Знак Чародея": при 1 медали вероятность получить медаль меньше в 2 раза, при 2 медалях - в 3 раза.


Огненный вымпел

Повышает запас выстрелов и сопротивление на 1. Умение огненные стрелы увеличивается на 3. Плата золота возрастает на 7. Плата кристаллов возрастает на 1.

Условия получения:
Ammo > 2
RangedAttack > 0
RangedDamage >= RangedAttack * 3
MagicShot == 0
RangedKills > 1
DamageReceived >= MaxLife * 2 / 3
Random(21 + RangedDamage + 5 * RangedKills - 3 * RangedAttack * Ammo) >= 30
Random(NumFirePennants + 1) == 0

Упрощённое описание:
Медаль может получить любой юнит с немагической стрелковой атакой и не менее чем тремя снарядами, не включая бонус героя от умений, нанёсший урона не менее чем утроенное значение стрелковой атаки без бонусов героя и морали, совершивший минимум 2 убийства и получивший урон не менее чем на 2/3 здоровья
Также вероятность зависит от количества уже полученных этим юнитом медалей "Огненный вымпел": при 1 медали вероятность получить медаль меньше в 2 раза, при 2 медалях - в 3 раза.

Медали за осколок

X - переменная, зависящая от размера осколка, берётся из shard.var:

Маленький
6
Небольшой
8
Средний
10
Крупный
12
Большой
14
Очень большой
16
Огромный
18
Гигантский
20

Тактик
В боях не погибло ни одного юнита (включая героя), и не было ни одного "Возврата в прошлое".
Убитые призванные и подчинённые юниты не влияют.
Бои без участия наших героев не влияют (охрана провинций точно не влияет, гарнизоны - под вопросом).
Если юнит был убит и воскрешён в течение боя - он не считается убитым (но если было поднятие в нежить и всякие тёмные пакты - юнит считается убитым).
Одним словом - все юниты, которые были в армии в начале боя должны остаться живыми на конец боя.
Слава: 200 * (X - 2) / 8

Стратег
Не было ни одного проигранного боя с участием наших героев, и не было ни одного "Возврата в прошлое".
Слава: 100 * (X - 2) / 8

Исследователь
Суммарно всеми героями исследовано > 1000% территорий провинций.
Слава: 30

Картограф
На глобальной карте отсутствуют "чернильные пятна". Туман войны может присутствовать.
Слава: 40 * (X - 2) / 8

Архитектор
В замке построено 125 зданий.
Слава: 25

Охотник на Драконов
Уничтожено 10 или больше сайтов с охраной, в составе которой есть юнит Дракон (также, возможно, считаются завоёванные боем провинции со стражей "Дракон").
Слава: 40

Разрушитель
Награблено > 1000 золота с провинций.
Слава: 25

Коллекционер
На герое хоть раз в течение игры был надет сет из 4 и более предметов.
Слава: 20

Цены на ресурсы

Цена на ресурс повышается на 1 за каждые купленные две единицы данного ресурса, причём не играет роли, кто купил - вы или ваш противник (включая ИИ).
Цены и рынок ресурсов общие для всех игроков.
При наличии у игрока данного ресурса, покупать ему этот ресурс уже не нужно.

Пример повышения цен:
Строим Кузницу (1 железо). Цена не изменяется.
На следующем ходу строим Литейный цех (3 железа). Цена повышается на 2 (4 железа / 2).
Дальше противник строит Школу мечников (2 железа). Цена повышается ещё на 1.
Итого суммарно было куплено 6 железа, и цена повысилась на 3 (6 / 2).

Базовые цены на ресурсы:

Ресурс
Зол.
Кр.
15
0
10
0
35
0
10
5
50
20
110
0
80
10
600
50
400
100

Коррупция

Коррупция вычисляется в 3 этапа:

1) Вычисляется общий процент коррупции лорда и отдельных провинций, дополнительно штраф от сложности игры (+2% за уровень) и поправка (-20%) чтобы коррупция начала действовать не сразу.
Коррупция1% = (КоррупцияЛорда + sum(КоррупцияПровинции)) / 10 + 2 * difficulty - 20
, где

КоррупцияПровинции = (sites_corruption + race_corruption) * (1 + outer_build_bonus / 100)
, тут
race_corruption - зависимость от расы, населяющей провинцию:

10
5
15
20
8
10
0
9
12
12
0
13


sites_corruption - зависимость от сайтов в этой провинции:

10

outer_build_bonus - зависимость от зданий, построенных в провинции:

-30
-50
-70
-100
-100
-50


sum(КоррупцияПровинции) - суммарная коррупция во всех провинциях лорда;

КоррупцияЛорда = суммарному эффекту от случайных событий с индексом эффектов 22 (?? + может ещё что-то, например, зависимость от стартовой кармы игрока).

difficulty - уровень сложности игры от 0 до 6;


2) Коррупция ограничивается сверху процентом, зависящим от уровня сложности (54% + 6% * уровень):
Коррупция2% = min(Коррупция1%; 54 + 6 * difficulty)
, тут
min(x; y) - равно минимальному из чисел x, y;


3) Коррупция уменьшается в зависимости от построек в замке.
КоррупцияФинальная% = Коррупция2% * (inner_build_bonus + 100) / 100,
, где
inner_build_bonus - суммарный бонус от построек в замке (?? или бонус от построек одной линейки = бонусу старшей постройки):

-10
-20
-20
-5
-30
-5


4) В итоге, коррупция увеличивает общий расход золота и кристаллов лорда на процент = КоррупцияФинальная% (?? нужно бы проверить).

Износ оружия и брони

- При проведении атаки у героя увеличивается износ оружия на 1, при получении урона от атаки врага - износ брони на 1.

- Луки и другое оружие дальнего боя в ближнем бою изнашиваются точно так же, как и при стрельбе.

- При применении умения "Дополнительный выстрел" износ оружия увеличивается по 1 за каждый выстрел.

- Если героя атакует юнит с умением "Повреждение оружия", или сам герой атакует такого юнита в ближнем бою, то износ оружия увеличивается на 2 за каждый удар.

- Если героя атакует юнит с умением "Повреждение брони", то износ брони увеличивается дополнительно на 1 за каждый удар.

- Если героя атакует юнит с умением "Тяжёлые снаряды", то износ брони увеличивается дополнительно на 1 за каждый выстрел.

- При смерти героя увеличивается на 5 износ его оружия, и на 5 износ брони.

- Износ оружия/брони может быть избегнут с вероятностью = значению навыка "Снижение износа предметов" героя. Для каждой единицы износа вероятность проверяется отдельно.

- При получении единицы износа оружия Прочность оружия в правой руке героя уменьшается на 1. Если в левой руке героя есть стрелы - то их прочность тоже уменьшается на 1. (Вероятность избежать износ "бросается" отдельно для правой и левой руки).

- При получении единицы износа брони сначала случайным образом выбирается один из целых (Прочность > 0) предметов, надетых на героя. У предметов на разных частях тела разные "веса" (чем больше "вес", тем больше шанс, что этот предмет будет выбран):

Левая рука (кроме стрел)
50
Торс
50
Голова
30
Пояс
10
Плащ
20
Обувь
30
Кисти рук
30
Запястье (только с Прочностью>1)
10

Паника

Если перед наложением эффекта, понижающего боевой дух юнита, его боевой дух был > 0, то Шанс_паники = 50 + 10 * Штраф_БД, и боевой дух юнита становится = 0.

Если у юнита мораль уже была = 0, то ШансПаники = Шанс_паники + 10 * Штраф_БД, мораль не изменяется.

Здесь Штраф_БД - значение, на которое боевой дух "уходит в минуса" после наложения эффекта.

В случае, если боевой дух юнита = 0, то в его ход происходит следующее:
- если Шанс_паники >= 50, то юнит гарантированно пропускает ход, и после этого Шанс_паники падает на 10. Шанс_паники определяет в этом случае вероятность, что юнит будет убегать (иначе юнит "застынет на месте").

- если Шанс_паники < 50, то юнит пропускает ход с вероятностью = Шанс_паники (точнее - random(100) <= Шанс_паники), и после этого Шанс_паники падает на 10.
Если в этом случае "вероятность паники" не сработала, то юнит получает +1 к Боевому духу и Шанс_паники = 0.

Воины, впавшие в панику, могут дезертировать с поля боя, если дойдут до "своего" края поля боя. Они останутся живы, но потеряют половину оставшихся единиц жизни. Нельзя закончить бой, просто запугав всех врагов - придётся либо уничтожать их, либо пугать до момента, когда они сбегут. Если все враги сбегут - бой будет выигран. Ваши воины, сбежавшие с поля боя, останутся живы только в случае победы.

Знание леса/болот/холмов

Кроме отсутствия штрафа к Скорости и Выносливости при передвижении, воин не будет получать штрафы местности к параметрам.
Кроме того, Знание местности(X) даёт бонусы:
- к Защите от выстрела = 2*(Х-1) - только Знание леса;
- к Защите и Контратаке = 1*(Х-1) - только Знание холмов;
- к Сопротивлению = 1*(Х-1) - только Знание болот.

Таким образом, Знание леса увеличивают только защиту от выстрела (если воин на лесном тайле), Знание холмов - защиту и контратаку (на холмистом тайле), Знание болот - только сопротивление (на болотном тайле).

Лечение

Юнит с умением Целительство(X) вылечивает за раз [X-1; X+1] единиц жизни. "Пациенты" с типом "Нежить", "Механизм" и "Стихийный дух", а также с умением Гниющие раны не могут быть исцелены. Механизмы могут быть исцелены аналогичным лечению умением Ремонт, которое также позволяет ускорять лечение механизмов вне боя и быстрее восстанавливать укрепления, если юнит с ремонтом будет находиться в гарнизоне на начало дня.

Восстановление жизни у юнитов/героев между боями:
Нежить восстанавливает жизнь только отдельными навыками:
+10% от макс Жизни в ход за каждый уровень умения героя Некромантия.
+20% от макс Жизни в ход за каждый уровень навыка героя Зов некроманта
Если у юнита есть Регенерация (например, Мумия), то излечиваются дополнительные 10% здоровья в ход (внимание: юниты излечиваются только в отряде героя; нежить, находящаяся в гарнизоне, отдельно от "хозяина", похоже, сама не лечится никаким способом).

Далее про не-нежить. Базовое: Восстанавливается 10% от макс Жизни за ход. Округление вниз.

Дополнительно у героев:
+1 Жизни за каждую единицу параметра Здоровье.

Дополнительно у юнитов и героев:
+2 Жизни за каждую единицу навыка Регенерация.
+1 Жизни за каждую единицу навыка Первая помощь.
+1 Жизни за каждого юнита с навыком Целительство в отряде, от силы навыка не зависит.

Дополнительно у юнитов:
+(значение умения Живучесть)% от макс Жизни в ход.

Дополнительно у механических существ:
+1 Жизни за каждого юнита с навыком Ремонт в отряде, от силы навыка не зависит.

Если юнит на конец хода находится в гарнизоне (в замке или построенном в провинции укреплении), то он дополнительно вылечит 10% в ход (независимо от того, Застава это или Замок); на воинов, находящихся в отряде героя, это не распространяется.

Также некоторые постройки в замке и провинциях добавляют свои бонусы:
Постройка
%
Замок:
10
20
30
10
10
Провинции:
10
20
15
10
15
10
10

Диверсии

Диверсия "Ложная тревога" отнимает Выносливость у всех юнитов в армии врага в кол-ве = 6 + Бонус_Егеря.

Диверсия "Отравить запасы воды" накладывает эффект "Отравление" на 3 хода с силой = 2 + Бонус_Егеря.

Диверсия "Устроить панику" отнимает Боевой дух у всех юнитов армии врага в кол-ве = 4 + Бонус_Егеря (не может опустить Боевой дух ниже 1).

Бонус_Егеря даётся герою класса Разведчик-Маг: на 10-м уровне (Егерь) он равен 2, на 20-м (Следопыт) - равен 4. Кроме этого, Егерь получает "невидимые" +1 к уровню скилла Разведка, а Следопыт +2 к уровню скилла Разведка, но только для определения доступности и стоимости диверсий; исследование провинций, например, не ускоряется (поэтому Егерю становится доступной диверсия "Устроить панику" при 3-м уровне скилла "Разведка").

На силу диверсий не влияет Сопротивление врагов.

Цена (в золоте) диверсий определяется следующим образом:
"Ложная тревога": Цена = 15 + СуммаРангов * 4
"Отравить запасы воды":  Цена = 20 + СуммаРангов * 5
"Ложная тревога": Цена = 30 + СуммаРангов * 6
Тут СуммаРангов - сумма рангов всех юнитов вражеской армии, на которых подействует диверсия.

Если у героя уровень скилла "Разведка" = 5, то цена диверсий понижается в 2 раза.

Проводить диверсию может и защищающийся герой, если его Инициатива выше на 3 и более. Атакующий герой в таком случае диверсий не устраивает даже при наличии возможности.

Бонус/штраф от кармы к БД юнитов

Воины со скрытой абилкой №99 (например, с умением "Снабженец", которое есть у Осликов) в рассчётах не участвуют. Также у воинов с умением "Терпимость" боевой дух не снижается из-за конфликтов мировоззрения с другими членами отряда и Владыкой (но повышаться может).

Бонус зависит от кармы юнита, кармы юнитов его отряда и кармы правителя.

БонусКармы от кармы юнитов отряда определяется следующим образом:
Если юнит - нейтральный.
БонусКармы = Сумма_бонусов_не_нейтральных / (2 * Колво_не_нейтральных). Округление до ближайшего к нулю целого.
(По сути - БонусКармы = половине среднего бонуса к морали всех не-нейтральных юнитов отряда).

Если юнит - не нейтральный.
Для юнита X БонусКармы вычисляется так:
Если карма всех остальных юнитов отряда по знаку = карме юнита X, то:
 - если нет ни одного нейтрального юнита в отряде, то БонусКармы = максимальному по модулю значению кармы среди всех остальных юнитов отряда.
 - если есть хоть один нейтральный, то на 1 меньше (на 1 меньше максимального по модулю значению кармы среди всех остальных юнитов отряда).
Если карма хоть одного из остальных юнитов противоположна по знаку карме юнита X:
 - БонусКармы = -abs(карма) - floor(abs(сумма_противоположных))/3. (Тут abs(x) - значение x по модулю, floor() - округление вниз до целого).

БонусКармы от кармы правителя определяется так:
Если юнит имеет положительную карму и карма правителя >=50, то юнит получает БонусКармы = +1;
Если юнит имеет отрицательную карму и карма правителя <=-100, то юнит получает БонусКармы = +1;
Если карма правителя не равна по знаку карме юнита: если abs(КармаПравителя) > 250, то БонусКармы = -5, иначе БонусКармы = -abs(КармаПравителя)/50.

Призванные юниты не влияют на бонусы боевого духа (считаются только те, которые были в начале боя, включая умерших).


Таблица числовых значений кармы правителя:

Карма
Титул
Менее -200
Ужасный
(-199; -150)
Кровожадный
(-149; -100)
Чёрный
(-99; -75)
Свирепый
(-74; -50)
Грозный
(-49; -30)
Злой
(-29; -20)
Коварный
(-19; -10)
Безжалостный
(-9; 9)
-
(10; 19)
Честный
(20; 29)
Справедливый
(30; 49)
Милосердный
(50; 74)
Добрый
(75; 99)
Мудрый
(100; 149)
Светлый
(150; 199)
Великий
Более 200
Благословенный


Пример 1.
В отряде 1 Разбойник (карма -2), 3 Мечника (карма +1). Правитель имеет карму = 150 (Великий).

Для Разбойника:
От армии: есть юниты с противоположной по знаку кармой: БонусКармы = -abs(-2) - floor(abs(1+1+1))/3 = -3.
От правителя: карма правителя противоположна по знаку: БонусКармы = -abs(150)/50 = -3.
Итого БонусКармы = -3 + -3 = -6.

Для каждого из Мечников:
От армии: есть юниты с противоположной по знаку кармой: БонусКармы = -abs(1) - abs(-2)/3 = -2.
От правителя: карма правителя одинакова по знаку и >=50 - БонусКармы = +1
Итого БонусКармы = -2 + 1 = -1.


Пример 2.
В отряде 1 Паладин (карма +3), 2 Жреца (карма +2) и 1 Гидра (карма 0). Правитель имеет карма = 50 (Добрый).

Для Паладина:
От армии: нет юнитов с противоположной кармой. Максимальная положительная карма остальных юнитов = +2 (у Жрецов), но есть нейтральные юниты - БонусКармы = +2 - 1 = +1.
От правителя: карма правителя одинакова по знаку и >=50 - БонусКармы = +1
Итого БонусКармы = +1 + 1 = +2.

Для Жрецов:
От армии: нет юнитов с противоположной кармой. Максимальная положительная карма остальных юнитов = +3 (у Паладина), но есть нейтральные юниты - БонусКармы = +3 - 1 = +2.
От правителя: карма правителя одинакова по знаку и >=50 - БонусКармы = +1.
Итого БонусКармы = +2 + 1 = +3.

Для Гидры:
От армии: БонусКармы = (+3 + +2 + +2) / (2 * 3) = 1.2, округляем до ближайшего у нулю целого - БонусКармы = +1.
От правителя: нейтральным юнитам бонус не даётся. Бонус Кармы = 0.
Итого БонусКармы = +1 + 0 = +1.

Способности "Мародёр" и "Грабитель"

Способности Мародёр, Грабитель, Трудоголик и Ищейка считаются в конце боя и только для выживших бойцов с этой способностью.

Таким образом, если нанять разбойников, и они погибнут в бою на том же ходу, то им не достанется ни трофеев, ни денег с провинции.

Цвета предметов (раритетность)

Цвет в названии предмета означает его раритетность (редкость).
Уровень раритетности 1
Уровень раритетности 2
Уровень раритетности 3
Уровень раритетности 4 - Редкий
Уровень раритетности 5 - Очень редкий
Уровень раритетности 6 - Легендарный

Боевое безумие

Боевое безумие активируется при получении урона в 5+ ОЗ или 15% от общего количества здоровья (в оригинале было 10+ или 25% от здоровья).