diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 8460da409..704140c61 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -336,8 +336,13 @@ namespace Barotrauma if (value <= 0.0f) { - if (huskInfection != null && huskInfection.State == HuskInfection.InfectionState.Active) return; - huskInfection = null; + if (huskInfection != null) + { + //already active, can't cure anymore + if (huskInfection.State == HuskInfection.InfectionState.Active) return; + huskInfection.Remove(this); + huskInfection = null; + } } else { diff --git a/Subsurface/Source/Characters/HuskInfection.cs b/Subsurface/Source/Characters/HuskInfection.cs index 4afbcff8f..2a0767cb2 100644 --- a/Subsurface/Source/Characters/HuskInfection.cs +++ b/Subsurface/Source/Characters/HuskInfection.cs @@ -143,6 +143,12 @@ namespace Barotrauma character.AnimController.AddJoint(jointElement); } + public void Remove(Character character) + { + if (character != null) + character.OnDeath -= CharacterDead; + } + private void CharacterDead(Character character, CauseOfDeath causeOfDeath) { var husk = Character.Create(