Medical Treatment - Add hook to modify bandaging treatment (#9814)

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
This commit is contained in:
Grim 2024-03-09 14:15:24 -03:00 committed by GitHub
parent d7e5ea4898
commit 8e975a6b91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 5 deletions

View File

@ -8,6 +8,7 @@
* 1: Patient <OBJECT>
* 2: Body Part <STRING>
* 3: Treatment <STRING>
* 4: Bandage effectiveness coefficient <NUMBER> (default: 1)
*
* Return Value:
* None
@ -18,8 +19,11 @@
* Public: No
*/
params ["_medic", "_patient", "_bodyPart", "_classname"];
_this set [4, _this param [4, 1]]; // set default Bandage effectiveness coefficient
[QGVAR(bandaged), _this] call CBA_fnc_localEvent; // Raise event with reference so mods can modify this
params ["_medic", "_patient", "_bodyPart", "_classname", "_bandageEffectiveness"];
[_patient, "activity", LSTRING(Activity_bandagedPatient), [[_medic, false, true] call EFUNC(common,getName)]] call FUNC(addToLog);
[QGVAR(bandageLocal), [_patient, _bodyPart, _classname], _patient] call CBA_fnc_targetEvent;
[QGVAR(bandageLocal), [_patient, _bodyPart, _classname, _bandageEffectiveness], _patient] call CBA_fnc_targetEvent;

View File

@ -7,6 +7,7 @@
* 0: Patient <OBJECT>
* 1: Body Part <STRING>
* 2: Treatment <STRING>
* 3: Bandage effectiveness coefficient <NUMBER> (default: 1)
*
* Return Value:
* None
@ -17,8 +18,8 @@
* Public: No
*/
params ["_patient", "_bodyPart", "_bandage"];
TRACE_3("bandageLocal",_patient,_bodyPart,_bandage);
params ["_patient", "_bodyPart", "_bandage", ["_bandageEffectiveness", 1]];
TRACE_4("bandageLocal",_patient,_bodyPart,_bandage,_bandageEffectiveness);
_bodyPart = toLowerANSI _bodyPart;
private _openWounds = GET_OPEN_WOUNDS(_patient);
@ -26,7 +27,7 @@ private _woundsOnPart = _openWounds getOrDefault [_bodyPart, []];
if (_woundsOnPart isEqualTo []) exitWith {};
// Figure out which injuries for this bodypart are the best choice to bandage
private _targetWounds = [_patient, _bandage, _bodyPart, GVAR(bandageEffectiveness)] call FUNC(findMostEffectiveWounds);
private _targetWounds = [_patient, _bandage, _bodyPart, _bandageEffectiveness * GVAR(bandageEffectiveness)] call FUNC(findMostEffectiveWounds);
// Everything is patched up on this body part already
if (count _targetWounds == 0) exitWith {};

View File

@ -42,6 +42,7 @@ The vehicle events will also have the following local variables available `_gunn
|`ace_treatmentSucceded` | [_caller, _target, _selectionName, _className, _itemUser, _usedItem] | Local | Listen | Treatment action is completed (local on the _caller)
|`ace_treatmentFailed` | [_caller, _target, _selectionName, _className, _itemUser, _usedItem] | Local | Listen | Treatment action has been interrupted (local on the _caller)
|`ace_medical_handleUnitVitals` | [_unit, _deltaT] | Local | Listen | Vitals update ran for unit, _deltaT is the time elapsed since the previous vitals update (local to _unit)
|`ace_medical_treatment_bandaged` | [_medic, _patient, _bodyPart, _className, _bandageEffectiveness] | Local | Listen | _medic has bandaged _patient, the array can be modified to change treatment parameters (local to _medic)
### 2.3 Interaction Menu (`ace_interact_menu`)
MenuType: 0 = Interaction, 1 = Self Interaction