Skip to content

Commit

Permalink
Merge pull request #6976 from acemod/taking-wheels-from-invincible-ve…
Browse files Browse the repository at this point in the history
…hicles

Repair - Fix taking wheels from invincible vehicles
  • Loading branch information
commy2 authored May 11, 2019
2 parents a2ae2e9 + 2428e48 commit 22b8e9e
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 2 deletions.
16 changes: 15 additions & 1 deletion addons/common/XEH_postInit.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
9 changes: 9 additions & 0 deletions addons/medical_engine/functions/fnc_setStructuralDamage.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
15 changes: 14 additions & 1 deletion addons/repair/XEH_postInit.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -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;
9 changes: 9 additions & 0 deletions addons/repair/functions/fnc_setDamage.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -35,3 +40,7 @@ _vehicle setDamage _damage;

// normalize hitpoints
[_vehicle] call FUNC(normalizeHitPoints);

if (_damageDisabled) then {
_vehicle allowDamage false;
};
9 changes: 9 additions & 0 deletions addons/repair/functions/fnc_setHitPointDamage.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -74,3 +79,7 @@ _allHitPointDamages set [_hitPointIndex, _hitPointDamage];

// normalize hitpoints
[_vehicle] call FUNC(normalizeHitPoints);

if (_damageDisabled) then {
_vehicle allowDamage false;
};

0 comments on commit 22b8e9e

Please sign in to comment.