DarkDruid, I'm shocked that a BIS developer does not know that adding more than one handleDamage eventhandler to an object results in unknown behaviour as it is unknown which result from which handleDamage EH the engine uses (especially if one tries to modify the _this select 2 values for his needs).
Attached is a simple test mission (HDEHTest). Shoot the unit in front of you in the head.
The following handleDamage eventhandlers are added via init line to the unit:
this addEventHandler ["handleDamage", {diag_log ["First HD EH returning _this select 2, _this:",_this];_this select 2}];
this addEventHandler ["handleDamage", {diag_log ["Second HD EH returns 0 instead of _this select 2 (which should make the unit immortal), _this:",_this];0}];
this addEventHandler ["handleDamage", {diag_log ["Third HD EH returning _this select 2, _this:",_this];_this select 2}];
The second handleDamage EH should make the unit immortal (it just returns 0) but the unit dies.
There is one simple rule when it comes to eventhandlers like handleDamage (probably explosion EH too): Never add more than one of them to an object.
Furthermore, you do not remove the handleDamage EH before respawn which means that it is still triggered for the dead unit (if it receives damage) and thus changing the variables even though the current player unit does not receive any damage.