Формула определения Велью стека не верная не много или криво записана, вот точная формула
FV_юнита=floor((sqrt( Fight_Value+(Fight_Value*(Атака_Героя+ Бонус_Атаки )/20)*(Fight_Value+(Fight_Value*Защита_Героя+Бонусы_ Защиты/20) ))
И если выражение Fv_юнита* Сумма_Юнитов > 2*Fight_Value * N верно, то АИ будет бить по мейн стекам, если не верна, то будет избегать их и бить по единичкам.
floor - округление полученного числа в меньшую сторону.
Где бонусы это сумма бонусов за родную землю(+0 или +1) и бонус юниту от героя спеца по этому юниту в единицах. К примеру Галтран +1 на 1 уровне даст скелетам. Fight_Value велью юнита.
Данной формулой можно пользоваться при нападении на Черные Башни с черным или Золотым драконом.
Так же более общая формула для смешанной армии для определения в какой момент алгоритм Аи изменяется в бою
Σ(Ni*floor(sqrt(V(vi,ha,b1)*V(ai,hd,b1))) > 2*vj*Nj,
где V(vi,ha,b1)=FV_юнита.
Если формула не верна то АИ будет стараться закрывать стрелков, бить по тем кто меньше ответный удар нанесет, держаться на расстоянии от удара мейн стека, бить по существу с которого снят ответный удар, и который ранен. И вообще много разных коэффициентов, в общем урон будет по Велью_Юнита*Урон/ХП_Юнита