From 7a7c92a2ce558df99c3a58f1b8e259e6a9e236c8 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Thu, 9 Aug 2018 12:39:14 +0300 Subject: [PATCH] Server writes item condition at full accuracy instead of just using 8 bits. The more inaccurate condition caused issues when the value was just above some specific threshold (e.g. minimum condition for a fabricator ingredient) server-side and below it client-side. Closes #616 --- Barotrauma/BarotraumaClient/Source/Items/Item.cs | 3 +-- Barotrauma/BarotraumaShared/Source/Items/Item.cs | 5 +---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Items/Item.cs b/Barotrauma/BarotraumaClient/Source/Items/Item.cs index 05c5f7a0b..3ef3f3a53 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Item.cs @@ -381,8 +381,7 @@ namespace Barotrauma (components[containerIndex] as ItemContainer).Inventory.ClientRead(type, msg, sendingTime); break; case NetEntityEvent.Type.Status: - condition = msg.ReadRangedSingle(0.0f, prefab.Health, 8); - + condition = msg.ReadSingle(); if (FixRequirements.Count > 0) { if (Condition <= 0.0f) diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index bd0b18f85..ca526c008 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -1375,10 +1375,7 @@ namespace Barotrauma (components[containerIndex] as ItemContainer).Inventory.ServerWrite(msg, c); break; case NetEntityEvent.Type.Status: - //clamp to (MaxHealth / 255.0f) if condition > 0.0f - //to prevent condition from being rounded down to 0.0 even if the item is not broken - msg.WriteRangedSingle(condition > 0.0f ? Math.Max(condition, prefab.Health / 255.0f) : 0.0f, 0.0f, prefab.Health, 8); - + msg.Write(condition); if (condition <= 0.0f && FixRequirements.Count > 0) { for (int i = 0; i < FixRequirements.Count; i++)