diff --git a/addons/medical_core/scripts/Game/@ACE_Medical_Core/Components/Damage/SCR_CharacterDamageManagerComponent.c b/addons/medical_core/scripts/Game/@ACE_Medical_Core/Components/Damage/SCR_CharacterDamageManagerComponent.c
index 1b7e22f3..20259d14 100644
--- a/addons/medical_core/scripts/Game/@ACE_Medical_Core/Components/Damage/SCR_CharacterDamageManagerComponent.c
+++ b/addons/medical_core/scripts/Game/@ACE_Medical_Core/Components/Damage/SCR_CharacterDamageManagerComponent.c
@@ -48,6 +48,19 @@ modded class SCR_CharacterDamageManagerComponent : SCR_DamageManagerComponent
m_ACE_Medical_LastStruckPhysicalHitZone = struckPhysicalHitZone;
}
+ //-----------------------------------------------------------------------------------------------------------
+ override void Kill(notnull Instigator instigator)
+ {
+ if (s_ACE_Medical_Core_Settings.m_bPlayerCannotDie)
+ {
+ SCR_ECharacterControlType controlType = SCR_CharacterHelper.GetCharacterControlType(GetOwner());
+ if (controlType != SCR_ECharacterControlType.AI && controlType != SCR_ECharacterControlType.POSSESSED_AI)
+ return;
+ }
+
+ super.Kill(instigator);
+ }
+
//-----------------------------------------------------------------------------------------------------------
protected override void OnDamageStateChanged(EDamageState newState, EDamageState previousDamageState, bool isJIP)
{
diff --git a/addons/medical_core/scripts/Game/@ACE_Medical_Core/Settings/ACE_Medical_Core_Settings.c b/addons/medical_core/scripts/Game/@ACE_Medical_Core/Settings/ACE_Medical_Core_Settings.c
index 7e7ab057..09fd9ef3 100644
--- a/addons/medical_core/scripts/Game/@ACE_Medical_Core/Settings/ACE_Medical_Core_Settings.c
+++ b/addons/medical_core/scripts/Game/@ACE_Medical_Core/Settings/ACE_Medical_Core_Settings.c
@@ -10,4 +10,7 @@ class ACE_Medical_Core_Settings : ACE_ModSettings
[Attribute(defvalue: "0.33", desc: "Can only apply epinephrine when patient has at least this health (ignored in advanced medication).", uiwidget: UIWidgets.Slider, params: "0 1")]
float m_fMinHealthScaledForEpinephrine;
+
+ [Attribute(defvalue: "false", desc: "Whether players can never die")]
+ bool m_bPlayerCannotDie;
}
diff --git a/docs/src/content/docs/components/medical.mdx b/docs/src/content/docs/components/medical.mdx
index f414b28b..bd168ac7 100644
--- a/docs/src/content/docs/components/medical.mdx
+++ b/docs/src/content/docs/components/medical.mdx
@@ -70,6 +70,7 @@ Summary of settings that can be modified in the server config:
| `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_fResilienceDamageScale` | Type: `float`**
Range: 0 to ∞
Default: `1.0` | Resilience damage scale. All incoming damage to the resilience hitzone will be multiplied by this factor. Lower values make characters less likely to fall unconscious. |
| `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_bPlayerCannotDie` | Type: `bool`*
Default: `false` | Whether players can never die |
| `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) |
@@ -97,6 +98,7 @@ Template for the `missionHeader` in a server config:
"m_fDefaultResilienceRegenScale": 0.3,
"m_fResilienceDamageScale": 1.0,
"m_fMinHealthScaledForEpinephrine": 0.33,
+ "m_bPlayerCannotDie": 0,
"m_bBleedOutForPlayersEnabled": 1,
"m_fBleedingRateScale": 1.0,
"m_fMaxTotalBleedingRate": -1.0,