Prevent bandaging when not bleeding (#6532)

This commit is contained in:
SilentSpike 2019-03-30 20:44:58 +00:00 committed by PabstMirror
parent 2ea534ae1a
commit ac1651c6db
3 changed files with 38 additions and 5 deletions

View File

@ -13,7 +13,7 @@ class GVAR(Actions) {
treatmentTime = QFUNC(getBandageTime);
treatmentTimeSelfCoef = 1;
items[] = {{"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_quikclot"}};
condition = QUOTE(!GVAR(advancedBandages));
condition = QFUNC(canBandage);
itemConsumed = 1;
callbackSuccess = QFUNC(treatmentBandage);
callbackFailure = "";
@ -31,7 +31,6 @@ class GVAR(Actions) {
class FieldDressing: BasicBandage {
displayName = CSTRING(Actions_FieldDressing);
items[] = {"ACE_fieldDressing"};
condition = QGVAR(advancedBandages);
litter[] = {
{"All", "_bloodLossOnBodyPart > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}},
{"All", "_bloodLossOnBodyPart <= 0", {"ACE_MedicalLitter_clean"}}
@ -41,7 +40,6 @@ class GVAR(Actions) {
displayName = CSTRING(Actions_PackingBandage);
icon = QPATHTOEF(medical_gui,ui\packing_bandage.paa);
items[] = {"ACE_packingBandage"};
condition = QGVAR(advancedBandages);
litter[] = {
{"All", "", {"ACE_MedicalLitter_packingBandage"}},
{"All", "_bloodLossOnBodyPart > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}},
@ -51,7 +49,6 @@ class GVAR(Actions) {
class ElasticBandage: BasicBandage {
displayName = CSTRING(Actions_ElasticBandage);
items[] = {"ACE_elasticBandage"};
condition = QGVAR(advancedBandages);
litter[] = {
{"All", "_bloodLossOnBodyPart > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}},
{"All", "_bloodLossOnBodyPart <= 0", {"ACE_MedicalLitter_clean"}}
@ -60,7 +57,6 @@ class GVAR(Actions) {
class QuikClot: BasicBandage {
displayName = CSTRING(Actions_QuikClot);
items[] = {"ACE_quikclot"};
condition = QGVAR(advancedBandages);
litter[] = {
{"All", "", {"ACE_MedicalLitter_QuickClot"}},
{"All", "_bloodLossOnBodyPart > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}},

View File

@ -42,6 +42,7 @@ PREP(addToTriageCard);
PREP(bodyCleanupLoop);
PREP(calculateBlood);
PREP(canAccessMedicalEquipment);
PREP(canBandage);
PREP(dropDownTriageCard);
PREP(findMostEffectiveWound);
PREP(getBandageTime);

View File

@ -0,0 +1,36 @@
#include "script_component.hpp"
/*
* Author: SilentSpike
* 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: The medic <OBJECT>
* 1: The patient <OBJECT>
* 2: Body part <STRING>
* 3: Treatment class name <STRING>
*
* ReturnValue:
* Can Bandage <BOOL>
*
* Public: No
*/
params ["_medic", "_patient", "_bodypart", "_bandage"];
// Bandage type and bandage setting XNOR to show only active actions
if ((_bandage == "BasicBandage") isEqualTo GVAR(advancedBandages)) exitWith { false };
private _index = ALL_BODY_PARTS find toLower _bodypart;
private _canBandage = false;
{
_x params ["", "", "_bodyPartN", "_amountOf", "_bleeding"];
// If any single wound on the bodypart is bleeding bandaging can go ahead
if (_bodyPartN == _index && {_amountOf * _bleeding > 0}) exitWith {
_canBandage = true;
};
} forEach (_patient getVariable [QEGVAR(medical,openWounds), []]);
_canBandage