From 243b3843b860c8230eb901cfcb1f6fbbd8446d4a Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Tue, 5 Dec 2017 01:01:44 +0200 Subject: [PATCH] Fixed worn items being assigned multiple times to the same limb when equipping an item that takes up multiple slots, causing damagemodifiers to be applied multiple times. + DamageModifiers with the damage type "None" don't affect damage. Closes #68 --- Barotrauma/BarotraumaShared/Source/Characters/Limb.cs | 2 ++ .../BarotraumaShared/Source/Items/Components/Wearable.cs | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs b/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs index cc3ce8e8d..c0d435e75 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs @@ -344,6 +344,7 @@ namespace Barotrauma foreach (DamageModifier damageModifier in damageModifiers) { + if (damageModifier.DamageType == DamageType.None) continue; if (damageModifier.DamageType.HasFlag(damageType) && SectorHit(damageModifier.ArmorSector, position)) { appliedDamageModifiers.Add(damageModifier); @@ -354,6 +355,7 @@ namespace Barotrauma { foreach (DamageModifier damageModifier in wearable.WearableComponent.DamageModifiers) { + if (damageModifier.DamageType == DamageType.None) continue; if (damageModifier.DamageType.HasFlag(damageType) && SectorHit(damageModifier.ArmorSector, position)) { appliedDamageModifiers.Add(damageModifier); diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Wearable.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Wearable.cs index 9bfd51af6..168387bc8 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Wearable.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Wearable.cs @@ -97,7 +97,10 @@ namespace Barotrauma.Items.Components IsActive = true; limb[i] = equipLimb; - equipLimb.WearingItems.Add(wearableSprites[i]); + if (!equipLimb.WearingItems.Contains(wearableSprites[i])) + { + equipLimb.WearingItems.Add(wearableSprites[i]); + } } }