aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/auth_database.sql13
-rw-r--r--sql/updates/auth/master/2024_01_21_00_auth.sql10
-rw-r--r--sql/updates/hotfixes/master/2024_01_21_00_hotfixes.sql2
-rw-r--r--sql/updates/world/master/2024_01_21_00_world.sql10
-rw-r--r--src/common/DataStores/DB2FileLoader.cpp9
-rw-r--r--src/common/DataStores/DB2FileLoader.h2
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp24
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp2
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h4
-rw-r--r--src/server/game/DataStores/DB2Metadata.h120
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp29
-rw-r--r--src/server/game/DataStores/DB2Stores.h1
-rw-r--r--src/server/game/DataStores/DB2Structure.h4
-rw-r--r--src/server/game/DataStores/DBCEnums.h2
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp5
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateField.h46
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp328
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h230
-rw-r--r--src/server/game/Entities/Player/Player.cpp64
-rw-r--r--src/server/game/Entities/Player/Player.h14
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp59
-rw-r--r--src/server/game/Globals/ObjectMgr.h5
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp2
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h1965
-rw-r--r--src/server/game/Quests/QuestDef.h2
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h2
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h4
-rw-r--r--src/server/game/Server/Packets/LootPackets.h2
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h1
-rw-r--r--src/server/game/World/World.cpp3
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp14
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h9
35 files changed, 1628 insertions, 1367 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index 2ac92429949..6fddaf1e85b 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -755,7 +755,11 @@ INSERT INTO `build_info` VALUES
(52545,10,2,0,NULL,NULL,'FB52179A8355A46EDBFBDC8E8E5CDAFD',NULL,NULL,NULL),
(52607,10,2,0,NULL,NULL,'8F002E4AADCAEABB08ABC2880B31AD60',NULL,NULL,NULL),
(52649,10,2,0,NULL,NULL,'D0B779FBECEBC1ED5A85D83F03C8A75B',NULL,NULL,NULL),
-(52808,10,2,0,NULL,NULL,'6276712B6C8AEA21CD5D94D52FEE70EE',NULL,NULL,NULL);
+(52808,10,2,0,NULL,NULL,'6276712B6C8AEA21CD5D94D52FEE70EE',NULL,NULL,NULL),
+(52902,10,2,5,NULL,NULL,'D4F0A24CDF165628538C1C387A326AF3',NULL,NULL,NULL),
+(52968,10,2,5,NULL,NULL,'2D247FD440C44D4F1BF80B075B8720F2',NULL,NULL,NULL),
+(52983,10,2,5,NULL,NULL,'B1E5ADA5FDD06C9AB5E5D8A6983324AC',NULL,NULL,NULL),
+(53007,10,2,5,NULL,NULL,'A21AFB4D381C56AF471D994258C0EEF5',NULL,NULL,NULL);
/*!40000 ALTER TABLE `build_info` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2365,7 +2369,7 @@ CREATE TABLE `realmlist` (
`timezone` tinyint unsigned NOT NULL DEFAULT '0',
`allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0',
`population` float unsigned NOT NULL DEFAULT '0',
- `gamebuild` int unsigned NOT NULL DEFAULT '52808',
+ `gamebuild` int unsigned NOT NULL DEFAULT '53007',
`Region` tinyint unsigned NOT NULL DEFAULT '1',
`Battlegroup` tinyint unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
@@ -2380,7 +2384,7 @@ CREATE TABLE `realmlist` (
LOCK TABLES `realmlist` WRITE;
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
INSERT INTO `realmlist` VALUES
-(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,52808,1,1);
+(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,53007,1,1);
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2784,7 +2788,8 @@ INSERT INTO `updates` VALUES
('2023_12_24_00_auth.sql','F59B3A895750FD83177324B89BFCEBD8A43DD577','RELEASED','2023-12-24 06:24:58',0),
('2023_12_26_00_auth.sql','5C8716F7F6E2792E15A42BDA8F2D855A7DE95FC5','RELEASED','2023-12-26 13:38:58',0),
('2024_01_05_00_auth.sql','7F401D473B08BBE5212551E96A86F85107CE7C8E','RELEASED','2023-12-19 10:05:39',0),
-('2024_01_10_00_auth.sql','75F06894D95986AEAB2933F141DB7693FABB0324','RELEASED','2024-01-10 11:14:55',0);
+('2024_01_10_00_auth.sql','75F06894D95986AEAB2933F141DB7693FABB0324','RELEASED','2024-01-10 11:14:55',0),
+('2024_01_21_00_auth.sql','5F12B88EAADC5390AD42843290BD13CEF3BF2E0B','RELEASED','2024-01-21 21:21:50',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/master/2024_01_21_00_auth.sql b/sql/updates/auth/master/2024_01_21_00_auth.sql
new file mode 100644
index 00000000000..d1f5781cd5f
--- /dev/null
+++ b/sql/updates/auth/master/2024_01_21_00_auth.sql
@@ -0,0 +1,10 @@
+DELETE FROM `build_info` WHERE `build` IN (52902,52968,52983,53007);
+INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`,`winAuthSeed`,`win64AuthSeed`,`mac64AuthSeed`,`winChecksumSeed`,`macChecksumSeed`) VALUES
+(52902,10,2,5,NULL,NULL,'D4F0A24CDF165628538C1C387A326AF3',NULL,NULL,NULL),
+(52968,10,2,5,NULL,NULL,'2D247FD440C44D4F1BF80B075B8720F2',NULL,NULL,NULL),
+(52983,10,2,5,NULL,NULL,'B1E5ADA5FDD06C9AB5E5D8A6983324AC',NULL,NULL,NULL),
+(53007,10,2,5,NULL,NULL,'A21AFB4D381C56AF471D994258C0EEF5',NULL,NULL,NULL);
+
+UPDATE `realmlist` SET `gamebuild`=53007 WHERE `gamebuild`=52808;
+
+ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '53007';
diff --git a/sql/updates/hotfixes/master/2024_01_21_00_hotfixes.sql b/sql/updates/hotfixes/master/2024_01_21_00_hotfixes.sql
new file mode 100644
index 00000000000..e1e7b7eb0cd
--- /dev/null
+++ b/sql/updates/hotfixes/master/2024_01_21_00_hotfixes.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `conditional_chr_model` MODIFY `ID` int UNSIGNED NOT NULL DEFAULT 0 FIRST;
+ALTER TABLE `conditional_chr_model` MODIFY `ChrModelID` int NOT NULL DEFAULT 0 AFTER `ID`;
diff --git a/sql/updates/world/master/2024_01_21_00_world.sql b/sql/updates/world/master/2024_01_21_00_world.sql
new file mode 100644
index 00000000000..27f343fe7ae
--- /dev/null
+++ b/sql/updates/world/master/2024_01_21_00_world.sql
@@ -0,0 +1,10 @@
+--
+-- Table structure for table `creature_quest_currency`
+--
+DROP TABLE IF EXISTS `creature_quest_currency`;
+CREATE TABLE `creature_quest_currency` (
+ `CreatureId` int unsigned NOT NULL,
+ `CurrencyId` int NOT NULL,
+ `VerifiedBuild` int NOT NULL DEFAULT 0,
+ PRIMARY KEY (`CreatureId`,`CurrencyId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp
index d687c34d4a7..57ec7df6e3f 100644
--- a/src/common/DataStores/DB2FileLoader.cpp
+++ b/src/common/DataStores/DB2FileLoader.cpp
@@ -1810,6 +1810,7 @@ void DB2FileLoader::LoadHeaders(DB2FileSource* source, DB2FileLoadInfo const* lo
throw DB2FileLoadException("Failed to read header");
EndianConvert(_header.Signature);
+ EndianConvert(_header.Version);
EndianConvert(_header.RecordCount);
EndianConvert(_header.FieldCount);
EndianConvert(_header.RecordSize);
@@ -1829,10 +1830,14 @@ void DB2FileLoader::LoadHeaders(DB2FileSource* source, DB2FileLoadInfo const* lo
EndianConvert(_header.PalletDataSize);
EndianConvert(_header.SectionCount);
- if (_header.Signature != 0x34434457) //'WDC4'
- throw DB2FileLoadException(Trinity::StringFormat("Incorrect file signature in {}, expected 'WDC4', got {}{}{}{}", source->GetFileName(),
+ if (_header.Signature != 0x35434457) //'WDC5'
+ throw DB2FileLoadException(Trinity::StringFormat("Incorrect file signature in {}, expected 'WDC5', got {}{}{}{}", source->GetFileName(),
char(_header.Signature & 0xFF), char((_header.Signature >> 8) & 0xFF), char((_header.Signature >> 16) & 0xFF), char((_header.Signature >> 24) & 0xFF)));
+ if (_header.Version != 5)
+ throw DB2FileLoadException(Trinity::StringFormat("Incorrect version in {}, expected 5, got {} (possibly wrong client version)",
+ source->GetFileName(), _header.Version));
+
if (loadInfo && _header.LayoutHash != loadInfo->Meta->LayoutHash)
throw DB2FileLoadException(Trinity::StringFormat("Incorrect layout hash in {}, expected 0x{:08X}, got 0x{:08X} (possibly wrong client version)",
source->GetFileName(), loadInfo->Meta->LayoutHash, _header.LayoutHash));
diff --git a/src/common/DataStores/DB2FileLoader.h b/src/common/DataStores/DB2FileLoader.h
index 29e78463f38..6875335f3ca 100644
--- a/src/common/DataStores/DB2FileLoader.h
+++ b/src/common/DataStores/DB2FileLoader.h
@@ -31,6 +31,8 @@ struct DB2Meta;
struct DB2Header
{
uint32 Signature;
+ uint32 Version;
+ std::array<char, 128> Schema;
uint32 RecordCount;
uint32 FieldCount;
uint32 RecordSize;
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index 08fc5d69c14..8e6d7a84bba 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -1516,19 +1516,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
bool matchFound = false;
for (uint32 j : worldOverlayEntry->AreaID)
{
- AreaTableEntry const* area = sAreaTableStore.LookupEntry(j);
- if (!area)
- break;
-
- if (area->AreaBit < 0)
- continue;
-
- size_t playerIndexOffset = size_t(area->AreaBit) / PLAYER_EXPLORED_ZONES_BITS;
- if (playerIndexOffset >= PLAYER_EXPLORED_ZONES_SIZE)
- continue;
-
- uint64 mask = uint64(1) << (area->AreaBit % PLAYER_EXPLORED_ZONES_BITS);
- if (referencePlayer->m_activePlayerData->ExploredZones[playerIndexOffset] & mask)
+ if (referencePlayer->HasExploredZone(j))
{
matchFound = true;
break;
@@ -2276,15 +2264,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
}
case ModifierTreeType::PlayerHasExploredArea: // 113
{
- AreaTableEntry const* areaTable = sAreaTableStore.LookupEntry(reqValue);
- if (!areaTable)
- return false;
- if (areaTable->AreaBit <= 0)
- break; // success
- size_t playerIndexOffset = size_t(areaTable->AreaBit) / PLAYER_EXPLORED_ZONES_BITS;
- if (playerIndexOffset >= PLAYER_EXPLORED_ZONES_SIZE)
- break;
- if (!(referencePlayer->m_activePlayerData->ExploredZones[playerIndexOffset] & (UI64LIT(1) << (areaTable->AreaBit % PLAYER_EXPLORED_ZONES_BITS))))
+ if (!referencePlayer->HasExploredZone(reqValue))
return false;
break;
}
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 7e2ef468878..ad53892967e 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -3089,7 +3089,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio
{
for (std::size_t i = 0; i < condition->Explored.size(); ++i)
if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(condition->Explored[i]))
- if (area->AreaBit != -1 && !(player->m_activePlayerData->ExploredZones[area->AreaBit / PLAYER_EXPLORED_ZONES_BITS] & (UI64LIT(1) << (uint32(area->AreaBit) % PLAYER_EXPLORED_ZONES_BITS))))
+ if (!player->HasExploredZone(area->ID))
return false;
}
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h
index 2a3509c1bd5..d051c0fa472 100644
--- a/src/server/game/DataStores/DB2LoadInfo.h
+++ b/src/server/game/DataStores/DB2LoadInfo.h
@@ -1259,8 +1259,8 @@ struct ConditionalChrModelLoadInfo
{
static constexpr DB2FieldMeta Fields[6] =
{
- { true, FT_INT, "ID" },
- { false, FT_INT, "ChrModelID" },
+ { false, FT_INT, "ID" },
+ { true, FT_INT, "ChrModelID" },
{ true, FT_INT, "ChrCustomizationReqID" },
{ true, FT_INT, "PlayerConditionID" },
{ true, FT_INT, "Flags" },
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index 6be4d8024cf..cdfea34a87d 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -2878,15 +2878,15 @@ struct ConditionalChrModelMeta
{
static constexpr DB2MetaField Fields[6] =
{
- { FT_INT, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 5211412, 1, 6, 6, 0x4467B29C, Fields, -1 };
+ static constexpr DB2Meta Instance{ 5211412, 0, 6, 6, 0xACE42127, Fields, 1 };
};
struct ConditionalContentTuningMeta
@@ -3095,7 +3095,7 @@ struct CovenantMeta
struct CraftingDataMeta
{
- static constexpr DB2MetaField Fields[15] =
+ static constexpr DB2MetaField Fields[16] =
{
{ FT_INT, 1, false },
{ FT_INT, 1, true },
@@ -3112,9 +3112,10 @@ struct CraftingDataMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 4545611, 0, 15, 15, 0xAC3DA43D, Fields, -1 };
+ static constexpr DB2Meta Instance{ 4545611, 0, 16, 16, 0xE8316F5C, Fields, -1 };
};
struct CraftingDataEnchantQualityMeta
@@ -8152,6 +8153,74 @@ struct ModelRibbonQualityMeta
static constexpr DB2Meta Instance{ 1399953, -1, 2, 1, 0x682023A4, Fields, 1 };
};
+struct ModelSoundMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5393273, -1, 2, 2, 0x9A4E453C, Fields, -1 };
+};
+
+struct ModelSoundAnimEntryMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5393274, -1, 2, 2, 0x98809C50, Fields, 0 };
+};
+
+struct ModelSoundEntryMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5393275, -1, 1, 1, 0x870082C7, Fields, 0 };
+};
+
+struct ModelSoundOverrideMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5393276, -1, 2, 2, 0x5A6FC74A, Fields, 0 };
+};
+
+struct ModelSoundOverrideNameMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_STRING_NOT_LOCALIZED, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5512584, -1, 1, 1, 0x0F422F8A, Fields, -1 };
+};
+
+struct ModelSoundTagEntryMeta
+{
+ static constexpr DB2MetaField Fields[6] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5393277, -1, 6, 6, 0x66973320, Fields, 5 };
+};
+
struct ModifiedCraftingCategoryMeta
{
static constexpr DB2MetaField Fields[5] =
@@ -8913,6 +8982,19 @@ struct PerksActivityMeta
static constexpr DB2Meta Instance{ 4519766, 2, 7, 7, 0x4FF9AFB2, Fields, -1 };
};
+struct PerksActivityConditionMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5524226, 0, 4, 3, 0x6DD21FC7, Fields, 3 };
+};
+
struct PerksActivityTagMeta
{
static constexpr DB2MetaField Fields[2] =
@@ -9042,14 +9124,15 @@ struct PerksVendorItemUIGroupMeta
struct PerksVendorItemUIInfoMeta
{
- static constexpr DB2MetaField Fields[3] =
+ static constexpr DB2MetaField Fields[4] =
{
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 4281312, 0, 3, 3, 0x6D14E9E7, Fields, -1 };
+ static constexpr DB2Meta Instance{ 4281312, 0, 4, 4, 0x8F2F6861, Fields, -1 };
};
struct PerksVendorItemXIntervalMeta
@@ -9213,6 +9296,26 @@ struct PlayerConditionMeta
static constexpr DB2Meta Instance{ 1045411, -1, 84, 84, 0xEE0F1EDC, Fields, -1 };
};
+struct PlayerDataFlagAccountMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5426706, -1, 1, 1, 0x5C476AE6, Fields, -1 };
+};
+
+struct PlayerDataFlagCharacterMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5426708, -1, 1, 1, 0x5C476AE6, Fields, -1 };
+};
+
struct PositionerMeta
{
static constexpr DB2MetaField Fields[4] =
@@ -13120,7 +13223,7 @@ struct UIDungeonScoreRarityMeta
struct UIEventToastMeta
{
- static constexpr DB2MetaField Fields[21] =
+ static constexpr DB2MetaField Fields[22] =
{
{ FT_STRING, 1, true },
{ FT_STRING, 1, true },
@@ -13143,9 +13246,10 @@ struct UIEventToastMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 3946498, 6, 21, 21, 0x1B94BDE2, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3946498, 6, 22, 22, 0xE0B754D7, Fields, -1 };
};
struct UIExpansionDisplayInfoMeta
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index ec9455dd343..8c849f43061 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -457,6 +457,7 @@ namespace
std::unordered_map<std::pair<uint8 /*race*/, uint8/*gender*/>, std::vector<ChrCustomizationOptionEntry const*>> _chrCustomizationOptionsByRaceAndGender;
std::unordered_map<uint32 /*chrCustomizationReqId*/, std::vector<std::pair<uint32 /*chrCustomizationOptionId*/, std::vector<uint32>>>> _chrCustomizationRequiredChoices;
ChrSpecializationByIndexContainer _chrSpecializationsByIndex;
+ std::unordered_map<int32, ConditionalChrModelEntry const*> _conditionalChrModelsByChrModelId;
std::unordered_multimap<uint32, ConditionalContentTuningEntry const*> _conditionalContentTuning;
std::unordered_set<std::pair<uint32, int32>> _contentTuningLabels;
std::unordered_multimap<uint32, CurrencyContainerEntry const*> _currencyContainers;
@@ -987,13 +988,13 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul
}
// Check loaded DB2 files proper version
- if (!sAreaTableStore.LookupEntry(14720) || // last area added in 10.0.7 (48520)
- !sCharTitlesStore.LookupEntry(762) || // last char title added in 10.0.7 (48520)
- !sGemPropertiesStore.LookupEntry(4059) || // last gem property added in 10.0.7 (48520)
- !sItemStore.LookupEntry(205244) || // last item added in 10.0.7 (48520)
- !sItemExtendedCostStore.LookupEntry(8043) || // last item extended cost added in 10.0.7 (48520)
- !sMapStore.LookupEntry(2616) || // last map added in 10.0.7 (48520)
- !sSpellNameStore.LookupEntry(409033)) // last spell added in 10.0.7 (48520)
+ if (!sAreaTableStore.LookupEntry(15151) || // last area added in 10.2.5 (53007)
+ !sCharTitlesStore.LookupEntry(805) || // last char title added in 10.2.5 (53007)
+ !sGemPropertiesStore.LookupEntry(4081) || // last gem property added in 10.2.5 (53007)
+ !sItemStore.LookupEntry(215160) || // last item added in 10.2.5 (53007)
+ !sItemExtendedCostStore.LookupEntry(8510) || // last item extended cost added in 10.2.5 (53007)
+ !sMapStore.LookupEntry(2708) || // last map added in 10.2.5 (53007)
+ !sSpellNameStore.LookupEntry(438878)) // last spell added in 10.2.5 (53007)
{
TC_LOG_ERROR("misc", "You have _outdated_ DB2 files. Please extract correct versions from current using client.");
exit(1);
@@ -1002,6 +1003,12 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul
for (AreaGroupMemberEntry const* areaGroupMember : sAreaGroupMemberStore)
_areaGroupMembers[areaGroupMember->AreaGroupID].push_back(areaGroupMember->AreaID);
+ for (AreaTableEntry const* areaTable : sAreaTableStore)
+ {
+ ASSERT(areaTable->AreaBit <= 0 || (size_t(areaTable->AreaBit / 64) < PLAYER_EXPLORED_ZONES_SIZE),
+ "PLAYER_EXPLORED_ZONES_SIZE must be at least %d", (areaTable->AreaBit + 63) / 64);
+ }
+
for (ArtifactPowerEntry const* artifactPower : sArtifactPowerStore)
_artifactPowers[artifactPower->ArtifactID].push_back(artifactPower);
@@ -1199,6 +1206,9 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul
_chrSpecializationsByIndex[storageIndex][chrSpec->OrderIndex] = chrSpec;
}
+ for (ConditionalChrModelEntry const* conditionalChrModel : sConditionalChrModelStore)
+ _conditionalChrModelsByChrModelId[conditionalChrModel->ChrModelID] = conditionalChrModel;
+
for (ConditionalContentTuningEntry const* conditionalContentTuning : sConditionalContentTuningStore)
_conditionalContentTuning.emplace(conditionalContentTuning->ParentContentTuningID, conditionalContentTuning);
@@ -2057,6 +2067,11 @@ ChrModelEntry const* DB2Manager::GetChrModel(uint8 race, uint8 gender) const
return Trinity::Containers::MapGetValuePtr(_chrModelsByRaceAndGender, { race, gender });
}
+ConditionalChrModelEntry const* DB2Manager::GetConditionalChrModel(int32 chrModelId)
+{
+ return Trinity::Containers::MapGetValuePtr(_conditionalChrModelsByChrModelId, chrModelId);
+}
+
char const* DB2Manager::GetChrRaceName(uint8 race, LocaleConstant locale /*= DEFAULT_LOCALE*/)
{
ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race);
diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h
index 21a0bcf07de..91609057a35 100644
--- a/src/server/game/DataStores/DB2Stores.h
+++ b/src/server/game/DataStores/DB2Stores.h
@@ -443,6 +443,7 @@ public:
std::vector<ChrCustomizationOptionEntry const*> const* GetCustomiztionOptions(uint8 race, uint8 gender) const;
std::vector<std::pair<uint32, std::vector<uint32>>> const* GetRequiredCustomizationChoices(uint32 chrCustomizationReqId) const;
ChrModelEntry const* GetChrModel(uint8 race, uint8 gender) const;
+ static ConditionalChrModelEntry const* GetConditionalChrModel(int32 chrModelId);
static char const* GetChrRaceName(uint8 race, LocaleConstant locale = DEFAULT_LOCALE);
ChrSpecializationEntry const* GetChrSpecializationByIndex(uint32 class_, uint32 index) const;
ChrSpecializationEntry const* GetDefaultChrSpecializationForClass(uint32 class_) const;
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index acf4c98c77a..455b3f78ea8 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -897,8 +897,8 @@ struct CinematicSequencesEntry
struct ConditionalChrModelEntry
{
- int32 ID;
- uint32 ChrModelID; // This is the PK
+ uint32 ID;
+ int32 ChrModelID;
int32 ChrCustomizationReqID;
int32 PlayerConditionID;
int32 Flags;
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index db4ef4082a2..c39c4cd9626 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -163,6 +163,8 @@ enum class AreaFlags2 : uint32
DEFINE_ENUM_FLAG(AreaFlags2);
+inline constexpr size_t PLAYER_EXPLORED_ZONES_SIZE = 240;
+
enum class AreaMountFlags : uint8
{
None = 0x0,
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 6905966e567..a8077ffae0b 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -222,7 +222,10 @@ WorldPacket CreatureTemplate::BuildQueryData(LocaleConstant loc, Difficulty diff
stats.CursorName = IconName;
if (std::vector<uint32> const* items = sObjectMgr->GetCreatureQuestItemList(Entry, difficulty))
- stats.QuestItems.insert(stats.QuestItems.begin(), items->begin(), items->end());
+ stats.QuestItems.assign(items->begin(), items->end());
+
+ if (std::vector<int32> const* currencies = sObjectMgr->GetCreatureQuestCurrencyList(Entry))
+ stats.QuestCurrencies.assign(currencies->begin(), currencies->end());
if (loc != LOCALE_enUS)
if (CreatureLocale const* creatureLocale = sObjectMgr->GetCreatureLocale(Entry))
diff --git a/src/server/game/Entities/Object/Updates/UpdateField.h b/src/server/game/Entities/Object/Updates/UpdateField.h
index 74b0176851c..fdad7e0d18e 100644
--- a/src/server/game/Entities/Object/Updates/UpdateField.h
+++ b/src/server/game/Entities/Object/Updates/UpdateField.h
@@ -214,11 +214,11 @@ namespace UF
_updateMask[block] |= UpdateMaskHelpers::GetBlockFlag(index);
}
- void MarkNewValue(T&, std::false_type)
+ static void MarkNewValue(T&, std::false_type)
{
}
- void MarkNewValue(T& value, std::true_type)
+ static void MarkNewValue(T& value, std::true_type)
{
value._changesMask.SetAll();
}
@@ -278,7 +278,11 @@ namespace UF
ModifyValue(UpdateFieldArray<V, Size, Bit, FirstElementBit>(T::* field), uint32 index)
{
_value._changesMask.Set(Bit);
- _value._changesMask.Set(FirstElementBit + index);
+ if constexpr (!std::is_base_of_v<IsUpdateFieldHolderTag, V>)
+ _value._changesMask.Set(FirstElementBit + index);
+ else
+ _value._changesMask.Set(FirstElementBit);
+
return { (_value.*field)._values[index] };
}
@@ -536,7 +540,10 @@ namespace UF
static_assert(std::is_base_of_v<Base, Derived>, "Given field argument must belong to the same structure as this HasChangesMask");
_changesMask.Set(Bit);
- _changesMask.Set(FirstElementBit + index);
+ if constexpr (!std::is_base_of_v<IsUpdateFieldHolderTag, T>)
+ _changesMask.Set(FirstElementBit + index);
+ else
+ _changesMask.Set(FirstElementBit);
}
template<typename Derived, typename T, int32 BlockBit, uint32 Bit>
@@ -574,7 +581,10 @@ namespace UF
{
static_assert(std::is_base_of_v<Base, Derived>, "Given field argument must belong to the same structure as this HasChangesMask");
- _changesMask.Reset(FirstElementBit + index);
+ if constexpr (!std::is_base_of_v<IsUpdateFieldHolderTag, T>)
+ _changesMask.Reset(FirstElementBit + index);
+ else
+ _changesMask.Reset(FirstElementBit);
}
template<typename Derived, typename T, int32 BlockBit, uint32 Bit>
@@ -596,64 +606,64 @@ namespace UF
protected:
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(UpdateField<T, BlockBit, Bit>& field)
+ static void ClearChangesMask(UpdateField<T, BlockBit, Bit>& field)
{
ClearChangesMask(field, std::is_base_of<HasChangesMaskTag, T>{});
}
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(UpdateField<T, BlockBit, Bit>&, std::false_type) { }
+ static void ClearChangesMask(UpdateField<T, BlockBit, Bit>&, std::false_type) { }
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(UpdateField<T, BlockBit, Bit>& field, std::true_type)
+ static void ClearChangesMask(UpdateField<T, BlockBit, Bit>& field, std::true_type)
{
field._value.ClearChangesMask();
}
template<typename T, std::size_t Size, uint32 Bit, uint32 FirstElementBit>
- void ClearChangesMask(UpdateFieldArray<T, Size, Bit, FirstElementBit>& field)
+ static void ClearChangesMask(UpdateFieldArray<T, Size, Bit, FirstElementBit>& field)
{
- ClearChangesMask(field, std::is_base_of<HasChangesMaskTag, T>{});
+ ClearChangesMask(field, std::disjunction<std::is_base_of<HasChangesMaskTag, T>, std::is_base_of<IsUpdateFieldHolderTag, T>>{});
}
template<typename T, std::size_t Size, uint32 Bit, uint32 FirstElementBit>
- void ClearChangesMask(UpdateFieldArray<T, Size, Bit, FirstElementBit>&, std::false_type) { }
+ static void ClearChangesMask(UpdateFieldArray<T, Size, Bit, FirstElementBit>&, std::false_type) { }
template<typename T, std::size_t Size, uint32 Bit, uint32 FirstElementBit>
- void ClearChangesMask(UpdateFieldArray<T, Size, Bit, FirstElementBit>& field, std::true_type)
+ static void ClearChangesMask(UpdateFieldArray<T, Size, Bit, FirstElementBit>& field, std::true_type)
{
for (uint32 i = 0; i < Size; ++i)
field._values[i].ClearChangesMask();
}
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(DynamicUpdateField<T, BlockBit, Bit>& field)
+ static void ClearChangesMask(DynamicUpdateField<T, BlockBit, Bit>& field)
{
ClearChangesMask(field, std::is_base_of<HasChangesMaskTag, T>{});
field.ClearChangesMask();
}
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(DynamicUpdateField<T, BlockBit, Bit>&, std::false_type) { }
+ static void ClearChangesMask(DynamicUpdateField<T, BlockBit, Bit>&, std::false_type) { }
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(DynamicUpdateField<T, BlockBit, Bit>& field, std::true_type)
+ static void ClearChangesMask(DynamicUpdateField<T, BlockBit, Bit>& field, std::true_type)
{
for (uint32 i = 0; i < field._values.size(); ++i)
field._values[i].ClearChangesMask();
}
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(OptionalUpdateField<T, BlockBit, Bit>& field)
+ static void ClearChangesMask(OptionalUpdateField<T, BlockBit, Bit>& field)
{
ClearChangesMask(field, std::is_base_of<HasChangesMaskTag, T>{});
}
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(OptionalUpdateField<T, BlockBit, Bit>&, std::false_type) { }
+ static void ClearChangesMask(OptionalUpdateField<T, BlockBit, Bit>&, std::false_type) { }
template<typename T, int32 BlockBit, uint32 Bit>
- void ClearChangesMask(OptionalUpdateField<T, BlockBit, Bit>& field, std::true_type)
+ static void ClearChangesMask(OptionalUpdateField<T, BlockBit, Bit>& field, std::true_type)
{
if (field.has_value())
field._value->ClearChangesMask();
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 2a4402603e9..6f02ac0e838 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -4104,9 +4104,13 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << float(VersatilityBonus);
data << float(PvpPowerDamage);
data << float(PvpPowerHealing);
- for (uint32 i = 0; i < 240; ++i)
+ for (uint32 i = 0; i < 8; ++i)
{
- data << uint64(ExploredZones[i]);
+ data << uint32(DataFlags[i].size());
+ for (uint32 j = 0; j < DataFlags[i].size(); ++j)
+ {
+ data << uint64(DataFlags[i][j]);
+ }
}
for (uint32 i = 0; i < 2; ++i)
{
@@ -4185,7 +4189,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
data << uint32(BankBagSlotFlags[i]);
}
- for (uint32 i = 0; i < 875; ++i)
+ for (uint32 i = 0; i < 950; ++i)
{
data << uint64(QuestCompleted[i]);
}
@@ -4399,8 +4403,8 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
{
for (uint32 i = 0; i < 1; ++i)
data << uint32(changesMask.GetBlocksMask(i));
- data.WriteBits(changesMask.GetBlocksMask(1), 19);
- for (uint32 i = 0; i < 51; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(1), 14);
+ for (uint32 i = 0; i < 46; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -4437,6 +4441,38 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
else
WriteCompleteDynamicFieldUpdateMask(KnownTitles.size(), data);
}
+ }
+ if (changesMask[36])
+ {
+ for (uint32 i = 0; i < 8; ++i)
+ {
+ if (changesMask[37])
+ {
+ if (!ignoreNestedChangesMask)
+ DataFlags[i].WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(DataFlags[i].size(), data);
+ }
+ }
+ }
+ if (changesMask[36])
+ {
+ for (uint32 i = 0; i < 8; ++i)
+ {
+ if (changesMask[37])
+ {
+ for (uint32 j = 0; j < DataFlags[i].size(); ++j)
+ {
+ if (DataFlags[i].HasChanged(j) || ignoreNestedChangesMask)
+ {
+ data << uint64(DataFlags[i][j]);
+ }
+ }
+ }
+ }
+ }
+ if (changesMask[0])
+ {
if (changesMask[8])
{
if (!ignoreNestedChangesMask)
@@ -4445,11 +4481,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data);
}
}
- if (changesMask[36])
+ if (changesMask[38])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[37 + i])
+ if (changesMask[39])
{
if (!ignoreNestedChangesMask)
ResearchSites[i].WriteUpdateMask(data);
@@ -4458,11 +4494,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[38])
+ if (changesMask[40])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[39 + i])
+ if (changesMask[41])
{
if (!ignoreNestedChangesMask)
ResearchSiteProgress[i].WriteUpdateMask(data);
@@ -4471,11 +4507,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[40])
+ if (changesMask[42])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[41 + i])
+ if (changesMask[43])
{
if (!ignoreNestedChangesMask)
Research[i].WriteUpdateMask(data);
@@ -4484,11 +4520,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[36])
+ if (changesMask[38])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[37 + i])
+ if (changesMask[39])
{
for (uint32 j = 0; j < ResearchSites[i].size(); ++j)
{
@@ -4500,11 +4536,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[38])
+ if (changesMask[40])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[39 + i])
+ if (changesMask[41])
{
for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j)
{
@@ -4516,11 +4552,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[40])
+ if (changesMask[42])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[41 + i])
+ if (changesMask[43])
{
for (uint32 j = 0; j < Research[i].size(); ++j)
{
@@ -5013,345 +5049,345 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[32])
{
- if (changesMask[42])
+ if (changesMask[44])
{
data << FarsightObject;
}
- if (changesMask[43])
+ if (changesMask[45])
{
data << SummonedBattlePetGUID;
}
- if (changesMask[44])
+ if (changesMask[46])
{
data << uint64(Coinage);
}
- if (changesMask[45])
+ if (changesMask[47])
{
data << int32(XP);
}
- if (changesMask[46])
+ if (changesMask[48])
{
data << int32(NextLevelXP);
}
- if (changesMask[47])
+ if (changesMask[49])
{
data << int32(TrialXP);
}
- if (changesMask[48])
+ if (changesMask[50])
{
Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[49])
+ if (changesMask[51])
{
data << int32(CharacterPoints);
}
- if (changesMask[50])
+ if (changesMask[52])
{
data << int32(MaxTalentTiers);
}
- if (changesMask[51])
+ if (changesMask[53])
{
data << uint32(TrackCreatureMask);
}
- if (changesMask[52])
+ if (changesMask[54])
{
data << float(MainhandExpertise);
}
- if (changesMask[53])
+ if (changesMask[55])
{
data << float(OffhandExpertise);
}
- if (changesMask[54])
+ if (changesMask[56])
{
data << float(RangedExpertise);
}
- if (changesMask[55])
+ if (changesMask[57])
{
data << float(CombatRatingExpertise);
}
- if (changesMask[56])
+ if (changesMask[58])
{
data << float(BlockPercentage);
}
- if (changesMask[57])
+ if (changesMask[59])
{
data << float(DodgePercentage);
}
- if (changesMask[58])
+ if (changesMask[60])
{
data << float(DodgePercentageFromAttribute);
}
- if (changesMask[59])
+ if (changesMask[61])
{
data << float(ParryPercentage);
}
- if (changesMask[60])
+ if (changesMask[62])
{
data << float(ParryPercentageFromAttribute);
}
- if (changesMask[61])
+ if (changesMask[63])
{
data << float(CritPercentage);
}
- if (changesMask[62])
+ if (changesMask[64])
{
data << float(RangedCritPercentage);
}
- if (changesMask[63])
+ if (changesMask[65])
{
data << float(OffhandCritPercentage);
}
- if (changesMask[64])
+ if (changesMask[66])
{
data << float(SpellCritPercentage);
}
- if (changesMask[65])
+ if (changesMask[67])
{
data << int32(ShieldBlock);
}
- if (changesMask[66])
+ if (changesMask[68])
{
data << float(ShieldBlockCritPercentage);
}
- if (changesMask[67])
+ if (changesMask[69])
{
data << float(Mastery);
}
- if (changesMask[68])
+ if (changesMask[70])
{
data << float(Speed);
}
- if (changesMask[69])
+ if (changesMask[71])
{
data << float(Avoidance);
}
}
- if (changesMask[70])
+ if (changesMask[72])
{
- if (changesMask[71])
+ if (changesMask[73])
{
data << float(Sturdiness);
}
- if (changesMask[72])
+ if (changesMask[74])
{
data << int32(Versatility);
}
- if (changesMask[73])
+ if (changesMask[75])
{
data << float(VersatilityBonus);
}
- if (changesMask[74])
+ if (changesMask[76])
{
data << float(PvpPowerDamage);
}
- if (changesMask[75])
+ if (changesMask[77])
{
data << float(PvpPowerHealing);
}
- if (changesMask[76])
+ if (changesMask[78])
{
data << int32(ModHealingDonePos);
}
- if (changesMask[77])
+ if (changesMask[79])
{
data << float(ModHealingPercent);
}
- if (changesMask[78])
+ if (changesMask[80])
{
data << float(ModPeriodicHealingDonePercent);
}
- if (changesMask[79])
+ if (changesMask[81])
{
data << float(ModSpellPowerPercent);
}
- if (changesMask[80])
+ if (changesMask[82])
{
data << float(ModResiliencePercent);
}
- if (changesMask[81])
+ if (changesMask[83])
{
data << float(OverrideSpellPowerByAPPercent);
}
- if (changesMask[82])
+ if (changesMask[84])
{
data << float(OverrideAPBySpellPowerPercent);
}
- if (changesMask[83])
+ if (changesMask[85])
{
data << int32(ModTargetResistance);
}
- if (changesMask[84])
+ if (changesMask[86])
{
data << int32(ModTargetPhysicalResistance);
}
- if (changesMask[85])
+ if (changesMask[87])
{
data << uint32(LocalFlags);
}
- if (changesMask[86])
+ if (changesMask[88])
{
data << uint8(GrantableLevels);
}
- if (changesMask[87])
+ if (changesMask[89])
{
data << uint8(MultiActionBars);
}
- if (changesMask[88])
+ if (changesMask[90])
{
data << uint8(LifetimeMaxRank);
}
- if (changesMask[89])
+ if (changesMask[91])
{
data << uint8(NumRespecs);
}
- if (changesMask[90])
+ if (changesMask[92])
{
data << uint32(PvpMedals);
}
- if (changesMask[91])
+ if (changesMask[93])
{
data << uint16(TodayHonorableKills);
}
- if (changesMask[92])
+ if (changesMask[94])
{
data << uint16(YesterdayHonorableKills);
}
- if (changesMask[93])
+ if (changesMask[95])
{
data << uint32(LifetimeHonorableKills);
}
- if (changesMask[94])
+ if (changesMask[96])
{
data << int32(WatchedFactionIndex);
}
- if (changesMask[95])
+ if (changesMask[97])
{
data << int32(MaxLevel);
}
- if (changesMask[96])
+ if (changesMask[98])
{
data << int32(ScalingPlayerLevelDelta);
}
- if (changesMask[97])
+ if (changesMask[99])
{
data << int32(MaxCreatureScalingLevel);
}
- if (changesMask[98])
+ if (changesMask[100])
{
data << int32(PetSpellPower);
}
- if (changesMask[99])
+ if (changesMask[101])
{
data << float(UiHitModifier);
}
- if (changesMask[100])
+ if (changesMask[102])
{
data << float(UiSpellHitModifier);
}
- if (changesMask[101])
+ if (changesMask[103])
{
data << int32(HomeRealmTimeOffset);
}
}
- if (changesMask[102])
+ if (changesMask[104])
{
- if (changesMask[103])
+ if (changesMask[105])
{
data << float(ModPetHaste);
}
- if (changesMask[104])
+ if (changesMask[106])
{
data << int8(JailersTowerLevelMax);
}
- if (changesMask[105])
+ if (changesMask[107])
{
data << int8(JailersTowerLevel);
}
- if (changesMask[106])
+ if (changesMask[108])
{
data << uint8(LocalRegenFlags);
}
- if (changesMask[107])
+ if (changesMask[109])
{
data << uint8(AuraVision);
}
- if (changesMask[108])
+ if (changesMask[110])
{
data << uint8(NumBackpackSlots);
}
- if (changesMask[109])
+ if (changesMask[111])
{
data << int32(OverrideSpellsID);
}
- if (changesMask[110])
+ if (changesMask[112])
{
data << uint16(LootSpecID);
}
- if (changesMask[111])
+ if (changesMask[113])
{
data << uint32(OverrideZonePVPType);
}
- if (changesMask[112])
+ if (changesMask[114])
{
data << int32(Honor);
}
- if (changesMask[113])
+ if (changesMask[115])
{
data << int32(HonorNextLevel);
}
- if (changesMask[114])
+ if (changesMask[116])
{
data << int32(PerksProgramCurrency);
}
- if (changesMask[115])
+ if (changesMask[117])
{
data << uint8(NumBankSlots);
}
- if (changesMask[120])
+ if (changesMask[122])
{
data << int32(UiChromieTimeExpansionID);
}
- if (changesMask[121])
+ if (changesMask[123])
{
data << int32(TransportServerTime);
}
- if (changesMask[122])
+ if (changesMask[124])
{
data << uint32(WeeklyRewardsPeriodSinceOrigin);
}
- if (changesMask[123])
+ if (changesMask[125])
{
data << int16(DEBUGSoulbindConduitRank);
}
- if (changesMask[125])
+ if (changesMask[127])
{
data << uint32(ActiveCombatTraitConfigID);
}
- if (changesMask[126])
+ if (changesMask[128])
{
data << int32(ItemUpgradeHighOnehandWeaponItemID);
}
- if (changesMask[127])
+ if (changesMask[129])
{
data << int32(ItemUpgradeHighFingerItemID);
}
- if (changesMask[128])
+ if (changesMask[130])
{
data << float(ItemUpgradeHighFingerWatermark);
}
- if (changesMask[129])
+ if (changesMask[131])
{
data << int32(ItemUpgradeHighTrinketItemID);
}
- if (changesMask[130])
+ if (changesMask[132])
{
data << float(ItemUpgradeHighTrinketWatermark);
}
- if (changesMask[131])
+ if (changesMask[133])
{
data << uint64(LootHistoryInstanceID);
}
- if (changesMask[133])
+ if (changesMask[135])
{
data << uint8(RequiredMountCapabilityFlags);
}
@@ -5359,32 +5395,32 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.WriteBits(PetStable.has_value(), 1);
}
data.FlushBits();
- if (changesMask[102])
+ if (changesMask[104])
{
- if (changesMask[116])
+ if (changesMask[118])
{
ResearchHistory->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[118])
+ if (changesMask[120])
{
if (QuestSession.has_value())
{
QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[117])
+ if (changesMask[119])
{
data << FrozenPerksVendorItem;
}
- if (changesMask[119])
+ if (changesMask[121])
{
Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[124])
+ if (changesMask[126])
{
data << DungeonScore;
}
- if (changesMask[132])
+ if (changesMask[134])
{
if (PetStable.has_value())
{
@@ -5392,151 +5428,141 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[134])
+ if (changesMask[136])
{
for (uint32 i = 0; i < 227; ++i)
{
- if (changesMask[135 + i])
+ if (changesMask[137 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[362])
- {
- for (uint32 i = 0; i < 240; ++i)
- {
- if (changesMask[363 + i])
- {
- data << uint64(ExploredZones[i]);
- }
- }
- }
- if (changesMask[603])
+ if (changesMask[364])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[604 + i])
+ if (changesMask[365 + i])
{
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[606])
+ if (changesMask[367])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[607 + i])
+ if (changesMask[368 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[614 + i])
+ if (changesMask[375 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[621 + i])
+ if (changesMask[382 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[628 + i])
+ if (changesMask[389 + i])
{
data << float(ModHealingDonePercent[i]);
}
}
}
- if (changesMask[635])
+ if (changesMask[396])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[636 + i])
+ if (changesMask[397 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[639 + i])
+ if (changesMask[400 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[642])
+ if (changesMask[403])
{
for (uint32 i = 0; i < 12; ++i)
{
- if (changesMask[643 + i])
+ if (changesMask[404 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[655 + i])
+ if (changesMask[416 + i])
{
data << int64(BuybackTimestamp[i]);
}
}
}
- if (changesMask[667])
+ if (changesMask[428])
{
for (uint32 i = 0; i < 32; ++i)
{
- if (changesMask[668 + i])
+ if (changesMask[429 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[700])
+ if (changesMask[461])
{
for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[701 + i])
+ if (changesMask[462 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[705])
+ if (changesMask[466])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[706 + i])
+ if (changesMask[467 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[708])
+ if (changesMask[469])
{
for (uint32 i = 0; i < 5; ++i)
{
- if (changesMask[709 + i])
+ if (changesMask[470 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[714])
+ if (changesMask[475])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[715 + i])
+ if (changesMask[476 + i])
{
data << uint32(BankBagSlotFlags[i]);
}
}
}
- if (changesMask[722])
+ if (changesMask[483])
{
- for (uint32 i = 0; i < 875; ++i)
+ for (uint32 i = 0; i < 950; ++i)
{
- if (changesMask[723 + i])
+ if (changesMask[484 + i])
{
data << uint64(QuestCompleted[i]);
}
}
}
- if (changesMask[1598])
+ if (changesMask[1434])
{
for (uint32 i = 0; i < 17; ++i)
{
- if (changesMask[1599 + i])
+ if (changesMask[1435 + i])
{
data << float(ItemUpgradeHighWatermark[i]);
}
@@ -5553,6 +5579,7 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(SortBagsRightToLeft);
Base::ClearChangesMask(InsertItemsLeftToRight);
Base::ClearChangesMask(HasPerksProgramPendingReward);
+ Base::ClearChangesMask(DataFlags);
Base::ClearChangesMask(ResearchSites);
Base::ClearChangesMask(ResearchSiteProgress);
Base::ClearChangesMask(Research);
@@ -5675,7 +5702,6 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(PetStable);
Base::ClearChangesMask(RequiredMountCapabilityFlags);
Base::ClearChangesMask(InvSlots);
- Base::ClearChangesMask(ExploredZones);
Base::ClearChangesMask(RestInfo);
Base::ClearChangesMask(ModDamageDonePos);
Base::ClearChangesMask(ModDamageDoneNeg);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 96eb02620b3..d3458ea8e67 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -798,10 +798,10 @@ struct CraftingOrder : public IsUpdateFieldStructureTag, public HasChangesMask<4
void ClearChangesMask();
};
-struct PersonalCraftingOrderCount : public IsUpdateFieldStructureTag, public HasChangesMask<3>
+struct PersonalCraftingOrderCount : public IsUpdateFieldStructureTag, public HasChangesMask<2>
{
- UpdateField<int32, 0, 1> ProfessionID;
- UpdateField<uint32, 0, 2> Count;
+ UpdateField<int32, -1, 0> ProfessionID;
+ UpdateField<uint32, -1, 1> Count;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
@@ -876,7 +876,7 @@ struct Research : public IsUpdateFieldStructureTag
bool operator!=(Research const& right) const { return !(*this == right); }
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1616>
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1452>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
UpdateField<bool, 0, 2> BackpackSellJunkDisabled;
@@ -884,9 +884,10 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateField<bool, 0, 4> SortBagsRightToLeft;
UpdateField<bool, 0, 5> InsertItemsLeftToRight;
UpdateField<bool, 0, 6> HasPerksProgramPendingReward;
- UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 36, 37> ResearchSites;
- UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 38, 39> ResearchSiteProgress;
- UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 40, 41> Research;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint64>, 8, 36, 37> DataFlags;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 38, 39> ResearchSites;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 40, 41> ResearchSiteProgress;
+ UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 42, 43> Research;
DynamicUpdateField<uint64, 0, 7> KnownTitles;
DynamicUpdateField<int32, 0, 9> DailyQuestsCompleted;
DynamicUpdateField<int32, 0, 10> AvailableQuestLineXQuestIDs;
@@ -915,114 +916,113 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
DynamicUpdateField<UF::CharacterRestriction, 0, 20> CharacterRestrictions;
DynamicUpdateField<UF::TraitConfig, 0, 29> TraitConfigs;
DynamicUpdateField<UF::CraftingOrder, 0, 30> CraftingOrders;
- UpdateField<ObjectGuid, 32, 42> FarsightObject;
- UpdateField<ObjectGuid, 32, 43> SummonedBattlePetGUID;
- UpdateField<uint64, 32, 44> Coinage;
- UpdateField<int32, 32, 45> XP;
- UpdateField<int32, 32, 46> NextLevelXP;
- UpdateField<int32, 32, 47> TrialXP;
- UpdateField<UF::SkillInfo, 32, 48> Skill;
- UpdateField<int32, 32, 49> CharacterPoints;
- UpdateField<int32, 32, 50> MaxTalentTiers;
- UpdateField<uint32, 32, 51> TrackCreatureMask;
- UpdateField<float, 32, 52> MainhandExpertise;
- UpdateField<float, 32, 53> OffhandExpertise;
- UpdateField<float, 32, 54> RangedExpertise;
- UpdateField<float, 32, 55> CombatRatingExpertise;
- UpdateField<float, 32, 56> BlockPercentage;
- UpdateField<float, 32, 57> DodgePercentage;
- UpdateField<float, 32, 58> DodgePercentageFromAttribute;
- UpdateField<float, 32, 59> ParryPercentage;
- UpdateField<float, 32, 60> ParryPercentageFromAttribute;
- UpdateField<float, 32, 61> CritPercentage;
- UpdateField<float, 32, 62> RangedCritPercentage;
- UpdateField<float, 32, 63> OffhandCritPercentage;
- UpdateField<float, 32, 64> SpellCritPercentage;
- UpdateField<int32, 32, 65> ShieldBlock;
- UpdateField<float, 32, 66> ShieldBlockCritPercentage;
- UpdateField<float, 32, 67> Mastery;
- UpdateField<float, 32, 68> Speed;
- UpdateField<float, 32, 69> Avoidance;
- UpdateField<float, 70, 71> Sturdiness;
- UpdateField<int32, 70, 72> Versatility;
- UpdateField<float, 70, 73> VersatilityBonus;
- UpdateField<float, 70, 74> PvpPowerDamage;
- UpdateField<float, 70, 75> PvpPowerHealing;
- UpdateField<int32, 70, 76> ModHealingDonePos;
- UpdateField<float, 70, 77> ModHealingPercent;
- UpdateField<float, 70, 78> ModPeriodicHealingDonePercent;
- UpdateField<float, 70, 79> ModSpellPowerPercent;
- UpdateField<float, 70, 80> ModResiliencePercent;
- UpdateField<float, 70, 81> OverrideSpellPowerByAPPercent;
- UpdateField<float, 70, 82> OverrideAPBySpellPowerPercent;
- UpdateField<int32, 70, 83> ModTargetResistance;
- UpdateField<int32, 70, 84> ModTargetPhysicalResistance;
- UpdateField<uint32, 70, 85> LocalFlags;
- UpdateField<uint8, 70, 86> GrantableLevels;
- UpdateField<uint8, 70, 87> MultiActionBars;
- UpdateField<uint8, 70, 88> LifetimeMaxRank;
- UpdateField<uint8, 70, 89> NumRespecs;
- UpdateField<uint32, 70, 90> PvpMedals;
- UpdateField<uint16, 70, 91> TodayHonorableKills;
- UpdateField<uint16, 70, 92> YesterdayHonorableKills;
- UpdateField<uint32, 70, 93> LifetimeHonorableKills;
- UpdateField<int32, 70, 94> WatchedFactionIndex;
- UpdateField<int32, 70, 95> MaxLevel;
- UpdateField<int32, 70, 96> ScalingPlayerLevelDelta;
- UpdateField<int32, 70, 97> MaxCreatureScalingLevel;
- UpdateField<int32, 70, 98> PetSpellPower;
- UpdateField<float, 70, 99> UiHitModifier;
- UpdateField<float, 70, 100> UiSpellHitModifier;
- UpdateField<int32, 70, 101> HomeRealmTimeOffset;
- UpdateField<float, 102, 103> ModPetHaste;
- UpdateField<int8, 102, 104> JailersTowerLevelMax;
- UpdateField<int8, 102, 105> JailersTowerLevel;
- UpdateField<uint8, 102, 106> LocalRegenFlags;
- UpdateField<uint8, 102, 107> AuraVision;
- UpdateField<uint8, 102, 108> NumBackpackSlots;
- UpdateField<int32, 102, 109> OverrideSpellsID;
- UpdateField<uint16, 102, 110> LootSpecID;
- UpdateField<uint32, 102, 111> OverrideZonePVPType;
- UpdateField<int32, 102, 112> Honor;
- UpdateField<int32, 102, 113> HonorNextLevel;
- UpdateField<int32, 102, 114> PerksProgramCurrency;
- UpdateField<uint8, 102, 115> NumBankSlots;
- UpdateField<UF::ResearchHistory, 102, 116> ResearchHistory;
- UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 117> FrozenPerksVendorItem;
- UpdateField<UF::ActivePlayerUnk901, 102, 119> Field_1410;
- OptionalUpdateField<UF::QuestSession, 102, 118> QuestSession;
- UpdateField<int32, 102, 120> UiChromieTimeExpansionID;
- UpdateField<int32, 102, 121> TransportServerTime;
- UpdateField<uint32, 102, 122> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
- UpdateField<int16, 102, 123> DEBUGSoulbindConduitRank;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 102, 124> DungeonScore;
- UpdateField<uint32, 102, 125> ActiveCombatTraitConfigID;
- UpdateField<int32, 102, 126> ItemUpgradeHighOnehandWeaponItemID;
- UpdateField<int32, 102, 127> ItemUpgradeHighFingerItemID;
- UpdateField<float, 102, 128> ItemUpgradeHighFingerWatermark;
- UpdateField<int32, 102, 129> ItemUpgradeHighTrinketItemID;
- UpdateField<float, 102, 130> ItemUpgradeHighTrinketWatermark;
- UpdateField<uint64, 102, 131> LootHistoryInstanceID;
- OptionalUpdateField<UF::StableInfo, 102, 132> PetStable;
- UpdateField<uint8, 102, 133> RequiredMountCapabilityFlags;
- UpdateFieldArray<ObjectGuid, 227, 134, 135> InvSlots;
- UpdateFieldArray<uint64, 240, 362, 363> ExploredZones;
- UpdateFieldArray<UF::RestInfo, 2, 603, 604> RestInfo;
- UpdateFieldArray<int32, 7, 606, 607> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 606, 614> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 606, 621> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 606, 628> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 635, 636> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 635, 639> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 642, 643> BuybackPrice;
- UpdateFieldArray<int64, 12, 642, 655> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 667, 668> CombatRatings;
- UpdateFieldArray<uint32, 4, 700, 701> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 705, 706> ProfessionSkillLine;
- UpdateFieldArray<uint32, 5, 708, 709> BagSlotFlags;
- UpdateFieldArray<uint32, 7, 714, 715> BankBagSlotFlags;
- UpdateFieldArray<uint64, 875, 722, 723> QuestCompleted;
- UpdateFieldArray<float, 17, 1598, 1599> ItemUpgradeHighWatermark;
+ UpdateField<ObjectGuid, 32, 44> FarsightObject;
+ UpdateField<ObjectGuid, 32, 45> SummonedBattlePetGUID;
+ UpdateField<uint64, 32, 46> Coinage;
+ UpdateField<int32, 32, 47> XP;
+ UpdateField<int32, 32, 48> NextLevelXP;
+ UpdateField<int32, 32, 49> TrialXP;
+ UpdateField<UF::SkillInfo, 32, 50> Skill;
+ UpdateField<int32, 32, 51> CharacterPoints;
+ UpdateField<int32, 32, 52> MaxTalentTiers;
+ UpdateField<uint32, 32, 53> TrackCreatureMask;
+ UpdateField<float, 32, 54> MainhandExpertise;
+ UpdateField<float, 32, 55> OffhandExpertise;
+ UpdateField<float, 32, 56> RangedExpertise;
+ UpdateField<float, 32, 57> CombatRatingExpertise;
+ UpdateField<float, 32, 58> BlockPercentage;
+ UpdateField<float, 32, 59> DodgePercentage;
+ UpdateField<float, 32, 60> DodgePercentageFromAttribute;
+ UpdateField<float, 32, 61> ParryPercentage;
+ UpdateField<float, 32, 62> ParryPercentageFromAttribute;
+ UpdateField<float, 32, 63> CritPercentage;
+ UpdateField<float, 32, 64> RangedCritPercentage;
+ UpdateField<float, 32, 65> OffhandCritPercentage;
+ UpdateField<float, 32, 66> SpellCritPercentage;
+ UpdateField<int32, 32, 67> ShieldBlock;
+ UpdateField<float, 32, 68> ShieldBlockCritPercentage;
+ UpdateField<float, 32, 69> Mastery;
+ UpdateField<float, 32, 70> Speed;
+ UpdateField<float, 32, 71> Avoidance;
+ UpdateField<float, 72, 73> Sturdiness;
+ UpdateField<int32, 72, 74> Versatility;
+ UpdateField<float, 72, 75> VersatilityBonus;
+ UpdateField<float, 72, 76> PvpPowerDamage;
+ UpdateField<float, 72, 77> PvpPowerHealing;
+ UpdateField<int32, 72, 78> ModHealingDonePos;
+ UpdateField<float, 72, 79> ModHealingPercent;
+ UpdateField<float, 72, 80> ModPeriodicHealingDonePercent;
+ UpdateField<float, 72, 81> ModSpellPowerPercent;
+ UpdateField<float, 72, 82> ModResiliencePercent;
+ UpdateField<float, 72, 83> OverrideSpellPowerByAPPercent;
+ UpdateField<float, 72, 84> OverrideAPBySpellPowerPercent;
+ UpdateField<int32, 72, 85> ModTargetResistance;
+ UpdateField<int32, 72, 86> ModTargetPhysicalResistance;
+ UpdateField<uint32, 72, 87> LocalFlags;
+ UpdateField<uint8, 72, 88> GrantableLevels;
+ UpdateField<uint8, 72, 89> MultiActionBars;
+ UpdateField<uint8, 72, 90> LifetimeMaxRank;
+ UpdateField<uint8, 72, 91> NumRespecs;
+ UpdateField<uint32, 72, 92> PvpMedals;
+ UpdateField<uint16, 72, 93> TodayHonorableKills;
+ UpdateField<uint16, 72, 94> YesterdayHonorableKills;
+ UpdateField<uint32, 72, 95> LifetimeHonorableKills;
+ UpdateField<int32, 72, 96> WatchedFactionIndex;
+ UpdateField<int32, 72, 97> MaxLevel;
+ UpdateField<int32, 72, 98> ScalingPlayerLevelDelta;
+ UpdateField<int32, 72, 99> MaxCreatureScalingLevel;
+ UpdateField<int32, 72, 100> PetSpellPower;
+ UpdateField<float, 72, 101> UiHitModifier;
+ UpdateField<float, 72, 102> UiSpellHitModifier;
+ UpdateField<int32, 72, 103> HomeRealmTimeOffset;
+ UpdateField<float, 104, 105> ModPetHaste;
+ UpdateField<int8, 104, 106> JailersTowerLevelMax;
+ UpdateField<int8, 104, 107> JailersTowerLevel;
+ UpdateField<uint8, 104, 108> LocalRegenFlags;
+ UpdateField<uint8, 104, 109> AuraVision;
+ UpdateField<uint8, 104, 110> NumBackpackSlots;
+ UpdateField<int32, 104, 111> OverrideSpellsID;
+ UpdateField<uint16, 104, 112> LootSpecID;
+ UpdateField<uint32, 104, 113> OverrideZonePVPType;
+ UpdateField<int32, 104, 114> Honor;
+ UpdateField<int32, 104, 115> HonorNextLevel;
+ UpdateField<int32, 104, 116> PerksProgramCurrency;
+ UpdateField<uint8, 104, 117> NumBankSlots;
+ UpdateField<UF::ResearchHistory, 104, 118> ResearchHistory;
+ UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 104, 119> FrozenPerksVendorItem;
+ UpdateField<UF::ActivePlayerUnk901, 104, 121> Field_1410;
+ OptionalUpdateField<UF::QuestSession, 104, 120> QuestSession;
+ UpdateField<int32, 104, 122> UiChromieTimeExpansionID;
+ UpdateField<int32, 104, 123> TransportServerTime;
+ UpdateField<uint32, 104, 124> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
+ UpdateField<int16, 104, 125> DEBUGSoulbindConduitRank;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 104, 126> DungeonScore;
+ UpdateField<uint32, 104, 127> ActiveCombatTraitConfigID;
+ UpdateField<int32, 104, 128> ItemUpgradeHighOnehandWeaponItemID;
+ UpdateField<int32, 104, 129> ItemUpgradeHighFingerItemID;
+ UpdateField<float, 104, 130> ItemUpgradeHighFingerWatermark;
+ UpdateField<int32, 104, 131> ItemUpgradeHighTrinketItemID;
+ UpdateField<float, 104, 132> ItemUpgradeHighTrinketWatermark;
+ UpdateField<uint64, 104, 133> LootHistoryInstanceID;
+ OptionalUpdateField<UF::StableInfo, 104, 134> PetStable;
+ UpdateField<uint8, 104, 135> RequiredMountCapabilityFlags;
+ UpdateFieldArray<ObjectGuid, 227, 136, 137> InvSlots;
+ UpdateFieldArray<UF::RestInfo, 2, 364, 365> RestInfo;
+ UpdateFieldArray<int32, 7, 367, 368> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 367, 375> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 367, 382> ModDamageDonePercent;
+ UpdateFieldArray<float, 7, 367, 389> ModHealingDonePercent;
+ UpdateFieldArray<float, 3, 396, 397> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 396, 400> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 403, 404> BuybackPrice;
+ UpdateFieldArray<int64, 12, 403, 416> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 428, 429> CombatRatings;
+ UpdateFieldArray<uint32, 4, 461, 462> NoReagentCostMask;
+ UpdateFieldArray<int32, 2, 466, 467> ProfessionSkillLine;
+ UpdateFieldArray<uint32, 5, 469, 470> BagSlotFlags;
+ UpdateFieldArray<uint32, 7, 475, 476> BankBagSlotFlags;
+ UpdateFieldArray<uint64, 950, 483, 484> QuestCompleted;
+ UpdateFieldArray<float, 17, 1434, 1435> ItemUpgradeHighWatermark;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 360e1c52cef..7edd50481b8 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -6360,20 +6360,12 @@ void Player::CheckAreaExploreAndOutdoor()
}
uint32 offset = areaEntry->AreaBit / PLAYER_EXPLORED_ZONES_BITS;
-
- if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
- {
- TC_LOG_ERROR("entities.player", "Player::CheckAreaExploreAndOutdoor: Wrong area flag {} in map data for (X: {} Y: {}) point to field PLAYER_EXPLORED_ZONES_1 + {} ( {} must be < {} ).",
- areaId, GetPositionX(), GetPositionY(), offset, offset, PLAYER_EXPLORED_ZONES_SIZE);
- return;
- }
-
uint64 val = UI64LIT(1) << (areaEntry->AreaBit % PLAYER_EXPLORED_ZONES_BITS);
- uint64 currFields = m_activePlayerData->ExploredZones[offset];
- if (!(currFields & val))
+ if (offset >= m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX].size()
+ || !(m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX][offset] & val))
{
- SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ExploredZones, offset), val);
+ AddExploredZones(offset, val);
UpdateCriteria(CriteriaType::RevealWorldMapOverlay, GetAreaId());
@@ -6419,6 +6411,39 @@ void Player::CheckAreaExploreAndOutdoor()
}
}
+void Player::AddExploredZones(uint32 pos, uint64 mask)
+{
+ SetUpdateFieldFlagValue(m_values
+ .ModifyValue(&Player::m_activePlayerData)
+ .ModifyValue(&UF::ActivePlayerData::DataFlags, PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX)
+ .ModifyValue(pos), mask);
+}
+
+void Player::RemoveExploredZones(uint32 pos, uint64 mask)
+{
+ RemoveUpdateFieldFlagValue(m_values
+ .ModifyValue(&Player::m_activePlayerData)
+ .ModifyValue(&UF::ActivePlayerData::DataFlags, PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX)
+ .ModifyValue(pos), mask);
+}
+
+bool Player::HasExploredZone(uint32 areaId) const
+{
+ AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaId);
+ if (!area)
+ return false;
+
+ if (area->AreaBit < 0)
+ return false;
+
+ size_t playerIndexOffset = size_t(area->AreaBit) / PLAYER_EXPLORED_ZONES_BITS;
+ if (playerIndexOffset >= m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX].size())
+ return false;
+
+ uint64 mask = uint64(1) << (area->AreaBit % PLAYER_EXPLORED_ZONES_BITS);
+ return (m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX][playerIndexOffset] & mask) != 0;
+}
+
Team Player::TeamForRace(uint8 race)
{
if (ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(race))
@@ -17785,9 +17810,8 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol
SetXP(fields.xp);
std::vector<std::string_view> exploredZones = Trinity::Tokenize(fields.exploredZones, ' ', false);
- for (std::size_t i = 0; i < exploredZones.size() && i / 2 < PLAYER_EXPLORED_ZONES_SIZE; ++i)
- SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ExploredZones, i / 2),
- Trinity::StringTo<uint64>(exploredZones[i]).value_or(UI64LIT(0)) << (32 * (i % 2)));
+ for (std::size_t i = 0; i < exploredZones.size(); ++i)
+ AddExploredZones(i / 2, Trinity::StringTo<uint64>(exploredZones[i]).value_or(UI64LIT(0)) << (32 * (i % 2)));
std::vector<std::string_view> knownTitles = Trinity::Tokenize(fields.knownTitles, ' ', false);
for (std::size_t i = 0; i < knownTitles.size(); ++i)
@@ -20037,10 +20061,10 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setUInt32(index++, GetLootSpecId());
ss.str("");
- for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i)
+ for (size_t i = 0; i < m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX].size(); ++i)
{
- ss << uint32(m_activePlayerData->ExploredZones[i] & 0xFFFFFFFF) << ' ';
- ss << uint32((m_activePlayerData->ExploredZones[i] >> 32) & 0xFFFFFFFF) << ' ';
+ ss << uint32(m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX][i] & 0xFFFFFFFF) << ' ';
+ ss << uint32((m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX][i] >> 32) & 0xFFFFFFFF) << ' ';
}
stmt->setString(index++, ss.str());
@@ -20174,10 +20198,10 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setUInt32(index++, GetLootSpecId());
ss.str("");
- for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i)
+ for (size_t i = 0; i < m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX].size(); ++i)
{
- ss << uint32(m_activePlayerData->ExploredZones[i] & 0xFFFFFFFF) << ' ';
- ss << uint32((m_activePlayerData->ExploredZones[i] >> 32) & 0xFFFFFFFF) << ' ';
+ ss << uint32(m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX][i] & 0xFFFFFFFF) << ' ';
+ ss << uint32((m_activePlayerData->DataFlags[PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX][i] >> 32) & 0xFFFFFFFF) << ' ';
}
stmt->setString(index++, ss.str());
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 0dda39ea498..10f309f56ca 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -143,10 +143,13 @@ enum PlayerSkillsConstants
PLAYER_MAX_SKILLS = UF::size<decltype(UF::SkillInfo::SkillLineID)>()
};
-enum PlayerExplorationConstants
+enum PlayerDataFlagConstants
{
- PLAYER_EXPLORED_ZONES_SIZE = UF::size<decltype(UF::ActivePlayerData::ExploredZones)>(),
- PLAYER_EXPLORED_ZONES_BITS = UF::size_of_value_type<decltype(UF::ActivePlayerData::ExploredZones)>() * 8
+ PLAYER_EXPLORED_ZONES_BITS = UF::size_of_value_type<decltype(UF::ActivePlayerData::DataFlags)::value_type>() * 8,
+
+ PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX = 1,
+ PLAYER_DATA_FLAG_CHARACTER_INDEX = 2,
+ PLAYER_DATA_FLAG_ACCOUNT_INDEX = 3,
};
enum SpellModType : uint8
@@ -2223,8 +2226,9 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void ProcessDelayedOperations();
void CheckAreaExploreAndOutdoor(void);
- void AddExploredZones(uint32 pos, uint64 mask) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ExploredZones, pos), mask); }
- void RemoveExploredZones(uint32 pos, uint64 mask) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ExploredZones, pos), mask); }
+ void AddExploredZones(uint32 pos, uint64 mask);
+ void RemoveExploredZones(uint32 pos, uint64 mask);
+ bool HasExploredZone(uint32 areaId) const;
static Team TeamForRace(uint8 race);
static TeamId TeamIdForRace(uint8 race);
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index b61f8c7e4b5..0c4ca35be92 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -4482,18 +4482,21 @@ void ObjectMgr::BuildPlayerLevelInfo(uint8 race, uint8 _class, uint8 level, Play
std::vector<uint32> const* ObjectMgr::GetCreatureQuestItemList(uint32 creatureEntry, Difficulty difficulty) const
{
- CreatureQuestItemMap::const_iterator itr = _creatureQuestItemStore.find(std::make_pair(creatureEntry, difficulty));
- if (itr != _creatureQuestItemStore.end())
- return &itr->second;
+ if (std::vector<uint32> const* items = Trinity::Containers::MapGetValuePtr(_creatureQuestItemStore, { creatureEntry, difficulty }))
+ return items;
// If there is no data for the difficulty, try to get data for the fallback difficulty
- DifficultyEntry const* difficultyEntry = sDifficultyStore.LookupEntry(difficulty);
- if (difficultyEntry)
+ if (DifficultyEntry const* difficultyEntry = sDifficultyStore.LookupEntry(difficulty))
return GetCreatureQuestItemList(creatureEntry, Difficulty(difficultyEntry->FallbackDifficultyID));
return nullptr;
}
+std::vector<int32> const* ObjectMgr::GetCreatureQuestCurrencyList(uint32 creatureId) const
+{
+ return Trinity::Containers::MapGetValuePtr(_creatureQuestCurrenciesStore, creatureId);
+}
+
void ObjectMgr::LoadQuests()
{
uint32 oldMSTime = getMSTime();
@@ -10744,14 +10747,14 @@ void ObjectMgr::LoadCreatureQuestItems()
{
TC_LOG_ERROR("sql.sql", "Table `creature_questitem` has data for nonexistent creature (entry: {}, difficulty: {}, idx: {}), skipped", entry, difficulty, idx);
continue;
- };
+ }
ItemEntry const* db2Data = sItemStore.LookupEntry(item);
if (!db2Data)
{
TC_LOG_ERROR("sql.sql", "Table `creature_questitem` has nonexistent item (ID: {}) in creature (entry: {}, difficulty: {}, idx: {}), skipped", item, entry, difficulty, idx);
continue;
- };
+ }
_creatureQuestItemStore[std::make_pair(entry, difficulty)].push_back(item);
@@ -10762,6 +10765,48 @@ void ObjectMgr::LoadCreatureQuestItems()
TC_LOG_INFO("server.loading", ">> Loaded {} creature quest items in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
}
+void ObjectMgr::LoadCreatureQuestCurrencies()
+{
+ uint32 oldMSTime = getMSTime();
+
+ // 0 1
+ QueryResult result = WorldDatabase.Query("SELECT CreatureId, CurrencyId FROM creature_quest_currency ORDER BY CreatureId, CurrencyId ASC");
+
+ if (!result)
+ {
+ TC_LOG_INFO("server.loading", ">> Loaded 0 creature quest currencies. DB table `creature_quest_currency` is empty.");
+ return;
+ }
+
+ uint32 count = 0;
+ do
+ {
+ Field* fields = result->Fetch();
+
+ uint32 entry = fields[0].GetUInt32();
+ int32 currency = fields[1].GetInt32();
+
+ if (!GetCreatureTemplate(entry))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `creature_quest_currency` has data for nonexistent creature (entry: {}, currency: {}), skipped", entry, currency);
+ continue;
+ }
+
+ if (!sCurrencyTypesStore.HasRecord(currency))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `creature_quest_currency` has nonexistent currency (ID: {}) in creature (entry: {}, currency: {}), skipped", currency, entry, currency);
+ continue;
+ }
+
+ _creatureQuestCurrenciesStore[entry].push_back(currency);
+
+ ++count;
+ }
+ while (result->NextRow());
+
+ TC_LOG_INFO("server.loading", ">> Loaded {} creature quest currencies in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
+}
+
void ObjectMgr::InitializeQueriesData(QueryDataGroup mask)
{
uint32 oldMSTime = getMSTime();
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index deae3736ff6..7a570135431 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -501,6 +501,7 @@ typedef std::unordered_map<uint8, EquipmentInfo> EquipmentInfoContainerInternal;
typedef std::unordered_map<uint32, EquipmentInfoContainerInternal> EquipmentInfoContainer;
typedef std::unordered_map<uint32, CreatureModelInfo> CreatureModelContainer;
typedef std::unordered_map<std::pair<uint32, Difficulty>, std::vector<uint32>> CreatureQuestItemMap;
+typedef std::unordered_map<uint32, std::vector<int32>> CreatureQuestCurrenciesMap;
typedef std::unordered_map<uint32, GameObjectTemplate> GameObjectTemplateContainer;
typedef std::unordered_map<uint32, GameObjectTemplateAddon> GameObjectTemplateAddonContainer;
typedef std::unordered_map<ObjectGuid::LowType, GameObjectOverride> GameObjectOverrideContainer;
@@ -1164,7 +1165,7 @@ class TC_GAME_API ObjectMgr
GameObjectQuestItemMap const* GetGameObjectQuestItemMap() const { return &_gameObjectQuestItemStore; }
std::vector<uint32> const* GetCreatureQuestItemList(uint32 creatureEntry, Difficulty difficulty) const;
- CreatureQuestItemMap const* GetCreatureQuestItemMap() const { return &_creatureQuestItemStore; }
+ std::vector<int32> const* GetCreatureQuestCurrencyList(uint32 creatureId) const;
uint32 GetNearestTaxiNode(float x, float y, float z, uint32 mapid, uint32 team);
void GetTaxiPath(uint32 source, uint32 destination, uint32 &path, uint32 &cost);
@@ -1316,6 +1317,7 @@ class TC_GAME_API ObjectMgr
void CheckCreatureMovement(char const* table, uint64 id, CreatureMovementData& creatureMovement);
void LoadGameObjectQuestItems();
void LoadCreatureQuestItems();
+ void LoadCreatureQuestCurrencies();
void LoadTempSummons();
void LoadCreatures();
void LoadLinkedRespawn();
@@ -1892,6 +1894,7 @@ class TC_GAME_API ObjectMgr
GameObjectAddonContainer _gameObjectAddonStore;
GameObjectQuestItemMap _gameObjectQuestItemStore;
CreatureQuestItemMap _creatureQuestItemStore;
+ CreatureQuestCurrenciesMap _creatureQuestCurrenciesStore;
EquipmentInfoContainer _equipmentInfoStore;
LinkedRespawnContainer _linkedRespawnStore;
CreatureLocaleContainer _creatureLocaleStore;
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 65da654793a..767095bfd45 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1738,7 +1738,7 @@ void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance
Trinity::IteratorPair<UF::ChrCustomizationChoice const*> customizations = MakeChrCustomizationChoiceRange(packet.Customizations);
if (packet.CustomizedChrModelID)
{
- ConditionalChrModelEntry const* conditionalChrModel = sConditionalChrModelStore.LookupEntry(packet.CustomizedChrModelID);
+ ConditionalChrModelEntry const* conditionalChrModel = DB2Manager::GetConditionalChrModel(packet.CustomizedChrModelID);
if (!conditionalChrModel)
return;
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 8573ddc7527..58abbf8522f 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -7064,988 +7064,989 @@ enum class GameError : uint32
ERR_GUILD_LEADER_CHANGED_SS = 143,
ERR_GUILD_DISBANDED = 144,
ERR_GUILD_NOT_ALLIED = 145,
- ERR_GUILD_LEADER_LEAVE = 146,
- ERR_GUILD_RANKS_LOCKED = 147,
- ERR_GUILD_RANK_IN_USE = 148,
- ERR_GUILD_RANK_TOO_HIGH_S = 149,
- ERR_GUILD_RANK_TOO_LOW_S = 150,
- ERR_GUILD_NAME_EXISTS_S = 151,
- ERR_GUILD_WITHDRAW_LIMIT = 152,
- ERR_GUILD_NOT_ENOUGH_MONEY = 153,
- ERR_GUILD_TOO_MUCH_MONEY = 154,
- ERR_GUILD_BANK_CONJURED_ITEM = 155,
- ERR_GUILD_BANK_EQUIPPED_ITEM = 156,
- ERR_GUILD_BANK_BOUND_ITEM = 157,
- ERR_GUILD_BANK_QUEST_ITEM = 158,
- ERR_GUILD_BANK_WRAPPED_ITEM = 159,
- ERR_GUILD_BANK_FULL = 160,
- ERR_GUILD_BANK_WRONG_TAB = 161,
- ERR_NO_GUILD_CHARTER = 162,
- ERR_OUT_OF_RANGE = 163,
- ERR_PLAYER_DEAD = 164,
- ERR_CLIENT_LOCKED_OUT = 165,
- ERR_CLIENT_ON_TRANSPORT = 166,
- ERR_KILLED_BY_S = 167,
- ERR_LOOT_LOCKED = 168,
- ERR_LOOT_TOO_FAR = 169,
- ERR_LOOT_DIDNT_KILL = 170,
- ERR_LOOT_BAD_FACING = 171,
- ERR_LOOT_NOTSTANDING = 172,
- ERR_LOOT_STUNNED = 173,
- ERR_LOOT_NO_UI = 174,
- ERR_LOOT_WHILE_INVULNERABLE = 175,
- ERR_NO_LOOT = 176,
- ERR_QUEST_ACCEPTED_S = 177,
- ERR_QUEST_COMPLETE_S = 178,
- ERR_QUEST_FAILED_S = 179,
- ERR_QUEST_FAILED_BAG_FULL_S = 180,
- ERR_QUEST_FAILED_MAX_COUNT_S = 181,
- ERR_QUEST_FAILED_LOW_LEVEL = 182,
- ERR_QUEST_FAILED_MISSING_ITEMS = 183,
- ERR_QUEST_FAILED_WRONG_RACE = 184,
- ERR_QUEST_FAILED_NOT_ENOUGH_MONEY = 185,
- ERR_QUEST_FAILED_EXPANSION = 186,
- ERR_QUEST_ONLY_ONE_TIMED = 187,
- ERR_QUEST_NEED_PREREQS = 188,
- ERR_QUEST_NEED_PREREQS_CUSTOM = 189,
- ERR_QUEST_ALREADY_ON = 190,
- ERR_QUEST_ALREADY_DONE = 191,
- ERR_QUEST_ALREADY_DONE_DAILY = 192,
- ERR_QUEST_HAS_IN_PROGRESS = 193,
- ERR_QUEST_REWARD_EXP_I = 194,
- ERR_QUEST_REWARD_MONEY_S = 195,
- ERR_QUEST_MUST_CHOOSE = 196,
- ERR_QUEST_LOG_FULL = 197,
- ERR_COMBAT_DAMAGE_SSI = 198,
- ERR_INSPECT_S = 199,
- ERR_CANT_USE_ITEM = 200,
- ERR_CANT_USE_ITEM_IN_ARENA = 201,
- ERR_CANT_USE_ITEM_IN_RATED_BATTLEGROUND = 202,
- ERR_MUST_EQUIP_ITEM = 203,
- ERR_PASSIVE_ABILITY = 204,
- ERR_2HSKILLNOTFOUND = 205,
- ERR_NO_ATTACK_TARGET = 206,
- ERR_INVALID_ATTACK_TARGET = 207,
- ERR_ATTACK_PVP_TARGET_WHILE_UNFLAGGED = 208,
- ERR_ATTACK_STUNNED = 209,
- ERR_ATTACK_PACIFIED = 210,
- ERR_ATTACK_MOUNTED = 211,
- ERR_ATTACK_FLEEING = 212,
- ERR_ATTACK_CONFUSED = 213,
- ERR_ATTACK_CHARMED = 214,
- ERR_ATTACK_DEAD = 215,
- ERR_ATTACK_PREVENTED_BY_MECHANIC_S = 216,
- ERR_ATTACK_CHANNEL = 217,
- ERR_TAXISAMENODE = 218,
- ERR_TAXINOSUCHPATH = 219,
- ERR_TAXIUNSPECIFIEDSERVERERROR = 220,
- ERR_TAXINOTENOUGHMONEY = 221,
- ERR_TAXITOOFARAWAY = 222,
- ERR_TAXINOVENDORNEARBY = 223,
- ERR_TAXINOTVISITED = 224,
- ERR_TAXIPLAYERBUSY = 225,
- ERR_TAXIPLAYERALREADYMOUNTED = 226,
- ERR_TAXIPLAYERSHAPESHIFTED = 227,
- ERR_TAXIPLAYERMOVING = 228,
- ERR_TAXINOPATHS = 229,
- ERR_TAXINOTELIGIBLE = 230,
- ERR_TAXINOTSTANDING = 231,
- ERR_TAXIINCOMBAT = 232,
- ERR_NO_REPLY_TARGET = 233,
- ERR_GENERIC_NO_TARGET = 234,
- ERR_INITIATE_TRADE_S = 235,
- ERR_TRADE_REQUEST_S = 236,
- ERR_TRADE_BLOCKED_S = 237,
- ERR_TRADE_TARGET_DEAD = 238,
- ERR_TRADE_TOO_FAR = 239,
- ERR_TRADE_CANCELLED = 240,
- ERR_TRADE_COMPLETE = 241,
- ERR_TRADE_BAG_FULL = 242,
- ERR_TRADE_TARGET_BAG_FULL = 243,
- ERR_TRADE_MAX_COUNT_EXCEEDED = 244,
- ERR_TRADE_TARGET_MAX_COUNT_EXCEEDED = 245,
- ERR_INVENTORY_TRADE_TOO_MANY_UNIQUE_ITEM = 246,
- ERR_ALREADY_TRADING = 247,
- ERR_MOUNT_INVALIDMOUNTEE = 248,
- ERR_MOUNT_TOOFARAWAY = 249,
- ERR_MOUNT_ALREADYMOUNTED = 250,
- ERR_MOUNT_NOTMOUNTABLE = 251,
- ERR_MOUNT_NOTYOURPET = 252,
- ERR_MOUNT_OTHER = 253,
- ERR_MOUNT_LOOTING = 254,
- ERR_MOUNT_RACECANTMOUNT = 255,
- ERR_MOUNT_SHAPESHIFTED = 256,
- ERR_MOUNT_NO_FAVORITES = 257,
- ERR_MOUNT_NO_MOUNTS = 258,
- ERR_DISMOUNT_NOPET = 259,
- ERR_DISMOUNT_NOTMOUNTED = 260,
- ERR_DISMOUNT_NOTYOURPET = 261,
- ERR_SPELL_FAILED_TOTEMS = 262,
- ERR_SPELL_FAILED_REAGENTS = 263,
- ERR_SPELL_FAILED_REAGENTS_GENERIC = 264,
- ERR_SPELL_FAILED_OPTIONAL_REAGENTS = 265,
- ERR_CANT_TRADE_GOLD = 266,
- ERR_SPELL_FAILED_EQUIPPED_ITEM = 267,
- ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S = 268,
- ERR_SPELL_FAILED_SHAPESHIFT_FORM_S = 269,
- ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS = 270,
- ERR_BADATTACKFACING = 271,
- ERR_BADATTACKPOS = 272,
- ERR_CHEST_IN_USE = 273,
- ERR_USE_CANT_OPEN = 274,
- ERR_USE_LOCKED = 275,
- ERR_DOOR_LOCKED = 276,
- ERR_BUTTON_LOCKED = 277,
- ERR_USE_LOCKED_WITH_ITEM_S = 278,
- ERR_USE_LOCKED_WITH_SPELL_S = 279,
- ERR_USE_LOCKED_WITH_SPELL_KNOWN_SI = 280,
- ERR_USE_TOO_FAR = 281,
- ERR_USE_BAD_ANGLE = 282,
- ERR_USE_OBJECT_MOVING = 283,
- ERR_USE_SPELL_FOCUS = 284,
- ERR_USE_DESTROYED = 285,
- ERR_SET_LOOT_FREEFORALL = 286,
- ERR_SET_LOOT_ROUNDROBIN = 287,
- ERR_SET_LOOT_MASTER = 288,
- ERR_SET_LOOT_GROUP = 289,
- ERR_SET_LOOT_THRESHOLD_S = 290,
- ERR_NEW_LOOT_MASTER_S = 291,
- ERR_SPECIFY_MASTER_LOOTER = 292,
- ERR_LOOT_SPEC_CHANGED_S = 293,
- ERR_TAME_FAILED = 294,
- ERR_CHAT_WHILE_DEAD = 295,
- ERR_CHAT_PLAYER_NOT_FOUND_S = 296,
- ERR_NEWTAXIPATH = 297,
- ERR_NO_PET = 298,
- ERR_NOTYOURPET = 299,
- ERR_PET_NOT_RENAMEABLE = 300,
- ERR_QUEST_OBJECTIVE_COMPLETE_S = 301,
- ERR_QUEST_UNKNOWN_COMPLETE = 302,
- ERR_QUEST_ADD_KILL_SII = 303,
- ERR_QUEST_ADD_FOUND_SII = 304,
- ERR_QUEST_ADD_ITEM_SII = 305,
- ERR_QUEST_ADD_PLAYER_KILL_SII = 306,
- ERR_CANNOTCREATEDIRECTORY = 307,
- ERR_CANNOTCREATEFILE = 308,
- ERR_PLAYER_WRONG_FACTION = 309,
- ERR_PLAYER_IS_NEUTRAL = 310,
- ERR_BANKSLOT_FAILED_TOO_MANY = 311,
- ERR_BANKSLOT_INSUFFICIENT_FUNDS = 312,
- ERR_BANKSLOT_NOTBANKER = 313,
- ERR_FRIEND_DB_ERROR = 314,
- ERR_FRIEND_LIST_FULL = 315,
- ERR_FRIEND_ADDED_S = 316,
- ERR_BATTLETAG_FRIEND_ADDED_S = 317,
- ERR_FRIEND_ONLINE_SS = 318,
- ERR_FRIEND_OFFLINE_S = 319,
- ERR_FRIEND_NOT_FOUND = 320,
- ERR_FRIEND_WRONG_FACTION = 321,
- ERR_FRIEND_REMOVED_S = 322,
- ERR_BATTLETAG_FRIEND_REMOVED_S = 323,
- ERR_FRIEND_ERROR = 324,
- ERR_FRIEND_ALREADY_S = 325,
- ERR_FRIEND_SELF = 326,
- ERR_FRIEND_DELETED = 327,
- ERR_IGNORE_FULL = 328,
- ERR_IGNORE_SELF = 329,
- ERR_IGNORE_NOT_FOUND = 330,
- ERR_IGNORE_ALREADY_S = 331,
- ERR_IGNORE_ADDED_S = 332,
- ERR_IGNORE_REMOVED_S = 333,
- ERR_IGNORE_AMBIGUOUS = 334,
- ERR_IGNORE_DELETED = 335,
- ERR_ONLY_ONE_BOLT = 336,
- ERR_ONLY_ONE_AMMO = 337,
- ERR_SPELL_FAILED_EQUIPPED_SPECIFIC_ITEM = 338,
- ERR_WRONG_BAG_TYPE_SUBCLASS = 339,
- ERR_CANT_WRAP_STACKABLE = 340,
- ERR_CANT_WRAP_EQUIPPED = 341,
- ERR_CANT_WRAP_WRAPPED = 342,
- ERR_CANT_WRAP_BOUND = 343,
- ERR_CANT_WRAP_UNIQUE = 344,
- ERR_CANT_WRAP_BAGS = 345,
- ERR_OUT_OF_MANA = 346,
- ERR_OUT_OF_RAGE = 347,
- ERR_OUT_OF_FOCUS = 348,
- ERR_OUT_OF_ENERGY = 349,
- ERR_OUT_OF_CHI = 350,
- ERR_OUT_OF_HEALTH = 351,
- ERR_OUT_OF_RUNES = 352,
- ERR_OUT_OF_RUNIC_POWER = 353,
- ERR_OUT_OF_SOUL_SHARDS = 354,
- ERR_OUT_OF_LUNAR_POWER = 355,
- ERR_OUT_OF_HOLY_POWER = 356,
- ERR_OUT_OF_MAELSTROM = 357,
- ERR_OUT_OF_COMBO_POINTS = 358,
- ERR_OUT_OF_INSANITY = 359,
- ERR_OUT_OF_ESSENCE = 360,
- ERR_OUT_OF_ARCANE_CHARGES = 361,
- ERR_OUT_OF_FURY = 362,
- ERR_OUT_OF_PAIN = 363,
- ERR_OUT_OF_POWER_DISPLAY = 364,
- ERR_LOOT_GONE = 365,
- ERR_MOUNT_FORCEDDISMOUNT = 366,
- ERR_AUTOFOLLOW_TOO_FAR = 367,
- ERR_UNIT_NOT_FOUND = 368,
- ERR_INVALID_FOLLOW_TARGET = 369,
- ERR_INVALID_FOLLOW_PVP_COMBAT = 370,
- ERR_INVALID_FOLLOW_TARGET_PVP_COMBAT = 371,
- ERR_INVALID_INSPECT_TARGET = 372,
- ERR_GUILDEMBLEM_SUCCESS = 373,
- ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 374,
- ERR_GUILDEMBLEM_NOGUILD = 375,
- ERR_GUILDEMBLEM_NOTGUILDMASTER = 376,
- ERR_GUILDEMBLEM_NOTENOUGHMONEY = 377,
- ERR_GUILDEMBLEM_INVALIDVENDOR = 378,
- ERR_EMBLEMERROR_NOTABARDGEOSET = 379,
- ERR_SPELL_OUT_OF_RANGE = 380,
- ERR_COMMAND_NEEDS_TARGET = 381,
- ERR_NOAMMO_S = 382,
- ERR_TOOBUSYTOFOLLOW = 383,
- ERR_DUEL_REQUESTED = 384,
- ERR_DUEL_CANCELLED = 385,
- ERR_DEATHBINDALREADYBOUND = 386,
- ERR_DEATHBIND_SUCCESS_S = 387,
- ERR_NOEMOTEWHILERUNNING = 388,
- ERR_ZONE_EXPLORED = 389,
- ERR_ZONE_EXPLORED_XP = 390,
- ERR_INVALID_ITEM_TARGET = 391,
- ERR_INVALID_QUEST_TARGET = 392,
- ERR_IGNORING_YOU_S = 393,
- ERR_FISH_NOT_HOOKED = 394,
- ERR_FISH_ESCAPED = 395,
- ERR_SPELL_FAILED_NOTUNSHEATHED = 396,
- ERR_PETITION_OFFERED_S = 397,
- ERR_PETITION_SIGNED = 398,
- ERR_PETITION_SIGNED_S = 399,
- ERR_PETITION_DECLINED_S = 400,
- ERR_PETITION_ALREADY_SIGNED = 401,
- ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 402,
- ERR_PETITION_ALREADY_SIGNED_OTHER = 403,
- ERR_PETITION_IN_GUILD = 404,
- ERR_PETITION_CREATOR = 405,
- ERR_PETITION_NOT_ENOUGH_SIGNATURES = 406,
- ERR_PETITION_NOT_SAME_SERVER = 407,
- ERR_PETITION_FULL = 408,
- ERR_PETITION_ALREADY_SIGNED_BY_S = 409,
- ERR_GUILD_NAME_INVALID = 410,
- ERR_SPELL_UNLEARNED_S = 411,
- ERR_PET_SPELL_ROOTED = 412,
- ERR_PET_SPELL_AFFECTING_COMBAT = 413,
- ERR_PET_SPELL_OUT_OF_RANGE = 414,
- ERR_PET_SPELL_NOT_BEHIND = 415,
- ERR_PET_SPELL_TARGETS_DEAD = 416,
- ERR_PET_SPELL_DEAD = 417,
- ERR_PET_SPELL_NOPATH = 418,
- ERR_ITEM_CANT_BE_DESTROYED = 419,
- ERR_TICKET_ALREADY_EXISTS = 420,
- ERR_TICKET_CREATE_ERROR = 421,
- ERR_TICKET_UPDATE_ERROR = 422,
- ERR_TICKET_DB_ERROR = 423,
- ERR_TICKET_NO_TEXT = 424,
- ERR_TICKET_TEXT_TOO_LONG = 425,
- ERR_OBJECT_IS_BUSY = 426,
- ERR_EXHAUSTION_WELLRESTED = 427,
- ERR_EXHAUSTION_RESTED = 428,
- ERR_EXHAUSTION_NORMAL = 429,
- ERR_EXHAUSTION_TIRED = 430,
- ERR_EXHAUSTION_EXHAUSTED = 431,
- ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 432,
- ERR_CANT_INTERACT_SHAPESHIFTED = 433,
- ERR_REALM_NOT_FOUND = 434,
- ERR_MAIL_QUEST_ITEM = 435,
- ERR_MAIL_BOUND_ITEM = 436,
- ERR_MAIL_CONJURED_ITEM = 437,
- ERR_MAIL_BAG = 438,
- ERR_MAIL_TO_SELF = 439,
- ERR_MAIL_TARGET_NOT_FOUND = 440,
- ERR_MAIL_DATABASE_ERROR = 441,
- ERR_MAIL_DELETE_ITEM_ERROR = 442,
- ERR_MAIL_WRAPPED_COD = 443,
- ERR_MAIL_CANT_SEND_REALM = 444,
- ERR_MAIL_TEMP_RETURN_OUTAGE = 445,
- ERR_MAIL_RECEPIENT_CANT_RECEIVE_MAIL = 446,
- ERR_MAIL_SENT = 447,
- ERR_MAIL_TARGET_IS_TRIAL = 448,
- ERR_NOT_HAPPY_ENOUGH = 449,
- ERR_USE_CANT_IMMUNE = 450,
- ERR_CANT_BE_DISENCHANTED = 451,
- ERR_CANT_USE_DISARMED = 452,
- ERR_AUCTION_DATABASE_ERROR = 453,
- ERR_AUCTION_HIGHER_BID = 454,
- ERR_AUCTION_ALREADY_BID = 455,
- ERR_AUCTION_OUTBID_S = 456,
- ERR_AUCTION_WON_S = 457,
- ERR_AUCTION_REMOVED_S = 458,
- ERR_AUCTION_BID_PLACED = 459,
- ERR_LOGOUT_FAILED = 460,
- ERR_QUEST_PUSH_SUCCESS_S = 461,
- ERR_QUEST_PUSH_INVALID_S = 462,
- ERR_QUEST_PUSH_INVALID_TO_RECIPIENT_S = 463,
- ERR_QUEST_PUSH_ACCEPTED_S = 464,
- ERR_QUEST_PUSH_DECLINED_S = 465,
- ERR_QUEST_PUSH_BUSY_S = 466,
- ERR_QUEST_PUSH_DEAD_S = 467,
- ERR_QUEST_PUSH_DEAD_TO_RECIPIENT_S = 468,
- ERR_QUEST_PUSH_LOG_FULL_S = 469,
- ERR_QUEST_PUSH_LOG_FULL_TO_RECIPIENT_S = 470,
- ERR_QUEST_PUSH_ONQUEST_S = 471,
- ERR_QUEST_PUSH_ONQUEST_TO_RECIPIENT_S = 472,
- ERR_QUEST_PUSH_ALREADY_DONE_S = 473,
- ERR_QUEST_PUSH_ALREADY_DONE_TO_RECIPIENT_S = 474,
- ERR_QUEST_PUSH_NOT_DAILY_S = 475,
- ERR_QUEST_PUSH_TIMER_EXPIRED_S = 476,
- ERR_QUEST_PUSH_NOT_IN_PARTY_S = 477,
- ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 478,
- ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_TO_RECIPIENT_S = 479,
- ERR_QUEST_PUSH_NOT_ALLOWED_S = 480,
- ERR_QUEST_PUSH_PREREQUISITE_S = 481,
- ERR_QUEST_PUSH_PREREQUISITE_TO_RECIPIENT_S = 482,
- ERR_QUEST_PUSH_LOW_LEVEL_S = 483,
- ERR_QUEST_PUSH_LOW_LEVEL_TO_RECIPIENT_S = 484,
- ERR_QUEST_PUSH_HIGH_LEVEL_S = 485,
- ERR_QUEST_PUSH_HIGH_LEVEL_TO_RECIPIENT_S = 486,
- ERR_QUEST_PUSH_CLASS_S = 487,
- ERR_QUEST_PUSH_CLASS_TO_RECIPIENT_S = 488,
- ERR_QUEST_PUSH_RACE_S = 489,
- ERR_QUEST_PUSH_RACE_TO_RECIPIENT_S = 490,
- ERR_QUEST_PUSH_LOW_FACTION_S = 491,
- ERR_QUEST_PUSH_LOW_FACTION_TO_RECIPIENT_S = 492,
- ERR_QUEST_PUSH_EXPANSION_S = 493,
- ERR_QUEST_PUSH_EXPANSION_TO_RECIPIENT_S = 494,
- ERR_QUEST_PUSH_NOT_GARRISON_OWNER_S = 495,
- ERR_QUEST_PUSH_NOT_GARRISON_OWNER_TO_RECIPIENT_S = 496,
- ERR_QUEST_PUSH_WRONG_COVENANT_S = 497,
- ERR_QUEST_PUSH_WRONG_COVENANT_TO_RECIPIENT_S = 498,
- ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_S = 499,
- ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_TO_RECIPIENT_S = 500,
- ERR_QUEST_PUSH_WRONG_FACTION_S = 501,
- ERR_QUEST_PUSH_WRONG_FACTION_TO_RECIPIENT_S = 502,
- ERR_QUEST_PUSH_CROSS_FACTION_RESTRICTED_S = 503,
- ERR_RAID_GROUP_LOWLEVEL = 504,
- ERR_RAID_GROUP_ONLY = 505,
- ERR_RAID_GROUP_FULL = 506,
- ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 507,
- ERR_CORPSE_IS_NOT_IN_INSTANCE = 508,
- ERR_PVP_KILL_HONORABLE = 509,
- ERR_PVP_KILL_DISHONORABLE = 510,
- ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 511,
- ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 512,
- ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 513,
- ERR_AUTOLOOT_MONEY_S = 514,
- ERR_GENERIC_STUNNED = 515,
- ERR_GENERIC_THROTTLE = 516,
- ERR_CLUB_FINDER_SEARCHING_TOO_FAST = 517,
- ERR_TARGET_STUNNED = 518,
- ERR_MUST_REPAIR_DURABILITY = 519,
- ERR_RAID_YOU_JOINED = 520,
- ERR_RAID_YOU_LEFT = 521,
- ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 522,
- ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 523,
- ERR_RAID_MEMBER_ADDED_S = 524,
- ERR_RAID_MEMBER_REMOVED_S = 525,
- ERR_INSTANCE_GROUP_ADDED_S = 526,
- ERR_INSTANCE_GROUP_REMOVED_S = 527,
- ERR_CLICK_ON_ITEM_TO_FEED = 528,
- ERR_TOO_MANY_CHAT_CHANNELS = 529,
- ERR_LOOT_ROLL_PENDING = 530,
- ERR_LOOT_PLAYER_NOT_FOUND = 531,
- ERR_NOT_IN_RAID = 532,
- ERR_LOGGING_OUT = 533,
- ERR_TARGET_LOGGING_OUT = 534,
- ERR_NOT_WHILE_MOUNTED = 535,
- ERR_NOT_WHILE_SHAPESHIFTED = 536,
- ERR_NOT_IN_COMBAT = 537,
- ERR_NOT_WHILE_DISARMED = 538,
- ERR_PET_BROKEN = 539,
- ERR_TALENT_WIPE_ERROR = 540,
- ERR_SPEC_WIPE_ERROR = 541,
- ERR_GLYPH_WIPE_ERROR = 542,
- ERR_PET_SPEC_WIPE_ERROR = 543,
- ERR_FEIGN_DEATH_RESISTED = 544,
- ERR_MEETING_STONE_IN_QUEUE_S = 545,
- ERR_MEETING_STONE_LEFT_QUEUE_S = 546,
- ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 547,
- ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 548,
- ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 549,
- ERR_MEETING_STONE_SUCCESS = 550,
- ERR_MEETING_STONE_IN_PROGRESS = 551,
- ERR_MEETING_STONE_MEMBER_ADDED_S = 552,
- ERR_MEETING_STONE_GROUP_FULL = 553,
- ERR_MEETING_STONE_NOT_LEADER = 554,
- ERR_MEETING_STONE_INVALID_LEVEL = 555,
- ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 556,
- ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 557,
- ERR_MEETING_STONE_MUST_BE_LEADER = 558,
- ERR_MEETING_STONE_NO_RAID_GROUP = 559,
- ERR_MEETING_STONE_NEED_PARTY = 560,
- ERR_MEETING_STONE_NOT_FOUND = 561,
- ERR_MEETING_STONE_TARGET_IN_VEHICLE = 562,
- ERR_GUILDEMBLEM_SAME = 563,
- ERR_EQUIP_TRADE_ITEM = 564,
- ERR_PVP_TOGGLE_ON = 565,
- ERR_PVP_TOGGLE_OFF = 566,
- ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 567,
- ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 568,
- ERR_GROUP_JOIN_BATTLEGROUND_S = 569,
- ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 570,
- ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 571,
- ERR_SOLO_JOIN_BATTLEGROUND_S = 572,
- ERR_JOIN_SINGLE_SCENARIO_S = 573,
- ERR_BATTLEGROUND_TOO_MANY_QUEUES = 574,
- ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 575,
- ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 576,
- ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 577,
- ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 578,
- ERR_ALREADY_IN_ARENA_TEAM_S = 579,
- ERR_INVALID_PROMOTION_CODE = 580,
- ERR_BG_PLAYER_JOINED_SS = 581,
- ERR_BG_PLAYER_LEFT_S = 582,
- ERR_RESTRICTED_ACCOUNT = 583,
- ERR_RESTRICTED_ACCOUNT_TRIAL = 584,
- ERR_PLAY_TIME_EXCEEDED = 585,
- ERR_APPROACHING_PARTIAL_PLAY_TIME = 586,
- ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 587,
- ERR_APPROACHING_NO_PLAY_TIME = 588,
- ERR_APPROACHING_NO_PLAY_TIME_2 = 589,
- ERR_UNHEALTHY_TIME = 590,
- ERR_CHAT_RESTRICTED_TRIAL = 591,
- ERR_CHAT_THROTTLED = 592,
- ERR_MAIL_REACHED_CAP = 593,
- ERR_INVALID_RAID_TARGET = 594,
- ERR_RAID_LEADER_READY_CHECK_START_S = 595,
- ERR_READY_CHECK_IN_PROGRESS = 596,
- ERR_READY_CHECK_THROTTLED = 597,
- ERR_DUNGEON_DIFFICULTY_FAILED = 598,
- ERR_DUNGEON_DIFFICULTY_CHANGED_S = 599,
- ERR_TRADE_WRONG_REALM = 600,
- ERR_TRADE_NOT_ON_TAPLIST = 601,
- ERR_CHAT_PLAYER_AMBIGUOUS_S = 602,
- ERR_LOOT_CANT_LOOT_THAT_NOW = 603,
- ERR_LOOT_MASTER_INV_FULL = 604,
- ERR_LOOT_MASTER_UNIQUE_ITEM = 605,
- ERR_LOOT_MASTER_OTHER = 606,
- ERR_FILTERING_YOU_S = 607,
- ERR_USE_PREVENTED_BY_MECHANIC_S = 608,
- ERR_ITEM_UNIQUE_EQUIPPABLE = 609,
- ERR_LFG_LEADER_IS_LFM_S = 610,
- ERR_LFG_PENDING = 611,
- ERR_CANT_SPEAK_LANGAGE = 612,
- ERR_VENDOR_MISSING_TURNINS = 613,
- ERR_BATTLEGROUND_NOT_IN_TEAM = 614,
- ERR_NOT_IN_BATTLEGROUND = 615,
- ERR_NOT_ENOUGH_HONOR_POINTS = 616,
- ERR_NOT_ENOUGH_ARENA_POINTS = 617,
- ERR_SOCKETING_REQUIRES_META_GEM = 618,
- ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 619,
- ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 620,
- ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 621,
- ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 622,
- ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 623,
- ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 624,
- ERR_ITEM_MAX_COUNT_SOCKETED = 625,
- ERR_SYSTEM_DISABLED = 626,
- ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 627,
- ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 628,
- ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 629,
- ERR_USER_SQUELCHED = 630,
- ERR_ACCOUNT_SILENCED = 631,
- ERR_PARTY_MEMBER_SILENCED = 632,
- ERR_PARTY_MEMBER_SILENCED_LFG_DELIST = 633,
- ERR_TOO_MUCH_GOLD = 634,
- ERR_NOT_BARBER_SITTING = 635,
- ERR_QUEST_FAILED_CAIS = 636,
- ERR_INVITE_RESTRICTED_TRIAL = 637,
- ERR_VOICE_IGNORE_FULL = 638,
- ERR_VOICE_IGNORE_SELF = 639,
- ERR_VOICE_IGNORE_NOT_FOUND = 640,
- ERR_VOICE_IGNORE_ALREADY_S = 641,
- ERR_VOICE_IGNORE_ADDED_S = 642,
- ERR_VOICE_IGNORE_REMOVED_S = 643,
- ERR_VOICE_IGNORE_AMBIGUOUS = 644,
- ERR_VOICE_IGNORE_DELETED = 645,
- ERR_UNKNOWN_MACRO_OPTION_S = 646,
- ERR_NOT_DURING_ARENA_MATCH = 647,
- ERR_NOT_IN_RATED_BATTLEGROUND = 648,
- ERR_PLAYER_SILENCED = 649,
- ERR_PLAYER_UNSILENCED = 650,
- ERR_COMSAT_DISCONNECT = 651,
- ERR_COMSAT_RECONNECT_ATTEMPT = 652,
- ERR_COMSAT_CONNECT_FAIL = 653,
- ERR_MAIL_INVALID_ATTACHMENT_SLOT = 654,
- ERR_MAIL_TOO_MANY_ATTACHMENTS = 655,
- ERR_MAIL_INVALID_ATTACHMENT = 656,
- ERR_MAIL_ATTACHMENT_EXPIRED = 657,
- ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 658,
- ERR_PROFANE_CHAT_NAME = 659,
- ERR_PLAYER_SILENCED_ECHO = 660,
- ERR_PLAYER_UNSILENCED_ECHO = 661,
- ERR_LOOT_CANT_LOOT_THAT = 662,
- ERR_ARENA_EXPIRED_CAIS = 663,
- ERR_GROUP_ACTION_THROTTLED = 664,
- ERR_ALREADY_PICKPOCKETED = 665,
- ERR_NAME_INVALID = 666,
- ERR_NAME_NO_NAME = 667,
- ERR_NAME_TOO_SHORT = 668,
- ERR_NAME_TOO_LONG = 669,
- ERR_NAME_MIXED_LANGUAGES = 670,
- ERR_NAME_PROFANE = 671,
- ERR_NAME_RESERVED = 672,
- ERR_NAME_THREE_CONSECUTIVE = 673,
- ERR_NAME_INVALID_SPACE = 674,
- ERR_NAME_CONSECUTIVE_SPACES = 675,
- ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 676,
- ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 677,
- ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 678,
- ERR_RECRUIT_A_FRIEND_NOT_LINKED = 679,
- ERR_RECRUIT_A_FRIEND_NOT_NOW = 680,
- ERR_RECRUIT_A_FRIEND_SUMMON_LEVEL_MAX = 681,
- ERR_RECRUIT_A_FRIEND_SUMMON_COOLDOWN = 682,
- ERR_RECRUIT_A_FRIEND_SUMMON_OFFLINE = 683,
- ERR_RECRUIT_A_FRIEND_INSUF_EXPAN_LVL = 684,
- ERR_RECRUIT_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 685,
- ERR_NOT_SAME_ACCOUNT = 686,
- ERR_BAD_ON_USE_ENCHANT = 687,
- ERR_TRADE_SELF = 688,
- ERR_TOO_MANY_SOCKETS = 689,
- ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 690,
- ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 691,
- ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 692,
- ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 693,
- ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 694,
- ERR_ITEM_INVENTORY_FULL_SATCHEL = 695,
- ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 696,
- ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 697,
- ERR_PURCHASE_LEVEL_TOO_LOW = 698,
- ERR_GROUP_SWAP_FAILED = 699,
- ERR_INVITE_IN_COMBAT = 700,
- ERR_INVALID_GLYPH_SLOT = 701,
- ERR_GENERIC_NO_VALID_TARGETS = 702,
- ERR_CALENDAR_EVENT_ALERT_S = 703,
- ERR_PET_LEARN_SPELL_S = 704,
- ERR_PET_LEARN_ABILITY_S = 705,
- ERR_PET_SPELL_UNLEARNED_S = 706,
- ERR_INVITE_UNKNOWN_REALM = 707,
- ERR_INVITE_NO_PARTY_SERVER = 708,
- ERR_INVITE_PARTY_BUSY = 709,
- ERR_INVITE_PARTY_BUSY_PENDING_REQUEST = 710,
- ERR_INVITE_PARTY_BUSY_PENDING_SUGGEST = 711,
- ERR_PARTY_TARGET_AMBIGUOUS = 712,
- ERR_PARTY_LFG_INVITE_RAID_LOCKED = 713,
- ERR_PARTY_LFG_BOOT_LIMIT = 714,
- ERR_PARTY_LFG_BOOT_COOLDOWN_S = 715,
- ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 716,
- ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 717,
- ERR_PARTY_LFG_BOOT_IN_PROGRESS = 718,
- ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 719,
- ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 720,
- ERR_PARTY_LFG_BOOT_VOTE_FAILED = 721,
- ERR_PARTY_LFG_BOOT_IN_COMBAT = 722,
- ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 723,
- ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 724,
- ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 725,
- ERR_PARTY_PRIVATE_GROUP_ONLY = 726,
- ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 727,
- ERR_RAID_DISALLOWED_BY_LEVEL = 728,
- ERR_RAID_DISALLOWED_BY_CROSS_REALM = 729,
- ERR_PARTY_ROLE_NOT_AVAILABLE = 730,
- ERR_JOIN_LFG_OBJECT_FAILED = 731,
- ERR_LFG_REMOVED_LEVELUP = 732,
- ERR_LFG_REMOVED_XP_TOGGLE = 733,
- ERR_LFG_REMOVED_FACTION_CHANGE = 734,
- ERR_BATTLEGROUND_INFO_THROTTLED = 735,
- ERR_BATTLEGROUND_ALREADY_IN = 736,
- ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 737,
- ERR_ARENA_TEAM_PERMISSIONS = 738,
- ERR_NOT_WHILE_FALLING = 739,
- ERR_NOT_WHILE_MOVING = 740,
- ERR_NOT_WHILE_FATIGUED = 741,
- ERR_MAX_SOCKETS = 742,
- ERR_MULTI_CAST_ACTION_TOTEM_S = 743,
- ERR_BATTLEGROUND_JOIN_LEVELUP = 744,
- ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 745,
- ERR_BATTLEGROUND_JOIN_XP_GAIN = 746,
- ERR_BATTLEGROUND_JOIN_MERCENARY = 747,
- ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 748,
- ERR_BATTLEGROUND_JOIN_RATED_TOO_MANY_HEALERS = 749,
- ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 750,
- ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 751,
- ERR_RAID_DIFFICULTY_FAILED = 752,
- ERR_RAID_DIFFICULTY_CHANGED_S = 753,
- ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 754,
- ERR_RAID_LOCKOUT_CHANGED_S = 755,
- ERR_RAID_CONVERTED_TO_PARTY = 756,
- ERR_PARTY_CONVERTED_TO_RAID = 757,
- ERR_PLAYER_DIFFICULTY_CHANGED_S = 758,
- ERR_GMRESPONSE_DB_ERROR = 759,
- ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 760,
- ERR_ARENA_JOIN_RANGE_INDEX = 761,
- ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 762,
- ERR_BATTLEGROUND_JOIN_FAILED = 763,
- ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 764,
- ERR_BATTLEGROUND_JOIN_RESPEC = 765,
- ERR_BATTLEGROUND_INVITATION_DECLINED = 766,
- ERR_BATTLEGROUND_INVITATION_DECLINED_BY = 767,
- ERR_BATTLEGROUND_JOIN_TIMED_OUT = 768,
- ERR_BATTLEGROUND_DUPE_QUEUE = 769,
- ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 770,
- ERR_IN_BATTLEGROUND_RESPEC = 771,
- ERR_MAIL_LIMITED_DURATION_ITEM = 772,
- ERR_YELL_RESTRICTED_TRIAL = 773,
- ERR_CHAT_RAID_RESTRICTED_TRIAL = 774,
- ERR_LFG_ROLE_CHECK_FAILED = 775,
- ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 776,
- ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 777,
- ERR_LFG_READY_CHECK_FAILED = 778,
- ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 779,
- ERR_LFG_GROUP_FULL = 780,
- ERR_LFG_NO_LFG_OBJECT = 781,
- ERR_LFG_NO_SLOTS_PLAYER = 782,
- ERR_LFG_NO_SLOTS_PARTY = 783,
- ERR_LFG_NO_SPEC = 784,
- ERR_LFG_MISMATCHED_SLOTS = 785,
- ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 786,
- ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 787,
- ERR_LFG_MEMBERS_NOT_PRESENT = 788,
- ERR_LFG_GET_INFO_TIMEOUT = 789,
- ERR_LFG_INVALID_SLOT = 790,
- ERR_LFG_DESERTER_PLAYER = 791,
- ERR_LFG_DESERTER_PARTY = 792,
- ERR_LFG_DEAD = 793,
- ERR_LFG_RANDOM_COOLDOWN_PLAYER = 794,
- ERR_LFG_RANDOM_COOLDOWN_PARTY = 795,
- ERR_LFG_TOO_MANY_MEMBERS = 796,
- ERR_LFG_TOO_FEW_MEMBERS = 797,
- ERR_LFG_PROPOSAL_FAILED = 798,
- ERR_LFG_PROPOSAL_DECLINED_SELF = 799,
- ERR_LFG_PROPOSAL_DECLINED_PARTY = 800,
- ERR_LFG_NO_SLOTS_SELECTED = 801,
- ERR_LFG_NO_ROLES_SELECTED = 802,
- ERR_LFG_ROLE_CHECK_INITIATED = 803,
- ERR_LFG_READY_CHECK_INITIATED = 804,
- ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 805,
- ERR_LFG_PLAYER_DECLINED_READY_CHECK = 806,
- ERR_LFG_JOINED_QUEUE = 807,
- ERR_LFG_JOINED_FLEX_QUEUE = 808,
- ERR_LFG_JOINED_RF_QUEUE = 809,
- ERR_LFG_JOINED_SCENARIO_QUEUE = 810,
- ERR_LFG_JOINED_WORLD_PVP_QUEUE = 811,
- ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 812,
- ERR_LFG_JOINED_LIST = 813,
- ERR_LFG_LEFT_QUEUE = 814,
- ERR_LFG_LEFT_LIST = 815,
- ERR_LFG_ROLE_CHECK_ABORTED = 816,
- ERR_LFG_READY_CHECK_ABORTED = 817,
- ERR_LFG_CANT_USE_BATTLEGROUND = 818,
- ERR_LFG_CANT_USE_DUNGEONS = 819,
- ERR_LFG_REASON_TOO_MANY_LFG = 820,
- ERR_LFG_FARM_LIMIT = 821,
- ERR_LFG_NO_CROSS_FACTION_PARTIES = 822,
- ERR_INVALID_TELEPORT_LOCATION = 823,
- ERR_TOO_FAR_TO_INTERACT = 824,
- ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 825,
- ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 826,
- ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 827,
- ERR_DIFFICULTY_CHANGE_WORLDSTATE = 828,
- ERR_DIFFICULTY_CHANGE_ENCOUNTER = 829,
- ERR_DIFFICULTY_CHANGE_COMBAT = 830,
- ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 831,
- ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 832,
- ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 833,
- ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 834,
- ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 835,
- ERR_ARENA_TEAM_PARTY_SIZE = 836,
- ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 837,
- ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 838,
- ERR_SOLO_MIN_ITEM_LEVEL = 839,
- ERR_PVP_PLAYER_ABANDONED = 840,
- ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 841,
- ERR_QUEST_FORCE_REMOVED_S = 842,
- ERR_ATTACK_NO_ACTIONS = 843,
- ERR_IN_RANDOM_BG = 844,
- ERR_IN_NON_RANDOM_BG = 845,
- ERR_BN_FRIEND_SELF = 846,
- ERR_BN_FRIEND_ALREADY = 847,
- ERR_BN_FRIEND_BLOCKED = 848,
- ERR_BN_FRIEND_LIST_FULL = 849,
- ERR_BN_FRIEND_REQUEST_SENT = 850,
- ERR_BN_BROADCAST_THROTTLE = 851,
- ERR_BG_DEVELOPER_ONLY = 852,
- ERR_CURRENCY_SPELL_SLOT_MISMATCH = 853,
- ERR_CURRENCY_NOT_TRADABLE = 854,
- ERR_REQUIRES_EXPANSION_S = 855,
- ERR_QUEST_FAILED_SPELL = 856,
- ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 857,
- ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 858,
- ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 859,
- ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 860,
- ERR_TALENT_FAILED_UNKNOWN = 861,
- ERR_TALENT_FAILED_IN_COMBAT = 862,
- ERR_TALENT_FAILED_IN_PVP_MATCH = 863,
- ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 864,
- ERR_WARGAME_REQUEST_FAILURE = 865,
- ERR_RANK_REQUIRES_AUTHENTICATOR = 866,
- ERR_GUILD_BANK_VOUCHER_FAILED = 867,
- ERR_WARGAME_REQUEST_SENT = 868,
- ERR_REQUIRES_ACHIEVEMENT_I = 869,
- ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 870,
- ERR_CANT_BUY_QUANTITY = 871,
- ERR_ITEM_IS_BATTLE_PAY_LOCKED = 872,
- ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 873,
- ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 874,
- ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 875,
- ERR_INSUFF_TRACKED_CURRENCY_IS = 876,
- ERR_NOT_ON_TOURNAMENT_REALM = 877,
- ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 878,
- ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 879,
- ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 880,
- ERR_CANT_DO_THAT_IN_A_GROUP = 881,
- ERR_GUILD_LEADER_REPLACED = 882,
- ERR_TRANSMOGRIFY_CANT_EQUIP = 883,
- ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 884,
- ERR_TRANSMOGRIFY_NOT_SOULBOUND = 885,
- ERR_TRANSMOGRIFY_INVALID_SOURCE = 886,
- ERR_TRANSMOGRIFY_INVALID_DESTINATION = 887,
- ERR_TRANSMOGRIFY_MISMATCH = 888,
- ERR_TRANSMOGRIFY_LEGENDARY = 889,
- ERR_TRANSMOGRIFY_SAME_ITEM = 890,
- ERR_TRANSMOGRIFY_SAME_APPEARANCE = 891,
- ERR_TRANSMOGRIFY_NOT_EQUIPPED = 892,
- ERR_VOID_DEPOSIT_FULL = 893,
- ERR_VOID_WITHDRAW_FULL = 894,
- ERR_VOID_STORAGE_WRAPPED = 895,
- ERR_VOID_STORAGE_STACKABLE = 896,
- ERR_VOID_STORAGE_UNBOUND = 897,
- ERR_VOID_STORAGE_REPAIR = 898,
- ERR_VOID_STORAGE_CHARGES = 899,
- ERR_VOID_STORAGE_QUEST = 900,
- ERR_VOID_STORAGE_CONJURED = 901,
- ERR_VOID_STORAGE_MAIL = 902,
- ERR_VOID_STORAGE_BAG = 903,
- ERR_VOID_TRANSFER_STORAGE_FULL = 904,
- ERR_VOID_TRANSFER_INV_FULL = 905,
- ERR_VOID_TRANSFER_INTERNAL_ERROR = 906,
- ERR_VOID_TRANSFER_ITEM_INVALID = 907,
- ERR_DIFFICULTY_DISABLED_IN_LFG = 908,
- ERR_VOID_STORAGE_UNIQUE = 909,
- ERR_VOID_STORAGE_LOOT = 910,
- ERR_VOID_STORAGE_HOLIDAY = 911,
- ERR_VOID_STORAGE_DURATION = 912,
- ERR_VOID_STORAGE_LOAD_FAILED = 913,
- ERR_VOID_STORAGE_INVALID_ITEM = 914,
- ERR_PARENTAL_CONTROLS_CHAT_MUTED = 915,
- ERR_SOR_START_EXPERIENCE_INCOMPLETE = 916,
- ERR_SOR_INVALID_EMAIL = 917,
- ERR_SOR_INVALID_COMMENT = 918,
- ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 919,
- ERR_CHALLENGE_MODE_RESET_KEYSTONE = 920,
- ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 921,
- ERR_REPORT_SUBMITTED_SUCCESSFULLY = 922,
- ERR_REPORT_SUBMISSION_FAILED = 923,
- ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 924,
- ERR_BUG_SUBMITTED_SUCCESSFULLY = 925,
- ERR_CHALLENGE_MODE_ENABLED = 926,
- ERR_CHALLENGE_MODE_DISABLED = 927,
- ERR_PETBATTLE_CREATE_FAILED = 928,
- ERR_PETBATTLE_NOT_HERE = 929,
- ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 930,
- ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 931,
- ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 932,
- ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 933,
- ERR_PETBATTLE_NOT_WHILE_DEAD = 934,
- ERR_PETBATTLE_NOT_WHILE_FLYING = 935,
- ERR_PETBATTLE_TARGET_INVALID = 936,
- ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 937,
- ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 938,
- ERR_PETBATTLE_NOT_A_TRAINER = 939,
- ERR_PETBATTLE_DECLINED = 940,
- ERR_PETBATTLE_IN_BATTLE = 941,
- ERR_PETBATTLE_INVALID_LOADOUT = 942,
- ERR_PETBATTLE_ALL_PETS_DEAD = 943,
- ERR_PETBATTLE_NO_PETS_IN_SLOTS = 944,
- ERR_PETBATTLE_NO_ACCOUNT_LOCK = 945,
- ERR_PETBATTLE_WILD_PET_TAPPED = 946,
- ERR_PETBATTLE_RESTRICTED_ACCOUNT = 947,
- ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 948,
- ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 949,
- ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 950,
- ERR_CANT_HAVE_MORE_PETS = 951,
- ERR_PVP_MAP_NOT_FOUND = 952,
- ERR_PVP_MAP_NOT_SET = 953,
- ERR_PETBATTLE_QUEUE_QUEUED = 954,
- ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 955,
- ERR_PETBATTLE_QUEUE_JOIN_FAILED = 956,
- ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 957,
- ERR_PETBATTLE_QUEUE_REMOVED = 958,
- ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 959,
- ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 960,
- ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 961,
- ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 962,
- ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 963,
- ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 964,
- ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 965,
- ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 966,
- ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 967,
- ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 968,
- ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 969,
- ERR_PETBATTLE_QUEUE_SLOT_DEAD = 970,
- ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 971,
- ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 972,
- ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 973,
- ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 974,
- ERR_HAS_RESTRICTION = 975,
- ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 976,
- ERR_ITEM_UPGRADE_NO_PATH = 977,
- ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 978,
- ERR_BONUS_ROLL_EMPTY = 979,
- ERR_CHALLENGE_MODE_FULL = 980,
- ERR_CHALLENGE_MODE_IN_PROGRESS = 981,
- ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 982,
- ERR_BATTLETAG_FRIEND_NOT_FOUND = 983,
- ERR_BATTLETAG_FRIEND_NOT_VALID = 984,
- ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 985,
- ERR_BATTLETAG_FRIEND_THROTTLED = 986,
- ERR_BATTLETAG_FRIEND_SUCCESS = 987,
- ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 988,
- ERR_PETBATTLE_INTERNAL = 989,
- ERR_CANT_CAGE_PET_YET = 990,
- ERR_NO_LOOT_IN_CHALLENGE_MODE = 991,
- ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 992,
- ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 993,
- ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 994,
- ERR_RECRUIT_A_FRIEND_FAILED = 995,
- ERR_SET_LOOT_PERSONAL = 996,
- ERR_SET_LOOT_METHOD_FAILED_COMBAT = 997,
- ERR_REAGENT_BANK_FULL = 998,
- ERR_REAGENT_BANK_LOCKED = 999,
- ERR_GARRISON_BUILDING_EXISTS = 1000,
- ERR_GARRISON_INVALID_PLOT = 1001,
- ERR_GARRISON_INVALID_BUILDINGID = 1002,
- ERR_GARRISON_INVALID_PLOT_BUILDING = 1003,
- ERR_GARRISON_REQUIRES_BLUEPRINT = 1004,
- ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1005,
- ERR_GARRISON_NOT_ENOUGH_GOLD = 1006,
- ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1007,
- ERR_ALREADY_USING_LFG_LIST = 1008,
- ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1009,
- ERR_TOY_USE_LIMIT_REACHED = 1010,
- ERR_TOY_ALREADY_KNOWN = 1011,
- ERR_TRANSMOG_SET_ALREADY_KNOWN = 1012,
- ERR_NOT_ENOUGH_CURRENCY = 1013,
- ERR_SPEC_IS_DISABLED = 1014,
- ERR_FEATURE_RESTRICTED_TRIAL = 1015,
- ERR_CANT_BE_OBLITERATED = 1016,
- ERR_CANT_BE_SCRAPPED = 1017,
- ERR_CANT_BE_RECRAFTED = 1018,
- ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1019,
- ERR_MUST_EQUIP_ARTIFACT = 1020,
- ERR_CANT_DO_THAT_RIGHT_NOW = 1021,
- ERR_AFFECTING_COMBAT = 1022,
- ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1023,
- ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1024,
- ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1025,
- ERR_MOVIE_RECORDING_WARNING_PERF = 1026,
- ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1027,
- ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1028,
- ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1029,
- ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1030,
- ERR_NO_CHALLENGE_MODE_REWARD = 1031,
- ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1032,
- ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1033,
- ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1034,
- ERR_TALENT_FAILED_REST_AREA = 1035,
- ERR_CANNOT_ABANDON_LAST_PET = 1036,
- ERR_TEST_CVAR_SET_SSS = 1037,
- ERR_QUEST_TURN_IN_FAIL_REASON = 1038,
- ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1039,
- ERR_TALENT_GRANTED_BY_AURA = 1040,
- ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1041,
- ERR_GLYPH_TARGET_NOT_AVAILABLE = 1042,
- ERR_PVP_WARMODE_TOGGLE_ON = 1043,
- ERR_PVP_WARMODE_TOGGLE_OFF = 1044,
- ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1045,
- ERR_SPELL_FAILED_CANT_FLY_HERE = 1046,
- ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1047,
- ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1048,
- ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1049,
- ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1050,
- ERR_VOICE_CHAT_SERVICE_LOST = 1051,
- ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1052,
- ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1053,
- ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1054,
- ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1055,
- ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1056,
- ERR_VOICE_CHAT_PLAYER_SILENCED = 1057,
- ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1058,
- ERR_VOICE_CHAT_DISABLED = 1059,
- ERR_NO_PVP_REWARD = 1060,
- ERR_CLAIMED_PVP_REWARD = 1061,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1062,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1063,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1064,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1065,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1066,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1067,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1068,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1069,
- ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1070,
- ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1071,
- ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1072,
- ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1073,
- ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1074,
- ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1075,
- ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1076,
- ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1077,
- ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1078,
- ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1079,
- ERR_SOCKETING_REQUIRES_TINKER_GEM = 1080,
- ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1081,
- ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1082,
- ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1083,
- ERR_LEVEL_LINKING_RESULT_LINKED = 1084,
- ERR_LEVEL_LINKING_RESULT_UNLINKED = 1085,
- ERR_CLUB_FINDER_ERROR_POST_CLUB = 1086,
- ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1087,
- ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1088,
- ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1089,
- ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1090,
- ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1091,
- ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1092,
- ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1093,
- ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1094,
- ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1095,
- ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1096,
- ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1097,
- ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1098,
- ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1099,
- ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1100,
- ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1101,
- ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1102,
- ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1103,
- ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1104,
- ERR_SOULBIND_INVALID_CONDUIT = 1105,
- ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1106,
- ERR_SOULBIND_INVALID_TALENT = 1107,
- ERR_SOULBIND_DUPLICATE_CONDUIT = 1108,
- ERR_ACTIVATE_SOULBIND_S = 1109,
- ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1110,
- ERR_CANT_USE_PROFANITY = 1111,
- ERR_NOT_IN_PET_BATTLE = 1112,
- ERR_NOT_IN_NPE = 1113,
- ERR_NO_SPEC = 1114,
- ERR_NO_DOMINATIONSHARD_OVERWRITE = 1115,
- ERR_USE_WEEKLY_REWARDS_DISABLED = 1116,
- ERR_CROSS_FACTION_GROUP_JOINED = 1117,
- ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1118,
- ERR_EQUIPABLESPELLS_SLOTS_FULL = 1119,
- ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1120,
- ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1121,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1122,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1123,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1124,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1125,
- ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1126,
- ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1127,
+ ERR_GUILD_NEW_LEADER_NOT_ALLIED = 146,
+ ERR_GUILD_LEADER_LEAVE = 147,
+ ERR_GUILD_RANKS_LOCKED = 148,
+ ERR_GUILD_RANK_IN_USE = 149,
+ ERR_GUILD_RANK_TOO_HIGH_S = 150,
+ ERR_GUILD_RANK_TOO_LOW_S = 151,
+ ERR_GUILD_NAME_EXISTS_S = 152,
+ ERR_GUILD_WITHDRAW_LIMIT = 153,
+ ERR_GUILD_NOT_ENOUGH_MONEY = 154,
+ ERR_GUILD_TOO_MUCH_MONEY = 155,
+ ERR_GUILD_BANK_CONJURED_ITEM = 156,
+ ERR_GUILD_BANK_EQUIPPED_ITEM = 157,
+ ERR_GUILD_BANK_BOUND_ITEM = 158,
+ ERR_GUILD_BANK_QUEST_ITEM = 159,
+ ERR_GUILD_BANK_WRAPPED_ITEM = 160,
+ ERR_GUILD_BANK_FULL = 161,
+ ERR_GUILD_BANK_WRONG_TAB = 162,
+ ERR_NO_GUILD_CHARTER = 163,
+ ERR_OUT_OF_RANGE = 164,
+ ERR_PLAYER_DEAD = 165,
+ ERR_CLIENT_LOCKED_OUT = 166,
+ ERR_CLIENT_ON_TRANSPORT = 167,
+ ERR_KILLED_BY_S = 168,
+ ERR_LOOT_LOCKED = 169,
+ ERR_LOOT_TOO_FAR = 170,
+ ERR_LOOT_DIDNT_KILL = 171,
+ ERR_LOOT_BAD_FACING = 172,
+ ERR_LOOT_NOTSTANDING = 173,
+ ERR_LOOT_STUNNED = 174,
+ ERR_LOOT_NO_UI = 175,
+ ERR_LOOT_WHILE_INVULNERABLE = 176,
+ ERR_NO_LOOT = 177,
+ ERR_QUEST_ACCEPTED_S = 178,
+ ERR_QUEST_COMPLETE_S = 179,
+ ERR_QUEST_FAILED_S = 180,
+ ERR_QUEST_FAILED_BAG_FULL_S = 181,
+ ERR_QUEST_FAILED_MAX_COUNT_S = 182,
+ ERR_QUEST_FAILED_LOW_LEVEL = 183,
+ ERR_QUEST_FAILED_MISSING_ITEMS = 184,
+ ERR_QUEST_FAILED_WRONG_RACE = 185,
+ ERR_QUEST_FAILED_NOT_ENOUGH_MONEY = 186,
+ ERR_QUEST_FAILED_EXPANSION = 187,
+ ERR_QUEST_ONLY_ONE_TIMED = 188,
+ ERR_QUEST_NEED_PREREQS = 189,
+ ERR_QUEST_NEED_PREREQS_CUSTOM = 190,
+ ERR_QUEST_ALREADY_ON = 191,
+ ERR_QUEST_ALREADY_DONE = 192,
+ ERR_QUEST_ALREADY_DONE_DAILY = 193,
+ ERR_QUEST_HAS_IN_PROGRESS = 194,
+ ERR_QUEST_REWARD_EXP_I = 195,
+ ERR_QUEST_REWARD_MONEY_S = 196,
+ ERR_QUEST_MUST_CHOOSE = 197,
+ ERR_QUEST_LOG_FULL = 198,
+ ERR_COMBAT_DAMAGE_SSI = 199,
+ ERR_INSPECT_S = 200,
+ ERR_CANT_USE_ITEM = 201,
+ ERR_CANT_USE_ITEM_IN_ARENA = 202,
+ ERR_CANT_USE_ITEM_IN_RATED_BATTLEGROUND = 203,
+ ERR_MUST_EQUIP_ITEM = 204,
+ ERR_PASSIVE_ABILITY = 205,
+ ERR_2HSKILLNOTFOUND = 206,
+ ERR_NO_ATTACK_TARGET = 207,
+ ERR_INVALID_ATTACK_TARGET = 208,
+ ERR_ATTACK_PVP_TARGET_WHILE_UNFLAGGED = 209,
+ ERR_ATTACK_STUNNED = 210,
+ ERR_ATTACK_PACIFIED = 211,
+ ERR_ATTACK_MOUNTED = 212,
+ ERR_ATTACK_FLEEING = 213,
+ ERR_ATTACK_CONFUSED = 214,
+ ERR_ATTACK_CHARMED = 215,
+ ERR_ATTACK_DEAD = 216,
+ ERR_ATTACK_PREVENTED_BY_MECHANIC_S = 217,
+ ERR_ATTACK_CHANNEL = 218,
+ ERR_TAXISAMENODE = 219,
+ ERR_TAXINOSUCHPATH = 220,
+ ERR_TAXIUNSPECIFIEDSERVERERROR = 221,
+ ERR_TAXINOTENOUGHMONEY = 222,
+ ERR_TAXITOOFARAWAY = 223,
+ ERR_TAXINOVENDORNEARBY = 224,
+ ERR_TAXINOTVISITED = 225,
+ ERR_TAXIPLAYERBUSY = 226,
+ ERR_TAXIPLAYERALREADYMOUNTED = 227,
+ ERR_TAXIPLAYERSHAPESHIFTED = 228,
+ ERR_TAXIPLAYERMOVING = 229,
+ ERR_TAXINOPATHS = 230,
+ ERR_TAXINOTELIGIBLE = 231,
+ ERR_TAXINOTSTANDING = 232,
+ ERR_TAXIINCOMBAT = 233,
+ ERR_NO_REPLY_TARGET = 234,
+ ERR_GENERIC_NO_TARGET = 235,
+ ERR_INITIATE_TRADE_S = 236,
+ ERR_TRADE_REQUEST_S = 237,
+ ERR_TRADE_BLOCKED_S = 238,
+ ERR_TRADE_TARGET_DEAD = 239,
+ ERR_TRADE_TOO_FAR = 240,
+ ERR_TRADE_CANCELLED = 241,
+ ERR_TRADE_COMPLETE = 242,
+ ERR_TRADE_BAG_FULL = 243,
+ ERR_TRADE_TARGET_BAG_FULL = 244,
+ ERR_TRADE_MAX_COUNT_EXCEEDED = 245,
+ ERR_TRADE_TARGET_MAX_COUNT_EXCEEDED = 246,
+ ERR_INVENTORY_TRADE_TOO_MANY_UNIQUE_ITEM = 247,
+ ERR_ALREADY_TRADING = 248,
+ ERR_MOUNT_INVALIDMOUNTEE = 249,
+ ERR_MOUNT_TOOFARAWAY = 250,
+ ERR_MOUNT_ALREADYMOUNTED = 251,
+ ERR_MOUNT_NOTMOUNTABLE = 252,
+ ERR_MOUNT_NOTYOURPET = 253,
+ ERR_MOUNT_OTHER = 254,
+ ERR_MOUNT_LOOTING = 255,
+ ERR_MOUNT_RACECANTMOUNT = 256,
+ ERR_MOUNT_SHAPESHIFTED = 257,
+ ERR_MOUNT_NO_FAVORITES = 258,
+ ERR_MOUNT_NO_MOUNTS = 259,
+ ERR_DISMOUNT_NOPET = 260,
+ ERR_DISMOUNT_NOTMOUNTED = 261,
+ ERR_DISMOUNT_NOTYOURPET = 262,
+ ERR_SPELL_FAILED_TOTEMS = 263,
+ ERR_SPELL_FAILED_REAGENTS = 264,
+ ERR_SPELL_FAILED_REAGENTS_GENERIC = 265,
+ ERR_SPELL_FAILED_OPTIONAL_REAGENTS = 266,
+ ERR_CANT_TRADE_GOLD = 267,
+ ERR_SPELL_FAILED_EQUIPPED_ITEM = 268,
+ ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S = 269,
+ ERR_SPELL_FAILED_SHAPESHIFT_FORM_S = 270,
+ ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS = 271,
+ ERR_BADATTACKFACING = 272,
+ ERR_BADATTACKPOS = 273,
+ ERR_CHEST_IN_USE = 274,
+ ERR_USE_CANT_OPEN = 275,
+ ERR_USE_LOCKED = 276,
+ ERR_DOOR_LOCKED = 277,
+ ERR_BUTTON_LOCKED = 278,
+ ERR_USE_LOCKED_WITH_ITEM_S = 279,
+ ERR_USE_LOCKED_WITH_SPELL_S = 280,
+ ERR_USE_LOCKED_WITH_SPELL_KNOWN_SI = 281,
+ ERR_USE_TOO_FAR = 282,
+ ERR_USE_BAD_ANGLE = 283,
+ ERR_USE_OBJECT_MOVING = 284,
+ ERR_USE_SPELL_FOCUS = 285,
+ ERR_USE_DESTROYED = 286,
+ ERR_SET_LOOT_FREEFORALL = 287,
+ ERR_SET_LOOT_ROUNDROBIN = 288,
+ ERR_SET_LOOT_MASTER = 289,
+ ERR_SET_LOOT_GROUP = 290,
+ ERR_SET_LOOT_THRESHOLD_S = 291,
+ ERR_NEW_LOOT_MASTER_S = 292,
+ ERR_SPECIFY_MASTER_LOOTER = 293,
+ ERR_LOOT_SPEC_CHANGED_S = 294,
+ ERR_TAME_FAILED = 295,
+ ERR_CHAT_WHILE_DEAD = 296,
+ ERR_CHAT_PLAYER_NOT_FOUND_S = 297,
+ ERR_NEWTAXIPATH = 298,
+ ERR_NO_PET = 299,
+ ERR_NOTYOURPET = 300,
+ ERR_PET_NOT_RENAMEABLE = 301,
+ ERR_QUEST_OBJECTIVE_COMPLETE_S = 302,
+ ERR_QUEST_UNKNOWN_COMPLETE = 303,
+ ERR_QUEST_ADD_KILL_SII = 304,
+ ERR_QUEST_ADD_FOUND_SII = 305,
+ ERR_QUEST_ADD_ITEM_SII = 306,
+ ERR_QUEST_ADD_PLAYER_KILL_SII = 307,
+ ERR_CANNOTCREATEDIRECTORY = 308,
+ ERR_CANNOTCREATEFILE = 309,
+ ERR_PLAYER_WRONG_FACTION = 310,
+ ERR_PLAYER_IS_NEUTRAL = 311,
+ ERR_BANKSLOT_FAILED_TOO_MANY = 312,
+ ERR_BANKSLOT_INSUFFICIENT_FUNDS = 313,
+ ERR_BANKSLOT_NOTBANKER = 314,
+ ERR_FRIEND_DB_ERROR = 315,
+ ERR_FRIEND_LIST_FULL = 316,
+ ERR_FRIEND_ADDED_S = 317,
+ ERR_BATTLETAG_FRIEND_ADDED_S = 318,
+ ERR_FRIEND_ONLINE_SS = 319,
+ ERR_FRIEND_OFFLINE_S = 320,
+ ERR_FRIEND_NOT_FOUND = 321,
+ ERR_FRIEND_WRONG_FACTION = 322,
+ ERR_FRIEND_REMOVED_S = 323,
+ ERR_BATTLETAG_FRIEND_REMOVED_S = 324,
+ ERR_FRIEND_ERROR = 325,
+ ERR_FRIEND_ALREADY_S = 326,
+ ERR_FRIEND_SELF = 327,
+ ERR_FRIEND_DELETED = 328,
+ ERR_IGNORE_FULL = 329,
+ ERR_IGNORE_SELF = 330,
+ ERR_IGNORE_NOT_FOUND = 331,
+ ERR_IGNORE_ALREADY_S = 332,
+ ERR_IGNORE_ADDED_S = 333,
+ ERR_IGNORE_REMOVED_S = 334,
+ ERR_IGNORE_AMBIGUOUS = 335,
+ ERR_IGNORE_DELETED = 336,
+ ERR_ONLY_ONE_BOLT = 337,
+ ERR_ONLY_ONE_AMMO = 338,
+ ERR_SPELL_FAILED_EQUIPPED_SPECIFIC_ITEM = 339,
+ ERR_WRONG_BAG_TYPE_SUBCLASS = 340,
+ ERR_CANT_WRAP_STACKABLE = 341,
+ ERR_CANT_WRAP_EQUIPPED = 342,
+ ERR_CANT_WRAP_WRAPPED = 343,
+ ERR_CANT_WRAP_BOUND = 344,
+ ERR_CANT_WRAP_UNIQUE = 345,
+ ERR_CANT_WRAP_BAGS = 346,
+ ERR_OUT_OF_MANA = 347,
+ ERR_OUT_OF_RAGE = 348,
+ ERR_OUT_OF_FOCUS = 349,
+ ERR_OUT_OF_ENERGY = 350,
+ ERR_OUT_OF_CHI = 351,
+ ERR_OUT_OF_HEALTH = 352,
+ ERR_OUT_OF_RUNES = 353,
+ ERR_OUT_OF_RUNIC_POWER = 354,
+ ERR_OUT_OF_SOUL_SHARDS = 355,
+ ERR_OUT_OF_LUNAR_POWER = 356,
+ ERR_OUT_OF_HOLY_POWER = 357,
+ ERR_OUT_OF_MAELSTROM = 358,
+ ERR_OUT_OF_COMBO_POINTS = 359,
+ ERR_OUT_OF_INSANITY = 360,
+ ERR_OUT_OF_ESSENCE = 361,
+ ERR_OUT_OF_ARCANE_CHARGES = 362,
+ ERR_OUT_OF_FURY = 363,
+ ERR_OUT_OF_PAIN = 364,
+ ERR_OUT_OF_POWER_DISPLAY = 365,
+ ERR_LOOT_GONE = 366,
+ ERR_MOUNT_FORCEDDISMOUNT = 367,
+ ERR_AUTOFOLLOW_TOO_FAR = 368,
+ ERR_UNIT_NOT_FOUND = 369,
+ ERR_INVALID_FOLLOW_TARGET = 370,
+ ERR_INVALID_FOLLOW_PVP_COMBAT = 371,
+ ERR_INVALID_FOLLOW_TARGET_PVP_COMBAT = 372,
+ ERR_INVALID_INSPECT_TARGET = 373,
+ ERR_GUILDEMBLEM_SUCCESS = 374,
+ ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 375,
+ ERR_GUILDEMBLEM_NOGUILD = 376,
+ ERR_GUILDEMBLEM_NOTGUILDMASTER = 377,
+ ERR_GUILDEMBLEM_NOTENOUGHMONEY = 378,
+ ERR_GUILDEMBLEM_INVALIDVENDOR = 379,
+ ERR_EMBLEMERROR_NOTABARDGEOSET = 380,
+ ERR_SPELL_OUT_OF_RANGE = 381,
+ ERR_COMMAND_NEEDS_TARGET = 382,
+ ERR_NOAMMO_S = 383,
+ ERR_TOOBUSYTOFOLLOW = 384,
+ ERR_DUEL_REQUESTED = 385,
+ ERR_DUEL_CANCELLED = 386,
+ ERR_DEATHBINDALREADYBOUND = 387,
+ ERR_DEATHBIND_SUCCESS_S = 388,
+ ERR_NOEMOTEWHILERUNNING = 389,
+ ERR_ZONE_EXPLORED = 390,
+ ERR_ZONE_EXPLORED_XP = 391,
+ ERR_INVALID_ITEM_TARGET = 392,
+ ERR_INVALID_QUEST_TARGET = 393,
+ ERR_IGNORING_YOU_S = 394,
+ ERR_FISH_NOT_HOOKED = 395,
+ ERR_FISH_ESCAPED = 396,
+ ERR_SPELL_FAILED_NOTUNSHEATHED = 397,
+ ERR_PETITION_OFFERED_S = 398,
+ ERR_PETITION_SIGNED = 399,
+ ERR_PETITION_SIGNED_S = 400,
+ ERR_PETITION_DECLINED_S = 401,
+ ERR_PETITION_ALREADY_SIGNED = 402,
+ ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 403,
+ ERR_PETITION_ALREADY_SIGNED_OTHER = 404,
+ ERR_PETITION_IN_GUILD = 405,
+ ERR_PETITION_CREATOR = 406,
+ ERR_PETITION_NOT_ENOUGH_SIGNATURES = 407,
+ ERR_PETITION_NOT_SAME_SERVER = 408,
+ ERR_PETITION_FULL = 409,
+ ERR_PETITION_ALREADY_SIGNED_BY_S = 410,
+ ERR_GUILD_NAME_INVALID = 411,
+ ERR_SPELL_UNLEARNED_S = 412,
+ ERR_PET_SPELL_ROOTED = 413,
+ ERR_PET_SPELL_AFFECTING_COMBAT = 414,
+ ERR_PET_SPELL_OUT_OF_RANGE = 415,
+ ERR_PET_SPELL_NOT_BEHIND = 416,
+ ERR_PET_SPELL_TARGETS_DEAD = 417,
+ ERR_PET_SPELL_DEAD = 418,
+ ERR_PET_SPELL_NOPATH = 419,
+ ERR_ITEM_CANT_BE_DESTROYED = 420,
+ ERR_TICKET_ALREADY_EXISTS = 421,
+ ERR_TICKET_CREATE_ERROR = 422,
+ ERR_TICKET_UPDATE_ERROR = 423,
+ ERR_TICKET_DB_ERROR = 424,
+ ERR_TICKET_NO_TEXT = 425,
+ ERR_TICKET_TEXT_TOO_LONG = 426,
+ ERR_OBJECT_IS_BUSY = 427,
+ ERR_EXHAUSTION_WELLRESTED = 428,
+ ERR_EXHAUSTION_RESTED = 429,
+ ERR_EXHAUSTION_NORMAL = 430,
+ ERR_EXHAUSTION_TIRED = 431,
+ ERR_EXHAUSTION_EXHAUSTED = 432,
+ ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 433,
+ ERR_CANT_INTERACT_SHAPESHIFTED = 434,
+ ERR_REALM_NOT_FOUND = 435,
+ ERR_MAIL_QUEST_ITEM = 436,
+ ERR_MAIL_BOUND_ITEM = 437,
+ ERR_MAIL_CONJURED_ITEM = 438,
+ ERR_MAIL_BAG = 439,
+ ERR_MAIL_TO_SELF = 440,
+ ERR_MAIL_TARGET_NOT_FOUND = 441,
+ ERR_MAIL_DATABASE_ERROR = 442,
+ ERR_MAIL_DELETE_ITEM_ERROR = 443,
+ ERR_MAIL_WRAPPED_COD = 444,
+ ERR_MAIL_CANT_SEND_REALM = 445,
+ ERR_MAIL_TEMP_RETURN_OUTAGE = 446,
+ ERR_MAIL_RECEPIENT_CANT_RECEIVE_MAIL = 447,
+ ERR_MAIL_SENT = 448,
+ ERR_MAIL_TARGET_IS_TRIAL = 449,
+ ERR_NOT_HAPPY_ENOUGH = 450,
+ ERR_USE_CANT_IMMUNE = 451,
+ ERR_CANT_BE_DISENCHANTED = 452,
+ ERR_CANT_USE_DISARMED = 453,
+ ERR_AUCTION_DATABASE_ERROR = 454,
+ ERR_AUCTION_HIGHER_BID = 455,
+ ERR_AUCTION_ALREADY_BID = 456,
+ ERR_AUCTION_OUTBID_S = 457,
+ ERR_AUCTION_WON_S = 458,
+ ERR_AUCTION_REMOVED_S = 459,
+ ERR_AUCTION_BID_PLACED = 460,
+ ERR_LOGOUT_FAILED = 461,
+ ERR_QUEST_PUSH_SUCCESS_S = 462,
+ ERR_QUEST_PUSH_INVALID_S = 463,
+ ERR_QUEST_PUSH_INVALID_TO_RECIPIENT_S = 464,
+ ERR_QUEST_PUSH_ACCEPTED_S = 465,
+ ERR_QUEST_PUSH_DECLINED_S = 466,
+ ERR_QUEST_PUSH_BUSY_S = 467,
+ ERR_QUEST_PUSH_DEAD_S = 468,
+ ERR_QUEST_PUSH_DEAD_TO_RECIPIENT_S = 469,
+ ERR_QUEST_PUSH_LOG_FULL_S = 470,
+ ERR_QUEST_PUSH_LOG_FULL_TO_RECIPIENT_S = 471,
+ ERR_QUEST_PUSH_ONQUEST_S = 472,
+ ERR_QUEST_PUSH_ONQUEST_TO_RECIPIENT_S = 473,
+ ERR_QUEST_PUSH_ALREADY_DONE_S = 474,
+ ERR_QUEST_PUSH_ALREADY_DONE_TO_RECIPIENT_S = 475,
+ ERR_QUEST_PUSH_NOT_DAILY_S = 476,
+ ERR_QUEST_PUSH_TIMER_EXPIRED_S = 477,
+ ERR_QUEST_PUSH_NOT_IN_PARTY_S = 478,
+ ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 479,
+ ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_TO_RECIPIENT_S = 480,
+ ERR_QUEST_PUSH_NOT_ALLOWED_S = 481,
+ ERR_QUEST_PUSH_PREREQUISITE_S = 482,
+ ERR_QUEST_PUSH_PREREQUISITE_TO_RECIPIENT_S = 483,
+ ERR_QUEST_PUSH_LOW_LEVEL_S = 484,
+ ERR_QUEST_PUSH_LOW_LEVEL_TO_RECIPIENT_S = 485,
+ ERR_QUEST_PUSH_HIGH_LEVEL_S = 486,
+ ERR_QUEST_PUSH_HIGH_LEVEL_TO_RECIPIENT_S = 487,
+ ERR_QUEST_PUSH_CLASS_S = 488,
+ ERR_QUEST_PUSH_CLASS_TO_RECIPIENT_S = 489,
+ ERR_QUEST_PUSH_RACE_S = 490,
+ ERR_QUEST_PUSH_RACE_TO_RECIPIENT_S = 491,
+ ERR_QUEST_PUSH_LOW_FACTION_S = 492,
+ ERR_QUEST_PUSH_LOW_FACTION_TO_RECIPIENT_S = 493,
+ ERR_QUEST_PUSH_EXPANSION_S = 494,
+ ERR_QUEST_PUSH_EXPANSION_TO_RECIPIENT_S = 495,
+ ERR_QUEST_PUSH_NOT_GARRISON_OWNER_S = 496,
+ ERR_QUEST_PUSH_NOT_GARRISON_OWNER_TO_RECIPIENT_S = 497,
+ ERR_QUEST_PUSH_WRONG_COVENANT_S = 498,
+ ERR_QUEST_PUSH_WRONG_COVENANT_TO_RECIPIENT_S = 499,
+ ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_S = 500,
+ ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_TO_RECIPIENT_S = 501,
+ ERR_QUEST_PUSH_WRONG_FACTION_S = 502,
+ ERR_QUEST_PUSH_WRONG_FACTION_TO_RECIPIENT_S = 503,
+ ERR_QUEST_PUSH_CROSS_FACTION_RESTRICTED_S = 504,
+ ERR_RAID_GROUP_LOWLEVEL = 505,
+ ERR_RAID_GROUP_ONLY = 506,
+ ERR_RAID_GROUP_FULL = 507,
+ ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 508,
+ ERR_CORPSE_IS_NOT_IN_INSTANCE = 509,
+ ERR_PVP_KILL_HONORABLE = 510,
+ ERR_PVP_KILL_DISHONORABLE = 511,
+ ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 512,
+ ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 513,
+ ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 514,
+ ERR_AUTOLOOT_MONEY_S = 515,
+ ERR_GENERIC_STUNNED = 516,
+ ERR_GENERIC_THROTTLE = 517,
+ ERR_CLUB_FINDER_SEARCHING_TOO_FAST = 518,
+ ERR_TARGET_STUNNED = 519,
+ ERR_MUST_REPAIR_DURABILITY = 520,
+ ERR_RAID_YOU_JOINED = 521,
+ ERR_RAID_YOU_LEFT = 522,
+ ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 523,
+ ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 524,
+ ERR_RAID_MEMBER_ADDED_S = 525,
+ ERR_RAID_MEMBER_REMOVED_S = 526,
+ ERR_INSTANCE_GROUP_ADDED_S = 527,
+ ERR_INSTANCE_GROUP_REMOVED_S = 528,
+ ERR_CLICK_ON_ITEM_TO_FEED = 529,
+ ERR_TOO_MANY_CHAT_CHANNELS = 530,
+ ERR_LOOT_ROLL_PENDING = 531,
+ ERR_LOOT_PLAYER_NOT_FOUND = 532,
+ ERR_NOT_IN_RAID = 533,
+ ERR_LOGGING_OUT = 534,
+ ERR_TARGET_LOGGING_OUT = 535,
+ ERR_NOT_WHILE_MOUNTED = 536,
+ ERR_NOT_WHILE_SHAPESHIFTED = 537,
+ ERR_NOT_IN_COMBAT = 538,
+ ERR_NOT_WHILE_DISARMED = 539,
+ ERR_PET_BROKEN = 540,
+ ERR_TALENT_WIPE_ERROR = 541,
+ ERR_SPEC_WIPE_ERROR = 542,
+ ERR_GLYPH_WIPE_ERROR = 543,
+ ERR_PET_SPEC_WIPE_ERROR = 544,
+ ERR_FEIGN_DEATH_RESISTED = 545,
+ ERR_MEETING_STONE_IN_QUEUE_S = 546,
+ ERR_MEETING_STONE_LEFT_QUEUE_S = 547,
+ ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 548,
+ ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 549,
+ ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 550,
+ ERR_MEETING_STONE_SUCCESS = 551,
+ ERR_MEETING_STONE_IN_PROGRESS = 552,
+ ERR_MEETING_STONE_MEMBER_ADDED_S = 553,
+ ERR_MEETING_STONE_GROUP_FULL = 554,
+ ERR_MEETING_STONE_NOT_LEADER = 555,
+ ERR_MEETING_STONE_INVALID_LEVEL = 556,
+ ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 557,
+ ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 558,
+ ERR_MEETING_STONE_MUST_BE_LEADER = 559,
+ ERR_MEETING_STONE_NO_RAID_GROUP = 560,
+ ERR_MEETING_STONE_NEED_PARTY = 561,
+ ERR_MEETING_STONE_NOT_FOUND = 562,
+ ERR_MEETING_STONE_TARGET_IN_VEHICLE = 563,
+ ERR_GUILDEMBLEM_SAME = 564,
+ ERR_EQUIP_TRADE_ITEM = 565,
+ ERR_PVP_TOGGLE_ON = 566,
+ ERR_PVP_TOGGLE_OFF = 567,
+ ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 568,
+ ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 569,
+ ERR_GROUP_JOIN_BATTLEGROUND_S = 570,
+ ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 571,
+ ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 572,
+ ERR_SOLO_JOIN_BATTLEGROUND_S = 573,
+ ERR_JOIN_SINGLE_SCENARIO_S = 574,
+ ERR_BATTLEGROUND_TOO_MANY_QUEUES = 575,
+ ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 576,
+ ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 577,
+ ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 578,
+ ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 579,
+ ERR_ALREADY_IN_ARENA_TEAM_S = 580,
+ ERR_INVALID_PROMOTION_CODE = 581,
+ ERR_BG_PLAYER_JOINED_SS = 582,
+ ERR_BG_PLAYER_LEFT_S = 583,
+ ERR_RESTRICTED_ACCOUNT = 584,
+ ERR_RESTRICTED_ACCOUNT_TRIAL = 585,
+ ERR_PLAY_TIME_EXCEEDED = 586,
+ ERR_APPROACHING_PARTIAL_PLAY_TIME = 587,
+ ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 588,
+ ERR_APPROACHING_NO_PLAY_TIME = 589,
+ ERR_APPROACHING_NO_PLAY_TIME_2 = 590,
+ ERR_UNHEALTHY_TIME = 591,
+ ERR_CHAT_RESTRICTED_TRIAL = 592,
+ ERR_CHAT_THROTTLED = 593,
+ ERR_MAIL_REACHED_CAP = 594,
+ ERR_INVALID_RAID_TARGET = 595,
+ ERR_RAID_LEADER_READY_CHECK_START_S = 596,
+ ERR_READY_CHECK_IN_PROGRESS = 597,
+ ERR_READY_CHECK_THROTTLED = 598,
+ ERR_DUNGEON_DIFFICULTY_FAILED = 599,
+ ERR_DUNGEON_DIFFICULTY_CHANGED_S = 600,
+ ERR_TRADE_WRONG_REALM = 601,
+ ERR_TRADE_NOT_ON_TAPLIST = 602,
+ ERR_CHAT_PLAYER_AMBIGUOUS_S = 603,
+ ERR_LOOT_CANT_LOOT_THAT_NOW = 604,
+ ERR_LOOT_MASTER_INV_FULL = 605,
+ ERR_LOOT_MASTER_UNIQUE_ITEM = 606,
+ ERR_LOOT_MASTER_OTHER = 607,
+ ERR_FILTERING_YOU_S = 608,
+ ERR_USE_PREVENTED_BY_MECHANIC_S = 609,
+ ERR_ITEM_UNIQUE_EQUIPPABLE = 610,
+ ERR_LFG_LEADER_IS_LFM_S = 611,
+ ERR_LFG_PENDING = 612,
+ ERR_CANT_SPEAK_LANGAGE = 613,
+ ERR_VENDOR_MISSING_TURNINS = 614,
+ ERR_BATTLEGROUND_NOT_IN_TEAM = 615,
+ ERR_NOT_IN_BATTLEGROUND = 616,
+ ERR_NOT_ENOUGH_HONOR_POINTS = 617,
+ ERR_NOT_ENOUGH_ARENA_POINTS = 618,
+ ERR_SOCKETING_REQUIRES_META_GEM = 619,
+ ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 620,
+ ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 621,
+ ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 622,
+ ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 623,
+ ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 624,
+ ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 625,
+ ERR_ITEM_MAX_COUNT_SOCKETED = 626,
+ ERR_SYSTEM_DISABLED = 627,
+ ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 628,
+ ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 629,
+ ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 630,
+ ERR_USER_SQUELCHED = 631,
+ ERR_ACCOUNT_SILENCED = 632,
+ ERR_PARTY_MEMBER_SILENCED = 633,
+ ERR_PARTY_MEMBER_SILENCED_LFG_DELIST = 634,
+ ERR_TOO_MUCH_GOLD = 635,
+ ERR_NOT_BARBER_SITTING = 636,
+ ERR_QUEST_FAILED_CAIS = 637,
+ ERR_INVITE_RESTRICTED_TRIAL = 638,
+ ERR_VOICE_IGNORE_FULL = 639,
+ ERR_VOICE_IGNORE_SELF = 640,
+ ERR_VOICE_IGNORE_NOT_FOUND = 641,
+ ERR_VOICE_IGNORE_ALREADY_S = 642,
+ ERR_VOICE_IGNORE_ADDED_S = 643,
+ ERR_VOICE_IGNORE_REMOVED_S = 644,
+ ERR_VOICE_IGNORE_AMBIGUOUS = 645,
+ ERR_VOICE_IGNORE_DELETED = 646,
+ ERR_UNKNOWN_MACRO_OPTION_S = 647,
+ ERR_NOT_DURING_ARENA_MATCH = 648,
+ ERR_NOT_IN_RATED_BATTLEGROUND = 649,
+ ERR_PLAYER_SILENCED = 650,
+ ERR_PLAYER_UNSILENCED = 651,
+ ERR_COMSAT_DISCONNECT = 652,
+ ERR_COMSAT_RECONNECT_ATTEMPT = 653,
+ ERR_COMSAT_CONNECT_FAIL = 654,
+ ERR_MAIL_INVALID_ATTACHMENT_SLOT = 655,
+ ERR_MAIL_TOO_MANY_ATTACHMENTS = 656,
+ ERR_MAIL_INVALID_ATTACHMENT = 657,
+ ERR_MAIL_ATTACHMENT_EXPIRED = 658,
+ ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 659,
+ ERR_PROFANE_CHAT_NAME = 660,
+ ERR_PLAYER_SILENCED_ECHO = 661,
+ ERR_PLAYER_UNSILENCED_ECHO = 662,
+ ERR_LOOT_CANT_LOOT_THAT = 663,
+ ERR_ARENA_EXPIRED_CAIS = 664,
+ ERR_GROUP_ACTION_THROTTLED = 665,
+ ERR_ALREADY_PICKPOCKETED = 666,
+ ERR_NAME_INVALID = 667,
+ ERR_NAME_NO_NAME = 668,
+ ERR_NAME_TOO_SHORT = 669,
+ ERR_NAME_TOO_LONG = 670,
+ ERR_NAME_MIXED_LANGUAGES = 671,
+ ERR_NAME_PROFANE = 672,
+ ERR_NAME_RESERVED = 673,
+ ERR_NAME_THREE_CONSECUTIVE = 674,
+ ERR_NAME_INVALID_SPACE = 675,
+ ERR_NAME_CONSECUTIVE_SPACES = 676,
+ ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 677,
+ ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 678,
+ ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 679,
+ ERR_RECRUIT_A_FRIEND_NOT_LINKED = 680,
+ ERR_RECRUIT_A_FRIEND_NOT_NOW = 681,
+ ERR_RECRUIT_A_FRIEND_SUMMON_LEVEL_MAX = 682,
+ ERR_RECRUIT_A_FRIEND_SUMMON_COOLDOWN = 683,
+ ERR_RECRUIT_A_FRIEND_SUMMON_OFFLINE = 684,
+ ERR_RECRUIT_A_FRIEND_INSUF_EXPAN_LVL = 685,
+ ERR_RECRUIT_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 686,
+ ERR_NOT_SAME_ACCOUNT = 687,
+ ERR_BAD_ON_USE_ENCHANT = 688,
+ ERR_TRADE_SELF = 689,
+ ERR_TOO_MANY_SOCKETS = 690,
+ ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 691,
+ ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 692,
+ ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 693,
+ ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 694,
+ ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 695,
+ ERR_ITEM_INVENTORY_FULL_SATCHEL = 696,
+ ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 697,
+ ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 698,
+ ERR_PURCHASE_LEVEL_TOO_LOW = 699,
+ ERR_GROUP_SWAP_FAILED = 700,
+ ERR_INVITE_IN_COMBAT = 701,
+ ERR_INVALID_GLYPH_SLOT = 702,
+ ERR_GENERIC_NO_VALID_TARGETS = 703,
+ ERR_CALENDAR_EVENT_ALERT_S = 704,
+ ERR_PET_LEARN_SPELL_S = 705,
+ ERR_PET_LEARN_ABILITY_S = 706,
+ ERR_PET_SPELL_UNLEARNED_S = 707,
+ ERR_INVITE_UNKNOWN_REALM = 708,
+ ERR_INVITE_NO_PARTY_SERVER = 709,
+ ERR_INVITE_PARTY_BUSY = 710,
+ ERR_INVITE_PARTY_BUSY_PENDING_REQUEST = 711,
+ ERR_INVITE_PARTY_BUSY_PENDING_SUGGEST = 712,
+ ERR_PARTY_TARGET_AMBIGUOUS = 713,
+ ERR_PARTY_LFG_INVITE_RAID_LOCKED = 714,
+ ERR_PARTY_LFG_BOOT_LIMIT = 715,
+ ERR_PARTY_LFG_BOOT_COOLDOWN_S = 716,
+ ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 717,
+ ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 718,
+ ERR_PARTY_LFG_BOOT_IN_PROGRESS = 719,
+ ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 720,
+ ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 721,
+ ERR_PARTY_LFG_BOOT_VOTE_FAILED = 722,
+ ERR_PARTY_LFG_BOOT_IN_COMBAT = 723,
+ ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 724,
+ ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 725,
+ ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 726,
+ ERR_PARTY_PRIVATE_GROUP_ONLY = 727,
+ ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 728,
+ ERR_RAID_DISALLOWED_BY_LEVEL = 729,
+ ERR_RAID_DISALLOWED_BY_CROSS_REALM = 730,
+ ERR_PARTY_ROLE_NOT_AVAILABLE = 731,
+ ERR_JOIN_LFG_OBJECT_FAILED = 732,
+ ERR_LFG_REMOVED_LEVELUP = 733,
+ ERR_LFG_REMOVED_XP_TOGGLE = 734,
+ ERR_LFG_REMOVED_FACTION_CHANGE = 735,
+ ERR_BATTLEGROUND_INFO_THROTTLED = 736,
+ ERR_BATTLEGROUND_ALREADY_IN = 737,
+ ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 738,
+ ERR_ARENA_TEAM_PERMISSIONS = 739,
+ ERR_NOT_WHILE_FALLING = 740,
+ ERR_NOT_WHILE_MOVING = 741,
+ ERR_NOT_WHILE_FATIGUED = 742,
+ ERR_MAX_SOCKETS = 743,
+ ERR_MULTI_CAST_ACTION_TOTEM_S = 744,
+ ERR_BATTLEGROUND_JOIN_LEVELUP = 745,
+ ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 746,
+ ERR_BATTLEGROUND_JOIN_XP_GAIN = 747,
+ ERR_BATTLEGROUND_JOIN_MERCENARY = 748,
+ ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 749,
+ ERR_BATTLEGROUND_JOIN_RATED_TOO_MANY_HEALERS = 750,
+ ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 751,
+ ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 752,
+ ERR_RAID_DIFFICULTY_FAILED = 753,
+ ERR_RAID_DIFFICULTY_CHANGED_S = 754,
+ ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 755,
+ ERR_RAID_LOCKOUT_CHANGED_S = 756,
+ ERR_RAID_CONVERTED_TO_PARTY = 757,
+ ERR_PARTY_CONVERTED_TO_RAID = 758,
+ ERR_PLAYER_DIFFICULTY_CHANGED_S = 759,
+ ERR_GMRESPONSE_DB_ERROR = 760,
+ ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 761,
+ ERR_ARENA_JOIN_RANGE_INDEX = 762,
+ ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 763,
+ ERR_BATTLEGROUND_JOIN_FAILED = 764,
+ ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 765,
+ ERR_BATTLEGROUND_JOIN_RESPEC = 766,
+ ERR_BATTLEGROUND_INVITATION_DECLINED = 767,
+ ERR_BATTLEGROUND_INVITATION_DECLINED_BY = 768,
+ ERR_BATTLEGROUND_JOIN_TIMED_OUT = 769,
+ ERR_BATTLEGROUND_DUPE_QUEUE = 770,
+ ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 771,
+ ERR_IN_BATTLEGROUND_RESPEC = 772,
+ ERR_MAIL_LIMITED_DURATION_ITEM = 773,
+ ERR_YELL_RESTRICTED_TRIAL = 774,
+ ERR_CHAT_RAID_RESTRICTED_TRIAL = 775,
+ ERR_LFG_ROLE_CHECK_FAILED = 776,
+ ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 777,
+ ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 778,
+ ERR_LFG_READY_CHECK_FAILED = 779,
+ ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 780,
+ ERR_LFG_GROUP_FULL = 781,
+ ERR_LFG_NO_LFG_OBJECT = 782,
+ ERR_LFG_NO_SLOTS_PLAYER = 783,
+ ERR_LFG_NO_SLOTS_PARTY = 784,
+ ERR_LFG_NO_SPEC = 785,
+ ERR_LFG_MISMATCHED_SLOTS = 786,
+ ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 787,
+ ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 788,
+ ERR_LFG_MEMBERS_NOT_PRESENT = 789,
+ ERR_LFG_GET_INFO_TIMEOUT = 790,
+ ERR_LFG_INVALID_SLOT = 791,
+ ERR_LFG_DESERTER_PLAYER = 792,
+ ERR_LFG_DESERTER_PARTY = 793,
+ ERR_LFG_DEAD = 794,
+ ERR_LFG_RANDOM_COOLDOWN_PLAYER = 795,
+ ERR_LFG_RANDOM_COOLDOWN_PARTY = 796,
+ ERR_LFG_TOO_MANY_MEMBERS = 797,
+ ERR_LFG_TOO_FEW_MEMBERS = 798,
+ ERR_LFG_PROPOSAL_FAILED = 799,
+ ERR_LFG_PROPOSAL_DECLINED_SELF = 800,
+ ERR_LFG_PROPOSAL_DECLINED_PARTY = 801,
+ ERR_LFG_NO_SLOTS_SELECTED = 802,
+ ERR_LFG_NO_ROLES_SELECTED = 803,
+ ERR_LFG_ROLE_CHECK_INITIATED = 804,
+ ERR_LFG_READY_CHECK_INITIATED = 805,
+ ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 806,
+ ERR_LFG_PLAYER_DECLINED_READY_CHECK = 807,
+ ERR_LFG_JOINED_QUEUE = 808,
+ ERR_LFG_JOINED_FLEX_QUEUE = 809,
+ ERR_LFG_JOINED_RF_QUEUE = 810,
+ ERR_LFG_JOINED_SCENARIO_QUEUE = 811,
+ ERR_LFG_JOINED_WORLD_PVP_QUEUE = 812,
+ ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 813,
+ ERR_LFG_JOINED_LIST = 814,
+ ERR_LFG_LEFT_QUEUE = 815,
+ ERR_LFG_LEFT_LIST = 816,
+ ERR_LFG_ROLE_CHECK_ABORTED = 817,
+ ERR_LFG_READY_CHECK_ABORTED = 818,
+ ERR_LFG_CANT_USE_BATTLEGROUND = 819,
+ ERR_LFG_CANT_USE_DUNGEONS = 820,
+ ERR_LFG_REASON_TOO_MANY_LFG = 821,
+ ERR_LFG_FARM_LIMIT = 822,
+ ERR_LFG_NO_CROSS_FACTION_PARTIES = 823,
+ ERR_INVALID_TELEPORT_LOCATION = 824,
+ ERR_TOO_FAR_TO_INTERACT = 825,
+ ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 826,
+ ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 827,
+ ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 828,
+ ERR_DIFFICULTY_CHANGE_WORLDSTATE = 829,
+ ERR_DIFFICULTY_CHANGE_ENCOUNTER = 830,
+ ERR_DIFFICULTY_CHANGE_COMBAT = 831,
+ ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 832,
+ ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 833,
+ ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 834,
+ ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 835,
+ ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 836,
+ ERR_ARENA_TEAM_PARTY_SIZE = 837,
+ ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 838,
+ ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 839,
+ ERR_SOLO_MIN_ITEM_LEVEL = 840,
+ ERR_PVP_PLAYER_ABANDONED = 841,
+ ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 842,
+ ERR_QUEST_FORCE_REMOVED_S = 843,
+ ERR_ATTACK_NO_ACTIONS = 844,
+ ERR_IN_RANDOM_BG = 845,
+ ERR_IN_NON_RANDOM_BG = 846,
+ ERR_BN_FRIEND_SELF = 847,
+ ERR_BN_FRIEND_ALREADY = 848,
+ ERR_BN_FRIEND_BLOCKED = 849,
+ ERR_BN_FRIEND_LIST_FULL = 850,
+ ERR_BN_FRIEND_REQUEST_SENT = 851,
+ ERR_BN_BROADCAST_THROTTLE = 852,
+ ERR_BG_DEVELOPER_ONLY = 853,
+ ERR_CURRENCY_SPELL_SLOT_MISMATCH = 854,
+ ERR_CURRENCY_NOT_TRADABLE = 855,
+ ERR_REQUIRES_EXPANSION_S = 856,
+ ERR_QUEST_FAILED_SPELL = 857,
+ ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 858,
+ ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 859,
+ ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 860,
+ ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 861,
+ ERR_TALENT_FAILED_UNKNOWN = 862,
+ ERR_TALENT_FAILED_IN_COMBAT = 863,
+ ERR_TALENT_FAILED_IN_PVP_MATCH = 864,
+ ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 865,
+ ERR_WARGAME_REQUEST_FAILURE = 866,
+ ERR_RANK_REQUIRES_AUTHENTICATOR = 867,
+ ERR_GUILD_BANK_VOUCHER_FAILED = 868,
+ ERR_WARGAME_REQUEST_SENT = 869,
+ ERR_REQUIRES_ACHIEVEMENT_I = 870,
+ ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 871,
+ ERR_CANT_BUY_QUANTITY = 872,
+ ERR_ITEM_IS_BATTLE_PAY_LOCKED = 873,
+ ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 874,
+ ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 875,
+ ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 876,
+ ERR_INSUFF_TRACKED_CURRENCY_IS = 877,
+ ERR_NOT_ON_TOURNAMENT_REALM = 878,
+ ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 879,
+ ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 880,
+ ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 881,
+ ERR_CANT_DO_THAT_IN_A_GROUP = 882,
+ ERR_GUILD_LEADER_REPLACED = 883,
+ ERR_TRANSMOGRIFY_CANT_EQUIP = 884,
+ ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 885,
+ ERR_TRANSMOGRIFY_NOT_SOULBOUND = 886,
+ ERR_TRANSMOGRIFY_INVALID_SOURCE = 887,
+ ERR_TRANSMOGRIFY_INVALID_DESTINATION = 888,
+ ERR_TRANSMOGRIFY_MISMATCH = 889,
+ ERR_TRANSMOGRIFY_LEGENDARY = 890,
+ ERR_TRANSMOGRIFY_SAME_ITEM = 891,
+ ERR_TRANSMOGRIFY_SAME_APPEARANCE = 892,
+ ERR_TRANSMOGRIFY_NOT_EQUIPPED = 893,
+ ERR_VOID_DEPOSIT_FULL = 894,
+ ERR_VOID_WITHDRAW_FULL = 895,
+ ERR_VOID_STORAGE_WRAPPED = 896,
+ ERR_VOID_STORAGE_STACKABLE = 897,
+ ERR_VOID_STORAGE_UNBOUND = 898,
+ ERR_VOID_STORAGE_REPAIR = 899,
+ ERR_VOID_STORAGE_CHARGES = 900,
+ ERR_VOID_STORAGE_QUEST = 901,
+ ERR_VOID_STORAGE_CONJURED = 902,
+ ERR_VOID_STORAGE_MAIL = 903,
+ ERR_VOID_STORAGE_BAG = 904,
+ ERR_VOID_TRANSFER_STORAGE_FULL = 905,
+ ERR_VOID_TRANSFER_INV_FULL = 906,
+ ERR_VOID_TRANSFER_INTERNAL_ERROR = 907,
+ ERR_VOID_TRANSFER_ITEM_INVALID = 908,
+ ERR_DIFFICULTY_DISABLED_IN_LFG = 909,
+ ERR_VOID_STORAGE_UNIQUE = 910,
+ ERR_VOID_STORAGE_LOOT = 911,
+ ERR_VOID_STORAGE_HOLIDAY = 912,
+ ERR_VOID_STORAGE_DURATION = 913,
+ ERR_VOID_STORAGE_LOAD_FAILED = 914,
+ ERR_VOID_STORAGE_INVALID_ITEM = 915,
+ ERR_PARENTAL_CONTROLS_CHAT_MUTED = 916,
+ ERR_SOR_START_EXPERIENCE_INCOMPLETE = 917,
+ ERR_SOR_INVALID_EMAIL = 918,
+ ERR_SOR_INVALID_COMMENT = 919,
+ ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 920,
+ ERR_CHALLENGE_MODE_RESET_KEYSTONE = 921,
+ ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 922,
+ ERR_REPORT_SUBMITTED_SUCCESSFULLY = 923,
+ ERR_REPORT_SUBMISSION_FAILED = 924,
+ ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 925,
+ ERR_BUG_SUBMITTED_SUCCESSFULLY = 926,
+ ERR_CHALLENGE_MODE_ENABLED = 927,
+ ERR_CHALLENGE_MODE_DISABLED = 928,
+ ERR_PETBATTLE_CREATE_FAILED = 929,
+ ERR_PETBATTLE_NOT_HERE = 930,
+ ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 931,
+ ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 932,
+ ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 933,
+ ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 934,
+ ERR_PETBATTLE_NOT_WHILE_DEAD = 935,
+ ERR_PETBATTLE_NOT_WHILE_FLYING = 936,
+ ERR_PETBATTLE_TARGET_INVALID = 937,
+ ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 938,
+ ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 939,
+ ERR_PETBATTLE_NOT_A_TRAINER = 940,
+ ERR_PETBATTLE_DECLINED = 941,
+ ERR_PETBATTLE_IN_BATTLE = 942,
+ ERR_PETBATTLE_INVALID_LOADOUT = 943,
+ ERR_PETBATTLE_ALL_PETS_DEAD = 944,
+ ERR_PETBATTLE_NO_PETS_IN_SLOTS = 945,
+ ERR_PETBATTLE_NO_ACCOUNT_LOCK = 946,
+ ERR_PETBATTLE_WILD_PET_TAPPED = 947,
+ ERR_PETBATTLE_RESTRICTED_ACCOUNT = 948,
+ ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 949,
+ ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 950,
+ ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 951,
+ ERR_CANT_HAVE_MORE_PETS = 952,
+ ERR_PVP_MAP_NOT_FOUND = 953,
+ ERR_PVP_MAP_NOT_SET = 954,
+ ERR_PETBATTLE_QUEUE_QUEUED = 955,
+ ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 956,
+ ERR_PETBATTLE_QUEUE_JOIN_FAILED = 957,
+ ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 958,
+ ERR_PETBATTLE_QUEUE_REMOVED = 959,
+ ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 960,
+ ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 961,
+ ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 962,
+ ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 963,
+ ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 964,
+ ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 965,
+ ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 966,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 967,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 968,
+ ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 969,
+ ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 970,
+ ERR_PETBATTLE_QUEUE_SLOT_DEAD = 971,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 972,
+ ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 973,
+ ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 974,
+ ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 975,
+ ERR_HAS_RESTRICTION = 976,
+ ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 977,
+ ERR_ITEM_UPGRADE_NO_PATH = 978,
+ ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 979,
+ ERR_BONUS_ROLL_EMPTY = 980,
+ ERR_CHALLENGE_MODE_FULL = 981,
+ ERR_CHALLENGE_MODE_IN_PROGRESS = 982,
+ ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 983,
+ ERR_BATTLETAG_FRIEND_NOT_FOUND = 984,
+ ERR_BATTLETAG_FRIEND_NOT_VALID = 985,
+ ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 986,
+ ERR_BATTLETAG_FRIEND_THROTTLED = 987,
+ ERR_BATTLETAG_FRIEND_SUCCESS = 988,
+ ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 989,
+ ERR_PETBATTLE_INTERNAL = 990,
+ ERR_CANT_CAGE_PET_YET = 991,
+ ERR_NO_LOOT_IN_CHALLENGE_MODE = 992,
+ ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 993,
+ ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 994,
+ ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 995,
+ ERR_RECRUIT_A_FRIEND_FAILED = 996,
+ ERR_SET_LOOT_PERSONAL = 997,
+ ERR_SET_LOOT_METHOD_FAILED_COMBAT = 998,
+ ERR_REAGENT_BANK_FULL = 999,
+ ERR_REAGENT_BANK_LOCKED = 1000,
+ ERR_GARRISON_BUILDING_EXISTS = 1001,
+ ERR_GARRISON_INVALID_PLOT = 1002,
+ ERR_GARRISON_INVALID_BUILDINGID = 1003,
+ ERR_GARRISON_INVALID_PLOT_BUILDING = 1004,
+ ERR_GARRISON_REQUIRES_BLUEPRINT = 1005,
+ ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1006,
+ ERR_GARRISON_NOT_ENOUGH_GOLD = 1007,
+ ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1008,
+ ERR_ALREADY_USING_LFG_LIST = 1009,
+ ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1010,
+ ERR_TOY_USE_LIMIT_REACHED = 1011,
+ ERR_TOY_ALREADY_KNOWN = 1012,
+ ERR_TRANSMOG_SET_ALREADY_KNOWN = 1013,
+ ERR_NOT_ENOUGH_CURRENCY = 1014,
+ ERR_SPEC_IS_DISABLED = 1015,
+ ERR_FEATURE_RESTRICTED_TRIAL = 1016,
+ ERR_CANT_BE_OBLITERATED = 1017,
+ ERR_CANT_BE_SCRAPPED = 1018,
+ ERR_CANT_BE_RECRAFTED = 1019,
+ ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1020,
+ ERR_MUST_EQUIP_ARTIFACT = 1021,
+ ERR_CANT_DO_THAT_RIGHT_NOW = 1022,
+ ERR_AFFECTING_COMBAT = 1023,
+ ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1024,
+ ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1025,
+ ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1026,
+ ERR_MOVIE_RECORDING_WARNING_PERF = 1027,
+ ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1028,
+ ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1029,
+ ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1030,
+ ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1031,
+ ERR_NO_CHALLENGE_MODE_REWARD = 1032,
+ ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1033,
+ ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1034,
+ ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1035,
+ ERR_TALENT_FAILED_REST_AREA = 1036,
+ ERR_CANNOT_ABANDON_LAST_PET = 1037,
+ ERR_TEST_CVAR_SET_SSS = 1038,
+ ERR_QUEST_TURN_IN_FAIL_REASON = 1039,
+ ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1040,
+ ERR_TALENT_GRANTED_BY_AURA = 1041,
+ ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1042,
+ ERR_GLYPH_TARGET_NOT_AVAILABLE = 1043,
+ ERR_PVP_WARMODE_TOGGLE_ON = 1044,
+ ERR_PVP_WARMODE_TOGGLE_OFF = 1045,
+ ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1046,
+ ERR_SPELL_FAILED_CANT_FLY_HERE = 1047,
+ ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1048,
+ ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1049,
+ ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1050,
+ ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1051,
+ ERR_VOICE_CHAT_SERVICE_LOST = 1052,
+ ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1053,
+ ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1054,
+ ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1055,
+ ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1056,
+ ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1057,
+ ERR_VOICE_CHAT_PLAYER_SILENCED = 1058,
+ ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1059,
+ ERR_VOICE_CHAT_DISABLED = 1060,
+ ERR_NO_PVP_REWARD = 1061,
+ ERR_CLAIMED_PVP_REWARD = 1062,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1063,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1064,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1065,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1066,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1067,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1068,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1069,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1070,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1071,
+ ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1072,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1073,
+ ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1074,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1075,
+ ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1076,
+ ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1077,
+ ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1078,
+ ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1079,
+ ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1080,
+ ERR_SOCKETING_REQUIRES_TINKER_GEM = 1081,
+ ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1082,
+ ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1083,
+ ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1084,
+ ERR_LEVEL_LINKING_RESULT_LINKED = 1085,
+ ERR_LEVEL_LINKING_RESULT_UNLINKED = 1086,
+ ERR_CLUB_FINDER_ERROR_POST_CLUB = 1087,
+ ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1088,
+ ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1089,
+ ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1090,
+ ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1091,
+ ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1092,
+ ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1093,
+ ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1094,
+ ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1095,
+ ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1096,
+ ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1097,
+ ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1098,
+ ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1099,
+ ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1100,
+ ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1101,
+ ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1102,
+ ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1103,
+ ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1104,
+ ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1105,
+ ERR_SOULBIND_INVALID_CONDUIT = 1106,
+ ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1107,
+ ERR_SOULBIND_INVALID_TALENT = 1108,
+ ERR_SOULBIND_DUPLICATE_CONDUIT = 1109,
+ ERR_ACTIVATE_SOULBIND_S = 1110,
+ ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1111,
+ ERR_CANT_USE_PROFANITY = 1112,
+ ERR_NOT_IN_PET_BATTLE = 1113,
+ ERR_NOT_IN_NPE = 1114,
+ ERR_NO_SPEC = 1115,
+ ERR_NO_DOMINATIONSHARD_OVERWRITE = 1116,
+ ERR_USE_WEEKLY_REWARDS_DISABLED = 1117,
+ ERR_CROSS_FACTION_GROUP_JOINED = 1118,
+ ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1119,
+ ERR_EQUIPABLESPELLS_SLOTS_FULL = 1120,
+ ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1121,
+ ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1122,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1123,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1124,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1125,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1126,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1127,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1128,
};
enum class MountResult : uint32
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index 38410aefa0d..ba7a0470c4f 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -349,6 +349,7 @@ enum QuestObjectiveType
QUEST_OBJECTIVE_INCREASE_REPUTATION = 18, // requires the player to gain X reputation with a faction
QUEST_OBJECTIVE_AREA_TRIGGER_ENTER = 19,
QUEST_OBJECTIVE_AREA_TRIGGER_EXIT = 20,
+ QUEST_OBJECTIVE_KILL_WITH_LABEL = 21,
MAX_QUEST_OBJECTIVE_TYPE
};
@@ -466,6 +467,7 @@ struct QuestObjective
case QUEST_OBJECTIVE_HAVE_CURRENCY:
case QUEST_OBJECTIVE_OBTAIN_CURRENCY:
case QUEST_OBJECTIVE_INCREASE_REPUTATION:
+ case QUEST_OBJECTIVE_KILL_WITH_LABEL:
return true;
default:
break;
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index 1df518c7b9d..ffb64f59c0d 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -102,7 +102,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::AuthWaitInfo const&
{
data << uint32(waitInfo.WaitCount);
data << uint32(waitInfo.WaitTime);
+ data << uint32(waitInfo.AllowedFactionGroupForCharacterCreate);
data.WriteBit(waitInfo.HasFCM);
+ data.WriteBit(waitInfo.CanCreateOnlyIfExisting);
data.FlushBits();
return data;
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h
index 62c11af2201..9b733f67728 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -102,7 +102,9 @@ namespace WorldPackets
{
uint32 WaitCount = 0; ///< position of the account in the login queue
uint32 WaitTime = 0; ///< Wait time in login queue in minutes, if sent queued and this value is 0 client displays "unknown time"
+ int32 AllowedFactionGroupForCharacterCreate = 0;
bool HasFCM = false; ///< true if the account has a forced character migration pending. @todo implement
+ bool CanCreateOnlyIfExisting = false; ///< Can create characters on realm only if player has other existing characters there
};
struct VirtualRealmNameInfo
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index 7691c8f8d0f..e347f3bc150 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -310,7 +310,7 @@ WorldPacket const* WorldPackets::Chat::ChatPlayerAmbiguous::Write()
WorldPacket const* WorldPackets::Chat::ChatRestricted::Write()
{
- _worldPacket << uint8(Reason);
+ _worldPacket << int32(Reason);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index f2ef6c3d502..3755754bec1 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -320,11 +320,11 @@ namespace WorldPackets
class ChatRestricted final : public ServerPacket
{
public:
- ChatRestricted() : ServerPacket(SMSG_CHAT_RESTRICTED, 1) { }
+ ChatRestricted() : ServerPacket(SMSG_CHAT_RESTRICTED, 4) { }
WorldPacket const* Write() override;
- uint8 Reason = 0;
+ int32 Reason = 0;
};
class CanLocalWhisperTargetRequest final : public ClientPacket
diff --git a/src/server/game/Server/Packets/LootPackets.h b/src/server/game/Server/Packets/LootPackets.h
index b553c8275cc..cd7c6212369 100644
--- a/src/server/game/Server/Packets/LootPackets.h
+++ b/src/server/game/Server/Packets/LootPackets.h
@@ -226,7 +226,7 @@ namespace WorldPackets
Duration<Milliseconds, uint32> RollTime;
uint8 Method = 0;
uint8 ValidRolls = 0;
- std::array<LootRollIneligibilityReason, 4> LootRollIneligibleReason = { };
+ std::array<LootRollIneligibilityReason, 5> LootRollIneligibleReason = { };
LootItemData Item;
int32 DungeonEncounterID = 0;
};
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 513a7bffb45..ccc9ec8ba94 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -112,6 +112,7 @@ WorldPacket const* QueryCreatureResponse::Write()
_worldPacket << float(Stats.HpMulti);
_worldPacket << float(Stats.EnergyMulti);
_worldPacket << uint32(Stats.QuestItems.size());
+ _worldPacket << uint32(Stats.QuestCurrencies.size());
_worldPacket << int32(Stats.CreatureMovementInfoID);
_worldPacket << int32(Stats.HealthScalingExpansion);
_worldPacket << int32(Stats.RequiredExpansion);
@@ -132,6 +133,9 @@ WorldPacket const* QueryCreatureResponse::Write()
if (!Stats.QuestItems.empty())
_worldPacket.append(Stats.QuestItems.data(), Stats.QuestItems.size());
+
+ if (!Stats.QuestCurrencies.empty())
+ _worldPacket.append(Stats.QuestCurrencies.data(), Stats.QuestCurrencies.size());
}
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index 3b2f9dfb1c8..d9c482e9b9e 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -72,6 +72,7 @@ namespace WorldPackets
float EnergyMulti = 0.0f;
bool Leader = false;
std::vector<int32> QuestItems;
+ std::vector<int32> QuestCurrencies;
uint32 CreatureMovementInfoID = 0;
int32 HealthScalingExpansion = 0;
uint32 RequiredExpansion = 0;
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 7d6888255c9..3b29a643deb 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2059,6 +2059,9 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Loading Creature Quest Items...");
sObjectMgr->LoadCreatureQuestItems();
+ TC_LOG_INFO("server.loading", "Loading Creature Quest Currencies...");
+ sObjectMgr->LoadCreatureQuestCurrencies();
+
TC_LOG_INFO("server.loading", "Loading Creature Linked Respawn...");
sObjectMgr->LoadLinkedRespawn(); // must be after LoadCreatures(), LoadGameObjects()
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 7e9a54e2879..e995cdf7a52 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -1113,13 +1113,6 @@ public:
}
uint32 offset = area->AreaBit / PLAYER_EXPLORED_ZONES_BITS;
- if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
- {
- handler->SendSysMessage(LANG_BAD_VALUE);
- handler->SetSentErrorMessage(true);
- return false;
- }
-
uint64 val = UI64LIT(1) << (area->AreaBit % PLAYER_EXPLORED_ZONES_BITS);
playerTarget->AddExploredZones(offset, val);
@@ -1153,13 +1146,6 @@ public:
}
uint32 offset = area->AreaBit / PLAYER_EXPLORED_ZONES_BITS;
- if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
- {
- handler->SendSysMessage(LANG_BAD_VALUE);
- handler->SetSentErrorMessage(true);
- return false;
- }
-
uint64 val = UI64LIT(1) << (area->AreaBit % PLAYER_EXPLORED_ZONES_BITS);
playerTarget->RemoveExploredZones(offset, val);
diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h
index 747d5774301..c1c319a85cd 100644
--- a/src/tools/map_extractor/loadlib/DBFilesClientList.h
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -563,6 +563,12 @@ DB2FileInfo const DBFilesClientList[] =
{ 1465904, "ModelAnimCloakDampening.db2" },
{ 1337833, "ModelFileData.db2" },
{ 1399953, "ModelRibbonQuality.db2" },
+ { 5393273, "ModelSound.db2" },
+ { 5393274, "ModelSoundAnimEntry.db2" },
+ { 5393275, "ModelSoundEntry.db2" },
+ { 5393276, "ModelSoundOverride.db2" },
+ { 5512584, "ModelSoundOverrideName.db2" },
+ { 5393277, "ModelSoundTagEntry.db2" },
{ 3386486, "ModifiedCraftingCategory.db2" },
{ 4530643, "ModifiedCraftingItem.db2" },
{ 3386487, "ModifiedCraftingReagentItem.db2" },
@@ -621,6 +627,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 801734, "PathNodeProperty.db2" },
{ 801735, "PathProperty.db2" },
{ 4519766, "PerksActivity.db2" },
+ { 5524226, "PerksActivityCondition.db2" },
{ 4694317, "PerksActivityTag.db2" },
{ 4519767, "PerksActivityThreshold.db2" },
{ 4519768, "PerksActivityThresholdGroup.db2" },
@@ -638,6 +645,8 @@ DB2FileInfo const DBFilesClientList[] =
{ 987581, "PhaseXPhaseGroup.db2" },
{ 5152358, "PingType.db2" },
{ 1045411, "PlayerCondition.db2" },
+ { 5426706, "PlayerDataFlagAccount.db2" },
+ { 5426708, "PlayerDataFlagCharacter.db2" },
{ 1251523, "Positioner.db2" },
{ 1251506, "PositionerState.db2" },
{ 1251533, "PositionerStateEntry.db2" },