diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 558982d9c6..d9899e313c 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -17,15 +17,6 @@
受伤
受傷
-
- Lost some blood
-
-
- Lost a lot of blood
-
-
- Lost a large amount of blood
-
ACE Medical
ACE: медицина
diff --git a/addons/medical_engine/script_macros_medical.hpp b/addons/medical_engine/script_macros_medical.hpp
index 67553e6400..c232531e7d 100644
--- a/addons/medical_engine/script_macros_medical.hpp
+++ b/addons/medical_engine/script_macros_medical.hpp
@@ -28,7 +28,7 @@
#define BLOOD_VOLUME_CLASS_2_HEMORRHAGE 5.100 // lost more than 15% blood, Class II Hemorrhage
#define BLOOD_VOLUME_CLASS_3_HEMORRHAGE 4.200 // lost more than 30% blood, Class III Hemorrhage
#define BLOOD_VOLUME_CLASS_4_HEMORRHAGE 3.600 // lost more than 40% blood, Class IV Hemorrhage
-#define BLOOD_VOLUME_FATAL 3.0 // Lost more than 50% blood, Fatal
+#define BLOOD_VOLUME_FATAL 3.0 // Lost more than 50% blood, Unrecoverable
// IV Change per second calculation:
// 250 ml should take 60 seconds to fill. 250 ml / 60 s ~ 4.1667 ml/s.
diff --git a/addons/medical_gui/functions/fnc_displayPatientInformation.sqf b/addons/medical_gui/functions/fnc_displayPatientInformation.sqf
index faf6cb9ce3..643f6c0a94 100644
--- a/addons/medical_gui/functions/fnc_displayPatientInformation.sqf
+++ b/addons/medical_gui/functions/fnc_displayPatientInformation.sqf
@@ -59,19 +59,20 @@ if (_show == 1) then {
// Show more information if advancedDiagnose is enabled
if (EGVAR(medical,advancedDiagnose)) then {
switch (GET_HEMORRHAGE(_target)) do {
- case 1: {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood2), [1, 0.1, 0.1, 1]];
- };
+ case 1;
case 2: {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood3), [1, 0.1, 0.1, 1]];
+ _genericMessages pushBack [LLSTRING(Lost_Blood2), [1, 0.1, 0.1, 1]];
};
case 3: {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood4), [1, 0.1, 0.1, 1]];
+ _genericMessages pushBack [LLSTRING(Lost_Blood3), [1, 0.1, 0.1, 1]];
+ };
+ case 4: {
+ _genericMessages pushBack [LLSTRING(Lost_Blood4), [1, 0.1, 0.1, 1]];
};
};
} else {
- if (GET_HEMORRHAGE(_target) > 1) then {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]];
+ if (GET_HEMORRHAGE(_target) > 0) then {
+ _genericMessages pushBack [LLSTRING(Lost_Blood1), [1, 0.1, 0.1, 1]];
};
};
diff --git a/addons/medical_gui/functions/fnc_updateUIInfo.sqf b/addons/medical_gui/functions/fnc_updateUIInfo.sqf
index bc150c06ee..3b88abf5b9 100644
--- a/addons/medical_gui/functions/fnc_updateUIInfo.sqf
+++ b/addons/medical_gui/functions/fnc_updateUIInfo.sqf
@@ -34,19 +34,20 @@ if IS_BLEEDING(_target) then {
// Show more information if advancedDiagnose is enabled
if (EGVAR(medical,advancedDiagnose)) then {
switch (GET_HEMORRHAGE(_target)) do {
- case 1: {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood2), [1, 0.1, 0.1, 1]];
- };
+ case 1;
case 2: {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood3), [1, 0.1, 0.1, 1]];
+ _genericMessages pushBack [LLSTRING(Lost_Blood2), [1, 0.1, 0.1, 1]];
};
case 3: {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood4), [1, 0.1, 0.1, 1]];
+ _genericMessages pushBack [LLSTRING(Lost_Blood3), [1, 0.1, 0.1, 1]];
+ };
+ case 4: {
+ _genericMessages pushBack [LLSTRING(Lost_Blood4), [1, 0.1, 0.1, 1]];
};
};
} else {
- if (GET_HEMORRHAGE(_target) > 1) then {
- _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]];
+ if (GET_HEMORRHAGE(_target) > 0) then {
+ _genericMessages pushBack [LLSTRING(Lost_Blood1), [1, 0.1, 0.1, 1]];
};
};
diff --git a/addons/medical_gui/stringtable.xml b/addons/medical_gui/stringtable.xml
index 3b0451a64c..9ec190173e 100644
--- a/addons/medical_gui/stringtable.xml
+++ b/addons/medical_gui/stringtable.xml
@@ -844,6 +844,34 @@
大量失血
大量失血
+
+
+ Lost a lot of Blood
+ Hat eine große Menge Blut verloren
+ Большая кровопотеря
+ Mucha sangre perdida
+ A perdu beaucoup de sang
+ Stracił dużo krwi
+ Ztratil hodně krve
+ Sok vért vesztett
+ Ha perso parecchio sangue
+ Perdeu muito sangue
+ 大量失血している
+ 많은 양의 혈액을 잃음
+ 大量失血中
+ 大量失血中
+
+
+ Lost some blood
+
+
+ Lost a lot of blood
+
+
+ Lost a large amount of blood
+
Tourniquet [CAT]
Tourniquet [CAT]
diff --git a/addons/medical_statemachine/Statemachine.hpp b/addons/medical_statemachine/Statemachine.hpp
index c3c7d9c490..f9b7d6c0df 100644
--- a/addons/medical_statemachine/Statemachine.hpp
+++ b/addons/medical_statemachine/Statemachine.hpp
@@ -16,7 +16,7 @@ class ACE_Medical_StateMachine {
};
class FatalVitals {
targetState = "CardiacArrest";
- events[] = {QEGVAR(medical,FatalVitals)};
+ events[] = {QEGVAR(medical,FatalVitals), QEGVAR(medical,Bleedout)};
};
class FatalInjury {
targetState = "FatalInjury";
@@ -35,7 +35,7 @@ class ACE_Medical_StateMachine {
};
class FatalVitals {
targetState = "CardiacArrest";
- events[] = {QEGVAR(medical,FatalVitals)};
+ events[] = {QEGVAR(medical,FatalVitals), QEGVAR(medical,Bleedout)};
};
class FatalInjury {
targetState = "FatalInjury";
@@ -57,7 +57,7 @@ class ACE_Medical_StateMachine {
};
class FatalTransitions {
targetState = "CardiacArrest";
- events[] = {QEGVAR(medical,FatalVitals)};
+ events[] = {QEGVAR(medical,FatalVitals), QEGVAR(medical,Bleedout)};
};
class FatalInjury {
targetState = "FatalInjury";
@@ -105,6 +105,10 @@ class ACE_Medical_StateMachine {
condition = QFUNC(conditionExecutionDeath);
events[] = {QEGVAR(medical,FatalInjury)};
};
+ class Bleedout {
+ targetState = "Dead";
+ events[] = {QEGVAR(medical,Bleedout)};
+ };
};
class Dead {
// When the unit is killed it's no longer handled by the statemachine
diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml
index c46bde7685..1d9d7ae8bb 100644
--- a/addons/medical_treatment/stringtable.xml
+++ b/addons/medical_treatment/stringtable.xml
@@ -2113,22 +2113,6 @@
In severe pain
Hat starke Schmerzen
-
- Lost a lot of Blood
- Hat eine große Menge Blut verloren
- Большая кровопотеря
- Mucha sangre perdida
- A perdu beaucoup de sang
- Stracił dużo krwi
- Ztratil hodně krve
- Sok vért vesztett
- Ha perso parecchio sangue
- Perdeu muito sangue
- 大量失血している
- 많은 양의 혈액을 잃음
- 大量失血中
- 大量失血中
-
Tourniquet [CAT]
Tourniquet [CAT]
diff --git a/addons/medical_vitals/functions/fnc_handleUnitVitals.sqf b/addons/medical_vitals/functions/fnc_handleUnitVitals.sqf
index 6ba8549621..4fafbfb9aa 100644
--- a/addons/medical_vitals/functions/fnc_handleUnitVitals.sqf
+++ b/addons/medical_vitals/functions/fnc_handleUnitVitals.sqf
@@ -40,9 +40,9 @@ _unit setVariable [VAR_BLOOD_VOL, _bloodVolume, _syncValues];
// Set variables for synchronizing information across the net
private _hemorrhage = switch (true) do {
- case (_bloodVolume < BLOOD_VOLUME_CLASS_4_HEMORRHAGE): { 3 };
- case (_bloodVolume < BLOOD_VOLUME_CLASS_3_HEMORRHAGE): { 2 };
- case (_bloodVolume < BLOOD_VOLUME_CLASS_2_HEMORRHAGE): { 1 };
+ case (_bloodVolume < BLOOD_VOLUME_CLASS_4_HEMORRHAGE): { 4 };
+ case (_bloodVolume < BLOOD_VOLUME_CLASS_3_HEMORRHAGE): { 3 };
+ case (_bloodVolume < BLOOD_VOLUME_CLASS_2_HEMORRHAGE): { 2 };
case (_bloodVolume < BLOOD_VOLUME_CLASS_1_HEMORRHAGE): { 1 };
default {0};
};
@@ -89,9 +89,14 @@ _bloodPressure params ["_bloodPressureL", "_bloodPressureH"];
private _cardiacOutput = [_unit] call EFUNC(medical_status,getCardiacOutput);
+// Most lethal events need to be checked first here
switch (true) do {
case (_bloodVolume < BLOOD_VOLUME_FATAL): {
TRACE_3("BloodVolume Fatal",_unit,BLOOD_VOLUME_FATAL,_bloodVolume);
+ [QEGVAR(medical,Bleedout), _unit] call CBA_fnc_localEvent;
+ };
+ case (_hemorrhage == 4): {
+ TRACE_3("Class IV Hemorrhage",_unit,_hemorrhage,_bloodVolume);
[QEGVAR(medical,FatalVitals), _unit] call CBA_fnc_localEvent;
};
case (_heartRate < 20 || {_heartRate > 220}): {