diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs index 7a1e32758..4c553b0ef 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs @@ -241,6 +241,12 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { + if (fabricatedItem == null) + { + CancelFabricating(); + return; + } + #if CLIENT if (progressBar != null) { diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index f7bb4f920..21548bfcb 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -1763,13 +1763,14 @@ namespace Barotrauma } } + List unloadedComponents = new List(item.components); foreach (XElement subElement in element.Elements()) { - ItemComponent component = item.components.Find(x => x.Name == subElement.Name.ToString()); - + ItemComponent component = unloadedComponents.Find(x => x.Name == subElement.Name.ToString()); if (component == null) continue; component.Load(subElement); + unloadedComponents.Remove(component); } }