Искусство дипломатии, или что такое харизма Героя.
Как известно, каждый отряд нейтралов на карте при генерации сейва получает некоторую численную характеристику, от которой зависит степень его враждебности. Чем больше степень враждебности отряда, тем меньше шансов у Героя присоединить его к своей армии. Эта самая величина является единственной неизвестной в проблеме присоединения нейтралов. Назовём её Х (степень враждебности, заданная картостроителем, уже отражена в этом числе). Новая версия светофора определяет эту неизвестную величину.
Податливые отряды всегда присоединяются к армии Героя, в то время как присоединить кровожадные отряды невозможно (см. раздел "Дипломатия и особенности её применения" руководства от AmberSoler'а).
1) Вычисляем силу армии Героя. Сила армии равна сумме произведений количества воинов в отряде на силу воина в отряде
(PA = sum[i=1,7](N[i]*AI_Value[i]). Кажется, в ранних версиях FizMiG'а была табличка силы воинов. Например, сила кентавра - 100, королевского грифона - 448;
2) Вычисляем "внутреннюю силу" Героя, зависящую от его атаки и защиты. Hero_Power = sqrt((1 + 0.05*att)*(1 + 0.05*def));
3) Итоговая сила армии равна произведению "внутренней силы" Героя на силу армии. Army_Power = floor(Hero_Power*PA);
4) Вычисляем силу армии нейтралов. Для этого нужно знать их точное количество. Вероятность появления грейженного юнита не принимаем во внимание. Neutrals_Power = N*Neutral_AI_Value, где N - количество нейтралов, Neutral_AI_Value - сила нейтрала в отряде;
5) Находим частное k = Army_Power/Neutrals_Power;
Примечаниe.
Число k помещается в область памяти размером 4 байта (короче - обрубается с Extended до Single), а затем снова загружается в регистр st математического сопроцессора (короче - расширяется с Single до Extended), что влечёт за собой незначительное искажение этого коэффициента, но этот факт почти всегда можно игнорировать.
6) Находим "относительную силу армии" SF Героя:
а) Если k >= 7, SF = 11;
б) Если 1 <= k < 7, SF = floor(2*(k - 1)) - принимает значения от 0 до 11 (не до 10!);
в) Если 0.5 <= k < 1, SF = -1;
г) Если 0.333 < k <= 0.5, SF = -2;
д) Если k <= 0.333, SF = -3.
7) Если в армии Героя присутствуют такие же существа, как в армии нейтралов, или их грейды, харизма увеличивается на единицу (назовём такие сущетсва в армии Героя вербовщиками);
8) Если количество вербовщиков строго больше общего количества остальных воинов в армии Героя, то харизма увеличивается ещё на одну единичку, причём не имеет значения, в одном или нескольких отрядах находятся вербовщики;
9) Каждый уровень Дипломатии (Diplomacy_Level) увеличивает харизму на одну единицу. Дипломатические артефакты (а также мораль и прочие модификаторы, не упомянутые здесь, не увеличивают харизму);
10) На уровне Easy, Герой получает халявную единицу харизмы (за счёт скрытого базового уровня дипломатии) ещё при рождении. Компьютерные игроки лишены этого преимущества (вообще, схема присоединения нейтралов у них слегка отличается).
Сумму, полученную в пунктах 7-8, назовём симпатией (Sympathy, меняется от 0 до 2).
Примечание. Присоединению элементалов магмы, льда и энергии не помогут элементалы земли, воды и огня (симпатия не увеличивается).
Итак, приведённая выше схема просто отлично согласуется с материалом от AmberSoler'а за исключением пункта про разброс вербовщиков и того, что наличие в армии Героя юнитов только из одного замка как-то влияет на харизму.
Итак, находим харизму: Сh = SF + Diplomacy_Level + Sympathy.
9) Если Ch >= Х, отряд нейтралов присоединится:
а) ради идеи, если Sympathy + Diplomacy_Level + 1 >= Х;
б) за деньги, если Sympathy + 2*Diplomacy_Level + 1 >= X.
Примечание. Х - целое, как и харизма Ch.
Минимальное значение X равно -4 (для податливых нейтралов), максимальное равно 10 (для кровожадных отрядов).
Харизма Сh изменяется от -3 до 16.
P. S. Таким образом, если враждебность нейтрального отряда больше 6, то Вы никогда не сможете присоединить его бесплатно (2 + 3 + 1 = 6). Если враждебность больше 9 (т. е. если отряд кровожадный), то Вы также не сможете присоединить его и за деньги.