diff --git a/src/game/Object/Creature.cpp b/src/game/Object/Creature.cpp index e774769f2..588932876 100644 --- a/src/game/Object/Creature.cpp +++ b/src/game/Object/Creature.cpp @@ -2651,8 +2651,8 @@ std::string Creature::GetScriptName() const uint32 Creature::GetScriptId() const { - // scripts bound to DB guid have priority over ones bound to creature entry - return sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, -int32(GetGUIDLow())) ? sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, -int32(GetGUIDLow())) : sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, GetEntry()); + // scripts bound to DB guid have priority over ones bound to creature entry + return sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, -int32(GetGUIDLow())) ? sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, -int32(GetGUIDLow())) : sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, GetEntry()); } VendorItemData const* Creature::GetVendorItems() const diff --git a/src/game/Object/Creature.h b/src/game/Object/Creature.h index ad82ca806..a06022d64 100644 --- a/src/game/Object/Creature.h +++ b/src/game/Object/Creature.h @@ -608,7 +608,7 @@ class Creature : public Unit void _AddCreatureSpellCooldown(uint32 spell_id, time_t end_time); void _AddCreatureCategoryCooldown(uint32 category, time_t apply_time); - uint32 GetCreatureSpellCooldownDelay(uint32 spellId) const; + uint32 GetCreatureSpellCooldownDelay(uint32 spellId) const; void AddCreatureSpellCooldown(uint32 spellid); bool HasSpellCooldown(uint32 spell_id) const; bool HasCategoryCooldown(uint32 spell_id) const; diff --git a/src/game/Object/ObjectMgr.cpp b/src/game/Object/ObjectMgr.cpp index eeeb90050..82b95054a 100644 --- a/src/game/Object/ObjectMgr.cpp +++ b/src/game/Object/ObjectMgr.cpp @@ -564,7 +564,7 @@ void ObjectMgr::LoadCreatureTemplates() continue; } - if (sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, difficultyInfo->Entry)) + if (sScriptMgr.GetBoundScriptId(SCRIPTED_UNIT, difficultyInfo->Entry)) { sLog.outErrorDb("Difficulty %u mode creature (Entry: %u) has `ScriptName`, but in any case will used difficulty 0 mode creature (Entry: %u) ScriptName.", diff + 1, cInfo->DifficultyEntry[diff], i); @@ -896,78 +896,78 @@ void ObjectMgr::LoadCreatureAddons() void ObjectMgr::LoadCreatureClassLvlStats() { - // initialize data array - memset(&m_creatureClassLvlStats, 0, sizeof(m_creatureClassLvlStats)); + // initialize data array + memset(&m_creatureClassLvlStats, 0, sizeof(m_creatureClassLvlStats)); - std::string queryStr = "SELECT Class, Level, BaseMana, BaseMeleeAttackPower, BaseRangedAttackPower, BaseArmor"; + std::string queryStr = "SELECT Class, Level, BaseMana, BaseMeleeAttackPower, BaseRangedAttackPower, BaseArmor"; - for (int i = 0; i <= MAX_EXPANSION; i++) - { - std::ostringstream str; - str << ", `BaseHealthExp" << i << "`, `BaseDamageExp" << i << "`"; - queryStr.append(str.str().c_str()); - } + for (int i = 0; i <= MAX_EXPANSION; i++) + { + std::ostringstream str; + str << ", `BaseHealthExp" << i << "`, `BaseDamageExp" << i << "`"; + queryStr.append(str.str().c_str()); + } - queryStr.append(" FROM `creature_template_classlevelstats` ORDER BY `Class`, `Level`"); - QueryResult* result = WorldDatabase.Query(queryStr.c_str()); + queryStr.append(" FROM `creature_template_classlevelstats` ORDER BY `Class`, `Level`"); + QueryResult* result = WorldDatabase.Query(queryStr.c_str()); - if (!result) - { - BarGoLink bar(1); + if (!result) + { + BarGoLink bar(1); - bar.step(); + bar.step(); - sLog.outString(); - sLog.outErrorDb("DB table `creature_template_classlevelstats` is empty."); - return; - } + sLog.outString(); + sLog.outErrorDb("DB table `creature_template_classlevelstats` is empty."); + return; + } - BarGoLink bar(result->GetRowCount()); - uint32 DataCount = 0; + BarGoLink bar(result->GetRowCount()); + uint32 DataCount = 0; - do - { - Field* fields = result->Fetch(); - bar.step(); + do + { + Field* fields = result->Fetch(); + bar.step(); - uint32 creatureClass = fields[0].GetUInt32(); - uint32 creatureLevel = fields[1].GetUInt32(); + uint32 creatureClass = fields[0].GetUInt32(); + uint32 creatureLevel = fields[1].GetUInt32(); - if (creatureLevel == 0 || creatureLevel > DEFAULT_MAX_CREATURE_LEVEL) - { - sLog.outErrorDb("Found stats for creature level [%u] with incorrect level. Skipping!", creatureLevel); - continue; - } + if (creatureLevel == 0 || creatureLevel > DEFAULT_MAX_CREATURE_LEVEL) + { + sLog.outErrorDb("Found stats for creature level [%u] with incorrect level. Skipping!", creatureLevel); + continue; + } - if (((1 << (creatureClass - 1)) & CLASSMASK_ALL_CREATURES) == 0) - { - sLog.outErrorDb("Found stats for creature class [%u] with incorrect class. Skipping!", creatureClass); - continue; - } + if (((1 << (creatureClass - 1)) & CLASSMASK_ALL_CREATURES) == 0) + { + sLog.outErrorDb("Found stats for creature class [%u] with incorrect class. Skipping!", creatureClass); + continue; + } - uint32 baseMana = fields[2].GetUInt32(); - float baseMeleeAttackPower = fields[3].GetFloat(); - float baseRangedAttackPower = fields[4].GetFloat(); - uint32 baseArmor = fields[5].GetUInt32(); + uint32 baseMana = fields[2].GetUInt32(); + float baseMeleeAttackPower = fields[3].GetFloat(); + float baseRangedAttackPower = fields[4].GetFloat(); + uint32 baseArmor = fields[5].GetUInt32(); - for (uint8 i = 0; i <= MAX_EXPANSION; ++i) - { - CreatureClassLvlStats &cCLS = m_creatureClassLvlStats[creatureLevel][classToIndex[creatureClass]][i - 1]; // values should start from 0 - cCLS.BaseMana = baseMana; - cCLS.BaseMeleeAttackPower = baseMeleeAttackPower; - cCLS.BaseRangedAttackPower = baseRangedAttackPower; - cCLS.BaseArmor = baseArmor; + for (uint8 i = 0; i <= MAX_EXPANSION; ++i) + { + CreatureClassLvlStats &cCLS = m_creatureClassLvlStats[creatureLevel][classToIndex[creatureClass]][i - 1]; // values should start from 0 + cCLS.BaseMana = baseMana; + cCLS.BaseMeleeAttackPower = baseMeleeAttackPower; + cCLS.BaseRangedAttackPower = baseRangedAttackPower; + cCLS.BaseArmor = baseArmor; - cCLS.BaseHealth = fields[6 + (i * 2)].GetUInt32(); - cCLS.BaseDamage = fields[7 + (i * 2)].GetFloat(); - } - ++DataCount; - } while (result->NextRow()); + cCLS.BaseHealth = fields[6 + (i * 2)].GetUInt32(); + cCLS.BaseDamage = fields[7 + (i * 2)].GetFloat(); + } + ++DataCount; + } while (result->NextRow()); - delete result; + delete result; - sLog.outString(); - sLog.outString(">> Loaded %u creature class level stats definitions.", DataCount); + sLog.outString(); + sLog.outString(">> Loaded %u creature class level stats definitions.", DataCount); } CreatureClassLvlStats const* ObjectMgr::GetCreatureClassLvlStats(uint32 level, uint32 unitClass, int32 expansion) const diff --git a/src/game/Server/DBCStores.cpp b/src/game/Server/DBCStores.cpp index 22a807d2a..c9cec2b8c 100644 --- a/src/game/Server/DBCStores.cpp +++ b/src/game/Server/DBCStores.cpp @@ -293,19 +293,19 @@ static bool ReadDBCBuildFileText(const std::string& dbc_path, char const* locale int ReadDBCLocale(const std::string sDataPath) { - std::string sDBCpath = sDataPath + "dbc/"; + std::string sDBCpath = sDataPath + "dbc/"; std::string sFilename; - for (int uLocaleIndex = 0; uLocaleIndex < MAX_LOCALE; ++uLocaleIndex) - { + for (int uLocaleIndex = 0; uLocaleIndex < MAX_LOCALE; ++uLocaleIndex) + { sFilename = sDBCpath + "component.wow-" + fullLocaleNameList[uLocaleIndex].name + ".txt"; - if (FILE* file = fopen(sFilename.c_str(), "rb")) - { - return uLocaleIndex; // Successfully located the locale - } - } + if (FILE* file = fopen(sFilename.c_str(), "rb")) + { + return uLocaleIndex; // Successfully located the locale + } + } - return -1; // Failed to locate or access the component.wow.txt file + return -1; // Failed to locate or access the component.wow.txt file } static uint32 ReadDBCBuild(const std::string& dbc_path, LocaleNameStr const*&localeNameStr) diff --git a/src/game/Server/DBCStructure.h b/src/game/Server/DBCStructure.h index 011c6e0ae..d06f9892a 100644 --- a/src/game/Server/DBCStructure.h +++ b/src/game/Server/DBCStructure.h @@ -673,7 +673,7 @@ struct ChatChannelsEntry uint32 ChannelID; // 0 m_ID uint32 flags; // 1 m_flags //uint32 // 2 m_factionGroup - DBCString pattern; // 3 m_name_lang + DBCString pattern; // 3 m_name_lang // char* pattern[16]; // 3 m_name_lang //char* name; // 4 m_shortcut_lang }; @@ -1274,29 +1274,29 @@ struct ItemSetEntry struct LfgDungeonsEntry { - uint32 ID; - DBCString Name; - uint32 minLevel; - uint32 maxLevel; - uint32 target_level; - uint32 target_level_min; - uint32 target_level_max; - float mapID; - uint32 difficulty; - uint32 flags; - uint32 typeID; - float faction; - DBCString textureFilename; - uint32 expansionLevel; - DBCString order_index; - uint32 group_id; - DBCString description_lang; - uint32 col17; - uint32 col18; - uint32 col19; - uint32 col20; + uint32 ID; + DBCString Name; + uint32 minLevel; + uint32 maxLevel; + uint32 target_level; + uint32 target_level_min; + uint32 target_level_max; + float mapID; + uint32 difficulty; + uint32 flags; + uint32 typeID; + float faction; + DBCString textureFilename; + uint32 expansionLevel; + DBCString order_index; + uint32 group_id; + DBCString description_lang; + uint32 col17; + uint32 col18; + uint32 col19; + uint32 col20; - uint32 Entry() const { return ID + ((uint8)typeID << 24); } + uint32 Entry() const { return ID + ((uint8)typeID << 24); } }; /*struct LfgDungeonGroupEntry diff --git a/src/game/Server/WorldSession.cpp b/src/game/Server/WorldSession.cpp index ccea09412..9a20e3e78 100644 --- a/src/game/Server/WorldSession.cpp +++ b/src/game/Server/WorldSession.cpp @@ -129,7 +129,7 @@ WorldSession::~WorldSession() m_Socket = NULL; } - // CAUSES CRASH ON PLAYER EXITING TO LOGIN SCREEN + // CAUSES CRASH ON PLAYER EXITING TO LOGIN SCREEN // Warden // if (_warden) // delete _warden; diff --git a/src/game/WorldHandlers/Channel.cpp b/src/game/WorldHandlers/Channel.cpp index 2579551f5..5758b48f8 100644 --- a/src/game/WorldHandlers/Channel.cpp +++ b/src/game/WorldHandlers/Channel.cpp @@ -59,642 +59,642 @@ Channel::Channel(const std::string& name, uint32 channel_id) void Channel::Join(Player* player, const char* password) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - WorldPacket data; - if (IsOn(guid)) - { - if (!IsConstant()) // non send error message for built-in channels - { - MakePlayerAlreadyMember(&data, guid); - SendToOne(&data, guid); - } - return; - } + WorldPacket data; + if (IsOn(guid)) + { + if (!IsConstant()) // non send error message for built-in channels + { + MakePlayerAlreadyMember(&data, guid); + SendToOne(&data, guid); + } + return; + } - if (IsBanned(guid)) - { - MakeBanned(&data); - SendToOne(&data, guid); - return; - } + if (IsBanned(guid)) + { + MakeBanned(&data); + SendToOne(&data, guid); + return; + } - if (m_password.length() > 0 && strcmp(password, m_password.c_str())) - { - MakeWrongPassword(&data); - SendToOne(&data, guid); - return; - } + if (m_password.length() > 0 && strcmp(password, m_password.c_str())) + { + MakeWrongPassword(&data); + SendToOne(&data, guid); + return; + } - if (HasFlag(CHANNEL_FLAG_LFG) && sWorld.getConfig(CONFIG_BOOL_RESTRICTED_LFG_CHANNEL) && player->GetSession()->GetSecurity() == SEC_PLAYER) - { - MakeNotInLfg(&data); - SendToOne(&data, guid); - return; - } + if (HasFlag(CHANNEL_FLAG_LFG) && sWorld.getConfig(CONFIG_BOOL_RESTRICTED_LFG_CHANNEL) && player->GetSession()->GetSecurity() == SEC_PLAYER) + { + MakeNotInLfg(&data); + SendToOne(&data, guid); + return; + } - if (player->GetGuildId() && (GetFlags() == 0x38)) - return; + if (player->GetGuildId() && (GetFlags() == 0x38)) + return; - // join channel - player->JoinedChannel(this); + // join channel + player->JoinedChannel(this); - if (m_announce && (player->GetSession()->GetSecurity() < SEC_GAMEMASTER || !sWorld.getConfig(CONFIG_BOOL_SILENTLY_GM_JOIN_TO_CHANNEL))) - { - MakeJoined(&data, guid); - SendToAll(&data); - } + if (m_announce && (player->GetSession()->GetSecurity() < SEC_GAMEMASTER || !sWorld.getConfig(CONFIG_BOOL_SILENTLY_GM_JOIN_TO_CHANNEL))) + { + MakeJoined(&data, guid); + SendToAll(&data); + } - data.clear(); + data.clear(); - PlayerInfo& pinfo = m_players[guid]; - pinfo.player = guid; - pinfo.flags = MEMBER_FLAG_NONE; + PlayerInfo& pinfo = m_players[guid]; + pinfo.player = guid; + pinfo.flags = MEMBER_FLAG_NONE; - MakeYouJoined(&data); - SendToOne(&data, guid); + MakeYouJoined(&data); + SendToOne(&data, guid); - JoinNotify(guid); + JoinNotify(guid); - // if no owner first logged will become - if (!IsConstant() && !m_ownerGuid) - { - SetOwner(guid, (m_players.size() > 1 ? true : false)); - m_players[guid].SetModerator(true); - } + // if no owner first logged will become + if (!IsConstant() && !m_ownerGuid) + { + SetOwner(guid, (m_players.size() > 1 ? true : false)); + m_players[guid].SetModerator(true); + } } void Channel::Leave(Player* player, bool send) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - if (send) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - } - return; - } + if (!IsOn(guid)) + { + if (send) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + } + return; + } - // leave channel - if (send) - { - WorldPacket data; - MakeYouLeft(&data); - SendToOne(&data, guid); - player->LeftChannel(this); - data.clear(); - } + // leave channel + if (send) + { + WorldPacket data; + MakeYouLeft(&data); + SendToOne(&data, guid); + player->LeftChannel(this); + data.clear(); + } - bool changeowner = m_players[guid].IsOwner(); + bool changeowner = m_players[guid].IsOwner(); - m_players.erase(guid); - if (m_announce && (player->GetSession()->GetSecurity() < SEC_GAMEMASTER || !sWorld.getConfig(CONFIG_BOOL_SILENTLY_GM_JOIN_TO_CHANNEL))) - { - WorldPacket data; - MakeLeft(&data, guid); - SendToAll(&data); - } + m_players.erase(guid); + if (m_announce && (player->GetSession()->GetSecurity() < SEC_GAMEMASTER || !sWorld.getConfig(CONFIG_BOOL_SILENTLY_GM_JOIN_TO_CHANNEL))) + { + WorldPacket data; + MakeLeft(&data, guid); + SendToAll(&data); + } - LeaveNotify(guid); + LeaveNotify(guid); - if (changeowner) - { - ObjectGuid newowner = !m_players.empty() ? m_players.begin()->second.player : ObjectGuid(); - SetOwner(newowner); - } + if (changeowner) + { + ObjectGuid newowner = !m_players.empty() ? m_players.begin()->second.player : ObjectGuid(); + SetOwner(newowner); + } } void Channel::KickOrBan(Player* player, const char* targetName, bool ban) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) - { - WorldPacket data; - MakeNotModerator(&data); - SendToOne(&data, guid); - return; - } + if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) + { + WorldPacket data; + MakeNotModerator(&data); + SendToOne(&data, guid); + return; + } - Player* target = sObjectMgr.GetPlayer(targetName); - if (!target) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + Player* target = sObjectMgr.GetPlayer(targetName); + if (!target) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - ObjectGuid targetGuid = target->GetObjectGuid(); - if (!IsOn(targetGuid)) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + ObjectGuid targetGuid = target->GetObjectGuid(); + if (!IsOn(targetGuid)) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - bool changeowner = m_ownerGuid == targetGuid; + bool changeowner = m_ownerGuid == targetGuid; - if (player->GetSession()->GetSecurity() < SEC_GAMEMASTER && changeowner && guid != m_ownerGuid) - { - WorldPacket data; - MakeNotOwner(&data); - SendToOne(&data, guid); - return; - } + if (player->GetSession()->GetSecurity() < SEC_GAMEMASTER && changeowner && guid != m_ownerGuid) + { + WorldPacket data; + MakeNotOwner(&data); + SendToOne(&data, guid); + return; + } - // kick or ban player - WorldPacket data; + // kick or ban player + WorldPacket data; - if (ban && !IsBanned(targetGuid)) - { - m_banned.insert(targetGuid); - MakePlayerBanned(&data, targetGuid, guid); - } - else - MakePlayerKicked(&data, targetGuid, guid); + if (ban && !IsBanned(targetGuid)) + { + m_banned.insert(targetGuid); + MakePlayerBanned(&data, targetGuid, guid); + } + else + MakePlayerKicked(&data, targetGuid, guid); - SendToAll(&data); - m_players.erase(targetGuid); - target->LeftChannel(this); + SendToAll(&data); + m_players.erase(targetGuid); + target->LeftChannel(this); - if (changeowner) - { - ObjectGuid newowner = !m_players.empty() ? guid : ObjectGuid(); - SetOwner(newowner); - } + if (changeowner) + { + ObjectGuid newowner = !m_players.empty() ? guid : ObjectGuid(); + SetOwner(newowner); + } } void Channel::UnBan(Player* player, const char* targetName) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) - { - WorldPacket data; - MakeNotModerator(&data); - SendToOne(&data, guid); - return; - } + if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) + { + WorldPacket data; + MakeNotModerator(&data); + SendToOne(&data, guid); + return; + } - Player* target = sObjectMgr.GetPlayer(targetName); - if (!target) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + Player* target = sObjectMgr.GetPlayer(targetName); + if (!target) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - ObjectGuid targetGuid = target->GetObjectGuid(); - if (!IsBanned(targetGuid)) - { - WorldPacket data; - MakePlayerNotBanned(&data, targetName); - SendToOne(&data, guid); - return; - } + ObjectGuid targetGuid = target->GetObjectGuid(); + if (!IsBanned(targetGuid)) + { + WorldPacket data; + MakePlayerNotBanned(&data, targetName); + SendToOne(&data, guid); + return; + } - // unban player - m_banned.erase(targetGuid); + // unban player + m_banned.erase(targetGuid); - WorldPacket data; - MakePlayerUnbanned(&data, targetGuid, guid); - SendToAll(&data); + WorldPacket data; + MakePlayerUnbanned(&data, targetGuid, guid); + SendToAll(&data); } void Channel::Password(Player* player, const char* password) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) - { - WorldPacket data; - MakeNotModerator(&data); - SendToOne(&data, guid); - return; - } + if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) + { + WorldPacket data; + MakeNotModerator(&data); + SendToOne(&data, guid); + return; + } - // set channel password - m_password = password; + // set channel password + m_password = password; - WorldPacket data; - MakePasswordChanged(&data, guid); - SendToAll(&data); + WorldPacket data; + MakePasswordChanged(&data, guid); + SendToAll(&data); } void Channel::SetMode(Player* player, const char* targetName, bool moderator, bool set) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) - { - WorldPacket data; - MakeNotModerator(&data); - SendToOne(&data, guid); - return; - } + if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) + { + WorldPacket data; + MakeNotModerator(&data); + SendToOne(&data, guid); + return; + } - Player* target = sObjectMgr.GetPlayer(targetName); - if (!target) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + Player* target = sObjectMgr.GetPlayer(targetName); + if (!target) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - ObjectGuid targetGuid = target->GetObjectGuid(); - if (moderator && guid == m_ownerGuid && targetGuid == m_ownerGuid) - return; + ObjectGuid targetGuid = target->GetObjectGuid(); + if (moderator && guid == m_ownerGuid && targetGuid == m_ownerGuid) + return; - if (!IsOn(targetGuid)) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + if (!IsOn(targetGuid)) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - // allow make moderator from another team only if both is GMs - // at this moment this only way to show channel post for GM from another team - if ((player->GetSession()->GetSecurity() < SEC_GAMEMASTER || target->GetSession()->GetSecurity() < SEC_GAMEMASTER) && - player->GetTeam() != target->GetTeam() && !sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + // allow make moderator from another team only if both is GMs + // at this moment this only way to show channel post for GM from another team + if ((player->GetSession()->GetSecurity() < SEC_GAMEMASTER || target->GetSession()->GetSecurity() < SEC_GAMEMASTER) && + player->GetTeam() != target->GetTeam() && !sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - if (m_ownerGuid == targetGuid && m_ownerGuid != guid) - { - WorldPacket data; - MakeNotOwner(&data); - SendToOne(&data, guid); - return; - } + if (m_ownerGuid == targetGuid && m_ownerGuid != guid) + { + WorldPacket data; + MakeNotOwner(&data); + SendToOne(&data, guid); + return; + } - // set channel moderator - if (moderator) - SetModerator(targetGuid, set); - else - SetMute(targetGuid, set); + // set channel moderator + if (moderator) + SetModerator(targetGuid, set); + else + SetMute(targetGuid, set); } void Channel::SetOwner(ObjectGuid guid, bool exclaim) { - if (m_ownerGuid) - { - // [] will re-add player after it possible removed - PlayerList::iterator p_itr = m_players.find(m_ownerGuid); - if (p_itr != m_players.end()) - p_itr->second.SetOwner(false); - } + if (m_ownerGuid) + { + // [] will re-add player after it possible removed + PlayerList::iterator p_itr = m_players.find(m_ownerGuid); + if (p_itr != m_players.end()) + p_itr->second.SetOwner(false); + } - m_ownerGuid = guid; + m_ownerGuid = guid; - if (m_ownerGuid) - { - uint8 oldFlag = GetPlayerFlags(m_ownerGuid); - m_players[m_ownerGuid].SetOwner(true); + if (m_ownerGuid) + { + uint8 oldFlag = GetPlayerFlags(m_ownerGuid); + m_players[m_ownerGuid].SetOwner(true); - WorldPacket data; - MakeModeChange(&data, m_ownerGuid, oldFlag); - SendToAll(&data); + WorldPacket data; + MakeModeChange(&data, m_ownerGuid, oldFlag); + SendToAll(&data); - if (exclaim) - { - MakeOwnerChanged(&data, m_ownerGuid); - SendToAll(&data); - } - } + if (exclaim) + { + MakeOwnerChanged(&data, m_ownerGuid); + SendToAll(&data); + } + } } void Channel::SetOwner(Player* player, const char* targetName) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (player->GetSession()->GetSecurity() < SEC_GAMEMASTER && guid != m_ownerGuid) - { - WorldPacket data; - MakeNotOwner(&data); - SendToOne(&data, guid); - return; - } + if (player->GetSession()->GetSecurity() < SEC_GAMEMASTER && guid != m_ownerGuid) + { + WorldPacket data; + MakeNotOwner(&data); + SendToOne(&data, guid); + return; + } - Player* target = sObjectMgr.GetPlayer(targetName); - if (!target) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + Player* target = sObjectMgr.GetPlayer(targetName); + if (!target) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - ObjectGuid targetGuid = target->GetObjectGuid(); - if (!IsOn(targetGuid)) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + ObjectGuid targetGuid = target->GetObjectGuid(); + if (!IsOn(targetGuid)) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - if (target->GetTeam() != player->GetTeam() && !sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + if (target->GetTeam() != player->GetTeam() && !sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - // set channel owner - m_players[targetGuid].SetModerator(true); - SetOwner(targetGuid); + // set channel owner + m_players[targetGuid].SetModerator(true); + SetOwner(targetGuid); } void Channel::SendWhoOwner(Player* player) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - // send channel owner - WorldPacket data; - MakeChannelOwner(&data); - SendToOne(&data, guid); + // send channel owner + WorldPacket data; + MakeChannelOwner(&data); + SendToOne(&data, guid); } void Channel::List(Player* player) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - // list players in channel - WorldPacket data(SMSG_CHANNEL_LIST, 1 + (GetName().size() + 1) + 1 + 4 + m_players.size() * (8 + 1)); - data << uint8(1); // channel type? - data << GetName(); // channel name - data << uint8(GetFlags()); // channel flags? + // list players in channel + WorldPacket data(SMSG_CHANNEL_LIST, 1 + (GetName().size() + 1) + 1 + 4 + m_players.size() * (8 + 1)); + data << uint8(1); // channel type? + data << GetName(); // channel name + data << uint8(GetFlags()); // channel flags? - size_t pos = data.wpos(); - data << uint32(0); // size of list, placeholder + size_t pos = data.wpos(); + data << uint32(0); // size of list, placeholder - AccountTypes gmLevelInWhoList = (AccountTypes)sWorld.getConfig(CONFIG_UINT32_GM_LEVEL_IN_WHO_LIST); + AccountTypes gmLevelInWhoList = (AccountTypes)sWorld.getConfig(CONFIG_UINT32_GM_LEVEL_IN_WHO_LIST); - uint32 count = 0; - for (PlayerList::const_iterator i = m_players.begin(); i != m_players.end(); ++i) - { - Player* plr = sObjectMgr.GetPlayer(i->first); + uint32 count = 0; + for (PlayerList::const_iterator i = m_players.begin(); i != m_players.end(); ++i) + { + Player* plr = sObjectMgr.GetPlayer(i->first); - // PLAYER can't see MODERATOR, GAME MASTER, ADMINISTRATOR characters - // MODERATOR, GAME MASTER, ADMINISTRATOR can see all - if (plr && (player->GetSession()->GetSecurity() > SEC_PLAYER || plr->GetSession()->GetSecurity() <= gmLevelInWhoList) && - plr->IsVisibleGloballyFor(player)) - { - data << ObjectGuid(i->first); - data << uint8(i->second.flags); // flags seems to be changed... - ++count; - } - } + // PLAYER can't see MODERATOR, GAME MASTER, ADMINISTRATOR characters + // MODERATOR, GAME MASTER, ADMINISTRATOR can see all + if (plr && (player->GetSession()->GetSecurity() > SEC_PLAYER || plr->GetSession()->GetSecurity() <= gmLevelInWhoList) && + plr->IsVisibleGloballyFor(player)) + { + data << ObjectGuid(i->first); + data << uint8(i->second.flags); // flags seems to be changed... + ++count; + } + } - data.put(pos, count); + data.put(pos, count); - SendToOne(&data, guid); + SendToOne(&data, guid); } void Channel::Announce(Player* player) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) - { - WorldPacket data; - MakeNotModerator(&data); - SendToOne(&data, guid); - return; - } + if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) + { + WorldPacket data; + MakeNotModerator(&data); + SendToOne(&data, guid); + return; + } - // toggle channel announcement - m_announce = !m_announce; + // toggle channel announcement + m_announce = !m_announce; - WorldPacket data; - if (m_announce) - MakeAnnouncementsOn(&data, guid); - else - MakeAnnouncementsOff(&data, guid); + WorldPacket data; + if (m_announce) + MakeAnnouncementsOn(&data, guid); + else + MakeAnnouncementsOff(&data, guid); - SendToAll(&data); + SendToAll(&data); } void Channel::Moderate(Player* player) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) - { - WorldPacket data; - MakeNotModerator(&data); - SendToOne(&data, guid); - return; - } + if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) + { + WorldPacket data; + MakeNotModerator(&data); + SendToOne(&data, guid); + return; + } - // toggle channel moderation - m_moderate = !m_moderate; + // toggle channel moderation + m_moderate = !m_moderate; - WorldPacket data; - if (m_moderate) - MakeModerationOn(&data, guid); - else - MakeModerationOff(&data, guid); + WorldPacket data; + if (m_moderate) + MakeModerationOn(&data, guid); + else + MakeModerationOff(&data, guid); - SendToAll(&data); + SendToAll(&data); } void Channel::Say(Player* player, const char* text, uint32 lang) { - if (!text) - return; + if (!text) + return; - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - if (m_players[guid].IsMuted()) - { - WorldPacket data; - MakeMuted(&data); - SendToOne(&data, guid); - return; - } + if (m_players[guid].IsMuted()) + { + WorldPacket data; + MakeMuted(&data); + SendToOne(&data, guid); + return; + } - if (m_moderate && !m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) - { - WorldPacket data; - MakeNotModerator(&data); - SendToOne(&data, guid); - return; - } + if (m_moderate && !m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) + { + WorldPacket data; + MakeNotModerator(&data); + SendToOne(&data, guid); + return; + } - // send channel message - if (sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) - lang = LANG_UNIVERSAL; - WorldPacket data; - ChatHandler::BuildChatPacket(data, CHAT_MSG_CHANNEL, text, Language(lang), player->GetChatTag(), guid, player->GetName(), ObjectGuid(), "", m_name.c_str()); - SendToAll(&data, !m_players[guid].IsModerator() ? guid : ObjectGuid()); + // send channel message + if (sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) + lang = LANG_UNIVERSAL; + WorldPacket data; + ChatHandler::BuildChatPacket(data, CHAT_MSG_CHANNEL, text, Language(lang), player->GetChatTag(), guid, player->GetName(), ObjectGuid(), "", m_name.c_str()); + SendToAll(&data, !m_players[guid].IsModerator() ? guid : ObjectGuid()); } void Channel::Invite(Player* player, const char* targetName) { - ObjectGuid guid = player->GetObjectGuid(); + ObjectGuid guid = player->GetObjectGuid(); - if (!IsOn(guid)) - { - WorldPacket data; - MakeNotMember(&data); - SendToOne(&data, guid); - return; - } + if (!IsOn(guid)) + { + WorldPacket data; + MakeNotMember(&data); + SendToOne(&data, guid); + return; + } - Player* target = sObjectMgr.GetPlayer(targetName); - if (!target) - { - WorldPacket data; - MakePlayerNotFound(&data, targetName); - SendToOne(&data, guid); - return; - } + Player* target = sObjectMgr.GetPlayer(targetName); + if (!target) + { + WorldPacket data; + MakePlayerNotFound(&data, targetName); + SendToOne(&data, guid); + return; + } - ObjectGuid targetGuid = target->GetObjectGuid(); - if (IsOn(targetGuid)) - { - WorldPacket data; - MakePlayerAlreadyMember(&data, targetGuid); - SendToOne(&data, guid); - return; - } + ObjectGuid targetGuid = target->GetObjectGuid(); + if (IsOn(targetGuid)) + { + WorldPacket data; + MakePlayerAlreadyMember(&data, targetGuid); + SendToOne(&data, guid); + return; + } - if (IsBanned(targetGuid)) - { - WorldPacket data; - MakePlayerInviteBanned(&data, targetName); - SendToOne(&data, guid); - return; - } + if (IsBanned(targetGuid)) + { + WorldPacket data; + MakePlayerInviteBanned(&data, targetName); + SendToOne(&data, guid); + return; + } - if (target->GetTeam() != player->GetTeam() && !sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) - { - WorldPacket data; - MakeInviteWrongFaction(&data); - SendToOne(&data, guid); - return; - } + if (target->GetTeam() != player->GetTeam() && !sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) + { + WorldPacket data; + MakeInviteWrongFaction(&data); + SendToOne(&data, guid); + return; + } - // invite player - WorldPacket data; - if (!target->GetSocial()->HasIgnore(guid)) - { - MakeInvite(&data, guid); - SendToOne(&data, targetGuid); - data.clear(); - } + // invite player + WorldPacket data; + if (!target->GetSocial()->HasIgnore(guid)) + { + MakeInvite(&data, guid); + SendToOne(&data, targetGuid); + data.clear(); + } - MakePlayerInvited(&data, targetName); - SendToOne(&data, guid); + MakePlayerInvited(&data, targetName); + SendToOne(&data, guid); } void Channel::SendToAll(WorldPacket* data, ObjectGuid guid) { - for (PlayerList::const_iterator i = m_players.begin(); i != m_players.end(); ++i) - if (Player* plr = sObjectMgr.GetPlayer(i->first)) - if (!guid || !plr->GetSocial()->HasIgnore(guid)) - plr->GetSession()->SendPacket(data); + for (PlayerList::const_iterator i = m_players.begin(); i != m_players.end(); ++i) + if (Player* plr = sObjectMgr.GetPlayer(i->first)) + if (!guid || !plr->GetSocial()->HasIgnore(guid)) + plr->GetSession()->SendPacket(data); } void Channel::SendToOne(WorldPacket* data, ObjectGuid who) { - if (Player* plr = ObjectMgr::GetPlayer(who)) - plr->GetSession()->SendPacket(data); + if (Player* plr = ObjectMgr::GetPlayer(who)) + plr->GetSession()->SendPacket(data); } void Channel::Voice(ObjectGuid /*guid1*/, ObjectGuid /*guid2*/) @@ -707,250 +707,250 @@ void Channel::DeVoice(ObjectGuid /*guid1*/, ObjectGuid /*guid2*/) void Channel::MakeNotifyPacket(WorldPacket* data, uint8 notify_type) { - data->Initialize(SMSG_CHANNEL_NOTIFY, 1 + m_name.size() + 1); - *data << uint8(notify_type); - *data << m_name; + data->Initialize(SMSG_CHANNEL_NOTIFY, 1 + m_name.size() + 1); + *data << uint8(notify_type); + *data << m_name; } void Channel::MakeJoined(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_JOINED_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_JOINED_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeLeft(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_LEFT_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_LEFT_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeYouJoined(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_YOU_JOINED_NOTICE); - *data << uint8(GetFlags()); - *data << uint32(GetChannelId()); - *data << uint32(0); + MakeNotifyPacket(data, CHAT_YOU_JOINED_NOTICE); + *data << uint8(GetFlags()); + *data << uint32(GetChannelId()); + *data << uint32(0); } void Channel::MakeYouLeft(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_YOU_LEFT_NOTICE); - *data << uint32(GetChannelId()); - *data << uint8(0); // can be 0x00 and 0x01 + MakeNotifyPacket(data, CHAT_YOU_LEFT_NOTICE); + *data << uint32(GetChannelId()); + *data << uint8(0); // can be 0x00 and 0x01 } void Channel::MakeWrongPassword(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_WRONG_PASSWORD_NOTICE); + MakeNotifyPacket(data, CHAT_WRONG_PASSWORD_NOTICE); } void Channel::MakeNotMember(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_NOT_MEMBER_NOTICE); + MakeNotifyPacket(data, CHAT_NOT_MEMBER_NOTICE); } void Channel::MakeNotModerator(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_NOT_MODERATOR_NOTICE); + MakeNotifyPacket(data, CHAT_NOT_MODERATOR_NOTICE); } void Channel::MakePasswordChanged(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_PASSWORD_CHANGED_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_PASSWORD_CHANGED_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeOwnerChanged(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_OWNER_CHANGED_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_OWNER_CHANGED_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakePlayerNotFound(WorldPacket* data, const std::string& name) { - MakeNotifyPacket(data, CHAT_PLAYER_NOT_FOUND_NOTICE); - *data << name; + MakeNotifyPacket(data, CHAT_PLAYER_NOT_FOUND_NOTICE); + *data << name; } void Channel::MakeNotOwner(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_NOT_OWNER_NOTICE); + MakeNotifyPacket(data, CHAT_NOT_OWNER_NOTICE); } void Channel::MakeChannelOwner(WorldPacket* data) { - std::string name = ""; + std::string name = ""; - if (!sObjectMgr.GetPlayerNameByGUID(m_ownerGuid, name) || name.empty()) - name = "PLAYER_NOT_FOUND"; + if (!sObjectMgr.GetPlayerNameByGUID(m_ownerGuid, name) || name.empty()) + name = "PLAYER_NOT_FOUND"; - MakeNotifyPacket(data, CHAT_CHANNEL_OWNER_NOTICE); - *data << ((IsConstant() || !m_ownerGuid) ? "Nobody" : name); + MakeNotifyPacket(data, CHAT_CHANNEL_OWNER_NOTICE); + *data << ((IsConstant() || !m_ownerGuid) ? "Nobody" : name); } void Channel::MakeModeChange(WorldPacket* data, ObjectGuid guid, uint8 oldflags) { - MakeNotifyPacket(data, CHAT_MODE_CHANGE_NOTICE); - *data << ObjectGuid(guid); - *data << uint8(oldflags); - *data << uint8(GetPlayerFlags(guid)); + MakeNotifyPacket(data, CHAT_MODE_CHANGE_NOTICE); + *data << ObjectGuid(guid); + *data << uint8(oldflags); + *data << uint8(GetPlayerFlags(guid)); } void Channel::MakeAnnouncementsOn(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_ANNOUNCEMENTS_ON_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_ANNOUNCEMENTS_ON_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeAnnouncementsOff(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_ANNOUNCEMENTS_OFF_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_ANNOUNCEMENTS_OFF_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeModerationOn(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_MODERATION_ON_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_MODERATION_ON_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeModerationOff(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_MODERATION_OFF_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_MODERATION_OFF_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeMuted(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_MUTED_NOTICE); + MakeNotifyPacket(data, CHAT_MUTED_NOTICE); } void Channel::MakePlayerKicked(WorldPacket* data, ObjectGuid target, ObjectGuid source) { - MakeNotifyPacket(data, CHAT_PLAYER_KICKED_NOTICE); - *data << ObjectGuid(target); - *data << ObjectGuid(source); + MakeNotifyPacket(data, CHAT_PLAYER_KICKED_NOTICE); + *data << ObjectGuid(target); + *data << ObjectGuid(source); } void Channel::MakeBanned(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_BANNED_NOTICE); + MakeNotifyPacket(data, CHAT_BANNED_NOTICE); } void Channel::MakePlayerBanned(WorldPacket* data, ObjectGuid target, ObjectGuid source) { - MakeNotifyPacket(data, CHAT_PLAYER_BANNED_NOTICE); - *data << ObjectGuid(target); - *data << ObjectGuid(source); + MakeNotifyPacket(data, CHAT_PLAYER_BANNED_NOTICE); + *data << ObjectGuid(target); + *data << ObjectGuid(source); } void Channel::MakePlayerUnbanned(WorldPacket* data, ObjectGuid target, ObjectGuid source) { - MakeNotifyPacket(data, CHAT_PLAYER_UNBANNED_NOTICE); - *data << ObjectGuid(target); - *data << ObjectGuid(source); + MakeNotifyPacket(data, CHAT_PLAYER_UNBANNED_NOTICE); + *data << ObjectGuid(target); + *data << ObjectGuid(source); } void Channel::MakePlayerNotBanned(WorldPacket* data, const std::string& name) { - MakeNotifyPacket(data, CHAT_PLAYER_NOT_BANNED_NOTICE); - *data << name; + MakeNotifyPacket(data, CHAT_PLAYER_NOT_BANNED_NOTICE); + *data << name; } void Channel::MakePlayerAlreadyMember(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_PLAYER_ALREADY_MEMBER_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_PLAYER_ALREADY_MEMBER_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeInvite(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_INVITE_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_INVITE_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeInviteWrongFaction(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_INVITE_WRONG_FACTION_NOTICE); + MakeNotifyPacket(data, CHAT_INVITE_WRONG_FACTION_NOTICE); } void Channel::MakeWrongFaction(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_WRONG_FACTION_NOTICE); + MakeNotifyPacket(data, CHAT_WRONG_FACTION_NOTICE); } void Channel::MakeInvalidName(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_INVALID_NAME_NOTICE); + MakeNotifyPacket(data, CHAT_INVALID_NAME_NOTICE); } void Channel::MakeNotModerated(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_NOT_MODERATED_NOTICE); + MakeNotifyPacket(data, CHAT_NOT_MODERATED_NOTICE); } void Channel::MakePlayerInvited(WorldPacket* data, const std::string& name) { - MakeNotifyPacket(data, CHAT_PLAYER_INVITED_NOTICE); - *data << name; + MakeNotifyPacket(data, CHAT_PLAYER_INVITED_NOTICE); + *data << name; } void Channel::MakePlayerInviteBanned(WorldPacket* data, const std::string& name) { - MakeNotifyPacket(data, CHAT_PLAYER_INVITE_BANNED_NOTICE); - *data << name; + MakeNotifyPacket(data, CHAT_PLAYER_INVITE_BANNED_NOTICE); + *data << name; } void Channel::MakeThrottled(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_THROTTLED_NOTICE); + MakeNotifyPacket(data, CHAT_THROTTLED_NOTICE); } void Channel::MakeNotInArea(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_NOT_IN_AREA_NOTICE); + MakeNotifyPacket(data, CHAT_NOT_IN_AREA_NOTICE); } void Channel::MakeNotInLfg(WorldPacket* data) { - MakeNotifyPacket(data, CHAT_NOT_IN_LFG_NOTICE); + MakeNotifyPacket(data, CHAT_NOT_IN_LFG_NOTICE); } void Channel::MakeVoiceOn(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_VOICE_ON_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_VOICE_ON_NOTICE); + *data << ObjectGuid(guid); } void Channel::MakeVoiceOff(WorldPacket* data, ObjectGuid guid) { - MakeNotifyPacket(data, CHAT_VOICE_OFF_NOTICE); - *data << ObjectGuid(guid); + MakeNotifyPacket(data, CHAT_VOICE_OFF_NOTICE); + *data << ObjectGuid(guid); } void Channel::JoinNotify(ObjectGuid guid) { - WorldPacket data; + WorldPacket data; - if (IsConstant()) - data.Initialize(SMSG_USERLIST_ADD, 8 + 1 + 1 + 4 + GetName().size() + 1); - else - data.Initialize(SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size() + 1); + if (IsConstant()) + data.Initialize(SMSG_USERLIST_ADD, 8 + 1 + 1 + 4 + GetName().size() + 1); + else + data.Initialize(SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size() + 1); - data << ObjectGuid(guid); - data << uint8(GetPlayerFlags(guid)); - data << uint8(GetFlags()); - data << uint32(GetNumPlayers()); - data << GetName(); - SendToAll(&data); + data << ObjectGuid(guid); + data << uint8(GetPlayerFlags(guid)); + data << uint8(GetFlags()); + data << uint32(GetNumPlayers()); + data << GetName(); + SendToAll(&data); } void Channel::LeaveNotify(ObjectGuid guid) { - WorldPacket data(SMSG_USERLIST_REMOVE, 8 + 1 + 4 + GetName().size() + 1); - data << ObjectGuid(guid); - data << uint8(GetFlags()); - data << uint32(GetNumPlayers()); - data << GetName(); - SendToAll(&data); + WorldPacket data(SMSG_USERLIST_REMOVE, 8 + 1 + 4 + GetName().size() + 1); + data << ObjectGuid(guid); + data << uint8(GetFlags()); + data << uint32(GetNumPlayers()); + data << GetName(); + SendToAll(&data); } diff --git a/src/game/WorldHandlers/Channel.h b/src/game/WorldHandlers/Channel.h index f2f24fadd..589e125d4 100644 --- a/src/game/WorldHandlers/Channel.h +++ b/src/game/WorldHandlers/Channel.h @@ -77,210 +77,210 @@ enum ChatNotify class Channel { - enum ChannelFlags - { - CHANNEL_FLAG_NONE = 0x00, - CHANNEL_FLAG_CUSTOM = 0x01, - // 0x02 - CHANNEL_FLAG_TRADE = 0x04, - CHANNEL_FLAG_NOT_LFG = 0x08, - CHANNEL_FLAG_GENERAL = 0x10, - CHANNEL_FLAG_CITY = 0x20, - CHANNEL_FLAG_LFG = 0x40, - CHANNEL_FLAG_VOICE = 0x80 - // General 0x18 = 0x10 | 0x08 - // Trade 0x3C = 0x20 | 0x10 | 0x08 | 0x04 - // LocalDefence 0x18 = 0x10 | 0x08 - // GuildRecruitment 0x38 = 0x20 | 0x10 | 0x08 - // LookingForGroup 0x50 = 0x40 | 0x10 - }; + enum ChannelFlags + { + CHANNEL_FLAG_NONE = 0x00, + CHANNEL_FLAG_CUSTOM = 0x01, + // 0x02 + CHANNEL_FLAG_TRADE = 0x04, + CHANNEL_FLAG_NOT_LFG = 0x08, + CHANNEL_FLAG_GENERAL = 0x10, + CHANNEL_FLAG_CITY = 0x20, + CHANNEL_FLAG_LFG = 0x40, + CHANNEL_FLAG_VOICE = 0x80 + // General 0x18 = 0x10 | 0x08 + // Trade 0x3C = 0x20 | 0x10 | 0x08 | 0x04 + // LocalDefence 0x18 = 0x10 | 0x08 + // GuildRecruitment 0x38 = 0x20 | 0x10 | 0x08 + // LookingForGroup 0x50 = 0x40 | 0x10 + }; - enum ChannelDBCFlags - { - CHANNEL_DBC_FLAG_NONE = 0x00000, - CHANNEL_DBC_FLAG_INITIAL = 0x00001, // General, Trade, LocalDefense, LFG - CHANNEL_DBC_FLAG_ZONE_DEP = 0x00002, // General, Trade, LocalDefense, GuildRecruitment - CHANNEL_DBC_FLAG_GLOBAL = 0x00004, // WorldDefense - CHANNEL_DBC_FLAG_TRADE = 0x00008, // Trade - CHANNEL_DBC_FLAG_CITY_ONLY = 0x00010, // Trade, GuildRecruitment - CHANNEL_DBC_FLAG_CITY_ONLY2 = 0x00020, // Trade, GuildRecruitment - CHANNEL_DBC_FLAG_DEFENSE = 0x10000, // LocalDefense, WorldDefense - CHANNEL_DBC_FLAG_GUILD_REQ = 0x20000, // GuildRecruitment - CHANNEL_DBC_FLAG_LFG = 0x40000 // LookingForGroup - }; + enum ChannelDBCFlags + { + CHANNEL_DBC_FLAG_NONE = 0x00000, + CHANNEL_DBC_FLAG_INITIAL = 0x00001, // General, Trade, LocalDefense, LFG + CHANNEL_DBC_FLAG_ZONE_DEP = 0x00002, // General, Trade, LocalDefense, GuildRecruitment + CHANNEL_DBC_FLAG_GLOBAL = 0x00004, // WorldDefense + CHANNEL_DBC_FLAG_TRADE = 0x00008, // Trade + CHANNEL_DBC_FLAG_CITY_ONLY = 0x00010, // Trade, GuildRecruitment + CHANNEL_DBC_FLAG_CITY_ONLY2 = 0x00020, // Trade, GuildRecruitment + CHANNEL_DBC_FLAG_DEFENSE = 0x10000, // LocalDefense, WorldDefense + CHANNEL_DBC_FLAG_GUILD_REQ = 0x20000, // GuildRecruitment + CHANNEL_DBC_FLAG_LFG = 0x40000 // LookingForGroup + }; - enum ChannelMemberFlags - { - MEMBER_FLAG_NONE = 0x00, - MEMBER_FLAG_OWNER = 0x01, - MEMBER_FLAG_MODERATOR = 0x02, - MEMBER_FLAG_VOICED = 0x04, - MEMBER_FLAG_MUTED = 0x08, - MEMBER_FLAG_CUSTOM = 0x10, - MEMBER_FLAG_MIC_MUTED = 0x20, - // 0x40 - // 0x80 - }; + enum ChannelMemberFlags + { + MEMBER_FLAG_NONE = 0x00, + MEMBER_FLAG_OWNER = 0x01, + MEMBER_FLAG_MODERATOR = 0x02, + MEMBER_FLAG_VOICED = 0x04, + MEMBER_FLAG_MUTED = 0x08, + MEMBER_FLAG_CUSTOM = 0x10, + MEMBER_FLAG_MIC_MUTED = 0x20, + // 0x40 + // 0x80 + }; - struct PlayerInfo - { - ObjectGuid player; - uint8 flags; + struct PlayerInfo + { + ObjectGuid player; + uint8 flags; - bool HasFlag(uint8 flag) { return flags & flag; } - void SetFlag(uint8 flag) { if (!HasFlag(flag)) flags |= flag; } - bool IsOwner() { return flags & MEMBER_FLAG_OWNER; } - void SetOwner(bool state) - { - if (state) flags |= MEMBER_FLAG_OWNER; - else flags &= ~MEMBER_FLAG_OWNER; - } - bool IsModerator() { return flags & MEMBER_FLAG_MODERATOR; } - void SetModerator(bool state) - { - if (state) flags |= MEMBER_FLAG_MODERATOR; - else flags &= ~MEMBER_FLAG_MODERATOR; - } - bool IsMuted() { return flags & MEMBER_FLAG_MUTED; } - void SetMuted(bool state) - { - if (state) flags |= MEMBER_FLAG_MUTED; - else flags &= ~MEMBER_FLAG_MUTED; - } - }; + bool HasFlag(uint8 flag) { return flags & flag; } + void SetFlag(uint8 flag) { if (!HasFlag(flag)) flags |= flag; } + bool IsOwner() { return flags & MEMBER_FLAG_OWNER; } + void SetOwner(bool state) + { + if (state) flags |= MEMBER_FLAG_OWNER; + else flags &= ~MEMBER_FLAG_OWNER; + } + bool IsModerator() { return flags & MEMBER_FLAG_MODERATOR; } + void SetModerator(bool state) + { + if (state) flags |= MEMBER_FLAG_MODERATOR; + else flags &= ~MEMBER_FLAG_MODERATOR; + } + bool IsMuted() { return flags & MEMBER_FLAG_MUTED; } + void SetMuted(bool state) + { + if (state) flags |= MEMBER_FLAG_MUTED; + else flags &= ~MEMBER_FLAG_MUTED; + } + }; public: - Channel(const std::string& name, uint32 channel_id); - std::string GetName() const { return m_name; } - uint32 GetChannelId() const { return m_channelId; } - bool IsConstant() const { return m_channelId != 0; } - bool IsAnnounce() const { return m_announce; } - bool IsLFG() const { return GetFlags() & CHANNEL_FLAG_LFG; } - std::string GetPassword() const { return m_password; } - void SetPassword(const std::string& npassword) { m_password = npassword; } - void SetAnnounce(bool nannounce) { m_announce = nannounce; } - uint32 GetNumPlayers() const { return m_players.size(); } - uint8 GetFlags() const { return m_flags; } - bool HasFlag(uint8 flag) { return m_flags & flag; } + Channel(const std::string& name, uint32 channel_id); + std::string GetName() const { return m_name; } + uint32 GetChannelId() const { return m_channelId; } + bool IsConstant() const { return m_channelId != 0; } + bool IsAnnounce() const { return m_announce; } + bool IsLFG() const { return GetFlags() & CHANNEL_FLAG_LFG; } + std::string GetPassword() const { return m_password; } + void SetPassword(const std::string& npassword) { m_password = npassword; } + void SetAnnounce(bool nannounce) { m_announce = nannounce; } + uint32 GetNumPlayers() const { return m_players.size(); } + uint8 GetFlags() const { return m_flags; } + bool HasFlag(uint8 flag) { return m_flags & flag; } - void Join(Player* player, const char* password); - void Leave(Player* player, bool send = true); - void KickOrBan(Player* player, const char* targetName, bool ban); - void Kick(Player* player, const char* targetName) { KickOrBan(player, targetName, false); } - void Ban(Player* player, const char* targetName) { KickOrBan(player, targetName, true); } - void UnBan(Player* player, const char* targetName); - void Password(Player* player, const char* password); - void SetMode(Player* player, const char* targetName, bool moderator, bool set); - void SetOwner(ObjectGuid guid, bool exclaim = true); - void SetOwner(Player* player, const char* targetName); - void SendWhoOwner(Player* player); - void SetModerator(Player* player, const char* targetName) { SetMode(player, targetName, true, true); } - void UnsetModerator(Player* player, const char* targetName) { SetMode(player, targetName, true, false); } - void SetMute(Player* player, const char* targetName) { SetMode(player, targetName, false, true); } - void UnsetMute(Player* player, const char* targetName) { SetMode(player, targetName, false, false); } - void List(Player* player); - void Announce(Player* player); - void Moderate(Player* player); - void Say(Player* player, const char* text, uint32 lang); - void Invite(Player* player, const char* targetName); - void Voice(ObjectGuid guid1, ObjectGuid guid2); - void DeVoice(ObjectGuid guid1, ObjectGuid guid2); - void JoinNotify(ObjectGuid guid); // invisible notify - void LeaveNotify(ObjectGuid guid); // invisible notify + void Join(Player* player, const char* password); + void Leave(Player* player, bool send = true); + void KickOrBan(Player* player, const char* targetName, bool ban); + void Kick(Player* player, const char* targetName) { KickOrBan(player, targetName, false); } + void Ban(Player* player, const char* targetName) { KickOrBan(player, targetName, true); } + void UnBan(Player* player, const char* targetName); + void Password(Player* player, const char* password); + void SetMode(Player* player, const char* targetName, bool moderator, bool set); + void SetOwner(ObjectGuid guid, bool exclaim = true); + void SetOwner(Player* player, const char* targetName); + void SendWhoOwner(Player* player); + void SetModerator(Player* player, const char* targetName) { SetMode(player, targetName, true, true); } + void UnsetModerator(Player* player, const char* targetName) { SetMode(player, targetName, true, false); } + void SetMute(Player* player, const char* targetName) { SetMode(player, targetName, false, true); } + void UnsetMute(Player* player, const char* targetName) { SetMode(player, targetName, false, false); } + void List(Player* player); + void Announce(Player* player); + void Moderate(Player* player); + void Say(Player* player, const char* text, uint32 lang); + void Invite(Player* player, const char* targetName); + void Voice(ObjectGuid guid1, ObjectGuid guid2); + void DeVoice(ObjectGuid guid1, ObjectGuid guid2); + void JoinNotify(ObjectGuid guid); // invisible notify + void LeaveNotify(ObjectGuid guid); // invisible notify private: - // initial packet data (notify type and channel name) - void MakeNotifyPacket(WorldPacket* data, uint8 notify_type); - // type specific packet data - void MakeJoined(WorldPacket* data, ObjectGuid guid); //+ 0x00 - void MakeLeft(WorldPacket* data, ObjectGuid guid); //+ 0x01 - void MakeYouJoined(WorldPacket* data); //+ 0x02 - void MakeYouLeft(WorldPacket* data); //+ 0x03 - void MakeWrongPassword(WorldPacket* data); //? 0x04 - void MakeNotMember(WorldPacket* data); //? 0x05 - void MakeNotModerator(WorldPacket* data); //? 0x06 - void MakePasswordChanged(WorldPacket* data, ObjectGuid guid); //+ 0x07 - void MakeOwnerChanged(WorldPacket* data, ObjectGuid guid); //? 0x08 - void MakePlayerNotFound(WorldPacket* data, const std::string& name); //+ 0x09 - void MakeNotOwner(WorldPacket* data); //? 0x0A - void MakeChannelOwner(WorldPacket* data); //? 0x0B - void MakeModeChange(WorldPacket* data, ObjectGuid guid, uint8 oldflags);//+ 0x0C - void MakeAnnouncementsOn(WorldPacket* data, ObjectGuid guid); //+ 0x0D - void MakeAnnouncementsOff(WorldPacket* data, ObjectGuid guid); //+ 0x0E - void MakeModerationOn(WorldPacket* data, ObjectGuid guid); //+ 0x0F - void MakeModerationOff(WorldPacket* data, ObjectGuid guid); //+ 0x10 - void MakeMuted(WorldPacket* data); //? 0x11 - void MakePlayerKicked(WorldPacket* data, ObjectGuid target, ObjectGuid source);//? 0x12 - void MakeBanned(WorldPacket* data); //? 0x13 - void MakePlayerBanned(WorldPacket* data, ObjectGuid target, ObjectGuid source);//? 0x14 - void MakePlayerUnbanned(WorldPacket* data, ObjectGuid target, ObjectGuid source);//? 0x15 - void MakePlayerNotBanned(WorldPacket* data, const std::string& name); //? 0x16 - void MakePlayerAlreadyMember(WorldPacket* data, ObjectGuid guid); //+ 0x17 - void MakeInvite(WorldPacket* data, ObjectGuid guid); //? 0x18 - void MakeInviteWrongFaction(WorldPacket* data); //? 0x19 - void MakeWrongFaction(WorldPacket* data); //? 0x1A - void MakeInvalidName(WorldPacket* data); //? 0x1B - void MakeNotModerated(WorldPacket* data); //? 0x1C - void MakePlayerInvited(WorldPacket* data, const std::string& name); //+ 0x1D - void MakePlayerInviteBanned(WorldPacket* data, const std::string& name);//? 0x1E - void MakeThrottled(WorldPacket* data); //? 0x1F - void MakeNotInArea(WorldPacket* data); //? 0x20 - void MakeNotInLfg(WorldPacket* data); //? 0x21 - void MakeVoiceOn(WorldPacket* data, ObjectGuid guid); //+ 0x22 - void MakeVoiceOff(WorldPacket* data, ObjectGuid guid); //+ 0x23 + // initial packet data (notify type and channel name) + void MakeNotifyPacket(WorldPacket* data, uint8 notify_type); + // type specific packet data + void MakeJoined(WorldPacket* data, ObjectGuid guid); //+ 0x00 + void MakeLeft(WorldPacket* data, ObjectGuid guid); //+ 0x01 + void MakeYouJoined(WorldPacket* data); //+ 0x02 + void MakeYouLeft(WorldPacket* data); //+ 0x03 + void MakeWrongPassword(WorldPacket* data); //? 0x04 + void MakeNotMember(WorldPacket* data); //? 0x05 + void MakeNotModerator(WorldPacket* data); //? 0x06 + void MakePasswordChanged(WorldPacket* data, ObjectGuid guid); //+ 0x07 + void MakeOwnerChanged(WorldPacket* data, ObjectGuid guid); //? 0x08 + void MakePlayerNotFound(WorldPacket* data, const std::string& name); //+ 0x09 + void MakeNotOwner(WorldPacket* data); //? 0x0A + void MakeChannelOwner(WorldPacket* data); //? 0x0B + void MakeModeChange(WorldPacket* data, ObjectGuid guid, uint8 oldflags);//+ 0x0C + void MakeAnnouncementsOn(WorldPacket* data, ObjectGuid guid); //+ 0x0D + void MakeAnnouncementsOff(WorldPacket* data, ObjectGuid guid); //+ 0x0E + void MakeModerationOn(WorldPacket* data, ObjectGuid guid); //+ 0x0F + void MakeModerationOff(WorldPacket* data, ObjectGuid guid); //+ 0x10 + void MakeMuted(WorldPacket* data); //? 0x11 + void MakePlayerKicked(WorldPacket* data, ObjectGuid target, ObjectGuid source);//? 0x12 + void MakeBanned(WorldPacket* data); //? 0x13 + void MakePlayerBanned(WorldPacket* data, ObjectGuid target, ObjectGuid source);//? 0x14 + void MakePlayerUnbanned(WorldPacket* data, ObjectGuid target, ObjectGuid source);//? 0x15 + void MakePlayerNotBanned(WorldPacket* data, const std::string& name); //? 0x16 + void MakePlayerAlreadyMember(WorldPacket* data, ObjectGuid guid); //+ 0x17 + void MakeInvite(WorldPacket* data, ObjectGuid guid); //? 0x18 + void MakeInviteWrongFaction(WorldPacket* data); //? 0x19 + void MakeWrongFaction(WorldPacket* data); //? 0x1A + void MakeInvalidName(WorldPacket* data); //? 0x1B + void MakeNotModerated(WorldPacket* data); //? 0x1C + void MakePlayerInvited(WorldPacket* data, const std::string& name); //+ 0x1D + void MakePlayerInviteBanned(WorldPacket* data, const std::string& name);//? 0x1E + void MakeThrottled(WorldPacket* data); //? 0x1F + void MakeNotInArea(WorldPacket* data); //? 0x20 + void MakeNotInLfg(WorldPacket* data); //? 0x21 + void MakeVoiceOn(WorldPacket* data, ObjectGuid guid); //+ 0x22 + void MakeVoiceOff(WorldPacket* data, ObjectGuid guid); //+ 0x23 - void SendToAll(WorldPacket* data, ObjectGuid guid = ObjectGuid()); - void SendToOne(WorldPacket* data, ObjectGuid who); + void SendToAll(WorldPacket* data, ObjectGuid guid = ObjectGuid()); + void SendToOne(WorldPacket* data, ObjectGuid who); - bool IsOn(ObjectGuid who) const { return m_players.find(who) != m_players.end(); } - bool IsBanned(ObjectGuid guid) const { return m_banned.find(guid) != m_banned.end(); } + bool IsOn(ObjectGuid who) const { return m_players.find(who) != m_players.end(); } + bool IsBanned(ObjectGuid guid) const { return m_banned.find(guid) != m_banned.end(); } - uint8 GetPlayerFlags(ObjectGuid guid) const - { - PlayerList::const_iterator p_itr = m_players.find(guid); - if (p_itr == m_players.end()) - return 0; + uint8 GetPlayerFlags(ObjectGuid guid) const + { + PlayerList::const_iterator p_itr = m_players.find(guid); + if (p_itr == m_players.end()) + return 0; - return p_itr->second.flags; - } + return p_itr->second.flags; + } - void SetModerator(ObjectGuid guid, bool set) - { - if (m_players[guid].IsModerator() != set) - { - uint8 oldFlag = GetPlayerFlags(guid); - m_players[guid].SetModerator(set); + void SetModerator(ObjectGuid guid, bool set) + { + if (m_players[guid].IsModerator() != set) + { + uint8 oldFlag = GetPlayerFlags(guid); + m_players[guid].SetModerator(set); - WorldPacket data; - MakeModeChange(&data, guid, oldFlag); - SendToAll(&data); - } - } + WorldPacket data; + MakeModeChange(&data, guid, oldFlag); + SendToAll(&data); + } + } - void SetMute(ObjectGuid guid, bool set) - { - if (m_players[guid].IsMuted() != set) - { - uint8 oldFlag = GetPlayerFlags(guid); - m_players[guid].SetMuted(set); + void SetMute(ObjectGuid guid, bool set) + { + if (m_players[guid].IsMuted() != set) + { + uint8 oldFlag = GetPlayerFlags(guid); + m_players[guid].SetMuted(set); - WorldPacket data; - MakeModeChange(&data, guid, oldFlag); - SendToAll(&data); - } - } + WorldPacket data; + MakeModeChange(&data, guid, oldFlag); + SendToAll(&data); + } + } private: - bool m_announce; - bool m_moderate; - std::string m_name; - std::string m_password; - uint8 m_flags; - uint32 m_channelId; - ObjectGuid m_ownerGuid; + bool m_announce; + bool m_moderate; + std::string m_name; + std::string m_password; + uint8 m_flags; + uint32 m_channelId; + ObjectGuid m_ownerGuid; - typedef std::map PlayerList; - PlayerList m_players; - GuidSet m_banned; + typedef std::map PlayerList; + PlayerList m_players; + GuidSet m_banned; }; #endif diff --git a/src/game/WorldHandlers/LFGMgr.cpp b/src/game/WorldHandlers/LFGMgr.cpp index f456e7bb9..e7552b03b 100644 --- a/src/game/WorldHandlers/LFGMgr.cpp +++ b/src/game/WorldHandlers/LFGMgr.cpp @@ -238,14 +238,14 @@ void LFGMgr::JoinLFG(uint32 roles, std::set dungeons, std::string commen if (dungeon) { - uint32 group = dungeon->group_id; + uint32 group = dungeon->group_id; for (uint32 id = 0; id < sLfgDungeonsStore.GetNumRows(); ++id) { LfgDungeonsEntry const* dungeonList = sLfgDungeonsStore.LookupEntry(id); if (dungeonList) { - if (dungeonList->group_id == group) + if (dungeonList->group_id == group) dungeons.insert(dungeonList->ID); // adding to set } } diff --git a/src/game/WorldHandlers/World.cpp b/src/game/WorldHandlers/World.cpp index def892fda..c70f3dc3f 100644 --- a/src/game/WorldHandlers/World.cpp +++ b/src/game/WorldHandlers/World.cpp @@ -445,574 +445,574 @@ bool World::RemoveQueuedSession(WorldSession* sess) /// Initialize config values void World::LoadConfigSettings(bool reload) { - if (reload) - { - if (!sConfig.Reload()) - { - sLog.outError("World settings reload fail: can't read settings from %s.", sConfig.GetFilename().c_str()); - return; - } - } - - ///- Read the version of the configuration file and warn the user in case of emptiness or mismatch - uint32 confVersion = sConfig.GetIntDefault("ConfVersion", 0); - if (!confVersion) - { - sLog.outError("*****************************************************************************"); - sLog.outError(" WARNING: mangosd.conf does not include a ConfVersion variable."); - sLog.outError(" Your configuration file may be out of date!"); - sLog.outError("*****************************************************************************"); - Log::WaitBeforeContinueIfNeed(); - } - else - { - if (confVersion < MANGOSD_CONFIG_VERSION) - { - sLog.outError("*****************************************************************************"); - sLog.outError(" WARNING: Your mangosd.conf version indicates your conf file is out of date!"); - sLog.outError(" Please check for updates, as your current default values may cause"); - sLog.outError(" unexpected behavior."); - sLog.outError("*****************************************************************************"); - Log::WaitBeforeContinueIfNeed(); - } - } - - ///- Read the player limit and the Message of the day from the config file - SetPlayerLimit(sConfig.GetIntDefault("PlayerLimit", DEFAULT_PLAYER_LIMIT), true); - SetMotd(sConfig.GetStringDefault("Motd", "Welcome to the Massive Network Game Object Server.")); - - ///- Read all rates from the config file - setConfigPos(CONFIG_FLOAT_RATE_HEALTH, "Rate.Health", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_POWER_MANA, "Rate.Mana", 1.0f); - setConfig(CONFIG_FLOAT_RATE_POWER_RAGE_INCOME, "Rate.Rage.Income", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_POWER_RAGE_LOSS, "Rate.Rage.Loss", 1.0f); - setConfig(CONFIG_FLOAT_RATE_POWER_RUNICPOWER_INCOME, "Rate.RunicPower.Income", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_POWER_RUNICPOWER_LOSS, "Rate.RunicPower.Loss", 1.0f); - setConfig(CONFIG_FLOAT_RATE_POWER_FOCUS, "Rate.Focus", 1.0f); - setConfig(CONFIG_FLOAT_RATE_POWER_ENERGY, "Rate.Energy", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_SKILL_DISCOVERY, "Rate.Skill.Discovery", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_POOR, "Rate.Drop.Item.Poor", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_NORMAL, "Rate.Drop.Item.Normal", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_UNCOMMON, "Rate.Drop.Item.Uncommon", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_RARE, "Rate.Drop.Item.Rare", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_EPIC, "Rate.Drop.Item.Epic", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_LEGENDARY, "Rate.Drop.Item.Legendary", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_ARTIFACT, "Rate.Drop.Item.Artifact", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_REFERENCED, "Rate.Drop.Item.Referenced", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_QUEST, "Rate.Drop.Item.Quest", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_MONEY, "Rate.Drop.Money", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_CURRENCY, "Rate.Drop.Currency", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DROP_CURRENCY_AMOUNT, "Rate.Drop.Currency.Amount", 1.0f); - setConfig(CONFIG_FLOAT_RATE_PET_XP_KILL, "Rate.Pet.XP.Kill", 1.0f); - setConfig(CONFIG_FLOAT_RATE_XP_KILL, "Rate.XP.Kill", 1.0f); - setConfig(CONFIG_FLOAT_RATE_XP_QUEST, "Rate.XP.Quest", 1.0f); - setConfig(CONFIG_FLOAT_RATE_XP_EXPLORE, "Rate.XP.Explore", 1.0f); - setConfig(CONFIG_FLOAT_RATE_REPUTATION_GAIN, "Rate.Reputation.Gain", 1.0f); - setConfig(CONFIG_FLOAT_RATE_REPUTATION_LOWLEVEL_KILL, "Rate.Reputation.LowLevel.Kill", 1.0f); - setConfig(CONFIG_FLOAT_RATE_REPUTATION_LOWLEVEL_QUEST, "Rate.Reputation.LowLevel.Quest", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_NORMAL_DAMAGE, "Rate.Creature.Normal.Damage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_ELITE_DAMAGE, "Rate.Creature.Elite.Elite.Damage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RAREELITE_DAMAGE, "Rate.Creature.Elite.RAREELITE.Damage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE, "Rate.Creature.Elite.WORLDBOSS.Damage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RARE_DAMAGE, "Rate.Creature.Elite.RARE.Damage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_NORMAL_HP, "Rate.Creature.Normal.HP", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_ELITE_HP, "Rate.Creature.Elite.Elite.HP", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RAREELITE_HP, "Rate.Creature.Elite.RAREELITE.HP", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_WORLDBOSS_HP, "Rate.Creature.Elite.WORLDBOSS.HP", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RARE_HP, "Rate.Creature.Elite.RARE.HP", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_NORMAL_SPELLDAMAGE, "Rate.Creature.Normal.SpellDamage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE, "Rate.Creature.Elite.Elite.SpellDamage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE, "Rate.Creature.Elite.RAREELITE.SpellDamage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE, "Rate.Creature.Elite.WORLDBOSS.SpellDamage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RARE_SPELLDAMAGE, "Rate.Creature.Elite.RARE.SpellDamage", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CREATURE_AGGRO, "Rate.Creature.Aggro", 1.0f); - setConfig(CONFIG_FLOAT_RATE_REST_INGAME, "Rate.Rest.InGame", 1.0f); - setConfig(CONFIG_FLOAT_RATE_REST_OFFLINE_IN_TAVERN_OR_CITY, "Rate.Rest.Offline.InTavernOrCity", 1.0f); - setConfig(CONFIG_FLOAT_RATE_REST_OFFLINE_IN_WILDERNESS, "Rate.Rest.Offline.InWilderness", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_DAMAGE_FALL, "Rate.Damage.Fall", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_AUCTION_TIME, "Rate.Auction.Time", 1.0f); - setConfig(CONFIG_FLOAT_RATE_AUCTION_DEPOSIT, "Rate.Auction.Deposit", 1.0f); - setConfig(CONFIG_FLOAT_RATE_AUCTION_CUT, "Rate.Auction.Cut", 1.0f); - setConfig(CONFIG_UINT32_AUCTION_DEPOSIT_MIN, "Auction.Deposit.Min", SILVER); - setConfig(CONFIG_FLOAT_RATE_HONOR, "Rate.Honor", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_MINING_AMOUNT, "Rate.Mining.Amount", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_MINING_NEXT, "Rate.Mining.Next", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_INSTANCE_RESET_TIME, "Rate.InstanceResetTime", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_TALENT, "Rate.Talent", 1.0f); - setConfigPos(CONFIG_FLOAT_RATE_CORPSE_DECAY_LOOTED, "Rate.Corpse.Decay.Looted", 0.0f); - - setConfigMinMax(CONFIG_FLOAT_RATE_TARGET_POS_RECALCULATION_RANGE, "TargetPosRecalculateRange", 1.5f, CONTACT_DISTANCE, ATTACK_DISTANCE); - - setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_DAMAGE, "DurabilityLossChance.Damage", 0.5f); - setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_ABSORB, "DurabilityLossChance.Absorb", 0.5f); - setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_PARRY, "DurabilityLossChance.Parry", 0.05f); - setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_BLOCK, "DurabilityLossChance.Block", 0.05f); - - setConfigPos(CONFIG_FLOAT_LISTEN_RANGE_SAY, "ListenRange.Say", 40.0f); - setConfigPos(CONFIG_FLOAT_LISTEN_RANGE_YELL, "ListenRange.Yell", 300.0f); - setConfigPos(CONFIG_FLOAT_LISTEN_RANGE_TEXTEMOTE, "ListenRange.TextEmote", 40.0f); - - setConfigPos(CONFIG_FLOAT_GROUP_XP_DISTANCE, "MaxGroupXPDistance", 74.0f); - setConfigPos(CONFIG_FLOAT_SIGHT_GUARDER, "GuarderSight", 50.0f); - setConfigPos(CONFIG_FLOAT_SIGHT_MONSTER, "MonsterSight", 50.0f); - - setConfigPos(CONFIG_FLOAT_CREATURE_FAMILY_ASSISTANCE_RADIUS, "CreatureFamilyAssistanceRadius", 10.0f); - setConfigPos(CONFIG_FLOAT_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS, "CreatureFamilyFleeAssistanceRadius", 30.0f); - - ///- Read other configuration items from the config file - setConfigMinMax(CONFIG_UINT32_COMPRESSION, "Compression", 1, 1, 9); - setConfig(CONFIG_BOOL_ADDON_CHANNEL, "AddonChannel", true); - setConfig(CONFIG_BOOL_CLEAN_CHARACTER_DB, "CleanCharacterDB", true); - setConfig(CONFIG_BOOL_GRID_UNLOAD, "GridUnload", true); - setConfig(CONFIG_UINT32_MAX_WHOLIST_RETURNS, "MaxWhoListReturns", 49); - - std::string forceLoadGridOnMaps = sConfig.GetStringDefault("LoadAllGridsOnMaps", ""); - if (!forceLoadGridOnMaps.empty()) - { - unsigned int pos = 0; - unsigned int id; - VMAP::VMapFactory::chompAndTrim(forceLoadGridOnMaps); - while (VMAP::VMapFactory::getNextId(forceLoadGridOnMaps, pos, id)) - m_configForceLoadMapIds.insert(id); - } - setConfig(CONFIG_UINT32_AUTOBROADCAST_INTERVAL, "AutoBroadcast", 600); - - if (getConfig(CONFIG_UINT32_AUTOBROADCAST_INTERVAL) > 0) - { - m_broadcastEnable = true; - } - else - { - m_broadcastEnable = false; - } - - if (reload && m_broadcastEnable) - { - m_broadcastTimer.SetInterval(getConfig(CONFIG_UINT32_AUTOBROADCAST_INTERVAL) * IN_MILLISECONDS); - } - - setConfig(CONFIG_UINT32_INTERVAL_SAVE, "PlayerSave.Interval", 15 * MINUTE * IN_MILLISECONDS); - setConfigMinMax(CONFIG_UINT32_MIN_LEVEL_STAT_SAVE, "PlayerSave.Stats.MinLevel", 0, 0, MAX_LEVEL); - setConfig(CONFIG_BOOL_STATS_SAVE_ONLY_ON_LOGOUT, "PlayerSave.Stats.SaveOnlyOnLogout", true); - - setConfigMin(CONFIG_UINT32_INTERVAL_GRIDCLEAN, "GridCleanUpDelay", 5 * MINUTE * IN_MILLISECONDS, MIN_GRID_DELAY); - if (reload) - { - sMapMgr.SetGridCleanUpDelay(getConfig(CONFIG_UINT32_INTERVAL_GRIDCLEAN)); - } - - setConfigMin(CONFIG_UINT32_INTERVAL_MAPUPDATE, "MapUpdateInterval", 100, MIN_MAP_UPDATE_DELAY); - if (reload) - { - sMapMgr.SetMapUpdateInterval(getConfig(CONFIG_UINT32_INTERVAL_MAPUPDATE)); - } - - setConfig(CONFIG_UINT32_INTERVAL_CHANGEWEATHER, "ChangeWeatherInterval", 10 * MINUTE * IN_MILLISECONDS); - - if (configNoReload(reload, CONFIG_UINT32_PORT_WORLD, "WorldServerPort", DEFAULT_WORLDSERVER_PORT)) - { - setConfig(CONFIG_UINT32_PORT_WORLD, "WorldServerPort", DEFAULT_WORLDSERVER_PORT); - } - - if (configNoReload(reload, CONFIG_UINT32_GAME_TYPE, "GameType", 0)) - { - setConfig(CONFIG_UINT32_GAME_TYPE, "GameType", 0); - } - - if (configNoReload(reload, CONFIG_UINT32_REALM_ZONE, "RealmZone", REALM_ZONE_DEVELOPMENT)) - { - setConfig(CONFIG_UINT32_REALM_ZONE, "RealmZone", REALM_ZONE_DEVELOPMENT); - } - - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_ACCOUNTS, "AllowTwoSide.Accounts", true); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHAT, "AllowTwoSide.Interaction.Chat", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL, "AllowTwoSide.Interaction.Channel", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP, "AllowTwoSide.Interaction.Group", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GUILD, "AllowTwoSide.Interaction.Guild", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_AUCTION, "AllowTwoSide.Interaction.Auction", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_MAIL, "AllowTwoSide.Interaction.Mail", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CALENDAR, "AllowTwoSide.Interaction.Calendar", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_WHO_LIST, "AllowTwoSide.WhoList", false); - setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_ADD_FRIEND, "AllowTwoSide.AddFriend", false); - - setConfig(CONFIG_UINT32_STRICT_PLAYER_NAMES, "StrictPlayerNames", 0); - setConfig(CONFIG_UINT32_STRICT_CHARTER_NAMES, "StrictCharterNames", 0); - setConfig(CONFIG_UINT32_STRICT_PET_NAMES, "StrictPetNames", 0); - - setConfigMinMax(CONFIG_UINT32_MIN_PLAYER_NAME, "MinPlayerName", 2, 1, MAX_PLAYER_NAME); - setConfigMinMax(CONFIG_UINT32_MIN_CHARTER_NAME, "MinCharterName", 2, 1, MAX_CHARTER_NAME); - setConfigMinMax(CONFIG_UINT32_MIN_PET_NAME, "MinPetName", 2, 1, MAX_PET_NAME); - - setConfig(CONFIG_UINT32_CHARACTERS_CREATING_DISABLED, "CharactersCreatingDisabled", 0); - - setConfigMinMax(CONFIG_UINT32_CHARACTERS_PER_REALM, "CharactersPerRealm", 10, 1, 10); - - // must be after CONFIG_UINT32_CHARACTERS_PER_REALM - setConfigMin(CONFIG_UINT32_CHARACTERS_PER_ACCOUNT, "CharactersPerAccount", 50, getConfig(CONFIG_UINT32_CHARACTERS_PER_REALM)); - - setConfigMinMax(CONFIG_UINT32_HEROIC_CHARACTERS_PER_REALM, "HeroicCharactersPerRealm", 1, 1, 10); - - setConfig(CONFIG_UINT32_MIN_LEVEL_FOR_HEROIC_CHARACTER_CREATING, "MinLevelForHeroicCharacterCreating", 55); - - setConfigMinMax(CONFIG_UINT32_SKIP_CINEMATICS, "SkipCinematics", 0, 0, 2); - - if (configNoReload(reload, CONFIG_UINT32_MAX_PLAYER_LEVEL, "MaxPlayerLevel", DEFAULT_MAX_LEVEL)) - { - setConfigMinMax(CONFIG_UINT32_MAX_PLAYER_LEVEL, "MaxPlayerLevel", DEFAULT_MAX_LEVEL, 1, DEFAULT_MAX_LEVEL); - } - - setConfigMinMax(CONFIG_UINT32_START_PLAYER_LEVEL, "StartPlayerLevel", 1, 1, (uint32)getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL)); - setConfigMinMax(CONFIG_UINT32_START_HEROIC_PLAYER_LEVEL, "StartHeroicPlayerLevel", 55, 1, getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL)); - - setConfigMinMax(CONFIG_UINT64_START_PLAYER_MONEY, "StartPlayerMoney", 0, 0, MAX_MONEY_AMOUNT); + if (reload) + { + if (!sConfig.Reload()) + { + sLog.outError("World settings reload fail: can't read settings from %s.", sConfig.GetFilename().c_str()); + return; + } + } + + ///- Read the version of the configuration file and warn the user in case of emptiness or mismatch + uint32 confVersion = sConfig.GetIntDefault("ConfVersion", 0); + if (!confVersion) + { + sLog.outError("*****************************************************************************"); + sLog.outError(" WARNING: mangosd.conf does not include a ConfVersion variable."); + sLog.outError(" Your configuration file may be out of date!"); + sLog.outError("*****************************************************************************"); + Log::WaitBeforeContinueIfNeed(); + } + else + { + if (confVersion < MANGOSD_CONFIG_VERSION) + { + sLog.outError("*****************************************************************************"); + sLog.outError(" WARNING: Your mangosd.conf version indicates your conf file is out of date!"); + sLog.outError(" Please check for updates, as your current default values may cause"); + sLog.outError(" unexpected behavior."); + sLog.outError("*****************************************************************************"); + Log::WaitBeforeContinueIfNeed(); + } + } + + ///- Read the player limit and the Message of the day from the config file + SetPlayerLimit(sConfig.GetIntDefault("PlayerLimit", DEFAULT_PLAYER_LIMIT), true); + SetMotd(sConfig.GetStringDefault("Motd", "Welcome to the Massive Network Game Object Server.")); + + ///- Read all rates from the config file + setConfigPos(CONFIG_FLOAT_RATE_HEALTH, "Rate.Health", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_POWER_MANA, "Rate.Mana", 1.0f); + setConfig(CONFIG_FLOAT_RATE_POWER_RAGE_INCOME, "Rate.Rage.Income", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_POWER_RAGE_LOSS, "Rate.Rage.Loss", 1.0f); + setConfig(CONFIG_FLOAT_RATE_POWER_RUNICPOWER_INCOME, "Rate.RunicPower.Income", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_POWER_RUNICPOWER_LOSS, "Rate.RunicPower.Loss", 1.0f); + setConfig(CONFIG_FLOAT_RATE_POWER_FOCUS, "Rate.Focus", 1.0f); + setConfig(CONFIG_FLOAT_RATE_POWER_ENERGY, "Rate.Energy", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_SKILL_DISCOVERY, "Rate.Skill.Discovery", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_POOR, "Rate.Drop.Item.Poor", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_NORMAL, "Rate.Drop.Item.Normal", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_UNCOMMON, "Rate.Drop.Item.Uncommon", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_RARE, "Rate.Drop.Item.Rare", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_EPIC, "Rate.Drop.Item.Epic", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_LEGENDARY, "Rate.Drop.Item.Legendary", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_ARTIFACT, "Rate.Drop.Item.Artifact", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_REFERENCED, "Rate.Drop.Item.Referenced", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_ITEM_QUEST, "Rate.Drop.Item.Quest", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_MONEY, "Rate.Drop.Money", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_CURRENCY, "Rate.Drop.Currency", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DROP_CURRENCY_AMOUNT, "Rate.Drop.Currency.Amount", 1.0f); + setConfig(CONFIG_FLOAT_RATE_PET_XP_KILL, "Rate.Pet.XP.Kill", 1.0f); + setConfig(CONFIG_FLOAT_RATE_XP_KILL, "Rate.XP.Kill", 1.0f); + setConfig(CONFIG_FLOAT_RATE_XP_QUEST, "Rate.XP.Quest", 1.0f); + setConfig(CONFIG_FLOAT_RATE_XP_EXPLORE, "Rate.XP.Explore", 1.0f); + setConfig(CONFIG_FLOAT_RATE_REPUTATION_GAIN, "Rate.Reputation.Gain", 1.0f); + setConfig(CONFIG_FLOAT_RATE_REPUTATION_LOWLEVEL_KILL, "Rate.Reputation.LowLevel.Kill", 1.0f); + setConfig(CONFIG_FLOAT_RATE_REPUTATION_LOWLEVEL_QUEST, "Rate.Reputation.LowLevel.Quest", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_NORMAL_DAMAGE, "Rate.Creature.Normal.Damage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_ELITE_DAMAGE, "Rate.Creature.Elite.Elite.Damage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RAREELITE_DAMAGE, "Rate.Creature.Elite.RAREELITE.Damage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE, "Rate.Creature.Elite.WORLDBOSS.Damage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RARE_DAMAGE, "Rate.Creature.Elite.RARE.Damage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_NORMAL_HP, "Rate.Creature.Normal.HP", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_ELITE_HP, "Rate.Creature.Elite.Elite.HP", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RAREELITE_HP, "Rate.Creature.Elite.RAREELITE.HP", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_WORLDBOSS_HP, "Rate.Creature.Elite.WORLDBOSS.HP", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RARE_HP, "Rate.Creature.Elite.RARE.HP", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_NORMAL_SPELLDAMAGE, "Rate.Creature.Normal.SpellDamage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE, "Rate.Creature.Elite.Elite.SpellDamage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE, "Rate.Creature.Elite.RAREELITE.SpellDamage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE, "Rate.Creature.Elite.WORLDBOSS.SpellDamage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_ELITE_RARE_SPELLDAMAGE, "Rate.Creature.Elite.RARE.SpellDamage", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CREATURE_AGGRO, "Rate.Creature.Aggro", 1.0f); + setConfig(CONFIG_FLOAT_RATE_REST_INGAME, "Rate.Rest.InGame", 1.0f); + setConfig(CONFIG_FLOAT_RATE_REST_OFFLINE_IN_TAVERN_OR_CITY, "Rate.Rest.Offline.InTavernOrCity", 1.0f); + setConfig(CONFIG_FLOAT_RATE_REST_OFFLINE_IN_WILDERNESS, "Rate.Rest.Offline.InWilderness", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_DAMAGE_FALL, "Rate.Damage.Fall", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_AUCTION_TIME, "Rate.Auction.Time", 1.0f); + setConfig(CONFIG_FLOAT_RATE_AUCTION_DEPOSIT, "Rate.Auction.Deposit", 1.0f); + setConfig(CONFIG_FLOAT_RATE_AUCTION_CUT, "Rate.Auction.Cut", 1.0f); + setConfig(CONFIG_UINT32_AUCTION_DEPOSIT_MIN, "Auction.Deposit.Min", SILVER); + setConfig(CONFIG_FLOAT_RATE_HONOR, "Rate.Honor", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_MINING_AMOUNT, "Rate.Mining.Amount", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_MINING_NEXT, "Rate.Mining.Next", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_INSTANCE_RESET_TIME, "Rate.InstanceResetTime", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_TALENT, "Rate.Talent", 1.0f); + setConfigPos(CONFIG_FLOAT_RATE_CORPSE_DECAY_LOOTED, "Rate.Corpse.Decay.Looted", 0.0f); + + setConfigMinMax(CONFIG_FLOAT_RATE_TARGET_POS_RECALCULATION_RANGE, "TargetPosRecalculateRange", 1.5f, CONTACT_DISTANCE, ATTACK_DISTANCE); + + setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_DAMAGE, "DurabilityLossChance.Damage", 0.5f); + setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_ABSORB, "DurabilityLossChance.Absorb", 0.5f); + setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_PARRY, "DurabilityLossChance.Parry", 0.05f); + setConfigPos(CONFIG_FLOAT_RATE_DURABILITY_LOSS_BLOCK, "DurabilityLossChance.Block", 0.05f); + + setConfigPos(CONFIG_FLOAT_LISTEN_RANGE_SAY, "ListenRange.Say", 40.0f); + setConfigPos(CONFIG_FLOAT_LISTEN_RANGE_YELL, "ListenRange.Yell", 300.0f); + setConfigPos(CONFIG_FLOAT_LISTEN_RANGE_TEXTEMOTE, "ListenRange.TextEmote", 40.0f); + + setConfigPos(CONFIG_FLOAT_GROUP_XP_DISTANCE, "MaxGroupXPDistance", 74.0f); + setConfigPos(CONFIG_FLOAT_SIGHT_GUARDER, "GuarderSight", 50.0f); + setConfigPos(CONFIG_FLOAT_SIGHT_MONSTER, "MonsterSight", 50.0f); + + setConfigPos(CONFIG_FLOAT_CREATURE_FAMILY_ASSISTANCE_RADIUS, "CreatureFamilyAssistanceRadius", 10.0f); + setConfigPos(CONFIG_FLOAT_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS, "CreatureFamilyFleeAssistanceRadius", 30.0f); + + ///- Read other configuration items from the config file + setConfigMinMax(CONFIG_UINT32_COMPRESSION, "Compression", 1, 1, 9); + setConfig(CONFIG_BOOL_ADDON_CHANNEL, "AddonChannel", true); + setConfig(CONFIG_BOOL_CLEAN_CHARACTER_DB, "CleanCharacterDB", true); + setConfig(CONFIG_BOOL_GRID_UNLOAD, "GridUnload", true); + setConfig(CONFIG_UINT32_MAX_WHOLIST_RETURNS, "MaxWhoListReturns", 49); + + std::string forceLoadGridOnMaps = sConfig.GetStringDefault("LoadAllGridsOnMaps", ""); + if (!forceLoadGridOnMaps.empty()) + { + unsigned int pos = 0; + unsigned int id; + VMAP::VMapFactory::chompAndTrim(forceLoadGridOnMaps); + while (VMAP::VMapFactory::getNextId(forceLoadGridOnMaps, pos, id)) + m_configForceLoadMapIds.insert(id); + } + setConfig(CONFIG_UINT32_AUTOBROADCAST_INTERVAL, "AutoBroadcast", 600); + + if (getConfig(CONFIG_UINT32_AUTOBROADCAST_INTERVAL) > 0) + { + m_broadcastEnable = true; + } + else + { + m_broadcastEnable = false; + } + + if (reload && m_broadcastEnable) + { + m_broadcastTimer.SetInterval(getConfig(CONFIG_UINT32_AUTOBROADCAST_INTERVAL) * IN_MILLISECONDS); + } + + setConfig(CONFIG_UINT32_INTERVAL_SAVE, "PlayerSave.Interval", 15 * MINUTE * IN_MILLISECONDS); + setConfigMinMax(CONFIG_UINT32_MIN_LEVEL_STAT_SAVE, "PlayerSave.Stats.MinLevel", 0, 0, MAX_LEVEL); + setConfig(CONFIG_BOOL_STATS_SAVE_ONLY_ON_LOGOUT, "PlayerSave.Stats.SaveOnlyOnLogout", true); + + setConfigMin(CONFIG_UINT32_INTERVAL_GRIDCLEAN, "GridCleanUpDelay", 5 * MINUTE * IN_MILLISECONDS, MIN_GRID_DELAY); + if (reload) + { + sMapMgr.SetGridCleanUpDelay(getConfig(CONFIG_UINT32_INTERVAL_GRIDCLEAN)); + } + + setConfigMin(CONFIG_UINT32_INTERVAL_MAPUPDATE, "MapUpdateInterval", 100, MIN_MAP_UPDATE_DELAY); + if (reload) + { + sMapMgr.SetMapUpdateInterval(getConfig(CONFIG_UINT32_INTERVAL_MAPUPDATE)); + } + + setConfig(CONFIG_UINT32_INTERVAL_CHANGEWEATHER, "ChangeWeatherInterval", 10 * MINUTE * IN_MILLISECONDS); + + if (configNoReload(reload, CONFIG_UINT32_PORT_WORLD, "WorldServerPort", DEFAULT_WORLDSERVER_PORT)) + { + setConfig(CONFIG_UINT32_PORT_WORLD, "WorldServerPort", DEFAULT_WORLDSERVER_PORT); + } + + if (configNoReload(reload, CONFIG_UINT32_GAME_TYPE, "GameType", 0)) + { + setConfig(CONFIG_UINT32_GAME_TYPE, "GameType", 0); + } + + if (configNoReload(reload, CONFIG_UINT32_REALM_ZONE, "RealmZone", REALM_ZONE_DEVELOPMENT)) + { + setConfig(CONFIG_UINT32_REALM_ZONE, "RealmZone", REALM_ZONE_DEVELOPMENT); + } + + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_ACCOUNTS, "AllowTwoSide.Accounts", true); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHAT, "AllowTwoSide.Interaction.Chat", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CHANNEL, "AllowTwoSide.Interaction.Channel", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP, "AllowTwoSide.Interaction.Group", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GUILD, "AllowTwoSide.Interaction.Guild", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_AUCTION, "AllowTwoSide.Interaction.Auction", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_MAIL, "AllowTwoSide.Interaction.Mail", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_CALENDAR, "AllowTwoSide.Interaction.Calendar", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_WHO_LIST, "AllowTwoSide.WhoList", false); + setConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_ADD_FRIEND, "AllowTwoSide.AddFriend", false); + + setConfig(CONFIG_UINT32_STRICT_PLAYER_NAMES, "StrictPlayerNames", 0); + setConfig(CONFIG_UINT32_STRICT_CHARTER_NAMES, "StrictCharterNames", 0); + setConfig(CONFIG_UINT32_STRICT_PET_NAMES, "StrictPetNames", 0); + + setConfigMinMax(CONFIG_UINT32_MIN_PLAYER_NAME, "MinPlayerName", 2, 1, MAX_PLAYER_NAME); + setConfigMinMax(CONFIG_UINT32_MIN_CHARTER_NAME, "MinCharterName", 2, 1, MAX_CHARTER_NAME); + setConfigMinMax(CONFIG_UINT32_MIN_PET_NAME, "MinPetName", 2, 1, MAX_PET_NAME); + + setConfig(CONFIG_UINT32_CHARACTERS_CREATING_DISABLED, "CharactersCreatingDisabled", 0); + + setConfigMinMax(CONFIG_UINT32_CHARACTERS_PER_REALM, "CharactersPerRealm", 10, 1, 10); + + // must be after CONFIG_UINT32_CHARACTERS_PER_REALM + setConfigMin(CONFIG_UINT32_CHARACTERS_PER_ACCOUNT, "CharactersPerAccount", 50, getConfig(CONFIG_UINT32_CHARACTERS_PER_REALM)); + + setConfigMinMax(CONFIG_UINT32_HEROIC_CHARACTERS_PER_REALM, "HeroicCharactersPerRealm", 1, 1, 10); + + setConfig(CONFIG_UINT32_MIN_LEVEL_FOR_HEROIC_CHARACTER_CREATING, "MinLevelForHeroicCharacterCreating", 55); + + setConfigMinMax(CONFIG_UINT32_SKIP_CINEMATICS, "SkipCinematics", 0, 0, 2); + + if (configNoReload(reload, CONFIG_UINT32_MAX_PLAYER_LEVEL, "MaxPlayerLevel", DEFAULT_MAX_LEVEL)) + { + setConfigMinMax(CONFIG_UINT32_MAX_PLAYER_LEVEL, "MaxPlayerLevel", DEFAULT_MAX_LEVEL, 1, DEFAULT_MAX_LEVEL); + } + + setConfigMinMax(CONFIG_UINT32_START_PLAYER_LEVEL, "StartPlayerLevel", 1, 1, (uint32)getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL)); + setConfigMinMax(CONFIG_UINT32_START_HEROIC_PLAYER_LEVEL, "StartHeroicPlayerLevel", 55, 1, getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL)); + + setConfigMinMax(CONFIG_UINT64_START_PLAYER_MONEY, "StartPlayerMoney", 0, 0, MAX_MONEY_AMOUNT); - setConfigMinMax(CONFIG_UINT32_CURRENCY_RESET_TIME_HOUR, "Currency.ResetHour", 6, 0, 23); - setConfigMinMax(CONFIG_UINT32_CURRENCY_RESET_TIME_WEEK_DAY, "Currency.ResetWeekDay", 3, 0, 6); - setConfigMin(CONFIG_UINT32_CURRENCY_RESET_INTERVAL, "Currency.ResetInterval", 7, 1); - setConfig(CONFIG_UINT32_CURRENCY_START_CONQUEST_POINTS, "Currency.StartConquestPoints", 0); - setConfig(CONFIG_UINT32_CURRENCY_START_HONOR_POINTS, "Currency.StartHonorPoints", 0); - setConfig(CONFIG_UINT32_CURRENCY_CONQUEST_POINTS_DEFAULT_WEEK_CAP, "Currency.ConquestPointsDefaultWeekCap", 1350 * 100); // with precision - setConfig(CONFIG_UINT32_CURRENCY_ARENA_CONQUEST_POINTS_REWARD, "Currency.ConquestPointsArenaReward", 120 * 100); // with precision + setConfigMinMax(CONFIG_UINT32_CURRENCY_RESET_TIME_HOUR, "Currency.ResetHour", 6, 0, 23); + setConfigMinMax(CONFIG_UINT32_CURRENCY_RESET_TIME_WEEK_DAY, "Currency.ResetWeekDay", 3, 0, 6); + setConfigMin(CONFIG_UINT32_CURRENCY_RESET_INTERVAL, "Currency.ResetInterval", 7, 1); + setConfig(CONFIG_UINT32_CURRENCY_START_CONQUEST_POINTS, "Currency.StartConquestPoints", 0); + setConfig(CONFIG_UINT32_CURRENCY_START_HONOR_POINTS, "Currency.StartHonorPoints", 0); + setConfig(CONFIG_UINT32_CURRENCY_CONQUEST_POINTS_DEFAULT_WEEK_CAP, "Currency.ConquestPointsDefaultWeekCap", 1350 * 100); // with precision + setConfig(CONFIG_UINT32_CURRENCY_ARENA_CONQUEST_POINTS_REWARD, "Currency.ConquestPointsArenaReward", 120 * 100); // with precision - setConfig(CONFIG_BOOL_ALL_TAXI_PATHS, "AllFlightPaths", false); + setConfig(CONFIG_BOOL_ALL_TAXI_PATHS, "AllFlightPaths", false); - setConfig(CONFIG_BOOL_INSTANCE_IGNORE_LEVEL, "Instance.IgnoreLevel", false); - setConfig(CONFIG_BOOL_INSTANCE_IGNORE_RAID, "Instance.IgnoreRaid", false); + setConfig(CONFIG_BOOL_INSTANCE_IGNORE_LEVEL, "Instance.IgnoreLevel", false); + setConfig(CONFIG_BOOL_INSTANCE_IGNORE_RAID, "Instance.IgnoreRaid", false); - setConfig(CONFIG_BOOL_CAST_UNSTUCK, "CastUnstuck", true); - setConfig(CONFIG_UINT32_MAX_SPELL_CASTS_IN_CHAIN, "MaxSpellCastsInChain", 20); - setConfig(CONFIG_UINT32_BIRTHDAY_TIME, "BirthdayTime", 1125180000); - setConfig(CONFIG_UINT32_RABBIT_DAY, "RabbitDay", 0); + setConfig(CONFIG_BOOL_CAST_UNSTUCK, "CastUnstuck", true); + setConfig(CONFIG_UINT32_MAX_SPELL_CASTS_IN_CHAIN, "MaxSpellCastsInChain", 20); + setConfig(CONFIG_UINT32_BIRTHDAY_TIME, "BirthdayTime", 1125180000); + setConfig(CONFIG_UINT32_RABBIT_DAY, "RabbitDay", 0); - setConfig(CONFIG_UINT32_INSTANCE_RESET_TIME_HOUR, "Instance.ResetTimeHour", 4); - setConfig(CONFIG_UINT32_INSTANCE_UNLOAD_DELAY, "Instance.UnloadDelay", 30 * MINUTE * IN_MILLISECONDS); + setConfig(CONFIG_UINT32_INSTANCE_RESET_TIME_HOUR, "Instance.ResetTimeHour", 4); + setConfig(CONFIG_UINT32_INSTANCE_UNLOAD_DELAY, "Instance.UnloadDelay", 30 * MINUTE * IN_MILLISECONDS); - setConfigMinMax(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL, "MaxPrimaryTradeSkill", 2, 0, 10); + setConfigMinMax(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL, "MaxPrimaryTradeSkill", 2, 0, 10); - setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT, "TradeSkill.GMIgnore.MaxPrimarySkillsCount", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); - setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_LEVEL, "TradeSkill.GMIgnore.Level", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); - setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_SKILL, "TradeSkill.GMIgnore.Skill", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); + setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT, "TradeSkill.GMIgnore.MaxPrimarySkillsCount", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); + setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_LEVEL, "TradeSkill.GMIgnore.Level", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); + setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_SKILL, "TradeSkill.GMIgnore.Skill", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); - setConfigMinMax(CONFIG_UINT32_MIN_PETITION_SIGNS, "MinPetitionSigns", 4, 0, 4); + setConfigMinMax(CONFIG_UINT32_MIN_PETITION_SIGNS, "MinPetitionSigns", 4, 0, 4); - setConfig(CONFIG_UINT32_GM_LOGIN_STATE, "GM.LoginState", 2); - setConfig(CONFIG_UINT32_GM_VISIBLE_STATE, "GM.Visible", 2); - setConfig(CONFIG_UINT32_GM_ACCEPT_TICKETS, "GM.AcceptTickets", 2); - setConfig(CONFIG_UINT32_GM_CHAT, "GM.Chat", 2); - setConfig(CONFIG_UINT32_GM_WISPERING_TO, "GM.WhisperingTo", 2); + setConfig(CONFIG_UINT32_GM_LOGIN_STATE, "GM.LoginState", 2); + setConfig(CONFIG_UINT32_GM_VISIBLE_STATE, "GM.Visible", 2); + setConfig(CONFIG_UINT32_GM_ACCEPT_TICKETS, "GM.AcceptTickets", 2); + setConfig(CONFIG_UINT32_GM_CHAT, "GM.Chat", 2); + setConfig(CONFIG_UINT32_GM_WISPERING_TO, "GM.WhisperingTo", 2); - setConfig(CONFIG_UINT32_GM_LEVEL_IN_GM_LIST, "GM.InGMList.Level", SEC_ADMINISTRATOR); - setConfig(CONFIG_UINT32_GM_LEVEL_IN_WHO_LIST, "GM.InWhoList.Level", SEC_ADMINISTRATOR); - setConfig(CONFIG_BOOL_GM_LOG_TRADE, "GM.LogTrade", false); + setConfig(CONFIG_UINT32_GM_LEVEL_IN_GM_LIST, "GM.InGMList.Level", SEC_ADMINISTRATOR); + setConfig(CONFIG_UINT32_GM_LEVEL_IN_WHO_LIST, "GM.InWhoList.Level", SEC_ADMINISTRATOR); + setConfig(CONFIG_BOOL_GM_LOG_TRADE, "GM.LogTrade", false); - setConfigMinMax(CONFIG_UINT32_START_GM_LEVEL, "GM.StartLevel", 1, getConfig(CONFIG_UINT32_START_PLAYER_LEVEL), MAX_LEVEL); - setConfig(CONFIG_BOOL_GM_LOWER_SECURITY, "GM.LowerSecurity", false); - setConfig(CONFIG_BOOL_GM_ALLOW_ACHIEVEMENT_GAINS, "GM.AllowAchievementGain", true); - setConfig(CONFIG_UINT32_GM_INVISIBLE_AURA, "GM.InvisibleAura", 37800); + setConfigMinMax(CONFIG_UINT32_START_GM_LEVEL, "GM.StartLevel", 1, getConfig(CONFIG_UINT32_START_PLAYER_LEVEL), MAX_LEVEL); + setConfig(CONFIG_BOOL_GM_LOWER_SECURITY, "GM.LowerSecurity", false); + setConfig(CONFIG_BOOL_GM_ALLOW_ACHIEVEMENT_GAINS, "GM.AllowAchievementGain", true); + setConfig(CONFIG_UINT32_GM_INVISIBLE_AURA, "GM.InvisibleAura", 37800); - setConfig(CONFIG_UINT32_GROUP_VISIBILITY, "Visibility.GroupMode", 0); + setConfig(CONFIG_UINT32_GROUP_VISIBILITY, "Visibility.GroupMode", 0); - setConfig(CONFIG_UINT32_MAIL_DELIVERY_DELAY, "MailDeliveryDelay", HOUR); + setConfig(CONFIG_UINT32_MAIL_DELIVERY_DELAY, "MailDeliveryDelay", HOUR); - setConfigMin(CONFIG_UINT32_MASS_MAILER_SEND_PER_TICK, "MassMailer.SendPerTick", 10, 1); + setConfigMin(CONFIG_UINT32_MASS_MAILER_SEND_PER_TICK, "MassMailer.SendPerTick", 10, 1); - setConfig(CONFIG_UINT32_UPTIME_UPDATE, "UpdateUptimeInterval", 10); - if (reload) - { - m_timers[WUPDATE_UPTIME].SetInterval(getConfig(CONFIG_UINT32_UPTIME_UPDATE)*MINUTE * IN_MILLISECONDS); - m_timers[WUPDATE_UPTIME].Reset(); - } + setConfig(CONFIG_UINT32_UPTIME_UPDATE, "UpdateUptimeInterval", 10); + if (reload) + { + m_timers[WUPDATE_UPTIME].SetInterval(getConfig(CONFIG_UINT32_UPTIME_UPDATE)*MINUTE * IN_MILLISECONDS); + m_timers[WUPDATE_UPTIME].Reset(); + } - setConfig(CONFIG_UINT32_SKILL_CHANCE_ORANGE, "SkillChance.Orange", 100); - setConfig(CONFIG_UINT32_SKILL_CHANCE_YELLOW, "SkillChance.Yellow", 75); - setConfig(CONFIG_UINT32_SKILL_CHANCE_GREEN, "SkillChance.Green", 25); - setConfig(CONFIG_UINT32_SKILL_CHANCE_GREY, "SkillChance.Grey", 0); + setConfig(CONFIG_UINT32_SKILL_CHANCE_ORANGE, "SkillChance.Orange", 100); + setConfig(CONFIG_UINT32_SKILL_CHANCE_YELLOW, "SkillChance.Yellow", 75); + setConfig(CONFIG_UINT32_SKILL_CHANCE_GREEN, "SkillChance.Green", 25); + setConfig(CONFIG_UINT32_SKILL_CHANCE_GREY, "SkillChance.Grey", 0); - setConfig(CONFIG_UINT32_SKILL_CHANCE_MINING_STEPS, "SkillChance.MiningSteps", 75); - setConfig(CONFIG_UINT32_SKILL_CHANCE_SKINNING_STEPS, "SkillChance.SkinningSteps", 75); + setConfig(CONFIG_UINT32_SKILL_CHANCE_MINING_STEPS, "SkillChance.MiningSteps", 75); + setConfig(CONFIG_UINT32_SKILL_CHANCE_SKINNING_STEPS, "SkillChance.SkinningSteps", 75); - setConfig(CONFIG_BOOL_SKILL_PROSPECTING, "SkillChance.Prospecting", false); - setConfig(CONFIG_BOOL_SKILL_MILLING, "SkillChance.Milling", false); + setConfig(CONFIG_BOOL_SKILL_PROSPECTING, "SkillChance.Prospecting", false); + setConfig(CONFIG_BOOL_SKILL_MILLING, "SkillChance.Milling", false); - setConfig(CONFIG_UINT32_SKILL_GAIN_CRAFTING, "SkillGain.Crafting", 1); - setConfig(CONFIG_UINT32_SKILL_GAIN_GATHERING, "SkillGain.Gathering", 1); + setConfig(CONFIG_UINT32_SKILL_GAIN_CRAFTING, "SkillGain.Crafting", 1); + setConfig(CONFIG_UINT32_SKILL_GAIN_GATHERING, "SkillGain.Gathering", 1); - setConfig(CONFIG_BOOL_SKILL_FAIL_LOOT_FISHING, "SkillFail.Loot.Fishing", true); - setConfig(CONFIG_BOOL_SKILL_FAIL_GAIN_FISHING, "SkillFail.Gain.Fishing", true); - setConfig(CONFIG_BOOL_SKILL_FAIL_POSSIBLE_FISHINGPOOL, "SkillFail.Possible.FishingPool", false); + setConfig(CONFIG_BOOL_SKILL_FAIL_LOOT_FISHING, "SkillFail.Loot.Fishing", true); + setConfig(CONFIG_BOOL_SKILL_FAIL_GAIN_FISHING, "SkillFail.Gain.Fishing", true); + setConfig(CONFIG_BOOL_SKILL_FAIL_POSSIBLE_FISHINGPOOL, "SkillFail.Possible.FishingPool", false); - setConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS, "MaxOverspeedPings", 2); - if (getConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS) != 0 && getConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS) < 2) - { - sLog.outError("MaxOverspeedPings (%i) must be in range 2..infinity (or 0 to disable check). Set to 2.", getConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS)); - setConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS, 2); - } + setConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS, "MaxOverspeedPings", 2); + if (getConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS) != 0 && getConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS) < 2) + { + sLog.outError("MaxOverspeedPings (%i) must be in range 2..infinity (or 0 to disable check). Set to 2.", getConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS)); + setConfig(CONFIG_UINT32_MAX_OVERSPEED_PINGS, 2); + } - setConfig(CONFIG_BOOL_SAVE_RESPAWN_TIME_IMMEDIATELY, "SaveRespawnTimeImmediately", true); - setConfig(CONFIG_BOOL_WEATHER, "ActivateWeather", true); + setConfig(CONFIG_BOOL_SAVE_RESPAWN_TIME_IMMEDIATELY, "SaveRespawnTimeImmediately", true); + setConfig(CONFIG_BOOL_WEATHER, "ActivateWeather", true); - if (configNoReload(reload, CONFIG_UINT32_EXPANSION, "Expansion", MAX_EXPANSION)) - setConfigMinMax(CONFIG_UINT32_EXPANSION, "Expansion", MAX_EXPANSION, 0, MAX_EXPANSION); + if (configNoReload(reload, CONFIG_UINT32_EXPANSION, "Expansion", MAX_EXPANSION)) + setConfigMinMax(CONFIG_UINT32_EXPANSION, "Expansion", MAX_EXPANSION, 0, MAX_EXPANSION); - setConfig(CONFIG_UINT32_CHATFLOOD_MESSAGE_COUNT, "ChatFlood.MessageCount", 10); - setConfig(CONFIG_UINT32_CHATFLOOD_MESSAGE_DELAY, "ChatFlood.MessageDelay", 1); - setConfig(CONFIG_UINT32_CHATFLOOD_MUTE_TIME, "ChatFlood.MuteTime", 10); - - setConfig(CONFIG_BOOL_EVENT_ANNOUNCE, "Event.Announce", false); - - setConfig(CONFIG_UINT32_CREATURE_FAMILY_ASSISTANCE_DELAY, "CreatureFamilyAssistanceDelay", 1500); - setConfig(CONFIG_UINT32_CREATURE_FAMILY_FLEE_DELAY, "CreatureFamilyFleeDelay", 7000); - - setConfig(CONFIG_UINT32_WORLD_BOSS_LEVEL_DIFF, "WorldBossLevelDiff", 3); - - setConfigMinMax(CONFIG_INT32_QUEST_LOW_LEVEL_HIDE_DIFF, "Quests.LowLevelHideDiff", 4, -1, MAX_LEVEL); - setConfigMinMax(CONFIG_INT32_QUEST_HIGH_LEVEL_HIDE_DIFF, "Quests.HighLevelHideDiff", 7, -1, MAX_LEVEL); - - setConfigMinMax(CONFIG_UINT32_QUEST_DAILY_RESET_HOUR, "Quests.Daily.ResetHour", 6, 0, 23); - setConfigMinMax(CONFIG_UINT32_QUEST_WEEKLY_RESET_WEEK_DAY, "Quests.Weekly.ResetWeekDay", 3, 0, 6); - setConfigMinMax(CONFIG_UINT32_QUEST_WEEKLY_RESET_HOUR, "Quests.Weekly.ResetHour", 6, 0, 23); - - setConfig(CONFIG_BOOL_QUEST_IGNORE_RAID, "Quests.IgnoreRaid", false); + setConfig(CONFIG_UINT32_CHATFLOOD_MESSAGE_COUNT, "ChatFlood.MessageCount", 10); + setConfig(CONFIG_UINT32_CHATFLOOD_MESSAGE_DELAY, "ChatFlood.MessageDelay", 1); + setConfig(CONFIG_UINT32_CHATFLOOD_MUTE_TIME, "ChatFlood.MuteTime", 10); + + setConfig(CONFIG_BOOL_EVENT_ANNOUNCE, "Event.Announce", false); + + setConfig(CONFIG_UINT32_CREATURE_FAMILY_ASSISTANCE_DELAY, "CreatureFamilyAssistanceDelay", 1500); + setConfig(CONFIG_UINT32_CREATURE_FAMILY_FLEE_DELAY, "CreatureFamilyFleeDelay", 7000); + + setConfig(CONFIG_UINT32_WORLD_BOSS_LEVEL_DIFF, "WorldBossLevelDiff", 3); + + setConfigMinMax(CONFIG_INT32_QUEST_LOW_LEVEL_HIDE_DIFF, "Quests.LowLevelHideDiff", 4, -1, MAX_LEVEL); + setConfigMinMax(CONFIG_INT32_QUEST_HIGH_LEVEL_HIDE_DIFF, "Quests.HighLevelHideDiff", 7, -1, MAX_LEVEL); + + setConfigMinMax(CONFIG_UINT32_QUEST_DAILY_RESET_HOUR, "Quests.Daily.ResetHour", 6, 0, 23); + setConfigMinMax(CONFIG_UINT32_QUEST_WEEKLY_RESET_WEEK_DAY, "Quests.Weekly.ResetWeekDay", 3, 0, 6); + setConfigMinMax(CONFIG_UINT32_QUEST_WEEKLY_RESET_HOUR, "Quests.Weekly.ResetHour", 6, 0, 23); + + setConfig(CONFIG_BOOL_QUEST_IGNORE_RAID, "Quests.IgnoreRaid", false); - setConfig(CONFIG_BOOL_DETECT_POS_COLLISION, "DetectPosCollision", true); - - setConfig(CONFIG_BOOL_RESTRICTED_LFG_CHANNEL, "Channel.RestrictedLfg", true); - setConfig(CONFIG_BOOL_SILENTLY_GM_JOIN_TO_CHANNEL, "Channel.SilentlyGMJoin", false); - - setConfig(CONFIG_BOOL_TALENTS_INSPECTING, "TalentsInspecting", true); - setConfig(CONFIG_BOOL_CHAT_FAKE_MESSAGE_PREVENTING, "ChatFakeMessagePreventing", false); - - setConfig(CONFIG_UINT32_CHAT_STRICT_LINK_CHECKING_SEVERITY, "ChatStrictLinkChecking.Severity", 0); - setConfig(CONFIG_UINT32_CHAT_STRICT_LINK_CHECKING_KICK, "ChatStrictLinkChecking.Kick", 0); - - setConfig(CONFIG_BOOL_CORPSE_EMPTY_LOOT_SHOW, "Corpse.EmptyLootShow", true); - setConfig(CONFIG_UINT32_CORPSE_DECAY_NORMAL, "Corpse.Decay.NORMAL", 300); - setConfig(CONFIG_UINT32_CORPSE_DECAY_RARE, "Corpse.Decay.RARE", 900); - setConfig(CONFIG_UINT32_CORPSE_DECAY_ELITE, "Corpse.Decay.ELITE", 600); - setConfig(CONFIG_UINT32_CORPSE_DECAY_RAREELITE, "Corpse.Decay.RAREELITE", 1200); - setConfig(CONFIG_UINT32_CORPSE_DECAY_WORLDBOSS, "Corpse.Decay.WORLDBOSS", 3600); - - setConfig(CONFIG_INT32_DEATH_SICKNESS_LEVEL, "Death.SicknessLevel", 11); - - setConfig(CONFIG_BOOL_DEATH_CORPSE_RECLAIM_DELAY_PVP, "Death.CorpseReclaimDelay.PvP", true); - setConfig(CONFIG_BOOL_DEATH_CORPSE_RECLAIM_DELAY_PVE, "Death.CorpseReclaimDelay.PvE", true); - setConfig(CONFIG_BOOL_DEATH_BONES_WORLD, "Death.Bones.World", true); - setConfig(CONFIG_BOOL_DEATH_BONES_BG_OR_ARENA, "Death.Bones.BattlegroundOrArena", true); - setConfigMinMax(CONFIG_FLOAT_GHOST_RUN_SPEED_WORLD, "Death.Ghost.RunSpeed.World", 1.0f, 0.1f, 10.0f); - setConfigMinMax(CONFIG_FLOAT_GHOST_RUN_SPEED_BG, "Death.Ghost.RunSpeed.Battleground", 1.0f, 0.1f, 10.0f); - - setConfig(CONFIG_FLOAT_THREAT_RADIUS, "ThreatRadius", 100.0f); - setConfigMin(CONFIG_UINT32_CREATURE_RESPAWN_AGGRO_DELAY, "CreatureRespawnAggroDelay", 5000, 0); - - // always use declined names in the russian client - if (getConfig(CONFIG_UINT32_REALM_ZONE) == REALM_ZONE_RUSSIAN) - setConfig(CONFIG_BOOL_DECLINED_NAMES_USED, true); - else - setConfig(CONFIG_BOOL_DECLINED_NAMES_USED, "DeclinedNames", false); - - setConfig(CONFIG_BOOL_BATTLEGROUND_CAST_DESERTER, "Battleground.CastDeserter", true); - setConfigMinMax(CONFIG_UINT32_BATTLEGROUND_QUEUE_ANNOUNCER_JOIN, "Battleground.QueueAnnouncer.Join", 0, 0, 2); - setConfig(CONFIG_BOOL_BATTLEGROUND_QUEUE_ANNOUNCER_START, "Battleground.QueueAnnouncer.Start", false); - setConfig(CONFIG_BOOL_BATTLEGROUND_SCORE_STATISTICS, "Battleground.ScoreStatistics", false); - setConfig(CONFIG_UINT32_BATTLEGROUND_INVITATION_TYPE, "Battleground.InvitationType", 0); - setConfig(CONFIG_UINT32_BATTLEGROUND_PREMATURE_FINISH_TIMER, "BattleGround.PrematureFinishTimer", 5 * MINUTE * IN_MILLISECONDS); - setConfig(CONFIG_UINT32_BATTLEGROUND_PREMADE_GROUP_WAIT_FOR_MATCH, "BattleGround.PremadeGroupWaitForMatch", 30 * MINUTE * IN_MILLISECONDS); - setConfig(CONFIG_UINT32_ARENA_MAX_RATING_DIFFERENCE, "Arena.MaxRatingDifference", 150); - setConfig(CONFIG_UINT32_ARENA_RATING_DISCARD_TIMER, "Arena.RatingDiscardTimer", 10 * MINUTE * IN_MILLISECONDS); - setConfig(CONFIG_BOOL_ARENA_QUEUE_ANNOUNCER_JOIN, "Arena.QueueAnnouncer.Join", false); - setConfig(CONFIG_BOOL_ARENA_QUEUE_ANNOUNCER_EXIT, "Arena.QueueAnnouncer.Exit", false); - setConfig(CONFIG_UINT32_ARENA_SEASON_ID, "Arena.ArenaSeason.ID", 1); - setConfig(CONFIG_UINT32_ARENA_SEASON_PREVIOUS_ID, "Arena.ArenaSeasonPrevious.ID", 0); - setConfigMin(CONFIG_INT32_ARENA_STARTRATING, "Arena.StartRating", -1, -1); - setConfigMin(CONFIG_INT32_ARENA_STARTPERSONALRATING, "Arena.StartPersonalRating", -1, -1); - setConfig(CONFIG_BOOL_OUTDOORPVP_SI_ENABLED, "OutdoorPvp.SIEnabled", true); - setConfig(CONFIG_BOOL_OUTDOORPVP_EP_ENABLED, "OutdoorPvp.EPEnabled", true); - setConfig(CONFIG_BOOL_OUTDOORPVP_HP_ENABLED, "OutdoorPvp.HPEnabled", true); - setConfig(CONFIG_BOOL_OUTDOORPVP_ZM_ENABLED, "OutdoorPvp.ZMEnabled", true); - setConfig(CONFIG_BOOL_OUTDOORPVP_TF_ENABLED, "OutdoorPvp.TFEnabled", true); - setConfig(CONFIG_BOOL_OUTDOORPVP_NA_ENABLED, "OutdoorPvp.NAEnabled", true); - setConfig(CONFIG_BOOL_OUTDOORPVP_GH_ENABLED, "OutdoorPvp.GHEnabled", true); - - setConfig(CONFIG_BOOL_OFFHAND_CHECK_AT_TALENTS_RESET, "OffhandCheckAtTalentsReset", false); - - setConfig(CONFIG_BOOL_KICK_PLAYER_ON_BAD_PACKET, "Network.KickOnBadPacket", false); - - setConfig(CONFIG_BOOL_PLAYER_COMMANDS, "PlayerCommands", true); - - if (int clientCacheId = sConfig.GetIntDefault("ClientCacheVersion", 0)) - { - // overwrite DB/old value - if (clientCacheId > 0) - { - setConfig(CONFIG_UINT32_CLIENTCACHE_VERSION, clientCacheId); - sLog.outString("Client cache version set to: %u", clientCacheId); - } - else - sLog.outError("ClientCacheVersion can't be negative %d, ignored.", clientCacheId); - } - - setConfig(CONFIG_UINT32_INSTANT_LOGOUT, "InstantLogout", SEC_MODERATOR); - - setConfigMin(CONFIG_UINT32_GUILD_EVENT_LOG_COUNT, "Guild.EventLogRecordsCount", GUILD_EVENTLOG_MAX_RECORDS, GUILD_EVENTLOG_MAX_RECORDS); - setConfigMin(CONFIG_UINT32_GUILD_BANK_EVENT_LOG_COUNT, "Guild.BankEventLogRecordsCount", GUILD_BANK_MAX_LOGS, GUILD_BANK_MAX_LOGS); - setConfig(CONGIG_UINT32_GUILD_UNDELETABLE_LEVEL, "Guild.UndeletableLevel", 4); - setConfig(CONFIG_BOOL_GUILD_LEVELING_ENABLED, "Guild.LevelingEnabled", true); - - setConfig(CONFIG_UINT32_TIMERBAR_FATIGUE_GMLEVEL, "TimerBar.Fatigue.GMLevel", SEC_CONSOLE); - setConfig(CONFIG_UINT32_TIMERBAR_FATIGUE_MAX, "TimerBar.Fatigue.Max", 60); - setConfig(CONFIG_UINT32_TIMERBAR_BREATH_GMLEVEL, "TimerBar.Breath.GMLevel", SEC_CONSOLE); - setConfig(CONFIG_UINT32_TIMERBAR_BREATH_MAX, "TimerBar.Breath.Max", 180); - setConfig(CONFIG_UINT32_TIMERBAR_FIRE_GMLEVEL, "TimerBar.Fire.GMLevel", SEC_CONSOLE); - setConfig(CONFIG_UINT32_TIMERBAR_FIRE_MAX, "TimerBar.Fire.Max", 1); - - setConfig(CONFIG_BOOL_PET_UNSUMMON_AT_MOUNT, "PetUnsummonAtMount", false); - - // Warden + setConfig(CONFIG_BOOL_DETECT_POS_COLLISION, "DetectPosCollision", true); + + setConfig(CONFIG_BOOL_RESTRICTED_LFG_CHANNEL, "Channel.RestrictedLfg", true); + setConfig(CONFIG_BOOL_SILENTLY_GM_JOIN_TO_CHANNEL, "Channel.SilentlyGMJoin", false); + + setConfig(CONFIG_BOOL_TALENTS_INSPECTING, "TalentsInspecting", true); + setConfig(CONFIG_BOOL_CHAT_FAKE_MESSAGE_PREVENTING, "ChatFakeMessagePreventing", false); + + setConfig(CONFIG_UINT32_CHAT_STRICT_LINK_CHECKING_SEVERITY, "ChatStrictLinkChecking.Severity", 0); + setConfig(CONFIG_UINT32_CHAT_STRICT_LINK_CHECKING_KICK, "ChatStrictLinkChecking.Kick", 0); + + setConfig(CONFIG_BOOL_CORPSE_EMPTY_LOOT_SHOW, "Corpse.EmptyLootShow", true); + setConfig(CONFIG_UINT32_CORPSE_DECAY_NORMAL, "Corpse.Decay.NORMAL", 300); + setConfig(CONFIG_UINT32_CORPSE_DECAY_RARE, "Corpse.Decay.RARE", 900); + setConfig(CONFIG_UINT32_CORPSE_DECAY_ELITE, "Corpse.Decay.ELITE", 600); + setConfig(CONFIG_UINT32_CORPSE_DECAY_RAREELITE, "Corpse.Decay.RAREELITE", 1200); + setConfig(CONFIG_UINT32_CORPSE_DECAY_WORLDBOSS, "Corpse.Decay.WORLDBOSS", 3600); + + setConfig(CONFIG_INT32_DEATH_SICKNESS_LEVEL, "Death.SicknessLevel", 11); + + setConfig(CONFIG_BOOL_DEATH_CORPSE_RECLAIM_DELAY_PVP, "Death.CorpseReclaimDelay.PvP", true); + setConfig(CONFIG_BOOL_DEATH_CORPSE_RECLAIM_DELAY_PVE, "Death.CorpseReclaimDelay.PvE", true); + setConfig(CONFIG_BOOL_DEATH_BONES_WORLD, "Death.Bones.World", true); + setConfig(CONFIG_BOOL_DEATH_BONES_BG_OR_ARENA, "Death.Bones.BattlegroundOrArena", true); + setConfigMinMax(CONFIG_FLOAT_GHOST_RUN_SPEED_WORLD, "Death.Ghost.RunSpeed.World", 1.0f, 0.1f, 10.0f); + setConfigMinMax(CONFIG_FLOAT_GHOST_RUN_SPEED_BG, "Death.Ghost.RunSpeed.Battleground", 1.0f, 0.1f, 10.0f); + + setConfig(CONFIG_FLOAT_THREAT_RADIUS, "ThreatRadius", 100.0f); + setConfigMin(CONFIG_UINT32_CREATURE_RESPAWN_AGGRO_DELAY, "CreatureRespawnAggroDelay", 5000, 0); + + // always use declined names in the russian client + if (getConfig(CONFIG_UINT32_REALM_ZONE) == REALM_ZONE_RUSSIAN) + setConfig(CONFIG_BOOL_DECLINED_NAMES_USED, true); + else + setConfig(CONFIG_BOOL_DECLINED_NAMES_USED, "DeclinedNames", false); + + setConfig(CONFIG_BOOL_BATTLEGROUND_CAST_DESERTER, "Battleground.CastDeserter", true); + setConfigMinMax(CONFIG_UINT32_BATTLEGROUND_QUEUE_ANNOUNCER_JOIN, "Battleground.QueueAnnouncer.Join", 0, 0, 2); + setConfig(CONFIG_BOOL_BATTLEGROUND_QUEUE_ANNOUNCER_START, "Battleground.QueueAnnouncer.Start", false); + setConfig(CONFIG_BOOL_BATTLEGROUND_SCORE_STATISTICS, "Battleground.ScoreStatistics", false); + setConfig(CONFIG_UINT32_BATTLEGROUND_INVITATION_TYPE, "Battleground.InvitationType", 0); + setConfig(CONFIG_UINT32_BATTLEGROUND_PREMATURE_FINISH_TIMER, "BattleGround.PrematureFinishTimer", 5 * MINUTE * IN_MILLISECONDS); + setConfig(CONFIG_UINT32_BATTLEGROUND_PREMADE_GROUP_WAIT_FOR_MATCH, "BattleGround.PremadeGroupWaitForMatch", 30 * MINUTE * IN_MILLISECONDS); + setConfig(CONFIG_UINT32_ARENA_MAX_RATING_DIFFERENCE, "Arena.MaxRatingDifference", 150); + setConfig(CONFIG_UINT32_ARENA_RATING_DISCARD_TIMER, "Arena.RatingDiscardTimer", 10 * MINUTE * IN_MILLISECONDS); + setConfig(CONFIG_BOOL_ARENA_QUEUE_ANNOUNCER_JOIN, "Arena.QueueAnnouncer.Join", false); + setConfig(CONFIG_BOOL_ARENA_QUEUE_ANNOUNCER_EXIT, "Arena.QueueAnnouncer.Exit", false); + setConfig(CONFIG_UINT32_ARENA_SEASON_ID, "Arena.ArenaSeason.ID", 1); + setConfig(CONFIG_UINT32_ARENA_SEASON_PREVIOUS_ID, "Arena.ArenaSeasonPrevious.ID", 0); + setConfigMin(CONFIG_INT32_ARENA_STARTRATING, "Arena.StartRating", -1, -1); + setConfigMin(CONFIG_INT32_ARENA_STARTPERSONALRATING, "Arena.StartPersonalRating", -1, -1); + setConfig(CONFIG_BOOL_OUTDOORPVP_SI_ENABLED, "OutdoorPvp.SIEnabled", true); + setConfig(CONFIG_BOOL_OUTDOORPVP_EP_ENABLED, "OutdoorPvp.EPEnabled", true); + setConfig(CONFIG_BOOL_OUTDOORPVP_HP_ENABLED, "OutdoorPvp.HPEnabled", true); + setConfig(CONFIG_BOOL_OUTDOORPVP_ZM_ENABLED, "OutdoorPvp.ZMEnabled", true); + setConfig(CONFIG_BOOL_OUTDOORPVP_TF_ENABLED, "OutdoorPvp.TFEnabled", true); + setConfig(CONFIG_BOOL_OUTDOORPVP_NA_ENABLED, "OutdoorPvp.NAEnabled", true); + setConfig(CONFIG_BOOL_OUTDOORPVP_GH_ENABLED, "OutdoorPvp.GHEnabled", true); + + setConfig(CONFIG_BOOL_OFFHAND_CHECK_AT_TALENTS_RESET, "OffhandCheckAtTalentsReset", false); + + setConfig(CONFIG_BOOL_KICK_PLAYER_ON_BAD_PACKET, "Network.KickOnBadPacket", false); + + setConfig(CONFIG_BOOL_PLAYER_COMMANDS, "PlayerCommands", true); + + if (int clientCacheId = sConfig.GetIntDefault("ClientCacheVersion", 0)) + { + // overwrite DB/old value + if (clientCacheId > 0) + { + setConfig(CONFIG_UINT32_CLIENTCACHE_VERSION, clientCacheId); + sLog.outString("Client cache version set to: %u", clientCacheId); + } + else + sLog.outError("ClientCacheVersion can't be negative %d, ignored.", clientCacheId); + } + + setConfig(CONFIG_UINT32_INSTANT_LOGOUT, "InstantLogout", SEC_MODERATOR); + + setConfigMin(CONFIG_UINT32_GUILD_EVENT_LOG_COUNT, "Guild.EventLogRecordsCount", GUILD_EVENTLOG_MAX_RECORDS, GUILD_EVENTLOG_MAX_RECORDS); + setConfigMin(CONFIG_UINT32_GUILD_BANK_EVENT_LOG_COUNT, "Guild.BankEventLogRecordsCount", GUILD_BANK_MAX_LOGS, GUILD_BANK_MAX_LOGS); + setConfig(CONGIG_UINT32_GUILD_UNDELETABLE_LEVEL, "Guild.UndeletableLevel", 4); + setConfig(CONFIG_BOOL_GUILD_LEVELING_ENABLED, "Guild.LevelingEnabled", true); + + setConfig(CONFIG_UINT32_TIMERBAR_FATIGUE_GMLEVEL, "TimerBar.Fatigue.GMLevel", SEC_CONSOLE); + setConfig(CONFIG_UINT32_TIMERBAR_FATIGUE_MAX, "TimerBar.Fatigue.Max", 60); + setConfig(CONFIG_UINT32_TIMERBAR_BREATH_GMLEVEL, "TimerBar.Breath.GMLevel", SEC_CONSOLE); + setConfig(CONFIG_UINT32_TIMERBAR_BREATH_MAX, "TimerBar.Breath.Max", 180); + setConfig(CONFIG_UINT32_TIMERBAR_FIRE_GMLEVEL, "TimerBar.Fire.GMLevel", SEC_CONSOLE); + setConfig(CONFIG_UINT32_TIMERBAR_FIRE_MAX, "TimerBar.Fire.Max", 1); + + setConfig(CONFIG_BOOL_PET_UNSUMMON_AT_MOUNT, "PetUnsummonAtMount", false); + + // Warden /* badly broken on m3 :( - this causes all these defaults to be set to 0 - setConfig(CONFIG_BOOL_WARDEN_WIN_ENABLED, "Warden.WinEnabled", true); - setConfig(CONFIG_BOOL_WARDEN_OSX_ENABLED, "Warden.OSXEnabled", false); - setConfig(CONFIG_UINT32_WARDEN_NUM_MEM_CHECKS, "Warden.NumMemChecks", 3); - setConfig(CONFIG_UINT32_WARDEN_NUM_OTHER_CHECKS, "Warden.NumOtherChecks", 7); - setConfig(CONFIG_UINT32_WARDEN_CLIENT_BAN_DURATION, "Warden.BanDuration", 86400); - setConfig(CONFIG_UINT32_WARDEN_CLIENT_CHECK_HOLDOFF, "Warden.ClientCheckHoldOff", 30); - setConfig(CONFIG_UINT32_WARDEN_CLIENT_FAIL_ACTION, "Warden.ClientCheckFailAction", 0); - setConfig(CONFIG_UINT32_WARDEN_CLIENT_RESPONSE_DELAY, "Warden.ClientResponseDelay", 600); - setConfig(CONFIG_UINT32_WARDEN_DB_LOGLEVEL, "Warden.DBLogLevel", 0); */ + setConfig(CONFIG_BOOL_WARDEN_WIN_ENABLED, "Warden.WinEnabled", true); + setConfig(CONFIG_BOOL_WARDEN_OSX_ENABLED, "Warden.OSXEnabled", false); + setConfig(CONFIG_UINT32_WARDEN_NUM_MEM_CHECKS, "Warden.NumMemChecks", 3); + setConfig(CONFIG_UINT32_WARDEN_NUM_OTHER_CHECKS, "Warden.NumOtherChecks", 7); + setConfig(CONFIG_UINT32_WARDEN_CLIENT_BAN_DURATION, "Warden.BanDuration", 86400); + setConfig(CONFIG_UINT32_WARDEN_CLIENT_CHECK_HOLDOFF, "Warden.ClientCheckHoldOff", 30); + setConfig(CONFIG_UINT32_WARDEN_CLIENT_FAIL_ACTION, "Warden.ClientCheckFailAction", 0); + setConfig(CONFIG_UINT32_WARDEN_CLIENT_RESPONSE_DELAY, "Warden.ClientResponseDelay", 600); + setConfig(CONFIG_UINT32_WARDEN_DB_LOGLEVEL, "Warden.DBLogLevel", 0); */ - m_relocation_ai_notify_delay = sConfig.GetIntDefault("Visibility.AIRelocationNotifyDelay", 1000u); - m_relocation_lower_limit_sq = pow(sConfig.GetFloatDefault("Visibility.RelocationLowerLimit", 10), 2); + m_relocation_ai_notify_delay = sConfig.GetIntDefault("Visibility.AIRelocationNotifyDelay", 1000u); + m_relocation_lower_limit_sq = pow(sConfig.GetFloatDefault("Visibility.RelocationLowerLimit", 10), 2); - m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1); - if (m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) - { - sLog.outError("Visibility.Distance.Grey.Unit can't be greater %f", MAX_VISIBILITY_DISTANCE); - m_VisibleUnitGreyDistance = MAX_VISIBILITY_DISTANCE; - } - m_VisibleObjectGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Object", 10); - if (m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE) - { - sLog.outError("Visibility.Distance.Grey.Object can't be greater %f", MAX_VISIBILITY_DISTANCE); - m_VisibleObjectGreyDistance = MAX_VISIBILITY_DISTANCE; - } + m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1); + if (m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) + { + sLog.outError("Visibility.Distance.Grey.Unit can't be greater %f", MAX_VISIBILITY_DISTANCE); + m_VisibleUnitGreyDistance = MAX_VISIBILITY_DISTANCE; + } + m_VisibleObjectGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Object", 10); + if (m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE) + { + sLog.outError("Visibility.Distance.Grey.Object can't be greater %f", MAX_VISIBILITY_DISTANCE); + m_VisibleObjectGreyDistance = MAX_VISIBILITY_DISTANCE; + } - // visibility on continents - m_MaxVisibleDistanceOnContinents = sConfig.GetFloatDefault("Visibility.Distance.Continents", DEFAULT_VISIBILITY_DISTANCE); - if (m_MaxVisibleDistanceOnContinents < 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)) - { - sLog.outError("Visibility.Distance.Continents can't be less max aggro radius %f", 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)); - m_MaxVisibleDistanceOnContinents = 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO); - } - else if (m_MaxVisibleDistanceOnContinents + m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) - { - sLog.outError("Visibility.Distance.Continents can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); - m_MaxVisibleDistanceOnContinents = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance; - } + // visibility on continents + m_MaxVisibleDistanceOnContinents = sConfig.GetFloatDefault("Visibility.Distance.Continents", DEFAULT_VISIBILITY_DISTANCE); + if (m_MaxVisibleDistanceOnContinents < 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)) + { + sLog.outError("Visibility.Distance.Continents can't be less max aggro radius %f", 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)); + m_MaxVisibleDistanceOnContinents = 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO); + } + else if (m_MaxVisibleDistanceOnContinents + m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) + { + sLog.outError("Visibility.Distance.Continents can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); + m_MaxVisibleDistanceOnContinents = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance; + } - // visibility in instances - m_MaxVisibleDistanceInInstances = sConfig.GetFloatDefault("Visibility.Distance.Instances", DEFAULT_VISIBILITY_INSTANCE); - if (m_MaxVisibleDistanceInInstances < 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)) - { - sLog.outError("Visibility.Distance.Instances can't be less max aggro radius %f", 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)); - m_MaxVisibleDistanceInInstances = 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO); - } - else if (m_MaxVisibleDistanceInInstances + m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) - { - sLog.outError("Visibility.Distance.Instances can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); - m_MaxVisibleDistanceInInstances = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance; - } + // visibility in instances + m_MaxVisibleDistanceInInstances = sConfig.GetFloatDefault("Visibility.Distance.Instances", DEFAULT_VISIBILITY_INSTANCE); + if (m_MaxVisibleDistanceInInstances < 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)) + { + sLog.outError("Visibility.Distance.Instances can't be less max aggro radius %f", 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)); + m_MaxVisibleDistanceInInstances = 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO); + } + else if (m_MaxVisibleDistanceInInstances + m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) + { + sLog.outError("Visibility.Distance.Instances can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); + m_MaxVisibleDistanceInInstances = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance; + } - // visibility in BG/Arenas - m_MaxVisibleDistanceInBGArenas = sConfig.GetFloatDefault("Visibility.Distance.BGArenas", DEFAULT_VISIBILITY_BGARENAS); - if (m_MaxVisibleDistanceInBGArenas < 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)) - { - sLog.outError("Visibility.Distance.BGArenas can't be less max aggro radius %f", 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)); - m_MaxVisibleDistanceInBGArenas = 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO); - } - else if (m_MaxVisibleDistanceInBGArenas + m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) - { - sLog.outError("Visibility.Distance.BGArenas can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); - m_MaxVisibleDistanceInBGArenas = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance; - } + // visibility in BG/Arenas + m_MaxVisibleDistanceInBGArenas = sConfig.GetFloatDefault("Visibility.Distance.BGArenas", DEFAULT_VISIBILITY_BGARENAS); + if (m_MaxVisibleDistanceInBGArenas < 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)) + { + sLog.outError("Visibility.Distance.BGArenas can't be less max aggro radius %f", 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO)); + m_MaxVisibleDistanceInBGArenas = 45 * getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO); + } + else if (m_MaxVisibleDistanceInBGArenas + m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) + { + sLog.outError("Visibility.Distance.BGArenas can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); + m_MaxVisibleDistanceInBGArenas = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance; + } - m_MaxVisibleDistanceInFlight = sConfig.GetFloatDefault("Visibility.Distance.InFlight", DEFAULT_VISIBILITY_DISTANCE); - if (m_MaxVisibleDistanceInFlight + m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE) - { - sLog.outError("Visibility.Distance.InFlight can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance); - m_MaxVisibleDistanceInFlight = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance; - } + m_MaxVisibleDistanceInFlight = sConfig.GetFloatDefault("Visibility.Distance.InFlight", DEFAULT_VISIBILITY_DISTANCE); + if (m_MaxVisibleDistanceInFlight + m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE) + { + sLog.outError("Visibility.Distance.InFlight can't be greater %f", MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance); + m_MaxVisibleDistanceInFlight = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance; + } - ///- Load the CharDelete related config options - setConfigMinMax(CONFIG_UINT32_CHARDELETE_METHOD, "CharDelete.Method", 0, 0, 1); - setConfigMinMax(CONFIG_UINT32_CHARDELETE_MIN_LEVEL, "CharDelete.MinLevel", 0, 0, getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL)); - setConfig(CONFIG_UINT32_CHARDELETE_KEEP_DAYS, "CharDelete.KeepDays", 30); + ///- Load the CharDelete related config options + setConfigMinMax(CONFIG_UINT32_CHARDELETE_METHOD, "CharDelete.Method", 0, 0, 1); + setConfigMinMax(CONFIG_UINT32_CHARDELETE_MIN_LEVEL, "CharDelete.MinLevel", 0, 0, getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL)); + setConfig(CONFIG_UINT32_CHARDELETE_KEEP_DAYS, "CharDelete.KeepDays", 30); - if (configNoReload(reload, CONFIG_UINT32_GUID_RESERVE_SIZE_CREATURE, "GuidReserveSize.Creature", 100)) - { - setConfig(CONFIG_UINT32_GUID_RESERVE_SIZE_CREATURE, "GuidReserveSize.Creature", 100); - } - if (configNoReload(reload, CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100)) - { - setConfig(CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100); - } + if (configNoReload(reload, CONFIG_UINT32_GUID_RESERVE_SIZE_CREATURE, "GuidReserveSize.Creature", 100)) + { + setConfig(CONFIG_UINT32_GUID_RESERVE_SIZE_CREATURE, "GuidReserveSize.Creature", 100); + } + if (configNoReload(reload, CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100)) + { + setConfig(CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100); + } - setConfig(CONFIG_UINT32_MIN_LEVEL_FOR_RAID, "Raid.MinLevel", 10); + setConfig(CONFIG_UINT32_MIN_LEVEL_FOR_RAID, "Raid.MinLevel", 10); - ///- Read the "Data" directory from the config file - std::string dataPath = sConfig.GetStringDefault("DataDir", "./"); + ///- Read the "Data" directory from the config file + std::string dataPath = sConfig.GetStringDefault("DataDir", "./"); - // for empty string use current dir as for absent case - if (dataPath.empty()) - { - dataPath = "./"; - } - // normalize dir path to path/ or path\ form - else if (dataPath.at(dataPath.length() - 1) != '/' && dataPath.at(dataPath.length() - 1) != '\\') - { - dataPath.append("/"); - } + // for empty string use current dir as for absent case + if (dataPath.empty()) + { + dataPath = "./"; + } + // normalize dir path to path/ or path\ form + else if (dataPath.at(dataPath.length() - 1) != '/' && dataPath.at(dataPath.length() - 1) != '\\') + { + dataPath.append("/"); + } - if (reload) - { - if (dataPath != m_dataPath) - { - sLog.outError("DataDir option can't be changed at mangosd.conf reload, using current value (%s).", m_dataPath.c_str()); - } - } - else - { - m_dataPath = dataPath; - sLog.outString("Using DataDir %s", m_dataPath.c_str()); - } + if (reload) + { + if (dataPath != m_dataPath) + { + sLog.outError("DataDir option can't be changed at mangosd.conf reload, using current value (%s).", m_dataPath.c_str()); + } + } + else + { + m_dataPath = dataPath; + sLog.outString("Using DataDir %s", m_dataPath.c_str()); + } - setConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK, "vmap.enableIndoorCheck", true); - bool enableLOS = sConfig.GetBoolDefault("vmap.enableLOS", false); - bool enableHeight = sConfig.GetBoolDefault("vmap.enableHeight", false); - std::string ignoreSpellIds = sConfig.GetStringDefault("vmap.ignoreSpellIds", ""); + setConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK, "vmap.enableIndoorCheck", true); + bool enableLOS = sConfig.GetBoolDefault("vmap.enableLOS", false); + bool enableHeight = sConfig.GetBoolDefault("vmap.enableHeight", false); + std::string ignoreSpellIds = sConfig.GetStringDefault("vmap.ignoreSpellIds", ""); - if (!enableHeight) - { - sLog.outError("VMAP height use disabled! Creatures movements and other things will be in broken state."); - } + if (!enableHeight) + { + sLog.outError("VMAP height use disabled! Creatures movements and other things will be in broken state."); + } - VMAP::VMapFactory::createOrGetVMapManager()->setEnableLineOfSightCalc(enableLOS); - VMAP::VMapFactory::createOrGetVMapManager()->setEnableHeightCalc(enableHeight); - VMAP::VMapFactory::preventSpellsFromBeingTestedForLoS(ignoreSpellIds.c_str()); - sLog.outString("WORLD: VMap support included. LineOfSight:%i, getHeight:%i, indoorCheck:%i", - enableLOS, enableHeight, getConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK) ? 1 : 0); - sLog.outString("WORLD: VMap data directory is: %svmaps", m_dataPath.c_str()); + VMAP::VMapFactory::createOrGetVMapManager()->setEnableLineOfSightCalc(enableLOS); + VMAP::VMapFactory::createOrGetVMapManager()->setEnableHeightCalc(enableHeight); + VMAP::VMapFactory::preventSpellsFromBeingTestedForLoS(ignoreSpellIds.c_str()); + sLog.outString("WORLD: VMap support included. LineOfSight:%i, getHeight:%i, indoorCheck:%i", + enableLOS, enableHeight, getConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK) ? 1 : 0); + sLog.outString("WORLD: VMap data directory is: %svmaps", m_dataPath.c_str()); - setConfig(CONFIG_BOOL_MMAP_ENABLED, "mmap.enabled", true); - std::string ignoreMapIds = sConfig.GetStringDefault("mmap.ignoreMapIds", ""); - MMAP::MMapFactory::preventPathfindingOnMaps(ignoreMapIds.c_str()); - sLog.outString("WORLD: MMap pathfinding %sabled", getConfig(CONFIG_BOOL_MMAP_ENABLED) ? "en" : "dis"); + setConfig(CONFIG_BOOL_MMAP_ENABLED, "mmap.enabled", true); + std::string ignoreMapIds = sConfig.GetStringDefault("mmap.ignoreMapIds", ""); + MMAP::MMapFactory::preventPathfindingOnMaps(ignoreMapIds.c_str()); + sLog.outString("WORLD: MMap pathfinding %sabled", getConfig(CONFIG_BOOL_MMAP_ENABLED) ? "en" : "dis"); - setConfig(CONFIG_BOOL_ELUNA_ENABLED, "Eluna.Enabled", true); + setConfig(CONFIG_BOOL_ELUNA_ENABLED, "Eluna.Enabled", true); #ifdef ENABLE_ELUNA - if (reload) - { - sEluna->OnConfigLoad(reload); - } + if (reload) + { + sEluna->OnConfigLoad(reload); + } #endif /* ENABLE_ELUNA */ sLog.outString(); } diff --git a/src/shared/Config/Config.h b/src/shared/Config/Config.h index a81b96f3b..445438c93 100644 --- a/src/shared/Config/Config.h +++ b/src/shared/Config/Config.h @@ -91,7 +91,7 @@ class Config * @return int32 */ int32 GetIntDefault(const char* name, const int32 def); - int64 GetInt64Default(const char* name, const int64 def); + int64 GetInt64Default(const char* name, const int64 def); /** * @brief * diff --git a/src/shared/Database/Field.h b/src/shared/Database/Field.h index 8de51a028..523c8309c 100644 --- a/src/shared/Database/Field.h +++ b/src/shared/Database/Field.h @@ -102,18 +102,18 @@ class Field * * @return bool */ - bool GetBool() const { return mValue ? atoi(mValue) > 0 : false; } - /** - * @brief - * - * @return double - */ - double GetDouble() const { return mValue ? static_cast(atof(mValue)) : 0.0f; } - /** - * @brief - * - * @return int8 - */ + bool GetBool() const { return mValue ? atoi(mValue) > 0 : false; } + /** + * @brief + * + * @return double + */ + double GetDouble() const { return mValue ? static_cast(atof(mValue)) : 0.0f; } + /** + * @brief + * + * @return int8 + */ int8 GetInt8() const { return mValue ? static_cast(atol(mValue)) : int8(0); } /** * @brief @@ -158,11 +158,11 @@ class Field return value; } - /** - * @brief - * - * @return int64 - */ + /** + * @brief + * + * @return int64 + */ uint64 GetInt64() const { int64 value = 0; diff --git a/src/shared/Utilities/Util.cpp b/src/shared/Utilities/Util.cpp index 1a47a924b..0a9762b17 100644 --- a/src/shared/Utilities/Util.cpp +++ b/src/shared/Utilities/Util.cpp @@ -388,13 +388,13 @@ void utf8truncate(std::string& utf8str, size_t len) bool Utf8ToUpperOnlyLatin(std::string& utf8String) { - std::wstring wstr; - if (!Utf8toWStr(utf8String, wstr)) - return false; + std::wstring wstr; + if (!Utf8toWStr(utf8String, wstr)) + return false; - std::transform(wstr.begin(), wstr.end(), wstr.begin(), wcharToUpperOnlyLatin); + std::transform(wstr.begin(), wstr.end(), wstr.begin(), wcharToUpperOnlyLatin); - return WStrToUtf8(wstr, utf8String); + return WStrToUtf8(wstr, utf8String); } bool Utf8toWStr(char const* utf8str, size_t csize, wchar_t* wstr, size_t& wsize) diff --git a/src/tools/Extractor_projects/shared/ExtractorCommon.cpp b/src/tools/Extractor_projects/shared/ExtractorCommon.cpp index a2a4e28a6..21641ccf8 100644 --- a/src/tools/Extractor_projects/shared/ExtractorCommon.cpp +++ b/src/tools/Extractor_projects/shared/ExtractorCommon.cpp @@ -391,13 +391,13 @@ void setVMapMagicVersion(int iCoreNumber, char* magic) bool CreateDir(const std::string& sPath) { #ifdef WIN32 - if (_mkdir(sPath.c_str()) == 0) - return 1; + if (_mkdir(sPath.c_str()) == 0) + return 1; #else - if (mkdir(sPath.c_str(), 0777) == 0) - return 1; + if (mkdir(sPath.c_str(), 0777) == 0) + return 1; #endif - return 0; // failed to create the directory + return 0; // failed to create the directory } /** @@ -517,8 +517,8 @@ bool shouldSkipMap(int mapID,bool m_skipContinents, bool m_skipJunkMaps, bool m_ case 605: // development_nonweighted.wdt - (WOTLK / CATA / MOP) case 606: // QA_DVD.wdt - (WOTLK / CATA / MOP) case 627: // unused.wdt - (CATA / MOP) - case 930: // (UNUSED) Scenario: Alcaz Island - (MOP) - case 995: // The Depths [UNUSED] - (MOP) + case 930: // (UNUSED) Scenario: Alcaz Island - (MOP) + case 995: // The Depths [UNUSED] - (MOP) case 1010: // MistsCTF3 case 1014: // (UNUSED) Peak of Serenity Scenario - (MOP) case 1028: // (UNUSED) Scenario: Mogu Ruins - (MOP) @@ -558,7 +558,7 @@ bool shouldSkipMap(int mapID,bool m_skipContinents, bool m_skipJunkMaps, bool m_ case 728: // BfG - (CATA / MOP) case 761: // BfG2 - (CATA / MOP) case 968: // EotS2 - (CATA / MOP) - case 998: // VOP - (MOP) + case 998: // VOP - (MOP) case 1010: // CTF3 - (MOP) case 1101: // DOTA - (MOP) case 1105: // GR - (MOP) diff --git a/src/tools/Extractor_projects/vmap-assembler/vmap_assembler.cpp b/src/tools/Extractor_projects/vmap-assembler/vmap_assembler.cpp index 135f0bf41..3b6c014d9 100644 --- a/src/tools/Extractor_projects/vmap-assembler/vmap_assembler.cpp +++ b/src/tools/Extractor_projects/vmap-assembler/vmap_assembler.cpp @@ -41,11 +41,11 @@ int main(int argc, char* argv[]) std::cout << "using " << src << " as source directory and writing output to " << dest << std::endl; - std::cout << "Create TileAssembler " << std::endl; + std::cout << "Create TileAssembler " << std::endl; - VMAP::TileAssembler* ta = new VMAP::TileAssembler(src, dest); + VMAP::TileAssembler* ta = new VMAP::TileAssembler(src, dest); - std::cout << "Convert to World2 " << std::endl; + std::cout << "Convert to World2 " << std::endl; if (!ta->convertWorld2()) { @@ -54,7 +54,7 @@ int main(int argc, char* argv[]) return 1; } - std::cout << "THE END!!! " << std::endl; + std::cout << "THE END!!! " << std::endl; delete ta; std::cout << "Ok, all done" << std::endl; diff --git a/src/tools/Extractor_projects/vmap-extractor/vmapexport.cpp b/src/tools/Extractor_projects/vmap-extractor/vmapexport.cpp index 23c307577..139a52e14 100644 --- a/src/tools/Extractor_projects/vmap-extractor/vmapexport.cpp +++ b/src/tools/Extractor_projects/vmap-extractor/vmapexport.cpp @@ -557,8 +557,8 @@ bool processArgv(int argc, char** argv) int main(int argc, char** argv) { - bool bCreatedVmapsFolder = false; - bool bExtractedWMOfiles = false; + bool bCreatedVmapsFolder = false; + bool bExtractedWMOfiles = false; std::string outDir = std::string(output_path) + "/vmaps"; // Use command line arguments, when some @@ -598,9 +598,9 @@ int main(int argc, char** argv) //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // Create the working and ouput directories CreateDir(std::string(szWorkDirWmo)); - bCreatedVmapsFolder = CreateDir(outDir); + bCreatedVmapsFolder = CreateDir(outDir); - printf("Loading common MPQ files\n"); + printf("Loading common MPQ files\n"); LoadCommonMPQFiles(CONF_TargetBuild); int FirstLocale = -1; @@ -621,15 +621,15 @@ int main(int argc, char** argv) ReadLiquidTypeTableDBC(); // extract data - if (bCreatedVmapsFolder) - { - printf("Extracting WMO file\n"); - bExtractedWMOfiles = ExtractWmo(); - } + if (bCreatedVmapsFolder) + { + printf("Extracting WMO file\n"); + bExtractedWMOfiles = ExtractWmo(); + } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //map.dbc - if (bExtractedWMOfiles) + if (bExtractedWMOfiles) { DBCFile* dbc = new DBCFile(LocaleMpq, "DBFilesClient\\Map.dbc"); if (!dbc->open()) @@ -660,17 +660,17 @@ int main(int argc, char** argv) SFileCloseArchive(WorldMpq); printf("\n"); - if (!bExtractedWMOfiles) + if (!bExtractedWMOfiles) { printf("ERROR: Extract for %s. Work NOT complete.\n Precise vector data=%d.\nPress any key.\n", szRawVMAPMagic, preciseVectorData); getchar(); return 1; } - printf("Extract for %s. Work complete. ", szRawVMAPMagic); - if (!bCreatedVmapsFolder || !bExtractedWMOfiles) - printf("There were errors.\n"); - else + printf("Extract for %s. Work complete. ", szRawVMAPMagic); + if (!bCreatedVmapsFolder || !bExtractedWMOfiles) + printf("There were errors.\n"); + else printf("No errors.\n"); delete [] LiqType;