Skip to content

Commit

Permalink
Fixes #759 where variable inputs failed to trigger variable changed c…
Browse files Browse the repository at this point in the history
…ommon events (#772)
  • Loading branch information
jcsnider committed Jun 11, 2021
1 parent f7449f9 commit 87cc6f4
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions Intersect.Server/Entities/Player.cs
Expand Up @@ -5411,6 +5411,7 @@ public void RespondToEventInput(Guid eventId, int newValue, string newValueStrin
}

var success = false;
var changed = false;

if (!canceled)
{
Expand All @@ -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;
}
Expand All @@ -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;
}
Expand All @@ -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;

Expand All @@ -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());
Expand All @@ -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());
Expand Down

0 comments on commit 87cc6f4

Please sign in to comment.