Дипломатия1. Находим силу героя Hero_Power = sqrt((1 + 0.05 * Attack) * (1 + 0.05 * Defense));
2. Находим силу войск героя, Creatures_Power: cуммируем AI величины всех стеков;
3. Cила армии героя Army_Power = floor(Hero_Power * Creatures_Power);
4. Аналогично (см. п.2) находим силу нейтральных войск Neutrals_Power (игнорируем факт появления грейда);
5. k = Army_Power / Neutrals_Power;
6. Находим Power_Factor ("показатель силы"):
Power_Factor = 11 при k >= 7,
Power_Factor = floor(2 * (k - 1)), при 1 < k < 7,
Power_Factor = -1, при 0.5 < k <= 1,
Power_Factor = -2, при 0.333 < k <= 0.5,
Power_Factor = -3, при k <= 0.333
Примечания:
1. число 0.333 = 333/1000 (не 1/3!)
2. число k находится с небольшой погрешностью (деление), что может проявить себя на границах вышеприведённых интервалов.
7. Находим "симпатию" (0 <= Sympathy <= 2):
Sympathy = 0, если в армии героя нет таких же существ, как нейтралы (или их [ап, даун]грейдов),
Sympathy = 1, если в армии героя есть хотя бы одно такое же существо (или [ап, даун]грейд),
Sympathy = 2, если число таких существ строго больше, чем всех остальных в армии героя.
Примечание: здесь элементали магмы, льда и энергии не являются апгрейдами элементалей земли, воды и огня соответственно и наоборот.
8. Находим X (настроение нейтралов):
X = -4 для Compliant (податливых),
X = 1..7 (случайное целое) для Friendly,
X = 1..10 для Aggressive,
X = 4..10 для Hostile,
X = 10 для Savage.
9. Находим "харизму" Ch героя:
Ch = Power_Factor + Diplomacy_Level + Sympathy
Примечание. Если играть на Easy, при расчётах Diplomacy_Level берётся на единицу больше, но, тем не менее, ограничен 3.
a) если Ch < X нейтралы будут драться;
б) если Ch >= X, то
1) нейтралы присоединятся бесплатно, если Sympathy + Diplomacy_Level + 1 >= X;
2) если не хотят просто так (условие 1 не выполняется), присоединятся за деньги, но только если Sympathy + 2*Diplomacy_Level + 1 >= X;
3) если герой отклонит предложение присоединиться, нейтралы:
- обидятся и будут драться, если Ch = X,
- попытаются сбежать, если Ch > X.
4) если условия 1 и 2 не выполняются (не хотят присоединяться), нейтралы:
- будут драться, если Ch = X,
- попробуют сбежать, если Ch > X.
P.S. Почему Дипломатия запрещена на рандомных картах (все hostile)?
Нетрудно прикинуть, что вероятность присоединения нейтралов за деньги может достигать 86%!
В
архиве - таблица AI величин, мини-программа по определению вероятности появления спелла в магической гильдии, а также ридми к ней.