From 274a29bada0b1dddeeb292fb37a2b675d007e60e Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Fri, 29 Jun 2018 17:39:10 +0300 Subject: [PATCH] Fixed fabricated items always appearing to be in full condition client-side (e.g. oxygen tanks which should be empty after being fabricated). Cherry-picked from 64896b0f. Closes #561 --- .../Source/Items/Components/Machines/Fabricator.cs | 1 - Barotrauma/BarotraumaShared/Source/Items/Item.cs | 13 +++++-------- .../Source/Networking/EntitySpawner.cs | 13 +++++++------ 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs index 4c553b0ef..ca08ce693 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs @@ -291,7 +291,6 @@ namespace Barotrauma.Items.Components } } - //TODO: apply OutCondition if (containers[1].Inventory.Items.All(i => i != null)) { Entity.Spawner.AddToSpawnQueue(fabricatedItem.TargetItem, item.Position, item.Submarine, fabricatedItem.TargetItem.Health * fabricatedItem.OutCondition); diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index 3eea92d2e..1ff163899 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -344,18 +344,18 @@ namespace Barotrauma } } - public Item(ItemPrefab itemPrefab, Vector2 position, Submarine submarine, float? spawnCondition = null) + public Item(ItemPrefab itemPrefab, Vector2 position, Submarine submarine) : this(new Rectangle( (int)(position.X - itemPrefab.sprite.size.X / 2), (int)(position.Y + itemPrefab.sprite.size.Y / 2), (int)itemPrefab.sprite.size.X, (int)itemPrefab.sprite.size.Y), - itemPrefab, submarine, spawnCondition) + itemPrefab, submarine) { } - public Item(Rectangle newRect, ItemPrefab itemPrefab, Submarine submarine, float? spawnCondition = null) + public Item(Rectangle newRect, ItemPrefab itemPrefab, Submarine submarine) : base(itemPrefab, submarine) { prefab = itemPrefab; @@ -370,7 +370,7 @@ namespace Barotrauma rect = newRect; - condition = (float)(spawnCondition ?? prefab.Health); + condition = prefab.Health; lastSentCondition = condition; XElement element = prefab.ConfigElement; @@ -425,11 +425,8 @@ namespace Barotrauma //and add them to the corresponding statuseffect list foreach (List componentEffectList in ic.statusEffectLists.Values) { - ActionType actionType = componentEffectList.First().type; - - List statusEffectList; - if (!statusEffectLists.TryGetValue(actionType, out statusEffectList)) + if (!statusEffectLists.TryGetValue(actionType, out List statusEffectList)) { statusEffectList = new List(); statusEffectLists.Add(actionType, statusEffectList); diff --git a/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs b/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs index 961abccf2..14bd2ad22 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs @@ -22,13 +22,13 @@ namespace Barotrauma public readonly Vector2 Position; public readonly Inventory Inventory; public readonly Submarine Submarine; - public readonly float Condition; + public readonly float Condition; public ItemSpawnInfo(ItemPrefab prefab, Vector2 worldPosition, float? condition = null) { Prefab = prefab; Position = worldPosition; - Condition = (float)(condition ?? prefab.Health); + Condition = condition ?? prefab.Health; } public ItemSpawnInfo(ItemPrefab prefab, Vector2 position, Submarine sub, float? condition = null) @@ -36,14 +36,14 @@ namespace Barotrauma Prefab = prefab; Position = position; Submarine = sub; - Condition = (float)(condition ?? prefab.Health); + Condition = condition ?? prefab.Health; } public ItemSpawnInfo(ItemPrefab prefab, Inventory inventory, float? condition = null) { Prefab = prefab; Inventory = inventory; - Condition = (float)(condition ?? prefab.Health); + Condition = condition ?? prefab.Health; } public Entity Spawn() @@ -52,13 +52,14 @@ namespace Barotrauma if (Inventory != null) { - spawnedItem = new Item(Prefab, Vector2.Zero, null, Condition); + spawnedItem = new Item(Prefab, Vector2.Zero, null); Inventory.TryPutItem(spawnedItem, null, spawnedItem.AllowedSlots); } else { - spawnedItem = new Item(Prefab, Position, Submarine, Condition); + spawnedItem = new Item(Prefab, Position, Submarine); } + spawnedItem.Condition = Condition; return spawnedItem; }