Skip to content

Commit

Permalink
Medical Treatment - Add hook to modify bandaging treatment (#9814)
Browse files Browse the repository at this point in the history
Co-authored-by: PabstMirror <[email protected]>
Co-authored-by: johnb432 <[email protected]>
  • Loading branch information
3 people authored Mar 9, 2024
1 parent d7e5ea4 commit 8e975a6
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
8 changes: 6 additions & 2 deletions addons/medical_treatment/functions/fnc_bandage.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
* 1: Patient <OBJECT>
* 2: Body Part <STRING>
* 3: Treatment <STRING>
* 4: Bandage effectiveness coefficient <NUMBER> (default: 1)
*
* Return Value:
* None
Expand All @@ -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;
7 changes: 4 additions & 3 deletions addons/medical_treatment/functions/fnc_bandageLocal.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
* 0: Patient <OBJECT>
* 1: Body Part <STRING>
* 2: Treatment <STRING>
* 3: Bandage effectiveness coefficient <NUMBER> (default: 1)
*
* Return Value:
* None
Expand All @@ -17,16 +18,16 @@
* 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);
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 {};
Expand Down
1 change: 1 addition & 0 deletions docs/wiki/framework/events-framework.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 8e975a6

Please sign in to comment.