From c85cf6349448672a286bb612e52f80910e78a261 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Thu, 18 Apr 2019 12:03:22 +0300 Subject: [PATCH] (99fb00391) Don't allow deconstructing items that don't give anything when deconstructed. Closes #690 --- .../Items/Components/Machines/Deconstructor.cs | 17 +++++++++++------ .../BarotraumaShared/Source/Items/ItemPrefab.cs | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs index 6fe79715c..777ecb668 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs @@ -71,8 +71,10 @@ namespace Barotrauma.Items.Components var targetItem = inputContainer.Inventory.Items.LastOrDefault(i => i != null); if (targetItem == null) { return; } - progressState = Math.Min(progressTimer / targetItem.Prefab.DeconstructTime, 1.0f); - if (progressTimer > targetItem.Prefab.DeconstructTime) + float deconstructTime = targetItem.Prefab.DeconstructItems.Any() ? targetItem.Prefab.DeconstructTime : 1.0f; + + progressState = Math.Min(progressTimer / deconstructTime, 1.0f); + if (progressTimer > deconstructTime) { foreach (DeconstructItem deconstructProduct in targetItem.Prefab.DeconstructItems) { @@ -100,10 +102,13 @@ namespace Barotrauma.Items.Components } } - inputContainer.Inventory.RemoveItem(targetItem); - Entity.Spawner.AddToRemoveQueue(targetItem); - MoveInputQueue(); - PutItemsToLinkedContainer(); + if (targetItem.Prefab.DeconstructItems.Any()) + { + inputContainer.Inventory.RemoveItem(targetItem); + Entity.Spawner.AddToRemoveQueue(targetItem); + MoveInputQueue(); + PutItemsToLinkedContainer(); + } if (inputContainer.Inventory.Items.Any(i => i != null)) { diff --git a/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs b/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs index f4c676d93..c9301ebb3 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs @@ -566,7 +566,7 @@ namespace Barotrauma break; #endif case "deconstruct": - DeconstructTime = subElement.GetAttributeFloat("time", 10.0f); + DeconstructTime = subElement.GetAttributeFloat("time", 1.0f); foreach (XElement deconstructItem in subElement.Elements()) {