diff options
author | Gildor <gildor55@gmail.com> | 2020-12-26 23:30:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-26 23:30:16 +0100 |
commit | 8217519ea2d64917d725d8141fb3247bcadf716b (patch) | |
tree | 9346de972f8c4d60cfecf5bc786ce2769b3fdd0b /src | |
parent | 3b2c878dd067f49ee48ddfc27c62eb4e1fe619d9 (diff) |
Core/Visibility: Split BG/Arena visibility settings (#25690)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 4 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 44 | ||||
-rw-r--r-- | src/server/game/World/World.h | 12 | ||||
-rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 20 |
4 files changed, 53 insertions, 27 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 38ea3130871..1e0af8d8d6f 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -4267,8 +4267,8 @@ BattlegroundMap::~BattlegroundMap() void BattlegroundMap::InitVisibilityDistance() { //init visibility distance for BG/Arenas - m_VisibleDistance = World::GetMaxVisibleDistanceInBGArenas(); - m_VisibilityNotifyPeriod = World::GetVisibilityNotifyPeriodInBGArenas(); + m_VisibleDistance = IsBattleArena() ? World::GetMaxVisibleDistanceInArenas() : World::GetMaxVisibleDistanceInBG(); + m_VisibilityNotifyPeriod = IsBattleArena() ? World::GetVisibilityNotifyPeriodInArenas() : World::GetVisibilityNotifyPeriodInBG(); } Map::EnterState BattlegroundMap::CannotEnter(Player* player) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 15b2e892276..cec4d760ae9 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -98,11 +98,13 @@ TC_GAME_API std::atomic<uint32> World::m_worldLoopCounter(0); TC_GAME_API float World::m_MaxVisibleDistanceOnContinents = DEFAULT_VISIBILITY_DISTANCE; TC_GAME_API float World::m_MaxVisibleDistanceInInstances = DEFAULT_VISIBILITY_INSTANCE; -TC_GAME_API float World::m_MaxVisibleDistanceInBGArenas = DEFAULT_VISIBILITY_BGARENAS; +TC_GAME_API float World::m_MaxVisibleDistanceInBG = DEFAULT_VISIBILITY_BGARENAS; +TC_GAME_API float World::m_MaxVisibleDistanceInArenas = DEFAULT_VISIBILITY_BGARENAS; TC_GAME_API int32 World::m_visibility_notify_periodOnContinents = DEFAULT_VISIBILITY_NOTIFY_PERIOD; TC_GAME_API int32 World::m_visibility_notify_periodInInstances = DEFAULT_VISIBILITY_NOTIFY_PERIOD; -TC_GAME_API int32 World::m_visibility_notify_periodInBGArenas = DEFAULT_VISIBILITY_NOTIFY_PERIOD; +TC_GAME_API int32 World::m_visibility_notify_periodInBG = DEFAULT_VISIBILITY_NOTIFY_PERIOD; +TC_GAME_API int32 World::m_visibility_notify_periodInArenas = DEFAULT_VISIBILITY_NOTIFY_PERIOD; /// World constructor World::World() @@ -1241,7 +1243,7 @@ void World::LoadConfigSettings(bool reload) if (m_int_configs[CONFIG_GUILD_BANK_EVENT_LOG_COUNT] > GUILD_BANKLOG_MAX_RECORDS) m_int_configs[CONFIG_GUILD_BANK_EVENT_LOG_COUNT] = GUILD_BANKLOG_MAX_RECORDS; - //visibility on continents + // visibility on continents m_MaxVisibleDistanceOnContinents = sConfigMgr->GetFloatDefault("Visibility.Distance.Continents", DEFAULT_VISIBILITY_DISTANCE); if (m_MaxVisibleDistanceOnContinents < 45*sWorld->getRate(RATE_CREATURE_AGGRO)) { @@ -1254,7 +1256,7 @@ void World::LoadConfigSettings(bool reload) m_MaxVisibleDistanceOnContinents = MAX_VISIBILITY_DISTANCE; } - //visibility in instances + // visibility in instances m_MaxVisibleDistanceInInstances = sConfigMgr->GetFloatDefault("Visibility.Distance.Instances", DEFAULT_VISIBILITY_INSTANCE); if (m_MaxVisibleDistanceInInstances < 45*sWorld->getRate(RATE_CREATURE_AGGRO)) { @@ -1267,22 +1269,36 @@ void World::LoadConfigSettings(bool reload) m_MaxVisibleDistanceInInstances = MAX_VISIBILITY_DISTANCE; } - //visibility in BG/Arenas - m_MaxVisibleDistanceInBGArenas = sConfigMgr->GetFloatDefault("Visibility.Distance.BGArenas", DEFAULT_VISIBILITY_BGARENAS); - if (m_MaxVisibleDistanceInBGArenas < 45*sWorld->getRate(RATE_CREATURE_AGGRO)) + // visibility in BG + m_MaxVisibleDistanceInBG = sConfigMgr->GetFloatDefault("Visibility.Distance.BG", DEFAULT_VISIBILITY_BGARENAS); + if (m_MaxVisibleDistanceInBG < 45*sWorld->getRate(RATE_CREATURE_AGGRO)) { - TC_LOG_ERROR("server.loading", "Visibility.Distance.BGArenas can't be less max aggro radius %f", 45*sWorld->getRate(RATE_CREATURE_AGGRO)); - m_MaxVisibleDistanceInBGArenas = 45*sWorld->getRate(RATE_CREATURE_AGGRO); + TC_LOG_ERROR("server.loading", "Visibility.Distance.BG can't be less max aggro radius %f", 45*sWorld->getRate(RATE_CREATURE_AGGRO)); + m_MaxVisibleDistanceInBG = 45*sWorld->getRate(RATE_CREATURE_AGGRO); } - else if (m_MaxVisibleDistanceInBGArenas > MAX_VISIBILITY_DISTANCE) + else if (m_MaxVisibleDistanceInBG > MAX_VISIBILITY_DISTANCE) { - TC_LOG_ERROR("server.loading", "Visibility.Distance.BGArenas can't be greater %f", MAX_VISIBILITY_DISTANCE); - m_MaxVisibleDistanceInBGArenas = MAX_VISIBILITY_DISTANCE; + TC_LOG_ERROR("server.loading", "Visibility.Distance.BG can't be greater %f", MAX_VISIBILITY_DISTANCE); + m_MaxVisibleDistanceInBG = MAX_VISIBILITY_DISTANCE; + } + + // Visibility in Arenas + m_MaxVisibleDistanceInArenas = sConfigMgr->GetFloatDefault("Visibility.Distance.Arenas", DEFAULT_VISIBILITY_BGARENAS); + if (m_MaxVisibleDistanceInArenas < 45*sWorld->getRate(RATE_CREATURE_AGGRO)) + { + TC_LOG_ERROR("server.loading", "Visibility.Distance.Arenas can't be less max aggro radius %f", 45*sWorld->getRate(RATE_CREATURE_AGGRO)); + m_MaxVisibleDistanceInArenas = 45*sWorld->getRate(RATE_CREATURE_AGGRO); + } + else if (m_MaxVisibleDistanceInArenas > MAX_VISIBILITY_DISTANCE) + { + TC_LOG_ERROR("server.loading", "Visibility.Distance.Arenas can't be greater %f", MAX_VISIBILITY_DISTANCE); + m_MaxVisibleDistanceInArenas = MAX_VISIBILITY_DISTANCE; } m_visibility_notify_periodOnContinents = sConfigMgr->GetIntDefault("Visibility.Notify.Period.OnContinents", DEFAULT_VISIBILITY_NOTIFY_PERIOD); - m_visibility_notify_periodInInstances = sConfigMgr->GetIntDefault("Visibility.Notify.Period.InInstances", DEFAULT_VISIBILITY_NOTIFY_PERIOD); - m_visibility_notify_periodInBGArenas = sConfigMgr->GetIntDefault("Visibility.Notify.Period.InBGArenas", DEFAULT_VISIBILITY_NOTIFY_PERIOD); + m_visibility_notify_periodInInstances = sConfigMgr->GetIntDefault("Visibility.Notify.Period.InInstances", DEFAULT_VISIBILITY_NOTIFY_PERIOD); + m_visibility_notify_periodInBG = sConfigMgr->GetIntDefault("Visibility.Notify.Period.InBG", DEFAULT_VISIBILITY_NOTIFY_PERIOD); + m_visibility_notify_periodInArenas = sConfigMgr->GetIntDefault("Visibility.Notify.Period.InArenas", DEFAULT_VISIBILITY_NOTIFY_PERIOD); ///- Load the CharDelete related config options m_int_configs[CONFIG_CHARDELETE_METHOD] = sConfigMgr->GetIntDefault("CharDelete.Method", 0); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 7727c24da87..a8c9bfba39d 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -731,11 +731,13 @@ class TC_GAME_API World // for max speed access static float GetMaxVisibleDistanceOnContinents() { return m_MaxVisibleDistanceOnContinents; } static float GetMaxVisibleDistanceInInstances() { return m_MaxVisibleDistanceInInstances; } - static float GetMaxVisibleDistanceInBGArenas() { return m_MaxVisibleDistanceInBGArenas; } + static float GetMaxVisibleDistanceInBG() { return m_MaxVisibleDistanceInBG; } + static float GetMaxVisibleDistanceInArenas() { return m_MaxVisibleDistanceInArenas; } static int32 GetVisibilityNotifyPeriodOnContinents(){ return m_visibility_notify_periodOnContinents; } static int32 GetVisibilityNotifyPeriodInInstances() { return m_visibility_notify_periodInInstances; } - static int32 GetVisibilityNotifyPeriodInBGArenas() { return m_visibility_notify_periodInBGArenas; } + static int32 GetVisibilityNotifyPeriodInBG() { return m_visibility_notify_periodInBG; } + static int32 GetVisibilityNotifyPeriodInArenas() { return m_visibility_notify_periodInArenas; } void ProcessCliCommands(); void QueueCliCommand(CliCommandHolder* commandHolder) { cliCmdQueue.add(commandHolder); } @@ -828,11 +830,13 @@ class TC_GAME_API World // for max speed access static float m_MaxVisibleDistanceOnContinents; static float m_MaxVisibleDistanceInInstances; - static float m_MaxVisibleDistanceInBGArenas; + static float m_MaxVisibleDistanceInBG; + static float m_MaxVisibleDistanceInArenas; static int32 m_visibility_notify_periodOnContinents; static int32 m_visibility_notify_periodInInstances; - static int32 m_visibility_notify_periodInBGArenas; + static int32 m_visibility_notify_periodInBG; + static int32 m_visibility_notify_periodInArenas; // CLI command holder to be thread safe LockedQueue<CliCommandHolder*> cliCmdQueue; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index b3646352142..6993bf73c34 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2171,7 +2171,8 @@ Visibility.GroupMode = 1 # # Visibility.Distance.Continents # Visibility.Distance.Instances -# Visibility.Distance.BGArenas +# Visibility.Distance.BG +# Visibility.Distance.Arenas # Description: Visibility distance to see other players or gameobjects. # Visibility on continents on retail ~100 yards. In BG/Arenas ~533. # For instances default ~170. @@ -2179,25 +2180,30 @@ Visibility.GroupMode = 1 # Min limit is max aggro radius (45) * Rate.Creature.Aggro # Default: 100 - (Visibility.Distance.Continents) # 170 - (Visibility.Distance.Instances) -# 533 - (Visibility.Distance.BGArenas) +# 533 - (Visibility.Distance.BG) +# 533 - (Visibility.Distance.Arenas) Visibility.Distance.Continents = 100 -Visibility.Distance.Instances = 170 -Visibility.Distance.BGArenas = 533 +Visibility.Distance.Instances = 170 +Visibility.Distance.BG = 533 +Visibility.Distance.Arenas = 533 # # Visibility.Notify.Period.OnContinents # Visibility.Notify.Period.InInstances -# Visibility.Notify.Period.InBGArenas +# Visibility.Notify.Period.InBG +# Visibility.Notify.Period.InArenas # Description: Time (in milliseconds) for visibility update period. Lower values may have # performance impact. # Default: 1000 - (Visibility.Notify.Period.OnContinents) # 1000 - (Visibility.Notify.Period.InInstances) -# 1000 - (Visibility.Notify.Period.InBGArenas) +# 1000 - (Visibility.Notify.Period.InBG) +# 1000 - (Visibility.Notify.Period.InArenas) Visibility.Notify.Period.OnContinents = 1000 Visibility.Notify.Period.InInstances = 1000 -Visibility.Notify.Period.InBGArenas = 1000 +Visibility.Notify.Period.InBG = 1000 +Visibility.Notify.Period.InArenas = 1000 # ################################################################################################### |