diff --git a/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs b/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs index 45cb782f7..ab3dedaec 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs @@ -50,7 +50,14 @@ namespace Barotrauma } Items[slotIndex].ApplyStatusEffects(ActionType.OnUse, 1.0f, character); - + foreach (ItemComponent ic in Items[slotIndex].components) + { + if (ic.DeleteOnUse) + { + Entity.Spawner.AddToRemoveQueue(Items[slotIndex]); + } + } + return true; } diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/MeleeWeapon.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/MeleeWeapon.cs index f23aeab61..6b339760c 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/MeleeWeapon.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/MeleeWeapon.cs @@ -288,6 +288,11 @@ namespace Barotrauma.Items.Components if (targetCharacter != null) //TODO: Allow OnUse to happen on structures too maybe?? ApplyStatusEffects(ActionType.OnUse, 1.0f, targetCharacter != null ? targetCharacter : null); + if (DeleteOnUse) + { + Entity.Spawner.AddToRemoveQueue(item); + } + return true; } } diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index a1d078fce..1c2ff8a03 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -1166,7 +1166,10 @@ namespace Barotrauma } } - if (remove) Remove(); + if (remove) + { + Spawner.AddToRemoveQueue(this); + } } public void SecondaryUse(float deltaTime, Character character = null) @@ -1845,7 +1848,16 @@ namespace Barotrauma public override void Remove() { base.Remove(); - + + foreach (Character character in Character.CharacterList) + { + if (character.SelectedConstruction == this) character.SelectedConstruction = null; + for (int i = 0; i < character.SelectedItems.Length; i++) + { + if (character.SelectedItems[i] == this) character.SelectedItems[i] = null; + } + } + if (parentInventory != null) { parentInventory.RemoveItem(this);