diff options
-rw-r--r-- | src/server/game/Garrison/GarrisonMap.cpp | 4 | ||||
-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 |
5 files changed, 55 insertions, 29 deletions
diff --git a/src/server/game/Garrison/GarrisonMap.cpp b/src/server/game/Garrison/GarrisonMap.cpp index ca1aab37412..33058bac1b6 100644 --- a/src/server/game/Garrison/GarrisonMap.cpp +++ b/src/server/game/Garrison/GarrisonMap.cpp @@ -128,8 +128,8 @@ Garrison* GarrisonMap::GetGarrison() void GarrisonMap::InitVisibilityDistance() { //init visibility distance for instances - m_VisibleDistance = World::GetMaxVisibleDistanceInBGArenas(); - m_VisibilityNotifyPeriod = World::GetVisibilityNotifyPeriodInBGArenas(); + m_VisibleDistance = World::GetMaxVisibleDistanceInInstances(); + m_VisibilityNotifyPeriod = World::GetVisibilityNotifyPeriodInInstances(); } bool GarrisonMap::AddPlayerToMap(Player* player, bool initPlayer /*= true*/) diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 12531cc911b..7473ef1d374 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -4448,8 +4448,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 67bd521f23d..c712675dd5e 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -110,11 +110,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() @@ -1357,7 +1359,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)) { @@ -1370,7 +1372,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)) { @@ -1383,22 +1385,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 f3d18a0b989..982afb30fae 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -763,11 +763,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); } @@ -873,11 +875,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 286bace2a49..19e4f1f6f24 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2265,7 +2265,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. @@ -2273,25 +2274,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 # ################################################################################################### |