diff --git a/addons/medical_engine/script_macros_medical.hpp b/addons/medical_engine/script_macros_medical.hpp
index 1f1f2c5aba..56c1eec401 100644
--- a/addons/medical_engine/script_macros_medical.hpp
+++ b/addons/medical_engine/script_macros_medical.hpp
@@ -76,6 +76,13 @@
#define DAMAGE_BLUE_THRESHOLD 0.8
#define DAMAGE_TOTAL_COLORS 10
+// Qualitative bleed rate thresholds as a fraction of knock out blood loss
+// Note that half of knock out blood loss is considered unstable, and knock out blood loss is considered critical
+#define BLEED_RATE_SLOW 0.1 // Slow - One fifth of unstable blood loss
+#define BLEED_RATE_MODERATE 0.5 // Moderate - Vitals considered stable
+#define BLEED_RATE_SEVERE 1.0 // Severe - Vitals considered unstable
+// Massive - Vitals considered critical
+
// Pain above which a unit can go unconscious upon receiving damage
#define PAIN_UNCONSCIOUS EGVAR(medical,painUnconsciousThreshold)
diff --git a/addons/medical_gui/functions/fnc_updateInjuryList.sqf b/addons/medical_gui/functions/fnc_updateInjuryList.sqf
index 8a0d066170..8a09647740 100644
--- a/addons/medical_gui/functions/fnc_updateInjuryList.sqf
+++ b/addons/medical_gui/functions/fnc_updateInjuryList.sqf
@@ -24,7 +24,26 @@ private _nonissueColor = [1, 1, 1, 0.33];
// Indicate if unit is bleeding at all
if (IS_BLEEDING(_target)) then {
- _entries pushBack [localize LSTRING(Status_Bleeding), [1, 0, 0, 1]];
+ // Give a qualitative description of the rate of bleeding
+ private _cardiacOutput = [_target] call EFUNC(medical_status,getCardiacOutput);
+ private _bleedRate = GET_BLOOD_LOSS(_target);
+ private _bleedRateKO = BLOOD_LOSS_KNOCK_OUT_THRESHOLD * (_cardiacOutput max 0.05);
+ // Use nonzero minimum cardiac output to prevent all bleeding showing as massive during cardiac arrest
+
+ switch (true) do {
+ case (_bleedRate < _bleedRateKO * BLEED_RATE_SLOW): {
+ _entries pushBack [localize LSTRING(Bleed_Rate1), [1, 1, 0, 1]];
+ };
+ case (_bleedRate < _bleedRateKO * BLEED_RATE_MODERATE): {
+ _entries pushBack [localize LSTRING(Bleed_Rate2), [1, 0.67, 0, 1]];
+ };
+ case (_bleedRate < _bleedRateKO * BLEED_RATE_SEVERE): {
+ _entries pushBack [localize LSTRING(Bleed_Rate3), [1, 0.33, 0, 1]];
+ };
+ default {
+ _entries pushBack [localize LSTRING(Bleed_Rate4), [1, 0, 0, 1]];
+ };
+ };
} else {
_entries pushBack [localize LSTRING(Status_Nobleeding), _nonissueColor];
};
diff --git a/addons/medical_gui/stringtable.xml b/addons/medical_gui/stringtable.xml
index 59f0ce8307..407e0c4db2 100644
--- a/addons/medical_gui/stringtable.xml
+++ b/addons/medical_gui/stringtable.xml
@@ -969,6 +969,18 @@
No bleeding
+
+ Slow bleeding
+
+
+ Moderate bleeding
+
+
+ Severe bleeding
+
+
+ Massive bleeding
+
in Pain
hat Schmerzen