Skip to content

Commit

Permalink
Medical - Fix broken AI ragdolls if AI unconsciousness is disabled (#…
Browse files Browse the repository at this point in the history
…9917)

Co-authored-by: jonpas <[email protected]>
Co-authored-by: PabstMirror <[email protected]>
  • Loading branch information
3 people authored Apr 7, 2024
1 parent f3f7f2c commit 6a2f3a2
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 6 deletions.
6 changes: 0 additions & 6 deletions addons/medical_engine/XEH_postInit.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,6 @@
if (!isNull objectParent _unit && {local objectParent _unit}) exitWith {
[_unit] call FUNC(lockUnconsciousSeat);
};

// Prevent second ragdoll of uncon units when they're killed
if (IS_UNCONSCIOUS(_unit) && !isAwake _unit) then {
_unit enableSimulation false;
[{_this enableSimulation true}, _unit, 2] call CBA_fnc_waitAndExecute;
};
}] call CBA_fnc_addEventHandler;

["CAManBase", "deleted", {
Expand Down
6 changes: 6 additions & 0 deletions addons/medical_statemachine/CfgEventHandlers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ class Extended_PreInit_EventHandlers {
};
};

class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
};
};

class Extended_Respawn_EventHandlers {
class CAManBase {
class ADDON {
Expand Down
14 changes: 14 additions & 0 deletions addons/medical_statemachine/XEH_postInit.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#include "script_component.hpp"

["ace_killed", { // global event
params ["_unit"];

// Prevent second ragdoll of uncon units when they're killed
if (
IS_UNCONSCIOUS(_unit) && !isAwake _unit // uncon and not ragdolling
&& {isPlayer _unit || {_unit getVariable [QGVAR(AIUnconsciousness), GVAR(AIUnconsciousness)]}}
) then {
_unit enableSimulation false;
[{_this enableSimulation true}, _unit, 2] call CBA_fnc_waitAndExecute;
};
}] call CBA_fnc_addEventHandler;
4 changes: 4 additions & 0 deletions addons/medical_status/functions/fnc_setDead.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,14 @@
params ["_unit", ["_reason", "#setDead"], ["_instigator", objNull]];
TRACE_3("setDead",_unit,_reason,_instigator);


// No heart rate or blood pressure to measure when dead
_unit setVariable [VAR_HEART_RATE, 0, true];
_unit setVariable [VAR_BLOOD_PRESS, [0, 0], true];

// Clear uncon variable just to be safe
_unit setVariable [VAR_UNCON, nil, true];

_unit setVariable [QEGVAR(medical,causeOfDeath), _reason, true];

// Send a local event before death
Expand Down

0 comments on commit 6a2f3a2

Please sign in to comment.