mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
02365609b5
* Refactor medical to use hashmaps for wound storage - We most frequently want to access wounds by body part, so this makes that a constant time lookup. - The body part index is no longer stored in every wound since it's inherent in the wound storage. - Using body part names as the keys of the hashmap to improve code clarity (no more magic numbers). closes #6468 * Add deserilization migration from old wound arrays Will migrate from old form array wound storage to the new hashmap strucutre during deserlization. This is relevant for communities piping medical state out to a database or similar between sessions. * fix issue with suture stitching * change version number in comment --------- Co-authored-by: Salluci <salluci.lovi@gmail.com>
43 lines
1.2 KiB
Plaintext
43 lines
1.2 KiB
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: kymckay
|
|
* Prevents bandage actions from showing if selected body part isn't bleeding.
|
|
* Toggles between showing all or only basic bandage action for advanced setting.
|
|
*
|
|
* Arguments:
|
|
* 0: Medic <OBJECT>
|
|
* 1: Patient <OBJECT>
|
|
* 2: Body Part <STRING>
|
|
* 3: Treatment <STRING>
|
|
*
|
|
* Return Value:
|
|
* Can Bandage <BOOL>
|
|
*
|
|
* Example:
|
|
* [player, cursorTarget, "Head", "FieldDressing"] call ace_medical_treatment_fnc_canBandage
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params ["_medic", "_patient", "_bodyPart", "_bandage"];
|
|
_bodyPart = toLower _bodyPart;
|
|
|
|
// If patient is swimming, don't allow bandage actions.
|
|
if (_patient call EFUNC(common,isSwimming)) exitWith {false};
|
|
|
|
// Bandage type and bandage setting XNOR to show only active actions
|
|
if ((_bandage == "BasicBandage") isEqualTo (GVAR(advancedBandages) != 0)) exitWith {false};
|
|
|
|
private _canBandage = false;
|
|
|
|
{
|
|
_x params ["", "_amountOf", "_bleeding"];
|
|
|
|
// If any single wound on the bodypart is bleeding bandaging can go ahead
|
|
if (_amountOf * _bleeding > 0) exitWith {
|
|
_canBandage = true;
|
|
};
|
|
} forEach ((GET_OPEN_WOUNDS(_patient)) getOrDefault [_bodyPart, []]);
|
|
|
|
_canBandage
|