Ужас...
[RealHp'] = [Hp']/(1-[Def']), где [Hp'] --- здоровье с учетом бонусов, а [Def'] --- защита с учетом бонусов.
[Hp']=[Hp]*(1+hp_арт1+hp_арт2+...)
(1-[Def'])=мах(.05,(1-[Def])*(1-бонус_расы)*(1-бонус_религии)*(1-def_арт1)*(1-def_арт2)*...)
мах, равный .05, берется в исключительных случаях

минимум 7 огромных на защиту

поэтому для простоты, его откидываем, получаем:
[RealHp] = [Hp]*(1+hp_арт1+hp_арт2+)/((1-[Def])*(1-бонус_расы)*(1-бонус_религии)*(1-def_арт1)*(1-def_арт2)*...) = [Hp]/(1-[Def])*[Bonus],
где [Bonus] = (1+hp_арт1+hp_арт2+...)/(1-бонус_расы)*(1-бонус_религии)*(1-def_арт1)*(1-def_арт2)*...)
как видно [Bonus] один для всех юнитов (экстремальная ситуация исключена), т.е. зависимость [RealHp'] от [RealHp] линейна.