Medical Status - Remove status effects upon death/featureCamera (#9301)

* Update fnc_handleKilled.sqf

* move to function

* Removed skipSetHidden

* Revert "Removed skipSetHidden"

This reverts commit 452c5216a7.

* Update addons/medical_status/XEH_postInit.sqf

* add comment, force git to run actions

---------

Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
This commit is contained in:
johnb432 2023-08-18 19:16:20 +02:00 committed by GitHub
parent 55cc755542
commit 682ae05f59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 51 additions and 8 deletions

View File

@ -14,5 +14,6 @@ PREP(isBeingDragged);
PREP(isInStableCondition);
PREP(setCardiacArrestState);
PREP(setDead);
PREP(setStatusEffects);
PREP(setUnconsciousState);
PREP(updateWoundBloodLoss);

View File

@ -2,3 +2,18 @@
// Handle pain changes on injury
[QEGVAR(medical,injured), LINKFUNC(adjustPainLevel)] call CBA_fnc_addEventHandler;
// Handle comms status effects for spectator
// Separate from medical_feedback as these affect unit behavior rather than what the player sees
["featureCamera", {
params ["_unit", "_newCamera"];
if (_unit isNotEqualTo ACE_player) exitWith {};
if (_newCamera == "") then { // switched back to player view
private _status = IS_UNCONSCIOUS(_unit);
[_unit, _status] call FUNC(setStatusEffects);
} else {
[_unit, false, true] call FUNC(setStatusEffects);
};
}] call CBA_fnc_addPlayerEventHandler;

View File

@ -53,4 +53,7 @@ if (_unit == player) then {
["unconscious", false] call EFUNC(common,setDisableUserInputStatus);
};
// Remove status effects before respawn, in case mission is using spectator
[_unit, false] call FUNC(setStatusEffects);
["ace_killed", [_unit, _causeOfDeath, _killer, _instigator]] call CBA_fnc_globalEvent;

View File

@ -0,0 +1,30 @@
#include "script_component.hpp"
/*
* Author: LinkIsGrim
* Sets status effects for a unit.
* For Internal Use: Called by FUNC(setUnconsciousState), FUNC(handleKilled), and on featureCamera changes.
*
* Arguments:
* 0: The unit <OBJECT>
* 1: Status effects value <BOOL>
* 2: Skip setHidden <BOOL> (default: false)
*
* Return Value:
* None
*
* Public: No
*/
params ["_unit", "_set", ["_skipSetHidden", false]];
TRACE_3("setStatusEffect",_unit,_set,_skipSetHidden);
// Block radio on unconsciousness for compatibility with captive module
[_unit, "blockRadio", "ace_unconscious", _set] call EFUNC(common,statusEffect_set);
// Block speaking on unconsciousness
[_unit, "blockSpeaking", "ace_unconscious", _set] call EFUNC(common,statusEffect_set);
if (_skipSetHidden) exitWith {};
// Stop AI firing at unconscious units in most situations (global effect)
[_unit, "setHidden", "ace_unconscious", _set] call EFUNC(common,statusEffect_set);

View File

@ -28,14 +28,8 @@ _unit setVariable [VAR_UNCON, _active, true];
// Toggle unit ragdoll state
[_unit, _active] call EFUNC(medical_engine,setUnconsciousAnim);
// Stop AI firing at unconscious units in most situations (global effect)
[_unit, "setHidden", "ace_unconscious", _active] call EFUNC(common,statusEffect_set);
// Block radio on unconsciousness for compatibility with captive module
[_unit, "blockRadio", "ace_unconscious", _active] call EFUNC(common,statusEffect_set);
// Block speaking on unconsciousness
[_unit, "blockSpeaking", "ace_unconscious", _active] call EFUNC(common,statusEffect_set);
// Handle hiding from AI and talking blocks.
[_unit, _active] call FUNC(setStatusEffects);
if (_active) then {
// Don't bother setting this if not used