diff --git a/addons/breathing/functions/fnc_init.sqf b/addons/breathing/functions/fnc_init.sqf index ff579259c..d3ad3f4b6 100644 --- a/addons/breathing/functions/fnc_init.sqf +++ b/addons/breathing/functions/fnc_init.sqf @@ -27,4 +27,47 @@ _unit setVariable [QGVAR(PulseOximeter_Volume), true, true]; _unit setVariable [QGVAR(PulseOximeter_VolumePatient), false, true]; _unit setVariable [QGVAR(oxygenMaskActive), false, true]; -_unit setVariable [QGVAR(oxygenMaskStatus), [0,0], true]; \ No newline at end of file +_unit setVariable [QGVAR(oxygenMaskStatus), [0,0], true]; + +[{ + params ["_args", "_idPFH"]; + _args params ["_unit"]; + + private _alive = alive _unit; + + if (!_alive) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + + private _spo2 = GET_KAT_SPO2(_unit); + + if(GVAR(staminaLossAtLowSPO2)) then { + if (!(_unit getVariable ["ACE_isUnconscious",false]) && {_spo2 <= GVAR(lowSPO2Level)}) then { + if (ACEGVAR(advanced_fatigue,enabled)) then { + ["kat_LSDF", 1.5] call ACEFUNC(advanced_fatigue,addDutyFactor); + } else { + _unit setStamina(getStamina _unit - 3); + }; + } else { + ["kat_LSDF"] call ACEFUNC(advanced_fatigue,removeDutyFactor); + }; + }; + + if ((_unit getVariable [QGVAR(pneumothorax), 0] > 0) || _unit getVariable [QGVAR(hemopneumothorax), false] || _unit getVariable [QGVAR(tensionpneumothorax), false] || _unit getVariable [QEGVAR(chemical,airPoisoning), false]) then { + if (!(_unit getVariable [QACEGVAR(medical,inCardiacArrest), false]) && !(_unit getVariable [QGVAR(PneumoBreathCooldownOn), false])) then { + _unit setVariable [QGVAR(PneumoBreathCooldownOn), true, true]; + + private _soundTargets = allPlayers inAreaArray [ASLToAGL getPosASL _unit, 15, 15, 0, false, 15]; + + if !(_soundTargets isEqualTo []) then { + [QGVAR(playCough), [_unit], _soundTargets] call CBA_fnc_targetEvent; + }; + + [{ + params["_unit"]; + _unit setVariable [QGVAR(PneumoBreathCooldownOn), false, true]; + }, + [_unit], 20] call CBA_fnc_waitAndExecute; + }; + }; +}, 10, [_unit]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file diff --git a/addons/chemical/functions/fnc_poison.sqf b/addons/chemical/functions/fnc_poison.sqf index 9958334f6..d483a91d5 100644 --- a/addons/chemical/functions/fnc_poison.sqf +++ b/addons/chemical/functions/fnc_poison.sqf @@ -69,5 +69,9 @@ if (_currentInfection != _newTime) then { // Exit if infection reaches 0 if (_newTime <= 0) then { + if !(_unit getVariable [QGVAR(airPoisoning), false]) then { + [QEGVAR(breathing,playCough), [_unit], _unit] call CBA_fnc_targetEvent; + }; + _unit setVariable [QGVAR(airPoisoning), true, true]; }; \ No newline at end of file