From 744b9778df907076e148d0e777e7da868f33d7e5 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 3 May 2019 17:03:17 +0200 Subject: [PATCH] temporarily re-allowDamage when using setHit(PointDamage) --- addons/common/XEH_postInit.sqf | 16 +++++++++++++++- .../functions/fnc_setStructuralDamage.sqf | 9 +++++++++ addons/repair/XEH_postInit.sqf | 15 ++++++++++++++- addons/repair/functions/fnc_setDamage.sqf | 9 +++++++++ .../repair/functions/fnc_setHitPointDamage.sqf | 9 +++++++++ 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 5efc75b8df..e91de4c23d 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 _isDamageAllowed = isDamageAllowed _object; + + if !(_isDamageAllowed) then { + _object allowDamage true; + }; + + _object setHitPointDamage _hitPointAnddamage; + + if !(_isDamageAllowed) 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 11821fbe25..e3117a7b6a 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 _isDamageAllowed = isDamageAllowed _unit; +if !(_isDamageAllowed) then { + _unit allowDamage true; +}; + _unit setDamage _damage; { _unit setHitIndex [_forEachIndex, _x]; } forEach _hitPointDamages; + +if !(_isDamageAllowed) then { + _unit allowDamage false; +}; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 2f0bbe7869..6ffbe83eb3 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 _isDamageAllowed = isDamageAllowed _object; + + if !(_isDamageAllowed) then { + _object allowDamage true; + }; + + _object setHitPointDamage [_hitPoint, _damage]; + + if !(_isDamageAllowed) 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 fbae505fae..d8e19212d1 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 _isDamageAllowed = isDamageAllowed _vehicle; +if !(_isDamageAllowed) then { + _vehicle allowDamage true; +}; + _vehicle setDamage _damage; // restore original hitpoint damage values @@ -33,5 +38,9 @@ _vehicle setDamage _damage; _vehicle setHitIndex [_forEachIndex, _x]; } forEach _allHitPointDamages; +if !(_isDamageAllowed) then { + _vehicle allowDamage false; +}; + // normalize hitpoints [_vehicle] call FUNC(normalizeHitPoints); diff --git a/addons/repair/functions/fnc_setHitPointDamage.sqf b/addons/repair/functions/fnc_setHitPointDamage.sqf index f0313315e9..72c369d5cb 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 _isDamageAllowed = isDamageAllowed _vehicle; +if !(_isDamageAllowed) 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 !(_isDamageAllowed) then { + _vehicle allowDamage false; +};