diff --git a/Barotrauma/BarotraumaClient/Source/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaClient/Source/Characters/Health/CharacterHealth.cs index 2bcb03cb3..3799e1756 100644 --- a/Barotrauma/BarotraumaClient/Source/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaClient/Source/Characters/Health/CharacterHealth.cs @@ -1427,6 +1427,8 @@ namespace Barotrauma { foreach (Limb limb in Character.AnimController.Limbs) { + if (limb.HealthIndex < 0 || limb.HealthIndex >= limbHealths.Count) { continue; } + limb.BurnOverlayStrength = 0.0f; limb.DamageOverlayStrength = 0.0f; if (limbHealths[limb.HealthIndex].Afflictions.Count == 0) continue; diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaShared/Source/Characters/Health/CharacterHealth.cs index 8a2aa9ca9..4f5769f34 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Health/CharacterHealth.cs @@ -266,6 +266,12 @@ namespace Barotrauma public Affliction GetAffliction(string afflictionType, Limb limb) { + if (limb.HealthIndex < 0 || limb.HealthIndex >= limbHealths.Count) + { + DebugConsole.ThrowError("Limb health index out of bounds. Character\"" + Character.Name + + "\" only has health configured for" + limbHealths.Count + " limbs but the limb " + limb.type + " is targeting index " + limb.HealthIndex); + return null; + } foreach (Affliction affliction in limbHealths[limb.HealthIndex].Afflictions) { if (affliction.Prefab.AfflictionType == afflictionType) return affliction; @@ -467,7 +473,13 @@ namespace Barotrauma private void AddLimbAffliction(Limb limb, Affliction newAffliction) { - if (!newAffliction.Prefab.LimbSpecific) return; + if (!newAffliction.Prefab.LimbSpecific || limb == null) return; + if (limb.HealthIndex < 0 || limb.HealthIndex >= limbHealths.Count) + { + DebugConsole.ThrowError("Limb health index out of bounds. Character\"" + Character.Name + + "\" only has health configured for" + limbHealths.Count + " limbs but the limb " + limb.type + " is targeting index " + limb.HealthIndex); + return; + } AddLimbAffliction(limbHealths[limb.HealthIndex], newAffliction); }