From b94086ee0a4905c380698cac003339310d71c89f Mon Sep 17 00:00:00 2001 From: corentt <36075110+corentt@users.noreply.github.com> Date: Sat, 17 Sep 2022 16:26:39 +0200 Subject: [PATCH] Hunger and thirst won't infinitely decrease below zero (#11367) --- Content.Server/Nutrition/Components/HungerComponent.cs | 4 ++-- Content.Server/Nutrition/EntitySystems/ThirstSystem.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Server/Nutrition/Components/HungerComponent.cs b/Content.Server/Nutrition/Components/HungerComponent.cs index 977a3211aa..5d32b71be3 100644 --- a/Content.Server/Nutrition/Components/HungerComponent.cs +++ b/Content.Server/Nutrition/Components/HungerComponent.cs @@ -151,14 +151,14 @@ namespace Content.Server.Nutrition.Components public void UpdateFood(float amount) { - _currentHunger = Math.Min(_currentHunger + amount, HungerThresholds[HungerThreshold.Overfed]); + _currentHunger = Math.Clamp(_currentHunger + amount, HungerThresholds[HungerThreshold.Dead], HungerThresholds[HungerThreshold.Overfed]); } // TODO: If mob is moving increase rate of consumption? // Should use a multiplier as something like a disease would overwrite decay rate. public void OnUpdate(float frametime) { - _currentHunger -= frametime * ActualDecayRate; + UpdateFood(- frametime * ActualDecayRate); UpdateCurrentThreshold(); } diff --git a/Content.Server/Nutrition/EntitySystems/ThirstSystem.cs b/Content.Server/Nutrition/EntitySystems/ThirstSystem.cs index ac84b8c756..902505b407 100644 --- a/Content.Server/Nutrition/EntitySystems/ThirstSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/ThirstSystem.cs @@ -72,7 +72,7 @@ namespace Content.Server.Nutrition.EntitySystems public void UpdateThirst(ThirstComponent component, float amount) { - component.CurrentThirst = Math.Min(component.CurrentThirst + amount, component.ThirstThresholds[ThirstThreshold.OverHydrated]); + component.CurrentThirst = Math.Clamp(component.CurrentThirst + amount, component.ThirstThresholds[ThirstThreshold.Dead], component.ThirstThresholds[ThirstThreshold.OverHydrated]); } public void ResetThirst(ThirstComponent component) @@ -153,7 +153,7 @@ namespace Content.Server.Nutrition.EntitySystems { foreach (var component in EntityManager.EntityQuery()) { - component.CurrentThirst -= component.ActualDecayRate; + UpdateThirst(component, - component.ActualDecayRate); var calculatedThirstThreshold = GetThirstThreshold(component, component.CurrentThirst); if (calculatedThirstThreshold != component.CurrentThirstThreshold) {