Medical
ACE Medical overhauls the medical system with the aim to make it more engaging for medics. It is highly configurable, allowing communities to tailor the experience from casual to realistic. ACE Medical is split into multiple mods for increased modularity:
- ACE Medical Core
- ACE Medical Hitzones
- ACE Medical Circulation
ACE Medical DefibrillationACE Medical Breathing
ACE Medical Core
Section titled “ACE Medical Core”Overview
Section titled “Overview”ACE Medical Core provides the backbone for all medical mods and comes with the following features:
- Second Chance: Increases survivability by ensuring that players fall unconscious instead of getting killed outright.
- Pain: Injuries cause pain screen effects and can be treated with morphine
- Medication:
- Changed: Morphine can only be used for treating pain and has no longer healing effects
- Added: Epinephrine for speeding up wake-up of unconscious patients
- Repositioning: Allows putting patients on their back or in recovery position
- Medical radial menu for putting medical items to hand
- Additional settings for configuring medical kits, bleedings, etc.
Details
Section titled “Details”Resilience
Section titled “Resilience”Resilience is a health pool from vanilla with 100 HP that is closely linked to consciousness. It takes indirectly damage passed from body parts and armor. A player falls unconscious when HP < 33 and wakes up when HP > 75. HP is either recovered through passive regeneration or with epinephrine. The passive recovery rate is +5 HP/s and can be scaled with m_fDefaultResilienceRegenScale
respective m_fSecondChanceResilienceRegenScale
(see Settings). Note that passive recovery only starts when no damage was taken for 10 seconds.
Second Chance
Section titled “Second Chance”Second chance gets evaluated when a player would have been killed in vanilla without falling unconscious first. If granted, the player will survive, but falls unconscious with a distinct recovery rate (see m_fSecondChanceResilienceRegenScale
in Settings). Depending on the settings, epinephrine is mandatory to wake up patients that got second chance granted. The evaluation of second chance is probabilistic and can be configured per body part.
Medical Kit
Section titled “Medical Kit”While a vanilla feature, newcomers might not be aware that it can be put in hand for healing body parts of patients. Depending on the settings, healing requires supplies and full healing can only be done near ambulances and medical facilities. Unlike vanilla, it is the only way to actively heal body parts. It is therefore crucial for treating arm and leg injuries, which can make aiming and walking difficult otherwise. Depending on the settings, it may also be required to heal up players before being able to apply epinephrine.
Treatments
Section titled “Treatments”Below is a proposed activity diagram for treating patients:
Reposition Patient
Section titled “Reposition Patient”- Unconscious patients have a user interaction on their abdomen for changing to back or recovery position.
Medical Radial Menu
Section titled “Medical Radial Menu”- Open medical radial menu with Ctrl+H (ACE default)
Settings
Section titled “Settings”Summary of settings that can be modified in the server config:
Field | Value | Description |
---|---|---|
m_fDefaultResilienceRegenScale | Type: float **Range: 0 to ∞ Default: 0.3 | Default resilience regeneration scale. The default regeneration rate (5 HP/s) will be multiplied by this factor. |
m_fMinHealthScaledForEpinephrine | Type: float **Range: 0 to 1 Default: 0.33 | Can only apply epinephrine when patient has at least this health (ignored in advanced medication). |
m_bBleedOutForPlayersEnabled | Type: bool *Default: true | Whether players can bleed out |
m_fBleedingRateScale | Type: float **Default: 1.0 | Character bleeding rate multiplier |
m_fMaxTotalBleedingRate | Type: float **Default: -1.0 | Maximum possibe bleeding rate in ml/s (Negative value means unlimited) |
m_fBloodRegenScale | Type: float **Default: 1.0 | Character blood regeneration rate multiplier |
m_bHealSupplyUsageEnabled | Type: bool *Default: true | Healing consumes supplies when enabled. Ignored when global supply usage is disabled. |
m_fMedicalKitMaxHealScaled | Type: float **Range: 0 to 1 Default: 0.5 | Maximum scaled health (from 0 to 1) that a medical kit can heal to outside of medical facilities |
m_ePainScreenEffectType | Type: int ***Default: WHITE_FLASH Options: 0 (NONE )1 (WHITE_FLASH )2 (GREY_FLASH )3 (CHROMATIC_ABERRATION )4 (RADIAL_BLUR ) | What kind of pain screen effect is used |
m_fSecondChanceResilienceRegenScale | Type: float **Range: 0 to ∞ Default: 0.0 | Resilience regeneration scale when second chance was triggered. The default regeneration rate will be multiplied by this factor. |
m_fDefaultSecondChance | Type: float **Range: 0 to 1 Default: 1.0 | Default probability for second chance for killing blows |
m_fSecondChanceOnHead | Type: float **Range: 0 to 1 Default: 0.0 | Probability for second chance for killing blows to the head |
m_fSecondChanceOnChest | Type: float **Range: 0 to 1 Default: 1.0 | Probability for second chance for killing blows to the chest |
m_fSecondChanceOnAbdomen | Type: float **Range: 0 to 1 Default: 1.0 | Probability for second chance for killing blows to the abdomen |
m_bSecondChanceForFallDamageEnabled | Type: bool *Default: false | Whether second chance can be triggered when falling from great heights |
m_bSecondChanceForAIEnabled | Type: bool *Default: false | Whether AI can have second chance |
* bool
has to be provided as integer in the config: 1
(true
) or 0
(false
).
** float
need a decimal point to get properly read.
*** Note that enums have to be provided as integers.
Template for the missionHeader
in a server config:
"missionHeader": { "m_ACE_Settings": { "m_ACE_Medical_Core": { "m_fDefaultResilienceRegenScale": 0.3, "m_fMinHealthScaledForEpinephrine": 0.33, "m_bBleedOutForPlayersEnabled": 1, "m_fBleedingRateScale": 1.0, "m_fMaxTotalBleedingRate": -1.0, "m_fBloodRegenScale": 1.0, "m_bHealSupplyUsageEnabled": 1, "m_fMedicalKitMaxHealScaled": 0.5, "m_ePainScreenEffectType": 1, "m_fSecondChanceResilienceRegenScale": 0.0, "m_fDefaultSecondChance": 1.0, "m_fSecondChanceOnHead": 0.0, "m_fSecondChanceOnChest": 1.0, "m_fSecondChanceOnAbdomen": 1.0, "m_bSecondChanceForFallDamageEnabled": 0, "m_bSecondChanceForAIEnabled": 0 } }}
ACE Medical Hitzones
Section titled “ACE Medical Hitzones”Overview
Section titled “Overview”
ACE Medical Hitzones overhauls hit zones and has the following features:
- Organ Hit Zones: New hit zones that can only be hit with melee and projectiles:
- Heart: Evaluated for second chance
- Femoral arteries: Cause massive bleedings
- Removes global health in favor of evaluating second chance on destruction of vital body parts (head and torso)
- Improves bleeding effect of massive bleedings
Details
Section titled “Details”Removal of Global Health
Section titled “Removal of Global Health”In vanilla, there is a global health pool that takes damage passed from body parts. If HP of this health pool drops to 0, second chance gets evaluated. ACE Medical Hitzones gets completely rid of this health pool and evaluates second chance instead when HP of a vital body part drops to 0.
Settings
Section titled “Settings”Summary of settings that can be modified in the server config:
Field | Value | Description |
---|---|---|
m_bOrganHitZonesEnabled | Type: bool *Default: true | Whether organ hit zones should be enabled |
m_fSecondChanceOnHeart | Type: float **Range: 0 to 1 Default: 0.0 | Probability for second chance for killing blows to the heart |
Template for the missionHeader
in a server config:
"missionHeader": { "m_ACE_Settings": { "m_ACE_Medical_Hitzones": { "m_bOrganHitZonesEnabled": 1, "m_fSecondChanceOnHeart": 0.0 } }}
ACE Medical Circulation
Section titled “ACE Medical Circulation”Overview
Section titled “Overview”ACE Medical Circulation adds the following features:
- Vitals:
- Simulation of heart rate and blood pressure
- Cardiac arrest state and CPR for revival
- Medication:
- Removes all “training wheels”, i.e. drugs can always be administered and overdosed
- Exchanges epinephrine with ammonium carbonate. Epinephrine has now a different role.
- New types of drugs
- Advanced simulation of drug effects and their evolution over time
- Second chance:
- When second chance is granted, the patient goes into cardiac arrest
- Hit Zones:
- New brain hit zone that takes continuously damage while in cardiac arrest and no CPR is performed. Runs out of health in approximately 5 minutes.
The changes are also applied to AI, but they will directly die when they enter cardiac arrest (see m_bCardiacArrestForAIEnabled
in Settings).
Details
Section titled “Details”Glossary
Section titled “Glossary”- BP: Blood pressure
- HR: Heart rate
- OD: Overdose
- : Time until maximum effect
- : Time until effect diminishes to 50% of maximum effect (relative to administration time, not )
- : Number of doses at which 50% of patients fall unconscious
- : Number of doses at which 50% of patients experience cardiac arrest
Medications
Section titled “Medications”All currently available forms of medications are summarized in the table below:
Name | Effects | ||||
---|---|---|---|---|---|
Ammonium carbonate package |
| 2-3 s | 3-4 s | --- | --- |
Epinephrine injector |
| 23 s | 1 min 3 s | --- | 4.4 |
Metoprolol injector |
| 25 s | 1 min 9 s | 2.8 | > 3 |
Morphine injector |
| 1 min 57 s | 15 min 20 s | 3.1 | 3.8 |
Naloxone injector |
| 1 min 35 s | 7 min 26 s | --- | --- |
Phenylephrine injector |
| 29 s | 1 min 18 s | --- | 2.9 |
Vital Ranges
Section titled “Vital Ranges”Blood volumes are categorized into six classes:
- Normal
- Class I hemorrhage (lost < 30%)
- Class II hemorrhage (lost 30%)
- Class III hemorrhage (lost 60%)
- Class IV hemorrhage (lost 80%)
- Fatal (lost 100%)
The values of the vitals (e.g. HR and BP) are essential for getting a patient back up. While in cardiac arrest, only CPR may get the patient back up, but the success chance can be increased with epinephrine. A patient falls unconscious if either their resilience falls below 34/100 or their vital state is at least critical. Resilience will automatically recover if the vitals are stable, but can be speeded up with ammonium carbonate (i.e. like epinephrine in ACE Medical). Ammonium carbonate has no effect as long as the vitals aren’t stable.
State | HR [BPM] | BP [mmHg] | Hemorrhage class |
---|---|---|---|
Cardiac arrest | > 220 | > 284/189 | --- |
Stable | 40 - 220 | 69/46 - 284/189 | < II |
Unstable | < 40 | < 69/46 | II |
Critical | < 30 | < 51/34 | III |
Cardiac arrest | < 20 | < 51/34* | IV |
* BP below 51/34 mmHg only leads to cardiac arrest if the heart rate is at least critical (i.e. < 30 BPM).
Treatments
Section titled “Treatments”Below is a proposed activity diagram for treating patients, which supersedes the one from ACE Medical Core:
Settings
Section titled “Settings”Summary of settings that can be modified in the server config:
Field | Value | Description |
---|---|---|
m_fDefaultHeartRateBPM | Type: float **Range: 0 to ∞ Default: 80.0 | Default heart rate [bpm] |
m_fDefaultStrokeVolumeML | Type: float **Range: 0 to ∞ Default: 95.0 | Default stroke volume [ml] |
m_fDefaultMeanArterialPressureKPA | Type: float **Range: 0 to ∞ Default: 12.443 | Default mean arterial pressure [kPa] |
m_fDefaultPulsePressureKPA | Type: float **Range: 0 to ∞ Default: 5.3329 | Default pulse pressure [kPa] |
m_UnstableThresholds | Type: object | Thresholds that lead to unstable vital state |
m_CriticalThresholds | Type: object | Thresholds that lead to critical vital state |
m_CardiacArrestThresholds | Type: object | Thresholds that lead to cardiac arrest state |
m_CardiacArrestDamageEffect | Type: object | Damage effects caused by cardiac arrest |
m_bCardiacArrestForAIEnabled | Type: bool *Default: false | AI will die instead of entering cardiac arrest if false |
m_fCPRSuccessCheckTimeoutS | Type: float **Range: 0 to ∞ Default: 22.0 | Default delay between check for successful CPR [s] |
m_fCPRSuccessChanceMin | Type: float **Range: 0 to 1 Default: 0.0 | Chance for exiting cardiac arrest while performing CPR at class IV hemorrhage |
m_fCPRSuccessChanceMax | Type: float **Range: 0 to 1 Default: 0.4 | Chance for exiting cardiac arrest while performing CPR at above class II hemorrhage |
m_fAmmoniumCarbonateSuccessChanceMin | Type: float **Range: 0 to 1 Default: 0.2 | Chance for waking up from ammonium carbonate when resilience recovery scale is close to 0 |
m_fAmmoniumCarbonateSuccessChanceMax | Type: float **Range: 0 to 1 Default: 1.0 | Chance for waking up from ammonium carbonate when resilience recovery scale is at m_fMaxRevivalResilienceRecoveryScale or above |
m_fMaxRevivalResilienceRecoveryScale | Type: float **Range: 0 to ∞ Default: 0.2 | Maximum resilience recovery scale applied after getting revived. This scale gets multiplied by the scaled health of the brain and will be removed once the patient becomes conscious |
m_fCardiacArrestMaxTotalBleedingRate | Type: float **Range: 0 to ∞ Default: 20.0 | Maximum total bleeding rate at cardiac arrest due to gravity [ml/s] |
m_UnstableThresholds
Section titled “m_UnstableThresholds”Field | Value | Description |
---|---|---|
m_fHeartRateLowBPM | Type: float **Range: 0 to ∞ Default: 40.0 | A heart rate below this will trigger a transition to this state [BPM] |
m_fHeartRateHighBPM | Type: float **Range: 0 to ∞ Default: 220.0 | A heart rate above this will trigger a transition to this state [BPM] |
m_fMeanArterialPressureLowKPA | Type: float **Range: 0 to ∞ Default: 7.11 | A mean arterial pressure below this will trigger a transition to this state [kPa] |
m_fMeanArterialPressureHighKPA | Type: float **Range: 0 to ∞ Default: 29.5 | A mean arterial pressure above this will trigger a transition to this state [kPa] |
m_fMaxHeartForMeanArterialPressureLowBPM | Type: float **Range: 0 to ∞ Default: 80.0 | Maximum heart rate for trigger due to low mean arterial pressure [bpm] |
m_eBloodState | Type: int ****Range: 0 to ∞ Default: CLASS_2_HEMORRHAGE | Blood volume at this level will trigger a transition to this state |
**** Note that blood states have to be provided as integers in the config: 0
(NORMAL
), 1
(CLASS_1_HEMORRHAGE
), 2
(FATAL
), 3
(CLASS_2_HEMORRHAGE
), 4
(CLASS_3_HEMORRHAGE
) or 5
(CLASS_4_HEMORRHAGE
).
m_CriticalThresholds
Section titled “m_CriticalThresholds”Field | Value | Description |
---|---|---|
m_fHeartRateLowBPM | Type: float **Range: 0 to ∞ Default: 30.0 | A heart rate below this will trigger a transition to this state [BPM] |
m_fHeartRateHighBPM | Type: float **Range: 0 to ∞ Default: 220.0 | A heart rate above this will trigger a transition to this state [BPM] |
m_fMeanArterialPressureLowKPA | Type: float **Range: 0 to ∞ Default: 5.21 | A mean arterial pressure below this will trigger a transition to this state [kPa] |
m_fMeanArterialPressureHighKPA | Type: float **Range: 0 to ∞ Default: 29.5 | A mean arterial pressure above this will trigger a transition to this state [kPa] |
m_fMaxHeartForMeanArterialPressureLowBPM | Type: float **Range: 0 to ∞ Default: 40.0 | Maximum heart rate for trigger due to low mean arterial pressure [bpm] |
m_eBloodState | Type: int ****Range: 0 to ∞ Default: CLASS_3_HEMORRHAGE | Blood volume at this level will trigger a transition to this state |
m_CardiacArrestThresholds
Section titled “m_CardiacArrestThresholds”Field | Value | Description |
---|---|---|
m_fHeartRateLowBPM | Type: float **Range: 0 to ∞ Default: 20.0 | A heart rate below this will trigger a transition to this state [BPM] |
m_fHeartRateHighBPM | Type: float **Range: 0 to ∞ Default: 220.0 | A heart rate above this will trigger a transition to this state [BPM] |
m_fMeanArterialPressureLowKPA | Type: float **Range: 0 to ∞ Default: 5.21 | A mean arterial pressure below this will trigger a transition to this state [kPa] |
m_fMeanArterialPressureHighKPA | Type: float **Range: 0 to ∞ Default: 29.5 | A mean arterial pressure above this will trigger a transition to this state [kPa] |
m_fMaxHeartForMeanArterialPressureLowBPM | Type: float **Range: 0 to ∞ Default: 30.0 | Maximum heart rate for trigger due to low mean arterial pressure [bpm] |
m_eBloodState | Type: int ****Range: 0 to ∞ Default: CLASS_4_HEMORRHAGE | Blood volume at this level will trigger a transition to this state |
m_CardiacArrestDamageEffect
Section titled “m_CardiacArrestDamageEffect”Field | Value | Description |
---|---|---|
m_fBrainDamageRate | Type: float **Range: 0 to ∞ Default: 0.333 | Damage the brain takes per second |
m_fEffectStartDelayS | Type: float **Range: 0 to ∞ Default: 10.0 | Delay in seconds before the effect starts [s] |
Template for the missionHeader
in a server config:
"missionHeader": { "m_ACE_Settings": { "m_ACE_Medical_Circulation": { "m_fDefaultHeartRateBPM": 80.0, "m_fDefaultStrokeVolumeML": 95.0, "m_fDefaultMeanArterialPressureKPA": 12.443, "m_fDefaultPulsePressureKPA": 5.3329, "m_UnstableThresholds": { "m_fHeartRateLowBPM": 40.0, "m_fHeartRateHighBPM": 220.0, "m_fMeanArterialPressureLowKPA": 7.11, "m_fMeanArterialPressureHighKPA": 29.5, "m_fMaxHeartForMeanArterialPressureLowBPM": 80.0, "m_eBloodState": 3 }, "m_CriticalThresholds": { "m_fHeartRateLowBPM": 30.0, "m_fHeartRateHighBPM": 220.0, "m_fMeanArterialPressureLowKPA": 5.21, "m_fMeanArterialPressureHighKPA": 29.5, "m_fMaxHeartForMeanArterialPressureLowBPM": 40.0, "m_eBloodState": 4 }, "m_CardiacArrestThresholds": { "m_fHeartRateLowBPM": 20.0, "m_fHeartRateHighBPM": 220.0, "m_fMeanArterialPressureLowKPA": 5.21, "m_fMeanArterialPressureHighKPA": 29.5, "m_fMaxHeartForMeanArterialPressureLowBPM": 30.0, "m_eBloodState": 5 }, "m_CardiacArrestDamageEffect": { "m_fBrainDamageRate": 0.333, "m_fEffectStartDelayS": 10.0 }, "m_bCardiacArrestForAIEnabled": 0, "m_fCPRSuccessCheckTimeoutS": 22.0, "m_fCPRSuccessChanceMin": 0.0, "m_fCPRSuccessChanceMax": 0.4, "m_fAmmoniumCarbonateSuccessChanceMin": 0.2, "m_fAmmoniumCarbonateSuccessChanceMax": 1.0, "m_fMaxRevivalResilienceRecoveryScale": 0.2, "m_fCardiacArrestMaxTotalBleedingRate": 20.0 } }}
ACE Medical Defibrillation
Section titled “ACE Medical Defibrillation”Overview
Section titled “Overview”TBD
ACE Medical Breathing
Section titled “ACE Medical Breathing”Overview
Section titled “Overview”TBD
Details
Section titled “Details”TBD
Treatments
Section titled “Treatments”Below is a proposed activity diagram for treating patients, which supersedes the one from ACE Medical Circulation: