Как известно, каждый отряд нейтралов на карте при генерации сейва получает некоторую численную характеристику, от которой зависит степень его враждебности. Чем больше степень враждебности отряда, тем меньше шансов у Героя присоединить его к своей армии. Эта самая величина является единственной неизвестной в проблеме присоединения нейтралов. Назовём её Х (степень враждебности, заданная картостроителем, уже отражена в этом числе). Новая версия светофора определяет эту неизвестную величину.
Податливые отряды всегда присоединяются к армии Героя, в то время как присоединить кровожадные отряды невозможно (см. раздел "Дипломатия и особенности её применения" руководства от AmberSoler'а).
1) Вычисляем силу армии Героя. Сила армии равна сумме произведений количества воинов в отряде на силу воина в отряде
(PA = sum[i=1,7](N*AI_Value). Кажется, в ранних версиях 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 (т. е. если отряд кровожадный), то Вы также не сможете присоединить его и за деньги.