Merge pull request #1 from LinkIsGrim/tfar-mute-fix-grim

Medical Status - Move to function
This commit is contained in:
johnb432 2023-08-03 18:14:09 +02:00 committed by GitHub
commit d6477107b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 49 additions and 16 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, true] call FUNC(setStatusEffects);
} else {
[_unit, false, true] call FUNC(setStatusEffects);
};
}] call CBA_fnc_addPlayerEventHandler;

View File

@ -53,13 +53,7 @@ if (_unit == player) then {
["unconscious", false] call EFUNC(common,setDisableUserInputStatus);
};
// Let AI resume firing at dead units in most situations (global effect) (which was blocked upon unconsciouness)
[_unit, "setHidden", "ace_unconscious", false] call EFUNC(common,statusEffect_set);
// Unblock radio on dead for compatibility with captive module (which was blocked upon unconsciouness)
[_unit, "blockRadio", "ace_unconscious", false] call EFUNC(common,statusEffect_set);
// Unblock speaking on death (which was blocked upon unconsciouness)
[_unit, "blockSpeaking", "ace_unconscious", false] call EFUNC(common,statusEffect_set);
// 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,7 @@ _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);
[_unit, _active] call FUNC(setStatusEffects);
if (_active) then {
// Don't bother setting this if not used