From 6cb6e26b94c09cde89e6339827add382dd6e8401 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Tue, 14 Aug 2018 12:01:56 +0300 Subject: [PATCH] Servers can modify all Editable item properties using ChangeProperty events (not just InGameEditable ones). Closes #675 --- Barotrauma/BarotraumaClient/Source/Items/Item.cs | 4 ++-- Barotrauma/BarotraumaShared/Source/Items/Item.cs | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Items/Item.cs b/Barotrauma/BarotraumaClient/Source/Items/Item.cs index 3ef3f3a53..d77fe94e6 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Item.cs @@ -405,7 +405,7 @@ namespace Barotrauma ApplyStatusEffects(actionType, 1.0f, target, true); break; case NetEntityEvent.Type.ChangeProperty: - ReadPropertyChange(msg); + ReadPropertyChange(msg, false); break; case NetEntityEvent.Type.Invalid: break; @@ -445,7 +445,7 @@ namespace Barotrauma //on the character of the client who sent the message break; case NetEntityEvent.Type.ChangeProperty: - WritePropertyChange(msg, extraData); + WritePropertyChange(msg, extraData, true); break; } msg.WritePadBits(); diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index ca526c008..76dc69276 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -1392,7 +1392,7 @@ namespace Barotrauma case NetEntityEvent.Type.ChangeProperty: try { - WritePropertyChange(msg, extraData); + WritePropertyChange(msg, extraData, false); } catch (Exception e) { @@ -1471,14 +1471,14 @@ namespace Barotrauma break; case NetEntityEvent.Type.ChangeProperty: - ReadPropertyChange(msg); + ReadPropertyChange(msg, true); break; } } - private void WritePropertyChange(NetBuffer msg, object[] extraData) + private void WritePropertyChange(NetBuffer msg, object[] extraData, bool inGameEditableOnly) { - var allProperties = GetProperties(); + var allProperties = inGameEditableOnly ? GetProperties() : GetProperties(); SerializableProperty property = extraData[1] as SerializableProperty; if (property != null) { @@ -1552,9 +1552,9 @@ namespace Barotrauma } } - private void ReadPropertyChange(NetBuffer msg) + private void ReadPropertyChange(NetBuffer msg, bool inGameEditableOnly) { - var allProperties = GetProperties(); + var allProperties = inGameEditableOnly ? GetProperties() : GetProperties(); if (allProperties.Count == 0) return; int propertyIndex = 0;