diff --git a/addons/circulation/functions/fnc_cprLocal.sqf b/addons/circulation/functions/fnc_cprLocal.sqf index 13c0a5ca8..b5abf5f60 100644 --- a/addons/circulation/functions/fnc_cprLocal.sqf +++ b/addons/circulation/functions/fnc_cprLocal.sqf @@ -21,7 +21,7 @@ params ["_medic", "_patient", "_reviveObject"]; private _chance = 0; -private _random = random 100; +private _random = (random 100) - (GET_REBOA_VOLUME(_patient) * 10); private _randomAmi = random 4; private _epiBoost = 1; private _amiBoost = 0; diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index a0396d871..f30ea8623 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -336,6 +336,7 @@ //Surgery #define STRING_BODY_PARTS ["head", "body", "left arm", "right arm", "left leg", "right leg"] +#define GET_REBOA_VOLUME(unit) ([unit] call EFUNC(surgery,reboaVolume)) //Feedback #define VAR_PP QEGVAR(feedback,ppEffect) diff --git a/addons/surgery/XEH_PREP.hpp b/addons/surgery/XEH_PREP.hpp index 3f7a2485f..21cd8d225 100644 --- a/addons/surgery/XEH_PREP.hpp +++ b/addons/surgery/XEH_PREP.hpp @@ -26,5 +26,6 @@ PREP(reboaDeepApply); PREP(reboaDeepApplyLocal); PREP(reboaRemove); PREP(reboaRemoveLocal); +PREP(reboaVolume); PREP(ultraAssessment); PREP(ultraAssessmentLocal); \ No newline at end of file diff --git a/addons/surgery/functions/fnc_reboaVolume.sqf b/addons/surgery/functions/fnc_reboaVolume.sqf new file mode 100644 index 000000000..d83f5e387 --- /dev/null +++ b/addons/surgery/functions/fnc_reboaVolume.sqf @@ -0,0 +1,27 @@ +#include "..\script_component.hpp" +/* + * Author: Mazinski + * Checks blood volume protected by REBOA + * + * Arguments: + * 0: Patient + * + * Return Value: + * Nothing + * + * Example: + * [player] call kat_surgery_fnc_reboaVolume + * + * Public: No + */ + +params ["_patient"]; + +private _reboa = _patient getVariable [QGVAR(reboa), false]; +private _tourniquets = GET_TOURNIQUETS(_patient); +private _volume = 0; + +if (_reboa) then { _volume = _volume + 1.2; }; +if ((_tourniquets select 1) != 0) then { _volume = _volume + 0.3; }; + +_volume diff --git a/addons/vitals/functions/fnc_handleUnitVitals.sqf b/addons/vitals/functions/fnc_handleUnitVitals.sqf index 133a24314..53627bf50 100644 --- a/addons/vitals/functions/fnc_handleUnitVitals.sqf +++ b/addons/vitals/functions/fnc_handleUnitVitals.sqf @@ -153,7 +153,7 @@ switch (true) do { TRACE_3("O2 Fatal",_unit,EGVAR(breathing,SpO2_dieValue),_spo2); [_unit, "Fatal_Blood_Oxygen"] call ACEFUNC(medical_status,setDead); }; - case (_bloodVolume < BLOOD_VOLUME_FATAL): { + case ((_bloodVolume + GET_REBOA_VOLUME(_unit)) < BLOOD_VOLUME_FATAL): { TRACE_3("BloodVolume Fatal",_unit,BLOOD_VOLUME_FATAL,_bloodVolume); [QACEGVAR(medical,Bleedout), _unit] call CBA_fnc_localEvent; }; @@ -161,7 +161,7 @@ switch (true) do { case ((_spo2 < EGVAR(breathing,SpO2_cardiacValue)) && EGVAR(breathing,SpO2_cardiacActive)): { [QACEGVAR(medical,FatalVitals), _unit] call CBA_fnc_localEvent; }; - case (_hemorrhage == 4): { + case ((_bloodVolume + GET_REBOA_VOLUME(_unit)) < BLOOD_VOLUME_CLASS_4_HEMORRHAGE): { TRACE_3("Class IV Hemorrhage",_unit,_hemorrhage,_bloodVolume); [QACEGVAR(medical,FatalVitals), _unit] call CBA_fnc_localEvent; };