From aae75ce85dbbbac23ece9eef1dc3ffba01232952 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 9 Jul 2022 12:46:08 -0400 Subject: [PATCH] Core/WorldStates: Skip sending SMSG_UPDATE_WORLD_STATE when value does not change Port From (https://github.com/TrinityCore/TrinityCore/commit/db79e29121b74dc62da1b68cf1e25fb8e31ffbdf) --- Source/Game/Maps/Map.cs | 9 ++++++++- Source/Game/World/WorldStateManager.cs | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Source/Game/Maps/Map.cs b/Source/Game/Maps/Map.cs index 7f2a9f700..a2f69ad45 100644 --- a/Source/Game/Maps/Map.cs +++ b/Source/Game/Maps/Map.cs @@ -586,7 +586,14 @@ namespace Game.Maps public void SetWorldStateValue(int worldStateId, int value, bool hidden) { - int oldValue = _worldStateValues.LookupByKey(worldStateId); + int oldValue = 0; + if (!_worldStateValues.TryAdd(worldStateId, 0)) + { + oldValue = _worldStateValues[worldStateId]; + if (oldValue == value) + return; + } + _worldStateValues[worldStateId] = value; WorldStateTemplate worldStateTemplate = Global.WorldStateMgr.GetWorldStateTemplate(worldStateId); diff --git a/Source/Game/World/WorldStateManager.cs b/Source/Game/World/WorldStateManager.cs index 94f4afa83..2e338c55b 100644 --- a/Source/Game/World/WorldStateManager.cs +++ b/Source/Game/World/WorldStateManager.cs @@ -175,7 +175,14 @@ namespace Game WorldStateTemplate worldStateTemplate = GetWorldStateTemplate(worldStateId); if (worldStateTemplate == null || worldStateTemplate.MapIds.Empty()) { - int oldValue = _realmWorldStateValues.LookupByKey(worldStateId); + int oldValue = 0; + if (!_realmWorldStateValues.TryAdd(worldStateId, 0)) + { + oldValue = _realmWorldStateValues[worldStateId]; + if (oldValue == value) + return; + } + _realmWorldStateValues[worldStateId] = value; if (worldStateTemplate != null)