Расчет урона ведется по следующим формулам:

В начале вычисляется Чистый урон без модификаторов Атаки и Защиты:
Чистый_урон = Размер_отряда * random(Мин_урон; Макс_урон) * (1 – Сопр% / 100%), где
Размер_отряда - количество существ в атакующем отряде;
Мин_урон и Макс_урон - минимальное и максимальное значение урона атакующего отряда;
random(Мин_урон; Макс_урон) - случайное число в диапазоне от минимального до максимального урона;
Сопр% - значение сопротивляемости (в процентах) обороняющегося отряда к типу урона, который наносит атакующий отряд.

После чего Чистый_урон модифицируется в зависимости от параметров Атаки и Защиты.
Атака складыватеся из показателя атаки существа и показателя атаки героя.
Защита складыватеся из показателя защиты существа и показателя защиты героя.
Если существо защищается, то к его защите добавляется еще показатель дополнительной защиты существа.

Если Атака атакующего ≥ Защиты обороняющегося, то: Модификатор_урона = (1 + (Атака – Защита) * 0,0333)
Модификатор_урона ограничен значением = 3 (если получилось больше 3, то уменьшается до 3).

Если Атака атакующего < Защиты обороняющегося, то: Модификатор_урона = 1/(1 + (Защита – Атака) * 0,0333)
Модификатор_урона ограничен значением = 0,333 (если получилось меньше 0,333, то увеличивается до 0,333).

Итоговый урон, который нанесет отряд, вычисляется по формуле:
Итоговый_урон = Чистый_урон * Модификатор_урона
Если при стрелковой атаке была превышена дальнобойность, то Итоговый урон еще умножается на *(Штраф% / 100%), где
Штраф% - коэффициент (в процентах) на который снижается урон при превышении дальности стрельбы.

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

Калькулятор не берет в учет возможные бонусы от критического урона, способностей, талантов, морали отрядов, эффектов наложенных на отряды, артефактов и навыков героя.