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,