aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Maps/Map.cpp5
-rw-r--r--src/server/game/World/WorldStates/WorldStateMgr.cpp5
2 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 76d2b26a789..15e6a09b2b3 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -698,8 +698,11 @@ int32 Map::GetWorldStateValue(int32 worldStateId) const
void Map::SetWorldStateValue(int32 worldStateId, int32 value, bool hidden)
{
- auto itr = _worldStateValues.try_emplace(worldStateId, 0).first;
+ auto [itr, inserted] = _worldStateValues.try_emplace(worldStateId, 0);
int32 oldValue = itr->second;
+ if (oldValue == value && !inserted)
+ return;
+
itr->second = value;
WorldStateTemplate const* worldStateTemplate = sWorldStateMgr->GetWorldStateTemplate(worldStateId);
diff --git a/src/server/game/World/WorldStates/WorldStateMgr.cpp b/src/server/game/World/WorldStates/WorldStateMgr.cpp
index 232fa1a3e61..03bd704584d 100644
--- a/src/server/game/World/WorldStates/WorldStateMgr.cpp
+++ b/src/server/game/World/WorldStates/WorldStateMgr.cpp
@@ -167,8 +167,11 @@ void WorldStateMgr::SetValue(int32 worldStateId, int32 value, bool hidden, Map*
WorldStateTemplate const* worldStateTemplate = GetWorldStateTemplate(worldStateId);
if (!worldStateTemplate || worldStateTemplate->MapIds.empty())
{
- auto itr = _realmWorldStateValues.try_emplace(worldStateId, 0).first;
+ auto [itr, inserted] = _realmWorldStateValues.try_emplace(worldStateId, 0);
int32 oldValue = itr->second;
+ if (oldValue == value && !inserted)
+ return;
+
itr->second = value;
if (worldStateTemplate)