mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Visibility: Split BG/Arena visibility settings (#25690)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
#
|
||||
###################################################################################################
|
||||
|
||||
Reference in New Issue
Block a user