AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
World Class Reference

The World. More...

#include "World.h"

Inheritance diagram for World:
IWorld

Public Types

typedef std::list< WorldSession * > Queue
 

Public Member Functions

 World ()
 World constructor.
 
 ~World () override
 World destructor.
 
WorldSessionFindSession (uint32 id) const override
 Find a session by its id.
 
WorldSessionFindOfflineSession (uint32 id) const override
 
WorldSessionFindOfflineSessionForCharacterGUID (ObjectGuid::LowType guidLow) const override
 
void AddSession (WorldSession *s) override
 
bool KickSession (uint32 id) override
 Remove a given session.
 
void UpdateMaxSessionCounters () override
 Get the number of current active sessions.
 
const SessionMapGetAllSessions () const override
 
uint32 GetActiveAndQueuedSessionCount () const override
 
uint32 GetActiveSessionCount () const override
 
uint32 GetQueuedSessionCount () const override
 
uint32 GetMaxQueuedSessionCount () const override
 Get the maximum number of parallel sessions on the server since last reboot.
 
uint32 GetMaxActiveSessionCount () const override
 
uint32 GetPlayerCount () const override
 Get number of players.
 
uint32 GetMaxPlayerCount () const override
 
void IncreasePlayerCount () override
 Increase/Decrease number of players.
 
void DecreasePlayerCount () override
 
PlayerFindPlayerInZone (uint32 zone) override
 Find a player in a specified zone.
 
bool IsClosed () const override
 Deny clients?
 
void SetClosed (bool val) override
 Close world.
 
AccountTypes GetPlayerSecurityLimit () const override
 Security level limitations.
 
void SetPlayerSecurityLimit (AccountTypes sec) override
 
void LoadDBAllowedSecurityLevel () override
 
void SetPlayerAmountLimit (uint32 limit) override
 Active session server limit.
 
uint32 GetPlayerAmountLimit () const override
 
void AddQueuedPlayer (WorldSession *) override
 
bool RemoveQueuedPlayer (WorldSession *session) override
 
int32 GetQueuePos (WorldSession *) override
 
bool HasRecentlyDisconnected (WorldSession *) override
 
bool getAllowMovement () const override
 
void SetAllowMovement (bool allow) override
 Allow/Disallow object movements.
 
void SetNewCharString (std::string const &str) override
 Set the string for new characters (first login)
 
std::string const & GetNewCharString () const override
 Get the string for new characters (first login)
 
LocaleConstant GetDefaultDbcLocale () const override
 
std::string const & GetDataPath () const override
 Get the path where data (dbc, maps) are stored on disk.
 
Seconds GetNextDailyQuestsResetTime () const override
 Next daily quests and random bg reset time.
 
Seconds GetNextWeeklyQuestsResetTime () const override
 
Seconds GetNextRandomBGResetTime () const override
 
uint16 GetConfigMaxSkillValue () const override
 Get the maximum skill level a player can reach.
 
void SetInitialWorldSettings () override
 Initialize the World.
 
void LoadConfigSettings (bool reload=false) override
 Initialize config values.
 
void SendWorldText (uint32 string_id,...) override
 Send a System Message to all players (except self if mentioned)
 
void SendGlobalText (const char *text, WorldSession *self) override
 
void SendGMText (uint32 string_id,...) override
 Send a System Message to all GMs (except self if mentioned)
 
void SendGlobalMessage (WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) override
 Send a packet to all players (except self if mentioned)
 
void SendGlobalGMMessage (WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) override
 Send a packet to all GMs (except self if mentioned)
 
bool SendZoneMessage (uint32 zone, WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) override
 Send a packet to all players (or players selected team) in the zone (except self if mentioned)
 
void SendZoneText (uint32 zone, const char *text, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL) override
 Send a System Message to all players in the zone (except self if mentioned)
 
void SendServerMessage (ServerMessageType messageID, std::string stringParam="", Player *player=nullptr) override
 Send a server message to the user(s)
 
void SendWorldTextOptional (uint32 string_id, uint32 flag,...) override
 
bool IsShuttingDown () const override
 Are we in the middle of a shutdown?
 
uint32 GetShutDownTimeLeft () const override
 
void ShutdownServ (uint32 time, uint32 options, uint8 exitcode, const std::string &reason=std::string()) override
 Shutdown the server.
 
void ShutdownCancel () override
 Cancel a planned server shutdown.
 
void ShutdownMsg (bool show=false, Player *player=nullptr, const std::string &reason=std::string()) override
 Display a shutdown message to the user(s)
 
void Update (uint32 diff) override
 Update the World !
 
void UpdateSessions (uint32 diff) override
 
void setRate (Rates rate, float value) override
 Set a server rate (see Rates)
 
float getRate (Rates rate) const override
 Get a server rate (see Rates)
 
void setBoolConfig (WorldBoolConfigs index, bool value) override
 Set a server configuration element (see #WorldConfigs)
 
bool getBoolConfig (WorldBoolConfigs index) const override
 Get a server configuration element (see #WorldConfigs)
 
void setFloatConfig (WorldFloatConfigs index, float value) override
 Set a server configuration element (see #WorldConfigs)
 
float getFloatConfig (WorldFloatConfigs index) const override
 Get a server configuration element (see #WorldConfigs)
 
void setIntConfig (WorldIntConfigs index, uint32 value) override
 Set a server configuration element (see #WorldConfigs)
 
uint32 getIntConfig (WorldIntConfigs index) const override
 Get a server configuration element (see #WorldConfigs)
 
void setWorldState (uint32 index, uint64 value) override
 
uint64 getWorldState (uint32 index) const override
 
void LoadWorldStates () override
 
bool IsPvPRealm () const override
 Are we on a "Player versus Player" server?
 
bool IsFFAPvPRealm () const override
 
void KickAll () override
 Kick (and save) all players.
 
void KickAllLess (AccountTypes sec) override
 Kick (and save) all players with security level less sec
 
uint32 GetNextWhoListUpdateDelaySecs () override
 
void ProcessCliCommands () override
 
void QueueCliCommand (CliCommandHolder *commandHolder) override
 
void ForceGameEventUpdate () override
 
void UpdateRealmCharCount (uint32 accid) override
 
LocaleConstant GetAvailableDbcLocale (LocaleConstant locale) const override
 
void LoadDBVersion () override
 
char const * GetDBVersion () const override
 
void LoadMotd () override
 
void UpdateAreaDependentAuras () override
 
uint32 GetCleaningFlags () const override
 
void SetCleaningFlags (uint32 flags) override
 
void ResetEventSeasonalQuests (uint16 event_id) override
 
std::string const & GetRealmName () const override
 
void SetRealmName (std::string name) override
 
void RemoveOldCorpses () override
 
- Public Member Functions inherited from IWorld
virtual ~IWorld ()=default
 
virtual WorldSessionFindSession (uint32 id) const =0
 
virtual WorldSessionFindOfflineSession (uint32 id) const =0
 
virtual WorldSessionFindOfflineSessionForCharacterGUID (ObjectGuid::LowType guidLow) const =0
 
virtual void AddSession (WorldSession *s)=0
 
virtual bool KickSession (uint32 id)=0
 
virtual void UpdateMaxSessionCounters ()=0
 
virtual const SessionMapGetAllSessions () const =0
 
virtual uint32 GetActiveAndQueuedSessionCount () const =0
 
virtual uint32 GetActiveSessionCount () const =0
 
virtual uint32 GetQueuedSessionCount () const =0
 
virtual uint32 GetMaxQueuedSessionCount () const =0
 
virtual uint32 GetMaxActiveSessionCount () const =0
 
virtual uint32 GetPlayerCount () const =0
 
virtual uint32 GetMaxPlayerCount () const =0
 
virtual void IncreasePlayerCount ()=0
 
virtual void DecreasePlayerCount ()=0
 
virtual PlayerFindPlayerInZone (uint32 zone)=0
 
virtual bool IsClosed () const =0
 
virtual void SetClosed (bool val)=0
 
virtual AccountTypes GetPlayerSecurityLimit () const =0
 
virtual void SetPlayerSecurityLimit (AccountTypes sec)=0
 
virtual void LoadDBAllowedSecurityLevel ()=0
 
virtual void SetPlayerAmountLimit (uint32 limit)=0
 
virtual uint32 GetPlayerAmountLimit () const =0
 
virtual void AddQueuedPlayer (WorldSession *)=0
 
virtual bool RemoveQueuedPlayer (WorldSession *session)=0
 
virtual int32 GetQueuePos (WorldSession *)=0
 
virtual bool HasRecentlyDisconnected (WorldSession *)=0
 
virtual bool getAllowMovement () const =0
 
virtual void SetAllowMovement (bool allow)=0
 
virtual void SetNewCharString (std::string const &str)=0
 
virtual std::string const & GetNewCharString () const =0
 
virtual LocaleConstant GetDefaultDbcLocale () const =0
 
virtual std::string const & GetDataPath () const =0
 
virtual Seconds GetNextDailyQuestsResetTime () const =0
 
virtual Seconds GetNextWeeklyQuestsResetTime () const =0
 
virtual Seconds GetNextRandomBGResetTime () const =0
 
virtual uint16 GetConfigMaxSkillValue () const =0
 
virtual void SetInitialWorldSettings ()=0
 
virtual void LoadConfigSettings (bool reload=false)=0
 
virtual void SendWorldText (uint32 string_id,...)=0
 
virtual void SendWorldTextOptional (uint32 string_id, uint32 flag,...)=0
 
virtual void SendGlobalText (const char *text, WorldSession *self)=0
 
virtual void SendGMText (uint32 string_id,...)=0
 
virtual void SendGlobalMessage (WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL)=0
 
virtual void SendGlobalGMMessage (WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL)=0
 
virtual bool SendZoneMessage (uint32 zone, WorldPacket const *packet, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL)=0
 
virtual void SendZoneText (uint32 zone, const char *text, WorldSession *self=nullptr, TeamId teamId=TEAM_NEUTRAL)=0
 
virtual void SendServerMessage (ServerMessageType messageID, std::string stringParam="", Player *player=nullptr)=0
 
virtual bool IsShuttingDown () const =0
 
virtual uint32 GetShutDownTimeLeft () const =0
 
virtual void ShutdownServ (uint32 time, uint32 options, uint8 exitcode, const std::string &reason=std::string())=0
 
virtual void ShutdownCancel ()=0
 
virtual void ShutdownMsg (bool show=false, Player *player=nullptr, const std::string &reason=std::string())=0
 
virtual void Update (uint32 diff)=0
 
virtual void UpdateSessions (uint32 diff)=0
 
virtual void setRate (Rates rate, float value)=0
 
virtual float getRate (Rates rate) const =0
 
virtual void setBoolConfig (WorldBoolConfigs index, bool value)=0
 
virtual bool getBoolConfig (WorldBoolConfigs index) const =0
 
virtual void setFloatConfig (WorldFloatConfigs index, float value)=0
 
virtual float getFloatConfig (WorldFloatConfigs index) const =0
 
virtual void setIntConfig (WorldIntConfigs index, uint32 value)=0
 
virtual uint32 getIntConfig (WorldIntConfigs index) const =0
 
virtual void setWorldState (uint32 index, uint64 value)=0
 
virtual uint64 getWorldState (uint32 index) const =0
 
virtual void LoadWorldStates ()=0
 
virtual bool IsPvPRealm () const =0
 
virtual bool IsFFAPvPRealm () const =0
 
virtual void KickAll ()=0
 
virtual void KickAllLess (AccountTypes sec)=0
 
virtual uint32 GetNextWhoListUpdateDelaySecs ()=0
 
virtual void ProcessCliCommands ()=0
 
virtual void QueueCliCommand (CliCommandHolder *commandHolder)=0
 
virtual void ForceGameEventUpdate ()=0
 
virtual void UpdateRealmCharCount (uint32 accid)=0
 
virtual LocaleConstant GetAvailableDbcLocale (LocaleConstant locale) const =0
 
virtual void LoadDBVersion ()=0
 
virtual char const * GetDBVersion () const =0
 
virtual void LoadMotd ()=0
 
virtual void UpdateAreaDependentAuras ()=0
 
virtual uint32 GetCleaningFlags () const =0
 
virtual void SetCleaningFlags (uint32 flags)=0
 
virtual void ResetEventSeasonalQuests (uint16 event_id)=0
 
virtual std::string const & GetRealmName () const =0
 
virtual void SetRealmName (std::string name)=0
 
virtual void RemoveOldCorpses ()=0
 

Static Public Member Functions

static Worldinstance ()
 
static uint8 GetExitCode ()
 
static void StopNow (uint8 exitcode)
 
static bool IsStopped ()
 
static float GetMaxVisibleDistanceOnContinents ()
 
static float GetMaxVisibleDistanceInInstances ()
 
static float GetMaxVisibleDistanceInBGArenas ()
 

Static Public Attributes

static uint32 m_worldLoopCounter = 0
 

Protected Member Functions

void _UpdateGameTime ()
 Update the game time.
 
void _UpdateRealmCharCount (PreparedQueryResult resultCharCount)
 
void InitDailyQuestResetTime ()
 
void InitWeeklyQuestResetTime ()
 
void InitMonthlyQuestResetTime ()
 
void InitRandomBGResetTime ()
 
void InitCalendarOldEventsDeletionTime ()
 
void InitGuildResetTime ()
 
void ResetDailyQuests ()
 
void ResetWeeklyQuests ()
 
void ResetMonthlyQuests ()
 
void ResetRandomBG ()
 
void CalendarDeleteOldEvents ()
 
void ResetGuildCap ()
 

Private Types

typedef std::unordered_map< uint32, time_t > DisconnectMap
 
typedef std::map< uint32, uint64WorldStatesMap
 

Private Member Functions

void DetectDBCLang ()
 
void AddSession_ (WorldSession *s)
 
void ProcessQueryCallbacks ()
 
void FinalizePlayerWorldSession (WorldSession *session)
 Executed when a World Session is being finalized. Be it from a normal login or via queue popping.
 

Private Attributes

uint32 _shutdownTimer
 
uint32 _shutdownMask
 
uint32 _cleaningFlags
 
bool _isClosed
 
IntervalTimer _timers [WUPDATE_COUNT]
 
Seconds _mail_expire_check_timer
 
SessionMap _sessions
 
SessionMap _offlineSessions
 
DisconnectMap _disconnects
 
uint32 _maxActiveSessionCount
 
uint32 _maxQueuedSessionCount
 
uint32 _playerCount
 
uint32 _maxPlayerCount
 
std::string _newCharString
 
float _rate_values [MAX_RATES]
 
uint32 _int_configs [INT_CONFIG_VALUE_COUNT]
 
bool _bool_configs [BOOL_CONFIG_VALUE_COUNT]
 
float _float_configs [FLOAT_CONFIG_VALUE_COUNT]
 
WorldStatesMap _worldstates
 
uint32 _playerLimit
 
AccountTypes _allowedSecurityLevel
 
LocaleConstant _defaultDbcLocale
 
uint32 _availableDbcLocaleMask
 
bool _allowMovement
 
std::string _dataPath
 
std::string _realmName
 
LockedQueue< CliCommandHolder * > _cliCmdQueue
 
Seconds _nextDailyQuestReset
 
Seconds _nextWeeklyQuestReset
 
Seconds _nextMonthlyQuestReset
 
Seconds _nextRandomBGReset
 
Seconds _nextCalendarOldEventsDeletionTime
 
Seconds _nextGuildReset
 
Queue _queuedPlayer
 
LockedQueue< WorldSession * > _addSessQueue
 
std::string _dbVersion
 
QueryCallbackProcessor _queryProcessor
 

Static Private Attributes

static std::atomic_long _stopEvent = false
 
static uint8 _exitCode = SHUTDOWN_EXIT_CODE
 
static float _maxVisibleDistanceOnContinents = DEFAULT_VISIBILITY_DISTANCE
 
static float _maxVisibleDistanceInInstances = DEFAULT_VISIBILITY_INSTANCE
 
static float _maxVisibleDistanceInBGArenas = DEFAULT_VISIBILITY_BGARENAS
 

Detailed Description

The World.

Member Typedef Documentation

◆ DisconnectMap

typedef std::unordered_map<uint32, time_t> World::DisconnectMap
private

◆ Queue

typedef std::list<WorldSession*> World::Queue

◆ WorldStatesMap

typedef std::map<uint32, uint64> World::WorldStatesMap
private

Constructor & Destructor Documentation

◆ World()

World::World ( )

World constructor.

117{
118 _playerLimit = 0;
120 _allowMovement = true;
121 _shutdownMask = 0;
122 _shutdownTimer = 0;
125 _playerCount = 0;
126 _maxPlayerCount = 0;
132 _nextGuildReset = 0s;
135 _isClosed = false;
136 _cleaningFlags = 0;
137
138 memset(_rate_values, 0, sizeof(_rate_values));
139 memset(_int_configs, 0, sizeof(_int_configs));
140 memset(_bool_configs, 0, sizeof(_bool_configs));
141 memset(_float_configs, 0, sizeof(_float_configs));
142}
@ LOCALE_enUS
Definition: Common.h:75
@ SEC_PLAYER
Definition: Common.h:66
Seconds _nextGuildReset
Definition: World.h:425
uint32 _shutdownMask
Definition: World.h:375
bool _bool_configs[BOOL_CONFIG_VALUE_COUNT]
Definition: World.h:397
uint32 _cleaningFlags
Definition: World.h:377
float _float_configs[FLOAT_CONFIG_VALUE_COUNT]
Definition: World.h:398
LocaleConstant _defaultDbcLocale
Definition: World.h:403
float _rate_values[MAX_RATES]
Definition: World.h:395
Seconds _nextDailyQuestReset
Definition: World.h:420
bool _isClosed
Definition: World.h:379
uint32 _maxPlayerCount
Definition: World.h:391
uint32 _maxQueuedSessionCount
Definition: World.h:389
Seconds _nextMonthlyQuestReset
Definition: World.h:422
uint32 _int_configs[INT_CONFIG_VALUE_COUNT]
Definition: World.h:396
Seconds _nextCalendarOldEventsDeletionTime
Definition: World.h:424
Seconds _nextWeeklyQuestReset
Definition: World.h:421
uint32 _shutdownTimer
Definition: World.h:374
uint32 _maxActiveSessionCount
Definition: World.h:388
Seconds _nextRandomBGReset
Definition: World.h:423
bool _allowMovement
Definition: World.h:406
uint32 _playerCount
Definition: World.h:390
uint32 _playerLimit
Definition: World.h:401
AccountTypes _allowedSecurityLevel
Definition: World.h:402
Seconds _mail_expire_check_timer
Definition: World.h:382

References _allowedSecurityLevel, _allowMovement, _bool_configs, _cleaningFlags, _defaultDbcLocale, _float_configs, _int_configs, _isClosed, _mail_expire_check_timer, _maxActiveSessionCount, _maxPlayerCount, _maxQueuedSessionCount, _nextCalendarOldEventsDeletionTime, _nextDailyQuestReset, _nextGuildReset, _nextMonthlyQuestReset, _nextRandomBGReset, _nextWeeklyQuestReset, _playerCount, _playerLimit, _rate_values, _shutdownMask, _shutdownTimer, LOCALE_enUS, and SEC_PLAYER.

◆ ~World()

World::~World ( )
override

World destructor.

  • Empty the kicked session set
146{
148 while (!_sessions.empty())
149 {
150 // not remove from queue, prevent loading new sessions
151 delete _sessions.begin()->second;
152 _sessions.erase(_sessions.begin());
153 }
154
155 while (!_offlineSessions.empty())
156 {
157 delete _offlineSessions.begin()->second;
158 _offlineSessions.erase(_offlineSessions.begin());
159 }
160
161 CliCommandHolder* command = nullptr;
162 while (_cliCmdQueue.next(command))
163 delete command;
164
167
168 //TODO free addSessQueue
169}
static void clear()
Definition: MMapFactory.cpp:50
static void clear()
Definition: VMapFactory.cpp:39
bool next(T &result)
Gets the next result in the queue, if any.
Definition: LockedQueue.h:63
Storage class for commands issued for delayed execution.
Definition: IWorld.h:39
SessionMap _offlineSessions
Definition: World.h:385
SessionMap _sessions
Definition: World.h:384
LockedQueue< CliCommandHolder * > _cliCmdQueue
Definition: World.h:417

References _cliCmdQueue, _offlineSessions, _sessions, MMAP::MMapFactory::clear(), VMAP::VMapFactory::clear(), and LockedQueue< T, StorageType >::next().

Member Function Documentation

◆ _UpdateGameTime()

void World::_UpdateGameTime ( )
protected

Update the game time.

  • update the time
  • if there is a shutdown timer
  • ... and it is overdue, stop the world (set m_stopEvent)
  • ... else decrease it and if necessary display a shutdown countdown to the users
2770{
2772 Seconds lastGameTime = GameTime::GetGameTime();
2774
2775 Seconds elapsed = GameTime::GetGameTime() - lastGameTime;
2776
2778 if (!IsStopped() && _shutdownTimer > 0 && elapsed > 0s)
2779 {
2781 if (_shutdownTimer <= elapsed.count())
2782 {
2784 _stopEvent = true; // exist code already set
2785 else
2786 _shutdownTimer = 1; // minimum timer value to wait idle state
2787 }
2789 else
2790 {
2791 _shutdownTimer -= elapsed.count();
2792
2793 ShutdownMsg();
2794 }
2795 }
2796}
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition: Duration.h:30
@ SHUTDOWN_MASK_IDLE
Definition: World.h:49
void UpdateGameTimers()
Update all timers.
Definition: GameTime.cpp:63
Seconds GetGameTime()
Definition: GameTime.cpp:38
uint32 GetActiveAndQueuedSessionCount() const override
Definition: World.h:168
void ShutdownMsg(bool show=false, Player *player=nullptr, const std::string &reason=std::string()) override
Display a shutdown message to the user(s)
Definition: World.cpp:2854
static std::atomic_long _stopEvent
Definition: World.h:372
static bool IsStopped()
Definition: World.h:260

References _shutdownMask, _shutdownTimer, _stopEvent, GetActiveAndQueuedSessionCount(), GameTime::GetGameTime(), IsStopped(), SHUTDOWN_MASK_IDLE, ShutdownMsg(), and GameTime::UpdateGameTimers().

Referenced by Update().

◆ _UpdateRealmCharCount()

void World::_UpdateRealmCharCount ( PreparedQueryResult  resultCharCount)
protected
3015{
3016 if (resultCharCount)
3017 {
3018 Field* fields = resultCharCount->Fetch();
3019 uint32 accountId = fields[0].Get<uint32>();
3020 uint8 charCount = uint8(fields[1].Get<uint64>());
3021
3022 LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
3023
3025 stmt->SetData(0, charCount);
3026 stmt->SetData(1, accountId);
3027 stmt->SetData(2, realm.Id.Realm);
3028 trans->Append(stmt);
3029
3030 LoginDatabase.CommitTransaction(trans);
3031 }
3032}
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
Definition: DatabaseEnv.cpp:22
SQLTransaction< LoginDatabaseConnection > LoginDatabaseTransaction
Definition: DatabaseEnvFwd.h:71
@ LOGIN_REP_REALM_CHARACTERS
Definition: LoginDatabase.h:63
AC_GAME_API Realm realm
Definition: World.cpp:113
Definition: PreparedStatement.h:158
Class used to access individual fields of database query result.
Definition: Field.h:99
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition: Field.h:113
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition: PreparedStatement.h:78
uint32 Realm
Definition: Realm.h:42
RealmHandle Id
Definition: Realm.h:68

References Field::Get(), Realm::Id, LOGIN_REP_REALM_CHARACTERS, LoginDatabase, realm, RealmHandle::Realm, and PreparedStatementBase::SetData().

Referenced by UpdateRealmCharCount().

◆ AddQueuedPlayer()

void World::AddQueuedPlayer ( WorldSession sess)
overridevirtual

Implements IWorld.

359{
360 sess->SetInQueue(true);
361 _queuedPlayer.push_back(sess);
362
363 // The 1st SMSG_AUTH_RESPONSE needs to contain other info too.
364 sess->SendAuthResponse(AUTH_WAIT_QUEUE, false, GetQueuePos(sess));
365}
@ AUTH_WAIT_QUEUE
Definition: SharedDefines.h:3322
void SetInQueue(bool state)
Session in auth.queue currently.
Definition: WorldSession.h:381
void SendAuthResponse(uint8 code, bool shortForm, uint32 queuePos=0)
Definition: AuthHandler.cpp:22
int32 GetQueuePos(WorldSession *) override
Definition: World.cpp:347
Queue _queuedPlayer
Definition: World.h:428

References _queuedPlayer, AUTH_WAIT_QUEUE, GetQueuePos(), WorldSession::SendAuthResponse(), and WorldSession::SetInQueue().

Referenced by AddSession_().

◆ AddSession()

void World::AddSession ( WorldSession s)
overridevirtual

Implements IWorld.

260{
262}
void add(const T &item)
Adds an item to the queue.
Definition: LockedQueue.h:45
LockedQueue< WorldSession * > _addSessQueue
Definition: World.h:432

References _addSessQueue, and LockedQueue< T, StorageType >::add().

◆ AddSession_()

void World::AddSession_ ( WorldSession s)
private
265{
266 ASSERT (s);
267
268 // kick existing session with same account (if any)
269 // if character on old session is being loaded, then return
270 if (!KickSession(s->GetAccountId()))
271 {
272 s->KickPlayer("kick existing session with same account");
273 delete s; // session not added yet in session list, so not listed in queue
274 return;
275 }
276
277 SessionMap::const_iterator old = _sessions.find(s->GetAccountId());
278 if (old != _sessions.end())
279 {
280 WorldSession* oldSession = old->second;
281
284
285 // pussywizard:
286 if (oldSession->HandleSocketClosed())
287 {
288 // there should be no offline session if current one is logged onto a character
289 SessionMap::iterator iter;
290 if ((iter = _offlineSessions.find(oldSession->GetAccountId())) != _offlineSessions.end())
291 {
292 WorldSession* tmp = iter->second;
293 _offlineSessions.erase(iter);
294 delete tmp;
295 }
296 oldSession->SetOfflineTime(GameTime::GetGameTime().count());
297 _offlineSessions[oldSession->GetAccountId()] = oldSession;
298 }
299 else
300 {
301 delete oldSession;
302 }
303 }
304
305 _sessions[s->GetAccountId()] = s;
306
308 uint32 pLimit = GetPlayerAmountLimit();
309
310 // don't count this session when checking player limit
311 --Sessions;
312
313 if (pLimit > 0 && Sessions >= pLimit && AccountMgr::IsPlayerAccount(s->GetSecurity()) && !s->CanSkipQueue() && !HasRecentlyDisconnected(s))
314 {
317 return;
318 }
319
321
323}
#define ASSERT
Definition: Errors.h:68
@ CONFIG_INTERVAL_DISCONNECT_TOLERANCE
Definition: IWorld.h:212
bool IsPlayerAccount(uint32 gmlevel)
Definition: AccountMgr.cpp:276
Player session in the World.
Definition: WorldSession.h:330
void SetOfflineTime(uint32 time)
Definition: WorldSession.h:1065
AccountTypes GetSecurity() const
Definition: WorldSession.h:358
bool HandleSocketClosed()
Definition: WorldSession.cpp:525
uint32 GetAccountId() const
Definition: WorldSession.h:360
void KickPlayer(bool setKicked=true)
Definition: WorldSession.h:399
void InitializeSession()
Definition: WorldSession.cpp:1686
bool CanSkipQueue() const
Definition: WorldSession.h:359
uint32 GetPlayerAmountLimit() const override
Definition: World.h:201
uint32 getIntConfig(WorldIntConfigs index) const override
Get a server configuration element (see #WorldConfigs)
Definition: World.h:304
void AddQueuedPlayer(WorldSession *) override
Definition: World.cpp:358
void UpdateMaxSessionCounters() override
Get the number of current active sessions.
Definition: World.cpp:3211
DisconnectMap _disconnects
Definition: World.h:387
bool RemoveQueuedPlayer(WorldSession *session) override
Definition: World.cpp:367
bool KickSession(uint32 id) override
Remove a given session.
Definition: World.cpp:243
bool HasRecentlyDisconnected(WorldSession *) override
Definition: World.cpp:325

References _disconnects, _offlineSessions, _sessions, AddQueuedPlayer(), ASSERT, WorldSession::CanSkipQueue(), CONFIG_INTERVAL_DISCONNECT_TOLERANCE, WorldSession::GetAccountId(), GetActiveAndQueuedSessionCount(), GameTime::GetGameTime(), getIntConfig(), GetPlayerAmountLimit(), WorldSession::GetSecurity(), WorldSession::HandleSocketClosed(), HasRecentlyDisconnected(), WorldSession::InitializeSession(), AccountMgr::IsPlayerAccount(), WorldSession::KickPlayer(), KickSession(), RemoveQueuedPlayer(), WorldSession::SetOfflineTime(), and UpdateMaxSessionCounters().

Referenced by UpdateSessions().

◆ CalendarDeleteOldEvents()

void World::CalendarDeleteOldEvents ( )
protected
3193{
3194 LOG_INFO("server.worldserver", "Calendar deletion of old events.");
3195
3198 sCalendarMgr->DeleteOldEvents();
3199}
#define LOG_INFO(filterType__,...)
Definition: Log.h:167
#define sCalendarMgr
Definition: CalendarMgr.h:344
@ CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR
Definition: IWorld.h:347
#define sWorld
Definition: World.h:449
@ WS_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME
Definition: World.h:141
AC_COMMON_API time_t GetNextTimeWithDayAndHour(int8 dayOfWeek, int8 hour)
Definition: Timer.cpp:302

References _nextCalendarOldEventsDeletionTime, CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR, getIntConfig(), Acore::Time::GetNextTimeWithDayAndHour(), LOG_INFO, sCalendarMgr, sWorld, and WS_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME.

Referenced by Update().

◆ DecreasePlayerCount()

void World::DecreasePlayerCount ( )
inlineoverridevirtual

Implements IWorld.

184{ _playerCount--; }

References _playerCount.

◆ DetectDBCLang()

void World::DetectDBCLang ( )
private
2194{
2195 uint8 m_lang_confid = sConfigMgr->GetOption<int32>("DBC.Locale", 255);
2196
2197 if (m_lang_confid != 255 && m_lang_confid >= TOTAL_LOCALES)
2198 {
2199 LOG_ERROR("server.loading", "Incorrect DBC.Locale! Must be >= 0 and < {} (set to 0)", TOTAL_LOCALES);
2200 m_lang_confid = LOCALE_enUS;
2201 }
2202
2203 ChrRacesEntry const* race = sChrRacesStore.LookupEntry(1);
2204 std::string availableLocalsStr;
2205
2206 uint8 default_locale = TOTAL_LOCALES;
2207 for (uint8 i = default_locale - 1; i < TOTAL_LOCALES; --i) // -1 will be 255 due to uint8
2208 {
2209 if (race->name[i][0] != '\0') // check by race names
2210 {
2211 default_locale = i;
2212 _availableDbcLocaleMask |= (1 << i);
2213 availableLocalsStr += localeNames[i];
2214 availableLocalsStr += " ";
2215 }
2216 }
2217
2218 if (default_locale != m_lang_confid && m_lang_confid < TOTAL_LOCALES &&
2219 (_availableDbcLocaleMask & (1 << m_lang_confid)))
2220 {
2221 default_locale = m_lang_confid;
2222 }
2223
2224 if (default_locale >= TOTAL_LOCALES)
2225 {
2226 LOG_ERROR("server.loading", "Unable to determine your DBC Locale! (corrupt DBC?)");
2227 exit(1);
2228 }
2229
2230 _defaultDbcLocale = LocaleConstant(default_locale);
2231
2232 LOG_INFO("server.loading", "Using {} DBC Locale As Default. All Available DBC locales: {}", localeNames[GetDefaultDbcLocale()], availableLocalsStr.empty() ? "<none>" : availableLocalsStr);
2233 LOG_INFO("server.loading", " ");
2234}
char const * localeNames[TOTAL_LOCALES]
Definition: Common.cpp:20
LocaleConstant
Definition: Common.h:74
@ TOTAL_LOCALES
Definition: Common.h:85
#define sConfigMgr
Definition: Config.h:92
std::int32_t int32
Definition: Define.h:104
#define LOG_ERROR(filterType__,...)
Definition: Log.h:159
DBCStorage< ChrRacesEntry > sChrRacesStore(ChrRacesEntryfmt)
uint32 _availableDbcLocaleMask
Definition: World.h:404
LocaleConstant GetDefaultDbcLocale() const override
Definition: World.h:221
Definition: DBCStructure.h:679
char const * name[16]
Definition: DBCStructure.h:691

References _availableDbcLocaleMask, _defaultDbcLocale, GetDefaultDbcLocale(), LOCALE_enUS, localeNames, LOG_ERROR, LOG_INFO, ChrRacesEntry::name, sChrRacesStore, sConfigMgr, and TOTAL_LOCALES.

Referenced by SetInitialWorldSettings().

◆ FinalizePlayerWorldSession()

void World::FinalizePlayerWorldSession ( WorldSession session)
inlineprivate

Executed when a World Session is being finalized. Be it from a normal login or via queue popping.

Parameters
sessionThe World Session that we are finalizing.

◆ FindOfflineSession()

WorldSession * World::FindOfflineSession ( uint32  id) const
overridevirtual

Implements IWorld.

222{
223 SessionMap::const_iterator itr = _offlineSessions.find(id);
224 if (itr != _offlineSessions.end())
225 return itr->second;
226 else
227 return nullptr;
228}

References _offlineSessions.

◆ FindOfflineSessionForCharacterGUID()

WorldSession * World::FindOfflineSessionForCharacterGUID ( ObjectGuid::LowType  guidLow) const
overridevirtual

Implements IWorld.

231{
232 if (_offlineSessions.empty())
233 return nullptr;
234
235 for (SessionMap::const_iterator itr = _offlineSessions.begin(); itr != _offlineSessions.end(); ++itr)
236 if (itr->second->GetGuidLow() == guidLow)
237 return itr->second;
238
239 return nullptr;
240}

References _offlineSessions.

◆ FindPlayerInZone()

Player * World::FindPlayerInZone ( uint32  zone)
overridevirtual

Find a player in a specified zone.

  • circle through active sessions and return the first player found in the zone

Implements IWorld.

179{
181 SessionMap::const_iterator itr;
182 for (itr = _sessions.begin(); itr != _sessions.end(); ++itr)
183 {
184 if (!itr->second)
185 continue;
186
187 Player* player = itr->second->GetPlayer();
188 if (!player)
189 continue;
190
191 if (player->IsInWorld() && player->GetZoneId() == zone)
192 return player;
193 }
194 return nullptr;
195}
bool IsInWorld() const
Definition: Object.h:101
uint32 GetZoneId() const
Definition: Object.cpp:3100
Definition: Player.h:1056

References _sessions, WorldObject::GetZoneId(), and Object::IsInWorld().

◆ FindSession()

WorldSession * World::FindSession ( uint32  id) const
overridevirtual

Find a session by its id.

Implements IWorld.

212{
213 SessionMap::const_iterator itr = _sessions.find(id);
214
215 if (itr != _sessions.end())
216 return itr->second; // also can return nullptr for kicked session
217 else
218 return nullptr;
219}

References _sessions.

◆ ForceGameEventUpdate()

void World::ForceGameEventUpdate ( )
overridevirtual

Implements IWorld.

2537{
2538 _timers[WUPDATE_EVENTS].Reset(); // to give time for Update() to be processed
2539 uint32 nextGameEvent = sGameEventMgr->Update();
2540 _timers[WUPDATE_EVENTS].SetInterval(nextGameEvent);
2542}
#define sGameEventMgr
Definition: GameEventMgr.h:186
@ WUPDATE_EVENTS
Definition: World.h:66
void SetInterval(time_t interval)
Definition: Timer.h:179
void Reset()
Definition: Timer.h:166
IntervalTimer _timers[WUPDATE_COUNT]
Definition: World.h:381

References _timers, IntervalTimer::Reset(), IntervalTimer::SetInterval(), sGameEventMgr, and WUPDATE_EVENTS.

◆ GetActiveAndQueuedSessionCount()

uint32 World::GetActiveAndQueuedSessionCount ( ) const
inlineoverridevirtual

Implements IWorld.

168{ return _sessions.size(); }

References _sessions.

Referenced by _UpdateGameTime(), AddSession_(), and ShutdownServ().

◆ GetActiveSessionCount()

uint32 World::GetActiveSessionCount ( ) const
inlineoverridevirtual

Implements IWorld.

169{ return _sessions.size() - _queuedPlayer.size(); }

References _queuedPlayer, and _sessions.

Referenced by RemoveQueuedPlayer(), ShutdownServ(), and Update().

◆ getAllowMovement()

bool World::getAllowMovement ( ) const
inlineoverridevirtual
Todo:
Actions on m_allowMovement still to be implemented Is movement allowed?

Implements IWorld.

212{ return _allowMovement; }

References _allowMovement.

◆ GetAllSessions()

const SessionMap & World::GetAllSessions ( ) const
inlineoverridevirtual

Implements IWorld.

167{ return _sessions; }

References _sessions.

◆ GetAvailableDbcLocale()

LocaleConstant World::GetAvailableDbcLocale ( LocaleConstant  locale) const
inlineoverridevirtual

Implements IWorld.

335{ if (_availableDbcLocaleMask & (1 << locale)) return locale; else return _defaultDbcLocale; }

References _availableDbcLocaleMask, and _defaultDbcLocale.

◆ getBoolConfig()

bool World::getBoolConfig ( WorldBoolConfigs  index) const
inlineoverridevirtual

Get a server configuration element (see #WorldConfigs)

Implements IWorld.

279 {
280 return index < BOOL_CONFIG_VALUE_COUNT ? _bool_configs[index] : false;
281 }
@ BOOL_CONFIG_VALUE_COUNT
Definition: IWorld.h:186

References _bool_configs, and BOOL_CONFIG_VALUE_COUNT.

◆ GetCleaningFlags()

uint32 World::GetCleaningFlags ( ) const
inlineoverridevirtual

Implements IWorld.

345{ return _cleaningFlags; }

References _cleaningFlags.

◆ GetConfigMaxSkillValue()

uint16 World::GetConfigMaxSkillValue ( ) const
inlineoverridevirtual

Get the maximum skill level a player can reach.

Implements IWorld.

233 {
235 return lvl > 60 ? 300 + ((lvl - 60) * 75) / 10 : lvl * 5;
236 }
std::uint16_t uint16
Definition: Define.h:109
@ CONFIG_MAX_PLAYER_LEVEL
Definition: IWorld.h:235

References CONFIG_MAX_PLAYER_LEVEL, and getIntConfig().

◆ GetDataPath()

std::string const & World::GetDataPath ( ) const
inlineoverridevirtual

Get the path where data (dbc, maps) are stored on disk.

Implements IWorld.

224{ return _dataPath; }
std::string _dataPath
Definition: World.h:407

References _dataPath.

◆ GetDBVersion()

char const * World::GetDBVersion ( ) const
inlineoverridevirtual

Implements IWorld.

339{ return _dbVersion.c_str(); }
std::string _dbVersion
Definition: World.h:435

References _dbVersion.

◆ GetDefaultDbcLocale()

LocaleConstant World::GetDefaultDbcLocale ( ) const
inlineoverridevirtual

Implements IWorld.

221{ return _defaultDbcLocale; }

References _defaultDbcLocale.

Referenced by DetectDBCLang(), and SetInitialWorldSettings().

◆ GetExitCode()

static uint8 World::GetExitCode ( )
inlinestatic
258{ return _exitCode; }
static uint8 _exitCode
Definition: World.h:373

References _exitCode.

Referenced by main().

◆ getFloatConfig()

float World::getFloatConfig ( WorldFloatConfigs  index) const
inlineoverridevirtual

Get a server configuration element (see #WorldConfigs)

Implements IWorld.

292 {
293 return index < FLOAT_CONFIG_VALUE_COUNT ? _float_configs[index] : 0;
294 }
@ FLOAT_CONFIG_VALUE_COUNT
Definition: IWorld.h:204

References _float_configs, and FLOAT_CONFIG_VALUE_COUNT.

◆ getIntConfig()

uint32 World::getIntConfig ( WorldIntConfigs  index) const
inlineoverridevirtual

Get a server configuration element (see #WorldConfigs)

Implements IWorld.

305 {
306 return index < INT_CONFIG_VALUE_COUNT ? _int_configs[index] : 0;
307 }
@ INT_CONFIG_VALUE_COUNT
Definition: IWorld.h:416

References _int_configs, and INT_CONFIG_VALUE_COUNT.

Referenced by AddSession_(), CalendarDeleteOldEvents(), GetConfigMaxSkillValue(), HasRecentlyDisconnected(), InitCalendarOldEventsDeletionTime(), IsFFAPvPRealm(), IsPvPRealm(), SetInitialWorldSettings(), and UpdateSessions().

◆ GetMaxActiveSessionCount()

uint32 World::GetMaxActiveSessionCount ( ) const
inlineoverridevirtual

Implements IWorld.

173{ return _maxActiveSessionCount; }

References _maxActiveSessionCount.

◆ GetMaxPlayerCount()

uint32 World::GetMaxPlayerCount ( ) const
inlineoverridevirtual

Implements IWorld.

176{ return _maxPlayerCount; }

References _maxPlayerCount.

Referenced by Update().

◆ GetMaxQueuedSessionCount()

uint32 World::GetMaxQueuedSessionCount ( ) const
inlineoverridevirtual

Get the maximum number of parallel sessions on the server since last reboot.

Implements IWorld.

172{ return _maxQueuedSessionCount; }

References _maxQueuedSessionCount.

◆ GetMaxVisibleDistanceInBGArenas()

static float World::GetMaxVisibleDistanceInBGArenas ( )
inlinestatic
static float _maxVisibleDistanceInBGArenas
Definition: World.h:412

References _maxVisibleDistanceInBGArenas.

Referenced by Battleground::_ProcessJoin(), and BattlegroundMap::InitVisibilityDistance().

◆ GetMaxVisibleDistanceInInstances()

static float World::GetMaxVisibleDistanceInInstances ( )
inlinestatic
static float _maxVisibleDistanceInInstances
Definition: World.h:411

References _maxVisibleDistanceInInstances.

Referenced by InstanceMap::InitVisibilityDistance().

◆ GetMaxVisibleDistanceOnContinents()

static float World::GetMaxVisibleDistanceOnContinents ( )
inlinestatic
static float _maxVisibleDistanceOnContinents
Definition: World.h:410

References _maxVisibleDistanceOnContinents.

Referenced by Map::InitVisibilityDistance().

◆ GetNewCharString()

std::string const & World::GetNewCharString ( ) const
inlineoverridevirtual

Get the string for new characters (first login)

Implements IWorld.

219{ return _newCharString; }
std::string _newCharString
Definition: World.h:393

References _newCharString.

◆ GetNextDailyQuestsResetTime()

Seconds World::GetNextDailyQuestsResetTime ( ) const
inlineoverridevirtual

Next daily quests and random bg reset time.

Implements IWorld.

227{ return _nextDailyQuestReset; }

References _nextDailyQuestReset.

◆ GetNextRandomBGResetTime()

Seconds World::GetNextRandomBGResetTime ( ) const
inlineoverridevirtual

Implements IWorld.

229{ return _nextRandomBGReset; }

References _nextRandomBGReset.

◆ GetNextWeeklyQuestsResetTime()

Seconds World::GetNextWeeklyQuestsResetTime ( ) const
inlineoverridevirtual

Implements IWorld.

228{ return _nextWeeklyQuestReset; }

References _nextWeeklyQuestReset.

◆ GetNextWhoListUpdateDelaySecs()

uint32 World::GetNextWhoListUpdateDelaySecs ( )
overridevirtual

Implements IWorld.

3317{
3318 if (_timers[WUPDATE_5_SECS].Passed())
3319 return 1;
3320
3322 t = std::min(t, (uint32)_timers[WUPDATE_5_SECS].GetInterval());
3323
3324 return uint32(std::ceil(t / 1000.0f));
3325}
@ WUPDATE_5_SECS
Definition: World.h:71
time_t GetCurrent() const
Definition: Timer.h:189
time_t GetInterval() const
Definition: Timer.h:184

References _timers, IntervalTimer::GetCurrent(), IntervalTimer::GetInterval(), and WUPDATE_5_SECS.

◆ GetPlayerAmountLimit()

uint32 World::GetPlayerAmountLimit ( ) const
inlineoverridevirtual

Implements IWorld.

201{ return _playerLimit; }

References _playerLimit.

Referenced by AddSession_(), and RemoveQueuedPlayer().

◆ GetPlayerCount()

uint32 World::GetPlayerCount ( ) const
inlineoverridevirtual

Get number of players.

Implements IWorld.

175{ return _playerCount; }

References _playerCount.

◆ GetPlayerSecurityLimit()

AccountTypes World::GetPlayerSecurityLimit ( ) const
inlineoverridevirtual

Security level limitations.

Implements IWorld.

195{ return _allowedSecurityLevel; }

References _allowedSecurityLevel.

◆ GetQueuedSessionCount()

uint32 World::GetQueuedSessionCount ( ) const
inlineoverridevirtual

Implements IWorld.

170{ return _queuedPlayer.size(); }

References _queuedPlayer.

◆ GetQueuePos()

int32 World::GetQueuePos ( WorldSession sess)
overridevirtual

Implements IWorld.

348{
349 uint32 position = 1;
350
351 for (Queue::const_iterator iter = _queuedPlayer.begin(); iter != _queuedPlayer.end(); ++iter, ++position)
352 if ((*iter) == sess)
353 return position;
354
355 return 0;
356}

References _queuedPlayer.

Referenced by AddQueuedPlayer().

◆ getRate()

float World::getRate ( Rates  rate) const
inlineoverridevirtual

Get a server rate (see Rates)

Implements IWorld.

268{ return _rate_values[rate]; }

References _rate_values.

Referenced by LoadConfigSettings().

◆ GetRealmName()

std::string const & World::GetRealmName ( ) const
inlineoverridevirtual

Implements IWorld.

349{ return _realmName; } // pussywizard
std::string _realmName
Definition: World.h:414

References _realmName.

◆ GetShutDownTimeLeft()

uint32 World::GetShutDownTimeLeft ( ) const
inlineoverridevirtual

Implements IWorld.

254{ return _shutdownTimer; }

References _shutdownTimer.

◆ getWorldState()

uint64 World::getWorldState ( uint32  index) const
overridevirtual

Implements IWorld.

3291{
3292 auto const& itr = _worldstates.find(index);
3293 return itr != _worldstates.end() ? itr->second : 0;
3294}
WorldStatesMap _worldstates
Definition: World.h:400

References _worldstates.

Referenced by InitCalendarOldEventsDeletionTime(), and InitGuildResetTime().

◆ HasRecentlyDisconnected()

bool World::HasRecentlyDisconnected ( WorldSession session)
overridevirtual

Implements IWorld.

326{
327 if (!session)
328 return false;
329
331 {
332 for (DisconnectMap::iterator i = _disconnects.begin(); i != _disconnects.end();)
333 {
334 if ((GameTime::GetGameTime().count() - i->second) < tolerance)
335 {
336 if (i->first == session->GetAccountId())
337 return true;
338 ++i;
339 }
340 else
341 _disconnects.erase(i++);
342 }
343 }
344 return false;
345}

References _disconnects, CONFIG_INTERVAL_DISCONNECT_TOLERANCE, WorldSession::GetAccountId(), GameTime::GetGameTime(), and getIntConfig().

Referenced by AddSession_().

◆ IncreasePlayerCount()

void World::IncreasePlayerCount ( )
inlineoverridevirtual

Increase/Decrease number of players.

Implements IWorld.

180 {
181 _playerCount++;
183 }

References _maxPlayerCount, and _playerCount.

◆ InitCalendarOldEventsDeletionTime()

void World::InitCalendarOldEventsDeletionTime ( )
protected
3079{
3081 Seconds nextDeletionTime = currentDeletionTime > 0s ? currentDeletionTime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, getIntConfig(CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR)));
3082
3083 if (currentDeletionTime == 0s)
3084 {
3085 sWorld->setWorldState(WS_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME, nextDeletionTime.count());
3086 }
3087}
uint64 getWorldState(uint32 index) const override
Definition: World.cpp:3290

References CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR, getIntConfig(), Acore::Time::GetNextTimeWithDayAndHour(), getWorldState(), sWorld, and WS_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME.

Referenced by SetInitialWorldSettings().

◆ InitDailyQuestResetTime()

void World::InitDailyQuestResetTime ( )
protected
3046{
3047 Seconds wstime = Seconds(sWorld->getWorldState(WS_DAILY_QUEST_RESET_TIME));
3049
3050 if (wstime == 0s)
3051 {
3052 sWorld->setWorldState(WS_DAILY_QUEST_RESET_TIME, _nextDailyQuestReset.count());
3053 }
3054}
@ WS_DAILY_QUEST_RESET_TIME
Definition: World.h:138

References _nextDailyQuestReset, Acore::Time::GetNextTimeWithDayAndHour(), sWorld, and WS_DAILY_QUEST_RESET_TIME.

Referenced by SetInitialWorldSettings().

◆ InitGuildResetTime()

void World::InitGuildResetTime ( )
protected
3090{
3092 _nextGuildReset = wstime > 0s ? wstime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6));
3093
3094 if (wstime == 0s)
3095 {
3096 sWorld->setWorldState(WS_GUILD_DAILY_RESET_TIME, _nextGuildReset.count());
3097 }
3098}
@ WS_GUILD_DAILY_RESET_TIME
Definition: World.h:139

References _nextGuildReset, Acore::Time::GetNextTimeWithDayAndHour(), getWorldState(), sWorld, and WS_GUILD_DAILY_RESET_TIME.

Referenced by SetInitialWorldSettings().

◆ InitMonthlyQuestResetTime()

void World::InitMonthlyQuestResetTime ( )
protected
3057{
3058 Seconds wstime = Seconds(sWorld->getWorldState(WS_MONTHLY_QUEST_RESET_TIME));
3060
3061 if (wstime == 0s)
3062 {
3064 }
3065}
@ WS_MONTHLY_QUEST_RESET_TIME
Definition: World.h:140

References _nextMonthlyQuestReset, Acore::Time::GetNextTimeWithDayAndHour(), sWorld, and WS_MONTHLY_QUEST_RESET_TIME.

Referenced by SetInitialWorldSettings().

◆ InitRandomBGResetTime()

void World::InitRandomBGResetTime ( )
protected
3068{
3069 Seconds wstime = Seconds(sWorld->getWorldState(WS_BG_DAILY_RESET_TIME));
3070 _nextRandomBGReset = wstime > 0s ? wstime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6));
3071
3072 if (wstime == 0s)
3073 {
3074 sWorld->setWorldState(WS_BG_DAILY_RESET_TIME, _nextRandomBGReset.count());
3075 }
3076}
@ WS_BG_DAILY_RESET_TIME
Definition: World.h:136

References _nextRandomBGReset, Acore::Time::GetNextTimeWithDayAndHour(), sWorld, and WS_BG_DAILY_RESET_TIME.

Referenced by SetInitialWorldSettings().

◆ InitWeeklyQuestResetTime()

void World::InitWeeklyQuestResetTime ( )
protected
3035{
3036 Seconds wstime = Seconds(sWorld->getWorldState(WS_WEEKLY_QUEST_RESET_TIME));
3038
3039 if (wstime == 0s)
3040 {
3042 }
3043}
@ WS_WEEKLY_QUEST_RESET_TIME
Definition: World.h:135

References _nextWeeklyQuestReset, Acore::Time::GetNextTimeWithDayAndHour(), sWorld, and WS_WEEKLY_QUEST_RESET_TIME.

Referenced by SetInitialWorldSettings().

◆ instance()

static World * World::instance ( )
static

◆ IsClosed()

bool World::IsClosed ( ) const
overridevirtual

Deny clients?

Implements IWorld.

198{
199 return _isClosed;
200}

References _isClosed.

◆ IsFFAPvPRealm()

bool World::IsFFAPvPRealm ( ) const
overridevirtual

Implements IWorld.

3312{
3314}
@ CONFIG_GAME_TYPE
Definition: IWorld.h:217
@ REALM_TYPE_FFA_PVP
Definition: Realm.h:61

References CONFIG_GAME_TYPE, getIntConfig(), and REALM_TYPE_FFA_PVP.

Referenced by SetInitialWorldSettings().

◆ IsPvPRealm()

bool World::IsPvPRealm ( ) const
overridevirtual

Are we on a "Player versus Player" server?

Implements IWorld.

3307{
3309}
@ REALM_TYPE_RPPVP
Definition: Realm.h:57
@ REALM_TYPE_PVP
Definition: Realm.h:54

References CONFIG_GAME_TYPE, getIntConfig(), REALM_TYPE_FFA_PVP, REALM_TYPE_PVP, and REALM_TYPE_RPPVP.

◆ IsShuttingDown()

bool World::IsShuttingDown ( ) const
inlineoverridevirtual

Are we in the middle of a shutdown?

Implements IWorld.

253{ return _shutdownTimer > 0; }

References _shutdownTimer.

◆ IsStopped()

static bool World::IsStopped ( )
inlinestatic

◆ KickAll()

void World::KickAll ( )
overridevirtual

Kick (and save) all players.

Implements IWorld.

2747{
2748 _queuedPlayer.clear(); // prevent send queue update packet and login queued sessions
2749
2750 // session not removed at kick and will removed in next update tick
2751 for (SessionMap::const_iterator itr = _sessions.begin(); itr != _sessions.end(); ++itr)
2752 itr->second->KickPlayer("KickAll sessions");
2753
2754 // pussywizard: kick offline sessions
2755 for (SessionMap::const_iterator itr = _offlineSessions.begin(); itr != _offlineSessions.end(); ++itr)
2756 itr->second->KickPlayer("KickAll offline sessions");
2757}

References _offlineSessions, _queuedPlayer, and _sessions.

◆ KickAllLess()

void World::KickAllLess ( AccountTypes  sec)
overridevirtual

Kick (and save) all players with security level less sec

Implements IWorld.

2761{
2762 // session not removed at kick and will removed in next update tick
2763 for (SessionMap::const_iterator itr = _sessions.begin(); itr != _sessions.end(); ++itr)
2764 if (itr->second->GetSecurity() < sec)
2765 itr->second->KickPlayer("KickAllLess");
2766}

References _sessions.

Referenced by SetPlayerSecurityLimit().

◆ KickSession()

bool World::KickSession ( uint32  id)
overridevirtual

Remove a given session.

  • Find the session, kick the user, but we can't delete session at this moment to prevent iterator invalidation

Implements IWorld.

244{
246 SessionMap::const_iterator itr = _sessions.find(id);
247
248 if (itr != _sessions.end() && itr->second)
249 {
250 if (itr->second->PlayerLoading())
251 return false;
252
253 itr->second->KickPlayer("KickSession", false);
254 }
255
256 return true;
257}

References _sessions.

Referenced by AddSession_().

◆ LoadConfigSettings()

void World::LoadConfigSettings ( bool  reload = false)
overridevirtual

Initialize config values.

  • Read the player limit and the Message of the day from the config file
  • Read ticket system setting from the config file
  • Get string for new logins (newly created characters)
  • Send server info on login?
  • Read all rates from the config file
  • Read other configuration items from the config file

    Todo:
    Add MonsterSight in worldserver.conf or put it as define
  • Load the CharDelete related config options
  • Load the ItemDelete related config options
  • Read the "Data" directory from the config file

Implements IWorld.

417{
418 if (reload)
419 {
420 if (!sConfigMgr->Reload())
421 {
422 LOG_ERROR("server.loading", "World settings reload fail: can't read settings.");
423 return;
424 }
425
426 sLog->LoadFromConfig();
427 sMetric->LoadFromConfigs();
428 }
429
430 // Set realm id and enable db logging
431 sLog->SetRealmId(realm.Id.Realm);
432
433 sScriptMgr->OnBeforeConfigLoad(reload);
434
435 // load update time related configs
437
439 if (!reload)
440 {
441 SetPlayerAmountLimit(sConfigMgr->GetOption<int32>("PlayerLimit", 1000));
442 }
443
445 _bool_configs[CONFIG_ALLOW_TICKETS] = sConfigMgr->GetOption<bool>("AllowTickets", true);
446 _bool_configs[CONFIG_DELETE_CHARACTER_TICKET_TRACE] = sConfigMgr->GetOption<bool>("DeletedCharacterTicketTrace", false);
447
449 SetNewCharString(sConfigMgr->GetOption<std::string>("PlayerStart.String", ""));
450
452 _int_configs[CONFIG_ENABLE_SINFO_LOGIN] = sConfigMgr->GetOption<int32>("Server.LoginInfo", 0);
453
455 _rate_values[RATE_HEALTH] = sConfigMgr->GetOption<float>("Rate.Health", 1);
456 if (_rate_values[RATE_HEALTH] < 0)
457 {
458 LOG_ERROR("server.loading", "Rate.Health ({}) must be > 0. Using 1 instead.", _rate_values[RATE_HEALTH]);
460 }
461 _rate_values[RATE_POWER_MANA] = sConfigMgr->GetOption<float>("Rate.Mana", 1);
463 {
464 LOG_ERROR("server.loading", "Rate.Mana ({}) must be > 0. Using 1 instead.", _rate_values[RATE_POWER_MANA]);
466 }
467 _rate_values[RATE_POWER_RAGE_INCOME] = sConfigMgr->GetOption<float>("Rate.Rage.Income", 1);
468 _rate_values[RATE_POWER_RAGE_LOSS] = sConfigMgr->GetOption<float>("Rate.Rage.Loss", 1);
470 {
471 LOG_ERROR("server.loading", "Rate.Rage.Loss ({}) must be > 0. Using 1 instead.", _rate_values[RATE_POWER_RAGE_LOSS]);
473 }
474 _rate_values[RATE_POWER_RUNICPOWER_INCOME] = sConfigMgr->GetOption<float>("Rate.RunicPower.Income", 1);
475 _rate_values[RATE_POWER_RUNICPOWER_LOSS] = sConfigMgr->GetOption<float>("Rate.RunicPower.Loss", 1);
477 {
478 LOG_ERROR("server.loading", "Rate.RunicPower.Loss ({}) must be > 0. Using 1 instead.", _rate_values[RATE_POWER_RUNICPOWER_LOSS]);
480 }
481 _rate_values[RATE_POWER_FOCUS] = sConfigMgr->GetOption<float>("Rate.Focus", 1.0f);
482 _rate_values[RATE_POWER_ENERGY] = sConfigMgr->GetOption<float>("Rate.Energy", 1.0f);
483
484 _rate_values[RATE_SKILL_DISCOVERY] = sConfigMgr->GetOption<float>("Rate.Skill.Discovery", 1.0f);
485
486 _rate_values[RATE_DROP_ITEM_POOR] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Poor", 1.0f);
487 _rate_values[RATE_DROP_ITEM_NORMAL] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Normal", 1.0f);
488 _rate_values[RATE_DROP_ITEM_UNCOMMON] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Uncommon", 1.0f);
489 _rate_values[RATE_DROP_ITEM_RARE] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Rare", 1.0f);
490 _rate_values[RATE_DROP_ITEM_EPIC] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Epic", 1.0f);
491 _rate_values[RATE_DROP_ITEM_LEGENDARY] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Legendary", 1.0f);
492 _rate_values[RATE_DROP_ITEM_ARTIFACT] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Artifact", 1.0f);
493 _rate_values[RATE_DROP_ITEM_REFERENCED] = sConfigMgr->GetOption<float>("Rate.Drop.Item.Referenced", 1.0f);
494 _rate_values[RATE_DROP_ITEM_REFERENCED_AMOUNT] = sConfigMgr->GetOption<float>("Rate.Drop.Item.ReferencedAmount", 1.0f);
495 _rate_values[RATE_DROP_ITEM_GROUP_AMOUNT] = sConfigMgr->GetOption<float>("Rate.Drop.Item.GroupAmount", 1.0f);
496 _rate_values[RATE_DROP_MONEY] = sConfigMgr->GetOption<float>("Rate.Drop.Money", 1.0f);
497
498 _rate_values[RATE_REWARD_BONUS_MONEY] = sConfigMgr->GetOption<float>("Rate.RewardBonusMoney", 1.0f);
499 _rate_values[RATE_XP_KILL] = sConfigMgr->GetOption<float>("Rate.XP.Kill", 1.0f);
500 _rate_values[RATE_XP_BG_KILL_AV] = sConfigMgr->GetOption<float>("Rate.XP.BattlegroundKillAV", 1.0f);
501 _rate_values[RATE_XP_BG_KILL_WSG] = sConfigMgr->GetOption<float>("Rate.XP.BattlegroundKillWSG", 1.0f);
502 _rate_values[RATE_XP_BG_KILL_AB] = sConfigMgr->GetOption<float>("Rate.XP.BattlegroundKillAB", 1.0f);
503 _rate_values[RATE_XP_BG_KILL_EOTS] = sConfigMgr->GetOption<float>("Rate.XP.BattlegroundKillEOTS", 1.0f);
504 _rate_values[RATE_XP_BG_KILL_SOTA] = sConfigMgr->GetOption<float>("Rate.XP.BattlegroundKillSOTA", 1.0f);
505 _rate_values[RATE_XP_BG_KILL_IC] = sConfigMgr->GetOption<float>("Rate.XP.BattlegroundKillIC", 1.0f);
506 _rate_values[RATE_XP_QUEST] = sConfigMgr->GetOption<float>("Rate.XP.Quest", 1.0f);
507 _rate_values[RATE_XP_QUEST_DF] = sConfigMgr->GetOption<float>("Rate.XP.Quest.DF", 1.0f);
508 _rate_values[RATE_XP_EXPLORE] = sConfigMgr->GetOption<float>("Rate.XP.Explore", 1.0f);
509 _rate_values[RATE_XP_PET] = sConfigMgr->GetOption<float>("Rate.XP.Pet", 1.0f);
510 _rate_values[RATE_XP_PET_NEXT_LEVEL] = sConfigMgr->GetOption<float>("Rate.Pet.LevelXP", 0.05f);
511 _rate_values[RATE_REPAIRCOST] = sConfigMgr->GetOption<float>("Rate.RepairCost", 1.0f);
512
513 _rate_values[RATE_SELLVALUE_ITEM_POOR] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Poor", 1.0f);
514 _rate_values[RATE_SELLVALUE_ITEM_NORMAL] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Normal", 1.0f);
515 _rate_values[RATE_SELLVALUE_ITEM_UNCOMMON] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Uncommon", 1.0f);
516 _rate_values[RATE_SELLVALUE_ITEM_RARE] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Rare", 1.0f);
517 _rate_values[RATE_SELLVALUE_ITEM_EPIC] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Epic", 1.0f);
518 _rate_values[RATE_SELLVALUE_ITEM_LEGENDARY] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Legendary", 1.0f);
519 _rate_values[RATE_SELLVALUE_ITEM_ARTIFACT] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Artifact", 1.0f);
520 _rate_values[RATE_SELLVALUE_ITEM_HEIRLOOM] = sConfigMgr->GetOption<float>("Rate.SellValue.Item.Heirloom", 1.0f);
521
522 _rate_values[ RATE_BUYVALUE_ITEM_POOR] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Poor", 1.0f);
523 _rate_values[ RATE_BUYVALUE_ITEM_NORMAL] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Normal", 1.0f);
524 _rate_values[ RATE_BUYVALUE_ITEM_UNCOMMON] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Uncommon", 1.0f);
525 _rate_values[ RATE_BUYVALUE_ITEM_RARE] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Rare", 1.0f);
526 _rate_values[ RATE_BUYVALUE_ITEM_EPIC] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Epic", 1.0f);
527 _rate_values[ RATE_BUYVALUE_ITEM_LEGENDARY] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Legendary", 1.0f);
528 _rate_values[RATE_BUYVALUE_ITEM_ARTIFACT] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Artifact", 1.0f);
529 _rate_values[RATE_BUYVALUE_ITEM_HEIRLOOM] = sConfigMgr->GetOption<float>("Rate.BuyValue.Item.Heirloom", 1.0f);
530
531 if (_rate_values[RATE_REPAIRCOST] < 0.0f)
532 {
533 LOG_ERROR("server.loading", "Rate.RepairCost ({}) must be >=0. Using 0.0 instead.", _rate_values[RATE_REPAIRCOST]);
535 }
536 _rate_values[RATE_REPUTATION_GAIN] = sConfigMgr->GetOption<float>("Rate.Reputation.Gain", 1.0f);
537 _rate_values[RATE_REPUTATION_LOWLEVEL_KILL] = sConfigMgr->GetOption<float>("Rate.Reputation.LowLevel.Kill", 1.0f);
538 _rate_values[RATE_REPUTATION_LOWLEVEL_QUEST] = sConfigMgr->GetOption<float>("Rate.Reputation.LowLevel.Quest", 1.0f);
539 _rate_values[RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS] = sConfigMgr->GetOption<float>("Rate.Reputation.RecruitAFriendBonus", 0.1f);
540 _rate_values[RATE_CREATURE_NORMAL_DAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Normal.Damage", 1.0f);
541 _rate_values[RATE_CREATURE_ELITE_ELITE_DAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.Elite.Damage", 1.0f);
542 _rate_values[RATE_CREATURE_ELITE_RAREELITE_DAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.RAREELITE.Damage", 1.0f);
543 _rate_values[RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.WORLDBOSS.Damage", 1.0f);
544 _rate_values[RATE_CREATURE_ELITE_RARE_DAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.RARE.Damage", 1.0f);
545 _rate_values[RATE_CREATURE_NORMAL_HP] = sConfigMgr->GetOption<float>("Rate.Creature.Normal.HP", 1.0f);
546 _rate_values[RATE_CREATURE_ELITE_ELITE_HP] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.Elite.HP", 1.0f);
547 _rate_values[RATE_CREATURE_ELITE_RAREELITE_HP] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.RAREELITE.HP", 1.0f);
548 _rate_values[RATE_CREATURE_ELITE_WORLDBOSS_HP] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.WORLDBOSS.HP", 1.0f);
549 _rate_values[RATE_CREATURE_ELITE_RARE_HP] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.RARE.HP", 1.0f);
550 _rate_values[RATE_CREATURE_NORMAL_SPELLDAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Normal.SpellDamage", 1.0f);
551 _rate_values[RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.Elite.SpellDamage", 1.0f);
552 _rate_values[RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.RAREELITE.SpellDamage", 1.0f);
553 _rate_values[RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.WORLDBOSS.SpellDamage", 1.0f);
554 _rate_values[RATE_CREATURE_ELITE_RARE_SPELLDAMAGE] = sConfigMgr->GetOption<float>("Rate.Creature.Elite.RARE.SpellDamage", 1.0f);
555 _rate_values[RATE_CREATURE_AGGRO] = sConfigMgr->GetOption<float>("Rate.Creature.Aggro", 1.0f);
556 _rate_values[RATE_REST_INGAME] = sConfigMgr->GetOption<float>("Rate.Rest.InGame", 1.0f);
557 _rate_values[RATE_REST_OFFLINE_IN_TAVERN_OR_CITY] = sConfigMgr->GetOption<float>("Rate.Rest.Offline.InTavernOrCity", 1.0f);
558 _rate_values[RATE_REST_OFFLINE_IN_WILDERNESS] = sConfigMgr->GetOption<float>("Rate.Rest.Offline.InWilderness", 1.0f);
559 _rate_values[RATE_DAMAGE_FALL] = sConfigMgr->GetOption<float>("Rate.Damage.Fall", 1.0f);
560 _rate_values[RATE_AUCTION_TIME] = sConfigMgr->GetOption<float>("Rate.Auction.Time", 1.0f);
561 _rate_values[RATE_AUCTION_DEPOSIT] = sConfigMgr->GetOption<float>("Rate.Auction.Deposit", 1.0f);
562 _rate_values[RATE_AUCTION_CUT] = sConfigMgr->GetOption<float>("Rate.Auction.Cut", 1.0f);
563 _rate_values[RATE_HONOR] = sConfigMgr->GetOption<float>("Rate.Honor", 1.0f);
564 _rate_values[RATE_ARENA_POINTS] = sConfigMgr->GetOption<float>("Rate.ArenaPoints", 1.0f);
565 _rate_values[RATE_INSTANCE_RESET_TIME] = sConfigMgr->GetOption<float>("Rate.InstanceResetTime", 1.0f);
566
567 _rate_values[RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE] = sConfigMgr->GetOption<float>("Rate.MissChanceMultiplier.TargetCreature", 11.0f);
568 _rate_values[RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER] = sConfigMgr->GetOption<float>("Rate.MissChanceMultiplier.TargetPlayer", 7.0f);
569 _bool_configs[CONFIG_MISS_CHANCE_MULTIPLIER_ONLY_FOR_PLAYERS] = sConfigMgr->GetOption<bool>("Rate.MissChanceMultiplier.OnlyAffectsPlayer", false);
570
571 _rate_values[RATE_TALENT] = sConfigMgr->GetOption<float>("Rate.Talent", 1.0f);
572 if (_rate_values[RATE_TALENT] < 0.0f)
573 {
574 LOG_ERROR("server.loading", "Rate.Talent ({}) must be > 0. Using 1 instead.", _rate_values[RATE_TALENT]);
576 }
577 _rate_values[RATE_MOVESPEED] = sConfigMgr->GetOption<float>("Rate.MoveSpeed", 1.0f);
579 {
580 LOG_ERROR("server.loading", "Rate.MoveSpeed ({}) must be > 0. Using 1 instead.", _rate_values[RATE_MOVESPEED]);
582 }
584 _rate_values[RATE_CORPSE_DECAY_LOOTED] = sConfigMgr->GetOption<float>("Rate.Corpse.Decay.Looted", 0.5f);
585
586 _rate_values[RATE_TARGET_POS_RECALCULATION_RANGE] = sConfigMgr->GetOption<float>("TargetPosRecalculateRange", 1.5f);
588 {
589 LOG_ERROR("server.loading", "TargetPosRecalculateRange ({}) must be >= {}. Using {} instead.", _rate_values[RATE_TARGET_POS_RECALCULATION_RANGE], CONTACT_DISTANCE, CONTACT_DISTANCE);
591 }
593 {
594 LOG_ERROR("server.loading", "TargetPosRecalculateRange ({}) must be <= {}. Using {} instead.", _rate_values[RATE_TARGET_POS_RECALCULATION_RANGE], NOMINAL_MELEE_RANGE, NOMINAL_MELEE_RANGE);
596 }
597
598 _rate_values[RATE_DURABILITY_LOSS_ON_DEATH] = sConfigMgr->GetOption<float>("DurabilityLoss.OnDeath", 10.0f);
600 {
601 LOG_ERROR("server.loading", "DurabilityLoss.OnDeath ({}) must be >=0. Using 0.0 instead.", _rate_values[RATE_DURABILITY_LOSS_ON_DEATH]);
603 }
605 {
606 LOG_ERROR("server.loading", "DurabilityLoss.OnDeath ({}) must be <= 100. Using 100.0 instead.", _rate_values[RATE_DURABILITY_LOSS_ON_DEATH]);
608 }
610
611 _rate_values[RATE_DURABILITY_LOSS_DAMAGE] = sConfigMgr->GetOption<float>("DurabilityLossChance.Damage", 0.5f);
613 {
614 LOG_ERROR("server.loading", "DurabilityLossChance.Damage ({}) must be >=0. Using 0.0 instead.", _rate_values[RATE_DURABILITY_LOSS_DAMAGE]);
616 }
617 _rate_values[RATE_DURABILITY_LOSS_ABSORB] = sConfigMgr->GetOption<float>("DurabilityLossChance.Absorb", 0.5f);
619 {
620 LOG_ERROR("server.loading", "DurabilityLossChance.Absorb ({}) must be >=0. Using 0.0 instead.", _rate_values[RATE_DURABILITY_LOSS_ABSORB]);
622 }
623 _rate_values[RATE_DURABILITY_LOSS_PARRY] = sConfigMgr->GetOption<float>("DurabilityLossChance.Parry", 0.05f);
625 {
626 LOG_ERROR("server.loading", "DurabilityLossChance.Parry ({}) must be >=0. Using 0.0 instead.", _rate_values[RATE_DURABILITY_LOSS_PARRY]);
628 }
629 _rate_values[RATE_DURABILITY_LOSS_BLOCK] = sConfigMgr->GetOption<float>("DurabilityLossChance.Block", 0.05f);
631 {
632 LOG_ERROR("server.loading", "DurabilityLossChance.Block ({}) must be >=0. Using 0.0 instead.", _rate_values[RATE_DURABILITY_LOSS_BLOCK]);
634 }
635
637
638 _bool_configs[CONFIG_DURABILITY_LOSS_IN_PVP] = sConfigMgr->GetOption<bool>("DurabilityLoss.InPvP", false);
639
640 _int_configs[CONFIG_COMPRESSION] = sConfigMgr->GetOption<int32>("Compression", 1);
642 {
643 LOG_ERROR("server.loading", "Compression level ({}) must be in range 1..9. Using default compression level (1).", _int_configs[CONFIG_COMPRESSION]);
645 }
646 _bool_configs[CONFIG_ADDON_CHANNEL] = sConfigMgr->GetOption<bool>("AddonChannel", true);
647 _bool_configs[CONFIG_CLEAN_CHARACTER_DB] = sConfigMgr->GetOption<bool>("CleanCharacterDB", false);
648 _int_configs[CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS] = sConfigMgr->GetOption<int32>("PersistentCharacterCleanFlags", 0);
649 _int_configs[CONFIG_CHAT_CHANNEL_LEVEL_REQ] = sConfigMgr->GetOption<int32>("ChatLevelReq.Channel", 1);
650 _int_configs[CONFIG_CHAT_WHISPER_LEVEL_REQ] = sConfigMgr->GetOption<int32>("ChatLevelReq.Whisper", 1);
651 _int_configs[CONFIG_CHAT_SAY_LEVEL_REQ] = sConfigMgr->GetOption<int32>("ChatLevelReq.Say", 1);
652 _int_configs[CONFIG_PARTY_LEVEL_REQ] = sConfigMgr->GetOption<int32>("PartyLevelReq", 1);
653 _int_configs[CONFIG_TRADE_LEVEL_REQ] = sConfigMgr->GetOption<int32>("LevelReq.Trade", 1);
654 _int_configs[CONFIG_TICKET_LEVEL_REQ] = sConfigMgr->GetOption<int32>("LevelReq.Ticket", 1);
655 _int_configs[CONFIG_AUCTION_LEVEL_REQ] = sConfigMgr->GetOption<int32>("LevelReq.Auction", 1);
656 _int_configs[CONFIG_MAIL_LEVEL_REQ] = sConfigMgr->GetOption<int32>("LevelReq.Mail", 1);
657 _bool_configs[CONFIG_ALLOW_PLAYER_COMMANDS] = sConfigMgr->GetOption<bool>("AllowPlayerCommands", 1);
658 _bool_configs[CONFIG_PRESERVE_CUSTOM_CHANNELS] = sConfigMgr->GetOption<bool>("PreserveCustomChannels", false);
659 _int_configs[CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION] = sConfigMgr->GetOption<int32>("PreserveCustomChannelDuration", 14);
660 _int_configs[CONFIG_INTERVAL_SAVE] = sConfigMgr->GetOption<int32>("PlayerSaveInterval", 15 * MINUTE * IN_MILLISECONDS);
661 _int_configs[CONFIG_INTERVAL_DISCONNECT_TOLERANCE] = sConfigMgr->GetOption<int32>("DisconnectToleranceInterval", 0);
662 _bool_configs[CONFIG_STATS_SAVE_ONLY_ON_LOGOUT] = sConfigMgr->GetOption<bool>("PlayerSave.Stats.SaveOnlyOnLogout", true);
663
664 _int_configs[CONFIG_MIN_LEVEL_STAT_SAVE] = sConfigMgr->GetOption<int32>("PlayerSave.Stats.MinLevel", 0);
666 {
667 LOG_ERROR("server.loading", "PlayerSave.Stats.MinLevel ({}) must be in range 0..80. Using default, do not save character stats (0).", _int_configs[CONFIG_MIN_LEVEL_STAT_SAVE]);
669 }
670
671 _int_configs[CONFIG_INTERVAL_MAPUPDATE] = sConfigMgr->GetOption<int32>("MapUpdateInterval", 10);
673 {
674 LOG_ERROR("server.loading", "MapUpdateInterval ({}) must be greater {}. Use this minimal value.", _int_configs[CONFIG_INTERVAL_MAPUPDATE], MIN_MAP_UPDATE_DELAY);
676 }
677 if (reload)
678 sMapMgr->SetMapUpdateInterval(_int_configs[CONFIG_INTERVAL_MAPUPDATE]);
679
680 _int_configs[CONFIG_INTERVAL_CHANGEWEATHER] = sConfigMgr->GetOption<int32>("ChangeWeatherInterval", 10 * MINUTE * IN_MILLISECONDS);
681
682 if (reload)
683 {
684 uint32 val = sConfigMgr->GetOption<int32>("WorldServerPort", 8085);
686 LOG_ERROR("server.loading", "WorldServerPort option can't be changed at worldserver.conf reload, using current value ({}).", _int_configs[CONFIG_PORT_WORLD]);
687 }
688 else
689 _int_configs[CONFIG_PORT_WORLD] = sConfigMgr->GetOption<int32>("WorldServerPort", 8085);
690
691 _bool_configs[CONFIG_CLOSE_IDLE_CONNECTIONS] = sConfigMgr->GetOption<bool>("CloseIdleConnections", true);
692 _int_configs[CONFIG_SOCKET_TIMEOUTTIME] = sConfigMgr->GetOption<int32>("SocketTimeOutTime", 900000);
693 _int_configs[CONFIG_SOCKET_TIMEOUTTIME_ACTIVE] = sConfigMgr->GetOption<int32>("SocketTimeOutTimeActive", 60000);
694 _int_configs[CONFIG_SESSION_ADD_DELAY] = sConfigMgr->GetOption<int32>("SessionAddDelay", 10000);
695
696 _float_configs[CONFIG_GROUP_XP_DISTANCE] = sConfigMgr->GetOption<float>("MaxGroupXPDistance", 74.0f);
697 _float_configs[CONFIG_MAX_RECRUIT_A_FRIEND_DISTANCE] = sConfigMgr->GetOption<float>("MaxRecruitAFriendBonusDistance", 100.0f);
698
700 _float_configs[CONFIG_SIGHT_MONSTER] = sConfigMgr->GetOption<float>("MonsterSight", 50);
701
702 if (reload)
703 {
704 uint32 val = sConfigMgr->GetOption<int32>("GameType", 0);
705 if (val != _int_configs[CONFIG_GAME_TYPE])
706 LOG_ERROR("server.loading", "GameType option can't be changed at worldserver.conf reload, using current value ({}).", _int_configs[CONFIG_GAME_TYPE]);
707 }
708 else
709 _int_configs[CONFIG_GAME_TYPE] = sConfigMgr->GetOption<int32>("GameType", 0);
710
711 if (reload)
712 {
713 uint32 val = sConfigMgr->GetOption<int32>("RealmZone", REALM_ZONE_DEVELOPMENT);
715 LOG_ERROR("server.loading", "RealmZone option can't be changed at worldserver.conf reload, using current value ({}).", _int_configs[CONFIG_REALM_ZONE]);
716 }
717 else
719
720 _bool_configs[CONFIG_STRICT_NAMES_RESERVED] = sConfigMgr->GetOption<bool> ("StrictNames.Reserved", true);
721 _bool_configs[CONFIG_STRICT_NAMES_PROFANITY] = sConfigMgr->GetOption<bool> ("StrictNames.Profanity", true);
722 _int_configs[CONFIG_STRICT_PLAYER_NAMES] = sConfigMgr->GetOption<int32> ("StrictPlayerNames", 0);
723 _int_configs[CONFIG_STRICT_CHARTER_NAMES] = sConfigMgr->GetOption<int32> ("StrictCharterNames", 0);
724 _int_configs[CONFIG_STRICT_CHANNEL_NAMES] = sConfigMgr->GetOption<int32> ("StrictChannelNames", 0);
725 _int_configs[CONFIG_STRICT_PET_NAMES] = sConfigMgr->GetOption<int32> ("StrictPetNames", 0);
726
727 _bool_configs[CONFIG_ALLOW_TWO_SIDE_ACCOUNTS] = sConfigMgr->GetOption<bool>("AllowTwoSide.Accounts", true);
728 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_CALENDAR] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Calendar", false);
729 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Chat", false);
730 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Channel", false);
731 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Group", false);
732 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Guild", false);
733 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Auction", false);
734 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_MAIL] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Mail", false);
735 _bool_configs[CONFIG_ALLOW_TWO_SIDE_WHO_LIST] = sConfigMgr->GetOption<bool>("AllowTwoSide.WhoList", false);
736 _bool_configs[CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND] = sConfigMgr->GetOption<bool>("AllowTwoSide.AddFriend", false);
737 _bool_configs[CONFIG_ALLOW_TWO_SIDE_TRADE] = sConfigMgr->GetOption<bool>("AllowTwoSide.Trade", false);
738 _bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_EMOTE] = sConfigMgr->GetOption<bool>("AllowTwoSide.Interaction.Emote", false);
739
740 _int_configs[CONFIG_MIN_PLAYER_NAME] = sConfigMgr->GetOption<int32> ("MinPlayerName", 2);
742 {
743 LOG_ERROR("server.loading", "MinPlayerName ({}) must be in range 1..{}. Set to 2.", _int_configs[CONFIG_MIN_PLAYER_NAME], MAX_PLAYER_NAME);
745 }
746
747 _int_configs[CONFIG_MIN_CHARTER_NAME] = sConfigMgr->GetOption<int32> ("MinCharterName", 2);
749 {
750 LOG_ERROR("server.loading", "MinCharterName ({}) must be in range 1..{}. Set to 2.", _int_configs[CONFIG_MIN_CHARTER_NAME], MAX_CHARTER_NAME);
752 }
753
754 _int_configs[CONFIG_MIN_PET_NAME] = sConfigMgr->GetOption<int32> ("MinPetName", 2);
756 {
757 LOG_ERROR("server.loading", "MinPetName ({}) must be in range 1..{}. Set to 2.", _int_configs[CONFIG_MIN_PET_NAME], MAX_PET_NAME);
759 }
760
761 _int_configs[CONFIG_CHARTER_COST_GUILD] = sConfigMgr->GetOption<int32>("Guild.CharterCost", 1000);
762 _int_configs[CONFIG_CHARTER_COST_ARENA_2v2] = sConfigMgr->GetOption<int32>("ArenaTeam.CharterCost.2v2", 800000);
763 _int_configs[CONFIG_CHARTER_COST_ARENA_3v3] = sConfigMgr->GetOption<int32>("ArenaTeam.CharterCost.3v3", 1200000);
764 _int_configs[CONFIG_CHARTER_COST_ARENA_5v5] = sConfigMgr->GetOption<int32>("ArenaTeam.CharterCost.5v5", 2000000);
765
766 _int_configs[CONFIG_MAX_WHO_LIST_RETURN] = sConfigMgr->GetOption<int32>("MaxWhoListReturns", 49);
767
768 _int_configs[CONFIG_CHARACTER_CREATING_DISABLED] = sConfigMgr->GetOption<int32>("CharacterCreating.Disabled", 0);
769 _int_configs[CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK] = sConfigMgr->GetOption<int32>("CharacterCreating.Disabled.RaceMask", 0);
770
771 _int_configs[CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK] = sConfigMgr->GetOption<int32>("CharacterCreating.Disabled.ClassMask", 0);
772
773 _int_configs[CONFIG_CHARACTERS_PER_REALM] = sConfigMgr->GetOption<int32>("CharactersPerRealm", 10);
775 {
776 LOG_ERROR("server.loading", "CharactersPerRealm ({}) must be in range 1..10. Set to 10.", _int_configs[CONFIG_CHARACTERS_PER_REALM]);
778 }
779
780 // must be after CONFIG_CHARACTERS_PER_REALM
781 _int_configs[CONFIG_CHARACTERS_PER_ACCOUNT] = sConfigMgr->GetOption<int32>("CharactersPerAccount", 50);
783 {
784 LOG_ERROR("server.loading", "CharactersPerAccount ({}) can't be less than CharactersPerRealm ({}).", _int_configs[CONFIG_CHARACTERS_PER_ACCOUNT], _int_configs[CONFIG_CHARACTERS_PER_REALM]);
786 }
787
788 _int_configs[CONFIG_HEROIC_CHARACTERS_PER_REALM] = sConfigMgr->GetOption<int32>("HeroicCharactersPerRealm", 1);
790 {
791 LOG_ERROR("server.loading", "HeroicCharactersPerRealm ({}) must be in range 0..10. Set to 1.", _int_configs[CONFIG_HEROIC_CHARACTERS_PER_REALM]);
793 }
794
795 _int_configs[CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_HEROIC_CHARACTER] = sConfigMgr->GetOption<int32>("CharacterCreating.MinLevelForHeroicCharacter", 55);
796
797 _int_configs[CONFIG_SKIP_CINEMATICS] = sConfigMgr->GetOption<int32>("SkipCinematics", 0);
799 {
800 LOG_ERROR("server.loading", "SkipCinematics ({}) must be in range 0..2. Set to 0.", _int_configs[CONFIG_SKIP_CINEMATICS]);
802 }
803
804 if (reload)
805 {
806 uint32 val = sConfigMgr->GetOption<int32>("MaxPlayerLevel", DEFAULT_MAX_LEVEL);
808 LOG_ERROR("server.loading", "MaxPlayerLevel option can't be changed at config reload, using current value ({}).", _int_configs[CONFIG_MAX_PLAYER_LEVEL]);
809 }
810 else
812
814 {
815 LOG_ERROR("server.loading", "MaxPlayerLevel ({}) must be in range 1..{}. Set to {}.", _int_configs[CONFIG_MAX_PLAYER_LEVEL], MAX_LEVEL, MAX_LEVEL);
817 }
818
819 _int_configs[CONFIG_MIN_DUALSPEC_LEVEL] = sConfigMgr->GetOption<int32>("MinDualSpecLevel", 40);
820
821 _int_configs[CONFIG_START_PLAYER_LEVEL] = sConfigMgr->GetOption<int32>("StartPlayerLevel", 1);
823 {
824 LOG_ERROR("server.loading", "StartPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to 1.", _int_configs[CONFIG_START_PLAYER_LEVEL], _int_configs[CONFIG_MAX_PLAYER_LEVEL]);
826 }
827
828 _int_configs[CONFIG_START_HEROIC_PLAYER_LEVEL] = sConfigMgr->GetOption<int32>("StartHeroicPlayerLevel", 55);
830 {
831 LOG_ERROR("server.loading", "StartHeroicPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to 55.",
834 }
835
836 _int_configs[CONFIG_START_PLAYER_MONEY] = sConfigMgr->GetOption<int32>("StartPlayerMoney", 0);
838 {
839 LOG_ERROR("server.loading", "StartPlayerMoney ({}) must be in range 0..{}. Set to {}.", _int_configs[CONFIG_START_PLAYER_MONEY], MAX_MONEY_AMOUNT, 0);
841 }
842
843 _int_configs[CONFIG_START_HEROIC_PLAYER_MONEY] = sConfigMgr->GetOption<int32>("StartHeroicPlayerMoney", 2000);
845 {
846 LOG_ERROR("server.loading", "StartHeroicPlayerMoney ({}) must be in range 0..{}. Set to {}.", _int_configs[CONFIG_START_HEROIC_PLAYER_MONEY], MAX_MONEY_AMOUNT, 2000);
848 }
849
850 _int_configs[CONFIG_MAX_HONOR_POINTS] = sConfigMgr->GetOption<int32>("MaxHonorPoints", 75000);
852 {
853 LOG_ERROR("server.loading", "MaxHonorPoints ({}) can't be negative. Set to 0.", _int_configs[CONFIG_MAX_HONOR_POINTS]);
855 }
856
857 _int_configs[CONFIG_MAX_HONOR_POINTS_MONEY_PER_POINT] = sConfigMgr->GetOption<int32>("MaxHonorPointsMoneyPerPoint", 0);
859 {
860 LOG_ERROR("server.loading", "MaxHonorPointsMoneyPerPoint ({}) can't be negative. Set to 0.", _int_configs[CONFIG_MAX_HONOR_POINTS_MONEY_PER_POINT]);
862 }
863
864 _int_configs[CONFIG_START_HONOR_POINTS] = sConfigMgr->GetOption<int32>("StartHonorPoints", 0);
866 {
867 LOG_ERROR("server.loading", "StartHonorPoints ({}) must be in range 0..MaxHonorPoints({}). Set to {}.",
870 }
871
872 _int_configs[CONFIG_MAX_ARENA_POINTS] = sConfigMgr->GetOption<int32>("MaxArenaPoints", 10000);
874 {
875 LOG_ERROR("server.loading", "MaxArenaPoints ({}) can't be negative. Set to 0.", _int_configs[CONFIG_MAX_ARENA_POINTS]);
877 }
878
879 _int_configs[CONFIG_START_ARENA_POINTS] = sConfigMgr->GetOption<int32>("StartArenaPoints", 0);
881 {
882 LOG_ERROR("server.loading", "StartArenaPoints ({}) must be in range 0..MaxArenaPoints({}). Set to {}.",
885 }
886
887 _int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] = sConfigMgr->GetOption<int32>("RecruitAFriend.MaxLevel", 60);
890 {
891 LOG_ERROR("server.loading", "RecruitAFriend.MaxLevel ({}) must be in the range 0..MaxLevel({}). Set to {}.",
894 }
895
896 _int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE] = sConfigMgr->GetOption<int32>("RecruitAFriend.MaxDifference", 4);
897 _bool_configs[CONFIG_ALL_TAXI_PATHS] = sConfigMgr->GetOption<bool>("AllFlightPaths", false);
898 _int_configs[CONFIG_INSTANT_TAXI] = sConfigMgr->GetOption<int32>("InstantFlightPaths", 0);
899
900 _bool_configs[CONFIG_INSTANCE_IGNORE_LEVEL] = sConfigMgr->GetOption<bool>("Instance.IgnoreLevel", false);
901 _bool_configs[CONFIG_INSTANCE_IGNORE_RAID] = sConfigMgr->GetOption<bool>("Instance.IgnoreRaid", false);
902 _bool_configs[CONFIG_INSTANCE_GMSUMMON_PLAYER] = sConfigMgr->GetOption<bool>("Instance.GMSummonPlayer", false);
903 _bool_configs[CONFIG_INSTANCE_SHARED_ID] = sConfigMgr->GetOption<bool>("Instance.SharedNormalHeroicId", false);
904
905 _int_configs[CONFIG_INSTANCE_RESET_TIME_HOUR] = sConfigMgr->GetOption<int32>("Instance.ResetTimeHour", 4);
906 _int_configs[CONFIG_INSTANCE_RESET_TIME_RELATIVE_TIMESTAMP] = sConfigMgr->GetOption<int32>("Instance.ResetTimeRelativeTimestamp", 1135814400);
907 _int_configs[CONFIG_INSTANCE_UNLOAD_DELAY] = sConfigMgr->GetOption<int32>("Instance.UnloadDelay", 30 * MINUTE * IN_MILLISECONDS);
908
909 _int_configs[CONFIG_MAX_PRIMARY_TRADE_SKILL] = sConfigMgr->GetOption<int32>("MaxPrimaryTradeSkill", 2);
910 _int_configs[CONFIG_MIN_PETITION_SIGNS] = sConfigMgr->GetOption<int32>("MinPetitionSigns", 9);
912 {
913 LOG_ERROR("server.loading", "MinPetitionSigns ({}) must be in range 0..9. Set to 9.", _int_configs[CONFIG_MIN_PETITION_SIGNS]);
915 }
916
917 _int_configs[CONFIG_GM_LOGIN_STATE] = sConfigMgr->GetOption<int32>("GM.LoginState", 2);
918 _int_configs[CONFIG_GM_VISIBLE_STATE] = sConfigMgr->GetOption<int32>("GM.Visible", 2);
919 _int_configs[CONFIG_GM_CHAT] = sConfigMgr->GetOption<int32>("GM.Chat", 2);
920 _int_configs[CONFIG_GM_WHISPERING_TO] = sConfigMgr->GetOption<int32>("GM.WhisperingTo", 2);
921
922 _int_configs[CONFIG_GM_LEVEL_IN_GM_LIST] = sConfigMgr->GetOption<int32>("GM.InGMList.Level", SEC_ADMINISTRATOR);
923 _int_configs[CONFIG_GM_LEVEL_IN_WHO_LIST] = sConfigMgr->GetOption<int32>("GM.InWhoList.Level", SEC_ADMINISTRATOR);
924 _int_configs[CONFIG_START_GM_LEVEL] = sConfigMgr->GetOption<int32>("GM.StartLevel", 1);
926 {
927 LOG_ERROR("server.loading", "GM.StartLevel ({}) must be in range StartPlayerLevel({})..{}. Set to {}.",
930 }
932 {
933 LOG_ERROR("server.loading", "GM.StartLevel ({}) must be in range 1..{}. Set to {}.", _int_configs[CONFIG_START_GM_LEVEL], MAX_LEVEL, MAX_LEVEL);
935 }
936 _bool_configs[CONFIG_ALLOW_GM_GROUP] = sConfigMgr->GetOption<bool>("GM.AllowInvite", false);
937 _bool_configs[CONFIG_ALLOW_GM_FRIEND] = sConfigMgr->GetOption<bool>("GM.AllowFriend", false);
938 _bool_configs[CONFIG_GM_LOWER_SECURITY] = sConfigMgr->GetOption<bool>("GM.LowerSecurity", false);
939 _float_configs[CONFIG_CHANCE_OF_GM_SURVEY] = sConfigMgr->GetOption<float>("GM.TicketSystem.ChanceOfGMSurvey", 50.0f);
940
941 _int_configs[CONFIG_GROUP_VISIBILITY] = sConfigMgr->GetOption<int32>("Visibility.GroupMode", 1);
942
943 _bool_configs[CONFIG_OBJECT_SPARKLES] = sConfigMgr->GetOption<bool>("Visibility.ObjectSparkles", true);
944
945 _bool_configs[CONFIG_LOW_LEVEL_REGEN_BOOST] = sConfigMgr->GetOption<bool>("EnableLowLevelRegenBoost", true);
946
947 _bool_configs[CONFIG_OBJECT_QUEST_MARKERS] = sConfigMgr->GetOption<bool>("Visibility.ObjectQuestMarkers", true);
948
949 _int_configs[CONFIG_MAIL_DELIVERY_DELAY] = sConfigMgr->GetOption<int32>("MailDeliveryDelay", HOUR);
950
951 _int_configs[CONFIG_UPTIME_UPDATE] = sConfigMgr->GetOption<int32>("UpdateUptimeInterval", 10);
953 {
954 LOG_ERROR("server.loading", "UpdateUptimeInterval ({}) must be > 0, set to default 10.", _int_configs[CONFIG_UPTIME_UPDATE]);
956 }
957
958 if (reload)
959 {
962 }
963
964 // log db cleanup interval
965 _int_configs[CONFIG_LOGDB_CLEARINTERVAL] = sConfigMgr->GetOption<int32>("LogDB.Opt.ClearInterval", 10);
967 {
968 LOG_ERROR("server.loading", "LogDB.Opt.ClearInterval ({}) must be > 0, set to default 10.", _int_configs[CONFIG_LOGDB_CLEARINTERVAL]);
970 }
971 if (reload)
972 {
975 }
976 _int_configs[CONFIG_LOGDB_CLEARTIME] = sConfigMgr->GetOption<int32>("LogDB.Opt.ClearTime", 1209600); // 14 days default
977 LOG_INFO("server.loading", "Will clear `logs` table of entries older than {} seconds every {} minutes.",
979
980 _int_configs[CONFIG_TELEPORT_TIMEOUT_NEAR] = sConfigMgr->GetOption<int32>("TeleportTimeoutNear", 25); // pussywizard
981 _int_configs[CONFIG_TELEPORT_TIMEOUT_FAR] = sConfigMgr->GetOption<int32>("TeleportTimeoutFar", 45); // pussywizard
982 _int_configs[CONFIG_MAX_ALLOWED_MMR_DROP] = sConfigMgr->GetOption<int32>("MaxAllowedMMRDrop", 500); // pussywizard
983 _bool_configs[CONFIG_ENABLE_LOGIN_AFTER_DC] = sConfigMgr->GetOption<bool>("EnableLoginAfterDC", true); // pussywizard
984 _bool_configs[CONFIG_DONT_CACHE_RANDOM_MOVEMENT_PATHS] = sConfigMgr->GetOption<bool>("DontCacheRandomMovementPaths", true); // pussywizard
985
986 _int_configs[CONFIG_SKILL_CHANCE_ORANGE] = sConfigMgr->GetOption<int32>("SkillChance.Orange", 100);
987 _int_configs[CONFIG_SKILL_CHANCE_YELLOW] = sConfigMgr->GetOption<int32>("SkillChance.Yellow", 75);
988 _int_configs[CONFIG_SKILL_CHANCE_GREEN] = sConfigMgr->GetOption<int32>("SkillChance.Green", 25);
989 _int_configs[CONFIG_SKILL_CHANCE_GREY] = sConfigMgr->GetOption<int32>("SkillChance.Grey", 0);
990
991 _int_configs[CONFIG_SKILL_CHANCE_MINING_STEPS] = sConfigMgr->GetOption<int32>("SkillChance.MiningSteps", 75);
992 _int_configs[CONFIG_SKILL_CHANCE_SKINNING_STEPS] = sConfigMgr->GetOption<int32>("SkillChance.SkinningSteps", 75);
993
994 _bool_configs[CONFIG_SKILL_PROSPECTING] = sConfigMgr->GetOption<bool>("SkillChance.Prospecting", false);
995 _bool_configs[CONFIG_SKILL_MILLING] = sConfigMgr->GetOption<bool>("SkillChance.Milling", false);
996
997 _int_configs[CONFIG_SKILL_GAIN_CRAFTING] = sConfigMgr->GetOption<int32>("SkillGain.Crafting", 1);
998
999 _int_configs[CONFIG_SKILL_GAIN_DEFENSE] = sConfigMgr->GetOption<int32>("SkillGain.Defense", 1);
1000
1001 _int_configs[CONFIG_SKILL_GAIN_GATHERING] = sConfigMgr->GetOption<int32>("SkillGain.Gathering", 1);
1002
1003 _int_configs[CONFIG_SKILL_GAIN_WEAPON] = sConfigMgr->GetOption<int32>("SkillGain.Weapon", 1);
1004
1005 _int_configs[CONFIG_MAX_OVERSPEED_PINGS] = sConfigMgr->GetOption<int32>("MaxOverspeedPings", 2);
1007 {
1008 LOG_ERROR("server.loading", "MaxOverspeedPings ({}) must be in range 2..infinity (or 0 to disable check). Set to 2.", _int_configs[CONFIG_MAX_OVERSPEED_PINGS]);
1010 }
1011
1012 _bool_configs[CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY] = sConfigMgr->GetOption<bool>("SaveRespawnTimeImmediately", true);
1013 _bool_configs[CONFIG_WEATHER] = sConfigMgr->GetOption<bool>("ActivateWeather", true);
1014
1015 _int_configs[CONFIG_DISABLE_BREATHING] = sConfigMgr->GetOption<int32>("DisableWaterBreath", SEC_CONSOLE);
1016
1017 _bool_configs[CONFIG_ALWAYS_MAX_SKILL_FOR_LEVEL] = sConfigMgr->GetOption<bool>("AlwaysMaxSkillForLevel", false);
1018
1019 if (reload)
1020 {
1021 uint32 val = sConfigMgr->GetOption<int32>("Expansion", 2);
1022 if (val != _int_configs[CONFIG_EXPANSION])
1023 LOG_ERROR("server.loading", "Expansion option can't be changed at worldserver.conf reload, using current value ({}).", _int_configs[CONFIG_EXPANSION]);
1024 }
1025 else
1026 _int_configs[CONFIG_EXPANSION] = sConfigMgr->GetOption<int32>("Expansion", 2);
1027
1028 _int_configs[CONFIG_CHATFLOOD_MESSAGE_COUNT] = sConfigMgr->GetOption<int32>("ChatFlood.MessageCount", 10);
1029 _int_configs[CONFIG_CHATFLOOD_MESSAGE_DELAY] = sConfigMgr->GetOption<int32>("ChatFlood.MessageDelay", 1);
1030 _int_configs[CONFIG_CHATFLOOD_ADDON_MESSAGE_COUNT] = sConfigMgr->GetOption<int32>("ChatFlood.AddonMessageCount", 100);
1031 _int_configs[CONFIG_CHATFLOOD_ADDON_MESSAGE_DELAY] = sConfigMgr->GetOption<int32>("ChatFlood.AddonMessageDelay", 1);
1032 _int_configs[CONFIG_CHATFLOOD_MUTE_TIME] = sConfigMgr->GetOption<int32>("ChatFlood.MuteTime", 10);
1033 _bool_configs[CONFIG_CHAT_MUTE_FIRST_LOGIN] = sConfigMgr->GetOption<bool>("Chat.MuteFirstLogin", false);
1034 _int_configs[CONFIG_CHAT_TIME_MUTE_FIRST_LOGIN] = sConfigMgr->GetOption<int32>("Chat.MuteTimeFirstLogin", 120);
1035
1036 _int_configs[CONFIG_EVENT_ANNOUNCE] = sConfigMgr->GetOption<int32>("Event.Announce", 0);
1037
1038 _float_configs[CONFIG_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS] = sConfigMgr->GetOption<float>("CreatureFamilyFleeAssistanceRadius", 30.0f);
1039 _float_configs[CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS] = sConfigMgr->GetOption<float>("CreatureFamilyAssistanceRadius", 10.0f);
1040 _int_configs[CONFIG_CREATURE_FAMILY_ASSISTANCE_DELAY] = sConfigMgr->GetOption<int32>("CreatureFamilyAssistanceDelay", 2000);
1041 _int_configs[CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD] = sConfigMgr->GetOption<int32>("CreatureFamilyAssistancePeriod", 3000);
1042 _int_configs[CONFIG_CREATURE_FAMILY_FLEE_DELAY] = sConfigMgr->GetOption<int32>("CreatureFamilyFleeDelay", 7000);
1043
1044 _int_configs[CONFIG_WORLD_BOSS_LEVEL_DIFF] = sConfigMgr->GetOption<int32>("WorldBossLevelDiff", 3);
1045
1046 _bool_configs[CONFIG_QUEST_ENABLE_QUEST_TRACKER] = sConfigMgr->GetOption<bool>("Quests.EnableQuestTracker", false);
1047
1048 // note: disable value (-1) will assigned as 0xFFFFFFF, to prevent overflow at calculations limit it to max possible player level MAX_LEVEL(100)
1049 _int_configs[CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF] = sConfigMgr->GetOption<int32>("Quests.LowLevelHideDiff", 4);
1052 _int_configs[CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF] = sConfigMgr->GetOption<int32>("Quests.HighLevelHideDiff", 7);
1055 _bool_configs[CONFIG_QUEST_IGNORE_RAID] = sConfigMgr->GetOption<bool>("Quests.IgnoreRaid", false);
1056 _bool_configs[CONFIG_QUEST_IGNORE_AUTO_ACCEPT] = sConfigMgr->GetOption<bool>("Quests.IgnoreAutoAccept", false);
1057 _bool_configs[CONFIG_QUEST_IGNORE_AUTO_COMPLETE] = sConfigMgr->GetOption<bool>("Quests.IgnoreAutoComplete", false);
1058
1059 _int_configs[CONFIG_RANDOM_BG_RESET_HOUR] = sConfigMgr->GetOption<int32>("Battleground.Random.ResetHour", 6);
1061 {
1062 LOG_ERROR("server.loading", "Battleground.Random.ResetHour ({}) can't be load. Set to 6.", _int_configs[CONFIG_RANDOM_BG_RESET_HOUR]);
1064 }
1065
1066 _int_configs[CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR] = sConfigMgr->GetOption<int32>("Calendar.DeleteOldEventsHour", 6);
1068 {
1069 LOG_ERROR("server.loading", "Calendar.DeleteOldEventsHour ({}) can't be load. Set to 6.", _int_configs[CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR]);
1071 }
1072
1073 _int_configs[CONFIG_GUILD_RESET_HOUR] = sConfigMgr->GetOption<int32>("Guild.ResetHour", 6);
1075 {
1076 LOG_ERROR("server.loading", "Guild.ResetHour ({}) can't be load. Set to 6.", _int_configs[CONFIG_GUILD_RESET_HOUR]);
1078 }
1079
1080 _int_configs[CONFIG_GUILD_BANK_INITIAL_TABS] = sConfigMgr->GetOption<int32>("Guild.BankInitialTabs", 0);
1081 _int_configs[CONFIG_GUILD_BANK_TAB_COST_0] = sConfigMgr->GetOption<int32>("Guild.BankTabCost0", 1000000);
1082 _int_configs[CONFIG_GUILD_BANK_TAB_COST_1] = sConfigMgr->GetOption<int32>("Guild.BankTabCost1", 2500000);
1083 _int_configs[CONFIG_GUILD_BANK_TAB_COST_2] = sConfigMgr->GetOption<int32>("Guild.BankTabCost2", 5000000);
1084 _int_configs[CONFIG_GUILD_BANK_TAB_COST_3] = sConfigMgr->GetOption<int32>("Guild.BankTabCost3", 10000000);
1085 _int_configs[CONFIG_GUILD_BANK_TAB_COST_4] = sConfigMgr->GetOption<int32>("Guild.BankTabCost4", 25000000);
1086 _int_configs[CONFIG_GUILD_BANK_TAB_COST_5] = sConfigMgr->GetOption<int32>("Guild.BankTabCost5", 50000000);
1087
1088 _bool_configs[CONFIG_DETECT_POS_COLLISION] = sConfigMgr->GetOption<bool>("DetectPosCollision", true);
1089
1090 _bool_configs[CONFIG_RESTRICTED_LFG_CHANNEL] = sConfigMgr->GetOption<bool>("Channel.RestrictedLfg", true);
1091 _bool_configs[CONFIG_SILENTLY_GM_JOIN_TO_CHANNEL] = sConfigMgr->GetOption<bool>("Channel.SilentlyGMJoin", false);
1092
1093 _bool_configs[CONFIG_TALENTS_INSPECTING] = sConfigMgr->GetOption<bool>("TalentsInspecting", true);
1094 _bool_configs[CONFIG_CHAT_FAKE_MESSAGE_PREVENTING] = sConfigMgr->GetOption<bool>("ChatFakeMessagePreventing", false);
1095 _int_configs[CONFIG_CHAT_STRICT_LINK_CHECKING_SEVERITY] = sConfigMgr->GetOption<int32>("ChatStrictLinkChecking.Severity", 0);
1096 _int_configs[CONFIG_CHAT_STRICT_LINK_CHECKING_KICK] = sConfigMgr->GetOption<int32>("ChatStrictLinkChecking.Kick", 0);
1097
1098 _int_configs[CONFIG_CORPSE_DECAY_NORMAL] = sConfigMgr->GetOption<int32>("Corpse.Decay.NORMAL", 60);
1099 _int_configs[CONFIG_CORPSE_DECAY_RARE] = sConfigMgr->GetOption<int32>("Corpse.Decay.RARE", 300);
1100 _int_configs[CONFIG_CORPSE_DECAY_ELITE] = sConfigMgr->GetOption<int32>("Corpse.Decay.ELITE", 300);
1101 _int_configs[CONFIG_CORPSE_DECAY_RAREELITE] = sConfigMgr->GetOption<int32>("Corpse.Decay.RAREELITE", 300);
1102 _int_configs[CONFIG_CORPSE_DECAY_WORLDBOSS] = sConfigMgr->GetOption<int32>("Corpse.Decay.WORLDBOSS", 3600);
1103
1104 _int_configs[CONFIG_DEATH_SICKNESS_LEVEL] = sConfigMgr->GetOption<int32> ("Death.SicknessLevel", 11);
1105 _bool_configs[CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP] = sConfigMgr->GetOption<bool>("Death.CorpseReclaimDelay.PvP", true);
1106 _bool_configs[CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE] = sConfigMgr->GetOption<bool>("Death.CorpseReclaimDelay.PvE", true);
1107 _bool_configs[CONFIG_DEATH_BONES_WORLD] = sConfigMgr->GetOption<bool>("Death.Bones.World", true);
1108 _bool_configs[CONFIG_DEATH_BONES_BG_OR_ARENA] = sConfigMgr->GetOption<bool>("Death.Bones.BattlegroundOrArena", true);
1109
1110 _bool_configs[CONFIG_DIE_COMMAND_MODE] = sConfigMgr->GetOption<bool>("Die.Command.Mode", true);
1111
1112 // always use declined names in the russian client
1114 (_int_configs[CONFIG_REALM_ZONE] == REALM_ZONE_RUSSIAN) ? true : sConfigMgr->GetOption<bool>("DeclinedNames", false);
1115
1116 _float_configs[CONFIG_LISTEN_RANGE_SAY] = sConfigMgr->GetOption<float>("ListenRange.Say", 25.0f);
1117 _float_configs[CONFIG_LISTEN_RANGE_TEXTEMOTE] = sConfigMgr->GetOption<float>("ListenRange.TextEmote", 25.0f);
1118 _float_configs[CONFIG_LISTEN_RANGE_YELL] = sConfigMgr->GetOption<float>("ListenRange.Yell", 300.0f);
1119
1120 _bool_configs[CONFIG_BATTLEGROUND_DISABLE_QUEST_SHARE_IN_BG] = sConfigMgr->GetOption<bool>("Battleground.DisableQuestShareInBG", false);
1121 _bool_configs[CONFIG_BATTLEGROUND_DISABLE_READY_CHECK_IN_BG] = sConfigMgr->GetOption<bool>("Battleground.DisableReadyCheckInBG", false);
1122 _bool_configs[CONFIG_BATTLEGROUND_CAST_DESERTER] = sConfigMgr->GetOption<bool>("Battleground.CastDeserter", true);
1123 _bool_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE] = sConfigMgr->GetOption<bool>("Battleground.QueueAnnouncer.Enable", false);
1124 _int_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_LIMIT_MIN_LEVEL] = sConfigMgr->GetOption<uint32>("Battleground.QueueAnnouncer.Limit.MinLevel", 0);
1125 _int_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_LIMIT_MIN_PLAYERS] = sConfigMgr->GetOption<uint32>("Battleground.QueueAnnouncer.Limit.MinPlayers", 3);
1126 _int_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_SPAM_DELAY] = sConfigMgr->GetOption<uint32>("Battleground.QueueAnnouncer.SpamProtection.Delay", 30);
1127 _bool_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_PLAYERONLY] = sConfigMgr->GetOption<bool>("Battleground.QueueAnnouncer.PlayerOnly", false);
1128 _bool_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMED] = sConfigMgr->GetOption<bool>("Battleground.QueueAnnouncer.Timed", false);
1129 _int_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMER] = sConfigMgr->GetOption<uint32>("Battleground.QueueAnnouncer.Timer", 30000);
1130 _bool_configs[CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE] = sConfigMgr->GetOption<bool>("Battleground.StoreStatistics.Enable", false);
1131 _bool_configs[CONFIG_BATTLEGROUND_TRACK_DESERTERS] = sConfigMgr->GetOption<bool>("Battleground.TrackDeserters.Enable", false);
1132 _int_configs[CONFIG_BATTLEGROUND_PREMATURE_FINISH_TIMER] = sConfigMgr->GetOption<int32> ("Battleground.PrematureFinishTimer", 5 * MINUTE * IN_MILLISECONDS);
1133 _int_configs[CONFIG_BATTLEGROUND_INVITATION_TYPE] = sConfigMgr->GetOption<int32>("Battleground.InvitationType", 0);
1134 _int_configs[CONFIG_BATTLEGROUND_PREMADE_GROUP_WAIT_FOR_MATCH] = sConfigMgr->GetOption<int32> ("Battleground.PremadeGroupWaitForMatch", 30 * MINUTE * IN_MILLISECONDS);
1135 _bool_configs[CONFIG_BG_XP_FOR_KILL] = sConfigMgr->GetOption<bool>("Battleground.GiveXPForKills", false);
1136 _int_configs[CONFIG_BATTLEGROUND_REPORT_AFK_TIMER] = sConfigMgr->GetOption<int32>("Battleground.ReportAFK.Timer", 4);
1137 _int_configs[CONFIG_BATTLEGROUND_REPORT_AFK] = sConfigMgr->GetOption<int32>("Battleground.ReportAFK", 3);
1139 {
1140 LOG_ERROR("server.loading", "Battleground.ReportAFK ({}) must be >0. Using 3 instead.", _int_configs[CONFIG_BATTLEGROUND_REPORT_AFK]);
1142 }
1144 {
1145 LOG_ERROR("server.loading", "Battleground.ReportAFK ({}) must be <10. Using 3 instead.", _int_configs[CONFIG_BATTLEGROUND_REPORT_AFK]);
1147 }
1148 _int_configs[CONFIG_BATTLEGROUND_PLAYER_RESPAWN] = sConfigMgr->GetOption<int32>("Battleground.PlayerRespawn", 30);
1150 {
1151 LOG_ERROR("server.loading", "Battleground.PlayerRespawn ({}) must be >2. Using 30 instead.", _int_configs[CONFIG_BATTLEGROUND_PLAYER_RESPAWN]);
1153 }
1154 _int_configs[CONFIG_BATTLEGROUND_RESTORATION_BUFF_RESPAWN] = sConfigMgr->GetOption<int32>("Battleground.RestorationBuffRespawn", 20);
1156 {
1157 LOG_ERROR("server.loading", "Battleground.RestorationBuffRespawn ({}) must be > 0. Using 20 instead.", _int_configs[CONFIG_BATTLEGROUND_RESTORATION_BUFF_RESPAWN]);
1159 }
1160 _int_configs[CONFIG_BATTLEGROUND_BERSERKING_BUFF_RESPAWN] = sConfigMgr->GetOption<int32>("Battleground.BerserkingBuffRespawn", 120);
1162 {
1163 LOG_ERROR("server.loading", "Battleground.BerserkingBuffRespawn ({}) must be > 0. Using 120 instead.", _int_configs[CONFIG_BATTLEGROUND_BERSERKING_BUFF_RESPAWN]);
1165 }
1166 _int_configs[CONFIG_BATTLEGROUND_SPEED_BUFF_RESPAWN] = sConfigMgr->GetOption<int32>("Battleground.SpeedBuffRespawn", 150);
1168 {
1169 LOG_ERROR("server.loading", "Battleground.SpeedBuffRespawn ({}) must be > 0. Using 150 instead.", _int_configs[CONFIG_BATTLEGROUND_SPEED_BUFF_RESPAWN]);
1171 }
1172
1173 _int_configs[CONFIG_ARENA_MAX_RATING_DIFFERENCE] = sConfigMgr->GetOption<uint32>("Arena.MaxRatingDifference", 150);
1174 _int_configs[CONFIG_ARENA_RATING_DISCARD_TIMER] = sConfigMgr->GetOption<uint32>("Arena.RatingDiscardTimer", 10 * MINUTE * IN_MILLISECONDS);
1175 _int_configs[CONFIG_ARENA_PREV_OPPONENTS_DISCARD_TIMER] = sConfigMgr->GetOption<uint32>("Arena.PreviousOpponentsDiscardTimer", 2 * MINUTE * IN_MILLISECONDS);
1176 _bool_configs[CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS] = sConfigMgr->GetOption<bool>("Arena.AutoDistributePoints", false);
1177 _int_configs[CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS] = sConfigMgr->GetOption<uint32>("Arena.AutoDistributeInterval", 7); // pussywizard: spoiled by implementing constant day and hour, always 7 now
1178 _int_configs[CONFIG_ARENA_GAMES_REQUIRED] = sConfigMgr->GetOption<uint32>("Arena.GamesRequired", 10);
1179 _int_configs[CONFIG_ARENA_SEASON_ID] = sConfigMgr->GetOption<uint32>("Arena.ArenaSeason.ID", 1);
1180 _int_configs[CONFIG_ARENA_START_RATING] = sConfigMgr->GetOption<uint32>("Arena.ArenaStartRating", 0);
1181 _int_configs[CONFIG_ARENA_START_PERSONAL_RATING] = sConfigMgr->GetOption<uint32>("Arena.ArenaStartPersonalRating", 1000);
1182 _int_configs[CONFIG_ARENA_START_MATCHMAKER_RATING] = sConfigMgr->GetOption<uint32>("Arena.ArenaStartMatchmakerRating", 1500);
1183 _bool_configs[CONFIG_ARENA_SEASON_IN_PROGRESS] = sConfigMgr->GetOption<bool>("Arena.ArenaSeason.InProgress", true);
1184 _float_configs[CONFIG_ARENA_WIN_RATING_MODIFIER_1] = sConfigMgr->GetOption<float>("Arena.ArenaWinRatingModifier1", 48.0f);
1185 _float_configs[CONFIG_ARENA_WIN_RATING_MODIFIER_2] = sConfigMgr->GetOption<float>("Arena.ArenaWinRatingModifier2", 24.0f);
1186 _float_configs[CONFIG_ARENA_LOSE_RATING_MODIFIER] = sConfigMgr->GetOption<float>("Arena.ArenaLoseRatingModifier", 24.0f);
1187 _float_configs[CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER] = sConfigMgr->GetOption<float>("Arena.ArenaMatchmakerRatingModifier", 24.0f);
1188 _bool_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE] = sConfigMgr->GetOption<bool>("Arena.QueueAnnouncer.Enable", false);
1189 _bool_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_PLAYERONLY] = sConfigMgr->GetOption<bool>("Arena.QueueAnnouncer.PlayerOnly", false);
1190
1191 _bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetOption<bool>("OffhandCheckAtSpellUnlearn", true);
1192 _int_configs[CONFIG_CREATURE_STOP_FOR_PLAYER] = sConfigMgr->GetOption<uint32>("Creature.MovingStopTimeForPlayer", 3 * MINUTE * IN_MILLISECONDS);
1193
1194 _int_configs[CONFIG_WATER_BREATH_TIMER] = sConfigMgr->GetOption<uint32>("WaterBreath.Timer", 180000);
1196 {
1197 LOG_ERROR("server.loading", "WaterBreath.Timer ({}) must be > 0. Using 180000 instead.", _int_configs[CONFIG_WATER_BREATH_TIMER]);
1199 }
1200
1201 if (int32 clientCacheId = sConfigMgr->GetOption<int32>("ClientCacheVersion", 0))
1202 {
1203 // overwrite DB/old value
1204 if (clientCacheId > 0)
1205 {
1207 LOG_INFO("server.loading", "Client cache version set to: {}", clientCacheId);
1208 }
1209 else
1210 LOG_ERROR("server.loading", "ClientCacheVersion can't be negative {}, ignored.", clientCacheId);
1211 }
1212
1213 _int_configs[CONFIG_INSTANT_LOGOUT] = sConfigMgr->GetOption<int32>("InstantLogout", SEC_MODERATOR);
1214
1215 _int_configs[CONFIG_GUILD_EVENT_LOG_COUNT] = sConfigMgr->GetOption<int32>("Guild.EventLogRecordsCount", GUILD_EVENTLOG_MAX_RECORDS);
1218 _int_configs[CONFIG_GUILD_BANK_EVENT_LOG_COUNT] = sConfigMgr->GetOption<int32>("Guild.BankEventLogRecordsCount", GUILD_BANKLOG_MAX_RECORDS);
1221
1222 //visibility on continents
1223 _maxVisibleDistanceOnContinents = sConfigMgr->GetOption<float>("Visibility.Distance.Continents", DEFAULT_VISIBILITY_DISTANCE);
1224 if (_maxVisibleDistanceOnContinents < 45 * sWorld->getRate(RATE_CREATURE_AGGRO))
1225 {
1226 LOG_ERROR("server.loading", "Visibility.Distance.Continents can't be less max aggro radius {}", 45 * sWorld->getRate(RATE_CREATURE_AGGRO));
1228 }
1230 {
1231 LOG_ERROR("server.loading", "Visibility.Distance.Continents can't be greater {}", MAX_VISIBILITY_DISTANCE);
1233 }
1234
1235 //visibility in instances
1236 _maxVisibleDistanceInInstances = sConfigMgr->GetOption<float>("Visibility.Distance.Instances", DEFAULT_VISIBILITY_INSTANCE);
1237 if (_maxVisibleDistanceInInstances < 45 * sWorld->getRate(RATE_CREATURE_AGGRO))
1238 {
1239 LOG_ERROR("server.loading", "Visibility.Distance.Instances can't be less max aggro radius {}", 45 * sWorld->getRate(RATE_CREATURE_AGGRO));
1241 }
1243 {
1244 LOG_ERROR("server.loading", "Visibility.Distance.Instances can't be greater {}", MAX_VISIBILITY_DISTANCE);
1246 }
1247
1248 //visibility in BG/Arenas
1249 _maxVisibleDistanceInBGArenas = sConfigMgr->GetOption<float>("Visibility.Distance.BGArenas", DEFAULT_VISIBILITY_BGARENAS);
1250 if (_maxVisibleDistanceInBGArenas < 45 * sWorld->getRate(RATE_CREATURE_AGGRO))
1251 {
1252 LOG_ERROR("server.loading", "Visibility.Distance.BGArenas can't be less max aggro radius {}", 45 * sWorld->getRate(RATE_CREATURE_AGGRO));
1254 }
1256 {
1257 LOG_ERROR("server.loading", "Visibility.Distance.BGArenas can't be greater {}", MAX_VISIBILITY_DISTANCE);
1259 }
1260
1262 _int_configs[CONFIG_CHARDELETE_METHOD] = sConfigMgr->GetOption<int32>("CharDelete.Method", 0);
1263 _int_configs[CONFIG_CHARDELETE_MIN_LEVEL] = sConfigMgr->GetOption<int32>("CharDelete.MinLevel", 0);
1264 _int_configs[CONFIG_CHARDELETE_KEEP_DAYS] = sConfigMgr->GetOption<int32>("CharDelete.KeepDays", 30);
1265
1267 _bool_configs[CONFIG_ITEMDELETE_METHOD] = sConfigMgr->GetOption<bool>("ItemDelete.Method", 0);
1268 _bool_configs[CONFIG_ITEMDELETE_VENDOR] = sConfigMgr->GetOption<bool>("ItemDelete.Vendor", 0);
1269 _int_configs[CONFIG_ITEMDELETE_QUALITY] = sConfigMgr->GetOption<int32>("ItemDelete.Quality", 3);
1270 _int_configs[CONFIG_ITEMDELETE_ITEM_LEVEL] = sConfigMgr->GetOption<int32>("ItemDelete.ItemLevel", 80);
1271
1272 _int_configs[CONFIG_FFA_PVP_TIMER] = sConfigMgr->GetOption<int32>("FFAPvPTimer", 30);
1273
1274 _int_configs[CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION] = sConfigMgr->GetOption<int32>("LootNeedBeforeGreedILvlRestriction", 70);
1275
1276 _bool_configs[CONFIG_PLAYER_SETTINGS_ENABLED] = sConfigMgr->GetOption<bool>("EnablePlayerSettings", 0);
1277
1278 _bool_configs[CONFIG_ALLOW_JOIN_BG_AND_LFG] = sConfigMgr->GetOption<bool>("JoinBGAndLFG.Enable", false);
1279
1280 _bool_configs[CONFIG_LEAVE_GROUP_ON_LOGOUT] = sConfigMgr->GetOption<bool>("LeaveGroupOnLogout.Enabled", true);
1281
1282 _bool_configs[CONFIG_QUEST_POI_ENABLED] = sConfigMgr->GetOption<bool>("QuestPOI.Enabled", true);
1283
1284 _int_configs[CONFIG_CHANGE_FACTION_MAX_MONEY] = sConfigMgr->GetOption<uint32>("ChangeFaction.MaxMoney", 0);
1285
1286 _bool_configs[CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH] = sConfigMgr->GetOption<bool>("Pet.RankMod.Health", true);
1287
1289 std::string dataPath = sConfigMgr->GetOption<std::string>("DataDir", "./");
1290 if (dataPath.empty() || (dataPath.at(dataPath.length() - 1) != '/' && dataPath.at(dataPath.length() - 1) != '\\'))
1291 dataPath.push_back('/');
1292
1293#if AC_PLATFORM == AC_PLATFORM_UNIX || AC_PLATFORM == AC_PLATFORM_APPLE
1294 if (dataPath[0] == '~')
1295 {
1296 const char* home = getenv("HOME");
1297 if (home)
1298 dataPath.replace(0, 1, home);
1299 }
1300#endif
1301
1302 if (reload)
1303 {
1304 if (dataPath != _dataPath)
1305 LOG_ERROR("server.loading", "DataDir option can't be changed at worldserver.conf reload, using current value ({}).", _dataPath);
1306 }
1307 else
1308 {
1309 _dataPath = dataPath;
1310 LOG_INFO("server.loading", "Using DataDir {}", _dataPath);
1311 }
1312
1313 _bool_configs[CONFIG_VMAP_INDOOR_CHECK] = sConfigMgr->GetOption<bool>("vmap.enableIndoorCheck", 0);
1314 bool enableIndoor = sConfigMgr->GetOption<bool>("vmap.enableIndoorCheck", true);
1315 bool enableLOS = sConfigMgr->GetOption<bool>("vmap.enableLOS", true);
1316 bool enableHeight = sConfigMgr->GetOption<bool>("vmap.enableHeight", true);
1317 bool enablePetLOS = sConfigMgr->GetOption<bool>("vmap.petLOS", true);
1318 _bool_configs[CONFIG_VMAP_BLIZZLIKE_PVP_LOS] = sConfigMgr->GetOption<bool>("vmap.BlizzlikePvPLOS", true);
1319
1320 if (!enableHeight)
1321 LOG_ERROR("server.loading", "VMap height checking disabled! Creatures movements and other various things WILL be broken! Expect no support.");
1322
1325 LOG_INFO("server.loading", "WORLD: VMap support included. LineOfSight:{}, getHeight:{}, indoorCheck:{} PetLOS:{}", enableLOS, enableHeight, enableIndoor, enablePetLOS);
1326
1327 _bool_configs[CONFIG_PET_LOS] = sConfigMgr->GetOption<bool>("vmap.petLOS", true);
1328 _bool_configs[CONFIG_START_CUSTOM_SPELLS] = sConfigMgr->GetOption<bool>("PlayerStart.CustomSpells", false);
1329 _int_configs[CONFIG_HONOR_AFTER_DUEL] = sConfigMgr->GetOption<int32>("HonorPointsAfterDuel", 0);
1330 _bool_configs[CONFIG_START_ALL_EXPLORED] = sConfigMgr->GetOption<bool>("PlayerStart.MapsExplored", false);
1331 _bool_configs[CONFIG_START_ALL_REP] = sConfigMgr->GetOption<bool>("PlayerStart.AllReputation", false);
1332 _bool_configs[CONFIG_ALWAYS_MAXSKILL] = sConfigMgr->GetOption<bool>("AlwaysMaxWeaponSkill", false);
1333 _bool_configs[CONFIG_PVP_TOKEN_ENABLE] = sConfigMgr->GetOption<bool>("PvPToken.Enable", false);
1334 _int_configs[CONFIG_PVP_TOKEN_MAP_TYPE] = sConfigMgr->GetOption<int32>("PvPToken.MapAllowType", 4);
1335 _int_configs[CONFIG_PVP_TOKEN_ID] = sConfigMgr->GetOption<int32>("PvPToken.ItemID", 29434);
1336 _int_configs[CONFIG_PVP_TOKEN_COUNT] = sConfigMgr->GetOption<int32>("PvPToken.ItemCount", 1);
1339
1340 _bool_configs[CONFIG_NO_RESET_TALENT_COST] = sConfigMgr->GetOption<bool>("NoResetTalentsCost", false);
1341 _int_configs[CONFIG_TOGGLE_XP_COST] = sConfigMgr->GetOption<int32>("ToggleXP.Cost", 100000);
1342 _bool_configs[CONFIG_SHOW_KICK_IN_WORLD] = sConfigMgr->GetOption<bool>("ShowKickInWorld", false);
1343 _bool_configs[CONFIG_SHOW_MUTE_IN_WORLD] = sConfigMgr->GetOption<bool>("ShowMuteInWorld", false);
1344 _bool_configs[CONFIG_SHOW_BAN_IN_WORLD] = sConfigMgr->GetOption<bool>("ShowBanInWorld", false);
1345 _int_configs[CONFIG_NUMTHREADS] = sConfigMgr->GetOption<int32>("MapUpdate.Threads", 1);
1346 _int_configs[CONFIG_MAX_RESULTS_LOOKUP_COMMANDS] = sConfigMgr->GetOption<int32>("Command.LookupMaxResults", 0);
1347
1348 // Warden
1349 _bool_configs[CONFIG_WARDEN_ENABLED] = sConfigMgr->GetOption<bool>("Warden.Enabled", true);
1350 _int_configs[CONFIG_WARDEN_NUM_MEM_CHECKS] = sConfigMgr->GetOption<int32>("Warden.NumMemChecks", 3);
1351 _int_configs[CONFIG_WARDEN_NUM_LUA_CHECKS] = sConfigMgr->GetOption<int32>("Warden.NumLuaChecks", 1);
1352 _int_configs[CONFIG_WARDEN_NUM_OTHER_CHECKS] = sConfigMgr->GetOption<int32>("Warden.NumOtherChecks", 7);
1353 _int_configs[CONFIG_WARDEN_CLIENT_BAN_DURATION] = sConfigMgr->GetOption<int32>("Warden.BanDuration", 86400);
1354 _int_configs[CONFIG_WARDEN_CLIENT_CHECK_HOLDOFF] = sConfigMgr->GetOption<int32>("Warden.ClientCheckHoldOff", 30);
1355 _int_configs[CONFIG_WARDEN_CLIENT_FAIL_ACTION] = sConfigMgr->GetOption<int32>("Warden.ClientCheckFailAction", 0);
1356 _int_configs[CONFIG_WARDEN_CLIENT_RESPONSE_DELAY] = sConfigMgr->GetOption<int32>("Warden.ClientResponseDelay", 600);
1357
1358 // Dungeon finder
1359 _int_configs[CONFIG_LFG_OPTIONSMASK] = sConfigMgr->GetOption<int32>("DungeonFinder.OptionsMask", 5);
1360
1361 // DBC_ItemAttributes
1362 _bool_configs[CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES] = sConfigMgr->GetOption<bool>("DBC.EnforceItemAttributes", true);
1363
1364 // Max instances per hour
1365 _int_configs[CONFIG_MAX_INSTANCES_PER_HOUR] = sConfigMgr->GetOption<int32>("AccountInstancesPerHour", 5);
1366
1367 // AutoBroadcast
1368 _bool_configs[CONFIG_AUTOBROADCAST] = sConfigMgr->GetOption<bool>("AutoBroadcast.On", false);
1369 _int_configs[CONFIG_AUTOBROADCAST_CENTER] = sConfigMgr->GetOption<int32>("AutoBroadcast.Center", 0);
1370 _int_configs[CONFIG_AUTOBROADCAST_INTERVAL] = sConfigMgr->GetOption<int32>("AutoBroadcast.Timer", 60000);
1371 _int_configs[CONFIG_AUTOBROADCAST_MIN_LEVEL_DISABLE] = sConfigMgr->GetOption<int32>("AutoBroadcast.MinDisableLevel", 0);
1372 if (reload)
1373 {
1376 }
1377
1378 // MySQL ping time interval
1379 _int_configs[CONFIG_DB_PING_INTERVAL] = sConfigMgr->GetOption<int32>("MaxPingTime", 30);
1380
1381 // misc
1382 _bool_configs[CONFIG_PDUMP_NO_PATHS] = sConfigMgr->GetOption<bool>("PlayerDump.DisallowPaths", true);
1383 _bool_configs[CONFIG_PDUMP_NO_OVERWRITE] = sConfigMgr->GetOption<bool>("PlayerDump.DisallowOverwrite", true);
1384 _bool_configs[CONFIG_ENABLE_MMAPS] = sConfigMgr->GetOption<bool>("MoveMaps.Enable", true);
1386
1387 // Wintergrasp
1388 _int_configs[CONFIG_WINTERGRASP_ENABLE] = sConfigMgr->GetOption<int32>("Wintergrasp.Enable", 1);
1389 _int_configs[CONFIG_WINTERGRASP_PLR_MAX] = sConfigMgr->GetOption<int32>("Wintergrasp.PlayerMax", 100);
1390 _int_configs[CONFIG_WINTERGRASP_PLR_MIN] = sConfigMgr->GetOption<int32>("Wintergrasp.PlayerMin", 0);
1391 _int_configs[CONFIG_WINTERGRASP_PLR_MIN_LVL] = sConfigMgr->GetOption<int32>("Wintergrasp.PlayerMinLvl", 77);
1392 _int_configs[CONFIG_WINTERGRASP_BATTLETIME] = sConfigMgr->GetOption<int32>("Wintergrasp.BattleTimer", 30);
1393 _int_configs[CONFIG_WINTERGRASP_NOBATTLETIME] = sConfigMgr->GetOption<int32>("Wintergrasp.NoBattleTimer", 150);
1394 _int_configs[CONFIG_WINTERGRASP_RESTART_AFTER_CRASH] = sConfigMgr->GetOption<int32>("Wintergrasp.CrashRestartTimer", 10);
1395
1396 _int_configs[CONFIG_BIRTHDAY_TIME] = sConfigMgr->GetOption<int32>("BirthdayTime", 1222964635);
1397 _bool_configs[CONFIG_MINIGOB_MANABONK] = sConfigMgr->GetOption<bool>("Minigob.Manabonk.Enable", true);
1398
1399 _bool_configs[CONFIG_ENABLE_CONTINENT_TRANSPORT] = sConfigMgr->GetOption<bool>("IsContinentTransport.Enabled", true);
1400 _bool_configs[CONFIG_ENABLE_CONTINENT_TRANSPORT_PRELOADING] = sConfigMgr->GetOption<bool>("IsPreloadedContinentTransport.Enabled", false);
1401
1402 _bool_configs[CONFIG_IP_BASED_ACTION_LOGGING] = sConfigMgr->GetOption<bool>("Allow.IP.Based.Action.Logging", false);
1403
1404 // Whether to use LoS from game objects
1405 _bool_configs[CONFIG_CHECK_GOBJECT_LOS] = sConfigMgr->GetOption<bool>("CheckGameObjectLoS", true);
1406
1407 _bool_configs[CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA] = sConfigMgr->GetOption<bool>("Calculate.Creature.Zone.Area.Data", false);
1408 _bool_configs[CONFIG_CALCULATE_GAMEOBJECT_ZONE_AREA_DATA] = sConfigMgr->GetOption<bool>("Calculate.Gameoject.Zone.Area.Data", false);
1409
1410 // Player can join LFG anywhere
1411 _bool_configs[CONFIG_LFG_LOCATION_ALL] = sConfigMgr->GetOption<bool>("LFG.Location.All", false);
1412
1413 // Prevent players AFK from being logged out
1414 _int_configs[CONFIG_AFK_PREVENT_LOGOUT] = sConfigMgr->GetOption<int32>("PreventAFKLogout", 0);
1415
1416 // Preload all grids of all non-instanced maps
1417 _bool_configs[CONFIG_PRELOAD_ALL_NON_INSTANCED_MAP_GRIDS] = sConfigMgr->GetOption<bool>("PreloadAllNonInstancedMapGrids", false);
1418
1419 // ICC buff override
1420 _int_configs[CONFIG_ICC_BUFF_HORDE] = sConfigMgr->GetOption<int32>("ICC.Buff.Horde", 73822);
1421 _int_configs[CONFIG_ICC_BUFF_ALLIANCE] = sConfigMgr->GetOption<int32>("ICC.Buff.Alliance", 73828);
1422
1423 _bool_configs[CONFIG_SET_ALL_CREATURES_WITH_WAYPOINT_MOVEMENT_ACTIVE] = sConfigMgr->GetOption<bool>("SetAllCreaturesWithWaypointMovementActive", false);
1424
1425 // packet spoof punishment
1427 _int_configs[CONFIG_PACKET_SPOOF_BANMODE] = sConfigMgr->GetOption<int32>("PacketSpoof.BanMode", (uint32)0);
1430
1431 _int_configs[CONFIG_PACKET_SPOOF_BANDURATION] = sConfigMgr->GetOption<int32>("PacketSpoof.BanDuration", 86400);
1432
1433 // Random Battleground Rewards
1434 _int_configs[CONFIG_BG_REWARD_WINNER_HONOR_FIRST] = sConfigMgr->GetOption<int32>("Battleground.RewardWinnerHonorFirst", 30);
1435 _int_configs[CONFIG_BG_REWARD_WINNER_ARENA_FIRST] = sConfigMgr->GetOption<int32>("Battleground.RewardWinnerArenaFirst", 25);
1436 _int_configs[CONFIG_BG_REWARD_WINNER_HONOR_LAST] = sConfigMgr->GetOption<int32>("Battleground.RewardWinnerHonorLast", 15);
1437 _int_configs[CONFIG_BG_REWARD_WINNER_ARENA_LAST] = sConfigMgr->GetOption<int32>("Battleground.RewardWinnerArenaLast", 0);
1438 _int_configs[CONFIG_BG_REWARD_LOSER_HONOR_FIRST] = sConfigMgr->GetOption<int32>("Battleground.RewardLoserHonorFirst", 5);
1439 _int_configs[CONFIG_BG_REWARD_LOSER_HONOR_LAST] = sConfigMgr->GetOption<int32>("Battleground.RewardLoserHonorLast", 5);
1440
1441 _int_configs[CONFIG_WAYPOINT_MOVEMENT_STOP_TIME_FOR_PLAYER] = sConfigMgr->GetOption<int32>("WaypointMovementStopTimeForPlayer", 120);
1442
1443 _int_configs[CONFIG_DUNGEON_ACCESS_REQUIREMENTS_PRINT_MODE] = sConfigMgr->GetOption<int32>("DungeonAccessRequirements.PrintMode", 1);
1444 _bool_configs[CONFIG_DUNGEON_ACCESS_REQUIREMENTS_PORTAL_CHECK_ILVL] = sConfigMgr->GetOption<bool>("DungeonAccessRequirements.PortalAvgIlevelCheck", false);
1445 _bool_configs[CONFIG_DUNGEON_ACCESS_REQUIREMENTS_LFG_DBC_LEVEL_OVERRIDE] = sConfigMgr->GetOption<bool>("DungeonAccessRequirements.LFGLevelDBCOverride", false);
1446 _int_configs[CONFIG_DUNGEON_ACCESS_REQUIREMENTS_OPTIONAL_STRING_ID] = sConfigMgr->GetOption<int32>("DungeonAccessRequirements.OptionalStringID", 0);
1447 _int_configs[CONFIG_NPC_EVADE_IF_NOT_REACHABLE] = sConfigMgr->GetOption<int32>("NpcEvadeIfTargetIsUnreachable", 5);
1448 _int_configs[CONFIG_NPC_REGEN_TIME_IF_NOT_REACHABLE_IN_RAID] = sConfigMgr->GetOption<int32>("NpcRegenHPTimeIfTargetIsUnreachable", 10);
1449 _bool_configs[CONFIG_REGEN_HP_CANNOT_REACH_TARGET_IN_RAID] = sConfigMgr->GetOption<bool>("NpcRegenHPIfTargetIsUnreachable", true);
1450
1451 //Debug
1452 _bool_configs[CONFIG_DEBUG_BATTLEGROUND] = sConfigMgr->GetOption<bool>("Debug.Battleground", false);
1453 _bool_configs[CONFIG_DEBUG_ARENA] = sConfigMgr->GetOption<bool>("Debug.Arena", false);
1454
1455 _int_configs[CONFIG_GM_LEVEL_CHANNEL_MODERATION] = sConfigMgr->GetOption<int32>("Channel.ModerationGMLevel", 1);
1456
1457 _bool_configs[CONFIG_SET_BOP_ITEM_TRADEABLE] = sConfigMgr->GetOption<bool>("Item.SetItemTradeable", true);
1458
1459 // Specifies if IP addresses can be logged to the database
1460 _bool_configs[CONFIG_ALLOW_LOGGING_IP_ADDRESSES_IN_DATABASE] = sConfigMgr->GetOption<bool>("AllowLoggingIPAddressesInDatabase", true, true);
1461
1462 // LFG group mechanics.
1463 _int_configs[CONFIG_LFG_MAX_KICK_COUNT] = sConfigMgr->GetOption<int32>("LFG.MaxKickCount", 2);
1465 {
1467 LOG_ERROR("server.loading", "LFG.MaxKickCount can't be higher than 3.");
1468 }
1469
1470 _int_configs[CONFIG_LFG_KICK_PREVENTION_TIMER] = sConfigMgr->GetOption<int32>("LFG.KickPreventionTimer", 15 * MINUTE * IN_MILLISECONDS) * IN_MILLISECONDS;
1472 {
1474 LOG_ERROR("server.loading", "LFG.KickPreventionTimer can't be higher than 15 minutes.");
1475 }
1476
1477 // Realm Availability
1478 _bool_configs[CONFIG_REALM_LOGIN_ENABLED] = sConfigMgr->GetOption<bool>("World.RealmAvailability", true);
1479
1480 // call ScriptMgr if we're reloading the configuration
1481 sScriptMgr->OnAfterConfigLoad(reload);
1482}
constexpr auto IN_MILLISECONDS
Definition: Common.h:62
constexpr auto HOUR
Definition: Common.h:57
@ SEC_ADMINISTRATOR
Definition: Common.h:69
@ SEC_MODERATOR
Definition: Common.h:67
@ SEC_CONSOLE
Definition: Common.h:70
constexpr auto MINUTE
Definition: Common.h:56
#define sLog
Definition: Log.h:128
#define sMetric
Definition: Metric.h:132
#define MAX_VISIBILITY_DISTANCE
Definition: ObjectDefines.h:31
#define DEFAULT_VISIBILITY_DISTANCE
Definition: ObjectDefines.h:40
#define CONTACT_DISTANCE
Definition: ObjectDefines.h:23
#define DEFAULT_VISIBILITY_BGARENAS
Definition: ObjectDefines.h:43
#define NOMINAL_MELEE_RANGE
Definition: ObjectDefines.h:48
#define DEFAULT_VISIBILITY_INSTANCE
Definition: ObjectDefines.h:41
#define MAX_MONEY_AMOUNT
Definition: Player.h:922
float baseMoveSpeed[MAX_MOVE_TYPE]
Definition: Unit.cpp:76
float playerBaseMoveSpeed[MAX_MOVE_TYPE]
Definition: Unit.cpp:89
#define MAX_MOVE_TYPE
Definition: Unit.h:389
#define MAX_PLAYER_NAME
Definition: ObjectMgr.h:688
#define MAX_CHARTER_NAME
Definition: ObjectMgr.h:691
#define MAX_PET_NAME
Definition: ObjectMgr.h:690
#define MIN_MAP_UPDATE_DELAY
Definition: GridDefines.h:42
#define sMapMgr
Definition: MapMgr.h:221
#define sScriptMgr
Definition: ScriptMgr.h:2706
WorldUpdateTime sWorldUpdateTime
Definition: UpdateTime.cpp:24
@ CONFIG_AUTOBROADCAST_CENTER
Definition: IWorld.h:352
@ CONFIG_CHANGE_FACTION_MAX_MONEY
Definition: IWorld.h:414
@ CONFIG_ARENA_START_MATCHMAKER_RATING
Definition: IWorld.h:329
@ CONFIG_ARENA_SEASON_ID
Definition: IWorld.h:326
@ CONFIG_MAX_ALLOWED_MMR_DROP
Definition: IWorld.h:341
@ CONFIG_BATTLEGROUND_PLAYER_RESPAWN
Definition: IWorld.h:314
@ CONFIG_START_HEROIC_PLAYER_MONEY
Definition: IWorld.h:240
@ CONFIG_CORPSE_DECAY_ELITE
Definition: IWorld.h:301
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_LIMIT_MIN_LEVEL
Definition: IWorld.h:318
@ CONFIG_ARENA_GAMES_REQUIRED
Definition: IWorld.h:325
@ CONFIG_MAX_INSTANCES_PER_HOUR
Definition: IWorld.h:360
@ CONFIG_GUILD_EVENT_LOG_COUNT
Definition: IWorld.h:343
@ CONFIG_ARENA_START_RATING
Definition: IWorld.h:327
@ CONFIG_SOCKET_TIMEOUTTIME
Definition: IWorld.h:215
@ CONFIG_BATTLEGROUND_REPORT_AFK_TIMER
Definition: IWorld.h:311
@ CONFIG_MAX_OVERSPEED_PINGS
Definition: IWorld.h:274
@ CONFIG_WARDEN_NUM_LUA_CHECKS
Definition: IWorld.h:375
@ CONFIG_BATTLEGROUND_BERSERKING_BUFF_RESPAWN
Definition: IWorld.h:316
@ CONFIG_CHARDELETE_METHOD
Definition: IWorld.h:350
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_SPAM_DELAY
Definition: IWorld.h:307
@ CONFIG_SESSION_ADD_DELAY
Definition: IWorld.h:216
@ CONFIG_AUTOBROADCAST_MIN_LEVEL_DISABLE
Definition: IWorld.h:354
@ CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK
Definition: IWorld.h:228
@ CONFIG_WARDEN_CLIENT_BAN_DURATION
Definition: IWorld.h:373
@ CONFIG_CLIENTCACHE_VERSION
Definition: IWorld.h:342
@ CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF
Definition: IWorld.h:286
@ CONFIG_SKILL_CHANCE_ORANGE
Definition: IWorld.h:264
@ CONFIG_GM_CHAT
Definition: IWorld.h:256
@ CONFIG_LFG_KICK_PREVENTION_TIMER
Definition: IWorld.h:413
@ CONFIG_FFA_PVP_TIMER
Definition: IWorld.h:410
@ CONFIG_CHATFLOOD_MUTE_TIME
Definition: IWorld.h:280
@ CONFIG_STRICT_PET_NAMES
Definition: IWorld.h:222
@ CONFIG_CHARACTER_CREATING_DISABLED
Definition: IWorld.h:226
@ CONFIG_MIN_PET_NAME
Definition: IWorld.h:225
@ CONFIG_LOGDB_CLEARTIME
Definition: IWorld.h:338
@ CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION
Definition: IWorld.h:411
@ CONFIG_INSTANCE_RESET_TIME_RELATIVE_TIMESTAMP
Definition: IWorld.h:249
@ CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF
Definition: IWorld.h:287
@ CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK
Definition: IWorld.h:227
@ CONFIG_INTERVAL_CHANGEWEATHER
Definition: IWorld.h:211
@ CONFIG_GUILD_BANK_TAB_COST_4
Definition: IWorld.h:404
@ CONFIG_NPC_EVADE_IF_NOT_REACHABLE
Definition: IWorld.h:408
@ CONFIG_EVENT_ANNOUNCE
Definition: IWorld.h:281
@ CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION
Definition: IWorld.h:357
@ CONFIG_GM_WHISPERING_TO
Definition: IWorld.h:257
@ CONFIG_SKILL_CHANCE_SKINNING_STEPS
Definition: IWorld.h:269
@ CONFIG_INSTANT_LOGOUT
Definition: IWorld.h:305
@ CONFIG_SKILL_CHANCE_YELLOW
Definition: IWorld.h:265
@ CONFIG_BATTLEGROUND_RESTORATION_BUFF_RESPAWN
Definition: IWorld.h:315
@ CONFIG_DUNGEON_ACCESS_REQUIREMENTS_OPTIONAL_STRING_ID
Definition: IWorld.h:398
@ CONFIG_AUTOBROADCAST_INTERVAL
Definition: IWorld.h:353
@ CONFIG_MAX_HONOR_POINTS
Definition: IWorld.h:241
@ CONFIG_PVP_TOKEN_MAP_TYPE
Definition: IWorld.h:331
@ CONFIG_ENABLE_SINFO_LOGIN
Definition: IWorld.h:334
@ CONFIG_CHARTER_COST_GUILD
Definition: IWorld.h:391
@ CONFIG_CHARDELETE_MIN_LEVEL
Definition: IWorld.h:351
@ CONFIG_WARDEN_NUM_MEM_CHECKS
Definition: IWorld.h:374
@ CONFIG_MAX_ARENA_POINTS
Definition: IWorld.h:244
@ CONFIG_ARENA_MAX_RATING_DIFFERENCE
Definition: IWorld.h:321
@ CONFIG_BG_REWARD_LOSER_HONOR_LAST
Definition: IWorld.h:390
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_LIMIT_MIN_PLAYERS
Definition: IWorld.h:319
@ CONFIG_BATTLEGROUND_SPEED_BUFF_RESPAWN
Definition: IWorld.h:317
@ CONFIG_START_GM_LEVEL
Definition: IWorld.h:260
@ CONFIG_MAIL_LEVEL_REQ
Definition: IWorld.h:298
@ CONFIG_SKILL_GAIN_DEFENSE
Definition: IWorld.h:271
@ CONFIG_MIN_PETITION_SIGNS
Definition: IWorld.h:252
@ CONFIG_BIRTHDAY_TIME
Definition: IWorld.h:377
@ CONFIG_WARDEN_CLIENT_CHECK_HOLDOFF
Definition: IWorld.h:371
@ CONFIG_PARTY_LEVEL_REQ
Definition: IWorld.h:293
@ CONFIG_MIN_LEVEL_STAT_SAVE
Definition: IWorld.h:345
@ CONFIG_START_HEROIC_PLAYER_LEVEL
Definition: IWorld.h:238
@ CONFIG_BATTLEGROUND_INVITATION_TYPE
Definition: IWorld.h:313
@ CONFIG_GUILD_BANK_TAB_COST_3
Definition: IWorld.h:403
@ CONFIG_START_ARENA_POINTS
Definition: IWorld.h:245
@ CONFIG_MIN_CHARTER_NAME
Definition: IWorld.h:224
@ CONFIG_NPC_REGEN_TIME_IF_NOT_REACHABLE_IN_RAID
Definition: IWorld.h:409
@ CONFIG_CHAT_CHANNEL_LEVEL_REQ
Definition: IWorld.h:290
@ CONFIG_STRICT_CHANNEL_NAMES
Definition: IWorld.h:221
@ CONFIG_BG_REWARD_WINNER_ARENA_FIRST
Definition: IWorld.h:386
@ CONFIG_CHARACTERS_PER_ACCOUNT
Definition: IWorld.h:229
@ CONFIG_DEATH_SICKNESS_LEVEL
Definition: IWorld.h:304
@ CONFIG_CHARTER_COST_ARENA_5v5
Definition: IWorld.h:394
@ CONFIG_INSTANCE_RESET_TIME_HOUR
Definition: IWorld.h:248
@ CONFIG_GM_LEVEL_CHANNEL_MODERATION
Definition: IWorld.h:406
@ CONFIG_WINTERGRASP_PLR_MIN_LVL
Definition: IWorld.h:363
@ CONFIG_PVP_TOKEN_ID
Definition: IWorld.h:332
@ CONFIG_GUILD_RESET_HOUR
Definition: IWorld.h:348
@ CONFIG_SKILL_GAIN_WEAPON
Definition: IWorld.h:273
@ CONFIG_MAIL_DELIVERY_DELAY
Definition: IWorld.h:262
@ CONFIG_WINTERGRASP_BATTLETIME
Definition: IWorld.h:364
@ CONFIG_WINTERGRASP_NOBATTLETIME
Definition: IWorld.h:365
@ CONFIG_PVP_TOKEN_COUNT
Definition: IWorld.h:333
@ CONFIG_PACKET_SPOOF_BANDURATION
Definition: IWorld.h:369
@ CONFIG_WATER_BREATH_TIMER
Definition: IWorld.h:415
@ CONFIG_INSTANT_TAXI
Definition: IWorld.h:379
@ CONFIG_SKILL_CHANCE_MINING_STEPS
Definition: IWorld.h:268
@ CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS
Definition: IWorld.h:324
@ CONFIG_START_PLAYER_MONEY
Definition: IWorld.h:239
@ CONFIG_GUILD_BANK_EVENT_LOG_COUNT
Definition: IWorld.h:344
@ CONFIG_TRADE_LEVEL_REQ
Definition: IWorld.h:295
@ CONFIG_BG_REWARD_WINNER_ARENA_LAST
Definition: IWorld.h:388
@ CONFIG_ICC_BUFF_ALLIANCE
Definition: IWorld.h:382
@ CONFIG_BATTLEGROUND_PREMADE_GROUP_WAIT_FOR_MATCH
Definition: IWorld.h:310
@ CONFIG_CORPSE_DECAY_NORMAL
Definition: IWorld.h:299
@ CONFIG_WINTERGRASP_RESTART_AFTER_CRASH
Definition: IWorld.h:366
@ CONFIG_TELEPORT_TIMEOUT_FAR
Definition: IWorld.h:340
@ CONFIG_SOCKET_TIMEOUTTIME_ACTIVE
Definition: IWorld.h:378
@ CONFIG_START_PLAYER_LEVEL
Definition: IWorld.h:237
@ CONFIG_GUILD_BANK_TAB_COST_2
Definition: IWorld.h:402
@ CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL
Definition: IWorld.h:246
@ CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE
Definition: IWorld.h:247
@ CONFIG_BG_REWARD_WINNER_HONOR_FIRST
Definition: IWorld.h:385
@ CONFIG_ARENA_START_PERSONAL_RATING
Definition: IWorld.h:328
@ CONFIG_COMPRESSION
Definition: IWorld.h:209
@ CONFIG_STRICT_CHARTER_NAMES
Definition: IWorld.h:220
@ CONFIG_INTERVAL_SAVE
Definition: IWorld.h:213
@ CONFIG_BG_REWARD_LOSER_HONOR_FIRST
Definition: IWorld.h:389
@ CONFIG_CORPSE_DECAY_WORLDBOSS
Definition: IWorld.h:303
@ CONFIG_TICKET_LEVEL_REQ
Definition: IWorld.h:296
@ CONFIG_PACKET_SPOOF_POLICY
Definition: IWorld.h:367
@ CONFIG_CHATFLOOD_ADDON_MESSAGE_COUNT
Definition: IWorld.h:278
@ CONFIG_DUNGEON_ACCESS_REQUIREMENTS_PRINT_MODE
Definition: IWorld.h:397
@ CONFIG_GUILD_BANK_TAB_COST_5
Definition: IWorld.h:405
@ CONFIG_LFG_OPTIONSMASK
Definition: IWorld.h:359
@ CONFIG_GM_LOGIN_STATE
Definition: IWorld.h:253
@ CONFIG_ARENA_PREV_OPPONENTS_DISCARD_TIMER
Definition: IWorld.h:323
@ CONFIG_AUCTION_LEVEL_REQ
Definition: IWorld.h:297
@ CONFIG_REALM_ZONE
Definition: IWorld.h:218
@ CONFIG_CHAT_STRICT_LINK_CHECKING_KICK
Definition: IWorld.h:289
@ CONFIG_GM_LEVEL_IN_GM_LIST
Definition: IWorld.h:258
@ CONFIG_ARENA_RATING_DISCARD_TIMER
Definition: IWorld.h:322
@ CONFIG_WARDEN_NUM_OTHER_CHECKS
Definition: IWorld.h:376
@ CONFIG_HEROIC_CHARACTERS_PER_REALM
Definition: IWorld.h:232
@ CONFIG_WINTERGRASP_ENABLE
Definition: IWorld.h:320
@ CONFIG_WAYPOINT_MOVEMENT_STOP_TIME_FOR_PLAYER
Definition: IWorld.h:396
@ CONFIG_GM_VISIBLE_STATE
Definition: IWorld.h:254
@ CONFIG_MAX_WHO_LIST_RETURN
Definition: IWorld.h:395
@ CONFIG_GROUP_VISIBILITY
Definition: IWorld.h:261
@ CONFIG_CREATURE_FAMILY_FLEE_DELAY
Definition: IWorld.h:284
@ CONFIG_PACKET_SPOOF_BANMODE
Definition: IWorld.h:368
@ CONFIG_CHARDELETE_KEEP_DAYS
Definition: IWorld.h:349
@ CONFIG_MAX_RESULTS_LOOKUP_COMMANDS
Definition: IWorld.h:355
@ CONFIG_START_HONOR_POINTS
Definition: IWorld.h:243
@ CONFIG_CREATURE_STOP_FOR_PLAYER
Definition: IWorld.h:231
@ CONFIG_CHAT_WHISPER_LEVEL_REQ
Definition: IWorld.h:291
@ CONFIG_SKILL_GAIN_GATHERING
Definition: IWorld.h:272
@ CONFIG_CHARTER_COST_ARENA_2v2
Definition: IWorld.h:392
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMER
Definition: IWorld.h:308
@ CONFIG_AFK_PREVENT_LOGOUT
Definition: IWorld.h:380
@ CONFIG_CHATFLOOD_MESSAGE_DELAY
Definition: IWorld.h:277
@ CONFIG_DISABLE_BREATHING
Definition: IWorld.h:306
@ CONFIG_STRICT_PLAYER_NAMES
Definition: IWorld.h:219
@ CONFIG_LOGDB_CLEARINTERVAL
Definition: IWorld.h:337
@ CONFIG_MAX_HONOR_POINTS_MONEY_PER_POINT
Definition: IWorld.h:242
@ CONFIG_BATTLEGROUND_REPORT_AFK
Definition: IWorld.h:312
@ CONFIG_INSTANCE_UNLOAD_DELAY
Definition: IWorld.h:250
@ CONFIG_GM_LEVEL_IN_WHO_LIST
Definition: IWorld.h:259
@ CONFIG_TELEPORT_TIMEOUT_NEAR
Definition: IWorld.h:339
@ CONFIG_GUILD_BANK_TAB_COST_1
Definition: IWorld.h:401
@ CONFIG_BATTLEGROUND_PREMATURE_FINISH_TIMER
Definition: IWorld.h:309
@ CONFIG_GUILD_BANK_TAB_COST_0
Definition: IWorld.h:400
@ CONFIG_HONOR_AFTER_DUEL
Definition: IWorld.h:330
@ CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS
Definition: IWorld.h:358
@ CONFIG_EXPANSION
Definition: IWorld.h:275
@ CONFIG_CORPSE_DECAY_RARE
Definition: IWorld.h:300
@ CONFIG_CHAT_STRICT_LINK_CHECKING_SEVERITY
Definition: IWorld.h:288
@ CONFIG_UPTIME_UPDATE
Definition: IWorld.h:263
@ CONFIG_WARDEN_CLIENT_RESPONSE_DELAY
Definition: IWorld.h:370
@ CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD
Definition: IWorld.h:283
@ CONFIG_WINTERGRASP_PLR_MAX
Definition: IWorld.h:361
@ CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_HEROIC_CHARACTER
Definition: IWorld.h:233
@ CONFIG_PORT_WORLD
Definition: IWorld.h:214
@ CONFIG_MIN_DUALSPEC_LEVEL
Definition: IWorld.h:236
@ CONFIG_LFG_MAX_KICK_COUNT
Definition: IWorld.h:412
@ CONFIG_SKILL_GAIN_CRAFTING
Definition: IWorld.h:270
@ CONFIG_RANDOM_BG_RESET_HOUR
Definition: IWorld.h:346
@ CONFIG_DB_PING_INTERVAL
Definition: IWorld.h:356
@ CONFIG_WORLD_BOSS_LEVEL_DIFF
Definition: IWorld.h:285
@ CONFIG_CORPSE_DECAY_RAREELITE
Definition: IWorld.h:302
@ CONFIG_CHATFLOOD_MESSAGE_COUNT
Definition: IWorld.h:276
@ CONFIG_CHAT_TIME_MUTE_FIRST_LOGIN
Definition: IWorld.h:294
@ CONFIG_WARDEN_CLIENT_FAIL_ACTION
Definition: IWorld.h:372
@ CONFIG_ITEMDELETE_QUALITY
Definition: IWorld.h:383
@ CONFIG_CHARTER_COST_ARENA_3v3
Definition: IWorld.h:393
@ CONFIG_MIN_PLAYER_NAME
Definition: IWorld.h:223
@ CONFIG_ICC_BUFF_HORDE
Definition: IWorld.h:381
@ CONFIG_CHATFLOOD_ADDON_MESSAGE_DELAY
Definition: IWorld.h:279
@ CONFIG_SKILL_CHANCE_GREY
Definition: IWorld.h:267
@ CONFIG_TOGGLE_XP_COST
Definition: IWorld.h:407
@ CONFIG_INTERVAL_MAPUPDATE
Definition: IWorld.h:210
@ CONFIG_NUMTHREADS
Definition: IWorld.h:336
@ CONFIG_CREATURE_FAMILY_ASSISTANCE_DELAY
Definition: IWorld.h:282
@ CONFIG_MAX_PRIMARY_TRADE_SKILL
Definition: IWorld.h:251
@ CONFIG_ITEMDELETE_ITEM_LEVEL
Definition: IWorld.h:384
@ CONFIG_SKIP_CINEMATICS
Definition: IWorld.h:234
@ CONFIG_SKILL_CHANCE_GREEN
Definition: IWorld.h:266
@ CONFIG_CHAT_SAY_LEVEL_REQ
Definition: IWorld.h:292
@ CONFIG_WINTERGRASP_PLR_MIN
Definition: IWorld.h:362
@ CONFIG_BG_REWARD_WINNER_HONOR_LAST
Definition: IWorld.h:387
@ CONFIG_CHARACTERS_PER_REALM
Definition: IWorld.h:230
@ CONFIG_GUILD_BANK_INITIAL_TABS
Definition: IWorld.h:399
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_CALENDAR
Definition: IWorld.h:77
@ CONFIG_SHOW_KICK_IN_WORLD
Definition: IWorld.h:135
@ CONFIG_QUEST_IGNORE_AUTO_COMPLETE
Definition: IWorld.h:149
@ CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY
Definition: IWorld.h:97
@ CONFIG_BG_XP_FOR_KILL
Definition: IWorld.h:121
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT
Definition: IWorld.h:78
@ CONFIG_AUTOBROADCAST
Definition: IWorld.h:138
@ CONFIG_CHECK_GOBJECT_LOS
Definition: IWorld.h:158
@ CONFIG_WEATHER
Definition: IWorld.h:98
@ CONFIG_ALL_TAXI_PATHS
Definition: IWorld.h:87
@ CONFIG_GM_LOWER_SECURITY
Definition: IWorld.h:94
@ CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS
Definition: IWorld.h:122
@ CONFIG_DUNGEON_ACCESS_REQUIREMENTS_LFG_DBC_LEVEL_OVERRIDE
Definition: IWorld.h:169
@ CONFIG_DONT_CACHE_RANDOM_MOVEMENT_PATHS
Definition: IWorld.h:147
@ CONFIG_SILENTLY_GM_JOIN_TO_CHANNEL
Definition: IWorld.h:103
@ CONFIG_BATTLEGROUND_DISABLE_QUEST_SHARE_IN_BG
Definition: IWorld.h:113
@ CONFIG_START_CUSTOM_SPELLS
Definition: IWorld.h:129
@ CONFIG_SKILL_MILLING
Definition: IWorld.h:96
@ CONFIG_PDUMP_NO_OVERWRITE
Definition: IWorld.h:144
@ CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP
Definition: IWorld.h:107
@ CONFIG_ALLOW_TWO_SIDE_WHO_LIST
Definition: IWorld.h:84
@ CONFIG_STRICT_NAMES_PROFANITY
Definition: IWorld.h:184
@ CONFIG_ALLOW_LOGGING_IP_ADDRESSES_IN_DATABASE
Definition: IWorld.h:172
@ CONFIG_SHOW_MUTE_IN_WORLD
Definition: IWorld.h:136
@ CONFIG_STRICT_NAMES_RESERVED
Definition: IWorld.h:183
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION
Definition: IWorld.h:82
@ CONFIG_ALLOW_GM_GROUP
Definition: IWorld.h:92
@ CONFIG_DECLINED_NAMES_USED
Definition: IWorld.h:112
@ CONFIG_MINIGOB_MANABONK
Definition: IWorld.h:154
@ CONFIG_PRELOAD_ALL_NON_INSTANCED_MAP_GRIDS
Definition: IWorld.h:161
@ CONFIG_LFG_LOCATION_ALL
Definition: IWorld.h:160
@ CONFIG_LEAVE_GROUP_ON_LOGOUT
Definition: IWorld.h:177
@ CONFIG_CALCULATE_GAMEOBJECT_ZONE_AREA_DATA
Definition: IWorld.h:157
@ CONFIG_ALLOW_PLAYER_COMMANDS
Definition: IWorld.h:73
@ CONFIG_ALLOW_GM_FRIEND
Definition: IWorld.h:93
@ CONFIG_INSTANCE_GMSUMMON_PLAYER
Definition: IWorld.h:90
@ CONFIG_QUEST_IGNORE_RAID
Definition: IWorld.h:100
@ CONFIG_SHOW_BAN_IN_WORLD
Definition: IWorld.h:137
@ CONFIG_CLEAN_CHARACTER_DB
Definition: IWorld.h:74
@ CONFIG_CHAT_MUTE_FIRST_LOGIN
Definition: IWorld.h:106
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_PLAYERONLY
Definition: IWorld.h:117
@ CONFIG_CHAT_FAKE_MESSAGE_PREVENTING
Definition: IWorld.h:105
@ CONFIG_ALLOW_TWO_SIDE_TRADE
Definition: IWorld.h:86
@ CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE
Definition: IWorld.h:108
@ CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND
Definition: IWorld.h:85
@ CONFIG_SKILL_PROSPECTING
Definition: IWorld.h:95
@ CONFIG_MISS_CHANCE_MULTIPLIER_ONLY_FOR_PLAYERS
Definition: IWorld.h:176
@ CONFIG_IP_BASED_ACTION_LOGGING
Definition: IWorld.h:155
@ CONFIG_ADDON_CHANNEL
Definition: IWorld.h:72
@ CONFIG_START_ALL_REP
Definition: IWorld.h:131
@ CONFIG_PVP_TOKEN_ENABLE
Definition: IWorld.h:133
@ CONFIG_ARENA_SEASON_IN_PROGRESS
Definition: IWorld.h:123
@ CONFIG_DETECT_POS_COLLISION
Definition: IWorld.h:101
@ CONFIG_DEATH_BONES_BG_OR_ARENA
Definition: IWorld.h:110
@ CONFIG_VMAP_BLIZZLIKE_PVP_LOS
Definition: IWorld.h:179
@ CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE
Definition: IWorld.h:119
@ CONFIG_INSTANCE_IGNORE_RAID
Definition: IWorld.h:89
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_MAIL
Definition: IWorld.h:83
@ CONFIG_BATTLEGROUND_CAST_DESERTER
Definition: IWorld.h:115
@ CONFIG_CLOSE_IDLE_CONNECTIONS
Definition: IWorld.h:159
@ CONFIG_OBJECT_QUEST_MARKERS
Definition: IWorld.h:182
@ CONFIG_SET_BOP_ITEM_TRADEABLE
Definition: IWorld.h:171
@ CONFIG_STATS_SAVE_ONLY_ON_LOGOUT
Definition: IWorld.h:75
@ CONFIG_ENABLE_CONTINENT_TRANSPORT_PRELOADING
Definition: IWorld.h:153
@ CONFIG_DEBUG_ARENA
Definition: IWorld.h:167
@ CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE
Definition: IWorld.h:124
@ CONFIG_RESTRICTED_LFG_CHANNEL
Definition: IWorld.h:102
@ CONFIG_NO_RESET_TALENT_COST
Definition: IWorld.h:134
@ CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA
Definition: IWorld.h:156
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL
Definition: IWorld.h:79
@ CONFIG_PRESERVE_CUSTOM_CHANNELS
Definition: IWorld.h:142
@ CONFIG_ENABLE_MMAPS
Definition: IWorld.h:145
@ CONFIG_ALLOW_JOIN_BG_AND_LFG
Definition: IWorld.h:175
@ CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH
Definition: IWorld.h:185
@ CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN
Definition: IWorld.h:126
@ CONFIG_QUEST_POI_ENABLED
Definition: IWorld.h:178
@ CONFIG_ITEMDELETE_METHOD
Definition: IWorld.h:163
@ CONFIG_DURABILITY_LOSS_IN_PVP
Definition: IWorld.h:71
@ CONFIG_ARENA_QUEUE_ANNOUNCER_PLAYERONLY
Definition: IWorld.h:125
@ CONFIG_ENABLE_LOGIN_AFTER_DC
Definition: IWorld.h:146
@ CONFIG_BATTLEGROUND_TRACK_DESERTERS
Definition: IWorld.h:120
@ CONFIG_QUEST_IGNORE_AUTO_ACCEPT
Definition: IWorld.h:148
@ CONFIG_DIE_COMMAND_MODE
Definition: IWorld.h:111
@ CONFIG_DEBUG_BATTLEGROUND
Definition: IWorld.h:166
@ CONFIG_ALLOW_TWO_SIDE_ACCOUNTS
Definition: IWorld.h:76
@ CONFIG_PLAYER_SETTINGS_ENABLED
Definition: IWorld.h:174
@ CONFIG_VMAP_INDOOR_CHECK
Definition: IWorld.h:127
@ CONFIG_INSTANCE_SHARED_ID
Definition: IWorld.h:91
@ CONFIG_WARDEN_ENABLED
Definition: IWorld.h:151
@ CONFIG_ITEMDELETE_VENDOR
Definition: IWorld.h:164
@ CONFIG_SET_ALL_CREATURES_WITH_WAYPOINT_MOVEMENT_ACTIVE
Definition: IWorld.h:165
@ CONFIG_PDUMP_NO_PATHS
Definition: IWorld.h:143
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_EMOTE
Definition: IWorld.h:162
@ CONFIG_ALWAYS_MAX_SKILL_FOR_LEVEL
Definition: IWorld.h:99
@ CONFIG_BATTLEGROUND_DISABLE_READY_CHECK_IN_BG
Definition: IWorld.h:114
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP
Definition: IWorld.h:80
@ CONFIG_OBJECT_SPARKLES
Definition: IWorld.h:180
@ CONFIG_DUNGEON_ACCESS_REQUIREMENTS_PORTAL_CHECK_ILVL
Definition: IWorld.h:168
@ CONFIG_DELETE_CHARACTER_TICKET_TRACE
Definition: IWorld.h:140
@ CONFIG_REALM_LOGIN_ENABLED
Definition: IWorld.h:173
@ CONFIG_ENABLE_CONTINENT_TRANSPORT
Definition: IWorld.h:152
@ CONFIG_DEATH_BONES_WORLD
Definition: IWorld.h:109
@ CONFIG_QUEST_ENABLE_QUEST_TRACKER
Definition: IWorld.h:150
@ CONFIG_REGEN_HP_CANNOT_REACH_TARGET_IN_RAID
Definition: IWorld.h:170
@ CONFIG_ALWAYS_MAXSKILL
Definition: IWorld.h:132
@ CONFIG_TALENTS_INSPECTING
Definition: IWorld.h:104
@ CONFIG_LOW_LEVEL_REGEN_BOOST
Definition: IWorld.h:181
@ CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES
Definition: IWorld.h:141
@ CONFIG_ALLOW_TICKETS
Definition: IWorld.h:139
@ CONFIG_START_ALL_EXPLORED
Definition: IWorld.h:130
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD
Definition: IWorld.h:81
@ CONFIG_PET_LOS
Definition: IWorld.h:128
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMED
Definition: IWorld.h:118
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE
Definition: IWorld.h:116
@ CONFIG_INSTANCE_IGNORE_LEVEL
Definition: IWorld.h:88
@ RATE_REWARD_BONUS_MONEY
Definition: IWorld.h:458
@ RATE_SELLVALUE_ITEM_ARTIFACT
Definition: IWorld.h:447
@ RATE_BUYVALUE_ITEM_ARTIFACT
Definition: IWorld.h:455
@ RATE_CREATURE_NORMAL_SPELLDAMAGE
Definition: IWorld.h:486
@ RATE_CREATURE_NORMAL_HP
Definition: IWorld.h:476
@ RATE_DAMAGE_FALL
Definition: IWorld.h:495
@ RATE_DROP_ITEM_REFERENCED_AMOUNT
Definition: IWorld.h:439
@ RATE_CREATURE_NORMAL_DAMAGE
Definition: IWorld.h:481
@ RATE_POWER_RAGE_INCOME
Definition: IWorld.h:424
@ RATE_CREATURE_ELITE_RARE_DAMAGE
Definition: IWorld.h:485
@ RATE_CREATURE_AGGRO
Definition: IWorld.h:491
@ RATE_BUYVALUE_ITEM_POOR
Definition: IWorld.h:449
@ RATE_SELLVALUE_ITEM_EPIC
Definition: IWorld.h:445
@ RATE_POWER_RAGE_LOSS
Definition: IWorld.h:425
@ RATE_REPUTATION_LOWLEVEL_QUEST
Definition: IWorld.h:474
@ RATE_ARENA_POINTS
Definition: IWorld.h:500
@ RATE_DURABILITY_LOSS_BLOCK
Definition: IWorld.h:509
@ RATE_DROP_ITEM_RARE
Definition: IWorld.h:434
@ RATE_XP_PET_NEXT_LEVEL
Definition: IWorld.h:470
@ RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE
Definition: IWorld.h:487
@ RATE_REPUTATION_LOWLEVEL_KILL
Definition: IWorld.h:473
@ RATE_XP_KILL
Definition: IWorld.h:459
@ RATE_XP_QUEST_DF
Definition: IWorld.h:467
@ RATE_POWER_RUNICPOWER_INCOME
Definition: IWorld.h:426
@ RATE_INSTANCE_RESET_TIME
Definition: IWorld.h:503
@ RATE_REST_OFFLINE_IN_WILDERNESS
Definition: IWorld.h:494
@ RATE_POWER_RUNICPOWER_LOSS
Definition: IWorld.h:427
@ RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE
Definition: IWorld.h:484
@ RATE_XP_BG_KILL_SOTA
Definition: IWorld.h:464
@ RATE_POWER_ENERGY
Definition: IWorld.h:429
@ RATE_TALENT
Definition: IWorld.h:501
@ RATE_SELLVALUE_ITEM_NORMAL
Definition: IWorld.h:442
@ RATE_XP_BG_KILL_WSG
Definition: IWorld.h:461
@ RATE_CREATURE_ELITE_RAREELITE_DAMAGE
Definition: IWorld.h:483
@ RATE_POWER_MANA
Definition: IWorld.h:423
@ RATE_CREATURE_ELITE_WORLDBOSS_HP
Definition: IWorld.h:479
@ RATE_DROP_ITEM_LEGENDARY
Definition: IWorld.h:436
@ RATE_DURABILITY_LOSS_PARRY
Definition: IWorld.h:507
@ RATE_XP_BG_KILL_AB
Definition: IWorld.h:462
@ RATE_BUYVALUE_ITEM_UNCOMMON
Definition: IWorld.h:451
@ RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER
Definition: IWorld.h:512
@ RATE_DROP_ITEM_POOR
Definition: IWorld.h:431
@ RATE_BUYVALUE_ITEM_LEGENDARY
Definition: IWorld.h:454
@ RATE_REST_OFFLINE_IN_TAVERN_OR_CITY
Definition: IWorld.h:493
@ RATE_SELLVALUE_ITEM_HEIRLOOM
Definition: IWorld.h:448
@ RATE_AUCTION_DEPOSIT
Definition: IWorld.h:497
@ RATE_DROP_ITEM_UNCOMMON
Definition: IWorld.h:433
@ RATE_DROP_ITEM_REFERENCED
Definition: IWorld.h:438
@ RATE_BUYVALUE_ITEM_NORMAL
Definition: IWorld.h:450
@ RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE
Definition: IWorld.h:488
@ RATE_XP_BG_KILL_EOTS
Definition: IWorld.h:463
@ RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS
Definition: IWorld.h:475
@ RATE_REPAIRCOST
Definition: IWorld.h:471
@ RATE_DROP_MONEY
Definition: IWorld.h:457
@ RATE_DURABILITY_LOSS_DAMAGE
Definition: IWorld.h:506
@ RATE_AUCTION_CUT
Definition: IWorld.h:498
@ RATE_BUYVALUE_ITEM_HEIRLOOM
Definition: IWorld.h:456
@ RATE_HEALTH
Definition: IWorld.h:422
@ RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE
Definition: IWorld.h:511
@ RATE_XP_PET
Definition: IWorld.h:469
@ RATE_MOVESPEED
Definition: IWorld.h:510
@ RATE_SELLVALUE_ITEM_UNCOMMON
Definition: IWorld.h:443
@ RATE_DURABILITY_LOSS_ON_DEATH
Definition: IWorld.h:505
@ RATE_SELLVALUE_ITEM_POOR
Definition: IWorld.h:441
@ RATE_BUYVALUE_ITEM_EPIC
Definition: IWorld.h:453
@ RATE_CREATURE_ELITE_ELITE_DAMAGE
Definition: IWorld.h:482
@ RATE_XP_QUEST
Definition: IWorld.h:466
@ RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE
Definition: IWorld.h:489
@ RATE_DROP_ITEM_EPIC
Definition: IWorld.h:435
@ RATE_SELLVALUE_ITEM_RARE
Definition: IWorld.h:444
@ RATE_SKILL_DISCOVERY
Definition: IWorld.h:430
@ RATE_DROP_ITEM_ARTIFACT
Definition: IWorld.h:437
@ RATE_CREATURE_ELITE_RARE_SPELLDAMAGE
Definition: IWorld.h:490
@ RATE_CREATURE_ELITE_ELITE_HP
Definition: IWorld.h:477
@ RATE_XP_EXPLORE
Definition: IWorld.h:468
@ RATE_CREATURE_ELITE_RARE_HP
Definition: IWorld.h:480
@ RATE_REPUTATION_GAIN
Definition: IWorld.h:472
@ RATE_REST_INGAME
Definition: IWorld.h:492
@ RATE_BUYVALUE_ITEM_RARE
Definition: IWorld.h:452
@ RATE_POWER_FOCUS
Definition: IWorld.h:428
@ RATE_SELLVALUE_ITEM_LEGENDARY
Definition: IWorld.h:446
@ RATE_HONOR
Definition: IWorld.h:499
@ RATE_CORPSE_DECAY_LOOTED
Definition: IWorld.h:502
@ RATE_DURABILITY_LOSS_ABSORB
Definition: IWorld.h:508
@ RATE_AUCTION_TIME
Definition: IWorld.h:496
@ RATE_XP_BG_KILL_IC
Definition: IWorld.h:465
@ RATE_DROP_ITEM_GROUP_AMOUNT
Definition: IWorld.h:440
@ RATE_CREATURE_ELITE_RAREELITE_HP
Definition: IWorld.h:478
@ RATE_DROP_ITEM_NORMAL
Definition: IWorld.h:432
@ RATE_XP_BG_KILL_AV
Definition: IWorld.h:460
@ RATE_TARGET_POS_RECALCULATION_RANGE
Definition: IWorld.h:504
@ CONFIG_SIGHT_MONSTER
Definition: IWorld.h:193
@ CONFIG_ARENA_WIN_RATING_MODIFIER_1
Definition: IWorld.h:200
@ CONFIG_GROUP_XP_DISTANCE
Definition: IWorld.h:191
@ CONFIG_LISTEN_RANGE_YELL
Definition: IWorld.h:196
@ CONFIG_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS
Definition: IWorld.h:197
@ CONFIG_ARENA_WIN_RATING_MODIFIER_2
Definition: IWorld.h:201
@ CONFIG_ARENA_LOSE_RATING_MODIFIER
Definition: IWorld.h:202
@ CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS
Definition: IWorld.h:198
@ CONFIG_LISTEN_RANGE_SAY
Definition: IWorld.h:194
@ CONFIG_MAX_RECRUIT_A_FRIEND_DISTANCE
Definition: IWorld.h:192
@ CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER
Definition: IWorld.h:203
@ CONFIG_CHANCE_OF_GM_SURVEY
Definition: IWorld.h:199
@ CONFIG_LISTEN_RANGE_TEXTEMOTE
Definition: IWorld.h:195
#define MAX_LEVEL
Definition: DBCEnums.h:45
#define DEFAULT_MAX_LEVEL
Definition: DBCEnums.h:41
#define GUILD_EVENTLOG_MAX_RECORDS
Definition: SharedDefines.h:3208
#define GUILD_BANKLOG_MAX_RECORDS
Definition: SharedDefines.h:3207
@ REALM_ZONE_RUSSIAN
Definition: World.h:104
@ REALM_ZONE_DEVELOPMENT
Definition: World.h:93
@ WUPDATE_CLEANDB
Definition: World.h:67
@ WUPDATE_AUTOBROADCAST
Definition: World.h:68
@ WUPDATE_UPTIME
Definition: World.h:64
void setEnableHeightCalc(bool pVal)
Definition: IVMapMgr.h:116
void setEnableLineOfSightCalc(bool pVal)
Definition: IVMapMgr.h:111
static void InitializeDisabledMaps()
Definition: MMapFactory.cpp:39
static VMapMgr2 * createOrGetVMapMgr()
Definition: VMapFactory.cpp:27
@ POLICY_KICK
Definition: WorldSession.h:1101
void LoadFromConfig()
Definition: UpdateTime.cpp:103
float getRate(Rates rate) const override
Get a server rate (see Rates)
Definition: World.h:268
void SetPlayerAmountLimit(uint32 limit) override
Active session server limit.
Definition: World.h:200
void SetNewCharString(std::string const &str) override
Set the string for new characters (first login)
Definition: World.h:217

References _bool_configs, _dataPath, _float_configs, _int_configs, _maxVisibleDistanceInBGArenas, _maxVisibleDistanceInInstances, _maxVisibleDistanceOnContinents, _rate_values, _timers, baseMoveSpeed, CONFIG_ADDON_CHANNEL, CONFIG_AFK_PREVENT_LOGOUT, CONFIG_ALL_TAXI_PATHS, CONFIG_ALLOW_GM_FRIEND, CONFIG_ALLOW_GM_GROUP, CONFIG_ALLOW_JOIN_BG_AND_LFG, CONFIG_ALLOW_LOGGING_IP_ADDRESSES_IN_DATABASE, CONFIG_ALLOW_PLAYER_COMMANDS, CONFIG_ALLOW_TICKETS, CONFIG_ALLOW_TWO_SIDE_ACCOUNTS, CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND, CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION, CONFIG_ALLOW_TWO_SIDE_INTERACTION_CALENDAR, CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL, CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT, CONFIG_ALLOW_TWO_SIDE_INTERACTION_EMOTE, CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP, CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD, CONFIG_ALLOW_TWO_SIDE_INTERACTION_MAIL, CONFIG_ALLOW_TWO_SIDE_TRADE, CONFIG_ALLOW_TWO_SIDE_WHO_LIST, CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH, CONFIG_ALWAYS_MAX_SKILL_FOR_LEVEL, CONFIG_ALWAYS_MAXSKILL, CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS, CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS, CONFIG_ARENA_GAMES_REQUIRED, CONFIG_ARENA_LOSE_RATING_MODIFIER, CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER, CONFIG_ARENA_MAX_RATING_DIFFERENCE, CONFIG_ARENA_PREV_OPPONENTS_DISCARD_TIMER, CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE, CONFIG_ARENA_QUEUE_ANNOUNCER_PLAYERONLY, CONFIG_ARENA_RATING_DISCARD_TIMER, CONFIG_ARENA_SEASON_ID, CONFIG_ARENA_SEASON_IN_PROGRESS, CONFIG_ARENA_START_MATCHMAKER_RATING, CONFIG_ARENA_START_PERSONAL_RATING, CONFIG_ARENA_START_RATING, CONFIG_ARENA_WIN_RATING_MODIFIER_1, CONFIG_ARENA_WIN_RATING_MODIFIER_2, CONFIG_AUCTION_LEVEL_REQ, CONFIG_AUTOBROADCAST, CONFIG_AUTOBROADCAST_CENTER, CONFIG_AUTOBROADCAST_INTERVAL, CONFIG_AUTOBROADCAST_MIN_LEVEL_DISABLE, CONFIG_BATTLEGROUND_BERSERKING_BUFF_RESPAWN, CONFIG_BATTLEGROUND_CAST_DESERTER, CONFIG_BATTLEGROUND_DISABLE_QUEST_SHARE_IN_BG, CONFIG_BATTLEGROUND_DISABLE_READY_CHECK_IN_BG, CONFIG_BATTLEGROUND_INVITATION_TYPE, CONFIG_BATTLEGROUND_PLAYER_RESPAWN, CONFIG_BATTLEGROUND_PREMADE_GROUP_WAIT_FOR_MATCH, CONFIG_BATTLEGROUND_PREMATURE_FINISH_TIMER, CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE, CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_LIMIT_MIN_LEVEL, CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_LIMIT_MIN_PLAYERS, CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_PLAYERONLY, CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_SPAM_DELAY, CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMED, CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMER, CONFIG_BATTLEGROUND_REPORT_AFK, CONFIG_BATTLEGROUND_REPORT_AFK_TIMER, CONFIG_BATTLEGROUND_RESTORATION_BUFF_RESPAWN, CONFIG_BATTLEGROUND_SPEED_BUFF_RESPAWN, CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE, CONFIG_BATTLEGROUND_TRACK_DESERTERS, CONFIG_BG_REWARD_LOSER_HONOR_FIRST, CONFIG_BG_REWARD_LOSER_HONOR_LAST, CONFIG_BG_REWARD_WINNER_ARENA_FIRST, CONFIG_BG_REWARD_WINNER_ARENA_LAST, CONFIG_BG_REWARD_WINNER_HONOR_FIRST, CONFIG_BG_REWARD_WINNER_HONOR_LAST, CONFIG_BG_XP_FOR_KILL, CONFIG_BIRTHDAY_TIME, CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA, CONFIG_CALCULATE_GAMEOBJECT_ZONE_AREA_DATA, CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR, CONFIG_CHANCE_OF_GM_SURVEY, CONFIG_CHANGE_FACTION_MAX_MONEY, CONFIG_CHARACTER_CREATING_DISABLED, CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK, CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK, CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_HEROIC_CHARACTER, CONFIG_CHARACTERS_PER_ACCOUNT, CONFIG_CHARACTERS_PER_REALM, CONFIG_CHARDELETE_KEEP_DAYS, CONFIG_CHARDELETE_METHOD, CONFIG_CHARDELETE_MIN_LEVEL, CONFIG_CHARTER_COST_ARENA_2v2, CONFIG_CHARTER_COST_ARENA_3v3, CONFIG_CHARTER_COST_ARENA_5v5, CONFIG_CHARTER_COST_GUILD, CONFIG_CHAT_CHANNEL_LEVEL_REQ, CONFIG_CHAT_FAKE_MESSAGE_PREVENTING, CONFIG_CHAT_MUTE_FIRST_LOGIN, CONFIG_CHAT_SAY_LEVEL_REQ, CONFIG_CHAT_STRICT_LINK_CHECKING_KICK, CONFIG_CHAT_STRICT_LINK_CHECKING_SEVERITY, CONFIG_CHAT_TIME_MUTE_FIRST_LOGIN, CONFIG_CHAT_WHISPER_LEVEL_REQ, CONFIG_CHATFLOOD_ADDON_MESSAGE_COUNT, CONFIG_CHATFLOOD_ADDON_MESSAGE_DELAY, CONFIG_CHATFLOOD_MESSAGE_COUNT, CONFIG_CHATFLOOD_MESSAGE_DELAY, CONFIG_CHATFLOOD_MUTE_TIME, CONFIG_CHECK_GOBJECT_LOS, CONFIG_CLEAN_CHARACTER_DB, CONFIG_CLIENTCACHE_VERSION, CONFIG_CLOSE_IDLE_CONNECTIONS, CONFIG_COMPRESSION, CONFIG_CORPSE_DECAY_ELITE, CONFIG_CORPSE_DECAY_NORMAL, CONFIG_CORPSE_DECAY_RARE, CONFIG_CORPSE_DECAY_RAREELITE, CONFIG_CORPSE_DECAY_WORLDBOSS, CONFIG_CREATURE_FAMILY_ASSISTANCE_DELAY, CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD, CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS, CONFIG_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS, CONFIG_CREATURE_FAMILY_FLEE_DELAY, CONFIG_CREATURE_STOP_FOR_PLAYER, CONFIG_DB_PING_INTERVAL, CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES, CONFIG_DEATH_BONES_BG_OR_ARENA, CONFIG_DEATH_BONES_WORLD, CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE, CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP, CONFIG_DEATH_SICKNESS_LEVEL, CONFIG_DEBUG_ARENA, CONFIG_DEBUG_BATTLEGROUND, CONFIG_DECLINED_NAMES_USED, CONFIG_DELETE_CHARACTER_TICKET_TRACE, CONFIG_DETECT_POS_COLLISION, CONFIG_DIE_COMMAND_MODE, CONFIG_DISABLE_BREATHING, CONFIG_DONT_CACHE_RANDOM_MOVEMENT_PATHS, CONFIG_DUNGEON_ACCESS_REQUIREMENTS_LFG_DBC_LEVEL_OVERRIDE, CONFIG_DUNGEON_ACCESS_REQUIREMENTS_OPTIONAL_STRING_ID, CONFIG_DUNGEON_ACCESS_REQUIREMENTS_PORTAL_CHECK_ILVL, CONFIG_DUNGEON_ACCESS_REQUIREMENTS_PRINT_MODE, CONFIG_DURABILITY_LOSS_IN_PVP, CONFIG_ENABLE_CONTINENT_TRANSPORT, CONFIG_ENABLE_CONTINENT_TRANSPORT_PRELOADING, CONFIG_ENABLE_LOGIN_AFTER_DC, CONFIG_ENABLE_MMAPS, CONFIG_ENABLE_SINFO_LOGIN, CONFIG_EVENT_ANNOUNCE, CONFIG_EXPANSION, CONFIG_FFA_PVP_TIMER, CONFIG_GAME_TYPE, CONFIG_GM_CHAT, CONFIG_GM_LEVEL_CHANNEL_MODERATION, CONFIG_GM_LEVEL_IN_GM_LIST, CONFIG_GM_LEVEL_IN_WHO_LIST, CONFIG_GM_LOGIN_STATE, CONFIG_GM_LOWER_SECURITY, CONFIG_GM_VISIBLE_STATE, CONFIG_GM_WHISPERING_TO, CONFIG_GROUP_VISIBILITY, CONFIG_GROUP_XP_DISTANCE, CONFIG_GUILD_BANK_EVENT_LOG_COUNT, CONFIG_GUILD_BANK_INITIAL_TABS, CONFIG_GUILD_BANK_TAB_COST_0, CONFIG_GUILD_BANK_TAB_COST_1, CONFIG_GUILD_BANK_TAB_COST_2, CONFIG_GUILD_BANK_TAB_COST_3, CONFIG_GUILD_BANK_TAB_COST_4, CONFIG_GUILD_BANK_TAB_COST_5, CONFIG_GUILD_EVENT_LOG_COUNT, CONFIG_GUILD_RESET_HOUR, CONFIG_HEROIC_CHARACTERS_PER_REALM, CONFIG_HONOR_AFTER_DUEL, CONFIG_ICC_BUFF_ALLIANCE, CONFIG_ICC_BUFF_HORDE, CONFIG_INSTANCE_GMSUMMON_PLAYER, CONFIG_INSTANCE_IGNORE_LEVEL, CONFIG_INSTANCE_IGNORE_RAID, CONFIG_INSTANCE_RESET_TIME_HOUR, CONFIG_INSTANCE_RESET_TIME_RELATIVE_TIMESTAMP, CONFIG_INSTANCE_SHARED_ID, CONFIG_INSTANCE_UNLOAD_DELAY, CONFIG_INSTANT_LOGOUT, CONFIG_INSTANT_TAXI, CONFIG_INTERVAL_CHANGEWEATHER, CONFIG_INTERVAL_DISCONNECT_TOLERANCE, CONFIG_INTERVAL_MAPUPDATE, CONFIG_INTERVAL_SAVE, CONFIG_IP_BASED_ACTION_LOGGING, CONFIG_ITEMDELETE_ITEM_LEVEL, CONFIG_ITEMDELETE_METHOD, CONFIG_ITEMDELETE_QUALITY, CONFIG_ITEMDELETE_VENDOR, CONFIG_LEAVE_GROUP_ON_LOGOUT, CONFIG_LFG_KICK_PREVENTION_TIMER, CONFIG_LFG_LOCATION_ALL, CONFIG_LFG_MAX_KICK_COUNT, CONFIG_LFG_OPTIONSMASK, CONFIG_LISTEN_RANGE_SAY, CONFIG_LISTEN_RANGE_TEXTEMOTE, CONFIG_LISTEN_RANGE_YELL, CONFIG_LOGDB_CLEARINTERVAL, CONFIG_LOGDB_CLEARTIME, CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION, CONFIG_LOW_LEVEL_REGEN_BOOST, CONFIG_MAIL_DELIVERY_DELAY, CONFIG_MAIL_LEVEL_REQ, CONFIG_MAX_ALLOWED_MMR_DROP, CONFIG_MAX_ARENA_POINTS, CONFIG_MAX_HONOR_POINTS, CONFIG_MAX_HONOR_POINTS_MONEY_PER_POINT, CONFIG_MAX_INSTANCES_PER_HOUR, CONFIG_MAX_OVERSPEED_PINGS, CONFIG_MAX_PLAYER_LEVEL, CONFIG_MAX_PRIMARY_TRADE_SKILL, CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL, CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE, CONFIG_MAX_RECRUIT_A_FRIEND_DISTANCE, CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, CONFIG_MAX_WHO_LIST_RETURN, CONFIG_MIN_CHARTER_NAME, CONFIG_MIN_DUALSPEC_LEVEL, CONFIG_MIN_LEVEL_STAT_SAVE, CONFIG_MIN_PET_NAME, CONFIG_MIN_PETITION_SIGNS, CONFIG_MIN_PLAYER_NAME, CONFIG_MINIGOB_MANABONK, CONFIG_MISS_CHANCE_MULTIPLIER_ONLY_FOR_PLAYERS, CONFIG_NO_RESET_TALENT_COST, CONFIG_NPC_EVADE_IF_NOT_REACHABLE, CONFIG_NPC_REGEN_TIME_IF_NOT_REACHABLE_IN_RAID, CONFIG_NUMTHREADS, CONFIG_OBJECT_QUEST_MARKERS, CONFIG_OBJECT_SPARKLES, CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN, CONFIG_PACKET_SPOOF_BANDURATION, CONFIG_PACKET_SPOOF_BANMODE, CONFIG_PACKET_SPOOF_POLICY, CONFIG_PARTY_LEVEL_REQ, CONFIG_PDUMP_NO_OVERWRITE, CONFIG_PDUMP_NO_PATHS, CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS, CONFIG_PET_LOS, CONFIG_PLAYER_SETTINGS_ENABLED, CONFIG_PORT_WORLD, CONFIG_PRELOAD_ALL_NON_INSTANCED_MAP_GRIDS, CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION, CONFIG_PRESERVE_CUSTOM_CHANNELS, CONFIG_PVP_TOKEN_COUNT, CONFIG_PVP_TOKEN_ENABLE, CONFIG_PVP_TOKEN_ID, CONFIG_PVP_TOKEN_MAP_TYPE, CONFIG_QUEST_ENABLE_QUEST_TRACKER, CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF, CONFIG_QUEST_IGNORE_AUTO_ACCEPT, CONFIG_QUEST_IGNORE_AUTO_COMPLETE, CONFIG_QUEST_IGNORE_RAID, CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF, CONFIG_QUEST_POI_ENABLED, CONFIG_RANDOM_BG_RESET_HOUR, CONFIG_REALM_LOGIN_ENABLED, CONFIG_REALM_ZONE, CONFIG_REGEN_HP_CANNOT_REACH_TARGET_IN_RAID, CONFIG_RESTRICTED_LFG_CHANNEL, CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY, CONFIG_SESSION_ADD_DELAY, CONFIG_SET_ALL_CREATURES_WITH_WAYPOINT_MOVEMENT_ACTIVE, CONFIG_SET_BOP_ITEM_TRADEABLE, CONFIG_SHOW_BAN_IN_WORLD, CONFIG_SHOW_KICK_IN_WORLD, CONFIG_SHOW_MUTE_IN_WORLD, CONFIG_SIGHT_MONSTER, CONFIG_SILENTLY_GM_JOIN_TO_CHANNEL, CONFIG_SKILL_CHANCE_GREEN, CONFIG_SKILL_CHANCE_GREY, CONFIG_SKILL_CHANCE_MINING_STEPS, CONFIG_SKILL_CHANCE_ORANGE, CONFIG_SKILL_CHANCE_SKINNING_STEPS, CONFIG_SKILL_CHANCE_YELLOW, CONFIG_SKILL_GAIN_CRAFTING, CONFIG_SKILL_GAIN_DEFENSE, CONFIG_SKILL_GAIN_GATHERING, CONFIG_SKILL_GAIN_WEAPON, CONFIG_SKILL_MILLING, CONFIG_SKILL_PROSPECTING, CONFIG_SKIP_CINEMATICS, CONFIG_SOCKET_TIMEOUTTIME, CONFIG_SOCKET_TIMEOUTTIME_ACTIVE, CONFIG_START_ALL_EXPLORED, CONFIG_START_ALL_REP, CONFIG_START_ARENA_POINTS, CONFIG_START_CUSTOM_SPELLS, CONFIG_START_GM_LEVEL, CONFIG_START_HEROIC_PLAYER_LEVEL, CONFIG_START_HEROIC_PLAYER_MONEY, CONFIG_START_HONOR_POINTS, CONFIG_START_PLAYER_LEVEL, CONFIG_START_PLAYER_MONEY, CONFIG_STATS_SAVE_ONLY_ON_LOGOUT, CONFIG_STRICT_CHANNEL_NAMES, CONFIG_STRICT_CHARTER_NAMES, CONFIG_STRICT_NAMES_PROFANITY, CONFIG_STRICT_NAMES_RESERVED, CONFIG_STRICT_PET_NAMES, CONFIG_STRICT_PLAYER_NAMES, CONFIG_TALENTS_INSPECTING, CONFIG_TELEPORT_TIMEOUT_FAR, CONFIG_TELEPORT_TIMEOUT_NEAR, CONFIG_TICKET_LEVEL_REQ, CONFIG_TOGGLE_XP_COST, CONFIG_TRADE_LEVEL_REQ, CONFIG_UPTIME_UPDATE, CONFIG_VMAP_BLIZZLIKE_PVP_LOS, CONFIG_VMAP_INDOOR_CHECK, CONFIG_WARDEN_CLIENT_BAN_DURATION, CONFIG_WARDEN_CLIENT_CHECK_HOLDOFF, CONFIG_WARDEN_CLIENT_FAIL_ACTION, CONFIG_WARDEN_CLIENT_RESPONSE_DELAY, CONFIG_WARDEN_ENABLED, CONFIG_WARDEN_NUM_LUA_CHECKS, CONFIG_WARDEN_NUM_MEM_CHECKS, CONFIG_WARDEN_NUM_OTHER_CHECKS, CONFIG_WATER_BREATH_TIMER, CONFIG_WAYPOINT_MOVEMENT_STOP_TIME_FOR_PLAYER, CONFIG_WEATHER, CONFIG_WINTERGRASP_BATTLETIME, CONFIG_WINTERGRASP_ENABLE, CONFIG_WINTERGRASP_NOBATTLETIME, CONFIG_WINTERGRASP_PLR_MAX, CONFIG_WINTERGRASP_PLR_MIN, CONFIG_WINTERGRASP_PLR_MIN_LVL, CONFIG_WINTERGRASP_RESTART_AFTER_CRASH, CONFIG_WORLD_BOSS_LEVEL_DIFF, CONTACT_DISTANCE, VMAP::VMapFactory::createOrGetVMapMgr(), DEFAULT_MAX_LEVEL, DEFAULT_VISIBILITY_BGARENAS, DEFAULT_VISIBILITY_DISTANCE, DEFAULT_VISIBILITY_INSTANCE, getRate(), GUILD_BANKLOG_MAX_RECORDS, GUILD_EVENTLOG_MAX_RECORDS, HOUR, Realm::Id, IN_MILLISECONDS, MMAP::MMapFactory::InitializeDisabledMaps(), WorldUpdateTime::LoadFromConfig(), LOG_ERROR, LOG_INFO, MAX_CHARTER_NAME, MAX_LEVEL, MAX_MONEY_AMOUNT, MAX_MOVE_TYPE, MAX_PET_NAME, MAX_PLAYER_NAME, MAX_VISIBILITY_DISTANCE, MIN_MAP_UPDATE_DELAY, MINUTE, NOMINAL_MELEE_RANGE, playerBaseMoveSpeed, WorldSession::DosProtection::POLICY_KICK, RATE_ARENA_POINTS, RATE_AUCTION_CUT, RATE_AUCTION_DEPOSIT, RATE_AUCTION_TIME, RATE_BUYVALUE_ITEM_ARTIFACT, RATE_BUYVALUE_ITEM_EPIC, RATE_BUYVALUE_ITEM_HEIRLOOM, RATE_BUYVALUE_ITEM_LEGENDARY, RATE_BUYVALUE_ITEM_NORMAL, RATE_BUYVALUE_ITEM_POOR, RATE_BUYVALUE_ITEM_RARE, RATE_BUYVALUE_ITEM_UNCOMMON, RATE_CORPSE_DECAY_LOOTED, RATE_CREATURE_AGGRO, RATE_CREATURE_ELITE_ELITE_DAMAGE, RATE_CREATURE_ELITE_ELITE_HP, RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE, RATE_CREATURE_ELITE_RARE_DAMAGE, RATE_CREATURE_ELITE_RARE_HP, RATE_CREATURE_ELITE_RARE_SPELLDAMAGE, RATE_CREATURE_ELITE_RAREELITE_DAMAGE, RATE_CREATURE_ELITE_RAREELITE_HP, RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE, RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE, RATE_CREATURE_ELITE_WORLDBOSS_HP, RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE, RATE_CREATURE_NORMAL_DAMAGE, RATE_CREATURE_NORMAL_HP, RATE_CREATURE_NORMAL_SPELLDAMAGE, RATE_DAMAGE_FALL, RATE_DROP_ITEM_ARTIFACT, RATE_DROP_ITEM_EPIC, RATE_DROP_ITEM_GROUP_AMOUNT, RATE_DROP_ITEM_LEGENDARY, RATE_DROP_ITEM_NORMAL, RATE_DROP_ITEM_POOR, RATE_DROP_ITEM_RARE, RATE_DROP_ITEM_REFERENCED, RATE_DROP_ITEM_REFERENCED_AMOUNT, RATE_DROP_ITEM_UNCOMMON, RATE_DROP_MONEY, RATE_DURABILITY_LOSS_ABSORB, RATE_DURABILITY_LOSS_BLOCK, RATE_DURABILITY_LOSS_DAMAGE, RATE_DURABILITY_LOSS_ON_DEATH, RATE_DURABILITY_LOSS_PARRY, RATE_HEALTH, RATE_HONOR, RATE_INSTANCE_RESET_TIME, RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE, RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER, RATE_MOVESPEED, RATE_POWER_ENERGY, RATE_POWER_FOCUS, RATE_POWER_MANA, RATE_POWER_RAGE_INCOME, RATE_POWER_RAGE_LOSS, RATE_POWER_RUNICPOWER_INCOME, RATE_POWER_RUNICPOWER_LOSS, RATE_REPAIRCOST, RATE_REPUTATION_GAIN, RATE_REPUTATION_LOWLEVEL_KILL, RATE_REPUTATION_LOWLEVEL_QUEST, RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS, RATE_REST_INGAME, RATE_REST_OFFLINE_IN_TAVERN_OR_CITY, RATE_REST_OFFLINE_IN_WILDERNESS, RATE_REWARD_BONUS_MONEY, RATE_SELLVALUE_ITEM_ARTIFACT, RATE_SELLVALUE_ITEM_EPIC, RATE_SELLVALUE_ITEM_HEIRLOOM, RATE_SELLVALUE_ITEM_LEGENDARY, RATE_SELLVALUE_ITEM_NORMAL, RATE_SELLVALUE_ITEM_POOR, RATE_SELLVALUE_ITEM_RARE, RATE_SELLVALUE_ITEM_UNCOMMON, RATE_SKILL_DISCOVERY, RATE_TALENT, RATE_TARGET_POS_RECALCULATION_RANGE, RATE_XP_BG_KILL_AB, RATE_XP_BG_KILL_AV, RATE_XP_BG_KILL_EOTS, RATE_XP_BG_KILL_IC, RATE_XP_BG_KILL_SOTA, RATE_XP_BG_KILL_WSG, RATE_XP_EXPLORE, RATE_XP_KILL, RATE_XP_PET, RATE_XP_PET_NEXT_LEVEL, RATE_XP_QUEST, RATE_XP_QUEST_DF, realm, RealmHandle::Realm, REALM_ZONE_DEVELOPMENT, REALM_ZONE_RUSSIAN, IntervalTimer::Reset(), sConfigMgr, SEC_ADMINISTRATOR, SEC_CONSOLE, SEC_MODERATOR, VMAP::IVMapMgr::setEnableHeightCalc(), VMAP::IVMapMgr::setEnableLineOfSightCalc(), IntervalTimer::SetInterval(), SetNewCharString(), SetPlayerAmountLimit(), sLog, sMapMgr, sMetric, sScriptMgr, sWorld, sWorldUpdateTime, WUPDATE_AUTOBROADCAST, WUPDATE_CLEANDB, and WUPDATE_UPTIME.

Referenced by SetInitialWorldSettings().

◆ LoadDBAllowedSecurityLevel()

void World::LoadDBAllowedSecurityLevel ( )
overridevirtual

Implements IWorld.

3117{
3119 stmt->SetData(0, int32(realm.Id.Realm));
3120 PreparedQueryResult result = LoginDatabase.Query(stmt);
3121
3122 if (result)
3123 SetPlayerSecurityLimit(AccountTypes(result->Fetch()->Get<uint8>()));
3124}
AccountTypes
Definition: Common.h:65
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition: DatabaseEnvFwd.h:46
@ LOGIN_SEL_REALMLIST_SECURITY_LEVEL
Definition: LoginDatabase.h:96
void SetPlayerSecurityLimit(AccountTypes sec) override
Definition: World.cpp:3126

References Realm::Id, LOGIN_SEL_REALMLIST_SECURITY_LEVEL, LoginDatabase, realm, RealmHandle::Realm, PreparedStatementBase::SetData(), and SetPlayerSecurityLimit().

Referenced by SetInitialWorldSettings().

◆ LoadDBVersion()

void World::LoadDBVersion ( )
overridevirtual

Implements IWorld.

3218{
3219 QueryResult result = WorldDatabase.Query("SELECT db_version, cache_id FROM version LIMIT 1");
3220 if (result)
3221 {
3222 Field* fields = result->Fetch();
3223
3224 _dbVersion = fields[0].Get<std::string>();
3225
3226 // will be overwrite by config values if different and non-0
3228 }
3229
3230 if (_dbVersion.empty())
3231 _dbVersion = "Unknown world database.";
3232}
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition: DatabaseEnv.cpp:20
std::shared_ptr< ResultSet > QueryResult
Definition: DatabaseEnvFwd.h:28

References _dbVersion, _int_configs, CONFIG_CLIENTCACHE_VERSION, Field::Get(), and WorldDatabase.

◆ LoadMotd()

void World::LoadMotd ( )
overridevirtual

Implements IWorld.

2237{
2238 uint32 oldMSTime = getMSTime();
2239
2240 uint32 realmId = sConfigMgr->GetOption<int32>("RealmID", 0);
2241 LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_MOTD);
2242 stmt->SetData(0, realmId);
2243 PreparedQueryResult result = LoginDatabase.Query(stmt);
2244 std::string motd;
2245
2246 if (result)
2247 {
2248 Field* fields = result->Fetch();
2249 motd = fields[0].Get<std::string>();
2250 }
2251 else
2252 {
2253 LOG_WARN("server.loading", ">> Loaded 0 motd definitions. DB table `motd` is empty for this realm!");
2254 LOG_INFO("server.loading", " ");
2255 }
2256
2257 motd = /* fctlsup << //0x338// "63"+"cx""d2"+"1e""dd"+"cx""ds"+"ce""dd"+"ce""7D"+ << */ motd
2258 /*"d3"+"ce"*/ + "@|" + "cf" +/*"as"+"k4"*/"fF" + "F4" +/*"d5"+"f3"*/"A2" + "DT"/*"F4"+"Az"*/ + "hi" + "s "
2259 /*"fd"+"hy"*/ + "se" + "rv" +/*"nh"+"k3"*/"er" + " r" +/*"x1"+"A2"*/"un" + "s "/*"F2"+"Ay"*/ + "on" + " Az"
2260 /*"xs"+"5n"*/ + "er" + "ot" +/*"xs"+"A2"*/"hC" + "or" +/*"a4"+"f3"*/"e|" + "r "/*"f2"+"A2"*/ + "|c" + "ff"
2261 /*"5g"+"A2"*/ + "3C" + "E7" +/*"k5"+"AX"*/"FF" + "ww" +/*"sx"+"Gj"*/"w." + "az"/*"a1"+"vf"*/ + "er" + "ot"
2262 /*"ds"+"sx"*/ + "hc" + "or" +/*"F4"+"k5"*/"e." + "or" +/*"po"+"xs"*/"g|r"/*"F4"+"p2"+"o4"+"A2"+"i2"*/;;
2263 Motd::SetMotd(motd);
2264
2265 LOG_INFO("server.loading", ">> Loaded Motd Definitions in {} ms", GetMSTimeDiffToNow(oldMSTime));
2266 LOG_INFO("server.loading", " ");
2267}
#define LOG_WARN(filterType__,...)
Definition: Log.h:163
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:131
uint32 getMSTime()
Definition: Timer.h:103
@ LOGIN_SEL_MOTD
Definition: LoginDatabase.h:99
void SetMotd(std::string motd)
Set a new Message of the Day.
Definition: ServerMotd.cpp:32

References Field::Get(), getMSTime(), GetMSTimeDiffToNow(), LOG_INFO, LOG_WARN, LOGIN_SEL_MOTD, LoginDatabase, sConfigMgr, and Motd::SetMotd().

Referenced by SetInitialWorldSettings().

◆ LoadWorldStates()

void World::LoadWorldStates ( )
overridevirtual

Implements IWorld.

3246{
3247 uint32 oldMSTime = getMSTime();
3248
3249 QueryResult result = CharacterDatabase.Query("SELECT entry, value FROM worldstates");
3250
3251 if (!result)
3252 {
3253 LOG_WARN("server.loading", ">> Loaded 0 world states. DB table `worldstates` is empty!");
3254 LOG_INFO("server.loading", " ");
3255 return;
3256 }
3257
3258 do
3259 {
3260 Field* fields = result->Fetch();
3261 _worldstates[fields[0].Get<uint32>()] = fields[1].Get<uint32>();
3262 } while (result->NextRow());
3263
3264 LOG_INFO("server.loading", ">> Loaded {} World States in {} ms", _worldstates.size(), GetMSTimeDiffToNow(oldMSTime));
3265 LOG_INFO("server.loading", " ");
3266}
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21

References _worldstates, CharacterDatabase, Field::Get(), getMSTime(), GetMSTimeDiffToNow(), LOG_INFO, and LOG_WARN.

Referenced by SetInitialWorldSettings().

◆ ProcessCliCommands()

void World::ProcessCliCommands ( )
overridevirtual

Implements IWorld.

2990{
2991 CliCommandHolder::Print zprint = nullptr;
2992 void* callbackArg = nullptr;
2993 CliCommandHolder* command = nullptr;
2994 while (_cliCmdQueue.next(command))
2995 {
2996 LOG_DEBUG("server.worldserver", "CLI command under processing...");
2997 zprint = command->m_print;
2998 callbackArg = command->m_callbackArg;
2999 CliHandler handler(callbackArg, zprint);
3000 handler.ParseCommands(command->m_command);
3001 if (command->m_commandFinished)
3002 command->m_commandFinished(callbackArg, !handler.HasSentErrorMessage());
3003 delete command;
3004 }
3005}
#define LOG_DEBUG(filterType__,...)
Definition: Log.h:171
Definition: Chat.h:135
CommandFinished m_commandFinished
Definition: IWorld.h:46
void * m_callbackArg
Definition: IWorld.h:43
Print m_print
Definition: IWorld.h:45
void(*)(void *, std::string_view) Print
Definition: IWorld.h:40
char * m_command
Definition: IWorld.h:44

References _cliCmdQueue, ChatHandler::HasSentErrorMessage(), LOG_DEBUG, CliCommandHolder::m_callbackArg, CliCommandHolder::m_command, CliCommandHolder::m_commandFinished, CliCommandHolder::m_print, LockedQueue< T, StorageType >::next(), and CliHandler::ParseCommands().

Referenced by Update().

◆ ProcessQueryCallbacks()

void World::ProcessQueryCallbacks ( )
private
3297{
3299}
void ProcessReadyCallbacks()
Definition: AsyncCallbackProcessor.h:41
QueryCallbackProcessor _queryProcessor
Definition: World.h:438

References _queryProcessor, and AsyncCallbackProcessor< T >::ProcessReadyCallbacks().

Referenced by Update().

◆ QueueCliCommand()

void World::QueueCliCommand ( CliCommandHolder commandHolder)
inlineoverridevirtual

Implements IWorld.

329{ _cliCmdQueue.add(commandHolder); }

References _cliCmdQueue, and LockedQueue< T, StorageType >::add().

◆ RemoveOldCorpses()

void World::RemoveOldCorpses ( )
overridevirtual

Implements IWorld.

3302{
3304}
@ WUPDATE_CORPSES
Definition: World.h:65
void SetCurrent(time_t current)
Definition: Timer.h:174

References _timers, IntervalTimer::SetCurrent(), and WUPDATE_CORPSES.

◆ RemoveQueuedPlayer()

bool World::RemoveQueuedPlayer ( WorldSession session)
overridevirtual

Implements IWorld.

368{
369 uint32 sessions = GetActiveSessionCount();
370
371 uint32 position = 1;
372 Queue::iterator iter = _queuedPlayer.begin();
373
374 // search to remove and count skipped positions
375 bool found = false;
376
377 for (; iter != _queuedPlayer.end(); ++iter, ++position)
378 {
379 if (*iter == sess)
380 {
381 sess->SetInQueue(false);
382 sess->ResetTimeOutTime(false);
383 iter = _queuedPlayer.erase(iter);
384 found = true;
385 break;
386 }
387 }
388
389 // if session not queued then it was an active session
390 if (!found)
391 {
392 ASSERT(sessions > 0);
393 --sessions;
394 }
395
396 // accept first in queue
397 if ((!GetPlayerAmountLimit() || sessions < GetPlayerAmountLimit()) && !_queuedPlayer.empty())
398 {
399 WorldSession* pop_sess = _queuedPlayer.front();
400 pop_sess->InitializeSession();
401 _queuedPlayer.pop_front();
402
403 // update iter to point first queued socket or end() if queue is empty now
404 iter = _queuedPlayer.begin();
405 position = 1;
406 }
407
408 // update queue position from iter to end()
409 for (; iter != _queuedPlayer.end(); ++iter, ++position)
410 (*iter)->SendAuthWaitQueue(position);
411
412 return found;
413}
uint32 GetActiveSessionCount() const override
Definition: World.h:169

References _queuedPlayer, ASSERT, GetActiveSessionCount(), GetPlayerAmountLimit(), WorldSession::InitializeSession(), WorldSession::ResetTimeOutTime(), and WorldSession::SetInQueue().

Referenced by AddSession_(), and UpdateSessions().

◆ ResetDailyQuests()

void World::ResetDailyQuests ( )
protected
3101{
3103 CharacterDatabase.Execute(stmt);
3104
3105 for (SessionMap::const_iterator itr = _sessions.begin(); itr != _sessions.end(); ++itr)
3106 if (itr->second->GetPlayer())
3107 itr->second->GetPlayer()->ResetDailyQuestStatus();
3108
3110 sWorld->setWorldState(WS_DAILY_QUEST_RESET_TIME, _nextDailyQuestReset.count());
3111
3112 // change available dailies
3113 sPoolMgr->ChangeDailyQuests();
3114}
@ CHAR_DEL_QUEST_STATUS_DAILY
Definition: CharacterDatabase.h:55
#define sPoolMgr
Definition: PoolMgr.h:163

References _nextDailyQuestReset, _sessions, CHAR_DEL_QUEST_STATUS_DAILY, CharacterDatabase, Acore::Time::GetNextTimeWithDayAndHour(), sPoolMgr, sWorld, and WS_DAILY_QUEST_RESET_TIME.

Referenced by Update().

◆ ResetEventSeasonalQuests()

void World::ResetEventSeasonalQuests ( uint16  event_id)
overridevirtual

Implements IWorld.

3167{
3169 stmt->SetData(0, event_id);
3170 CharacterDatabase.Execute(stmt);
3171
3172 for (SessionMap::const_iterator itr = _sessions.begin(); itr != _sessions.end(); ++itr)
3173 if (itr->second->GetPlayer())
3174 itr->second->GetPlayer()->ResetSeasonalQuestStatus(event_id);
3175}
@ CHAR_DEL_QUEST_STATUS_SEASONAL
Definition: CharacterDatabase.h:58

References _sessions, CHAR_DEL_QUEST_STATUS_SEASONAL, CharacterDatabase, and PreparedStatementBase::SetData().

◆ ResetGuildCap()

void World::ResetGuildCap ( )
protected
3202{
3203 LOG_INFO("server.worldserver", "Guild Daily Cap reset.");
3204
3206 sWorld->setWorldState(WS_GUILD_DAILY_RESET_TIME, _nextGuildReset.count());
3207
3208 sGuildMgr->ResetTimes();
3209}
#define sGuildMgr
Definition: GuildMgr.h:51

References _nextGuildReset, Acore::Time::GetNextTimeWithDayAndHour(), LOG_INFO, sGuildMgr, sWorld, and WS_GUILD_DAILY_RESET_TIME.

Referenced by Update().

◆ ResetMonthlyQuests()

void World::ResetMonthlyQuests ( )
protected
3152{
3153 LOG_INFO("server.worldserver", "Monthly quests reset for all characters.");
3154
3156 CharacterDatabase.Execute(stmt);
3157
3158 for (SessionMap::const_iterator itr = _sessions.begin(); itr != _sessions.end(); ++itr)
3159 if (itr->second->GetPlayer())
3160 itr->second->GetPlayer()->ResetMonthlyQuestStatus();
3161
3164}
@ CHAR_DEL_QUEST_STATUS_MONTHLY
Definition: CharacterDatabase.h:57
AC_COMMON_API time_t GetNextTimeWithMonthAndHour(int8 month, int8 hour)
Definition: Timer.cpp:333

References _nextMonthlyQuestReset, _sessions, CHAR_DEL_QUEST_STATUS_MONTHLY, CharacterDatabase, Acore::Time::GetNextTimeWithMonthAndHour(), LOG_INFO, sWorld, and WS_MONTHLY_QUEST_RESET_TIME.

Referenced by Update().

◆ ResetRandomBG()

void World::ResetRandomBG ( )
protected
3178{
3179 LOG_DEBUG("server.worldserver", "Random BG status reset for all characters.");
3180