From f571088c7777a559b2a537e122c9e691b7809897 Mon Sep 17 00:00:00 2001 From: Cplhardcore <135324281+Cplhardcore@users.noreply.github.com> Date: Wed, 30 Oct 2024 08:27:26 -0700 Subject: [PATCH 1/7] Adds alteplase and effects --- .../gui/functions/fnc_updateMedications.sqf | 3 +- addons/pharma/ACE_Medical_Treatment.hpp | 12 +++++ .../pharma/ACE_Medical_Treatment_Actions.hpp | 11 ++++ addons/pharma/CfgFunctions.hpp | 3 -- addons/pharma/CfgWeapons.hpp | 22 ++++++++ addons/pharma/XEH_PREP.hpp | 2 + addons/pharma/XEH_preInit.sqf | 18 +++++++ .../pharma/functions/fnc_medicationLocal.sqf | 2 +- .../fnc_treatmentAdvanced_AlteplaseLocal.sqf | 48 ++++++++++++++++++ ...tAdvanced_AmiodaroneOverdoseLocal copy.sqf | 18 +++++++ .../fnc_treatmentAdvanced_NaloxoneLocal.sqf | 9 +++- ...reatmentAdvanced_NaloxoneOverdoseLocal.sqf | 17 +++++++ addons/pharma/stringtable.xml | 27 ++++++++++ addons/pharma/ui/icon_Alteplase.paa | Bin 0 -> 65311 bytes 14 files changed, 186 insertions(+), 6 deletions(-) create mode 100644 addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf create mode 100644 addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf create mode 100644 addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf create mode 100644 addons/pharma/ui/icon_Alteplase.paa diff --git a/addons/gui/functions/fnc_updateMedications.sqf b/addons/gui/functions/fnc_updateMedications.sqf index 95c13ebd2..c352432f2 100644 --- a/addons/gui/functions/fnc_updateMedications.sqf +++ b/addons/gui/functions/fnc_updateMedications.sqf @@ -36,7 +36,8 @@ disableSerialization; "kat_TXA", "kat_morphineIV", "kat_adenosineIV", - "kat_atropineIV" + "kat_atropineIV", + "kat_alteplase" ]; private _medicationsFound = { diff --git a/addons/pharma/ACE_Medical_Treatment.hpp b/addons/pharma/ACE_Medical_Treatment.hpp index 86e190d74..58d683171 100644 --- a/addons/pharma/ACE_Medical_Treatment.hpp +++ b/addons/pharma/ACE_Medical_Treatment.hpp @@ -92,6 +92,18 @@ class ACE_ADDON(Medical_Treatment) { incompatibleMedication[] = {}; viscosityChange = 0; }; + class Alteplase { + painReduce = 0; + hrIncreaseLow[] = {-4, -10}; + hrIncreaseNormal[] = {-5, -15}; + hrIncreaseHigh[] = {-5, -20}; + timeInSystem = 180; + timeTillMaxEffect = 30; + maxDose = 1; + maxDoseDeviation = 0; + incompatibleMedication[] = {}; + viscosityChange = 0; + }; class AdenosineIV { painReduce = 0; hrIncreaseLow[] = {-7, -10}; diff --git a/addons/pharma/ACE_Medical_Treatment_Actions.hpp b/addons/pharma/ACE_Medical_Treatment_Actions.hpp index 0552b77e2..7222038f3 100644 --- a/addons/pharma/ACE_Medical_Treatment_Actions.hpp +++ b/addons/pharma/ACE_Medical_Treatment_Actions.hpp @@ -596,6 +596,17 @@ class ACE_Medical_Treatment_Actions { callbackSuccess = QFUNC(medication); sounds[] = {}; }; + class syringe_alteplase_5ml_3: syringe_EACA_5ml_1 { + displayName = CSTRING(push_alteplase_IV_3); + displayNameProgress = CSTRING(pushing_alteplase_IV_3); + allowedSelections[] = {"Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg"}; + allowSelfTreatment = 1; + medicRequired = QGVAR(medLvl_alteplase); + treatmentTime = QGVAR(treatmentTime_alteplase); + items[] = {"kat_syringe_alteplase_5ml_3"}; + callbackSuccess = QFUNC(medication); + sounds[] = {}; + }; class syringe_lidocaine_5ml_1: syringe_EACA_5ml_1 { displayName = CSTRING(push_lidocaine_IV_1); displayNameProgress = CSTRING(pushing_lidocaine_IV_1); diff --git a/addons/pharma/CfgFunctions.hpp b/addons/pharma/CfgFunctions.hpp index e62ca0a7c..d55116ed7 100644 --- a/addons/pharma/CfgFunctions.hpp +++ b/addons/pharma/CfgFunctions.hpp @@ -17,9 +17,6 @@ class CfgFunctions { class tourniquetRemove { file = QPATHTOF(functions\fnc_tourniquetRemove.sqf); }; - class ivBagLocal { - file = QPATHTOF(functions\fnc_ivBagLocal.sqf); - }; class overDose { file = QPATHTOF(functions\fnc_overDose.sqf); }; diff --git a/addons/pharma/CfgWeapons.hpp b/addons/pharma/CfgWeapons.hpp index c6ec56ece..27f6c6074 100644 --- a/addons/pharma/CfgWeapons.hpp +++ b/addons/pharma/CfgWeapons.hpp @@ -289,6 +289,17 @@ class CfgWeapons { mass = 0.5; }; }; + class kat_alteplase: ACE_ItemCore { + scope = 2; + displayName = CSTRING(Alteplase_Display); + picture = QPATHTOF(ui\icon_Alteplase.paa); + model = "\A3\Structures_F_EPA\Items\Medical\Painkillers_F.p3d"; + descriptionShort = CSTRING(Alteplase_DescShort); + ACE_isMedicalItem = 1; + class ItemInfo: CBA_MiscItem_ItemInfo { + mass = 0.5; + }; + }; class kat_coag_sense: ACE_ItemCore { scope = 2; author = "Miss Heda"; @@ -553,6 +564,17 @@ class CfgWeapons { mass = 1; }; }; + class kat_syringe_alteplase_5ml_3: ACE_ItemCore { + scope = 1; + displayName = CSTRING(Syringe_alteplase_5_3_Display); + picture = QPATHTOF(ui\syringe_item.paa); + model = "\A3\Structures_F_EPA\Items\Medical\Painkillers_F.p3d"; + descriptionShort = CSTRING(Syringe_alteplase_5_3_DescShort); + ACE_isMedicalItem = 1; + class ItemInfo: CBA_MiscItem_ItemInfo { + mass = 1; + }; + }; class kat_syringe_epinephrineIV_5ml_1: ACE_ItemCore { scope = 1; displayName = CSTRING(Syringe_epinephrineIV_5_1_Display); diff --git a/addons/pharma/XEH_PREP.hpp b/addons/pharma/XEH_PREP.hpp index 1bd1f4d3e..6f0188df4 100644 --- a/addons/pharma/XEH_PREP.hpp +++ b/addons/pharma/XEH_PREP.hpp @@ -20,6 +20,8 @@ PREP(salineCheck); PREP(tourniquetRemove); PREP(treatmentAdvanced_AdenosineLocal); PREP(treatmentAdvanced_AdenosineOverdoseLocal); +PREP(treatmentAdvanced_AlteplaseLocal); +PREP(treatmentAdvanced_AlteplaseOverdoseLocal); PREP(treatmentAdvanced_AmiodaroneLocal); PREP(treatmentAdvanced_AmiodaroneOverdoseLocal); PREP(treatmentAdvanced_AtropineLocal); diff --git a/addons/pharma/XEH_preInit.sqf b/addons/pharma/XEH_preInit.sqf index 26d07fc25..fc6152735 100644 --- a/addons/pharma/XEH_preInit.sqf +++ b/addons/pharma/XEH_preInit.sqf @@ -1059,4 +1059,22 @@ PREP_RECOMPILE_END; true ] call CBA_Settings_fnc_init; +[ + QGVAR(medLvl_Alteplase), + "LIST", + [LLSTRING(medLvl_Alteplase)], + [CBA_SETTINGS_CAT, LSTRING(SubCategory_Alteplase)], + [[0, 1, 2], [ACELSTRING(medical_treatment,Anyone), ACELSTRING(medical_treatment,Medics), ACELSTRING(medical_treatment,Doctors)], 0], + true +] call CBA_Settings_fnc_init; + +[ + QGVAR(treatmentTime_Alteplase), + "SLIDER", + [LLSTRING(treatmentTime_Alteplase)], + [CBA_SETTINGS_CAT, LSTRING(SubCategory_Alteplase)], + [0.1, 10, 7, 1], + true +] call CBA_Settings_fnc_init; + ADDON = true; diff --git a/addons/pharma/functions/fnc_medicationLocal.sqf b/addons/pharma/functions/fnc_medicationLocal.sqf index a20873e6f..689c3f3dc 100644 --- a/addons/pharma/functions/fnc_medicationLocal.sqf +++ b/addons/pharma/functions/fnc_medicationLocal.sqf @@ -137,7 +137,7 @@ if ([QGVAR(AMS_Enabled)] call CBA_settings_fnc_get) then { [format ["kat_pharma_%1Local", toLower _medicationName], [_patient, _bodyPart], _patient] call CBA_fnc_targetEvent; }; - if (_medicationName in ["ketamine","atropine","adenosine","lidocaine"]) then { + if (_medicationName in ["ketamine","atropine","adenosine","alteplase","lidocaine"]) then { [format ["kat_pharma_%1Local", toLower _medicationName], [_patient, _bodyPart, _classname], _patient] call CBA_fnc_targetEvent; }; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf new file mode 100644 index 000000000..bf98213a3 --- /dev/null +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf @@ -0,0 +1,48 @@ +#include "..\script_component.hpp" +/* + * Author: Mazinski.H, Edited by MiszczuZPolski and Cplhardcore + * Applies Bradycardia randomly + * + * Arguments: + * 0: Patient + * + * Return Value: + * None + * + * Example: + * [cursorTarget] call kat_pharma_fnc_treatmentAdvanced_AmiodaroneLocal; + * + * Public: No + */ +params ["_patient"]; +private _medicationArray = _patient getVariable [QACEGVAR(medical,medications), []]; +{ + _x params ["_medication"]; + private _lowerMed = toLower _medication; + if ( + (_lowerMed find "txa" != -1) || + (_lowerMed find "eaca" != -1) + ) then { + _medicationArray deleteAt (_medicationArray find _x); + }; +} forEach _medicationArray; + +_patient setVariable [QACEGVAR(medical,medications), _medicationArray, true]; +[{ + params ["_patient"]; + private _AlteplaseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _TXAOverdoseTarget = _TXAOverdoseTarget + 1; + if (_TXAOverdoseTarget > 24) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler;}; + private _surfaceArea = (_patient getVariable [QEGVAR(breathing,lungSurfaceArea), 400]) + 5; + _patient setVariable [QEGVAR(breathing,lungSurfaceArea), _surfaceArea]; + private _coagulationFactor = (_patient getVariable [QGVAR(coagulationFactor), 30]); + private _factorstoremove = 1; + _patient setVariable [QGVAR(coagulationFactor), (_coagulationFactor - _factorstoremove), true]; + }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 15] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf new file mode 100644 index 000000000..49e55fd9e --- /dev/null +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf @@ -0,0 +1,18 @@ +#include "..\script_component.hpp" +/* + * Author: Mazinski.H, Edited by MiszczuZPolski and Cplhardcore + * Applies Bradycardia randomly + * + * Arguments: + * 0: Patient + * + * Return Value: + * None + * + * Example: + * [cursorTarget] call kat_pharma_fnc_treatmentAdvanced_AmiodaroneLocal; + * + * Public: No + */ +params ["_patient"]; +[_patient, AmiodaroneOverdose, 30, 600, "", "", "", 0.2, "", ""] call EFUNC(vitals,addMedicationAdjustment); diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf index cd5d5f4ff..8bb983a3a 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf @@ -19,14 +19,21 @@ params ["_patient"]; private _medicationArray = _patient getVariable [QACEGVAR(medical,medications), []]; private _medicationDeleted = false; + { _x params ["_medication"]; - if (_medication isEqualTo "Morphine" || _medication isEqualTo "Fentanyl" || _medication isEqualTo "Nalbuphine" || _medication isEqualTo "MorphineOverdose" || _medication isEqualTo "FentanylOverdose" || _medication isEqualTo "NalbuphineOverdose") then { + private _lowerMed = toLower _medication; + if ( + (_lowerMed find "morphine" != -1) || + (_lowerMed find "fentanyl" != -1) || + (_lowerMed find "nalbuphine" != -1) + ) then { if (random 1 < 0.33) then { _medicationArray deleteAt (_medicationArray find _x); _medicationDeleted = true; }; }; + if (_medicationDeleted) exitWith {}; } forEach _medicationArray; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf new file mode 100644 index 000000000..8e5983b55 --- /dev/null +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf @@ -0,0 +1,17 @@ +#include "..\script_component.hpp" +/* + * Author: Mazinski.H + * Locates and Removes one opioid after the administration of Naloxone. + * + * Arguments: + * 0: Patient + * + * Return Value: + * None + * + * Example: + * [player] call kat_pharma_fnc_treatmentAdvanced_NaloxoneLocal; + * + * Public: No + */ + diff --git a/addons/pharma/stringtable.xml b/addons/pharma/stringtable.xml index c6d98a92d..608c5b3de 100644 --- a/addons/pharma/stringtable.xml +++ b/addons/pharma/stringtable.xml @@ -384,6 +384,12 @@ Amiodaroni Amiodaron + + Used to reverse TXA and EACA overdose + + + Alteplase + Push Amiodarone Amiodaron verabreichen @@ -2030,6 +2036,12 @@ Время обработки Амиодароном Behandeltijd van Amiodaron + + Medical level required for Alteplase + + + Treatment time for Alteplase + Medical level required for Lidocaine Poziom wyszkolenia medycznego dla Lidokainy @@ -2578,6 +2590,9 @@ Настройки Амиодарона Amiodaron instellingen + + Alteplase Settings + Lidocaine Settings Ustawienia Lidokainy @@ -4054,6 +4069,12 @@ 5ml Syringe loaded with 300mg of Amiodarone + + 5ml Syringe/50mg Alteplase + + + 5ml Syringe loaded with 50mg of Alteplase + 5ml Syringe/40mg Lidocaine @@ -4264,6 +4285,9 @@ Push 300mg Amiodarone IV + + Push 50mg Alteplase IV + Push 40mg Lidocaine IV @@ -4354,6 +4378,9 @@ Pushing 300mg Amiodarone IV + + Pushing 50mg Alteplase IV + Pushing 40mg Lidocaine IV diff --git a/addons/pharma/ui/icon_Alteplase.paa b/addons/pharma/ui/icon_Alteplase.paa new file mode 100644 index 0000000000000000000000000000000000000000..82914ba8ffc08448309ffd101b94c17fb6a3f6cc GIT binary patch literal 65311 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 Date: Tue, 12 Nov 2024 14:17:47 -0800 Subject: [PATCH 2/7] Adds a whole bunch of OD effects --- addons/feedback/XEH_preInit.sqf | 9 +++++ addons/feedback/stringtable.xml | 7 ++++ .../fnc_treatmentAdvanced_AlteplaseLocal.sqf | 4 +- ...eatmentAdvanced_AlteplaseOverdoseLocal.sqf | 39 +++++++++++++++++++ .../fnc_treatmentAdvanced_AmiodaroneLocal.sqf | 3 +- ...tAdvanced_AmiodaroneOverdoseLocal copy.sqf | 18 --------- ...atmentAdvanced_AmiodaroneOverdoseLocal.sqf | 2 + .../fnc_treatmentAdvanced_AtropineLocal.sqf | 14 ------- ...nc_treatmentAdvanced_CWMPOverdoseLocal.sqf | 38 +++++++++++++++++- ...nc_treatmentAdvanced_EACAOverdoseLocal.sqf | 8 ++-- ...tmentAdvanced_EpinephrineOverdoseLocal.sqf | 3 +- ...eatmentAdvanced_EtomidateOverdoseLocal.sqf | 31 ++++++++++++++- ...reatmentAdvanced_FentanylOverdoseLocal.sqf | 38 ++++++++++++++++-- ...reatmentAdvanced_MorphineOverdoseLocal.sqf | 37 +++++++++++++++++- ...atmentAdvanced_NalbuphineOverdoseLocal.sqf | 37 +++++++++++++++++- .../fnc_treatmentAdvanced_NaloxoneLocal.sqf | 6 ++- ...entAdvanced_NitroglycerinOverdoseLocal.sqf | 4 +- ..._treatmentAdvanced_NorepinephrineLocal.sqf | 10 ----- ...ntAdvanced_NorepinephrineOverdoseLocal.sqf | 3 +- ...fnc_treatmentAdvanced_TXAOverdoseLocal.sqf | 1 + 20 files changed, 247 insertions(+), 65 deletions(-) create mode 100644 addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseOverdoseLocal.sqf delete mode 100644 addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf diff --git a/addons/feedback/XEH_preInit.sqf b/addons/feedback/XEH_preInit.sqf index 9e766b44e..97406ec84 100644 --- a/addons/feedback/XEH_preInit.sqf +++ b/addons/feedback/XEH_preInit.sqf @@ -27,4 +27,13 @@ PREP_RECOMPILE_END; true ] call CBA_Settings_fnc_init; +[ + QGVAR(effectOverdose), + "CHECKBOX", + [LLSTRING(SETTING_overdoseEffect_display), LLSTRING(SETTING_overdoseEffect_DESC)], + CBA_SETTINGS_CAT, + [false], + true +] call CBA_Settings_fnc_init; + ADDON = true; diff --git a/addons/feedback/stringtable.xml b/addons/feedback/stringtable.xml index 87b1e7830..03e2a81c5 100644 --- a/addons/feedback/stringtable.xml +++ b/addons/feedback/stringtable.xml @@ -37,5 +37,12 @@ Enables opioid effect on ketamine, fentanyl and pervitin ケタミン、フェンタニル、ペルビチンなどでオピオイドの効果を有効にします + + Enable Overdose effects + オピオイド効果を有効化 + + + Enables Overdose effects on certain medications + diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf index bf98213a3..122c6e7e7 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseLocal.sqf @@ -36,8 +36,8 @@ _patient setVariable [QACEGVAR(medical,medications), _medicationArray, true]; if (!(alive _patient)) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; }; - _TXAOverdoseTarget = _TXAOverdoseTarget + 1; - if (_TXAOverdoseTarget > 24) exitWith { + _AlteplaseTarget = _AlteplaseTarget + 1; + if (_AlteplaseTarget > 24) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler;}; private _surfaceArea = (_patient getVariable [QEGVAR(breathing,lungSurfaceArea), 400]) + 5; _patient setVariable [QEGVAR(breathing,lungSurfaceArea), _surfaceArea]; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseOverdoseLocal.sqf new file mode 100644 index 000000000..4aec77353 --- /dev/null +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AlteplaseOverdoseLocal.sqf @@ -0,0 +1,39 @@ +#include "..\script_component.hpp" +/* + * Author: Mazinski.H, Edited by MiszczuZPolski and Cplhardcore + * Applies Bradycardia randomly + * + * Arguments: + * 0: Patient + * + * Return Value: + * None + * + * Example: + * [cursorTarget] call kat_pharma_fnc_treatmentAdvanced_AmiodaroneLocal; + * + * Public: No + */ +params ["_patient"]; +private _hrAdjust = 10 + floor random ((25 - 10) + 1); +[_patient, AlteplaseOverdose, 30, 600, _hrAdjust, "", "", 0.2, "", ""] call EFUNC(vitals,addMedicationAdjustment); +_patient setVariable [QACEGVAR(medical,medications), _medicationArray, true]; +[{ + params ["_patient"]; + private _AlteplaseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _AlteplaseTarget = _AlteplaseTarget + 1; + if (_AlteplaseTarget > 24) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler;}; + private _bloodlevels = GET_BODY_FLUID(_patient); + _bloodlevels set [0, (_bloodlevels select 0) - 50]; + _patient setVariable [QEGVAR(circulation,bodyFluid), _bloodlevels, true]; + private _coagulationFactor = (_patient getVariable [QGVAR(coagulationFactor), 30]); + private _factorstoremove = 2; + _patient setVariable [QGVAR(coagulationFactor), (_coagulationFactor - _factorstoremove), true]; + }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 15] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneLocal.sqf index 971ef53a7..40920f1a5 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneLocal.sqf @@ -18,7 +18,6 @@ params ["_patient"]; private _random = random 3; if (_random <= 1) then { - private _hrValue = [-40, -30, -50]; - private _hrAdjust = selectRandom _hrValue; + private _hrAdjust = -50 + floor random ((-30 - -50) + 1); [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); }; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf deleted file mode 100644 index 49e55fd9e..000000000 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal copy.sqf +++ /dev/null @@ -1,18 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: Mazinski.H, Edited by MiszczuZPolski and Cplhardcore - * Applies Bradycardia randomly - * - * Arguments: - * 0: Patient - * - * Return Value: - * None - * - * Example: - * [cursorTarget] call kat_pharma_fnc_treatmentAdvanced_AmiodaroneLocal; - * - * Public: No - */ -params ["_patient"]; -[_patient, AmiodaroneOverdose, 30, 600, "", "", "", 0.2, "", ""] call EFUNC(vitals,addMedicationAdjustment); diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf index 49e55fd9e..0c42d6cf4 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf @@ -15,4 +15,6 @@ * Public: No */ params ["_patient"]; +private _hrAdjust = -50 + floor random ((-30 - -50) + 1); +[_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); [_patient, AmiodaroneOverdose, 30, 600, "", "", "", 0.2, "", ""] call EFUNC(vitals,addMedicationAdjustment); diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AtropineLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AtropineLocal.sqf index c416342d8..fcaf6087b 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AtropineLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AtropineLocal.sqf @@ -16,17 +16,3 @@ */ params ["_patient", "_bodyPart", "_classname"]; - -if (_classname isEqualTo "syringe_atropine_5ml_3") exitWith {}; - -private _medicationArray = _patient getVariable [QACEGVAR(medical,medications), []]; - -{ - _x params ["_medication"]; - - if (_medication isEqualTo "BRADYCARDIA") exitWith { - _medicationArray deleteAt (_medicationArray find _x); - }; -} forEach (_medicationArray); - -_patient setVariable [QACEGVAR(medical,medications), _medicationArray, true]; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf index 954764320..01c0baac3 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf @@ -14,4 +14,40 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +[_patient, "CWMPOverdose", 30, 600, "", "", "", 0.3, "", ""] call EFUNC(vitals,addMedicationAdjustment); +if GVAR(kidneyAction) then + {[ + { + params ["_patient"]; + private _kidneyTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _kidneyTarget = _kidneyTarget + 1; + if (_kidneyTarget > 12) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler;}; + private _ph = _patient getVariable [QGVAR(externalPh), _ph, true] + 100; + _patient setVariable [QGVAR(externalPh), _ph, true]; + private _coagulationFactor = (_patient getVariable [QGVAR(coagulationFactor), 30]); + private _factorstoremove = 1; + _patient setVariable [QGVAR(coagulationFactor), (_coagulationFactor - _factorstoremove), true]; + }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; + }, _patient, 15] call CBA_fnc_waitAndExecute; +} +[{ + params ["_patient"]; + private _bpTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _bpTarget = _bpTarget + 1; + if (_bpTarget > 12) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler;}; + [_patient, -2, -2, "CWMPOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 15] call CBA_fnc_waitAndExecute; \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_EACAOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_EACAOverdoseLocal.sqf index a7cc8ebd1..ffb6078c5 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_EACAOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_EACAOverdoseLocal.sqf @@ -15,8 +15,8 @@ * * Public: No */ - params ["_patient"]; - [_patient, EACAOverdose, 1, 900, "", "", -90, -0.3, "", ""] call EFUNC(vitals,addMedicationAdjustment); +params ["_patient"]; +[_patient, EACAOverdose, 1, 900, "", "", -90, -0.3, "", ""] call EFUNC(vitals,addMedicationAdjustment); [{ params ["_patient"]; private _EACAOverdoseTarget = 0; @@ -34,11 +34,9 @@ private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; if ((_ht findIf {_x isEqualTo "eacaOD"}) == -1) then { _ht pushBack "eacaOD"; - if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; }; - _patient setVariable [QEGVAR(circulation,ht), _ht, true]; }; }, [_patient], 15] call CBA_fnc_waitAndExecute; @@ -50,6 +48,6 @@ private _coagulationFactor = (_patient getVariable [QGVAR(coagulationFactor), 30]); private _factorstoremove = 1; _patient setVariable [QGVAR(coagulationFactor), (_coagulationFactor - _factorstoremove), true]; - if ((random 1000) < 1) then {_patient setDamage 1;}; + if ((random 10000) < 1) then {_patient setDamage 1;}; }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; }, _patient, 15] call CBA_fnc_waitAndExecute; \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_EpinephrineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_EpinephrineOverdoseLocal.sqf index f9dfb0da2..70accf91b 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_EpinephrineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_EpinephrineOverdoseLocal.sqf @@ -17,8 +17,7 @@ */ params ["_patient"]; -private _hrValue = [40, 30, 50]; -private _hrAdjust = selectRandom _hrValue; +private _hrAdjust = 30 + floor random ((60 - 30) + 1); [_patient, "TACHYCARDIA", 30, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); if (random 10 < 1) then { private _randomValue = [3, 4]; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf index 61f187cc4..b2ff1731c 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf @@ -14,4 +14,33 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +private _random = random 3; +if (_random <= 1) then { + private _hrAdjust = -40 + floor random ((-20 - -40) + 1); + [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +}; +private _randomNumber = floor (random 1) + 1; +switch (_randomNumber) do { + case 1: { + private _bpAdjust = -20 + floor random ((-5 - -20) + 1); + [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = -40 + floor random ((-20 - -40) + 1); + [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + }; + case 2: { + private _bpAdjust = -20 + floor random ((-5 - -20) + 1); + [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = 20 + floor random ((40 - 20) + 1); + [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + }; +}; +if QEGVAR(feedback,effectOverdose) then + {PP_wetD = ppEffectCreate ["WetDistortion",300]; + PP_wetD ppEffectEnable true; + PP_wetD ppEffectAdjust [9.7,0.2,-0.1,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]; + PP_wetD ppEffectCommit 0; + // Date YYYY-MM-DD-HH-MM: [2035,6,24,8,0]. Overcast: 0.3. Fog: 0.0823474. Fog params: [0.0800016,0.013,0] + // GF PostProcess Editor parameters: Copy the following line to clipboard and click Import in the editor. + //[[false,100,[0.2,0.2,0.26,0.3]],[false,200,[0.05,0.05,true]],[true,300,[9.7,0.2,-0.1,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]],[false,1500,[1,1,0,[2,2,2,-0.1],[5,5,5,1],[4,0.33,0.33,0],[0.66,0,0.96,0,0,0,4]]],[false,500,[2.06]],[false,2000,[0.44,1,1,0.5,0.5,true]],[false,2500,[1,1,1]]] + [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}: \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf index 3f7b41d3f..9bf52f81e 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf @@ -11,10 +11,42 @@ * None * * Example: - * [player, "LeftLeg", 1] call kat_pharma_fnc_treatmentAdvanced_FentanylLocal; + * [player] call kat_pharma_fnc_treatmentAdvanced_FentanylOverdoseLocal; * * Public: No */ - - params ["_patient"]; +private _bpAdjust = -30 + floor random ((-15 - -30) + 1); +[_patient, _bpAdjust, _bpAdjust, "fentanylOverdose"] call kat_circulation_fnc_updateBloodPressureChange; +private _hrAdjust = -50 + floor random ((-30 - -50) + 1); +[_patient, "fentanylOverdose", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +[{ + params ["_patient"]; + private _fentanylOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _fentanylOverdoseTarget = _fentanylOverdoseTarget + 1; + if (_fentanylOverdoseTarget > 6) exitWith { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "opioidOD"}) == -1) then { + _ht pushBack "opioidOD"; + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 10] call CBA_fnc_waitAndExecute; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; + if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; + private _depression = _unit getVariable [QEGVAR(pharma,opioidFactor)] + 0.1; + _patient setVariable [QEGVAR(pharma,opioidFactor), _depression]; + }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 10] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf index 081a55a6a..1fa0a846b 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf @@ -14,4 +14,39 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +params ["_patient"]; +private _bpAdjust = -30 + floor random ((-15 - -30) + 1); +[_patient, _bpAdjust, _bpAdjust, "morphineOverdose"] call kat_circulation_fnc_updateBloodPressureChange; +private _hrAdjust = -50 + floor random ((-30 - -50) + 1); +[_patient, "morphineOverdose", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +[{ + params ["_patient"]; + private _morphineOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _morphineOverdoseTarget = _morphineOverdoseTarget + 1; + if (_morphineOverdoseTarget > 6) exitWith { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "opioidOD"}) == -1) then { + _ht pushBack "opioidOD"; + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 10] call CBA_fnc_waitAndExecute; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; + if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; + private _depression = _unit getVariable [QEGVAR(pharma,opioidFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidFactor), _depression]; + }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 10] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf index f856c6572..bdd6c14b6 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf @@ -14,4 +14,39 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +params ["_patient"]; +private _bpAdjust = -30 + floor random ((-15 - -30) + 1); +[_patient, _bpAdjust, _bpAdjust, "nalbuphineOverdose"] call kat_circulation_fnc_updateBloodPressureChange; +private _hrAdjust = -50 + floor random ((-30 - -50) + 1); +[_patient, "nalbuphineOverdose", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +[{ + params ["_patient"]; + private _nalbuphineOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _nalbuphineOverdoseTarget = _nalbuphineOverdoseTarget + 1; + if (_nalbuphineOverdoseTarget > 6) exitWith { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "opioidOD"}) == -1) then { + _ht pushBack "opioidOD"; + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 10] call CBA_fnc_waitAndExecute; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; + if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; + private _depression = _unit getVariable [QEGVAR(pharma,opioidFactor)] + 0.05; + _patient setVariable [QEGVAR(pharma,opioidFactor), _depression]; + }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 10] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf index 8bb983a3a..9e9eb6765 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneLocal.sqf @@ -25,12 +25,16 @@ private _medicationDeleted = false; private _lowerMed = toLower _medication; if ( (_lowerMed find "morphine" != -1) || + (_lowerMed find "morphineOverdose" != -1) || (_lowerMed find "fentanyl" != -1) || - (_lowerMed find "nalbuphine" != -1) + (_lowerMed find "fentanylOverdose" != -1) || + (_lowerMed find "nalbuphine" != -1) || + (_lowerMed find "nalbuphineOverdose" != -1) ) then { if (random 1 < 0.33) then { _medicationArray deleteAt (_medicationArray find _x); _medicationDeleted = true; + _patient setVariable [QEGVAR(pharma,opioidFactor), 1]; }; }; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf index b7ec021e5..58476f973 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf @@ -14,7 +14,7 @@ * * Public: No */ - params ["_patient"]; +params ["_patient"]; private _hrValue = [-20, -25, -30, -35, -40, -45, 20, 25, 30, 35, 40, 45]; private _hrAdjust = selectRandom _hrValue; -[_patient, NitroglycerinOverdose, 30, 1200, _hrAdjust, "", 75, "", "", ""] call EFUNC(vitals,addMedicationAdjustment); \ No newline at end of file +[_patient, NitroglycerinOverdose, 30, 1200, _hrAdjust, "", 75, "", "", ""] call EFUNC(vitals,addMedicationAdjustment); diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf index ae8c489c1..8631f2d4f 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf @@ -15,13 +15,3 @@ * Public: No */ params ["_patient"]; - -private _medicationArray = _patient getVariable [QACEGVAR(medical,medications), []]; -{ - _x params ["_medication"]; - if (_medication isEqualTo "BRADYCARDIA") then { - _medicationArray deleteAt (_medicationArray find _x); - }; -} forEach _medicationArray; - -_patient setVariable [QACEGVAR(medical,medications), _medicationArray, true]; \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf index c6e8c245f..9686acd92 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf @@ -15,8 +15,7 @@ * Public: No */ params ["_patient"]; -private _hrValue = [40, 30, 50]; -private _hrAdjust = selectRandom _hrValue; +private _hrAdjust = 30 + floor random ((50 - 30) + 1); [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); if (random 10 < 1) then { private _randomValue = [3, 4]; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_TXAOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_TXAOverdoseLocal.sqf index 920872a7f..8a2eaf8ae 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_TXAOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_TXAOverdoseLocal.sqf @@ -51,5 +51,6 @@ params ["_patient"]; private _coagulationFactor = (_patient getVariable [QGVAR(coagulationFactor), 30]); private _factorstoremove = 1; _patient setVariable [QGVAR(coagulationFactor), (_coagulationFactor - _factorstoremove), true]; + if ((random 10000) < 1) then {_patient setDamage 1;}; }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; }, _patient, 15] call CBA_fnc_waitAndExecute; From 91d054b5938615aef37f473645baa12d817907f1 Mon Sep 17 00:00:00 2001 From: Cplhardcore <135324281+Cplhardcore@users.noreply.github.com> Date: Wed, 13 Nov 2024 07:53:31 -0800 Subject: [PATCH 3/7] More stuff should be done until brain sim stuff --- .../breathing/functions/fnc_fullHealLocal.sqf | 2 +- addons/main/script_macros.hpp | 1 + addons/pharma/ACE_Medical_Treatment.hpp | 24 +-- addons/pharma/functions/fnc_fullHealLocal.sqf | 1 + .../pharma/functions/fnc_medicationLocal.sqf | 5 +- ...eatmentAdvanced_AdenosineOverdoseLocal.sqf | 50 ++++- ...atmentAdvanced_AmiodaroneOverdoseLocal.sqf | 2 +- ...reatmentAdvanced_AtropineOverdoseLocal.sqf | 54 +++++- ...nc_treatmentAdvanced_CWMPOverdoseLocal.sqf | 8 +- ...eatmentAdvanced_EtomidateOverdoseLocal.sqf | 180 ++++++++++++++++-- ...reatmentAdvanced_FentanylOverdoseLocal.sqf | 8 +- .../fnc_treatmentAdvanced_FlumazenilLocal.sqf | 22 +++ ...atmentAdvanced_FlumazenilOverdoseLocal.sqf | 15 +- ...reatmentAdvanced_KetamineOverdoseLocal.sqf | 35 +++- ...eatmentAdvanced_LidocaineOverdoseLocal.sqf | 38 ++++ ...eatmentAdvanced_LorazepamOverdoseLocal.sqf | 45 +++++ ...reatmentAdvanced_MorphineOverdoseLocal.sqf | 9 +- ...atmentAdvanced_NalbuphineOverdoseLocal.sqf | 8 +- ...reatmentAdvanced_NaloxoneOverdoseLocal.sqf | 2 +- ...entAdvanced_NitroglycerinOverdoseLocal.sqf | 4 + ..._treatmentAdvanced_NorepinephrineLocal.sqf | 4 +- ...ntAdvanced_NorepinephrineOverdoseLocal.sqf | 4 +- ...reatmentAdvanced_PervitinOverdoseLocal.sqf | 36 +++- addons/vitals/XEH_PREP.hpp | 1 + .../functions/fnc_addMedicationAdjustment.sqf | 4 +- .../functions/fnc_handleOxygenFunction.sqf | 3 +- .../vitals/functions/fnc_handleUnitVitals.sqf | 5 +- .../functions/fnc_updateOpioidDepression.sqf | 23 +++ 28 files changed, 526 insertions(+), 67 deletions(-) create mode 100644 addons/vitals/functions/fnc_updateOpioidDepression.sqf diff --git a/addons/breathing/functions/fnc_fullHealLocal.sqf b/addons/breathing/functions/fnc_fullHealLocal.sqf index e0af97d7b..3c7dd4ae9 100644 --- a/addons/breathing/functions/fnc_fullHealLocal.sqf +++ b/addons/breathing/functions/fnc_fullHealLocal.sqf @@ -28,7 +28,7 @@ _patient setVariable [QGVAR(etco2Monitor), [], true]; _patient setVariable [QGVAR(breathRate), 15, true]; _patient setVariable [QGVAR(nasalCannula), false, true]; _patient setVariable [QGVAR(lungSurfaceArea), 400]; - +_patient setvariable [QGVAR(respiratoryRateMultiplier), 1]; if (ACEGVAR(advanced_fatigue,enabled)) then { ["kat_LSDF"] call ACEFUNC(advanced_fatigue,removeDutyFactor); }; diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 0cdd5eb99..b981e8b7c 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -189,6 +189,7 @@ #undef GET_BLOOD_VOLUME #define GET_OPIOID_FACTOR(unit) (unit getVariable [QEGVAR(pharma,opioidFactor), 0]) +#define GET_OPIOID_DEPRESSION(unit) (unit getVariable [QEGVAR(pharma,opioidDepression), 0]) #define GET_PAIN_PERCEIVED(unit) (0 max ((GET_PAIN(unit) - GET_PAIN_SUPPRESS(unit)) min 1)) #undef GET_DAMAGE_THRESHOLD diff --git a/addons/pharma/ACE_Medical_Treatment.hpp b/addons/pharma/ACE_Medical_Treatment.hpp index 58d683171..4bcab3826 100644 --- a/addons/pharma/ACE_Medical_Treatment.hpp +++ b/addons/pharma/ACE_Medical_Treatment.hpp @@ -92,18 +92,6 @@ class ACE_ADDON(Medical_Treatment) { incompatibleMedication[] = {}; viscosityChange = 0; }; - class Alteplase { - painReduce = 0; - hrIncreaseLow[] = {-4, -10}; - hrIncreaseNormal[] = {-5, -15}; - hrIncreaseHigh[] = {-5, -20}; - timeInSystem = 180; - timeTillMaxEffect = 30; - maxDose = 1; - maxDoseDeviation = 0; - incompatibleMedication[] = {}; - viscosityChange = 0; - }; class AdenosineIV { painReduce = 0; hrIncreaseLow[] = {-7, -10}; @@ -727,6 +715,18 @@ class ACE_ADDON(Medical_Treatment) { timeTillMaxEffect = 15; viscosityChange = 0; }; + class syringe_alteplase_5ml_3 { + painReduce = 0; + hrIncreaseLow[] = {-4, -10}; + hrIncreaseNormal[] = {-5, -15}; + hrIncreaseHigh[] = {-5, -20}; + timeInSystem = 180; + timeTillMaxEffect = 30; + maxDose = 1; + maxDoseDeviation = 0; + incompatibleMedication[] = {}; + viscosityChange = 0; + }; class syringe_fentanyl_10ml_1 { painReduce = 0.6; hrIncreaseLow[] = {-5, -10}; diff --git a/addons/pharma/functions/fnc_fullHealLocal.sqf b/addons/pharma/functions/fnc_fullHealLocal.sqf index 7800a79b1..aa566ab51 100644 --- a/addons/pharma/functions/fnc_fullHealLocal.sqf +++ b/addons/pharma/functions/fnc_fullHealLocal.sqf @@ -48,6 +48,7 @@ _patient setVariable [QGVAR(externalPh), 0, true]; _patient setVariable [QGVAR(pH), 0, true]; _patient setVariable [QGVAR(opioidFactor), 0, true]; +_patient setVariable [QGVAR(opioidDepressionFactor), 0, true]; _patient setVariable [QGVAR(kidneyFail), false, true]; _patient setVariable [QGVAR(kidneyArrest), false, true]; diff --git a/addons/pharma/functions/fnc_medicationLocal.sqf b/addons/pharma/functions/fnc_medicationLocal.sqf index 689c3f3dc..46dbf7ca2 100644 --- a/addons/pharma/functions/fnc_medicationLocal.sqf +++ b/addons/pharma/functions/fnc_medicationLocal.sqf @@ -92,6 +92,7 @@ private _alphaFactor = GET_NUMBER(_medicationConfig >> "alphaFactor", private _maxRelief = GET_NUMBER(_medicationConfig >> "maxRelief",getNumber (_defaultConfig >> "maxRelief")); private _opioidRelief = GET_NUMBER(_medicationConfig >> "opioidRelief",getNumber (_defaultConfig >> "opioidRelief")); private _opioidEffect = GET_NUMBER(_medicationConfig >> "opioidEffect",getNumber (_defaultConfig >> "opioidEffect")); +private _opioidDepression = GET_NUMBER(_medicationConfig >> "opioidRelief",getNumber (_defaultConfig >> "opioidRelief")); private _heartRate = GET_HEART_RATE(_patient); private _hrIncrease = [_hrIncreaseLow, _hrIncreaseNormal, _hrIncreaseHigh] select (floor ((0 max _heartRate min 110) / 55)); @@ -113,14 +114,14 @@ if ([QGVAR(AMS_Enabled)] call CBA_settings_fnc_get) then { }; // Adjust the medication effects and add the medication to the list TRACE_3("adjustments",_heartRateChange,_painReduce,_viscosityChange); - [_patient, _medicationName, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _alphaFactor, _opioidRelief, _opioidEffect] call EFUNC(vitals,addMedicationAdjustment); + [_patient, _medicationName, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression] call EFUNC(vitals,addMedicationAdjustment); // Check for medication compatiblity [_patient, _medicationName, _maxDose, _maxDoseDeviation, _incompatibleMedication] call ACEFUNC(medical_treatment,onMedicationUsage); } else { // Adjust the medication effects and add the medication to the list TRACE_3("adjustments",_heartRateChange,_painReduce,_viscosityChange); - [_patient, _className, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _alphaFactor, _opioidRelief, _opioidEffect] call EFUNC(vitals,addMedicationAdjustment); + [_patient, _className, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression] call EFUNC(vitals,addMedicationAdjustment); // Check for medication compatiblity [_patient, _className, _maxDose, _maxDoseDeviation, _incompatibleMedication] call ACEFUNC(medical_treatment,onMedicationUsage); diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AdenosineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AdenosineOverdoseLocal.sqf index 594b920e0..efbe7ec38 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AdenosineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AdenosineOverdoseLocal.sqf @@ -14,4 +14,52 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +[{ + params ["_patient"]; + private _adenosineOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _adenosineOverdoseTarget = _adenosineOverdoseTarget + 1; + if (_adenosineOverdoseTarget > 12) exitWith { + if (random(100) < 15) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "adenosineOD"}) == -1) then { + _ht pushBack "adenosineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _surfaceArea = (_patient getVariable [QEGVAR(breathing,lungSurfaceArea), 400]) - 10; + _patient setVariable [QEGVAR(breathing,lungSurfaceArea), _surfaceArea]; + }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 15] call CBA_fnc_waitAndExecute; +[{ + params ["_patient"]; + private _AdenosineTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _AdenosineTarget = _AdenosineTarget + 1; + if (_AdenosineTarget > 18) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _surfaceArea = (_patient getVariable [QEGVAR(breathing,lungSurfaceArea), 400]) + 10; + _patient setVariable [QEGVAR(breathing,lungSurfaceArea), _surfaceArea]; + }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 300] call CBA_fnc_waitAndExecute; \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf index 0c42d6cf4..145e73b2e 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AmiodaroneOverdoseLocal.sqf @@ -17,4 +17,4 @@ params ["_patient"]; private _hrAdjust = -50 + floor random ((-30 - -50) + 1); [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); -[_patient, AmiodaroneOverdose, 30, 600, "", "", "", 0.2, "", ""] call EFUNC(vitals,addMedicationAdjustment); +[_patient, "AmiodaroneOverdose", 30, 600, "", "", "", 0.2, "", ""] call EFUNC(vitals,addMedicationAdjustment); diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_AtropineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_AtropineOverdoseLocal.sqf index 184e8aeb8..d6d7cd9d9 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_AtropineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_AtropineOverdoseLocal.sqf @@ -14,4 +14,56 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +[{ + params ["_patient"]; + private _adenosineOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _adenosineOverdoseTarget = _adenosineOverdoseTarget + 1; + if (_adenosineOverdoseTarget > 12) exitWith { + if (random(100) < 15) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "adenosineOD"}) == -1) then { + _ht pushBack "adenosineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.05; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + private _rr = _patient getvariable [QEGVAR(breathing,respiratoryRateMultiplier), 1] - 0.07; + _patient setvariable [QEGVAR(breathing,respiratoryRateMultiplier), _rr]; + }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 15] call CBA_fnc_waitAndExecute; +[{ + params ["_patient"]; + private _AdenosineTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _AdenosineTarget = _AdenosineTarget + 1; + if (_AdenosineTarget > 18) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] - 0.05; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + private _rr = _patient getvariable [QEGVAR(breathing,respiratoryRateMultiplier), 1] + 0.07; + _patient setvariable [QEGVAR(breathing,respiratoryRateMultiplier), _rr]; + }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 300] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf index 01c0baac3..66a3683f1 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_CWMPOverdoseLocal.sqf @@ -31,12 +31,9 @@ if GVAR(kidneyAction) then [_idPFH] call CBA_fnc_removePerFrameHandler;}; private _ph = _patient getVariable [QGVAR(externalPh), _ph, true] + 100; _patient setVariable [QGVAR(externalPh), _ph, true]; - private _coagulationFactor = (_patient getVariable [QGVAR(coagulationFactor), 30]); - private _factorstoremove = 1; - _patient setVariable [QGVAR(coagulationFactor), (_coagulationFactor - _factorstoremove), true]; }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; }, _patient, 15] call CBA_fnc_waitAndExecute; -} +}; [{ params ["_patient"]; private _bpTarget = 0; @@ -49,5 +46,8 @@ if GVAR(kidneyAction) then if (_bpTarget > 12) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler;}; [_patient, -2, -2, "CWMPOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _coagulationFactor = (_patient getVariable [QGVAR(coagulationFactor), 30]); + private _factorstoremove = 1; + _patient setVariable [QGVAR(coagulationFactor), (_coagulationFactor - _factorstoremove), true]; }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; }, _patient, 15] call CBA_fnc_waitAndExecute; \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf index b2ff1731c..f6a4928ed 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_EtomidateOverdoseLocal.sqf @@ -15,32 +15,172 @@ * Public: No */ params ["_patient"]; -private _random = random 3; -if (_random <= 1) then { - private _hrAdjust = -40 + floor random ((-20 - -40) + 1); - [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); -}; -private _randomNumber = floor (random 1) + 1; +private _randomNumber = floor (random 3) + 1; switch (_randomNumber) do { case 1: { - private _bpAdjust = -20 + floor random ((-5 - -20) + 1); - [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _bpAdjust = -20 + floor random ((-5 - -20) + 1); + [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; private _hrAdjust = -40 + floor random ((-20 - -40) + 1); - [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + [{ + params ["_patient"]; + private _etomidateOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _etomidateOverdoseTarget = _etomidateOverdoseTarget + 1; + if (_etomidateOverdoseTarget > 12) exitWith { + if (random(100) < 25) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "lidocaineOD"}) == -1) then { + _ht pushBack "lidocaineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + }, 30, [_patient]] call CBA_fnc_addPerFrameHandler; + }, _patient, 30] call CBA_fnc_waitAndExecute; }; case 2: { - private _bpAdjust = -20 + floor random ((-5 - -20) + 1); - [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _bpAdjust = -20 + floor random ((-5 - -20) + 1); + [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = 20 + floor random ((40 - 20) + 1); + [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + [{ + params ["_patient"]; + private _etomidateOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _etomidateOverdoseTarget = _etomidateOverdoseTarget + 1; + if (_etomidateOverdoseTarget > 12) exitWith { + if (random(100) < 25) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "lidocaineOD"}) == -1) then { + _ht pushBack "lidocaineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + }, 30, [_patient]] call CBA_fnc_addPerFrameHandler; + }, _patient, 30] call CBA_fnc_waitAndExecute; + }; + case 3: { + private _bpAdjust = -20 + floor random ((-5 - -20) + 1); + [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; private _hrAdjust = 20 + floor random ((40 - 20) + 1); - [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + [{ + params ["_patient"]; + private _etomidateOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _etomidateOverdoseTarget = _etomidateOverdoseTarget + 1; + if (_etomidateOverdoseTarget > 12) exitWith { + if (random(100) < 15) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "lidocaineOD"}) == -1) then { + _ht pushBack "lidocaineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + private _rr = _patient getvariable [QEGVAR(breathing,respiratoryRateMultiplier), 1] - 0.06; + _patient setvariable [QEGVAR(breathing,respiratoryRateMultiplier), _rr]; + }, 30, [_patient]] call CBA_fnc_addPerFrameHandler; + }, _patient, 30] call CBA_fnc_waitAndExecute; + }; + case 3: { + private _bpAdjust = -20 + floor random ((-5 - -20) + 1); + [_patient, _bpAdjust, _bpAdjust, "EtomidateOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = -40 + floor random ((-20 - -40) + 1); + [_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + [{ + params ["_patient"]; + private _etomidateOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _etomidateOverdoseTarget = _etomidateOverdoseTarget + 1; + if (_etomidateOverdoseTarget > 12) exitWith { + if (random(100) < 15) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "lidocaineOD"}) == -1) then { + _ht pushBack "lidocaineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + private _rr = _patient getvariable [QEGVAR(breathing,respiratoryRateMultiplier), 1] - 0.06; + _patient setvariable [QEGVAR(breathing,respiratoryRateMultiplier), _rr]; + }, 30, [_patient]] call CBA_fnc_addPerFrameHandler; + }, _patient, 30] call CBA_fnc_waitAndExecute; }; }; if QEGVAR(feedback,effectOverdose) then - {PP_wetD = ppEffectCreate ["WetDistortion",300]; - PP_wetD ppEffectEnable true; - PP_wetD ppEffectAdjust [9.7,0.2,-0.1,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]; - PP_wetD ppEffectCommit 0; - // Date YYYY-MM-DD-HH-MM: [2035,6,24,8,0]. Overcast: 0.3. Fog: 0.0823474. Fog params: [0.0800016,0.013,0] - // GF PostProcess Editor parameters: Copy the following line to clipboard and click Import in the editor. - //[[false,100,[0.2,0.2,0.26,0.3]],[false,200,[0.05,0.05,true]],[true,300,[9.7,0.2,-0.1,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]],[false,1500,[1,1,0,[2,2,2,-0.1],[5,5,5,1],[4,0.33,0.33,0],[0.66,0,0.96,0,0,0,4]]],[false,500,[2.06]],[false,2000,[0.44,1,1,0.5,0.5,true]],[false,2500,[1,1,1]]] - [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}: \ No newline at end of file + { + PP_wetD = ppEffectCreate ["WetDistortion",300]; + PP_wetD ppEffectEnable true; + PP_wetD ppEffectAdjust [9.7,0.2,-0.1,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]; + PP_wetD ppEffectCommit 0; + // Date YYYY-MM-DD-HH-MM: [2035,6,24,8,0]. Overcast: 0.3. Fog: 0.0823474. Fog params: [0.0800016,0.013,0] + // GF PostProcess Editor parameters: Copy the following line to clipboard and click Import in the editor. + //[[false,100,[0.2,0.2,0.26,0.3]],[false,200,[0.05,0.05,true]],[true,300,[9.7,0.2,-0.1,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]],[false,1500,[1,1,0,[2,2,2,-0.1],[5,5,5,1],[4,0.33,0.33,0],[0.66,0,0.96,0,0,0,4]]],[false,500,[2.06]],[false,2000,[0.44,1,1,0.5,0.5,true]],[false,2500,[1,1,1]]] + [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}; \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf index 9bf52f81e..882dcf043 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_FentanylOverdoseLocal.sqf @@ -44,9 +44,9 @@ private _hrAdjust = -50 + floor random ((-30 - -50) + 1); }, [_patient], 10] call CBA_fnc_waitAndExecute; [_idPFH] call CBA_fnc_removePerFrameHandler; }; - private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; - if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; - private _depression = _unit getVariable [QEGVAR(pharma,opioidFactor)] + 0.1; - _patient setVariable [QEGVAR(pharma,opioidFactor), _depression]; + private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; + if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; }, _patient, 10] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf index c40be45a6..21c041efd 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf @@ -18,3 +18,25 @@ params ["_patient"]; _patient setVariable [QEGVAR(surgery,sedated), false, true]; +private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; +if (_medications findIf {_x isEqualTo "Lorazepam"} != ) exitWith {[{ + params ["_patient"]; + private _FlumanzenilTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _FlumanzenilTarget = _FlumanzenilTarget + 1; + if (_FlumanzenilTarget > 12) exitWith { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] - 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + }, 60, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 60] call CBA_fnc_waitAndExecute;}; + diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf index 1784c47eb..269819a9b 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf @@ -14,4 +14,17 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +private _hrAdjust = 20 + floor random ((40 - 20) + 1); +[_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +if QEGVAR(feedback,effectOverdose) then + { + PP_wetD = ppEffectCreate ["WetDistortion",300]; + PP_wetD ppEffectEnable true; + PP_wetD ppEffectAdjust [10,0.2,0.2,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]; + PP_wetD ppEffectCommit 0; + [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}; + // Date YYYY-MM-DD-HH-MM: [2035,6,24,8,0]. Overcast: 0.3. Fog: 0.0806154. Fog params: [0.0800015,0.013,0] + // GF PostProcess Editor parameters: Copy the following line to clipboard and click Import in the editor. + //[[false,100,[0.2,0.2,0.26,0.3]],[false,200,[0.05,0.05,true]],[true,300,[10,0.2,0.2,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]],[false,1500,[1,1,0,[2,2,2,-0.1],[5,5,5,1],[4,0.33,0.33,0],[0.66,0,0.96,0,0,0,4]]],[false,500,[2.06]],[false,2000,[0.44,1,1,0.5,0.5,true]],[false,2500,[1,1,1]]] + \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_KetamineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_KetamineOverdoseLocal.sqf index 220aff5c8..be8d2fc20 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_KetamineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_KetamineOverdoseLocal.sqf @@ -16,4 +16,37 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +[{ + params ["_patient"]; + private _KetamineOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _KetamineOverdoseTarget = _KetamineOverdoseTarget + 1; + if (_KetamineOverdoseTarget > 12) exitWith { + if (random(100) < 25) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "KetamineOD"}) == -1) then { + _ht pushBack "KetamineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _rr = _patient getvariable [QEGVAR(breathing,respiratoryRateMultiplier), 1] - 0.04; + _patient setvariable [QEGVAR(breathing,respiratoryRateMultiplier), _rr]; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.04; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 15] call CBA_fnc_waitAndExecute; \ No newline at end of file diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf index a10b8e371..6ed5cd4ea 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf @@ -15,3 +15,41 @@ * Public: No */ params ["_patient"]; +private _bpAdjust = -40 + floor random ((-25 - -40) + 1); +[_patient, _bpAdjust, _bpAdjust, "lidocaineOverdose"] call kat_circulation_fnc_updateBloodPressureChange; +private _hrAdjust = -50 + floor random ((-30 - -50) + 1); +[_patient, "BRADYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +[{ + params ["_patient"]; + private _lidocaineOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _lidocaineOverdoseTarget = _lidocaineOverdoseTarget + 1; + if (_lidocaineOverdoseTarget > 12) exitWith { + if (random(100) < 25) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "lidocaineOD"}) == -1) then { + _ht pushBack "lidocaineOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; + if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + }, 30, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 30] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf index a10b8e371..72fd314da 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf @@ -15,3 +15,48 @@ * Public: No */ params ["_patient"]; +private _bpAdjust = -30 + floor random ((-15 - -30) + 1); +[_patient, _bpAdjust, _bpAdjust, "LorazepamOverdose"] call kat_circulation_fnc_updateBloodPressureChange; +private _hrAdjust = -50 + floor random ((-30 - -50) + 1); +[_patient, "LorazepamOverdose", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +[{ + params ["_patient"]; + private _LorazepamOverdoseTarget = 0; + [{ + params ["_patient", "_idPFH"]; + if (!(alive _patient)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + _LorazepamOverdoseTarget = _LorazepamOverdoseTarget + 1; + if (_LorazepamOverdoseTarget > 12) exitWith { + if (random(100) < 25) then { + [{ + params ["_args", "_idPFH"]; + _args params ["_patient"]; + private _ht = _patient getVariable [QEGVAR(circulation,ht), []]; + if ((_ht findIf {_x isEqualTo "LorazepamOD"}) == -1) then { + _ht pushBack "LorazepamOD"; + + if (_patient getVariable [QEGVAR(circulation,cardiacArrestType), 0] == 0) then { + [QACEGVAR(medical,FatalVitals), _patient] call CBA_fnc_localEvent; + }; + + _patient setVariable [QEGVAR(circulation,ht), _ht, true]; + }; + }, [_patient], 15] call CBA_fnc_waitAndExecute; + }; + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; + }, 15, [_patient]] call CBA_fnc_addPerFrameHandler; +}, _patient, 15] call CBA_fnc_waitAndExecute; + + +if QEGVAR(feedback,effectOverdose) then + { + PP_wetD = ppEffectCreate ["WetDistortion",300]; + PP_wetD ppEffectEnable true; + PP_wetD ppEffectAdjust [10,0.2,0.2,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]; + PP_wetD ppEffectCommit 0; + [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf index 1fa0a846b..7cd7be3c3 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_MorphineOverdoseLocal.sqf @@ -15,7 +15,6 @@ * Public: No */ params ["_patient"]; -params ["_patient"]; private _bpAdjust = -30 + floor random ((-15 - -30) + 1); [_patient, _bpAdjust, _bpAdjust, "morphineOverdose"] call kat_circulation_fnc_updateBloodPressureChange; private _hrAdjust = -50 + floor random ((-30 - -50) + 1); @@ -44,9 +43,9 @@ private _hrAdjust = -50 + floor random ((-30 - -50) + 1); }, [_patient], 10] call CBA_fnc_waitAndExecute; [_idPFH] call CBA_fnc_removePerFrameHandler; }; - private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; - if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; - private _depression = _unit getVariable [QEGVAR(pharma,opioidFactor)] + 0.08; - _patient setVariable [QEGVAR(pharma,opioidFactor), _depression]; + private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; + if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; }, _patient, 10] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf index bdd6c14b6..917360f21 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NalbuphineOverdoseLocal.sqf @@ -44,9 +44,9 @@ private _hrAdjust = -50 + floor random ((-30 - -50) + 1); }, [_patient], 10] call CBA_fnc_waitAndExecute; [_idPFH] call CBA_fnc_removePerFrameHandler; }; - private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; - if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; - private _depression = _unit getVariable [QEGVAR(pharma,opioidFactor)] + 0.05; - _patient setVariable [QEGVAR(pharma,opioidFactor), _depression]; + private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; + if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; + private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.05; + _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; }, 10, [_patient]] call CBA_fnc_addPerFrameHandler; }, _patient, 10] call CBA_fnc_waitAndExecute; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf index 8e5983b55..8a8dc27af 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NaloxoneOverdoseLocal.sqf @@ -14,4 +14,4 @@ * * Public: No */ - +params ["_patient"]; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf index 58476f973..b33602b25 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NitroglycerinOverdoseLocal.sqf @@ -18,3 +18,7 @@ params ["_patient"]; private _hrValue = [-20, -25, -30, -35, -40, -45, 20, 25, 30, 35, 40, 45]; private _hrAdjust = selectRandom _hrValue; [_patient, NitroglycerinOverdose, 30, 1200, _hrAdjust, "", 75, "", "", ""] call EFUNC(vitals,addMedicationAdjustment); +if (random 3 < 1) then { + private _randomValue = [3, 4]; + private _randomRhythm = selectRandom _randomValue; + _patient setVariable [QEGVAR(circulation,cardiacArrestType), _randomRhythm];}; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf index 8631f2d4f..57a63abce 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineLocal.sqf @@ -1,7 +1,7 @@ #include "..\script_component.hpp" /* - * Author: Mazinski.H - * Locates and Removes Bradycardia Effect. + * Author: Cplhardcore + * * * Arguments: * 0: Patient diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf index 9686acd92..c1a8d9136 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_NorepinephrineOverdoseLocal.sqf @@ -1,7 +1,7 @@ #include "..\script_component.hpp" /* - * Author: Mazinski.H - * Locates and Removes Bradycardia Effect. + * Author: Cplhardcore + * Applies Norepinephrine Overdose Effects * * Arguments: * 0: Patient diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf index c941a693e..e69bc9f0c 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf @@ -15,4 +15,38 @@ * * Public: No */ -params ["_patient"]; \ No newline at end of file +params ["_patient"]; +private _randomNumber = floor (random 3) + 1; +switch (_randomNumber) do { + case 1: { + private _bpAdjust = 20 + floor random ((35 - 20) + 1); + [_patient, _bpAdjust, _bpAdjust, "PervitinOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = 30 + floor random ((50 - 30) + 1); + [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + }; + case 2: { + private _bpAdjust = 20 + floor random ((35 - 20) + 1); + [_patient, _bpAdjust, _bpAdjust, "PervitinOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = 30 + floor random ((50 - 30) + 1); + [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + private _randomValue = [3, 4]; + private _randomRhythm = selectRandom _randomValue; + _patient setVariable [QEGVAR(circulation,cardiacArrestType), _randomRhythm]; + }; + case 3: { + private _bpAdjust = 20 + floor random ((35 - 20) + 1); + [_patient, _bpAdjust, _bpAdjust, "PervitinOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = 30 + floor random ((50 - 30) + 1); + [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + private _randomValue = [3, 4]; + private _randomRhythm = selectRandom _randomValue; + _patient setVariable [QEGVAR(circulation,cardiacArrestType), _randomRhythm]; + }; + case 4: { + private _bpAdjust = 20 + floor random ((35 - 20) + 1); + [_patient, _bpAdjust, _bpAdjust, "PervitinOverdose"] call kat_circulation_fnc_updateBloodPressureChange; + private _hrAdjust = 30 + floor random ((50 - 30) + 1); + [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); + _patient setVariable [QEGVAR(circulation,cardiacArrestType), 0]; + }; +}; \ No newline at end of file diff --git a/addons/vitals/XEH_PREP.hpp b/addons/vitals/XEH_PREP.hpp index 9295e7f53..2618e1039 100644 --- a/addons/vitals/XEH_PREP.hpp +++ b/addons/vitals/XEH_PREP.hpp @@ -8,5 +8,6 @@ PREP(handleRespawn); PREP(handleOxygenFunction); PREP(hasStableVitals); PREP(init); +PREP(updateOpioidDepression); PREP(updateOpioidEffect); PREP(updateOpioidRelief); \ No newline at end of file diff --git a/addons/vitals/functions/fnc_addMedicationAdjustment.sqf b/addons/vitals/functions/fnc_addMedicationAdjustment.sqf index c293d1345..f49f7b0f7 100644 --- a/addons/vitals/functions/fnc_addMedicationAdjustment.sqf +++ b/addons/vitals/functions/fnc_addMedicationAdjustment.sqf @@ -20,7 +20,7 @@ * * Public: No */ -params ["_unit", "_medication", "_timeToMaxEffect", "_maxTimeInSystem", "_hrAdjust", "_painAdjust", "_flowAdjust", "_alphaFactor", "_opioidRelief", "_opioidEffect"]; +params ["_unit", "_medication", "_timeToMaxEffect", "_maxTimeInSystem", "_hrAdjust", "_painAdjust", "_flowAdjust", "_alphaFactor", "_opioidRelief", "_opioidEffect", "_opioidDepression"]; TRACE_7("addMedicationAdjustment",_unit,_medication,_timeToMaxEffect,_maxTimeInSystem,_hrAdjust,_painAdjust,_flowAdjust); if (_maxTimeInSystem <= 0) exitWith { WARNING_1("bad value for _maxTimeInSystem - %1",_this); }; @@ -29,6 +29,6 @@ _timeToMaxEffect = _timeToMaxEffect max 1; private _adjustments = _unit getVariable [VAR_MEDICATIONS, []]; -_adjustments pushBack [_medication, CBA_missionTime, _timeToMaxEffect, _maxTimeInSystem, _hrAdjust, _painAdjust, _flowAdjust, _alphaFactor, _opioidRelief, _opioidEffect]; +_adjustments pushBack [_medication, CBA_missionTime, _timeToMaxEffect, _maxTimeInSystem, _hrAdjust, _painAdjust, _flowAdjust, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression]; _unit setVariable [VAR_MEDICATIONS, _adjustments, true]; diff --git a/addons/vitals/functions/fnc_handleOxygenFunction.sqf b/addons/vitals/functions/fnc_handleOxygenFunction.sqf index dab0fab68..5ebb34cdf 100644 --- a/addons/vitals/functions/fnc_handleOxygenFunction.sqf +++ b/addons/vitals/functions/fnc_handleOxygenFunction.sqf @@ -33,6 +33,7 @@ params ["_unit", "_actualHeartRate", "_anerobicPressure", "_bloodGas", "_tempera #define DEFAULT_FIO2 0.21 private _respiratoryRate = 0; +private _respiratoryRateMult = _unit getvariable [QEGVAR(breathing,respiratoryRateMultiplier), 1]; private _demandVentilation = 0; private _actualVentilation = 0; private _previousCyclePaco2 = (_bloodGas select 0); @@ -49,7 +50,7 @@ if (IN_CRDC_ARRST(_unit)) then { private _tidalVolume = GET_KAT_SURFACE_AREA(_unit); // Respiratory Rate is supressed by Opioids - _respiratoryRate = [((_demandVentilation / _tidalVolume) - (_opioidDepression * 5)) min MAXIMUM_RR, 20] select (_unit getVariable [QEGVAR(breathing,BVMInUse), false]); + _respiratoryRate = [(((_demandVentilation / _tidalVolume) - (_opioidDepression * 5)) * _respiratoryRateMult) min MAXIMUM_RR, 20] select (_unit getVariable [QEGVAR(breathing,BVMInUse), false]); // If respiratory rate is low due to PaCO2, it starts increasing faster to compensate if (_previousCyclePaco2 > 50) then { _respiratoryRate = (_respiratoryRate + ((_previousCyclePaco2 - 50) * 0.2)) min MAXIMUM_RR}; diff --git a/addons/vitals/functions/fnc_handleUnitVitals.sqf b/addons/vitals/functions/fnc_handleUnitVitals.sqf index fe3295591..2f8f2f0ec 100644 --- a/addons/vitals/functions/fnc_handleUnitVitals.sqf +++ b/addons/vitals/functions/fnc_handleUnitVitals.sqf @@ -91,6 +91,7 @@ private _peripheralResistanceAdjustment = 0; private _alphaFactorAdjustment = 0; private _opioidAdjustment = 0; private _opioidEffectAdjustment = 0; +private _opioidDepressionAdjustment = 0; private _adjustments = _unit getVariable [VAR_MEDICATIONS,[]]; if !(_adjustments isEqualTo []) then { @@ -109,6 +110,7 @@ if !(_adjustments isEqualTo []) then { if (_alphaFactor != 0) then { _alphaFactorAdjustment = _alphaFactorAdjustment + _alphaFactor * _effectRatio; }; if (_opioidRelief != 0) then {_opioidAdjustment = _opioidAdjustment + _opioidRelief * _effectRatio; }; if (_opioidEffect != 0) then {_opioidEffectAdjustment = _opioidEffectAdjustment + _opioidEffect * _effectRatio; }; + if (_opioidDepression != 0) then {_opioidDepressionAdjustment = _opioidAdjustment + _opioidDepression * _effectRatio; }; }; } forEach _adjustments; @@ -122,6 +124,7 @@ if !(_adjustments isEqualTo []) then { [_unit, _peripheralResistanceAdjustment, _deltaT, _syncValues] call ACEFUNC(medical_vitals,updatePeripheralResistance); [_unit, _opioidAdjustment, _deltaT, _syncValues] call FUNC(updateOpioidRelief); [_unit, _opioidEffectAdjustment, _deltaT, _syncValues] call FUNC(updateOpioidEffect); +[_unit, _opioid_opioidDepressionAdjustment, _deltaT, _syncValues] call FUNC(updateOpioidDepression); private _heartRate = [_unit, _hrTargetAdjustment, 0, _bloodVolume, _deltaT, _syncValues] call FUNC(handleCardiacFunction); @@ -129,7 +132,7 @@ private _spo2 = 97; if (EGVAR(breathing,enable)) then { // Additional variables for Respiration functions private _bloodGas = GET_BLOOD_GAS(_unit); - private _opioidDepression = GET_OPIOID_FACTOR(_unit); + private _opioidDepression = GET_OPIOID_DEPRESSION(_unit); private _anerobicPressure = (DEFAULT_ANEROBIC_EXCHANGE * (6 / (_bloodVolume max 6))) min 1.2; _spo2 = [_unit, _heartRate, _anerobicPressure, _bloodGas, _temperature, _baroPressure, _opioidDepression, _deltaT, _syncValues] call FUNC(handleOxygenFunction); diff --git a/addons/vitals/functions/fnc_updateOpioidDepression.sqf b/addons/vitals/functions/fnc_updateOpioidDepression.sqf new file mode 100644 index 000000000..b6b1a5230 --- /dev/null +++ b/addons/vitals/functions/fnc_updateOpioidDepression.sqf @@ -0,0 +1,23 @@ +#include "..\script_component.hpp" +/* + * Author: Cplhardcore + * Update the opioid Depression effect + * + * Arguments: + * 0: The Unit + * 1: Opioid Depression Adjustments + * 2: Time since last update + * 3: Sync value? + * + * Return Value: + * None + * + * Example: + * [player, 0, 1, false] call kat_vitals_fnc_updateOpioidDepression + * + * Public: No + */ + +params ["_unit", "_opioidDepressionAdjustment", "_deltaT", "_syncValue"]; + +_unit setVariable [QEGVAR(pharma,opioidDepression), _opioidDepressionAdjustment, _syncValue]; From e6a9877098d47c98e3ce2c83e315283f372cfa5a Mon Sep 17 00:00:00 2001 From: Cplhardcore <135324281+Cplhardcore@users.noreply.github.com> Date: Wed, 13 Nov 2024 07:58:28 -0800 Subject: [PATCH 4/7] fixes --- .../fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf | 2 +- .../fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf | 2 +- .../fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf index 269819a9b..b8bf0035b 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilOverdoseLocal.sqf @@ -23,7 +23,7 @@ if QEGVAR(feedback,effectOverdose) then PP_wetD ppEffectEnable true; PP_wetD ppEffectAdjust [10,0.2,0.2,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]; PP_wetD ppEffectCommit 0; - [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}; + [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}; // Date YYYY-MM-DD-HH-MM: [2035,6,24,8,0]. Overcast: 0.3. Fog: 0.0806154. Fog params: [0.0800015,0.013,0] // GF PostProcess Editor parameters: Copy the following line to clipboard and click Import in the editor. //[[false,100,[0.2,0.2,0.26,0.3]],[false,200,[0.05,0.05,true]],[true,300,[10,0.2,0.2,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]],[false,1500,[1,1,0,[2,2,2,-0.1],[5,5,5,1],[4,0.33,0.33,0],[0.66,0,0.96,0,0,0,4]]],[false,500,[2.06]],[false,2000,[0.44,1,1,0.5,0.5,true]],[false,2500,[1,1,1]]] diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf index 72fd314da..06e08f377 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_LorazepamOverdoseLocal.sqf @@ -59,4 +59,4 @@ if QEGVAR(feedback,effectOverdose) then PP_wetD ppEffectEnable true; PP_wetD ppEffectAdjust [10,0.2,0.2,1.84,1.46,0.33,0.86,0.05,0.05,0.05,0.05,0.1,0.1,0.2,0.2]; PP_wetD ppEffectCommit 0; - [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}; + [{PP_wetD ppEffectEnable false; PP_wetD ppEffectCommit 0;}, [], 600] call CBA_fnc_waitAndExecute;}; diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf index e69bc9f0c..6d8fdef8e 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_PervitinOverdoseLocal.sqf @@ -29,20 +29,20 @@ switch (_randomNumber) do { [_patient, _bpAdjust, _bpAdjust, "PervitinOverdose"] call kat_circulation_fnc_updateBloodPressureChange; private _hrAdjust = 30 + floor random ((50 - 30) + 1); [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); - private _randomValue = [3, 4]; + private _randomValue = [3, 4]; private _randomRhythm = selectRandom _randomValue; _patient setVariable [QEGVAR(circulation,cardiacArrestType), _randomRhythm]; }; - case 3: { + case 3: { private _bpAdjust = 20 + floor random ((35 - 20) + 1); [_patient, _bpAdjust, _bpAdjust, "PervitinOverdose"] call kat_circulation_fnc_updateBloodPressureChange; private _hrAdjust = 30 + floor random ((50 - 30) + 1); [_patient, "TACHYCARDIA", 120, 1200, _hrAdjust, "", "", "", "", ""] call EFUNC(vitals,addMedicationAdjustment); - private _randomValue = [3, 4]; - private _randomRhythm = selectRandom _randomValue; + private _randomValue = [3, 4]; + private _randomRhythm = selectRandom _randomValue; _patient setVariable [QEGVAR(circulation,cardiacArrestType), _randomRhythm]; }; - case 4: { + case 4: { private _bpAdjust = 20 + floor random ((35 - 20) + 1); [_patient, _bpAdjust, _bpAdjust, "PervitinOverdose"] call kat_circulation_fnc_updateBloodPressureChange; private _hrAdjust = 30 + floor random ((50 - 30) + 1); From 25c660e5b8edb0314aa9a1a205349b24a4adece6 Mon Sep 17 00:00:00 2001 From: Cplhardcore <135324281+Cplhardcore@users.noreply.github.com> Date: Wed, 13 Nov 2024 08:13:17 -0800 Subject: [PATCH 5/7] More fixes --- .../pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf | 2 +- .../functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf index 21c041efd..782d3fdd4 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_FlumazenilLocal.sqf @@ -19,7 +19,7 @@ params ["_patient"]; _patient setVariable [QEGVAR(surgery,sedated), false, true]; private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; -if (_medications findIf {_x isEqualTo "Lorazepam"} != ) exitWith {[{ +if (_medications findIf {_x isEqualTo "Lorazepam"} != -1) exitWith {[{ params ["_patient"]; private _FlumanzenilTarget = 0; [{ diff --git a/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf b/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf index 6ed5cd4ea..5e03e4e75 100644 --- a/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf +++ b/addons/pharma/functions/fnc_treatmentAdvanced_LidocaineOverdoseLocal.sqf @@ -48,7 +48,6 @@ private _hrAdjust = -50 + floor random ((-30 - -50) + 1); [_idPFH] call CBA_fnc_removePerFrameHandler; }; private _medications = _patient getVariable [QACEGVAR(medical,medications), []]; - if (_medications findIf {_x isEqualTo "naloxone"} != -1) exitWith {}; private _depression = _unit getVariable [QEGVAR(pharma,opioidDepressionFactor)] + 0.08; _patient setVariable [QEGVAR(pharma,opioidDepressionFactor), _depression]; }, 30, [_patient]] call CBA_fnc_addPerFrameHandler; From 780fd5ede27832ff01743dd24cd2d6bd7f6094d2 Mon Sep 17 00:00:00 2001 From: Cplhardcore <135324281+Cplhardcore@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:28:42 -0800 Subject: [PATCH 6/7] Fixes --- addons/pharma/ACE_Medical_Treatment.hpp | 109 +++++++++++++++--- .../pharma/functions/fnc_medicationLocal.sqf | 15 ++- addons/pharma/functions/fnc_overDose.sqf | 2 +- .../functions/fnc_addMedicationAdjustment.sqf | 9 +- 4 files changed, 107 insertions(+), 28 deletions(-) diff --git a/addons/pharma/ACE_Medical_Treatment.hpp b/addons/pharma/ACE_Medical_Treatment.hpp index 4bcab3826..3307947de 100644 --- a/addons/pharma/ACE_Medical_Treatment.hpp +++ b/addons/pharma/ACE_Medical_Treatment.hpp @@ -11,6 +11,8 @@ class ACE_ADDON(Medical_Treatment) { timeInSystem = 120; // How long until the maximum effect is reached timeTillMaxEffect = 30; + + dose = 1; // How many of this type of medication can be in the system before the patient overdoses? maxDose = 4; // The number of doses over maxDose where there is a chance to overdose. @@ -36,6 +38,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 40}; timeInSystem = 120; timeTillMaxEffect = 10; + dose = 1; maxDose = 6; maxDoseDeviation = 4; incompatibleMedication[] = {}; @@ -49,6 +52,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {15, 40}; timeInSystem = 120; timeTillMaxEffect = 10; + dose = 1; maxDose = 4; maxDoseDeviation = 2; incompatibleMedication[] = {}; @@ -62,6 +66,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -25}; timeInSystem = 300; timeTillMaxEffect = 60; + dose = 1; maxDose = 2; maxDoseDeviation = 2; incompatibleMedication[] = {}; @@ -74,6 +79,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -35}; timeInSystem = 900; timeTillMaxEffect = 30; + dose = 1; maxDose = 2; maxDoseDeviation = 1; incompatibleMedication[] = {}; @@ -87,6 +93,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-5, -20}; timeInSystem = 180; timeTillMaxEffect = 30; + dose = 1; maxDose = 2; maxDoseDeviation = 2; incompatibleMedication[] = {}; @@ -99,6 +106,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-15, -35}; timeInSystem = 360; timeTillMaxEffect = 15; + dose = 1; maxDose = 2; maxDoseDeviation = 2; incompatibleMedication[] = {}; @@ -111,6 +119,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {15, 20}; timeInSystem = 30; timeTillMaxEffect = 2; + dose = 1; maxDose = 10; incompatibleMedication[] = {}; viscosityChange = 0; @@ -123,6 +132,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 240; timeTillMaxEffect = 30; + dose = 1; maxDose = 3; incompatibleMedication[] = {}; viscosityChange = 0; @@ -135,6 +145,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {5, 10}; timeInSystem = 360; timeTillMaxEffect = 15; + dose = 1; maxDose = 12; incompatibleMedication[] = {}; viscosityChange = 25; @@ -148,6 +159,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -15}; timeInSystem = 360; timeTillMaxEffect = 15; + dose = 1; maxDose = 6; maxDoseDeviation = 4; incompatibleMedication[] = {}; @@ -162,6 +174,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -15}; timeInSystem = 360; timeTillMaxEffect = 15; + dose = 1; maxDose = 6; maxDoseDeviation = 4; incompatibleMedication[] = {}; @@ -175,6 +188,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 15}; timeInSystem = 360; timeTillMaxEffect = 15; + dose = 1; maxDose = 6; maxDoseDeviation = 4; incompatibleMedication[] = {}; @@ -189,6 +203,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-20, -10}; timeInSystem = 900; timeTillMaxEffect = 20; + dose = 1; maxDose = 1; maxDoseDeviation = 1; incompatibleMedication[] = {}; @@ -204,6 +219,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 15}; timeInSystem = 900; timeTillMaxEffect = 15; + dose = 1; maxDose = 2; maxDoseDeviation = 2; incompatibleMedication[] = {}; @@ -218,6 +234,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-15, -5}; timeInSystem = 900; timeTillMaxEffect = 30; + dose = 1; maxDose = 2; maxDoseDeviation = 2; incompatibleMedication[] = {}; @@ -232,6 +249,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {5, 10}; timeInSystem = 360; timeTillMaxEffect = 45; + dose = 1; maxDose = 6; maxDoseDeviation = 4; incompatibleMedication[] = {}; @@ -246,6 +264,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {5, 15}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 1; maxDose = 4; incompatibleMedication[]= {}; viscosityChange = 0; @@ -258,6 +277,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0, 0}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 1; maxDose = 4; incompatibleMedication[]= {}; viscosityChange = 0; @@ -270,6 +290,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0, 0}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 1; maxDose = 2; maxDoseDeviation = 4; incompatibleMedication[]= {}; @@ -283,6 +304,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 600; timeTillMaxEffect = 60; + dose = 1; maxDose = 10; incompatibleMedication[] = {}; viscosityChange = 0; @@ -295,6 +317,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-20, -30}; timeInSystem = 45; timeTillMaxEffect = 5; + dose = 1; maxDose = 10; incompatibleMedication[] = {}; viscosityChange = 0; @@ -307,6 +330,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 60; timeTillMaxEffect = 5; + dose = 1; maxDose = 3; incompatibleMedication[] = {}; viscosityChange = 0; @@ -319,6 +343,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 60; timeTillMaxEffect = 5; + dose = 1; maxDose = 3; incompatibleMedication[] = {}; viscosityChange = -15; @@ -331,6 +356,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {15, 25}; timeInSystem = 600; timeTillMaxEffect = 5; + dose = 1; maxDose = 2; maxDoseDeviation = 1; incompatibleMedication[] = {}; @@ -345,6 +371,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {5, 15}; timeInSystem = 1800; timeTillMaxEffect = 5; + dose = 1; maxDose = 4; maxDoseDeviation = 4; incompatibleMedication[] = {}; @@ -358,6 +385,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 300; timeTillMaxEffect = 5; + dose = 1; maxDose = 0; incompatibleMedication[] = {}; viscosityChange = 0; @@ -370,6 +398,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-5, -15}; timeInSystem = 300; timeTillMaxEffect = 20; + dose = 1; maxDose = 4; incompatibleMedication[] = {}; viscosityChange = 5; @@ -383,6 +412,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 120; timeTillMaxEffect = 5; + dose = 1; viscosityChange = 0; }; class syringe_txa_5ml_3 { @@ -392,6 +422,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 240; timeTillMaxEffect = 5; + dose = 3; viscosityChange = 0; }; class syringe_txa_10ml_1 { @@ -401,6 +432,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 120; timeTillMaxEffect = 20; + dose = 1; viscosityChange = 0; }; class syringe_txa_10ml_3 { @@ -410,6 +442,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 180; timeTillMaxEffect = 20; + dose = 3; viscosityChange = 0; }; class syringe_eaca_5ml_1 { @@ -419,6 +452,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 100; timeTillMaxEffect = 35; + dose = 1; viscosityChange = 0; }; class syringe_eaca_5ml_3 { @@ -428,6 +462,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 300; timeTillMaxEffect = 35; + dose = 3; viscosityChange = 0; }; class syringe_epinephrineIV_5ml_1 { @@ -437,6 +472,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {15, 40}; timeInSystem = 120; timeTillMaxEffect = 10; + dose = 1; alphaFactor = -0.2; }; class syringe_epinephrineIV_5ml_3 { @@ -446,6 +482,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {20, 40}; timeInSystem = 180; timeTillMaxEffect = 10; + dose = 3; alphaFactor = -0.4; }; class syringe_norepinephrine_5ml_1 { @@ -456,6 +493,7 @@ class ACE_ADDON(Medical_Treatment) { timeInSystem = 360; timeTillMaxEffect = 15; viscosityChange = 15; + dose = 1; alphaFactor = -0.2; }; class syringe_norepinephrine_5ml_3 { @@ -465,6 +503,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 15}; timeInSystem = 360; timeTillMaxEffect = 15; + dose = 3; viscosityChange = 25; alphaFactor = -0.4; }; @@ -476,6 +515,7 @@ class ACE_ADDON(Medical_Treatment) { timeInSystem = 180; timeTillMaxEffect = 15; viscosityChange = 35; + dose = 1; alphaFactor = -0.4; }; class syringe_phenylephrine_5ml_3 { @@ -486,6 +526,7 @@ class ACE_ADDON(Medical_Treatment) { timeInSystem = 300; timeTillMaxEffect = 15; viscosityChange = 50; + dose = 3; alphaFactor = -0.7; }; class syringe_nitroglycerin_5ml_1 { @@ -496,6 +537,7 @@ class ACE_ADDON(Medical_Treatment) { timeInSystem = 360; timeTillMaxEffect = 15; viscosityChange = -25; + dose = 1; alphaFactor = 0.3; }; class syringe_nitroglycerin_5ml_3 { @@ -505,6 +547,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 20}; timeInSystem = 360; timeTillMaxEffect = 15; + dose = 3; viscosityChange = -35; alphaFactor = 0.5; }; @@ -515,6 +558,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -20}; timeInSystem = 900; timeTillMaxEffect = 20; + dose = 1; viscosityChange = -10; opioidRelief = 1.2; opioidEffect = 0.17; @@ -526,6 +570,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -20}; timeInSystem = 900; timeTillMaxEffect = 20; + dose = 3; viscosityChange = -10; opioidRelief = 1.5; opioidEffect = 0.25; @@ -537,6 +582,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 15}; timeInSystem = 600; timeTillMaxEffect = 15; + dose = 1; viscosityChange = 10; opioidEffect = 0.18; }; @@ -547,6 +593,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 15}; timeInSystem = 900; timeTillMaxEffect = 15; + dose = 3; viscosityChange = 10; onOverDose = ""; opioidEffect = 0.21; @@ -558,6 +605,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-15, -5}; timeInSystem = 600; timeTillMaxEffect = 30; + dose = 1; viscosityChange = -5; opioidRelief = 1.1; }; @@ -568,6 +616,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-5, -15}; timeInSystem = 900; timeTillMaxEffect = 30; + dose = 3; viscosityChange = -5; opioidRelief = 1.2; }; @@ -578,6 +627,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {5, 10}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 1; viscosityChange = 0; }; class syringe_atropineIV_5ml_3 { @@ -587,6 +637,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {5, 15}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 3; viscosityChange = 0; }; class syringe_amiodarone_5ml_1 { @@ -596,6 +647,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 1; viscosityChange = 0; }; class syringe_amiodarone_5ml_3 { @@ -605,6 +657,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0, 0}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 3; viscosityChange = 0; }; class syringe_lidocaine_5ml_1 { @@ -614,6 +667,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 1; }; class syringe_lidocaine_5ml_3 { painReduce = 0; @@ -622,6 +676,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 3; }; class syringe_etomidate_5ml_1 { painReduce = 0.2; @@ -630,6 +685,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -20}; timeInSystem = 60; timeTillMaxEffect = 5; + dose = 1; viscosityChange = 0; }; class syringe_etomidate_5ml_3 { @@ -639,6 +695,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-20, -30}; timeInSystem = 30; timeTillMaxEffect = 5; + dose = 3; viscosityChange = 0; }; class syringe_flumazenil_5ml_1 { @@ -648,6 +705,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 60; timeTillMaxEffect = 5; + dose = 1; viscosityChange = 0; }; class syringe_flumazenil_5ml_3 { @@ -657,6 +715,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 60; timeTillMaxEffect = 5; + dose = 3; viscosityChange = 0; }; class syringe_lorazepam_5ml_1 { @@ -666,6 +725,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 60; timeTillMaxEffect = 5; + dose = 1; viscosityChange = -10; }; class syringe_lorazepam_5ml_3 { @@ -675,6 +735,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0}; timeInSystem = 60; timeTillMaxEffect = 5; + dose = 3; viscosityChange = -15; }; class syringe_morphineIV_5ml_1 { @@ -684,6 +745,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -35}; timeInSystem = 600; timeTillMaxEffect = 30; + dose = 1; viscosityChange = -15; opioidRelief = 1.2; }; @@ -694,6 +756,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -45}; timeInSystem = 600; timeTillMaxEffect = 30; + dose = 3; viscosityChange = -20; opioidRelief = 1.3; }; @@ -704,6 +767,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-15, -35}; timeInSystem = 180; timeTillMaxEffect = 15; + dose = 1; viscosityChange = 0; }; class syringe_adenosineIV_5ml_3 { @@ -713,6 +777,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-15, -40}; timeInSystem = 180; timeTillMaxEffect = 15; + dose = 3; viscosityChange = 0; }; class syringe_alteplase_5ml_3 { @@ -722,7 +787,8 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-5, -20}; timeInSystem = 180; timeTillMaxEffect = 30; - maxDose = 1; + dose = 3; + maxDose = 3; maxDoseDeviation = 0; incompatibleMedication[] = {}; viscosityChange = 0; @@ -734,6 +800,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -20}; timeInSystem = 300; timeTillMaxEffect = 60; + dose = 1; viscosityChange = -10; onOverDose = ""; opioidRelief = 1.1; @@ -746,6 +813,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-20, -30}; timeInSystem = 600; timeTillMaxEffect = 60; + dose = 3; viscosityChange = -10; opioidRelief = 1.3; opioidEffect = 0.17; @@ -757,6 +825,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 15}; timeInSystem = 300; timeTillMaxEffect = 30; + dose = 1; viscosityChange = 10; opioidEffect = 0.12; }; @@ -767,6 +836,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {10, 25}; timeInSystem = 450; timeTillMaxEffect = 30; + dose = 3; viscosityChange = 10; opioidEffect = 0.15; }; @@ -777,6 +847,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -15}; timeInSystem = 300; timeTillMaxEffect = 45; + dose = 1; viscosityChange = -5; opioidRelief = 1.1; }; @@ -787,6 +858,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -20}; timeInSystem = 300; timeTillMaxEffect = 45; + dose = 3; viscosityChange = -5; opioidRelief = 1.2; }; @@ -797,6 +869,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {0, 0, 0}; timeInSystem = 120; timeTillMaxEffect = 30; + dose = 1; }; class syringe_morphineIV_10ml_1 { painReduce = 0.6; @@ -805,6 +878,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -35}; timeInSystem = 600; timeTillMaxEffect = 30; + dose = 1; viscosityChange = -15; opioidRelief = 1.1; }; @@ -815,6 +889,7 @@ class ACE_ADDON(Medical_Treatment) { hrIncreaseHigh[] = {-10, -45}; timeInSystem = 600; timeTillMaxEffect = 30; + dose = 3; viscosityChange = -15; opioidRelief = 1.3; }; @@ -847,17 +922,16 @@ class ACE_ADDON(Medical_Treatment) { maxDoseDeviation = 3; incompatibleMedication[] = {}; onOverDose = ""; - opioidRelief = 1.3; }; class syringe_nitroglycerin { - maxDose = 9; + maxDose = 6; maxDoseDeviation = 3; incompatibleMedication[] = {}; onOverDose = ""; }; class syringe_atropineIV { maxDose = 9; - maxDoseDeviation = 6; + maxDoseDeviation = 3; incompatibleMedication[] = {}; onOverDose = ""; }; @@ -872,40 +946,39 @@ class ACE_ADDON(Medical_Treatment) { maxDoseDeviation = 3; incompatibleMedication[] = {}; onOverDose = ""; - opioidRelief = 1.5; }; class syringe_flumazenil { - maxDose = 6; - maxDoseDeviation = 3; + maxDose = 4; + maxDoseDeviation = 2; incompatibleMedication[] = {}; onOverDose = ""; }; class syringe_lorazepam { - maxDose = 6; - maxDoseDeviation = 3; + maxDose = 4; + maxDoseDeviation = 2; incompatibleMedication[] = {}; onOverDose = ""; }; class syringe_lidocaine { - maxDose = 12; - maxDoseDeviation = 6; + maxDose = 6; + maxDoseDeviation = 3; incompatibleMedication[] = {}; onOverDose = ""; }; class syringe_fentanyl { maxDose = 3; - maxDoseDeviation = 3; + maxDoseDeviation = 1; incompatibleMedication[] = {}; onOverDose = ""; }; class syringe_ketamine { - maxDose = 6; - maxDoseDeviation = 3; + maxDose = 4; + maxDoseDeviation = 2; incompatibleMedication[] = {}; onOverDose = ""; }; class syringe_nalbuphine { - maxDose = 6; + maxDose = 4; maxDoseDeviation = 2; incompatibleMedication[] = {}; onOverDose = ""; @@ -922,5 +995,11 @@ class ACE_ADDON(Medical_Treatment) { incompatibleMedication[] = {}; onOverDose = ""; }; + class syringe_alteplase { + maxDose = 3; + maxDoseDeviation = 0; + incompatibleMedication[] = {}; + onOverDose = ""; + }; }; }; diff --git a/addons/pharma/functions/fnc_medicationLocal.sqf b/addons/pharma/functions/fnc_medicationLocal.sqf index 46dbf7ca2..81d032bc4 100644 --- a/addons/pharma/functions/fnc_medicationLocal.sqf +++ b/addons/pharma/functions/fnc_medicationLocal.sqf @@ -81,8 +81,6 @@ private _medicationConfig = _defaultConfig >> _classname; private _painReduce = GET_NUMBER(_medicationConfig >> "painReduce",getNumber (_defaultConfig >> "painReduce")); private _timeInSystem = GET_NUMBER(_medicationConfig >> "timeInSystem",getNumber (_defaultConfig >> "timeInSystem")); private _timeTillMaxEffect = GET_NUMBER(_medicationConfig >> "timeTillMaxEffect",getNumber (_defaultConfig >> "timeTillMaxEffect")); -private _maxDose = GET_NUMBER(_medicationConfig >> "maxDose",getNumber (_defaultConfig >> "maxDose")); -private _maxDoseDeviation = GET_NUMBER(_medicationConfig >> "maxDoseDeviation",getNumber (_defaultConfig >> "maxDoseDeviation")); private _viscosityChange = GET_NUMBER(_medicationConfig >> "viscosityChange",getNumber (_defaultConfig >> "viscosityChange")); private _hrIncreaseLow = GET_ARRAY(_medicationConfig >> "hrIncreaseLow",getArray (_defaultConfig >> "hrIncreaseLow")); private _hrIncreaseNormal = GET_ARRAY(_medicationConfig >> "hrIncreaseNormal",getArray (_defaultConfig >> "hrIncreaseNormal")); @@ -93,6 +91,7 @@ private _maxRelief = GET_NUMBER(_medicationConfig >> "maxRelief",ge private _opioidRelief = GET_NUMBER(_medicationConfig >> "opioidRelief",getNumber (_defaultConfig >> "opioidRelief")); private _opioidEffect = GET_NUMBER(_medicationConfig >> "opioidEffect",getNumber (_defaultConfig >> "opioidEffect")); private _opioidDepression = GET_NUMBER(_medicationConfig >> "opioidRelief",getNumber (_defaultConfig >> "opioidRelief")); +private _dose = GET_NUMBER(_medicationConfig >> "dose",getNumber (_defaultConfig >> "dose")); private _heartRate = GET_HEART_RATE(_patient); private _hrIncrease = [_hrIncreaseLow, _hrIncreaseNormal, _hrIncreaseHigh] select (floor ((0 max _heartRate min 110) / 55)); @@ -106,7 +105,7 @@ if (_maxRelief > 0) then { _painReduce = _painReduce / 4; }; }; -if ([QGVAR(AMS_Enabled)] call CBA_settings_fnc_get) then { +if (QGVAR(AMS_Enabled)) then { private _medicationParts = (_className splitString "_"); if (count _medicationParts > 3) then { @@ -114,20 +113,20 @@ if ([QGVAR(AMS_Enabled)] call CBA_settings_fnc_get) then { }; // Adjust the medication effects and add the medication to the list TRACE_3("adjustments",_heartRateChange,_painReduce,_viscosityChange); - [_patient, _medicationName, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression] call EFUNC(vitals,addMedicationAdjustment); + [_patient, _medicationName, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _dose, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression] call EFUNC(vitals,addMedicationAdjustment); // Check for medication compatiblity - [_patient, _medicationName, _maxDose, _maxDoseDeviation, _incompatibleMedication] call ACEFUNC(medical_treatment,onMedicationUsage); + [_patient, _medicationName, _incompatibleMedication] call ACEFUNC(medical_treatment,onMedicationUsage); } else { // Adjust the medication effects and add the medication to the list TRACE_3("adjustments",_heartRateChange,_painReduce,_viscosityChange); - [_patient, _className, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression] call EFUNC(vitals,addMedicationAdjustment); + [_patient, _className, _timeTillMaxEffect, _timeInSystem, _heartRateChange, _painReduce, _viscosityChange, _dose, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression] call EFUNC(vitals,addMedicationAdjustment); // Check for medication compatiblity - [_patient, _className, _maxDose, _maxDoseDeviation, _incompatibleMedication] call ACEFUNC(medical_treatment,onMedicationUsage); + [_patient, _className, _incompatibleMedication] call ACEFUNC(medical_treatment,onMedicationUsage); }; -if ([QGVAR(AMS_Enabled)] call CBA_settings_fnc_get) then { +if (QGVAR(AMS_Enabled)) then { private _medicationParts = (_className splitString "_"); diff --git a/addons/pharma/functions/fnc_overDose.sqf b/addons/pharma/functions/fnc_overDose.sqf index 842adfdb3..209bf07e7 100644 --- a/addons/pharma/functions/fnc_overDose.sqf +++ b/addons/pharma/functions/fnc_overDose.sqf @@ -17,7 +17,7 @@ */ params ["_unit", "_classname"]; -if ([QGVAR(AMS_Enabled)] call CBA_settings_fnc_get) then { +if (QGVAR(AMS_Enabled)) then { private _medicationParts = (_className splitString "_"); if (count _medicationParts > 3) then { diff --git a/addons/vitals/functions/fnc_addMedicationAdjustment.sqf b/addons/vitals/functions/fnc_addMedicationAdjustment.sqf index f49f7b0f7..1c758ec5a 100644 --- a/addons/vitals/functions/fnc_addMedicationAdjustment.sqf +++ b/addons/vitals/functions/fnc_addMedicationAdjustment.sqf @@ -11,17 +11,18 @@ * 4: Heart Rate Adjust * 5: Pain Suppress Adjust * 6: Flow Adjust + * 7: Dose * * Return Value: * None * * Example: - * [player, "Morphine", 120, 60, -10, 0.8, -10] call ace_medical_status_fnc_addMedicationAdjustment + * [player, "Morphine", 120, 60, -10, 0.8, -10, 1] call ace_medical_status_fnc_addMedicationAdjustment * * Public: No */ -params ["_unit", "_medication", "_timeToMaxEffect", "_maxTimeInSystem", "_hrAdjust", "_painAdjust", "_flowAdjust", "_alphaFactor", "_opioidRelief", "_opioidEffect", "_opioidDepression"]; -TRACE_7("addMedicationAdjustment",_unit,_medication,_timeToMaxEffect,_maxTimeInSystem,_hrAdjust,_painAdjust,_flowAdjust); +params ["_unit", "_medication", "_timeToMaxEffect", "_maxTimeInSystem", "_hrAdjust", "_painAdjust", "_flowAdjust", "_dose", "_alphaFactor", "_opioidRelief", "_opioidEffect", "_opioidDepression"]; +TRACE_8("addMedicationAdjustment",_unit,_medication,_timeToMaxEffect,_maxTimeInSystem,_hrAdjust,_painAdjust,_flowAdjust,_dose); if (_maxTimeInSystem <= 0) exitWith { WARNING_1("bad value for _maxTimeInSystem - %1",_this); }; _timeToMaxEffect = _timeToMaxEffect max 1; @@ -29,6 +30,6 @@ _timeToMaxEffect = _timeToMaxEffect max 1; private _adjustments = _unit getVariable [VAR_MEDICATIONS, []]; -_adjustments pushBack [_medication, CBA_missionTime, _timeToMaxEffect, _maxTimeInSystem, _hrAdjust, _painAdjust, _flowAdjust, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression]; +_adjustments pushBack [_medication, CBA_missionTime, _timeToMaxEffect, _maxTimeInSystem, _hrAdjust, _painAdjust, _flowAdjust, _dose, _alphaFactor, _opioidRelief, _opioidEffect, _opioidDepression]; _unit setVariable [VAR_MEDICATIONS, _adjustments, true]; From 6ca29abfdcdd9b3fa21d116249bf629501853fc8 Mon Sep 17 00:00:00 2001 From: Cplhardcore <135324281+Cplhardcore@users.noreply.github.com> Date: Sat, 16 Nov 2024 15:58:36 -0800 Subject: [PATCH 7/7] overwrites and small changes --- addons/pharma/CfgFunctions.hpp | 3 + .../functions/fnc_onMedicationUsage.sqf | 82 +++++++++++++++++++ addons/pharma/functions/fnc_overDose.sqf | 34 ++++---- 3 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 addons/pharma/functions/fnc_onMedicationUsage.sqf diff --git a/addons/pharma/CfgFunctions.hpp b/addons/pharma/CfgFunctions.hpp index d55116ed7..0e95d25ee 100644 --- a/addons/pharma/CfgFunctions.hpp +++ b/addons/pharma/CfgFunctions.hpp @@ -20,6 +20,9 @@ class CfgFunctions { class overDose { file = QPATHTOF(functions\fnc_overDose.sqf); }; + class onMedicationUsage { + file = QPATHTOF(functions\fnc_onMedicationUsage.sqf); + }; }; }; }; diff --git a/addons/pharma/functions/fnc_onMedicationUsage.sqf b/addons/pharma/functions/fnc_onMedicationUsage.sqf new file mode 100644 index 000000000..98be2bee6 --- /dev/null +++ b/addons/pharma/functions/fnc_onMedicationUsage.sqf @@ -0,0 +1,82 @@ +#include "..\script_component.hpp" +/* + * Author: Glowbal, Cplhardcore + * Handles the medication given to a patient. + * + * Arguments: + * 0: Patient + * 1: Medication Treatment classname + * 2: Incompatible medication > + * + * Return Value: + * None + * + * Example: + * [player, "morphine", [["x", 1]]] call ace_medical_treatment_fnc_onMedicationUsage + * + * Public: No + */ + +params ["_target", "_className", "_incompatibleMedication"]; +TRACE_3("onMedicationUsage",_target,_className,_incompatibleMedication); + +if (QGVAR(AMS_Enabled)) then { + private _medicationParts = (_className splitString "_"); + + if (count _medicationParts > 3) then { + _medicationName = _medicationParts select 1; { + private _defaultConfig = configFile >> QUOTE(ADDON) >> "Medication"; + private _medicationConfig = _defaultConfig >> _medicationName; + private _maxDose = GET_NUMBER(_medicationConfig >> "maxDose",getNumber (_defaultConfig >> "maxDose")); + + if (_maxDose > 0) then { + private _maxDoseDeviation = GET_NUMBER(_medicationConfig >> "maxDoseDeviation",getNumber (_defaultConfig >> "maxDoseDeviation")); + private _currentDose = [_target, _medicationName] call EFUNC(medical_status,getMedicationCount) select 0; + // Because both {floor random 0} and {floor random 1} return 0 + if (_maxDoseDeviation > 0) then { + _maxDoseDeviation = _maxDoseDeviation + 1; + }; + + private _limit = _maxDose + (floor random _maxDoseDeviation); + if (_currentDose > _limit) then { + TRACE_1("exceeded max dose",_currentDose); + [_target, _medicationName, _currentDose, _limit, _incompatibleMed] call FUNC(overDose); + }; + { + _x params ["_xMed", "_xLimit"]; + private _inSystem = ([_target, _xMed] call EFUNC(medical_status,getMedicationCount)) select 0; + if (_inSystem > _xLimit) then { + [_target, _medicationName, _inSystem, _xLimit, _xMed] call FUNC(overDose); + }; + } forEach _incompatibleMedication; + }; + }; + }; +} else { + private _defaultConfig = configFile >> QUOTE(ADDON) >> "Medication"; + private _medicationConfig = _defaultConfig >> _classname; + private _maxDose = GET_NUMBER(_medicationConfig >> "maxDose",getNumber (_defaultConfig >> "maxDose")); + + if (_maxDose > 0) then { + private _maxDoseDeviation = GET_NUMBER(_medicationConfig >> "maxDoseDeviation",getNumber (_defaultConfig >> "maxDoseDeviation")); + private _currentDose = [_target, _className] call EFUNC(medical_status,getMedicationCount) select 0; + // Because both {floor random 0} and {floor random 1} return 0 + if (_maxDoseDeviation > 0) then { + _maxDoseDeviation = _maxDoseDeviation + 1; + }; + + private _limit = _maxDose + (floor random _maxDoseDeviation); + if (_currentDose > _limit) then { + TRACE_1("exceeded max dose",_currentDose); + [_target, _classname, _currentDose, _limit, _classname] call FUNC(overDose); + }; + }; + +// Check incompatible medication (format [med,limit]) + { + _x params ["_xMed", "_xLimit"]; + private _inSystem = ([_target, _xMed] call EFUNC(medical_status,getMedicationCount)) select 0; + if (_inSystem > _xLimit) then { + [_target, _classname, _inSystem, _xLimit, _xMed] call FUNC(overDose); + }; + } forEach _incompatibleMedication;} diff --git a/addons/pharma/functions/fnc_overDose.sqf b/addons/pharma/functions/fnc_overDose.sqf index 209bf07e7..cf8f8bde5 100644 --- a/addons/pharma/functions/fnc_overDose.sqf +++ b/addons/pharma/functions/fnc_overDose.sqf @@ -16,34 +16,34 @@ * Public: No */ -params ["_unit", "_classname"]; +params ["_unit", "_className", "_dose", "_limit", "_incompatibleMedication"]; if (QGVAR(AMS_Enabled)) then { - private _medicationParts = (_className splitString "_"); - - if (count _medicationParts > 3) then { - _medicationName = _medicationParts select 1; - [format ["kat_pharma_%1OverdoseLocal", toLower _medicationName], [_patient], _patient] call CBA_fnc_targetEvent; + [format ["kat_pharma_%1OverdoseLocal", toLower _className], [_patient], _patient] call CBA_fnc_targetEvent; }; - } else { private _defaultConfig = configFile >> QUOTE(ACE_ADDON(Medical_Treatment)) >> "Medication"; private _medicationConfig = (configFile >> "ace_medical_treatment" >> _classname); private _onOverDose = getText (_medicationConfig >> "onOverDose"); - if (isClass (_medicationConfig)) then { - _medicationConfig = (_medicationConfig >> _classname); - if (isText (_medicationConfig >> "onOverDose")) then { - _onOverDose = getText (_medicationConfig >> "onOverDose"); + if (isClass _medicationConfig) then { + _medicationConfig = _medicationConfig >> _classname; + if (isText (_medicationConfig >> "onOverDose")) then { + _onOverDose = getText (_medicationConfig >> "onOverDose"); }; }; TRACE_2("overdose",_classname,_onOverDose); + + [QEGVAR(medical,overdose), [_unit, _classname, _dose, _limit, _incompatibleMed]] call CBA_fnc_localEvent; + if (_onOverDose == "") exitWith { - TRACE_1("CriticalVitals Event",_unit); - [QEGVAR(medical,CriticalVitals), _unit] call CBA_fnc_localEvent; + TRACE_1("CriticalVitals Event",_unit); + [QEGVAR(medical,CriticalVitals), _unit] call CBA_fnc_localEvent; }; - if (!isNil "_onOverDose" && {isText _onOverDose}) then { - _onOverDose = compile _onOverDose; + + _onOverDose = if (missionNamespace isNil _onOverDose) then { + compile _onOverDose } else { - _onOverDose = missionNamespace getVariable _onOverDose; + missionNamespace getVariable _onOverDose }; - [_target, _className] call _onOverDose;}; \ No newline at end of file + + [_unit, _classname, _dose, _limit, _incompatibleMed] call _onOverDose}; \ No newline at end of file