diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 5efc75b8dff..f1c12497497 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -145,9 +145,23 @@ if (isServer) then { [QGVAR(playActionNow), {(_this select 0) playActionNow (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(switchMove), {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(setVectorDirAndUp), {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler; -[QGVAR(setVanillaHitPointDamage), {(_this select 0) setHitPointDamage (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(addWeaponItem), {(_this select 0) addWeaponItem [(_this select 1), (_this select 2)]}] call CBA_fnc_addEventHandler; +[QGVAR(setVanillaHitPointDamage), { + params ["_object", "_hitPointAnddamage"]; + private _damageDisabled = !isDamageAllowed _object; + + if (_damageDisabled) then { + _object allowDamage true; + }; + + _object setHitPointDamage _hitPointAnddamage; + + if (_damageDisabled) then { + _object allowDamage false; + }; +}] call CBA_fnc_addEventHandler; + // Request framework [QGVAR(requestCallback), FUNC(requestCallback)] call CBA_fnc_addEventHandler; [QGVAR(receiveRequest), FUNC(receiveRequest)] call CBA_fnc_addEventHandler; diff --git a/addons/medical_engine/functions/fnc_setStructuralDamage.sqf b/addons/medical_engine/functions/fnc_setStructuralDamage.sqf index 11821fbe25d..5e3dcd7b05f 100644 --- a/addons/medical_engine/functions/fnc_setStructuralDamage.sqf +++ b/addons/medical_engine/functions/fnc_setStructuralDamage.sqf @@ -24,8 +24,17 @@ if (!local _unit) exitWith { private _hitPointDamages = getAllHitPointsDamage _unit param [2, []]; +private _damageDisabled = !isDamageAllowed _unit; +if (_damageDisabled) then { + _unit allowDamage true; +}; + _unit setDamage _damage; { _unit setHitIndex [_forEachIndex, _x]; } forEach _hitPointDamages; + +if (_damageDisabled) then { + _unit allowDamage false; +}; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 2f0bbe7869c..2cbbd8c3e1d 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -4,4 +4,17 @@ [QGVAR(setVehicleHitPointDamage), {_this call FUNC(setHitPointDamage)}] call CBA_fnc_addEventHandler; // wheels -[QGVAR(setWheelHitPointDamage), {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler; +[QGVAR(setWheelHitPointDamage), { + params ["_object", "_hitPoint", "_damage"]; + private _damageDisabled = !isDamageAllowed _object; + + if (_damageDisabled) then { + _object allowDamage true; + }; + + _object setHitPointDamage [_hitPoint, _damage]; + + if (_damageDisabled) then { + _object allowDamage false; + }; +}] call CBA_fnc_addEventHandler; diff --git a/addons/repair/functions/fnc_setDamage.sqf b/addons/repair/functions/fnc_setDamage.sqf index fbae505fae7..ba51c22c0df 100644 --- a/addons/repair/functions/fnc_setDamage.sqf +++ b/addons/repair/functions/fnc_setDamage.sqf @@ -26,6 +26,11 @@ if !(local _vehicle) exitWith {}; (getAllHitPointsDamage _vehicle) params [["_allHitPoints", []], ["_allHitPointsSelections", []], ["_allHitPointDamages", []]]; // set damage of the vehicle +private _damageDisabled = !isDamageAllowed _vehicle; +if (_damageDisabled) then { + _vehicle allowDamage true; +}; + _vehicle setDamage _damage; // restore original hitpoint damage values @@ -35,3 +40,7 @@ _vehicle setDamage _damage; // normalize hitpoints [_vehicle] call FUNC(normalizeHitPoints); + +if (_damageDisabled) then { + _vehicle allowDamage false; +}; diff --git a/addons/repair/functions/fnc_setHitPointDamage.sqf b/addons/repair/functions/fnc_setHitPointDamage.sqf index f0313315e90..0e8a8056893 100644 --- a/addons/repair/functions/fnc_setHitPointDamage.sqf +++ b/addons/repair/functions/fnc_setHitPointDamage.sqf @@ -62,6 +62,11 @@ if (_hitPointDamageSumOld > 0) then { TRACE_5("structuralDamage",_damageOld,_damageNew,_hitPointDamageRepaired,_hitPointDamageSumOld,_realHitpointCount); // set new structural damage value +private _damageDisabled = !isDamageAllowed _vehicle; +if (_damageDisabled) then { + _vehicle allowDamage true; +}; + _vehicle setDamage [_damageNew, _useEffects]; //Repair the hitpoint in the damages array: @@ -74,3 +79,7 @@ _allHitPointDamages set [_hitPointIndex, _hitPointDamage]; // normalize hitpoints [_vehicle] call FUNC(normalizeHitPoints); + +if (_damageDisabled) then { + _vehicle allowDamage false; +};