From 87cc6f40826f3c488c18d2c07d75b83813ed9ef0 Mon Sep 17 00:00:00 2001 From: JC Snider Date: Fri, 11 Jun 2021 16:43:56 -0400 Subject: [PATCH] Fixes #759 where variable inputs failed to trigger variable changed common events (#772) --- Intersect.Server/Entities/Player.cs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Intersect.Server/Entities/Player.cs b/Intersect.Server/Entities/Player.cs index 71480c818e..63a22940f6 100644 --- a/Intersect.Server/Entities/Player.cs +++ b/Intersect.Server/Entities/Player.cs @@ -5411,6 +5411,7 @@ public void RespondToEventInput(Guid eventId, int newValue, string newValueStrin } var success = false; + var changed = false; if (!canceled) { @@ -5419,6 +5420,10 @@ public void RespondToEventInput(Guid eventId, int newValue, string newValueStrin case VariableDataTypes.Integer: if (newValue >= cmd.Minimum && newValue <= cmd.Maximum) { + if (value.Integer != newValue) + { + changed = true; + } value.Integer = newValue; success = true; } @@ -5427,6 +5432,10 @@ public void RespondToEventInput(Guid eventId, int newValue, string newValueStrin case VariableDataTypes.Number: if (newValue >= cmd.Minimum && newValue <= cmd.Maximum) { + if (value.Number != newValue) + { + changed = true; + } value.Number = newValue; success = true; } @@ -5436,12 +5445,20 @@ public void RespondToEventInput(Guid eventId, int newValue, string newValueStrin if (newValueString.Length >= cmd.Minimum && newValueString.Length <= cmd.Maximum) { + if (value.String != newValueString) + { + changed = true; + } value.String = newValueString; success = true; } break; case VariableDataTypes.Boolean: + if (value.Boolean != newValue > 0) + { + changed = true; + } value.Boolean = newValue > 0; success = true; @@ -5453,7 +5470,7 @@ public void RespondToEventInput(Guid eventId, int newValue, string newValueStrin if (cmd.VariableType == VariableTypes.PlayerVariable) { var variable = GetVariable(cmd.VariableId); - if (variable.Value?.Value != value.Value) + if (changed) { variable.Value = value; StartCommonEventsWithTrigger(CommonEventTrigger.PlayerVariableChange, "", cmd.VariableId.ToString()); @@ -5462,7 +5479,7 @@ public void RespondToEventInput(Guid eventId, int newValue, string newValueStrin else if (cmd.VariableType == VariableTypes.ServerVariable) { var variable = ServerVariableBase.Get(cmd.VariableId); - if (variable.Value?.Value != value.Value) + if (changed) { variable.Value = value; StartCommonEventsWithTriggerForAll(CommonEventTrigger.ServerVariableChange, "", cmd.VariableId.ToString());