mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge pull request #1 from LinkIsGrim/tfar-mute-fix-grim
Medical Status - Move to function
This commit is contained in:
commit
d6477107b6
@ -14,5 +14,6 @@ PREP(isBeingDragged);
|
||||
PREP(isInStableCondition);
|
||||
PREP(setCardiacArrestState);
|
||||
PREP(setDead);
|
||||
PREP(setStatusEffects);
|
||||
PREP(setUnconsciousState);
|
||||
PREP(updateWoundBloodLoss);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
30
addons/medical_status/functions/fnc_setStatusEffects.sqf
Normal file
30
addons/medical_status/functions/fnc_setStatusEffects.sqf
Normal 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);
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user