ACE3/addons/medical_statemachine/functions/fnc_enteredStateDeath.sqf
GhostIsSpooky 9209fedcf7
Medical Statemachine - Improve edge case death handling (#8788)
* fix #8772

* add WARNING for dead/null units

* fix macro

* improve warnings

* handle scripted death without warnings

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2022-03-07 12:28:51 -06:00

31 lines
1000 B
Plaintext

#include "script_component.hpp"
/*
* Author: SilentSpike
* Handles a unit reaching the point of death (calls for a status update).
*
* Arguments:
* 0: The Unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player] call ace_medical_statemachine_fnc_enteredStateDeath
*
* Public: No
*/
params ["_unit"];
if (isNull _unit || {!isNil {_unit getVariable QEGVAR(medical,causeOfDeath)}}) exitWith {
if ((_unit getVariable [QEGVAR(medical,causeOfDeath), ""]) == "#scripted") exitWith {};
WARNING_1("enteredStateDeath: State transition on dead or null unit - %1",_unit);
};
//IGNORE_PRIVATE_WARNING ["_thisOrigin", "_thisTransition"]; // vars provided by CBA_statemachine
TRACE_4("enteredStateDeath",_this,_thisOrigin,_thisTransition,CBA_missionTime);
private _causeOfDeath = format ["%1:%2", _thisOrigin, _thisTransition];
private _instigator = _unit getVariable [QEGVAR(medical,lastInstigator), objNull];
[_unit, _causeOfDeath, _instigator] call EFUNC(medical_status,setDead);