diff --git a/addons/medical_treatment/XEH_PREP.hpp b/addons/medical_treatment/XEH_PREP.hpp index 7bdd1eff36..7d82ef7c9a 100644 --- a/addons/medical_treatment/XEH_PREP.hpp +++ b/addons/medical_treatment/XEH_PREP.hpp @@ -10,6 +10,7 @@ PREP(canSplint); PREP(canStitch); PREP(canTreat); PREP(canTreatCached); +PREP(canTreat_holsterCheck); PREP(checkBloodPressure); PREP(checkBloodPressureLocal); PREP(checkItems); diff --git a/addons/medical_treatment/functions/fnc_canTreat.sqf b/addons/medical_treatment/functions/fnc_canTreat.sqf index d8905626c9..938e8a356d 100644 --- a/addons/medical_treatment/functions/fnc_canTreat.sqf +++ b/addons/medical_treatment/functions/fnc_canTreat.sqf @@ -26,6 +26,7 @@ isClass _config && {_patient isKindOf "CAManBase"} && {_medic != _patient || {GET_NUMBER_ENTRY(_config >> "allowSelfTreatment") == 1}} && {[_medic, GET_NUMBER_ENTRY(_config >> "medicRequired")] call FUNC(isMedic)} +&& {[_medic, _patient, _config] call FUNC(canTreat_holsterCheck)} && { private _selections = getArray (_config >> "allowedSelections") apply {toLower _x}; "all" in _selections || {_bodyPart in _selections} diff --git a/addons/medical_treatment/functions/fnc_canTreat_holsterCheck.sqf b/addons/medical_treatment/functions/fnc_canTreat_holsterCheck.sqf new file mode 100644 index 0000000000..96f498c258 --- /dev/null +++ b/addons/medical_treatment/functions/fnc_canTreat_holsterCheck.sqf @@ -0,0 +1,27 @@ +#include "script_component.hpp" +/* + * Author: ddm999 + * Handle holster settings [disabled, lowered, loweredExam, holster, holsterExam] + * + * Arguments: + * 0: Medic + * 1: Patient + * 2: Treatment Config + * + * Return Value: + * Can Treat + * + * Example: + * [player, cursorObject, cfg] call ace_medical_treatment_fnc_canTreat_holsterCheck + * + * Public: No + */ + +params ["_medic", "_patient", "_config"]; + +GVAR(holsterRequired) == 0 +|| {vehicle _medic != _medic} // medic is in a vehicle, so weapon is considered holstered +|| {vehicle _patient != _patient} // patient is in a vehicle, ^ +|| {(GVAR(holsterRequired) in [2,4]) && {getText (_config >> "category") == "examine"}} // if examine bypass is on +|| {currentWeapon _medic isEqualTo ""} // weapon is holstered +|| {(GVAR(holsterRequired) <= 2) && {weaponLowered _medic}} // if just lowered is allowed diff --git a/addons/medical_treatment/initSettings.sqf b/addons/medical_treatment/initSettings.sqf index 3da65f8816..f2956877f2 100644 --- a/addons/medical_treatment/initSettings.sqf +++ b/addons/medical_treatment/initSettings.sqf @@ -200,3 +200,14 @@ [-1, 3600, 600, 0], true ] call CBA_settings_fnc_init; + +[ + QGVAR(holsterRequired), + "LIST", + [LSTRING(HolsterRequired_DisplayName), LSTRING(HolsterRequired_Description)], + [ELSTRING(medical,Category), LSTRING(SubCategory_Treatment)], + [[0, 1, 2, 3, 4], [ELSTRING(common,Disabled), LSTRING(HolsterRequired_Lowered), LSTRING(HolsterRequired_LoweredExam), LSTRING(HolsterRequired_Holstered), LSTRING(HolsterRequired_HolsteredExam)], 0], + true +] call CBA_settings_fnc_init; + + diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml index 61bdd5a784..a4c75679e6 100644 --- a/addons/medical_treatment/stringtable.xml +++ b/addons/medical_treatment/stringtable.xml @@ -426,6 +426,24 @@ Техника и госпитали Veículos e Instalações Médicas + + Holster Required + + + Controls whether weapons must be holstered / lowered in order to perform medical actions.\nExcept Exam - Allows examination actions (checking pulse, blood pressure, response) at all times regardless of Holster Required setting. + + + Lowered or Holstered + + + Lowered or Holstered (Except Exam) + + + Holstered only + + + Holstered only (Except Exam) + [ACE] Medical Supply Crate (Basic) [ACE] Ящик с медикаментами (базовая медицина)