aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/World/World.cpp14
-rw-r--r--src/server/game/World/World.h1
-rw-r--r--src/server/worldserver/worldserver.conf.dist7
3 files changed, 21 insertions, 1 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 41235455857..9ec3ed3b51f 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1426,6 +1426,18 @@ void World::LoadConfigSettings(bool reload)
TC_LOG_INFO("server.loading", "VMap data directory is: {}vmaps", m_dataPath);
m_int_configs[CONFIG_MAX_WHO] = sConfigMgr->GetIntDefault("MaxWhoListReturns", 49);
+ m_int_configs[CONFIG_WHO_LIST_UPDATE_INTERVAL] = sConfigMgr->GetIntDefault("WhoList.Update.Interval", 5);
+ if (int32(m_int_configs[CONFIG_WHO_LIST_UPDATE_INTERVAL]) <= 0)
+ {
+ TC_LOG_ERROR("server.loading", "WhoList.Update.Interval ({}) must be > 0, set to default 5 seconds.", m_int_configs[CONFIG_WHO_LIST_UPDATE_INTERVAL]);
+ m_int_configs[CONFIG_WHO_LIST_UPDATE_INTERVAL] = 5;
+ }
+ if (reload)
+ {
+ m_timers[WUPDATE_WHO_LIST].SetInterval(m_int_configs[CONFIG_WHO_LIST_UPDATE_INTERVAL] * IN_MILLISECONDS);
+ m_timers[WUPDATE_WHO_LIST].Reset();
+ }
+
m_bool_configs[CONFIG_START_ALL_SPELLS] = sConfigMgr->GetBoolDefault("PlayerStart.AllSpells", false);
m_int_configs[CONFIG_HONOR_AFTER_DUEL] = sConfigMgr->GetIntDefault("HonorPointsAfterDuel", 0);
m_bool_configs[CONFIG_RESET_DUEL_COOLDOWNS] = sConfigMgr->GetBoolDefault("ResetDuelCooldowns", false);
@@ -2144,7 +2156,7 @@ void World::SetInitialWorldSettings()
m_timers[WUPDATE_CHECK_FILECHANGES].SetInterval(500);
- m_timers[WUPDATE_WHO_LIST].SetInterval(5 * IN_MILLISECONDS); // update who list cache every 5 seconds
+ m_timers[WUPDATE_WHO_LIST].SetInterval(getIntConfig(CONFIG_WHO_LIST_UPDATE_INTERVAL) * IN_MILLISECONDS); // update who list cache every 5 seconds
m_timers[WUPDATE_CHANNEL_SAVE].SetInterval(getIntConfig(CONFIG_PRESERVE_CUSTOM_CHANNEL_INTERVAL) * MINUTE * IN_MILLISECONDS);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 18bf66d7e22..4df77613332 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -324,6 +324,7 @@ enum WorldIntConfigs : uint32
CONFIG_ARENA_START_PERSONAL_RATING,
CONFIG_ARENA_START_MATCHMAKER_RATING,
CONFIG_MAX_WHO,
+ CONFIG_WHO_LIST_UPDATE_INTERVAL,
CONFIG_HONOR_AFTER_DUEL,
CONFIG_PVP_TOKEN_MAP_TYPE,
CONFIG_PVP_TOKEN_ID,
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 344f36e3660..4224f599063 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -716,6 +716,13 @@ ArenaTeam.CharterCost.5v5 = 2000000
MaxWhoListReturns = 49
#
+# WhoList.Update.Interval
+# Description: Interval in seconds for Who List to get updated
+# Default: 5 (seconds)
+
+WhoList.Update.Interval = 5
+
+#
# CharacterCreating.Disabled
# Description: Disable character creation for players based on faction.
# Default: 0 - (Enabled, All factions are allowed)