diff --git a/addons/medical_core/scripts/Game/ACE_Medical_MedicalKit/Components/SupportStation/SCR_HealSupportStationComponent.c b/addons/medical_core/scripts/Game/ACE_Medical_MedicalKit/Components/SupportStation/SCR_HealSupportStationComponent.c new file mode 100644 index 000000000..5aa1d9476 --- /dev/null +++ b/addons/medical_core/scripts/Game/ACE_Medical_MedicalKit/Components/SupportStation/SCR_HealSupportStationComponent.c @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------------------------ +//! Apply settings to medical kit +modded class SCR_HealSupportStationComponent : SCR_BaseDamageHealSupportStationComponent +{ + [RplProp(onRplName: "ACE_Medical_OnMedicalKitSettingsChanged")] + protected float m_fACE_Medical_MedicalKitMaxHealScaled = 1; + + [RplProp(onRplName: "ACE_Medical_OnMedicalKitSettingsChanged")] + protected float m_fACE_Medical_HealingPerExecution = 10; + + //------------------------------------------------------------------------------------------------ + override protected void DelayedInit(IEntity owner) + { + super.DelayedInit(owner); + + if (!Replication.IsServer() || !owner) + return; + + ACE_Medical_Core_Settings settings = ACE_SettingsHelperT.GetModSettings(); + if (!settings) + return; + + // Set how much medical kits can heal + if (InventoryItemComponent.Cast(owner.FindComponent(InventoryItemComponent))) + { + m_fACE_Medical_MedicalKitMaxHealScaled = settings.m_fMedicalKitMaxHealScaled; + m_fACE_Medical_HealingPerExecution = settings.m_fMedicalKitHealingPerExecution; + ACE_Medical_OnMedicalKitSettingsChanged(); + Replication.BumpMe(); + } + } + + //------------------------------------------------------------------------------------------------ + protected void ACE_Medical_OnMedicalKitSettingsChanged() + { + m_fMaxHealScaled = m_fACE_Medical_MedicalKitMaxHealScaled; + m_iDamageHealedEachExecution = m_fACE_Medical_HealingPerExecution; + } +} diff --git a/addons/medical_core/scripts/Game/ACE_Medical_MedicalKit/Settings/ACE_Medical_Core_Settings.c b/addons/medical_core/scripts/Game/ACE_Medical_MedicalKit/Settings/ACE_Medical_Core_Settings.c new file mode 100644 index 000000000..93b7e8fa4 --- /dev/null +++ b/addons/medical_core/scripts/Game/ACE_Medical_MedicalKit/Settings/ACE_Medical_Core_Settings.c @@ -0,0 +1,10 @@ +//------------------------------------------------------------------------------------------------ +[BaseContainerProps()] +modded class ACE_Medical_Core_Settings : ACE_ModSettings +{ + [Attribute(defvalue: "1", desc: "Maximum scaled health (from 0 to 1) that a medical kit can heal to outside of medical facilities.", uiwidget: UIWidgets.Slider, params: "0 1")] + float m_fMedicalKitMaxHealScaled; + + [Attribute(defvalue: "10", desc: "Amount of health that is restored each execution of the medical kit outside of medical facilities.", uiwidget: UIWidgets.Slider, params: "0 inf")] + float m_fMedicalKitHealingPerExecution; +} diff --git a/docs/src/content/docs/components/medical.mdx b/docs/src/content/docs/components/medical.mdx index f414b28bd..99c3e0d7d 100644 --- a/docs/src/content/docs/components/medical.mdx +++ b/docs/src/content/docs/components/medical.mdx @@ -74,6 +74,8 @@ Summary of settings that can be modified in the server config: | `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_fMedicalKitMaxHealScaled` | Type: `float`**
Range: 0 to 1
Default: `1.0` | Maximum scaled health (from 0 to 1) that a medical kit can heal to outside of medical facilities. | +| `m_fMedicalKitHealingPerExecution` | Type: `float`**
Range: 0 to ∞
Default: `10.0` | Amount of health that is restored each execution of the medical kit 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 | @@ -101,6 +103,8 @@ Template for the `missionHeader` in a server config: "m_fBleedingRateScale": 1.0, "m_fMaxTotalBleedingRate": -1.0, "m_fBloodRegenScale": 1.0, + "m_fMedicalKitMaxHealScaled": 1.0, + "m_fMedicalKitHealingPerExecution": 10.0, "m_ePainScreenEffectType": 1, "m_fSecondChanceResilienceRegenScale": 0.0, "m_fDefaultSecondChance": 1.0,