Code
function GetUnitArmor takes unit u returns real
local real r = GetWidgetLife(u)
local real c
if IsUnitType(u, UNIT_TYPE_ETHEREAL) == true then
return -.001
endif
call SetWidgetLife(u, r + 50.)
call UnitDamageTarget(u, u, 10., false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL, null)
set c = r - GetWidgetLife(u)
call SetWidgetLife(u, r)
set r = 1. - c *.1
if c == .0 then
return -.001
elseif c <= 10. then
return r / .06 / (1. - r)
endif
set r = r + 1.
set c = 1.
loop
exitwhen Pow(.94, c) <= r
set c = c + 1.
endloop
return -c
endfunction