to monitor every unit, use a hit eventhandler which then runs a check script
far more cpu efficient
something like
INIT.SQS_UnitArray = [W1,W2,W3,W4 etc etc etc]
{_x addEventHandler ["Hit", {_this exec "Unit_Hit.sqs"}]}foreach _unitArray
UNIT_HIT.SQS_unit = _this select 0
_unit removeallevcenthandlers "Hit"
_MinHealth = 0.3
#START
if (getdammage _unit > _MinHealth)then{hint "Do whatever"}
_delay = 1 + (random 1)
~ _delay
if !(alive _unit)then{exit}else{goto"START"}
this way you can monitor as many units as you want, and monitoring will only occur once the unit has been hit
_minhealth is the minimum danmage that you will allow the unit to sustain before your system does whatever you require to the unit