From 0de405fe2a31d034842b8914a9839f8b3dd21079 Mon Sep 17 00:00:00 2001 From: ulteq Date: Thu, 15 Dec 2016 12:58:06 +0100 Subject: [PATCH] Fix morphine when advanced medication is disabled --- addons/medical/functions/fnc_handleUnitVitals.sqf | 4 ---- addons/medical/functions/fnc_updatePainSuppress.sqf | 11 +++++++++++ addons/medical/script_macros_medical.hpp | 8 ++++++-- .../functions/fnc_treatmentMedicationLocal.sqf | 6 +++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index 13d578db31..e0c2c9197e 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -86,10 +86,6 @@ private _tourniquets = _unit getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; } forEach _tourniquets; [_unit, _tourniquetPain] call FUNC(adjustPainLevel); -// Handle continuous pain reduction -private _pain = _unit getVariable [QGVAR(pain), 0]; -_unit setVariable [QGVAR(pain), 0 max (_pain - _deltaT * PAIN_REDUCTION_SPEED), _syncValues]; - [_unit, _deltaT, _syncValues] call FUNC(updateHeartRate); [_unit, _deltaT, _syncValues] call FUNC(updatePainSuppress); [_unit, _deltaT, _syncValues] call FUNC(updatePeripheralResistance); diff --git a/addons/medical/functions/fnc_updatePainSuppress.sqf b/addons/medical/functions/fnc_updatePainSuppress.sqf index c4123b4bb0..6edc7f4d0b 100644 --- a/addons/medical/functions/fnc_updatePainSuppress.sqf +++ b/addons/medical/functions/fnc_updatePainSuppress.sqf @@ -42,3 +42,14 @@ if (!(_adjustment isEqualTo [])) then { _unit setVariable [QGVAR(painSuppress), 0 max _painSupressAdjustment, _syncValue]; }; + +// Handle continuous pain reduction +private _pain = _unit getVariable [QGVAR(pain), 0]; +_unit setVariable [QGVAR(pain), 0 max (_pain - _deltaT / PAIN_FADE_TIME), _syncValues]; + +// Handles simple medication +if (!GVAR(advancedMedication)) then { + private _painSupress = _unit getVariable [QGVAR(painSuppress), 0]; + _painSupress = _painSupress - _deltaT / PAIN_SUPPRESSION_FADE_TIME; + _unit setVariable [QGVAR(painSuppress), 0 max _painSupress, true]; +}; diff --git a/addons/medical/script_macros_medical.hpp b/addons/medical/script_macros_medical.hpp index 0e8751737e..a22f7fafc8 100644 --- a/addons/medical/script_macros_medical.hpp +++ b/addons/medical/script_macros_medical.hpp @@ -37,8 +37,12 @@ // --- pain #define PAIN_UNCONSCIOUS 0.5 -// Pain reduction per second -#define PAIN_REDUCTION_SPEED 0.001 +// Pain fade out time (time it takes until pain is guaranteed to be completly gone) +#define PAIN_FADE_TIME 900 + +// Only relevant when advanced medication is disabled +// Morphine pain suppression fade out time (time it takes until pain suppression is guaranteed to be completly gone) +#define PAIN_SUPPRESSION_FADE_TIME 1800 // Chance to wake up when vitals are stable (checked once every SPONTANEOUS_WAKE_UP_INTERVAL seconds) #define SPONTANEOUS_WAKE_UP_CHANCE 0.2 diff --git a/addons/medical_treatment/functions/fnc_treatmentMedicationLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentMedicationLocal.sqf index 6e02005b06..f161529cfb 100644 --- a/addons/medical_treatment/functions/fnc_treatmentMedicationLocal.sqf +++ b/addons/medical_treatment/functions/fnc_treatmentMedicationLocal.sqf @@ -19,9 +19,9 @@ TRACE_3("params",_target,_className,_partIndex); if (!EGVAR(medical,advancedMedication)) exitWith { if (_className == "Morphine") exitWith { - #define MORPHINEHEAL 0.8 - private _pain = 0 max ((_target getVariable [QEGVAR(medical,pain), 0]) - MORPHINEHEAL); - _target setVariable [QEGVAR(medical,pain), _pain, true]; + #define MORPHINE_PAIN_SUPPRESSION 0.6 + private _painSupress = _target getVariable [QEGVAR(medical,painSuppress), 0]; + _target setVariable [QEGVAR(medical,painSuppress), (_painSupress + MORPHINE_PAIN_SUPPRESSION) min 1, true]; }; if (_className == "Epinephrine") exitWith {