aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGildor <gildor55@gmail.com>2020-12-26 23:30:16 +0100
committerShauren <shauren.trinity@gmail.com>2022-03-05 16:25:30 +0100
commit6b681ebc8aaaf79c1865c8c01f78c736a72e6e7d (patch)
tree248d78b72895447ffad4a76b9bc2d68d71617871
parent2e7277ada4a23fc5bf786dd6c4be1f3c43bd381d (diff)
Core/Visibility: Split BG/Arena visibility settings (#25690)
(cherry picked from commit 8217519ea2d64917d725d8141fb3247bcadf716b)
-rw-r--r--src/server/game/Garrison/GarrisonMap.cpp4
-rw-r--r--src/server/game/Maps/Map.cpp4
-rw-r--r--src/server/game/World/World.cpp44
-rw-r--r--src/server/game/World/World.h12
-rw-r--r--src/server/worldserver/worldserver.conf.dist20
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
#
###################################################################################################