HandleDamage event handler explained There has been little documentation about how the "HandleDamage" event handler exactly works and as a consequence its use has been scarce and its potential untapped. I myself understood it properly only recently while perfecting the damage model for an upcoming zombie mission. So here goes. The passed array _this select 0: Unit the EH is assigned to _this select 1: Selection (=body part) that was hit _this select 2: Damage to the above selection (sum of dealt and prior damage) _this select 3: Source of damage (returns the unit if no source) _this select 4: Ammo classname of the projectile that dealt the damage (returns "" if no projectile) Infantry selections "": The overall damage that determines the damage value of the unit. Unit dies at damage over 0.9. "head_hit": Unit dies at damage over 0.9. "body": Unit dies at damage over 0.9. "hands": Unit doesn't die with damage to this part. "legs": Unit doesn't die with damage to this part. The "" part is the reason why consecutive leg hits are fatal. Whenever the unit is hit, "" gets damage based on the power of the hit with no other modifiers. Wherever you hit the unit, it will die when this overall damage quota is up. You will notice that when shooting at a unit's feet (with e.g. a Makarov) it will almost always die after the same amount of rounds. How the EH fires The event handler fires multiple times at the same time when the unit is damaged, once for each selection. The sequence is always the same, the sequence for infantry being the same as in the selection list above. Only the current selection and its damage are remembered during each activation unless you assign variables to them. If a selection is not damaged at all and there are no damaged selections after it in the sequence (e.g. a shot in the head without damage to legs), the EH doesn't fire for that selection. Manipulating damage The last value given in the EH's code is the damage that it gives for the current selection. For example, this addEventHandler ["HandleDamage", {_this select 2}] will have a unit receive damage as if it didn't have the event handler at all. Changing _this select 2 to 1 will make the unit die however minor the original damage was, while this addEventHandler ["HandleDamage", {}] makes the unit invulnerable to all damage. You can allow damage to specific selections by passing a damage value if the selection is of a certain type: this addEventHandler ["HandleDamage", {if (_this select 1 in ["head_hit", "legs"]) then {_this select 2}}] will pass only the damage that the head and legs were dealt. If the code is too complex to be written into the EH itself, only callable scripts should be used for the purpose of determining damage because the damage has to be given in the EH's code. Poor man's getHit Until BI is kind enough to give us a command to return the damage of individual selections, HandleDamage is the best workaround. This EH will assign the "gethit" variable to a unit. As a bonus, there's a damage modifier included free of charge, just change the blue value! Add this to a unit: _unit setVariable ["selections", []]; _unit setVariable ["gethit", []]; _unit addEventHandler [ "HandleDamage", { _unit = _this select 0; _selections = _unit getVariable ["selections", []]; _gethit = _unit getVariable ["gethit", []]; _selection = _this select 1; if !(_selection in _selections) then { _selections set [count _selections, _selection]; _gethit set [count _gethit, 0]; }; _i = _selections find _selection; _olddamage = _gethit select _i; _damage = _olddamage + ((_this select 2) - _olddamage) * [b][color="#0000FF"]1[/color][/b]; _gethit set [_i, _damage]; _damage; } ]; To get the damage of a selection: _index = _unit getVariable ["selections", []] find [color="#B22222"]"nameofselection"[/color]; _damage = if (_index >= 0) then { _unit getVariable "gethit" select _index; } else { 0; }; Remember that event handlers will carry on to respawned units as do setVariables, so the "selections" and "gethit" variables should be set to [] again at respawn as well as when the unit gets healed or repaired.