From 629df6aab32a2464793cccbb86299e4a4fe9214d Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 7 Jan 2017 14:45:17 +0200 Subject: [PATCH] HuskInfection unsubscribes from the OnDeath event when the infection is cured (-> cured characters don't turn into husks when they die) --- Subsurface/Source/Characters/Character.cs | 9 +++++++-- Subsurface/Source/Characters/HuskInfection.cs | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) 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(