Вроде бы, вот так. Надеюсь, нигде не напутал.Code
real GetUnitArmor(unit u) {
real a = GetWidgetLife(u);
if IsUnitType(u, UNIT_TYPE_ETHEREAL) == true {
return -.001;//Юнит в Астрале
}
SetWidgetLife(u, a + 50.);
UnitDamageTarget(u, u, 10., true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, null);
real b = a - GetWidgetLife(u);
SetWidgetLife(u, a);
a = 1. - b * .1;
if b <= .0 {
return -.002;//Юнит неуязвим либо почему-то отрегенился
} elseif b <= 10. {
return a / (.06 * b * .1);
}
a += 1.;
b = .0;
whilenot Pow(.94, b) <= a { b += 1.; }
return -b;
}