From 4f7079f471401d5cf7885351baabc027813f60f5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 18 Dec 2024 22:50:33 +0100 Subject: [PATCH] Core: Updated to 11.0.7 --- sql/base/auth_database.sql | 27 +- .../auth/master/2024_12_18_00_auth.sql | 38 + .../master/2024_12_18_00_hotfixes.sql | 16 + .../Authentication/WorldPacketCrypt.cpp | 4 +- .../Authentication/WorldPacketCrypt.h | 4 +- .../Implementation/HotfixDatabase.cpp | 13 +- src/server/game/DataStores/DB2LoadInfo.h | 23 +- src/server/game/DataStores/DB2Metadata.h | 186 +- src/server/game/DataStores/DB2Stores.cpp | 14 +- src/server/game/DataStores/DB2Structure.h | 11 +- src/server/game/Entities/Item/Item.h | 8 +- src/server/game/Entities/Item/ItemDefines.h | 1 + src/server/game/Entities/Item/ItemTemplate.h | 4 +- .../Entities/Object/Updates/UpdateFields.cpp | 26 +- .../Entities/Object/Updates/UpdateFields.h | 6 +- src/server/game/Entities/Player/Player.cpp | 29 +- src/server/game/Entities/Player/Player.h | 1 + src/server/game/Entities/Unit/Vignette.cpp | 12 +- src/server/game/Entities/Unit/Vignette.h | 1 + src/server/game/Miscellaneous/SharedDefines.h | 711 +++--- .../Server/Packets/AuthenticationPackets.cpp | 5 +- .../Server/Packets/AuthenticationPackets.h | 10 +- .../game/Server/Packets/ChannelPackets.cpp | 1 + .../game/Server/Packets/ChannelPackets.h | 1 + .../game/Server/Packets/CharacterPackets.cpp | 41 + .../game/Server/Packets/CharacterPackets.h | 26 +- src/server/game/Server/Packets/LFGPackets.cpp | 2 +- .../game/Server/Packets/MiscPackets.cpp | 13 +- src/server/game/Server/Packets/MiscPackets.h | 20 +- .../Packets/PerksProgramPacketsCommon.cpp | 7 +- .../Packets/PerksProgramPacketsCommon.h | 7 +- src/server/game/Server/Packets/PetPackets.cpp | 6 +- .../game/Server/Packets/PetitionPackets.cpp | 4 +- .../game/Server/Packets/SystemPackets.cpp | 11 +- .../game/Server/Packets/SystemPackets.h | 11 +- .../game/Server/Packets/TicketPackets.cpp | 4 + .../game/Server/Packets/TicketPackets.h | 2 + .../game/Server/Packets/VignettePackets.cpp | 3 + .../game/Server/Packets/VignettePackets.h | 3 + src/server/game/Server/Protocol/Opcodes.cpp | 21 + src/server/game/Server/Protocol/Opcodes.h | 1973 +++++++++-------- src/server/game/Server/WorldSocket.cpp | 46 +- src/server/game/Server/WorldSocket.h | 12 +- src/server/game/Spells/SpellEffects.cpp | 7 + src/server/game/Spells/SpellInfo.cpp | 7 + .../map_extractor/loadlib/DBFilesClientList.h | 9 +- 46 files changed, 1866 insertions(+), 1521 deletions(-) create mode 100644 sql/updates/auth/master/2024_12_18_00_auth.sql create mode 100644 sql/updates/hotfixes/master/2024_12_18_00_hotfixes.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 9cc6866b3b1df..a9df5ec7ce732 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -863,7 +863,21 @@ INSERT INTO `build_auth_key` VALUES (57689,'Mac','x64','WoWC',0xCA7AD91741F8E2063CE227D475247212), (57689,'Win','A64','WoW',0x4910E2142A21616934CD4D714691748C), (57689,'Win','x64','WoW',0x93B4E50E651A28D8CC4E7CE7447901F6), -(57689,'Win','x64','WoWC',0x6AEDD8258D4E9701F737CBA852728A74); +(57689,'Win','x64','WoWC',0x6AEDD8258D4E9701F737CBA852728A74), +(58123,'Mac','A64','WoW',0x7C63CE8A068940D4D019C7CF999E3DC7), +(58123,'Mac','A64','WoWC',0xCF2625300DA905CC9B6D10379C58B590), +(58123,'Mac','x64','WoW',0x1B68981860A6EB24BEAA070FD022B3B9), +(58123,'Mac','x64','WoWC',0x3037FB1C6A73F7468DD11180000BB133), +(58123,'Win','A64','WoW',0x84B75C8F0FF380C3B3970EB63AFB4962), +(58123,'Win','x64','WoW',0x29050AA0D62EF99634CCB7B5F9F6AC1E), +(58123,'Win','x64','WoWC',0x2D5EEEAB57AFFE31856D0DEAC73944DA), +(58162,'Mac','A64','WoW',0x086BB93AF9122791E6CDA58A5F20AAC1), +(58162,'Mac','A64','WoWC',0x280BD3A4F223E1D8F3CF893BBFAEFBC5), +(58162,'Mac','x64','WoW',0x47586B32BD556FA08C966D7F4FC9FF24), +(58162,'Mac','x64','WoWC',0xE861315673972C1B986650C1242196FE), +(58162,'Win','A64','WoW',0x5B1F97D43762F0F1BEC75E99CDD18D35), +(58162,'Win','x64','WoW',0xDA3B48B9A60F4486F27BA9D8858D5688), +(58162,'Win','x64','WoWC',0x25146ED771DC629F2B8CF58126BA562C); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -1220,7 +1234,9 @@ INSERT INTO `build_info` VALUES (57388,11,0,5,NULL), (57534,11,0,5,NULL), (57637,11,0,5,NULL), -(57689,11,0,5,NULL); +(57689,11,0,5,NULL), +(58123,11,0,7,NULL), +(58162,11,0,7,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -2832,7 +2848,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '57689', + `gamebuild` int unsigned NOT NULL DEFAULT '58162', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -2847,7 +2863,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',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,57689,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,58162,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -3318,7 +3334,8 @@ INSERT INTO `updates` VALUES ('2024_11_12_00_auth.sql','5A236A557291758C0F2C46FDEC02692E7C53F751','ARCHIVED','2024-11-12 11:42:13',0), ('2024_11_14_00_auth.sql','646A438FAD5A83D80DCDDEDC71BB6CF21A1FE490','ARCHIVED','2024-11-14 10:29:52',0), ('2024_11_16_00_auth.sql','94794542B3320D76E4A3615DB2418EEF38BDFEA1','ARCHIVED','2024-11-16 21:57:39',0), -('2024_11_20_00_auth.sql','444C765DD16E9B70C1D1163155238E8EE481B17D','RELEASED','2024-11-20 20:39:53',0); +('2024_11_20_00_auth.sql','444C765DD16E9B70C1D1163155238E8EE481B17D','RELEASED','2024-11-20 20:39:53',0), +('2024_12_18_00_auth.sql','1F3145F30A79FEE13F5CD9817F54FAFA9A85DEE6','RELEASED','2024-12-18 22:04:44',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2024_12_18_00_auth.sql b/sql/updates/auth/master/2024_12_18_00_auth.sql new file mode 100644 index 0000000000000..510444839aa8c --- /dev/null +++ b/sql/updates/auth/master/2024_12_18_00_auth.sql @@ -0,0 +1,38 @@ +DELETE FROM `build_info` WHERE `build` IN (58123,58162); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(58123,11,0,7,NULL), +(58162,11,0,7,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=58123 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58123 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=58123 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58123 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=58123 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58123 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58123 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=58162 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58162 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=58162 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58162 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=58162 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58162 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=58162 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(58123,'Mac','A64','WoW',0x7C63CE8A068940D4D019C7CF999E3DC7), +(58123,'Mac','A64','WoWC',0xCF2625300DA905CC9B6D10379C58B590), +(58123,'Mac','x64','WoW',0x1B68981860A6EB24BEAA070FD022B3B9), +(58123,'Mac','x64','WoWC',0x3037FB1C6A73F7468DD11180000BB133), +(58123,'Win','A64','WoW',0x84B75C8F0FF380C3B3970EB63AFB4962), +(58123,'Win','x64','WoW',0x29050AA0D62EF99634CCB7B5F9F6AC1E), +(58123,'Win','x64','WoWC',0x2D5EEEAB57AFFE31856D0DEAC73944DA), +(58162,'Mac','A64','WoW',0x086BB93AF9122791E6CDA58A5F20AAC1), +(58162,'Mac','A64','WoWC',0x280BD3A4F223E1D8F3CF893BBFAEFBC5), +(58162,'Mac','x64','WoW',0x47586B32BD556FA08C966D7F4FC9FF24), +(58162,'Mac','x64','WoWC',0xE861315673972C1B986650C1242196FE), +(58162,'Win','A64','WoW',0x5B1F97D43762F0F1BEC75E99CDD18D35), +(58162,'Win','x64','WoW',0xDA3B48B9A60F4486F27BA9D8858D5688), +(58162,'Win','x64','WoWC',0x25146ED771DC629F2B8CF58126BA562C); + +UPDATE `realmlist` SET `gamebuild`=58162 WHERE `gamebuild` IN (57689,58123); + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '58162'; diff --git a/sql/updates/hotfixes/master/2024_12_18_00_hotfixes.sql b/sql/updates/hotfixes/master/2024_12_18_00_hotfixes.sql new file mode 100644 index 0000000000000..5a18de9e7b16a --- /dev/null +++ b/sql/updates/hotfixes/master/2024_12_18_00_hotfixes.sql @@ -0,0 +1,16 @@ +ALTER TABLE `broadcast_text` MODIFY `Flags` smallint UNSIGNED NOT NULL DEFAULT 0 AFTER `EmotesID`; + +ALTER TABLE `lfg_dungeons` + ADD `MaxPremadeCountTank` tinyint UNSIGNED NOT NULL DEFAULT 0 AFTER `MinCountDamage`, + ADD `MaxPremadeCountHealer` tinyint UNSIGNED NOT NULL DEFAULT 0 AFTER `MaxPremadeCountTank`, + ADD `MaxPremadeCountDamage` tinyint UNSIGNED NOT NULL DEFAULT 0 AFTER `MaxPremadeCountHealer`; + +ALTER TABLE `map_difficulty` MODIFY `ID` int UNSIGNED NOT NULL DEFAULT 0 AFTER `Message`; + +ALTER TABLE `player_condition` + ADD `MinLevel` smallint UNSIGNED NOT NULL DEFAULT 0 AFTER `FailureDescription`, + ADD `MaxLevel` smallint UNSIGNED NOT NULL DEFAULT 0 AFTER `MinLevel`; + +ALTER TABLE `vignette` + ADD `UiMapPinInfoID` int NOT NULL DEFAULT 0 AFTER `UiWidgetSetID`, + ADD `ObjectiveType` tinyint NOT NULL DEFAULT 0 AFTER `UiMapPinInfoID`; diff --git a/src/common/Cryptography/Authentication/WorldPacketCrypt.cpp b/src/common/Cryptography/Authentication/WorldPacketCrypt.cpp index 926f77d757da7..498588c71f018 100644 --- a/src/common/Cryptography/Authentication/WorldPacketCrypt.cpp +++ b/src/common/Cryptography/Authentication/WorldPacketCrypt.cpp @@ -19,11 +19,11 @@ #include #include -WorldPacketCrypt::WorldPacketCrypt() : _clientDecrypt(false), _serverEncrypt(true), _clientCounter(0), _serverCounter(0), _initialized(false) +WorldPacketCrypt::WorldPacketCrypt() : _clientDecrypt(false, 256), _serverEncrypt(true, 256), _clientCounter(0), _serverCounter(0), _initialized(false) { } -void WorldPacketCrypt::Init(Trinity::Crypto::AES::Key const& key) +void WorldPacketCrypt::Init(Key const& key) { _clientDecrypt.Init(key); _serverEncrypt.Init(key); diff --git a/src/common/Cryptography/Authentication/WorldPacketCrypt.h b/src/common/Cryptography/Authentication/WorldPacketCrypt.h index 1936ff5ca5f98..c36e2b9c93c56 100644 --- a/src/common/Cryptography/Authentication/WorldPacketCrypt.h +++ b/src/common/Cryptography/Authentication/WorldPacketCrypt.h @@ -23,9 +23,11 @@ class TC_COMMON_API WorldPacketCrypt { public: + using Key = std::array; + WorldPacketCrypt(); - void Init(Trinity::Crypto::AES::Key const& key); + void Init(Key const& key); bool PeekDecryptRecv(uint8* data, size_t length); bool DecryptRecv(uint8* data, size_t length, Trinity::Crypto::AES::Tag& tag); bool EncryptSend(uint8* data, size_t length, Trinity::Crypto::AES::Tag& tag); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index f13443a976f30..a7184a7cd7c0c 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -1115,8 +1115,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() // LfgDungeons.db2 PrepareStatement(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, TypeID, Subtype, Faction, IconTextureFileID, RewardsBgTextureFileID, " "PopupBgTextureFileID, ExpansionLevel, MapID, DifficultyID, MinGear, GroupID, OrderIndex, RequiredPlayerConditionId, RandomID, ScenarioID, " - "FinalEncounterID, CountTank, CountHealer, CountDamage, MinCountTank, MinCountHealer, MinCountDamage, BonusReputationAmount, MentorItemLevel, " - "MentorCharLevel, MaxPremadeGroupSize, ContentTuningID, Flags1, Flags2 FROM lfg_dungeons WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "FinalEncounterID, CountTank, CountHealer, CountDamage, MinCountTank, MinCountHealer, MinCountDamage, MaxPremadeCountTank, " + "MaxPremadeCountHealer, MaxPremadeCountDamage, BonusReputationAmount, MentorItemLevel, MentorCharLevel, MaxPremadeGroupSize, ContentTuningID, " + "Flags1, Flags2 FROM lfg_dungeons WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_LFG_DUNGEONS, "SELECT MAX(ID) + 1 FROM lfg_dungeons", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name_lang, Description_lang FROM lfg_dungeons_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1168,7 +1169,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() " AND locale = ?", CONNECTION_SYNCH); // MapDifficulty.db2 - PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, DifficultyID, LockID, ResetInterval, MaxPlayers, ItemContext, " + PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT Message, ID, DifficultyID, LockID, ResetInterval, MaxPlayers, ItemContext, " "ItemContextPickerID, Flags, ContentTuningID, WorldStateExpressionID, MapID FROM map_difficulty WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT MAX(ID) + 1 FROM map_difficulty", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message_lang FROM map_difficulty_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1279,8 +1280,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_PHASE_X_PHASE_GROUP, "SELECT MAX(ID) + 1 FROM phase_x_phase_group", CONNECTION_SYNCH); // PlayerCondition.db2 - PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, RaceMask, FailureDescription, ClassMask, SkillLogic, LanguageID, MinLanguage, " - "MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, PvpMedal, PrevQuestLogic, CurrQuestLogic, " + PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, RaceMask, FailureDescription, MinLevel, MaxLevel, ClassMask, SkillLogic, LanguageID, " + "MinLanguage, MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, PvpMedal, PrevQuestLogic, CurrQuestLogic, " "CurrentCompletedQuestLogic, SpellLogic, ItemLogic, ItemFlags, AuraSpellLogic, WorldStateExpressionID, WeatherID, PartyStatus, " "LifetimeMaxPVPRank, AchievementLogic, Gender, NativeGender, AreaLogic, LfgLogic, CurrencyLogic, QuestKillID, QuestKillLogic, " "MinExpansionLevel, MaxExpansionLevel, MinAvgItemLevel, MaxAvgItemLevel, MinAvgEquippedItemLevel, MaxAvgEquippedItemLevel, PhaseUseFlags, " @@ -2003,7 +2004,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Vignette.db2 PrepareStatement(HOTFIX_SEL_VIGNETTE, "SELECT ID, Name, PlayerConditionID, VisibleTrackingQuestID, QuestFeedbackEffectID, Flags, MaxHeight, " - "MinHeight, VignetteType, RewardQuestID, UiWidgetSetID FROM vignette WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "MinHeight, VignetteType, RewardQuestID, UiWidgetSetID, UiMapPinInfoID, ObjectiveType FROM vignette WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_VIGNETTE, "SELECT MAX(ID) + 1 FROM vignette", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_VIGNETTE, "SELECT ID, Name_lang FROM vignette_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 27297ec5218da..d50c7b2d36eb2 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -771,7 +771,7 @@ struct BroadcastTextLoadInfo { true, FT_INT, "LanguageID" }, { true, FT_INT, "ConditionID" }, { false, FT_SHORT, "EmotesID" }, - { false, FT_BYTE, "Flags" }, + { false, FT_SHORT, "Flags" }, { false, FT_INT, "ChatBubbleDurationMs" }, { true, FT_INT, "VoiceOverPriorityID" }, { false, FT_INT, "SoundKitID1" }, @@ -3549,7 +3549,7 @@ struct LanguagesLoadInfo struct LfgDungeonsLoadInfo { - static constexpr DB2FieldMeta Fields[32] = + static constexpr DB2FieldMeta Fields[35] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, @@ -3576,6 +3576,9 @@ struct LfgDungeonsLoadInfo { false, FT_BYTE, "MinCountTank" }, { false, FT_BYTE, "MinCountHealer" }, { false, FT_BYTE, "MinCountDamage" }, + { false, FT_BYTE, "MaxPremadeCountTank" }, + { false, FT_BYTE, "MaxPremadeCountHealer" }, + { false, FT_BYTE, "MaxPremadeCountDamage" }, { false, FT_SHORT, "BonusReputationAmount" }, { false, FT_SHORT, "MentorItemLevel" }, { false, FT_BYTE, "MentorCharLevel" }, @@ -3585,7 +3588,7 @@ struct LfgDungeonsLoadInfo { true, FT_INT, "Flags2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 32, &LFGDungeonsMeta::Instance, HOTFIX_SEL_LFG_DUNGEONS }; + static constexpr DB2LoadInfo Instance{ Fields, 35, &LFGDungeonsMeta::Instance, HOTFIX_SEL_LFG_DUNGEONS }; }; struct LightLoadInfo @@ -3807,8 +3810,8 @@ struct MapDifficultyLoadInfo { static constexpr DB2FieldMeta Fields[12] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Message" }, + { false, FT_INT, "ID" }, { true, FT_INT, "DifficultyID" }, { true, FT_INT, "LockID" }, { false, FT_BYTE, "ResetInterval" }, @@ -4142,11 +4145,13 @@ struct PhaseXPhaseGroupLoadInfo struct PlayerConditionLoadInfo { - static constexpr DB2FieldMeta Fields[160] = + static constexpr DB2FieldMeta Fields[162] = { { false, FT_INT, "ID" }, { true, FT_LONG, "RaceMask" }, { false, FT_STRING, "FailureDescription" }, + { false, FT_SHORT, "MinLevel" }, + { false, FT_SHORT, "MaxLevel" }, { true, FT_INT, "ClassMask" }, { false, FT_INT, "SkillLogic" }, { true, FT_INT, "LanguageID" }, @@ -4306,7 +4311,7 @@ struct PlayerConditionLoadInfo { false, FT_SHORT, "TraitNodeEntryMaxRank4" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 160, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION }; + static constexpr DB2LoadInfo Instance{ Fields, 162, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION }; }; struct PowerDisplayLoadInfo @@ -6636,7 +6641,7 @@ struct VehicleSeatLoadInfo struct VignetteLoadInfo { - static constexpr DB2FieldMeta Fields[11] = + static constexpr DB2FieldMeta Fields[13] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, @@ -6649,9 +6654,11 @@ struct VignetteLoadInfo { true, FT_BYTE, "VignetteType" }, { true, FT_INT, "RewardQuestID" }, { true, FT_INT, "UiWidgetSetID" }, + { true, FT_INT, "UiMapPinInfoID" }, + { true, FT_BYTE, "ObjectiveType" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 11, &VignetteMeta::Instance, HOTFIX_SEL_VIGNETTE }; + static constexpr DB2LoadInfo Instance{ Fields, 13, &VignetteMeta::Instance, HOTFIX_SEL_VIGNETTE }; }; struct WmoAreaTableLoadInfo diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index b047b37deb540..650d485dd11c0 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -20,6 +20,47 @@ #include "DB2Meta.h" +struct AccountStoreCategoryMeta +{ + static constexpr DB2MetaField Fields[6] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_BYTE, 1, false }, + }; + + static constexpr DB2Meta Instance{ 6220124, 1, 6, 6, 0xE78C9607, Fields, 2 }; +}; + +struct AccountStoreItemMeta +{ + static constexpr DB2MetaField Fields[17] = + { + { FT_STRING, 1, true }, + { FT_STRING, 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 }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { 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{ 6197817, 2, 17, 17, 0x818F4DA6, Fields, 3 }; +}; + struct AchievementMeta { static constexpr DB2MetaField Fields[19] = @@ -1467,7 +1508,7 @@ struct BroadcastTextMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, + { FT_SHORT, 1, false }, { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 2, false }, @@ -1475,7 +1516,7 @@ struct BroadcastTextMeta { FT_SHORT, 3, false }, }; - static constexpr DB2Meta Instance{ 841604, 2, 12, 12, 0xA5F4A303, Fields, -1 }; + static constexpr DB2Meta Instance{ 841604, 2, 12, 12, 0x2EC89623, Fields, -1 }; }; struct BroadcastTextDurationMeta @@ -4522,6 +4563,21 @@ struct GameClockDebugMeta static constexpr DB2Meta Instance{ 2922072, -1, 1, 1, 0x0305FD3B, Fields, -1 }; }; +struct GameModeMeta +{ + static constexpr DB2MetaField Fields[6] = + { + { FT_STRING_NOT_LOCALIZED, 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{ 5008306, -1, 6, 6, 0x02DC84DD, Fields, -1 }; +}; + struct GameObjectAnimGroupMemberMeta { static constexpr DB2MetaField Fields[4] = @@ -5847,7 +5903,7 @@ struct GroundEffectTextureMeta struct GroupFinderActivityMeta { - static constexpr DB2MetaField Fields[15] = + static constexpr DB2MetaField Fields[19] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -5864,9 +5920,13 @@ struct GroupFinderActivityMeta { FT_BYTE, 1, false }, { 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{ 974813, -1, 15, 15, 0x395D3022, Fields, -1 }; + static constexpr DB2Meta Instance{ 974813, -1, 19, 19, 0x1EE9C586, Fields, -1 }; }; struct GroupFinderActivityGrpMeta @@ -6740,16 +6800,18 @@ struct ItemFixupActionMeta struct ItemGroupIlvlScalingEntryMeta { - static constexpr DB2MetaField Fields[5] = + static constexpr DB2MetaField Fields[7] = { { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 5015219, -1, 5, 4, 0x8C0C0A82, Fields, 4 }; + static constexpr DB2Meta Instance{ 5015219, -1, 7, 6, 0x149B741B, Fields, 6 }; }; struct ItemGroupSoundsMeta @@ -7449,7 +7511,7 @@ struct LFGDungeonGroupMeta struct LFGDungeonsMeta { - static constexpr DB2MetaField Fields[30] = + static constexpr DB2MetaField Fields[33] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -7475,6 +7537,9 @@ struct LFGDungeonsMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, + { FT_BYTE, 1, false }, + { FT_BYTE, 1, false }, + { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, @@ -7483,7 +7548,7 @@ struct LFGDungeonsMeta { FT_INT, 2, true }, }; - static constexpr DB2Meta Instance{ 1361033, -1, 30, 30, 0x9274FE74, Fields, -1 }; + static constexpr DB2Meta Instance{ 1361033, -1, 33, 33, 0x8CB09088, Fields, -1 }; }; struct LFGRoleRequirementMeta @@ -8134,9 +8199,10 @@ struct MapChallengeModeMeta struct MapDifficultyMeta { - static constexpr DB2MetaField Fields[11] = + static constexpr DB2MetaField Fields[12] = { { FT_STRING, 1, true }, + { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_BYTE, 1, false }, @@ -8149,7 +8215,19 @@ struct MapDifficultyMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1367868, -1, 11, 10, 0xC18134AF, Fields, 10 }; + static constexpr DB2Meta Instance{ 1367868, 1, 12, 11, 0xCF621FA3, Fields, 11 }; +}; + +struct MapDifficultyRedirectMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4913557, -1, 3, 2, 0xD5D43631, Fields, 2 }; }; struct MapDifficultyXConditionMeta @@ -8319,17 +8397,6 @@ struct ModelRibbonQualityMeta static constexpr DB2Meta Instance{ 1399953, -1, 2, 1, 0x6444FDE5, 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, 0xB38E4BBC, Fields, -1 }; -}; - struct ModelSoundAnimEntryMeta { static constexpr DB2MetaField Fields[2] = @@ -8341,27 +8408,6 @@ struct ModelSoundAnimEntryMeta static constexpr DB2Meta Instance{ 5393274, -1, 2, 2, 0x324E0B06, Fields, 0 }; }; -struct ModelSoundEntryMeta -{ - static constexpr DB2MetaField Fields[1] = - { - { FT_INT, 1, true }, - }; - - static constexpr DB2Meta Instance{ 5393275, -1, 1, 1, 0x4A95649C, 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, 0x1B5019C8, Fields, 0 }; -}; - struct ModelSoundSettingsMeta { static constexpr DB2MetaField Fields[2] = @@ -9479,10 +9525,12 @@ struct PlayerCompanionInfoMeta struct PlayerConditionMeta { - static constexpr DB2MetaField Fields[84] = + static constexpr DB2MetaField Fields[86] = { { FT_LONG, 1, true }, { FT_STRING, 1, true }, + { FT_SHORT, 1, false }, + { FT_SHORT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, true }, @@ -9567,7 +9615,7 @@ struct PlayerConditionMeta { FT_SHORT, 4, false }, }; - static constexpr DB2Meta Instance{ 1045411, -1, 84, 84, 0x311C5FAE, Fields, -1 }; + static constexpr DB2Meta Instance{ 1045411, -1, 86, 86, 0x395C1D28, Fields, -1 }; }; struct PlayerDataElementAccountMeta @@ -9596,22 +9644,24 @@ struct PlayerDataElementCharacterMeta struct PlayerDataFlagAccountMeta { - static constexpr DB2MetaField Fields[1] = + static constexpr DB2MetaField Fields[2] = { { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 5426706, -1, 1, 1, 0x2A4C0DDD, Fields, -1 }; + static constexpr DB2Meta Instance{ 5426706, -1, 2, 2, 0x23ECE2B1, Fields, -1 }; }; struct PlayerDataFlagCharacterMeta { - static constexpr DB2MetaField Fields[1] = + static constexpr DB2MetaField Fields[2] = { { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 5426708, -1, 1, 1, 0x2A4C0DDD, Fields, -1 }; + static constexpr DB2Meta Instance{ 5426708, -1, 2, 2, 0x23ECE2B1, Fields, -1 }; }; struct PlayerInteractionInfoMeta @@ -10467,7 +10517,7 @@ struct RenownRewardsMeta struct RenownRewardsPlunderstormMeta { - static constexpr DB2MetaField Fields[7] = + static constexpr DB2MetaField Fields[8] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -10476,9 +10526,10 @@ struct RenownRewardsPlunderstormMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 5662591, -1, 7, 7, 0x993A3149, Fields, 2 }; + static constexpr DB2Meta Instance{ 5662591, -1, 8, 8, 0x30F69B43, Fields, 2 }; }; struct ResearchBranchMeta @@ -13546,6 +13597,20 @@ struct UIArrowCalloutMeta static constexpr DB2Meta Instance{ 5011999, 2, 9, 9, 0x11F1EB32, Fields, -1 }; }; +struct UIButtonMeta +{ + static constexpr DB2MetaField Fields[5] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 6237799, -1, 5, 5, 0x88A0B057, Fields, -1 }; +}; + struct UIChromieTimeExpansionInfoMeta { static constexpr DB2MetaField Fields[13] = @@ -13738,6 +13803,21 @@ struct UIGenericWidgetDisplayMeta static constexpr DB2Meta Instance{ 4861207, 3, 10, 10, 0x712E00ED, Fields, -1 }; }; +struct UIMapPinInfoMeta +{ + 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{ 6237800, -1, 6, 6, 0xE8E5C344, Fields, -1 }; +}; + struct UIModifiedInstanceMeta { static constexpr DB2MetaField Fields[8] = @@ -14626,7 +14706,7 @@ struct VehicleUIIndicatorMeta struct VignetteMeta { - static constexpr DB2MetaField Fields[10] = + static constexpr DB2MetaField Fields[12] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, @@ -14638,9 +14718,11 @@ struct VignetteMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_BYTE, 1, true }, }; - static constexpr DB2Meta Instance{ 892861, -1, 10, 10, 0x5F633954, Fields, -1 }; + static constexpr DB2Meta Instance{ 892861, -1, 12, 12, 0x1A5A691B, Fields, -1 }; }; struct VignetteUiWidgetSetMeta diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index dd2f966450308..95c0df3f9a09f 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -1022,14 +1022,14 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul } // Check loaded DB2 files proper version - if (!sAreaTableStore.LookupEntry(15913) || // last area added in 11.0.5 (57171) - !sCharTitlesStore.LookupEntry(871) || // last char title added in 11.0.5 (57171) + if (!sAreaTableStore.LookupEntry(16108) || // last area added in 11.0.7 (58162) + !sCharTitlesStore.LookupEntry(876) || // last char title added in 11.0.7 (58162) !sFlightCapabilityStore.LookupEntry(1) || // default flight capability (required) - !sGemPropertiesStore.LookupEntry(4251) || // last gem property added in 11.0.5 (57171) - !sItemStore.LookupEntry(233014) || // last item added in 11.0.5 (57171) - !sItemExtendedCostStore.LookupEntry(9647) || // last item extended cost added in 11.0.5 (57171) - !sMapStore.LookupEntry(2792) || // last map added in 11.0.5 (57171) - !sSpellNameStore.LookupEntry(474722)) // last spell added in 11.0.5 (57171) + !sGemPropertiesStore.LookupEntry(4266) || // last gem property added in 11.0.7 (58162) + !sItemStore.LookupEntry(235551) || // last item added in 11.0.7 (58162) + !sItemExtendedCostStore.LookupEntry(9918) || // last item extended cost added in 11.0.7 (58162) + !sMapStore.LookupEntry(2829) || // last map added in 11.0.7 (58162) + !sSpellNameStore.LookupEntry(1218101)) // last spell added in 11.0.7 (58162) { TC_LOG_FATAL("misc", "You have _outdated_ DB2 files. Please extract correct versions from current using client."); return 0; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 93c790259bb3c..9338ea3d072bc 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -545,7 +545,7 @@ struct BroadcastTextEntry int32 LanguageID; int32 ConditionID; uint16 EmotesID; - uint8 Flags; + uint16 Flags; uint32 ChatBubbleDurationMs; int32 VoiceOverPriorityID; std::array SoundKitID; @@ -2704,6 +2704,9 @@ struct LFGDungeonsEntry uint8 MinCountTank; uint8 MinCountHealer; uint8 MinCountDamage; + uint8 MaxPremadeCountTank; + uint8 MaxPremadeCountHealer; + uint8 MaxPremadeCountDamage; uint16 BonusReputationAmount; uint16 MentorItemLevel; uint8 MentorCharLevel; @@ -2879,8 +2882,8 @@ struct MapChallengeModeEntry struct MapDifficultyEntry { - uint32 ID; LocalizedString Message; // m_message_lang (text showed when transfer to map failed) + uint32 ID; int32 DifficultyID; int32 LockID; uint8 ResetInterval; @@ -3119,6 +3122,8 @@ struct PlayerConditionEntry uint32 ID; Trinity::RaceMask RaceMask; LocalizedString FailureDescription; + uint16 MinLevel; + uint16 MaxLevel; int32 ClassMask; uint32 SkillLogic; int32 LanguageID; @@ -4752,6 +4757,8 @@ struct VignetteEntry int8 VignetteType; int32 RewardQuestID; int32 UiWidgetSetID; + int32 UiMapPinInfoID; + int8 ObjectiveType; EnumFlag GetFlags() const { return static_cast(Flags); } bool IsInfiniteAOI() const { return GetFlags().HasFlag(VignetteFlags::InfiniteAOI | VignetteFlags::ZoneInfiniteAOI); } diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index a9fd9d51417a9..6e50804302525 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -211,10 +211,10 @@ class TC_GAME_API Item : public Object void RemoveItemFlag(ItemFieldFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags), flags); } void ReplaceAllItemFlags(ItemFieldFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags), flags); } - bool HasItemFlag2(ItemFieldFlags2 flag) const { return (*m_itemData->DynamicFlags2 & flag) != 0; } - void SetItemFlag2(ItemFieldFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); } - void RemoveItemFlag2(ItemFieldFlags2 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); } - void ReplaceAllItemFlags2(ItemFieldFlags2 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); } + bool HasItemZoneFlag(ItemZoneFlags flag) const { return (*m_itemData->ZoneFlags & flag) != 0; } + void SetItemZoneFlag(ItemZoneFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::ZoneFlags), flags); } + void RemoveItemZoneFlag(ItemZoneFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::ZoneFlags), flags); } + void ReplaceAllItemZoneFlags(ItemZoneFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::ZoneFlags), flags); } bool IsSoulBound() const { return HasItemFlag(ITEM_FIELD_FLAG_SOULBOUND); } bool IsBoundAccountWide() const { return GetTemplate()->HasFlag(ITEM_FLAG_IS_BOUND_TO_ACCOUNT); } diff --git a/src/server/game/Entities/Item/ItemDefines.h b/src/server/game/Entities/Item/ItemDefines.h index 1d93f470c4a44..e147b92c34740 100644 --- a/src/server/game/Entities/Item/ItemDefines.h +++ b/src/server/game/Entities/Item/ItemDefines.h @@ -153,6 +153,7 @@ enum InventoryResult : uint8 EQUIP_ERR_CANT_DELETE_IN_ACCOUNT_BANK = 127,// Items must be moved out of the Warband Bank to be deleted. EQUIP_ERR_BANK_NOT_ACCESSIBLE = 128,// This character does not have access to this bank. EQUIP_ERR_CANT_TRADE_ACCOUNT_ITEM = 129,// You can't trade an item from the Warband bank. + EQUIP_ERR_ACCOUNT_MONEY_LOCKED = 130,// You cannot withdraw or deposit gold from the warband bank currently; please try again later. }; // EnumUtils: DESCRIBE THIS diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index 1423e3d9f4175..6dcdf08e85c25 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -170,12 +170,12 @@ enum ItemFieldFlags : uint32 DEFINE_ENUM_FLAG(ItemFieldFlags); -enum ItemFieldFlags2 : uint32 +enum ItemZoneFlags : uint32 { ITEM_FIELD_FLAG2_EQUIPPED = 0x1 }; -DEFINE_ENUM_FLAG(ItemFieldFlags2); +DEFINE_ENUM_FLAG(ItemZoneFlags); enum ItemFlags : uint32 { diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index fffe07fa47481..bb9f989156e9a 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -297,7 +297,7 @@ void ItemData::WriteCreate(ByteBuffer& data, EnumFlag fieldVisi data << uint32(Gems.size()); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) { - data << uint32(DynamicFlags2); + data << uint32(ZoneFlags); } data << ItemBonusKey; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) @@ -440,7 +440,7 @@ void ItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor } if (changesMask[18]) { - data << uint32(DynamicFlags2); + data << uint32(ZoneFlags); } if (changesMask[19]) { @@ -496,7 +496,7 @@ void ItemData::ClearChangesMask() Base::ClearChangesMask(ArtifactXP); Base::ClearChangesMask(ItemAppearanceModID); Base::ClearChangesMask(Modifiers); - Base::ClearChangesMask(DynamicFlags2); + Base::ClearChangesMask(ZoneFlags); Base::ClearChangesMask(ItemBonusKey); Base::ClearChangesMask(DEBUGItemLevel); Base::ClearChangesMask(SpellCharges); @@ -3506,10 +3506,7 @@ void ActivePlayerUnk901::ClearChangesMask() void QuestSession::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const { data << Owner; - for (uint32 i = 0; i < 1000; ++i) - { - data << uint64(QuestCompleted[i]); - } + QuestCompleted->WriteCreate(data, owner, receiver); } void QuestSession::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const @@ -3518,10 +3515,7 @@ void QuestSession::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player if (ignoreChangesMask) changesMask.SetAll(); - data.WriteBits(changesMask.GetBlocksMask(0), 32); - for (uint32 i = 0; i < 32; ++i) - if (changesMask.GetBlock(i)) - data.WriteBits(changesMask.GetBlock(i), 32); + data.WriteBits(changesMask.GetBlock(0), 3); data.FlushBits(); if (changesMask[0]) @@ -3530,15 +3524,9 @@ void QuestSession::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player { data << Owner; } - } - if (changesMask[2]) - { - for (uint32 i = 0; i < 1000; ++i) + if (changesMask[2]) { - if (changesMask[3 + i]) - { - data << uint64(QuestCompleted[i]); - } + QuestCompleted->WriteUpdate(data, ignoreChangesMask, owner, receiver); } } } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 12677b885943c..26ac4b7ca5541 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -135,7 +135,7 @@ struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<41> UpdateField ArtifactXP; UpdateField ItemAppearanceModID; UpdateField Modifiers; - UpdateField DynamicFlags2; + UpdateField ZoneFlags; UpdateField ItemBonusKey; UpdateField DEBUGItemLevel; UpdateFieldArray SpellCharges; @@ -757,10 +757,10 @@ struct ActivePlayerUnk901 : public IsUpdateFieldStructureTag, public HasChangesM void ClearChangesMask(); }; -struct QuestSession : public IsUpdateFieldStructureTag, public HasChangesMask<1003> +struct QuestSession : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField Owner; - UpdateFieldArray QuestCompleted; + UpdateField QuestCompleted; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, 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 1ba5763828539..373b4b42ed547 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -11728,7 +11728,7 @@ Item* Player::EquipItem(uint16 pos, Item* pItem, bool update) } } - pItem->SetItemFlag2(ITEM_FIELD_FLAG2_EQUIPPED); + pItem->SetItemZoneFlag(ITEM_FIELD_FLAG2_EQUIPPED); if (IsInWorld() && update) { @@ -11906,7 +11906,7 @@ void Player::QuickEquipItem(uint16 pos, Item* pItem) uint8 slot = pos & 255; VisualizeItem(slot, pItem); - pItem->SetItemFlag2(ITEM_FIELD_FLAG2_EQUIPPED); + pItem->SetItemZoneFlag(ITEM_FIELD_FLAG2_EQUIPPED); if (IsInWorld()) { @@ -12003,7 +12003,7 @@ void Player::RemoveItem(uint8 bag, uint8 slot, bool update) _ApplyItemMods(pItem, slot, false, update); - pItem->RemoveItemFlag2(ITEM_FIELD_FLAG2_EQUIPPED); + pItem->RemoveItemZoneFlag(ITEM_FIELD_FLAG2_EQUIPPED); // remove item dependent auras and casts (only weapon and armor slots) if (slot < PROFESSION_SLOT_END) @@ -16554,14 +16554,27 @@ void Player::SetQuestCompletedBit(uint32 questBit, bool completed) return; uint32 fieldOffset = (questBit - 1) / QUESTS_COMPLETED_BITS_PER_BLOCK; - if (fieldOffset >= QUESTS_COMPLETED_BITS_SIZE) - return; - uint64 flag = UI64LIT(1) << ((questBit - 1) % QUESTS_COMPLETED_BITS_PER_BLOCK); + if (fieldOffset < QUESTS_COMPLETED_BITS_SIZE) + { + if (completed) + SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag); + else + RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag); + } + if (completed) - SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag); + SetUpdateFieldFlagValue(m_values + .ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::BitVectors) + .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX) + .ModifyValue(&UF::BitVector::Values, fieldOffset), flag); else - RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag); + RemoveUpdateFieldFlagValue(m_values + .ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::BitVectors) + .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX) + .ModifyValue(&UF::BitVector::Values, fieldOffset), flag); } void Player::AreaExploredOrEventHappens(uint32 questId) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 5ad1ba76f11c9..e19b492d2f165 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -156,6 +156,7 @@ enum PlayerDataFlagConstants PLAYER_DATA_FLAG_ACCOUNT_COMBINED_QUESTS_INDEX = 6, PLAYER_DATA_FLAG_ACCOUNT_COMBINED_QUEST_REWARDS_INDEX = 7, PLAYER_DATA_FLAG_CHARACTER_CONTENTPUSH_INDEX = 8, + PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX = 9, }; enum SpellModType : uint8 diff --git a/src/server/game/Entities/Unit/Vignette.cpp b/src/server/game/Entities/Unit/Vignette.cpp index 846446cea4354..9ad9450f6ec1d 100644 --- a/src/server/game/Entities/Unit/Vignette.cpp +++ b/src/server/game/Entities/Unit/Vignette.cpp @@ -17,7 +17,7 @@ #include "Vignette.h" #include "CellImpl.h" -#include "DB2Stores.h" +#include "DB2Structure.h" #include "GridNotifiersImpl.h" #include "VignettePackets.h" @@ -35,6 +35,11 @@ void UpdatePosition(VignetteData& vignette, WorldObject const* owner) } } +void UpdateHealth(VignetteData& vignette, Unit const* owner) +{ + vignette.HealthPercent = float(owner->GetHealth()) / float(owner->GetMaxHealth()); // converted to percentage in lua +} + template void SendVignetteUpdate(VignetteData const& vignette, WorldObject const* owner) { @@ -70,6 +75,7 @@ void VignetteData::FillPacket(WorldPackets::Vignette::VignetteDataSet& dataSet) data.ZoneID = ZoneID; data.WMOGroupID = WMOGroupID; data.WMODoodadPlacementID = WMODoodadPlacementID; + data.HealthPercent = HealthPercent; } std::unique_ptr Create(VignetteEntry const* vignetteData, WorldObject const* owner) @@ -81,6 +87,8 @@ std::unique_ptr Create(VignetteEntry const* vignetteData, WorldObj vignette->Data = vignetteData; vignette->ZoneID = owner->GetZoneId(); // not updateable UpdatePosition(*vignette, owner); + if (Unit const* unitOwner = owner->ToUnit()) + UpdateHealth(*vignette, unitOwner); if (vignetteData->IsInfiniteAOI()) owner->GetMap()->AddInfiniteAOIVignette(vignette.get()); @@ -93,6 +101,8 @@ std::unique_ptr Create(VignetteEntry const* vignetteData, WorldObj void Update(VignetteData& vignette, WorldObject const* owner) { UpdatePosition(vignette, owner); + if (Unit const* unitOwner = owner->ToUnit()) + UpdateHealth(vignette, unitOwner); if (vignette.Data->IsInfiniteAOI()) vignette.NeedUpdate = true; diff --git a/src/server/game/Entities/Unit/Vignette.h b/src/server/game/Entities/Unit/Vignette.h index f318faff98306..051f3d0326706 100644 --- a/src/server/game/Entities/Unit/Vignette.h +++ b/src/server/game/Entities/Unit/Vignette.h @@ -42,6 +42,7 @@ struct VignetteData uint32 ZoneID = 0; uint32 WMOGroupID = 0; uint32 WMODoodadPlacementID = 0; + float HealthPercent = 1.0f; bool NeedUpdate = false; void FillPacket(WorldPackets::Vignette::VignetteDataSet& dataSet) const; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 51cddd14e1f36..0b35181694ed5 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1555,6 +1555,13 @@ enum SpellEffectName SPELL_EFFECT_331 = 331, SPELL_EFFECT_332 = 332, SPELL_EFFECT_333 = 333, + SPELL_EFFECT_334 = 334, + SPELL_EFFECT_335 = 335, + SPELL_EFFECT_336 = 336, + SPELL_EFFECT_337 = 337, + SPELL_EFFECT_338 = 338, + SPELL_EFFECT_UI_ACTION = 339, + SPELL_EFFECT_340 = 340, TOTAL_SPELL_EFFECTS }; @@ -7919,353 +7926,363 @@ enum class GameError : uint32 ERR_LFG_JOINED_WORLD_PVP_QUEUE = 821, ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 822, ERR_LFG_JOINED_LIST = 823, - ERR_LFG_LEFT_QUEUE = 824, - ERR_LFG_LEFT_LIST = 825, - ERR_LFG_ROLE_CHECK_ABORTED = 826, - ERR_LFG_READY_CHECK_ABORTED = 827, - ERR_LFG_CANT_USE_BATTLEGROUND = 828, - ERR_LFG_CANT_USE_DUNGEONS = 829, - ERR_LFG_REASON_TOO_MANY_LFG = 830, - ERR_LFG_FARM_LIMIT = 831, - ERR_LFG_NO_CROSS_FACTION_PARTIES = 832, - ERR_INVALID_TELEPORT_LOCATION = 833, - ERR_TOO_FAR_TO_INTERACT = 834, - ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 835, - ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 836, - ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 837, - ERR_DIFFICULTY_CHANGE_WORLDSTATE = 838, - ERR_DIFFICULTY_CHANGE_ENCOUNTER = 839, - ERR_DIFFICULTY_CHANGE_COMBAT = 840, - ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 841, - ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 842, - ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 843, - ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 844, - ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 845, - ERR_ARENA_TEAM_PARTY_SIZE = 846, - ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 847, - ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 848, - ERR_SOLO_RBG_WARGAME_GROUP_SIZE = 849, - ERR_SOLO_RBG_WARGAME_GROUP_COMP = 850, - ERR_SOLO_MIN_ITEM_LEVEL = 851, - ERR_PVP_PLAYER_ABANDONED = 852, - ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 853, - ERR_QUEST_FORCE_REMOVED_S = 854, - ERR_ATTACK_NO_ACTIONS = 855, - ERR_IN_RANDOM_BG = 856, - ERR_IN_NON_RANDOM_BG = 857, - ERR_BN_FRIEND_SELF = 858, - ERR_BN_FRIEND_ALREADY = 859, - ERR_BN_FRIEND_BLOCKED = 860, - ERR_BN_FRIEND_LIST_FULL = 861, - ERR_BN_FRIEND_REQUEST_SENT = 862, - ERR_BN_BROADCAST_THROTTLE = 863, - ERR_BG_DEVELOPER_ONLY = 864, - ERR_CURRENCY_SPELL_SLOT_MISMATCH = 865, - ERR_CURRENCY_NOT_TRADABLE = 866, - ERR_REQUIRES_EXPANSION_S = 867, - ERR_QUEST_FAILED_SPELL = 868, - ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 869, - ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 870, - ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 871, - ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 872, - ERR_TALENT_FAILED_UNKNOWN = 873, - ERR_TALENT_FAILED_IN_COMBAT = 874, - ERR_TALENT_FAILED_IN_PVP_MATCH = 875, - ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 876, - ERR_WARGAME_REQUEST_FAILURE = 877, - ERR_RANK_REQUIRES_AUTHENTICATOR = 878, - ERR_GUILD_BANK_VOUCHER_FAILED = 879, - ERR_WARGAME_REQUEST_SENT = 880, - ERR_REQUIRES_ACHIEVEMENT_I = 881, - ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 882, - ERR_CANT_BUY_QUANTITY = 883, - ERR_ITEM_IS_BATTLE_PAY_LOCKED = 884, - ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 885, - ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 886, - ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 887, - ERR_INSUFF_TRACKED_CURRENCY_IS = 888, - ERR_NOT_ON_TOURNAMENT_REALM = 889, - ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 890, - ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 891, - ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 892, - ERR_CANT_DO_THAT_IN_A_GROUP = 893, - ERR_GUILD_LEADER_REPLACED = 894, - ERR_TRANSMOGRIFY_CANT_EQUIP = 895, - ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 896, - ERR_TRANSMOGRIFY_NOT_SOULBOUND = 897, - ERR_TRANSMOGRIFY_INVALID_SOURCE = 898, - ERR_TRANSMOGRIFY_INVALID_DESTINATION = 899, - ERR_TRANSMOGRIFY_MISMATCH = 900, - ERR_TRANSMOGRIFY_LEGENDARY = 901, - ERR_TRANSMOGRIFY_SAME_ITEM = 902, - ERR_TRANSMOGRIFY_SAME_APPEARANCE = 903, - ERR_TRANSMOGRIFY_NOT_EQUIPPED = 904, - ERR_VOID_DEPOSIT_FULL = 905, - ERR_VOID_WITHDRAW_FULL = 906, - ERR_VOID_STORAGE_WRAPPED = 907, - ERR_VOID_STORAGE_STACKABLE = 908, - ERR_VOID_STORAGE_UNBOUND = 909, - ERR_VOID_STORAGE_REPAIR = 910, - ERR_VOID_STORAGE_CHARGES = 911, - ERR_VOID_STORAGE_QUEST = 912, - ERR_VOID_STORAGE_CONJURED = 913, - ERR_VOID_STORAGE_MAIL = 914, - ERR_VOID_STORAGE_BAG = 915, - ERR_VOID_TRANSFER_STORAGE_FULL = 916, - ERR_VOID_TRANSFER_INV_FULL = 917, - ERR_VOID_TRANSFER_INTERNAL_ERROR = 918, - ERR_VOID_TRANSFER_ITEM_INVALID = 919, - ERR_DIFFICULTY_DISABLED_IN_LFG = 920, - ERR_VOID_STORAGE_UNIQUE = 921, - ERR_VOID_STORAGE_LOOT = 922, - ERR_VOID_STORAGE_HOLIDAY = 923, - ERR_VOID_STORAGE_DURATION = 924, - ERR_VOID_STORAGE_LOAD_FAILED = 925, - ERR_VOID_STORAGE_INVALID_ITEM = 926, - ERR_VOID_STORAGE_ACCOUNT_ITEM = 927, - ERR_PARENTAL_CONTROLS_CHAT_MUTED = 928, - ERR_SOR_START_EXPERIENCE_INCOMPLETE = 929, - ERR_SOR_INVALID_EMAIL = 930, - ERR_SOR_INVALID_COMMENT = 931, - ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 932, - ERR_CHALLENGE_MODE_RESET_KEYSTONE = 933, - ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 934, - ERR_REPORT_SUBMITTED_SUCCESSFULLY = 935, - ERR_REPORT_SUBMISSION_FAILED = 936, - ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 937, - ERR_BUG_SUBMITTED_SUCCESSFULLY = 938, - ERR_CHALLENGE_MODE_ENABLED = 939, - ERR_CHALLENGE_MODE_DISABLED = 940, - ERR_PETBATTLE_CREATE_FAILED = 941, - ERR_PETBATTLE_NOT_HERE = 942, - ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 943, - ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 944, - ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 945, - ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 946, - ERR_PETBATTLE_NOT_WHILE_DEAD = 947, - ERR_PETBATTLE_NOT_WHILE_FLYING = 948, - ERR_PETBATTLE_TARGET_INVALID = 949, - ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 950, - ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 951, - ERR_PETBATTLE_NOT_A_TRAINER = 952, - ERR_PETBATTLE_DECLINED = 953, - ERR_PETBATTLE_IN_BATTLE = 954, - ERR_PETBATTLE_INVALID_LOADOUT = 955, - ERR_PETBATTLE_ALL_PETS_DEAD = 956, - ERR_PETBATTLE_NO_PETS_IN_SLOTS = 957, - ERR_PETBATTLE_NO_ACCOUNT_LOCK = 958, - ERR_PETBATTLE_WILD_PET_TAPPED = 959, - ERR_PETBATTLE_RESTRICTED_ACCOUNT = 960, - ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 961, - ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 962, - ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 963, - ERR_CANT_HAVE_MORE_PETS = 964, - ERR_PVP_MAP_NOT_FOUND = 965, - ERR_PVP_MAP_NOT_SET = 966, - ERR_PETBATTLE_QUEUE_QUEUED = 967, - ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 968, - ERR_PETBATTLE_QUEUE_JOIN_FAILED = 969, - ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 970, - ERR_PETBATTLE_QUEUE_REMOVED = 971, - ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 972, - ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 973, - ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 974, - ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 975, - ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 976, - ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 977, - ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 978, - ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 979, - ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 980, - ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 981, - ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 982, - ERR_PETBATTLE_QUEUE_SLOT_DEAD = 983, - ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 984, - ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 985, - ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 986, - ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 987, - ERR_HAS_RESTRICTION = 988, - ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 989, - ERR_ITEM_UPGRADE_NO_PATH = 990, - ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 991, - ERR_BONUS_ROLL_EMPTY = 992, - ERR_CHALLENGE_MODE_FULL = 993, - ERR_CHALLENGE_MODE_IN_PROGRESS = 994, - ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 995, - ERR_BATTLETAG_FRIEND_NOT_FOUND = 996, - ERR_BATTLETAG_FRIEND_NOT_VALID = 997, - ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 998, - ERR_BATTLETAG_FRIEND_THROTTLED = 999, - ERR_BATTLETAG_FRIEND_SUCCESS = 1000, - ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 1001, - ERR_PETBATTLE_INTERNAL = 1002, - ERR_CANT_CAGE_PET_YET = 1003, - ERR_NO_LOOT_IN_CHALLENGE_MODE = 1004, - ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 1005, - ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 1006, - ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 1007, - ERR_RECRUIT_A_FRIEND_FAILED = 1008, - ERR_SET_LOOT_PERSONAL = 1009, - ERR_SET_LOOT_METHOD_FAILED_COMBAT = 1010, - ERR_REAGENT_BANK_FULL = 1011, - ERR_REAGENT_BANK_LOCKED = 1012, - ERR_GARRISON_BUILDING_EXISTS = 1013, - ERR_GARRISON_INVALID_PLOT = 1014, - ERR_GARRISON_INVALID_BUILDINGID = 1015, - ERR_GARRISON_INVALID_PLOT_BUILDING = 1016, - ERR_GARRISON_REQUIRES_BLUEPRINT = 1017, - ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1018, - ERR_GARRISON_NOT_ENOUGH_GOLD = 1019, - ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1020, - ERR_ALREADY_USING_LFG_LIST = 1021, - ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1022, - ERR_TOY_USE_LIMIT_REACHED = 1023, - ERR_TOY_ALREADY_KNOWN = 1024, - ERR_TRANSMOG_SET_ALREADY_KNOWN = 1025, - ERR_NOT_ENOUGH_CURRENCY = 1026, - ERR_SPEC_IS_DISABLED = 1027, - ERR_FEATURE_RESTRICTED_TRIAL = 1028, - ERR_CANT_BE_OBLITERATED = 1029, - ERR_CANT_BE_SCRAPPED = 1030, - ERR_CANT_BE_RECRAFTED = 1031, - ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1032, - ERR_MUST_EQUIP_ARTIFACT = 1033, - ERR_CANT_DO_THAT_RIGHT_NOW = 1034, - ERR_AFFECTING_COMBAT = 1035, - ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1036, - ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1037, - ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1038, - ERR_MOVIE_RECORDING_WARNING_PERF = 1039, - ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1040, - ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1041, - ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1042, - ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1043, - ERR_NO_CHALLENGE_MODE_REWARD = 1044, - ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1045, - ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1046, - ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1047, - ERR_TALENT_FAILED_REST_AREA = 1048, - ERR_CANNOT_ABANDON_LAST_PET = 1049, - ERR_TEST_CVAR_SET_SSS = 1050, - ERR_QUEST_TURN_IN_FAIL_REASON = 1051, - ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1052, - ERR_TALENT_GRANTED_BY_AURA = 1053, - ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1054, - ERR_GLYPH_TARGET_NOT_AVAILABLE = 1055, - ERR_PVP_WARMODE_TOGGLE_ON = 1056, - ERR_PVP_WARMODE_TOGGLE_OFF = 1057, - ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1058, - ERR_SPELL_FAILED_CANT_FLY_HERE = 1059, - ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1060, - ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1061, - ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1062, - ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1063, - ERR_VOICE_CHAT_SERVICE_LOST = 1064, - ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1065, - ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1066, - ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1067, - ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1068, - ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1069, - ERR_VOICE_CHAT_PLAYER_SILENCED = 1070, - ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1071, - ERR_VOICE_CHAT_DISABLED = 1072, - ERR_NO_PVP_REWARD = 1073, - ERR_CLAIMED_PVP_REWARD = 1074, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1075, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1076, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1077, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1078, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1079, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1080, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1081, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1082, - ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1083, - ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1084, - ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1085, - ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1086, - ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1087, - ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1088, - ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1089, - ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1090, - ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1091, - ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1092, - ERR_SOCKETING_REQUIRES_TINKER_GEM = 1093, - ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1094, - ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1095, - ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1096, - ERR_SOCKETING_REQUIRES_FRAGRANCE_GEM = 1097, - ERR_SOCKETING_FRAGRANCE_GEM_ONLY_IN_FRAGRANCESLOT = 1098, - ERR_LEVEL_LINKING_RESULT_LINKED = 1099, - ERR_LEVEL_LINKING_RESULT_UNLINKED = 1100, - ERR_CLUB_FINDER_ERROR_POST_CLUB = 1101, - ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1102, - ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1103, - ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1104, - ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1105, - ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1106, - ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1107, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1108, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1109, - ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1110, - ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1111, - ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1112, - ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1113, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1114, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1115, - ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1116, - ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1117, - ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1118, - ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1119, - ERR_SOULBIND_INVALID_CONDUIT = 1120, - ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1121, - ERR_SOULBIND_INVALID_TALENT = 1122, - ERR_SOULBIND_DUPLICATE_CONDUIT = 1123, - ERR_ACTIVATE_SOULBIND_S = 1124, - ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1125, - ERR_CANT_USE_PROFANITY = 1126, - ERR_NOT_IN_PET_BATTLE = 1127, - ERR_NOT_IN_NPE = 1128, - ERR_NO_SPEC = 1129, - ERR_NO_DOMINATIONSHARD_OVERWRITE = 1130, - ERR_USE_WEEKLY_REWARDS_DISABLED = 1131, - ERR_CROSS_FACTION_GROUP_JOINED = 1132, - ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1133, - ERR_EQUIPABLESPELLS_SLOTS_FULL = 1134, - ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1135, - ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1136, - ERR_NO_SOULBOUND_ITEM_IN_ACCOUNT_BANK = 1137, - ERR_NO_REFUNDABLE_ITEM_IN_ACCOUNT_BANK = 1138, - ERR_CANT_DELETE_IN_ACCOUNT_BANK = 1139, - ERR_NO_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1140, - ERR_NO_OPEN_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1141, - ERR_CANT_TRADE_ACCOUNT_ITEM = 1142, - ERR_NO_ACCOUNT_INVENTORY_LOCK = 1143, - ERR_BANK_NOT_ACCESSIBLE = 1144, - ERR_TOO_MANY_ACCOUNT_BANK_TABS = 1145, - ERR_ACCOUNT_BANK_TAB_NOT_UNLOCKED = 1146, - ERR_BANK_TAB_INVALID_NAME = 1147, - ERR_BANK_TAB_INVALID_TEXT = 1148, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1149, - ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1150, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1151, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1152, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1153, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1154, - ERR_TARGET_IS_SELF_FOUND_CANNOT_TRADE = 1155, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_TRADE = 1156, - ERR_MAIL_RECEPIENT_IS_SELF_FOUND_CANNOT_RECEIVE_MAIL = 1157, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_SEND_MAIL = 1158, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_USE_AUCTION_HOUSE = 1159, - ERR_MAIL_TARGET_CANNOT_RECEIVE_MAIL = 1160, - ERR_REMIX_INVALID_TRANSFER_REQUEST = 1161, - ERR_CURRENCY_TRANSFER_INVALID_CHARACTER = 1162, - ERR_CURRENCY_TRANSFER_INVALID_CURRENCY = 1163, - ERR_CURRENCY_TRANSFER_INSUFFICIENT_CURRENCY = 1164, - ERR_CURRENCY_TRANSFER_MAX_QUANTITY = 1165, - ERR_CURRENCY_TRANSFER_NO_VALID_SOURCE = 1166, - ERR_CURRENCY_TRANSFER_CHARACTER_LOGGED_IN = 1167, - ERR_CURRENCY_TRANSFER_SERVER_ERROR = 1168, - ERR_CURRENCY_TRANSFER_UNMET_REQUIREMENTS = 1169, - ERR_CURRENCY_TRANSFER_TRANSACTION_IN_PROGRESS = 1170, + ERR_QUEUED_PLUNDERSTORM = 824, + ERR_LFG_LEFT_QUEUE = 825, + ERR_LFG_LEFT_LIST = 826, + ERR_LFG_ROLE_CHECK_ABORTED = 827, + ERR_LFG_READY_CHECK_ABORTED = 828, + ERR_LFG_CANT_USE_BATTLEGROUND = 829, + ERR_LFG_CANT_USE_DUNGEONS = 830, + ERR_LFG_REASON_TOO_MANY_LFG = 831, + ERR_LFG_FARM_LIMIT = 832, + ERR_LFG_NO_CROSS_FACTION_PARTIES = 833, + ERR_INVALID_TELEPORT_LOCATION = 834, + ERR_TOO_FAR_TO_INTERACT = 835, + ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 836, + ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 837, + ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 838, + ERR_DIFFICULTY_CHANGE_WORLDSTATE = 839, + ERR_DIFFICULTY_CHANGE_ENCOUNTER = 840, + ERR_DIFFICULTY_CHANGE_COMBAT = 841, + ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 842, + ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 843, + ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 844, + ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 845, + ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 846, + ERR_ARENA_TEAM_PARTY_SIZE = 847, + ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 848, + ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 849, + ERR_SOLO_RBG_WARGAME_GROUP_SIZE = 850, + ERR_SOLO_RBG_WARGAME_GROUP_COMP = 851, + ERR_SOLO_MIN_ITEM_LEVEL = 852, + ERR_PVP_PLAYER_ABANDONED = 853, + ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 854, + ERR_QUEST_FORCE_REMOVED_S = 855, + ERR_ATTACK_NO_ACTIONS = 856, + ERR_IN_RANDOM_BG = 857, + ERR_IN_NON_RANDOM_BG = 858, + ERR_BN_FRIEND_SELF = 859, + ERR_BN_FRIEND_ALREADY = 860, + ERR_BN_FRIEND_BLOCKED = 861, + ERR_BN_FRIEND_LIST_FULL = 862, + ERR_BN_FRIEND_REQUEST_SENT = 863, + ERR_BN_BROADCAST_THROTTLE = 864, + ERR_BG_DEVELOPER_ONLY = 865, + ERR_CURRENCY_SPELL_SLOT_MISMATCH = 866, + ERR_CURRENCY_NOT_TRADABLE = 867, + ERR_REQUIRES_EXPANSION_S = 868, + ERR_QUEST_FAILED_SPELL = 869, + ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 870, + ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 871, + ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 872, + ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 873, + ERR_TALENT_FAILED_UNKNOWN = 874, + ERR_TALENT_FAILED_IN_COMBAT = 875, + ERR_TALENT_FAILED_IN_PVP_MATCH = 876, + ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 877, + ERR_WARGAME_REQUEST_FAILURE = 878, + ERR_RANK_REQUIRES_AUTHENTICATOR = 879, + ERR_GUILD_BANK_VOUCHER_FAILED = 880, + ERR_WARGAME_REQUEST_SENT = 881, + ERR_REQUIRES_ACHIEVEMENT_I = 882, + ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 883, + ERR_CANT_BUY_QUANTITY = 884, + ERR_ITEM_IS_BATTLE_PAY_LOCKED = 885, + ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 886, + ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 887, + ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 888, + ERR_INSUFF_TRACKED_CURRENCY_IS = 889, + ERR_NOT_ON_TOURNAMENT_REALM = 890, + ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 891, + ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 892, + ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 893, + ERR_CANT_DO_THAT_IN_A_GROUP = 894, + ERR_GUILD_LEADER_REPLACED = 895, + ERR_TRANSMOGRIFY_CANT_EQUIP = 896, + ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 897, + ERR_TRANSMOGRIFY_NOT_SOULBOUND = 898, + ERR_TRANSMOGRIFY_INVALID_SOURCE = 899, + ERR_TRANSMOGRIFY_INVALID_DESTINATION = 900, + ERR_TRANSMOGRIFY_MISMATCH = 901, + ERR_TRANSMOGRIFY_LEGENDARY = 902, + ERR_TRANSMOGRIFY_SAME_ITEM = 903, + ERR_TRANSMOGRIFY_SAME_APPEARANCE = 904, + ERR_TRANSMOGRIFY_NOT_EQUIPPED = 905, + ERR_VOID_DEPOSIT_FULL = 906, + ERR_VOID_WITHDRAW_FULL = 907, + ERR_VOID_STORAGE_WRAPPED = 908, + ERR_VOID_STORAGE_STACKABLE = 909, + ERR_VOID_STORAGE_UNBOUND = 910, + ERR_VOID_STORAGE_REPAIR = 911, + ERR_VOID_STORAGE_CHARGES = 912, + ERR_VOID_STORAGE_QUEST = 913, + ERR_VOID_STORAGE_CONJURED = 914, + ERR_VOID_STORAGE_MAIL = 915, + ERR_VOID_STORAGE_BAG = 916, + ERR_VOID_TRANSFER_STORAGE_FULL = 917, + ERR_VOID_TRANSFER_INV_FULL = 918, + ERR_VOID_TRANSFER_INTERNAL_ERROR = 919, + ERR_VOID_TRANSFER_ITEM_INVALID = 920, + ERR_DIFFICULTY_DISABLED_IN_LFG = 921, + ERR_VOID_STORAGE_UNIQUE = 922, + ERR_VOID_STORAGE_LOOT = 923, + ERR_VOID_STORAGE_HOLIDAY = 924, + ERR_VOID_STORAGE_DURATION = 925, + ERR_VOID_STORAGE_LOAD_FAILED = 926, + ERR_VOID_STORAGE_INVALID_ITEM = 927, + ERR_VOID_STORAGE_ACCOUNT_ITEM = 928, + ERR_PARENTAL_CONTROLS_CHAT_MUTED = 929, + ERR_SOR_START_EXPERIENCE_INCOMPLETE = 930, + ERR_SOR_INVALID_EMAIL = 931, + ERR_SOR_INVALID_COMMENT = 932, + ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 933, + ERR_CHALLENGE_MODE_RESET_KEYSTONE = 934, + ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 935, + ERR_REPORT_SUBMITTED_SUCCESSFULLY = 936, + ERR_REPORT_SUBMISSION_FAILED = 937, + ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 938, + ERR_BUG_SUBMITTED_SUCCESSFULLY = 939, + ERR_CHALLENGE_MODE_ENABLED = 940, + ERR_CHALLENGE_MODE_DISABLED = 941, + ERR_PETBATTLE_CREATE_FAILED = 942, + ERR_PETBATTLE_NOT_HERE = 943, + ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 944, + ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 945, + ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 946, + ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 947, + ERR_PETBATTLE_NOT_WHILE_DEAD = 948, + ERR_PETBATTLE_NOT_WHILE_FLYING = 949, + ERR_PETBATTLE_TARGET_INVALID = 950, + ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 951, + ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 952, + ERR_PETBATTLE_NOT_A_TRAINER = 953, + ERR_PETBATTLE_DECLINED = 954, + ERR_PETBATTLE_IN_BATTLE = 955, + ERR_PETBATTLE_INVALID_LOADOUT = 956, + ERR_PETBATTLE_ALL_PETS_DEAD = 957, + ERR_PETBATTLE_NO_PETS_IN_SLOTS = 958, + ERR_PETBATTLE_NO_ACCOUNT_LOCK = 959, + ERR_PETBATTLE_WILD_PET_TAPPED = 960, + ERR_PETBATTLE_RESTRICTED_ACCOUNT = 961, + ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 962, + ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 963, + ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 964, + ERR_CANT_HAVE_MORE_PETS = 965, + ERR_PVP_MAP_NOT_FOUND = 966, + ERR_PVP_MAP_NOT_SET = 967, + ERR_PETBATTLE_QUEUE_QUEUED = 968, + ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 969, + ERR_PETBATTLE_QUEUE_JOIN_FAILED = 970, + ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 971, + ERR_PETBATTLE_QUEUE_REMOVED = 972, + ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 973, + ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 974, + ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 975, + ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 976, + ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 977, + ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 978, + ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 979, + ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 980, + ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 981, + ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 982, + ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 983, + ERR_PETBATTLE_QUEUE_SLOT_DEAD = 984, + ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 985, + ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 986, + ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 987, + ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 988, + ERR_HAS_RESTRICTION = 989, + ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 990, + ERR_ITEM_UPGRADE_NO_PATH = 991, + ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 992, + ERR_BONUS_ROLL_EMPTY = 993, + ERR_CHALLENGE_MODE_FULL = 994, + ERR_CHALLENGE_MODE_IN_PROGRESS = 995, + ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 996, + ERR_BATTLETAG_FRIEND_NOT_FOUND = 997, + ERR_BATTLETAG_FRIEND_NOT_VALID = 998, + ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 999, + ERR_BATTLETAG_FRIEND_THROTTLED = 1000, + ERR_BATTLETAG_FRIEND_SUCCESS = 1001, + ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 1002, + ERR_PETBATTLE_INTERNAL = 1003, + ERR_CANT_CAGE_PET_YET = 1004, + ERR_NO_LOOT_IN_CHALLENGE_MODE = 1005, + ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 1006, + ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 1007, + ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 1008, + ERR_RECRUIT_A_FRIEND_FAILED = 1009, + ERR_SET_LOOT_PERSONAL = 1010, + ERR_SET_LOOT_METHOD_FAILED_COMBAT = 1011, + ERR_REAGENT_BANK_FULL = 1012, + ERR_REAGENT_BANK_LOCKED = 1013, + ERR_GARRISON_BUILDING_EXISTS = 1014, + ERR_GARRISON_INVALID_PLOT = 1015, + ERR_GARRISON_INVALID_BUILDINGID = 1016, + ERR_GARRISON_INVALID_PLOT_BUILDING = 1017, + ERR_GARRISON_REQUIRES_BLUEPRINT = 1018, + ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1019, + ERR_GARRISON_NOT_ENOUGH_GOLD = 1020, + ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1021, + ERR_ALREADY_USING_LFG_LIST = 1022, + ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1023, + ERR_TOY_USE_LIMIT_REACHED = 1024, + ERR_TOY_ALREADY_KNOWN = 1025, + ERR_TRANSMOG_SET_ALREADY_KNOWN = 1026, + ERR_NOT_ENOUGH_CURRENCY = 1027, + ERR_SPEC_IS_DISABLED = 1028, + ERR_FEATURE_RESTRICTED_TRIAL = 1029, + ERR_CANT_BE_OBLITERATED = 1030, + ERR_CANT_BE_SCRAPPED = 1031, + ERR_CANT_BE_RECRAFTED = 1032, + ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1033, + ERR_MUST_EQUIP_ARTIFACT = 1034, + ERR_CANT_DO_THAT_RIGHT_NOW = 1035, + ERR_AFFECTING_COMBAT = 1036, + ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1037, + ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1038, + ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1039, + ERR_MOVIE_RECORDING_WARNING_PERF = 1040, + ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1041, + ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1042, + ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1043, + ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1044, + ERR_NO_CHALLENGE_MODE_REWARD = 1045, + ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1046, + ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1047, + ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1048, + ERR_TALENT_FAILED_REST_AREA = 1049, + ERR_CANNOT_ABANDON_LAST_PET = 1050, + ERR_TEST_CVAR_SET_SSS = 1051, + ERR_QUEST_TURN_IN_FAIL_REASON = 1052, + ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1053, + ERR_TALENT_GRANTED_BY_AURA = 1054, + ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1055, + ERR_GLYPH_TARGET_NOT_AVAILABLE = 1056, + ERR_PVP_WARMODE_TOGGLE_ON = 1057, + ERR_PVP_WARMODE_TOGGLE_OFF = 1058, + ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1059, + ERR_SPELL_FAILED_CANT_FLY_HERE = 1060, + ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1061, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1062, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1063, + ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1064, + ERR_VOICE_CHAT_SERVICE_LOST = 1065, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1066, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1067, + ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1068, + ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1069, + ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1070, + ERR_VOICE_CHAT_PLAYER_SILENCED = 1071, + ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1072, + ERR_VOICE_CHAT_DISABLED = 1073, + ERR_NO_PVP_REWARD = 1074, + ERR_CLAIMED_PVP_REWARD = 1075, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1076, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1077, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1078, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1079, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1080, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1081, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1082, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1083, + ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1084, + ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1085, + ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1086, + ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1087, + ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1088, + ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1089, + ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1090, + ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1091, + ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1092, + ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1093, + ERR_SOCKETING_REQUIRES_TINKER_GEM = 1094, + ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1095, + ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1096, + ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1097, + ERR_SOCKETING_REQUIRES_FRAGRANCE_GEM = 1098, + ERR_SOCKETING_FRAGRANCE_GEM_ONLY_IN_FRAGRANCESLOT = 1099, + ERR_SOCKETING_REQUIRES_SINGING_THUNDER_GEM = 1100, + ERR_SOCKETING_SINGINGTHUNDER_GEM_ONLY_IN_SINGINGTHUNDERSLOT = 1101, + ERR_SOCKETING_REQUIRES_SINGING_SEA_GEM = 1102, + ERR_SOCKETING_SINGINGSEA_GEM_ONLY_IN_SINGINGSEASLOT = 1103, + ERR_SOCKETING_REQUIRES_SINGING_WIND_GEM = 1104, + ERR_SOCKETING_SINGINGWIND_GEM_ONLY_IN_SINGINGWINDSLOT = 1105, + ERR_LEVEL_LINKING_RESULT_LINKED = 1106, + ERR_LEVEL_LINKING_RESULT_UNLINKED = 1107, + ERR_CLUB_FINDER_ERROR_POST_CLUB = 1108, + ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1109, + ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1110, + ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1111, + ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1112, + ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1113, + ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1114, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1115, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1116, + ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1117, + ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1118, + ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1119, + ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1120, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1121, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1122, + ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1123, + ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1124, + ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1125, + ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1126, + ERR_SOULBIND_INVALID_CONDUIT = 1127, + ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1128, + ERR_SOULBIND_INVALID_TALENT = 1129, + ERR_SOULBIND_DUPLICATE_CONDUIT = 1130, + ERR_ACTIVATE_SOULBIND_S = 1131, + ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1132, + ERR_CANT_USE_PROFANITY = 1133, + ERR_NOT_IN_PET_BATTLE = 1134, + ERR_NOT_IN_NPE = 1135, + ERR_NO_SPEC = 1136, + ERR_NO_DOMINATIONSHARD_OVERWRITE = 1137, + ERR_USE_WEEKLY_REWARDS_DISABLED = 1138, + ERR_CROSS_FACTION_GROUP_JOINED = 1139, + ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1140, + ERR_EQUIPABLESPELLS_SLOTS_FULL = 1141, + ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1142, + ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1143, + ERR_NO_SOULBOUND_ITEM_IN_ACCOUNT_BANK = 1144, + ERR_NO_REFUNDABLE_ITEM_IN_ACCOUNT_BANK = 1145, + ERR_CANT_DELETE_IN_ACCOUNT_BANK = 1146, + ERR_NO_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1147, + ERR_NO_OPEN_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1148, + ERR_CANT_TRADE_ACCOUNT_ITEM = 1149, + ERR_NO_ACCOUNT_INVENTORY_LOCK = 1150, + ERR_BANK_NOT_ACCESSIBLE = 1151, + ERR_TOO_MANY_ACCOUNT_BANK_TABS = 1152, + ERR_ACCOUNT_BANK_TAB_NOT_UNLOCKED = 1153, + ERR_ACCOUNT_MONEY_LOCKED = 1154, + ERR_BANK_TAB_INVALID_NAME = 1155, + ERR_BANK_TAB_INVALID_TEXT = 1156, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1157, + ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1158, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1159, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1160, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1161, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1162, + ERR_WOW_LABS_SET_WOW_LABS_AREA_ID_FAILED = 1163, + ERR_PLUNDERSTORM_CANNOT_QUEUE = 1164, + ERR_TARGET_IS_SELF_FOUND_CANNOT_TRADE = 1165, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_TRADE = 1166, + ERR_MAIL_RECEPIENT_IS_SELF_FOUND_CANNOT_RECEIVE_MAIL = 1167, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_SEND_MAIL = 1168, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_USE_AUCTION_HOUSE = 1169, + ERR_MAIL_TARGET_CANNOT_RECEIVE_MAIL = 1170, + ERR_REMIX_INVALID_TRANSFER_REQUEST = 1171, + ERR_CURRENCY_TRANSFER_INVALID_CHARACTER = 1172, + ERR_CURRENCY_TRANSFER_INVALID_CURRENCY = 1173, + ERR_CURRENCY_TRANSFER_INSUFFICIENT_CURRENCY = 1174, + ERR_CURRENCY_TRANSFER_MAX_QUANTITY = 1175, + ERR_CURRENCY_TRANSFER_NO_VALID_SOURCE = 1176, + ERR_CURRENCY_TRANSFER_CHARACTER_LOGGED_IN = 1177, + ERR_CURRENCY_TRANSFER_SERVER_ERROR = 1178, + ERR_CURRENCY_TRANSFER_UNMET_REQUIREMENTS = 1179, + ERR_CURRENCY_TRANSFER_TRANSACTION_IN_PROGRESS = 1180, }; enum class MountResult : uint32 diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 34f18b0002734..a820dcda90c2f 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -345,12 +345,13 @@ void WorldPackets::Auth::EnterEncryptedMode::ShutdownEncryption() EnterEncryptedModeSigner.reset(); } -std::array constexpr EnableEncryptionSeed = { 0x90, 0x9C, 0xD0, 0x50, 0x5A, 0x2C, 0x14, 0xDD, 0x5C, 0x2C, 0xC0, 0x64, 0x14, 0xF3, 0xFE, 0xC9 }; +std::array constexpr EnableEncryptionSeed = { 0x66, 0xBE, 0x29, 0x79, 0xEF, 0xF2, 0xD5, 0xB5, 0x61, 0x53, 0xF6, 0x5F, 0x45, 0xAE, 0x81, 0xCB, + 0x32, 0xEC, 0x94, 0xEC, 0x75, 0xB3, 0x5F, 0x44, 0x6A, 0x63, 0x43, 0x67, 0x17, 0x20, 0x44, 0x34 }; std::array constexpr EnableEncryptionContext = { 0xA7, 0x1F, 0xB6, 0x9B, 0xC9, 0x7C, 0xDD, 0x96, 0xE9, 0xBB, 0xB8, 0x21, 0x39, 0x8D, 0x5A, 0xD4 }; WorldPacket const* WorldPackets::Auth::EnterEncryptedMode::Write() { - std::array toSign = Trinity::Crypto::HMAC_SHA256::GetDigestOf(EncryptionKey, + std::array toSign = Trinity::Crypto::HMAC_SHA512::GetDigestOf(EncryptionKey, std::array{uint8(Enabled ? 1 : 0)}, EnableEncryptionSeed); diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 2c9dd00c37475..257f93fbc1756 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -69,7 +69,7 @@ namespace WorldPackets WorldPacket const* Write() override; - std::array Challenge = { }; + std::array Challenge = { }; std::array DosChallenge = { }; uint8 DosZeroBits = 0; }; @@ -88,7 +88,7 @@ namespace WorldPackets uint32 RegionID = 0; uint32 BattlegroupID = 0; uint32 RealmID = 0; - std::array LocalChallenge; + std::array LocalChallenge; std::array Digest; uint64 DosResponse = 0; std::string RealmJoinTicket; @@ -269,7 +269,7 @@ namespace WorldPackets uint64 DosResponse = 0; uint64 Key = 0; - std::array LocalChallenge; + std::array LocalChallenge; std::array Digest; private: @@ -302,14 +302,14 @@ namespace WorldPackets static bool InitializeEncryption(); static void ShutdownEncryption(); - EnterEncryptedMode(std::array const& encryptionKey, bool enabled) : ServerPacket(SMSG_ENTER_ENCRYPTED_MODE, 256 + 1), + EnterEncryptedMode(std::array const& encryptionKey, bool enabled) : ServerPacket(SMSG_ENTER_ENCRYPTED_MODE, 256 + 1), EncryptionKey(encryptionKey), Enabled(enabled) { } WorldPacket const* Write() override; - std::array const& EncryptionKey; + std::array const& EncryptionKey; bool Enabled = false; }; } diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index 22024120928b6..56a7b25437f5d 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -67,6 +67,7 @@ WorldPacket const* WorldPackets::Channel::ChannelNotifyJoined::Write() _worldPacket.WriteBits(_Channel.length(), 7); _worldPacket.WriteBits(ChannelWelcomeMsg.length(), 11); _worldPacket << uint32(_ChannelFlags); + _worldPacket << uint8(Unknown1107); _worldPacket << int32(ChatChannelID); _worldPacket << uint64(InstanceID); _worldPacket << ChannelGUID; diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h index 2e7f834cf27e7..ec9701029fa35 100644 --- a/src/server/game/Server/Packets/ChannelPackets.h +++ b/src/server/game/Server/Packets/ChannelPackets.h @@ -81,6 +81,7 @@ namespace WorldPackets uint32 _ChannelFlags = 0; ///< @see enum ChannelFlags std::string _Channel; ///< Channel Name ObjectGuid ChannelGUID; + uint8 Unknown1107 = 0; }; class ChannelNotifyLeft final : public ServerPacket diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 701560c91835c..9acbfe3654ca3 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -620,6 +620,47 @@ WorldPacket const* LogoutResponse::Write() return &_worldPacket; } +ByteBuffer& operator<<(ByteBuffer& data, GameModeData const& gameModeData) +{ + data << int32(gameModeData.Unknown_1107_0); + data << gameModeData.Guid; + data << uint8(gameModeData.GameMode); + data << int32(gameModeData.MapID); + data << uint8(gameModeData.Unknown_1107_1); + data << uint8(gameModeData.Unknown_1107_2); + data << uint8(gameModeData.Unknown_1107_3); + data << uint32(gameModeData.Customizations.size()); + data << uint32(gameModeData.Unknown_1107_4.size()); + + for (ChrCustomizationChoice const& customization : gameModeData.Customizations) + data << customization; + + for (ChrCustomizationChoice const& customization : gameModeData.Unknown_1107_4) + data << customization; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, SwitchGameModeData const& switchGameModeData) +{ + data << Bits<1>(switchGameModeData.IsFastLogin); + data << switchGameModeData.Current; + data << switchGameModeData.New; + + return data; +} + +WorldPacket const* LogoutComplete::Write() +{ + _worldPacket << OptionalInit(SwitchGameMode); + _worldPacket.FlushBits(); + + if (SwitchGameMode) + _worldPacket << *SwitchGameMode; + + return &_worldPacket; +} + void LoadingScreenNotify::Read() { _worldPacket >> MapID; diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 186b0abf96932..8313523d56a4f 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -603,12 +603,34 @@ namespace WorldPackets bool Instant = false; }; + struct GameModeData + { + int32 Unknown_1107_0 = 0; + ObjectGuid Guid; + uint8 GameMode = 0; + int32 MapID = 0; + uint8 Unknown_1107_1 = 0; + uint8 Unknown_1107_2 = 0; + uint8 Unknown_1107_3 = 0; + Array Customizations; + Array Unknown_1107_4; + }; + + struct SwitchGameModeData + { + bool IsFastLogin = false; + GameModeData Current; + GameModeData New; + }; + class LogoutComplete final : public ServerPacket { public: - LogoutComplete() : ServerPacket(SMSG_LOGOUT_COMPLETE, 0) { } + LogoutComplete() : ServerPacket(SMSG_LOGOUT_COMPLETE, 1) { } - WorldPacket const* Write() override { return &_worldPacket; } + WorldPacket const* Write() override; + + std::unique_ptr SwitchGameMode; }; class LogoutCancel final : public ClientPacket diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp index adb44e0cc640d..d3d715aec5e8e 100644 --- a/src/server/game/Server/Packets/LFGPackets.cpp +++ b/src/server/game/Server/Packets/LFGPackets.cpp @@ -343,7 +343,7 @@ ByteBuffer& operator<<(ByteBuffer& data, LfgBootInfo const& lfgBootInfo) data << Bits<1>(lfgBootInfo.VotePassed); data << Bits<1>(lfgBootInfo.MyVoteCompleted); data << Bits<1>(lfgBootInfo.MyVote); - data << SizedString::BitsSize<8>(lfgBootInfo.Reason); + data << SizedString::BitsSize<9>(lfgBootInfo.Reason); data << lfgBootInfo.Target; data << uint32(lfgBootInfo.TotalVotes); data << uint32(lfgBootInfo.BootVotes); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index eb97e77cb2850..182e378135a70 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -317,16 +317,13 @@ WorldPacket const* WorldPackets::Misc::Weather::Write() void WorldPackets::Misc::StandStateChange::Read() { - uint32 state; - _worldPacket >> state; - - StandState = UnitStandStateType(state); + _worldPacket >> As(StandState); } WorldPacket const* WorldPackets::Misc::StandStateUpdate::Write() { - _worldPacket << uint32(AnimKitID); _worldPacket << uint8(State); + _worldPacket << uint32(AnimKitID); return &_worldPacket; } @@ -350,7 +347,7 @@ WorldPacket const* WorldPackets::Misc::PlayerBound::Write() WorldPacket const* WorldPackets::Misc::StartMirrorTimer::Write() { - _worldPacket << int32(Timer); + _worldPacket << uint8(Timer); _worldPacket << int32(Value); _worldPacket << int32(MaxValue); _worldPacket << int32(Scale); @@ -363,7 +360,7 @@ WorldPacket const* WorldPackets::Misc::StartMirrorTimer::Write() WorldPacket const* WorldPackets::Misc::PauseMirrorTimer::Write() { - _worldPacket << int32(Timer); + _worldPacket << uint8(Timer); _worldPacket.WriteBit(Paused); _worldPacket.FlushBits(); @@ -372,7 +369,7 @@ WorldPacket const* WorldPackets::Misc::PauseMirrorTimer::Write() WorldPacket const* WorldPackets::Misc::StopMirrorTimer::Write() { - _worldPacket << int32(Timer); + _worldPacket << uint8(Timer); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 0630c794ca8da..cbcb02006bbcc 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -448,15 +448,15 @@ namespace WorldPackets class StartMirrorTimer final : public ServerPacket { public: - StartMirrorTimer() : ServerPacket(SMSG_START_MIRROR_TIMER, 21) { } - StartMirrorTimer(int32 timer, int32 value, int32 maxValue, int32 scale, int32 spellID, bool paused) : - ServerPacket(SMSG_START_MIRROR_TIMER, 21), Scale(scale), MaxValue(maxValue), Timer(timer), SpellID(spellID), Value(value), Paused(paused) { } + StartMirrorTimer() : ServerPacket(SMSG_START_MIRROR_TIMER, 1 + 4 + 4 + 4 + 4 + 1) { } + StartMirrorTimer(uint8 timer, int32 value, int32 maxValue, int32 scale, int32 spellID, bool paused) : + ServerPacket(SMSG_START_MIRROR_TIMER, 1 + 4 + 4 + 4 + 4 + 1), Timer(timer), Scale(scale), MaxValue(maxValue), SpellID(spellID), Value(value), Paused(paused) { } WorldPacket const* Write() override; + uint8 Timer = 0; int32 Scale = 0; int32 MaxValue = 0; - int32 Timer = 0; int32 SpellID = 0; int32 Value = 0; bool Paused = false; @@ -465,24 +465,24 @@ namespace WorldPackets class PauseMirrorTimer final : public ServerPacket { public: - PauseMirrorTimer() : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 5) { } - PauseMirrorTimer(int32 timer, bool paused) : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 5), Paused(paused), Timer(timer) { } + PauseMirrorTimer() : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 1 + 1) { } + PauseMirrorTimer(uint8 timer, bool paused) : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 1 + 1), Timer(timer), Paused(paused) { } WorldPacket const* Write() override; + uint8 Timer = 0; bool Paused = true; - int32 Timer = 0; }; class StopMirrorTimer final : public ServerPacket { public: - StopMirrorTimer() : ServerPacket(SMSG_STOP_MIRROR_TIMER, 4) { } - StopMirrorTimer(int32 timer) : ServerPacket(SMSG_STOP_MIRROR_TIMER, 4), Timer(timer) { } + StopMirrorTimer() : ServerPacket(SMSG_STOP_MIRROR_TIMER, 1) { } + StopMirrorTimer(uint8 timer) : ServerPacket(SMSG_STOP_MIRROR_TIMER, 1), Timer(timer) { } WorldPacket const* Write() override; - int32 Timer = 0; + uint8 Timer = 0; }; class ExplorationExperience final : public ServerPacket diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp index e5b53bc367073..8fa44a2c76159 100644 --- a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp @@ -26,12 +26,13 @@ ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem) data << int32(perksVendorItem.BattlePetSpeciesID); data << int32(perksVendorItem.TransmogSetID); data << int32(perksVendorItem.ItemModifiedAppearanceID); - data << int32(perksVendorItem.Field_14); - data << int32(perksVendorItem.Field_18); + data << int32(perksVendorItem.TransmogIllusionID); + data << int32(perksVendorItem.ToyID); data << int32(perksVendorItem.Price); + data << int32(perksVendorItem.OriginalPrice); data << perksVendorItem.AvailableUntil; data << Bits<1>(perksVendorItem.Disabled); - data << Bits<1>(perksVendorItem.Field_41); + data << Bits<1>(perksVendorItem.DoesNotExpire); data.FlushBits(); return data; diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.h b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h index cd676002bdb82..f76f4403394af 100644 --- a/src/server/game/Server/Packets/PerksProgramPacketsCommon.h +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h @@ -29,12 +29,13 @@ struct PerksVendorItem int32 BattlePetSpeciesID = 0; int32 TransmogSetID = 0; int32 ItemModifiedAppearanceID = 0; - int32 Field_14 = 0; - int32 Field_18 = 0; + int32 TransmogIllusionID = 0; + int32 ToyID = 0; int32 Price = 0; + int32 OriginalPrice = 0; Timestamp<> AvailableUntil; bool Disabled = false; - bool Field_41 = false; + bool DoesNotExpire = false; }; ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem); diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index 1ef27cd755563..6340e46f778fd 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -23,7 +23,8 @@ WorldPacket const* WorldPackets::Pet::PetSpells::Write() _worldPacket << uint16(_CreatureFamily); _worldPacket << uint16(Specialization); _worldPacket << uint32(TimeLimit); - _worldPacket << uint16(CommandState | (Flag << 16)); + _worldPacket << uint8(CommandState); + _worldPacket << uint8(Flag); _worldPacket << uint8(ReactState); _worldPacket.append(ActionButtons.data(), ActionButtons.size()); _worldPacket << uint32(Actions.size()); @@ -204,7 +205,8 @@ WorldPacket const* WorldPackets::Pet::PetTameFailure::Write() WorldPacket const* WorldPackets::Pet::PetMode::Write() { _worldPacket << PetGUID; - _worldPacket << uint16(CommandState | Flag << 8); + _worldPacket << uint8(CommandState); + _worldPacket << uint8(Flag); _worldPacket << uint8(ReactState); return &_worldPacket; diff --git a/src/server/game/Server/Packets/PetitionPackets.cpp b/src/server/game/Server/Packets/PetitionPackets.cpp index 680813dab69d7..f713cad4688d6 100644 --- a/src/server/game/Server/Packets/PetitionPackets.cpp +++ b/src/server/game/Server/Packets/PetitionPackets.cpp @@ -44,11 +44,11 @@ ByteBuffer& operator<<(ByteBuffer& data, PetitionInfo const& petitionInfo) data << int32(petitionInfo.StaticType); data << uint32(petitionInfo.Muid); - data << SizedString::BitsSize<7>(petitionInfo.Title); + data << SizedString::BitsSize<8>(petitionInfo.Title); data << SizedString::BitsSize<12>(petitionInfo.BodyText); for (std::string const& choiceText : petitionInfo.Choicetext) - data << SizedString::BitsSize<6>(choiceText); + data << SizedString::BitsSize<7>(choiceText); data.FlushBits(); diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 849017d287ea1..b380f4e9fc555 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -44,6 +44,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GameRuleValuePair const& gameRuleValue) { data << int32(gameRuleValue.Rule); data << int32(gameRuleValue.Value); + data << float(gameRuleValue.ValueF); return data; } @@ -142,20 +143,20 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(SellAllJunkEnabled); _worldPacket << Bits<1>(GroupFinderEnabled); - _worldPacket << Bits<1>(LfdEnabled); - _worldPacket << Bits<1>(LfrEnabled); _worldPacket << Bits<1>(IsPremadeGroupEnabled); - _worldPacket << Bits<1>(PremadeGroupsEnabled); + _worldPacket << Bits<1>(UseActivePlayerDataQuestCompleted); _worldPacket << Bits<1>(false); // unused 10.2.7 _worldPacket << Bits<1>(GuildEventsEditsEnabled); _worldPacket << Bits<1>(GuildTradeSkillsEnabled); - _worldPacket << BitsSize<7>(Unknown1027); _worldPacket << Bits<1>(BNSendWhisperUseV2Services); - _worldPacket << Bits<1>(BNSendGameDataUseV2Services); _worldPacket << Bits<1>(IsAccountCurrencyTransferEnabled); + _worldPacket << Bits<1>(false); // unused 11.0.7 + _worldPacket << Bits<1>(LobbyMatchmakerQueueFromMainlineEnabled); + _worldPacket << Bits<1>(CanSendLobbyMatchmakerPartyCustomizations); + _worldPacket.FlushBits(); { diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index f29aa60be77e7..55ce924388a5d 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -49,6 +49,7 @@ namespace WorldPackets { int32 Rule = 0; int32 Value = 0; + float ValueF = 0.0f; }; class FeatureSystemStatus final : public ServerPacket @@ -170,15 +171,15 @@ namespace WorldPackets bool IsPlayerContentTrackingEnabled = false; bool SellAllJunkEnabled = false; bool GroupFinderEnabled = true; // classic only - bool LfdEnabled = true; // classic only - bool LfrEnabled = true; // classic only bool IsPremadeGroupEnabled = true; // classic only - bool PremadeGroupsEnabled = true; + bool UseActivePlayerDataQuestCompleted = false; ///< Uses ActivePlayerData::QuestCompleted (legacy) to store completed quest bits instead of ActivePlayerData::BitVectors[9] bool GuildEventsEditsEnabled = true; bool GuildTradeSkillsEnabled = true; - bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService - bool BNSendGameDataUseV2Services = true; ///< BNSendGameData will send to v2.NotificationService instead of v1.NotificationService + bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService + bool BNSendGameDataUseV2Services = true; ///< BNSendGameData will send to v2.NotificationService instead of v1.NotificationService bool IsAccountCurrencyTransferEnabled = false; + bool LobbyMatchmakerQueueFromMainlineEnabled = false; + bool CanSendLobbyMatchmakerPartyCustomizations = false; SocialQueueConfig QuickJoinConfig; SquelchInfo Squelch; diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 5d79e1864123e..7d5ad918d4603 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -53,10 +53,14 @@ WorldPacket const* GMTicketCaseStatus::Write() _worldPacket << SizedString::BitsSize<11>(c.Url); _worldPacket << SizedString::BitsSize<10>(c.WaitTimeOverrideMessage); + _worldPacket << SizedCString::BitsSize<24>(c.Title); + _worldPacket << SizedCString::BitsSize<24>(c.Description); _worldPacket.FlushBits(); _worldPacket << SizedString::Data(c.Url); _worldPacket << SizedString::Data(c.WaitTimeOverrideMessage); + _worldPacket << SizedCString::Data(c.Title); + _worldPacket << SizedCString::Data(c.Description); } return &_worldPacket; diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index 815539e981f78..f8560ce5e91c3 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -74,6 +74,8 @@ namespace WorldPackets int32 WaitTimeOverrideMinutes = 0; std::string Url; std::string WaitTimeOverrideMessage; + std::string Title; + std::string Description; }; GMTicketCaseStatus() : ServerPacket(SMSG_GM_TICKET_CASE_STATUS, 12) { } diff --git a/src/server/game/Server/Packets/VignettePackets.cpp b/src/server/game/Server/Packets/VignettePackets.cpp index 10ca888ccbc63..87975edd068d5 100644 --- a/src/server/game/Server/Packets/VignettePackets.cpp +++ b/src/server/game/Server/Packets/VignettePackets.cpp @@ -27,6 +27,9 @@ ByteBuffer& operator<<(ByteBuffer& data, VignetteData const& vignetteData) data << uint32(vignetteData.ZoneID); data << uint32(vignetteData.WMOGroupID); data << uint32(vignetteData.WMODoodadPlacementID); + data << float(vignetteData.HealthPercent); + data << uint16(vignetteData.RecommendedGroupSizeMin); + data << uint16(vignetteData.RecommendedGroupSizeMax); return data; } diff --git a/src/server/game/Server/Packets/VignettePackets.h b/src/server/game/Server/Packets/VignettePackets.h index 8708f0df408d1..7fe4c079b469c 100644 --- a/src/server/game/Server/Packets/VignettePackets.h +++ b/src/server/game/Server/Packets/VignettePackets.h @@ -32,6 +32,9 @@ struct VignetteData uint32 ZoneID = 0; uint32 WMOGroupID = 0; uint32 WMODoodadPlacementID = 0; + float HealthPercent = 1.0f; + uint16 RecommendedGroupSizeMin = 0; + uint16 RecommendedGroupSizeMax = 0; }; struct VignetteDataSet diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 40c527873413a..920f4b79e5a12 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -151,6 +151,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_ACCOUNT_BANK_DEPOSIT_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACCOUNT_BANK_WITHDRAW_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACTIVATE_SOULBIND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACTIVATE_TAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode); DEFINE_HANDLER(CMSG_ADDON_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -575,11 +576,14 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_LIVE_REGION_KEY_BINDINGS_COPY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOADING_SCREEN_NOTIFY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleLoadScreenOpcode); DEFINE_HANDLER(CMSG_LOAD_SELECTED_TROPHY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_PARTY_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -774,9 +778,11 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_QUERY_QUEST_ITEM_USABILITY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_QUERY_REALM_NAME, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleQueryRealmName); DEFINE_HANDLER(CMSG_QUERY_SCENARIO_POI, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryScenarioPOI); + DEFINE_HANDLER(CMSG_QUERY_SELECTED_WOW_LABS_AREA, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryTimeOpcode); DEFINE_HANDLER(CMSG_QUERY_TREASURE_PICKER, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryTreasurePicker); DEFINE_HANDLER(CMSG_QUERY_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleVoidStorageQuery); + DEFINE_HANDLER(CMSG_QUERY_WOW_LABS_AREA_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept); DEFINE_HANDLER(CMSG_QUEST_GIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverAcceptQuestOpcode); DEFINE_HANDLER(CMSG_QUEST_GIVER_CHOOSE_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverChooseRewardOpcode); @@ -845,6 +851,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_REQUEST_REALM_GUILD_MASTER_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_SCHEDULED_PVP_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_STABLED_PETS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestStabledPets); + DEFINE_HANDLER(CMSG_REQUEST_STORE_FRONT_INFO_UPDATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestVehicleExit); DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestVehicleNextSeat); DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestVehiclePrevSeat); @@ -867,6 +874,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleScenePlaybackComplete); DEFINE_HANDLER(CMSG_SCENE_TRIGGER_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSceneTriggerEvent); DEFINE_HANDLER(CMSG_SEAMLESS_TRANSFER_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_SELECT_WOW_LABS_AREA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SELF_RES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode); DEFINE_HANDLER(CMSG_SELL_ALL_JUNK_ITEMS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSellItemOpcode); @@ -1040,6 +1048,10 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_STORE_CURRENCY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_STORE_FRONT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_STORE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_TOY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_TRANSMOG_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1226,6 +1238,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_JOINED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_LEFT, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_CHECK_UPGRADE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_LOGIN_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_OBJECT_TEST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1615,6 +1628,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_DISABLED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_EXPAND_SEARCH_PROMPT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_JOIN_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_APPLICANT_LIST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1647,6 +1661,8 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_PARTY_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_SET_TIME_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_VERIFY_WORLD, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1876,6 +1892,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_CLEAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_DISPLAY_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CONDITION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_END_OF_MATCH_DETAILS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_HIDE_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -2164,6 +2181,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TURN_IN_PETITION_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TUTORIAL_FLAGS, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_ACTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -2226,10 +2244,13 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_QUEST_UPDATE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_SERVER_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_ENTITLEMENT_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_AREA_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_PARTY_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_SET_AREA_ID_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_SET_PREDICTION_CIRCLE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_LABS_SET_SELECTED_AREA_ID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_AWARDED_FROM_CURRENCY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_GAIN_ABORTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_GAIN_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 609b80f1b8344..8c451399268c2 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -40,37 +40,38 @@ constexpr uint16 UNKNOWN_OPCODE = 0xBADD; // special marker value for uninitia enum OpcodeClient : uint32 { - CMSG_ABANDON_NPE_RESPONSE = 0x300292, + CMSG_ABANDON_NPE_RESPONSE = 0x300295, CMSG_ACCEPT_GUILD_INVITE = 0x350029, - CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x300253, - CMSG_ACCEPT_SOCIAL_CONTRACT = 0x35016E, + CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x300256, + CMSG_ACCEPT_SOCIAL_CONTRACT = 0x350173, CMSG_ACCEPT_TRADE = 0x300004, CMSG_ACCEPT_WARGAME_INVITE = 0x35000C, - CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3002D4, - CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3002D5, - CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x35015E, - CMSG_ACTIVATE_SOULBIND = 0x300281, + CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3002D7, + CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3002D8, + CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x35015F, + CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x3500BE, + CMSG_ACTIVATE_SOULBIND = 0x300284, CMSG_ACTIVATE_TAXI = 0x31003D, CMSG_ADDON_LIST = 0x350004, - CMSG_ADD_ACCOUNT_COSMETIC = 0x30016B, + CMSG_ADD_ACCOUNT_COSMETIC = 0x30016D, CMSG_ADD_BATTLENET_FRIEND = 0x350084, - CMSG_ADD_FRIEND = 0x3500F9, - CMSG_ADD_IGNORE = 0x3500FD, - CMSG_ADD_TOY = 0x30016A, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3000B0, - CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x300284, - CMSG_ADVENTURE_MAP_START_QUEST = 0x300226, + CMSG_ADD_FRIEND = 0x3500FA, + CMSG_ADD_IGNORE = 0x3500FE, + CMSG_ADD_TOY = 0x30016C, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3000B2, + CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x300287, + CMSG_ADVENTURE_MAP_START_QUEST = 0x300228, CMSG_ALTER_APPEARANCE = 0x31008E, CMSG_AREA_SPIRIT_HEALER_QUERY = 0x310042, CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x310043, - CMSG_AREA_TRIGGER = 0x300083, + CMSG_AREA_TRIGGER = 0x300085, CMSG_ARTIFACT_ADD_POWER = 0x300054, CMSG_ARTIFACT_SET_APPEARANCE = 0x300056, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3000BB, - CMSG_ATTACK_STOP = 0x300119, - CMSG_ATTACK_SWING = 0x300118, - CMSG_AUCTIONABLE_TOKEN_SELL = 0x35010F, - CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x350110, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3000BD, + CMSG_ATTACK_STOP = 0x30011B, + CMSG_ATTACK_SWING = 0x30011A, + CMSG_AUCTIONABLE_TOKEN_SELL = 0x350110, + CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x350111, CMSG_AUCTION_BROWSE_QUERY = 0x310062, CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x31006A, CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x310069, @@ -86,47 +87,47 @@ enum OpcodeClient : uint32 CMSG_AUCTION_REPLICATE_ITEMS = 0x310060, CMSG_AUCTION_SELL_COMMODITY = 0x31006B, CMSG_AUCTION_SELL_ITEM = 0x31005E, - CMSG_AUCTION_SET_FAVORITE_ITEM = 0x35015F, + CMSG_AUCTION_SET_FAVORITE_ITEM = 0x350160, CMSG_AUTH_CONTINUED_SESSION = 0x360002, CMSG_AUTH_SESSION = 0x360001, CMSG_AUTOBANK_ITEM = 0x320003, CMSG_AUTOBANK_REAGENT = 0x320005, CMSG_AUTOSTORE_BANK_ITEM = 0x320002, CMSG_AUTOSTORE_BANK_REAGENT = 0x320004, - CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3002DF, + CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3002E1, CMSG_AUTO_EQUIP_ITEM = 0x320006, CMSG_AUTO_EQUIP_ITEM_SLOT = 0x32000B, CMSG_AUTO_GUILD_BANK_ITEM = 0x310049, CMSG_AUTO_STORE_BAG_ITEM = 0x320007, CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x310052, - CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x30024F, - CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x300231, - CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x300251, - CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x300250, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x300252, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x300233, + CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x300254, + CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x300253, CMSG_BANKER_ACTIVATE = 0x310045, CMSG_BATTLEFIELD_LEAVE = 0x30001D, CMSG_BATTLEFIELD_LIST = 0x300028, CMSG_BATTLEFIELD_PORT = 0x3100C4, - CMSG_BATTLEMASTER_HELLO = 0x300188, + CMSG_BATTLEMASTER_HELLO = 0x30018A, CMSG_BATTLEMASTER_JOIN = 0x3100BB, CMSG_BATTLEMASTER_JOIN_ARENA = 0x3100BC, CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3100C2, CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3100BE, CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3100BD, CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3100BF, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x3500FC, - CMSG_BATTLENET_REQUEST = 0x35011D, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3500F6, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x35013C, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3500F5, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3500EC, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x350162, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3500E4, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3500E5, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x350135, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x350131, - CMSG_BATTLE_PAY_START_PURCHASE = 0x3500F4, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x35011B, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x3500FD, + CMSG_BATTLENET_REQUEST = 0x35011E, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3500F7, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x35013D, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3500F6, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3500ED, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x350163, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3500E5, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3500E6, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x350136, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x350132, + CMSG_BATTLE_PAY_START_PURCHASE = 0x3500F5, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x35011C, CMSG_BATTLE_PET_CLEAR_FANFARE = 0x2A0002, CMSG_BATTLE_PET_DELETE_PET = 0x35004F, CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x350050, @@ -136,14 +137,14 @@ enum OpcodeClient : uint32 CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x350057, CMSG_BATTLE_PET_SET_FLAGS = 0x35005A, CMSG_BATTLE_PET_SUMMON = 0x350053, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x30008D, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x30008C, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x30008F, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x30008E, CMSG_BEGIN_TRADE = 0x300001, CMSG_BINDER_ACTIVATE = 0x310044, CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3100CC, CMSG_BLACK_MARKET_OPEN = 0x3100CA, CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3100CB, - CMSG_BONUS_ROLL = 0x300252, + CMSG_BONUS_ROLL = 0x300255, CMSG_BUG_REPORT = 0x3500AF, CMSG_BUSY_TRADE = 0x300002, CMSG_BUY_ACCOUNT_BANK_TAB = 0x310121, @@ -151,7 +152,7 @@ enum OpcodeClient : uint32 CMSG_BUY_BANK_SLOT = 0x310046, CMSG_BUY_ITEM = 0x310035, CMSG_BUY_REAGENT_BANK = 0x310047, - CMSG_CAGE_BATTLE_PET = 0x3000A0, + CMSG_CAGE_BATTLE_PET = 0x3000A2, CMSG_CALENDAR_ADD_EVENT = 0x3500A7, CMSG_CALENDAR_COMMUNITY_INVITE = 0x35009B, CMSG_CALENDAR_COMPLAIN = 0x3500A3, @@ -169,30 +170,30 @@ enum OpcodeClient : uint32 CMSG_CALENDAR_UPDATE_EVENT = 0x3500A8, CMSG_CANCEL_AURA = 0x300058, CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x310080, - CMSG_CANCEL_CAST = 0x300171, - CMSG_CANCEL_CHANNELLING = 0x300132, - CMSG_CANCEL_GROWTH_AURA = 0x30013A, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3000C7, + CMSG_CANCEL_CAST = 0x300173, + CMSG_CANCEL_CHANNELLING = 0x300134, + CMSG_CANCEL_GROWTH_AURA = 0x30013C, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3000C9, CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x300057, - CMSG_CANCEL_MOUNT_AURA = 0x30014D, + CMSG_CANCEL_MOUNT_AURA = 0x30014F, CMSG_CANCEL_QUEUED_SPELL = 0x300029, CMSG_CANCEL_TEMP_ENCHANTMENT = 0x31008B, CMSG_CANCEL_TRADE = 0x300006, CMSG_CAN_DUEL = 0x35008C, - CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x350130, - CMSG_CAST_SPELL = 0x30016E, + CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x350131, + CMSG_CAST_SPELL = 0x300170, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x2D0002, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x30020A, - CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x30020B, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3001EB, - CMSG_CHANGE_REALM_TICKET = 0x350122, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x30020C, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x30020D, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3001ED, + CMSG_CHANGE_REALM_TICKET = 0x350123, CMSG_CHANGE_SUB_GROUP = 0x350076, - CMSG_CHARACTER_CHECK_UPGRADE = 0x3500EF, - CMSG_CHARACTER_RENAME_REQUEST = 0x3500EA, - CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3500ED, - CMSG_CHARACTER_UPGRADE_START = 0x3500EE, + CMSG_CHARACTER_CHECK_UPGRADE = 0x3500F0, + CMSG_CHARACTER_RENAME_REQUEST = 0x3500EB, + CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3500EE, + CMSG_CHARACTER_UPGRADE_START = 0x3500EF, CMSG_CHAR_CUSTOMIZE = 0x3500B6, - CMSG_CHAR_DELETE = 0x3500C7, + CMSG_CHAR_DELETE = 0x3500C8, CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3500BC, CMSG_CHAT_ADDON_MESSAGE = 0x2C0026, CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2C0027, @@ -234,36 +235,36 @@ enum OpcodeClient : uint32 CMSG_CHAT_REPORT_IGNORED = 0x2C0003, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x2C0006, CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x35006F, - CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x30010A, - CMSG_CHOICE_RESPONSE = 0x300176, - CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x300280, - CMSG_CLAIM_WEEKLY_REWARD = 0x30025D, - CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3002B9, - CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3000BF, - CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3002BB, - CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3002B8, - CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3002B7, - CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3002BC, - CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3000BE, + CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x30010C, + CMSG_CHOICE_RESPONSE = 0x300178, + CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x300283, + CMSG_CLAIM_WEEKLY_REWARD = 0x300260, + CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3002BC, + CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3000C1, + CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3002BE, + CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3002BB, + CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3002BA, + CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3002BF, + CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3000C0, CMSG_CLEAR_NEW_APPEARANCE = 0x2A0005, CMSG_CLEAR_RAID_MARKER = 0x300050, CMSG_CLEAR_TRADE_ITEM = 0x300008, CMSG_CLIENT_PORT_GRAVEYARD = 0x3100C6, CMSG_CLOSE_INTERACTION = 0x310024, - CMSG_CLOSE_QUEST_CHOICE = 0x300177, - CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x300288, - CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3002BD, - CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x350147, - CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x350145, - CMSG_CLUB_FINDER_POST = 0x350142, - CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x350149, - CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x350143, - CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x350144, - CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x350148, - CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x35014A, - CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x350146, - CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x350165, - CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x35011F, + CMSG_CLOSE_QUEST_CHOICE = 0x300179, + CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x30028B, + CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3002C0, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x350148, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x350146, + CMSG_CLUB_FINDER_POST = 0x350143, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x35014A, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x350144, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x350145, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x350149, + CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x35014B, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x350147, + CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x350166, + CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x350120, CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x35005D, CMSG_COMMENTATOR_ENABLE = 0x35001C, CMSG_COMMENTATOR_ENTER_INSTANCE = 0x350020, @@ -271,29 +272,29 @@ enum OpcodeClient : uint32 CMSG_COMMENTATOR_GET_MAP_INFO = 0x35001D, CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35001F, CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35001E, - CMSG_COMMENTATOR_SPECTATE = 0x350163, + CMSG_COMMENTATOR_SPECTATE = 0x350164, CMSG_COMMENTATOR_START_WARGAME = 0x35001B, - CMSG_COMMERCE_TOKEN_GET_COUNT = 0x35010D, - CMSG_COMMERCE_TOKEN_GET_LOG = 0x350117, - CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x35010E, + CMSG_COMMERCE_TOKEN_GET_COUNT = 0x35010E, + CMSG_COMMERCE_TOKEN_GET_LOG = 0x350118, + CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x35010F, CMSG_COMPLAINT = 0x350096, CMSG_COMPLETE_CINEMATIC = 0x3100E4, CMSG_COMPLETE_MOVIE = 0x310076, CMSG_CONFIRM_ARTIFACT_RESPEC = 0x300055, - CMSG_CONFIRM_RESPEC_WIPE = 0x3000C1, + CMSG_CONFIRM_RESPEC_WIPE = 0x3000C3, CMSG_CONNECT_TO_FAILED = 0x350000, - CMSG_CONSUMABLE_TOKEN_BUY = 0x350112, - CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x350113, - CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x350111, - CMSG_CONSUMABLE_TOKEN_REDEEM = 0x350115, - CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x350116, - CMSG_CONTENT_TRACKING_START_TRACKING = 0x3002CD, - CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3002CE, + CMSG_CONSUMABLE_TOKEN_BUY = 0x350113, + CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x350114, + CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x350112, + CMSG_CONSUMABLE_TOKEN_REDEEM = 0x350116, + CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x350117, + CMSG_CONTENT_TRACKING_START_TRACKING = 0x3002D0, + CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3002D1, CMSG_CONTRIBUTION_CONTRIBUTE = 0x3100F9, CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3100FA, CMSG_CONVERSATION_CINEMATIC_READY = 0x3100E6, CMSG_CONVERSATION_LINE_STARTED = 0x3100E5, - CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3002DE, + CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3002E0, CMSG_CONVERT_RAID = 0x350078, CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x31010D, CMSG_CRAFTING_ORDER_CANCEL = 0x310119, @@ -308,16 +309,16 @@ enum OpcodeClient : uint32 CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x31011B, CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x31011C, CMSG_CREATE_CHARACTER = 0x35006E, - CMSG_CREATE_SHIPMENT = 0x3001D4, + CMSG_CREATE_SHIPMENT = 0x3001D6, CMSG_DB_QUERY_BULK = 0x350010, CMSG_DECLINE_GUILD_INVITES = 0x3100B8, CMSG_DECLINE_PETITION = 0x3100D3, CMSG_DELETE_EQUIPMENT_SET = 0x3100A4, CMSG_DELVE_TELEPORT_OUT = 0x310128, - CMSG_DEL_FRIEND = 0x3500FA, - CMSG_DEL_IGNORE = 0x3500FE, - CMSG_DEPOSIT_REAGENT_BANK = 0x300214, - CMSG_DESTROY_ITEM = 0x300164, + CMSG_DEL_FRIEND = 0x3500FB, + CMSG_DEL_IGNORE = 0x3500FF, + CMSG_DEPOSIT_REAGENT_BANK = 0x300216, + CMSG_DESTROY_ITEM = 0x300166, CMSG_DF_BOOT_PLAYER_VOTE = 0x350044, CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x350036, CMSG_DF_GET_JOIN_STATUS = 0x350042, @@ -330,65 +331,65 @@ enum OpcodeClient : uint32 CMSG_DF_TELEPORT = 0x350045, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x33005E, CMSG_DISMISS_CRITTER = 0x310092, - CMSG_DO_COUNTDOWN = 0x350141, - CMSG_DO_MASTER_LOOT_ROLL = 0x3000C6, + CMSG_DO_COUNTDOWN = 0x350142, + CMSG_DO_MASTER_LOOT_ROLL = 0x3000C8, CMSG_DO_READY_CHECK = 0x35005E, CMSG_DUEL_RESPONSE = 0x31007B, - CMSG_EJECT_PASSENGER = 0x3000FF, + CMSG_EJECT_PASSENGER = 0x300101, CMSG_EMOTE = 0x3100E0, CMSG_ENABLE_NAGLE = 0x360007, CMSG_ENABLE_TAXI_NODE = 0x31003B, - CMSG_ENGINE_SURVEY = 0x35010C, + CMSG_ENGINE_SURVEY = 0x35010D, CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x360003, CMSG_ENUM_CHARACTERS = 0x350014, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x350106, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x350107, CMSG_FAR_SIGHT = 0x310081, CMSG_GAME_EVENT_DEBUG_DISABLE = 0x30005C, CMSG_GAME_EVENT_DEBUG_ENABLE = 0x30005B, CMSG_GAME_OBJ_REPORT_USE = 0x310088, CMSG_GAME_OBJ_USE = 0x310087, - CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3001CF, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3001B5, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3001A2, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x300206, - CMSG_GARRISON_COMPLETE_MISSION = 0x3001F8, - CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3001D0, - CMSG_GARRISON_GENERATE_RECRUITS = 0x3001B8, - CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3001C7, - CMSG_GARRISON_GET_MAP_DATA = 0x3001CE, - CMSG_GARRISON_GET_MISSION_REWARD = 0x30022A, - CMSG_GARRISON_LEARN_TALENT = 0x3001C3, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3001FA, - CMSG_GARRISON_PURCHASE_BUILDING = 0x30019E, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3001BA, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x3001EF, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3001B6, - CMSG_GARRISON_RENAME_FOLLOWER = 0x3001B7, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x30019D, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3001D2, - CMSG_GARRISON_RESEARCH_TALENT = 0x3001BB, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x30019F, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3001B3, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3001AB, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3001B9, - CMSG_GARRISON_SOCKET_TALENT = 0x300295, - CMSG_GARRISON_START_MISSION = 0x3001F7, - CMSG_GARRISON_SWAP_BUILDINGS = 0x3001A3, + CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3001D1, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3001B7, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3001A4, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x300208, + CMSG_GARRISON_COMPLETE_MISSION = 0x3001FA, + CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3001D2, + CMSG_GARRISON_GENERATE_RECRUITS = 0x3001BA, + CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3001C9, + CMSG_GARRISON_GET_MAP_DATA = 0x3001D0, + CMSG_GARRISON_GET_MISSION_REWARD = 0x30022C, + CMSG_GARRISON_LEARN_TALENT = 0x3001C5, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3001FC, + CMSG_GARRISON_PURCHASE_BUILDING = 0x3001A0, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3001BC, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x3001F1, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3001B8, + CMSG_GARRISON_RENAME_FOLLOWER = 0x3001B9, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x30019F, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3001D4, + CMSG_GARRISON_RESEARCH_TALENT = 0x3001BD, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3001A1, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3001B5, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3001AD, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3001BB, + CMSG_GARRISON_SOCKET_TALENT = 0x300298, + CMSG_GARRISON_START_MISSION = 0x3001F9, + CMSG_GARRISON_SWAP_BUILDINGS = 0x3001A5, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x350013, - CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3500DF, - CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x35015D, - CMSG_GET_GARRISON_INFO = 0x300198, + CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3500E0, + CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x35015E, + CMSG_GET_GARRISON_INFO = 0x30019A, CMSG_GET_ITEM_PURCHASE_DATA = 0x3100CE, - CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3001D3, - CMSG_GET_MIRROR_IMAGE_DATA = 0x300168, + CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3001D5, + CMSG_GET_MIRROR_IMAGE_DATA = 0x30016A, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35001A, - CMSG_GET_RAF_ACCOUNT_INFO = 0x35014B, - CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x350188, - CMSG_GET_REMAINING_GAME_TIME = 0x350114, - CMSG_GET_TROPHY_LIST = 0x3001E8, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x350108, - CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x350119, - CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x35011A, + CMSG_GET_RAF_ACCOUNT_INFO = 0x35014C, + CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x35018D, + CMSG_GET_REMAINING_GAME_TIME = 0x350115, + CMSG_GET_TROPHY_LIST = 0x3001EA, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x350109, + CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x35011A, + CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x35011B, CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3500BA, CMSG_GM_TICKET_GET_CASE_STATUS = 0x3500B9, CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3500B8, @@ -430,79 +431,82 @@ enum OpcodeClient : uint32 CMSG_GUILD_REPLACE_GUILD_MASTER = 0x2E001F, CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x2E0010, CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x2E0011, - CMSG_GUILD_SET_GUILD_MASTER = 0x3500F1, + CMSG_GUILD_SET_GUILD_MASTER = 0x3500F2, CMSG_GUILD_SET_MEMBER_NOTE = 0x2E0013, CMSG_GUILD_SET_RANK_PERMISSIONS = 0x2E0008, CMSG_GUILD_SHIFT_RANK = 0x2E0007, CMSG_GUILD_UPDATE_INFO_TEXT = 0x2E0016, CMSG_GUILD_UPDATE_MOTD_TEXT = 0x2E0015, CMSG_HEARTH_AND_RESURRECT = 0x3100A0, - CMSG_HIDE_QUEST_CHOICE = 0x300178, + CMSG_HIDE_QUEST_CHOICE = 0x30017A, CMSG_HOTFIX_REQUEST = 0x350011, CMSG_IGNORE_TRADE = 0x300003, CMSG_INITIATE_ROLE_POLL = 0x350006, CMSG_INITIATE_TRADE = 0x300000, CMSG_INSPECT = 0x3100C8, CMSG_INSTANCE_LOCK_RESPONSE = 0x3100A5, - CMSG_ISLAND_QUEUE = 0x300259, + CMSG_ISLAND_QUEUE = 0x30025C, CMSG_ITEM_PURCHASE_REFUND = 0x3100CF, - CMSG_ITEM_TEXT_QUERY = 0x300207, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x30008A, + CMSG_ITEM_TEXT_QUERY = 0x300209, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x30008C, CMSG_JOIN_RATED_BATTLEGROUND = 0x300023, CMSG_KEEP_ALIVE = 0x3500A9, - CMSG_KEYBOUND_OVERRIDE = 0x3000DC, + CMSG_KEYBOUND_OVERRIDE = 0x3000DE, CMSG_LATENCY_REPORT = 0x36000D, CMSG_LEARN_PVP_TALENTS = 0x3100F8, CMSG_LEARN_TALENTS = 0x3100F6, CMSG_LEAVE_GROUP = 0x350073, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x30008B, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x30008D, CMSG_LFG_LIST_APPLY_TO_GROUP = 0x35003B, CMSG_LFG_LIST_CANCEL_APPLICATION = 0x35003C, CMSG_LFG_LIST_DECLINE_APPLICANT = 0x35003D, CMSG_LFG_LIST_GET_STATUS = 0x350039, CMSG_LFG_LIST_INVITE_APPLICANT = 0x35003E, CMSG_LFG_LIST_INVITE_RESPONSE = 0x35003F, - CMSG_LFG_LIST_JOIN = 0x30024D, + CMSG_LFG_LIST_JOIN = 0x300250, CMSG_LFG_LIST_LEAVE = 0x350038, CMSG_LFG_LIST_SEARCH = 0x35003A, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x30024E, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x300251, CMSG_LIST_INVENTORY = 0x310032, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3500E2, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x3500E1, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3500E0, - CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3500E3, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3500E3, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x3500E2, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3500E1, + CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3500E4, CMSG_LOADING_SCREEN_NOTIFY = 0x350024, - CMSG_LOAD_SELECTED_TROPHY = 0x3001E9, - CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x350167, - CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x350175, - CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x35016A, - CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x350166, - CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x350169, - CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x350168, - CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x35016B, - CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x35016C, + CMSG_LOAD_SELECTED_TROPHY = 0x3001EB, + CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x350171, + CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x350168, + CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x35017A, + CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x35016F, + CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x35016B, + CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x350167, + CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x35016A, + CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x350170, + CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x350169, + CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x35016C, + CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x35016D, CMSG_LOGOUT_CANCEL = 0x310071, CMSG_LOGOUT_INSTANT = 0x310072, CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x310120, CMSG_LOGOUT_REQUEST = 0x310070, CMSG_LOG_DISCONNECT = 0x360005, CMSG_LOG_STREAMING_ERROR = 0x360009, - CMSG_LOOT_ITEM = 0x3000C4, - CMSG_LOOT_MONEY = 0x3000C3, - CMSG_LOOT_RELEASE = 0x3000C8, - CMSG_LOOT_ROLL = 0x3000C9, - CMSG_LOOT_UNIT = 0x3000C2, - CMSG_LOW_LEVEL_RAID1 = 0x3500CB, + CMSG_LOOT_ITEM = 0x3000C6, + CMSG_LOOT_MONEY = 0x3000C5, + CMSG_LOOT_RELEASE = 0x3000CA, + CMSG_LOOT_ROLL = 0x3000CB, + CMSG_LOOT_UNIT = 0x3000C4, + CMSG_LOW_LEVEL_RAID1 = 0x3500CC, CMSG_LOW_LEVEL_RAID2 = 0x3100AC, CMSG_MAIL_CREATE_TEXT_ITEM = 0x3100DA, - CMSG_MAIL_DELETE = 0x3000DE, + CMSG_MAIL_DELETE = 0x3000E0, CMSG_MAIL_GET_LIST = 0x3100D5, CMSG_MAIL_MARK_AS_READ = 0x3100D9, CMSG_MAIL_RETURN_TO_SENDER = 0x35007F, CMSG_MAIL_TAKE_ITEM = 0x3100D7, CMSG_MAIL_TAKE_MONEY = 0x3100D6, - CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3000E0, - CMSG_MASTER_LOOT_ITEM = 0x3000C5, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3000E2, + CMSG_MASTER_LOOT_ITEM = 0x3000C7, CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x310053, CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x310050, CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x31004E, @@ -510,7 +514,7 @@ enum OpcodeClient : uint32 CMSG_MISSILE_TRAJECTORY_COLLISION = 0x300034, CMSG_MOUNT_CLEAR_FANFARE = 0x2A0003, CMSG_MOUNT_SET_FAVORITE = 0x35005C, - CMSG_MOUNT_SPECIAL_ANIM = 0x30014E, + CMSG_MOUNT_SPECIAL_ANIM = 0x300150, CMSG_MOVE_ADD_IMPULSE_ACK = 0x33006D, CMSG_MOVE_APPLY_INERTIA_ACK = 0x33006B, CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x330031, @@ -601,47 +605,47 @@ enum OpcodeClient : uint32 CMSG_MOVE_UPDATE_FALL_SPEED = 0x330036, CMSG_MOVE_WATER_WALK_ACK = 0x330039, CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x2D0001, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x300080, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x300082, CMSG_NEXT_CINEMATIC_CAMERA = 0x3100E3, CMSG_OBJECT_UPDATE_FAILED = 0x30002A, CMSG_OBJECT_UPDATE_RESCUED = 0x30002B, - CMSG_OFFER_PETITION = 0x30027F, + CMSG_OFFER_PETITION = 0x300282, CMSG_OPENING_CINEMATIC = 0x3100E2, - CMSG_OPEN_ITEM = 0x300208, - CMSG_OPEN_MISSION_NPC = 0x3001C9, - CMSG_OPEN_SHIPMENT_NPC = 0x3001D1, - CMSG_OPEN_TRADESKILL_NPC = 0x3001DC, + CMSG_OPEN_ITEM = 0x30020A, + CMSG_OPEN_MISSION_NPC = 0x3001CB, + CMSG_OPEN_SHIPMENT_NPC = 0x3001D3, + CMSG_OPEN_TRADESKILL_NPC = 0x3001DE, CMSG_OPT_OUT_OF_LOOT = 0x31008F, CMSG_OVERRIDE_SCREEN_FLASH = 0x3100B9, CMSG_PARTY_INVITE = 0x350030, CMSG_PARTY_INVITE_RESPONSE = 0x350032, CMSG_PARTY_UNINVITE = 0x350071, - CMSG_PERFORM_ITEM_INTERACTION = 0x3000E8, - CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3002A7, + CMSG_PERFORM_ITEM_INTERACTION = 0x3000EA, + CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3002AA, CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x2A0011, - CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3002A9, - CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3002AA, - CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3002AB, - CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3002A8, + CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3002AC, + CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3002AD, + CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3002AE, + CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3002AB, CMSG_PETITION_BUY = 0x31005B, - CMSG_PETITION_RENAME_GUILD = 0x3500F2, + CMSG_PETITION_RENAME_GUILD = 0x3500F3, CMSG_PETITION_SHOW_LIST = 0x31005A, CMSG_PETITION_SHOW_SIGNATURES = 0x31005C, CMSG_PET_ABANDON = 0x31001D, CMSG_PET_ABANDON_BY_NUMBER = 0x31001E, CMSG_PET_ACTION = 0x31001B, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x30008F, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x300091, CMSG_PET_BATTLE_INPUT = 0x35006B, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3000DD, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x30008E, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3000DF, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x300090, CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x35006C, - CMSG_PET_BATTLE_REQUEST_PVP = 0x300088, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x300089, - CMSG_PET_BATTLE_REQUEST_WILD = 0x300086, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x300090, - CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x300087, + CMSG_PET_BATTLE_REQUEST_PVP = 0x30008A, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x30008B, + CMSG_PET_BATTLE_REQUEST_WILD = 0x300088, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x300092, + CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x300089, CMSG_PET_CANCEL_AURA = 0x31001F, - CMSG_PET_CAST_SPELL = 0x30016D, + CMSG_PET_CAST_SPELL = 0x30016F, CMSG_PET_RENAME = 0x3500AE, CMSG_PET_SET_ACTION = 0x31001A, CMSG_PET_SPELL_AUTOCAST = 0x310020, @@ -650,31 +654,33 @@ enum OpcodeClient : uint32 CMSG_PLAYER_LOGIN = 0x350016, CMSG_PUSH_QUEST_TO_PARTY = 0x310030, CMSG_PVP_LOG_DATA = 0x300026, - CMSG_QUERY_BATTLE_PET_NAME = 0x300141, + CMSG_QUERY_BATTLE_PET_NAME = 0x300143, CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x35008A, CMSG_QUERY_CORPSE_TRANSPORT = 0x35008B, CMSG_QUERY_COUNTDOWN_TIMER = 0x300053, - CMSG_QUERY_CREATURE = 0x30013B, - CMSG_QUERY_GAME_OBJECT = 0x30013C, - CMSG_QUERY_GARRISON_PET_NAME = 0x300142, + CMSG_QUERY_CREATURE = 0x30013D, + CMSG_QUERY_GAME_OBJECT = 0x30013E, + CMSG_QUERY_GARRISON_PET_NAME = 0x300144, CMSG_QUERY_GUILD_INFO = 0x3500B4, CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x310099, CMSG_QUERY_NEXT_MAIL_TIME = 0x3100D8, - CMSG_QUERY_NPC_TEXT = 0x30013D, - CMSG_QUERY_PAGE_TEXT = 0x30013F, - CMSG_QUERY_PETITION = 0x300143, - CMSG_QUERY_PET_NAME = 0x300140, + CMSG_QUERY_NPC_TEXT = 0x30013F, + CMSG_QUERY_PAGE_TEXT = 0x300141, + CMSG_QUERY_PETITION = 0x300145, + CMSG_QUERY_PET_NAME = 0x300142, CMSG_QUERY_PLAYER_NAMES = 0x36000E, CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x36000C, CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x36000B, CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x30001F, - CMSG_QUERY_QUEST_INFO = 0x30013E, + CMSG_QUERY_QUEST_INFO = 0x300140, CMSG_QUERY_QUEST_ITEM_USABILITY = 0x300020, CMSG_QUERY_REALM_NAME = 0x3500B3, CMSG_QUERY_SCENARIO_POI = 0x350080, + CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3002E5, CMSG_QUERY_TIME = 0x31006F, - CMSG_QUERY_TREASURE_PICKER = 0x30022D, + CMSG_QUERY_TREASURE_PICKER = 0x30022F, CMSG_QUERY_VOID_STORAGE = 0x30004C, + CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3002E6, CMSG_QUEST_CONFIRM_ACCEPT = 0x31002F, CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x310029, CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x31002B, @@ -686,117 +692,119 @@ enum OpcodeClient : uint32 CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x31002E, CMSG_QUEST_GIVER_STATUS_QUERY = 0x31002D, CMSG_QUEST_LOG_REMOVE_QUEST = 0x3100CD, - CMSG_QUEST_POI_QUERY = 0x3500D9, + CMSG_QUEST_POI_QUERY = 0x3500DA, CMSG_QUEST_PUSH_RESULT = 0x310031, - CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x300271, - CMSG_QUEST_SESSION_REQUEST_START = 0x300270, - CMSG_QUEST_SESSION_REQUEST_STOP = 0x350156, + CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x300274, + CMSG_QUEST_SESSION_REQUEST_START = 0x300273, + CMSG_QUEST_SESSION_REQUEST_STOP = 0x350157, CMSG_QUEUED_MESSAGES_END = 0x360008, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x35012E, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x35012D, - CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x35015B, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x35012C, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x35012B, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x35012F, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x35012E, + CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x35015C, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x35012D, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x35012C, CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x31009D, - CMSG_RAF_CLAIM_NEXT_REWARD = 0x35014C, - CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x35014E, - CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x35014D, + CMSG_RAF_CLAIM_NEXT_REWARD = 0x35014D, + CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x35014F, + CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x35014E, CMSG_RANDOM_ROLL = 0x35007E, CMSG_READY_CHECK_RESPONSE = 0x35005F, - CMSG_READ_ITEM = 0x300209, + CMSG_READ_ITEM = 0x30020B, CMSG_RECLAIM_CORPSE = 0x310074, - CMSG_REMOVE_NEW_ITEM = 0x300230, - CMSG_REMOVE_RAF_RECRUIT = 0x35014F, + CMSG_REMOVE_NEW_ITEM = 0x300232, + CMSG_REMOVE_RAF_RECRUIT = 0x350150, CMSG_REORDER_CHARACTERS = 0x350015, CMSG_REPAIR_ITEM = 0x310085, - CMSG_REPLACE_TROPHY = 0x3001EA, + CMSG_REPLACE_TROPHY = 0x3001EC, CMSG_REPOP_REQUEST = 0x3100C5, - CMSG_REPORT_CLIENT_VARIABLES = 0x350128, - CMSG_REPORT_ENABLED_ADDONS = 0x350127, - CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x350129, + CMSG_REPORT_CLIENT_VARIABLES = 0x350129, + CMSG_REPORT_ENABLED_ADDONS = 0x350128, + CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x35012A, CMSG_REPORT_PVP_PLAYER_AFK = 0x31008D, - CMSG_REPORT_SERVER_LAG = 0x300269, - CMSG_REPORT_STUCK_IN_COMBAT = 0x30026A, - CMSG_REQUEST_ACCOUNT_DATA = 0x3500BF, - CMSG_REQUEST_AREA_POI_UPDATE = 0x30022F, + CMSG_REPORT_SERVER_LAG = 0x30026C, + CMSG_REPORT_STUCK_IN_COMBAT = 0x30026D, + CMSG_REQUEST_ACCOUNT_DATA = 0x3500C0, + CMSG_REQUEST_AREA_POI_UPDATE = 0x300231, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x350008, CMSG_REQUEST_CEMETERY_LIST = 0x300021, CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3500B5, - CMSG_REQUEST_COVENANT_CALLINGS = 0x30025B, + CMSG_REQUEST_COVENANT_CALLINGS = 0x30025E, CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3100C9, CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x2A0018, - CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x300294, + CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x300297, CMSG_REQUEST_GUILD_PARTY_STATE = 0x300052, CMSG_REQUEST_GUILD_REWARDS_LIST = 0x300051, - CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x30026B, - CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x300179, - CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3000B4, - CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3000B5, - CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3002E2, + CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x30026E, + CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x30017B, + CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3000B6, + CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3000B7, + CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3002E4, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x350023, CMSG_REQUEST_PARTY_MEMBER_STATS = 0x35007D, CMSG_REQUEST_PET_INFO = 0x310021, - CMSG_REQUEST_PLAYED_TIME = 0x300146, + CMSG_REQUEST_PLAYED_TIME = 0x300148, CMSG_REQUEST_PVP_REWARDS = 0x30003F, - CMSG_REQUEST_RAID_INFO = 0x3500F3, + CMSG_REQUEST_RAID_INFO = 0x3500F4, CMSG_REQUEST_RATED_PVP_INFO = 0x35000F, - CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x35018B, + CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x350190, CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x300040, CMSG_REQUEST_STABLED_PETS = 0x310022, - CMSG_REQUEST_VEHICLE_EXIT = 0x3000FA, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3000FC, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3000FB, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3000FD, - CMSG_REQUEST_WEEKLY_REWARDS = 0x30025E, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x30022E, - CMSG_RESET_CHALLENGE_MODE = 0x3000B2, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3000B3, + CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x2A001D, + CMSG_REQUEST_VEHICLE_EXIT = 0x3000FC, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3000FE, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3000FD, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3000FF, + CMSG_REQUEST_WEEKLY_REWARDS = 0x300261, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x300230, + CMSG_RESET_CHALLENGE_MODE = 0x3000B4, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3000B5, CMSG_RESET_INSTANCES = 0x350092, CMSG_RESURRECT_RESPONSE = 0x3500AD, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x3001EC, - CMSG_RIDE_VEHICLE_INTERACT = 0x3000FE, - CMSG_RPE_RESET_CHARACTER = 0x350178, - CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x350172, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x3001EE, + CMSG_RIDE_VEHICLE_INTERACT = 0x300100, + CMSG_RPE_RESET_CHARACTER = 0x35017D, + CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x350177, CMSG_SAVE_CUF_PROFILES = 0x300035, CMSG_SAVE_EQUIPMENT_SET = 0x3100A3, - CMSG_SAVE_GUILD_EMBLEM = 0x30017D, - CMSG_SAVE_PERSONAL_EMBLEM = 0x30017E, - CMSG_SCENE_PLAYBACK_CANCELED = 0x3000D9, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x3000D8, - CMSG_SCENE_TRIGGER_EVENT = 0x3000DA, - CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3002D0, + CMSG_SAVE_GUILD_EMBLEM = 0x30017F, + CMSG_SAVE_PERSONAL_EMBLEM = 0x300180, + CMSG_SCENE_PLAYBACK_CANCELED = 0x3000DB, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x3000DA, + CMSG_SCENE_TRIGGER_EVENT = 0x3000DC, + CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3002D3, + CMSG_SELECT_WOW_LABS_AREA = 0x3002E7, CMSG_SELF_RES = 0x3100D0, CMSG_SELL_ALL_JUNK_ITEMS = 0x310034, CMSG_SELL_ITEM = 0x310033, - CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x350121, - CMSG_SEND_CONTACT_LIST = 0x3500F8, + CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x350122, + CMSG_SEND_CONTACT_LIST = 0x3500F9, CMSG_SEND_MAIL = 0x350026, - CMSG_SEND_PING_UNIT = 0x3002D2, - CMSG_SEND_PING_WORLD_POINT = 0x3002D3, + CMSG_SEND_PING_UNIT = 0x3002D5, + CMSG_SEND_PING_WORLD_POINT = 0x3002D6, CMSG_SEND_TEXT_EMOTE = 0x310018, - CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3500C6, - CMSG_SETUP_WARBAND_GROUPS = 0x350186, - CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3000DF, + CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3500C7, + CMSG_SETUP_WARBAND_GROUPS = 0x35018B, + CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3000E1, CMSG_SET_ACTION_BAR_TOGGLES = 0x3100D1, CMSG_SET_ACTION_BUTTON = 0x350060, CMSG_SET_ACTIVE_MOVER = 0x330059, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x30018B, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x30018D, CMSG_SET_ASSISTANT_LEADER = 0x350079, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x30020C, - CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x30020D, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x30020E, - CMSG_SET_CONTACT_NOTES = 0x3500FB, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x30020E, + CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x30020F, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x300210, + CMSG_SET_CONTACT_NOTES = 0x3500FC, CMSG_SET_CURRENCY_FLAGS = 0x300013, - CMSG_SET_DIFFICULTY_ID = 0x3000DB, + CMSG_SET_DIFFICULTY_ID = 0x3000DD, CMSG_SET_DUNGEON_DIFFICULTY = 0x3500AC, - CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x300135, + CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x300137, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x350046, - CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x35012F, + CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x350130, CMSG_SET_FACTION_AT_WAR = 0x310077, CMSG_SET_FACTION_INACTIVE = 0x310079, CMSG_SET_FACTION_NOT_AT_WAR = 0x310078, CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x300063, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x300210, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x300212, CMSG_SET_LOOT_METHOD = 0x350072, CMSG_SET_LOOT_SPECIALIZATION = 0x3100DE, CMSG_SET_PARTY_ASSIGNMENT = 0x35007B, @@ -805,36 +813,36 @@ enum OpcodeClient : uint32 CMSG_SET_PET_SLOT = 0x300011, CMSG_SET_PLAYER_DECLINED_NAMES = 0x3500B2, CMSG_SET_PREFERRED_CEMETERY = 0x300022, - CMSG_SET_PVP = 0x300182, - CMSG_SET_RAID_DIFFICULTY = 0x350104, + CMSG_SET_PVP = 0x300184, + CMSG_SET_RAID_DIFFICULTY = 0x350105, CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x350047, CMSG_SET_ROLE = 0x350005, CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3500B0, CMSG_SET_SELECTION = 0x3100C7, CMSG_SET_SHEATHED = 0x310019, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x30020F, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x300211, CMSG_SET_TAXI_BENCHMARK_MODE = 0x31008C, - CMSG_SET_TITLE = 0x30014C, + CMSG_SET_TITLE = 0x30014E, CMSG_SET_TRADE_CURRENCY = 0x30000A, CMSG_SET_TRADE_GOLD = 0x300009, CMSG_SET_TRADE_ITEM = 0x300007, - CMSG_SET_USING_PARTY_GARRISON = 0x3001CB, - CMSG_SET_WAR_MODE = 0x300183, + CMSG_SET_USING_PARTY_GARRISON = 0x3001CD, + CMSG_SET_WAR_MODE = 0x300185, CMSG_SET_WATCHED_FACTION = 0x31007A, - CMSG_SHOW_TRADE_SKILL = 0x3500EB, + CMSG_SHOW_TRADE_SKILL = 0x3500EC, CMSG_SIGN_PETITION = 0x3100D2, CMSG_SILENCE_PARTY_TALKER = 0x35007C, - CMSG_SOCIAL_CONTRACT_REQUEST = 0x35016D, + CMSG_SOCIAL_CONTRACT_REQUEST = 0x350172, CMSG_SOCKET_GEMS = 0x310084, - CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3002D6, - CMSG_SORT_BAGS = 0x300211, - CMSG_SORT_BANK_BAGS = 0x300212, - CMSG_SORT_REAGENT_BANK_BAGS = 0x300213, - CMSG_SPAWN_TRACKING_UPDATE = 0x300161, - CMSG_SPECTATE_CHANGE = 0x3002C9, + CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3002D9, + CMSG_SORT_BAGS = 0x300213, + CMSG_SORT_BANK_BAGS = 0x300214, + CMSG_SORT_REAGENT_BANK_BAGS = 0x300215, + CMSG_SPAWN_TRACKING_UPDATE = 0x300163, + CMSG_SPECTATE_CHANGE = 0x3002CC, CMSG_SPELL_CLICK = 0x310026, - CMSG_SPELL_EMPOWER_RELEASE = 0x300133, - CMSG_SPELL_EMPOWER_RESTART = 0x300134, + CMSG_SPELL_EMPOWER_RELEASE = 0x300135, + CMSG_SPELL_EMPOWER_RESTART = 0x300136, CMSG_SPIRIT_HEALER_ACTIVATE = 0x310041, CMSG_SPLIT_GUILD_BANK_ITEM = 0x310054, CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x310051, @@ -845,8 +853,8 @@ enum OpcodeClient : uint32 CMSG_START_SPECTATOR_WAR_GAME = 0x35000B, CMSG_START_WAR_GAME = 0x35000A, CMSG_STORE_GUILD_BANK_ITEM = 0x31004A, - CMSG_SUBMIT_USER_FEEDBACK = 0x3500BE, - CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x300289, + CMSG_SUBMIT_USER_FEEDBACK = 0x3500BF, + CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x30028C, CMSG_SUMMON_RESPONSE = 0x350094, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x350070, CMSG_SURRENDER_ARENA = 0x30001E, @@ -858,7 +866,7 @@ enum OpcodeClient : uint32 CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x31004B, CMSG_SWAP_SUB_GROUPS = 0x350077, CMSG_SWAP_VOID_ITEM = 0x30004E, - CMSG_TABARD_VENDOR_ACTIVATE = 0x30017F, + CMSG_TABARD_VENDOR_ACTIVATE = 0x300181, CMSG_TALK_TO_GOSSIP = 0x310023, CMSG_TAXI_NODE_STATUS_QUERY = 0x31003A, CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x31003C, @@ -868,166 +876,170 @@ enum OpcodeClient : uint32 CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x33005C, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x33005B, CMSG_TOGGLE_DIFFICULTY = 0x350081, - CMSG_TOGGLE_PVP = 0x300181, + CMSG_TOGGLE_PVP = 0x300183, CMSG_TOTEM_DESTROYED = 0x310091, CMSG_TOY_CLEAR_FANFARE = 0x2A0004, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x30022C, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x30022E, CMSG_TRAINER_BUY_SPELL = 0x310040, CMSG_TRAINER_LIST = 0x31003F, - CMSG_TRAITS_COMMIT_CONFIG = 0x3002B1, - CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3002AF, - CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3002E0, + CMSG_TRAITS_COMMIT_CONFIG = 0x3002B4, + CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3002B2, + CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3002E2, CMSG_TRANSMOGRIFY_ITEMS = 0x300041, CMSG_TURN_IN_PETITION = 0x3100D4, - CMSG_TUTORIAL = 0x350105, - CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x30025A, + CMSG_TUTORIAL = 0x350106, + CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x30025D, CMSG_UNACCEPT_TRADE = 0x300005, - CMSG_UNDELETE_CHARACTER = 0x350107, + CMSG_UNDELETE_CHARACTER = 0x350108, CMSG_UNLEARN_SKILL = 0x31007E, CMSG_UNLEARN_SPECIALIZATION = 0x30004F, CMSG_UNLOCK_VOID_STORAGE = 0x30004B, - CMSG_UPDATE_AADC_STATUS = 0x350161, + CMSG_UPDATE_AADC_STATUS = 0x350162, CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x310127, - CMSG_UPDATE_ACCOUNT_DATA = 0x3500C0, - CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x300170, + CMSG_UPDATE_ACCOUNT_DATA = 0x3500C1, + CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x300172, CMSG_UPDATE_CLIENT_SETTINGS = 0x35008E, - CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3001DD, + CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3001DF, CMSG_UPDATE_MISSILE_TRAJECTORY = 0x330060, CMSG_UPDATE_RAID_TARGET = 0x35007A, - CMSG_UPDATE_SPELL_VISUAL = 0x30016F, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x35011C, - CMSG_UPGRADE_GARRISON = 0x300193, - CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x300287, + CMSG_UPDATE_SPELL_VISUAL = 0x300171, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x35011D, + CMSG_UPGRADE_GARRISON = 0x300195, + CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x30028A, CMSG_USED_FOLLOW = 0x300030, - CMSG_USE_CRITTER_ITEM = 0x300104, + CMSG_USE_CRITTER_ITEM = 0x300106, CMSG_USE_EQUIPMENT_SET = 0x320001, - CMSG_USE_ITEM = 0x300169, - CMSG_USE_TOY = 0x30016C, - CMSG_VAS_CHECK_TRANSFER_OK = 0x350134, - CMSG_VAS_GET_QUEUE_MINUTES = 0x350133, - CMSG_VAS_GET_SERVICE_STATUS = 0x350132, + CMSG_USE_ITEM = 0x30016B, + CMSG_USE_TOY = 0x30016E, + CMSG_VAS_CHECK_TRANSFER_OK = 0x350135, + CMSG_VAS_GET_QUEUE_MINUTES = 0x350134, + CMSG_VAS_GET_SERVICE_STATUS = 0x350133, CMSG_VIOLENCE_LEVEL = 0x30002E, - CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x350138, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x350139, - CMSG_VOICE_CHAT_LOGIN = 0x350137, + CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x350139, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x35013A, + CMSG_VOICE_CHAT_LOGIN = 0x350138, CMSG_VOID_STORAGE_TRANSFER = 0x30004D, CMSG_WARDEN3_DATA = 0x350018, CMSG_WHO = 0x3500AB, CMSG_WHO_IS = 0x3500AA, - CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3002CC, + CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3002CF, CMSG_WORLD_PORT_RESPONSE = 0x350025, CMSG_WRAP_ITEM = 0x320000, }; -inline constexpr std::size_t NUM_CMSG_OPCODES = 1699; +inline constexpr std::size_t NUM_CMSG_OPCODES = 1713; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) { uint32 idInGroup = opcode & 0xFFFF; switch (opcode >> 16) { - case 0x2A: return idInGroup < 26 ? idInGroup + 0 : -1; - case 0x2C: return idInGroup < 47 ? idInGroup + 26 : -1; - case 0x2D: return idInGroup < 3 ? idInGroup + 73 : -1; - case 0x2E: return idInGroup < 33 ? idInGroup + 76 : -1; - case 0x30: return idInGroup < 739 ? idInGroup + 109 : -1; - case 0x31: return idInGroup < 298 ? idInGroup + 848 : -1; - case 0x32: return idInGroup < 12 ? idInGroup + 1146 : -1; - case 0x33: return idInGroup < 130 ? idInGroup + 1158 : -1; - case 0x35: return idInGroup < 396 ? idInGroup + 1288 : -1; - case 0x36: return idInGroup < 15 ? idInGroup + 1684 : -1; + case 0x2A: return idInGroup < 30 ? idInGroup + 0 : -1; + case 0x2C: return idInGroup < 47 ? idInGroup + 30 : -1; + case 0x2D: return idInGroup < 3 ? idInGroup + 77 : -1; + case 0x2E: return idInGroup < 33 ? idInGroup + 80 : -1; + case 0x30: return idInGroup < 744 ? idInGroup + 113 : -1; + case 0x31: return idInGroup < 298 ? idInGroup + 857 : -1; + case 0x32: return idInGroup < 12 ? idInGroup + 1155 : -1; + case 0x33: return idInGroup < 130 ? idInGroup + 1167 : -1; + case 0x35: return idInGroup < 401 ? idInGroup + 1297 : -1; + case 0x36: return idInGroup < 15 ? idInGroup + 1698 : -1; default: return -1; } } enum OpcodeServer : uint32 { - SMSG_ABORT_NEW_WORLD = 0x37002F, - SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x370334, - SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x370339, - SMSG_ACCOUNT_COSMETIC_ADDED = 0x3702F7, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x3702DE, - SMSG_ACCOUNT_DATA_TIMES = 0x3701A0, - SMSG_ACCOUNT_EXPORT_RESPONSE = 0x370325, - SMSG_ACCOUNT_MOUNT_REMOVED = 0x370046, - SMSG_ACCOUNT_MOUNT_UPDATE = 0x370045, - SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x3702F6, - SMSG_ACCOUNT_TOY_UPDATE = 0x370047, - SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x37004B, - SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x37004A, - SMSG_ACHIEVEMENT_DELETED = 0x37017E, - SMSG_ACHIEVEMENT_EARNED = 0x3700D8, + SMSG_ABORT_NEW_WORLD = 0x370030, + SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x370340, + SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x370345, + SMSG_ACCOUNT_COSMETIC_ADDED = 0x3702F9, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x3702E0, + SMSG_ACCOUNT_DATA_TIMES = 0x3701A1, + SMSG_ACCOUNT_EXPORT_RESPONSE = 0x370331, + SMSG_ACCOUNT_MOUNT_REMOVED = 0x370047, + SMSG_ACCOUNT_MOUNT_UPDATE = 0x370046, + SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x3702F8, + SMSG_ACCOUNT_STORE_CURRENCY_UPDATE = 0x37031A, + SMSG_ACCOUNT_STORE_FRONT_UPDATE = 0x37031B, + SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED = 0x37031C, + SMSG_ACCOUNT_STORE_RESULT = 0x37031D, + SMSG_ACCOUNT_TOY_UPDATE = 0x370048, + SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x37004C, + SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x37004B, + SMSG_ACHIEVEMENT_DELETED = 0x37017F, + SMSG_ACHIEVEMENT_EARNED = 0x3700D9, SMSG_ACTIVATE_ESSENCE_FAILED = 0x4A001F, SMSG_ACTIVATE_SOULBIND_FAILED = 0x4A0021, - SMSG_ACTIVATE_TAXI_REPLY = 0x370115, + SMSG_ACTIVATE_TAXI_REPLY = 0x370116, SMSG_ACTIVE_GLYPHS = 0x4D0045, - SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x3701DB, - SMSG_ADDON_LIST_REQUEST = 0x3700D7, - SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x3700D2, - SMSG_ADD_ITEM_PASSIVE = 0x370041, - SMSG_ADD_LOSS_OF_CONTROL = 0x370108, - SMSG_ADD_RUNE_POWER = 0x37014F, - SMSG_ADJUST_SPLINE_DURATION = 0x370067, - SMSG_ADVANCED_COMBAT_LOG = 0x3702F3, - SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x3702EE, - SMSG_AE_LOOT_TARGETS = 0x3700AD, - SMSG_AE_LOOT_TARGET_ACK = 0x3700AE, - SMSG_AI_REACTION = 0x37014C, - SMSG_ALLIED_RACE_DETAILS = 0x370288, + SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x3701DC, + SMSG_ADDON_LIST_REQUEST = 0x3700D8, + SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x3700D3, + SMSG_ADD_ITEM_PASSIVE = 0x370042, + SMSG_ADD_LOSS_OF_CONTROL = 0x370109, + SMSG_ADD_RUNE_POWER = 0x370150, + SMSG_ADJUST_SPLINE_DURATION = 0x370068, + SMSG_ADVANCED_COMBAT_LOG = 0x3702F5, + SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x3702F0, + SMSG_AE_LOOT_TARGETS = 0x3700AE, + SMSG_AE_LOOT_TARGET_ACK = 0x3700AF, + SMSG_AI_REACTION = 0x37014D, + SMSG_ALLIED_RACE_DETAILS = 0x37028A, SMSG_ALL_ACCOUNT_CRITERIA = 0x370005, SMSG_ALL_ACHIEVEMENT_DATA = 0x370004, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x430000, - SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x3702CB, + SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x3702CD, SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x37001D, SMSG_AREA_POI_UPDATE_RESPONSE = 0x4A0018, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x3701D4, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x3701D5, SMSG_AREA_TRIGGER_DENIED = 0x380009, SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x380006, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x3701AC, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x3701AD, SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x380004, SMSG_AREA_TRIGGER_RE_PATH = 0x380003, SMSG_AREA_TRIGGER_RE_SHAPE = 0x380008, SMSG_AREA_TRIGGER_UNATTACH = 0x380007, SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x380005, - SMSG_ARENA_CLEAR_OPPONENTS = 0x3700DE, - SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x3700C7, - SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x3700DD, - SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x370235, - SMSG_ARTIFACT_FORGE_ERROR = 0x370233, - SMSG_ARTIFACT_RESPEC_PROMPT = 0x370234, - SMSG_ARTIFACT_XP_GAIN = 0x37027B, + SMSG_ARENA_CLEAR_OPPONENTS = 0x3700DF, + SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x3700C8, + SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x3700DE, + SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x370237, + SMSG_ARTIFACT_FORGE_ERROR = 0x370235, + SMSG_ARTIFACT_RESPEC_PROMPT = 0x370236, + SMSG_ARTIFACT_XP_GAIN = 0x37027D, SMSG_ATTACKER_STATE_UPDATE = 0x3D002C, SMSG_ATTACK_START = 0x3D0017, SMSG_ATTACK_STOP = 0x3D0018, SMSG_ATTACK_SWING_ERROR = 0x3D0026, SMSG_ATTACK_SWING_LANDED_LOG = 0x3D0027, - SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x370264, - SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x370263, - SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x370262, - SMSG_AUCTION_CLOSED_NOTIFICATION = 0x370189, - SMSG_AUCTION_COMMAND_RESULT = 0x370186, - SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x370312, - SMSG_AUCTION_FAVORITE_LIST = 0x3702E5, - SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x3702DD, - SMSG_AUCTION_HELLO_RESPONSE = 0x370184, - SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x3702DC, - SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x3702D8, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x3702D9, - SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x3702DB, - SMSG_AUCTION_OUTBID_NOTIFICATION = 0x370188, - SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x37018A, - SMSG_AUCTION_REPLICATE_RESPONSE = 0x370185, - SMSG_AUCTION_WON_NOTIFICATION = 0x370187, + SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x370266, + SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x370265, + SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x370264, + SMSG_AUCTION_CLOSED_NOTIFICATION = 0x37018A, + SMSG_AUCTION_COMMAND_RESULT = 0x370187, + SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x37031E, + SMSG_AUCTION_FAVORITE_LIST = 0x3702E7, + SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x3702DF, + SMSG_AUCTION_HELLO_RESPONSE = 0x370185, + SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x3702DE, + SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x3702DA, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x3702DB, + SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x3702DD, + SMSG_AUCTION_OUTBID_NOTIFICATION = 0x370189, + SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x37018B, + SMSG_AUCTION_REPLICATE_RESPONSE = 0x370186, + SMSG_AUCTION_WON_NOTIFICATION = 0x370188, SMSG_AURA_POINTS_DEPLETED = 0x4D0012, SMSG_AURA_UPDATE = 0x4D0011, SMSG_AUTH_CHALLENGE = 0x3E0000, SMSG_AUTH_FAILED = 0x370000, SMSG_AUTH_RESPONSE = 0x370001, SMSG_AVAILABLE_HOTFIXES = 0x3B0001, - SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x370313, + SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x37031F, SMSG_BAG_CLEANUP_FINISHED = 0x4E0007, - SMSG_BARBER_SHOP_RESULT = 0x370154, - SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x3702BC, + SMSG_BARBER_SHOP_RESULT = 0x370155, + SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x3702BE, SMSG_BATTLEFIELD_LIST = 0x3D0005, SMSG_BATTLEFIELD_PORT_DENIED = 0x3D000B, SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x3D0001, @@ -1043,224 +1055,225 @@ enum OpcodeServer : uint32 SMSG_BATTLEGROUND_PLAYER_LEFT = 0x3D000A, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x3D0006, SMSG_BATTLEGROUND_POINTS = 0x3D0028, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x37021D, - SMSG_BATTLENET_CHALLENGE_START = 0x37021C, - SMSG_BATTLENET_NOTIFICATION = 0x370294, - SMSG_BATTLENET_RESPONSE = 0x370293, - SMSG_BATTLE_NET_CONNECTION_STATUS = 0x370295, - SMSG_BATTLE_PAY_ACK_FAILED = 0x370218, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x37020D, - SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x37020E, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x370217, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x37020B, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x37020A, - SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x3702FC, - SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x370208, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x370209, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x370207, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x370205, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x370206, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x37020C, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x370216, - SMSG_BATTLE_PAY_START_CHECKOUT = 0x3702B0, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x370214, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x370213, - SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x3702A4, - SMSG_BATTLE_PETS_HEALED = 0x370089, - SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x370110, - SMSG_BATTLE_PET_DELETED = 0x370086, - SMSG_BATTLE_PET_ERROR = 0x3700CD, - SMSG_BATTLE_PET_JOURNAL = 0x370085, - SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x370083, - SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x370084, - SMSG_BATTLE_PET_RESTORED = 0x370088, - SMSG_BATTLE_PET_REVOKED = 0x370087, - SMSG_BATTLE_PET_TRAP_LEVEL = 0x370081, - SMSG_BATTLE_PET_UPDATES = 0x370080, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x37021F, + SMSG_BATTLENET_CHALLENGE_START = 0x37021E, + SMSG_BATTLENET_NOTIFICATION = 0x370296, + SMSG_BATTLENET_RESPONSE = 0x370295, + SMSG_BATTLE_NET_CONNECTION_STATUS = 0x370297, + SMSG_BATTLE_PAY_ACK_FAILED = 0x37021A, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x37020F, + SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x370210, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x370219, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x37020D, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x37020C, + SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x3702FE, + SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x37020A, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x37020B, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x370209, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x370207, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x370208, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x37020E, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x370218, + SMSG_BATTLE_PAY_START_CHECKOUT = 0x3702B2, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x370216, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x370215, + SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x3702A6, + SMSG_BATTLE_PETS_HEALED = 0x37008A, + SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x370111, + SMSG_BATTLE_PET_DELETED = 0x370087, + SMSG_BATTLE_PET_ERROR = 0x3700CE, + SMSG_BATTLE_PET_JOURNAL = 0x370086, + SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x370084, + SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x370085, + SMSG_BATTLE_PET_RESTORED = 0x370089, + SMSG_BATTLE_PET_REVOKED = 0x370088, + SMSG_BATTLE_PET_TRAP_LEVEL = 0x370082, + SMSG_BATTLE_PET_UPDATES = 0x370081, SMSG_BIND_POINT_UPDATE = 0x370011, - SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x3700BD, - SMSG_BLACK_MARKET_OUTBID = 0x3700BE, - SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x3700BC, - SMSG_BLACK_MARKET_WON = 0x3700BF, - SMSG_BONUS_ROLL_EMPTY = 0x3700DA, + SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x3700BE, + SMSG_BLACK_MARKET_OUTBID = 0x3700BF, + SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x3700BD, + SMSG_BLACK_MARKET_WON = 0x3700C0, + SMSG_BONUS_ROLL_EMPTY = 0x3700DB, SMSG_BOSS_KILL = 0x3D002B, SMSG_BREAK_TARGET = 0x3D0016, SMSG_BROADCAST_ACHIEVEMENT = 0x3C0010, - SMSG_BROADCAST_SUMMON_CAST = 0x3702BE, - SMSG_BROADCAST_SUMMON_RESPONSE = 0x3702BF, - SMSG_BUY_FAILED = 0x37015D, - SMSG_BUY_SUCCEEDED = 0x37015C, + SMSG_BROADCAST_SUMMON_CAST = 0x3702C0, + SMSG_BROADCAST_SUMMON_RESPONSE = 0x3702C1, + SMSG_BUY_FAILED = 0x37015E, + SMSG_BUY_SUCCEEDED = 0x37015D, SMSG_CACHE_INFO = 0x3B000F, SMSG_CACHE_VERSION = 0x3B000E, - SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x370135, - SMSG_CALENDAR_COMMAND_RESULT = 0x370136, - SMSG_CALENDAR_COMMUNITY_INVITE = 0x370125, - SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x37012D, - SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x37012E, - SMSG_CALENDAR_INVITE_ADDED = 0x370126, - SMSG_CALENDAR_INVITE_ALERT = 0x37012A, - SMSG_CALENDAR_INVITE_NOTES = 0x37012F, - SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x370130, - SMSG_CALENDAR_INVITE_REMOVED = 0x370127, - SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x37012C, - SMSG_CALENDAR_INVITE_STATUS = 0x370128, - SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x37012B, - SMSG_CALENDAR_MODERATOR_STATUS = 0x370129, - SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x370131, - SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x370132, - SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x370133, - SMSG_CALENDAR_SEND_CALENDAR = 0x370123, - SMSG_CALENDAR_SEND_EVENT = 0x370124, - SMSG_CALENDAR_SEND_NUM_PENDING = 0x370134, - SMSG_CAMERA_EFFECT = 0x3701BA, - SMSG_CANCEL_AUTO_REPEAT = 0x370174, + SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x370136, + SMSG_CALENDAR_COMMAND_RESULT = 0x370137, + SMSG_CALENDAR_COMMUNITY_INVITE = 0x370126, + SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x37012E, + SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x37012F, + SMSG_CALENDAR_INVITE_ADDED = 0x370127, + SMSG_CALENDAR_INVITE_ALERT = 0x37012B, + SMSG_CALENDAR_INVITE_NOTES = 0x370130, + SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x370131, + SMSG_CALENDAR_INVITE_REMOVED = 0x370128, + SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x37012D, + SMSG_CALENDAR_INVITE_STATUS = 0x370129, + SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x37012C, + SMSG_CALENDAR_MODERATOR_STATUS = 0x37012A, + SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x370132, + SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x370133, + SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x370134, + SMSG_CALENDAR_SEND_CALENDAR = 0x370124, + SMSG_CALENDAR_SEND_EVENT = 0x370125, + SMSG_CALENDAR_SEND_NUM_PENDING = 0x370135, + SMSG_CAMERA_EFFECT = 0x3701BB, + SMSG_CANCEL_AUTO_REPEAT = 0x370175, SMSG_CANCEL_COMBAT = 0x3D0025, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x4D0037, - SMSG_CANCEL_PING_PIN = 0x37003A, - SMSG_CANCEL_PRELOAD_WORLD = 0x37002D, - SMSG_CANCEL_SCENE = 0x3700CC, + SMSG_CANCEL_PING_PIN = 0x37003B, + SMSG_CANCEL_PRELOAD_WORLD = 0x37002E, + SMSG_CANCEL_SCENE = 0x3700CD, SMSG_CANCEL_SPELL_VISUAL = 0x4D0035, SMSG_CANCEL_SPELL_VISUAL_KIT = 0x4D0039, SMSG_CAN_DUEL_RESULT = 0x3D0021, - SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x3702A3, + SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x3702A5, SMSG_CAPTURE_POINT_REMOVED = 0x3D0008, SMSG_CAST_FAILED = 0x4D0048, - SMSG_CAS_REFRESH_REMOTE_DATA = 0x37010E, - SMSG_CHAIN_MISSILE_BOUNCE = 0x37005F, - SMSG_CHALLENGE_MODE_COMPLETE = 0x3700A0, - SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x3700A5, - SMSG_CHALLENGE_MODE_RESET = 0x37009F, - SMSG_CHALLENGE_MODE_START = 0x37009D, - SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x37009E, + SMSG_CAS_REFRESH_REMOTE_DATA = 0x37010F, + SMSG_CHAIN_MISSILE_BOUNCE = 0x370060, + SMSG_CHALLENGE_MODE_COMPLETE = 0x3700A1, + SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x3700A6, + SMSG_CHALLENGE_MODE_RESET = 0x3700A0, + SMSG_CHALLENGE_MODE_START = 0x37009E, + SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x37009F, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x4A000C, - SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x370296, - SMSG_CHANNEL_LIST = 0x3C0018, + SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x370298, + SMSG_CHANNEL_LIST = 0x3C0019, SMSG_CHANNEL_NOTIFY = 0x3C0015, - SMSG_CHANNEL_NOTIFY_JOINED = 0x3C0016, - SMSG_CHANNEL_NOTIFY_LEFT = 0x3C0017, - SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x370250, - SMSG_CHARACTER_LOGIN_FAILED = 0x37019B, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x37021B, - SMSG_CHARACTER_RENAME_RESULT = 0x3701F7, - SMSG_CHARACTER_UPGRADE_ABORTED = 0x37024F, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x37024E, - SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x370251, - SMSG_CHARACTER_UPGRADE_STARTED = 0x37024D, - SMSG_CHAR_CUSTOMIZE_FAILURE = 0x370178, - SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x370179, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x37023A, + SMSG_CHANNEL_NOTIFY_JOINED = 0x3C0017, + SMSG_CHANNEL_NOTIFY_LEFT = 0x3C0018, + SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x3C0016, + SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x370252, + SMSG_CHARACTER_LOGIN_FAILED = 0x37019C, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x37021D, + SMSG_CHARACTER_RENAME_RESULT = 0x3701F8, + SMSG_CHARACTER_UPGRADE_ABORTED = 0x370251, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x370250, + SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x370253, + SMSG_CHARACTER_UPGRADE_STARTED = 0x37024F, + SMSG_CHAR_CUSTOMIZE_FAILURE = 0x370179, + SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x37017A, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x37023C, SMSG_CHAT = 0x3C0001, SMSG_CHAT_AUTO_RESPONDED = 0x3C000C, - SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3C001F, + SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3C0020, SMSG_CHAT_DOWN = 0x3C0012, SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x3C0000, SMSG_CHAT_IS_DOWN = 0x3C0013, - SMSG_CHAT_NOT_IN_GUILD = 0x3C0020, + SMSG_CHAT_NOT_IN_GUILD = 0x3C0021, SMSG_CHAT_NOT_IN_PARTY = 0x3C0006, SMSG_CHAT_PLAYER_AMBIGUOUS = 0x3C0004, SMSG_CHAT_PLAYER_NOTFOUND = 0x3C000B, SMSG_CHAT_RECONNECT = 0x3C0014, - SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x3C001A, + SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x3C001B, SMSG_CHAT_RESTRICTED = 0x3C0007, - SMSG_CHAT_SERVER_MESSAGE = 0x3C0019, + SMSG_CHAT_SERVER_MESSAGE = 0x3C001A, SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x4D0002, SMSG_CHECK_ABANDON_NPE = 0x4A0022, SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x37001B, SMSG_CHECK_WARGAME_ENTRY = 0x370027, - SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x3702E8, - SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x3702CF, + SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x3702EA, + SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x3702D1, SMSG_CLEAR_ALL_SPELL_CHARGES = 0x4D0016, - SMSG_CLEAR_BOSS_EMOTES = 0x370052, - SMSG_CLEAR_COOLDOWN = 0x370151, + SMSG_CLEAR_BOSS_EMOTES = 0x370053, + SMSG_CLEAR_COOLDOWN = 0x370152, SMSG_CLEAR_COOLDOWNS = 0x4D0015, SMSG_CLEAR_RESURRECT = 0x370013, SMSG_CLEAR_SPELL_CHARGES = 0x4D0017, SMSG_CLEAR_TARGET = 0x3D0022, SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x4B0022, - SMSG_CLOSE_ARTIFACT_FORGE = 0x370232, - SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x3702C7, - SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x3702CA, - SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x3702C8, - SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x3702C5, - SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x3702C9, - SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x3702C6, - SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x370308, - SMSG_COIN_REMOVED = 0x3700AC, + SMSG_CLOSE_ARTIFACT_FORGE = 0x370234, + SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x3702C9, + SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x3702CC, + SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x3702CA, + SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x3702C7, + SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x3702CB, + SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x3702C8, + SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x37030A, + SMSG_COIN_REMOVED = 0x3700AD, SMSG_COMBAT_EVENT_FAILED = 0x3D0019, - SMSG_COMMENTATOR_MAP_INFO = 0x37019D, - SMSG_COMMENTATOR_PLAYER_INFO = 0x37019E, - SMSG_COMMENTATOR_STATE_CHANGED = 0x37019C, - SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x37025F, - SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x37026B, - SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x370261, - SMSG_COMMERCE_TOKEN_UPDATE = 0x370260, - SMSG_COMPLAINT_RESULT = 0x370143, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x37022B, - SMSG_CONFIRM_PARTY_INVITE = 0x3702A2, + SMSG_COMMENTATOR_MAP_INFO = 0x37019E, + SMSG_COMMENTATOR_PLAYER_INFO = 0x37019F, + SMSG_COMMENTATOR_STATE_CHANGED = 0x37019D, + SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x370261, + SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x37026D, + SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x370263, + SMSG_COMMERCE_TOKEN_UPDATE = 0x370262, + SMSG_COMPLAINT_RESULT = 0x370144, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x37022D, + SMSG_CONFIRM_PARTY_INVITE = 0x3702A4, SMSG_CONNECT_TO = 0x3E0005, - SMSG_CONSOLE_WRITE = 0x3700CA, - SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x370267, - SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x370266, - SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x370265, - SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x370269, - SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x37026A, - SMSG_CONTACT_LIST = 0x370219, - SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x3702A9, - SMSG_CONTROL_UPDATE = 0x3700DC, - SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x3702F1, - SMSG_COOLDOWN_CHEAT = 0x3701CD, - SMSG_COOLDOWN_EVENT = 0x370150, - SMSG_CORPSE_LOCATION = 0x3700E4, - SMSG_CORPSE_RECLAIM_DELAY = 0x3701DE, - SMSG_CORPSE_TRANSPORT_QUERY = 0x3701A8, + SMSG_CONSOLE_WRITE = 0x3700CB, + SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x370269, + SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x370268, + SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x370267, + SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x37026B, + SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x37026C, + SMSG_CONTACT_LIST = 0x37021B, + SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x3702AB, + SMSG_CONTROL_UPDATE = 0x3700DD, + SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x3702F3, + SMSG_COOLDOWN_CHEAT = 0x3701CE, + SMSG_COOLDOWN_EVENT = 0x370151, + SMSG_CORPSE_LOCATION = 0x3700E5, + SMSG_CORPSE_RECLAIM_DELAY = 0x3701DF, + SMSG_CORPSE_TRANSPORT_QUERY = 0x3701A9, SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x4B0024, - SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x37028B, - SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x3702F2, - SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x37031F, - SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x37031B, - SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x370317, - SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x370319, - SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x370315, - SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x37031A, - SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x370316, - SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x370321, - SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x37031D, - SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x370318, - SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x370320, - SMSG_CRAFT_ENCHANT_RESULT = 0x37031E, - SMSG_CREATE_CHAR = 0x370197, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x37022A, - SMSG_CREATOR_VISUALS_OVERRIDE = 0x370324, - SMSG_CRITERIA_DELETED = 0x37017D, - SMSG_CRITERIA_UPDATE = 0x370177, - SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x370158, - SMSG_CURRENCY_TRANSFER_LOG = 0x370336, - SMSG_CURRENCY_TRANSFER_RESULT = 0x370335, - SMSG_CUSTOM_LOAD_SCREEN = 0x370062, + SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x37028D, + SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x3702F4, + SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x37032B, + SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x370327, + SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x370323, + SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x370325, + SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x370321, + SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x370326, + SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x370322, + SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x37032D, + SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x370329, + SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x370324, + SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x37032C, + SMSG_CRAFT_ENCHANT_RESULT = 0x37032A, + SMSG_CREATE_CHAR = 0x370198, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x37022C, + SMSG_CREATOR_VISUALS_OVERRIDE = 0x370330, + SMSG_CRITERIA_DELETED = 0x37017E, + SMSG_CRITERIA_UPDATE = 0x370178, + SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x370159, + SMSG_CURRENCY_TRANSFER_LOG = 0x370342, + SMSG_CURRENCY_TRANSFER_RESULT = 0x370341, + SMSG_CUSTOM_LOAD_SCREEN = 0x370063, SMSG_DAILY_QUESTS_RESET = 0x4B0000, SMSG_DAMAGE_CALC_LOG = 0x4D0054, SMSG_DB_REPLY = 0x3B0000, - SMSG_DEATH_RELEASE_LOC = 0x37016A, - SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x3700EC, + SMSG_DEATH_RELEASE_LOC = 0x37016B, + SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x3700ED, SMSG_DEFENSE_MESSAGE = 0x3C000A, - SMSG_DELETE_CHAR = 0x370198, + SMSG_DELETE_CHAR = 0x370199, SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x410022, - SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x37033B, - SMSG_DESTROY_ARENA_UNIT = 0x3701D6, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x37018F, + SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x370347, + SMSG_DESTROY_ARENA_UNIT = 0x3701D7, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x370190, SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x370020, - SMSG_DISENCHANT_CREDIT = 0x37003E, + SMSG_DISENCHANT_CREDIT = 0x37003F, SMSG_DISMOUNT_RESULT = 0x370010, SMSG_DISPEL_FAILED = 0x4D001E, - SMSG_DISPLAY_GAME_ERROR = 0x370034, + SMSG_DISPLAY_GAME_ERROR = 0x370035, SMSG_DISPLAY_PLAYER_CHOICE = 0x4A0004, - SMSG_DISPLAY_PROMOTION = 0x3700E1, + SMSG_DISPLAY_PROMOTION = 0x3700E2, SMSG_DISPLAY_QUEST_POPUP = 0x4B001E, - SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x3702F5, - SMSG_DISPLAY_TOAST = 0x3700B9, - SMSG_DISPLAY_WORLD_TEXT = 0x37027C, + SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x3702F7, + SMSG_DISPLAY_TOAST = 0x3700BA, + SMSG_DISPLAY_WORLD_TEXT = 0x37027E, SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x4D0053, - SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x370077, + SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x370078, SMSG_DROP_NEW_CONNECTION = 0x3E0004, SMSG_DUEL_ARRANGED = 0x3D001B, SMSG_DUEL_COMPLETE = 0x3D001F, @@ -1269,53 +1282,53 @@ enum OpcodeServer : uint32 SMSG_DUEL_OUT_OF_BOUNDS = 0x3D001C, SMSG_DUEL_REQUESTED = 0x3D001A, SMSG_DUEL_WINNER = 0x3D0020, - SMSG_DURABILITY_DAMAGE_DEATH = 0x3701D9, - SMSG_EMOTE = 0x370257, - SMSG_ENABLE_BARBER_SHOP = 0x370153, - SMSG_ENCHANTMENT_LOG = 0x3701A9, - SMSG_ENCOUNTER_END = 0x370212, - SMSG_ENCOUNTER_START = 0x370211, - SMSG_END_LIGHTNING_STORM = 0x370140, + SMSG_DURABILITY_DAMAGE_DEATH = 0x3701DA, + SMSG_EMOTE = 0x370259, + SMSG_ENABLE_BARBER_SHOP = 0x370154, + SMSG_ENCHANTMENT_LOG = 0x3701AA, + SMSG_ENCOUNTER_END = 0x370214, + SMSG_ENCOUNTER_START = 0x370213, + SMSG_END_LIGHTNING_STORM = 0x370141, SMSG_ENTER_ENCRYPTED_MODE = 0x3E0001, SMSG_ENUM_CHARACTERS_RESULT = 0x370018, - SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x370281, + SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x370283, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x4D000E, - SMSG_EQUIPMENT_SET_ID = 0x370149, + SMSG_EQUIPMENT_SET_ID = 0x37014A, SMSG_EXPECTED_SPAM_RECORDS = 0x3C0005, - SMSG_EXPLORATION_EXPERIENCE = 0x3701F3, - SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x3702EF, - SMSG_FACTION_BONUS_INFO = 0x3701B9, + SMSG_EXPLORATION_EXPERIENCE = 0x3701F4, + SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x3702F1, + SMSG_FACTION_BONUS_INFO = 0x3701BA, SMSG_FAILED_PLAYER_CONDITION = 0x4A0002, - SMSG_FAILED_QUEST_TURN_IN = 0x37029F, - SMSG_FEATURE_SYSTEM_STATUS = 0x370056, - SMSG_FEATURE_SYSTEM_STATUS2 = 0x370333, - SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x370057, - SMSG_FEIGN_DEATH_RESISTED = 0x3701D8, - SMSG_FISH_ESCAPED = 0x370167, - SMSG_FISH_NOT_HOOKED = 0x370166, + SMSG_FAILED_QUEST_TURN_IN = 0x3702A1, + SMSG_FEATURE_SYSTEM_STATUS = 0x370057, + SMSG_FEATURE_SYSTEM_STATUS2 = 0x37033F, + SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x370058, + SMSG_FEIGN_DEATH_RESISTED = 0x3701D9, + SMSG_FISH_ESCAPED = 0x370168, + SMSG_FISH_NOT_HOOKED = 0x370167, SMSG_FLIGHT_SPLINE_SYNC = 0x48005B, SMSG_FLUSH_COMBAT_LOG_FILE = 0x4D0010, - SMSG_FORCED_DEATH_UPDATE = 0x37016B, - SMSG_FORCE_ANIM = 0x3701E5, - SMSG_FORCE_ANIMATIONS = 0x3701E6, - SMSG_FORCE_OBJECT_RELINK = 0x3700E0, - SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x370049, + SMSG_FORCED_DEATH_UPDATE = 0x37016C, + SMSG_FORCE_ANIM = 0x3701E6, + SMSG_FORCE_ANIMATIONS = 0x3701E7, + SMSG_FORCE_OBJECT_RELINK = 0x3700E1, + SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x37004A, SMSG_FORCE_SPAWN_TRACKING_UPDATE = 0x4B0021, - SMSG_FRIEND_STATUS = 0x37021A, - SMSG_GAIN_MAW_POWER = 0x370270, - SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x37005A, - SMSG_GAME_OBJECT_BASE = 0x3702B6, - SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x370307, - SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x37005B, - SMSG_GAME_OBJECT_DESPAWN = 0x37005C, - SMSG_GAME_OBJECT_INTERACTION = 0x370306, + SMSG_FRIEND_STATUS = 0x37021C, + SMSG_GAIN_MAW_POWER = 0x370272, + SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x37005B, + SMSG_GAME_OBJECT_BASE = 0x3702B8, + SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x370309, + SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x37005C, + SMSG_GAME_OBJECT_DESPAWN = 0x37005D, + SMSG_GAME_OBJECT_INTERACTION = 0x370308, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x4D003C, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x4D003B, - SMSG_GAME_OBJECT_RESET_STATE = 0x3701B3, - SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x370292, - SMSG_GAME_SPEED_SET = 0x370119, - SMSG_GAME_TIME_SET = 0x3701A2, - SMSG_GAME_TIME_UPDATE = 0x3701A1, + SMSG_GAME_OBJECT_RESET_STATE = 0x3701B4, + SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x370294, + SMSG_GAME_SPEED_SET = 0x37011A, + SMSG_GAME_TIME_SET = 0x3701A3, + SMSG_GAME_TIME_UPDATE = 0x3701A2, SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x410024, SMSG_GARRISON_ADD_EVENT = 0x410048, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x410016, @@ -1387,36 +1400,36 @@ enum OpcodeServer : uint32 SMSG_GARRISON_UPGRADE_RESULT = 0x41000D, SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x41001F, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x37001C, - SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x3702AA, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3701F5, + SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x3702AC, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3701F6, SMSG_GET_GARRISON_INFO_RESULT = 0x410000, - SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x37022D, - SMSG_GET_REALM_HIDDEN_RESULT = 0x37032A, - SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x370268, - SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x370255, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x37022C, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x370228, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x370254, - SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x37027D, - SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x37027E, + SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x37022F, + SMSG_GET_REALM_HIDDEN_RESULT = 0x370336, + SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x37026A, + SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x370257, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x37022E, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x37022A, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x370256, + SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x37027F, + SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x370280, SMSG_GM_PLAYER_INFO = 0x4A000D, SMSG_GM_REQUEST_PLAYER_INFO = 0x4A0003, - SMSG_GM_TICKET_CASE_STATUS = 0x37013B, - SMSG_GM_TICKET_SYSTEM_STATUS = 0x37013A, - SMSG_GOD_MODE = 0x370192, + SMSG_GM_TICKET_CASE_STATUS = 0x37013C, + SMSG_GM_TICKET_SYSTEM_STATUS = 0x37013B, + SMSG_GOD_MODE = 0x370193, SMSG_GOSSIP_COMPLETE = 0x4B0017, SMSG_GOSSIP_MESSAGE = 0x4B0018, SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x4B0028, - SMSG_GOSSIP_POI = 0x370225, + SMSG_GOSSIP_POI = 0x370227, SMSG_GOSSIP_QUEST_UPDATE = 0x4B0019, SMSG_GOSSIP_REFRESH_OPTIONS = 0x4B0027, SMSG_GROUP_ACTION_THROTTLED = 0x370024, - SMSG_GROUP_AUTO_KICK = 0x370222, - SMSG_GROUP_DECLINE = 0x37021E, - SMSG_GROUP_DESTROYED = 0x370221, - SMSG_GROUP_NEW_LEADER = 0x3700C2, - SMSG_GROUP_REQUEST_DECLINE = 0x37021F, - SMSG_GROUP_UNINVITE = 0x370220, + SMSG_GROUP_AUTO_KICK = 0x370224, + SMSG_GROUP_DECLINE = 0x370220, + SMSG_GROUP_DESTROYED = 0x370223, + SMSG_GROUP_NEW_LEADER = 0x3700C3, + SMSG_GROUP_REQUEST_DECLINE = 0x370221, + SMSG_GROUP_UNINVITE = 0x370222, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x43000D, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x43000C, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x43000F, @@ -1470,64 +1483,65 @@ enum OpcodeServer : uint32 SMSG_GUILD_REWARD_LIST = 0x430008, SMSG_GUILD_ROSTER = 0x430003, SMSG_GUILD_SEND_RANK_CHANGE = 0x430001, - SMSG_HARDCORE_DEATH_ALERT = 0x370332, - SMSG_HEALTH_UPDATE = 0x370168, - SMSG_HIGHEST_THREAT_UPDATE = 0x370170, + SMSG_HARDCORE_DEATH_ALERT = 0x37033E, + SMSG_HEALTH_UPDATE = 0x370169, + SMSG_HIGHEST_THREAT_UPDATE = 0x370171, SMSG_HOTFIX_CONNECT = 0x3B0003, SMSG_HOTFIX_MESSAGE = 0x3B0002, - SMSG_INITIALIZE_FACTIONS = 0x3701B8, + SMSG_INITIALIZE_FACTIONS = 0x3701B9, SMSG_INITIAL_SETUP = 0x370014, - SMSG_INIT_WORLD_STATES = 0x3701DA, - SMSG_INSPECT_RESULT = 0x3700C6, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x370240, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x37023F, - SMSG_INSTANCE_ENCOUNTER_END = 0x370248, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x37023E, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x37024A, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x370249, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x370243, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x370242, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x370247, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x37024B, - SMSG_INSTANCE_ENCOUNTER_START = 0x370244, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x370241, - SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x370246, - SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x370245, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x370190, - SMSG_INSTANCE_INFO = 0x3700C9, - SMSG_INSTANCE_RESET = 0x37011E, - SMSG_INSTANCE_RESET_FAILED = 0x37011F, - SMSG_INSTANCE_SAVE_CREATED = 0x370210, + SMSG_INIT_WORLD_STATES = 0x3701DB, + SMSG_INSPECT_RESULT = 0x3700C7, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x370242, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x370241, + SMSG_INSTANCE_ENCOUNTER_END = 0x37024A, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x370240, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x37024C, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x37024B, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x370245, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x370244, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x370249, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x37024D, + SMSG_INSTANCE_ENCOUNTER_START = 0x370246, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x370243, + SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x370248, + SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x370247, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x370191, + SMSG_INSTANCE_INFO = 0x3700CA, + SMSG_INSTANCE_RESET = 0x37011F, + SMSG_INSTANCE_RESET_FAILED = 0x370120, + SMSG_INSTANCE_SAVE_CREATED = 0x370212, SMSG_INTERRUPT_POWER_REGEN = 0x4D004A, SMSG_INVALIDATE_PAGE_TEXT = 0x3B000A, SMSG_INVALIDATE_PLAYER = 0x4A0007, - SMSG_INVALID_PROMOTION_CODE = 0x3701E7, + SMSG_INVALID_PROMOTION_CODE = 0x3701E8, SMSG_INVENTORY_CHANGE_FAILURE = 0x4E0005, - SMSG_INVENTORY_FIXUP_COMPLETE = 0x3702A1, - SMSG_INVENTORY_FULL_OVERFLOW = 0x3702B2, - SMSG_ISLAND_AZERITE_GAIN = 0x3701F0, - SMSG_ISLAND_COMPLETE = 0x3701F1, + SMSG_INVENTORY_FIXUP_COMPLETE = 0x3702A3, + SMSG_INVENTORY_FULL_OVERFLOW = 0x3702B4, + SMSG_ISLAND_AZERITE_GAIN = 0x3701F1, + SMSG_ISLAND_COMPLETE = 0x3701F2, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x4B0004, - SMSG_ITEM_CHANGED = 0x370181, - SMSG_ITEM_COOLDOWN = 0x370256, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x3701E9, - SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x370033, - SMSG_ITEM_INTERACTION_COMPLETE = 0x3702E7, - SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x370031, - SMSG_ITEM_PUSH_RESULT = 0x3700B8, - SMSG_ITEM_TIME_UPDATE = 0x3701E8, - SMSG_KICK_REASON = 0x370121, - SMSG_LATENCY_REPORT_PING = 0x3702F8, + SMSG_ITEM_CHANGED = 0x370182, + SMSG_ITEM_COOLDOWN = 0x370258, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x3701EA, + SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x370034, + SMSG_ITEM_INTERACTION_COMPLETE = 0x3702E9, + SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x370032, + SMSG_ITEM_PUSH_RESULT = 0x3700B9, + SMSG_ITEM_TIME_UPDATE = 0x3701E9, + SMSG_KICK_REASON = 0x370122, + SMSG_LATENCY_REPORT_PING = 0x3702FA, SMSG_LEARNED_SPELLS = 0x4D003E, - SMSG_LEARN_PVP_TALENT_FAILED = 0x37006B, - SMSG_LEARN_TALENT_FAILED = 0x37006A, - SMSG_LEGACY_LOOT_RULES = 0x3702B7, - SMSG_LEVEL_LINKING_RESULT = 0x3702CD, - SMSG_LEVEL_UP_INFO = 0x37017F, + SMSG_LEARN_PVP_TALENT_FAILED = 0x37006C, + SMSG_LEARN_TALENT_FAILED = 0x37006B, + SMSG_LEGACY_LOOT_RULES = 0x3702B9, + SMSG_LEVEL_LINKING_RESULT = 0x3702CF, + SMSG_LEVEL_UP_INFO = 0x370180, SMSG_LFG_BOOT_PLAYER = 0x450019, SMSG_LFG_DISABLED = 0x450017, SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x45001F, SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x450009, + SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE = 0x450020, SMSG_LFG_JOIN_RESULT = 0x450000, SMSG_LFG_LIST_APPLICANT_LIST_UPDATE = 0x45000F, SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE = 0x45000C, @@ -1551,48 +1565,50 @@ enum OpcodeServer : uint32 SMSG_LFG_SLOT_INVALID = 0x450014, SMSG_LFG_TELEPORT_DENIED = 0x450016, SMSG_LFG_UPDATE_STATUS = 0x450008, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x370202, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x370201, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3701F6, - SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x370203, - SMSG_LOAD_CUF_PROFILES = 0x370053, - SMSG_LOAD_EQUIPMENT_SET = 0x3701A4, - SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x370309, - SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x37030A, - SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x37030B, - SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x37030C, - SMSG_LOGIN_SET_TIME_SPEED = 0x3701A3, - SMSG_LOGIN_VERIFY_WORLD = 0x37002E, - SMSG_LOGOUT_CANCEL_ACK = 0x37011D, - SMSG_LOGOUT_COMPLETE = 0x37011C, - SMSG_LOGOUT_RESPONSE = 0x37011B, - SMSG_LOG_XP_GAIN = 0x37017B, - SMSG_LOOT_ALL_PASSED = 0x3700B6, - SMSG_LOOT_LIST = 0x3701D5, - SMSG_LOOT_MONEY_NOTIFY = 0x3700B1, - SMSG_LOOT_RELEASE = 0x3700B0, - SMSG_LOOT_RELEASE_ALL = 0x3700AF, - SMSG_LOOT_REMOVED = 0x3700AB, - SMSG_LOOT_RESPONSE = 0x3700AA, - SMSG_LOOT_ROLL = 0x3700B3, - SMSG_LOOT_ROLLS_COMPLETE = 0x3700B5, - SMSG_LOOT_ROLL_WON = 0x3700B7, - SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x370107, - SMSG_MAIL_COMMAND_RESULT = 0x3700D0, - SMSG_MAIL_LIST_RESULT = 0x3701EA, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x3701EB, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x370204, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x370203, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3701F7, + SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x370205, + SMSG_LOAD_CUF_PROFILES = 0x370054, + SMSG_LOAD_EQUIPMENT_SET = 0x3701A5, + SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x37030B, + SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x37030C, + SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x37030D, + SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED = 0x37030F, + SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT = 0x370310, + SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x37030E, + SMSG_LOGIN_SET_TIME_SPEED = 0x3701A4, + SMSG_LOGIN_VERIFY_WORLD = 0x37002F, + SMSG_LOGOUT_CANCEL_ACK = 0x37011E, + SMSG_LOGOUT_COMPLETE = 0x37011D, + SMSG_LOGOUT_RESPONSE = 0x37011C, + SMSG_LOG_XP_GAIN = 0x37017C, + SMSG_LOOT_ALL_PASSED = 0x3700B7, + SMSG_LOOT_LIST = 0x3701D6, + SMSG_LOOT_MONEY_NOTIFY = 0x3700B2, + SMSG_LOOT_RELEASE = 0x3700B1, + SMSG_LOOT_RELEASE_ALL = 0x3700B0, + SMSG_LOOT_REMOVED = 0x3700AC, + SMSG_LOOT_RESPONSE = 0x3700AB, + SMSG_LOOT_ROLL = 0x3700B4, + SMSG_LOOT_ROLLS_COMPLETE = 0x3700B6, + SMSG_LOOT_ROLL_WON = 0x3700B8, + SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x370108, + SMSG_MAIL_COMMAND_RESULT = 0x3700D1, + SMSG_MAIL_LIST_RESULT = 0x3701EB, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x3701EC, SMSG_MAP_OBJECTIVES_INIT = 0x3D002A, - SMSG_MAP_OBJ_EVENTS = 0x37005D, - SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x3700B4, - SMSG_MEETING_STONE_FAILED = 0x37030D, + SMSG_MAP_OBJ_EVENTS = 0x37005E, + SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x3700B5, + SMSG_MEETING_STONE_FAILED = 0x370311, SMSG_MESSAGE_BOX = 0x37000A, - SMSG_MINIMAP_PING = 0x370165, + SMSG_MINIMAP_PING = 0x370166, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x4D0004, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x4D0003, - SMSG_MISSILE_CANCEL = 0x37005E, - SMSG_MODIFY_COOLDOWN = 0x3701F8, + SMSG_MISSILE_CANCEL = 0x37005F, + SMSG_MODIFY_COOLDOWN = 0x3701F9, SMSG_MOUNT_RESULT = 0x37000F, - SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x3702BD, + SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x3702BF, SMSG_MOVE_ADD_IMPULSE = 0x480062, SMSG_MOVE_APPLY_INERTIA = 0x48005E, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x480045, @@ -1704,83 +1720,83 @@ enum OpcodeServer : uint32 SMSG_MOVE_UPDATE_TELEPORT = 0x48000F, SMSG_MOVE_UPDATE_TURN_RATE = 0x48000B, SMSG_MOVE_UPDATE_WALK_SPEED = 0x480006, - SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x37026D, - SMSG_MULTI_FLOOR_NEW_FLOOR = 0x37026C, - SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x3700A1, - SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x3700A3, - SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x3700A7, - SMSG_MYTHIC_PLUS_SEASON_DATA = 0x3700A2, - SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x370072, - SMSG_NEW_DATA_BUILD = 0x370329, - SMSG_NEW_TAXI_PATH = 0x370116, + SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x37026F, + SMSG_MULTI_FLOOR_NEW_FLOOR = 0x37026E, + SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x3700A2, + SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x3700A4, + SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x3700A8, + SMSG_MYTHIC_PLUS_SEASON_DATA = 0x3700A3, + SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x370073, + SMSG_NEW_DATA_BUILD = 0x370335, + SMSG_NEW_TAXI_PATH = 0x370117, SMSG_NEW_WORLD = 0x37002B, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x4D0034, - SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x370142, - SMSG_NOTIFY_MONEY = 0x370030, - SMSG_NOTIFY_RECEIVED_MAIL = 0x3700D1, - SMSG_NPC_INTERACTION_OPEN_RESULT = 0x370305, - SMSG_OFFER_PETITION_ERROR = 0x37014D, - SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x37017C, + SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x370143, + SMSG_NOTIFY_MONEY = 0x370031, + SMSG_NOTIFY_RECEIVED_MAIL = 0x3700D2, + SMSG_NPC_INTERACTION_OPEN_RESULT = 0x370307, + SMSG_OFFER_PETITION_ERROR = 0x37014E, + SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x37017D, SMSG_ON_MONSTER_MOVE = 0x480002, - SMSG_OPEN_ARTIFACT_FORGE = 0x370231, + SMSG_OPEN_ARTIFACT_FORGE = 0x370233, SMSG_OPEN_CONTAINER = 0x4E0006, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x450015, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x370229, - SMSG_OVERRIDE_LIGHT = 0x370152, - SMSG_PAGE_TEXT = 0x3701AF, - SMSG_PARTY_COMMAND_RESULT = 0x370223, - SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x37033E, - SMSG_PARTY_INVITE = 0x370054, - SMSG_PARTY_KILL_LOG = 0x3701EE, - SMSG_PARTY_MEMBER_FULL_STATE = 0x3701ED, - SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x3701EC, - SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x3702ED, - SMSG_PARTY_UPDATE = 0x37008A, - SMSG_PAST_TIME_EVENTS = 0x370059, - SMSG_PAUSE_MIRROR_TIMER = 0x3701A6, - SMSG_PENDING_RAID_LOCK = 0x37018E, - SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x370302, - SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x3702FE, - SMSG_PERKS_PROGRAM_DISABLED = 0x370303, - SMSG_PERKS_PROGRAM_RESULT = 0x3702FF, - SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x3702FD, - SMSG_PETITION_ALREADY_SIGNED = 0x370036, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x37022B, + SMSG_OVERRIDE_LIGHT = 0x370153, + SMSG_PAGE_TEXT = 0x3701B0, + SMSG_PARTY_COMMAND_RESULT = 0x370225, + SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x37034A, + SMSG_PARTY_INVITE = 0x370055, + SMSG_PARTY_KILL_LOG = 0x3701EF, + SMSG_PARTY_MEMBER_FULL_STATE = 0x3701EE, + SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x3701ED, + SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x3702EF, + SMSG_PARTY_UPDATE = 0x37008B, + SMSG_PAST_TIME_EVENTS = 0x37005A, + SMSG_PAUSE_MIRROR_TIMER = 0x3701A7, + SMSG_PENDING_RAID_LOCK = 0x37018F, + SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x370304, + SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x370300, + SMSG_PERKS_PROGRAM_DISABLED = 0x370305, + SMSG_PERKS_PROGRAM_RESULT = 0x370301, + SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x3702FF, + SMSG_PETITION_ALREADY_SIGNED = 0x370037, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x430042, - SMSG_PETITION_SHOW_LIST = 0x370155, - SMSG_PETITION_SHOW_SIGNATURES = 0x370156, - SMSG_PETITION_SIGN_RESULTS = 0x3701E0, - SMSG_PET_ACTION_FEEDBACK = 0x3701DD, - SMSG_PET_ACTION_SOUND = 0x370138, - SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x370098, - SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x37010C, - SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x370091, - SMSG_PET_BATTLE_FINAL_ROUND = 0x370096, - SMSG_PET_BATTLE_FINISHED = 0x370097, - SMSG_PET_BATTLE_FIRST_ROUND = 0x370093, - SMSG_PET_BATTLE_INITIAL_UPDATE = 0x370092, - SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x370099, - SMSG_PET_BATTLE_PVP_CHALLENGE = 0x370090, - SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x3700CE, - SMSG_PET_BATTLE_QUEUE_STATUS = 0x3700CF, - SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x370095, - SMSG_PET_BATTLE_REQUEST_FAILED = 0x37008F, - SMSG_PET_BATTLE_ROUND_RESULT = 0x370094, - SMSG_PET_BATTLE_SLOT_UPDATES = 0x370082, + SMSG_PETITION_SHOW_LIST = 0x370156, + SMSG_PETITION_SHOW_SIGNATURES = 0x370157, + SMSG_PETITION_SIGN_RESULTS = 0x3701E1, + SMSG_PET_ACTION_FEEDBACK = 0x3701DE, + SMSG_PET_ACTION_SOUND = 0x370139, + SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x370099, + SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x37010D, + SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x370092, + SMSG_PET_BATTLE_FINAL_ROUND = 0x370097, + SMSG_PET_BATTLE_FINISHED = 0x370098, + SMSG_PET_BATTLE_FIRST_ROUND = 0x370094, + SMSG_PET_BATTLE_INITIAL_UPDATE = 0x370093, + SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x37009A, + SMSG_PET_BATTLE_PVP_CHALLENGE = 0x370091, + SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x3700CF, + SMSG_PET_BATTLE_QUEUE_STATUS = 0x3700D0, + SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x370096, + SMSG_PET_BATTLE_REQUEST_FAILED = 0x370090, + SMSG_PET_BATTLE_ROUND_RESULT = 0x370095, + SMSG_PET_BATTLE_SLOT_UPDATES = 0x370083, SMSG_PET_CAST_FAILED = 0x4D0049, SMSG_PET_CLEAR_SPELLS = 0x4D0013, - SMSG_PET_DISMISS_SOUND = 0x370139, - SMSG_PET_GOD_MODE = 0x370113, - SMSG_PET_GUIDS = 0x37019A, + SMSG_PET_DISMISS_SOUND = 0x37013A, + SMSG_PET_GOD_MODE = 0x370114, + SMSG_PET_GUIDS = 0x37019B, SMSG_PET_LEARNED_SPELLS = 0x4D0040, SMSG_PET_MODE = 0x37001F, - SMSG_PET_NAME_INVALID = 0x37015A, + SMSG_PET_NAME_INVALID = 0x37015B, SMSG_PET_NEWLY_TAMED = 0x37001E, SMSG_PET_SPELLS_MESSAGE = 0x4D0014, SMSG_PET_STABLE_RESULT = 0x37002A, - SMSG_PET_TAME_FAILURE = 0x37014A, + SMSG_PET_TAME_FAILURE = 0x37014B, SMSG_PET_UNLEARNED_SPELLS = 0x4D0041, SMSG_PHASE_SHIFT_CHANGE = 0x37000C, - SMSG_PLAYED_TIME = 0x37016C, + SMSG_PLAYED_TIME = 0x37016D, SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x4A002C, SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x4A001E, SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x4A001D, @@ -1789,6 +1805,7 @@ enum OpcodeServer : uint32 SMSG_PLAYER_CHOICE_CLEAR = 0x4A0006, SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x4A0005, SMSG_PLAYER_CONDITION_RESULT = 0x4A0012, + SMSG_PLAYER_END_OF_MATCH_DETAILS = 0x4A002E, SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x4A002B, SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x4A0011, SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x4A0016, @@ -1801,25 +1818,25 @@ enum OpcodeServer : uint32 SMSG_PLAYER_SKINNED = 0x4A000E, SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x4A0015, SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x4A0014, - SMSG_PLAY_MUSIC = 0x3701FD, - SMSG_PLAY_OBJECT_SOUND = 0x3701FE, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x3701C5, + SMSG_PLAY_MUSIC = 0x3701FE, + SMSG_PLAY_OBJECT_SOUND = 0x370200, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x3701C6, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x4D0038, - SMSG_PLAY_SCENE = 0x3700CB, - SMSG_PLAY_SOUND = 0x3701FC, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x3701FF, + SMSG_PLAY_SCENE = 0x3700CC, + SMSG_PLAY_SOUND = 0x3701FD, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x370201, SMSG_PLAY_SPELL_VISUAL = 0x4D0036, SMSG_PLAY_SPELL_VISUAL_KIT = 0x4D003A, - SMSG_PLAY_TIME_WARNING = 0x370194, + SMSG_PLAY_TIME_WARNING = 0x370195, SMSG_PONG = 0x3E0006, - SMSG_POWER_UPDATE = 0x370169, + SMSG_POWER_UPDATE = 0x37016A, SMSG_PRELOAD_CHILD_MAP = 0x37000D, SMSG_PRELOAD_WORLD = 0x37002C, - SMSG_PREPOPULATE_NAME_CACHE = 0x3702C0, - SMSG_PRE_RESSURECT = 0x3701FB, - SMSG_PRINT_NOTIFICATION = 0x370061, - SMSG_PROC_RESIST = 0x3701EF, - SMSG_PROFESSION_GOSSIP = 0x37028D, + SMSG_PREPOPULATE_NAME_CACHE = 0x3702C2, + SMSG_PRE_RESSURECT = 0x3701FC, + SMSG_PRINT_NOTIFICATION = 0x370062, + SMSG_PROC_RESIST = 0x3701F0, + SMSG_PROFESSION_GOSSIP = 0x37028F, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x4D0042, SMSG_PVP_CREDIT = 0x3D0024, SMSG_PVP_MATCH_COMPLETE = 0x3D002F, @@ -1828,7 +1845,7 @@ enum OpcodeServer : uint32 SMSG_PVP_MATCH_START = 0x3D002D, SMSG_PVP_MATCH_STATISTICS = 0x3D0010, SMSG_PVP_OPTIONS_ENABLED = 0x3D0013, - SMSG_PVP_TIER_RECORD = 0x3702F9, + SMSG_PVP_TIER_RECORD = 0x3702FB, SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x3B000C, SMSG_QUERY_CREATURE_RESPONSE = 0x3B0006, SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x3B0007, @@ -1844,7 +1861,7 @@ enum OpcodeServer : uint32 SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x4A000A, SMSG_QUERY_QUEST_INFO_RESPONSE = 0x4B0016, SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x43002E, - SMSG_QUERY_TIME_RESPONSE = 0x37017A, + SMSG_QUERY_TIME_RESPONSE = 0x37017B, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x4B0001, SMSG_QUEST_CONFIRM_ACCEPT = 0x4B000F, SMSG_QUEST_FORCE_REMOVED = 0x4B001C, @@ -1863,143 +1880,143 @@ enum OpcodeServer : uint32 SMSG_QUEST_POI_QUERY_RESPONSE = 0x4B001D, SMSG_QUEST_POI_UPDATE_RESPONSE = 0x4B001F, SMSG_QUEST_PUSH_RESULT = 0x4B0010, - SMSG_QUEST_SESSION_INFO_RESPONSE = 0x3702E3, - SMSG_QUEST_SESSION_READY_CHECK = 0x3702D1, - SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x3702D2, - SMSG_QUEST_SESSION_RESULT = 0x3702D0, + SMSG_QUEST_SESSION_INFO_RESPONSE = 0x3702E5, + SMSG_QUEST_SESSION_READY_CHECK = 0x3702D3, + SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x3702D4, + SMSG_QUEST_SESSION_RESULT = 0x3702D2, SMSG_QUEST_UPDATE_ADD_CREDIT = 0x4B000C, SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x4B000D, SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x4B000E, SMSG_QUEST_UPDATE_COMPLETE = 0x4B0009, SMSG_QUEST_UPDATE_FAILED = 0x4B000A, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x4B000B, - SMSG_QUEUE_SUMMARY_UPDATE = 0x3702A0, - SMSG_RAF_ACCOUNT_INFO = 0x3702CE, - SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x3702DF, - SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x370326, - SMSG_RAID_DIFFICULTY_SET = 0x37023B, - SMSG_RAID_GROUP_ONLY = 0x37023D, + SMSG_QUEUE_SUMMARY_UPDATE = 0x3702A2, + SMSG_RAF_ACCOUNT_INFO = 0x3702D0, + SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x3702E1, + SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x370332, + SMSG_RAID_DIFFICULTY_SET = 0x37023D, + SMSG_RAID_GROUP_ONLY = 0x37023F, SMSG_RAID_INSTANCE_MESSAGE = 0x3C0008, - SMSG_RAID_MARKERS_CHANGED = 0x370037, - SMSG_RANDOM_ROLL = 0x3700C5, + SMSG_RAID_MARKERS_CHANGED = 0x370038, + SMSG_RANDOM_ROLL = 0x3700C6, SMSG_RATED_PVP_INFO = 0x3D000F, - SMSG_READY_CHECK_COMPLETED = 0x37008E, - SMSG_READY_CHECK_RESPONSE = 0x37008D, - SMSG_READY_CHECK_STARTED = 0x37008C, - SMSG_READ_ITEM_RESULT_FAILED = 0x370237, - SMSG_READ_ITEM_RESULT_OK = 0x37022E, + SMSG_READY_CHECK_COMPLETED = 0x37008F, + SMSG_READY_CHECK_RESPONSE = 0x37008E, + SMSG_READY_CHECK_STARTED = 0x37008D, + SMSG_READ_ITEM_RESULT_FAILED = 0x370239, + SMSG_READ_ITEM_RESULT_OK = 0x370230, SMSG_REALM_QUERY_RESPONSE = 0x3B0005, - SMSG_REATTACH_RESURRECT = 0x3701DF, - SMSG_RECEIVE_PING_UNIT = 0x370038, - SMSG_RECEIVE_PING_WORLD_POINT = 0x370039, - SMSG_RECRAFT_ITEM_RESULT = 0x37031C, - SMSG_RECRUIT_A_FRIEND_FAILURE = 0x370157, - SMSG_REFRESH_COMPONENT = 0x3700E6, + SMSG_REATTACH_RESURRECT = 0x3701E0, + SMSG_RECEIVE_PING_UNIT = 0x370039, + SMSG_RECEIVE_PING_WORLD_POINT = 0x37003A, + SMSG_RECRAFT_ITEM_RESULT = 0x370328, + SMSG_RECRUIT_A_FRIEND_FAILURE = 0x370158, + SMSG_REFRESH_COMPONENT = 0x3700E7, SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x37001A, SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x370019, - SMSG_REMOVE_ITEM_PASSIVE = 0x370042, + SMSG_REMOVE_ITEM_PASSIVE = 0x370043, SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x4D0043, - SMSG_REPLACE_TROPHY_RESPONSE = 0x370253, + SMSG_REPLACE_TROPHY_RESPONSE = 0x370255, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x4A0009, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x370025, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x3D0014, SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x3D0015, SMSG_RESET_COMPRESSION_CONTEXT = 0x3E0007, - SMSG_RESET_FAILED_NOTIFY = 0x37014E, - SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x370323, + SMSG_RESET_FAILED_NOTIFY = 0x37014F, + SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x37032F, SMSG_RESET_QUEST_POI = 0x4B0020, SMSG_RESET_RANGED_COMBAT_TIMER = 0x3D0023, SMSG_RESET_WEEKLY_CURRENCY = 0x370009, - SMSG_RESPEC_WIPE_CONFIRM = 0x3700A8, + SMSG_RESPEC_WIPE_CONFIRM = 0x3700A9, SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x370006, - SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x370300, - SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x370301, + SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x370302, + SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x370303, SMSG_RESTART_GLOBAL_COOLDOWN = 0x4D0052, - SMSG_RESTRICTED_ACCOUNT_WARNING = 0x370050, + SMSG_RESTRICTED_ACCOUNT_WARNING = 0x370051, SMSG_RESUME_CAST = 0x4D002C, SMSG_RESUME_CAST_BAR = 0x4D002F, SMSG_RESUME_COMMS = 0x3E0003, - SMSG_RESUME_TOKEN = 0x370040, + SMSG_RESUME_TOKEN = 0x370041, SMSG_RESURRECT_REQUEST = 0x370012, SMSG_RESYNC_RUNES = 0x4D0050, - SMSG_RETURNING_PLAYER_PROMPT = 0x370236, - SMSG_RETURN_APPLICANT_LIST = 0x3702C4, - SMSG_RETURN_RECRUITING_CLUBS = 0x3702C3, + SMSG_RETURNING_PLAYER_PROMPT = 0x370238, + SMSG_RETURN_APPLICANT_LIST = 0x3702C6, + SMSG_RETURN_RECRUITING_CLUBS = 0x3702C5, SMSG_ROLE_CHANGED_INFORM = 0x370021, SMSG_ROLE_CHOSEN = 0x45001D, SMSG_ROLE_POLL_INFORM = 0x370022, - SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x37028C, - SMSG_RUNE_REGEN_DEBUG = 0x37004D, - SMSG_SCENARIO_COMPLETED = 0x37027A, - SMSG_SCENARIO_POIS = 0x3700C8, - SMSG_SCENARIO_PROGRESS_UPDATE = 0x3700C1, - SMSG_SCENARIO_SHOW_CRITERIA = 0x370290, - SMSG_SCENARIO_STATE = 0x3700C0, - SMSG_SCENARIO_UI_UPDATE = 0x37028F, - SMSG_SCENARIO_VACATE = 0x370238, - SMSG_SCENE_OBJECT_EVENT = 0x370078, - SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x37007D, - SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x37007E, - SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x37007A, - SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x370079, - SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x37007C, - SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x37007B, + SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x37028E, + SMSG_RUNE_REGEN_DEBUG = 0x37004E, + SMSG_SCENARIO_COMPLETED = 0x37027C, + SMSG_SCENARIO_POIS = 0x3700C9, + SMSG_SCENARIO_PROGRESS_UPDATE = 0x3700C2, + SMSG_SCENARIO_SHOW_CRITERIA = 0x370292, + SMSG_SCENARIO_STATE = 0x3700C1, + SMSG_SCENARIO_UI_UPDATE = 0x370291, + SMSG_SCENARIO_VACATE = 0x37023A, + SMSG_SCENE_OBJECT_EVENT = 0x370079, + SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x37007E, + SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x37007F, + SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x37007B, + SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x37007A, + SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x37007D, + SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x37007C, SMSG_SCRIPT_CAST = 0x4D0047, - SMSG_SEASON_INFO = 0x370058, - SMSG_SELL_RESPONSE = 0x37015B, - SMSG_SEND_ITEM_PASSIVES = 0x370043, + SMSG_SEASON_INFO = 0x370059, + SMSG_SELL_RESPONSE = 0x37015C, + SMSG_SEND_ITEM_PASSIVES = 0x370044, SMSG_SEND_KNOWN_SPELLS = 0x4D0019, - SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x3700C3, - SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x3700C4, + SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x3700C4, + SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x3700C5, SMSG_SEND_SPELL_CHARGES = 0x4D001B, SMSG_SEND_SPELL_HISTORY = 0x4D001A, SMSG_SEND_UNLEARN_SPELLS = 0x4D001C, - SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x3700E3, - SMSG_SERVER_TIME = 0x37011A, - SMSG_SERVER_TIME_OFFSET = 0x3701AA, + SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x3700E4, + SMSG_SERVER_TIME = 0x37011B, + SMSG_SERVER_TIME_OFFSET = 0x3701AB, SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x4D000F, SMSG_SETUP_CURRENCY = 0x370007, - SMSG_SET_AI_ANIM_KIT = 0x3701C4, - SMSG_SET_ANIM_TIER = 0x3701C8, - SMSG_SET_CHR_UPGRADE_TIER = 0x370075, + SMSG_SET_AI_ANIM_KIT = 0x3701C5, + SMSG_SET_ANIM_TIER = 0x3701C9, + SMSG_SET_CHR_UPGRADE_TIER = 0x370076, SMSG_SET_CURRENCY = 0x370008, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x450012, - SMSG_SET_DUNGEON_DIFFICULTY = 0x37013C, - SMSG_SET_FACTION_AT_WAR = 0x370196, - SMSG_SET_FACTION_NOT_VISIBLE = 0x3701BF, - SMSG_SET_FACTION_STANDING = 0x3701C0, - SMSG_SET_FACTION_VISIBLE = 0x3701BE, + SMSG_SET_DUNGEON_DIFFICULTY = 0x37013D, + SMSG_SET_FACTION_AT_WAR = 0x370197, + SMSG_SET_FACTION_NOT_VISIBLE = 0x3701C0, + SMSG_SET_FACTION_STANDING = 0x3701C1, + SMSG_SET_FACTION_VISIBLE = 0x3701BF, SMSG_SET_FLAT_SPELL_MODIFIER = 0x4D0027, - SMSG_SET_ITEM_PURCHASE_DATA = 0x370032, - SMSG_SET_LOOT_METHOD_FAILED = 0x37025E, - SMSG_SET_MAX_WEEKLY_QUANTITY = 0x370035, - SMSG_SET_MELEE_ANIM_KIT = 0x3701C7, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x3701C6, + SMSG_SET_ITEM_PURCHASE_DATA = 0x370033, + SMSG_SET_LOOT_METHOD_FAILED = 0x370260, + SMSG_SET_MAX_WEEKLY_QUANTITY = 0x370036, + SMSG_SET_MELEE_ANIM_KIT = 0x3701C8, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x3701C7, SMSG_SET_PCT_SPELL_MODIFIER = 0x4D0028, - SMSG_SET_PET_SPECIALIZATION = 0x3700BA, + SMSG_SET_PET_SPECIALIZATION = 0x3700BB, SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x4A000B, - SMSG_SET_PLAY_HOVER_ANIM = 0x370051, - SMSG_SET_PROFICIENCY = 0x3701C9, - SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x3702D7, + SMSG_SET_PLAY_HOVER_ANIM = 0x370052, + SMSG_SET_PROFICIENCY = 0x3701CA, + SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x3702D9, SMSG_SET_SHIPMENT_READY_RESPONSE = 0x41003A, SMSG_SET_SPELL_CHARGES = 0x4D0018, - SMSG_SET_TIME_ZONE_INFORMATION = 0x37010F, - SMSG_SET_VEHICLE_REC_ID = 0x37018D, - SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x370304, + SMSG_SET_TIME_ZONE_INFORMATION = 0x370110, + SMSG_SET_VEHICLE_REC_ID = 0x37018E, + SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x370306, SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x41003B, - SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x37033C, - SMSG_SHOW_DELVES_DISPLAY_UI = 0x37033A, - SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x370071, + SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x370348, + SMSG_SHOW_DELVES_DISPLAY_UI = 0x370346, + SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x370072, SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x4B0015, - SMSG_SHOW_TAXI_NODES = 0x370164, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x370204, - SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x37030E, - SMSG_SOCKET_GEMS_FAILURE = 0x3701BC, - SMSG_SOCKET_GEMS_SUCCESS = 0x3701BB, - SMSG_SPECIAL_MOUNT_ANIM = 0x370137, - SMSG_SPECTATE_END = 0x370328, - SMSG_SPECTATE_PLAYER = 0x370327, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x3701AE, + SMSG_SHOW_TAXI_NODES = 0x370165, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x370206, + SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x370312, + SMSG_SOCKET_GEMS_FAILURE = 0x3701BD, + SMSG_SOCKET_GEMS_SUCCESS = 0x3701BC, + SMSG_SPECIAL_MOUNT_ANIM = 0x370138, + SMSG_SPECTATE_END = 0x370334, + SMSG_SPECTATE_PLAYER = 0x370333, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x3701AF, SMSG_SPELL_ABSORB_LOG = 0x4D000C, SMSG_SPELL_CATEGORY_COOLDOWN = 0x4D0006, SMSG_SPELL_CHANNEL_START = 0x4D0022, @@ -2027,95 +2044,96 @@ enum OpcodeServer : uint32 SMSG_SPELL_PERIODIC_AURA_LOG = 0x4D0008, SMSG_SPELL_PREPARE = 0x4D0029, SMSG_SPELL_START = 0x4D002B, - SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x370063, - SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x3702E9, - SMSG_STAND_STATE_UPDATE = 0x3701B2, - SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x370069, - SMSG_START_ELAPSED_TIMER = 0x37009A, - SMSG_START_ELAPSED_TIMERS = 0x37009C, - SMSG_START_LIGHTNING_STORM = 0x37013F, - SMSG_START_LOOT_ROLL = 0x3700B2, - SMSG_START_MIRROR_TIMER = 0x3701A5, - SMSG_START_TIMER = 0x37003C, - SMSG_STOP_ELAPSED_TIMER = 0x37009B, - SMSG_STOP_MIRROR_TIMER = 0x3701A7, - SMSG_STOP_SPEAKERBOT_SOUND = 0x370200, - SMSG_STOP_TIMER = 0x37003D, - SMSG_STREAMING_MOVIES = 0x37003B, - SMSG_SUGGEST_INVITE_INFORM = 0x370224, - SMSG_SUMMON_CANCEL = 0x370148, + SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x370064, + SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x3702EB, + SMSG_STAND_STATE_UPDATE = 0x3701B3, + SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x37006A, + SMSG_START_ELAPSED_TIMER = 0x37009B, + SMSG_START_ELAPSED_TIMERS = 0x37009D, + SMSG_START_LIGHTNING_STORM = 0x370140, + SMSG_START_LOOT_ROLL = 0x3700B3, + SMSG_START_MIRROR_TIMER = 0x3701A6, + SMSG_START_TIMER = 0x37003D, + SMSG_STOP_ELAPSED_TIMER = 0x37009C, + SMSG_STOP_MIRROR_TIMER = 0x3701A8, + SMSG_STOP_SPEAKERBOT_SOUND = 0x370202, + SMSG_STOP_TIMER = 0x37003E, + SMSG_STREAMING_MOVIES = 0x37003C, + SMSG_SUGGEST_INVITE_INFORM = 0x370226, + SMSG_SUMMON_CANCEL = 0x370149, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x370023, - SMSG_SUMMON_REQUEST = 0x3701B6, + SMSG_SUMMON_REQUEST = 0x3701B7, SMSG_SUPERCEDED_SPELLS = 0x4D003D, SMSG_SUSPEND_COMMS = 0x3E0002, - SMSG_SUSPEND_TOKEN = 0x37003F, - SMSG_SYNC_WOW_ENTITLEMENTS = 0x3702E1, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x3701AD, - SMSG_TAXI_NODE_STATUS = 0x370114, - SMSG_TEXT_EMOTE = 0x370112, - SMSG_THREAT_CLEAR = 0x370173, - SMSG_THREAT_REMOVE = 0x370172, - SMSG_THREAT_UPDATE = 0x370171, - SMSG_TIMERUNNING_SEASON_ENDED = 0x37033D, + SMSG_SUSPEND_TOKEN = 0x370040, + SMSG_SYNC_WOW_ENTITLEMENTS = 0x3702E3, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x3701AE, + SMSG_TAXI_NODE_STATUS = 0x370115, + SMSG_TEXT_EMOTE = 0x370113, + SMSG_THREAT_CLEAR = 0x370174, + SMSG_THREAT_REMOVE = 0x370173, + SMSG_THREAT_UPDATE = 0x370172, + SMSG_TIMERUNNING_SEASON_ENDED = 0x370349, SMSG_TIME_ADJUSTMENT = 0x480001, SMSG_TIME_SYNC_REQUEST = 0x480000, - SMSG_TITLE_EARNED = 0x37016E, - SMSG_TITLE_LOST = 0x37016F, - SMSG_TOTEM_CREATED = 0x37015E, - SMSG_TOTEM_DURATION_CHANGED = 0x370160, - SMSG_TOTEM_MOVED = 0x370161, - SMSG_TOTEM_REMOVED = 0x37015F, + SMSG_TITLE_EARNED = 0x37016F, + SMSG_TITLE_LOST = 0x370170, + SMSG_TOTEM_CREATED = 0x37015F, + SMSG_TOTEM_DURATION_CHANGED = 0x370161, + SMSG_TOTEM_MOVED = 0x370162, + SMSG_TOTEM_REMOVED = 0x370160, SMSG_TRADE_STATUS = 0x370017, SMSG_TRADE_UPDATED = 0x370016, - SMSG_TRAINER_BUY_FAILED = 0x370176, - SMSG_TRAINER_LIST = 0x370175, - SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x370068, - SMSG_TRANSFER_ABORTED = 0x370199, - SMSG_TRANSFER_PENDING = 0x370064, + SMSG_TRAINER_BUY_FAILED = 0x370177, + SMSG_TRAINER_LIST = 0x370176, + SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x370069, + SMSG_TRANSFER_ABORTED = 0x37019A, + SMSG_TRANSFER_PENDING = 0x370065, SMSG_TREASURE_PICKER_RESPONSE = 0x3B0011, - SMSG_TRIGGER_CINEMATIC = 0x370258, - SMSG_TRIGGER_MOVIE = 0x370162, - SMSG_TURN_IN_PETITION_RESULT = 0x3701E2, - SMSG_TUTORIAL_FLAGS = 0x37024C, + SMSG_TRIGGER_CINEMATIC = 0x37025A, + SMSG_TRIGGER_MOVIE = 0x370163, + SMSG_TURN_IN_PETITION_RESULT = 0x3701E3, + SMSG_TUTORIAL_FLAGS = 0x37024E, + SMSG_UI_ACTION = 0x3701FF, SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x4B0023, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x370259, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x37025A, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x37025B, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x37025C, SMSG_UNLEARNED_SPELLS = 0x4D003F, SMSG_UNLOAD_CHILD_MAP = 0x37000E, - SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x3702FA, - SMSG_UPDATE_ACCOUNT_DATA = 0x37019F, - SMSG_UPDATE_ACTION_BUTTONS = 0x370076, - SMSG_UPDATE_BNET_SESSION_KEY = 0x3702B1, + SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x3702FC, + SMSG_UPDATE_ACCOUNT_DATA = 0x3701A0, + SMSG_UPDATE_ACTION_BUTTONS = 0x370077, + SMSG_UPDATE_BNET_SESSION_KEY = 0x3702B3, SMSG_UPDATE_CAPTURE_POINT = 0x3D0007, - SMSG_UPDATE_CELESTIAL_BODY = 0x3702AD, - SMSG_UPDATE_CHARACTER_FLAGS = 0x370252, - SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x3701FA, - SMSG_UPDATE_COOLDOWN = 0x3701F9, + SMSG_UPDATE_CELESTIAL_BODY = 0x3702AF, + SMSG_UPDATE_CHARACTER_FLAGS = 0x370254, + SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x3701FB, + SMSG_UPDATE_COOLDOWN = 0x3701FA, SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x410038, SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x410021, - SMSG_UPDATE_EXPANSION_LEVEL = 0x3700DB, - SMSG_UPDATE_GAME_TIME_STATE = 0x3702B4, - SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x370141, - SMSG_UPDATE_LAST_INSTANCE = 0x370120, + SMSG_UPDATE_EXPANSION_LEVEL = 0x3700DC, + SMSG_UPDATE_GAME_TIME_STATE = 0x3702B6, + SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x370142, + SMSG_UPDATE_LAST_INSTANCE = 0x370121, SMSG_UPDATE_OBJECT = 0x470000, - SMSG_UPDATE_PRIMARY_SPEC = 0x37006E, - SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x37008B, - SMSG_UPDATE_TALENT_DATA = 0x37006D, - SMSG_UPDATE_WORLD_STATE = 0x3701DC, + SMSG_UPDATE_PRIMARY_SPEC = 0x37006F, + SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x37008C, + SMSG_UPDATE_TALENT_DATA = 0x37006E, + SMSG_UPDATE_WORLD_STATE = 0x3701DD, SMSG_USERLIST_ADD = 0x3C000D, SMSG_USERLIST_REMOVE = 0x3C000E, SMSG_USERLIST_UPDATE = 0x3C000F, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x3701E3, - SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x3702A8, - SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x3702A6, - SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x3702A5, - SMSG_VAS_PURCHASE_COMPLETE = 0x370280, - SMSG_VAS_PURCHASE_STATE_UPDATE = 0x37027F, - SMSG_VENDOR_INVENTORY = 0x37004F, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x3701E4, + SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x3702AA, + SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x3702A8, + SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x3702A7, + SMSG_VAS_PURCHASE_COMPLETE = 0x370282, + SMSG_VAS_PURCHASE_STATE_UPDATE = 0x370281, + SMSG_VENDOR_INVENTORY = 0x370050, SMSG_VIGNETTE_UPDATE = 0x4A0010, - SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x3702AC, - SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x3702F4, - SMSG_VOICE_LOGIN_RESPONSE = 0x3702AB, + SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x3702AE, + SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x3702F6, + SMSG_VOICE_LOGIN_RESPONSE = 0x3702AD, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x4E0004, SMSG_VOID_STORAGE_CONTENTS = 0x4E0001, SMSG_VOID_STORAGE_FAILED = 0x4E0000, @@ -2124,28 +2142,31 @@ enum OpcodeServer : uint32 SMSG_WAIT_QUEUE_FINISH = 0x370003, SMSG_WAIT_QUEUE_UPDATE = 0x370002, SMSG_WARDEN3_DATA = 0x37000B, - SMSG_WARDEN3_DISABLED = 0x3702AF, - SMSG_WARDEN3_ENABLED = 0x3702AE, - SMSG_WARFRONT_COMPLETE = 0x3701F2, + SMSG_WARDEN3_DISABLED = 0x3702B1, + SMSG_WARDEN3_ENABLED = 0x3702B0, + SMSG_WARFRONT_COMPLETE = 0x3701F3, SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x3D0012, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x3D0011, - SMSG_WEATHER = 0x37013E, - SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x3702EC, - SMSG_WEEKLY_REWARDS_RESULT = 0x3702EA, - SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x3702EB, + SMSG_WEATHER = 0x37013F, + SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x3702EE, + SMSG_WEEKLY_REWARDS_RESULT = 0x3702EC, + SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x3702ED, SMSG_WHO = 0x3C0002, - SMSG_WHO_IS = 0x37013D, - SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x3702B3, + SMSG_WHO_IS = 0x37013E, + SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x3702B5, SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x4A0017, - SMSG_WORLD_SERVER_INFO = 0x370044, - SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x3702E2, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x37030F, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x370310, - SMSG_WOW_LABS_PARTY_ERROR = 0x370314, - SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x370311, - SMSG_XP_AWARDED_FROM_CURRENCY = 0x370322, - SMSG_XP_GAIN_ABORTED = 0x370060, - SMSG_XP_GAIN_ENABLED = 0x37023C, + SMSG_WORLD_SERVER_INFO = 0x370045, + SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x3702E4, + SMSG_WOW_LABS_AREA_INFO = 0x370317, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x370313, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x370314, + SMSG_WOW_LABS_PARTY_ERROR = 0x370320, + SMSG_WOW_LABS_SET_AREA_ID_RESULT = 0x370315, + SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x370319, + SMSG_WOW_LABS_SET_SELECTED_AREA_ID = 0x370316, + SMSG_XP_AWARDED_FROM_CURRENCY = 0x37032E, + SMSG_XP_GAIN_ABORTED = 0x370061, + SMSG_XP_GAIN_ENABLED = 0x37023E, SMSG_ZONE_UNDER_ATTACK = 0x3C0009, // Opcodes that are not generated automatically @@ -2157,30 +2178,30 @@ enum OpcodeServer : uint32 SMSG_ARENA_TEAM_STATS = UNKNOWN_OPCODE, }; -inline constexpr std::size_t NUM_SMSG_OPCODES = 1445; +inline constexpr std::size_t NUM_SMSG_OPCODES = 1460; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeServer opcode) { uint32 idInGroup = opcode & 0xFFFF; switch (opcode >> 16) { - case 0x37: return idInGroup < 831 ? idInGroup + 0 : -1; - case 0x38: return idInGroup < 10 ? idInGroup + 831 : -1; - case 0x3B: return idInGroup < 18 ? idInGroup + 841 : -1; - case 0x3C: return idInGroup < 33 ? idInGroup + 859 : -1; - case 0x3D: return idInGroup < 49 ? idInGroup + 892 : -1; - case 0x3E: return idInGroup < 11 ? idInGroup + 941 : -1; - case 0x3F: return idInGroup < 12 ? idInGroup + 952 : -1; - case 0x41: return idInGroup < 82 ? idInGroup + 964 : -1; - case 0x43: return idInGroup < 67 ? idInGroup + 1046 : -1; - case 0x45: return idInGroup < 32 ? idInGroup + 1113 : -1; - case 0x47: return idInGroup < 1 ? idInGroup + 1145 : -1; - case 0x48: return idInGroup < 118 ? idInGroup + 1146 : -1; - case 0x4A: return idInGroup < 46 ? idInGroup + 1264 : -1; - case 0x4B: return idInGroup < 41 ? idInGroup + 1310 : -1; - case 0x4D: return idInGroup < 85 ? idInGroup + 1351 : -1; - case 0x4E: return idInGroup < 8 ? idInGroup + 1436 : -1; - case 0x50: return idInGroup < 1 ? idInGroup + 1444 : -1; + case 0x37: return idInGroup < 843 ? idInGroup + 0 : -1; + case 0x38: return idInGroup < 10 ? idInGroup + 843 : -1; + case 0x3B: return idInGroup < 18 ? idInGroup + 853 : -1; + case 0x3C: return idInGroup < 34 ? idInGroup + 871 : -1; + case 0x3D: return idInGroup < 49 ? idInGroup + 905 : -1; + case 0x3E: return idInGroup < 11 ? idInGroup + 954 : -1; + case 0x3F: return idInGroup < 12 ? idInGroup + 965 : -1; + case 0x41: return idInGroup < 82 ? idInGroup + 977 : -1; + case 0x43: return idInGroup < 67 ? idInGroup + 1059 : -1; + case 0x45: return idInGroup < 33 ? idInGroup + 1126 : -1; + case 0x47: return idInGroup < 1 ? idInGroup + 1159 : -1; + case 0x48: return idInGroup < 118 ? idInGroup + 1160 : -1; + case 0x4A: return idInGroup < 47 ? idInGroup + 1278 : -1; + case 0x4B: return idInGroup < 41 ? idInGroup + 1325 : -1; + case 0x4D: return idInGroup < 85 ? idInGroup + 1366 : -1; + case 0x4E: return idInGroup < 8 ? idInGroup + 1451 : -1; + case 0x50: return idInGroup < 1 ? idInGroup + 1459 : -1; default: return -1; } } diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 359482110d647..04b6e30cdd13f 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -53,10 +53,14 @@ std::string const WorldSocket::ServerConnectionInitialize("WORLD OF WARCRAFT CON std::string const WorldSocket::ClientConnectionInitialize("WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER - V2"); uint32 const WorldSocket::MinSizeForCompression = 0x400; -uint8 const WorldSocket::AuthCheckSeed[16] = { 0xC5, 0xC6, 0x98, 0x95, 0x76, 0x3F, 0x1D, 0xCD, 0xB6, 0xA1, 0x37, 0x28, 0xB3, 0x12, 0xFF, 0x8A }; -uint8 const WorldSocket::SessionKeySeed[16] = { 0x58, 0xCB, 0xCF, 0x40, 0xFE, 0x2E, 0xCE, 0xA6, 0x5A, 0x90, 0xB8, 0x01, 0x68, 0x6C, 0x28, 0x0B }; -uint8 const WorldSocket::ContinuedSessionSeed[16] = { 0x16, 0xAD, 0x0C, 0xD4, 0x46, 0xF9, 0x4F, 0xB2, 0xEF, 0x7D, 0xEA, 0x2A, 0x17, 0x66, 0x4D, 0x2F }; -uint8 const WorldSocket::EncryptionKeySeed[16] = { 0xE9, 0x75, 0x3C, 0x50, 0x90, 0x93, 0x61, 0xDA, 0x3B, 0x07, 0xEE, 0xFA, 0xFF, 0x9D, 0x41, 0xB8 }; +std::array const WorldSocket::AuthCheckSeed = { 0xDE, 0x3A, 0x2A, 0x8E, 0x6B, 0x89, 0x52, 0x66, 0x88, 0x9D, 0x7E, 0x7A, 0x77, 0x1D, 0x5D, 0x1F, + 0x4E, 0xD9, 0x0C, 0x23, 0x9B, 0xCD, 0x0E, 0xDC, 0xD2, 0xE8, 0x04, 0x3A, 0x68, 0x64, 0xC7, 0xB0 }; +std::array const WorldSocket::SessionKeySeed = { 0xE8, 0x1E, 0x8B, 0x59, 0x27, 0x62, 0x1E, 0xAA, 0x86, 0x15, 0x18, 0xEA, 0xC0, 0xBF, 0x66, 0x8C, + 0x6D, 0xBF, 0x83, 0x93, 0xBC, 0xAA, 0x80, 0x52, 0x5B, 0x1E, 0xDC, 0x23, 0xA0, 0x12, 0xB7, 0x50 }; +std::array const WorldSocket::ContinuedSessionSeed = { 0x56, 0x5C, 0x61, 0x9C, 0x48, 0x3A, 0x52, 0x1F, 0x61, 0x5D, 0x05, 0x49, 0xB2, 0x9A, 0x39, 0xBF, + 0x4B, 0x97, 0xB0, 0x1B, 0xF9, 0x6C, 0xDE, 0xD6, 0x80, 0x1D, 0xAB, 0x26, 0x02, 0xA9, 0x9B, 0x9D }; +std::array const WorldSocket::EncryptionKeySeed = { 0x71, 0xC9, 0xED, 0x5A, 0xA7, 0x0E, 0x4D, 0xFF, 0x4C, 0x36, 0xA6, 0x5A, 0x3E, 0x46, 0x8A, 0x4A, + 0x5D, 0xA1, 0x48, 0xC8, 0x30, 0x47, 0x4A, 0xDE, 0xF6, 0x0D, 0x6C, 0xBE, 0x6F, 0xE4, 0x55, 0x73 }; WorldSocket::WorldSocket(boost::asio::ip::tcp::socket&& socket) : Socket(std::move(socket)), _type(CONNECTION_TYPE_REALM), _key(0), _OverSpeedPings(0), @@ -730,15 +734,15 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptrKey.data(), clientBuildAuthKey->Key.size()); digestKeyHash.Finalize(); - Trinity::Crypto::HMAC_SHA256 hmac(digestKeyHash.GetDigest()); + Trinity::Crypto::HMAC_SHA512 hmac(digestKeyHash.GetDigest()); hmac.UpdateData(authSession->LocalChallenge); hmac.UpdateData(_serverChallenge); - hmac.UpdateData(AuthCheckSeed, 16); + hmac.UpdateData(AuthCheckSeed); hmac.Finalize(); // Check that Key and account name are the same on client and server @@ -750,27 +754,27 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptrLocalChallenge); - sessionKeyHmac.UpdateData(SessionKeySeed, 16); + sessionKeyHmac.UpdateData(SessionKeySeed); sessionKeyHmac.Finalize(); - SessionKeyGenerator sessionKeyGenerator(sessionKeyHmac.GetDigest()); + SessionKeyGenerator sessionKeyGenerator(sessionKeyHmac.GetDigest()); sessionKeyGenerator.Generate(_sessionKey.data(), 40); - Trinity::Crypto::HMAC_SHA256 encryptKeyGen(_sessionKey); + Trinity::Crypto::HMAC_SHA512 encryptKeyGen(_sessionKey); encryptKeyGen.UpdateData(authSession->LocalChallenge); encryptKeyGen.UpdateData(_serverChallenge); - encryptKeyGen.UpdateData(EncryptionKeySeed, 16); + encryptKeyGen.UpdateData(EncryptionKeySeed); encryptKeyGen.Finalize(); - // only first 16 bytes of the hmac are used - memcpy(_encryptKey.data(), encryptKeyGen.GetDigest().data(), 16); + // only first 32 bytes of the hmac are used + memcpy(_encryptKey.data(), encryptKeyGen.GetDigest().data(), 32); LoginDatabasePreparedStatement* stmt = nullptr; @@ -959,11 +963,11 @@ void WorldSocket::HandleAuthContinuedSessionCallback(std::shared_ptr(); - Trinity::Crypto::HMAC_SHA256 hmac(_sessionKey); + Trinity::Crypto::HMAC_SHA512 hmac(_sessionKey); hmac.UpdateData(reinterpret_cast(&authSession->Key), sizeof(authSession->Key)); hmac.UpdateData(authSession->LocalChallenge); hmac.UpdateData(_serverChallenge); - hmac.UpdateData(ContinuedSessionSeed, 16); + hmac.UpdateData(ContinuedSessionSeed); hmac.Finalize(); if (memcmp(hmac.GetDigest().data(), authSession->Digest.data(), authSession->Digest.size())) @@ -973,14 +977,14 @@ void WorldSocket::HandleAuthContinuedSessionCallback(std::shared_ptrLocalChallenge); encryptKeyGen.UpdateData(_serverChallenge); - encryptKeyGen.UpdateData(EncryptionKeySeed, 16); + encryptKeyGen.UpdateData(EncryptionKeySeed); encryptKeyGen.Finalize(); - // only first 16 bytes of the hmac are used - memcpy(_encryptKey.data(), encryptKeyGen.GetDigest().data(), 16); + // only first 32 bytes of the hmac are used + memcpy(_encryptKey.data(), encryptKeyGen.GetDigest().data(), 32); SendPacketAndLogOpcode(*WorldPackets::Auth::EnterEncryptedMode(_encryptKey, true).Write()); AsyncRead(); diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index 03fb9d8754269..04451dc26e82c 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -93,10 +93,10 @@ class TC_GAME_API WorldSocket : public Socket static std::string const ClientConnectionInitialize; static uint32 const MinSizeForCompression; - static uint8 const AuthCheckSeed[16]; - static uint8 const SessionKeySeed[16]; - static uint8 const ContinuedSessionSeed[16]; - static uint8 const EncryptionKeySeed[16]; + static std::array const AuthCheckSeed; + static std::array const SessionKeySeed; + static std::array const ContinuedSessionSeed; + static std::array const EncryptionKeySeed; typedef Socket BaseSocket; @@ -157,10 +157,10 @@ class TC_GAME_API WorldSocket : public Socket ConnectionType _type; uint64 _key; - std::array _serverChallenge; + std::array _serverChallenge; WorldPacketCrypt _authCrypt; SessionKey _sessionKey; - std::array _encryptKey; + std::array _encryptKey; TimePoint _LastPingTime; uint32 _OverSpeedPings; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 18990648d1eee..406f3ecdeb76d 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -422,6 +422,13 @@ NonDefaultConstructible SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectNULL, //331 SPELL_EFFECT_331 &Spell::EffectNULL, //332 SPELL_EFFECT_332 &Spell::EffectNULL, //333 SPELL_EFFECT_333 + &Spell::EffectNULL, //334 SPELL_EFFECT_334 + &Spell::EffectNULL, //335 SPELL_EFFECT_335 + &Spell::EffectNULL, //336 SPELL_EFFECT_336 + &Spell::EffectNULL, //337 SPELL_EFFECT_337 + &Spell::EffectNULL, //338 SPELL_EFFECT_338 + &Spell::EffectNULL, //339 SPELL_EFFECT_UI_ACTION + &Spell::EffectNULL, //340 SPELL_EFFECT_340 }; void Spell::EffectNULL() diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 41c9503ab7629..fb9e3e63fa98c 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1181,6 +1181,13 @@ std::array SpellEffectInfo::_d {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 331 SPELL_EFFECT_331 {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 332 SPELL_EFFECT_332 {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 333 SPELL_EFFECT_333 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 334 SPELL_EFFECT_334 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 335 SPELL_EFFECT_335 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 336 SPELL_EFFECT_336 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 337 SPELL_EFFECT_337 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 338 SPELL_EFFECT_338 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 339 SPELL_EFFECT_UI_ACTION + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 340 SPELL_EFFECT_340 } }; SpellInfo::SpellInfo(SpellNameEntry const* spellName, ::Difficulty difficulty, SpellInfoLoadHelper const& data) diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h index 480855aed5dc1..70272f1708a64 100644 --- a/src/tools/map_extractor/loadlib/DBFilesClientList.h +++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h @@ -26,6 +26,8 @@ struct DB2FileInfo DB2FileInfo const DBFilesClientList[] = { + { 6220124, "AccountStoreCategory.db2" }, + { 6197817, "AccountStoreItem.db2" }, { 1260179, "Achievement.db2" }, { 1324299, "Achievement_Category.db2" }, { 4572795, "ActionBarGroup.db2" }, @@ -317,6 +319,7 @@ DB2FileInfo const DBFilesClientList[] = { 1278178, "GMSurveyQuestions.db2" }, { 1283020, "GMSurveySurveys.db2" }, { 2922072, "GameClockDebug.db2" }, + { 5008306, "GameMode.db2" }, { 3565753, "GameObjectAnimGroupMember.db2" }, { 1266737, "GameObjectArtKit.db2" }, { 1302847, "GameObjectDiffAnimMap.db2" }, @@ -562,6 +565,7 @@ DB2FileInfo const DBFilesClientList[] = { 1597466, "MapCelestialBody.db2" }, { 801709, "MapChallengeMode.db2" }, { 1367868, "MapDifficulty.db2" }, + { 4913557, "MapDifficultyRedirect.db2" }, { 1375435, "MapDifficultyXCondition.db2" }, { 1719707, "MapLoadingScreen.db2" }, { 4633656, "MapRenderScale.db2" }, @@ -574,10 +578,7 @@ DB2FileInfo const DBFilesClientList[] = { 1465904, "ModelAnimCloakDampening.db2" }, { 1337833, "ModelFileData.db2" }, { 1399953, "ModelRibbonQuality.db2" }, - { 5393273, "ModelSound.db2" }, { 5393274, "ModelSoundAnimEntry.db2" }, - { 5393275, "ModelSoundEntry.db2" }, - { 5393276, "ModelSoundOverride.db2" }, { 5682517, "ModelSoundSettings.db2" }, { 5393277, "ModelSoundTagEntry.db2" }, { 3386486, "ModifiedCraftingCategory.db2" }, @@ -932,6 +933,7 @@ DB2FileInfo const DBFilesClientList[] = { 1140687, "TransportRotation.db2" }, { 975024, "Trophy.db2" }, { 5011999, "UIArrowCallout.db2" }, + { 6237799, "UIButton.db2" }, { 3488582, "UIChromieTimeExpansionInfo.db2" }, { 6155772, "UICinematicIntroInfo.db2" }, { 3502042, "UICovenantAbility.db2" }, @@ -942,6 +944,7 @@ DB2FileInfo const DBFilesClientList[] = { 1729547, "UIExpansionDisplayInfo.db2" }, { 1729546, "UIExpansionDisplayInfoIcon.db2" }, { 4861207, "UIGenericWidgetDisplay.db2" }, + { 6237800, "UIMapPinInfo.db2" }, { 4530951, "UIModifiedInstance.db2" }, { 3556601, "UIScriptedAnimationEffect.db2" }, { 2960122, "UISplashScreen.db2" },