aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-12-16 00:09:26 +0100
committerShauren <shauren.trinity@gmail.com>2025-12-16 00:09:26 +0100
commitbd2b12fa36830c6b12e124359f46ac974d554080 (patch)
treebf34422aeca361b8027256d53c80777865ae2933
parentaf57aa29dcfc9f25dba794883f0180a22ce28133 (diff)
Core: Updated to 11.2.7HEADmaster
-rw-r--r--sql/base/auth_database.sql19
-rw-r--r--sql/updates/auth/master/2025_12_15_00_auth.sql23
-rw-r--r--sql/updates/hotfixes/master/2025_12_15_00_hotfixes.sql17
-rw-r--r--sql/updates/world/master/2025_12_15_00_world.sql24
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp34
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp20
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp2
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h42
-rw-r--r--src/server/game/DataStores/DB2Metadata.h1105
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp17
-rw-r--r--src/server/game/DataStores/DB2Stores.h4
-rw-r--r--src/server/game/DataStores/DB2Structure.h12
-rw-r--r--src/server/game/DataStores/DBCEnums.h211
-rw-r--r--src/server/game/DataStores/GameTables.h6
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp2
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.h3
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp4
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h132
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp1
-rw-r--r--src/server/game/Entities/GameObject/GameObjectData.h1
-rw-r--r--src/server/game/Entities/Item/Item.cpp4
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.h30
-rw-r--r--src/server/game/Entities/Object/Object.cpp18
-rw-r--r--src/server/game/Entities/Object/Object.h3
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp100
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h27
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp1940
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h806
-rw-r--r--src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h98
-rw-r--r--src/server/game/Entities/Player/Player.cpp10
-rw-r--r--src/server/game/Entities/Player/Player.h17
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp7
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp22
-rw-r--r--src/server/game/Entities/Unit/Unit.h1
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp28
-rw-r--r--src/server/game/Handlers/AuthHandler.cpp9
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp5
-rw-r--r--src/server/game/Handlers/HousingHandler.cpp28
-rw-r--r--src/server/game/Handlers/LFGHandler.cpp2
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h37
-rw-r--r--src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp5
-rw-r--r--src/server/game/Quests/QuestDef.cpp47
-rw-r--r--src/server/game/Quests/QuestDef.h9
-rw-r--r--src/server/game/Server/Packets/AllPackets.h1
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h4
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h9
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h3
-rw-r--r--src/server/game/Server/Packets/HousingPackets.cpp27
-rw-r--r--src/server/game/Server/Packets/HousingPackets.h36
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h5
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h2
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp16
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h10
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp13
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h34
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h2
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp38
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h21
-rw-r--r--src/server/game/Server/Packets/TalentPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/TicketPackets.cpp20
-rw-r--r--src/server/game/Server/Packets/TicketPackets.h10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp101
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h4258
-rw-r--r--src/server/game/Server/WorldSession.cpp1
-rw-r--r--src/server/game/Server/WorldSession.h7
-rw-r--r--src/server/game/Spells/SpellEffects.cpp7
-rw-r--r--src/server/game/Spells/SpellInfo.cpp7
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h40
73 files changed, 6583 insertions, 3053 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index 51904bee814..ec826ba5218 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -1355,7 +1355,14 @@ INSERT INTO `build_auth_key` VALUES
(64502,'Mac','x64','WoWC',0x6DCE3BA9C0ACF638AE599680200483AE),
(64502,'Win','A64','WoW',0x51DF09ABE30D38142EB5942ED774301B),
(64502,'Win','x64','WoW',0x54D307CF2BC84E50E94C2D3A95CD6D7B),
-(64502,'Win','x64','WoWC',0xA968CFA8B0558F433B3E483E844FBFC3);
+(64502,'Win','x64','WoWC',0xA968CFA8B0558F433B3E483E844FBFC3),
+(64877,'Mac','A64','WoW',0xB903471C43EBDC5BABF6FB604A3A5E69),
+(64877,'Mac','A64','WoWC',0x3DFEDC25E9BDF2C8C30E0E3F0F6EB6D4),
+(64877,'Mac','x64','WoW',0x98464DDFFC9A5786DA1F053EA520BA32),
+(64877,'Mac','x64','WoWC',0x01003F46907A168B2BDF036575802098),
+(64877,'Win','A64','WoW',0x026ED07009997B857BB37DCBB5B11477),
+(64877,'Win','x64','WoW',0x6AB7C89863A9D6CDA9C0FAE710FEB126),
+(64877,'Win','x64','WoWC',0xBD52F0D3F7C92642185E963CEA424BD3);
/*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1772,7 +1779,8 @@ INSERT INTO `build_info` VALUES
(64270,11,2,5,NULL),
(64395,11,2,5,NULL),
(64484,11,2,5,NULL),
-(64502,11,2,5,NULL);
+(64502,11,2,5,NULL),
+(64877,11,2,7,NULL);
/*!40000 ALTER TABLE `build_info` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3385,7 +3393,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 '64502',
+ `gamebuild` int unsigned NOT NULL DEFAULT '64877',
`Region` tinyint unsigned NOT NULL DEFAULT '1',
`Battlegroup` tinyint unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
@@ -3400,7 +3408,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,64502,1,1);
+(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,64877,1,1);
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3930,7 +3938,8 @@ INSERT INTO `updates` VALUES
('2025_11_07_00_auth.sql','496BAF87666950FDBA459CC72472AAB4CBD71D40','RELEASED','2025-11-07 09:46:17',0),
('2025_11_15_00_auth.sql','744E145E7EFBADDAF0BAC00F6FC84A1FE79EDFCA','RELEASED','2025-11-15 12:09:00',0),
('2025_11_18_00_auth.sql','AAE3FEB4363A16253C7ADF8CF5973E3694C5BC52','RELEASED','2025-11-18 20:09:47',0),
-('2025_11_19_00_auth.sql','2E89C66714539C9713B9ADD3F7697730A426C795','RELEASED','2025-11-19 08:20:00',0);
+('2025_11_19_00_auth.sql','2E89C66714539C9713B9ADD3F7697730A426C795','RELEASED','2025-11-19 08:20:00',0),
+('2025_12_15_00_auth.sql','CA8ADF39030282B3D2627C15E751CC1D81618BAE','RELEASED','2025-12-15 15:39:58',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/master/2025_12_15_00_auth.sql b/sql/updates/auth/master/2025_12_15_00_auth.sql
new file mode 100644
index 00000000000..4493eac6680
--- /dev/null
+++ b/sql/updates/auth/master/2025_12_15_00_auth.sql
@@ -0,0 +1,23 @@
+DELETE FROM `build_info` WHERE `build` IN (64877);
+INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
+(64877,11,2,7,NULL);
+
+DELETE FROM `build_auth_key` WHERE `build`=64877 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build`=64877 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
+DELETE FROM `build_auth_key` WHERE `build`=64877 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build`=64877 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
+DELETE FROM `build_auth_key` WHERE `build`=64877 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build`=64877 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build`=64877 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
+INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
+(64877,'Mac','A64','WoW',0xB903471C43EBDC5BABF6FB604A3A5E69),
+(64877,'Mac','A64','WoWC',0x3DFEDC25E9BDF2C8C30E0E3F0F6EB6D4),
+(64877,'Mac','x64','WoW',0x98464DDFFC9A5786DA1F053EA520BA32),
+(64877,'Mac','x64','WoWC',0x01003F46907A168B2BDF036575802098),
+(64877,'Win','A64','WoW',0x026ED07009997B857BB37DCBB5B11477),
+(64877,'Win','x64','WoW',0x6AB7C89863A9D6CDA9C0FAE710FEB126),
+(64877,'Win','x64','WoWC',0xBD52F0D3F7C92642185E963CEA424BD3);
+
+UPDATE `realmlist` SET `gamebuild`=64877 WHERE `gamebuild`=64502;
+
+ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '64877';
diff --git a/sql/updates/hotfixes/master/2025_12_15_00_hotfixes.sql b/sql/updates/hotfixes/master/2025_12_15_00_hotfixes.sql
new file mode 100644
index 00000000000..d91f871303f
--- /dev/null
+++ b/sql/updates/hotfixes/master/2025_12_15_00_hotfixes.sql
@@ -0,0 +1,17 @@
+ALTER TABLE `conditional_content_tuning` ADD COLUMN `RedirectEnum` int NOT NULL DEFAULT 0 AFTER `RedirectFlag`;
+
+ALTER TABLE `gossip_npc_option` ADD COLUMN `NeighborhoodMapID` int NOT NULL DEFAULT 0 AFTER `Unknown_1002_14`;
+
+ALTER TABLE `item` ADD COLUMN `Unknown1127` int NOT NULL DEFAULT 0 AFTER `CraftingQualityID`;
+
+ALTER TABLE `item_effect` ADD COLUMN `PlayerConditionID` int NOT NULL DEFAULT 0 AFTER `ChrSpecializationID`;
+
+ALTER TABLE `item_scaling_config` ADD COLUMN `Flags` int NOT NULL DEFAULT 0 AFTER `Unknown1125`;
+
+ALTER TABLE `item_sparse` ADD COLUMN `Unknown1127` int NOT NULL DEFAULT 0 AFTER `ItemLevelOffsetItemLevel`;
+
+ALTER TABLE `map_challenge_mode` ADD COLUMN `MaxMedals` int NOT NULL DEFAULT 0 AFTER `Flags`;
+ALTER TABLE `map_challenge_mode` ADD COLUMN `CriteriaCount4` smallint NOT NULL DEFAULT 0 AFTER `CriteriaCount3`;
+ALTER TABLE `map_challenge_mode` ADD COLUMN `CriteriaCount5` smallint NOT NULL DEFAULT 0 AFTER `CriteriaCount4`;
+
+ALTER TABLE `spell_visual` ADD COLUMN `StateKit` int NOT NULL DEFAULT 0 AFTER `MissileImpactOffset3`;
diff --git a/sql/updates/world/master/2025_12_15_00_world.sql b/sql/updates/world/master/2025_12_15_00_world.sql
new file mode 100644
index 00000000000..ffb348fc854
--- /dev/null
+++ b/sql/updates/world/master/2025_12_15_00_world.sql
@@ -0,0 +1,24 @@
+ALTER TABLE `gameobject_template` ADD `RequiredLevel` int NOT NULL DEFAULT 0 AFTER `ContentTuningId`;
+
+ALTER TABLE `quest_objectives`
+ ADD `SecondaryAmount` int NOT NULL DEFAULT 0 AFTER `Amount`,
+ ADD `ParentObjectiveID` int NOT NULL DEFAULT 0 AFTER `ProgressBarWeight`,
+ ADD `Visible` tinyint(1) unsigned NOT NULL DEFAULT 1 AFTER `ParentObjectiveID`;
+
+DROP TABLE IF EXISTS `quest_reward_house_room`;
+CREATE TABLE `quest_reward_house_room` (
+ `QuestID` int unsigned NOT NULL,
+ `OrderIndex` int NOT NULL,
+ `HouseRoomID` int NOT NULL,
+ `VerifiedBuild` int NOT NULL DEFAULT '0',
+ PRIMARY KEY (`QuestID`,`OrderIndex`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+DROP TABLE IF EXISTS `quest_reward_house_decor`;
+CREATE TABLE `quest_reward_house_decor` (
+ `QuestID` int unsigned NOT NULL,
+ `OrderIndex` int NOT NULL,
+ `HouseDecorID` int NOT NULL,
+ `VerifiedBuild` int NOT NULL DEFAULT '0',
+ PRIMARY KEY (`QuestID`,`OrderIndex`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index 201e9563379..816b3216ce2 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -459,8 +459,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONDITIONAL_CHR_MODEL, "SELECT MAX(ID) + 1 FROM conditional_chr_model", CONNECTION_SYNCH);
// ConditionalContentTuning.db2
- PrepareStatement(HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING, "SELECT ID, OrderIndex, RedirectContentTuningID, RedirectFlag, ParentContentTuningID"
- " FROM conditional_content_tuning WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING, "SELECT ID, OrderIndex, RedirectContentTuningID, RedirectFlag, RedirectEnum, "
+ "ParentContentTuningID FROM conditional_content_tuning WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING, "SELECT MAX(ID) + 1 FROM conditional_content_tuning", CONNECTION_SYNCH);
// ContentTuning.db2
@@ -799,7 +799,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// GossipNpcOption.db2
PrepareStatement(HOTFIX_SEL_GOSSIP_NPC_OPTION, "SELECT ID, GossipNpcOption, LFGDungeonsID, TrainerID, GarrFollowerTypeID, CharShipmentID, "
"GarrTalentTreeID, UiMapID, UiItemInteractionID, Unknown_1000_8, Unknown_1000_9, CovenantID, GossipOptionID, TraitTreeID, ProfessionID, "
- "Unknown_1002_14, SkillLineID FROM gossip_npc_option WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "Unknown_1002_14, NeighborhoodMapID, SkillLineID FROM gossip_npc_option WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_GOSSIP_NPC_OPTION, "SELECT MAX(ID) + 1 FROM gossip_npc_option", CONNECTION_SYNCH);
// GuildColorBackground.db2
@@ -854,7 +854,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// Item.db2
PrepareStatement(HOTFIX_SEL_ITEM, "SELECT ID, ClassID, SubclassID, Material, InventoryType, SheatheType, SoundOverrideSubclassID, IconFileDataID, "
- "ItemGroupSoundsID, ContentTuningID, ModifiedCraftingReagentItemID, CraftingQualityID FROM item WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "ItemGroupSoundsID, ContentTuningID, ModifiedCraftingReagentItemID, CraftingQualityID, Unknown1127 FROM item WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM, "SELECT MAX(ID) + 1 FROM item", CONNECTION_SYNCH);
// ItemAppearance.db2
@@ -963,7 +963,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ItemEffect.db2
PrepareStatement(HOTFIX_SEL_ITEM_EFFECT, "SELECT ID, LegacySlotIndex, TriggerType, Charges, CoolDownMSec, CategoryCoolDownMSec, SpellCategoryID, "
- "SpellID, ChrSpecializationID FROM item_effect WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "SpellID, ChrSpecializationID, PlayerConditionID FROM item_effect WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_EFFECT, "SELECT MAX(ID) + 1 FROM item_effect", CONNECTION_SYNCH);
// ItemExtendedCost.db2
@@ -1024,8 +1024,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT MAX(ID) + 1 FROM item_price_base", CONNECTION_SYNCH);
// ItemScalingConfig.db2
- PrepareStatement(HOTFIX_SEL_ITEM_SCALING_CONFIG, "SELECT ID, ItemOffsetCurveID, ItemLevel, RequiredLevel, Unknown1125 FROM item_scaling_config"
- " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_SCALING_CONFIG, "SELECT ID, ItemOffsetCurveID, ItemLevel, RequiredLevel, Unknown1125, Flags"
+ " FROM item_scaling_config WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SCALING_CONFIG, "SELECT MAX(ID) + 1 FROM item_scaling_config", CONNECTION_SYNCH);
// ItemSearchName.db2
@@ -1058,11 +1058,11 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, Stackable, "
"MaxCount, MinReputation, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, Flags3, "
"Flags4, Flags5, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, PlayerLevelToItemLevelCurveID, ItemLevelOffsetCurveID, "
- "ItemLevelOffsetItemLevel, ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, GemProperties, SocketMatchEnchantmentId, "
- "TotemCategoryID, InstanceBound, ZoneBound1, ZoneBound2, ItemSet, LockID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, "
- "ItemLevel, AllowableClass, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, "
- "PageMaterialID, Bonding, DamageDamageType, ContainerSlots, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, "
- "OverallQualityID FROM item_sparse WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "ItemLevelOffsetItemLevel, Unknown1127, ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, GemProperties, "
+ "SocketMatchEnchantmentId, TotemCategoryID, InstanceBound, ZoneBound1, ZoneBound2, ItemSet, LockID, PageID, ItemDelay, MinFactionID, "
+ "RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, SocketType2, "
+ "SocketType3, SheatheType, Material, PageMaterialID, Bonding, DamageDamageType, ContainerSlots, RequiredPVPMedal, RequiredPVPRank, "
+ "RequiredLevel, InventoryType, OverallQualityID FROM item_sparse WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT MAX(ID) + 1 FROM item_sparse", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang"
" FROM item_sparse_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH);
@@ -1183,10 +1183,10 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"PvpLongDescription_lang FROM map_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH);
// MapChallengeMode.db2
- PrepareStatement(HOTFIX_SEL_MAP_CHALLENGE_MODE, "SELECT Name, ID, MapID, Flags, ExpansionLevel, RequiredWorldStateID, CriteriaCount1, "
- "CriteriaCount2, CriteriaCount3, FirstRewardQuestID1, FirstRewardQuestID2, FirstRewardQuestID3, FirstRewardQuestID4, FirstRewardQuestID5, "
- "FirstRewardQuestID6, RewardQuestID1, RewardQuestID2, RewardQuestID3, RewardQuestID4, RewardQuestID5, RewardQuestID6 FROM map_challenge_mode"
- " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_MAP_CHALLENGE_MODE, "SELECT Name, ID, MapID, Flags, MaxMedals, ExpansionLevel, RequiredWorldStateID, CriteriaCount1, "
+ "CriteriaCount2, CriteriaCount3, CriteriaCount4, CriteriaCount5, FirstRewardQuestID1, FirstRewardQuestID2, FirstRewardQuestID3, "
+ "FirstRewardQuestID4, FirstRewardQuestID5, FirstRewardQuestID6, RewardQuestID1, RewardQuestID2, RewardQuestID3, RewardQuestID4, "
+ "RewardQuestID5, RewardQuestID6 FROM map_challenge_mode WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAP_CHALLENGE_MODE, "SELECT MAX(ID) + 1 FROM map_challenge_mode", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP_CHALLENGE_MODE, "SELECT ID, Name_lang FROM map_challenge_mode_locale WHERE (`VerifiedBuild` > 0) = ?"
" AND locale = ?", CONNECTION_SYNCH);
@@ -1760,7 +1760,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// SpellVisual.db2
PrepareStatement(HOTFIX_SEL_SPELL_VISUAL, "SELECT ID, MissileCastOffset1, MissileCastOffset2, MissileCastOffset3, MissileImpactOffset1, "
- "MissileImpactOffset2, MissileImpactOffset3, AnimEventSoundID, Flags, MissileAttachment, MissileDestinationAttachment, "
+ "MissileImpactOffset2, MissileImpactOffset3, StateKit, AnimEventSoundID, Flags, MissileAttachment, MissileDestinationAttachment, "
"MissileCastPositionerID, MissileImpactPositionerID, MissileTargetingKit, HostileSpellVisualID, CasterSpellVisualID, SpellVisualMissileSetID, "
"DamageNumberDelay, LowViolenceSpellVisualID, RaidSpellVisualMissileSetID, ReducedUnexpectedCameraMovementSpellVisualID FROM spell_visual"
" WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index 850f6f9f970..38b14d5e75a 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -3511,7 +3511,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
case ModifierTreeType::PlayerLevelWithinContentTuning: // 268
{
uint8 level = referencePlayer->GetLevel();
- if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, 0))
+ if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, {}))
{
if (secondaryAsset)
return level >= levels->MinLevelWithDelta && level <= levels->MaxLevelWithDelta;
@@ -3524,7 +3524,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
if (!ref || !ref->IsUnit())
return false;
uint8 level = ref->ToUnit()->GetLevel();
- if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, 0))
+ if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, {}))
{
if (secondaryAsset)
return level >= levels->MinLevelWithDelta && level <= levels->MaxLevelWithDelta;
@@ -3544,7 +3544,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
case ModifierTreeType::PlayerLevelWithinOrAboveContentTuning: // 272
{
uint8 level = referencePlayer->GetLevel();
- if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, 0))
+ if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, {}))
return secondaryAsset ? level >= levels->MinLevelWithDelta : level >= levels->MinLevel;
return false;
}
@@ -3553,7 +3553,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
if (!ref || !ref->IsUnit())
return false;
uint8 level = ref->ToUnit()->GetLevel();
- if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, 0))
+ if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(reqValue, {}))
return secondaryAsset ? level >= levels->MinLevelWithDelta : level >= levels->MinLevel;
return false;
}
@@ -3700,7 +3700,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
return referencePlayer->m_activePlayerData->RuneforgePowers[block] & (1 << bit);
}
case ModifierTreeType::PlayerInChromieTimeForScaling: // 304
- if (!(referencePlayer->m_playerData->CtrOptions->ConditionalFlags & 1))
+ if (referencePlayer->m_playerData->CtrOptions->ConditionalFlags.empty() || !(referencePlayer->m_playerData->CtrOptions->ConditionalFlags[0] & 1))
return false;
break;
case ModifierTreeType::IsRaFRecruit: // 305
@@ -4061,6 +4061,16 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
if (!referencePlayer->GetGuildId())
return false;
break;
+ case ModifierTreeType::PlayerMoneyIsRelOp: // 417
+ switch (reqValue)
+ {
+ case 1: if (referencePlayer->GetMoney() <= secondaryAsset) return false; break;
+ case 2: if (referencePlayer->GetMoney() >= secondaryAsset) return false; break;
+ case 3: if (referencePlayer->GetMoney() < secondaryAsset) return false; break;
+ case 4: if (referencePlayer->GetMoney() > secondaryAsset) return false; break;
+ default: if (referencePlayer->GetMoney() != secondaryAsset) return false; break;
+ }
+ break;
default:
return false;
}
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 61f44b98202..6745f9fa553 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -3977,7 +3977,7 @@ int32 GetUnitConditionVariable(Unit const* unit, Unit const* otherUnit, UnitCond
case UnitConditionVariable::Sex:
return unit->GetGender();
case UnitConditionVariable::LevelWithinContentTuning:
- if (Optional<ContentTuningLevels> levelRange = sDB2Manager.GetContentTuningData(value, 0))
+ if (Optional<ContentTuningLevels> levelRange = sDB2Manager.GetContentTuningData(value, {}))
return unit->GetLevel() >= levelRange->MinLevel && unit->GetLevel() <= levelRange->MaxLevel ? value : 0;
return 0;
case UnitConditionVariable::IsFlying:
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h
index df2aa42cafd..5905f19203c 100644
--- a/src/server/game/DataStores/DB2LoadInfo.h
+++ b/src/server/game/DataStores/DB2LoadInfo.h
@@ -1305,16 +1305,17 @@ struct ConditionalChrModelLoadInfo
struct ConditionalContentTuningLoadInfo
{
- static constexpr DB2FieldMeta Fields[5] =
+ static constexpr DB2FieldMeta Fields[6] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "OrderIndex" },
{ .IsSigned = true, .Type = FT_INT, .Name = "RedirectContentTuningID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "RedirectFlag" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "RedirectEnum" },
{ .IsSigned = false, .Type = FT_INT, .Name = "ParentContentTuningID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 5, &ConditionalContentTuningMeta::Instance, HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING };
+ static constexpr DB2LoadInfo Instance{ Fields, 6, &ConditionalContentTuningMeta::Instance, HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING };
};
struct ContentTuningLoadInfo
@@ -2463,7 +2464,7 @@ struct GlyphRequiredSpecLoadInfo
struct GossipNpcOptionLoadInfo
{
- static constexpr DB2FieldMeta Fields[17] =
+ static constexpr DB2FieldMeta Fields[18] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "GossipNpcOption" },
@@ -2481,10 +2482,11 @@ struct GossipNpcOptionLoadInfo
{ .IsSigned = true, .Type = FT_INT, .Name = "TraitTreeID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ProfessionID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "Unknown_1002_14" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "NeighborhoodMapID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "SkillLineID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 17, &GossipNPCOptionMeta::Instance, HOTFIX_SEL_GOSSIP_NPC_OPTION };
+ static constexpr DB2LoadInfo Instance{ Fields, 18, &GossipNPCOptionMeta::Instance, HOTFIX_SEL_GOSSIP_NPC_OPTION };
};
struct GuildColorBackgroundLoadInfo
@@ -2681,7 +2683,7 @@ struct ImportPriceWeaponLoadInfo
struct ItemLoadInfo
{
- static constexpr DB2FieldMeta Fields[12] =
+ static constexpr DB2FieldMeta Fields[13] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ClassID" },
@@ -2695,9 +2697,10 @@ struct ItemLoadInfo
{ .IsSigned = true, .Type = FT_INT, .Name = "ContentTuningID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ModifiedCraftingReagentItemID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "CraftingQualityID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Unknown1127" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 12, &ItemMeta::Instance, HOTFIX_SEL_ITEM };
+ static constexpr DB2LoadInfo Instance{ Fields, 13, &ItemMeta::Instance, HOTFIX_SEL_ITEM };
};
struct ItemAppearanceLoadInfo
@@ -3031,7 +3034,7 @@ struct ItemDisenchantLootLoadInfo
struct ItemEffectLoadInfo
{
- static constexpr DB2FieldMeta Fields[9] =
+ static constexpr DB2FieldMeta Fields[10] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "LegacySlotIndex" },
@@ -3042,9 +3045,10 @@ struct ItemEffectLoadInfo
{ .IsSigned = false, .Type = FT_SHORT, .Name = "SpellCategoryID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "SpellID" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "ChrSpecializationID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "PlayerConditionID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 9, &ItemEffectMeta::Instance, HOTFIX_SEL_ITEM_EFFECT };
+ static constexpr DB2LoadInfo Instance{ Fields, 10, &ItemEffectMeta::Instance, HOTFIX_SEL_ITEM_EFFECT };
};
struct ItemExtendedCostLoadInfo
@@ -3217,16 +3221,17 @@ struct ItemPriceBaseLoadInfo
struct ItemScalingConfigLoadInfo
{
- static constexpr DB2FieldMeta Fields[5] =
+ static constexpr DB2FieldMeta Fields[6] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ItemOffsetCurveID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ItemLevel" },
{ .IsSigned = true, .Type = FT_INT, .Name = "RequiredLevel" },
{ .IsSigned = true, .Type = FT_INT, .Name = "Unknown1125" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 5, &ItemScalingConfigMeta::Instance, HOTFIX_SEL_ITEM_SCALING_CONFIG };
+ static constexpr DB2LoadInfo Instance{ Fields, 6, &ItemScalingConfigMeta::Instance, HOTFIX_SEL_ITEM_SCALING_CONFIG };
};
struct ItemSearchNameLoadInfo
@@ -3304,7 +3309,7 @@ struct ItemSetSpellLoadInfo
struct ItemSparseLoadInfo
{
- static constexpr DB2FieldMeta Fields[101] =
+ static constexpr DB2FieldMeta Fields[102] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_LONG, .Name = "AllowableRace" },
@@ -3372,6 +3377,7 @@ struct ItemSparseLoadInfo
{ .IsSigned = true, .Type = FT_INT, .Name = "PlayerLevelToItemLevelCurveID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ItemLevelOffsetCurveID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ItemLevelOffsetItemLevel" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Unknown1127" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "ItemNameDescriptionID" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "RequiredTransmogHoliday" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "RequiredHoliday" },
@@ -3409,7 +3415,7 @@ struct ItemSparseLoadInfo
{ .IsSigned = true, .Type = FT_BYTE, .Name = "OverallQualityID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 101, &ItemSparseMeta::Instance, HOTFIX_SEL_ITEM_SPARSE };
+ static constexpr DB2LoadInfo Instance{ Fields, 102, &ItemSparseMeta::Instance, HOTFIX_SEL_ITEM_SPARSE };
};
struct ItemSpecLoadInfo
@@ -3869,17 +3875,20 @@ struct MapLoadInfo
struct MapChallengeModeLoadInfo
{
- static constexpr DB2FieldMeta Fields[21] =
+ static constexpr DB2FieldMeta Fields[24] =
{
{ .IsSigned = false, .Type = FT_STRING, .Name = "Name" },
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "MapID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "MaxMedals" },
{ .IsSigned = false, .Type = FT_INT, .Name = "ExpansionLevel" },
{ .IsSigned = true, .Type = FT_INT, .Name = "RequiredWorldStateID" },
{ .IsSigned = true, .Type = FT_SHORT, .Name = "CriteriaCount1" },
{ .IsSigned = true, .Type = FT_SHORT, .Name = "CriteriaCount2" },
{ .IsSigned = true, .Type = FT_SHORT, .Name = "CriteriaCount3" },
+ { .IsSigned = true, .Type = FT_SHORT, .Name = "CriteriaCount4" },
+ { .IsSigned = true, .Type = FT_SHORT, .Name = "CriteriaCount5" },
{ .IsSigned = true, .Type = FT_INT, .Name = "FirstRewardQuestID1" },
{ .IsSigned = true, .Type = FT_INT, .Name = "FirstRewardQuestID2" },
{ .IsSigned = true, .Type = FT_INT, .Name = "FirstRewardQuestID3" },
@@ -3894,7 +3903,7 @@ struct MapChallengeModeLoadInfo
{ .IsSigned = true, .Type = FT_INT, .Name = "RewardQuestID6" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 21, &MapChallengeModeMeta::Instance, HOTFIX_SEL_MAP_CHALLENGE_MODE };
+ static constexpr DB2LoadInfo Instance{ Fields, 24, &MapChallengeModeMeta::Instance, HOTFIX_SEL_MAP_CHALLENGE_MODE };
};
struct MapDifficultyLoadInfo
@@ -5803,7 +5812,7 @@ struct SpellTotemsLoadInfo
struct SpellVisualLoadInfo
{
- static constexpr DB2FieldMeta Fields[21] =
+ static constexpr DB2FieldMeta Fields[22] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "MissileCastOffset1" },
@@ -5812,6 +5821,7 @@ struct SpellVisualLoadInfo
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "MissileImpactOffset1" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "MissileImpactOffset2" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "MissileImpactOffset3" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "StateKit" },
{ .IsSigned = false, .Type = FT_INT, .Name = "AnimEventSoundID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
{ .IsSigned = true, .Type = FT_BYTE, .Name = "MissileAttachment" },
@@ -5828,7 +5838,7 @@ struct SpellVisualLoadInfo
{ .IsSigned = true, .Type = FT_INT, .Name = "ReducedUnexpectedCameraMovementSpellVisualID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 21, &SpellVisualMeta::Instance, HOTFIX_SEL_SPELL_VISUAL };
+ static constexpr DB2LoadInfo Instance{ Fields, 22, &SpellVisualMeta::Instance, HOTFIX_SEL_SPELL_VISUAL };
};
struct SpellVisualEffectNameLoadInfo
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index d41a7c397e4..d78a9c69e46 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -46,7 +46,7 @@ struct AccountStoreCategoryMeta
struct AccountStoreItemMeta
{
- static constexpr DB2MetaField Fields[17] =
+ static constexpr DB2MetaField Fields[20] =
{
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
@@ -65,6 +65,9 @@ struct AccountStoreItemMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -72,9 +75,9 @@ struct AccountStoreItemMeta
.FileDataId = 6197817,
.IndexField = 2,
.ParentIndexField = 3,
- .FieldCount = 17,
- .FileFieldCount = 17,
- .LayoutHash = 0x818F4DA6,
+ .FieldCount = 20,
+ .FileFieldCount = 20,
+ .LayoutHash = 0x83E16957,
.Fields = Fields
};
};
@@ -4576,12 +4579,13 @@ struct CollectableSourceEncounterSparseMeta
struct CollectableSourceInfoMeta
{
- static constexpr DB2MetaField Fields[4] =
+ static constexpr DB2MetaField Fields[5] =
{
{ .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -4589,9 +4593,9 @@ struct CollectableSourceInfoMeta
.FileDataId = 5152112,
.IndexField = 1,
.ParentIndexField = -1,
- .FieldCount = 4,
- .FileFieldCount = 4,
- .LayoutHash = 0x2EFCC218,
+ .FieldCount = 5,
+ .FileFieldCount = 5,
+ .LayoutHash = 0x6509E3B5,
.Fields = Fields
};
};
@@ -4867,22 +4871,23 @@ struct ConditionalChrModelMeta
struct ConditionalContentTuningMeta
{
- static constexpr DB2MetaField Fields[4] =
+ static constexpr DB2MetaField Fields[5] =
{
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
{
.FileDataId = 3501965,
.IndexField = -1,
- .ParentIndexField = 3,
- .FieldCount = 4,
- .FileFieldCount = 3,
- .LayoutHash = 0x15616FBC,
+ .ParentIndexField = 4,
+ .FieldCount = 5,
+ .FileFieldCount = 4,
+ .LayoutHash = 0xB4A236C9,
.Fields = Fields
};
};
@@ -6462,6 +6467,88 @@ struct CurvePointMeta
};
};
+struct DataTagGroupMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6653645,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 1,
+ .FileFieldCount = 1,
+ .LayoutHash = 0xEDA13DE2,
+ .Fields = Fields
+ };
+};
+
+struct DataTagGroupXDataTagMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6653584,
+ .IndexField = -1,
+ .ParentIndexField = 0,
+ .FieldCount = 2,
+ .FileFieldCount = 2,
+ .LayoutHash = 0x62484461,
+ .Fields = Fields
+ };
+};
+
+struct DataTagInfoMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6652252,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0xDB46F772,
+ .Fields = Fields
+ };
+};
+
+struct DataTagXRecordMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6860787,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 4,
+ .FileFieldCount = 4,
+ .LayoutHash = 0x60AF6490,
+ .Fields = Fields
+ };
+};
+
struct DeathThudLookupsMeta
{
static constexpr DB2MetaField Fields[4] =
@@ -6571,6 +6658,95 @@ struct DeclinedWordCasesMeta
};
};
+struct DecorCategoryMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6247348,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 4,
+ .FileFieldCount = 4,
+ .LayoutHash = 0x3E2C50EB,
+ .Fields = Fields
+ };
+};
+
+struct DecorDyeSlotMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6254050,
+ .IndexField = 0,
+ .ParentIndexField = 2,
+ .FieldCount = 5,
+ .FileFieldCount = 5,
+ .LayoutHash = 0xB599D611,
+ .Fields = Fields
+ };
+};
+
+struct DecorSubcategoryMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6247357,
+ .IndexField = 1,
+ .ParentIndexField = 3,
+ .FieldCount = 5,
+ .FileFieldCount = 5,
+ .LayoutHash = 0xA64237DF,
+ .Fields = Fields
+ };
+};
+
+struct DecorXDecorSubcategoryMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6247358,
+ .IndexField = 0,
+ .ParentIndexField = 1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0xC0B2F336,
+ .Fields = Fields
+ };
+};
+
struct DelvesSeasonMeta
{
static constexpr DB2MetaField Fields[1] =
@@ -6917,6 +7093,52 @@ struct DurabilityQualityMeta
};
};
+struct DyeColorMeta
+{
+ static constexpr DB2MetaField Fields[8] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6254051,
+ .IndexField = 1,
+ .ParentIndexField = 2,
+ .FieldCount = 8,
+ .FileFieldCount = 8,
+ .LayoutHash = 0x184BC922,
+ .Fields = Fields
+ };
+};
+
+struct DyeColorCategoryMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6254052,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 2,
+ .FileFieldCount = 2,
+ .LayoutHash = 0xEBA8ED0E,
+ .Fields = Fields
+ };
+};
+
struct EdgeGlowEffectMeta
{
static constexpr DB2MetaField Fields[13] =
@@ -7141,6 +7363,166 @@ struct ExpectedStatModMeta
};
};
+struct ExteriorComponentMeta
+{
+ static constexpr DB2MetaField Fields[13] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6931305,
+ .IndexField = 2,
+ .ParentIndexField = 12,
+ .FieldCount = 13,
+ .FileFieldCount = 12,
+ .LayoutHash = 0x027A2F44,
+ .Fields = Fields
+ };
+};
+
+struct ExteriorComponentExitPointMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6931306,
+ .IndexField = 2,
+ .ParentIndexField = 3,
+ .FieldCount = 4,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x567CA080,
+ .Fields = Fields
+ };
+};
+
+struct ExteriorComponentGroupMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 7280847,
+ .IndexField = 1,
+ .ParentIndexField = 2,
+ .FieldCount = 3,
+ .FileFieldCount = 2,
+ .LayoutHash = 0x2D47B58D,
+ .Fields = Fields
+ };
+};
+
+struct ExteriorComponentGroupXHookMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 7280848,
+ .IndexField = 0,
+ .ParentIndexField = 1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x354DC9D0,
+ .Fields = Fields
+ };
+};
+
+struct ExteriorComponentHookMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6931307,
+ .IndexField = 2,
+ .ParentIndexField = 4,
+ .FieldCount = 5,
+ .FileFieldCount = 4,
+ .LayoutHash = 0xD5B5463C,
+ .Fields = Fields
+ };
+};
+
+struct ExteriorComponentTypeMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6931308,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x4A583842,
+ .Fields = Fields
+ };
+};
+
+struct ExteriorComponentXGroupMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 7412982,
+ .IndexField = 0,
+ .ParentIndexField = -1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x2373F82F,
+ .Fields = Fields
+ };
+};
+
struct ExtraAbilityInfoMeta
{
static constexpr DB2MetaField Fields[6] =
@@ -7559,7 +7941,7 @@ struct GameModeMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -7569,7 +7951,7 @@ struct GameModeMeta
.ParentIndexField = -1,
.FieldCount = 12,
.FileFieldCount = 12,
- .LayoutHash = 0x3609B763,
+ .LayoutHash = 0xBB298117,
.Fields = Fields
};
};
@@ -9456,7 +9838,7 @@ struct GlyphRequiredSpecMeta
struct GossipNPCOptionMeta
{
- static constexpr DB2MetaField Fields[16] =
+ static constexpr DB2MetaField Fields[17] =
{
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
@@ -9474,6 +9856,7 @@ struct GossipNPCOptionMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -9481,9 +9864,9 @@ struct GossipNPCOptionMeta
.FileDataId = 4278503,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 16,
- .FileFieldCount = 16,
- .LayoutHash = 0x29CC1EF1,
+ .FieldCount = 17,
+ .FileFieldCount = 17,
+ .LayoutHash = 0x5679719D,
.Fields = Fields
};
};
@@ -10200,23 +10583,216 @@ struct HotfixesMeta
};
};
+struct HouseMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5149690,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 4,
+ .FileFieldCount = 4,
+ .LayoutHash = 0x9E44E080,
+ .Fields = Fields
+ };
+};
+
struct HouseDecorMeta
{
- static constexpr DB2MetaField Fields[3] =
+ static constexpr DB2MetaField Fields[18] =
{
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
{
.FileDataId = 5149691,
+ .IndexField = 2,
+ .ParentIndexField = -1,
+ .FieldCount = 18,
+ .FileFieldCount = 18,
+ .LayoutHash = 0xEAA015F9,
+ .Fields = Fields
+ };
+};
+
+struct HouseDecorMaterialMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { .Type = FT_LONG, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6855863,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 5,
+ .FileFieldCount = 5,
+ .LayoutHash = 0x3C05FE9C,
+ .Fields = Fields
+ };
+};
+
+struct HouseDecorThemeSetMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6860900,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x19AF3EA0,
+ .Fields = Fields
+ };
+};
+
+struct HouseExteriorWmoDataMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6931309,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 2,
+ .FileFieldCount = 2,
+ .LayoutHash = 0xEBA8ED0E,
+ .Fields = Fields
+ };
+};
+
+struct HouseLevelDataMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 7149539,
.IndexField = 0,
.ParentIndexField = -1,
.FieldCount = 3,
.FileFieldCount = 3,
- .LayoutHash = 0xA2E1530F,
+ .LayoutHash = 0xB9536B25,
+ .Fields = Fields
+ };
+};
+
+struct HouseLevelRewardInfoMeta
+{
+ static constexpr DB2MetaField Fields[6] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 7495433,
+ .IndexField = 2,
+ .ParentIndexField = -1,
+ .FieldCount = 6,
+ .FileFieldCount = 6,
+ .LayoutHash = 0x0B8D7D58,
+ .Fields = Fields
+ };
+};
+
+struct HouseRoomMeta
+{
+ static constexpr DB2MetaField Fields[7] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5163003,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 7,
+ .FileFieldCount = 7,
+ .LayoutHash = 0xDA77DDD3,
+ .Fields = Fields
+ };
+};
+
+struct HouseThemeMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6998392,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 4,
+ .FileFieldCount = 4,
+ .LayoutHash = 0x7307C6E9,
.Fields = Fields
};
};
@@ -10330,7 +10906,7 @@ struct InvasionClientDataMeta
struct ItemMeta
{
- static constexpr DB2MetaField Fields[11] =
+ static constexpr DB2MetaField Fields[12] =
{
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
@@ -10343,6 +10919,7 @@ struct ItemMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -10350,9 +10927,9 @@ struct ItemMeta
.FileDataId = 841626,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 11,
- .FileFieldCount = 11,
- .LayoutHash = 0xE39A209A,
+ .FieldCount = 12,
+ .FileFieldCount = 12,
+ .LayoutHash = 0x6D1DD0CE,
.Fields = Fields
};
};
@@ -11184,7 +11761,7 @@ struct ItemDisplayInfoModelMatResMeta
struct ItemEffectMeta
{
- static constexpr DB2MetaField Fields[8] =
+ static constexpr DB2MetaField Fields[9] =
{
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
@@ -11194,6 +11771,7 @@ struct ItemEffectMeta
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -11201,9 +11779,9 @@ struct ItemEffectMeta
.FileDataId = 969941,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 8,
- .FileFieldCount = 8,
- .LayoutHash = 0x2CEB026E,
+ .FieldCount = 9,
+ .FileFieldCount = 9,
+ .LayoutHash = 0xDA85CB08,
.Fields = Fields
};
};
@@ -11746,12 +12324,13 @@ struct ItemSalvageLootMeta
struct ItemScalingConfigMeta
{
- static constexpr DB2MetaField Fields[4] =
+ static constexpr DB2MetaField Fields[5] =
{
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -11759,9 +12338,9 @@ struct ItemScalingConfigMeta
.FileDataId = 7322705,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 4,
- .FileFieldCount = 4,
- .LayoutHash = 0x2A1E702E,
+ .FieldCount = 5,
+ .FileFieldCount = 5,
+ .LayoutHash = 0x7BEABE68,
.Fields = Fields
};
};
@@ -11845,7 +12424,7 @@ struct ItemSetSpellMeta
struct ItemSparseMeta
{
- static constexpr DB2MetaField Fields[66] =
+ static constexpr DB2MetaField Fields[67] =
{
{ .Type = FT_LONG, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
@@ -11881,6 +12460,7 @@ struct ItemSparseMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
@@ -11920,9 +12500,9 @@ struct ItemSparseMeta
.FileDataId = 1572924,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 66,
- .FileFieldCount = 66,
- .LayoutHash = 0x2928311F,
+ .FieldCount = 67,
+ .FileFieldCount = 67,
+ .LayoutHash = 0xABF517CD,
.Fields = Fields
};
};
@@ -11973,8 +12553,9 @@ struct ItemSpecOverrideMeta
struct ItemSquishEraMeta
{
- static constexpr DB2MetaField Fields[2] =
+ static constexpr DB2MetaField Fields[3] =
{
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
@@ -11982,11 +12563,11 @@ struct ItemSquishEraMeta
static constexpr DB2Meta Instance =
{
.FileDataId = 7322706,
- .IndexField = -1,
+ .IndexField = 0,
.ParentIndexField = -1,
- .FieldCount = 2,
- .FileFieldCount = 2,
- .LayoutHash = 0x0E5EEFD3,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x6764D247,
.Fields = Fields
};
};
@@ -13540,15 +14121,16 @@ struct MapCelestialBodyMeta
struct MapChallengeModeMeta
{
- static constexpr DB2MetaField Fields[9] =
+ static constexpr DB2MetaField Fields[10] =
{
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_SHORT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_SHORT, .ArraySize = 5, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 6, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 6, .IsSigned = true },
};
@@ -13558,9 +14140,9 @@ struct MapChallengeModeMeta
.FileDataId = 801709,
.IndexField = 1,
.ParentIndexField = 2,
- .FieldCount = 9,
- .FileFieldCount = 9,
- .LayoutHash = 0x531A0D41,
+ .FieldCount = 10,
+ .FileFieldCount = 10,
+ .LayoutHash = 0xAAC13A73,
.Fields = Fields
};
};
@@ -14775,6 +15357,180 @@ struct NamesReservedLocaleMeta
};
};
+struct NeighborhoodInitiativeMeta
+{
+ static constexpr DB2MetaField Fields[9] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6699736,
+ .IndexField = 2,
+ .ParentIndexField = -1,
+ .FieldCount = 9,
+ .FileFieldCount = 9,
+ .LayoutHash = 0x1C8B2515,
+ .Fields = Fields
+ };
+};
+
+struct NeighborhoodInitiativeRewardMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6702594,
+ .IndexField = 0,
+ .ParentIndexField = 3,
+ .FieldCount = 4,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x773AA9EA,
+ .Fields = Fields
+ };
+};
+
+struct NeighborhoodInitiativeTaskMeta
+{
+ static constexpr DB2MetaField Fields[8] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6702595,
+ .IndexField = 2,
+ .ParentIndexField = -1,
+ .FieldCount = 8,
+ .FileFieldCount = 8,
+ .LayoutHash = 0xF4A7B3C3,
+ .Fields = Fields
+ };
+};
+
+struct NeighborhoodInitiativeXTaskMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6708736,
+ .IndexField = -1,
+ .ParentIndexField = 1,
+ .FieldCount = 2,
+ .FileFieldCount = 1,
+ .LayoutHash = 0x985EB2D9,
+ .Fields = Fields
+ };
+};
+
+struct NeighborhoodMapMeta
+{
+ static constexpr DB2MetaField Fields[6] =
+ {
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5550624,
+ .IndexField = 1,
+ .ParentIndexField = -1,
+ .FieldCount = 6,
+ .FileFieldCount = 6,
+ .LayoutHash = 0x4973BA38,
+ .Fields = Fields
+ };
+};
+
+struct NeighborhoodNameGenMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6237720,
+ .IndexField = -1,
+ .ParentIndexField = 3,
+ .FieldCount = 4,
+ .FileFieldCount = 3,
+ .LayoutHash = 0xD8F6E78E,
+ .Fields = Fields
+ };
+};
+
+struct NeighborhoodPlotMeta
+{
+ static constexpr DB2MetaField Fields[15] =
+ {
+ { .Type = FT_LONG, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5550625,
+ .IndexField = 9,
+ .ParentIndexField = 10,
+ .FieldCount = 15,
+ .FileFieldCount = 15,
+ .LayoutHash = 0x4D8362A1,
+ .Fields = Fields
+ };
+};
+
struct NumTalentsAtLevelMeta
{
static constexpr DB2MetaField Fields[5] =
@@ -16939,7 +17695,7 @@ struct QuestMoneyRewardMeta
struct QuestObjectiveMeta
{
- static constexpr DB2MetaField Fields[8] =
+ static constexpr DB2MetaField Fields[9] =
{
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
@@ -16949,16 +17705,17 @@ struct QuestObjectiveMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
{
.FileDataId = 1251960,
.IndexField = -1,
- .ParentIndexField = 7,
- .FieldCount = 8,
- .FileFieldCount = 7,
- .LayoutHash = 0x0262E5DB,
+ .ParentIndexField = 8,
+ .FieldCount = 9,
+ .FileFieldCount = 8,
+ .LayoutHash = 0xB85A3F1F,
.Fields = Fields
};
};
@@ -17538,6 +18295,52 @@ struct ResistancesMeta
};
};
+struct RetroactiveDecorRewardMeta
+{
+ static constexpr DB2MetaField Fields[6] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 7439104,
+ .IndexField = 0,
+ .ParentIndexField = -1,
+ .FieldCount = 6,
+ .FileFieldCount = 6,
+ .LayoutHash = 0x1B37F823,
+ .Fields = Fields
+ };
+};
+
+struct RetroactiveDecorRewardCriteriaMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 7507122,
+ .IndexField = 0,
+ .ParentIndexField = 3,
+ .FieldCount = 4,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x383CA627,
+ .Fields = Fields
+ };
+};
+
struct RewardPackMeta
{
static constexpr DB2MetaField Fields[6] =
@@ -17647,6 +18450,147 @@ struct RolodexTypeMeta
};
};
+struct RoomComponentMeta
+{
+ static constexpr DB2MetaField Fields[8] =
+ {
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5503432,
+ .IndexField = 2,
+ .ParentIndexField = 3,
+ .FieldCount = 8,
+ .FileFieldCount = 8,
+ .LayoutHash = 0x50697E20,
+ .Fields = Fields
+ };
+};
+
+struct RoomComponentOptionMeta
+{
+ static constexpr DB2MetaField Fields[8] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5503433,
+ .IndexField = 0,
+ .ParentIndexField = -1,
+ .FieldCount = 8,
+ .FileFieldCount = 8,
+ .LayoutHash = 0x5F9E3AA3,
+ .Fields = Fields
+ };
+};
+
+struct RoomComponentOptionTextureMeta
+{
+ static constexpr DB2MetaField Fields[3] =
+ {
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5503564,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0xC433634F,
+ .Fields = Fields
+ };
+};
+
+struct RoomComponentTextureMeta
+{
+ static constexpr DB2MetaField Fields[7] =
+ {
+ { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5503573,
+ .IndexField = 1,
+ .ParentIndexField = 6,
+ .FieldCount = 7,
+ .FileFieldCount = 6,
+ .LayoutHash = 0x2C72D684,
+ .Fields = Fields
+ };
+};
+
+struct RoomGridLineMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6378467,
+ .IndexField = 1,
+ .ParentIndexField = 4,
+ .FieldCount = 5,
+ .FileFieldCount = 4,
+ .LayoutHash = 0xF36993C5,
+ .Fields = Fields
+ };
+};
+
+struct RoomWmoDataMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { .Type = FT_FLOAT, .ArraySize = 6, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 5503435,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 2,
+ .FileFieldCount = 2,
+ .LayoutHash = 0x5EEBE354,
+ .Fields = Fields
+ };
+};
+
struct RopeEffectMeta
{
static constexpr DB2MetaField Fields[9] =
@@ -17724,7 +18668,7 @@ struct SDReplacementModelMeta
struct SSAOSettingsMeta
{
- static constexpr DB2MetaField Fields[7] =
+ static constexpr DB2MetaField Fields[8] =
{
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
@@ -17733,6 +18677,7 @@ struct SSAOSettingsMeta
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -17740,9 +18685,9 @@ struct SSAOSettingsMeta
.FileDataId = 2056369,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 7,
- .FileFieldCount = 7,
- .LayoutHash = 0xAC8B8862,
+ .FieldCount = 8,
+ .FileFieldCount = 8,
+ .LayoutHash = 0x367173B6,
.Fields = Fields
};
};
@@ -18933,9 +19878,11 @@ struct SoundWaterfallEmitterMeta
struct SourceInfoMeta
{
- static constexpr DB2MetaField Fields[4] =
+ static constexpr DB2MetaField Fields[6] =
{
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
@@ -18944,11 +19891,11 @@ struct SourceInfoMeta
static constexpr DB2Meta Instance =
{
.FileDataId = 1313612,
- .IndexField = -1,
- .ParentIndexField = 3,
- .FieldCount = 4,
- .FileFieldCount = 3,
- .LayoutHash = 0xBE3A7BF3,
+ .IndexField = 1,
+ .ParentIndexField = 5,
+ .FieldCount = 6,
+ .FileFieldCount = 5,
+ .LayoutHash = 0xE718F422,
.Fields = Fields
};
};
@@ -20572,10 +21519,11 @@ struct SpellTotemsMeta
struct SpellVisualMeta
{
- static constexpr DB2MetaField Fields[16] =
+ static constexpr DB2MetaField Fields[17] =
{
{ .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
{ .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
@@ -20597,20 +21545,21 @@ struct SpellVisualMeta
.FileDataId = 897952,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 16,
- .FileFieldCount = 16,
- .LayoutHash = 0xFB411669,
+ .FieldCount = 17,
+ .FileFieldCount = 17,
+ .LayoutHash = 0xE2F62C2F,
.Fields = Fields
};
};
struct SpellVisualAnimMeta
{
- static constexpr DB2MetaField Fields[3] =
+ static constexpr DB2MetaField Fields[4] =
{
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -20618,9 +21567,9 @@ struct SpellVisualAnimMeta
.FileDataId = 1140479,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 3,
- .FileFieldCount = 3,
- .LayoutHash = 0xEE416568,
+ .FieldCount = 4,
+ .FileFieldCount = 4,
+ .LayoutHash = 0xF233613A,
.Fields = Fields
};
};
@@ -22649,12 +23598,14 @@ struct UIEventToastMeta
struct UIExpansionDisplayInfoMeta
{
- static constexpr DB2MetaField Fields[7] =
+ static constexpr DB2MetaField Fields[9] =
{
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
@@ -22665,9 +23616,9 @@ struct UIExpansionDisplayInfoMeta
.FileDataId = 1729547,
.IndexField = 0,
.ParentIndexField = -1,
- .FieldCount = 7,
- .FileFieldCount = 7,
- .LayoutHash = 0x788C5B88,
+ .FieldCount = 9,
+ .FileFieldCount = 9,
+ .LayoutHash = 0x62982E9A,
.Fields = Fields
};
};
@@ -22685,10 +23636,10 @@ struct UIExpansionDisplayInfoIconMeta
{
.FileDataId = 1729546,
.IndexField = -1,
- .ParentIndexField = -1,
+ .ParentIndexField = 2,
.FieldCount = 3,
- .FileFieldCount = 3,
- .LayoutHash = 0x54B6542E,
+ .FileFieldCount = 2,
+ .LayoutHash = 0xD1865277,
.Fields = Fields
};
};
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 2de052fcb84..a88e8ad419f 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -421,7 +421,7 @@ typedef std::unordered_map<uint32, HeirloomEntry const*> HeirloomItemsContainer;
typedef std::unordered_map<uint32 /*glyphPropertiesId*/, std::vector<uint32>> GlyphBindableSpellsContainer;
typedef std::unordered_map<uint32 /*glyphPropertiesId*/, std::vector<ChrSpecialization>> GlyphRequiredSpecsContainer;
typedef std::unordered_map<uint32 /*itemId*/, ItemChildEquipmentEntry const*> ItemChildEquipmentContainer;
-typedef std::array<ItemClassEntry const*, 20> ItemClassByOldEnumContainer;
+typedef std::array<ItemClassEntry const*, 21> ItemClassByOldEnumContainer;
typedef std::unordered_map<uint32, std::vector<ItemLimitCategoryConditionEntry const*>> ItemLimitCategoryConditionContainer;
typedef std::unordered_map<uint32 /*itemId | appearanceMod << 24*/, ItemModifiedAppearanceEntry const*> ItemModifiedAppearanceByItemContainer;
typedef std::unordered_map<uint32, std::vector<ItemSetSpellEntry const*>> ItemSetSpellContainer;
@@ -2188,17 +2188,26 @@ ChrSpecializationEntry const* DB2Manager::GetDefaultChrSpecializationForClass(ui
return GetChrSpecializationByIndex(class_, INITIAL_SPECIALIZATION_INDEX);
}
-uint32 DB2Manager::GetRedirectedContentTuningId(uint32 contentTuningId, uint32 redirectFlag) const
+uint32 DB2Manager::GetRedirectedContentTuningId(uint32 contentTuningId, std::span<uint32 const> redirectFlag) const
{
if (std::vector<ConditionalContentTuningEntry const*> const* conditionalContentTunings = Trinity::Containers::MapGetValuePtr(_conditionalContentTuning, contentTuningId))
+ {
for (ConditionalContentTuningEntry const* conditionalContentTuning : *conditionalContentTunings)
- if (conditionalContentTuning->RedirectFlag & redirectFlag)
+ {
+ uint32 block = conditionalContentTuning->RedirectEnum / 32;
+ uint32 flag = conditionalContentTuning->RedirectEnum % 32;
+ if (block >= redirectFlag.size())
+ continue;
+
+ if (flag & redirectFlag[block])
return conditionalContentTuning->RedirectContentTuningID;
+ }
+ }
return contentTuningId;
}
-Optional<ContentTuningLevels> DB2Manager::GetContentTuningData(uint32 contentTuningId, uint32 redirectFlag, bool forItem /*= false*/) const
+Optional<ContentTuningLevels> DB2Manager::GetContentTuningData(uint32 contentTuningId, std::span<uint32 const> redirectFlag, bool forItem /*= false*/) const
{
ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(GetRedirectedContentTuningId(contentTuningId, redirectFlag));
if (!contentTuning)
diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h
index 0c49a3832ed..44c069bbce0 100644
--- a/src/server/game/DataStores/DB2Stores.h
+++ b/src/server/game/DataStores/DB2Stores.h
@@ -472,8 +472,8 @@ public:
static char const* GetChrRaceName(uint8 race, LocaleConstant locale = DEFAULT_LOCALE);
ChrSpecializationEntry const* GetChrSpecializationByIndex(uint32 class_, uint32 index) const;
ChrSpecializationEntry const* GetDefaultChrSpecializationForClass(uint32 class_) const;
- uint32 GetRedirectedContentTuningId(uint32 contentTuningId, uint32 redirectFlag) const;
- Optional<ContentTuningLevels> GetContentTuningData(uint32 contentTuningId, uint32 redirectFlag, bool forItem = false) const;
+ uint32 GetRedirectedContentTuningId(uint32 contentTuningId, std::span<uint32 const> redirectFlag) const;
+ Optional<ContentTuningLevels> GetContentTuningData(uint32 contentTuningId, std::span<uint32 const> redirectFlag, bool forItem = false) const;
bool HasContentTuningLabel(uint32 contentTuningId, int32 label) const;
static char const* GetCreatureFamilyPetName(uint32 petfamily, LocaleConstant locale);
std::span<int32 const> GetCreatureLabels(uint32 creatureDifficultyId) const;
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 0a5b8e866a4..207f9221cdb 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -948,6 +948,7 @@ struct ConditionalContentTuningEntry
int32 OrderIndex;
int32 RedirectContentTuningID;
int32 RedirectFlag;
+ int32 RedirectEnum;
uint32 ParentContentTuningID;
};
@@ -2085,6 +2086,7 @@ struct GossipNPCOptionEntry
int32 TraitTreeID;
int32 ProfessionID;
int32 Unknown_1002_14;
+ int32 NeighborhoodMapID;
int32 SkillLineID;
};
@@ -2193,6 +2195,7 @@ struct ItemEntry
int32 ContentTuningID;
int32 ModifiedCraftingReagentItemID;
int32 CraftingQualityID;
+ int32 Unknown1127;
};
struct ItemAppearanceEntry
@@ -2393,6 +2396,7 @@ struct ItemEffectEntry
uint16 SpellCategoryID;
int32 SpellID;
uint16 ChrSpecializationID;
+ int32 PlayerConditionID;
};
#define MAX_ITEM_EXT_COST_ITEMS 5
@@ -2502,6 +2506,7 @@ struct ItemScalingConfigEntry
int32 ItemLevel;
int32 RequiredLevel;
int32 Unknown1125;
+ int32 Flags;
};
struct ItemSearchNameEntry
@@ -2581,6 +2586,7 @@ struct ItemSparseEntry
int32 PlayerLevelToItemLevelCurveID;
int32 ItemLevelOffsetCurveID;
int32 ItemLevelOffsetItemLevel;
+ int32 Unknown1127;
uint16 ItemNameDescriptionID;
uint16 RequiredTransmogHoliday;
uint16 RequiredHoliday;
@@ -2938,9 +2944,10 @@ struct MapChallengeModeEntry
uint32 ID;
uint16 MapID;
int32 Flags;
+ int32 MaxMedals;
uint32 ExpansionLevel;
- int32 RequiredWorldStateID; // maybe?
- std::array<int16, 3> CriteriaCount;
+ int32 RequiredWorldStateID;
+ std::array<int16, 5> CriteriaCount;
std::array<int32, 6> FirstRewardQuestID;
std::array<int32, 6> RewardQuestID;
};
@@ -4164,6 +4171,7 @@ struct SpellVisualEntry
uint32 ID;
std::array<float, 3> MissileCastOffset;
std::array<float, 3> MissileImpactOffset;
+ int32 StateKit;
uint32 AnimEventSoundID;
int32 Flags;
int8 MissileAttachment;
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index f6a5faca0a2..f668678b424 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -795,7 +795,11 @@ enum class CriteriaType : int16
ReachRenownLevel = 261,
LearnTaxiNode = 262,
- Count = 270
+ PlaceDecor = 270, /*NYI*/ // Place any decor
+ RemoveDecor = 271, /*NYI*/ // Remove any decor
+ CollectUniqueDecor = 272, /*NYI*/ // Collect Unique Decor
+
+ Count = 279
};
enum class CriteriaTreeFlags : uint16
@@ -1102,6 +1106,7 @@ enum class GameRule : int32
FullCharacterCreateDisabled = 84,
TargetFrameBuffsDisabled = 85,
UnitFramePvPContextualDisabled = 86,
+ ActionCombatTargetLockEnabled = 87,
BlockWhileSheathedAllowed = 88,
VanillaAccountMailInstant = 91,
ClearMailOnRealmTransfer = 92,
@@ -1111,10 +1116,50 @@ enum class GameRule : int32
WorldMapLegendDisabled = 99,
WorldMapFrameStrata = 100,
MerchantFilterDisabled = 101,
+ HousingDashboardDisabled = 102,
+ AutoAttacksDisabled = 103,
+ ObjectiveTrackerDisabled = 104,
+ PlayerCastBarDisabled = 105,
+ TargetCastBarDisabled = 106,
+ NameplateCastBarDisabled = 107,
SummoningStones = 108,
TransmogEnabled = 109,
+ DisableRealmSelection = 113,
+ DisableCampsites = 114,
+ UseSimpleCharacterSelectList = 115,
+ HideFaction = 116,
+ DisableVas = 119,
+ PersonalResourceDisplayDisabled = 129,
+ TargetFrameDisabled = 130,
+ PlayerFrameDisabled = 131,
MailGameRule = 132,
+ ForcedMultiActionBarSetting = 133,
+ HideAllMultiActionBars = 135,
+ TimerunningAllowed = 137,
+ MaxCharactersPerContentSet = 139,
+ MinUndeleteLevelRequired = 140,
+ DoesNotCountTowardAccountCharacterMax = 142,
+ WorldMapDisabled = 145,
+ MinimapDisabled = 146,
+ RepairArmorDisabled = 147,
+ EjSuggestedContentDisabled = 148,
+ EjDungeonsDisabled = 149,
+ EjRaidsDisabled = 150,
+ EjItemSetsDisabled = 151,
+ GdapiCharacterProfileDisabled = 153,
+ HousingEnabled = 154,
+ RestrictedAchievementCategoryID = 155,
LootMethodStyle = 157,
+ ExperienceBarDisabled = 159,
+ HideUnavailableTransmogSlots = 160,
+ HideTransmogZeroCost = 161,
+ DisableQuickJoin = 162,
+ DisableRaidGroups = 163,
+ UseGameTableVariation = 164,
+ ActionButtonTypeOverlayStrategy = 165,
+ RecommendLeastPopulatedRealm = 169,
+ BagSpaceOverride = 172,
+ UnflaggedPlayersCanAttackPvPFlaggedPlayers = 173,
};
enum class GlobalCurve : int32
@@ -1988,9 +2033,15 @@ enum class ModifierTreeType : int32
PlayerWeeklyCurrencyIsRelOpFromMax = 397, /*NYI*/ // Player weekly {CurrencyTypes} is {RelOp} {#Amount} from currency weekly limit
+ PlayerNeighborhoodCharterSignatureCountEqualOrGreaterThan = 400, /*NYI*/
+
PlayerIsInGuild = 404, // Player is in a guild
PlayerAvgItemLevelRelOp = 415, /*NYI*/ // Player average item level {AvgItemLevelCategory} is {RelOp} {#Amount}
+
+ PlayerMoneyIsRelOp = 417, // Player money is {RelOp} {#Amount}
+
+ PlayerHousesCountEqualOrGreaterThan = 419, /*NYI*/ // Player has at least {#Amount} houses
};
enum class ModifierTreeOperator : int8
@@ -2113,84 +2164,86 @@ enum class PlayerDataElementType : int32
enum class PlayerInteractionType : int32
{
- None = 0,
- TradePartner = 1,
- Item = 2,
- Gossip = 3,
- QuestGiver = 4,
- Merchant = 5,
- TaxiNode = 6,
- Trainer = 7,
- Banker = 8,
- AlliedRaceDetailsGiver = 9,
- GuildBanker = 10,
- Registrar = 11,
- Vendor = 12,
- PetitionVendor = 13,
- GuildTabardVendor = 14,
- TalentMaster = 15,
- SpecializationMaster = 16,
- MailInfo = 17,
- SpiritHealer = 18,
- AreaSpiritHealer = 19,
- Binder = 20,
- Auctioneer = 21,
- StableMaster = 22,
- BattleMaster = 23,
- Transmogrifier = 24,
- LFGDungeon = 25,
- VoidStorageBanker = 26,
- BlackMarketAuctioneer = 27,
- AdventureMap = 28,
- WorldMap = 29,
- GarrArchitect = 30,
- GarrTradeskill = 31,
- GarrMission = 32,
- ShipmentCrafter = 33,
- GarrRecruitment = 34,
- GarrTalent = 35,
- Trophy = 36,
- PlayerChoice = 37,
- ArtifactForge = 38,
- ObliterumForge = 39,
- ScrappingMachine = 40,
- ContributionCollector = 41,
- AzeriteRespec = 42,
- IslandQueue = 43,
- ItemInteraction = 44,
- ChromieTime = 45,
- CovenantPreview = 46,
- AnimaDiversion = 47,
- LegendaryCrafting = 48,
- WeeklyRewards = 49,
- Soulbind = 50,
- CovenantSanctum = 51,
- NewPlayerGuide = 52,
- ItemUpgrade = 53,
- AdventureJournal = 54,
- Renown = 55,
- AzeriteForge = 56,
- PerksProgramVendor = 57,
- ProfessionsCraftingOrder = 58,
- Professions = 59,
- ProfessionsCustomerOrder = 60,
- TraitSystem = 61,
- BarbersChoice = 62,
- JailersTowerBuffs = 63,
- MajorFactionRenown = 64,
- PersonalTabardVendor = 65,
- ForgeMaster = 66,
- CharacterBanker = 67,
- AccountBanker = 68,
- ProfessionRespec = 69,
- PlaceholderType71 = 70,
- PlaceholderType72 = 71,
- PlaceholderType73 = 72,
- PlaceholderType74 = 73,
- PlaceholderType75 = 74,
- PlaceholderType76 = 75,
- GuildRename = 76,
- PlaceholderType77 = 77,
+ None = 0,
+ TradePartner = 1,
+ Item = 2,
+ Gossip = 3,
+ QuestGiver = 4,
+ Merchant = 5,
+ TaxiNode = 6,
+ Trainer = 7,
+ Banker = 8,
+ AlliedRaceDetailsGiver = 9,
+ GuildBanker = 10,
+ Registrar = 11,
+ Vendor = 12,
+ PetitionVendor = 13,
+ GuildTabardVendor = 14,
+ TalentMaster = 15,
+ SpecializationMaster = 16,
+ MailInfo = 17,
+ SpiritHealer = 18,
+ AreaSpiritHealer = 19,
+ Binder = 20,
+ Auctioneer = 21,
+ StableMaster = 22,
+ BattleMaster = 23,
+ Transmogrifier = 24,
+ LFGDungeon = 25,
+ VoidStorageBanker = 26,
+ BlackMarketAuctioneer = 27,
+ AdventureMap = 28,
+ WorldMap = 29,
+ GarrArchitect = 30,
+ GarrTradeskill = 31,
+ GarrMission = 32,
+ ShipmentCrafter = 33,
+ GarrRecruitment = 34,
+ GarrTalent = 35,
+ Trophy = 36,
+ PlayerChoice = 37,
+ ArtifactForge = 38,
+ ObliterumForge = 39,
+ ScrappingMachine = 40,
+ ContributionCollector = 41,
+ AzeriteRespec = 42,
+ IslandQueue = 43,
+ ItemInteraction = 44,
+ ChromieTime = 45,
+ CovenantPreview = 46,
+ AnimaDiversion = 47,
+ LegendaryCrafting = 48,
+ WeeklyRewards = 49,
+ Soulbind = 50,
+ CovenantSanctum = 51,
+ NewPlayerGuide = 52,
+ ItemUpgrade = 53,
+ AdventureJournal = 54,
+ Renown = 55,
+ AzeriteForge = 56,
+ PerksProgramVendor = 57,
+ ProfessionsCraftingOrder = 58,
+ Professions = 59,
+ ProfessionsCustomerOrder = 60,
+ TraitSystem = 61,
+ BarbersChoice = 62,
+ JailersTowerBuffs = 63,
+ MajorFactionRenown = 64,
+ PersonalTabardVendor = 65,
+ ForgeMaster = 66,
+ CharacterBanker = 67,
+ AccountBanker = 68,
+ ProfessionRespec = 69,
+ CornerstoneInteraction = 70,
+ RenameNeighborhood = 71,
+ HousingBulletinBoard = 72,
+ HousingPedestal = 73,
+ CreateGuildNeighborhood = 74,
+ NeighborhoodCharter = 75,
+ GuildRename = 76,
+ OpenNeighborhoodCharterConfirmation = 77,
+ OpenHouseFinder = 78,
+ PlaceholderType79 = 79,
};
enum class PowerTypeFlags : int16
diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h
index d6ce6686555..a850d60871c 100644
--- a/src/server/game/DataStores/GameTables.h
+++ b/src/server/game/DataStores/GameTables.h
@@ -56,6 +56,7 @@ struct GtBaseMPEntry
float DemonHunter = 0.0f;
float Evoker = 0.0f;
float Adventurer = 0.0f;
+ float Traveler = 0.0f;
};
struct GtBattlePetXPEntry
@@ -144,6 +145,7 @@ struct GtSpellScalingEntry
float DemonHunter = 0.0f;
float Evoker = 0.0f;
float Adventurer = 0.0f;
+ float Traveler = 0.0f;
float Item = 0.0f;
float Consumable = 0.0f;
float Gem1 = 0.0f;
@@ -242,6 +244,8 @@ inline float GetGameTableColumnForClass(T const* row, int32 class_)
return row->Evoker;
case CLASS_ADVENTURER:
return row->Adventurer;
+ case CLASS_TRAVELER:
+ return row->Traveler;
default:
break;
}
@@ -281,6 +285,8 @@ inline float GetSpellScalingColumnForClass(GtSpellScalingEntry const* row, int32
return row->Evoker;
case CLASS_ADVENTURER:
return row->Adventurer;
+ case CLASS_TRAVELER:
+ return row->Traveler;
case -1:
case -7:
return row->Item;
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 6a3ee1df3ab..adbc5a07bea 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -2200,7 +2200,7 @@ uint32 LFGMgr::GetLFGDungeonEntry(uint32 id)
return 0;
}
-LfgDungeonSet LFGMgr::GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, uint32 contentTuningReplacementConditionMask)
+LfgDungeonSet LFGMgr::GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, std::span<uint32 const> contentTuningReplacementConditionMask)
{
LfgDungeonSet randomDungeons;
for (lfg::LFGDungeonContainer::const_iterator itr = LfgDungeonStore.begin(); itr != LfgDungeonStore.end(); ++itr)
diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h
index b20a5fad3b9..cb6e9af6bb7 100644
--- a/src/server/game/DungeonFinding/LFGMgr.h
+++ b/src/server/game/DungeonFinding/LFGMgr.h
@@ -24,6 +24,7 @@
#include "LFGQueue.h"
#include "LFGGroupData.h"
#include "LFGPlayerData.h"
+#include <span>
#include <unordered_map>
class Group;
@@ -409,7 +410,7 @@ class TC_GAME_API LFGMgr
/// Gets the random dungeon reward corresponding to given dungeon and player level
LfgReward const* GetRandomDungeonReward(uint32 dungeon, uint8 level);
/// Returns all random and seasonal dungeons for given level and expansion
- LfgDungeonSet GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, uint32 contentTuningReplacementConditionMask);
+ LfgDungeonSet GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, std::span<uint32 const> contentTuningReplacementConditionMask);
/// Teleport a player to/from selected dungeon
void TeleportPlayer(Player* player, bool out, bool fromOpcode = false);
/// Inits new proposal to boot a player
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 7f7e2f1a61f..739beed45c6 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -562,6 +562,8 @@ bool Creature::InitEntry(uint32 entry, CreatureData const* data /*= nullptr*/)
SetCanDualWield(creatureInfo->flags_extra & CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK);
+ UpdateCreatureType();
+
// checked at loading
m_defaultMovementType = MovementGeneratorType(data ? data->movementType : creatureInfo->MovementType);
if (!m_wanderDistance && m_defaultMovementType == RANDOM_MOTION_TYPE)
@@ -3048,7 +3050,7 @@ void Creature::ApplyLevelScaling()
{
CreatureDifficulty const* creatureDifficulty = GetCreatureDifficulty();
- if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(creatureDifficulty->ContentTuningID, 0))
+ if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(creatureDifficulty->ContentTuningID, {}))
{
SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ScalingLevelMin), levels->MinLevel);
SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ScalingLevelMax), levels->MaxLevel);
diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h
index 4a9c06f8e81..a84fcbb7d4d 100644
--- a/src/server/game/Entities/Creature/GossipDef.h
+++ b/src/server/game/Entities/Creature/GossipDef.h
@@ -36,71 +36,73 @@ enum class QuestGiverStatus : uint64;
enum class GossipOptionNpc : uint8
{
- None = 0, // White chat bubble. Default
- Vendor = 1, // Brown bag
- Taxinode = 2, // White wing
- Trainer = 3, // Brown book
- SpiritHealer = 4, // Golden interaction wheel (with red center)
- Binder = 5, // Golden interaction wheel
- Banker = 6, // Brown bag (with gold coin in lower corner)
- PetitionVendor = 7, // White chat bubble (with "..." inside)
- GuildTabardVendor = 8, // White tabard
- Battlemaster = 9, // Two crossed swords
- Auctioneer = 10, // Stack of gold coins
- TalentMaster = 11, // White chat bubble
- Stablemaster = 12, // White chat bubble
- PetSpecializationMaster = 13, /*DEPRECATED*/ // White chat bubble
- GuildBanker = 14, // White chat bubble
- Spellclick = 15, // White chat bubble
- DisableXPGain = 16, // White chat bubble
- EnableXPGain = 17, // White chat bubble
- Mailbox = 18, // White chat bubble
- WorldPvPQueue = 19, /*NYI*/ // White chat bubble
- LFGDungeon = 20, /*NYI*/ // White chat bubble
- ArtifactRespec = 21, /*NYI*/ // White chat bubble
- CemeterySelect = 22, /*DEPRECATED*/ // White chat bubble
- SpecializationMaster = 23, /*DEPRECATED*/ // White chat bubble
- GlyphMaster = 24, /*DEPRECATED*/ // White chat bubble
- QueueScenario = 25, /*NYI*/ // White chat bubble
- GarrisonArchitect = 26, /*NYI*/ // White chat bubble
- GarrisonMissionNpc = 27, /*NYI*/ // White chat bubble
- ShipmentCrafter = 28, /*NYI*/ // Brown document
- GarrisonTradeskillNpc = 29, /*NYI*/ // White chat bubble
- GarrisonRecruitment = 30, /*NYI*/ // White chat bubble
- AdventureMap = 31, /*NYI*/ // White chat bubble
- GarrisonTalent = 32, // White chat bubble
- ContributionCollector = 33, /*NYI*/ // White chat bubble
- Transmogrify = 34, // Purple helm
- AzeriteRespec = 35, // White chat bubble
- IslandsMissionNpc = 36, /*NYI*/ // White chat bubble
- UIItemInteraction = 37, /*NYI*/ // White chat bubble
- WorldMap = 38, /*NYI*/ // White chat bubble
- Soulbind = 39, /*NYI*/ // White chat bubble
- ChromieTimeNpc = 40, /*NYI*/ // White chat bubble
- CovenantPreviewNpc = 41, /*NYI*/ // White chat bubble
- RuneforgeLegendaryCrafting = 42, /*NYI*/ // White chat bubble
- NewPlayerGuide = 43, /*NYI*/ // White chat bubble
- RuneforgeLegendaryUpgrade = 44, /*NYI*/ // White chat bubble
- CovenantRenownNpc = 45, /*NYI*/ // White chat bubble
- BlackMarketAuctionHouse = 46,
- PerksProgramVendor = 47,
- ProfessionsCraftingOrder = 48,
- ProfessionsOpen = 49,
- ProfessionsCustomerOrder = 50,
- TraitSystem = 51,
- BarbersChoice = 52,
- MajorFactionRenown = 53,
- PersonalTabardVendor = 54,
- ForgeMaster = 55,
- CharacterBanker = 56,
- AccountBanker = 57,
- ProfessionRespec = 58,
- Placeholder1 = 59,
- Placeholder2 = 60,
- Placeholder3 = 61,
- GuildRename = 62,
- Placeholder4 = 63,
- ItemUpgrade = 64,
+ None = 0, // White chat bubble. Default
+ Vendor = 1, // Brown bag
+ Taxinode = 2, // White wing
+ Trainer = 3, // Brown book
+ SpiritHealer = 4, // Golden interaction wheel (with red center)
+ Binder = 5, // Golden interaction wheel
+ Banker = 6, // Brown bag (with gold coin in lower corner)
+ PetitionVendor = 7, // White chat bubble (with "..." inside)
+ GuildTabardVendor = 8, // White tabard
+ Battlemaster = 9, // Two crossed swords
+ Auctioneer = 10, // Stack of gold coins
+ TalentMaster = 11, // White chat bubble
+ Stablemaster = 12, // White chat bubble
+ PetSpecializationMaster = 13, /*DEPRECATED*/ // White chat bubble
+ GuildBanker = 14, // White chat bubble
+ Spellclick = 15, // White chat bubble
+ DisableXPGain = 16, // White chat bubble
+ EnableXPGain = 17, // White chat bubble
+ Mailbox = 18, // White chat bubble
+ WorldPvPQueue = 19, /*NYI*/ // White chat bubble
+ LFGDungeon = 20, /*NYI*/ // White chat bubble
+ ArtifactRespec = 21, /*NYI*/ // White chat bubble
+ CemeterySelect = 22, /*DEPRECATED*/ // White chat bubble
+ SpecializationMaster = 23, /*DEPRECATED*/ // White chat bubble
+ GlyphMaster = 24, /*DEPRECATED*/ // White chat bubble
+ QueueScenario = 25, /*NYI*/ // White chat bubble
+ GarrisonArchitect = 26, /*NYI*/ // White chat bubble
+ GarrisonMissionNpc = 27, /*NYI*/ // White chat bubble
+ ShipmentCrafter = 28, /*NYI*/ // Brown document
+ GarrisonTradeskillNpc = 29, /*NYI*/ // White chat bubble
+ GarrisonRecruitment = 30, /*NYI*/ // White chat bubble
+ AdventureMap = 31, /*NYI*/ // White chat bubble
+ GarrisonTalent = 32, // White chat bubble
+ ContributionCollector = 33, /*NYI*/ // White chat bubble
+ Transmogrify = 34, // Purple helm
+ AzeriteRespec = 35, // White chat bubble
+ IslandsMissionNpc = 36, /*NYI*/ // White chat bubble
+ UIItemInteraction = 37, /*NYI*/ // White chat bubble
+ WorldMap = 38, /*NYI*/ // White chat bubble
+ Soulbind = 39, /*NYI*/ // White chat bubble
+ ChromieTimeNpc = 40, /*NYI*/ // White chat bubble
+ CovenantPreviewNpc = 41, /*NYI*/ // White chat bubble
+ RuneforgeLegendaryCrafting = 42, /*NYI*/ // White chat bubble
+ NewPlayerGuide = 43, /*NYI*/ // White chat bubble
+ RuneforgeLegendaryUpgrade = 44, /*NYI*/ // White chat bubble
+ CovenantRenownNpc = 45, /*NYI*/ // White chat bubble
+ BlackMarketAuctionHouse = 46,
+ PerksProgramVendor = 47,
+ ProfessionsCraftingOrder = 48,
+ ProfessionsOpen = 49,
+ ProfessionsCustomerOrder = 50,
+ TraitSystem = 51,
+ BarbersChoice = 52,
+ MajorFactionRenown = 53,
+ PersonalTabardVendor = 54,
+ ForgeMaster = 55,
+ CharacterBanker = 56,
+ AccountBanker = 57,
+ ProfessionRespec = 58,
+ RenameNeighborhood = 59,
+ HousingCreateGuildNeighborhood = 60,
+ HousingGetNeighborhoodCharter = 61,
+ GuildRename = 62,
+ HousingOpenCharterConfirmation = 63,
+ ItemUpgrade = 64,
+ HouseFinder = 65,
+ Placeholder6 = 66,
Count
};
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 091769a4685..d0f8fb33695 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -105,6 +105,7 @@ WorldPacket GameObjectTemplate::BuildQueryData(LocaleConstant loc) const
memcpy(stats.Data.data(), raw.data, MAX_GAMEOBJECT_DATA * sizeof(int32));
stats.ContentTuningId = ContentTuningId;
+ stats.RequiredLevel = RequiredLevel;
queryTemp.Write();
queryTemp.ShrinkToFit();
diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h
index 1938d8d36d4..2bb91b60c08 100644
--- a/src/server/game/Entities/GameObject/GameObjectData.h
+++ b/src/server/game/Entities/GameObject/GameObjectData.h
@@ -48,6 +48,7 @@ struct GameObjectTemplate
std::string unk1;
float size;
int32 ContentTuningId;
+ int32 RequiredLevel;
union
{
// 0 GAMEOBJECT_TYPE_DOOR
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index a5ff70aa4ca..cb7bdad249b 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -2332,7 +2332,7 @@ uint32 Item::GetItemLevel(ItemTemplate const* itemTemplate, BonusData const& bon
{
if (fixedLevel)
level = fixedLevel;
- else if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(bonusData.ContentTuningId, 0, true))
+ else if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(bonusData.ContentTuningId, {}, true))
level = std::min(std::max(int16(level), levels->MinLevel), levels->MaxLevel);
itemLevel = uint32(sDB2Manager.GetCurveValueAt(bonusData.PlayerLevelToItemLevelCurveId, level));
@@ -2869,7 +2869,7 @@ void Item::SetFixedLevel(uint8 level)
if (_bonusData.PlayerLevelToItemLevelCurveId)
{
- if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(_bonusData.ContentTuningId, 0, true))
+ if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(_bonusData.ContentTuningId, {}, true))
level = std::min(std::max(int16(level), levels->MinLevel), levels->MaxLevel);
SetModifier(ITEM_MODIFIER_TIMEWALKER_LEVEL, level);
diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h
index 79295348d45..6b112e9e157 100644
--- a/src/server/game/Entities/Item/ItemTemplate.h
+++ b/src/server/game/Entities/Item/ItemTemplate.h
@@ -96,7 +96,15 @@ enum ItemModType
ITEM_MOD_AGI_STR_INT = 71,
ITEM_MOD_AGI_STR = 72,
ITEM_MOD_AGI_INT = 73,
- ITEM_MOD_STR_INT = 74
+ ITEM_MOD_STR_INT = 74,
+ ITEM_MOD_PROFESSION_INSPIRATION = 75,
+ ITEM_MOD_PROFESSION_RESOURCEFULNESS = 76,
+ ITEM_MOD_PROFESSION_FINESSE = 77,
+ ITEM_MOD_PROFESSION_DEFTNESS = 78,
+ ITEM_MOD_PROFESSION_PERCEPTION = 79,
+ ITEM_MOD_PROFESSION_CRAFTING_SPEED = 80,
+ ITEM_MOD_PROFESSION_MULTICRAFT = 81,
+ ITEM_MOD_PROFESSION_INGENUITY = 82,
};
enum ItemSpelltriggerType
@@ -462,10 +470,11 @@ enum ItemClass : uint8
ITEM_CLASS_GLYPH = 16,
ITEM_CLASS_BATTLE_PETS = 17,
ITEM_CLASS_WOW_TOKEN = 18,
- ITEM_CLASS_PROFESSION = 19
+ ITEM_CLASS_PROFESSION = 19,
+ ITEM_CLASS_HOUSING = 20
};
-#define MAX_ITEM_CLASS 20
+#define MAX_ITEM_CLASS 21
enum ItemSubclassConsumable
{
@@ -761,6 +770,18 @@ enum ItemSubclassProfession
#define MAX_ITEM_SUBCLASS_PROFESSION 14
+enum ItemSubclassHousing
+{
+ ITEM_SUBCLASS_HOUSING_DECOR = 0,
+ ITEM_SUBCLASS_HOUSING_DYE = 1,
+ ITEM_SUBCLASS_HOUSING_ROOM = 2,
+ ITEM_SUBCLASS_HOUSING_ROOM_CUSTOMIZATION = 3,
+ ITEM_SUBCLASS_HOUSING_EXTERIOR_CUSTOMIZATION = 4,
+ ITEM_SUBCLASS_HOUSING_SERVICE_ITEM = 5
+};
+
+#define MAX_ITEM_SUBCLASS_HOUSING 6
+
const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS] =
{
MAX_ITEM_SUBCLASS_CONSUMABLE,
@@ -782,7 +803,8 @@ const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS] =
MAX_ITEM_SUBCLASS_GLYPH,
MAX_ITEM_SUBCLASS_BATTLE_PET,
MAX_ITEM_SUBCLASS_WOW_TOKEN,
- MAX_ITEM_SUBCLASS_PROFESSION
+ MAX_ITEM_SUBCLASS_PROFESSION,
+ MAX_ITEM_SUBCLASS_HOUSING
};
#define MAX_ITEM_SUBCLASS_TOTAL 21
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 8375032413f..ac2219ed5cf 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -320,6 +320,9 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
data->WriteBit(flags.SceneObject);
data->WriteBit(flags.ActivePlayer);
data->WriteBit(flags.Conversation);
+ data->WriteBit(flags.Room);
+ data->WriteBit(flags.Decor);
+ data->WriteBit(flags.MeshObject);
data->FlushBits();
if (flags.MovementUpdate)
@@ -494,6 +497,21 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
*data << uint64(gameObject->GetPackedLocalRotation()); // Rotation
}
+ //if (flags.Room)
+ // *data << ObjectGuid(HouseGUID);
+
+ //if (flags.Decor)
+ // *data << ObjectGuid(RoomGUID);
+
+ //if (flags.MeshObject)
+ //{
+ // *data << ObjectGuid(AttachParentGUID);
+ // *data << TaggedPosition<Position::XYZ>(PositionLocalSpace);
+ // *data << QuaternionData(RotationLocalSpace);
+ // *data << float(ScaleLocalSpace);
+ // *data << uint8(AttachmentFlags);
+ //}
+
if (PauseTimes && !PauseTimes->empty())
data->append(PauseTimes->data(), PauseTimes->size());
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index d9f8e039392..72b3a5dd448 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -99,6 +99,9 @@ struct CreateObjectBits
bool SceneObject : 1;
bool ActivePlayer : 1;
bool Conversation : 1;
+ bool Room : 1;
+ bool Decor : 1;
+ bool MeshObject : 1;
void Clear()
{
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp
index 069c4658533..b5510dc9eb2 100644
--- a/src/server/game/Entities/Object/ObjectGuid.cpp
+++ b/src/server/game/Entities/Object/ObjectGuid.cpp
@@ -659,6 +659,74 @@ namespace
return ObjectGuidFactory::CreateLMMLobby(realmId, arg2, arg3, arg4, arg5);
}
+ static fmt::appender FormatHousing(fmt::format_context& ctx, std::string_view typeName, ObjectGuid const& guid)
+ {
+ ctx.advance_to(AppendTypeName(ctx, typeName));
+ switch (uint32 subType = (guid.GetRawValue(1) >> 53) & 0x1F)
+ {
+ case 1:
+ case 4:
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, subType));
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1) >> 32) & 0xFFFF));
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1)) & 0xFFFFFFFF));
+ ctx.advance_to(AppendComponent<no_padding, hex>(ctx, guid.GetRawValue(0)));
+ break;
+ case 2:
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, subType));
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1)) & 0xFFFFFFFF));
+ ctx.advance_to(AppendComponent<no_padding, hex>(ctx, guid.GetRawValue(0)));
+ break;
+ case 3:
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, subType));
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1)) & 0x7FFF));
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, guid.GetRawValue(0)));
+ ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1) >> 15) & 0x3F));
+ break;
+ default:
+ break;
+ }
+ return ctx.out();
+ }
+
+ static ObjectGuid ParseHousing(HighGuid /*type*/, std::string_view guidString)
+ {
+ uint32 subType = 0;
+
+ if (!ParseComponent<dec>(guidString, &subType))
+ return ObjectGuid::FromStringFailed;
+
+ uint32 arg1 = 0;
+ uint32 arg2 = 0;
+ uint64 arg3 = UI64LIT(0);
+
+ switch (subType)
+ {
+ case 1:
+ case 4:
+ if (!ParseComponent<dec>(guidString, &arg1)
+ || !ParseComponent<dec>(guidString, &arg2)
+ || !ParseComponent<hex>(guidString, &arg3)
+ || !ParseDone(guidString))
+ return ObjectGuid::FromStringFailed;
+ break;
+ case 2:
+ if (!ParseComponent<dec>(guidString, &arg2)
+ || !ParseComponent<hex>(guidString, &arg3)
+ || !ParseDone(guidString))
+ return ObjectGuid::FromStringFailed;
+ break;
+ case 3:
+ if (!ParseComponent<dec>(guidString, &arg2)
+ || !ParseComponent<dec>(guidString, &arg3)
+ || !ParseComponent<dec>(guidString, &arg1)
+ || !ParseDone(guidString))
+ return ObjectGuid::FromStringFailed;
+ break;
+ }
+
+ return ObjectGuidFactory::CreateHousing(subType, arg1, arg2, arg3);
+ }
+
ObjectGuidInfo();
} Info;
@@ -724,6 +792,9 @@ namespace
SET_GUID_INFO(ArenaTeam, FormatGuild, ParseGuild);
SET_GUID_INFO(LMMParty, FormatClient, ParseClient);
SET_GUID_INFO(LMMLobby, FormatLMMLobby, ParseLMMLobby);
+ SET_GUID_INFO(Housing, FormatHousing, ParseHousing);
+ SET_GUID_INFO(MeshObject, FormatWorldObject, ParseWorldObject);
+ SET_GUID_INFO(Entity, FormatWorldObject, ParseWorldObject);
#undef SET_GUID_INFO
}
@@ -952,6 +1023,35 @@ ObjectGuid ObjectGuidFactory::CreateLMMLobby(uint32 realmId, uint32 arg2, uint8
counter);
}
+ObjectGuid ObjectGuidFactory::CreateHousing(uint32 subType, uint32 arg1, uint32 arg2, uint64 arg3)
+{
+ switch (subType)
+ {
+ case 1:
+ case 4:
+ return ObjectGuid(uint64((uint64(HighGuid::Housing) << 58)
+ | (uint64(subType & 0x1F) << 53)
+ | (uint64(arg1 & 0xFFFF) << 32)
+ | (uint64(arg2 & 0xFFFFFFFF))),
+ arg3);
+ case 2:
+ return ObjectGuid(uint64((uint64(HighGuid::Housing) << 58)
+ | (uint64(subType & 0x1F) << 53)
+ | (uint64(arg2 & 0xFFFFFFFF))),
+ arg3);
+ case 3:
+ return ObjectGuid(uint64((uint64(HighGuid::Housing) << 58)
+ | (uint64(subType & 0x1F) << 53)
+ | (uint64(arg1 & 0x3F) << 15)
+ | (uint64(arg2 & 0x7FFF))),
+ arg3);
+ default:
+ break;
+ }
+
+ return ObjectGuid::Empty;
+}
+
ObjectGuid const ObjectGuid::Empty = ObjectGuid::Create<HighGuid::Null>();
ObjectGuid const ObjectGuid::ToStringFailed = ObjectGuid::Create<HighGuid::Uniq>(UI64LIT(3));
ObjectGuid const ObjectGuid::FromStringFailed = ObjectGuid::Create<HighGuid::Uniq>(UI64LIT(4));
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index 51744804ffa..98cf4c5632a 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -47,10 +47,14 @@ enum TypeID : uint8
TYPEID_CORPSE = 10,
TYPEID_AREATRIGGER = 11,
TYPEID_SCENEOBJECT = 12,
- TYPEID_CONVERSATION = 13
+ TYPEID_CONVERSATION = 13,
+ TYPEID_MESH_OBJECT = 14,
+ TYPEID_AI_GROUP = 15,
+ TYPEID_SCENARIO = 16,
+ TYPEID_LOOT_OBJECT = 17
};
-#define NUM_CLIENT_OBJECT_TYPES 14
+#define NUM_CLIENT_OBJECT_TYPES 18
enum TypeMask
{
@@ -68,6 +72,10 @@ enum TypeMask
TYPEMASK_AREATRIGGER = 1 << TYPEID_AREATRIGGER,
TYPEMASK_SCENEOBJECT = 1 << TYPEID_SCENEOBJECT,
TYPEMASK_CONVERSATION = 1 << TYPEID_CONVERSATION,
+ TYPEMASK_MESH_OBJECT = 1 << TYPEID_MESH_OBJECT,
+ TYPEMASK_AI_GROUP = 1 << TYPEID_AI_GROUP,
+ TYPEMASK_SCENARIO = 1 << TYPEID_SCENARIO,
+ TYPEMASK_LOOT_OBJECT = 1 << TYPEID_LOOT_OBJECT,
TYPEMASK_SEER = TYPEMASK_UNIT | TYPEMASK_PLAYER | TYPEMASK_DYNAMICOBJECT,
TYPEMASK_WORLDOBJECT = TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT | TYPEMASK_DYNAMICOBJECT | TYPEMASK_CORPSE | TYPEMASK_AREATRIGGER | TYPEMASK_SCENEOBJECT | TYPEMASK_CONVERSATION
@@ -88,7 +96,11 @@ inline constexpr std::array<uint32, NUM_CLIENT_OBJECT_TYPES> ObjectTypeMask =
TYPEMASK_OBJECT | TYPEMASK_CORPSE,
TYPEMASK_OBJECT | TYPEMASK_AREATRIGGER,
TYPEMASK_OBJECT | TYPEMASK_SCENEOBJECT,
- TYPEMASK_OBJECT | TYPEMASK_CONVERSATION
+ TYPEMASK_OBJECT | TYPEMASK_CONVERSATION,
+ TYPEMASK_OBJECT | TYPEMASK_MESH_OBJECT,
+ TYPEMASK_OBJECT | TYPEMASK_AI_GROUP,
+ TYPEMASK_OBJECT | TYPEMASK_SCENARIO,
+ TYPEMASK_OBJECT | TYPEMASK_LOOT_OBJECT,
};
enum class HighGuid
@@ -148,6 +160,9 @@ enum class HighGuid
ArenaTeam = 52,
LMMParty = 53,
LMMLobby = 54,
+ Housing = 55,
+ MeshObject = 56,
+ Entity = 57,
Count,
};
@@ -183,6 +198,7 @@ enum class ObjectGuidFormatType
ToolsClient,
WorldLayer,
LMMLobby,
+ Housing,
};
template<HighGuid high>
@@ -254,6 +270,9 @@ MAKE_GUID_TRAIT(HighGuid::WorldLayer, ObjectGuidSequenceSource::Global, ObjectGu
MAKE_GUID_TRAIT(HighGuid::ArenaTeam, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Guild);
MAKE_GUID_TRAIT(HighGuid::LMMParty, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Client);
MAKE_GUID_TRAIT(HighGuid::LMMLobby, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::LMMLobby);
+MAKE_GUID_TRAIT(HighGuid::Housing, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::Housing);
+MAKE_GUID_TRAIT(HighGuid::MeshObject, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject);
+MAKE_GUID_TRAIT(HighGuid::Entity, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject);
class ByteBuffer;
class ObjectGuid;
@@ -280,6 +299,7 @@ public:
static ObjectGuid CreateToolsClient(uint16 mapId, uint32 serverId, uint64 counter);
static ObjectGuid CreateWorldLayer(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4);
static ObjectGuid CreateLMMLobby(uint32 realmId, uint32 arg2, uint8 arg3, uint8 arg4, uint64 counter);
+ static ObjectGuid CreateHousing(uint32 subType, uint32 arg1, uint32 arg2, uint64 arg3);
};
class TC_GAME_API ObjectGuid
@@ -397,6 +417,7 @@ class TC_GAME_API ObjectGuid
template <HighGuid type, std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::ToolsClient, int32> = 0> static ObjectGuid Create(uint16 mapId, uint32 serverId, LowType counter) { return ObjectGuidFactory::CreateToolsClient(mapId, serverId, counter); }
template <HighGuid type, std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::WorldLayer, int32> = 0> static ObjectGuid Create(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4) { return ObjectGuidFactory::CreateWorldLayer(arg1, arg2, arg3, arg4); }
template <HighGuid type, std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::LMMLobby, int32> = 0> static ObjectGuid Create(uint32 arg2, uint8 arg3, uint8 arg4, LowType counter) { return ObjectGuidFactory::CreateLMMLobby(0, arg2, arg3, arg4, counter); }
+ template <HighGuid type, std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Housing, int32> = 0> static ObjectGuid Create(uint32 subType, uint32 arg1, uint32 arg2, uint64 arg3) { return ObjectGuidFactory::CreateHousing(subType, arg1, arg2, arg3); }
protected:
constexpr ObjectGuid(uint64 high, uint64 low) : _data({{ low, high }})
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 7df3bcb97a5..1f80091cb59 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -1029,6 +1029,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << uint8(ClassId);
data << uint8(PlayerClassId);
data << uint8(Sex);
+ data << uint8(CreatureType);
data << uint8(DisplayPower);
data << uint32(OverrideDisplayPowerID);
data << int64(Health);
@@ -1075,7 +1076,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << float(CombatReach);
data << float(DisplayScale);
data << int32(CreatureFamily);
- data << uint8(CreatureType);
+ data << uint8(OverrideCreatureType);
data << int32(NativeDisplayID);
data << float(NativeXDisplayScale);
data << int32(MountDisplayID);
@@ -1214,11 +1215,11 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
static constexpr void UnitDataAppendAllowedFieldsMaskForFlag(UnitData::Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- allowedMaskForTarget |= std::array<uint32, 7>{ 0x00010000u, 0xF0040000u, 0xFF080000u, 0x000007FEu, 0xE0000100u, 0xFF01FFFFu, 0x7FFFFFFFu };
+ allowedMaskForTarget |= std::array<uint32, 7>{ 0x00010000u, 0xE0080000u, 0xFE100002u, 0x00000FFEu, 0xC0000200u, 0xFE03FFFFu, 0xFFFFFFFFu };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll))
- allowedMaskForTarget |= std::array<uint32, 7>{ 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xE0000100u, 0x0001FFFFu, 0x00000000u };
+ allowedMaskForTarget |= std::array<uint32, 7>{ 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000200u, 0x0003FFFFu, 0x00000000u };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath))
- allowedMaskForTarget |= std::array<uint32, 7>{ 0x00000000u, 0xF0000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0001FE00u };
+ allowedMaskForTarget |= std::array<uint32, 7>{ 0x00000000u, 0xE0000000u, 0x00000002u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0003FC00u };
}
void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
@@ -1228,14 +1229,14 @@ void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFl
void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x0FFBFFFFu, 0x00F7FFFFu, 0xFFFFF801u, 0x1FFFFFFFu, 0x00FE0000u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x1FF7FFFFu, 0x01EFFFFDu, 0xFFFFF001u, 0x3FFFFFFFu, 0x01FC0000u, 0x00000000u });
UnitDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x0FFBFFFFu, 0x00F7FFFFu, 0xFFFFF801u, 0x1FFFFFFFu, 0x00FE0000u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x1FF7FFFFu, 0x01EFFFFDu, 0xFFFFF001u, 0x3FFFFFFFu, 0x01FC0000u, 0x00000000u });
UnitDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -1432,412 +1433,416 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
{
if (changesMask[33])
{
- data << uint8(DisplayPower);
+ data << uint8(CreatureType);
}
if (changesMask[34])
{
- data << uint32(OverrideDisplayPowerID);
+ data << uint8(DisplayPower);
}
if (changesMask[35])
{
- data << int64(Health);
+ data << uint32(OverrideDisplayPowerID);
}
if (changesMask[36])
{
- data << int64(MaxHealth);
+ data << int64(Health);
}
if (changesMask[37])
{
- data << int32(Level);
+ data << int64(MaxHealth);
}
if (changesMask[38])
{
- data << int32(EffectiveLevel);
+ data << int32(Level);
}
if (changesMask[39])
{
- data << int32(ContentTuningID);
+ data << int32(EffectiveLevel);
}
if (changesMask[40])
{
- data << int32(ScalingLevelMin);
+ data << int32(ContentTuningID);
}
if (changesMask[41])
{
- data << int32(ScalingLevelMax);
+ data << int32(ScalingLevelMin);
}
if (changesMask[42])
{
- data << int32(ScalingLevelDelta);
+ data << int32(ScalingLevelMax);
}
if (changesMask[43])
{
- data << uint8(ScalingFactionGroup);
+ data << int32(ScalingLevelDelta);
}
if (changesMask[44])
{
- data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(this, owner, receiver));
+ data << uint8(ScalingFactionGroup);
}
if (changesMask[45])
{
- data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
+ data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(this, owner, receiver));
}
if (changesMask[46])
{
- data << uint32(ViewerDependentValue<Flags2Tag>::GetValue(this, owner, receiver));
+ data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[47])
{
- data << uint32(ViewerDependentValue<Flags3Tag>::GetValue(this, owner, receiver));
+ data << uint32(ViewerDependentValue<Flags2Tag>::GetValue(this, owner, receiver));
}
if (changesMask[48])
{
- data << uint32(ViewerDependentValue<Flags4Tag>::GetValue(this, owner, receiver));
+ data << uint32(ViewerDependentValue<Flags3Tag>::GetValue(this, owner, receiver));
}
if (changesMask[49])
{
- data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(this, owner, receiver));
+ data << uint32(ViewerDependentValue<Flags4Tag>::GetValue(this, owner, receiver));
}
if (changesMask[50])
{
- data << uint32(RangedAttackRoundBaseTime);
+ data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(this, owner, receiver));
}
if (changesMask[51])
{
- data << float(BoundingRadius);
+ data << uint32(RangedAttackRoundBaseTime);
}
if (changesMask[52])
{
- data << float(CombatReach);
+ data << float(BoundingRadius);
}
if (changesMask[53])
{
- data << float(DisplayScale);
+ data << float(CombatReach);
}
if (changesMask[54])
{
- data << int32(CreatureFamily);
+ data << float(DisplayScale);
}
if (changesMask[55])
{
- data << uint8(CreatureType);
+ data << int32(CreatureFamily);
}
if (changesMask[56])
{
- data << int32(NativeDisplayID);
+ data << uint8(OverrideCreatureType);
}
if (changesMask[57])
{
- data << float(NativeXDisplayScale);
+ data << int32(NativeDisplayID);
}
if (changesMask[58])
{
- data << int32(MountDisplayID);
+ data << float(NativeXDisplayScale);
}
if (changesMask[59])
{
- data << int32(CosmeticMountDisplayID);
+ data << int32(MountDisplayID);
}
if (changesMask[60])
{
- data << float(MinDamage);
+ data << int32(CosmeticMountDisplayID);
}
if (changesMask[61])
{
- data << float(MaxDamage);
+ data << float(MinDamage);
}
if (changesMask[62])
{
- data << float(MinOffHandDamage);
+ data << float(MaxDamage);
}
if (changesMask[63])
{
- data << float(MaxOffHandDamage);
+ data << float(MinOffHandDamage);
}
}
if (changesMask[64])
{
if (changesMask[65])
{
- data << uint8(StandState);
+ data << float(MaxOffHandDamage);
}
if (changesMask[66])
{
- data << uint8(PetTalentPoints);
+ data << uint8(StandState);
}
if (changesMask[67])
{
- data << uint8(VisFlags);
+ data << uint8(PetTalentPoints);
}
if (changesMask[68])
{
- data << uint8(AnimTier);
+ data << uint8(VisFlags);
}
if (changesMask[69])
{
- data << uint32(PetNumber);
+ data << uint8(AnimTier);
}
if (changesMask[70])
{
- data << uint32(PetNameTimestamp);
+ data << uint32(PetNumber);
}
if (changesMask[71])
{
- data << uint32(PetExperience);
+ data << uint32(PetNameTimestamp);
}
if (changesMask[72])
{
- data << uint32(PetNextLevelExperience);
+ data << uint32(PetExperience);
}
if (changesMask[73])
{
- data << float(ModCastingSpeed);
+ data << uint32(PetNextLevelExperience);
}
if (changesMask[74])
{
- data << float(ModCastingSpeedNeg);
+ data << float(ModCastingSpeed);
}
if (changesMask[75])
{
- data << float(ModSpellHaste);
+ data << float(ModCastingSpeedNeg);
}
if (changesMask[76])
{
- data << float(ModHaste);
+ data << float(ModSpellHaste);
}
if (changesMask[77])
{
- data << float(ModRangedHaste);
+ data << float(ModHaste);
}
if (changesMask[78])
{
- data << float(ModHasteRegen);
+ data << float(ModRangedHaste);
}
if (changesMask[79])
{
- data << float(ModTimeRate);
+ data << float(ModHasteRegen);
}
if (changesMask[80])
{
- data << int32(CreatedBySpell);
+ data << float(ModTimeRate);
}
if (changesMask[81])
{
- data << int32(EmoteState);
+ data << int32(CreatedBySpell);
}
if (changesMask[82])
{
- data << int32(BaseMana);
+ data << int32(EmoteState);
}
if (changesMask[83])
{
- data << int32(BaseHealth);
+ data << int32(BaseMana);
}
if (changesMask[84])
{
- data << uint8(SheatheState);
+ data << int32(BaseHealth);
}
if (changesMask[85])
{
- data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(this, owner, receiver));
+ data << uint8(SheatheState);
}
if (changesMask[86])
{
- data << uint8(PetFlags);
+ data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[87])
{
- data << uint8(ShapeshiftForm);
+ data << uint8(PetFlags);
}
if (changesMask[88])
{
- data << int32(AttackPower);
+ data << uint8(ShapeshiftForm);
}
if (changesMask[89])
{
- data << int32(AttackPowerModPos);
+ data << int32(AttackPower);
}
if (changesMask[90])
{
- data << int32(AttackPowerModNeg);
+ data << int32(AttackPowerModPos);
}
if (changesMask[91])
{
- data << float(AttackPowerMultiplier);
+ data << int32(AttackPowerModNeg);
}
if (changesMask[92])
{
- data << int32(AttackPowerModSupport);
+ data << float(AttackPowerMultiplier);
}
if (changesMask[93])
{
- data << int32(RangedAttackPower);
+ data << int32(AttackPowerModSupport);
}
if (changesMask[94])
{
- data << int32(RangedAttackPowerModPos);
+ data << int32(RangedAttackPower);
}
if (changesMask[95])
{
- data << int32(RangedAttackPowerModNeg);
+ data << int32(RangedAttackPowerModPos);
}
}
if (changesMask[96])
{
if (changesMask[97])
{
- data << float(RangedAttackPowerMultiplier);
+ data << int32(RangedAttackPowerModNeg);
}
if (changesMask[98])
{
- data << int32(RangedAttackPowerModSupport);
+ data << float(RangedAttackPowerMultiplier);
}
if (changesMask[99])
{
- data << int32(MainHandWeaponAttackPower);
+ data << int32(RangedAttackPowerModSupport);
}
if (changesMask[100])
{
- data << int32(OffHandWeaponAttackPower);
+ data << int32(MainHandWeaponAttackPower);
}
if (changesMask[101])
{
- data << int32(RangedWeaponAttackPower);
+ data << int32(OffHandWeaponAttackPower);
}
if (changesMask[102])
{
- data << int32(SetAttackSpeedAura);
+ data << int32(RangedWeaponAttackPower);
}
if (changesMask[103])
{
- data << float(Lifesteal);
+ data << int32(SetAttackSpeedAura);
}
if (changesMask[104])
{
- data << float(MinRangedDamage);
+ data << float(Lifesteal);
}
if (changesMask[105])
{
- data << float(MaxRangedDamage);
+ data << float(MinRangedDamage);
}
if (changesMask[106])
{
- data << float(ManaCostMultiplier);
+ data << float(MaxRangedDamage);
}
if (changesMask[107])
{
- data << float(MaxHealthModifier);
+ data << float(ManaCostMultiplier);
}
if (changesMask[108])
{
- data << float(HoverHeight);
+ data << float(MaxHealthModifier);
}
if (changesMask[109])
{
- data << int32(MinItemLevelCutoff);
+ data << float(HoverHeight);
}
if (changesMask[110])
{
- data << int32(MinItemLevel);
+ data << int32(MinItemLevelCutoff);
}
if (changesMask[111])
{
- data << int32(MaxItemLevel);
+ data << int32(MinItemLevel);
}
if (changesMask[112])
{
- data << int32(AzeriteItemLevel);
+ data << int32(MaxItemLevel);
}
if (changesMask[113])
{
- data << int32(WildBattlePetLevel);
+ data << int32(AzeriteItemLevel);
}
if (changesMask[114])
{
- data << int32(BattlePetCompanionExperience);
+ data << int32(WildBattlePetLevel);
}
if (changesMask[115])
{
- data << uint32(BattlePetCompanionNameTimestamp);
+ data << int32(BattlePetCompanionExperience);
}
if (changesMask[116])
{
- data << int32(ViewerDependentValue<InteractSpellIDTag>::GetValue(this, owner, receiver));
+ data << uint32(BattlePetCompanionNameTimestamp);
}
if (changesMask[117])
{
- data << int32(ScaleDuration);
+ data << int32(ViewerDependentValue<InteractSpellIDTag>::GetValue(this, owner, receiver));
}
if (changesMask[118])
{
- data << int32(LooksLikeMountID);
+ data << int32(ScaleDuration);
}
if (changesMask[119])
{
- data << int32(LooksLikeCreatureID);
+ data << int32(LooksLikeMountID);
}
if (changesMask[120])
{
- data << int32(LookAtControllerID);
+ data << int32(LooksLikeCreatureID);
}
if (changesMask[121])
{
- data << int32(PerksVendorItemID);
+ data << int32(LookAtControllerID);
}
if (changesMask[122])
{
- data << int32(TaxiNodesID);
+ data << int32(PerksVendorItemID);
}
if (changesMask[123])
{
- data << *GuildGUID;
+ data << int32(TaxiNodesID);
}
if (changesMask[124])
{
- data << int32(FlightCapabilityID);
+ data << *GuildGUID;
}
if (changesMask[125])
{
- data << float(GlideEventSpeedDivisor);
+ data << int32(FlightCapabilityID);
}
if (changesMask[126])
{
- data << int32(DriveCapabilityID);
+ data << float(GlideEventSpeedDivisor);
}
if (changesMask[127])
{
- data << int32(MaxHealthModifierFlatNeg);
+ data << int32(DriveCapabilityID);
}
}
if (changesMask[128])
{
if (changesMask[129])
{
- data << int32(MaxHealthModifierFlatPos);
+ data << int32(MaxHealthModifierFlatNeg);
}
if (changesMask[130])
{
- data << uint32(SilencedSchoolMask);
+ data << int32(MaxHealthModifierFlatPos);
}
if (changesMask[131])
{
- data << uint32(CurrentAreaID);
+ data << uint32(SilencedSchoolMask);
}
if (changesMask[132])
{
- data << float(Field_31C);
+ data << uint32(CurrentAreaID);
}
if (changesMask[133])
{
- data << float(Field_320);
+ data << float(Field_31C);
}
if (changesMask[134])
{
+ data << float(Field_320);
+ }
+ if (changesMask[135])
+ {
data << *NameplateAttachToGUID;
}
data.WriteBits(AssistActionData.has_value(), 1);
data.FlushBits();
- if (changesMask[135])
+ if (changesMask[136])
{
if (AssistActionData.has_value())
{
@@ -1845,83 +1850,83 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
}
}
- if (changesMask[136])
+ if (changesMask[137])
{
for (uint32 i = 0; i < 10; ++i)
{
- if (changesMask[137 + i])
+ if (changesMask[138 + i])
{
data << int32(Power[i]);
}
- if (changesMask[147 + i])
+ if (changesMask[148 + i])
{
data << int32(MaxPower[i]);
}
- if (changesMask[157 + i])
+ if (changesMask[158 + i])
{
data << float(PowerRegenFlatModifier[i]);
}
- if (changesMask[167 + i])
+ if (changesMask[168 + i])
{
data << float(PowerRegenInterruptedFlatModifier[i]);
}
}
}
- if (changesMask[177])
+ if (changesMask[178])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[178 + i])
+ if (changesMask[179 + i])
{
VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[181])
+ if (changesMask[182])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[182 + i])
+ if (changesMask[183 + i])
{
data << uint32(AttackRoundBaseTime[i]);
}
}
}
- if (changesMask[184])
+ if (changesMask[185])
{
for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[185 + i])
+ if (changesMask[186 + i])
{
data << int32(Stats[i]);
}
- if (changesMask[189 + i])
+ if (changesMask[190 + i])
{
data << int32(StatPosBuff[i]);
}
- if (changesMask[193 + i])
+ if (changesMask[194 + i])
{
data << int32(StatNegBuff[i]);
}
- if (changesMask[197 + i])
+ if (changesMask[198 + i])
{
data << int32(StatSupportBuff[i]);
}
}
}
- if (changesMask[201])
+ if (changesMask[202])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[202 + i])
+ if (changesMask[203 + i])
{
data << int32(Resistances[i]);
}
- if (changesMask[209 + i])
+ if (changesMask[210 + i])
{
data << int32(BonusResistanceMods[i]);
}
- if (changesMask[216 + i])
+ if (changesMask[217 + i])
{
data << int32(ManaCostModifier[i]);
}
@@ -1963,6 +1968,7 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(ClassId);
Base::ClearChangesMask(PlayerClassId);
Base::ClearChangesMask(Sex);
+ Base::ClearChangesMask(CreatureType);
Base::ClearChangesMask(DisplayPower);
Base::ClearChangesMask(OverrideDisplayPowerID);
Base::ClearChangesMask(Health);
@@ -1985,7 +1991,7 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(CombatReach);
Base::ClearChangesMask(DisplayScale);
Base::ClearChangesMask(CreatureFamily);
- Base::ClearChangesMask(CreatureType);
+ Base::ClearChangesMask(OverrideCreatureType);
Base::ClearChangesMask(NativeDisplayID);
Base::ClearChangesMask(NativeXDisplayScale);
Base::ClearChangesMask(MountDisplayID);
@@ -2107,6 +2113,7 @@ void QuestLog::WriteCreate(ByteBuffer& data, Player const* owner, Player const*
}
data << int64(EndTime);
data << uint32(ObjectiveFlags);
+ data << uint32(EnabledObjectivesMask);
}
void QuestLog::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
@@ -2138,12 +2145,16 @@ void QuestLog::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player cons
{
data << uint32(ObjectiveFlags);
}
+ if (changesMask[5])
+ {
+ data << uint32(EnabledObjectivesMask);
+ }
}
- if (changesMask[5])
+ if (changesMask[6])
{
for (uint32 i = 0; i < 24; ++i)
{
- if (changesMask[6 + i])
+ if (changesMask[7 + i])
{
data << int16(ObjectiveProgress[i]);
}
@@ -2157,6 +2168,7 @@ void QuestLog::ClearChangesMask()
Base::ClearChangesMask(StateFlags);
Base::ClearChangesMask(EndTime);
Base::ClearChangesMask(ObjectiveFlags);
+ Base::ClearChangesMask(EnabledObjectivesMask);
Base::ClearChangesMask(ObjectiveProgress);
_changesMask.ResetAll();
}
@@ -2302,16 +2314,25 @@ void PetCreatureName::ClearChangesMask()
void CTROptions::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
- data << uint32(ConditionalFlags);
+ data << uint32(ConditionalFlags.size());
data << uint8(FactionGroup);
data << uint32(ChromieTimeExpansionMask);
+ for (uint32 i = 0; i < ConditionalFlags.size(); ++i)
+ {
+ data << uint32(ConditionalFlags[i]);
+ }
}
void CTROptions::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
{
- data << uint32(ConditionalFlags);
+ data << uint32(ConditionalFlags.size());
+ data.FlushBits();
data << uint8(FactionGroup);
data << uint32(ChromieTimeExpansionMask);
+ for (uint32 i = 0; i < ConditionalFlags.size(); ++i)
+ {
+ data << uint32(ConditionalFlags[i]);
+ }
}
bool CTROptions::operator==(CTROptions const& right) const
@@ -3167,7 +3188,7 @@ void BitVector::ClearChangesMask()
void BitVectors::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
- for (uint32 i = 0; i < 13; ++i)
+ for (uint32 i = 0; i < 14; ++i)
{
Values[i].WriteCreate(data, owner, receiver);
}
@@ -3186,7 +3207,7 @@ void BitVectors::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player co
data.FlushBits();
if (changesMask[0])
{
- for (uint32 i = 0; i < 13; ++i)
+ for (uint32 i = 0; i < 14; ++i)
{
if (changesMask[1 + i])
{
@@ -5037,6 +5058,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << uint32(RuneforgePowers.size());
data << uint32(TransmogIllusions.size());
data << uint32(WarbandScenes.size());
+ data << uint32(HouseRooms.size());
+ data << uint32(HouseExteriorComponents.size());
+ data << uint32(HouseThemes.size());
+ data << uint32(HouseRoomComponentTextures.size());
data << uint32(CharacterRestrictions.size());
data << uint32(SpellPctModByLabel.size());
data << uint32(SpellFlatModByLabel.size());
@@ -5133,6 +5158,22 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
data << uint32(WarbandScenes[i]);
}
+ for (uint32 i = 0; i < HouseRooms.size(); ++i)
+ {
+ data << uint32(HouseRooms[i]);
+ }
+ for (uint32 i = 0; i < HouseExteriorComponents.size(); ++i)
+ {
+ data << uint32(HouseExteriorComponents[i]);
+ }
+ for (uint32 i = 0; i < HouseThemes.size(); ++i)
+ {
+ data << uint32(HouseThemes[i]);
+ }
+ for (uint32 i = 0; i < HouseRoomComponentTextures.size(); ++i)
+ {
+ data << uint32(HouseRoomComponentTextures[i]);
+ }
for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i)
{
SpellPctModByLabel[i].WriteCreate(data, owner, receiver);
@@ -5315,11 +5356,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data);
}
}
- if (changesMask[42])
+ if (changesMask[46])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[43])
+ if (changesMask[47])
{
if (!ignoreNestedChangesMask)
ResearchSites[i].WriteUpdateMask(data);
@@ -5328,11 +5369,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[44])
+ if (changesMask[48])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[45])
+ if (changesMask[49])
{
if (!ignoreNestedChangesMask)
ResearchSiteProgress[i].WriteUpdateMask(data);
@@ -5341,11 +5382,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[46])
+ if (changesMask[50])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[47])
+ if (changesMask[51])
{
if (!ignoreNestedChangesMask)
Research[i].WriteUpdateMask(data);
@@ -5354,11 +5395,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[42])
+ if (changesMask[46])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[43])
+ if (changesMask[47])
{
for (uint32 j = 0; j < ResearchSites[i].size(); ++j)
{
@@ -5370,11 +5411,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[44])
+ if (changesMask[48])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[45])
+ if (changesMask[49])
{
for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j)
{
@@ -5386,11 +5427,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[46])
+ if (changesMask[50])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[47])
+ if (changesMask[51])
{
for (uint32 j = 0; j < Research[i].size(); ++j)
{
@@ -5499,105 +5540,133 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
if (changesMask[24])
{
if (!ignoreNestedChangesMask)
+ HouseRooms.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(HouseRooms.size(), data);
+ }
+ if (changesMask[25])
+ {
+ if (!ignoreNestedChangesMask)
+ HouseExteriorComponents.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(HouseExteriorComponents.size(), data);
+ }
+ if (changesMask[26])
+ {
+ if (!ignoreNestedChangesMask)
+ HouseThemes.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(HouseThemes.size(), data);
+ }
+ if (changesMask[27])
+ {
+ if (!ignoreNestedChangesMask)
+ HouseRoomComponentTextures.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(HouseRoomComponentTextures.size(), data);
+ }
+ if (changesMask[28])
+ {
+ if (!ignoreNestedChangesMask)
CharacterRestrictions.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CharacterRestrictions.size(), data);
}
- if (changesMask[25])
+ if (changesMask[29])
{
if (!ignoreNestedChangesMask)
SpellPctModByLabel.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SpellPctModByLabel.size(), data);
}
- if (changesMask[26])
+ if (changesMask[30])
{
if (!ignoreNestedChangesMask)
SpellFlatModByLabel.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data);
}
- if (changesMask[27])
+ if (changesMask[31])
{
if (!ignoreNestedChangesMask)
MawPowers.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(MawPowers.size(), data);
}
- if (changesMask[28])
+ }
+ if (changesMask[32])
+ {
+ if (changesMask[33])
{
if (!ignoreNestedChangesMask)
MultiFloorExploration.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(MultiFloorExploration.size(), data);
}
- if (changesMask[29])
+ if (changesMask[34])
{
if (!ignoreNestedChangesMask)
RecipeProgression.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(RecipeProgression.size(), data);
}
- if (changesMask[30])
+ if (changesMask[35])
{
if (!ignoreNestedChangesMask)
ReplayedQuests.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(ReplayedQuests.size(), data);
}
- if (changesMask[31])
+ if (changesMask[36])
{
if (!ignoreNestedChangesMask)
TaskQuests.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(TaskQuests.size(), data);
}
- }
- if (changesMask[32])
- {
- if (changesMask[33])
+ if (changesMask[37])
{
if (!ignoreNestedChangesMask)
DisabledSpells.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(DisabledSpells.size(), data);
}
- if (changesMask[34])
+ if (changesMask[38])
{
if (!ignoreNestedChangesMask)
CraftingOrders.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CraftingOrders.size(), data);
}
- if (changesMask[35])
+ if (changesMask[39])
{
if (!ignoreNestedChangesMask)
PersonalCraftingOrderCounts.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data);
}
- if (changesMask[36])
+ if (changesMask[40])
{
if (!ignoreNestedChangesMask)
NpcCraftingOrders.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(NpcCraftingOrders.size(), data);
}
- if (changesMask[37])
+ if (changesMask[41])
{
if (!ignoreNestedChangesMask)
CategoryCooldownMods.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data);
}
- if (changesMask[38])
+ if (changesMask[42])
{
if (!ignoreNestedChangesMask)
WeeklySpellUses.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data);
}
- if (changesMask[39])
+ if (changesMask[43])
{
if (!ignoreNestedChangesMask)
TrackedCollectableSources.WriteUpdateMask(data);
@@ -5768,8 +5837,48 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
+ if (changesMask[24])
+ {
+ for (uint32 i = 0; i < HouseRooms.size(); ++i)
+ {
+ if (HouseRooms.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << uint32(HouseRooms[i]);
+ }
+ }
+ }
if (changesMask[25])
{
+ for (uint32 i = 0; i < HouseExteriorComponents.size(); ++i)
+ {
+ if (HouseExteriorComponents.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << uint32(HouseExteriorComponents[i]);
+ }
+ }
+ }
+ if (changesMask[26])
+ {
+ for (uint32 i = 0; i < HouseThemes.size(); ++i)
+ {
+ if (HouseThemes.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << uint32(HouseThemes[i]);
+ }
+ }
+ }
+ if (changesMask[27])
+ {
+ for (uint32 i = 0; i < HouseRoomComponentTextures.size(); ++i)
+ {
+ if (HouseRoomComponentTextures.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << uint32(HouseRoomComponentTextures[i]);
+ }
+ }
+ }
+ if (changesMask[29])
+ {
for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i)
{
if (SpellPctModByLabel.HasChanged(i) || ignoreNestedChangesMask)
@@ -5778,7 +5887,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[26])
+ if (changesMask[30])
{
for (uint32 i = 0; i < SpellFlatModByLabel.size(); ++i)
{
@@ -5788,7 +5897,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[27])
+ if (changesMask[31])
{
for (uint32 i = 0; i < MawPowers.size(); ++i)
{
@@ -5798,7 +5907,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[28])
+ }
+ if (changesMask[32])
+ {
+ if (changesMask[33])
{
for (uint32 i = 0; i < MultiFloorExploration.size(); ++i)
{
@@ -5808,7 +5920,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[29])
+ if (changesMask[34])
{
for (uint32 i = 0; i < RecipeProgression.size(); ++i)
{
@@ -5818,7 +5930,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[30])
+ if (changesMask[35])
{
for (uint32 i = 0; i < ReplayedQuests.size(); ++i)
{
@@ -5828,7 +5940,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[31])
+ if (changesMask[36])
{
for (uint32 i = 0; i < TaskQuests.size(); ++i)
{
@@ -5838,10 +5950,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- }
- if (changesMask[32])
- {
- if (changesMask[33])
+ if (changesMask[37])
{
for (uint32 i = 0; i < DisabledSpells.size(); ++i)
{
@@ -5851,7 +5960,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[35])
+ if (changesMask[39])
{
for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i)
{
@@ -5861,7 +5970,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[36])
+ if (changesMask[40])
{
for (uint32 i = 0; i < NpcCraftingOrders.size(); ++i)
{
@@ -5871,7 +5980,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[37])
+ if (changesMask[41])
{
for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i)
{
@@ -5881,7 +5990,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[38])
+ if (changesMask[42])
{
for (uint32 i = 0; i < WeeklySpellUses.size(); ++i)
{
@@ -5891,7 +6000,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[39])
+ if (changesMask[43])
{
for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i)
{
@@ -5905,14 +6014,14 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[32])
{
- if (changesMask[40])
+ if (changesMask[44])
{
if (!ignoreNestedChangesMask)
CharacterBankTabSettings.WriteUpdateMask(data, 3);
else
WriteCompleteDynamicFieldUpdateMask(CharacterBankTabSettings.size(), data, 3);
}
- if (changesMask[41])
+ if (changesMask[45])
{
if (!ignoreNestedChangesMask)
AccountBankTabSettings.WriteUpdateMask(data, 3);
@@ -5933,7 +6042,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[24])
+ if (changesMask[28])
{
for (uint32 i = 0; i < CharacterRestrictions.size(); ++i)
{
@@ -5946,7 +6055,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[32])
{
- if (changesMask[34])
+ if (changesMask[38])
{
for (uint32 i = 0; i < CraftingOrders.size(); ++i)
{
@@ -5956,7 +6065,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[40])
+ if (changesMask[44])
{
for (uint32 i = 0; i < CharacterBankTabSettings.size(); ++i)
{
@@ -5966,7 +6075,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[41])
+ if (changesMask[45])
{
for (uint32 i = 0; i < AccountBankTabSettings.size(); ++i)
{
@@ -5976,368 +6085,368 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[48])
+ if (changesMask[52])
{
data << *FarsightObject;
}
- if (changesMask[49])
+ if (changesMask[53])
{
data << *SummonedBattlePetGUID;
}
- if (changesMask[50])
+ if (changesMask[54])
{
data << uint64(Coinage);
}
- if (changesMask[51])
+ if (changesMask[55])
{
data << uint64(AccountBankCoinage);
}
- if (changesMask[52])
+ if (changesMask[56])
{
data << int32(XP);
}
- if (changesMask[53])
+ if (changesMask[57])
{
data << int32(NextLevelXP);
}
- if (changesMask[54])
+ if (changesMask[58])
{
data << int32(TrialXP);
}
- if (changesMask[55])
+ if (changesMask[59])
{
Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[56])
+ if (changesMask[60])
{
data << int32(CharacterPoints);
}
- if (changesMask[57])
+ if (changesMask[61])
{
data << int32(MaxTalentTiers);
}
- if (changesMask[58])
+ if (changesMask[62])
{
data << uint32(TrackCreatureMask);
}
- if (changesMask[59])
+ if (changesMask[63])
{
data << float(MainhandExpertise);
}
- if (changesMask[60])
+ if (changesMask[64])
{
data << float(OffhandExpertise);
}
- if (changesMask[61])
+ if (changesMask[65])
{
data << float(RangedExpertise);
}
- if (changesMask[62])
+ if (changesMask[66])
{
data << float(CombatRatingExpertise);
}
- if (changesMask[63])
+ if (changesMask[67])
{
data << float(BlockPercentage);
}
- if (changesMask[64])
+ if (changesMask[68])
{
data << float(DodgePercentage);
}
- if (changesMask[65])
+ if (changesMask[69])
{
data << float(DodgePercentageFromAttribute);
}
- if (changesMask[66])
+ }
+ if (changesMask[70])
+ {
+ if (changesMask[71])
{
data << float(ParryPercentage);
}
- if (changesMask[67])
+ if (changesMask[72])
{
data << float(ParryPercentageFromAttribute);
}
- if (changesMask[68])
+ if (changesMask[73])
{
data << float(CritPercentage);
}
- if (changesMask[69])
+ if (changesMask[74])
{
data << float(RangedCritPercentage);
}
- }
- if (changesMask[70])
- {
- if (changesMask[71])
+ if (changesMask[75])
{
data << float(OffhandCritPercentage);
}
- if (changesMask[72])
+ if (changesMask[76])
{
data << float(SpellCritPercentage);
}
- if (changesMask[73])
+ if (changesMask[77])
{
data << int32(ShieldBlock);
}
- if (changesMask[74])
+ if (changesMask[78])
{
data << float(ShieldBlockCritPercentage);
}
- if (changesMask[75])
+ if (changesMask[79])
{
data << float(Mastery);
}
- if (changesMask[76])
+ if (changesMask[80])
{
data << float(Speed);
}
- if (changesMask[77])
+ if (changesMask[81])
{
data << float(Avoidance);
}
- if (changesMask[78])
+ if (changesMask[82])
{
data << float(Sturdiness);
}
- if (changesMask[79])
+ if (changesMask[83])
{
data << int32(Versatility);
}
- if (changesMask[80])
+ if (changesMask[84])
{
data << float(VersatilityBonus);
}
- if (changesMask[81])
+ if (changesMask[85])
{
data << float(PvpPowerDamage);
}
- if (changesMask[82])
+ if (changesMask[86])
{
data << float(PvpPowerHealing);
}
- if (changesMask[83])
+ if (changesMask[87])
{
BitVectors->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[84])
+ if (changesMask[88])
{
data << int32(ModHealingDonePos);
}
- if (changesMask[85])
+ if (changesMask[89])
{
data << float(ModHealingPercent);
}
- if (changesMask[86])
+ if (changesMask[90])
{
data << float(ModPeriodicHealingDonePercent);
}
- if (changesMask[87])
+ if (changesMask[91])
{
data << float(ModSpellPowerPercent);
}
- if (changesMask[88])
+ if (changesMask[92])
{
data << float(ModResiliencePercent);
}
- if (changesMask[89])
+ if (changesMask[93])
{
data << float(OverrideSpellPowerByAPPercent);
}
- if (changesMask[90])
+ if (changesMask[94])
{
data << float(OverrideAPBySpellPowerPercent);
}
- if (changesMask[91])
+ if (changesMask[95])
{
data << int32(ModTargetResistance);
}
- if (changesMask[92])
+ if (changesMask[96])
{
data << int32(ModTargetPhysicalResistance);
}
- if (changesMask[93])
+ if (changesMask[97])
{
data << uint32(LocalFlags);
}
- if (changesMask[94])
+ if (changesMask[98])
{
data << uint8(GrantableLevels);
}
- if (changesMask[95])
+ if (changesMask[99])
{
data << uint8(MultiActionBars);
}
- if (changesMask[96])
+ if (changesMask[100])
{
data << uint8(LifetimeMaxRank);
}
- if (changesMask[97])
+ if (changesMask[101])
{
data << uint8(NumRespecs);
}
- if (changesMask[98])
+ }
+ if (changesMask[102])
+ {
+ if (changesMask[103])
{
data << uint32(PvpMedals);
}
- if (changesMask[99])
+ if (changesMask[104])
{
data << uint16(TodayHonorableKills);
}
- if (changesMask[100])
+ if (changesMask[105])
{
data << uint16(YesterdayHonorableKills);
}
- if (changesMask[101])
+ if (changesMask[106])
{
data << uint32(LifetimeHonorableKills);
}
- }
- if (changesMask[102])
- {
- if (changesMask[103])
+ if (changesMask[107])
{
data << int32(WatchedFactionIndex);
}
- if (changesMask[104])
+ if (changesMask[108])
{
data << int32(MaxLevel);
}
- if (changesMask[105])
+ if (changesMask[109])
{
data << int32(ScalingPlayerLevelDelta);
}
- if (changesMask[106])
+ if (changesMask[110])
{
data << int32(MaxCreatureScalingLevel);
}
- if (changesMask[107])
+ if (changesMask[111])
{
data << int32(PetSpellPower);
}
- if (changesMask[108])
+ if (changesMask[112])
{
data << float(UiHitModifier);
}
- if (changesMask[109])
+ if (changesMask[113])
{
data << float(UiSpellHitModifier);
}
- if (changesMask[110])
+ if (changesMask[114])
{
data << int32(HomeRealmTimeOffset);
}
- if (changesMask[111])
+ if (changesMask[115])
{
data << float(ModPetHaste);
}
- if (changesMask[112])
+ if (changesMask[116])
{
data << int8(JailersTowerLevelMax);
}
- if (changesMask[113])
+ if (changesMask[117])
{
data << int8(JailersTowerLevel);
}
- if (changesMask[114])
+ if (changesMask[118])
{
data << uint8(LocalRegenFlags);
}
- if (changesMask[115])
+ if (changesMask[119])
{
data << uint8(AuraVision);
}
- if (changesMask[116])
+ if (changesMask[120])
{
data << uint8(NumBackpackSlots);
}
- if (changesMask[117])
+ if (changesMask[121])
{
data << int32(OverrideSpellsID);
}
- if (changesMask[118])
+ if (changesMask[122])
{
data << uint16(LootSpecID);
}
- if (changesMask[119])
+ if (changesMask[123])
{
data << uint32(OverrideZonePVPType);
}
- if (changesMask[120])
+ if (changesMask[124])
{
data << int32(Honor);
}
- if (changesMask[121])
+ if (changesMask[125])
{
data << int32(HonorNextLevel);
}
- if (changesMask[122])
+ if (changesMask[126])
{
data << int32(PerksProgramCurrency);
}
- if (changesMask[123])
+ if (changesMask[127])
{
data << uint8(NumBankSlots);
}
- if (changesMask[124])
+ if (changesMask[128])
{
data << uint8(NumCharacterBankTabs);
}
- if (changesMask[125])
+ if (changesMask[129])
{
data << uint8(NumAccountBankTabs);
}
- if (changesMask[130])
+ }
+ if (changesMask[134])
+ {
+ if (changesMask[135])
{
data << int32(UiChromieTimeExpansionID);
}
- if (changesMask[131])
+ if (changesMask[136])
{
data << int32(TimerunningSeasonID);
}
- if (changesMask[132])
+ if (changesMask[137])
{
data << int32(TransportServerTime);
}
- if (changesMask[133])
+ if (changesMask[138])
{
data << uint32(WeeklyRewardsPeriodSinceOrigin);
}
- }
- if (changesMask[134])
- {
- if (changesMask[135])
+ if (changesMask[139])
{
data << int16(DEBUGSoulbindConduitRank);
}
- if (changesMask[138])
+ if (changesMask[142])
{
data << uint32(ActiveCombatTraitConfigID);
}
- if (changesMask[139])
+ if (changesMask[143])
{
data << int32(ItemUpgradeHighOnehandWeaponItemID);
}
- if (changesMask[140])
+ if (changesMask[144])
{
data << int32(ItemUpgradeHighFingerItemID);
}
- if (changesMask[141])
+ if (changesMask[145])
{
data << float(ItemUpgradeHighFingerWatermark);
}
- if (changesMask[142])
+ if (changesMask[146])
{
data << int32(ItemUpgradeHighTrinketItemID);
}
- if (changesMask[143])
+ if (changesMask[147])
{
data << float(ItemUpgradeHighTrinketWatermark);
}
- if (changesMask[144])
+ if (changesMask[148])
{
data << uint64(LootHistoryInstanceID);
}
- if (changesMask[146])
+ if (changesMask[150])
{
data << uint8(RequiredMountCapabilityFlags);
}
@@ -6356,58 +6465,58 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[102])
{
- if (changesMask[126])
+ if (changesMask[130])
{
ResearchHistory->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[128])
+ if (changesMask[132])
{
if (QuestSession.has_value())
{
QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[127])
+ if (changesMask[131])
{
data << *FrozenPerksVendorItem;
}
- if (changesMask[129])
+ if (changesMask[133])
{
Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
if (changesMask[134])
{
- if (changesMask[136])
+ if (changesMask[140])
{
data << *DungeonScore;
}
- if (changesMask[137])
+ if (changesMask[141])
{
WriteMapFieldUpdate(TraitConfigs, data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[145])
+ if (changesMask[149])
{
if (PetStable.has_value())
{
PetStable->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[147])
+ if (changesMask[151])
{
if (WalkInData.has_value())
{
WalkInData->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[148])
+ if (changesMask[152])
{
if (DelveData.has_value())
{
DelveData->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[149])
+ if (changesMask[153])
{
if (ChallengeModeData.has_value())
{
@@ -6415,121 +6524,121 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[150])
+ if (changesMask[154])
{
for (uint32 i = 0; i < 105; ++i)
{
- if (changesMask[151 + i])
+ if (changesMask[155 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[256])
+ if (changesMask[260])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[257 + i])
+ if (changesMask[261 + i])
{
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[259])
+ if (changesMask[263])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[260 + i])
+ if (changesMask[264 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[267 + i])
+ if (changesMask[271 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[274 + i])
+ if (changesMask[278 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[281 + i])
+ if (changesMask[285 + i])
{
data << float(ModHealingDonePercent[i]);
}
}
}
- if (changesMask[288])
+ if (changesMask[292])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[289 + i])
+ if (changesMask[293 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[292 + i])
+ if (changesMask[296 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[295])
+ if (changesMask[299])
{
for (uint32 i = 0; i < 12; ++i)
{
- if (changesMask[296 + i])
+ if (changesMask[300 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[308 + i])
+ if (changesMask[312 + i])
{
data << int64(BuybackTimestamp[i]);
}
}
}
- if (changesMask[320])
+ if (changesMask[324])
{
for (uint32 i = 0; i < 32; ++i)
{
- if (changesMask[321 + i])
+ if (changesMask[325 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[353])
+ if (changesMask[357])
{
for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[354 + i])
+ if (changesMask[358 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[358])
+ if (changesMask[362])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[359 + i])
+ if (changesMask[363 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[361])
+ if (changesMask[365])
{
for (uint32 i = 0; i < 5; ++i)
{
- if (changesMask[362 + i])
+ if (changesMask[366 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[367])
+ if (changesMask[371])
{
for (uint32 i = 0; i < 17; ++i)
{
- if (changesMask[368 + i])
+ if (changesMask[372 + i])
{
data << float(ItemUpgradeHighWatermark[i]);
}
@@ -6565,6 +6674,10 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(RuneforgePowers);
Base::ClearChangesMask(TransmogIllusions);
Base::ClearChangesMask(WarbandScenes);
+ Base::ClearChangesMask(HouseRooms);
+ Base::ClearChangesMask(HouseExteriorComponents);
+ Base::ClearChangesMask(HouseThemes);
+ Base::ClearChangesMask(HouseRoomComponentTextures);
Base::ClearChangesMask(SpellPctModByLabel);
Base::ClearChangesMask(SpellFlatModByLabel);
Base::ClearChangesMask(MawPowers);
@@ -8365,6 +8478,86 @@ void ConversationData::ClearChangesMask()
_changesMask.ResetAll();
}
+void AaBox::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
+{
+ data << Low;
+ data << High;
+}
+
+void AaBox::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
+{
+ data << Low;
+ data << High;
+}
+
+bool AaBox::operator==(AaBox const& right) const
+{
+ return Low == right.Low
+ && High == right.High;
+}
+
+void MeshObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ data.WriteBit(IsWMO);
+ data.WriteBit(IsRoom);
+ data.WriteBits(Geobox.has_value(), 1);
+ data << int32(FileDataID);
+ if (Geobox.has_value())
+ {
+ Geobox->WriteCreate(data, owner, receiver);
+ }
+ data.FlushBits();
+ data.FlushBits();
+}
+
+void MeshObjectData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void MeshObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 5);
+
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data.WriteBit(IsWMO);
+ }
+ if (changesMask[2])
+ {
+ data.WriteBit(IsRoom);
+ }
+ data.WriteBits(Geobox.has_value(), 1);
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[3])
+ {
+ data << int32(FileDataID);
+ }
+ if (changesMask[4])
+ {
+ if (Geobox.has_value())
+ {
+ Geobox->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ data.FlushBits();
+}
+
+void MeshObjectData::ClearChangesMask()
+{
+ Base::ClearChangesMask(IsWMO);
+ Base::ClearChangesMask(IsRoom);
+ Base::ClearChangesMask(FileDataID);
+ Base::ClearChangesMask(Geobox);
+ _changesMask.ResetAll();
+}
+
void VendorData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Creature const* owner, Player const* receiver) const
{
data << int32(Flags);
@@ -8395,6 +8588,1127 @@ void VendorData::ClearChangesMask()
_changesMask.ResetAll();
}
+void DecorStoragePersistedDataDyes::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
+{
+ for (uint32 i = 0; i < 3; ++i)
+ {
+ data << int32(DyeColorID[i]);
+ }
+}
+
+void DecorStoragePersistedDataDyes::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
+{
+ for (uint32 i = 0; i < 3; ++i)
+ {
+ data << int32(DyeColorID[i]);
+ }
+}
+
+bool DecorStoragePersistedDataDyes::operator==(DecorStoragePersistedDataDyes const& right) const
+{
+ return std::ranges::equal(DyeColorID, right.DyeColorID);
+}
+
+void DecorStoragePersistedData::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
+{
+ data << *HouseGUID;
+ data << uint8(Field_20);
+ data.WriteBits(Dyes.has_value(), 1);
+ if (Dyes.has_value())
+ {
+ Dyes->WriteCreate(data, owner, receiver);
+ }
+}
+
+void DecorStoragePersistedData::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
+{
+ Mask changesMask = _changesMask;
+ if (ignoreChangesMask)
+ changesMask.SetAll();
+
+ data.WriteBits(changesMask.GetBlock(0), 4);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << *HouseGUID;
+ }
+ if (changesMask[3])
+ {
+ data << uint8(Field_20);
+ }
+ data.WriteBits(Dyes.has_value(), 1);
+ if (changesMask[2])
+ {
+ if (Dyes.has_value())
+ {
+ Dyes->WriteUpdate(data, ignoreChangesMask, owner, receiver);
+ }
+ }
+ }
+}
+
+void DecorStoragePersistedData::ClearChangesMask()
+{
+ Base::ClearChangesMask(HouseGUID);
+ Base::ClearChangesMask(Dyes);
+ Base::ClearChangesMask(Field_20);
+ _changesMask.ResetAll();
+}
+
+void HousingDecorData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ data << *DecorGUID;
+ data << *AttachParentGUID;
+ data << uint8(Flags);
+ data << *Field_68;
+ data.WriteBits(PersistedData.has_value(), 1);
+ if (PersistedData.has_value())
+ {
+ PersistedData->WriteCreate(data, owner, receiver);
+ }
+}
+
+void HousingDecorData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingDecorData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 6);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << *DecorGUID;
+ }
+ if (changesMask[2])
+ {
+ data << *AttachParentGUID;
+ }
+ if (changesMask[3])
+ {
+ data << uint8(Flags);
+ }
+ if (changesMask[5])
+ {
+ data << *Field_68;
+ }
+ data.WriteBits(PersistedData.has_value(), 1);
+ if (changesMask[4])
+ {
+ if (PersistedData.has_value())
+ {
+ PersistedData->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+}
+
+void HousingDecorData::ClearChangesMask()
+{
+ Base::ClearChangesMask(DecorGUID);
+ Base::ClearChangesMask(AttachParentGUID);
+ Base::ClearChangesMask(Flags);
+ Base::ClearChangesMask(PersistedData);
+ Base::ClearChangesMask(Field_68);
+ _changesMask.ResetAll();
+}
+
+void HousingDoorData::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
+{
+ data << int32(RoomComponentID);
+ data << *RoomComponentOffset;
+ data << uint8(RoomComponentType);
+ data << *AttachedRoomGUID;
+}
+
+void HousingDoorData::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
+{
+ Mask changesMask = _changesMask;
+ if (ignoreChangesMask)
+ changesMask.SetAll();
+
+ data.WriteBits(changesMask.GetBlock(0), 5);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << int32(RoomComponentID);
+ }
+ if (changesMask[2])
+ {
+ data << *RoomComponentOffset;
+ }
+ if (changesMask[3])
+ {
+ data << uint8(RoomComponentType);
+ }
+ if (changesMask[4])
+ {
+ data << *AttachedRoomGUID;
+ }
+ }
+}
+
+void HousingDoorData::ClearChangesMask()
+{
+ Base::ClearChangesMask(RoomComponentID);
+ Base::ClearChangesMask(RoomComponentOffset);
+ Base::ClearChangesMask(RoomComponentType);
+ Base::ClearChangesMask(AttachedRoomGUID);
+ _changesMask.ResetAll();
+}
+
+void HousingRoomData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ data << *HouseGUID;
+ data << int32(HouseRoomID);
+ data << int32(Flags);
+ data << uint32(MeshObjects.size());
+ data << uint32(Doors.size());
+ data << int32(FloorIndex);
+ for (uint32 i = 0; i < MeshObjects.size(); ++i)
+ {
+ data << MeshObjects[i];
+ }
+ for (uint32 i = 0; i < Doors.size(); ++i)
+ {
+ Doors[i].WriteCreate(data, owner, receiver);
+ }
+}
+
+void HousingRoomData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingRoomData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 7);
+
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ if (!ignoreNestedChangesMask)
+ MeshObjects.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(MeshObjects.size(), data);
+ }
+ if (changesMask[2])
+ {
+ if (!ignoreNestedChangesMask)
+ Doors.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Doors.size(), data);
+ }
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ for (uint32 i = 0; i < MeshObjects.size(); ++i)
+ {
+ if (MeshObjects.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << MeshObjects[i];
+ }
+ }
+ }
+ if (changesMask[2])
+ {
+ for (uint32 i = 0; i < Doors.size(); ++i)
+ {
+ if (Doors.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ Doors[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ if (changesMask[3])
+ {
+ data << *HouseGUID;
+ }
+ if (changesMask[4])
+ {
+ data << int32(HouseRoomID);
+ }
+ if (changesMask[5])
+ {
+ data << int32(Flags);
+ }
+ if (changesMask[6])
+ {
+ data << int32(FloorIndex);
+ }
+ }
+}
+
+void HousingRoomData::ClearChangesMask()
+{
+ Base::ClearChangesMask(MeshObjects);
+ Base::ClearChangesMask(Doors);
+ Base::ClearChangesMask(HouseGUID);
+ Base::ClearChangesMask(HouseRoomID);
+ Base::ClearChangesMask(Flags);
+ Base::ClearChangesMask(FloorIndex);
+ _changesMask.ResetAll();
+}
+
+void HousingRoomComponentMeshData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ data << *RoomGUID;
+ data << int32(RoomComponentOptionID);
+ data << int32(RoomComponentID);
+ data << uint8(Field_20);
+ data << uint8(RoomComponentType);
+ data << int32(Field_24);
+ data << int32(HouseThemeID);
+ data << int32(RoomComponentTextureID);
+ data << int32(RoomComponentTypeParam);
+}
+
+void HousingRoomComponentMeshData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingRoomComponentMeshData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 10);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << *RoomGUID;
+ }
+ if (changesMask[2])
+ {
+ data << int32(RoomComponentOptionID);
+ }
+ if (changesMask[3])
+ {
+ data << int32(RoomComponentID);
+ }
+ if (changesMask[4])
+ {
+ data << uint8(Field_20);
+ }
+ if (changesMask[5])
+ {
+ data << uint8(RoomComponentType);
+ }
+ if (changesMask[6])
+ {
+ data << int32(Field_24);
+ }
+ if (changesMask[7])
+ {
+ data << int32(HouseThemeID);
+ }
+ if (changesMask[8])
+ {
+ data << int32(RoomComponentTextureID);
+ }
+ if (changesMask[9])
+ {
+ data << int32(RoomComponentTypeParam);
+ }
+ }
+}
+
+void HousingRoomComponentMeshData::ClearChangesMask()
+{
+ Base::ClearChangesMask(RoomGUID);
+ Base::ClearChangesMask(RoomComponentOptionID);
+ Base::ClearChangesMask(RoomComponentID);
+ Base::ClearChangesMask(Field_20);
+ Base::ClearChangesMask(RoomComponentType);
+ Base::ClearChangesMask(Field_24);
+ Base::ClearChangesMask(HouseThemeID);
+ Base::ClearChangesMask(RoomComponentTextureID);
+ Base::ClearChangesMask(RoomComponentTypeParam);
+ _changesMask.ResetAll();
+}
+
+void HousingPlayerHouseData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ data << *BnetAccount;
+ data << int32(PlotIndex);
+ data << uint32(Level);
+ data << uint64(Field_20);
+ data << uint32(InteriorDecorPlacementBudget);
+ data << uint32(ExteriorDecorPlacementBudget);
+ data << uint32(ExteriorFixtureBudget);
+ data << uint32(RoomPlacementBudget);
+ data << *EntityGUID;
+}
+
+void HousingPlayerHouseData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingPlayerHouseData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 10);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << *BnetAccount;
+ }
+ if (changesMask[2])
+ {
+ data << int32(PlotIndex);
+ }
+ if (changesMask[3])
+ {
+ data << uint32(Level);
+ }
+ if (changesMask[4])
+ {
+ data << uint64(Field_20);
+ }
+ if (changesMask[5])
+ {
+ data << uint32(InteriorDecorPlacementBudget);
+ }
+ if (changesMask[6])
+ {
+ data << uint32(ExteriorDecorPlacementBudget);
+ }
+ if (changesMask[7])
+ {
+ data << uint32(ExteriorFixtureBudget);
+ }
+ if (changesMask[8])
+ {
+ data << uint32(RoomPlacementBudget);
+ }
+ if (changesMask[9])
+ {
+ data << *EntityGUID;
+ }
+ }
+}
+
+void HousingPlayerHouseData::ClearChangesMask()
+{
+ Base::ClearChangesMask(BnetAccount);
+ Base::ClearChangesMask(PlotIndex);
+ Base::ClearChangesMask(Level);
+ Base::ClearChangesMask(Field_20);
+ Base::ClearChangesMask(InteriorDecorPlacementBudget);
+ Base::ClearChangesMask(ExteriorDecorPlacementBudget);
+ Base::ClearChangesMask(ExteriorFixtureBudget);
+ Base::ClearChangesMask(RoomPlacementBudget);
+ Base::ClearChangesMask(EntityGUID);
+ _changesMask.ResetAll();
+}
+
+void HousingCornerstoneData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const
+{
+ data << uint64(Cost);
+ data << int32(PlotIndex);
+}
+
+void HousingCornerstoneData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingCornerstoneData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, GameObject const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 3);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << uint64(Cost);
+ }
+ if (changesMask[2])
+ {
+ data << int32(PlotIndex);
+ }
+ }
+}
+
+void HousingCornerstoneData::ClearChangesMask()
+{
+ Base::ClearChangesMask(Cost);
+ Base::ClearChangesMask(PlotIndex);
+ _changesMask.ResetAll();
+}
+
+void HousingPlotAreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const
+{
+ data << uint32(Field_0);
+ data << *HouseOwnerGUID;
+ data << *HouseGUID;
+ data << *HouseOwnerBnetAccountGUID;
+}
+
+void HousingPlotAreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingPlotAreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 5);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << uint32(Field_0);
+ }
+ if (changesMask[2])
+ {
+ data << *HouseOwnerGUID;
+ }
+ if (changesMask[3])
+ {
+ data << *HouseGUID;
+ }
+ if (changesMask[4])
+ {
+ data << *HouseOwnerBnetAccountGUID;
+ }
+ }
+}
+
+void HousingPlotAreaTriggerData::ClearChangesMask()
+{
+ Base::ClearChangesMask(Field_0);
+ Base::ClearChangesMask(HouseOwnerGUID);
+ Base::ClearChangesMask(HouseGUID);
+ Base::ClearChangesMask(HouseOwnerBnetAccountGUID);
+ _changesMask.ResetAll();
+}
+
+void PlayerHouseInfo::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
+{
+ data << HouseGUID;
+ data << OwnerGUID;
+}
+
+void PlayerHouseInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
+{
+ data << HouseGUID;
+ data << OwnerGUID;
+}
+
+bool PlayerHouseInfo::operator==(PlayerHouseInfo const& right) const
+{
+ return HouseGUID == right.HouseGUID
+ && OwnerGUID == right.OwnerGUID;
+}
+
+void HousingOwner::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
+{
+ data << BnetAccountGUID;
+ data << PlayerGUID;
+}
+
+void HousingOwner::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
+{
+ data << BnetAccountGUID;
+ data << PlayerGUID;
+}
+
+bool HousingOwner::operator==(HousingOwner const& right) const
+{
+ return BnetAccountGUID == right.BnetAccountGUID
+ && PlayerGUID == right.PlayerGUID;
+}
+
+void NeighborhoodMirrorData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(Name->size() + 1, 8);
+ data << *OwnerGUID;
+ data << uint32(Houses.size());
+ data << uint32(Managers.size());
+ data << WorldPackets::SizedCString::Data(*Name);
+ for (uint32 i = 0; i < Houses.size(); ++i)
+ {
+ Houses[i].WriteCreate(data, owner, receiver);
+ }
+ for (uint32 i = 0; i < Managers.size(); ++i)
+ {
+ Managers[i].WriteCreate(data, owner, receiver);
+ }
+}
+
+void NeighborhoodMirrorData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void NeighborhoodMirrorData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 5);
+
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ if (!ignoreNestedChangesMask)
+ Houses.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Houses.size(), data);
+ }
+ if (changesMask[2])
+ {
+ if (!ignoreNestedChangesMask)
+ Managers.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Managers.size(), data);
+ }
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ for (uint32 i = 0; i < Houses.size(); ++i)
+ {
+ if (Houses.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ Houses[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ if (changesMask[2])
+ {
+ for (uint32 i = 0; i < Managers.size(); ++i)
+ {
+ if (Managers.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ Managers[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[3])
+ {
+ data.WriteBits(Name->size() + 1, 8);
+ }
+ if (changesMask[4])
+ {
+ data << *OwnerGUID;
+ }
+ if (changesMask[3])
+ {
+ data << WorldPackets::SizedCString::Data(*Name);
+ }
+ }
+}
+
+void NeighborhoodMirrorData::ClearChangesMask()
+{
+ Base::ClearChangesMask(Houses);
+ Base::ClearChangesMask(Managers);
+ Base::ClearChangesMask(OwnerGUID);
+ Base::ClearChangesMask(Name);
+ _changesMask.ResetAll();
+}
+
+void MirroredMeshObjectData::WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const
+{
+ data << *AttachParentGUID;
+ data << *PositionLocalSpace;
+ data << float(RotationLocalSpace->x);
+ data << float(RotationLocalSpace->y);
+ data << float(RotationLocalSpace->z);
+ data << float(RotationLocalSpace->w);
+ data << float(ScaleLocalSpace);
+ data << uint8(AttachmentFlags);
+}
+
+void MirroredMeshObjectData::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const
+{
+ Mask changesMask = _changesMask;
+ if (ignoreChangesMask)
+ changesMask.SetAll();
+
+ data.WriteBits(changesMask.GetBlock(0), 6);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << *AttachParentGUID;
+ }
+ if (changesMask[2])
+ {
+ data << *PositionLocalSpace;
+ }
+ if (changesMask[3])
+ {
+ data << float(RotationLocalSpace->x);
+ data << float(RotationLocalSpace->y);
+ data << float(RotationLocalSpace->z);
+ data << float(RotationLocalSpace->w);
+ }
+ if (changesMask[4])
+ {
+ data << float(ScaleLocalSpace);
+ }
+ if (changesMask[5])
+ {
+ data << uint8(AttachmentFlags);
+ }
+ }
+}
+
+void MirroredMeshObjectData::ClearChangesMask()
+{
+ Base::ClearChangesMask(AttachParentGUID);
+ Base::ClearChangesMask(PositionLocalSpace);
+ Base::ClearChangesMask(RotationLocalSpace);
+ Base::ClearChangesMask(ScaleLocalSpace);
+ Base::ClearChangesMask(AttachmentFlags);
+ _changesMask.ResetAll();
+}
+
+void MirroredPositionData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ PositionData->WriteCreate(data, owner, receiver);
+}
+
+void MirroredPositionData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void MirroredPositionData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 2);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ PositionData->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+}
+
+void MirroredPositionData::ClearChangesMask()
+{
+ Base::ClearChangesMask(PositionData);
+ _changesMask.ResetAll();
+}
+
+void PlayerMirrorHouse::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
+{
+ data << Guid;
+ data << NeighborhoodGUID;
+ data << uint32(Level);
+ data << uint32(Favor);
+ data << int32(Field_28);
+}
+
+void PlayerMirrorHouse::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
+{
+ data << Guid;
+ data << NeighborhoodGUID;
+ data << uint32(Level);
+ data << uint32(Favor);
+ data << int32(Field_28);
+}
+
+bool PlayerMirrorHouse::operator==(PlayerMirrorHouse const& right) const
+{
+ return Guid == right.Guid
+ && NeighborhoodGUID == right.NeighborhoodGUID
+ && Level == right.Level
+ && Favor == right.Favor
+ && Field_28 == right.Field_28;
+}
+
+void NeighborhoodCharterSignature::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
+{
+ data << Guid;
+}
+
+void NeighborhoodCharterSignature::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
+{
+ data << Guid;
+}
+
+bool NeighborhoodCharterSignature::operator==(NeighborhoodCharterSignature const& right) const
+{
+ return Guid == right.Guid;
+}
+
+void NeighborhoodCharter::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
+{
+ data << int32(Field_0);
+ data << int32(Field_4);
+ data << uint32(Signatures.size());
+ for (uint32 i = 0; i < Signatures.size(); ++i)
+ {
+ Signatures[i].WriteCreate(data, owner, receiver);
+ }
+ data.WriteBits(Name.size() + 1, 8);
+ data << WorldPackets::SizedCString::Data(Name);
+}
+
+void NeighborhoodCharter::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
+{
+ data << int32(Field_0);
+ data << int32(Field_4);
+ data << uint32(Signatures.size());
+ for (uint32 i = 0; i < Signatures.size(); ++i)
+ {
+ Signatures[i].WriteUpdate(data, ignoreChangesMask, owner, receiver);
+ }
+ data.FlushBits();
+ data.WriteBits(Name.size() + 1, 8);
+ data << WorldPackets::SizedCString::Data(Name);
+}
+
+bool NeighborhoodCharter::operator==(NeighborhoodCharter const& right) const
+{
+ return Signatures == right.Signatures
+ && Field_0 == right.Field_0
+ && Field_4 == right.Field_4
+ && Name == right.Name;
+}
+
+void PlayerHouseInfoComponentData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
+{
+ if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
+ {
+ data << uint32(Field_8.size());
+ data << *Field_40;
+ }
+ data << uint32(Houses.size());
+ if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
+ {
+ data << uint32(Field_88.size());
+ data << uint32(Field_C0.size());
+ data << uint32(Field_F8.size());
+ data << uint8(Field_178);
+ for (uint32 i = 0; i < Field_8.size(); ++i)
+ {
+ data << Field_8[i];
+ }
+ }
+ for (uint32 i = 0; i < Houses.size(); ++i)
+ {
+ Houses[i].WriteCreate(data, owner, receiver);
+ }
+ if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
+ {
+ for (uint32 i = 0; i < Field_88.size(); ++i)
+ {
+ data << Field_88[i];
+ }
+ for (uint32 i = 0; i < Field_C0.size(); ++i)
+ {
+ data << Field_C0[i];
+ }
+ for (uint32 i = 0; i < Field_F8.size(); ++i)
+ {
+ data << Field_F8[i];
+ }
+ Charter->WriteCreate(data, owner, receiver);
+ }
+}
+
+static constexpr void PlayerHouseInfoComponentDataAppendAllowedFieldsMaskForFlag(PlayerHouseInfoComponentData::Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
+{
+ if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
+ allowedMaskForTarget |= std::array<uint32, 1>{ 0x000001FAu };
+}
+
+void PlayerHouseInfoComponentData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
+{
+ PlayerHouseInfoComponentDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
+}
+
+void PlayerHouseInfoComponentData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
+{
+ Mask allowedMaskForTarget({ 0x00000005u });
+ PlayerHouseInfoComponentDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
+ changesMask &= allowedMaskForTarget;
+}
+
+void PlayerHouseInfoComponentData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
+{
+ Mask allowedMaskForTarget({ 0x00000005u });
+ PlayerHouseInfoComponentDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
+ WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
+}
+
+void PlayerHouseInfoComponentData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 9);
+
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ if (!ignoreNestedChangesMask)
+ Field_8.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Field_8.size(), data);
+ }
+ if (changesMask[2])
+ {
+ if (!ignoreNestedChangesMask)
+ Houses.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Houses.size(), data);
+ }
+ if (changesMask[3])
+ {
+ if (!ignoreNestedChangesMask)
+ Field_88.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Field_88.size(), data);
+ }
+ if (changesMask[4])
+ {
+ if (!ignoreNestedChangesMask)
+ Field_C0.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Field_C0.size(), data);
+ }
+ if (changesMask[5])
+ {
+ if (!ignoreNestedChangesMask)
+ Field_F8.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(Field_F8.size(), data);
+ }
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ for (uint32 i = 0; i < Field_8.size(); ++i)
+ {
+ if (Field_8.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << Field_8[i];
+ }
+ }
+ }
+ if (changesMask[2])
+ {
+ for (uint32 i = 0; i < Houses.size(); ++i)
+ {
+ if (Houses.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ Houses[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ if (changesMask[3])
+ {
+ for (uint32 i = 0; i < Field_88.size(); ++i)
+ {
+ if (Field_88.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << Field_88[i];
+ }
+ }
+ }
+ if (changesMask[4])
+ {
+ for (uint32 i = 0; i < Field_C0.size(); ++i)
+ {
+ if (Field_C0.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << Field_C0[i];
+ }
+ }
+ }
+ if (changesMask[5])
+ {
+ for (uint32 i = 0; i < Field_F8.size(); ++i)
+ {
+ if (Field_F8.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ data << Field_F8[i];
+ }
+ }
+ }
+ if (changesMask[6])
+ {
+ data << *Field_40;
+ }
+ if (changesMask[8])
+ {
+ data << uint8(Field_178);
+ }
+ if (changesMask[7])
+ {
+ Charter->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+}
+
+void PlayerHouseInfoComponentData::ClearChangesMask()
+{
+ Base::ClearChangesMask(Field_8);
+ Base::ClearChangesMask(Houses);
+ Base::ClearChangesMask(Field_88);
+ Base::ClearChangesMask(Field_C0);
+ Base::ClearChangesMask(Field_F8);
+ Base::ClearChangesMask(Field_40);
+ Base::ClearChangesMask(Charter);
+ Base::ClearChangesMask(Field_178);
+ _changesMask.ResetAll();
+}
+
+void HousingStorageData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteMapFieldCreate(Decor, data, owner, receiver);
+ data << uint32(DecorMaxOwnedCount);
+}
+
+void HousingStorageData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingStorageData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 3);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ WriteMapFieldUpdate(Decor, data, ignoreNestedChangesMask, owner, receiver);
+ }
+ if (changesMask[2])
+ {
+ data << uint32(DecorMaxOwnedCount);
+ }
+ }
+}
+
+void HousingStorageData::ClearChangesMask()
+{
+ Base::ClearChangesMask(Decor);
+ Base::ClearChangesMask(DecorMaxOwnedCount);
+ _changesMask.ResetAll();
+}
+
+void HousingFixtureData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ data << int32(ExteriorComponentID);
+ data << int32(HouseExteriorWmoDataID);
+ data << int32(ExteriorComponentHookID);
+ data << *HouseGUID;
+ data << *AttachParentGUID;
+ data << *Guid;
+ data << *GameObjectGUID;
+ data << uint8(ExteriorComponentType);
+ data << uint8(Field_59);
+ data << uint8(Size);
+}
+
+void HousingFixtureData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
+{
+ WriteUpdate(data, _changesMask, false, owner, receiver);
+}
+
+void HousingFixtureData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const
+{
+ data.WriteBits(changesMask.GetBlock(0), 11);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << int32(ExteriorComponentID);
+ }
+ if (changesMask[2])
+ {
+ data << int32(HouseExteriorWmoDataID);
+ }
+ if (changesMask[3])
+ {
+ data << int32(ExteriorComponentHookID);
+ }
+ if (changesMask[4])
+ {
+ data << *HouseGUID;
+ }
+ if (changesMask[5])
+ {
+ data << *AttachParentGUID;
+ }
+ if (changesMask[6])
+ {
+ data << *Guid;
+ }
+ if (changesMask[7])
+ {
+ data << *GameObjectGUID;
+ }
+ if (changesMask[8])
+ {
+ data << uint8(ExteriorComponentType);
+ }
+ if (changesMask[9])
+ {
+ data << uint8(Field_59);
+ }
+ if (changesMask[10])
+ {
+ data << uint8(Size);
+ }
+ }
+}
+
+void HousingFixtureData::ClearChangesMask()
+{
+ Base::ClearChangesMask(ExteriorComponentID);
+ Base::ClearChangesMask(HouseExteriorWmoDataID);
+ Base::ClearChangesMask(ExteriorComponentHookID);
+ Base::ClearChangesMask(HouseGUID);
+ Base::ClearChangesMask(AttachParentGUID);
+ Base::ClearChangesMask(Guid);
+ Base::ClearChangesMask(GameObjectGUID);
+ Base::ClearChangesMask(ExteriorComponentType);
+ Base::ClearChangesMask(Field_59);
+ Base::ClearChangesMask(Size);
+ _changesMask.ResetAll();
+}
+
}
#if TRINITY_COMPILER == TRINITY_COMPILER_GNU
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index aad04046fb0..1ccb5e0fdd7 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -271,7 +271,7 @@ struct UnitAssistActionData : public IsUpdateFieldStructureTag, public HasChange
void ClearChangesMask();
};
-struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<223>
+struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<224>
{
UpdateField<bool, 0, 1> Field_314;
UpdateField<std::vector<uint32>, 0, 2> StateWorldEffectIDs;
@@ -312,127 +312,128 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<223>
UpdateField<uint8, 0, 29> ClassId;
UpdateField<uint8, 0, 30> PlayerClassId;
UpdateField<uint8, 0, 31> Sex;
- UpdateField<uint8, 32, 33> DisplayPower;
- UpdateField<uint32, 32, 34> OverrideDisplayPowerID;
- UpdateField<int64, 32, 35> Health;
- UpdateField<int64, 32, 36> MaxHealth;
- UpdateField<int32, 32, 37> Level;
- UpdateField<int32, 32, 38> EffectiveLevel;
- UpdateField<int32, 32, 39> ContentTuningID;
- UpdateField<int32, 32, 40> ScalingLevelMin;
- UpdateField<int32, 32, 41> ScalingLevelMax;
- UpdateField<int32, 32, 42> ScalingLevelDelta;
- UpdateField<uint8, 32, 43> ScalingFactionGroup;
- UpdateField<int32, 32, 44> FactionTemplate;
+ UpdateField<uint8, 32, 33> CreatureType;
+ UpdateField<uint8, 32, 34> DisplayPower;
+ UpdateField<uint32, 32, 35> OverrideDisplayPowerID;
+ UpdateField<int64, 32, 36> Health;
+ UpdateField<int64, 32, 37> MaxHealth;
+ UpdateField<int32, 32, 38> Level;
+ UpdateField<int32, 32, 39> EffectiveLevel;
+ UpdateField<int32, 32, 40> ContentTuningID;
+ UpdateField<int32, 32, 41> ScalingLevelMin;
+ UpdateField<int32, 32, 42> ScalingLevelMax;
+ UpdateField<int32, 32, 43> ScalingLevelDelta;
+ UpdateField<uint8, 32, 44> ScalingFactionGroup;
+ UpdateField<int32, 32, 45> FactionTemplate;
struct FactionTemplateTag : ViewerDependentValueTag<int32> {};
- UpdateField<uint32, 32, 45> Flags;
+ UpdateField<uint32, 32, 46> Flags;
struct FlagsTag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 46> Flags2;
+ UpdateField<uint32, 32, 47> Flags2;
struct Flags2Tag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 47> Flags3;
+ UpdateField<uint32, 32, 48> Flags3;
struct Flags3Tag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 48> Flags4;
+ UpdateField<uint32, 32, 49> Flags4;
struct Flags4Tag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 49> AuraState;
+ UpdateField<uint32, 32, 50> AuraState;
struct AuraStateTag : ViewerDependentValueTag<uint32> {};
- UpdateField<uint32, 32, 50> RangedAttackRoundBaseTime;
- UpdateField<float, 32, 51> BoundingRadius;
- UpdateField<float, 32, 52> CombatReach;
- UpdateField<float, 32, 53> DisplayScale;
- UpdateField<int32, 32, 54> CreatureFamily;
- UpdateField<uint8, 32, 55> CreatureType;
- UpdateField<int32, 32, 56> NativeDisplayID;
- UpdateField<float, 32, 57> NativeXDisplayScale;
- UpdateField<int32, 32, 58> MountDisplayID;
- UpdateField<int32, 32, 59> CosmeticMountDisplayID;
- UpdateField<float, 32, 60> MinDamage;
- UpdateField<float, 32, 61> MaxDamage;
- UpdateField<float, 32, 62> MinOffHandDamage;
- UpdateField<float, 32, 63> MaxOffHandDamage;
- UpdateField<uint8, 64, 65> StandState;
- UpdateField<uint8, 64, 66> PetTalentPoints;
- UpdateField<uint8, 64, 67> VisFlags;
- UpdateField<uint8, 64, 68> AnimTier;
- UpdateField<uint32, 64, 69> PetNumber;
- UpdateField<uint32, 64, 70> PetNameTimestamp;
- UpdateField<uint32, 64, 71> PetExperience;
- UpdateField<uint32, 64, 72> PetNextLevelExperience;
- UpdateField<float, 64, 73> ModCastingSpeed;
- UpdateField<float, 64, 74> ModCastingSpeedNeg;
- UpdateField<float, 64, 75> ModSpellHaste;
- UpdateField<float, 64, 76> ModHaste;
- UpdateField<float, 64, 77> ModRangedHaste;
- UpdateField<float, 64, 78> ModHasteRegen;
- UpdateField<float, 64, 79> ModTimeRate;
- UpdateField<int32, 64, 80> CreatedBySpell;
- UpdateField<int32, 64, 81> EmoteState;
- UpdateField<int32, 64, 82> BaseMana;
- UpdateField<int32, 64, 83> BaseHealth;
- UpdateField<uint8, 64, 84> SheatheState;
- UpdateField<uint8, 64, 85> PvpFlags;
+ UpdateField<uint32, 32, 51> RangedAttackRoundBaseTime;
+ UpdateField<float, 32, 52> BoundingRadius;
+ UpdateField<float, 32, 53> CombatReach;
+ UpdateField<float, 32, 54> DisplayScale;
+ UpdateField<int32, 32, 55> CreatureFamily;
+ UpdateField<uint8, 32, 56> OverrideCreatureType;
+ UpdateField<int32, 32, 57> NativeDisplayID;
+ UpdateField<float, 32, 58> NativeXDisplayScale;
+ UpdateField<int32, 32, 59> MountDisplayID;
+ UpdateField<int32, 32, 60> CosmeticMountDisplayID;
+ UpdateField<float, 32, 61> MinDamage;
+ UpdateField<float, 32, 62> MaxDamage;
+ UpdateField<float, 32, 63> MinOffHandDamage;
+ UpdateField<float, 64, 65> MaxOffHandDamage;
+ UpdateField<uint8, 64, 66> StandState;
+ UpdateField<uint8, 64, 67> PetTalentPoints;
+ UpdateField<uint8, 64, 68> VisFlags;
+ UpdateField<uint8, 64, 69> AnimTier;
+ UpdateField<uint32, 64, 70> PetNumber;
+ UpdateField<uint32, 64, 71> PetNameTimestamp;
+ UpdateField<uint32, 64, 72> PetExperience;
+ UpdateField<uint32, 64, 73> PetNextLevelExperience;
+ UpdateField<float, 64, 74> ModCastingSpeed;
+ UpdateField<float, 64, 75> ModCastingSpeedNeg;
+ UpdateField<float, 64, 76> ModSpellHaste;
+ UpdateField<float, 64, 77> ModHaste;
+ UpdateField<float, 64, 78> ModRangedHaste;
+ UpdateField<float, 64, 79> ModHasteRegen;
+ UpdateField<float, 64, 80> ModTimeRate;
+ UpdateField<int32, 64, 81> CreatedBySpell;
+ UpdateField<int32, 64, 82> EmoteState;
+ UpdateField<int32, 64, 83> BaseMana;
+ UpdateField<int32, 64, 84> BaseHealth;
+ UpdateField<uint8, 64, 85> SheatheState;
+ UpdateField<uint8, 64, 86> PvpFlags;
struct PvpFlagsTag : ViewerDependentValueTag<uint8> {};
- UpdateField<uint8, 64, 86> PetFlags;
- UpdateField<uint8, 64, 87> ShapeshiftForm;
- UpdateField<int32, 64, 88> AttackPower;
- UpdateField<int32, 64, 89> AttackPowerModPos;
- UpdateField<int32, 64, 90> AttackPowerModNeg;
- UpdateField<float, 64, 91> AttackPowerMultiplier;
- UpdateField<int32, 64, 92> AttackPowerModSupport;
- UpdateField<int32, 64, 93> RangedAttackPower;
- UpdateField<int32, 64, 94> RangedAttackPowerModPos;
- UpdateField<int32, 64, 95> RangedAttackPowerModNeg;
- UpdateField<float, 96, 97> RangedAttackPowerMultiplier;
- UpdateField<int32, 96, 98> RangedAttackPowerModSupport;
- UpdateField<int32, 96, 99> MainHandWeaponAttackPower;
- UpdateField<int32, 96, 100> OffHandWeaponAttackPower;
- UpdateField<int32, 96, 101> RangedWeaponAttackPower;
- UpdateField<int32, 96, 102> SetAttackSpeedAura;
- UpdateField<float, 96, 103> Lifesteal;
- UpdateField<float, 96, 104> MinRangedDamage;
- UpdateField<float, 96, 105> MaxRangedDamage;
- UpdateField<float, 96, 106> ManaCostMultiplier;
- UpdateField<float, 96, 107> MaxHealthModifier;
- UpdateField<float, 96, 108> HoverHeight;
- UpdateField<int32, 96, 109> MinItemLevelCutoff;
- UpdateField<int32, 96, 110> MinItemLevel;
- UpdateField<int32, 96, 111> MaxItemLevel;
- UpdateField<int32, 96, 112> AzeriteItemLevel;
- UpdateField<int32, 96, 113> WildBattlePetLevel;
- UpdateField<int32, 96, 114> BattlePetCompanionExperience;
- UpdateField<uint32, 96, 115> BattlePetCompanionNameTimestamp;
- UpdateField<int32, 96, 116> InteractSpellID;
+ UpdateField<uint8, 64, 87> PetFlags;
+ UpdateField<uint8, 64, 88> ShapeshiftForm;
+ UpdateField<int32, 64, 89> AttackPower;
+ UpdateField<int32, 64, 90> AttackPowerModPos;
+ UpdateField<int32, 64, 91> AttackPowerModNeg;
+ UpdateField<float, 64, 92> AttackPowerMultiplier;
+ UpdateField<int32, 64, 93> AttackPowerModSupport;
+ UpdateField<int32, 64, 94> RangedAttackPower;
+ UpdateField<int32, 64, 95> RangedAttackPowerModPos;
+ UpdateField<int32, 96, 97> RangedAttackPowerModNeg;
+ UpdateField<float, 96, 98> RangedAttackPowerMultiplier;
+ UpdateField<int32, 96, 99> RangedAttackPowerModSupport;
+ UpdateField<int32, 96, 100> MainHandWeaponAttackPower;
+ UpdateField<int32, 96, 101> OffHandWeaponAttackPower;
+ UpdateField<int32, 96, 102> RangedWeaponAttackPower;
+ UpdateField<int32, 96, 103> SetAttackSpeedAura;
+ UpdateField<float, 96, 104> Lifesteal;
+ UpdateField<float, 96, 105> MinRangedDamage;
+ UpdateField<float, 96, 106> MaxRangedDamage;
+ UpdateField<float, 96, 107> ManaCostMultiplier;
+ UpdateField<float, 96, 108> MaxHealthModifier;
+ UpdateField<float, 96, 109> HoverHeight;
+ UpdateField<int32, 96, 110> MinItemLevelCutoff;
+ UpdateField<int32, 96, 111> MinItemLevel;
+ UpdateField<int32, 96, 112> MaxItemLevel;
+ UpdateField<int32, 96, 113> AzeriteItemLevel;
+ UpdateField<int32, 96, 114> WildBattlePetLevel;
+ UpdateField<int32, 96, 115> BattlePetCompanionExperience;
+ UpdateField<uint32, 96, 116> BattlePetCompanionNameTimestamp;
+ UpdateField<int32, 96, 117> InteractSpellID;
struct InteractSpellIDTag : ViewerDependentValueTag<int32> {};
- UpdateField<int32, 96, 117> ScaleDuration;
- UpdateField<int32, 96, 118> LooksLikeMountID;
- UpdateField<int32, 96, 119> LooksLikeCreatureID;
- UpdateField<int32, 96, 120> LookAtControllerID;
- UpdateField<int32, 96, 121> PerksVendorItemID;
- UpdateField<int32, 96, 122> TaxiNodesID;
- UpdateField<ObjectGuid, 96, 123> GuildGUID;
- UpdateField<int32, 96, 124> FlightCapabilityID;
- UpdateField<float, 96, 125> GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use
- UpdateField<int32, 96, 126> DriveCapabilityID;
- UpdateField<int32, 96, 127> MaxHealthModifierFlatNeg;
- UpdateField<int32, 128, 129> MaxHealthModifierFlatPos;
- UpdateField<uint32, 128, 130> SilencedSchoolMask;
- UpdateField<uint32, 128, 131> CurrentAreaID;
- UpdateField<float, 128, 132> Field_31C;
- UpdateField<float, 128, 133> Field_320; // Soft targeting related? When UnitFlags3 & 0x40000000 is set, increases some range check using CombatReach by this amount
- UpdateField<ObjectGuid, 128, 134> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
- OptionalUpdateField<UF::UnitAssistActionData, 128, 135> AssistActionData;
- UpdateFieldArray<int32, 10, 136, 137> Power;
- UpdateFieldArray<int32, 10, 136, 147> MaxPower;
- UpdateFieldArray<float, 10, 136, 157> PowerRegenFlatModifier;
- UpdateFieldArray<float, 10, 136, 167> PowerRegenInterruptedFlatModifier;
- UpdateFieldArray<UF::VisibleItem, 3, 177, 178> VirtualItems;
- UpdateFieldArray<uint32, 2, 181, 182> AttackRoundBaseTime;
- UpdateFieldArray<int32, 4, 184, 185> Stats;
- UpdateFieldArray<int32, 4, 184, 189> StatPosBuff;
- UpdateFieldArray<int32, 4, 184, 193> StatNegBuff;
- UpdateFieldArray<int32, 4, 184, 197> StatSupportBuff;
- UpdateFieldArray<int32, 7, 201, 202> Resistances;
- UpdateFieldArray<int32, 7, 201, 209> BonusResistanceMods;
- UpdateFieldArray<int32, 7, 201, 216> ManaCostModifier;
+ UpdateField<int32, 96, 118> ScaleDuration;
+ UpdateField<int32, 96, 119> LooksLikeMountID;
+ UpdateField<int32, 96, 120> LooksLikeCreatureID;
+ UpdateField<int32, 96, 121> LookAtControllerID;
+ UpdateField<int32, 96, 122> PerksVendorItemID;
+ UpdateField<int32, 96, 123> TaxiNodesID;
+ UpdateField<ObjectGuid, 96, 124> GuildGUID;
+ UpdateField<int32, 96, 125> FlightCapabilityID;
+ UpdateField<float, 96, 126> GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use
+ UpdateField<int32, 96, 127> DriveCapabilityID;
+ UpdateField<int32, 128, 129> MaxHealthModifierFlatNeg;
+ UpdateField<int32, 128, 130> MaxHealthModifierFlatPos;
+ UpdateField<uint32, 128, 131> SilencedSchoolMask;
+ UpdateField<uint32, 128, 132> CurrentAreaID;
+ UpdateField<float, 128, 133> Field_31C;
+ UpdateField<float, 128, 134> Field_320; // Soft targeting related? When UnitFlags3 & 0x40000000 is set, increases some range check using CombatReach by this amount
+ UpdateField<ObjectGuid, 128, 135> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
+ OptionalUpdateField<UF::UnitAssistActionData, 128, 136> AssistActionData;
+ UpdateFieldArray<int32, 10, 137, 138> Power;
+ UpdateFieldArray<int32, 10, 137, 148> MaxPower;
+ UpdateFieldArray<float, 10, 137, 158> PowerRegenFlatModifier;
+ UpdateFieldArray<float, 10, 137, 168> PowerRegenInterruptedFlatModifier;
+ UpdateFieldArray<UF::VisibleItem, 3, 178, 179> VirtualItems;
+ UpdateFieldArray<uint32, 2, 182, 183> AttackRoundBaseTime;
+ UpdateFieldArray<int32, 4, 185, 186> Stats;
+ UpdateFieldArray<int32, 4, 185, 190> StatPosBuff;
+ UpdateFieldArray<int32, 4, 185, 194> StatNegBuff;
+ UpdateFieldArray<int32, 4, 185, 198> StatSupportBuff;
+ UpdateFieldArray<int32, 7, 202, 203> Resistances;
+ UpdateFieldArray<int32, 7, 202, 210> BonusResistanceMods;
+ UpdateFieldArray<int32, 7, 202, 217> ManaCostModifier;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
@@ -453,13 +454,14 @@ struct ChrCustomizationChoice : public IsUpdateFieldStructureTag
bool operator!=(ChrCustomizationChoice const& right) const { return !(*this == right); }
};
-struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<30>
+struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<31>
{
UpdateField<int32, 0, 1> QuestID;
UpdateField<uint16, 0, 2> StateFlags;
UpdateField<int64, 0, 3> EndTime;
UpdateField<uint32, 0, 4> ObjectiveFlags;
- UpdateFieldArray<int16, 24, 5, 6> ObjectiveProgress;
+ UpdateField<uint32, 0, 5> EnabledObjectivesMask;
+ UpdateFieldArray<int16, 24, 6, 7> ObjectiveProgress;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
@@ -503,7 +505,7 @@ struct PetCreatureName : public IsUpdateFieldStructureTag, public HasChangesMask
struct CTROptions : public IsUpdateFieldStructureTag
{
- uint32 ConditionalFlags;
+ std::vector<uint32> ConditionalFlags;
uint8 FactionGroup;
uint32 ChromieTimeExpansionMask;
@@ -643,9 +645,9 @@ struct BitVector : public IsUpdateFieldStructureTag, public HasChangesMask<2>
void ClearChangesMask();
};
-struct BitVectors : public IsUpdateFieldStructureTag, public HasChangesMask<14>
+struct BitVectors : public IsUpdateFieldStructureTag, public HasChangesMask<15>
{
- UpdateFieldArray<UF::BitVector, 13, 0, 1> Values;
+ UpdateFieldArray<UF::BitVector, 14, 0, 1> Values;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
@@ -1091,7 +1093,7 @@ struct Research : public IsUpdateFieldStructureTag
bool operator!=(Research const& right) const { return !(*this == right); }
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<385>
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<389>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
UpdateField<bool, 0, 2> BackpackSellJunkDisabled;
@@ -1099,9 +1101,9 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateField<bool, 0, 4> SortBagsRightToLeft;
UpdateField<bool, 0, 5> InsertItemsLeftToRight;
UpdateField<bool, 0, 6> HasPerksProgramPendingReward;
- UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 42, 43> ResearchSites;
- UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 44, 45> ResearchSiteProgress;
- UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 46, 47> Research;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 46, 47> ResearchSites;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 48, 49> ResearchSiteProgress;
+ UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 50, 51> Research;
DynamicUpdateField<uint64, 0, 7> KnownTitles;
DynamicUpdateField<UF::PlayerDataElement, 0, 8> CharacterDataElements;
DynamicUpdateField<UF::PlayerDataElement, 0, 9> AccountDataElements;
@@ -1118,138 +1120,142 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
DynamicUpdateField<uint32, 0, 21> RuneforgePowers;
DynamicUpdateField<uint32, 0, 22> TransmogIllusions;
DynamicUpdateField<uint32, 0, 23> WarbandScenes;
- DynamicUpdateField<UF::SpellPctModByLabel, 0, 25> SpellPctModByLabel;
- DynamicUpdateField<UF::SpellFlatModByLabel, 0, 26> SpellFlatModByLabel;
- DynamicUpdateField<UF::MawPower, 0, 27> MawPowers;
- DynamicUpdateField<UF::MultiFloorExplore, 0, 28> MultiFloorExploration;
- DynamicUpdateField<UF::RecipeProgressionInfo, 0, 29> RecipeProgression;
- DynamicUpdateField<UF::ReplayedQuest, 0, 30> ReplayedQuests;
- DynamicUpdateField<UF::QuestLog, 0, 31> TaskQuests;
- DynamicUpdateField<int32, 32, 33> DisabledSpells;
- DynamicUpdateField<UF::PersonalCraftingOrderCount, 32, 35> PersonalCraftingOrderCounts;
- DynamicUpdateField<UF::NPCCraftingOrderInfo, 32, 36> NpcCraftingOrders;
- DynamicUpdateField<UF::CategoryCooldownMod, 32, 37> CategoryCooldownMods;
- DynamicUpdateField<UF::WeeklySpellUse, 32, 38> WeeklySpellUses;
- DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 39> TrackedCollectableSources;
+ DynamicUpdateField<uint32, 0, 24> HouseRooms;
+ DynamicUpdateField<uint32, 0, 25> HouseExteriorComponents;
+ DynamicUpdateField<uint32, 0, 26> HouseThemes;
+ DynamicUpdateField<uint32, 0, 27> HouseRoomComponentTextures;
+ DynamicUpdateField<UF::SpellPctModByLabel, 0, 29> SpellPctModByLabel;
+ DynamicUpdateField<UF::SpellFlatModByLabel, 0, 30> SpellFlatModByLabel;
+ DynamicUpdateField<UF::MawPower, 0, 31> MawPowers;
+ DynamicUpdateField<UF::MultiFloorExplore, 32, 33> MultiFloorExploration;
+ DynamicUpdateField<UF::RecipeProgressionInfo, 32, 34> RecipeProgression;
+ DynamicUpdateField<UF::ReplayedQuest, 32, 35> ReplayedQuests;
+ DynamicUpdateField<UF::QuestLog, 32, 36> TaskQuests;
+ DynamicUpdateField<int32, 32, 37> DisabledSpells;
+ DynamicUpdateField<UF::PersonalCraftingOrderCount, 32, 39> PersonalCraftingOrderCounts;
+ DynamicUpdateField<UF::NPCCraftingOrderInfo, 32, 40> NpcCraftingOrders;
+ DynamicUpdateField<UF::CategoryCooldownMod, 32, 41> CategoryCooldownMods;
+ DynamicUpdateField<UF::WeeklySpellUse, 32, 42> WeeklySpellUses;
+ DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 43> TrackedCollectableSources;
DynamicUpdateField<UF::PVPInfo, 0, 10> PvpInfo;
- DynamicUpdateField<UF::CharacterRestriction, 0, 24> CharacterRestrictions;
- DynamicUpdateField<UF::CraftingOrder, 32, 34> CraftingOrders;
- DynamicUpdateField<UF::BankTabSettings, 32, 40> CharacterBankTabSettings;
- DynamicUpdateField<UF::BankTabSettings, 32, 41> AccountBankTabSettings;
- UpdateField<ObjectGuid, 32, 48> FarsightObject;
- UpdateField<ObjectGuid, 32, 49> SummonedBattlePetGUID;
- UpdateField<uint64, 32, 50> Coinage;
- UpdateField<uint64, 32, 51> AccountBankCoinage;
- UpdateField<int32, 32, 52> XP;
- UpdateField<int32, 32, 53> NextLevelXP;
- UpdateField<int32, 32, 54> TrialXP;
- UpdateField<UF::SkillInfo, 32, 55> Skill;
- UpdateField<int32, 32, 56> CharacterPoints;
- UpdateField<int32, 32, 57> MaxTalentTiers;
- UpdateField<uint32, 32, 58> TrackCreatureMask;
- UpdateField<float, 32, 59> MainhandExpertise;
- UpdateField<float, 32, 60> OffhandExpertise;
- UpdateField<float, 32, 61> RangedExpertise;
- UpdateField<float, 32, 62> CombatRatingExpertise;
- UpdateField<float, 32, 63> BlockPercentage;
- UpdateField<float, 32, 64> DodgePercentage;
- UpdateField<float, 32, 65> DodgePercentageFromAttribute;
- UpdateField<float, 32, 66> ParryPercentage;
- UpdateField<float, 32, 67> ParryPercentageFromAttribute;
- UpdateField<float, 32, 68> CritPercentage;
- UpdateField<float, 32, 69> RangedCritPercentage;
- UpdateField<float, 70, 71> OffhandCritPercentage;
- UpdateField<float, 70, 72> SpellCritPercentage;
- UpdateField<int32, 70, 73> ShieldBlock;
- UpdateField<float, 70, 74> ShieldBlockCritPercentage;
- UpdateField<float, 70, 75> Mastery;
- UpdateField<float, 70, 76> Speed;
- UpdateField<float, 70, 77> Avoidance;
- UpdateField<float, 70, 78> Sturdiness;
- UpdateField<int32, 70, 79> Versatility;
- UpdateField<float, 70, 80> VersatilityBonus;
- UpdateField<float, 70, 81> PvpPowerDamage;
- UpdateField<float, 70, 82> PvpPowerHealing;
- UpdateField<UF::BitVectors, 70, 83> BitVectors;
- UpdateField<int32, 70, 84> ModHealingDonePos;
- UpdateField<float, 70, 85> ModHealingPercent;
- UpdateField<float, 70, 86> ModPeriodicHealingDonePercent;
- UpdateField<float, 70, 87> ModSpellPowerPercent;
- UpdateField<float, 70, 88> ModResiliencePercent;
- UpdateField<float, 70, 89> OverrideSpellPowerByAPPercent;
- UpdateField<float, 70, 90> OverrideAPBySpellPowerPercent;
- UpdateField<int32, 70, 91> ModTargetResistance;
- UpdateField<int32, 70, 92> ModTargetPhysicalResistance;
- UpdateField<uint32, 70, 93> LocalFlags;
- UpdateField<uint8, 70, 94> GrantableLevels;
- UpdateField<uint8, 70, 95> MultiActionBars;
- UpdateField<uint8, 70, 96> LifetimeMaxRank;
- UpdateField<uint8, 70, 97> NumRespecs;
- UpdateField<uint32, 70, 98> PvpMedals;
- UpdateField<uint16, 70, 99> TodayHonorableKills;
- UpdateField<uint16, 70, 100> YesterdayHonorableKills;
- UpdateField<uint32, 70, 101> LifetimeHonorableKills;
- UpdateField<int32, 102, 103> WatchedFactionIndex;
- UpdateField<int32, 102, 104> MaxLevel;
- UpdateField<int32, 102, 105> ScalingPlayerLevelDelta;
- UpdateField<int32, 102, 106> MaxCreatureScalingLevel;
- UpdateField<int32, 102, 107> PetSpellPower;
- UpdateField<float, 102, 108> UiHitModifier;
- UpdateField<float, 102, 109> UiSpellHitModifier;
- UpdateField<int32, 102, 110> HomeRealmTimeOffset;
- UpdateField<float, 102, 111> ModPetHaste;
- UpdateField<int8, 102, 112> JailersTowerLevelMax;
- UpdateField<int8, 102, 113> JailersTowerLevel;
- UpdateField<uint8, 102, 114> LocalRegenFlags;
- UpdateField<uint8, 102, 115> AuraVision;
- UpdateField<uint8, 102, 116> NumBackpackSlots;
- UpdateField<int32, 102, 117> OverrideSpellsID;
- UpdateField<uint16, 102, 118> LootSpecID;
- UpdateField<uint32, 102, 119> OverrideZonePVPType;
- UpdateField<int32, 102, 120> Honor;
- UpdateField<int32, 102, 121> HonorNextLevel;
- UpdateField<int32, 102, 122> PerksProgramCurrency;
- UpdateField<uint8, 102, 123> NumBankSlots;
- UpdateField<uint8, 102, 124> NumCharacterBankTabs;
- UpdateField<uint8, 102, 125> NumAccountBankTabs;
- UpdateField<UF::ResearchHistory, 102, 126> ResearchHistory;
- UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 127> FrozenPerksVendorItem;
- UpdateField<UF::ActivePlayerUnk901, 102, 129> Field_1410;
- OptionalUpdateField<UF::QuestSession, 102, 128> QuestSession;
- UpdateField<int32, 102, 130> UiChromieTimeExpansionID;
- UpdateField<int32, 102, 131> TimerunningSeasonID;
- UpdateField<int32, 102, 132> TransportServerTime;
- UpdateField<uint32, 102, 133> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
- UpdateField<int16, 134, 135> DEBUGSoulbindConduitRank;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 134, 136> DungeonScore;
- MapUpdateField<int32, UF::TraitConfig, 134, 137> TraitConfigs;
- UpdateField<uint32, 134, 138> ActiveCombatTraitConfigID;
- UpdateField<int32, 134, 139> ItemUpgradeHighOnehandWeaponItemID;
- UpdateField<int32, 134, 140> ItemUpgradeHighFingerItemID;
- UpdateField<float, 134, 141> ItemUpgradeHighFingerWatermark;
- UpdateField<int32, 134, 142> ItemUpgradeHighTrinketItemID;
- UpdateField<float, 134, 143> ItemUpgradeHighTrinketWatermark;
- UpdateField<uint64, 134, 144> LootHistoryInstanceID;
- OptionalUpdateField<UF::StableInfo, 134, 145> PetStable;
- UpdateField<uint8, 134, 146> RequiredMountCapabilityFlags;
- OptionalUpdateField<UF::WalkInData, 134, 147> WalkInData;
- OptionalUpdateField<UF::DelveData, 134, 148> DelveData;
- OptionalUpdateField<UF::ChallengeModeData, 134, 149> ChallengeModeData;
- UpdateFieldArray<ObjectGuid, 105, 150, 151> InvSlots;
- UpdateFieldArray<UF::RestInfo, 2, 256, 257> RestInfo;
- UpdateFieldArray<int32, 7, 259, 260> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 259, 267> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 259, 274> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 259, 281> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 288, 289> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 288, 292> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 295, 296> BuybackPrice;
- UpdateFieldArray<int64, 12, 295, 308> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 320, 321> CombatRatings;
- UpdateFieldArray<uint32, 4, 353, 354> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 358, 359> ProfessionSkillLine;
- UpdateFieldArray<uint32, 5, 361, 362> BagSlotFlags;
- UpdateFieldArray<float, 17, 367, 368> ItemUpgradeHighWatermark;
+ DynamicUpdateField<UF::CharacterRestriction, 0, 28> CharacterRestrictions;
+ DynamicUpdateField<UF::CraftingOrder, 32, 38> CraftingOrders;
+ DynamicUpdateField<UF::BankTabSettings, 32, 44> CharacterBankTabSettings;
+ DynamicUpdateField<UF::BankTabSettings, 32, 45> AccountBankTabSettings;
+ UpdateField<ObjectGuid, 32, 52> FarsightObject;
+ UpdateField<ObjectGuid, 32, 53> SummonedBattlePetGUID;
+ UpdateField<uint64, 32, 54> Coinage;
+ UpdateField<uint64, 32, 55> AccountBankCoinage;
+ UpdateField<int32, 32, 56> XP;
+ UpdateField<int32, 32, 57> NextLevelXP;
+ UpdateField<int32, 32, 58> TrialXP;
+ UpdateField<UF::SkillInfo, 32, 59> Skill;
+ UpdateField<int32, 32, 60> CharacterPoints;
+ UpdateField<int32, 32, 61> MaxTalentTiers;
+ UpdateField<uint32, 32, 62> TrackCreatureMask;
+ UpdateField<float, 32, 63> MainhandExpertise;
+ UpdateField<float, 32, 64> OffhandExpertise;
+ UpdateField<float, 32, 65> RangedExpertise;
+ UpdateField<float, 32, 66> CombatRatingExpertise;
+ UpdateField<float, 32, 67> BlockPercentage;
+ UpdateField<float, 32, 68> DodgePercentage;
+ UpdateField<float, 32, 69> DodgePercentageFromAttribute;
+ UpdateField<float, 70, 71> ParryPercentage;
+ UpdateField<float, 70, 72> ParryPercentageFromAttribute;
+ UpdateField<float, 70, 73> CritPercentage;
+ UpdateField<float, 70, 74> RangedCritPercentage;
+ UpdateField<float, 70, 75> OffhandCritPercentage;
+ UpdateField<float, 70, 76> SpellCritPercentage;
+ UpdateField<int32, 70, 77> ShieldBlock;
+ UpdateField<float, 70, 78> ShieldBlockCritPercentage;
+ UpdateField<float, 70, 79> Mastery;
+ UpdateField<float, 70, 80> Speed;
+ UpdateField<float, 70, 81> Avoidance;
+ UpdateField<float, 70, 82> Sturdiness;
+ UpdateField<int32, 70, 83> Versatility;
+ UpdateField<float, 70, 84> VersatilityBonus;
+ UpdateField<float, 70, 85> PvpPowerDamage;
+ UpdateField<float, 70, 86> PvpPowerHealing;
+ UpdateField<UF::BitVectors, 70, 87> BitVectors;
+ UpdateField<int32, 70, 88> ModHealingDonePos;
+ UpdateField<float, 70, 89> ModHealingPercent;
+ UpdateField<float, 70, 90> ModPeriodicHealingDonePercent;
+ UpdateField<float, 70, 91> ModSpellPowerPercent;
+ UpdateField<float, 70, 92> ModResiliencePercent;
+ UpdateField<float, 70, 93> OverrideSpellPowerByAPPercent;
+ UpdateField<float, 70, 94> OverrideAPBySpellPowerPercent;
+ UpdateField<int32, 70, 95> ModTargetResistance;
+ UpdateField<int32, 70, 96> ModTargetPhysicalResistance;
+ UpdateField<uint32, 70, 97> LocalFlags;
+ UpdateField<uint8, 70, 98> GrantableLevels;
+ UpdateField<uint8, 70, 99> MultiActionBars;
+ UpdateField<uint8, 70, 100> LifetimeMaxRank;
+ UpdateField<uint8, 70, 101> NumRespecs;
+ UpdateField<uint32, 102, 103> PvpMedals;
+ UpdateField<uint16, 102, 104> TodayHonorableKills;
+ UpdateField<uint16, 102, 105> YesterdayHonorableKills;
+ UpdateField<uint32, 102, 106> LifetimeHonorableKills;
+ UpdateField<int32, 102, 107> WatchedFactionIndex;
+ UpdateField<int32, 102, 108> MaxLevel;
+ UpdateField<int32, 102, 109> ScalingPlayerLevelDelta;
+ UpdateField<int32, 102, 110> MaxCreatureScalingLevel;
+ UpdateField<int32, 102, 111> PetSpellPower;
+ UpdateField<float, 102, 112> UiHitModifier;
+ UpdateField<float, 102, 113> UiSpellHitModifier;
+ UpdateField<int32, 102, 114> HomeRealmTimeOffset;
+ UpdateField<float, 102, 115> ModPetHaste;
+ UpdateField<int8, 102, 116> JailersTowerLevelMax;
+ UpdateField<int8, 102, 117> JailersTowerLevel;
+ UpdateField<uint8, 102, 118> LocalRegenFlags;
+ UpdateField<uint8, 102, 119> AuraVision;
+ UpdateField<uint8, 102, 120> NumBackpackSlots;
+ UpdateField<int32, 102, 121> OverrideSpellsID;
+ UpdateField<uint16, 102, 122> LootSpecID;
+ UpdateField<uint32, 102, 123> OverrideZonePVPType;
+ UpdateField<int32, 102, 124> Honor;
+ UpdateField<int32, 102, 125> HonorNextLevel;
+ UpdateField<int32, 102, 126> PerksProgramCurrency;
+ UpdateField<uint8, 102, 127> NumBankSlots;
+ UpdateField<uint8, 102, 128> NumCharacterBankTabs;
+ UpdateField<uint8, 102, 129> NumAccountBankTabs;
+ UpdateField<UF::ResearchHistory, 102, 130> ResearchHistory;
+ UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 131> FrozenPerksVendorItem;
+ UpdateField<UF::ActivePlayerUnk901, 102, 133> Field_1410;
+ OptionalUpdateField<UF::QuestSession, 102, 132> QuestSession;
+ UpdateField<int32, 134, 135> UiChromieTimeExpansionID;
+ UpdateField<int32, 134, 136> TimerunningSeasonID;
+ UpdateField<int32, 134, 137> TransportServerTime;
+ UpdateField<uint32, 134, 138> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
+ UpdateField<int16, 134, 139> DEBUGSoulbindConduitRank;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 134, 140> DungeonScore;
+ MapUpdateField<int32, UF::TraitConfig, 134, 141> TraitConfigs;
+ UpdateField<uint32, 134, 142> ActiveCombatTraitConfigID;
+ UpdateField<int32, 134, 143> ItemUpgradeHighOnehandWeaponItemID;
+ UpdateField<int32, 134, 144> ItemUpgradeHighFingerItemID;
+ UpdateField<float, 134, 145> ItemUpgradeHighFingerWatermark;
+ UpdateField<int32, 134, 146> ItemUpgradeHighTrinketItemID;
+ UpdateField<float, 134, 147> ItemUpgradeHighTrinketWatermark;
+ UpdateField<uint64, 134, 148> LootHistoryInstanceID;
+ OptionalUpdateField<UF::StableInfo, 134, 149> PetStable;
+ UpdateField<uint8, 134, 150> RequiredMountCapabilityFlags;
+ OptionalUpdateField<UF::WalkInData, 134, 151> WalkInData;
+ OptionalUpdateField<UF::DelveData, 134, 152> DelveData;
+ OptionalUpdateField<UF::ChallengeModeData, 134, 153> ChallengeModeData;
+ UpdateFieldArray<ObjectGuid, 105, 154, 155> InvSlots;
+ UpdateFieldArray<UF::RestInfo, 2, 260, 261> RestInfo;
+ UpdateFieldArray<int32, 7, 263, 264> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 263, 271> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 263, 278> ModDamageDonePercent;
+ UpdateFieldArray<float, 7, 263, 285> ModHealingDonePercent;
+ UpdateFieldArray<float, 3, 292, 293> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 292, 296> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 299, 300> BuybackPrice;
+ UpdateFieldArray<int64, 12, 299, 312> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 324, 325> CombatRatings;
+ UpdateFieldArray<uint32, 4, 357, 358> NoReagentCostMask;
+ UpdateFieldArray<int32, 2, 362, 363> ProfessionSkillLine;
+ UpdateFieldArray<uint32, 5, 365, 366> BagSlotFlags;
+ UpdateFieldArray<float, 17, 371, 372> ItemUpgradeHighWatermark;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
@@ -1377,7 +1383,7 @@ struct VisualAnim : public IsUpdateFieldStructureTag, public HasChangesMask<5>
struct ForceSetAreaTriggerPositionAndRotation : public IsUpdateFieldStructureTag
{
ObjectGuid TriggerGUID;
- TaggedPosition<::Position::XYZ> Position;
+ TaggedPosition<Position::XYZ> Position;
QuaternionData Rotation;
void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const;
@@ -1599,6 +1605,30 @@ struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMas
void ClearChangesMask();
};
+struct AaBox : public IsUpdateFieldStructureTag
+{
+ TaggedPosition<Position::XYZ> Low;
+ TaggedPosition<Position::XYZ> High;
+
+ void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
+ bool operator==(AaBox const& right) const;
+ bool operator!=(AaBox const& right) const { return !(*this == right); }
+};
+
+struct MeshObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<5>
+{
+ UpdateField<bool, 0, 1> IsWMO;
+ UpdateField<bool, 0, 2> IsRoom;
+ UpdateField<int32, 0, 3> FileDataID;
+ OptionalUpdateField<AaBox, 0, 4> Geobox;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
struct VendorData : public IsUpdateFieldStructureTag, public HasChangesMask<2>
{
UpdateField<int32, 0, 1> Flags;
@@ -1609,6 +1639,272 @@ struct VendorData : public IsUpdateFieldStructureTag, public HasChangesMask<2>
void ClearChangesMask();
};
+struct DecorStoragePersistedDataDyes : public IsUpdateFieldStructureTag
+{
+ int32 DyeColorID[3];
+
+ void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
+ bool operator==(DecorStoragePersistedDataDyes const& right) const;
+ bool operator!=(DecorStoragePersistedDataDyes const& right) const { return !(*this == right); }
+};
+
+struct DecorStoragePersistedData : public IsUpdateFieldStructureTag, public HasChangesMask<4>
+{
+ UpdateField<ObjectGuid, 0, 1> HouseGUID;
+ OptionalUpdateField<UF::DecorStoragePersistedDataDyes, 0, 2> Dyes;
+ UpdateField<uint8, 0, 3> Field_20;
+
+ void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingDecorData : public IsUpdateFieldStructureTag, public HasChangesMask<6>
+{
+ UpdateField<ObjectGuid, 0, 1> DecorGUID;
+ UpdateField<ObjectGuid, 0, 2> AttachParentGUID;
+ UpdateField<uint8, 0, 3> Flags;
+ OptionalUpdateField<UF::DecorStoragePersistedData, 0, 4> PersistedData;
+ UpdateField<ObjectGuid, 0, 5> Field_68;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingDoorData : public IsUpdateFieldStructureTag, public HasChangesMask<5>
+{
+ UpdateField<int32, 0, 1> RoomComponentID;
+ UpdateField<TaggedPosition<Position::XYZ>, 0, 2> RoomComponentOffset;
+ UpdateField<uint8, 0, 3> RoomComponentType;
+ UpdateField<ObjectGuid, 0, 4> AttachedRoomGUID;
+
+ void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingRoomData : public IsUpdateFieldStructureTag, public HasChangesMask<7>
+{
+ DynamicUpdateField<ObjectGuid, 0, 1> MeshObjects;
+ DynamicUpdateField<UF::HousingDoorData, 0, 2> Doors;
+ UpdateField<ObjectGuid, 0, 3> HouseGUID;
+ UpdateField<int32, 0, 4> HouseRoomID;
+ UpdateField<int32, 0, 5> Flags;
+ UpdateField<int32, 0, 6> FloorIndex;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingRoomComponentMeshData : public IsUpdateFieldStructureTag, public HasChangesMask<10>
+{
+ UpdateField<ObjectGuid, 0, 1> RoomGUID;
+ UpdateField<int32, 0, 2> RoomComponentOptionID;
+ UpdateField<int32, 0, 3> RoomComponentID;
+ UpdateField<uint8, 0, 4> Field_20;
+ UpdateField<uint8, 0, 5> RoomComponentType;
+ UpdateField<int32, 0, 6> Field_24;
+ UpdateField<int32, 0, 7> HouseThemeID;
+ UpdateField<int32, 0, 8> RoomComponentTextureID;
+ UpdateField<int32, 0, 9> RoomComponentTypeParam;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingPlayerHouseData : public IsUpdateFieldStructureTag, public HasChangesMask<10>
+{
+ UpdateField<ObjectGuid, 0, 1> BnetAccount;
+ UpdateField<int32, 0, 2> PlotIndex;
+ UpdateField<uint32, 0, 3> Level;
+ UpdateField<uint64, 0, 4> Field_20;
+ UpdateField<uint32, 0, 5> InteriorDecorPlacementBudget;
+ UpdateField<uint32, 0, 6> ExteriorDecorPlacementBudget;
+ UpdateField<uint32, 0, 7> ExteriorFixtureBudget;
+ UpdateField<uint32, 0, 8> RoomPlacementBudget;
+ UpdateField<ObjectGuid, 0, 9> EntityGUID;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingCornerstoneData : public IsUpdateFieldStructureTag, public HasChangesMask<3>
+{
+ UpdateField<uint64, 0, 1> Cost;
+ UpdateField<int32, 0, 2> PlotIndex;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, GameObject const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingPlotAreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<5>
+{
+ UpdateField<uint32, 0, 1> Field_0;
+ UpdateField<ObjectGuid, 0, 2> HouseOwnerGUID;
+ UpdateField<ObjectGuid, 0, 3> HouseGUID;
+ UpdateField<ObjectGuid, 0, 4> HouseOwnerBnetAccountGUID;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct PlayerHouseInfo : public IsUpdateFieldStructureTag
+{
+ ObjectGuid HouseGUID;
+ ObjectGuid OwnerGUID;
+
+ void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
+ bool operator==(PlayerHouseInfo const& right) const;
+ bool operator!=(PlayerHouseInfo const& right) const { return !(*this == right); }
+};
+
+struct HousingOwner : public IsUpdateFieldStructureTag
+{
+ ObjectGuid BnetAccountGUID;
+ ObjectGuid PlayerGUID;
+
+ void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
+ bool operator==(HousingOwner const& right) const;
+ bool operator!=(HousingOwner const& right) const { return !(*this == right); }
+};
+
+struct NeighborhoodMirrorData : public IsUpdateFieldStructureTag, public HasChangesMask<5>
+{
+ DynamicUpdateField<UF::PlayerHouseInfo, 0, 1> Houses;
+ DynamicUpdateField<UF::HousingOwner, 0, 2> Managers;
+ UpdateField<ObjectGuid, 0, 4> OwnerGUID;
+ UpdateField<std::string, 0, 3> Name;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct MirroredMeshObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<6>
+{
+ UpdateField<ObjectGuid, 0, 1> AttachParentGUID;
+ UpdateField<TaggedPosition<Position::XYZ>, 0, 2> PositionLocalSpace;
+ UpdateField<QuaternionData, 0, 3> RotationLocalSpace;
+ UpdateField<float, 0, 4> ScaleLocalSpace;
+ UpdateField<uint8, 0, 5> AttachmentFlags;
+
+ void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct MirroredPositionData : public IsUpdateFieldStructureTag, public HasChangesMask<2>
+{
+ UpdateField<UF::MirroredMeshObjectData, 0, 1> PositionData;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct PlayerMirrorHouse : public IsUpdateFieldStructureTag
+{
+ ObjectGuid Guid;
+ ObjectGuid NeighborhoodGUID;
+ uint32 Level;
+ uint32 Favor;
+ int32 Field_28;
+
+ void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
+ bool operator==(PlayerMirrorHouse const& right) const;
+ bool operator!=(PlayerMirrorHouse const& right) const { return !(*this == right); }
+};
+
+struct NeighborhoodCharterSignature : public IsUpdateFieldStructureTag
+{
+ ObjectGuid Guid;
+
+ void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
+ bool operator==(NeighborhoodCharterSignature const& right) const;
+ bool operator!=(NeighborhoodCharterSignature const& right) const { return !(*this == right); }
+};
+
+struct NeighborhoodCharter : public IsUpdateFieldStructureTag
+{
+ std::vector<UF::NeighborhoodCharterSignature> Signatures;
+ int32 Field_0;
+ int32 Field_4;
+ std::string Name;
+
+ void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
+ bool operator==(NeighborhoodCharter const& right) const;
+ bool operator!=(NeighborhoodCharter const& right) const { return !(*this == right); }
+};
+
+struct PlayerHouseInfoComponentData : public IsUpdateFieldStructureTag, public HasChangesMask<9>
+{
+ DynamicUpdateField<ObjectGuid, 0, 1> Field_8;
+ DynamicUpdateField<UF::PlayerMirrorHouse, 0, 2> Houses;
+ DynamicUpdateField<ObjectGuid, 0, 3> Field_88;
+ DynamicUpdateField<ObjectGuid, 0, 4> Field_C0;
+ DynamicUpdateField<ObjectGuid, 0, 5> Field_F8;
+ UpdateField<ObjectGuid, 0, 6> Field_40;
+ UpdateField<UF::NeighborhoodCharter, 0, 7> Charter;
+ UpdateField<uint8, 0, 8> Field_178;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const;
+ static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
+ static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
+ void ClearChangesMask();
+};
+
+struct HousingStorageData : public IsUpdateFieldStructureTag, public HasChangesMask<3>
+{
+ MapUpdateField<ObjectGuid, UF::DecorStoragePersistedData, 0, 1> Decor;
+ UpdateField<uint32, 0, 2> DecorMaxOwnedCount;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
+struct HousingFixtureData : public IsUpdateFieldStructureTag, public HasChangesMask<11>
+{
+ UpdateField<int32, 0, 1> ExteriorComponentID;
+ UpdateField<int32, 0, 2> HouseExteriorWmoDataID;
+ UpdateField<int32, 0, 3> ExteriorComponentHookID;
+ UpdateField<ObjectGuid, 0, 4> HouseGUID;
+ UpdateField<ObjectGuid, 0, 5> AttachParentGUID;
+ UpdateField<ObjectGuid, 0, 6> Guid;
+ UpdateField<ObjectGuid, 0, 7> GameObjectGUID;
+ UpdateField<uint8, 0, 8> ExteriorComponentType;
+ UpdateField<uint8, 0, 9> Field_59;
+ UpdateField<uint8, 0, 10> Size;
+
+ void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
}
#endif // UpdateFields_h__
diff --git a/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h b/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h
index a65ca60978a..f3d8182ff83 100644
--- a/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h
+++ b/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h
@@ -26,44 +26,77 @@ namespace WowCS
{
enum class EntityFragment : uint8
{
- CGObject = 0, // UPDATEABLE, INDIRECT,
- Tag_Item = 1, // TAG,
- Tag_Container = 2, // TAG,
- Tag_AzeriteEmpoweredItem = 3, // TAG,
- Tag_AzeriteItem = 4, // TAG,
- Tag_Unit = 5, // TAG,
- Tag_Player = 6, // TAG,
- Tag_GameObject = 7, // TAG,
- Tag_DynamicObject = 8, // TAG,
- Tag_Corpse = 9, // TAG,
- Tag_AreaTrigger = 10, // TAG,
- Tag_SceneObject = 11, // TAG,
- Tag_Conversation = 12, // TAG,
- Tag_AIGroup = 13, // TAG,
- Tag_Scenario = 14, // TAG,
- Tag_LootObject = 15, // TAG,
- Tag_ActivePlayer = 16, // TAG,
- Tag_ActiveClient_S = 17, // TAG,
- Tag_ActiveObject_C = 18, // TAG,
- Tag_VisibleObject_C = 19, // TAG,
- Tag_UnitVehicle = 20, // TAG,
- FEntityPosition = 112,
- FEntityLocalMatrix = 113,
- FEntityWorldMatrix = 114,
- CActor = 115, // INDIRECT,
- FVendor_C = 117, // UPDATEABLE, INDIRECT,
- FMirroredObject_C = 119,
+ FEntityPosition = 1,
+ CGObject = 2, // UPDATEABLE, INDIRECT,
+ FTransportLink = 5,
+ FPlayerOwnershipLink = 13, // INDIRECT,
+ CActor = 15, // INDIRECT,
+ FVendor_C = 17, // UPDATEABLE,
+ FMirroredObject_C = 18,
+ FMeshObjectData_C = 19, // UPDATEABLE,
+ FHousingDecor_C = 20, // UPDATEABLE,
+ FHousingRoom_C = 21, // UPDATEABLE,
+ FHousingRoomComponentMesh_C = 22, // UPDATEABLE,
+ FHousingPlayerHouse_C = 23, // UPDATEABLE,
+ FJamHousingCornerstone_C = 27, // UPDATEABLE,
+ FHousingDecorActor_C = 28,
+ FHousingPlotAreaTrigger_C = 29, // UPDATEABLE,
+ FNeighborhoodMirrorData_C = 30, // UPDATEABLE,
+ FMirroredPositionData_C = 31, // UPDATEABLE,
+ PlayerHouseInfoComponent_C = 32, // UPDATEABLE, INDIRECT,
+ FHousingStorage_C = 33, // UPDATEABLE,
+ FHousingFixture_C = 34, // UPDATEABLE,
+ Tag_Item = 200, // TAG,
+ Tag_Container = 201, // TAG,
+ Tag_AzeriteEmpoweredItem = 202, // TAG,
+ Tag_AzeriteItem = 203, // TAG,
+ Tag_Unit = 204, // TAG,
+ Tag_Player = 205, // TAG,
+ Tag_GameObject = 206, // TAG,
+ Tag_DynamicObject = 207, // TAG,
+ Tag_Corpse = 208, // TAG,
+ Tag_AreaTrigger = 209, // TAG,
+ Tag_SceneObject = 210, // TAG,
+ Tag_Conversation = 211, // TAG,
+ Tag_AIGroup = 212, // TAG,
+ Tag_Scenario = 213, // TAG,
+ Tag_LootObject = 214, // TAG,
+ Tag_ActivePlayer = 215, // TAG,
+ Tag_ActiveClient_S = 216, // TAG,
+ Tag_ActiveObject_C = 217, // TAG,
+ Tag_VisibleObject_C = 218, // TAG,
+ Tag_UnitVehicle = 219, // TAG,
+ Tag_HousingRoom = 220, // TAG,
+ Tag_MeshObject = 221, // TAG,
+ Tag_HouseExteriorPiece = 224, // TAG,
+ Tag_HouseExteriorRoot = 225, // TAG,
End = 255,
};
inline constexpr bool IsUpdateableFragment(EntityFragment frag)
{
- return frag == EntityFragment::CGObject || frag == EntityFragment::FVendor_C;
+ return frag == EntityFragment::CGObject
+ || frag == EntityFragment::FVendor_C
+ || frag == EntityFragment::FMeshObjectData_C
+ || frag == EntityFragment::FHousingDecor_C
+ || frag == EntityFragment::FHousingRoom_C
+ || frag == EntityFragment::FHousingRoomComponentMesh_C
+ || frag == EntityFragment::FHousingPlayerHouse_C
+ || frag == EntityFragment::FJamHousingCornerstone_C
+ || frag == EntityFragment::FHousingPlotAreaTrigger_C
+ || frag == EntityFragment::FNeighborhoodMirrorData_C
+ || frag == EntityFragment::FMirroredPositionData_C
+ || frag == EntityFragment::PlayerHouseInfoComponent_C
+ || frag == EntityFragment::FHousingStorage_C
+ || frag == EntityFragment::FHousingFixture_C;
}
inline constexpr bool IsIndirectFragment(EntityFragment frag)
{
- return frag == EntityFragment::CGObject || frag == EntityFragment::CActor || frag == EntityFragment::FVendor_C;
+ return frag == EntityFragment::CGObject
+ || frag == EntityFragment::FPlayerOwnershipLink
+ || frag == EntityFragment::CActor
+ || frag == EntityFragment::PlayerHouseInfoComponent_C;
}
// common case optimization, make use of the fact that fragment arrays are sorted
@@ -81,8 +114,11 @@ struct EntityFragmentsHolder
uint8 Count = 0;
bool IdsChanged = false;
- std::array<EntityFragment, 2> UpdateableIds = { EntityFragment::End, EntityFragment::End };
- std::array<uint8, 2> UpdateableMasks = { };
+ std::array<EntityFragment, 4> UpdateableIds =
+ {
+ EntityFragment::End, EntityFragment::End, EntityFragment::End, EntityFragment::End
+ };
+ std::array<uint8, 4> UpdateableMasks = { };
uint8 UpdateableCount = 0;
uint8 ContentsChangedMask = 0;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 3948dd8f73e..ecddafd9c28 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -10816,7 +10816,7 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool
Optional<ContentTuningLevels> requiredLevels;
// check allowed level (extend range to upper values if MaxLevel more or equal max player level, this let GM set high level with 1...max range items)
if (pItem->GetQuality() == ITEM_QUALITY_HEIRLOOM)
- requiredLevels = sDB2Manager.GetContentTuningData(pItem->GetScalingContentTuningId(), 0, true);
+ requiredLevels = sDB2Manager.GetContentTuningData(pItem->GetScalingContentTuningId(), {}, true);
if (requiredLevels && requiredLevels->MaxLevel < DEFAULT_MAX_LEVEL && requiredLevels->MaxLevel < GetLevel() && !sDB2Manager.GetHeirloomByItemId(pProto->GetId()))
return EQUIP_ERR_NOT_EQUIPPABLE;
@@ -14084,9 +14084,10 @@ void Player::OnGossipSelect(WorldObject* source, int32 gossipOptionId, uint32 me
PlayerInteractionType::ProfessionsCraftingOrder, PlayerInteractionType::Professions, PlayerInteractionType::ProfessionsCustomerOrder,
PlayerInteractionType::TraitSystem, PlayerInteractionType::BarbersChoice, PlayerInteractionType::MajorFactionRenown,
PlayerInteractionType::PersonalTabardVendor, PlayerInteractionType::ForgeMaster, PlayerInteractionType::CharacterBanker,
- PlayerInteractionType::AccountBanker, PlayerInteractionType::ProfessionRespec, PlayerInteractionType::PlaceholderType72,
- PlayerInteractionType::PlaceholderType75, PlayerInteractionType::PlaceholderType76, PlayerInteractionType::GuildRename,
- PlayerInteractionType::PlaceholderType77, PlayerInteractionType::ItemUpgrade
+ PlayerInteractionType::AccountBanker, PlayerInteractionType::ProfessionRespec, PlayerInteractionType::CornerstoneInteraction,
+ PlayerInteractionType::CreateGuildNeighborhood, PlayerInteractionType::NeighborhoodCharter, PlayerInteractionType::GuildRename,
+ PlayerInteractionType::OpenNeighborhoodCharterConfirmation, PlayerInteractionType::ItemUpgrade, PlayerInteractionType::OpenHouseFinder,
+ PlayerInteractionType::PlaceholderType79
};
PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[AsUnderlyingType(gossipOptionNpc)];
@@ -17885,6 +17886,7 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol
SetRace(fields.race);
SetClass(fields.class_);
SetGender(fields.gender);
+ UpdateCreatureType();
// check if race/class combination is valid
PlayerInfo const* info = sObjectMgr->GetPlayerInfo(GetRace(), GetClass());
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 28ba159b228..62b5e410559 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -515,14 +515,15 @@ DEFINE_ENUM_FLAG(PlayerFlags);
enum PlayerFlagsEx
{
- PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED = 0x0001,
- PLAYER_FLAGS_EX_MERCENARY_MODE = 0x0002,
- PLAYER_FLAGS_EX_ARTIFACT_FORGE_CHEAT = 0x0004,
- PLAYER_FLAGS_EX_ITEM_LEVEL_SQUISH = 0x0020, // Uses ItemLevelSquish gametable
- PLAYER_FLAGS_EX_IN_PVP_COMBAT = 0x0040, // Forbids /follow
- PLAYER_FLAGS_EX_MENTOR = 0x0080,
- PLAYER_FLAGS_EX_NEWCOMER = 0x0100,
- PLAYER_FLAGS_EX_UNLOCKED_AOE_LOOT = 0x0200
+ PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED = 0x00000001,
+ PLAYER_FLAGS_EX_MERCENARY_MODE = 0x00000002,
+ PLAYER_FLAGS_EX_ARTIFACT_FORGE_CHEAT = 0x00000004,
+ PLAYER_FLAGS_EX_ITEM_LEVEL_SQUISH = 0x00000020, // Uses ItemLevelSquish gametable
+ PLAYER_FLAGS_EX_IN_PVP_COMBAT = 0x00000040, // Forbids /follow
+ PLAYER_FLAGS_EX_MENTOR = 0x00000080,
+ PLAYER_FLAGS_EX_NEWCOMER = 0x00000100,
+ PLAYER_FLAGS_EX_UNLOCKED_AOE_LOOT = 0x00000200,
+ PLAYER_FLAGS_EX_AUTO_DECLINE_NEIGHBORHOOD = 0x00008000
};
DEFINE_ENUM_FLAG(PlayerFlagsEx);
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index 451d40f25b7..5f30a336853 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -597,6 +597,7 @@ float const m_diminishing_k[MAX_CLASSES] =
0.9830f, // Demon Hunter
0.9880f, // Evoker
1.0f, // Adventurer
+ 1.0f, // Traveler
};
// helper function
@@ -622,7 +623,7 @@ float CalculateDiminishingReturns(float const (&capArray)[MAX_CLASSES], uint8 pl
return result;
}
-float const parry_cap[MAX_CLASSES] =
+constexpr float parry_cap[MAX_CLASSES] =
{
65.631440f, // Warrior
65.631440f, // Paladin
@@ -638,6 +639,7 @@ float const parry_cap[MAX_CLASSES] =
65.631440f, // Demon Hunter
0.0f, // Evoker
0.0f, // Adventurer
+ 0.0f, // Traveler
};
void Player::UpdateParryPercentage()
@@ -663,7 +665,7 @@ void Player::UpdateParryPercentage()
SetUpdateFieldStatValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ParryPercentage), value);
}
-float const dodge_cap[MAX_CLASSES] =
+constexpr float dodge_cap[MAX_CLASSES] =
{
65.631440f, // Warrior
65.631440f, // Paladin
@@ -679,6 +681,7 @@ float const dodge_cap[MAX_CLASSES] =
145.560408f, // Demon Hunter
145.560408f, // Evoker
0.0f, // Adventurer
+ 0.0f, // Traveler
};
void Player::UpdateDodgePercentage()
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 688a0618f9c..9c5c0a2c134 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -9493,9 +9493,29 @@ uint32 Unit::GetCreatureTypeMask() const
return (creatureType >= 1) ? (1 << (creatureType - 1)) : 0;
}
+void Unit::UpdateCreatureType()
+{
+ uint8 creatureType = [&]() -> uint8
+ {
+ if (Creature const* creature = ToCreature())
+ return creature->GetCreatureTemplate()->type;
+
+ ShapeshiftForm form = GetShapeshiftForm();
+ SpellShapeshiftFormEntry const* ssEntry = sSpellShapeshiftFormStore.LookupEntry(form);
+ if (ssEntry && ssEntry->CreatureType > 0)
+ return ssEntry->CreatureType;
+
+ ChrRacesEntry const* raceEntry = sChrRacesStore.AssertEntry(GetRace());
+ return raceEntry->CreatureType;
+ }();
+
+ SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::CreatureType), creatureType);
+}
+
void Unit::SetShapeshiftForm(ShapeshiftForm form)
{
SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ShapeshiftForm), form);
+ UpdateCreatureType();
}
void Unit::CancelShapeshiftForm(bool onlyTravelShapeshiftForm /*= false*/, AuraRemoveMode removeMode /*= AURA_REMOVE_BY_DEFAULT*/, bool force /*= false*/)
@@ -10771,7 +10791,7 @@ void Unit::RecalculateObjectScale()
{
int32 scaleAuras = GetTotalAuraModifier(SPELL_AURA_MOD_SCALE) + GetTotalAuraModifier(SPELL_AURA_MOD_SCALE_2);
float scale = GetNativeObjectScale() + CalculatePct(1.0f, scaleAuras);
- float scaleMin = GetTypeId() == TYPEID_PLAYER ? 0.1 : 0.01;
+ float scaleMin = GetTypeId() == TYPEID_PLAYER ? 0.1f : 0.01f;
SetObjectScale(std::max(scale, scaleMin));
}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 9f6ac598a04..d6392f5b153 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -892,6 +892,7 @@ class TC_GAME_API Unit : public WorldObject
uint32 GetCreatureType() const;
uint32 GetCreatureTypeMask() const;
+ void UpdateCreatureType();
UnitStandStateType GetStandState() const { return UnitStandStateType(*m_unitData->StandState); }
bool IsSitState() const;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index cba48f39958..d55e44b774c 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -4673,9 +4673,9 @@ void ObjectMgr::LoadQuests()
// 0 1
{ "QuestId, RewardMailSenderEntry", "quest_mail_sender", "", "mail sender entries", &Quest::LoadQuestMailSender },
- // 0 1 2 3 4 5 6 7 8 9
- { "qo.QuestID, qo.ID, qo.Type, qo.StorageIndex, qo.ObjectID, qo.Amount, qo.Flags, qo.Flags2, qo.ProgressBarWeight, qo.Description, "
- // 10 11 12 13 14
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12
+ { "qo.QuestID, qo.ID, qo.Type, qo.StorageIndex, qo.ObjectID, qo.Amount, qo.SecondaryAmount, qo.Flags, qo.Flags2, qo.ProgressBarWeight, qo.ParentObjectiveID, qo.Visible, qo.Description, "
+ // 13 14 15 16 17
"qoce.GameEventID, qoce.SpellID, qoce.ConversationID, qoce.UpdatePhaseShift, qoce.UpdateZoneAuras", "quest_objectives qo", "LEFT JOIN quest_objectives_completion_effect qoce ON qo.ID = qoce.ObjectiveID ORDER BY `Order` ASC, StorageIndex ASC", "quest objectives", &Quest::LoadQuestObjective },
// 0 1 2 3 4
@@ -4691,7 +4691,13 @@ void ObjectMgr::LoadQuests()
{ "QuestId, PlayerConditionId, QuestgiverCreatureId, Text, locale", "quest_completion_log_conditional", "ORDER BY OrderIndex", "conditional completion log", &Quest::LoadConditionalConditionalQuestCompletionLog },
// 0 1
- { "QuestID, TreasurePickerID", "quest_treasure_pickers", "ORDER BY OrderIndex", "treasure pickers", &Quest::LoadTreasurePickers }
+ { "QuestID, TreasurePickerID", "quest_treasure_pickers", "ORDER BY OrderIndex", "treasure pickers", &Quest::LoadTreasurePickers },
+
+ // 0 1
+ { "QuestID, HouseRoomID", "quest_reward_house_room", "ORDER BY OrderIndex", "house room rewards", &Quest::LoadRewardHouseRoom },
+
+ // 0 1
+ { "QuestID, HouseDecorID", "quest_reward_house_decor", "ORDER BY OrderIndex", "house decor rewards", &Quest::LoadRewardHouseDecor }
};
for (QuestLoaderHelper const& loader : QuestLoaderHelpers)
@@ -7664,8 +7670,9 @@ void ObjectMgr::LoadGameObjectTemplate()
go.name = db2go->Name[sWorld->GetDefaultDbcLocale()];
go.size = db2go->Scale;
memset(go.raw.data, 0, sizeof(go.raw.data));
- std::copy(db2go->PropValue.begin(), db2go->PropValue.end(), std::begin(go.raw.data));
+ std::ranges::copy(db2go->PropValue, std::begin(go.raw.data));
go.ContentTuningId = 0;
+ go.RequiredLevel = 0;
go.ScriptId = 0;
}
@@ -7675,8 +7682,8 @@ void ObjectMgr::LoadGameObjectTemplate()
"Data0, Data1, Data2, Data3, Data4, Data5, Data6, Data7, Data8, Data9, Data10, Data11, Data12, "
// 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
"Data13, Data14, Data15, Data16, Data17, Data18, Data19, Data20, Data21, Data22, Data23, Data24, Data25, Data26, Data27, Data28, "
- // 37 38 39 40 41 42 43 44 45 46
- "Data29, Data30, Data31, Data32, Data33, Data34, ContentTuningId, AIName, ScriptName, StringId "
+ // 37 38 39 40 41 42 43 44 45 46 47
+ "Data29, Data30, Data31, Data32, Data33, Data34, ContentTuningId, RequiredLevel, AIName, ScriptName, StringId "
"FROM gameobject_template");
if (!result)
@@ -7706,9 +7713,10 @@ void ObjectMgr::LoadGameObjectTemplate()
got.raw.data[i] = fields[8 + i].GetUInt32();
got.ContentTuningId = fields[43].GetInt32();
- got.AIName = fields[44].GetString();
- got.ScriptId = GetScriptId(fields[45].GetStringView());
- got.StringId = fields[46].GetString();
+ got.RequiredLevel = fields[44].GetInt32();
+ got.AIName = fields[45].GetString();
+ got.ScriptId = GetScriptId(fields[46].GetStringView());
+ got.StringId = fields[47].GetString();
// Checks
if (!got.AIName.empty() && !sGameObjectAIRegistry->HasItem(got.AIName))
diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp
index d61ce409595..bd671c558a2 100644
--- a/src/server/game/Handlers/AuthHandler.cpp
+++ b/src/server/game/Handlers/AuthHandler.cpp
@@ -138,6 +138,8 @@ void WorldSession::SendFeatureSystemStatusGlueScreen()
}, gameRule.Value);
}
+ features.AvailableGameModeIDs.push_back(8); // GameMode.db2, standard
+
SendPacket(features.Write());
WorldPackets::System::MirrorVarSingle vars[] =
@@ -148,6 +150,13 @@ void WorldSession::SendFeatureSystemStatusGlueScreen()
{ "bpayStoreEnable"sv, "0"sv },
{ "recentAlliesEnabledClient"sv, "0"sv },
{ "browserEnabled"sv, "0"sv },
+ { "housingEnableCreateGuildNeighborhood"sv, "0"sv },
+ { "housingEnableDeleteHouse"sv, "0"sv },
+ { "housingServiceEnabled"sv, "0"sv },
+ { "housingEnableMoveHouse"sv, "0"sv },
+ { "housingEnableCreateCharterNeighborhood"sv, "0"sv },
+ { "housingEnableBuyHouse"sv, "0"sv },
+ { "housingMarketEnabled"sv, "0"sv },
};
WorldPackets::System::MirrorVars variables;
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index b1d644fb5a3..6c0505fca7e 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1192,8 +1192,9 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder const& holder)
// Send MOTD
{
- for (std::string const& motdLine : sWorld->GetMotd())
- sWorld->SendServerMessage(SERVER_MSG_STRING, motdLine, pCurrChar);
+ WorldPackets::System::MOTD motd;
+ motd.Text = &sWorld->GetMotd();
+ SendPacket(motd.Write());
}
SendSetTimeZoneInformation();
diff --git a/src/server/game/Handlers/HousingHandler.cpp b/src/server/game/Handlers/HousingHandler.cpp
new file mode 100644
index 00000000000..3c36b790f11
--- /dev/null
+++ b/src/server/game/Handlers/HousingHandler.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "WorldSession.h"
+#include "HousingPackets.h"
+#include "Player.h"
+
+void WorldSession::HandleDeclineNeighborhoodInvites(WorldPackets::Housing::DeclineNeighborhoodInvites const& declineNeighborhoodInvites)
+{
+ if (declineNeighborhoodInvites.Allow)
+ GetPlayer()->SetPlayerFlagEx(PLAYER_FLAGS_EX_AUTO_DECLINE_NEIGHBORHOOD);
+ else
+ GetPlayer()->RemovePlayerFlagEx(PLAYER_FLAGS_EX_AUTO_DECLINE_NEIGHBORHOOD);
+}
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index 3e4030a5691..523a3e6e03a 100644
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -143,7 +143,7 @@ void WorldSession::SendLfgPlayerLockInfo()
// Get Random dungeons that can be done at a certain level and expansion
uint8 level = GetPlayer()->GetLevel();
- uint32 contentTuningReplacementConditionMask = GetPlayer()->m_playerData->CtrOptions->ConditionalFlags;
+ std::span<uint32 const> contentTuningReplacementConditionMask = GetPlayer()->m_playerData->CtrOptions->ConditionalFlags;
lfg::LfgDungeonSet const& randomDungeons = sLFGMgr->GetRandomAndSeasonalDungeons(level, GetExpansion(), contentTuningReplacementConditionMask);
WorldPackets::LFG::LfgPlayerInfo lfgPlayerInfo;
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index a1971b9768f..15319307a15 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -163,11 +163,12 @@ enum Classes : uint8
CLASS_DRUID = 11, // TITLE Druid
CLASS_DEMON_HUNTER = 12, // TITLE Demon Hunter
CLASS_EVOKER = 13, // TITLE Evoker
- CLASS_ADVENTURER = 14 // TITLE Adventurer
+ CLASS_ADVENTURER = 14, // TITLE Adventurer
+ CLASS_TRAVELER = 15 // TITLE Traveler
};
// max+1 for player class
-#define MAX_CLASSES 15
+#define MAX_CLASSES 16
#define CLASSMASK_ALL_PLAYABLE \
((1<<(CLASS_WARRIOR-1)) | \
@@ -1643,6 +1644,15 @@ enum SpellEffectName
SPELL_EFFECT_343 = 343,
SPELL_EFFECT_344 = 344, // some kind of teleport
SPELL_EFFECT_ASSIST_ACTION = 345, // MiscValue[0] = AssistActionType, MiscValue[1] = ID, depends on type
+ SPELL_EFFECT_346 = 346,
+ SPELL_EFFECT_EQUIP_TRANSMOG_OUTFIT = 347, // MiscValue[0] = TransmogOutfitEntry
+ SPELL_EFFECT_GIVE_HOUSE_LEVEL = 348,
+ SPELL_EFFECT_LEARN_HOUSE_ROOM = 349, // MiscValue[0] = HouseRoom
+ SPELL_EFFECT_LEARN_HOUSE_EXTERIOR_COMPONENT = 350, // MiscValue[0] = ExteriorComponent
+ SPELL_EFFECT_LEARN_HOUSE_THEME = 351, // MiscValue[0] = HouseTheme
+ SPELL_EFFECT_LEARN_HOUSE_ROOM_COMPONENT_TEXTURE = 352, // MiscValue[0] = RoomComponentTexture
+
+ // = 354, // MiscValue[0] = NeighborhoodInitiative
TOTAL_SPELL_EFFECTS
};
@@ -8549,7 +8559,28 @@ enum class GameError : uint32
ERR_CURRENCY_TRANSFER_UNMET_REQUIREMENTS = 1199,
ERR_CURRENCY_TRANSFER_TRANSACTION_IN_PROGRESS = 1200,
ERR_CURRENCY_TRANSFER_DISABLED = 1201,
- ERR_RECENT_ALLY_PIN_SERVER_ERROR = 1202,
+ ERR_NO_OWNED_HOUSE_IN_THIS_NEIGHBORHOOD_MAP = 1202,
+ ERR_HOUSING_RESULT_NEIGHBORHOOD_NOT_FOUND = 1203,
+ ERR_INVITED_TO_NEIGHBORHOOD = 1204,
+ ERR_NEIGHBORHOOD_OWNER_TRANSFERRED_S = 1205,
+ ERR_NOT_WHILE_HOUSE_EDIT = 1206,
+ ERR_NEW_PARTY_NEIGHBORHOOD_RESERVATION = 1207,
+ ERR_HOUSE_MOVED = 1208,
+ ERR_CHARTER_SIGNATURE_REQUEST_SENT = 1209,
+ ERR_CHARTER_SIGNATURE_RECEIVED = 1210,
+ ERR_CHARTER_SIGNATURE_REQUEST_FAILED_MISSING_EXPANSION = 1211,
+ ERR_CHARTER_SIGNATURE_REQUEST_FAILED_DUPLICATE_SIGNATURE = 1212,
+ ERR_CHARTER_SIGNATURE_REQUEST_FAILED_GENERIC = 1213,
+ ERR_CHARTER_SYSTEM_REQUEST_FAILED_GENERIC = 1214,
+ ERR_HOUSING_ACTION_UNAVAILABLE = 1215,
+ ERR_HOUSING_RESULT_MISSING_EXPANSION_ACCESS = 1216,
+ ERR_HOUSING_RESULT_PERMISSION_DENIED = 1217,
+ ERR_GUILD_NEIGHBORHOOD_BUILT_HOUSE_S = 1218,
+ ERR_GUILD_NEIGHBORHOOD_SOLD_HOUSE_S = 1219,
+ ERR_GUILD_NEIGHBORHOOD_NEW_SUBDIVISION = 1220,
+ ERR_GUILD_NEIGHBORHOOD_RENAME_S = 1221,
+ ERR_CHARTER_NEIGHBORHOOD_RENAME = 1222,
+ ERR_RECENT_ALLY_PIN_SERVER_ERROR = 1223,
};
enum class MountResult : uint32
diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
index b67ffdc1d81..b613885956b 100644
--- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
+++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
@@ -45,12 +45,13 @@ TC_API_EXPORT EnumText EnumUtils<Classes>::ToString(Classes value)
case CLASS_DEMON_HUNTER: return { "CLASS_DEMON_HUNTER", "Demon Hunter", "" };
case CLASS_EVOKER: return { "CLASS_EVOKER", "Evoker", "" };
case CLASS_ADVENTURER: return { "CLASS_ADVENTURER", "Adventurer", "" };
+ case CLASS_TRAVELER: return { "CLASS_TRAVELER", "Traveler", "" };
default: throw std::out_of_range("value");
}
}
template <>
-TC_API_EXPORT size_t EnumUtils<Classes>::Count() { return 14; }
+TC_API_EXPORT size_t EnumUtils<Classes>::Count() { return 15; }
template <>
TC_API_EXPORT Classes EnumUtils<Classes>::FromIndex(size_t index)
@@ -71,6 +72,7 @@ TC_API_EXPORT Classes EnumUtils<Classes>::FromIndex(size_t index)
case 11: return CLASS_DEMON_HUNTER;
case 12: return CLASS_EVOKER;
case 13: return CLASS_ADVENTURER;
+ case 14: return CLASS_TRAVELER;
default: throw std::out_of_range("index");
}
}
@@ -94,6 +96,7 @@ TC_API_EXPORT size_t EnumUtils<Classes>::ToIndex(Classes value)
case CLASS_DEMON_HUNTER: return 11;
case CLASS_EVOKER: return 12;
case CLASS_ADVENTURER: return 13;
+ case CLASS_TRAVELER: return 14;
default: throw std::out_of_range("value");
}
}
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index 2903c93823f..8a18705f92d 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -277,20 +277,23 @@ void Quest::LoadQuestObjective(Field* fields)
obj.StorageIndex = fields[3].GetInt8();
obj.ObjectID = fields[4].GetInt32();
obj.Amount = fields[5].GetInt32();
- obj.Flags = fields[6].GetUInt32();
- obj.Flags2 = fields[7].GetUInt32();
- obj.ProgressBarWeight = fields[8].GetFloat();
- obj.Description = fields[9].GetStringView();
-
- bool hasCompletionEffect = std::any_of(fields + 10, fields + 15, [](Field const& f) { return !f.IsNull(); });
+ obj.SecondaryAmount = fields[6].GetInt32();
+ obj.Flags = fields[7].GetUInt32();
+ obj.Flags2 = fields[8].GetUInt32();
+ obj.ProgressBarWeight = fields[9].GetFloat();
+ obj.ParentObjectiveID = fields[10].GetInt32();
+ obj.Visible = fields[11].GetBool();
+ obj.Description = fields[12].GetStringView();
+
+ bool hasCompletionEffect = std::any_of(fields + 13, fields + 18, [](Field const& f) { return !f.IsNull(); });
if (hasCompletionEffect)
{
obj.CompletionEffect = new QuestObjectiveAction();
- obj.CompletionEffect->GameEventId = fields[10].GetUInt32OrNull();
- obj.CompletionEffect->SpellId = fields[11].GetUInt32OrNull();
- obj.CompletionEffect->ConversationId = fields[12].GetUInt32OrNull();
- obj.CompletionEffect->UpdatePhaseShift = fields[13].GetBool();
- obj.CompletionEffect->UpdateZoneAuras = fields[14].GetBool();
+ obj.CompletionEffect->GameEventId = fields[13].GetUInt32OrNull();
+ obj.CompletionEffect->SpellId = fields[14].GetUInt32OrNull();
+ obj.CompletionEffect->ConversationId = fields[15].GetUInt32OrNull();
+ obj.CompletionEffect->UpdatePhaseShift = fields[16].GetBool();
+ obj.CompletionEffect->UpdateZoneAuras = fields[17].GetBool();
}
_usedQuestObjectiveTypes[obj.Type] = true;
@@ -411,6 +414,16 @@ void Quest::LoadTreasurePickers(Field* fields)
_treasurePickerID.push_back(fields[1].GetInt32());
}
+void Quest::LoadRewardHouseRoom(Field* fields)
+{
+ _rewardHouseRoomIDs.push_back(fields[1].GetInt32());
+}
+
+void Quest::LoadRewardHouseDecor(Field* fields)
+{
+ _rewardHouseDecorIDs.push_back(fields[1].GetInt32());
+}
+
uint32 Quest::XPValue(Player const* player) const
{
return XPValue(player, GetContentTuningId(), _rewardXPDifficulty, _rewardXPMultiplier, _expansion);
@@ -472,7 +485,7 @@ uint32 Quest::MoneyValue(Player const* player) const
uint32 Quest::MaxMoneyValue() const
{
uint32 value = 0;
- if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(GetContentTuningId(), 0))
+ if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(GetContentTuningId(), {}))
if (QuestMoneyRewardEntry const* money = sQuestMoneyRewardStore.LookupEntry(questLevels->MaxLevel))
value = money->Difficulty[GetRewMoneyDifficulty()] * GetMoneyMultiplier();
@@ -661,18 +674,18 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const
response.Info.PortraitGiverName = GetPortraitGiverName();
response.Info.PortraitTurnInText = GetPortraitTurnInText();
response.Info.PortraitTurnInName = GetPortraitTurnInName();
- std::transform(GetConditionalQuestDescription().begin(), GetConditionalQuestDescription().end(), std::back_inserter(response.Info.ConditionalQuestDescription), [loc](QuestConditionalText const& text)
+ std::ranges::transform(GetConditionalQuestDescription(), std::back_inserter(response.Info.ConditionalQuestDescription), [loc](QuestConditionalText const& text) -> WorldPackets::Quest::ConditionalQuestText
{
std::string_view content = text.Text[LOCALE_enUS];
ObjectMgr::GetLocaleString(text.Text, loc, content);
- return WorldPackets::Quest::ConditionalQuestText { text.PlayerConditionId, text.QuestgiverCreatureId, content };
+ return { .PlayerConditionID = text.PlayerConditionId, .QuestGiverCreatureID = text.QuestgiverCreatureId, .Text = content };
});
- std::transform(GetConditionalQuestCompletionLog().begin(), GetConditionalQuestCompletionLog().end(), std::back_inserter(response.Info.ConditionalQuestCompletionLog), [loc](QuestConditionalText const& text)
+ std::ranges::transform(GetConditionalQuestCompletionLog(), std::back_inserter(response.Info.ConditionalQuestCompletionLog), [loc](QuestConditionalText const& text) -> WorldPackets::Quest::ConditionalQuestText
{
std::string_view content = text.Text[LOCALE_enUS];
ObjectMgr::GetLocaleString(text.Text, loc, content);
- return WorldPackets::Quest::ConditionalQuestText { text.PlayerConditionId, text.QuestgiverCreatureId, content };
+ return { .PlayerConditionID = text.PlayerConditionId, .QuestGiverCreatureID = text.QuestgiverCreatureId, .Text = content };
});
if (loc != LOCALE_enUS)
@@ -779,6 +792,8 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const
response.Info.ManagedWorldStateID = GetManagedWorldStateId();
response.Info.QuestSessionBonus = 0; //GetQuestSessionBonus(); // this is only sent while quest session is active
response.Info.QuestGiverCreatureID = 0; // only sent during npc interaction
+ response.Info.RewardHouseRoomIDs = GetRewardHouseRoomIds();
+ response.Info.RewardHouseDecorIDs = GetRewardRewardHouseDecorIds();
for (QuestObjective const& questObjective : GetObjectives())
{
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index 59f38eed53b..b798da637ad 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -484,9 +484,12 @@ struct QuestObjective
int8 StorageIndex = 0;
int32 ObjectID = 0;
int32 Amount = 0;
+ int32 SecondaryAmount = 0;
uint32 Flags = 0;
uint32 Flags2 = 0;
float ProgressBarWeight = 0.0f;
+ int32 ParentObjectiveID = 0;
+ bool Visible = false;
std::string Description;
std::vector<int32> VisualEffects;
QuestObjectiveAction* CompletionEffect = nullptr;
@@ -600,6 +603,8 @@ class TC_GAME_API Quest
void LoadConditionalConditionalOfferRewardText(Field* fields);
void LoadConditionalConditionalQuestCompletionLog(Field* fields);
void LoadTreasurePickers(Field* fields);
+ void LoadRewardHouseRoom(Field* fields);
+ void LoadRewardHouseDecor(Field* fields);
uint32 XPValue(Player const* player) const;
static uint32 XPValue(Player const* player, uint32 contentTuningId, uint32 xpDifficulty, float xpMultiplier = 1.0f, int32 expansion = -1);
@@ -716,6 +721,8 @@ class TC_GAME_API Quest
int32 GetQuestGiverPortraitMount() const { return _questGiverPortraitMount; }
int32 GetQuestGiverPortraitModelSceneId() const { return _questGiverPortraitModelSceneId; }
uint32 GetQuestTurnInPortrait() const { return _questTurnInPortrait; }
+ std::vector<int32> const& GetRewardHouseRoomIds() const { return _rewardHouseRoomIDs; }
+ std::vector<int32> const& GetRewardRewardHouseDecorIds() const { return _rewardHouseDecorIDs; }
bool IsDaily() const { return (_flags & QUEST_FLAGS_DAILY) != 0; }
bool IsWeekly() const { return (_flags & QUEST_FLAGS_WEEKLY) != 0; }
bool IsMonthly() const { return (_specialFlags & QUEST_SPECIAL_FLAGS_MONTHLY) != 0; }
@@ -823,6 +830,8 @@ class TC_GAME_API Quest
int32 _expansion = 0;
int32 _managedWorldStateID = 0;
int32 _questSessionBonus = 0;
+ std::vector<int32> _rewardHouseRoomIDs;
+ std::vector<int32> _rewardHouseDecorIDs;
std::string _logTitle;
std::string _logDescription;
std::string _questDescription;
diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h
index ad31706a627..1cf71c8efc4 100644
--- a/src/server/game/Server/Packets/AllPackets.h
+++ b/src/server/game/Server/Packets/AllPackets.h
@@ -46,6 +46,7 @@
#include "GarrisonPackets.h"
#include "GuildPackets.h"
#include "HotfixPackets.h"
+#include "HousingPackets.h"
#include "InspectPackets.h"
#include "InstancePackets.h"
#include "ItemPackets.h"
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index 3c22fd4084d..64e69e90134 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -312,6 +312,8 @@ WorldPacket const* ConnectTo::Write()
_worldPacket << uint32(Serial);
_worldPacket << uint8(Con);
_worldPacket << uint64(Key);
+ _worldPacket << uint32(NativeRealmAddress);
+ _worldPacket << uint32(Key3);
return &_worldPacket;
}
@@ -319,9 +321,11 @@ WorldPacket const* ConnectTo::Write()
void AuthContinuedSession::Read()
{
_worldPacket >> DosResponse;
- _worldPacket >> Key;
_worldPacket.read(LocalChallenge.data(), LocalChallenge.size());
_worldPacket.read(Digest.data(), Digest.size());
+ _worldPacket >> Key;
+ _worldPacket >> NativeRealmAddress;
+ _worldPacket >> Key3;
}
void ConnectToFailed::Read()
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h
index 405593e150c..8055110f1c4 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -257,6 +257,8 @@ namespace WorldPackets
WorldPacket const* Write() override;
uint64 Key = 0;
+ uint32 NativeRealmAddress = 0;
+ uint32 Key3 = 0;
ConnectToSerial Serial = ConnectToSerial::None;
ConnectPayload Payload;
uint8 Con = 0;
@@ -271,6 +273,8 @@ namespace WorldPackets
uint64 DosResponse = 0;
uint64 Key = 0;
+ uint32 NativeRealmAddress = 0;
+ uint32 Key3 = 0;
std::array<uint8, 32> LocalChallenge = { };
std::array<uint8, DigestLength> Digest = { };
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index dafa4fbe1d6..6f2d667ef69 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -273,8 +273,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterRestrict
ASSERT(restrictionsAndMails.MailSenders.size() == restrictionsAndMails.MailSenderTypes.size());
data << Bits<1>(restrictionsAndMails.BoostInProgress);
- data << Bits<1>(restrictionsAndMails.RpeResetAvailable);
- data << Bits<1>(restrictionsAndMails.RpeResetQuestClearAvailable);
+ data << Bits<1>(restrictionsAndMails.RpeAvailable);
data.FlushBits();
data << uint32(restrictionsAndMails.RestrictionFlags);
@@ -340,7 +339,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::UnlockedCondition
ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceLimitDisableInfo const& raceLimitDisableInfo)
{
data << int8(raceLimitDisableInfo.RaceID);
- data << int32(raceLimitDisableInfo.Reason);
+ data << int8(raceLimitDisableInfo.Reason);
return data;
}
@@ -349,6 +348,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WarbandGroupMember const& warbandGroupM
{
data << uint32(warbandGroupMember.WarbandScenePlacementID);
data << int32(warbandGroupMember.Type);
+ data << int32(warbandGroupMember.ContentSetID);
if (warbandGroupMember.Type == 0)
data << warbandGroupMember.Guid;
@@ -361,6 +361,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WarbandGroup const& warbandGroup)
data << uint8(warbandGroup.OrderIndex);
data << uint32(warbandGroup.WarbandSceneID);
data << uint32(warbandGroup.Flags);
+ data << int32(warbandGroup.ContentSetID);
data << Size<uint32>(warbandGroup.Members);
for (WarbandGroupMember const& member : warbandGroup.Members)
@@ -393,6 +394,7 @@ WorldPacket const* EnumCharactersResult::Write()
_worldPacket << Bits<1>(IsRestrictedNewPlayer);
_worldPacket << Bits<1>(IsNewcomerChatCompleted);
_worldPacket << Bits<1>(IsRestrictedTrial);
+ _worldPacket << Bits<1>(Unused1127);
_worldPacket << OptionalInit(ClassDisableMask);
_worldPacket << Bits<1>(DontCreateCharacterDisplays);
_worldPacket << Size<uint32>(Characters);
@@ -631,6 +633,7 @@ void PlayerLogin::Read()
{
_worldPacket >> Guid;
_worldPacket >> FarClip;
+ _worldPacket >> Bits<1>(RPE);
}
WorldPacket const* LoginVerifyWorld::Write()
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index ba3092fd655..a7f94d8df91 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -120,6 +120,7 @@ namespace WorldPackets
{
uint32 WarbandScenePlacementID = 0;
int32 Type = 0;
+ int32 ContentSetID = 0;
ObjectGuid Guid;
};
@@ -129,6 +130,7 @@ namespace WorldPackets
uint8 OrderIndex = 0;
uint32 WarbandSceneID = 0;
uint32 Flags = 0; ///< enum WarbandGroupFlags { Collapsed = 1 }
+ int32 ContentSetID = 0;
std::vector<WarbandGroupMember> Members;
std::string_view Name;
};
@@ -205,8 +207,7 @@ namespace WorldPackets
uint32 RestrictionFlags = 0;
std::vector<std::string> MailSenders;
std::vector<uint32> MailSenderTypes;
- bool RpeResetAvailable = false;
- bool RpeResetQuestClearAvailable = false;
+ bool RpeAvailable = false;
};
struct CharacterInfo
@@ -255,7 +256,7 @@ namespace WorldPackets
};
int8 RaceID = 0;
- int32 Reason = 0;
+ int8 Reason = 0;
};
explicit EnumCharactersResult() : ServerPacket(SMSG_ENUM_CHARACTERS_RESULT) { }
@@ -269,6 +270,7 @@ namespace WorldPackets
bool IsRestrictedNewPlayer = false; ///< forbids using level boost and class trials
bool IsNewcomerChatCompleted = false; ///< forbids hero classes and allied races
bool IsRestrictedTrial = false;
+ bool Unused1127 = false;
bool DontCreateCharacterDisplays = false;
int32 MaxCharacterLevel = 1;
@@ -547,6 +549,7 @@ namespace WorldPackets
ObjectGuid Guid; ///< Guid of the player that is logging in
float FarClip = 0.0f; ///< Visibility distance (for terrain)
+ bool RPE = false;
};
class LoginVerifyWorld final : public ServerPacket
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index 81d12cdd2b0..14348646395 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -53,10 +53,11 @@ namespace WorldPackets
};
// CMSG_CHAT_MESSAGE_WHISPER
+ // CMSG_MESSAGE_WHISPER
class ChatMessageWhisper final : public ClientPacket
{
public:
- explicit ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_MESSAGE_WHISPER, std::move(packet)) { }
+ explicit ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(std::move(packet)) { }
void Read() override;
diff --git a/src/server/game/Server/Packets/HousingPackets.cpp b/src/server/game/Server/Packets/HousingPackets.cpp
new file mode 100644
index 00000000000..d1337786d62
--- /dev/null
+++ b/src/server/game/Server/Packets/HousingPackets.cpp
@@ -0,0 +1,27 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "HousingPackets.h"
+#include "PacketOperators.h"
+
+namespace WorldPackets::Housing
+{
+void DeclineNeighborhoodInvites::Read()
+{
+ _worldPacket >> Bits<1>(Allow);
+}
+}
diff --git a/src/server/game/Server/Packets/HousingPackets.h b/src/server/game/Server/Packets/HousingPackets.h
new file mode 100644
index 00000000000..74b7121a824
--- /dev/null
+++ b/src/server/game/Server/Packets/HousingPackets.h
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef TRINITYCORE_HOUSING_PACKETS_H
+#define TRINITYCORE_HOUSING_PACKETS_H
+
+#include "Packet.h"
+
+namespace WorldPackets::Housing
+{
+ class DeclineNeighborhoodInvites final : public ClientPacket
+ {
+ public:
+ explicit DeclineNeighborhoodInvites(WorldPacket&& packet) : ClientPacket(CMSG_DECLINE_NEIGHBORHOOD_INVITES, std::move(packet)) { }
+
+ void Read() override;
+
+ bool Allow = false;
+ };
+}
+
+#endif // TRINITYCORE_HOUSING_PACKETS_H
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index b3a3ea8487d..df1d9def336 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -209,6 +209,10 @@ void TutorialSetFlag::Read()
WorldPacket const* WorldServerInfo::Write()
{
_worldPacket << uint32(DifficultyID);
+ _worldPacket << HouseGuid;
+ _worldPacket << HouseOwnerBnetAccount;
+ _worldPacket << HouseOwnerPlayer;
+ _worldPacket << NeighborhoodGuid;
_worldPacket << Bits<1>(IsTournamentRealm);
_worldPacket << Bits<1>(XRealmPvpAlert);
_worldPacket << Bits<1>(BlockExitingLoadingScreen);
@@ -656,7 +660,7 @@ WorldPacket const* AccountHeirloomUpdate::Write()
_worldPacket << Bits<1>(IsFullUpdate);
_worldPacket.FlushBits();
- _worldPacket << int32(ItemCollectionType);
+ _worldPacket << int8(ItemCollectionType);
// both lists have to have the same size
_worldPacket << Size<uint32>(*Heirlooms);
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index fef57a88b1b..7946e6eea5b 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -265,6 +265,11 @@ namespace WorldPackets
Optional<uint32> RestrictedAccountMaxLevel;
Optional<uint64> RestrictedAccountMaxMoney;
Optional<uint32> InstanceGroupSize;
+
+ ObjectGuid HouseGuid;
+ ObjectGuid HouseOwnerBnetAccount;
+ ObjectGuid HouseOwnerPlayer;
+ ObjectGuid NeighborhoodGuid;
};
class SetDungeonDifficulty final : public ClientPacket
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 3dd0acbd9e5..c36faf06206 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -183,10 +183,13 @@ ByteBuffer& operator<<(ByteBuffer& data, PartyMemberAuraStates const& aura)
ByteBuffer& operator<<(ByteBuffer& data, CTROptions const& ctrOptions)
{
- data << uint32(ctrOptions.ConditionalFlags);
+ data << Size<uint32>(ctrOptions.ConditionalFlags);
data << int8(ctrOptions.FactionGroup);
data << uint32(ctrOptions.ChromieTimeExpansionMask);
+ if (!ctrOptions.ConditionalFlags.empty())
+ data.append(ctrOptions.ConditionalFlags.data(), ctrOptions.ConditionalFlags.size());
+
return data;
}
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
index 2e005b7832a..f793adce5df 100644
--- a/src/server/game/Server/Packets/PartyPackets.h
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -185,7 +185,7 @@ namespace WorldPackets
struct CTROptions
{
- uint32 ConditionalFlags = 0;
+ std::span<uint32 const> ConditionalFlags;
int8 FactionGroup = 0;
uint32 ChromieTimeExpansionMask = 0;
};
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 3d300e7fabc..7e6fd6446c8 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -226,12 +226,24 @@ ByteBuffer& operator<<(ByteBuffer& data, GuildGuidLookupData const& lookupData)
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, HouseLookupData const& lookupData)
+{
+ data << lookupData.Guid;
+ data << SizedString::BitsSize<8>(lookupData.Name);
+ data.FlushBits();
+
+ data << SizedString::Data(lookupData.Name);
+
+ return data;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, NameCacheLookupResult const& result)
{
data << uint8(result.Result);
data << result.Player;
data << OptionalInit(result.Data);
data << OptionalInit(result.GuildData);
+ data << OptionalInit(result.HouseData);
data.FlushBits();
if (result.Data)
@@ -240,6 +252,9 @@ ByteBuffer& operator<<(ByteBuffer& data, NameCacheLookupResult const& result)
if (result.GuildData)
data << *result.GuildData;
+ if (result.HouseData)
+ data << *result.HouseData;
+
return data;
}
@@ -345,6 +360,7 @@ WorldPacket const* QueryGameObjectResponse::Write()
statsData.append(Stats.QuestItems.data(), Stats.QuestItems.size());
statsData << int32(Stats.ContentTuningId);
+ statsData << int32(Stats.RequiredLevel);
}
_worldPacket << Size<uint32>(statsData);
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index 4d30b3b6fdc..939447fb3f4 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -138,12 +138,19 @@ namespace WorldPackets
std::string_view Name;
};
+ struct HouseLookupData
+ {
+ ObjectGuid Guid;
+ std::string_view Name;
+ };
+
struct NameCacheLookupResult
{
ObjectGuid Player;
uint8 Result = 0; // 0 - full packet, != 0 - only guid
Optional<PlayerGuidLookupData> Data;
Optional<GuildGuidLookupData> GuildData;
+ Optional<HouseLookupData> HouseData;
};
class QueryPlayerNamesResponse final : public ServerPacket
@@ -234,7 +241,8 @@ namespace WorldPackets
std::array<uint32, MAX_GAMEOBJECT_DATA> Data = { };
float Size = 0.0f;
std::vector<int32> QuestItems;
- uint32 ContentTuningId = 0;
+ int32 ContentTuningId = 0;
+ int32 RequiredLevel = 0;
};
class QueryGameObjectResponse final : public ServerPacket
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 31e8ddb84ea..2a860499c3a 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -177,6 +177,9 @@ WorldPacket const* QueryQuestInfoResponse::Write()
_worldPacket << Size<uint32>(Info.ConditionalQuestDescription);
_worldPacket << Size<uint32>(Info.ConditionalQuestCompletionLog);
+ _worldPacket << Size<uint32>(Info.RewardHouseRoomIDs);
+ _worldPacket << Size<uint32>(Info.RewardHouseDecorIDs);
+
for (QuestCompleteDisplaySpell const& rewardDisplaySpell : Info.RewardDisplaySpell)
_worldPacket << rewardDisplaySpell;
@@ -186,6 +189,12 @@ WorldPacket const* QueryQuestInfoResponse::Write()
if (!Info.TreasurePickerID2.empty())
_worldPacket.append(Info.TreasurePickerID2.data(), Info.TreasurePickerID2.size());
+ if (!Info.RewardHouseRoomIDs.empty())
+ _worldPacket.append(Info.RewardHouseRoomIDs.data(), Info.RewardHouseRoomIDs.size());
+
+ if (!Info.RewardHouseDecorIDs.empty())
+ _worldPacket.append(Info.RewardHouseDecorIDs.data(), Info.RewardHouseDecorIDs.size());
+
_worldPacket << SizedString::BitsSize<9>(Info.LogTitle);
_worldPacket << SizedString::BitsSize<12>(Info.LogDescription);
_worldPacket << SizedString::BitsSize<12>(Info.QuestDescription);
@@ -206,15 +215,19 @@ WorldPacket const* QueryQuestInfoResponse::Write()
_worldPacket << int8(questObjective.StorageIndex);
_worldPacket << int32(questObjective.ObjectID);
_worldPacket << int32(questObjective.Amount);
+ _worldPacket << int32(questObjective.SecondaryAmount); // only objective type 22
_worldPacket << uint32(questObjective.Flags);
_worldPacket << uint32(questObjective.Flags2);
_worldPacket << float(questObjective.ProgressBarWeight);
_worldPacket << Size<int32>(questObjective.VisualEffects);
+ _worldPacket << int32(questObjective.ParentObjectiveID); // related to new UF flags
+
for (int32 visualEffect : questObjective.VisualEffects)
_worldPacket << int32(visualEffect);
_worldPacket << SizedString::BitsSize<8>(questObjective.Description);
+ _worldPacket << Bits<1>(questObjective.Visible);
_worldPacket.FlushBits();
_worldPacket << SizedString::Data(questObjective.Description);
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 1e29c381409..66cf8d43a1b 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -186,6 +186,8 @@ namespace WorldPackets
std::vector<QuestObjective> Objectives;
std::vector<ConditionalQuestText> ConditionalQuestDescription;
std::vector<ConditionalQuestText> ConditionalQuestCompletionLog;
+ std::span<int32 const> RewardHouseRoomIDs;
+ std::span<int32 const> RewardHouseDecorIDs;
int32 RewardItems[QUEST_REWARD_ITEM_COUNT] = { };
int32 RewardAmount[QUEST_REWARD_ITEM_COUNT] = { };
int32 ItemDrop[QUEST_ITEM_DROP_COUNT] = { };
@@ -333,12 +335,12 @@ namespace WorldPackets
int32 PortraitGiverMount = 0;
int32 PortraitGiverModelSceneID = 0;
int32 QuestGiverCreatureID = 0;
- std::string QuestTitle;
- std::string RewardText;
- std::string PortraitGiverText;
- std::string PortraitGiverName;
- std::string PortraitTurnInText;
- std::string PortraitTurnInName;
+ std::string_view QuestTitle;
+ std::string_view RewardText;
+ std::string_view PortraitGiverText;
+ std::string_view PortraitGiverName;
+ std::string_view PortraitTurnInText;
+ std::string_view PortraitTurnInName;
std::vector<ConditionalQuestText> ConditionalRewardText;
QuestGiverOfferReward QuestData;
int32 QuestPackageID = 0;
@@ -430,13 +432,13 @@ namespace WorldPackets
int32 QuestInfoID = 0;
int32 QuestSessionBonus = 0;
int32 QuestGiverCreatureID = 0;
- std::string PortraitGiverText;
- std::string PortraitGiverName;
- std::string PortraitTurnInText;
- std::string PortraitTurnInName;
- std::string QuestTitle;
- std::string LogDescription;
- std::string DescriptionText;
+ std::string_view PortraitGiverText;
+ std::string_view PortraitGiverName;
+ std::string_view PortraitTurnInText;
+ std::string_view PortraitTurnInName;
+ std::string_view QuestTitle;
+ std::string_view LogDescription;
+ std::string_view DescriptionText;
std::vector<ConditionalQuestText> ConditionalDescriptionText;
bool DisplayPopup = false;
bool StartCheat = false;
@@ -481,8 +483,8 @@ namespace WorldPackets
int32 StatusFlags = 0;
int32 QuestInfoID = 0;
std::array<uint32, 4> QuestFlags = { };
- std::string QuestTitle;
- std::string CompletionText;
+ std::string_view QuestTitle;
+ std::string_view CompletionText;
std::vector<ConditionalQuestText> ConditionalCompletionText;
};
@@ -542,7 +544,7 @@ namespace WorldPackets
uint32 GreetEmoteDelay = 0;
uint32 GreetEmoteType = 0;
std::vector<NPC::ClientGossipText> QuestDataText;
- std::string Greeting;
+ std::string_view Greeting;
};
class QuestUpdateComplete final : public ServerPacket
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 20cbed5bf91..f98326d56e7 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -169,7 +169,9 @@ ByteBuffer& operator>>(ByteBuffer& buffer, SpellTargetData& targetData)
buffer >> targetData.Flags;
buffer >> targetData.Unit;
buffer >> targetData.Item;
+ buffer >> targetData.Unknown1127_1;
+ buffer >> Bits<1>(targetData.Unknown1127_2);
buffer >> OptionalInit(targetData.SrcLocation);
buffer >> OptionalInit(targetData.DstLocation);
buffer >> OptionalInit(targetData.Orientation);
@@ -309,7 +311,9 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellTargetData const& spellTargetData)
data << uint32(spellTargetData.Flags);
data << spellTargetData.Unit;
data << spellTargetData.Item;
+ data << spellTargetData.Unknown1127_1;
+ data << Bits<1>(spellTargetData.Unknown1127_2);
data << OptionalInit(spellTargetData.SrcLocation);
data << OptionalInit(spellTargetData.DstLocation);
data << OptionalInit(spellTargetData.Orientation);
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index a4b30b3d2d4..cf9808e431c 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -203,8 +203,10 @@ namespace WorldPackets
struct SpellTargetData
{
uint32 Flags = 0;
+ bool Unknown1127_2 = false;
ObjectGuid Unit;
ObjectGuid Item;
+ ObjectGuid Unknown1127_1;
Optional<TargetLocation> SrcLocation;
Optional<TargetLocation> DstLocation;
Optional<float> Orientation;
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 804a3b7229a..c819429a303 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -77,6 +77,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EuropaTicketConfig const& europaTicketS
data << Bits<1>(europaTicketSystemStatus.SuggestionsEnabled);
data << europaTicketSystemStatus.ThrottleState;
+ data << europaTicketSystemStatus.Unused1127;
return data;
}
@@ -90,6 +91,15 @@ ByteBuffer& operator<<(ByteBuffer& data, SquelchInfo const& squelch)
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, GameModeData const& gameMode)
+{
+ data << uint8(gameMode.GameMode);
+ data << int32(gameMode.Unused1127);
+ data << int32(gameMode.GameModeRecordID);
+
+ return data;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, GameRuleValuePair const& gameRuleValue)
{
data << int32(gameRuleValue.Rule);
@@ -131,6 +141,7 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket << uint32(ClubPresenceUnsubscribeDelay);
_worldPacket << int32(ContentSetID);
+ _worldPacket << Size<uint32>(DisabledGameModes);
_worldPacket << Size<uint32>(GameRules);
_worldPacket << int32(ActiveTimerunningSeasonID);
_worldPacket << int32(RemainingTimerunningSeasonSeconds);
@@ -153,6 +164,9 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket << float(AddonPerformanceMsgError);
_worldPacket << float(AddonPerformanceMsgOverall);
+ for (GameModeData const& disabledGameMode : DisabledGameModes)
+ _worldPacket << disabledGameMode;
+
for (GameRuleValuePair const& gameRuleValue : GameRules)
_worldPacket << gameRuleValue;
@@ -292,7 +306,9 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket << int32(MinimumExpansionLevel);
_worldPacket << int32(MaximumExpansionLevel);
_worldPacket << int32(ContentSetID);
+ _worldPacket << Size<uint32>(DisabledGameModes);
_worldPacket << Size<uint32>(GameRules);
+ _worldPacket << Size<uint32>(AvailableGameModeIDs);
_worldPacket << int32(ActiveTimerunningSeasonID);
_worldPacket << int32(RemainingTimerunningSeasonSeconds);
_worldPacket << TimerunningConversionMinCharacterAge;
@@ -312,9 +328,15 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
if (!LiveRegionCharacterCopySourceRegions.empty())
_worldPacket.append(LiveRegionCharacterCopySourceRegions.data(), LiveRegionCharacterCopySourceRegions.size());
+ for (GameModeData const& disabledGameMode : DisabledGameModes)
+ _worldPacket << disabledGameMode;
+
for (GameRuleValuePair const& gameRuleValue : GameRules)
_worldPacket << gameRuleValue;
+ if (!AvailableGameModeIDs.empty())
+ _worldPacket.append(AvailableGameModeIDs.data(), AvailableGameModeIDs.size());
+
for (DebugTimeEventInfo const& debugTimeEventInfo : DebugTimeEvents)
_worldPacket << debugTimeEventInfo;
@@ -343,6 +365,22 @@ WorldPacket const* MirrorVars::Write()
return &_worldPacket;
}
+WorldPacket const* MOTD::Write()
+{
+ _worldPacket << BitsSize<4>(*Text);
+ _worldPacket.FlushBits();
+
+ for (std::string const& line : *Text)
+ {
+ _worldPacket << SizedString::BitsSize<7>(line);
+ _worldPacket.FlushBits();
+
+ _worldPacket << SizedString::Data(line);
+ }
+
+ return &_worldPacket;
+}
+
WorldPacket const* SetTimeZoneInformation::Write()
{
_worldPacket << SizedString::BitsSize<7>(ServerTimeTZ);
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index ff723b7412e..a0210f4fbf0 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -77,6 +77,7 @@ namespace WorldPackets
bool SuggestionsEnabled = false;
SavedThrottleObjectState ThrottleState;
+ SavedThrottleObjectState Unused1127;
};
struct SquelchInfo
@@ -86,6 +87,13 @@ namespace WorldPackets
ObjectGuid GuildGuid;
};
+ struct GameModeData
+ {
+ uint8 GameMode = 0;
+ int32 Unused1127 = 0;
+ int32 GameModeRecordID = 0;
+ };
+
struct GameRuleValuePair
{
int32 Rule = 0;
@@ -182,6 +190,7 @@ namespace WorldPackets
SocialQueueConfig QuickJoinConfig;
SquelchInfo Squelch;
RafSystemFeatureInfo RAFSystem;
+ std::vector<GameModeData> DisabledGameModes;
std::vector<GameRuleValuePair> GameRules;
int32 ActiveTimerunningSeasonID = 0;
int32 RemainingTimerunningSeasonSeconds = 0;
@@ -249,7 +258,9 @@ namespace WorldPackets
int32 MaximumExpansionLevel = 0;
uint32 KioskSessionDurationMinutes = 0;
int32 ContentSetID = 0; // Currently active Classic season
+ std::vector<GameModeData> DisabledGameModes;
std::vector<GameRuleValuePair> GameRules;
+ std::vector<int32> AvailableGameModeIDs;
int32 ActiveTimerunningSeasonID = 0;
int32 RemainingTimerunningSeasonSeconds = 0;
Duration<Seconds, int32> TimerunningConversionMinCharacterAge { 1_days };
@@ -284,6 +295,16 @@ namespace WorldPackets
std::span<MirrorVarSingle> Variables;
};
+ class MOTD final : public ServerPacket
+ {
+ public:
+ MOTD() : ServerPacket(SMSG_MOTD) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<std::string> const* Text = nullptr;
+ };
+
class SetTimeZoneInformation final : public ServerPacket
{
public:
diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp
index 1a9d373bf8b..4fd5cf7d4ed 100644
--- a/src/server/game/Server/Packets/TalentPackets.cpp
+++ b/src/server/game/Server/Packets/TalentPackets.cpp
@@ -102,7 +102,7 @@ WorldPacket const* UpdateTalentData::Write()
_worldPacket << talent;
for (uint32 talent : talentGroupInfo.GlyphIDs)
- _worldPacket << uint16(talent);
+ _worldPacket << uint32(talent);
}
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp
index 259141c5848..d928ed1e9f9 100644
--- a/src/server/game/Server/Packets/TicketPackets.cpp
+++ b/src/server/game/Server/Packets/TicketPackets.cpp
@@ -250,6 +250,22 @@ ByteBuffer& operator>>(ByteBuffer& data, SupportTicketArenaTeamInfo& arenaTeam)
return data;
}
+ByteBuffer& operator>>(ByteBuffer& data, SupportTicketHouseInfo& houseInfo)
+{
+ data.ResetBitPos();
+
+ data >> SizedString::BitsSize<8>(houseInfo.NeighborhoodName);
+
+ data >> houseInfo.Unknown_1127_1;
+ data >> houseInfo.Unknown_1127_2;
+ data >> houseInfo.Unknown_1127_3;
+ data >> houseInfo.Unknown_1127_4;
+
+ data >> SizedString::Data(houseInfo.NeighborhoodName);
+
+ return data;
+}
+
void SupportTicketSubmitComplaint::Read()
{
_worldPacket >> Header;
@@ -269,6 +285,7 @@ void SupportTicketSubmitComplaint::Read()
_worldPacket >> OptionalInit(VoiceChatInfo);
_worldPacket >> OptionalInit(ClubFinderInfo);
_worldPacket >> OptionalInit(ArenaTeamInfo);
+ _worldPacket >> OptionalInit(HouseInfo);
if (VoiceChatInfo)
{
@@ -303,6 +320,9 @@ void SupportTicketSubmitComplaint::Read()
if (ArenaTeamInfo)
_worldPacket >> *ArenaTeamInfo;
+
+ if (HouseInfo)
+ _worldPacket >> *HouseInfo;
}
ByteBuffer& operator>>(ByteBuffer& data, Complaint::ComplaintOffender& complaintOffender)
diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h
index d00dcb8e13b..7cebe040d0b 100644
--- a/src/server/game/Server/Packets/TicketPackets.h
+++ b/src/server/game/Server/Packets/TicketPackets.h
@@ -211,6 +211,15 @@ namespace WorldPackets
ObjectGuid ArenaTeamID;
};
+ struct SupportTicketHouseInfo
+ {
+ std::string NeighborhoodName;
+ ObjectGuid Unknown_1127_1;
+ ObjectGuid Unknown_1127_2;
+ ObjectGuid Unknown_1127_3;
+ uint8 Unknown_1127_4 = 0;
+ };
+
class SupportTicketSubmitComplaint final : public ClientPacket
{
public:
@@ -235,6 +244,7 @@ namespace WorldPackets
Optional<SupportTicketVoiceChatInfo> VoiceChatInfo;
Optional<SupportTicketClubFinderInfo> ClubFinderInfo;
Optional<SupportTicketArenaTeamInfo> ArenaTeamInfo;
+ Optional<SupportTicketHouseInfo> HouseInfo;
};
class Complaint final : public ClientPacket
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 015acba00e7..7f037c3ab7e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -146,7 +146,6 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_ABANDON_NPE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ACCEPT_GUILD_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptInvite);
- DEFINE_HANDLER(CMSG_ACCEPT_RETURNING_PLAYER_PROMPT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ACCEPT_SOCIAL_CONTRACT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode);
DEFINE_HANDLER(CMSG_ACCEPT_WARGAME_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -419,6 +418,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DB_QUERY_BULK, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleDBQueryBulk);
DEFINE_HANDLER(CMSG_DECLINE_GUILD_INVITES, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleDeclineGuildInvites);
+ DEFINE_HANDLER(CMSG_DECLINE_NEIGHBORHOOD_INVITES, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleDeclineNeighborhoodInvites);
DEFINE_HANDLER(CMSG_DECLINE_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDeclinePetition);
DEFINE_HANDLER(CMSG_DELETE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDeleteEquipmentSet);
DEFINE_HANDLER(CMSG_DELVE_TELEPORT_OUT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -445,6 +445,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_EMOTE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleEmoteOpcode);
DEFINE_HANDLER(CMSG_ENABLE_NAGLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_ENABLE_TAXI_NODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleEnableTaxiNodeOpcode);
+ DEFINE_HANDLER(CMSG_ENCOUNTER_JOURNAL_START_ARATHI_RPE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ENGINE_SURVEY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ENTER_ENCRYPTED_MODE_ACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_ENUM_CHARACTERS, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharEnumOpcode);
@@ -522,6 +523,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_GUILD_DEMOTE_MEMBER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDemoteMember);
DEFINE_HANDLER(CMSG_GUILD_EVENT_LOG_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildEventLogQuery);
DEFINE_HANDLER(CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildGetAchievementMembers);
+ DEFINE_HANDLER(CMSG_GUILD_GET_OTHERS_OWNED_HOUSES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GUILD_GET_RANKS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildGetRanks);
DEFINE_HANDLER(CMSG_GUILD_GET_ROSTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildGetRoster);
DEFINE_HANDLER(CMSG_GUILD_INVITE_BY_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildInviteByName);
@@ -550,12 +552,56 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_HEARTH_AND_RESURRECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleHearthAndResurrect);
DEFINE_HANDLER(CMSG_HIDE_QUEST_CHOICE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_HOTFIX_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleHotfixRequest);
+ DEFINE_HANDLER(CMSG_HOUSE_EXTERIOR_COMMIT_POSITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSE_INTERIOR_LEAVE_HOUSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_CATALOG_CREATE_SEARCHER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_CATALOG_DESTROY_ALL_ENTRY_COPIES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_CATALOG_DESTROY_ENTRY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_COMMIT_DYES_FOR_SELECTED_DECOR, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_MOVE_DECOR, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_PLACE_NEW_DECOR, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_REMOVE_PLACED_DECOR_ENTRY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_SELECT_DECOR, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_SET_EDITOR_MODE_ACTIVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_DECOR_START_PLACING_NEW_DECOR, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_FIXTURE_REMOVE_FIXTURE_FROM_SELECTED_POINT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_FIXTURE_SELECT_CORE_FIXTURE_OPTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_FIXTURE_SELECT_FIXTURE_OPTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_FIXTURE_SET_EDITOR_MODE_ACTIVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_KIOSK_REQUEST_HOUSING_RESET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_REQUEST_CURRENT_HOUSE_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_APPLY_THEME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_APPLY_WALLPAPER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_MOVE_DRAGGED_ROOM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_PLACE_ROOM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_REMOVE_ROOM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_ROTATE_ROOM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_SET_EDITOR_MODE_ACTIVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_SET_ROOM_COMPONENT_CEILING_TYPE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_ROOM_SET_ROOM_COMPONENT_DOOR_TYPE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_ACCEPT_NEIGHBORHOOD_OWNERSHIP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_CREATE_GUILD_NEIGHBORHOOD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_DECLINE_NEIGHBORHOOD_OWNERSHIP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_ENTER_HOUSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_GET_OTHERS_BNET_ACCOUNT_OWNED_HOUSES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_GET_OTHERS_PLAYER_OWNED_HOUSES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_GET_PLAYER_OWNED_HOUSES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_HOUSE_FINDER_DECLINE_NEIGHBORHOOD_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_HOUSE_FINDER_REQUEST_NEIGHBORHOODS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_HOUSE_FINDER_REQUEST_RESERVATION_AND_PORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_RELINQUISH_HOUSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_REQUEST_HOUSE_FINDER_NEIGHBORHOOD_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_REQUEST_PLAYER_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_SAVE_HOUSE_SETTINGS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_SEARCH_BNET_FRIEND_NEIGHBORHOODS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_HOUSING_SERVICES_START_TUTORIAL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_IGNORE_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleIgnoreTradeOpcode);
DEFINE_HANDLER(CMSG_INITIATE_ROLE_POLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInitiateRolePoll);
DEFINE_HANDLER(CMSG_INITIATE_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInitiateTradeOpcode);
DEFINE_HANDLER(CMSG_INSPECT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleInspectOpcode);
DEFINE_HANDLER(CMSG_INSTANCE_ABANDON_VOTE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_INSTANCE_LOCK_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInstanceLockResponse);
+ DEFINE_HANDLER(CMSG_INVITE_PLAYER_TO_NEIGHBORHOOD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ISLAND_QUEUE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ITEM_PURCHASE_REFUND, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleItemRefund);
DEFINE_HANDLER(CMSG_ITEM_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleItemTextQuery);
@@ -563,6 +609,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_JOIN_RATED_BATTLEGROUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_KEEP_ALIVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_KEYBOUND_OVERRIDE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleKeyboundOverride);
+ DEFINE_HANDLER(CMSG_KIOSK_ENABLE_GOD_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LATENCY_REPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LEARN_PVP_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnPvpTalentsOpcode);
DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnTalentsOpcode);
@@ -621,6 +668,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMergeGuildBankItemWithGuildBankItem);
DEFINE_HANDLER(CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMergeGuildBankItemWithItem);
DEFINE_HANDLER(CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMergeItemWithGuildBankItem);
+ DEFINE_HANDLER(CMSG_MESSAGE_WHISPER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatMessageWhisperOpcode);
DEFINE_HANDLER(CMSG_MINIMAP_PING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode);
DEFINE_HANDLER(CMSG_MISSILE_TRAJECTORY_COLLISION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMissileTrajectoryCollision);
DEFINE_HANDLER(CMSG_MOUNT_CLEAR_FANFARE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -718,6 +766,27 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_MOVE_UPDATE_FALL_SPEED, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_ADD_MANAGER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_CANCEL_RESIDENT_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_CHARTER_CONFIRMATION_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_CHARTER_CREATE_NEIGHBORHOOD_CHARTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_CHARTER_EDIT_NEIGHBORHOOD_CHARTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_CHARTER_OPEN_CHARTER_CONFIRMATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_CHARTER_REQUEST_SIGNATURE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_CHARTER_SIGN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_DECLINE_NEIGHBORHOOD_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_EVICT_PLAYER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_GET_HOUSING_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_GET_INVITES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_INTERACT_WITH_CORNERSTONE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_INVITE_RESIDENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_MOVE_HOUSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_OFFER_NEIGHBORHOOD_OWNERSHIP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_PURCHASE_PLOT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_REMOVE_MANAGER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_REQUEST_NEIGHBORHOOD_ROSTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_SET_NAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_NEIGHBORHOOD_SET_PUBLIC, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_NEUTRAL_PLAYER_SELECT_FACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_NEXT_CINEMATIC_CAMERA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera);
DEFINE_HANDLER(CMSG_OBJECT_UPDATE_FAILED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleObjectUpdateFailedOpcode);
@@ -777,6 +846,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_QUERY_GARRISON_PET_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_GUILD_INFO, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryInspectAchievements);
+ DEFINE_HANDLER(CMSG_QUERY_NEIGHBORHOOD_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_NEXT_MAIL_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryNextMailTime);
DEFINE_HANDLER(CMSG_QUERY_NPC_TEXT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleNpcTextQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_PAGE_TEXT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryPageText);
@@ -876,7 +946,6 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_RESURRECT_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleResurrectResponse);
DEFINE_HANDLER(CMSG_REVERT_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_RIDE_VEHICLE_INTERACT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRideVehicleInteract);
- DEFINE_HANDLER(CMSG_RPE_RESET_CHARACTER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SAVE_CUF_PROFILES, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles);
DEFINE_HANDLER(CMSG_SAVE_ACCOUNT_DATA_EXPORT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetSave);
@@ -1011,7 +1080,6 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateBankTabSettings);
DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData);
DEFINE_HANDLER(CMSG_UPDATE_AREA_TRIGGER_VISUAL, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUpdateAreaTriggerVisual);
- DEFINE_HANDLER(CMSG_UPDATE_CLIENT_SETTINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UPDATE_CRAFTING_NPC_RECIPES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory);
DEFINE_HANDLER(CMSG_UPDATE_RAID_TARGET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateRaidTargetOpcode);
@@ -1054,8 +1122,12 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_DATA_TIMES, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_EXPORT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_ITEM_COLLECTION_DATA, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HEIRLOOM_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_ITEM_COLLECTION_DATA, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HOUSING_FIXTURE_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HOUSING_ROOM_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HOUSING_ROOM_COMPONENT_TEXTURE_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HOUSING_THEME_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
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);
@@ -1241,6 +1313,8 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAUTIONARY_CHAT_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAIN_MISSILE_BOUNCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERBOARD_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_SET_LEAVER_PENALTY_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1311,6 +1385,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMERCE_TOKEN_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLAINT_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLETE_SHIPMENT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPRESSED_PACKET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONFIRM_PARTY_INVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONNECT_TO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1561,6 +1636,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_MODIFIED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_TEXT_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_FLAGGED_FOR_RENAME, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_HARDCORE_MEMBER_DEATH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE_DECLINED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE_EXPIRED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1575,6 +1651,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NAME_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS_DELETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_OTHERS_OWNED_HOUSES_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PARTY_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RANKS, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1620,6 +1697,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_SAVE_CREATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INTERRUPT_POWER_REGEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_NEIGHBORHOOD_NAME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PAGE_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1671,6 +1749,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_READY_CHECK_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_ROLE_CHECK_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_SLOT_INVALID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_SUSPEND_LOREWALKING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_TELEPORT_DENIED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_UPDATE_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1716,6 +1795,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRROR_VARS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MISSILE_CANCEL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MODIFY_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOTD, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOUNT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVEMENT_ENFORCEMENT_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ADD_IMPULSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1831,6 +1911,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TELEPORT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TURN_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_WALK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTI_FLOOR_LEAVE_FLOOR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTI_FLOOR_NEW_FLOOR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_ALL_MAP_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1908,7 +1989,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PHASE_SHIFT_CHANGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_ACKNOWLEDGE_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_AZERITE_ITEM_GAINS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BONUS_ROLL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1964,6 +2045,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_ITEM_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NEIGHBORHOOD_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NPC_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PAGE_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2052,7 +2134,6 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_TOKEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESURRECT_REQUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_RETURNING_PLAYER_PROMPT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RETURN_APPLICANT_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RETURN_RECRUITING_CLUBS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2093,6 +2174,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_AI_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_ANIM_TIER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_CHR_UPGRADE_TIER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_CTR_OPTIONS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_DF_FAST_LAUNCH_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_DUNGEON_DIFFICULTY, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2162,13 +2244,13 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_VISUAL_LOAD_SCREEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPLASH_SCREEN_SHOW_LATEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STAND_STATE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_STARTER_BUILD_ACTIVATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMERS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_LIGHTNING_STORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_LOOT_ROLL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_STARTER_BUILD_ACTIVATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2183,6 +2265,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_COMMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_TOKEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SYNC_WOW_ENTITLEMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TAKE_SCREENSHOT_FOR_COMPLAINT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_INVOLUNTARILY_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TAXI_NODE_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEXT_EMOTE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -2259,6 +2342,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_TRANSFER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_FINISH, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WALK_IN_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN3_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN3_DISABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN3_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -2287,9 +2371,6 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_GAIN_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ZONE_UNDER_ATTACK, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPRESSED_PACKET, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
-
#undef DEFINE_SERVER_OPCODE_HANDLER
}
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index a385c379ab1..4a45eeeb6a1 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -36,158 +36,157 @@ constexpr uint32 UNKNOWN_OPCODE = 0xBADD; // special marker value for uninitia
enum OpcodeClient : uint32
{
- CMSG_ABANDON_NPE_RESPONSE = 0x2F029A,
- CMSG_ACCEPT_GUILD_INVITE = 0x340029,
- CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x2F025B,
- CMSG_ACCEPT_SOCIAL_CONTRACT = 0x340176,
- CMSG_ACCEPT_TRADE = 0x2F0004,
- CMSG_ACCEPT_WARGAME_INVITE = 0x34000C,
- CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x2F02DD,
- CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x2F02DE,
- CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x340162,
- CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x3400C0,
- CMSG_ACTIVATE_SOULBIND = 0x2F0289,
- CMSG_ACTIVATE_TAXI = 0x30003E,
- CMSG_ADDON_LIST = 0x340004,
- CMSG_ADD_ACCOUNT_COSMETIC = 0x2F0172,
- CMSG_ADD_BATTLENET_FRIEND = 0x340086,
- CMSG_ADD_FRIEND = 0x3400FF,
- CMSG_ADD_IGNORE = 0x340103,
- CMSG_ADD_TOY = 0x2F0171,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x2F00B4,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x2F028C,
- CMSG_ADVENTURE_MAP_START_QUEST = 0x2F022C,
- CMSG_ALTER_APPEARANCE = 0x30008D,
- CMSG_AREA_SPIRIT_HEALER_QUERY = 0x300043,
- CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x300044,
- CMSG_AREA_TRIGGER = 0x2F0087,
- CMSG_ARTIFACT_ADD_POWER = 0x2F0056,
- CMSG_ARTIFACT_SET_APPEARANCE = 0x2F0058,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x2F00C0,
- CMSG_ATTACK_STOP = 0x2F011E,
- CMSG_ATTACK_SWING = 0x2F011D,
- CMSG_AUCTIONABLE_TOKEN_SELL = 0x340115,
- CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x340116,
- CMSG_AUCTION_BROWSE_QUERY = 0x300061,
- CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x300069,
- CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x300068,
- CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x300067,
- CMSG_AUCTION_HELLO_REQUEST = 0x30005C,
- CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x300065,
- CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x300066,
- CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x300062,
- CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x300063,
- CMSG_AUCTION_LIST_OWNED_ITEMS = 0x300064,
- CMSG_AUCTION_PLACE_BID = 0x300060,
- CMSG_AUCTION_REMOVE_ITEM = 0x30005E,
- CMSG_AUCTION_REPLICATE_ITEMS = 0x30005F,
- CMSG_AUCTION_SELL_COMMODITY = 0x30006A,
- CMSG_AUCTION_SELL_ITEM = 0x30005D,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0x340163,
- CMSG_AUTH_CONTINUED_SESSION = 0x350002,
- CMSG_AUTH_SESSION = 0x350001,
- CMSG_AUTOBANK_ITEM = 0x310003,
- CMSG_AUTOSTORE_BANK_ITEM = 0x310002,
- CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x2F02E7,
- CMSG_AUTO_DEPOSIT_CHARACTER_BANK = 0x2F02EF,
- CMSG_AUTO_EQUIP_ITEM = 0x310004,
- CMSG_AUTO_EQUIP_ITEM_SLOT = 0x310009,
- CMSG_AUTO_GUILD_BANK_ITEM = 0x300048,
- CMSG_AUTO_STORE_BAG_ITEM = 0x310005,
- CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x300051,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x2F0257,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x2F0238,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x2F0259,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x2F0258,
- CMSG_BANKER_ACTIVATE = 0x300046,
- CMSG_BATTLEFIELD_LEAVE = 0x2F001F,
- CMSG_BATTLEFIELD_LIST = 0x2F002A,
- CMSG_BATTLEFIELD_PORT = 0x3000C3,
- CMSG_BATTLEMASTER_HELLO = 0x2F0190,
- CMSG_BATTLEMASTER_JOIN = 0x3000BA,
- CMSG_BATTLEMASTER_JOIN_ARENA = 0x3000BB,
- CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3000C1,
- CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3000BD,
- CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3000BC,
- CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3000BE,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x340102,
- CMSG_BATTLENET_REQUEST = 0x340123,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3400FB,
- CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x340140,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3400FA,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3400F1,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x340166,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3400E8,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3400E9,
- CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x340139,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x340134,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x3400F9,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x340121,
+ CMSG_ABANDON_NPE_RESPONSE = 0x39029A,
+ CMSG_ACCEPT_GUILD_INVITE = 0x3E0029,
+ CMSG_ACCEPT_SOCIAL_CONTRACT = 0x3E0177,
+ CMSG_ACCEPT_TRADE = 0x390004,
+ CMSG_ACCEPT_WARGAME_INVITE = 0x3E000C,
+ CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3902DC,
+ CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3902DD,
+ CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3E0163,
+ CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x3E00C1,
+ CMSG_ACTIVATE_SOULBIND = 0x390289,
+ CMSG_ACTIVATE_TAXI = 0x3A003E,
+ CMSG_ADDON_LIST = 0x3E0004,
+ CMSG_ADD_ACCOUNT_COSMETIC = 0x390172,
+ CMSG_ADD_BATTLENET_FRIEND = 0x3E0086,
+ CMSG_ADD_FRIEND = 0x3E0100,
+ CMSG_ADD_IGNORE = 0x3E0104,
+ CMSG_ADD_TOY = 0x390171,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3900B4,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x39028C,
+ CMSG_ADVENTURE_MAP_START_QUEST = 0x39022C,
+ CMSG_ALTER_APPEARANCE = 0x3A008D,
+ CMSG_AREA_SPIRIT_HEALER_QUERY = 0x3A0043,
+ CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x3A0044,
+ CMSG_AREA_TRIGGER = 0x390087,
+ CMSG_ARTIFACT_ADD_POWER = 0x390056,
+ CMSG_ARTIFACT_SET_APPEARANCE = 0x390058,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3900C0,
+ CMSG_ATTACK_STOP = 0x39011E,
+ CMSG_ATTACK_SWING = 0x39011D,
+ CMSG_AUCTIONABLE_TOKEN_SELL = 0x3E0116,
+ CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x3E0117,
+ CMSG_AUCTION_BROWSE_QUERY = 0x3A0061,
+ CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x3A0069,
+ CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x3A0068,
+ CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x3A0067,
+ CMSG_AUCTION_HELLO_REQUEST = 0x3A005C,
+ CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x3A0065,
+ CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x3A0066,
+ CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x3A0062,
+ CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x3A0063,
+ CMSG_AUCTION_LIST_OWNED_ITEMS = 0x3A0064,
+ CMSG_AUCTION_PLACE_BID = 0x3A0060,
+ CMSG_AUCTION_REMOVE_ITEM = 0x3A005E,
+ CMSG_AUCTION_REPLICATE_ITEMS = 0x3A005F,
+ CMSG_AUCTION_SELL_COMMODITY = 0x3A006A,
+ CMSG_AUCTION_SELL_ITEM = 0x3A005D,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3E0164,
+ CMSG_AUTH_CONTINUED_SESSION = 0x3F0003,
+ CMSG_AUTH_SESSION = 0x3F0001,
+ CMSG_AUTOBANK_ITEM = 0x3B0003,
+ CMSG_AUTOSTORE_BANK_ITEM = 0x3B0002,
+ CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3902E6,
+ CMSG_AUTO_DEPOSIT_CHARACTER_BANK = 0x3902EE,
+ CMSG_AUTO_EQUIP_ITEM = 0x3B0004,
+ CMSG_AUTO_EQUIP_ITEM_SLOT = 0x3B0009,
+ CMSG_AUTO_GUILD_BANK_ITEM = 0x3A0048,
+ CMSG_AUTO_STORE_BAG_ITEM = 0x3B0005,
+ CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x3A0051,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x390258,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x390238,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x39025A,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x390259,
+ CMSG_BANKER_ACTIVATE = 0x3A0046,
+ CMSG_BATTLEFIELD_LEAVE = 0x39001F,
+ CMSG_BATTLEFIELD_LIST = 0x39002A,
+ CMSG_BATTLEFIELD_PORT = 0x3A00C3,
+ CMSG_BATTLEMASTER_HELLO = 0x390190,
+ CMSG_BATTLEMASTER_JOIN = 0x3A00BA,
+ CMSG_BATTLEMASTER_JOIN_ARENA = 0x3A00BB,
+ CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3A00C1,
+ CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3A00BD,
+ CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3A00BC,
+ CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3A00BE,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x3E0103,
+ CMSG_BATTLENET_REQUEST = 0x3E0124,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3E00FC,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3E0141,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3E00FB,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3E00F2,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3E0167,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3E00E9,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3E00EA,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3E013A,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3E0135,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x3E00FA,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x3E0122,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x290002,
- CMSG_BATTLE_PET_DELETE_PET = 0x34004F,
- CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x340050,
- CMSG_BATTLE_PET_MODIFY_NAME = 0x340052,
- CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x34004E,
- CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x34004D,
- CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x340057,
- CMSG_BATTLE_PET_SET_FLAGS = 0x34005A,
- CMSG_BATTLE_PET_SUMMON = 0x340053,
- CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x2F0091,
- CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x2F0090,
- CMSG_BEGIN_TRADE = 0x2F0001,
- CMSG_BINDER_ACTIVATE = 0x300045,
- CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3000CB,
- CMSG_BLACK_MARKET_OPEN = 0x3000C9,
- CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3000CA,
- CMSG_BONUS_ROLL = 0x2F025A,
- CMSG_BUG_REPORT = 0x3400B1,
- CMSG_BUSY_TRADE = 0x2F0002,
- CMSG_BUY_ACCOUNT_BANK_TAB = 0x300123,
- CMSG_BUY_BACK_ITEM = 0x300037,
- CMSG_BUY_ITEM = 0x300036,
- CMSG_CAGE_BATTLE_PET = 0x2F00A4,
- CMSG_CALENDAR_ADD_EVENT = 0x3400A9,
- CMSG_CALENDAR_COMMUNITY_INVITE = 0x34009D,
- CMSG_CALENDAR_COMPLAIN = 0x3400A5,
- CMSG_CALENDAR_COPY_EVENT = 0x3400A4,
- CMSG_CALENDAR_EVENT_SIGN_UP = 0x3400A7,
- CMSG_CALENDAR_GET = 0x34009B,
- CMSG_CALENDAR_GET_EVENT = 0x34009C,
- CMSG_CALENDAR_GET_NUM_PENDING = 0x3400A6,
- CMSG_CALENDAR_INVITE = 0x34009E,
- CMSG_CALENDAR_MODERATOR_STATUS = 0x3400A2,
- CMSG_CALENDAR_REMOVE_EVENT = 0x3400A3,
- CMSG_CALENDAR_REMOVE_INVITE = 0x34009F,
- CMSG_CALENDAR_RSVP = 0x3400A0,
- CMSG_CALENDAR_STATUS = 0x3400A1,
- CMSG_CALENDAR_UPDATE_EVENT = 0x3400AA,
- CMSG_CANCEL_AURA = 0x2F005A,
- CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x30007F,
- CMSG_CANCEL_CAST = 0x2F0178,
- CMSG_CANCEL_CHANNELLING = 0x2F0139,
- CMSG_CANCEL_GROWTH_AURA = 0x2F0141,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x2F00CD,
- CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x2F0059,
- CMSG_CANCEL_MOUNT_AURA = 0x2F0154,
- CMSG_CANCEL_QUEUED_SPELL = 0x2F002B,
- CMSG_CANCEL_TEMP_ENCHANTMENT = 0x30008A,
- CMSG_CANCEL_TRADE = 0x2F0006,
- CMSG_CAN_DUEL = 0x34008E,
- CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x340133,
- CMSG_CAST_SPELL = 0x2F0175,
+ CMSG_BATTLE_PET_DELETE_PET = 0x3E004F,
+ CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3E0050,
+ CMSG_BATTLE_PET_MODIFY_NAME = 0x3E0052,
+ CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3E004E,
+ CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3E004D,
+ CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x3E0057,
+ CMSG_BATTLE_PET_SET_FLAGS = 0x3E005A,
+ CMSG_BATTLE_PET_SUMMON = 0x3E0053,
+ CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x390091,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x390090,
+ CMSG_BEGIN_TRADE = 0x390001,
+ CMSG_BINDER_ACTIVATE = 0x3A0045,
+ CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3A00CB,
+ CMSG_BLACK_MARKET_OPEN = 0x3A00C9,
+ CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3A00CA,
+ CMSG_BONUS_ROLL = 0x39025B,
+ CMSG_BUG_REPORT = 0x3E00B1,
+ CMSG_BUSY_TRADE = 0x390002,
+ CMSG_BUY_ACCOUNT_BANK_TAB = 0x3A0123,
+ CMSG_BUY_BACK_ITEM = 0x3A0037,
+ CMSG_BUY_ITEM = 0x3A0036,
+ CMSG_CAGE_BATTLE_PET = 0x3900A4,
+ CMSG_CALENDAR_ADD_EVENT = 0x3E00A9,
+ CMSG_CALENDAR_COMMUNITY_INVITE = 0x3E009D,
+ CMSG_CALENDAR_COMPLAIN = 0x3E00A5,
+ CMSG_CALENDAR_COPY_EVENT = 0x3E00A4,
+ CMSG_CALENDAR_EVENT_SIGN_UP = 0x3E00A7,
+ CMSG_CALENDAR_GET = 0x3E009B,
+ CMSG_CALENDAR_GET_EVENT = 0x3E009C,
+ CMSG_CALENDAR_GET_NUM_PENDING = 0x3E00A6,
+ CMSG_CALENDAR_INVITE = 0x3E009E,
+ CMSG_CALENDAR_MODERATOR_STATUS = 0x3E00A2,
+ CMSG_CALENDAR_REMOVE_EVENT = 0x3E00A3,
+ CMSG_CALENDAR_REMOVE_INVITE = 0x3E009F,
+ CMSG_CALENDAR_RSVP = 0x3E00A0,
+ CMSG_CALENDAR_STATUS = 0x3E00A1,
+ CMSG_CALENDAR_UPDATE_EVENT = 0x3E00AA,
+ CMSG_CANCEL_AURA = 0x39005A,
+ CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x3A007F,
+ CMSG_CANCEL_CAST = 0x390178,
+ CMSG_CANCEL_CHANNELLING = 0x390139,
+ CMSG_CANCEL_GROWTH_AURA = 0x390141,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3900CD,
+ CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x390059,
+ CMSG_CANCEL_MOUNT_AURA = 0x390154,
+ CMSG_CANCEL_QUEUED_SPELL = 0x39002B,
+ CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3A008A,
+ CMSG_CANCEL_TRADE = 0x390006,
+ CMSG_CAN_DUEL = 0x3E008E,
+ CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3E0134,
+ CMSG_CAST_SPELL = 0x390175,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x2C0002,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x2F0212,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x2F0213,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x2F01F3,
- CMSG_CHANGE_REALM_TICKET = 0x340128,
- CMSG_CHANGE_SUB_GROUP = 0x340078,
- CMSG_CHARACTER_CHECK_UPGRADE = 0x3400F4,
- CMSG_CHARACTER_RENAME_REQUEST = 0x3400EF,
- CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3400F2,
- CMSG_CHARACTER_UPGRADE_START = 0x3400F3,
- CMSG_CHAR_CUSTOMIZE = 0x3400B8,
- CMSG_CHAR_DELETE = 0x3400CA,
- CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3400BE,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x390212,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x390213,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3901F3,
+ CMSG_CHANGE_REALM_TICKET = 0x3E0129,
+ CMSG_CHANGE_SUB_GROUP = 0x3E0078,
+ CMSG_CHARACTER_CHECK_UPGRADE = 0x3E00F5,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x3E00F0,
+ CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3E00F3,
+ CMSG_CHARACTER_UPGRADE_START = 0x3E00F4,
+ CMSG_CHAR_CUSTOMIZE = 0x3E00B9,
+ CMSG_CHAR_DELETE = 0x3E00CB,
+ CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3E00BF,
CMSG_CHAT_ADDON_MESSAGE = 0x2B002A,
CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2B002B,
CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x2B0032,
@@ -231,192 +230,195 @@ enum OpcodeClient : uint32
CMSG_CHAT_SEND_CAUTIONARY_CHANNEL_MESSAGE = 0x2B000B,
CMSG_CHAT_SEND_CAUTIONARY_CHAT_MESSAGE = 0x2B0009,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x2B0006,
- CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x340071,
- CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x2F010F,
- CMSG_CHOICE_RESPONSE = 0x2F017D,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x2F0288,
- CMSG_CLAIM_WEEKLY_REWARD = 0x2F0265,
- CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x2F02C2,
- CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x2F00C4,
- CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x2F02C4,
- CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x2F02C1,
- CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x2F02C0,
- CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x2F02C5,
- CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x2F00C3,
+ CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3E0071,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x39010F,
+ CMSG_CHOICE_RESPONSE = 0x39017D,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x390288,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x390265,
+ CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3902C2,
+ CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3900C4,
+ CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3902C4,
+ CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3902C1,
+ CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3902C0,
+ CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3902C5,
+ CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3900C3,
CMSG_CLEAR_NEW_APPEARANCE = 0x290005,
- CMSG_CLEAR_RAID_MARKER = 0x2F0052,
- CMSG_CLEAR_TRADE_ITEM = 0x2F0008,
- CMSG_CLIENT_PORT_GRAVEYARD = 0x3000C5,
- CMSG_CLOSE_INTERACTION = 0x300025,
- CMSG_CLOSE_QUEST_CHOICE = 0x2F017E,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x2F0290,
- CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x2F02C6,
- CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x34014B,
- CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x340149,
- CMSG_CLUB_FINDER_POST = 0x340146,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x34014D,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x340147,
- CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x340148,
- CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x34014C,
- CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x34014E,
- CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x34014A,
- CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x340169,
- CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x340125,
- CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x34005D,
- CMSG_COMMENTATOR_ENABLE = 0x34001C,
- CMSG_COMMENTATOR_ENTER_INSTANCE = 0x340020,
- CMSG_COMMENTATOR_EXIT_INSTANCE = 0x340021,
- CMSG_COMMENTATOR_GET_MAP_INFO = 0x34001D,
- CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x34001F,
- CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x34001E,
- CMSG_COMMENTATOR_SPECTATE = 0x340167,
- CMSG_COMMENTATOR_START_WARGAME = 0x34001B,
- CMSG_COMMERCE_TOKEN_GET_COUNT = 0x340113,
- CMSG_COMMERCE_TOKEN_GET_LOG = 0x34011D,
- CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x340114,
- CMSG_COMPLAINT = 0x340098,
- CMSG_COMPLETE_CINEMATIC = 0x3000E3,
- CMSG_COMPLETE_MOVIE = 0x300075,
- CMSG_CONFIRM_ARTIFACT_RESPEC = 0x2F0057,
- CMSG_CONFIRM_PROFESSION_RESPEC = 0x2F00C7,
- CMSG_CONFIRM_RESPEC_WIPE = 0x2F00C6,
- CMSG_CONNECT_TO_FAILED = 0x340000,
- CMSG_CONSUMABLE_TOKEN_BUY = 0x340118,
- CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x340119,
- CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x340117,
- CMSG_CONSUMABLE_TOKEN_REDEEM = 0x34011B,
- CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x34011C,
- CMSG_CONTENT_TRACKING_START_TRACKING = 0x2F02D6,
- CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x2F02D7,
- CMSG_CONTRIBUTION_CONTRIBUTE = 0x3000FB,
- CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3000FC,
- CMSG_CONVERSATION_CINEMATIC_READY = 0x3000E5,
- CMSG_CONVERSATION_LINE_STARTED = 0x3000E4,
- CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x2F02E6,
- CMSG_CONVERT_RAID = 0x34007A,
- CMSG_CONVERT_TIMERUNNING_CHARACTER = 0x34018C,
- CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x30010F,
- CMSG_CRAFTING_ORDER_CANCEL = 0x30011B,
- CMSG_CRAFTING_ORDER_CLAIM = 0x300118,
- CMSG_CRAFTING_ORDER_CREATE = 0x300114,
- CMSG_CRAFTING_ORDER_FULFILL = 0x30011A,
- CMSG_CRAFTING_ORDER_GET_NPC_REWARD_INFO = 0x300117,
- CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x300116,
- CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x300115,
- CMSG_CRAFTING_ORDER_REJECT = 0x30011C,
- CMSG_CRAFTING_ORDER_RELEASE = 0x300119,
- CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x30011D,
- CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x30011E,
- CMSG_CREATE_CHARACTER = 0x340070,
- CMSG_CREATE_SHIPMENT = 0x2F01DC,
- CMSG_DB_QUERY_BULK = 0x340010,
- CMSG_DECLINE_GUILD_INVITES = 0x3000B7,
- CMSG_DECLINE_PETITION = 0x3000D2,
- CMSG_DELETE_EQUIPMENT_SET = 0x3000A3,
- CMSG_DELVE_TELEPORT_OUT = 0x30012B,
- CMSG_DEL_FRIEND = 0x340100,
- CMSG_DEL_IGNORE = 0x340104,
- CMSG_DESTROY_ITEM = 0x2F016B,
- CMSG_DF_BOOT_PLAYER_VOTE = 0x340044,
- CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x340036,
- CMSG_DF_GET_JOIN_STATUS = 0x340042,
- CMSG_DF_GET_SYSTEM_INFO = 0x340041,
- CMSG_DF_JOIN = 0x340037,
- CMSG_DF_LEAVE = 0x340040,
- CMSG_DF_PROPOSAL_RESPONSE = 0x340035,
- CMSG_DF_READY_CHECK_RESPONSE = 0x340048,
- CMSG_DF_SET_ROLES = 0x340043,
- CMSG_DF_TELEPORT = 0x340045,
- CMSG_DISCARDED_TIME_SYNC_ACKS = 0x32005E,
- CMSG_DISMISS_CRITTER = 0x300091,
- CMSG_DO_COUNTDOWN = 0x340145,
- CMSG_DO_MASTER_LOOT_ROLL = 0x2F00CC,
- CMSG_DO_READY_CHECK = 0x34005E,
- CMSG_DUEL_RESPONSE = 0x30007A,
- CMSG_EJECT_PASSENGER = 0x2F0104,
- CMSG_EMOTE = 0x3000DF,
- CMSG_ENABLE_NAGLE = 0x350007,
- CMSG_ENABLE_TAXI_NODE = 0x30003C,
- CMSG_ENGINE_SURVEY = 0x340112,
- CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x350003,
- CMSG_ENUM_CHARACTERS = 0x340014,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x34010C,
- CMSG_FAR_SIGHT = 0x300080,
- CMSG_GAME_EVENT_DEBUG_DISABLE = 0x2F005E,
- CMSG_GAME_EVENT_DEBUG_ENABLE = 0x2F005D,
- CMSG_GAME_OBJ_REPORT_USE = 0x300087,
- CMSG_GAME_OBJ_USE = 0x300086,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x2F01D7,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x2F01BD,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x2F01AA,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x2F020E,
- CMSG_GARRISON_COMPLETE_MISSION = 0x2F0200,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x2F01D8,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x2F01C0,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x2F01CF,
- CMSG_GARRISON_GET_MAP_DATA = 0x2F01D6,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x2F0230,
- CMSG_GARRISON_LEARN_TALENT = 0x2F01CB,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x2F0202,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x2F01A6,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x2F01C2,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x2F01F7,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x2F01BE,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x2F01BF,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x2F01A5,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x2F01DA,
- CMSG_GARRISON_RESEARCH_TALENT = 0x2F01C3,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x2F01A7,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x2F01BB,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x2F01B3,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x2F01C1,
- CMSG_GARRISON_SOCKET_TALENT = 0x2F029D,
- CMSG_GARRISON_START_MISSION = 0x2F01FF,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x2F01AB,
- CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x340013,
- CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3400E3,
- CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x340161,
- CMSG_GET_GARRISON_INFO = 0x2F01A0,
- CMSG_GET_ITEM_PURCHASE_DATA = 0x3000CD,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x2F01DB,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x2F016F,
- CMSG_GET_PVP_OPTIONS_ENABLED = 0x34001A,
- CMSG_GET_RAF_ACCOUNT_INFO = 0x34014F,
- CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x340192,
- CMSG_GET_REMAINING_GAME_TIME = 0x34011A,
- CMSG_GET_TROPHY_LIST = 0x2F01F0,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x34010E,
- CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x34011F,
- CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x340120,
- CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3400BC,
- CMSG_GM_TICKET_GET_CASE_STATUS = 0x3400BB,
- CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3400BA,
- CMSG_GOSSIP_REFRESH_OPTIONS = 0x30010E,
- CMSG_GOSSIP_SELECT_OPTION = 0x300026,
+ CMSG_CLEAR_RAID_MARKER = 0x390052,
+ CMSG_CLEAR_TRADE_ITEM = 0x390008,
+ CMSG_CLIENT_PORT_GRAVEYARD = 0x3A00C5,
+ CMSG_CLOSE_INTERACTION = 0x3A0025,
+ CMSG_CLOSE_QUEST_CHOICE = 0x39017E,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x390290,
+ CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3902C6,
+ CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x3E014C,
+ CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3E014A,
+ CMSG_CLUB_FINDER_POST = 0x3E0147,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x3E014E,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3E0148,
+ CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3E0149,
+ CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x3E014D,
+ CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x3E014F,
+ CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x3E014B,
+ CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x3E016A,
+ CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x3E0126,
+ CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3E005D,
+ CMSG_COMMENTATOR_ENABLE = 0x3E001C,
+ CMSG_COMMENTATOR_ENTER_INSTANCE = 0x3E0020,
+ CMSG_COMMENTATOR_EXIT_INSTANCE = 0x3E0021,
+ CMSG_COMMENTATOR_GET_MAP_INFO = 0x3E001D,
+ CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x3E001F,
+ CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x3E001E,
+ CMSG_COMMENTATOR_SPECTATE = 0x3E0168,
+ CMSG_COMMENTATOR_START_WARGAME = 0x3E001B,
+ CMSG_COMMERCE_TOKEN_GET_COUNT = 0x3E0114,
+ CMSG_COMMERCE_TOKEN_GET_LOG = 0x3E011E,
+ CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x3E0115,
+ CMSG_COMPLAINT = 0x3E0098,
+ CMSG_COMPLETE_CINEMATIC = 0x3A00E3,
+ CMSG_COMPLETE_MOVIE = 0x3A0075,
+ CMSG_CONFIRM_ARTIFACT_RESPEC = 0x390057,
+ CMSG_CONFIRM_PROFESSION_RESPEC = 0x3900C7,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3900C6,
+ CMSG_CONNECT_TO_FAILED = 0x3E0000,
+ CMSG_CONSUMABLE_TOKEN_BUY = 0x3E0119,
+ CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x3E011A,
+ CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x3E0118,
+ CMSG_CONSUMABLE_TOKEN_REDEEM = 0x3E011C,
+ CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x3E011D,
+ CMSG_CONTENT_TRACKING_START_TRACKING = 0x3902D5,
+ CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3902D6,
+ CMSG_CONTRIBUTION_CONTRIBUTE = 0x3A00FB,
+ CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3A00FC,
+ CMSG_CONVERSATION_CINEMATIC_READY = 0x3A00E5,
+ CMSG_CONVERSATION_LINE_STARTED = 0x3A00E4,
+ CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3902E5,
+ CMSG_CONVERT_RAID = 0x3E007A,
+ CMSG_CONVERT_TIMERUNNING_CHARACTER = 0x3E018D,
+ CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3A010F,
+ CMSG_CRAFTING_ORDER_CANCEL = 0x3A011B,
+ CMSG_CRAFTING_ORDER_CLAIM = 0x3A0118,
+ CMSG_CRAFTING_ORDER_CREATE = 0x3A0114,
+ CMSG_CRAFTING_ORDER_FULFILL = 0x3A011A,
+ CMSG_CRAFTING_ORDER_GET_NPC_REWARD_INFO = 0x3A0117,
+ CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3A0116,
+ CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3A0115,
+ CMSG_CRAFTING_ORDER_REJECT = 0x3A011C,
+ CMSG_CRAFTING_ORDER_RELEASE = 0x3A0119,
+ CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x3A011D,
+ CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x3A011E,
+ CMSG_CREATE_CHARACTER = 0x3E0070,
+ CMSG_CREATE_SHIPMENT = 0x3901DC,
+ CMSG_DB_QUERY_BULK = 0x3E0010,
+ CMSG_DECLINE_GUILD_INVITES = 0x3A00B7,
+ CMSG_DECLINE_NEIGHBORHOOD_INVITES = 0x3A012F,
+ CMSG_DECLINE_PETITION = 0x3A00D2,
+ CMSG_DELETE_EQUIPMENT_SET = 0x3A00A3,
+ CMSG_DELVE_TELEPORT_OUT = 0x3A012B,
+ CMSG_DEL_FRIEND = 0x3E0101,
+ CMSG_DEL_IGNORE = 0x3E0105,
+ CMSG_DESTROY_ITEM = 0x39016B,
+ CMSG_DF_BOOT_PLAYER_VOTE = 0x3E0044,
+ CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3E0036,
+ CMSG_DF_GET_JOIN_STATUS = 0x3E0042,
+ CMSG_DF_GET_SYSTEM_INFO = 0x3E0041,
+ CMSG_DF_JOIN = 0x3E0037,
+ CMSG_DF_LEAVE = 0x3E0040,
+ CMSG_DF_PROPOSAL_RESPONSE = 0x3E0035,
+ CMSG_DF_READY_CHECK_RESPONSE = 0x3E0048,
+ CMSG_DF_SET_ROLES = 0x3E0043,
+ CMSG_DF_TELEPORT = 0x3E0045,
+ CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3C005E,
+ CMSG_DISMISS_CRITTER = 0x3A0091,
+ CMSG_DO_COUNTDOWN = 0x3E0146,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x3900CC,
+ CMSG_DO_READY_CHECK = 0x3E005E,
+ CMSG_DUEL_RESPONSE = 0x3A007A,
+ CMSG_EJECT_PASSENGER = 0x390104,
+ CMSG_EMOTE = 0x3A00DF,
+ CMSG_ENABLE_NAGLE = 0x3F0009,
+ CMSG_ENABLE_TAXI_NODE = 0x3A003C,
+ CMSG_ENCOUNTER_JOURNAL_START_ARATHI_RPE = 0x3902FE,
+ CMSG_ENGINE_SURVEY = 0x3E0113,
+ CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3F0005,
+ CMSG_ENUM_CHARACTERS = 0x3E0014,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x3E010D,
+ CMSG_FAR_SIGHT = 0x3A0080,
+ CMSG_GAME_EVENT_DEBUG_DISABLE = 0x39005E,
+ CMSG_GAME_EVENT_DEBUG_ENABLE = 0x39005D,
+ CMSG_GAME_OBJ_REPORT_USE = 0x3A0087,
+ CMSG_GAME_OBJ_USE = 0x3A0086,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3901D7,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3901BD,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3901AA,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x39020E,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x390200,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3901D8,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x3901C0,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3901CF,
+ CMSG_GARRISON_GET_MAP_DATA = 0x3901D6,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x390230,
+ CMSG_GARRISON_LEARN_TALENT = 0x3901CB,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x390202,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x3901A6,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3901C2,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3901F7,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3901BE,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x3901BF,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x3901A5,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3901DA,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x3901C3,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3901A7,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3901BB,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3901B3,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3901C1,
+ CMSG_GARRISON_SOCKET_TALENT = 0x39029D,
+ CMSG_GARRISON_START_MISSION = 0x3901FF,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x3901AB,
+ CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x3E0013,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3E00E4,
+ CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3E0162,
+ CMSG_GET_GARRISON_INFO = 0x3901A0,
+ CMSG_GET_ITEM_PURCHASE_DATA = 0x3A00CD,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3901DB,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x39016F,
+ CMSG_GET_PVP_OPTIONS_ENABLED = 0x3E001A,
+ CMSG_GET_RAF_ACCOUNT_INFO = 0x3E0150,
+ CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x3E0193,
+ CMSG_GET_REMAINING_GAME_TIME = 0x3E011B,
+ CMSG_GET_TROPHY_LIST = 0x3901F0,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x3E010F,
+ CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x3E0120,
+ CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x3E0121,
+ CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3E00BD,
+ CMSG_GM_TICKET_GET_CASE_STATUS = 0x3E00BC,
+ CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3E00BB,
+ CMSG_GOSSIP_REFRESH_OPTIONS = 0x3A010E,
+ CMSG_GOSSIP_SELECT_OPTION = 0x3A0026,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x2D0020,
CMSG_GUILD_ADD_RANK = 0x2D0005,
CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x2D0002,
- CMSG_GUILD_BANK_ACTIVATE = 0x300047,
- CMSG_GUILD_BANK_BUY_TAB = 0x300055,
- CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x300057,
+ CMSG_GUILD_BANK_ACTIVATE = 0x3A0047,
+ CMSG_GUILD_BANK_BUY_TAB = 0x3A0055,
+ CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x3A0057,
CMSG_GUILD_BANK_LOG_QUERY = 0x2D0019,
- CMSG_GUILD_BANK_QUERY_TAB = 0x300054,
+ CMSG_GUILD_BANK_QUERY_TAB = 0x3A0054,
CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x2D001A,
CMSG_GUILD_BANK_SET_TAB_TEXT = 0x2D001D,
CMSG_GUILD_BANK_TEXT_QUERY = 0x2D001E,
- CMSG_GUILD_BANK_UPDATE_TAB = 0x300056,
- CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x300058,
+ CMSG_GUILD_BANK_UPDATE_TAB = 0x3A0056,
+ CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x3A0058,
CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x2D0017,
CMSG_GUILD_CHANGE_NAME_REQUEST = 0x2D0018,
- CMSG_GUILD_DECLINE_INVITATION = 0x34002A,
+ CMSG_GUILD_DECLINE_INVITATION = 0x3E002A,
CMSG_GUILD_DELETE = 0x2D0009,
CMSG_GUILD_DELETE_RANK = 0x2D0006,
CMSG_GUILD_DEMOTE_MEMBER = 0x2D0001,
CMSG_GUILD_EVENT_LOG_QUERY = 0x2D001C,
CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x2D0012,
+ CMSG_GUILD_GET_OTHERS_OWNED_HOUSES = 0x2D0026,
CMSG_GUILD_GET_RANKS = 0x2D000E,
CMSG_GUILD_GET_ROSTER = 0x2D0014,
- CMSG_GUILD_INVITE_BY_NAME = 0x340034,
+ CMSG_GUILD_INVITE_BY_NAME = 0x3E0034,
CMSG_GUILD_LEAVE = 0x2D0003,
CMSG_GUILD_NEWS_UPDATE_STICKY = 0x2D000F,
CMSG_GUILD_OFFICER_REMOVE_MEMBER = 0x2D0004,
@@ -433,1802 +435,1894 @@ enum OpcodeClient : uint32
CMSG_GUILD_REQUEST_RENAME_STATUS = 0x2D0021,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x2D0010,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x2D0011,
- CMSG_GUILD_SET_GUILD_MASTER = 0x3400F6,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x3E00F7,
CMSG_GUILD_SET_MEMBER_NOTE = 0x2D0013,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x2D0008,
CMSG_GUILD_SHIFT_RANK = 0x2D0007,
CMSG_GUILD_UPDATE_INFO_TEXT = 0x2D0016,
CMSG_GUILD_UPDATE_MOTD_TEXT = 0x2D0015,
- CMSG_HEARTH_AND_RESURRECT = 0x30009F,
- CMSG_HIDE_QUEST_CHOICE = 0x2F017F,
- CMSG_HOTFIX_REQUEST = 0x340011,
- CMSG_IGNORE_TRADE = 0x2F0003,
- CMSG_INITIATE_ROLE_POLL = 0x340006,
- CMSG_INITIATE_TRADE = 0x2F0000,
- CMSG_INSPECT = 0x3000C7,
- CMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x340061,
- CMSG_INSTANCE_LOCK_RESPONSE = 0x3000A4,
- CMSG_ISLAND_QUEUE = 0x2F0261,
- CMSG_ITEM_PURCHASE_REFUND = 0x3000CE,
- CMSG_ITEM_TEXT_QUERY = 0x2F020F,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x2F008E,
- CMSG_JOIN_RATED_BATTLEGROUND = 0x2F0025,
- CMSG_KEEP_ALIVE = 0x3400AB,
- CMSG_KEYBOUND_OVERRIDE = 0x2F00E2,
- CMSG_LATENCY_REPORT = 0x35000D,
- CMSG_LEARN_PVP_TALENTS = 0x3000FA,
- CMSG_LEARN_TALENTS = 0x3000F8,
- CMSG_LEAVE_GROUP = 0x340075,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x2F008F,
- CMSG_LFG_LIST_APPLY_TO_GROUP = 0x34003B,
- CMSG_LFG_LIST_CANCEL_APPLICATION = 0x34003C,
- CMSG_LFG_LIST_DECLINE_APPLICANT = 0x34003D,
- CMSG_LFG_LIST_GET_STATUS = 0x340039,
- CMSG_LFG_LIST_INVITE_APPLICANT = 0x34003E,
- CMSG_LFG_LIST_INVITE_RESPONSE = 0x34003F,
- CMSG_LFG_LIST_JOIN = 0x2F0255,
- CMSG_LFG_LIST_LEAVE = 0x340038,
- CMSG_LFG_LIST_SEARCH = 0x34003A,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x2F0256,
- CMSG_LIST_INVENTORY = 0x300033,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3400E6,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x3400E5,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3400E4,
- CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3400E7,
- CMSG_LOADING_SCREEN_NOTIFY = 0x340024,
- CMSG_LOAD_SELECTED_TROPHY = 0x2F01F1,
- CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x340174,
- CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x34016B,
- CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x34017D,
- CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x340172,
- CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x34016E,
- CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x34016A,
- CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x34016D,
- CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x340173,
- CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x34016C,
- CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x34016F,
- CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x340170,
- CMSG_LOGOUT_CANCEL = 0x300070,
- CMSG_LOGOUT_INSTANT = 0x300071,
- CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x300122,
- CMSG_LOGOUT_REQUEST = 0x30006F,
- CMSG_LOG_DISCONNECT = 0x350005,
- CMSG_LOG_STREAMING_ERROR = 0x350009,
- CMSG_LOOT_ITEM = 0x2F00CA,
- CMSG_LOOT_MONEY = 0x2F00C9,
- CMSG_LOOT_RELEASE = 0x2F00CE,
- CMSG_LOOT_ROLL = 0x2F00CF,
- CMSG_LOOT_UNIT = 0x2F00C8,
- CMSG_LOW_LEVEL_RAID1 = 0x3400CE,
- CMSG_LOW_LEVEL_RAID2 = 0x3000AB,
- CMSG_MAIL_CREATE_TEXT_ITEM = 0x3000D9,
- CMSG_MAIL_DELETE = 0x2F00E4,
- CMSG_MAIL_GET_LIST = 0x3000D4,
- CMSG_MAIL_MARK_AS_READ = 0x3000D8,
- CMSG_MAIL_RETURN_TO_SENDER = 0x340081,
- CMSG_MAIL_TAKE_ITEM = 0x3000D6,
- CMSG_MAIL_TAKE_MONEY = 0x3000D5,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x2F00E5,
- CMSG_MASTER_LOOT_ITEM = 0x2F00CB,
- CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x300052,
- CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x30004F,
- CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x30004D,
- CMSG_MINIMAP_PING = 0x340077,
- CMSG_MISSILE_TRAJECTORY_COLLISION = 0x2F0036,
+ CMSG_HEARTH_AND_RESURRECT = 0x3A009F,
+ CMSG_HIDE_QUEST_CHOICE = 0x39017F,
+ CMSG_HOTFIX_REQUEST = 0x3E0011,
+ CMSG_HOUSE_EXTERIOR_COMMIT_POSITION = 0x2E0001,
+ CMSG_HOUSE_INTERIOR_LEAVE_HOUSE = 0x2F0001,
+ CMSG_HOUSING_DECOR_CATALOG_CREATE_SEARCHER = 0x30000E,
+ CMSG_HOUSING_DECOR_CATALOG_DESTROY_ALL_ENTRY_COPIES = 0x30000A,
+ CMSG_HOUSING_DECOR_CATALOG_DESTROY_ENTRY = 0x300009,
+ CMSG_HOUSING_DECOR_COMMIT_DYES_FOR_SELECTED_DECOR = 0x300006,
+ CMSG_HOUSING_DECOR_MOVE_DECOR = 0x300002,
+ CMSG_HOUSING_DECOR_PLACE_NEW_DECOR = 0x300001,
+ CMSG_HOUSING_DECOR_REMOVE_PLACED_DECOR_ENTRY = 0x300003,
+ CMSG_HOUSING_DECOR_SELECT_DECOR = 0x300004,
+ CMSG_HOUSING_DECOR_SET_EDITOR_MODE_ACTIVE = 0x300000,
+ CMSG_HOUSING_DECOR_START_PLACING_NEW_DECOR = 0x300010,
+ CMSG_HOUSING_FIXTURE_REMOVE_FIXTURE_FROM_SELECTED_POINT = 0x310007,
+ CMSG_HOUSING_FIXTURE_SELECT_CORE_FIXTURE_OPTION = 0x310005,
+ CMSG_HOUSING_FIXTURE_SELECT_FIXTURE_OPTION = 0x310006,
+ CMSG_HOUSING_FIXTURE_SET_EDITOR_MODE_ACTIVE = 0x310000,
+ CMSG_HOUSING_KIOSK_REQUEST_HOUSING_RESET = 0x350008,
+ CMSG_HOUSING_REQUEST_CURRENT_HOUSE_INFO = 0x350006,
+ CMSG_HOUSING_ROOM_APPLY_THEME = 0x320005,
+ CMSG_HOUSING_ROOM_APPLY_WALLPAPER = 0x320006,
+ CMSG_HOUSING_ROOM_MOVE_DRAGGED_ROOM = 0x320004,
+ CMSG_HOUSING_ROOM_PLACE_ROOM = 0x320001,
+ CMSG_HOUSING_ROOM_REMOVE_ROOM = 0x320002,
+ CMSG_HOUSING_ROOM_ROTATE_ROOM = 0x320003,
+ CMSG_HOUSING_ROOM_SET_EDITOR_MODE_ACTIVE = 0x320000,
+ CMSG_HOUSING_ROOM_SET_ROOM_COMPONENT_CEILING_TYPE = 0x320008,
+ CMSG_HOUSING_ROOM_SET_ROOM_COMPONENT_DOOR_TYPE = 0x320007,
+ CMSG_HOUSING_SERVICES_ACCEPT_NEIGHBORHOOD_OWNERSHIP = 0x33001C,
+ CMSG_HOUSING_SERVICES_CREATE_GUILD_NEIGHBORHOOD = 0x330001,
+ CMSG_HOUSING_SERVICES_DECLINE_NEIGHBORHOOD_OWNERSHIP = 0x33001D,
+ CMSG_HOUSING_SERVICES_ENTER_HOUSE = 0x330017,
+ CMSG_HOUSING_SERVICES_GET_OTHERS_BNET_ACCOUNT_OWNED_HOUSES = 0x33000F,
+ CMSG_HOUSING_SERVICES_GET_OTHERS_PLAYER_OWNED_HOUSES = 0x33000E,
+ CMSG_HOUSING_SERVICES_GET_PLAYER_OWNED_HOUSES = 0x330011,
+ CMSG_HOUSING_SERVICES_HOUSE_FINDER_DECLINE_NEIGHBORHOOD_INVITATION = 0x330024,
+ CMSG_HOUSING_SERVICES_HOUSE_FINDER_REQUEST_NEIGHBORHOODS = 0x330020,
+ CMSG_HOUSING_SERVICES_HOUSE_FINDER_REQUEST_RESERVATION_AND_PORT = 0x330006,
+ CMSG_HOUSING_SERVICES_RELINQUISH_HOUSE = 0x330009,
+ CMSG_HOUSING_SERVICES_REQUEST_HOUSE_FINDER_NEIGHBORHOOD_DATA = 0x330021,
+ CMSG_HOUSING_SERVICES_REQUEST_PLAYER_CHARACTER_LIST = 0x33001F,
+ CMSG_HOUSING_SERVICES_SAVE_HOUSE_SETTINGS = 0x33000A,
+ CMSG_HOUSING_SERVICES_SEARCH_BNET_FRIEND_NEIGHBORHOODS = 0x330022,
+ CMSG_HOUSING_SERVICES_START_TUTORIAL = 0x330018,
+ CMSG_IGNORE_TRADE = 0x390003,
+ CMSG_INITIATE_ROLE_POLL = 0x3E0006,
+ CMSG_INITIATE_TRADE = 0x390000,
+ CMSG_INSPECT = 0x3A00C7,
+ CMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x3E0061,
+ CMSG_INSTANCE_LOCK_RESPONSE = 0x3A00A4,
+ CMSG_INVITE_PLAYER_TO_NEIGHBORHOOD = 0x3E019B,
+ CMSG_ISLAND_QUEUE = 0x390261,
+ CMSG_ITEM_PURCHASE_REFUND = 0x3A00CE,
+ CMSG_ITEM_TEXT_QUERY = 0x39020F,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x39008E,
+ CMSG_JOIN_RATED_BATTLEGROUND = 0x390025,
+ CMSG_KEEP_ALIVE = 0x3E00AB,
+ CMSG_KEYBOUND_OVERRIDE = 0x3900E2,
+ CMSG_KIOSK_ENABLE_GOD_MODE = 0x390098,
+ CMSG_LATENCY_REPORT = 0x3F000F,
+ CMSG_LEARN_PVP_TALENTS = 0x3A00FA,
+ CMSG_LEARN_TALENTS = 0x3A00F8,
+ CMSG_LEAVE_GROUP = 0x3E0075,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x39008F,
+ CMSG_LFG_LIST_APPLY_TO_GROUP = 0x3E003B,
+ CMSG_LFG_LIST_CANCEL_APPLICATION = 0x3E003C,
+ CMSG_LFG_LIST_DECLINE_APPLICANT = 0x3E003D,
+ CMSG_LFG_LIST_GET_STATUS = 0x3E0039,
+ CMSG_LFG_LIST_INVITE_APPLICANT = 0x3E003E,
+ CMSG_LFG_LIST_INVITE_RESPONSE = 0x3E003F,
+ CMSG_LFG_LIST_JOIN = 0x390255,
+ CMSG_LFG_LIST_LEAVE = 0x3E0038,
+ CMSG_LFG_LIST_SEARCH = 0x3E003A,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x390256,
+ CMSG_LIST_INVENTORY = 0x3A0033,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3E00E7,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x3E00E6,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3E00E5,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3E00E8,
+ CMSG_LOADING_SCREEN_NOTIFY = 0x3E0024,
+ CMSG_LOAD_SELECTED_TROPHY = 0x3901F1,
+ CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x3E0175,
+ CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x3E016C,
+ CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x3E017E,
+ CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x3E0173,
+ CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x3E016F,
+ CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x3E016B,
+ CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x3E016E,
+ CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x3E0174,
+ CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x3E016D,
+ CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x3E0170,
+ CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x3E0171,
+ CMSG_LOGOUT_CANCEL = 0x3A0070,
+ CMSG_LOGOUT_INSTANT = 0x3A0071,
+ CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3A0122,
+ CMSG_LOGOUT_REQUEST = 0x3A006F,
+ CMSG_LOG_DISCONNECT = 0x3F0007,
+ CMSG_LOG_STREAMING_ERROR = 0x3F000B,
+ CMSG_LOOT_ITEM = 0x3900CA,
+ CMSG_LOOT_MONEY = 0x3900C9,
+ CMSG_LOOT_RELEASE = 0x3900CE,
+ CMSG_LOOT_ROLL = 0x3900CF,
+ CMSG_LOOT_UNIT = 0x3900C8,
+ CMSG_LOW_LEVEL_RAID1 = 0x3E00CF,
+ CMSG_LOW_LEVEL_RAID2 = 0x3A00AB,
+ CMSG_MAIL_CREATE_TEXT_ITEM = 0x3A00D9,
+ CMSG_MAIL_DELETE = 0x3900E4,
+ CMSG_MAIL_GET_LIST = 0x3A00D4,
+ CMSG_MAIL_MARK_AS_READ = 0x3A00D8,
+ CMSG_MAIL_RETURN_TO_SENDER = 0x3E0081,
+ CMSG_MAIL_TAKE_ITEM = 0x3A00D6,
+ CMSG_MAIL_TAKE_MONEY = 0x3A00D5,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3900E5,
+ CMSG_MASTER_LOOT_ITEM = 0x3900CB,
+ CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3A0052,
+ CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x3A004F,
+ CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x3A004D,
+ CMSG_MESSAGE_WHISPER = 0x3F0011,
+ CMSG_MINIMAP_PING = 0x3E0077,
+ CMSG_MISSILE_TRAJECTORY_COLLISION = 0x390036,
CMSG_MOUNT_CLEAR_FANFARE = 0x290003,
- CMSG_MOUNT_SET_FAVORITE = 0x34005C,
- CMSG_MOUNT_SPECIAL_ANIM = 0x2F0155,
- CMSG_MOVE_ADD_IMPULSE_ACK = 0x32006D,
- CMSG_MOVE_APPLY_INERTIA_ACK = 0x32006B,
- CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x320031,
- CMSG_MOVE_CHANGE_TRANSPORT = 0x32004C,
- CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x320051,
- CMSG_MOVE_COLLISION_DISABLE_ACK = 0x320056,
- CMSG_MOVE_COLLISION_ENABLE_ACK = 0x320057,
- CMSG_MOVE_DISMISS_VEHICLE = 0x320050,
- CMSG_MOVE_DOUBLE_JUMP = 0x320007,
- CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x32003A,
- CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK = 0x320083,
- CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x320040,
- CMSG_MOVE_FALL_LAND = 0x320017,
- CMSG_MOVE_FALL_RESET = 0x320035,
- CMSG_MOVE_FEATHER_FALL_ACK = 0x320038,
- CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x32004B,
- CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x32004A,
- CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x32004F,
- CMSG_MOVE_FORCE_ROOT_ACK = 0x32002A,
- CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x320028,
- CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x320027,
- CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x32003E,
- CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x320029,
- CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x32003F,
- CMSG_MOVE_FORCE_UNROOT_ACK = 0x32002B,
- CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x32003D,
- CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x320052,
- CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x320053,
- CMSG_MOVE_GUILD_BANK_ITEM = 0x30004C,
- CMSG_MOVE_HEARTBEAT = 0x32002C,
- CMSG_MOVE_HOVER_ACK = 0x32002F,
- CMSG_MOVE_INERTIA_DISABLE_ACK = 0x320054,
- CMSG_MOVE_INERTIA_ENABLE_ACK = 0x320055,
- CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x320063,
- CMSG_MOVE_JUMP = 0x320006,
- CMSG_MOVE_KNOCK_BACK_ACK = 0x32002E,
- CMSG_MOVE_REMOVE_INERTIA_ACK = 0x32006C,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x320033,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x320032,
- CMSG_MOVE_SET_ADV_FLY = 0x32006F,
- CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x320077,
- CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x320072,
- CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x320078,
- CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x320075,
- CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x320076,
- CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x32007F,
- CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x320074,
- CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x320073,
- CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x32007D,
- CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x320079,
- CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x32007A,
- CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x32007C,
- CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x32007B,
- CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x32006E,
- CMSG_MOVE_SET_CAN_DRIVE_ACK = 0x320070,
- CMSG_MOVE_SET_CAN_FLY_ACK = 0x320043,
- CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x320041,
- CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x320058,
- CMSG_MOVE_SET_FACING = 0x320025,
- CMSG_MOVE_SET_FACING_HEARTBEAT = 0x32007E,
- CMSG_MOVE_SET_FLY = 0x320045,
- CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x320042,
- CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x32005F,
- CMSG_MOVE_SET_PITCH = 0x320026,
- CMSG_MOVE_SET_RUN_MODE = 0x32000E,
- CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x320022,
- CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x320030,
- CMSG_MOVE_SET_WALK_MODE = 0x32000F,
- CMSG_MOVE_SPLINE_DONE = 0x320034,
- CMSG_MOVE_START_ASCEND = 0x320046,
- CMSG_MOVE_START_BACKWARD = 0x320001,
- CMSG_MOVE_START_DESCEND = 0x32004D,
- CMSG_MOVE_START_DRIVE_FORWARD = 0x320071,
- CMSG_MOVE_START_FORWARD = 0x320000,
- CMSG_MOVE_START_PITCH_DOWN = 0x32000C,
- CMSG_MOVE_START_PITCH_UP = 0x32000B,
- CMSG_MOVE_START_STRAFE_LEFT = 0x320003,
- CMSG_MOVE_START_STRAFE_RIGHT = 0x320004,
- CMSG_MOVE_START_SWIM = 0x320018,
- CMSG_MOVE_START_TURN_LEFT = 0x320008,
- CMSG_MOVE_START_TURN_RIGHT = 0x320009,
- CMSG_MOVE_STOP = 0x320002,
- CMSG_MOVE_STOP_ASCEND = 0x320047,
- CMSG_MOVE_STOP_PITCH = 0x32000D,
- CMSG_MOVE_STOP_STRAFE = 0x320005,
- CMSG_MOVE_STOP_SWIM = 0x320019,
- CMSG_MOVE_STOP_TURN = 0x32000A,
- CMSG_MOVE_TELEPORT_ACK = 0x320016,
- CMSG_MOVE_TIME_SKIPPED = 0x320037,
- CMSG_MOVE_UPDATE_FALL_SPEED = 0x320036,
- CMSG_MOVE_WATER_WALK_ACK = 0x320039,
+ CMSG_MOUNT_SET_FAVORITE = 0x3E005C,
+ CMSG_MOUNT_SPECIAL_ANIM = 0x390155,
+ CMSG_MOVE_ADD_IMPULSE_ACK = 0x3C006D,
+ CMSG_MOVE_APPLY_INERTIA_ACK = 0x3C006B,
+ CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3C0031,
+ CMSG_MOVE_CHANGE_TRANSPORT = 0x3C004C,
+ CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3C0051,
+ CMSG_MOVE_COLLISION_DISABLE_ACK = 0x3C0056,
+ CMSG_MOVE_COLLISION_ENABLE_ACK = 0x3C0057,
+ CMSG_MOVE_DISMISS_VEHICLE = 0x3C0050,
+ CMSG_MOVE_DOUBLE_JUMP = 0x3C0007,
+ CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3C003A,
+ CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK = 0x3C0083,
+ CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3C0040,
+ CMSG_MOVE_FALL_LAND = 0x3C0017,
+ CMSG_MOVE_FALL_RESET = 0x3C0035,
+ CMSG_MOVE_FEATHER_FALL_ACK = 0x3C0038,
+ CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3C004B,
+ CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3C004A,
+ CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3C004F,
+ CMSG_MOVE_FORCE_ROOT_ACK = 0x3C002A,
+ CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3C0028,
+ CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3C0027,
+ CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3C003E,
+ CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3C0029,
+ CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3C003F,
+ CMSG_MOVE_FORCE_UNROOT_ACK = 0x3C002B,
+ CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3C003D,
+ CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3C0052,
+ CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3C0053,
+ CMSG_MOVE_GUILD_BANK_ITEM = 0x3A004C,
+ CMSG_MOVE_HEARTBEAT = 0x3C002C,
+ CMSG_MOVE_HOVER_ACK = 0x3C002F,
+ CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3C0054,
+ CMSG_MOVE_INERTIA_ENABLE_ACK = 0x3C0055,
+ CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3C0063,
+ CMSG_MOVE_JUMP = 0x3C0006,
+ CMSG_MOVE_KNOCK_BACK_ACK = 0x3C002E,
+ CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3C006C,
+ CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3C0033,
+ CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3C0032,
+ CMSG_MOVE_SET_ADV_FLY = 0x3C006F,
+ CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x3C0077,
+ CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x3C0072,
+ CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x3C0078,
+ CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x3C0075,
+ CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x3C0076,
+ CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x3C007F,
+ CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x3C0074,
+ CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x3C0073,
+ CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x3C007D,
+ CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x3C0079,
+ CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x3C007A,
+ CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x3C007C,
+ CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x3C007B,
+ CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x3C006E,
+ CMSG_MOVE_SET_CAN_DRIVE_ACK = 0x3C0070,
+ CMSG_MOVE_SET_CAN_FLY_ACK = 0x3C0043,
+ CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3C0041,
+ CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3C0058,
+ CMSG_MOVE_SET_FACING = 0x3C0025,
+ CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3C007E,
+ CMSG_MOVE_SET_FLY = 0x3C0045,
+ CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3C0042,
+ CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3C005F,
+ CMSG_MOVE_SET_PITCH = 0x3C0026,
+ CMSG_MOVE_SET_RUN_MODE = 0x3C000E,
+ CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x3C0022,
+ CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3C0030,
+ CMSG_MOVE_SET_WALK_MODE = 0x3C000F,
+ CMSG_MOVE_SPLINE_DONE = 0x3C0034,
+ CMSG_MOVE_START_ASCEND = 0x3C0046,
+ CMSG_MOVE_START_BACKWARD = 0x3C0001,
+ CMSG_MOVE_START_DESCEND = 0x3C004D,
+ CMSG_MOVE_START_DRIVE_FORWARD = 0x3C0071,
+ CMSG_MOVE_START_FORWARD = 0x3C0000,
+ CMSG_MOVE_START_PITCH_DOWN = 0x3C000C,
+ CMSG_MOVE_START_PITCH_UP = 0x3C000B,
+ CMSG_MOVE_START_STRAFE_LEFT = 0x3C0003,
+ CMSG_MOVE_START_STRAFE_RIGHT = 0x3C0004,
+ CMSG_MOVE_START_SWIM = 0x3C0018,
+ CMSG_MOVE_START_TURN_LEFT = 0x3C0008,
+ CMSG_MOVE_START_TURN_RIGHT = 0x3C0009,
+ CMSG_MOVE_STOP = 0x3C0002,
+ CMSG_MOVE_STOP_ASCEND = 0x3C0047,
+ CMSG_MOVE_STOP_PITCH = 0x3C000D,
+ CMSG_MOVE_STOP_STRAFE = 0x3C0005,
+ CMSG_MOVE_STOP_SWIM = 0x3C0019,
+ CMSG_MOVE_STOP_TURN = 0x3C000A,
+ CMSG_MOVE_TELEPORT_ACK = 0x3C0016,
+ CMSG_MOVE_TIME_SKIPPED = 0x3C0037,
+ CMSG_MOVE_UPDATE_FALL_SPEED = 0x3C0036,
+ CMSG_MOVE_WATER_WALK_ACK = 0x3C0039,
CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x2C0001,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x2F0084,
- CMSG_NEXT_CINEMATIC_CAMERA = 0x3000E2,
- CMSG_OBJECT_UPDATE_FAILED = 0x2F002C,
- CMSG_OBJECT_UPDATE_RESCUED = 0x2F002D,
- CMSG_OFFER_PETITION = 0x2F0287,
- CMSG_OPENING_CINEMATIC = 0x3000E1,
- CMSG_OPEN_ITEM = 0x2F0210,
- CMSG_OPEN_MISSION_NPC = 0x2F01D1,
- CMSG_OPEN_SHIPMENT_NPC = 0x2F01D9,
- CMSG_OPEN_TRADESKILL_NPC = 0x2F01E4,
- CMSG_OPT_OUT_OF_LOOT = 0x30008E,
- CMSG_OVERRIDE_SCREEN_FLASH = 0x3000B8,
- CMSG_PARTY_INVITE = 0x340030,
- CMSG_PARTY_INVITE_RESPONSE = 0x340032,
- CMSG_PARTY_UNINVITE = 0x340073,
- CMSG_PERFORM_ITEM_INTERACTION = 0x2F00ED,
- CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x2F02AF,
- CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT = 0x2F02B2,
- CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x290012,
- CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x2F02B1,
- CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x2F02B3,
- CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x2F02B4,
- CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x2F02B0,
- CMSG_PETITION_BUY = 0x30005A,
- CMSG_PETITION_RENAME_GUILD = 0x3400F7,
- CMSG_PETITION_SHOW_LIST = 0x300059,
- CMSG_PETITION_SHOW_SIGNATURES = 0x30005B,
- CMSG_PET_ABANDON = 0x30001E,
- CMSG_PET_ABANDON_BY_NUMBER = 0x30001F,
- CMSG_PET_ACTION = 0x30001C,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0x2F0093,
- CMSG_PET_BATTLE_INPUT = 0x34006D,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x2F00E3,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x2F0092,
- CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x34006E,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x2F008C,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x2F008D,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x2F008A,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x2F0094,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x2F008B,
- CMSG_PET_CANCEL_AURA = 0x300020,
- CMSG_PET_CAST_SPELL = 0x2F0174,
- CMSG_PET_RENAME = 0x3400B0,
- CMSG_PET_SET_ACTION = 0x30001B,
- CMSG_PET_SPELL_AUTOCAST = 0x300021,
- CMSG_PET_STOP_ATTACK = 0x30001D,
- CMSG_PING = 0x350004,
- CMSG_PLAYER_LOGIN = 0x340016,
- CMSG_PUSH_QUEST_TO_PARTY = 0x300031,
- CMSG_PVP_LOG_DATA = 0x2F0028,
- CMSG_QUERY_BATTLE_PET_NAME = 0x2F0148,
- CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x34008C,
- CMSG_QUERY_CORPSE_TRANSPORT = 0x34008D,
- CMSG_QUERY_COUNTDOWN_TIMER = 0x2F0055,
- CMSG_QUERY_CREATURE = 0x2F0142,
- CMSG_QUERY_GAME_OBJECT = 0x2F0143,
- CMSG_QUERY_GARRISON_PET_NAME = 0x2F0149,
- CMSG_QUERY_GUILD_INFO = 0x3400B6,
- CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x300098,
- CMSG_QUERY_NEXT_MAIL_TIME = 0x3000D7,
- CMSG_QUERY_NPC_TEXT = 0x2F0144,
- CMSG_QUERY_PAGE_TEXT = 0x2F0146,
- CMSG_QUERY_PETITION = 0x2F014A,
- CMSG_QUERY_PET_NAME = 0x2F0147,
- CMSG_QUERY_PLAYER_NAMES = 0x35000E,
- CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x35000C,
- CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x35000B,
- CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x2F0021,
- CMSG_QUERY_QUEST_INFO = 0x2F0145,
- CMSG_QUERY_QUEST_ITEM_USABILITY = 0x2F0022,
- CMSG_QUERY_REALM_NAME = 0x3400B5,
- CMSG_QUERY_SCENARIO_POI = 0x340082,
- CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x2F02EB,
- CMSG_QUERY_TIME = 0x30006E,
- CMSG_QUERY_TREASURE_PICKER = 0x2F0233,
- CMSG_QUERY_WOW_LABS_AREA_INFO = 0x2F02EC,
- CMSG_QUEST_CONFIRM_ACCEPT = 0x300030,
- CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x30002A,
- CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x30002C,
- CMSG_QUEST_GIVER_CLOSE_QUEST = 0x3000E8,
- CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x30002B,
- CMSG_QUEST_GIVER_HELLO = 0x300028,
- CMSG_QUEST_GIVER_QUERY_QUEST = 0x300029,
- CMSG_QUEST_GIVER_REQUEST_REWARD = 0x30002D,
- CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x30002F,
- CMSG_QUEST_GIVER_STATUS_QUERY = 0x30002E,
- CMSG_QUEST_LOG_REMOVE_QUEST = 0x3000CC,
- CMSG_QUEST_POI_QUERY = 0x3400DD,
- CMSG_QUEST_PUSH_RESULT = 0x300032,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x2F0279,
- CMSG_QUEST_SESSION_REQUEST_START = 0x2F0278,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0x34015A,
- CMSG_QUEUED_MESSAGES_END = 0x350008,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x340131,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x340130,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x34015F,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x34012F,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x34012E,
- CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x30009C,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0x340150,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x340152,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x340151,
- CMSG_RANDOM_ROLL = 0x340080,
- CMSG_READY_CHECK_RESPONSE = 0x34005F,
- CMSG_READ_ITEM = 0x2F0211,
- CMSG_RECENT_ALLY_REQUEST_DATA = 0x340197,
- CMSG_RECENT_ALLY_SET_NOTE = 0x340198,
- CMSG_RECLAIM_CORPSE = 0x300073,
- CMSG_REMOVE_NEW_ITEM = 0x2F0237,
- CMSG_REMOVE_RAF_RECRUIT = 0x340153,
- CMSG_REORDER_CHARACTERS = 0x340015,
- CMSG_REPAIR_ITEM = 0x300084,
- CMSG_REPLACE_TROPHY = 0x2F01F2,
- CMSG_REPOP_REQUEST = 0x3000C4,
- CMSG_REPORT_PVP_PLAYER_AFK = 0x30008C,
- CMSG_REPORT_SERVER_LAG = 0x2F0271,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x2F0272,
- CMSG_REQUEST_ACCOUNT_DATA = 0x3400C2,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x2F0235,
- CMSG_REQUEST_BATTLEFIELD_STATUS = 0x340008,
- CMSG_REQUEST_CEMETERY_LIST = 0x2F0023,
- CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3400B7,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x2F0263,
- CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3000C8,
- CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x290019,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x2F029C,
- CMSG_REQUEST_GUILD_PARTY_STATE = 0x2F0054,
- CMSG_REQUEST_GUILD_REWARDS_LIST = 0x2F0053,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x2F0273,
- CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x2F0180,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x2F00B8,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x2F00B9,
- CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x2F02EA,
- CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x340023,
- CMSG_REQUEST_PARTY_MEMBER_STATS = 0x34007F,
- CMSG_REQUEST_PET_INFO = 0x300022,
- CMSG_REQUEST_PLAYED_TIME = 0x2F014D,
- CMSG_REQUEST_PVP_REWARDS = 0x2F0041,
- CMSG_REQUEST_RAID_INFO = 0x3400F8,
- CMSG_REQUEST_RATED_PVP_INFO = 0x34000F,
- CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x340195,
- CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x2F0236,
- CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x2F0042,
- CMSG_REQUEST_STABLED_PETS = 0x300023,
- CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x29001E,
- CMSG_REQUEST_SURVEY = 0x2F02FD,
- CMSG_REQUEST_VEHICLE_EXIT = 0x2F00FF,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x2F0101,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x2F0100,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x2F0102,
- CMSG_REQUEST_WEEKLY_REWARDS = 0x2F0266,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x2F0234,
- CMSG_RESET_CHALLENGE_MODE = 0x2F00B6,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x2F00B7,
- CMSG_RESET_INSTANCES = 0x340094,
- CMSG_RESURRECT_RESPONSE = 0x3400AF,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x2F01F4,
- CMSG_RIDE_VEHICLE_INTERACT = 0x2F0103,
- CMSG_RPE_RESET_CHARACTER = 0x340180,
- CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x34017A,
- CMSG_SAVE_CUF_PROFILES = 0x2F0037,
- CMSG_SAVE_EQUIPMENT_SET = 0x3000A2,
- CMSG_SAVE_GUILD_EMBLEM = 0x2F0185,
- CMSG_SAVE_PERSONAL_EMBLEM = 0x2F0186,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x2F00DF,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x2F00DE,
- CMSG_SCENE_TRIGGER_EVENT = 0x2F00E0,
- CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x2F02D9,
- CMSG_SELECT_WOW_LABS_AREA = 0x2F02ED,
- CMSG_SELF_RES = 0x3000CF,
- CMSG_SELL_ALL_JUNK_ITEMS = 0x300035,
- CMSG_SELL_ITEM = 0x300034,
- CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x340127,
- CMSG_SEND_CONTACT_LIST = 0x3400FE,
- CMSG_SEND_MAIL = 0x340026,
- CMSG_SEND_PING_UNIT = 0x2F02DB,
- CMSG_SEND_PING_WORLD_POINT = 0x2F02DC,
- CMSG_SEND_TEXT_EMOTE = 0x300019,
- CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3400C9,
- CMSG_SETUP_WARBAND_GROUPS = 0x34018E,
- CMSG_SET_ACTION_BAR_TOGGLES = 0x3000D0,
- CMSG_SET_ACTION_BUTTON = 0x340062,
- CMSG_SET_ACTIVE_MOVER = 0x320059,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x2F0193,
- CMSG_SET_ALLOW_RECENT_ALLIES_SEE_LOCATION = 0x2F02FE,
- CMSG_SET_ASSISTANT_LEADER = 0x34007B,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x2F0214,
- CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x2F0215,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x2F0216,
- CMSG_SET_CONTACT_NOTES = 0x340101,
- CMSG_SET_CURRENCY_FLAGS = 0x2F0015,
- CMSG_SET_DIFFICULTY_ID = 0x2F00E1,
- CMSG_SET_DUNGEON_DIFFICULTY = 0x3400AE,
- CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x2F013C,
- CMSG_SET_EVERYONE_IS_ASSISTANT = 0x340046,
- CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x340132,
- CMSG_SET_FACTION_AT_WAR = 0x300076,
- CMSG_SET_FACTION_INACTIVE = 0x300078,
- CMSG_SET_FACTION_NOT_AT_WAR = 0x300077,
- CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x2F0065,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x2F0218,
- CMSG_SET_LOOT_METHOD = 0x340074,
- CMSG_SET_LOOT_SPECIALIZATION = 0x3000DD,
- CMSG_SET_PARTY_ASSIGNMENT = 0x34007D,
- CMSG_SET_PARTY_LEADER = 0x340076,
- CMSG_SET_PET_FAVORITE = 0x2F0012,
- CMSG_SET_PET_SLOT = 0x2F0011,
- CMSG_SET_PET_SPECIALIZATION = 0x2F0013,
- CMSG_SET_PLAYER_DECLINED_NAMES = 0x3400B4,
- CMSG_SET_PREFERRED_CEMETERY = 0x2F0024,
- CMSG_SET_PVP = 0x2F018A,
- CMSG_SET_RAID_DIFFICULTY = 0x34010A,
- CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x340047,
- CMSG_SET_ROLE = 0x340005,
- CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3400B2,
- CMSG_SET_SELECTION = 0x3000C6,
- CMSG_SET_SHEATHED = 0x30001A,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x2F0217,
- CMSG_SET_TAXI_BENCHMARK_MODE = 0x30008B,
- CMSG_SET_TITLE = 0x2F0153,
- CMSG_SET_TRADE_CURRENCY = 0x2F000A,
- CMSG_SET_TRADE_GOLD = 0x2F0009,
- CMSG_SET_TRADE_ITEM = 0x2F0007,
- CMSG_SET_USING_PARTY_GARRISON = 0x2F01D3,
- CMSG_SET_WAR_MODE = 0x2F018B,
- CMSG_SET_WATCHED_FACTION = 0x300079,
- CMSG_SHOW_TRADE_SKILL = 0x3400F0,
- CMSG_SIGN_PETITION = 0x3000D1,
- CMSG_SILENCE_PARTY_TALKER = 0x34007E,
- CMSG_SOCIAL_CONTRACT_REQUEST = 0x340175,
- CMSG_SOCKET_GEMS = 0x300083,
- CMSG_SORT_ACCOUNT_BANK_BAGS = 0x2F02DF,
- CMSG_SORT_BAGS = 0x2F0219,
- CMSG_SORT_BANK_BAGS = 0x2F021A,
- CMSG_SPAWN_TRACKING_UPDATE = 0x2F0168,
- CMSG_SPECTATE_CHANGE = 0x2F02D2,
- CMSG_SPELL_CLICK = 0x300027,
- CMSG_SPELL_EMPOWER_RELEASE = 0x2F013A,
- CMSG_SPELL_EMPOWER_RESTART = 0x2F013B,
- CMSG_SPIRIT_HEALER_ACTIVATE = 0x300042,
- CMSG_SPLIT_GUILD_BANK_ITEM = 0x300053,
- CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x300050,
- CMSG_SPLIT_ITEM = 0x310008,
- CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x30004E,
- CMSG_STAND_STATE_CHANGE = 0x2F0035,
- CMSG_START_CHALLENGE_MODE = 0x3000E9,
- CMSG_START_INSTANCE_ABANDON_VOTE = 0x340060,
- CMSG_START_SPECTATOR_WAR_GAME = 0x34000B,
- CMSG_START_WAR_GAME = 0x34000A,
- CMSG_STORE_GUILD_BANK_ITEM = 0x300049,
- CMSG_SUBMIT_USER_FEEDBACK = 0x3400C1,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x2F0291,
- CMSG_SUMMON_RESPONSE = 0x340096,
- CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x340072,
- CMSG_SURRENDER_ARENA = 0x2F0020,
- CMSG_SUSPEND_COMMS_ACK = 0x350000,
- CMSG_SUSPEND_TOKEN_RESPONSE = 0x350006,
- CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x30004B,
- CMSG_SWAP_INV_ITEM = 0x310007,
- CMSG_SWAP_ITEM = 0x310006,
- CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x30004A,
- CMSG_SWAP_SUB_GROUPS = 0x340079,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x2F0187,
- CMSG_TALK_TO_GOSSIP = 0x300024,
- CMSG_TAXI_NODE_STATUS_QUERY = 0x30003B,
- CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x30003D,
- CMSG_TAXI_REQUEST_EARLY_LANDING = 0x30003F,
- CMSG_TIME_ADJUSTMENT_RESPONSE = 0x32005D,
- CMSG_TIME_SYNC_RESPONSE = 0x32005A,
- CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x32005C,
- CMSG_TIME_SYNC_RESPONSE_FAILED = 0x32005B,
- CMSG_TOGGLE_DIFFICULTY = 0x340083,
- CMSG_TOGGLE_PVP = 0x2F0189,
- CMSG_TOTEM_DESTROYED = 0x300090,
+ CMSG_NEIGHBORHOOD_ADD_MANAGER = 0x380002,
+ CMSG_NEIGHBORHOOD_CANCEL_RESIDENT_INVITATION = 0x380005,
+ CMSG_NEIGHBORHOOD_CHARTER_CONFIRMATION_RESPONSE = 0x370004,
+ CMSG_NEIGHBORHOOD_CHARTER_CREATE_NEIGHBORHOOD_CHARTER = 0x370001,
+ CMSG_NEIGHBORHOOD_CHARTER_EDIT_NEIGHBORHOOD_CHARTER = 0x370003,
+ CMSG_NEIGHBORHOOD_CHARTER_OPEN_CHARTER_CONFIRMATION = 0x370000,
+ CMSG_NEIGHBORHOOD_CHARTER_REQUEST_SIGNATURE = 0x370007,
+ CMSG_NEIGHBORHOOD_CHARTER_SIGN = 0x370006,
+ CMSG_NEIGHBORHOOD_DECLINE_NEIGHBORHOOD_INVITATION = 0x380006,
+ CMSG_NEIGHBORHOOD_EVICT_PLAYER = 0x38000F,
+ CMSG_NEIGHBORHOOD_GET_HOUSING_INVITATION = 0x380007,
+ CMSG_NEIGHBORHOOD_GET_INVITES = 0x380008,
+ CMSG_NEIGHBORHOOD_INTERACT_WITH_CORNERSTONE = 0x38000B,
+ CMSG_NEIGHBORHOOD_INVITE_RESIDENT = 0x380004,
+ CMSG_NEIGHBORHOOD_MOVE_HOUSE = 0x38000A,
+ CMSG_NEIGHBORHOOD_OFFER_NEIGHBORHOOD_OWNERSHIP = 0x38000D,
+ CMSG_NEIGHBORHOOD_PURCHASE_PLOT = 0x380009,
+ CMSG_NEIGHBORHOOD_REMOVE_MANAGER = 0x380003,
+ CMSG_NEIGHBORHOOD_REQUEST_NEIGHBORHOOD_ROSTER = 0x38000E,
+ CMSG_NEIGHBORHOOD_SET_NAME = 0x380000,
+ CMSG_NEIGHBORHOOD_SET_PUBLIC = 0x380001,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x390084,
+ CMSG_NEXT_CINEMATIC_CAMERA = 0x3A00E2,
+ CMSG_OBJECT_UPDATE_FAILED = 0x39002C,
+ CMSG_OBJECT_UPDATE_RESCUED = 0x39002D,
+ CMSG_OFFER_PETITION = 0x390287,
+ CMSG_OPENING_CINEMATIC = 0x3A00E1,
+ CMSG_OPEN_ITEM = 0x390210,
+ CMSG_OPEN_MISSION_NPC = 0x3901D1,
+ CMSG_OPEN_SHIPMENT_NPC = 0x3901D9,
+ CMSG_OPEN_TRADESKILL_NPC = 0x3901E4,
+ CMSG_OPT_OUT_OF_LOOT = 0x3A008E,
+ CMSG_OVERRIDE_SCREEN_FLASH = 0x3A00B8,
+ CMSG_PARTY_INVITE = 0x3E0030,
+ CMSG_PARTY_INVITE_RESPONSE = 0x3E0032,
+ CMSG_PARTY_UNINVITE = 0x3E0073,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x3900ED,
+ CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3902AF,
+ CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT = 0x3902B2,
+ CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x290016,
+ CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3902B1,
+ CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3902B3,
+ CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3902B4,
+ CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3902B0,
+ CMSG_PETITION_BUY = 0x3A005A,
+ CMSG_PETITION_RENAME_GUILD = 0x3E00F8,
+ CMSG_PETITION_SHOW_LIST = 0x3A0059,
+ CMSG_PETITION_SHOW_SIGNATURES = 0x3A005B,
+ CMSG_PET_ABANDON = 0x3A001E,
+ CMSG_PET_ABANDON_BY_NUMBER = 0x3A001F,
+ CMSG_PET_ACTION = 0x3A001C,
+ CMSG_PET_BATTLE_FINAL_NOTIFY = 0x390093,
+ CMSG_PET_BATTLE_INPUT = 0x3E006D,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3900E3,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x390092,
+ CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3E006E,
+ CMSG_PET_BATTLE_REQUEST_PVP = 0x39008C,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = 0x39008D,
+ CMSG_PET_BATTLE_REQUEST_WILD = 0x39008A,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x390094,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x39008B,
+ CMSG_PET_CANCEL_AURA = 0x3A0020,
+ CMSG_PET_CAST_SPELL = 0x390174,
+ CMSG_PET_RENAME = 0x3E00B0,
+ CMSG_PET_SET_ACTION = 0x3A001B,
+ CMSG_PET_SPELL_AUTOCAST = 0x3A0021,
+ CMSG_PET_STOP_ATTACK = 0x3A001D,
+ CMSG_PING = 0x3F0006,
+ CMSG_PLAYER_LOGIN = 0x3E0016,
+ CMSG_PUSH_QUEST_TO_PARTY = 0x3A0031,
+ CMSG_PVP_LOG_DATA = 0x390028,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x390148,
+ CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3E008C,
+ CMSG_QUERY_CORPSE_TRANSPORT = 0x3E008D,
+ CMSG_QUERY_COUNTDOWN_TIMER = 0x390055,
+ CMSG_QUERY_CREATURE = 0x390142,
+ CMSG_QUERY_GAME_OBJECT = 0x390143,
+ CMSG_QUERY_GARRISON_PET_NAME = 0x390149,
+ CMSG_QUERY_GUILD_INFO = 0x3E00B6,
+ CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3A0098,
+ CMSG_QUERY_NEIGHBORHOOD_INFO = 0x3E00B7,
+ CMSG_QUERY_NEXT_MAIL_TIME = 0x3A00D7,
+ CMSG_QUERY_NPC_TEXT = 0x390144,
+ CMSG_QUERY_PAGE_TEXT = 0x390146,
+ CMSG_QUERY_PETITION = 0x39014A,
+ CMSG_QUERY_PET_NAME = 0x390147,
+ CMSG_QUERY_PLAYER_NAMES = 0x3F0010,
+ CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3F000E,
+ CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x3F000D,
+ CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x390021,
+ CMSG_QUERY_QUEST_INFO = 0x390145,
+ CMSG_QUERY_QUEST_ITEM_USABILITY = 0x390022,
+ CMSG_QUERY_REALM_NAME = 0x3E00B5,
+ CMSG_QUERY_SCENARIO_POI = 0x3E0082,
+ CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3902EA,
+ CMSG_QUERY_TIME = 0x3A006E,
+ CMSG_QUERY_TREASURE_PICKER = 0x390233,
+ CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3902EB,
+ CMSG_QUEST_CONFIRM_ACCEPT = 0x3A0030,
+ CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3A002A,
+ CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x3A002C,
+ CMSG_QUEST_GIVER_CLOSE_QUEST = 0x3A00E8,
+ CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3A002B,
+ CMSG_QUEST_GIVER_HELLO = 0x3A0028,
+ CMSG_QUEST_GIVER_QUERY_QUEST = 0x3A0029,
+ CMSG_QUEST_GIVER_REQUEST_REWARD = 0x3A002D,
+ CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x3A002F,
+ CMSG_QUEST_GIVER_STATUS_QUERY = 0x3A002E,
+ CMSG_QUEST_LOG_REMOVE_QUEST = 0x3A00CC,
+ CMSG_QUEST_POI_QUERY = 0x3E00DE,
+ CMSG_QUEST_PUSH_RESULT = 0x3A0032,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x390279,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x390278,
+ CMSG_QUEST_SESSION_REQUEST_STOP = 0x3E015B,
+ CMSG_QUEUED_MESSAGES_END = 0x3F000A,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3E0132,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3E0131,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3E0160,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3E0130,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3E012F,
+ CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3A009C,
+ CMSG_RAF_CLAIM_NEXT_REWARD = 0x3E0151,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3E0153,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3E0152,
+ CMSG_RANDOM_ROLL = 0x3E0080,
+ CMSG_READY_CHECK_RESPONSE = 0x3E005F,
+ CMSG_READ_ITEM = 0x390211,
+ CMSG_RECENT_ALLY_REQUEST_DATA = 0x3E0198,
+ CMSG_RECENT_ALLY_SET_NOTE = 0x3E0199,
+ CMSG_RECLAIM_CORPSE = 0x3A0073,
+ CMSG_REMOVE_NEW_ITEM = 0x390237,
+ CMSG_REMOVE_RAF_RECRUIT = 0x3E0154,
+ CMSG_REORDER_CHARACTERS = 0x3E0015,
+ CMSG_REPAIR_ITEM = 0x3A0084,
+ CMSG_REPLACE_TROPHY = 0x3901F2,
+ CMSG_REPOP_REQUEST = 0x3A00C4,
+ CMSG_REPORT_PVP_PLAYER_AFK = 0x3A008C,
+ CMSG_REPORT_SERVER_LAG = 0x390271,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x390272,
+ CMSG_REQUEST_ACCOUNT_DATA = 0x3E00C3,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x390235,
+ CMSG_REQUEST_BATTLEFIELD_STATUS = 0x3E0008,
+ CMSG_REQUEST_CEMETERY_LIST = 0x390023,
+ CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3E00B8,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x390263,
+ CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3A00C8,
+ CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x29001D,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x39029C,
+ CMSG_REQUEST_GUILD_PARTY_STATE = 0x390054,
+ CMSG_REQUEST_GUILD_REWARDS_LIST = 0x390053,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x390273,
+ CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x390180,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3900B8,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3900B9,
+ CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3902E9,
+ CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x3E0023,
+ CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3E007F,
+ CMSG_REQUEST_PET_INFO = 0x3A0022,
+ CMSG_REQUEST_PLAYED_TIME = 0x39014D,
+ CMSG_REQUEST_PVP_REWARDS = 0x390041,
+ CMSG_REQUEST_RAID_INFO = 0x3E00F9,
+ CMSG_REQUEST_RATED_PVP_INFO = 0x3E000F,
+ CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x3E0196,
+ CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x390236,
+ CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x390042,
+ CMSG_REQUEST_STABLED_PETS = 0x3A0023,
+ CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x290022,
+ CMSG_REQUEST_SURVEY = 0x3902FD,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x3900FF,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x390101,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x390100,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x390102,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x390266,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x390234,
+ CMSG_RESET_CHALLENGE_MODE = 0x3900B6,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3900B7,
+ CMSG_RESET_INSTANCES = 0x3E0094,
+ CMSG_RESURRECT_RESPONSE = 0x3E00AF,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3901F4,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x390103,
+ CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3E017B,
+ CMSG_SAVE_CUF_PROFILES = 0x390037,
+ CMSG_SAVE_EQUIPMENT_SET = 0x3A00A2,
+ CMSG_SAVE_GUILD_EMBLEM = 0x390185,
+ CMSG_SAVE_PERSONAL_EMBLEM = 0x390186,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x3900DF,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x3900DE,
+ CMSG_SCENE_TRIGGER_EVENT = 0x3900E0,
+ CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3902D8,
+ CMSG_SELECT_WOW_LABS_AREA = 0x3902EC,
+ CMSG_SELF_RES = 0x3A00CF,
+ CMSG_SELL_ALL_JUNK_ITEMS = 0x3A0035,
+ CMSG_SELL_ITEM = 0x3A0034,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x3E0128,
+ CMSG_SEND_CONTACT_LIST = 0x3E00FF,
+ CMSG_SEND_MAIL = 0x3E0026,
+ CMSG_SEND_PING_UNIT = 0x3902DA,
+ CMSG_SEND_PING_WORLD_POINT = 0x3902DB,
+ CMSG_SEND_TEXT_EMOTE = 0x3A0019,
+ CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3E00CA,
+ CMSG_SETUP_WARBAND_GROUPS = 0x3E018F,
+ CMSG_SET_ACTION_BAR_TOGGLES = 0x3A00D0,
+ CMSG_SET_ACTION_BUTTON = 0x3E0062,
+ CMSG_SET_ACTIVE_MOVER = 0x3C0059,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x390193,
+ CMSG_SET_ALLOW_RECENT_ALLIES_SEE_LOCATION = 0x3902FF,
+ CMSG_SET_ASSISTANT_LEADER = 0x3E007B,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x390214,
+ CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x390215,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x390216,
+ CMSG_SET_CONTACT_NOTES = 0x3E0102,
+ CMSG_SET_CURRENCY_FLAGS = 0x390015,
+ CMSG_SET_DIFFICULTY_ID = 0x3900E1,
+ CMSG_SET_DUNGEON_DIFFICULTY = 0x3E00AE,
+ CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x39013C,
+ CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3E0046,
+ CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3E0133,
+ CMSG_SET_FACTION_AT_WAR = 0x3A0076,
+ CMSG_SET_FACTION_INACTIVE = 0x3A0078,
+ CMSG_SET_FACTION_NOT_AT_WAR = 0x3A0077,
+ CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x390065,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x390218,
+ CMSG_SET_LOOT_METHOD = 0x3E0074,
+ CMSG_SET_LOOT_SPECIALIZATION = 0x3A00DD,
+ CMSG_SET_PARTY_ASSIGNMENT = 0x3E007D,
+ CMSG_SET_PARTY_LEADER = 0x3E0076,
+ CMSG_SET_PET_FAVORITE = 0x390012,
+ CMSG_SET_PET_SLOT = 0x390011,
+ CMSG_SET_PET_SPECIALIZATION = 0x390013,
+ CMSG_SET_PLAYER_DECLINED_NAMES = 0x3E00B4,
+ CMSG_SET_PREFERRED_CEMETERY = 0x390024,
+ CMSG_SET_PVP = 0x39018A,
+ CMSG_SET_RAID_DIFFICULTY = 0x3E010B,
+ CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x3E0047,
+ CMSG_SET_ROLE = 0x3E0005,
+ CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3E00B2,
+ CMSG_SET_SELECTION = 0x3A00C6,
+ CMSG_SET_SHEATHED = 0x3A001A,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x390217,
+ CMSG_SET_TAXI_BENCHMARK_MODE = 0x3A008B,
+ CMSG_SET_TITLE = 0x390153,
+ CMSG_SET_TRADE_CURRENCY = 0x39000A,
+ CMSG_SET_TRADE_GOLD = 0x390009,
+ CMSG_SET_TRADE_ITEM = 0x390007,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3901D3,
+ CMSG_SET_WAR_MODE = 0x39018B,
+ CMSG_SET_WATCHED_FACTION = 0x3A0079,
+ CMSG_SHOW_TRADE_SKILL = 0x3E00F1,
+ CMSG_SIGN_PETITION = 0x3A00D1,
+ CMSG_SILENCE_PARTY_TALKER = 0x3E007E,
+ CMSG_SOCIAL_CONTRACT_REQUEST = 0x3E0176,
+ CMSG_SOCKET_GEMS = 0x3A0083,
+ CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3902DE,
+ CMSG_SORT_BAGS = 0x390219,
+ CMSG_SORT_BANK_BAGS = 0x39021A,
+ CMSG_SPAWN_TRACKING_UPDATE = 0x390168,
+ CMSG_SPECTATE_CHANGE = 0x3902D1,
+ CMSG_SPELL_CLICK = 0x3A0027,
+ CMSG_SPELL_EMPOWER_RELEASE = 0x39013A,
+ CMSG_SPELL_EMPOWER_RESTART = 0x39013B,
+ CMSG_SPIRIT_HEALER_ACTIVATE = 0x3A0042,
+ CMSG_SPLIT_GUILD_BANK_ITEM = 0x3A0053,
+ CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x3A0050,
+ CMSG_SPLIT_ITEM = 0x3B0008,
+ CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x3A004E,
+ CMSG_STAND_STATE_CHANGE = 0x390035,
+ CMSG_START_CHALLENGE_MODE = 0x3A00E9,
+ CMSG_START_INSTANCE_ABANDON_VOTE = 0x3E0060,
+ CMSG_START_SPECTATOR_WAR_GAME = 0x3E000B,
+ CMSG_START_WAR_GAME = 0x3E000A,
+ CMSG_STORE_GUILD_BANK_ITEM = 0x3A0049,
+ CMSG_SUBMIT_USER_FEEDBACK = 0x3E00C2,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x390291,
+ CMSG_SUMMON_RESPONSE = 0x3E0096,
+ CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3E0072,
+ CMSG_SURRENDER_ARENA = 0x390020,
+ CMSG_SUSPEND_COMMS_ACK = 0x3F0000,
+ CMSG_SUSPEND_TOKEN_RESPONSE = 0x3F0008,
+ CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3A004B,
+ CMSG_SWAP_INV_ITEM = 0x3B0007,
+ CMSG_SWAP_ITEM = 0x3B0006,
+ CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x3A004A,
+ CMSG_SWAP_SUB_GROUPS = 0x3E0079,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x390187,
+ CMSG_TALK_TO_GOSSIP = 0x3A0024,
+ CMSG_TAXI_NODE_STATUS_QUERY = 0x3A003B,
+ CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x3A003D,
+ CMSG_TAXI_REQUEST_EARLY_LANDING = 0x3A003F,
+ CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3C005D,
+ CMSG_TIME_SYNC_RESPONSE = 0x3C005A,
+ CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3C005C,
+ CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3C005B,
+ CMSG_TOGGLE_DIFFICULTY = 0x3E0083,
+ CMSG_TOGGLE_PVP = 0x390189,
+ CMSG_TOTEM_DESTROYED = 0x3A0090,
CMSG_TOY_CLEAR_FANFARE = 0x290004,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x2F0232,
- CMSG_TRAINER_BUY_SPELL = 0x300041,
- CMSG_TRAINER_LIST = 0x300040,
- CMSG_TRAITS_COMMIT_CONFIG = 0x2F02BA,
- CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x2F02B8,
- CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x2F02E8,
- CMSG_TRANSMOGRIFY_ITEMS = 0x2F0043,
- CMSG_TURN_IN_PETITION = 0x3000D3,
- CMSG_TUTORIAL = 0x34010B,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x2F0262,
- CMSG_UNACCEPT_TRADE = 0x2F0005,
- CMSG_UNDELETE_CHARACTER = 0x34010D,
- CMSG_UNLEARN_SKILL = 0x30007D,
- CMSG_UNLEARN_SPECIALIZATION = 0x2F0051,
- CMSG_UPDATE_AADC_STATUS = 0x340165,
- CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x30012A,
- CMSG_UPDATE_ACCOUNT_DATA = 0x3400C3,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x2F0177,
- CMSG_UPDATE_CLIENT_SETTINGS = 0x340090,
- CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2F01E5,
- CMSG_UPDATE_MISSILE_TRAJECTORY = 0x320060,
- CMSG_UPDATE_RAID_TARGET = 0x34007C,
- CMSG_UPDATE_SPELL_VISUAL = 0x2F0176,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x340122,
- CMSG_UPGRADE_GARRISON = 0x2F019B,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x2F028F,
- CMSG_USED_FOLLOW = 0x2F0032,
- CMSG_USE_CRITTER_ITEM = 0x2F0109,
- CMSG_USE_EQUIPMENT_SET = 0x310001,
- CMSG_USE_ITEM = 0x2F0170,
- CMSG_USE_TOY = 0x2F0173,
- CMSG_VAS_CHECK_TRANSFER_OK = 0x340138,
- CMSG_VAS_GET_QUEUE_MINUTES = 0x340137,
- CMSG_VAS_GET_SERVICE_STATUS = 0x340136,
- CMSG_VIOLENCE_LEVEL = 0x2F0030,
- CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x34013C,
- CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x34013D,
- CMSG_VOICE_CHAT_LOGIN = 0x34013B,
- CMSG_WARDEN3_DATA = 0x340018,
- CMSG_WHO = 0x3400AD,
- CMSG_WHO_IS = 0x3400AC,
- CMSG_WORLD_LOOT_OBJECT_CLICK = 0x2F02D5,
- CMSG_WORLD_PORT_RESPONSE = 0x340025,
- CMSG_WRAP_ITEM = 0x310000,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x390232,
+ CMSG_TRAINER_BUY_SPELL = 0x3A0041,
+ CMSG_TRAINER_LIST = 0x3A0040,
+ CMSG_TRAITS_COMMIT_CONFIG = 0x3902BA,
+ CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3902B8,
+ CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3902E7,
+ CMSG_TRANSMOGRIFY_ITEMS = 0x390043,
+ CMSG_TURN_IN_PETITION = 0x3A00D3,
+ CMSG_TUTORIAL = 0x3E010C,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x390262,
+ CMSG_UNACCEPT_TRADE = 0x390005,
+ CMSG_UNDELETE_CHARACTER = 0x3E010E,
+ CMSG_UNLEARN_SKILL = 0x3A007D,
+ CMSG_UNLEARN_SPECIALIZATION = 0x390051,
+ CMSG_UPDATE_AADC_STATUS = 0x3E0166,
+ CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x3A012A,
+ CMSG_UPDATE_ACCOUNT_DATA = 0x3E00C4,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x390177,
+ CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3901E5,
+ CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3C0060,
+ CMSG_UPDATE_RAID_TARGET = 0x3E007C,
+ CMSG_UPDATE_SPELL_VISUAL = 0x390176,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x3E0123,
+ CMSG_UPGRADE_GARRISON = 0x39019B,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x39028F,
+ CMSG_USED_FOLLOW = 0x390032,
+ CMSG_USE_CRITTER_ITEM = 0x390109,
+ CMSG_USE_EQUIPMENT_SET = 0x3B0001,
+ CMSG_USE_ITEM = 0x390170,
+ CMSG_USE_TOY = 0x390173,
+ CMSG_VAS_CHECK_TRANSFER_OK = 0x3E0139,
+ CMSG_VAS_GET_QUEUE_MINUTES = 0x3E0138,
+ CMSG_VAS_GET_SERVICE_STATUS = 0x3E0137,
+ CMSG_VIOLENCE_LEVEL = 0x390030,
+ CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x3E013D,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3E013E,
+ CMSG_VOICE_CHAT_LOGIN = 0x3E013C,
+ CMSG_WARDEN3_DATA = 0x3E0018,
+ CMSG_WHO = 0x3E00AD,
+ CMSG_WHO_IS = 0x3E00AC,
+ CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3902D4,
+ CMSG_WORLD_PORT_RESPONSE = 0x3E0025,
+ CMSG_WRAP_ITEM = 0x3B0000,
};
-inline constexpr std::size_t NUM_CMSG_OPCODES = 1758;
+inline constexpr std::size_t NUM_CMSG_OPCODES = 1881;
inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode)
{
uint32 idInGroup = opcode & 0xFFFF;
switch (opcode >> 16)
{
- case 0x29: return idInGroup < 31 ? idInGroup + 0 : -1;
- case 0x2B: return idInGroup < 51 ? idInGroup + 31 : -1;
- case 0x2C: return idInGroup < 3 ? idInGroup + 82 : -1;
- case 0x2D: return idInGroup < 37 ? idInGroup + 85 : -1;
- case 0x2F: return idInGroup < 767 ? idInGroup + 122 : -1;
- case 0x30: return idInGroup < 301 ? idInGroup + 889 : -1;
- case 0x31: return idInGroup < 10 ? idInGroup + 1190 : -1;
- case 0x32: return idInGroup < 132 ? idInGroup + 1200 : -1;
- case 0x34: return idInGroup < 411 ? idInGroup + 1332 : -1;
- case 0x35: return idInGroup < 15 ? idInGroup + 1743 : -1;
+ case 0x29: return idInGroup < 35 ? idInGroup + 0 : -1;
+ case 0x2B: return idInGroup < 51 ? idInGroup + 35 : -1;
+ case 0x2C: return idInGroup < 3 ? idInGroup + 86 : -1;
+ case 0x2D: return idInGroup < 39 ? idInGroup + 89 : -1;
+ case 0x2E: return idInGroup < 2 ? idInGroup + 128 : -1;
+ case 0x2F: return idInGroup < 2 ? idInGroup + 130 : -1;
+ case 0x30: return idInGroup < 17 ? idInGroup + 132 : -1;
+ case 0x31: return idInGroup < 8 ? idInGroup + 149 : -1;
+ case 0x32: return idInGroup < 9 ? idInGroup + 157 : -1;
+ case 0x33: return idInGroup < 37 ? idInGroup + 166 : -1;
+ case 0x35: return idInGroup < 9 ? idInGroup + 203 : -1;
+ case 0x37: return idInGroup < 8 ? idInGroup + 212 : -1;
+ case 0x38: return idInGroup < 16 ? idInGroup + 220 : -1;
+ case 0x39: return idInGroup < 768 ? idInGroup + 236 : -1;
+ case 0x3A: return idInGroup < 304 ? idInGroup + 1004 : -1;
+ case 0x3B: return idInGroup < 10 ? idInGroup + 1308 : -1;
+ case 0x3C: return idInGroup < 132 ? idInGroup + 1318 : -1;
+ case 0x3E: return idInGroup < 413 ? idInGroup + 1450 : -1;
+ case 0x3F: return idInGroup < 18 ? idInGroup + 1863 : -1;
default: return -1;
}
}
enum OpcodeServer : uint32
{
- SMSG_ABORT_NEW_WORLD = 0x360030,
- SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x360347,
- SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x36034C,
- SMSG_ACCOUNT_COSMETIC_ADDED = 0x360300,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x3602E8,
- SMSG_ACCOUNT_DATA_TIMES = 0x3601A8,
- SMSG_ACCOUNT_EXPORT_RESPONSE = 0x360338,
- SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x360352,
- SMSG_ACCOUNT_MOUNT_REMOVED = 0x360047,
- SMSG_ACCOUNT_MOUNT_UPDATE = 0x360046,
- SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x3602FF,
- SMSG_ACCOUNT_STORE_CURRENCY_UPDATE = 0x360321,
- SMSG_ACCOUNT_STORE_FRONT_UPDATE = 0x360322,
- SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED = 0x360323,
- SMSG_ACCOUNT_STORE_RESULT = 0x360324,
- SMSG_ACCOUNT_TOY_UPDATE = 0x360048,
- SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x36004C,
- SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x36004B,
- SMSG_ACCOUNT_WARBAND_SCENE_UPDATE = 0x36004E,
- SMSG_ACHIEVEMENT_DELETED = 0x360185,
- SMSG_ACHIEVEMENT_EARNED = 0x3600E0,
- SMSG_ACTIVATE_ESSENCE_FAILED = 0x4A0020,
- SMSG_ACTIVATE_SOULBIND_FAILED = 0x4A0022,
- SMSG_ACTIVATE_TAXI_REPLY = 0x36011C,
- SMSG_ACTIVE_GLYPHS = 0x4D0045,
- SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x3601E3,
- SMSG_ADDON_LIST_REQUEST = 0x3600DF,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x3600DA,
- SMSG_ADD_ITEM_PASSIVE = 0x360042,
- SMSG_ADD_LOSS_OF_CONTROL = 0x36010F,
- SMSG_ADD_RUNE_POWER = 0x360156,
- SMSG_ADJUST_SPLINE_DURATION = 0x360069,
- SMSG_ADVANCED_COMBAT_LOG = 0x3602FD,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x3602F8,
- SMSG_AE_LOOT_TARGETS = 0x3600B5,
- SMSG_AE_LOOT_TARGET_ACK = 0x3600B6,
- SMSG_AI_REACTION = 0x360153,
- SMSG_ALLIED_RACE_DETAILS = 0x360291,
- SMSG_ALL_ACCOUNT_CRITERIA = 0x360005,
- SMSG_ALL_ACHIEVEMENT_DATA = 0x360004,
- SMSG_ALL_GUILD_ACHIEVEMENTS = 0x420000,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x3602D5,
- SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x36001D,
- SMSG_AREA_POI_UPDATE_RESPONSE = 0x4A0018,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x3601DC,
- SMSG_AREA_TRIGGER_DENIED = 0x370004,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x3601B4,
- SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x370002,
- SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x370003,
- SMSG_ARENA_CLEAR_OPPONENTS = 0x3600E6,
- SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x3600CF,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x3600E5,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x36023E,
- SMSG_ARTIFACT_FORGE_ERROR = 0x36023C,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x36023D,
- SMSG_ARTIFACT_XP_GAIN = 0x360284,
- SMSG_ATTACKER_STATE_UPDATE = 0x3C002C,
- SMSG_ATTACK_START = 0x3C0017,
- SMSG_ATTACK_STOP = 0x3C0018,
- SMSG_ATTACK_SWING_ERROR = 0x3C0026,
- SMSG_ATTACK_SWING_LANDED_LOG = 0x3C0027,
- SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x36026D,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x36026C,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x36026B,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x360190,
- SMSG_AUCTION_COMMAND_RESULT = 0x36018D,
- SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x360325,
- SMSG_AUCTION_FAVORITE_LIST = 0x3602EF,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x3602E7,
- SMSG_AUCTION_HELLO_RESPONSE = 0x36018B,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x3602E6,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x3602E2,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x3602E3,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x3602E5,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x36018F,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x360191,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x36018C,
- SMSG_AUCTION_WON_NOTIFICATION = 0x36018E,
- SMSG_AURA_POINTS_DEPLETED = 0x4D0012,
- SMSG_AURA_UPDATE = 0x4D0011,
- SMSG_AUTH_CHALLENGE = 0x3D0000,
- SMSG_AUTH_FAILED = 0x360000,
- SMSG_AUTH_RESPONSE = 0x360001,
- SMSG_AVAILABLE_HOTFIXES = 0x3A0001,
- SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x360326,
- SMSG_BAG_CLEANUP_FINISHED = 0x4E0007,
- SMSG_BARBER_SHOP_RESULT = 0x36015B,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x3602C6,
- SMSG_BATTLEFIELD_LIST = 0x3C0005,
- SMSG_BATTLEFIELD_PORT_DENIED = 0x3C000B,
- SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x3C0001,
- SMSG_BATTLEFIELD_STATUS_FAILED = 0x3C0004,
- SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED = 0x3C000E,
- SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION = 0x3C0000,
- SMSG_BATTLEFIELD_STATUS_NONE = 0x3C0003,
- SMSG_BATTLEFIELD_STATUS_QUEUED = 0x3C0002,
- SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x3C000D,
- SMSG_BATTLEGROUND_INFO_THROTTLED = 0x3C000C,
- SMSG_BATTLEGROUND_INIT = 0x3C0029,
- SMSG_BATTLEGROUND_PLAYER_JOINED = 0x3C0009,
- SMSG_BATTLEGROUND_PLAYER_LEFT = 0x3C000A,
- SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x3C0006,
- SMSG_BATTLEGROUND_POINTS = 0x3C0028,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x360226,
- SMSG_BATTLENET_CHALLENGE_START = 0x360225,
- SMSG_BATTLENET_NOTIFICATION = 0x36029D,
- SMSG_BATTLENET_RESPONSE = 0x36029C,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x36029E,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x360221,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x360216,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x360217,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x360220,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x360214,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x360213,
- SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x360305,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x360211,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x360212,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x360210,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x36020E,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x36020F,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x360215,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x36021F,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x3602BA,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x36021D,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x36021C,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x3602AD,
- SMSG_BATTLE_PETS_HEALED = 0x36008B,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x360117,
- SMSG_BATTLE_PET_DELETED = 0x360088,
- SMSG_BATTLE_PET_ERROR = 0x3600D5,
- SMSG_BATTLE_PET_JOURNAL = 0x360087,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x360085,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x360086,
- SMSG_BATTLE_PET_RESTORED = 0x36008A,
- SMSG_BATTLE_PET_REVOKED = 0x360089,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x360083,
- SMSG_BATTLE_PET_UPDATES = 0x360082,
- SMSG_BIND_POINT_UPDATE = 0x360011,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x3600C5,
- SMSG_BLACK_MARKET_OUTBID = 0x3600C6,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x3600C4,
- SMSG_BLACK_MARKET_WON = 0x3600C7,
- SMSG_BONUS_ROLL_EMPTY = 0x3600E2,
- SMSG_BOSS_KILL = 0x3C002B,
- SMSG_BREAK_TARGET = 0x3C0016,
- SMSG_BROADCAST_ACHIEVEMENT = 0x3B0012,
- SMSG_BROADCAST_SUMMON_CAST = 0x3602C8,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x3602C9,
- SMSG_BUY_FAILED = 0x360164,
- SMSG_BUY_SUCCEEDED = 0x360163,
- SMSG_CACHE_INFO = 0x3A000F,
- SMSG_CACHE_VERSION = 0x3A000E,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x36013C,
- SMSG_CALENDAR_COMMAND_RESULT = 0x36013D,
- SMSG_CALENDAR_COMMUNITY_INVITE = 0x36012C,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x360134,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x360135,
- SMSG_CALENDAR_INVITE_ADDED = 0x36012D,
- SMSG_CALENDAR_INVITE_ALERT = 0x360131,
- SMSG_CALENDAR_INVITE_NOTES = 0x360136,
- SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x360137,
- SMSG_CALENDAR_INVITE_REMOVED = 0x36012E,
- SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x360133,
- SMSG_CALENDAR_INVITE_STATUS = 0x36012F,
- SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x360132,
- SMSG_CALENDAR_MODERATOR_STATUS = 0x360130,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x360138,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x360139,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x36013A,
- SMSG_CALENDAR_SEND_CALENDAR = 0x36012A,
- SMSG_CALENDAR_SEND_EVENT = 0x36012B,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x36013B,
- SMSG_CAMERA_EFFECT = 0x3601C2,
- SMSG_CANCEL_AUTO_REPEAT = 0x36017B,
- SMSG_CANCEL_COMBAT = 0x3C0025,
- SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x4D0037,
- SMSG_CANCEL_PING_PIN = 0x36003B,
- SMSG_CANCEL_PRELOAD_WORLD = 0x36002E,
- SMSG_CANCEL_SCENE = 0x3600D4,
- SMSG_CANCEL_SPELL_VISUAL = 0x4D0035,
- SMSG_CANCEL_SPELL_VISUAL_KIT = 0x4D0039,
- SMSG_CAN_DUEL_RESULT = 0x3C0021,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x3602AC,
- SMSG_CAPTURE_POINT_REMOVED = 0x3C0008,
- SMSG_CAST_FAILED = 0x4D0048,
- SMSG_CAS_REFRESH_REMOTE_DATA = 0x360115,
- SMSG_CATALOG_SHOP_LICENSE_DATA = 0x3602AE,
- SMSG_CATALOG_SHOP_OBTAIN_LICENSE = 0x360358,
- SMSG_CATALOG_SHOP_OPEN_CHECKOUT_RESULT = 0x360353,
- SMSG_CAUTIONARY_CHANNEL_MESSAGE = 0x3B0009,
- SMSG_CAUTIONARY_CHAT_MESSAGE = 0x3B0008,
- SMSG_CHAIN_MISSILE_BOUNCE = 0x360061,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x3600A6,
- SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x3600A7,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x3600AD,
- SMSG_CHALLENGE_MODE_RESET = 0x3600A5,
- SMSG_CHALLENGE_MODE_SET_LEAVER_PENALTY_TIMER = 0x4A0030,
- SMSG_CHALLENGE_MODE_START = 0x3600A3,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x3600A4,
- SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x4A000C,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x36029F,
- SMSG_CHANNEL_LIST = 0x3B001B,
- SMSG_CHANNEL_NOTIFY = 0x3B0017,
- SMSG_CHANNEL_NOTIFY_JOINED = 0x3B0019,
- SMSG_CHANNEL_NOTIFY_LEFT = 0x3B001A,
- SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x3B0018,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x360259,
- SMSG_CHARACTER_LOGIN_FAILED = 0x3601A2,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x360224,
- SMSG_CHARACTER_RENAME_RESULT = 0x3601FF,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x360258,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x360257,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x36025A,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x360256,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x36017F,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x360180,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x360243,
- SMSG_CHAT = 0x3B0001,
- SMSG_CHAT_AUTO_RESPONDED = 0x3B000E,
- SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3B0022,
- SMSG_CHAT_DOWN = 0x3B0014,
- SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x3B0000,
- SMSG_CHAT_IS_DOWN = 0x3B0015,
- SMSG_CHAT_NOT_IN_GUILD = 0x3B0023,
- SMSG_CHAT_NOT_IN_PARTY = 0x3B0006,
- SMSG_CHAT_PLAYER_AMBIGUOUS = 0x3B0004,
- SMSG_CHAT_PLAYER_NOTFOUND = 0x3B000D,
- SMSG_CHAT_RECONNECT = 0x3B0016,
- SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x3B001D,
- SMSG_CHAT_RESTRICTED = 0x3B0007,
- SMSG_CHAT_SERVER_MESSAGE = 0x3B001C,
- SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x4D0002,
- SMSG_CHECK_ABANDON_NPE = 0x4A0023,
- SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x36001B,
- SMSG_CHECK_WARGAME_ENTRY = 0x360027,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x3602F2,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x3602D9,
- SMSG_CLEAR_ALL_SPELL_CHARGES = 0x4D0016,
- SMSG_CLEAR_BOSS_EMOTES = 0x360054,
- SMSG_CLEAR_COOLDOWN = 0x360158,
- SMSG_CLEAR_COOLDOWNS = 0x4D0015,
- SMSG_CLEAR_RESURRECT = 0x360013,
- SMSG_CLEAR_SPELL_CHARGES = 0x4D0017,
- SMSG_CLEAR_TARGET = 0x3C0022,
- SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x4B0022,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x36023B,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x3602D1,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x3602D4,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x3602D2,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x3602CF,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x3602D3,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x3602D0,
- SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x360311,
- SMSG_COIN_REMOVED = 0x3600B4,
- SMSG_COMBAT_EVENT_FAILED = 0x3C0019,
- SMSG_COMMENTATOR_MAP_INFO = 0x3601A4,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x3601A5,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x3601A3,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x360268,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x360274,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x36026A,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x360269,
- SMSG_COMPLAINT_RESULT = 0x36014A,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x360234,
- SMSG_CONFIRM_PARTY_INVITE = 0x3602AB,
- SMSG_CONNECT_TO = 0x3D0005,
- SMSG_CONSOLE_WRITE = 0x3600D2,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x360270,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x36026F,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x36026E,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x360272,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x360273,
- SMSG_CONTACT_LIST = 0x360222,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x3602B3,
- SMSG_CONTROL_UPDATE = 0x3600E4,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x3602FB,
- SMSG_COOLDOWN_CHEAT = 0x3601D5,
- SMSG_COOLDOWN_EVENT = 0x360157,
- SMSG_CORPSE_LOCATION = 0x3600EB,
- SMSG_CORPSE_RECLAIM_DELAY = 0x3601E6,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x3601B0,
- SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x4B0024,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x360294,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x3602FC,
- SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x360332,
- SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x36032E,
- SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x36032A,
- SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x36032C,
- SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x360328,
- SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x36032D,
- SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x360329,
- SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x360334,
- SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x360330,
- SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x36032B,
- SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x360333,
- SMSG_CRAFT_ENCHANT_RESULT = 0x360331,
- SMSG_CREATE_CHAR = 0x36019E,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x360233,
- SMSG_CREATOR_VISUALS_OVERRIDE = 0x360337,
- SMSG_CRITERIA_DELETED = 0x360184,
- SMSG_CRITERIA_UPDATE = 0x36017E,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x36015F,
- SMSG_CURRENCY_TRANSFER_LOG = 0x360349,
- SMSG_CURRENCY_TRANSFER_RESULT = 0x360348,
- SMSG_CUSTOM_LOAD_SCREEN = 0x360064,
- SMSG_DAILY_QUESTS_RESET = 0x4B0000,
- SMSG_DAMAGE_CALC_LOG = 0x4D0054,
- SMSG_DB_REPLY = 0x3A0000,
- SMSG_DEATH_RELEASE_LOC = 0x360171,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x3600F3,
- SMSG_DEFENSE_MESSAGE = 0x3B000C,
- SMSG_DELETE_CHAR = 0x36019F,
- SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x400022,
- SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x36034E,
- SMSG_DESTROY_ARENA_UNIT = 0x3601DE,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x360196,
- SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x360020,
- SMSG_DISENCHANT_CREDIT = 0x36003F,
- SMSG_DISMOUNT_RESULT = 0x360010,
- SMSG_DISPEL_FAILED = 0x4D001E,
- SMSG_DISPLAY_GAME_ERROR = 0x360035,
- SMSG_DISPLAY_PLAYER_CHOICE = 0x4A0004,
- SMSG_DISPLAY_PROMOTION = 0x3600E8,
- SMSG_DISPLAY_QUEST_POPUP = 0x4B001E,
- SMSG_DISPLAY_TOAST = 0x3600C1,
- SMSG_DISPLAY_WORLD_TEXT = 0x360285,
- SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x4D0053,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x360079,
- SMSG_DROP_NEW_CONNECTION = 0x3D0004,
- SMSG_DUEL_ARRANGED = 0x3C001B,
- SMSG_DUEL_COMPLETE = 0x3C001F,
- SMSG_DUEL_COUNTDOWN = 0x3C001E,
- SMSG_DUEL_IN_BOUNDS = 0x3C001D,
- SMSG_DUEL_OUT_OF_BOUNDS = 0x3C001C,
- SMSG_DUEL_REQUESTED = 0x3C001A,
- SMSG_DUEL_WINNER = 0x3C0020,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x3601E1,
- SMSG_EMOTE = 0x360260,
- SMSG_ENABLE_BARBER_SHOP = 0x36015A,
- SMSG_ENCHANTMENT_LOG = 0x3601B1,
- SMSG_ENCOUNTER_END = 0x36021B,
- SMSG_ENCOUNTER_START = 0x36021A,
- SMSG_END_LIGHTNING_STORM = 0x360147,
- SMSG_ENTER_ENCRYPTED_MODE = 0x3D0001,
- SMSG_ENUM_CHARACTERS_RESULT = 0x360018,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x36028A,
- SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x4D000E,
- SMSG_EQUIPMENT_SET_ID = 0x360150,
- SMSG_EXPECTED_SPAM_RECORDS = 0x3B0005,
- SMSG_EXPLORATION_EXPERIENCE = 0x3601FB,
- SMSG_EXPORT_ACCOUNT_PROFILE = 0x3600F0,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x3602F9,
- SMSG_FACTION_BONUS_INFO = 0x3601C1,
- SMSG_FAILED_PLAYER_CONDITION = 0x4A0002,
- SMSG_FAILED_QUEST_TURN_IN = 0x3602A8,
- SMSG_FEATURE_SYSTEM_STATUS = 0x360058,
- SMSG_FEATURE_SYSTEM_STATUS2 = 0x360346,
- SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x360059,
- SMSG_FEIGN_DEATH_RESISTED = 0x3601E0,
- SMSG_FISH_ESCAPED = 0x36016E,
- SMSG_FISH_NOT_HOOKED = 0x36016D,
- SMSG_FLIGHT_SPLINE_SYNC = 0x48005B,
- SMSG_FLUSH_COMBAT_LOG_FILE = 0x4D0010,
- SMSG_FORCED_DEATH_UPDATE = 0x360172,
- SMSG_FORCE_ANIM = 0x3601ED,
- SMSG_FORCE_ANIMATIONS = 0x3601EE,
- SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x36004A,
- SMSG_FORCE_SPAWN_TRACKING_UPDATE = 0x4B0021,
- SMSG_FRIEND_STATUS = 0x360223,
- SMSG_GAIN_MAW_POWER = 0x360279,
- SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x36005C,
- SMSG_GAME_OBJECT_BASE = 0x3602C0,
- SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x360310,
- SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x36005D,
- SMSG_GAME_OBJECT_DESPAWN = 0x36005E,
- SMSG_GAME_OBJECT_INTERACTION = 0x36030F,
- SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x4D003C,
- SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x4D003B,
- SMSG_GAME_OBJECT_RESET_STATE = 0x3601BB,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x36029B,
- SMSG_GAME_SPEED_SET = 0x360120,
- SMSG_GAME_TIME_SET = 0x3601AA,
- SMSG_GAME_TIME_UPDATE = 0x3601A9,
- SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x400024,
- SMSG_GARRISON_ADD_EVENT = 0x400048,
- SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x400016,
- SMSG_GARRISON_ADD_MISSION_RESULT = 0x40001A,
- SMSG_GARRISON_ADD_SPEC_GROUPS = 0x40004B,
- SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x40004F,
- SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x40002C,
- SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x400051,
- SMSG_GARRISON_BUILDING_ACTIVATED = 0x40000B,
- SMSG_GARRISON_BUILDING_REMOVED = 0x400004,
- SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x400006,
- SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x40001D,
- SMSG_GARRISON_CLEAR_COLLECTION = 0x400047,
- SMSG_GARRISON_CLEAR_EVENT_LIST = 0x40004A,
- SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0x40004C,
- SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x400046,
- SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x400045,
- SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x40003D,
- SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x40001C,
- SMSG_GARRISON_CREATE_RESULT = 0x40000C,
- SMSG_GARRISON_DELETE_MISSION_RESULT = 0x400023,
- SMSG_GARRISON_DELETE_RESULT = 0x400035,
- SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0x40002B,
- SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0x400029,
- SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x400027,
- SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0x400028,
- SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x400026,
- SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0x40002A,
- SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x400033,
- SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x400015,
- SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x40001E,
- SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x40003F,
- SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x400007,
- SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x400005,
- SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x400040,
- SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x400019,
- SMSG_GARRISON_MAP_DATA_RESPONSE = 0x400042,
- SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x400020,
- SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x400043,
- SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x400025,
- SMSG_GARRISON_OPEN_CRAFTER = 0x400037,
- SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x400030,
- SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x400003,
- SMSG_GARRISON_PLOT_PLACED = 0x400001,
- SMSG_GARRISON_PLOT_REMOVED = 0x400002,
- SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x400034,
- SMSG_GARRISON_REMOTE_INFO = 0x40000A,
- SMSG_GARRISON_REMOVE_EVENT = 0x400049,
- SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x40002F,
- SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x40002D,
- SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x400017,
- SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0x40002E,
- SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x400009,
- SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0x40000E,
- SMSG_GARRISON_RESET_TALENT_TREE = 0x400013,
- SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x400014,
- SMSG_GARRISON_START_MISSION_RESULT = 0x40001B,
- SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x40003C,
- SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x40004D,
- SMSG_GARRISON_TALENT_COMPLETED = 0x40000F,
- SMSG_GARRISON_TALENT_REMOVED = 0x400010,
- SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x400012,
- SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x400011,
- SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x40004E,
- SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x400008,
- SMSG_GARRISON_UPDATE_FOLLOWER = 0x400018,
- SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x40003E,
- SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x400050,
- SMSG_GARRISON_UPGRADE_RESULT = 0x40000D,
- SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x40001F,
- SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x36001C,
- SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x3602B4,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3601FD,
- SMSG_GET_GARRISON_INFO_RESULT = 0x400000,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x360236,
- SMSG_GET_REALM_HIDDEN_RESULT = 0x36033D,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x360271,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x36025E,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x360235,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x360231,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x36025D,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x360286,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x360287,
- SMSG_GM_PLAYER_INFO = 0x4A000D,
- SMSG_GM_REQUEST_PLAYER_INFO = 0x4A0003,
- SMSG_GM_TICKET_CASE_STATUS = 0x360142,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x360141,
- SMSG_GOD_MODE = 0x360199,
- SMSG_GOSSIP_COMPLETE = 0x4B0017,
- SMSG_GOSSIP_MESSAGE = 0x4B0018,
- SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x4B0028,
- SMSG_GOSSIP_POI = 0x36022E,
- SMSG_GOSSIP_QUEST_UPDATE = 0x4B0019,
- SMSG_GOSSIP_REFRESH_OPTIONS = 0x4B0027,
- SMSG_GROUP_ACTION_THROTTLED = 0x360024,
- SMSG_GROUP_AUTO_KICK = 0x36022B,
- SMSG_GROUP_DECLINE = 0x360227,
- SMSG_GROUP_DESTROYED = 0x36022A,
- SMSG_GROUP_NEW_LEADER = 0x3600CA,
- SMSG_GROUP_REQUEST_DECLINE = 0x360228,
- SMSG_GROUP_UNINVITE = 0x360229,
- SMSG_GUILD_ACHIEVEMENT_DELETED = 0x42000D,
- SMSG_GUILD_ACHIEVEMENT_EARNED = 0x42000C,
- SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x42000F,
- SMSG_GUILD_BANK_LOG_QUERY_RESULTS = 0x420027,
- SMSG_GUILD_BANK_QUERY_RESULTS = 0x420026,
- SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY = 0x420028,
- SMSG_GUILD_BANK_TEXT_QUERY_RESULT = 0x42002B,
- SMSG_GUILD_CHALLENGE_COMPLETED = 0x42001B,
- SMSG_GUILD_CHALLENGE_UPDATE = 0x42001A,
- SMSG_GUILD_CHANGE_NAME_RESULT = 0x420025,
- SMSG_GUILD_COMMAND_RESULT = 0x420002,
- SMSG_GUILD_CRITERIA_DELETED = 0x42000E,
- SMSG_GUILD_CRITERIA_UPDATE = 0x42000B,
- SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x420040,
- SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x42003F,
- SMSG_GUILD_EVENT_DISBANDED = 0x420035,
- SMSG_GUILD_EVENT_LOG_QUERY_RESULTS = 0x42002A,
- SMSG_GUILD_EVENT_MOTD = 0x420036,
- SMSG_GUILD_EVENT_NEW_LEADER = 0x420034,
- SMSG_GUILD_EVENT_PLAYER_JOINED = 0x420032,
- SMSG_GUILD_EVENT_PLAYER_LEFT = 0x420033,
- SMSG_GUILD_EVENT_PRESENCE_CHANGE = 0x420037,
- SMSG_GUILD_EVENT_RANKS_UPDATED = 0x420039,
- SMSG_GUILD_EVENT_RANK_CHANGED = 0x42003A,
- SMSG_GUILD_EVENT_STATUS_CHANGE = 0x420038,
- SMSG_GUILD_EVENT_TAB_ADDED = 0x42003B,
- SMSG_GUILD_EVENT_TAB_DELETED = 0x42003C,
- SMSG_GUILD_EVENT_TAB_MODIFIED = 0x42003D,
- SMSG_GUILD_EVENT_TAB_TEXT_CHANGED = 0x42003E,
- SMSG_GUILD_FLAGGED_FOR_RENAME = 0x420024,
- SMSG_GUILD_HARDCORE_MEMBER_DEATH = 0x420004,
- SMSG_GUILD_INVITE = 0x420012,
- SMSG_GUILD_INVITE_DECLINED = 0x420030,
- SMSG_GUILD_INVITE_EXPIRED = 0x420031,
- SMSG_GUILD_ITEM_LOOTED_NOTIFY = 0x42001C,
- SMSG_GUILD_KNOWN_RECIPES = 0x420006,
- SMSG_GUILD_MEMBERS_WITH_RECIPE = 0x420007,
- SMSG_GUILD_MEMBER_DAILY_RESET = 0x42002C,
- SMSG_GUILD_MEMBER_RECIPES = 0x420005,
- SMSG_GUILD_MEMBER_UPDATE_NOTE = 0x420011,
- SMSG_GUILD_MOVED = 0x420022,
- SMSG_GUILD_MOVE_STARTING = 0x420021,
- SMSG_GUILD_NAME_CHANGED = 0x420023,
- SMSG_GUILD_NEWS = 0x420009,
- SMSG_GUILD_NEWS_DELETED = 0x42000A,
- SMSG_GUILD_PARTY_STATE = 0x420013,
- SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x420029,
- SMSG_GUILD_RANKS = 0x420010,
- SMSG_GUILD_RENAME_NAME_CHECK = 0x420044,
- SMSG_GUILD_RENAME_REFUND_RESULT = 0x420046,
- SMSG_GUILD_RENAME_REQUESTED_RESULT = 0x420045,
- SMSG_GUILD_RENAME_STATUS_UPDATE = 0x420043,
- SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x420014,
- SMSG_GUILD_RESET = 0x420020,
- SMSG_GUILD_REWARD_LIST = 0x420008,
- SMSG_GUILD_ROSTER = 0x420003,
- SMSG_GUILD_SEND_RANK_CHANGE = 0x420001,
- SMSG_HARDCORE_DEATH_ALERT = 0x360345,
- SMSG_HEALTH_UPDATE = 0x36016F,
- SMSG_HIGHEST_THREAT_UPDATE = 0x360177,
- SMSG_HOTFIX_CONNECT = 0x3A0003,
- SMSG_HOTFIX_MESSAGE = 0x3A0002,
- SMSG_INITIALIZE_FACTIONS = 0x3601C0,
- SMSG_INITIAL_SETUP = 0x360014,
- SMSG_INIT_WORLD_STATES = 0x3601E2,
- SMSG_INSPECT_RESULT = 0x3600CE,
- SMSG_INSTANCE_ABANDON_VOTE_COMPLETED = 0x360093,
- SMSG_INSTANCE_ABANDON_VOTE_PLAYER_LEFT = 0x360094,
- SMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x360092,
- SMSG_INSTANCE_ABANDON_VOTE_STARTED = 0x360091,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x360249,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x360248,
- SMSG_INSTANCE_ENCOUNTER_END = 0x360251,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x360247,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x360253,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x360252,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x36024C,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x36024B,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x360250,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x360254,
- SMSG_INSTANCE_ENCOUNTER_START = 0x36024D,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x36024A,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x36024F,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x36024E,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x360197,
- SMSG_INSTANCE_INFO = 0x3600D1,
- SMSG_INSTANCE_RESET = 0x360125,
- SMSG_INSTANCE_RESET_FAILED = 0x360126,
- SMSG_INSTANCE_SAVE_CREATED = 0x360219,
- SMSG_INTERRUPT_POWER_REGEN = 0x4D004A,
- SMSG_INVALIDATE_PAGE_TEXT = 0x3A000A,
- SMSG_INVALIDATE_PLAYER = 0x4A0007,
- SMSG_INVALID_PROMOTION_CODE = 0x3601EF,
- SMSG_INVENTORY_CHANGE_FAILURE = 0x4E0005,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x3602AA,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x3602BC,
- SMSG_ISLAND_AZERITE_GAIN = 0x3601F8,
- SMSG_ISLAND_COMPLETE = 0x3601F9,
- SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x4B0004,
- SMSG_ITEM_CHANGED = 0x360188,
- SMSG_ITEM_COOLDOWN = 0x36025F,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x3601F1,
- SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x360034,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x3602F1,
- SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x360032,
- SMSG_ITEM_PUSH_RESULT = 0x3600C0,
- SMSG_ITEM_TIME_UPDATE = 0x3601F0,
- SMSG_KICK_REASON = 0x360128,
- SMSG_LATENCY_REPORT_PING = 0x360301,
- SMSG_LEARNED_SPELLS = 0x4D003E,
- SMSG_LEARN_PVP_TALENT_FAILED = 0x36006D,
- SMSG_LEARN_TALENT_FAILED = 0x36006C,
- SMSG_LEGACY_LOOT_RULES = 0x3602C1,
- SMSG_LEVEL_LINKING_RESULT = 0x3602D7,
- SMSG_LEVEL_UP_INFO = 0x360186,
- SMSG_LFG_BOOT_PLAYER = 0x440019,
- SMSG_LFG_DISABLED = 0x440017,
- SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x44001F,
- SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x440009,
- SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE = 0x440020,
- SMSG_LFG_JOIN_RESULT = 0x440000,
- SMSG_LFG_LIST_APPLICANT_LIST_UPDATE = 0x44000F,
- SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE = 0x44000C,
- SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT = 0x44000D,
- SMSG_LFG_LIST_JOIN_RESULT = 0x440001,
- SMSG_LFG_LIST_SEARCH_RESULTS = 0x440002,
- SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE = 0x440010,
- SMSG_LFG_LIST_SEARCH_STATUS = 0x440003,
- SMSG_LFG_LIST_UPDATE_BLACKLIST = 0x44000E,
- SMSG_LFG_LIST_UPDATE_EXPIRATION = 0x44000B,
- SMSG_LFG_LIST_UPDATE_STATUS = 0x44000A,
- SMSG_LFG_OFFER_CONTINUE = 0x440018,
- SMSG_LFG_PARTY_INFO = 0x44001A,
- SMSG_LFG_PLAYER_INFO = 0x44001B,
- SMSG_LFG_PLAYER_REWARD = 0x44001C,
- SMSG_LFG_PROPOSAL_UPDATE = 0x440011,
- SMSG_LFG_QUEUE_STATUS = 0x440004,
- SMSG_LFG_READY_CHECK_RESULT = 0x44001E,
- SMSG_LFG_READY_CHECK_UPDATE = 0x440006,
- SMSG_LFG_ROLE_CHECK_UPDATE = 0x440005,
- SMSG_LFG_SLOT_INVALID = 0x440014,
- SMSG_LFG_TELEPORT_DENIED = 0x440016,
- SMSG_LFG_UPDATE_STATUS = 0x440008,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x36020B,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x36020A,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3601FE,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x36020C,
- SMSG_LOAD_CUF_PROFILES = 0x360055,
- SMSG_LOAD_EQUIPMENT_SET = 0x3601AC,
- SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x360312,
- SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x360313,
- SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x360314,
- SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED = 0x360316,
- SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT = 0x360317,
- SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x360315,
- SMSG_LOGIN_SET_TIME_SPEED = 0x3601AB,
- SMSG_LOGIN_VERIFY_WORLD = 0x36002F,
- SMSG_LOGOUT_CANCEL_ACK = 0x360124,
- SMSG_LOGOUT_COMPLETE = 0x360123,
- SMSG_LOGOUT_RESPONSE = 0x360122,
- SMSG_LOG_XP_GAIN = 0x360182,
- SMSG_LOOT_ALL_PASSED = 0x3600BE,
- SMSG_LOOT_LIST = 0x3601DD,
- SMSG_LOOT_MONEY_NOTIFY = 0x3600B9,
- SMSG_LOOT_RELEASE = 0x3600B8,
- SMSG_LOOT_RELEASE_ALL = 0x3600B7,
- SMSG_LOOT_REMOVED = 0x3600B3,
- SMSG_LOOT_RESPONSE = 0x3600B2,
- SMSG_LOOT_ROLL = 0x3600BB,
- SMSG_LOOT_ROLLS_COMPLETE = 0x3600BD,
- SMSG_LOOT_ROLL_WON = 0x3600BF,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x36010E,
- SMSG_MAIL_COMMAND_RESULT = 0x3600D8,
- SMSG_MAIL_LIST_RESULT = 0x3601F2,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x3601F3,
- SMSG_MAP_OBJECTIVES_INIT = 0x3C002A,
- SMSG_MAP_OBJ_EVENTS = 0x36005F,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x3600BC,
- SMSG_MEETING_STONE_FAILED = 0x360318,
- SMSG_MESSAGE_BOX = 0x36000A,
- SMSG_MINIMAP_PING = 0x36016C,
- SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x4D0004,
- SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x4D0003,
- SMSG_MIRROR_VARS = 0x360359,
- SMSG_MISSILE_CANCEL = 0x360060,
- SMSG_MODIFY_COOLDOWN = 0x360200,
- SMSG_MOTD = 0x3B0003,
- SMSG_MOUNT_RESULT = 0x36000F,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x3602C7,
- SMSG_MOVE_ADD_IMPULSE = 0x480062,
- SMSG_MOVE_APPLY_INERTIA = 0x48005E,
- SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x480045,
- SMSG_MOVE_DISABLE_COLLISION = 0x480041,
- SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x48002B,
- SMSG_MOVE_DISABLE_FULL_SPEED_TURNING = 0x480075,
- SMSG_MOVE_DISABLE_GRAVITY = 0x48003D,
- SMSG_MOVE_DISABLE_INERTIA = 0x48003F,
- SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x48003C,
- SMSG_MOVE_ENABLE_COLLISION = 0x480042,
- SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x48002A,
- SMSG_MOVE_ENABLE_FULL_SPEED_TURNING = 0x480074,
- SMSG_MOVE_ENABLE_GRAVITY = 0x48003E,
- SMSG_MOVE_ENABLE_INERTIA = 0x480040,
- SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x48003B,
- SMSG_MOVE_KNOCK_BACK = 0x480031,
- SMSG_MOVE_REMOVE_INERTIA = 0x48005F,
- SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x480046,
- SMSG_MOVE_ROOT = 0x480027,
- SMSG_MOVE_SET_ACTIVE_MOVER = 0x480003,
- SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = 0x48006B,
- SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = 0x480066,
- SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = 0x48006C,
- SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = 0x480069,
- SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = 0x48006A,
- SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = 0x480072,
- SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = 0x480068,
- SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = 0x480067,
- SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = 0x480071,
- SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = 0x48006D,
- SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0x48006E,
- SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0x480070,
- SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0x48006F,
- SMSG_MOVE_SET_CANT_SWIM = 0x480035,
- SMSG_MOVE_SET_CAN_ADV_FLY = 0x480064,
- SMSG_MOVE_SET_CAN_DRIVE = 0x480076,
- SMSG_MOVE_SET_CAN_FLY = 0x480033,
- SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x480037,
- SMSG_MOVE_SET_COLLISION_HEIGHT = 0x480043,
- SMSG_MOVE_SET_COMPOUND_STATE = 0x480047,
- SMSG_MOVE_SET_FEATHER_FALL = 0x48002D,
- SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x480023,
- SMSG_MOVE_SET_FLIGHT_SPEED = 0x480022,
- SMSG_MOVE_SET_HOVERING = 0x48002F,
- SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x480039,
- SMSG_MOVE_SET_LAND_WALK = 0x48002C,
- SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x480014,
- SMSG_MOVE_SET_NORMAL_FALL = 0x48002E,
- SMSG_MOVE_SET_PITCH_RATE = 0x480026,
- SMSG_MOVE_SET_RUN_BACK_SPEED = 0x48001F,
- SMSG_MOVE_SET_RUN_SPEED = 0x48001E,
- SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x480021,
- SMSG_MOVE_SET_SWIM_SPEED = 0x480020,
- SMSG_MOVE_SET_TURN_RATE = 0x480025,
- SMSG_MOVE_SET_VEHICLE_REC_ID = 0x480044,
- SMSG_MOVE_SET_WALK_SPEED = 0x480024,
- SMSG_MOVE_SET_WATER_WALK = 0x480029,
- SMSG_MOVE_SKIP_TIME = 0x480048,
- SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x48004D,
- SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x48004B,
- SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x48004E,
- SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x48004C,
- SMSG_MOVE_SPLINE_ROOT = 0x480049,
- SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x48004F,
- SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0x48001A,
- SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x480019,
- SMSG_MOVE_SPLINE_SET_FLYING = 0x480059,
- SMSG_MOVE_SPLINE_SET_HOVER = 0x480051,
- SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x480054,
- SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x480050,
- SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0x48001D,
- SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x480016,
- SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x480057,
- SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x480015,
- SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0x480018,
- SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0x480017,
- SMSG_MOVE_SPLINE_SET_TURN_RATE = 0x48001C,
- SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x480058,
- SMSG_MOVE_SPLINE_SET_WALK_SPEED = 0x48001B,
- SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x480053,
- SMSG_MOVE_SPLINE_START_SWIM = 0x480055,
- SMSG_MOVE_SPLINE_STOP_SWIM = 0x480056,
- SMSG_MOVE_SPLINE_UNROOT = 0x48004A,
- SMSG_MOVE_SPLINE_UNSET_FLYING = 0x48005A,
- SMSG_MOVE_SPLINE_UNSET_HOVER = 0x480052,
- SMSG_MOVE_TELEPORT = 0x480032,
- SMSG_MOVE_UNROOT = 0x480028,
- SMSG_MOVE_UNSET_CANT_SWIM = 0x480036,
- SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x480065,
- SMSG_MOVE_UNSET_CAN_DRIVE = 0x480077,
- SMSG_MOVE_UNSET_CAN_FLY = 0x480034,
- SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x480038,
- SMSG_MOVE_UNSET_HOVERING = 0x480030,
- SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x48003A,
- SMSG_MOVE_UPDATE = 0x48000E,
- SMSG_MOVE_UPDATE_ADD_IMPULSE = 0x480063,
- SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x480060,
- SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x480012,
- SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x48000D,
- SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x48000A,
- SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x480009,
- SMSG_MOVE_UPDATE_KNOCK_BACK = 0x480010,
- SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x480011,
- SMSG_MOVE_UPDATE_PITCH_RATE = 0x48000C,
- SMSG_MOVE_UPDATE_REMOVE_INERTIA = 0x480061,
- SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x480013,
- SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x480005,
- SMSG_MOVE_UPDATE_RUN_SPEED = 0x480004,
- SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x480008,
- SMSG_MOVE_UPDATE_SWIM_SPEED = 0x480007,
- SMSG_MOVE_UPDATE_TELEPORT = 0x48000F,
- SMSG_MOVE_UPDATE_TURN_RATE = 0x48000B,
- SMSG_MOVE_UPDATE_WALK_SPEED = 0x480006,
- SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x360276,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0x360275,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x3600A8,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x3600AA,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x3600AF,
- SMSG_MYTHIC_PLUS_SEASON_DATA = 0x3600A9,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x360074,
- SMSG_NEW_DATA_BUILD = 0x36033C,
- SMSG_NEW_TAXI_PATH = 0x36011D,
- SMSG_NEW_WORLD = 0x36002B,
- SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x4D0034,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x360149,
- SMSG_NOTIFY_MONEY = 0x360031,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x3600D9,
- SMSG_NPC_INTERACTION_OPEN_RESULT = 0x36030E,
- SMSG_OFFER_PETITION_ERROR = 0x360154,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x360183,
- SMSG_ON_MONSTER_MOVE = 0x480002,
- SMSG_OPEN_ARTIFACT_FORGE = 0x36023A,
- SMSG_OPEN_CONTAINER = 0x4E0006,
- SMSG_OPEN_LFG_DUNGEON_FINDER = 0x440015,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x360232,
- SMSG_OVERRIDE_LIGHT = 0x360159,
- SMSG_PAGE_TEXT = 0x3601B7,
- SMSG_PARTY_COMMAND_RESULT = 0x36022C,
- SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x360351,
- SMSG_PARTY_INVITE = 0x360056,
- SMSG_PARTY_KILL_LOG = 0x3601F6,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x3601F5,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x3601F4,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x3602F7,
- SMSG_PARTY_UPDATE = 0x36008C,
- SMSG_PAST_TIME_EVENTS = 0x36005B,
- SMSG_PAUSE_MIRROR_TIMER = 0x3601AE,
- SMSG_PENDING_RAID_LOCK = 0x360195,
- SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x36030B,
- SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x360307,
- SMSG_PERKS_PROGRAM_DISABLED = 0x36030C,
- SMSG_PERKS_PROGRAM_RESULT = 0x360308,
- SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x360306,
- SMSG_PETITION_ALREADY_SIGNED = 0x360037,
- SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x420042,
- SMSG_PETITION_SHOW_LIST = 0x36015C,
- SMSG_PETITION_SHOW_SIGNATURES = 0x36015D,
- SMSG_PETITION_SIGN_RESULTS = 0x3601E8,
- SMSG_PET_ACTION_FEEDBACK = 0x3601E5,
- SMSG_PET_ACTION_SOUND = 0x36013F,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x36009E,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x360113,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x360097,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x36009C,
- SMSG_PET_BATTLE_FINISHED = 0x36009D,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x360099,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x360098,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x36009F,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x360096,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x3600D6,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x3600D7,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x36009B,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x360095,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x36009A,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x360084,
- SMSG_PET_CAST_FAILED = 0x4D0049,
- SMSG_PET_CLEAR_SPELLS = 0x4D0013,
- SMSG_PET_DISMISS_SOUND = 0x360140,
- SMSG_PET_GOD_MODE = 0x36011A,
- SMSG_PET_GUIDS = 0x3601A1,
- SMSG_PET_LEARNED_SPELLS = 0x4D0040,
- SMSG_PET_MODE = 0x36001F,
- SMSG_PET_NAME_INVALID = 0x360161,
- SMSG_PET_NEWLY_TAMED = 0x36001E,
- SMSG_PET_SPELLS_MESSAGE = 0x4D0014,
- SMSG_PET_STABLE_RESULT = 0x36002A,
- SMSG_PET_TAME_FAILURE = 0x360151,
- SMSG_PET_UNLEARNED_SPELLS = 0x4D0041,
- SMSG_PHASE_SHIFT_CHANGE = 0x36000C,
- SMSG_PLAYED_TIME = 0x360173,
- SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x4A002D,
- SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x4A001F,
- SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x4A001E,
- SMSG_PLAYER_BONUS_ROLL_FAILED = 0x4A0021,
- SMSG_PLAYER_BOUND = 0x4A0000,
- SMSG_PLAYER_CHOICE_CLEAR = 0x4A0006,
- SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x4A0005,
- SMSG_PLAYER_CONDITION_RESULT = 0x4A0012,
- SMSG_PLAYER_END_OF_MATCH_DETAILS = 0x4A002F,
- SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x4A002C,
- SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x4A0011,
- SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x4A0016,
- SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x420041,
- SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = 0x4A002E,
- SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x4A002B,
- SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x4A0029,
- SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0x4A002A,
- SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x4A0024,
- SMSG_PLAYER_SKINNED = 0x4A000E,
- SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x4A0015,
- SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x4A0014,
- SMSG_PLAY_MUSIC = 0x360205,
- SMSG_PLAY_OBJECT_SOUND = 0x360207,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x3601CD,
- SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x4D0038,
- SMSG_PLAY_SCENE = 0x3600D3,
- SMSG_PLAY_SOUND = 0x360204,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x360208,
- SMSG_PLAY_SPELL_VISUAL = 0x4D0036,
- SMSG_PLAY_SPELL_VISUAL_KIT = 0x4D003A,
- SMSG_PLAY_TIME_WARNING = 0x36019B,
- SMSG_PONG = 0x3D0006,
- SMSG_POWER_UPDATE = 0x360170,
- SMSG_PRELOAD_CHILD_MAP = 0x36000D,
- SMSG_PRELOAD_WORLD = 0x36002C,
- SMSG_PREPOPULATE_NAME_CACHE = 0x3602CA,
- SMSG_PRE_RESSURECT = 0x360203,
- SMSG_PRINT_NOTIFICATION = 0x360063,
- SMSG_PROC_RESIST = 0x3601F7,
- SMSG_PROFESSION_GOSSIP = 0x360296,
- SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x4D0042,
- SMSG_PVP_CREDIT = 0x3C0024,
- SMSG_PVP_MATCH_COMPLETE = 0x3C002F,
- SMSG_PVP_MATCH_INITIALIZE = 0x3C0030,
- SMSG_PVP_MATCH_SET_STATE = 0x3C002E,
- SMSG_PVP_MATCH_START = 0x3C002D,
- SMSG_PVP_MATCH_STATISTICS = 0x3C0010,
- SMSG_PVP_OPTIONS_ENABLED = 0x3C0013,
- SMSG_PVP_TIER_RECORD = 0x360302,
- SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x3A000C,
- SMSG_QUERY_CREATURE_RESPONSE = 0x3A0006,
- SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x3A0007,
- SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x400041,
- SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = 0x42002F,
- SMSG_QUERY_GUILD_INFO_RESPONSE = 0x42002D,
- SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x3A0010,
- SMSG_QUERY_NPC_TEXT_RESPONSE = 0x3A0008,
- SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x3A0009,
- SMSG_QUERY_PETITION_RESPONSE = 0x3A000D,
- SMSG_QUERY_PET_NAME_RESPONSE = 0x3A000B,
- SMSG_QUERY_PLAYER_NAMES_RESPONSE = 0x4A0026,
- SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x4A000A,
- SMSG_QUERY_QUEST_INFO_RESPONSE = 0x4B0016,
- SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x42002E,
- SMSG_QUERY_TIME_RESPONSE = 0x360181,
- SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x4B0001,
- SMSG_QUEST_CONFIRM_ACCEPT = 0x4B000F,
- SMSG_QUEST_FORCE_REMOVED = 0x4B001C,
- SMSG_QUEST_GIVER_INVALID_QUEST = 0x4B0005,
- SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x4B0014,
- SMSG_QUEST_GIVER_QUEST_COMPLETE = 0x4B0003,
- SMSG_QUEST_GIVER_QUEST_DETAILS = 0x4B0012,
- SMSG_QUEST_GIVER_QUEST_FAILED = 0x4B0006,
- SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x4B001A,
- SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x4B0013,
- SMSG_QUEST_GIVER_STATUS = 0x4B001B,
- SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x4B0011,
- SMSG_QUEST_ITEM_USABILITY_RESPONSE = 0x4B0002,
- SMSG_QUEST_LOG_FULL = 0x4B0007,
- SMSG_QUEST_NON_LOG_UPDATE_COMPLETE = 0x4B0008,
- SMSG_QUEST_POI_QUERY_RESPONSE = 0x4B001D,
- SMSG_QUEST_POI_UPDATE_RESPONSE = 0x4B001F,
- SMSG_QUEST_PUSH_RESULT = 0x4B0010,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x3602ED,
- SMSG_QUEST_SESSION_READY_CHECK = 0x3602DB,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x3602DC,
- SMSG_QUEST_SESSION_RESULT = 0x3602DA,
- 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 = 0x3602A9,
- SMSG_RAF_ACCOUNT_INFO = 0x3602D8,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x3602E9,
- SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x360339,
- SMSG_RAID_DIFFICULTY_SET = 0x360244,
- SMSG_RAID_GROUP_ONLY = 0x360246,
- SMSG_RAID_INSTANCE_MESSAGE = 0x3B000A,
- SMSG_RAID_MARKERS_CHANGED = 0x360038,
- SMSG_RANDOM_ROLL = 0x3600CD,
- SMSG_RATED_PVP_INFO = 0x3C000F,
- SMSG_READY_CHECK_COMPLETED = 0x360090,
- SMSG_READY_CHECK_RESPONSE = 0x36008F,
- SMSG_READY_CHECK_STARTED = 0x36008E,
- SMSG_READ_ITEM_RESULT_FAILED = 0x360240,
- SMSG_READ_ITEM_RESULT_OK = 0x360237,
- SMSG_REALM_QUERY_RESPONSE = 0x3A0005,
- SMSG_REATTACH_RESURRECT = 0x3601E7,
- SMSG_RECEIVE_PING_UNIT = 0x360039,
- SMSG_RECEIVE_PING_WORLD_POINT = 0x36003A,
- SMSG_RECENT_ALLY_DATA_RESPONSE = 0x360354,
- SMSG_RECENT_ALLY_NOTE_UPDATED = 0x360355,
- SMSG_RECRAFT_ITEM_RESULT = 0x36032F,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x36015E,
- SMSG_REFRESH_COMPONENT = 0x3600ED,
- SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x36001A,
- SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x360019,
- SMSG_REMOVE_ITEM_PASSIVE = 0x360043,
- SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x4D0043,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x36025C,
- SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x4A0009,
- SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x360025,
- SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x3C0014,
- SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x3C0015,
- SMSG_RESET_COMPRESSION_CONTEXT = 0x3D0007,
- SMSG_RESET_FAILED_NOTIFY = 0x360155,
- SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x360336,
- SMSG_RESET_QUEST_POI = 0x4B0020,
- SMSG_RESET_RANGED_COMBAT_TIMER = 0x3C0023,
- SMSG_RESET_WEEKLY_CURRENCY = 0x360009,
- SMSG_RESPEC_WIPE_CONFIRM = 0x3600B0,
- SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x360006,
- SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x360309,
- SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x36030A,
- SMSG_RESTART_GLOBAL_COOLDOWN = 0x4D0052,
- SMSG_RESTRICTED_ACCOUNT_WARNING = 0x360052,
- SMSG_RESUME_CAST = 0x4D002C,
- SMSG_RESUME_CAST_BAR = 0x4D002F,
- SMSG_RESUME_COMMS = 0x3D0003,
- SMSG_RESUME_TOKEN = 0x360041,
- SMSG_RESURRECT_REQUEST = 0x360012,
- SMSG_RESYNC_RUNES = 0x4D0050,
- SMSG_RETURNING_PLAYER_PROMPT = 0x36023F,
- SMSG_RETURN_APPLICANT_LIST = 0x3602CE,
- SMSG_RETURN_RECRUITING_CLUBS = 0x3602CD,
- SMSG_ROLE_CHANGED_INFORM = 0x360021,
- SMSG_ROLE_CHOSEN = 0x44001D,
- SMSG_ROLE_POLL_INFORM = 0x360022,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x360295,
- SMSG_RUNE_REGEN_DEBUG = 0x36004F,
- SMSG_SCENARIO_COMPLETED = 0x360283,
- SMSG_SCENARIO_POIS = 0x3600D0,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x3600C9,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x360299,
- SMSG_SCENARIO_STATE = 0x3600C8,
- SMSG_SCENARIO_UI_UPDATE = 0x360298,
- SMSG_SCENARIO_VACATE = 0x360241,
- SMSG_SCENE_OBJECT_EVENT = 0x36007A,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x36007F,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x360080,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x36007C,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x36007B,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x36007E,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x36007D,
- SMSG_SCHEDULED_AREA_POI_UPDATE_RESPONSE = 0x4A0019,
- SMSG_SCRIPT_CAST = 0x4D0047,
- SMSG_SEASON_INFO = 0x36005A,
- SMSG_SELL_RESPONSE = 0x360162,
- SMSG_SEND_ITEM_PASSIVES = 0x360044,
- SMSG_SEND_KNOWN_SPELLS = 0x4D0019,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x3600CB,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x3600CC,
- SMSG_SEND_SPELL_CHARGES = 0x4D001B,
- SMSG_SEND_SPELL_HISTORY = 0x4D001A,
- SMSG_SEND_UNLEARN_SPELLS = 0x4D001C,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x3600EA,
- SMSG_SERVER_TIME = 0x360121,
- SMSG_SERVER_TIME_OFFSET = 0x3601B2,
- SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x4D000F,
- SMSG_SETUP_CURRENCY = 0x360007,
- SMSG_SET_AI_ANIM_KIT = 0x3601CC,
- SMSG_SET_ANIM_TIER = 0x3601D0,
- SMSG_SET_CHR_UPGRADE_TIER = 0x360077,
- SMSG_SET_CURRENCY = 0x360008,
- SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x440012,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x360143,
- SMSG_SET_FACTION_AT_WAR = 0x36019D,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x3601C7,
- SMSG_SET_FACTION_STANDING = 0x3601C8,
- SMSG_SET_FACTION_VISIBLE = 0x3601C6,
- SMSG_SET_FLAT_SPELL_MODIFIER = 0x4D0027,
- SMSG_SET_INSTANCE_LEAVER = 0x36035A,
- SMSG_SET_ITEM_PURCHASE_DATA = 0x360033,
- SMSG_SET_LOOT_METHOD_FAILED = 0x360267,
- SMSG_SET_MAX_WEEKLY_QUANTITY = 0x360036,
- SMSG_SET_MELEE_ANIM_KIT = 0x3601CF,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x3601CE,
- SMSG_SET_PCT_SPELL_MODIFIER = 0x4D0028,
- SMSG_SET_PET_SPECIALIZATION = 0x3600C2,
- SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x4A000B,
- SMSG_SET_PLAY_HOVER_ANIM = 0x360053,
- SMSG_SET_PROFICIENCY = 0x3601D1,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x3602E1,
- SMSG_SET_SHIPMENT_READY_RESPONSE = 0x40003A,
- SMSG_SET_SPELL_CHARGES = 0x4D0018,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x360116,
- SMSG_SET_VEHICLE_REC_ID = 0x360194,
- SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x36030D,
- SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x40003B,
- SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x36034F,
- SMSG_SHOW_DELVES_DISPLAY_UI = 0x36034D,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x360073,
- SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x4B0015,
- SMSG_SHOW_TAXI_NODES = 0x36016B,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x36020D,
- SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x360319,
- SMSG_SOCKET_GEMS_FAILURE = 0x3601C4,
- SMSG_SOCKET_GEMS_SUCCESS = 0x3601C3,
- SMSG_SPECIAL_MOUNT_ANIM = 0x36013E,
- SMSG_SPECTATE_END = 0x36033B,
- SMSG_SPECTATE_PLAYER = 0x36033A,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x3601B6,
- SMSG_SPELL_ABSORB_LOG = 0x4D000C,
- SMSG_SPELL_CATEGORY_COOLDOWN = 0x4D0006,
- SMSG_SPELL_CHANNEL_START = 0x4D0022,
- SMSG_SPELL_CHANNEL_UPDATE = 0x4D0023,
- SMSG_SPELL_COOLDOWN = 0x4D0005,
- SMSG_SPELL_DAMAGE_SHIELD = 0x4D001F,
- SMSG_SPELL_DELAYED = 0x4D0030,
- SMSG_SPELL_DISPELL_LOG = 0x4D0007,
- SMSG_SPELL_EMPOWER_SET_STAGE = 0x4D0026,
- SMSG_SPELL_EMPOWER_START = 0x4D0024,
- SMSG_SPELL_EMPOWER_UPDATE = 0x4D0025,
- SMSG_SPELL_ENERGIZE_LOG = 0x4D0009,
- SMSG_SPELL_EXECUTE_LOG = 0x4D0031,
- SMSG_SPELL_FAILED_OTHER = 0x4D0046,
- SMSG_SPELL_FAILURE = 0x4D0044,
- SMSG_SPELL_FAILURE_MESSAGE = 0x4D004B,
- SMSG_SPELL_GO = 0x4D002A,
- SMSG_SPELL_HEAL_ABSORB_LOG = 0x4D000B,
- SMSG_SPELL_HEAL_LOG = 0x4D000A,
- SMSG_SPELL_INSTAKILL_LOG = 0x4D0021,
- SMSG_SPELL_INTERRUPT_LOG = 0x4D000D,
- SMSG_SPELL_MISS_LOG = 0x4D0032,
- SMSG_SPELL_NON_MELEE_DAMAGE_LOG = 0x4D0020,
- SMSG_SPELL_OR_DAMAGE_IMMUNE = 0x4D001D,
- SMSG_SPELL_PERIODIC_AURA_LOG = 0x4D0008,
- SMSG_SPELL_PREPARE = 0x4D0029,
- SMSG_SPELL_START = 0x4D002B,
- SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x360065,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x3602F3,
- SMSG_STAND_STATE_UPDATE = 0x3601BA,
- SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x36006B,
- SMSG_START_ELAPSED_TIMER = 0x3600A0,
- SMSG_START_ELAPSED_TIMERS = 0x3600A2,
- SMSG_START_LIGHTNING_STORM = 0x360146,
- SMSG_START_LOOT_ROLL = 0x3600BA,
- SMSG_START_MIRROR_TIMER = 0x3601AD,
- SMSG_START_TIMER = 0x36003D,
- SMSG_STOP_ELAPSED_TIMER = 0x3600A1,
- SMSG_STOP_MIRROR_TIMER = 0x3601AF,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x360209,
- SMSG_STOP_TIMER = 0x36003E,
- SMSG_STREAMING_MOVIES = 0x36003C,
- SMSG_SUGGEST_INVITE_INFORM = 0x36022D,
- SMSG_SUMMON_CANCEL = 0x36014F,
- SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x360023,
- SMSG_SUMMON_REQUEST = 0x3601BE,
- SMSG_SUPERCEDED_SPELLS = 0x4D003D,
- SMSG_SURVEY_DELIVERED = 0x360357,
- SMSG_SUSPEND_COMMS = 0x3D0002,
- SMSG_SUSPEND_TOKEN = 0x360040,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x3602EB,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x3601B5,
- SMSG_TAXI_NODE_STATUS = 0x36011B,
- SMSG_TEXT_EMOTE = 0x360119,
- SMSG_THREAT_CLEAR = 0x36017A,
- SMSG_THREAT_REMOVE = 0x360179,
- SMSG_THREAT_UPDATE = 0x360178,
- SMSG_TIMERUNNING_SEASON_ENDED = 0x360350,
- SMSG_TIME_ADJUSTMENT = 0x480001,
- SMSG_TIME_SYNC_REQUEST = 0x480000,
- SMSG_TITLE_EARNED = 0x360175,
- SMSG_TITLE_LOST = 0x360176,
- SMSG_TOTEM_CREATED = 0x360165,
- SMSG_TOTEM_DURATION_CHANGED = 0x360167,
- SMSG_TOTEM_MOVED = 0x360168,
- SMSG_TOTEM_REMOVED = 0x360166,
- SMSG_TRADE_STATUS = 0x360017,
- SMSG_TRADE_UPDATED = 0x360016,
- SMSG_TRAINER_BUY_FAILED = 0x36017D,
- SMSG_TRAINER_LIST = 0x36017C,
- SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x36006A,
- SMSG_TRANSFER_ABORTED = 0x3601A0,
- SMSG_TRANSFER_PENDING = 0x360066,
- SMSG_TREASURE_PICKER_RESPONSE = 0x3A0011,
- SMSG_TRIGGER_CINEMATIC = 0x360261,
- SMSG_TRIGGER_MOVIE = 0x360169,
- SMSG_TURN_IN_PETITION_RESULT = 0x3601EA,
- SMSG_TUTORIAL_FLAGS = 0x360255,
- SMSG_UI_ACTION = 0x360206,
- SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x4B0023,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x360262,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x360263,
- SMSG_UNLEARNED_SPELLS = 0x4D003F,
- SMSG_UNLOAD_CHILD_MAP = 0x36000E,
- SMSG_UNSET_INSTANCE_LEAVER = 0x36035B,
- SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x360303,
- SMSG_UPDATE_ACCOUNT_DATA = 0x3601A6,
- SMSG_UPDATE_ACCOUNT_DATA_COMPLETE = 0x3601A7,
- SMSG_UPDATE_ACTION_BUTTONS = 0x360078,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x3602BB,
- SMSG_UPDATE_CAPTURE_POINT = 0x3C0007,
- SMSG_UPDATE_CELESTIAL_BODY = 0x3602B7,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x36025B,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x360202,
- SMSG_UPDATE_COOLDOWN = 0x360201,
- SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x400038,
- SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x400021,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x3600E3,
- SMSG_UPDATE_GAME_TIME_STATE = 0x3602BE,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x360148,
- SMSG_UPDATE_LAST_INSTANCE = 0x360127,
- SMSG_UPDATE_OBJECT = 0x460000,
- SMSG_UPDATE_PRIMARY_SPEC = 0x360070,
- SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x36008D,
- SMSG_UPDATE_TALENT_DATA = 0x36006F,
- SMSG_UPDATE_WORLD_STATE = 0x3601E4,
- SMSG_USERLIST_ADD = 0x3B000F,
- SMSG_USERLIST_REMOVE = 0x3B0010,
- SMSG_USERLIST_UPDATE = 0x3B0011,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x3601EB,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x3602B2,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x3602B0,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x3602AF,
- SMSG_VAS_PURCHASE_COMPLETE = 0x360289,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x360288,
- SMSG_VENDOR_INVENTORY = 0x360051,
- SMSG_VIGNETTE_UPDATE = 0x4A0010,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x3602B6,
- SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x3602FE,
- SMSG_VOICE_LOGIN_RESPONSE = 0x3602B5,
- SMSG_VOID_ITEM_SWAP_RESPONSE = 0x4E0004,
- SMSG_VOID_STORAGE_CONTENTS = 0x4E0001,
- SMSG_VOID_STORAGE_FAILED = 0x4E0000,
- SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x4E0002,
- SMSG_VOID_TRANSFER_RESULT = 0x4E0003,
- SMSG_WAIT_QUEUE_FINISH = 0x360003,
- SMSG_WAIT_QUEUE_UPDATE = 0x360002,
- SMSG_WARDEN3_DATA = 0x36000B,
- SMSG_WARDEN3_DISABLED = 0x3602B9,
- SMSG_WARDEN3_ENABLED = 0x3602B8,
- SMSG_WARFRONT_COMPLETE = 0x3601FA,
- SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x3C0012,
- SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x3C0011,
- SMSG_WEATHER = 0x360145,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x3602F6,
- SMSG_WEEKLY_REWARDS_RESULT = 0x3602F4,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x3602F5,
- SMSG_WHO = 0x3B0002,
- SMSG_WHO_IS = 0x360144,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x3602BD,
- SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x4A0017,
- SMSG_WORLD_SERVER_INFO = 0x360045,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x3602EC,
- SMSG_WOW_LABS_AREA_INFO = 0x36031E,
- SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x36031A,
- SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x36031B,
- SMSG_WOW_LABS_PARTY_ERROR = 0x360327,
- SMSG_WOW_LABS_SET_AREA_ID_RESULT = 0x36031C,
- SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x360320,
- SMSG_WOW_LABS_SET_SELECTED_AREA_ID = 0x36031D,
- SMSG_XP_AWARDED_FROM_CURRENCY = 0x360335,
- SMSG_XP_GAIN_ABORTED = 0x360062,
- SMSG_XP_GAIN_ENABLED = 0x360245,
- SMSG_ZONE_UNDER_ATTACK = 0x3B000B,
-
- // Opcodes that are not generated automatically
- SMSG_ACCOUNT_HEIRLOOM_UPDATE = SMSG_ACCOUNT_TOY_UPDATE + 1, // no client handler
- SMSG_COMPRESSED_PACKET = SMSG_AUTH_CHALLENGE + 0xA,
- SMSG_MULTIPLE_PACKETS = SMSG_AUTH_CHALLENGE + 0x9,
+ SMSG_ABORT_NEW_WORLD = 0x400030,
+ SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x40034B,
+ SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x400350,
+ SMSG_ACCOUNT_COSMETIC_ADDED = 0x400304,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x4002EC,
+ SMSG_ACCOUNT_DATA_TIMES = 0x4001AD,
+ SMSG_ACCOUNT_EXPORT_RESPONSE = 0x40033C,
+ SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x400049,
+ SMSG_ACCOUNT_HOUSING_FIXTURE_ADDED = 0x400050,
+ SMSG_ACCOUNT_HOUSING_ROOM_ADDED = 0x40004F,
+ SMSG_ACCOUNT_HOUSING_ROOM_COMPONENT_TEXTURE_ADDED = 0x400052,
+ SMSG_ACCOUNT_HOUSING_THEME_ADDED = 0x400051,
+ SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x400356,
+ SMSG_ACCOUNT_MOUNT_REMOVED = 0x400047,
+ SMSG_ACCOUNT_MOUNT_UPDATE = 0x400046,
+ SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x400303,
+ SMSG_ACCOUNT_STORE_CURRENCY_UPDATE = 0x400325,
+ SMSG_ACCOUNT_STORE_FRONT_UPDATE = 0x400326,
+ SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED = 0x400327,
+ SMSG_ACCOUNT_STORE_RESULT = 0x400328,
+ SMSG_ACCOUNT_TOY_UPDATE = 0x400048,
+ SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x40004C,
+ SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x40004B,
+ SMSG_ACCOUNT_WARBAND_SCENE_UPDATE = 0x40004E,
+ SMSG_ACHIEVEMENT_DELETED = 0x40018A,
+ SMSG_ACHIEVEMENT_EARNED = 0x4000E5,
+ SMSG_ACTIVATE_ESSENCE_FAILED = 0x5C0021,
+ SMSG_ACTIVATE_SOULBIND_FAILED = 0x5C0023,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x400121,
+ SMSG_ACTIVE_GLYPHS = 0x5F0045,
+ SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x4001E8,
+ SMSG_ADDON_LIST_REQUEST = 0x4000E4,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x4000DF,
+ SMSG_ADD_ITEM_PASSIVE = 0x400042,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x400114,
+ SMSG_ADD_RUNE_POWER = 0x40015B,
+ SMSG_ADJUST_SPLINE_DURATION = 0x40006D,
+ SMSG_ADVANCED_COMBAT_LOG = 0x400301,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x4002FC,
+ SMSG_AE_LOOT_TARGETS = 0x4000BA,
+ SMSG_AE_LOOT_TARGET_ACK = 0x4000BB,
+ SMSG_AI_REACTION = 0x400158,
+ SMSG_ALLIED_RACE_DETAILS = 0x400295,
+ SMSG_ALL_ACCOUNT_CRITERIA = 0x400005,
+ SMSG_ALL_ACHIEVEMENT_DATA = 0x400004,
+ SMSG_ALL_GUILD_ACHIEVEMENTS = 0x4C0000,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x4002D9,
+ SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x40001D,
+ SMSG_AREA_POI_UPDATE_RESPONSE = 0x5C0019,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x4001E1,
+ SMSG_AREA_TRIGGER_DENIED = 0x410004,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x4001B9,
+ SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x410002,
+ SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x410003,
+ SMSG_ARENA_CLEAR_OPPONENTS = 0x4000EB,
+ SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x4000D4,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x4000EA,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x400243,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x400241,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x400242,
+ SMSG_ARTIFACT_XP_GAIN = 0x400288,
+ SMSG_ATTACKER_STATE_UPDATE = 0x46002C,
+ SMSG_ATTACK_START = 0x460017,
+ SMSG_ATTACK_STOP = 0x460018,
+ SMSG_ATTACK_SWING_ERROR = 0x460026,
+ SMSG_ATTACK_SWING_LANDED_LOG = 0x460027,
+ SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x400271,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x400270,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x40026F,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x400195,
+ SMSG_AUCTION_COMMAND_RESULT = 0x400192,
+ SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x400329,
+ SMSG_AUCTION_FAVORITE_LIST = 0x4002F3,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x4002EB,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x400190,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x4002EA,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x4002E6,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x4002E7,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x4002E9,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x400194,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x400196,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x400191,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x400193,
+ SMSG_AURA_POINTS_DEPLETED = 0x5F0012,
+ SMSG_AURA_UPDATE = 0x5F0011,
+ SMSG_AUTH_CHALLENGE = 0x470000,
+ SMSG_AUTH_FAILED = 0x400000,
+ SMSG_AUTH_RESPONSE = 0x400001,
+ SMSG_AVAILABLE_HOTFIXES = 0x440001,
+ SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x40032A,
+ SMSG_BAG_CLEANUP_FINISHED = 0x600007,
+ SMSG_BARBER_SHOP_RESULT = 0x400160,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x4002CA,
+ SMSG_BATTLEFIELD_LIST = 0x460005,
+ SMSG_BATTLEFIELD_PORT_DENIED = 0x46000B,
+ SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x460001,
+ SMSG_BATTLEFIELD_STATUS_FAILED = 0x460004,
+ SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED = 0x46000E,
+ SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION = 0x460000,
+ SMSG_BATTLEFIELD_STATUS_NONE = 0x460003,
+ SMSG_BATTLEFIELD_STATUS_QUEUED = 0x460002,
+ SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x46000D,
+ SMSG_BATTLEGROUND_INFO_THROTTLED = 0x46000C,
+ SMSG_BATTLEGROUND_INIT = 0x460029,
+ SMSG_BATTLEGROUND_PLAYER_JOINED = 0x460009,
+ SMSG_BATTLEGROUND_PLAYER_LEFT = 0x46000A,
+ SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x460006,
+ SMSG_BATTLEGROUND_POINTS = 0x460028,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x40022B,
+ SMSG_BATTLENET_CHALLENGE_START = 0x40022A,
+ SMSG_BATTLENET_NOTIFICATION = 0x4002A1,
+ SMSG_BATTLENET_RESPONSE = 0x4002A0,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x4002A2,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x400226,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x40021B,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x40021C,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x400225,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x400219,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x400218,
+ SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x400309,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x400216,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x400217,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x400215,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x400213,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x400214,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x40021A,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x400224,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x4002BE,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x400222,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x400221,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x4002B1,
+ SMSG_BATTLE_PETS_HEALED = 0x40008F,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x40011C,
+ SMSG_BATTLE_PET_DELETED = 0x40008C,
+ SMSG_BATTLE_PET_ERROR = 0x4000DA,
+ SMSG_BATTLE_PET_JOURNAL = 0x40008B,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x400089,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x40008A,
+ SMSG_BATTLE_PET_RESTORED = 0x40008E,
+ SMSG_BATTLE_PET_REVOKED = 0x40008D,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x400087,
+ SMSG_BATTLE_PET_UPDATES = 0x400086,
+ SMSG_BIND_POINT_UPDATE = 0x400011,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x4000CA,
+ SMSG_BLACK_MARKET_OUTBID = 0x4000CB,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x4000C9,
+ SMSG_BLACK_MARKET_WON = 0x4000CC,
+ SMSG_BONUS_ROLL_EMPTY = 0x4000E7,
+ SMSG_BOSS_KILL = 0x46002B,
+ SMSG_BREAK_TARGET = 0x460016,
+ SMSG_BROADCAST_ACHIEVEMENT = 0x450012,
+ SMSG_BROADCAST_SUMMON_CAST = 0x4002CC,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x4002CD,
+ SMSG_BUY_FAILED = 0x400169,
+ SMSG_BUY_SUCCEEDED = 0x400168,
+ SMSG_CACHE_INFO = 0x44000F,
+ SMSG_CACHE_VERSION = 0x44000E,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x400141,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x400142,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x400131,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x400139,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x40013A,
+ SMSG_CALENDAR_INVITE_ADDED = 0x400132,
+ SMSG_CALENDAR_INVITE_ALERT = 0x400136,
+ SMSG_CALENDAR_INVITE_NOTES = 0x40013B,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x40013C,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x400133,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x400138,
+ SMSG_CALENDAR_INVITE_STATUS = 0x400134,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x400137,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x400135,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x40013D,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x40013E,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x40013F,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x40012F,
+ SMSG_CALENDAR_SEND_EVENT = 0x400130,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x400140,
+ SMSG_CAMERA_EFFECT = 0x4001C7,
+ SMSG_CANCEL_AUTO_REPEAT = 0x400180,
+ SMSG_CANCEL_COMBAT = 0x460025,
+ SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x5F0037,
+ SMSG_CANCEL_PING_PIN = 0x40003B,
+ SMSG_CANCEL_PRELOAD_WORLD = 0x40002E,
+ SMSG_CANCEL_SCENE = 0x4000D9,
+ SMSG_CANCEL_SPELL_VISUAL = 0x5F0035,
+ SMSG_CANCEL_SPELL_VISUAL_KIT = 0x5F0039,
+ SMSG_CAN_DUEL_RESULT = 0x460021,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x4002B0,
+ SMSG_CAPTURE_POINT_REMOVED = 0x460008,
+ SMSG_CAST_FAILED = 0x5F0048,
+ SMSG_CAS_REFRESH_REMOTE_DATA = 0x40011A,
+ SMSG_CATALOG_SHOP_LICENSE_DATA = 0x4002B2,
+ SMSG_CATALOG_SHOP_OBTAIN_LICENSE = 0x40035C,
+ SMSG_CATALOG_SHOP_OPEN_CHECKOUT_RESULT = 0x400357,
+ SMSG_CAUTIONARY_CHANNEL_MESSAGE = 0x450009,
+ SMSG_CAUTIONARY_CHAT_MESSAGE = 0x450008,
+ SMSG_CHAIN_MISSILE_BOUNCE = 0x400065,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x4000AA,
+ SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x4000AB,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERBOARD_RESULT = 0x4000B2,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x4000B1,
+ SMSG_CHALLENGE_MODE_RESET = 0x4000A9,
+ SMSG_CHALLENGE_MODE_SET_LEAVER_PENALTY_TIMER = 0x5C0031,
+ SMSG_CHALLENGE_MODE_START = 0x4000A7,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x4000A8,
+ SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x5C000D,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x4002A3,
+ SMSG_CHANNEL_LIST = 0x45001B,
+ SMSG_CHANNEL_NOTIFY = 0x450017,
+ SMSG_CHANNEL_NOTIFY_JOINED = 0x450019,
+ SMSG_CHANNEL_NOTIFY_LEFT = 0x45001A,
+ SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x450018,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x40025D,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x4001A7,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x400229,
+ SMSG_CHARACTER_RENAME_RESULT = 0x400204,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x40025C,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x40025B,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x40025E,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x40025A,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x400184,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x400185,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x400247,
+ SMSG_CHAT = 0x450001,
+ SMSG_CHAT_AUTO_RESPONDED = 0x45000E,
+ SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x450022,
+ SMSG_CHAT_DOWN = 0x450014,
+ SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x450000,
+ SMSG_CHAT_IS_DOWN = 0x450015,
+ SMSG_CHAT_NOT_IN_GUILD = 0x450023,
+ SMSG_CHAT_NOT_IN_PARTY = 0x450006,
+ SMSG_CHAT_PLAYER_AMBIGUOUS = 0x450004,
+ SMSG_CHAT_PLAYER_NOTFOUND = 0x45000D,
+ SMSG_CHAT_RECONNECT = 0x450016,
+ SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x45001D,
+ SMSG_CHAT_RESTRICTED = 0x450007,
+ SMSG_CHAT_SERVER_MESSAGE = 0x45001C,
+ SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x5F0002,
+ SMSG_CHECK_ABANDON_NPE = 0x5C0024,
+ SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x40001B,
+ SMSG_CHECK_WARGAME_ENTRY = 0x400027,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x4002F6,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x4002DD,
+ SMSG_CLEAR_ALL_SPELL_CHARGES = 0x5F0016,
+ SMSG_CLEAR_BOSS_EMOTES = 0x400058,
+ SMSG_CLEAR_COOLDOWN = 0x40015D,
+ SMSG_CLEAR_COOLDOWNS = 0x5F0015,
+ SMSG_CLEAR_RESURRECT = 0x400013,
+ SMSG_CLEAR_SPELL_CHARGES = 0x5F0017,
+ SMSG_CLEAR_TARGET = 0x460022,
+ SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x5D0022,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x400240,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x4002D5,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x4002D8,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x4002D6,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x4002D3,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x4002D7,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x4002D4,
+ SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x400315,
+ SMSG_COIN_REMOVED = 0x4000B9,
+ SMSG_COMBAT_EVENT_FAILED = 0x460019,
+ SMSG_COMMENTATOR_MAP_INFO = 0x4001A9,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x4001AA,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x4001A8,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x40026C,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x400278,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x40026E,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x40026D,
+ SMSG_COMPLAINT_RESULT = 0x40014F,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x400239,
+ SMSG_COMPRESSED_PACKET = 0x47000C,
+ SMSG_CONFIRM_PARTY_INVITE = 0x4002AF,
+ SMSG_CONNECT_TO = 0x470007,
+ SMSG_CONSOLE_WRITE = 0x4000D7,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x400274,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x400273,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x400272,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x400276,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x400277,
+ SMSG_CONTACT_LIST = 0x400227,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x4002B7,
+ SMSG_CONTROL_UPDATE = 0x4000E9,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x4002FF,
+ SMSG_COOLDOWN_CHEAT = 0x4001DA,
+ SMSG_COOLDOWN_EVENT = 0x40015C,
+ SMSG_CORPSE_LOCATION = 0x4000F0,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x4001EB,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x4001B5,
+ SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x5D0024,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x400298,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x400300,
+ SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x400336,
+ SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x400332,
+ SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x40032E,
+ SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x400330,
+ SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x40032C,
+ SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x400331,
+ SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x40032D,
+ SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x400338,
+ SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x400334,
+ SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x40032F,
+ SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x400337,
+ SMSG_CRAFT_ENCHANT_RESULT = 0x400335,
+ SMSG_CREATE_CHAR = 0x4001A3,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x400238,
+ SMSG_CREATOR_VISUALS_OVERRIDE = 0x40033B,
+ SMSG_CRITERIA_DELETED = 0x400189,
+ SMSG_CRITERIA_UPDATE = 0x400183,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x400164,
+ SMSG_CURRENCY_TRANSFER_LOG = 0x40034D,
+ SMSG_CURRENCY_TRANSFER_RESULT = 0x40034C,
+ SMSG_CUSTOM_LOAD_SCREEN = 0x400068,
+ SMSG_DAILY_QUESTS_RESET = 0x5D0000,
+ SMSG_DAMAGE_CALC_LOG = 0x5F0054,
+ SMSG_DB_REPLY = 0x440000,
+ SMSG_DEATH_RELEASE_LOC = 0x400176,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x4000F8,
+ SMSG_DEFENSE_MESSAGE = 0x45000C,
+ SMSG_DELETE_CHAR = 0x4001A4,
+ SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x4A0022,
+ SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x400352,
+ SMSG_DESTROY_ARENA_UNIT = 0x4001E3,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x40019B,
+ SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x400020,
+ SMSG_DISENCHANT_CREDIT = 0x40003F,
+ SMSG_DISMOUNT_RESULT = 0x400010,
+ SMSG_DISPEL_FAILED = 0x5F001E,
+ SMSG_DISPLAY_GAME_ERROR = 0x400035,
+ SMSG_DISPLAY_PLAYER_CHOICE = 0x5C0004,
+ SMSG_DISPLAY_PROMOTION = 0x4000ED,
+ SMSG_DISPLAY_QUEST_POPUP = 0x5D001E,
+ SMSG_DISPLAY_TOAST = 0x4000C6,
+ SMSG_DISPLAY_WORLD_TEXT = 0x400289,
+ SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x5F0053,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x40007D,
+ SMSG_DROP_NEW_CONNECTION = 0x470006,
+ SMSG_DUEL_ARRANGED = 0x46001B,
+ SMSG_DUEL_COMPLETE = 0x46001F,
+ SMSG_DUEL_COUNTDOWN = 0x46001E,
+ SMSG_DUEL_IN_BOUNDS = 0x46001D,
+ SMSG_DUEL_OUT_OF_BOUNDS = 0x46001C,
+ SMSG_DUEL_REQUESTED = 0x46001A,
+ SMSG_DUEL_WINNER = 0x460020,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x4001E6,
+ SMSG_EMOTE = 0x400264,
+ SMSG_ENABLE_BARBER_SHOP = 0x40015F,
+ SMSG_ENCHANTMENT_LOG = 0x4001B6,
+ SMSG_ENCOUNTER_END = 0x400220,
+ SMSG_ENCOUNTER_START = 0x40021F,
+ SMSG_END_LIGHTNING_STORM = 0x40014C,
+ SMSG_ENTER_ENCRYPTED_MODE = 0x470003,
+ SMSG_ENUM_CHARACTERS_RESULT = 0x400018,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x40028E,
+ SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x5F000E,
+ SMSG_EQUIPMENT_SET_ID = 0x400155,
+ SMSG_EXPECTED_SPAM_RECORDS = 0x450005,
+ SMSG_EXPLORATION_EXPERIENCE = 0x400200,
+ SMSG_EXPORT_ACCOUNT_PROFILE = 0x4000F5,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x4002FD,
+ SMSG_FACTION_BONUS_INFO = 0x4001C6,
+ SMSG_FAILED_PLAYER_CONDITION = 0x5C0002,
+ SMSG_FAILED_QUEST_TURN_IN = 0x4002AC,
+ SMSG_FEATURE_SYSTEM_STATUS = 0x40005C,
+ SMSG_FEATURE_SYSTEM_STATUS2 = 0x40034A,
+ SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x40005D,
+ SMSG_FEIGN_DEATH_RESISTED = 0x4001E5,
+ SMSG_FISH_ESCAPED = 0x400173,
+ SMSG_FISH_NOT_HOOKED = 0x400172,
+ SMSG_FLIGHT_SPLINE_SYNC = 0x58005B,
+ SMSG_FLUSH_COMBAT_LOG_FILE = 0x5F0010,
+ SMSG_FORCED_DEATH_UPDATE = 0x400177,
+ SMSG_FORCE_ANIM = 0x4001F2,
+ SMSG_FORCE_ANIMATIONS = 0x4001F3,
+ SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x40004A,
+ SMSG_FORCE_SPAWN_TRACKING_UPDATE = 0x5D0021,
+ SMSG_FRIEND_STATUS = 0x400228,
+ SMSG_GAIN_MAW_POWER = 0x40027D,
+ SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x400060,
+ SMSG_GAME_OBJECT_BASE = 0x4002C4,
+ SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x400314,
+ SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x400061,
+ SMSG_GAME_OBJECT_DESPAWN = 0x400062,
+ SMSG_GAME_OBJECT_INTERACTION = 0x400313,
+ SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x5F003C,
+ SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x5F003B,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x4001C0,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x40029F,
+ SMSG_GAME_SPEED_SET = 0x400125,
+ SMSG_GAME_TIME_SET = 0x4001AF,
+ SMSG_GAME_TIME_UPDATE = 0x4001AE,
+ SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x4A0024,
+ SMSG_GARRISON_ADD_EVENT = 0x4A0048,
+ SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x4A0016,
+ SMSG_GARRISON_ADD_MISSION_RESULT = 0x4A001A,
+ SMSG_GARRISON_ADD_SPEC_GROUPS = 0x4A004B,
+ SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x4A004F,
+ SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x4A002C,
+ SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x4A0051,
+ SMSG_GARRISON_BUILDING_ACTIVATED = 0x4A000B,
+ SMSG_GARRISON_BUILDING_REMOVED = 0x4A0004,
+ SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x4A0006,
+ SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x4A001D,
+ SMSG_GARRISON_CLEAR_COLLECTION = 0x4A0047,
+ SMSG_GARRISON_CLEAR_EVENT_LIST = 0x4A004A,
+ SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0x4A004C,
+ SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x4A0046,
+ SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x4A0045,
+ SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x4A003D,
+ SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x4A001C,
+ SMSG_GARRISON_CREATE_RESULT = 0x4A000C,
+ SMSG_GARRISON_DELETE_MISSION_RESULT = 0x4A0023,
+ SMSG_GARRISON_DELETE_RESULT = 0x4A0035,
+ SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0x4A002B,
+ SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0x4A0029,
+ SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x4A0027,
+ SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0x4A0028,
+ SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x4A0026,
+ SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0x4A002A,
+ SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x4A0033,
+ SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x4A0015,
+ SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x4A001E,
+ SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x4A003F,
+ SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x4A0007,
+ SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x4A0005,
+ SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x4A0040,
+ SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x4A0019,
+ SMSG_GARRISON_MAP_DATA_RESPONSE = 0x4A0042,
+ SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x4A0020,
+ SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x4A0043,
+ SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x4A0025,
+ SMSG_GARRISON_OPEN_CRAFTER = 0x4A0037,
+ SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x4A0030,
+ SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x4A0003,
+ SMSG_GARRISON_PLOT_PLACED = 0x4A0001,
+ SMSG_GARRISON_PLOT_REMOVED = 0x4A0002,
+ SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x4A0034,
+ SMSG_GARRISON_REMOTE_INFO = 0x4A000A,
+ SMSG_GARRISON_REMOVE_EVENT = 0x4A0049,
+ SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x4A002F,
+ SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x4A002D,
+ SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x4A0017,
+ SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0x4A002E,
+ SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x4A0009,
+ SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0x4A000E,
+ SMSG_GARRISON_RESET_TALENT_TREE = 0x4A0013,
+ SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x4A0014,
+ SMSG_GARRISON_START_MISSION_RESULT = 0x4A001B,
+ SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x4A003C,
+ SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x4A004D,
+ SMSG_GARRISON_TALENT_COMPLETED = 0x4A000F,
+ SMSG_GARRISON_TALENT_REMOVED = 0x4A0010,
+ SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x4A0012,
+ SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x4A0011,
+ SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x4A004E,
+ SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x4A0008,
+ SMSG_GARRISON_UPDATE_FOLLOWER = 0x4A0018,
+ SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x4A003E,
+ SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x4A0050,
+ SMSG_GARRISON_UPGRADE_RESULT = 0x4A000D,
+ SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x4A001F,
+ SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x40001C,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x4002B8,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x400202,
+ SMSG_GET_GARRISON_INFO_RESULT = 0x4A0000,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x40023B,
+ SMSG_GET_REALM_HIDDEN_RESULT = 0x400341,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x400275,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x400262,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x40023A,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x400236,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x400261,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x40028A,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x40028B,
+ SMSG_GM_PLAYER_INFO = 0x5C000E,
+ SMSG_GM_REQUEST_PLAYER_INFO = 0x5C0003,
+ SMSG_GM_TICKET_CASE_STATUS = 0x400147,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x400146,
+ SMSG_GOD_MODE = 0x40019E,
+ SMSG_GOSSIP_COMPLETE = 0x5D0017,
+ SMSG_GOSSIP_MESSAGE = 0x5D0018,
+ SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x5D0028,
+ SMSG_GOSSIP_POI = 0x400233,
+ SMSG_GOSSIP_QUEST_UPDATE = 0x5D0019,
+ SMSG_GOSSIP_REFRESH_OPTIONS = 0x5D0027,
+ SMSG_GROUP_ACTION_THROTTLED = 0x400024,
+ SMSG_GROUP_AUTO_KICK = 0x400230,
+ SMSG_GROUP_DECLINE = 0x40022C,
+ SMSG_GROUP_DESTROYED = 0x40022F,
+ SMSG_GROUP_NEW_LEADER = 0x4000CF,
+ SMSG_GROUP_REQUEST_DECLINE = 0x40022D,
+ SMSG_GROUP_UNINVITE = 0x40022E,
+ SMSG_GUILD_ACHIEVEMENT_DELETED = 0x4C000D,
+ SMSG_GUILD_ACHIEVEMENT_EARNED = 0x4C000C,
+ SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x4C000F,
+ SMSG_GUILD_BANK_LOG_QUERY_RESULTS = 0x4C0027,
+ SMSG_GUILD_BANK_QUERY_RESULTS = 0x4C0026,
+ SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY = 0x4C0028,
+ SMSG_GUILD_BANK_TEXT_QUERY_RESULT = 0x4C002B,
+ SMSG_GUILD_CHALLENGE_COMPLETED = 0x4C001B,
+ SMSG_GUILD_CHALLENGE_UPDATE = 0x4C001A,
+ SMSG_GUILD_CHANGE_NAME_RESULT = 0x4C0025,
+ SMSG_GUILD_COMMAND_RESULT = 0x4C0002,
+ SMSG_GUILD_CRITERIA_DELETED = 0x4C000E,
+ SMSG_GUILD_CRITERIA_UPDATE = 0x4C000B,
+ SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x4C0040,
+ SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x4C003F,
+ SMSG_GUILD_EVENT_DISBANDED = 0x4C0035,
+ SMSG_GUILD_EVENT_LOG_QUERY_RESULTS = 0x4C002A,
+ SMSG_GUILD_EVENT_MOTD = 0x4C0036,
+ SMSG_GUILD_EVENT_NEW_LEADER = 0x4C0034,
+ SMSG_GUILD_EVENT_PLAYER_JOINED = 0x4C0032,
+ SMSG_GUILD_EVENT_PLAYER_LEFT = 0x4C0033,
+ SMSG_GUILD_EVENT_PRESENCE_CHANGE = 0x4C0037,
+ SMSG_GUILD_EVENT_RANKS_UPDATED = 0x4C0039,
+ SMSG_GUILD_EVENT_RANK_CHANGED = 0x4C003A,
+ SMSG_GUILD_EVENT_STATUS_CHANGE = 0x4C0038,
+ SMSG_GUILD_EVENT_TAB_ADDED = 0x4C003B,
+ SMSG_GUILD_EVENT_TAB_DELETED = 0x4C003C,
+ SMSG_GUILD_EVENT_TAB_MODIFIED = 0x4C003D,
+ SMSG_GUILD_EVENT_TAB_TEXT_CHANGED = 0x4C003E,
+ SMSG_GUILD_FLAGGED_FOR_RENAME = 0x4C0024,
+ SMSG_GUILD_HARDCORE_MEMBER_DEATH = 0x4C0004,
+ SMSG_GUILD_INVITE = 0x4C0012,
+ SMSG_GUILD_INVITE_DECLINED = 0x4C0030,
+ SMSG_GUILD_INVITE_EXPIRED = 0x4C0031,
+ SMSG_GUILD_ITEM_LOOTED_NOTIFY = 0x4C001C,
+ SMSG_GUILD_KNOWN_RECIPES = 0x4C0006,
+ SMSG_GUILD_MEMBERS_WITH_RECIPE = 0x4C0007,
+ SMSG_GUILD_MEMBER_DAILY_RESET = 0x4C002C,
+ SMSG_GUILD_MEMBER_RECIPES = 0x4C0005,
+ SMSG_GUILD_MEMBER_UPDATE_NOTE = 0x4C0011,
+ SMSG_GUILD_MOVED = 0x4C0022,
+ SMSG_GUILD_MOVE_STARTING = 0x4C0021,
+ SMSG_GUILD_NAME_CHANGED = 0x4C0023,
+ SMSG_GUILD_NEWS = 0x4C0009,
+ SMSG_GUILD_NEWS_DELETED = 0x4C000A,
+ SMSG_GUILD_OTHERS_OWNED_HOUSES_RESULT = 0x4C0047,
+ SMSG_GUILD_PARTY_STATE = 0x4C0013,
+ SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x4C0029,
+ SMSG_GUILD_RANKS = 0x4C0010,
+ SMSG_GUILD_RENAME_NAME_CHECK = 0x4C0044,
+ SMSG_GUILD_RENAME_REFUND_RESULT = 0x4C0046,
+ SMSG_GUILD_RENAME_REQUESTED_RESULT = 0x4C0045,
+ SMSG_GUILD_RENAME_STATUS_UPDATE = 0x4C0043,
+ SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x4C0014,
+ SMSG_GUILD_RESET = 0x4C0020,
+ SMSG_GUILD_REWARD_LIST = 0x4C0008,
+ SMSG_GUILD_ROSTER = 0x4C0003,
+ SMSG_GUILD_SEND_RANK_CHANGE = 0x4C0001,
+ SMSG_HARDCORE_DEATH_ALERT = 0x400349,
+ SMSG_HEALTH_UPDATE = 0x400174,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x40017C,
+ SMSG_HOTFIX_CONNECT = 0x440003,
+ SMSG_HOTFIX_MESSAGE = 0x440002,
+ SMSG_INITIALIZE_FACTIONS = 0x4001C5,
+ SMSG_INITIAL_SETUP = 0x400014,
+ SMSG_INIT_WORLD_STATES = 0x4001E7,
+ SMSG_INSPECT_RESULT = 0x4000D3,
+ SMSG_INSTANCE_ABANDON_VOTE_COMPLETED = 0x400097,
+ SMSG_INSTANCE_ABANDON_VOTE_PLAYER_LEFT = 0x400098,
+ SMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x400096,
+ SMSG_INSTANCE_ABANDON_VOTE_STARTED = 0x400095,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x40024D,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x40024C,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x400255,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x40024B,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x400257,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x400256,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x400250,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x40024F,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x400254,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x400258,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x400251,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x40024E,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x400253,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x400252,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x40019C,
+ SMSG_INSTANCE_INFO = 0x4000D6,
+ SMSG_INSTANCE_RESET = 0x40012A,
+ SMSG_INSTANCE_RESET_FAILED = 0x40012B,
+ SMSG_INSTANCE_SAVE_CREATED = 0x40021E,
+ SMSG_INTERRUPT_POWER_REGEN = 0x5F004A,
+ SMSG_INVALIDATE_NEIGHBORHOOD_NAME = 0x440013,
+ SMSG_INVALIDATE_PAGE_TEXT = 0x44000A,
+ SMSG_INVALIDATE_PLAYER = 0x5C0007,
+ SMSG_INVALID_PROMOTION_CODE = 0x4001F4,
+ SMSG_INVENTORY_CHANGE_FAILURE = 0x600005,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x4002AE,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x4002C0,
+ SMSG_ISLAND_AZERITE_GAIN = 0x4001FD,
+ SMSG_ISLAND_COMPLETE = 0x4001FE,
+ SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x5D0004,
+ SMSG_ITEM_CHANGED = 0x40018D,
+ SMSG_ITEM_COOLDOWN = 0x400263,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x4001F6,
+ SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x400034,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x4002F5,
+ SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x400032,
+ SMSG_ITEM_PUSH_RESULT = 0x4000C5,
+ SMSG_ITEM_TIME_UPDATE = 0x4001F5,
+ SMSG_KICK_REASON = 0x40012D,
+ SMSG_LATENCY_REPORT_PING = 0x400305,
+ SMSG_LEARNED_SPELLS = 0x5F003E,
+ SMSG_LEARN_PVP_TALENT_FAILED = 0x400071,
+ SMSG_LEARN_TALENT_FAILED = 0x400070,
+ SMSG_LEGACY_LOOT_RULES = 0x4002C5,
+ SMSG_LEVEL_LINKING_RESULT = 0x4002DB,
+ SMSG_LEVEL_UP_INFO = 0x40018B,
+ SMSG_LFG_BOOT_PLAYER = 0x540019,
+ SMSG_LFG_DISABLED = 0x540017,
+ SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x54001F,
+ SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x540009,
+ SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE = 0x540020,
+ SMSG_LFG_JOIN_RESULT = 0x540000,
+ SMSG_LFG_LIST_APPLICANT_LIST_UPDATE = 0x54000F,
+ SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE = 0x54000C,
+ SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT = 0x54000D,
+ SMSG_LFG_LIST_JOIN_RESULT = 0x540001,
+ SMSG_LFG_LIST_SEARCH_RESULTS = 0x540002,
+ SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE = 0x540010,
+ SMSG_LFG_LIST_SEARCH_STATUS = 0x540003,
+ SMSG_LFG_LIST_UPDATE_BLACKLIST = 0x54000E,
+ SMSG_LFG_LIST_UPDATE_EXPIRATION = 0x54000B,
+ SMSG_LFG_LIST_UPDATE_STATUS = 0x54000A,
+ SMSG_LFG_OFFER_CONTINUE = 0x540018,
+ SMSG_LFG_PARTY_INFO = 0x54001A,
+ SMSG_LFG_PLAYER_INFO = 0x54001B,
+ SMSG_LFG_PLAYER_REWARD = 0x54001C,
+ SMSG_LFG_PROPOSAL_UPDATE = 0x540011,
+ SMSG_LFG_QUEUE_STATUS = 0x540004,
+ SMSG_LFG_READY_CHECK_RESULT = 0x54001E,
+ SMSG_LFG_READY_CHECK_UPDATE = 0x540006,
+ SMSG_LFG_ROLE_CHECK_UPDATE = 0x540005,
+ SMSG_LFG_SLOT_INVALID = 0x540014,
+ SMSG_LFG_SUSPEND_LOREWALKING = 0x540021,
+ SMSG_LFG_TELEPORT_DENIED = 0x540016,
+ SMSG_LFG_UPDATE_STATUS = 0x540008,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x400210,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x40020F,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x400203,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x400211,
+ SMSG_LOAD_CUF_PROFILES = 0x400059,
+ SMSG_LOAD_EQUIPMENT_SET = 0x4001B1,
+ SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x400316,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x400317,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x400318,
+ SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED = 0x40031A,
+ SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT = 0x40031B,
+ SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x400319,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x4001B0,
+ SMSG_LOGIN_VERIFY_WORLD = 0x40002F,
+ SMSG_LOGOUT_CANCEL_ACK = 0x400129,
+ SMSG_LOGOUT_COMPLETE = 0x400128,
+ SMSG_LOGOUT_RESPONSE = 0x400127,
+ SMSG_LOG_XP_GAIN = 0x400187,
+ SMSG_LOOT_ALL_PASSED = 0x4000C3,
+ SMSG_LOOT_LIST = 0x4001E2,
+ SMSG_LOOT_MONEY_NOTIFY = 0x4000BE,
+ SMSG_LOOT_RELEASE = 0x4000BD,
+ SMSG_LOOT_RELEASE_ALL = 0x4000BC,
+ SMSG_LOOT_REMOVED = 0x4000B8,
+ SMSG_LOOT_RESPONSE = 0x4000B7,
+ SMSG_LOOT_ROLL = 0x4000C0,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x4000C2,
+ SMSG_LOOT_ROLL_WON = 0x4000C4,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x400113,
+ SMSG_MAIL_COMMAND_RESULT = 0x4000DD,
+ SMSG_MAIL_LIST_RESULT = 0x4001F7,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x4001F8,
+ SMSG_MAP_OBJECTIVES_INIT = 0x46002A,
+ SMSG_MAP_OBJ_EVENTS = 0x400063,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x4000C1,
+ SMSG_MEETING_STONE_FAILED = 0x40031C,
+ SMSG_MESSAGE_BOX = 0x40000A,
+ SMSG_MINIMAP_PING = 0x400171,
+ SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x5F0004,
+ SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x5F0003,
+ SMSG_MIRROR_VARS = 0x40035D,
+ SMSG_MISSILE_CANCEL = 0x400064,
+ SMSG_MODIFY_COOLDOWN = 0x400205,
+ SMSG_MOTD = 0x450003,
+ SMSG_MOUNT_RESULT = 0x40000F,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x4002CB,
+ SMSG_MOVE_ADD_IMPULSE = 0x580062,
+ SMSG_MOVE_APPLY_INERTIA = 0x58005E,
+ SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x580045,
+ SMSG_MOVE_DISABLE_COLLISION = 0x580041,
+ SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x58002B,
+ SMSG_MOVE_DISABLE_FULL_SPEED_TURNING = 0x580075,
+ SMSG_MOVE_DISABLE_GRAVITY = 0x58003D,
+ SMSG_MOVE_DISABLE_INERTIA = 0x58003F,
+ SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x58003C,
+ SMSG_MOVE_ENABLE_COLLISION = 0x580042,
+ SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x58002A,
+ SMSG_MOVE_ENABLE_FULL_SPEED_TURNING = 0x580074,
+ SMSG_MOVE_ENABLE_GRAVITY = 0x58003E,
+ SMSG_MOVE_ENABLE_INERTIA = 0x580040,
+ SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x58003B,
+ SMSG_MOVE_KNOCK_BACK = 0x580031,
+ SMSG_MOVE_REMOVE_INERTIA = 0x58005F,
+ SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x580046,
+ SMSG_MOVE_ROOT = 0x580027,
+ SMSG_MOVE_SET_ACTIVE_MOVER = 0x580003,
+ SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = 0x58006B,
+ SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = 0x580066,
+ SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = 0x58006C,
+ SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = 0x580069,
+ SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = 0x58006A,
+ SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = 0x580072,
+ SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = 0x580068,
+ SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = 0x580067,
+ SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = 0x580071,
+ SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = 0x58006D,
+ SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0x58006E,
+ SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0x580070,
+ SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0x58006F,
+ SMSG_MOVE_SET_CANT_SWIM = 0x580035,
+ SMSG_MOVE_SET_CAN_ADV_FLY = 0x580064,
+ SMSG_MOVE_SET_CAN_DRIVE = 0x580076,
+ SMSG_MOVE_SET_CAN_FLY = 0x580033,
+ SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x580037,
+ SMSG_MOVE_SET_COLLISION_HEIGHT = 0x580043,
+ SMSG_MOVE_SET_COMPOUND_STATE = 0x580047,
+ SMSG_MOVE_SET_FEATHER_FALL = 0x58002D,
+ SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x580023,
+ SMSG_MOVE_SET_FLIGHT_SPEED = 0x580022,
+ SMSG_MOVE_SET_HOVERING = 0x58002F,
+ SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x580039,
+ SMSG_MOVE_SET_LAND_WALK = 0x58002C,
+ SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x580014,
+ SMSG_MOVE_SET_NORMAL_FALL = 0x58002E,
+ SMSG_MOVE_SET_PITCH_RATE = 0x580026,
+ SMSG_MOVE_SET_RUN_BACK_SPEED = 0x58001F,
+ SMSG_MOVE_SET_RUN_SPEED = 0x58001E,
+ SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x580021,
+ SMSG_MOVE_SET_SWIM_SPEED = 0x580020,
+ SMSG_MOVE_SET_TURN_RATE = 0x580025,
+ SMSG_MOVE_SET_VEHICLE_REC_ID = 0x580044,
+ SMSG_MOVE_SET_WALK_SPEED = 0x580024,
+ SMSG_MOVE_SET_WATER_WALK = 0x580029,
+ SMSG_MOVE_SKIP_TIME = 0x580048,
+ SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x58004D,
+ SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x58004B,
+ SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x58004E,
+ SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x58004C,
+ SMSG_MOVE_SPLINE_ROOT = 0x580049,
+ SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x58004F,
+ SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0x58001A,
+ SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x580019,
+ SMSG_MOVE_SPLINE_SET_FLYING = 0x580059,
+ SMSG_MOVE_SPLINE_SET_HOVER = 0x580051,
+ SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x580054,
+ SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x580050,
+ SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0x58001D,
+ SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x580016,
+ SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x580057,
+ SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x580015,
+ SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0x580018,
+ SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0x580017,
+ SMSG_MOVE_SPLINE_SET_TURN_RATE = 0x58001C,
+ SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x580058,
+ SMSG_MOVE_SPLINE_SET_WALK_SPEED = 0x58001B,
+ SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x580053,
+ SMSG_MOVE_SPLINE_START_SWIM = 0x580055,
+ SMSG_MOVE_SPLINE_STOP_SWIM = 0x580056,
+ SMSG_MOVE_SPLINE_UNROOT = 0x58004A,
+ SMSG_MOVE_SPLINE_UNSET_FLYING = 0x58005A,
+ SMSG_MOVE_SPLINE_UNSET_HOVER = 0x580052,
+ SMSG_MOVE_TELEPORT = 0x580032,
+ SMSG_MOVE_UNROOT = 0x580028,
+ SMSG_MOVE_UNSET_CANT_SWIM = 0x580036,
+ SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x580065,
+ SMSG_MOVE_UNSET_CAN_DRIVE = 0x580077,
+ SMSG_MOVE_UNSET_CAN_FLY = 0x580034,
+ SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x580038,
+ SMSG_MOVE_UNSET_HOVERING = 0x580030,
+ SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x58003A,
+ SMSG_MOVE_UPDATE = 0x58000E,
+ SMSG_MOVE_UPDATE_ADD_IMPULSE = 0x580063,
+ SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x580060,
+ SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x580012,
+ SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x58000D,
+ SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x58000A,
+ SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x580009,
+ SMSG_MOVE_UPDATE_KNOCK_BACK = 0x580010,
+ SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x580011,
+ SMSG_MOVE_UPDATE_PITCH_RATE = 0x58000C,
+ SMSG_MOVE_UPDATE_REMOVE_INERTIA = 0x580061,
+ SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x580013,
+ SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x580005,
+ SMSG_MOVE_UPDATE_RUN_SPEED = 0x580004,
+ SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x580008,
+ SMSG_MOVE_UPDATE_SWIM_SPEED = 0x580007,
+ SMSG_MOVE_UPDATE_TELEPORT = 0x58000F,
+ SMSG_MOVE_UPDATE_TURN_RATE = 0x58000B,
+ SMSG_MOVE_UPDATE_WALK_SPEED = 0x580006,
+ SMSG_MULTIPLE_PACKETS = 0x47000B,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x40027A,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x400279,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x4000AC,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x4000AE,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x4000B4,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = 0x4000AD,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x400078,
+ SMSG_NEW_DATA_BUILD = 0x400340,
+ SMSG_NEW_TAXI_PATH = 0x400122,
+ SMSG_NEW_WORLD = 0x40002B,
+ SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x5F0034,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x40014E,
+ SMSG_NOTIFY_MONEY = 0x400031,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x4000DE,
+ SMSG_NPC_INTERACTION_OPEN_RESULT = 0x400312,
+ SMSG_OFFER_PETITION_ERROR = 0x400159,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x400188,
+ SMSG_ON_MONSTER_MOVE = 0x580002,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x40023F,
+ SMSG_OPEN_CONTAINER = 0x600006,
+ SMSG_OPEN_LFG_DUNGEON_FINDER = 0x540015,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x400237,
+ SMSG_OVERRIDE_LIGHT = 0x40015E,
+ SMSG_PAGE_TEXT = 0x4001BC,
+ SMSG_PARTY_COMMAND_RESULT = 0x400231,
+ SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x400355,
+ SMSG_PARTY_INVITE = 0x40005A,
+ SMSG_PARTY_KILL_LOG = 0x4001FB,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x4001FA,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x4001F9,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x4002FB,
+ SMSG_PARTY_UPDATE = 0x400090,
+ SMSG_PAST_TIME_EVENTS = 0x40005F,
+ SMSG_PAUSE_MIRROR_TIMER = 0x4001B3,
+ SMSG_PENDING_RAID_LOCK = 0x40019A,
+ SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x40030F,
+ SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x40030B,
+ SMSG_PERKS_PROGRAM_DISABLED = 0x400310,
+ SMSG_PERKS_PROGRAM_RESULT = 0x40030C,
+ SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x40030A,
+ SMSG_PETITION_ALREADY_SIGNED = 0x400037,
+ SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x4C0042,
+ SMSG_PETITION_SHOW_LIST = 0x400161,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x400162,
+ SMSG_PETITION_SIGN_RESULTS = 0x4001ED,
+ SMSG_PET_ACTION_FEEDBACK = 0x4001EA,
+ SMSG_PET_ACTION_SOUND = 0x400144,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x4000A2,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x400118,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x40009B,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x4000A0,
+ SMSG_PET_BATTLE_FINISHED = 0x4000A1,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x40009D,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x40009C,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x4000A3,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x40009A,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x4000DB,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x4000DC,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x40009F,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x400099,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x40009E,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x400088,
+ SMSG_PET_CAST_FAILED = 0x5F0049,
+ SMSG_PET_CLEAR_SPELLS = 0x5F0013,
+ SMSG_PET_DISMISS_SOUND = 0x400145,
+ SMSG_PET_GOD_MODE = 0x40011F,
+ SMSG_PET_GUIDS = 0x4001A6,
+ SMSG_PET_LEARNED_SPELLS = 0x5F0040,
+ SMSG_PET_MODE = 0x40001F,
+ SMSG_PET_NAME_INVALID = 0x400166,
+ SMSG_PET_NEWLY_TAMED = 0x40001E,
+ SMSG_PET_SPELLS_MESSAGE = 0x5F0014,
+ SMSG_PET_STABLE_RESULT = 0x40002A,
+ SMSG_PET_TAME_FAILURE = 0x400156,
+ SMSG_PET_UNLEARNED_SPELLS = 0x5F0041,
+ SMSG_PHASE_SHIFT_CHANGE = 0x40000C,
+ SMSG_PLAYED_TIME = 0x400178,
+ SMSG_PLAYER_ACKNOWLEDGE_ARROW_CALLOUT = 0x5C002E,
+ SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x5C0020,
+ SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x5C001F,
+ SMSG_PLAYER_BONUS_ROLL_FAILED = 0x5C0022,
+ SMSG_PLAYER_BOUND = 0x5C0000,
+ SMSG_PLAYER_CHOICE_CLEAR = 0x5C0006,
+ SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x5C0005,
+ SMSG_PLAYER_CONDITION_RESULT = 0x5C0013,
+ SMSG_PLAYER_END_OF_MATCH_DETAILS = 0x5C0030,
+ SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x5C002D,
+ SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x5C0012,
+ SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x5C0017,
+ SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x4C0041,
+ SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = 0x5C002F,
+ SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x5C002C,
+ SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x5C002A,
+ SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0x5C002B,
+ SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x5C0025,
+ SMSG_PLAYER_SKINNED = 0x5C000F,
+ SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x5C0016,
+ SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x5C0015,
+ SMSG_PLAY_MUSIC = 0x40020A,
+ SMSG_PLAY_OBJECT_SOUND = 0x40020C,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x4001D2,
+ SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x5F0038,
+ SMSG_PLAY_SCENE = 0x4000D8,
+ SMSG_PLAY_SOUND = 0x400209,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x40020D,
+ SMSG_PLAY_SPELL_VISUAL = 0x5F0036,
+ SMSG_PLAY_SPELL_VISUAL_KIT = 0x5F003A,
+ SMSG_PLAY_TIME_WARNING = 0x4001A0,
+ SMSG_PONG = 0x470008,
+ SMSG_POWER_UPDATE = 0x400175,
+ SMSG_PRELOAD_CHILD_MAP = 0x40000D,
+ SMSG_PRELOAD_WORLD = 0x40002C,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x4002CE,
+ SMSG_PRE_RESSURECT = 0x400208,
+ SMSG_PRINT_NOTIFICATION = 0x400067,
+ SMSG_PROC_RESIST = 0x4001FC,
+ SMSG_PROFESSION_GOSSIP = 0x40029A,
+ SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x5F0042,
+ SMSG_PVP_CREDIT = 0x460024,
+ SMSG_PVP_MATCH_COMPLETE = 0x46002F,
+ SMSG_PVP_MATCH_INITIALIZE = 0x460030,
+ SMSG_PVP_MATCH_SET_STATE = 0x46002E,
+ SMSG_PVP_MATCH_START = 0x46002D,
+ SMSG_PVP_MATCH_STATISTICS = 0x460010,
+ SMSG_PVP_OPTIONS_ENABLED = 0x460013,
+ SMSG_PVP_TIER_RECORD = 0x400306,
+ SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x44000C,
+ SMSG_QUERY_CREATURE_RESPONSE = 0x440006,
+ SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x440007,
+ SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x4A0041,
+ SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = 0x4C002F,
+ SMSG_QUERY_GUILD_INFO_RESPONSE = 0x4C002D,
+ SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x440010,
+ SMSG_QUERY_NEIGHBORHOOD_NAME_RESPONSE = 0x440012,
+ SMSG_QUERY_NPC_TEXT_RESPONSE = 0x440008,
+ SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x440009,
+ SMSG_QUERY_PETITION_RESPONSE = 0x44000D,
+ SMSG_QUERY_PET_NAME_RESPONSE = 0x44000B,
+ SMSG_QUERY_PLAYER_NAMES_RESPONSE = 0x5C0027,
+ SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x5C000B,
+ SMSG_QUERY_QUEST_INFO_RESPONSE = 0x5D0016,
+ SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x4C002E,
+ SMSG_QUERY_TIME_RESPONSE = 0x400186,
+ SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x5D0001,
+ SMSG_QUEST_CONFIRM_ACCEPT = 0x5D000F,
+ SMSG_QUEST_FORCE_REMOVED = 0x5D001C,
+ SMSG_QUEST_GIVER_INVALID_QUEST = 0x5D0005,
+ SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x5D0014,
+ SMSG_QUEST_GIVER_QUEST_COMPLETE = 0x5D0003,
+ SMSG_QUEST_GIVER_QUEST_DETAILS = 0x5D0012,
+ SMSG_QUEST_GIVER_QUEST_FAILED = 0x5D0006,
+ SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x5D001A,
+ SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x5D0013,
+ SMSG_QUEST_GIVER_STATUS = 0x5D001B,
+ SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x5D0011,
+ SMSG_QUEST_ITEM_USABILITY_RESPONSE = 0x5D0002,
+ SMSG_QUEST_LOG_FULL = 0x5D0007,
+ SMSG_QUEST_NON_LOG_UPDATE_COMPLETE = 0x5D0008,
+ SMSG_QUEST_POI_QUERY_RESPONSE = 0x5D001D,
+ SMSG_QUEST_POI_UPDATE_RESPONSE = 0x5D001F,
+ SMSG_QUEST_PUSH_RESULT = 0x5D0010,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x4002F1,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x4002DF,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x4002E0,
+ SMSG_QUEST_SESSION_RESULT = 0x4002DE,
+ SMSG_QUEST_UPDATE_ADD_CREDIT = 0x5D000C,
+ SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x5D000D,
+ SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x5D000E,
+ SMSG_QUEST_UPDATE_COMPLETE = 0x5D0009,
+ SMSG_QUEST_UPDATE_FAILED = 0x5D000A,
+ SMSG_QUEST_UPDATE_FAILED_TIMER = 0x5D000B,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x4002AD,
+ SMSG_RAF_ACCOUNT_INFO = 0x4002DC,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x4002ED,
+ SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x40033D,
+ SMSG_RAID_DIFFICULTY_SET = 0x400248,
+ SMSG_RAID_GROUP_ONLY = 0x40024A,
+ SMSG_RAID_INSTANCE_MESSAGE = 0x45000A,
+ SMSG_RAID_MARKERS_CHANGED = 0x400038,
+ SMSG_RANDOM_ROLL = 0x4000D2,
+ SMSG_RATED_PVP_INFO = 0x46000F,
+ SMSG_READY_CHECK_COMPLETED = 0x400094,
+ SMSG_READY_CHECK_RESPONSE = 0x400093,
+ SMSG_READY_CHECK_STARTED = 0x400092,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x400244,
+ SMSG_READ_ITEM_RESULT_OK = 0x40023C,
+ SMSG_REALM_QUERY_RESPONSE = 0x440005,
+ SMSG_REATTACH_RESURRECT = 0x4001EC,
+ SMSG_RECEIVE_PING_UNIT = 0x400039,
+ SMSG_RECEIVE_PING_WORLD_POINT = 0x40003A,
+ SMSG_RECENT_ALLY_DATA_RESPONSE = 0x400358,
+ SMSG_RECENT_ALLY_NOTE_UPDATED = 0x400359,
+ SMSG_RECRAFT_ITEM_RESULT = 0x400333,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x400163,
+ SMSG_REFRESH_COMPONENT = 0x4000F2,
+ SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x40001A,
+ SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x400019,
+ SMSG_REMOVE_ITEM_PASSIVE = 0x400043,
+ SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x5F0043,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x400260,
+ SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x5C000A,
+ SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x400025,
+ SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x460014,
+ SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x460015,
+ SMSG_RESET_COMPRESSION_CONTEXT = 0x470009,
+ SMSG_RESET_FAILED_NOTIFY = 0x40015A,
+ SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x40033A,
+ SMSG_RESET_QUEST_POI = 0x5D0020,
+ SMSG_RESET_RANGED_COMBAT_TIMER = 0x460023,
+ SMSG_RESET_WEEKLY_CURRENCY = 0x400009,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x4000B5,
+ SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x400006,
+ SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x40030D,
+ SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x40030E,
+ SMSG_RESTART_GLOBAL_COOLDOWN = 0x5F0052,
+ SMSG_RESTRICTED_ACCOUNT_WARNING = 0x400056,
+ SMSG_RESUME_CAST = 0x5F002C,
+ SMSG_RESUME_CAST_BAR = 0x5F002F,
+ SMSG_RESUME_COMMS = 0x470005,
+ SMSG_RESUME_TOKEN = 0x400041,
+ SMSG_RESURRECT_REQUEST = 0x400012,
+ SMSG_RESYNC_RUNES = 0x5F0050,
+ SMSG_RETURN_APPLICANT_LIST = 0x4002D2,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x4002D1,
+ SMSG_ROLE_CHANGED_INFORM = 0x400021,
+ SMSG_ROLE_CHOSEN = 0x54001D,
+ SMSG_ROLE_POLL_INFORM = 0x400022,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x400299,
+ SMSG_RUNE_REGEN_DEBUG = 0x400053,
+ SMSG_SCENARIO_COMPLETED = 0x400287,
+ SMSG_SCENARIO_POIS = 0x4000D5,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x4000CE,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x40029D,
+ SMSG_SCENARIO_STATE = 0x4000CD,
+ SMSG_SCENARIO_UI_UPDATE = 0x40029C,
+ SMSG_SCENARIO_VACATE = 0x400245,
+ SMSG_SCENE_OBJECT_EVENT = 0x40007E,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x400083,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x400084,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x400080,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x40007F,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x400082,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x400081,
+ SMSG_SCHEDULED_AREA_POI_UPDATE_RESPONSE = 0x5C001A,
+ SMSG_SCRIPT_CAST = 0x5F0047,
+ SMSG_SEASON_INFO = 0x40005E,
+ SMSG_SELL_RESPONSE = 0x400167,
+ SMSG_SEND_ITEM_PASSIVES = 0x400044,
+ SMSG_SEND_KNOWN_SPELLS = 0x5F0019,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x4000D0,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x4000D1,
+ SMSG_SEND_SPELL_CHARGES = 0x5F001B,
+ SMSG_SEND_SPELL_HISTORY = 0x5F001A,
+ SMSG_SEND_UNLEARN_SPELLS = 0x5F001C,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x4000EF,
+ SMSG_SERVER_TIME = 0x400126,
+ SMSG_SERVER_TIME_OFFSET = 0x4001B7,
+ SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x5F000F,
+ SMSG_SETUP_CURRENCY = 0x400007,
+ SMSG_SET_AI_ANIM_KIT = 0x4001D1,
+ SMSG_SET_ANIM_TIER = 0x4001D5,
+ SMSG_SET_CHR_UPGRADE_TIER = 0x40007B,
+ SMSG_SET_CTR_OPTIONS = 0x400362,
+ SMSG_SET_CURRENCY = 0x400008,
+ SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x540012,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x400148,
+ SMSG_SET_FACTION_AT_WAR = 0x4001A2,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x4001CC,
+ SMSG_SET_FACTION_STANDING = 0x4001CD,
+ SMSG_SET_FACTION_VISIBLE = 0x4001CB,
+ SMSG_SET_FLAT_SPELL_MODIFIER = 0x5F0027,
+ SMSG_SET_INSTANCE_LEAVER = 0x40035E,
+ SMSG_SET_ITEM_PURCHASE_DATA = 0x400033,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x40026B,
+ SMSG_SET_MAX_WEEKLY_QUANTITY = 0x400036,
+ SMSG_SET_MELEE_ANIM_KIT = 0x4001D4,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x4001D3,
+ SMSG_SET_PCT_SPELL_MODIFIER = 0x5F0028,
+ SMSG_SET_PET_SPECIALIZATION = 0x4000C7,
+ SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x5C000C,
+ SMSG_SET_PLAY_HOVER_ANIM = 0x400057,
+ SMSG_SET_PROFICIENCY = 0x4001D6,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x4002E5,
+ SMSG_SET_SHIPMENT_READY_RESPONSE = 0x4A003A,
+ SMSG_SET_SPELL_CHARGES = 0x5F0018,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x40011B,
+ SMSG_SET_VEHICLE_REC_ID = 0x400199,
+ SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x400311,
+ SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x4A003B,
+ SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x400353,
+ SMSG_SHOW_DELVES_DISPLAY_UI = 0x400351,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x400077,
+ SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x5D0015,
+ SMSG_SHOW_TAXI_NODES = 0x400170,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x400212,
+ SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x40031D,
+ SMSG_SOCKET_GEMS_FAILURE = 0x4001C9,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x4001C8,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x400143,
+ SMSG_SPECTATE_END = 0x40033F,
+ SMSG_SPECTATE_PLAYER = 0x40033E,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x4001BB,
+ SMSG_SPELL_ABSORB_LOG = 0x5F000C,
+ SMSG_SPELL_CATEGORY_COOLDOWN = 0x5F0006,
+ SMSG_SPELL_CHANNEL_START = 0x5F0022,
+ SMSG_SPELL_CHANNEL_UPDATE = 0x5F0023,
+ SMSG_SPELL_COOLDOWN = 0x5F0005,
+ SMSG_SPELL_DAMAGE_SHIELD = 0x5F001F,
+ SMSG_SPELL_DELAYED = 0x5F0030,
+ SMSG_SPELL_DISPELL_LOG = 0x5F0007,
+ SMSG_SPELL_EMPOWER_SET_STAGE = 0x5F0026,
+ SMSG_SPELL_EMPOWER_START = 0x5F0024,
+ SMSG_SPELL_EMPOWER_UPDATE = 0x5F0025,
+ SMSG_SPELL_ENERGIZE_LOG = 0x5F0009,
+ SMSG_SPELL_EXECUTE_LOG = 0x5F0031,
+ SMSG_SPELL_FAILED_OTHER = 0x5F0046,
+ SMSG_SPELL_FAILURE = 0x5F0044,
+ SMSG_SPELL_FAILURE_MESSAGE = 0x5F004B,
+ SMSG_SPELL_GO = 0x5F002A,
+ SMSG_SPELL_HEAL_ABSORB_LOG = 0x5F000B,
+ SMSG_SPELL_HEAL_LOG = 0x5F000A,
+ SMSG_SPELL_INSTAKILL_LOG = 0x5F0021,
+ SMSG_SPELL_INTERRUPT_LOG = 0x5F000D,
+ SMSG_SPELL_MISS_LOG = 0x5F0032,
+ SMSG_SPELL_NON_MELEE_DAMAGE_LOG = 0x5F0020,
+ SMSG_SPELL_OR_DAMAGE_IMMUNE = 0x5F001D,
+ SMSG_SPELL_PERIODIC_AURA_LOG = 0x5F0008,
+ SMSG_SPELL_PREPARE = 0x5F0029,
+ SMSG_SPELL_START = 0x5F002B,
+ SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x400069,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x4002F7,
+ SMSG_STAND_STATE_UPDATE = 0x4001BF,
+ SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x40006F,
+ SMSG_START_ELAPSED_TIMER = 0x4000A4,
+ SMSG_START_ELAPSED_TIMERS = 0x4000A6,
+ SMSG_START_LIGHTNING_STORM = 0x40014B,
+ SMSG_START_LOOT_ROLL = 0x4000BF,
+ SMSG_START_MIRROR_TIMER = 0x4001B2,
+ SMSG_START_TIMER = 0x40003D,
+ SMSG_STOP_ELAPSED_TIMER = 0x4000A5,
+ SMSG_STOP_MIRROR_TIMER = 0x4001B4,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x40020E,
+ SMSG_STOP_TIMER = 0x40003E,
+ SMSG_STREAMING_MOVIES = 0x40003C,
+ SMSG_SUGGEST_INVITE_INFORM = 0x400232,
+ SMSG_SUMMON_CANCEL = 0x400154,
+ SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x400023,
+ SMSG_SUMMON_REQUEST = 0x4001C3,
+ SMSG_SUPERCEDED_SPELLS = 0x5F003D,
+ SMSG_SURVEY_DELIVERED = 0x40035B,
+ SMSG_SUSPEND_COMMS = 0x470004,
+ SMSG_SUSPEND_TOKEN = 0x400040,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x4002EF,
+ SMSG_TAKE_SCREENSHOT_FOR_COMPLAINT = 0x5C0032,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x4001BA,
+ SMSG_TAXI_NODE_STATUS = 0x400120,
+ SMSG_TEXT_EMOTE = 0x40011E,
+ SMSG_THREAT_CLEAR = 0x40017F,
+ SMSG_THREAT_REMOVE = 0x40017E,
+ SMSG_THREAT_UPDATE = 0x40017D,
+ SMSG_TIMERUNNING_SEASON_ENDED = 0x400354,
+ SMSG_TIME_ADJUSTMENT = 0x580001,
+ SMSG_TIME_SYNC_REQUEST = 0x580000,
+ SMSG_TITLE_EARNED = 0x40017A,
+ SMSG_TITLE_LOST = 0x40017B,
+ SMSG_TOTEM_CREATED = 0x40016A,
+ SMSG_TOTEM_DURATION_CHANGED = 0x40016C,
+ SMSG_TOTEM_MOVED = 0x40016D,
+ SMSG_TOTEM_REMOVED = 0x40016B,
+ SMSG_TRADE_STATUS = 0x400017,
+ SMSG_TRADE_UPDATED = 0x400016,
+ SMSG_TRAINER_BUY_FAILED = 0x400182,
+ SMSG_TRAINER_LIST = 0x400181,
+ SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x40006E,
+ SMSG_TRANSFER_ABORTED = 0x4001A5,
+ SMSG_TRANSFER_PENDING = 0x40006A,
+ SMSG_TREASURE_PICKER_RESPONSE = 0x440011,
+ SMSG_TRIGGER_CINEMATIC = 0x400265,
+ SMSG_TRIGGER_MOVIE = 0x40016E,
+ SMSG_TURN_IN_PETITION_RESULT = 0x4001EF,
+ SMSG_TUTORIAL_FLAGS = 0x400259,
+ SMSG_UI_ACTION = 0x40020B,
+ SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x5D0023,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x400266,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x400267,
+ SMSG_UNLEARNED_SPELLS = 0x5F003F,
+ SMSG_UNLOAD_CHILD_MAP = 0x40000E,
+ SMSG_UNSET_INSTANCE_LEAVER = 0x40035F,
+ SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x400307,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x4001AB,
+ SMSG_UPDATE_ACCOUNT_DATA_COMPLETE = 0x4001AC,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x40007C,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x4002BF,
+ SMSG_UPDATE_CAPTURE_POINT = 0x460007,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x4002BB,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x40025F,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x400207,
+ SMSG_UPDATE_COOLDOWN = 0x400206,
+ SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x4A0038,
+ SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x4A0021,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x4000E8,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x4002C2,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x40014D,
+ SMSG_UPDATE_LAST_INSTANCE = 0x40012C,
+ SMSG_UPDATE_OBJECT = 0x560000,
+ SMSG_UPDATE_PRIMARY_SPEC = 0x400074,
+ SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x400091,
+ SMSG_UPDATE_TALENT_DATA = 0x400073,
+ SMSG_UPDATE_WORLD_STATE = 0x4001E9,
+ SMSG_USERLIST_ADD = 0x45000F,
+ SMSG_USERLIST_REMOVE = 0x450010,
+ SMSG_USERLIST_UPDATE = 0x450011,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x4001F0,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x4002B6,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x4002B4,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x4002B3,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x40028D,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x40028C,
+ SMSG_VENDOR_INVENTORY = 0x400055,
+ SMSG_VIGNETTE_UPDATE = 0x5C0011,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x4002BA,
+ SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x400302,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x4002B9,
+ SMSG_VOID_ITEM_SWAP_RESPONSE = 0x600004,
+ SMSG_VOID_STORAGE_CONTENTS = 0x600001,
+ SMSG_VOID_STORAGE_FAILED = 0x600000,
+ SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x600002,
+ SMSG_VOID_TRANSFER_RESULT = 0x600003,
+ SMSG_WAIT_QUEUE_FINISH = 0x400003,
+ SMSG_WAIT_QUEUE_UPDATE = 0x400002,
+ SMSG_WALK_IN_RESULT = 0x620000,
+ SMSG_WARDEN3_DATA = 0x40000B,
+ SMSG_WARDEN3_DISABLED = 0x4002BD,
+ SMSG_WARDEN3_ENABLED = 0x4002BC,
+ SMSG_WARFRONT_COMPLETE = 0x4001FF,
+ SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x460012,
+ SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x460011,
+ SMSG_WEATHER = 0x40014A,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x4002FA,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x4002F8,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x4002F9,
+ SMSG_WHO = 0x450002,
+ SMSG_WHO_IS = 0x400149,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x4002C1,
+ SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x5C0018,
+ SMSG_WORLD_SERVER_INFO = 0x400045,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x4002F0,
+ SMSG_WOW_LABS_AREA_INFO = 0x400322,
+ SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x40031E,
+ SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x40031F,
+ SMSG_WOW_LABS_PARTY_ERROR = 0x40032B,
+ SMSG_WOW_LABS_SET_AREA_ID_RESULT = 0x400320,
+ SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x400324,
+ SMSG_WOW_LABS_SET_SELECTED_AREA_ID = 0x400321,
+ SMSG_XP_AWARDED_FROM_CURRENCY = 0x400339,
+ SMSG_XP_GAIN_ABORTED = 0x400066,
+ SMSG_XP_GAIN_ENABLED = 0x400249,
+ SMSG_ZONE_UNDER_ATTACK = 0x45000B,
// Deleted opcodes, here only to allow compile
SMSG_ARENA_TEAM_STATS = UNKNOWN_OPCODE,
};
-inline constexpr std::size_t NUM_SMSG_OPCODES = 1484;
+inline constexpr std::size_t NUM_SMSG_OPCODES = 1600;
inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeServer opcode)
{
uint32 idInGroup = opcode & 0xFFFF;
switch (opcode >> 16)
{
- case 0x36: return idInGroup < 862 ? idInGroup + 0 : -1;
- case 0x37: return idInGroup < 5 ? idInGroup + 862 : -1;
- case 0x3A: return idInGroup < 18 ? idInGroup + 867 : -1;
- case 0x3B: return idInGroup < 36 ? idInGroup + 885 : -1;
- case 0x3C: return idInGroup < 49 ? idInGroup + 921 : -1;
- case 0x3D: return idInGroup < 11 ? idInGroup + 970 : -1;
- case 0x3E: return idInGroup < 12 ? idInGroup + 981 : -1;
- case 0x40: return idInGroup < 82 ? idInGroup + 993 : -1;
- case 0x42: return idInGroup < 71 ? idInGroup + 1075 : -1;
- case 0x44: return idInGroup < 33 ? idInGroup + 1146 : -1;
- case 0x46: return idInGroup < 1 ? idInGroup + 1179 : -1;
- case 0x48: return idInGroup < 120 ? idInGroup + 1180 : -1;
- case 0x4A: return idInGroup < 49 ? idInGroup + 1300 : -1;
- case 0x4B: return idInGroup < 41 ? idInGroup + 1349 : -1;
- case 0x4D: return idInGroup < 85 ? idInGroup + 1390 : -1;
- case 0x4E: return idInGroup < 8 ? idInGroup + 1475 : -1;
- case 0x50: return idInGroup < 1 ? idInGroup + 1483 : -1;
+ case 0x40: return idInGroup < 869 ? idInGroup + 0 : -1;
+ case 0x41: return idInGroup < 5 ? idInGroup + 869 : -1;
+ case 0x44: return idInGroup < 20 ? idInGroup + 874 : -1;
+ case 0x45: return idInGroup < 36 ? idInGroup + 894 : -1;
+ case 0x46: return idInGroup < 49 ? idInGroup + 930 : -1;
+ case 0x47: return idInGroup < 13 ? idInGroup + 979 : -1;
+ case 0x48: return idInGroup < 12 ? idInGroup + 992 : -1;
+ case 0x4A: return idInGroup < 82 ? idInGroup + 1004 : -1;
+ case 0x4C: return idInGroup < 72 ? idInGroup + 1086 : -1;
+ case 0x4E: return idInGroup < 2 ? idInGroup + 1158 : -1;
+ case 0x4F: return idInGroup < 11 ? idInGroup + 1160 : -1;
+ case 0x50: return idInGroup < 8 ? idInGroup + 1171 : -1;
+ case 0x51: return idInGroup < 8 ? idInGroup + 1179 : -1;
+ case 0x52: return idInGroup < 36 ? idInGroup + 1187 : -1;
+ case 0x53: return idInGroup < 8 ? idInGroup + 1223 : -1;
+ case 0x54: return idInGroup < 34 ? idInGroup + 1231 : -1;
+ case 0x56: return idInGroup < 1 ? idInGroup + 1265 : -1;
+ case 0x58: return idInGroup < 120 ? idInGroup + 1266 : -1;
+ case 0x59: return idInGroup < 5 ? idInGroup + 1386 : -1;
+ case 0x5A: return idInGroup < 22 ? idInGroup + 1391 : -1;
+ case 0x5C: return idInGroup < 52 ? idInGroup + 1413 : -1;
+ case 0x5D: return idInGroup < 41 ? idInGroup + 1465 : -1;
+ case 0x5F: return idInGroup < 85 ? idInGroup + 1506 : -1;
+ case 0x60: return idInGroup < 8 ? idInGroup + 1591 : -1;
+ case 0x62: return idInGroup < 1 ? idInGroup + 1599 : -1;
default: return -1;
}
}
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 95a34c24adc..d2b2b96a69b 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -823,6 +823,7 @@ void WorldSession::SendConnectToInstance(WorldPackets::Auth::ConnectToSerial ser
WorldPackets::Auth::ConnectTo connectTo;
connectTo.Key = _instanceConnectKey.Raw;
+ connectTo.NativeRealmAddress = GetVirtualRealmAddress();
connectTo.Serial = serial;
connectTo.Payload.Port = sWorld->getIntConfig(CONFIG_PORT_WORLD);
if (instanceAddress.is_v4())
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index a05d02e211c..2c55b457ce7 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -416,6 +416,11 @@ namespace WorldPackets
class HotfixRequest;
}
+ namespace Housing
+ {
+ class DeclineNeighborhoodInvites;
+ }
+
namespace Inspect
{
class Inspect;
@@ -1441,6 +1446,8 @@ class TC_GAME_API WorldSession
void HandleGuildChallengeUpdateRequest(WorldPackets::Guild::GuildChallengeUpdateRequest& packet);
void HandleDeclineGuildInvites(WorldPackets::Guild::DeclineGuildInvites& packet);
+ void HandleDeclineNeighborhoodInvites(WorldPackets::Housing::DeclineNeighborhoodInvites const& declineNeighborhoodInvites);
+
void HandleEnableTaxiNodeOpcode(WorldPackets::Taxi::EnableTaxiNode& enableTaxiNode);
void HandleTaxiNodeStatusQueryOpcode(WorldPackets::Taxi::TaxiNodeStatusQuery& taxiNodeStatusQuery);
void HandleTaxiQueryAvailableNodesOpcode(WorldPackets::Taxi::TaxiQueryAvailableNodes& taxiQueryAvailableNodes);
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index c9b97dd2221..6d950f1570d 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -434,6 +434,13 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF
&Spell::EffectNULL, //343 SPELL_EFFECT_343
&Spell::EffectNULL, //344 SPELL_EFFECT_344
&Spell::EffectNULL, //345 SPELL_EFFECT_ASSIST_ACTION
+ &Spell::EffectNULL, //346 SPELL_EFFECT_346
+ &Spell::EffectNULL, //347 SPELL_EFFECT_EQUIP_TRANSMOG_OUTFIT
+ &Spell::EffectNULL, //348 SPELL_EFFECT_GIVE_HOUSE_LEVEL
+ &Spell::EffectNULL, //349 SPELL_EFFECT_LEARN_HOUSE_ROOM
+ &Spell::EffectNULL, //350 SPELL_EFFECT_LEARN_HOUSE_EXTERIOR_COMPONENT
+ &Spell::EffectNULL, //351 SPELL_EFFECT_LEARN_HOUSE_THEME
+ &Spell::EffectNULL, //352 SPELL_EFFECT_LEARN_HOUSE_ROOM_COMPONENT_TEXTURE
};
void Spell::EffectNULL()
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 968202593eb..700af4e4b90 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -1260,6 +1260,13 @@ std::array<SpellEffectInfo::StaticData, TOTAL_SPELL_EFFECTS> SpellEffectInfo::_d
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 343 SPELL_EFFECT_343
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 344 SPELL_EFFECT_344
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 345 SPELL_EFFECT_ASSIST_ACTION
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 346 SPELL_EFFECT_346
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 347 SPELL_EFFECT_EQUIP_TRANSMOG_OUTFIT
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 348 SPELL_EFFECT_GIVE_HOUSE_LEVEL
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 349 SPELL_EFFECT_LEARN_HOUSE_ROOM
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 350 SPELL_EFFECT_LEARN_HOUSE_EXTERIOR_COMPONENT
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 351 SPELL_EFFECT_LEARN_HOUSE_THEME
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 352 SPELL_EFFECT_LEARN_HOUSE_ROOM_COMPONENT_TEXTURE
} };
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 2b46538b42a..ef4e02be69a 100644
--- a/src/tools/map_extractor/loadlib/DBFilesClientList.h
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -293,10 +293,18 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 1095531, .Name = "CurrencyTypes.db2" },
{ .FileDataId = 892585, .Name = "Curve.db2" },
{ .FileDataId = 892586, .Name = "CurvePoint.db2" },
+ { .FileDataId = 6653645, .Name = "DataTagGroup.db2" },
+ { .FileDataId = 6653584, .Name = "DataTagGroupXDataTag.db2" },
+ { .FileDataId = 6652252, .Name = "DataTagInfo.db2" },
+ { .FileDataId = 6860787, .Name = "DataTagXRecord.db2" },
{ .FileDataId = 1279415, .Name = "DeathThudLookups.db2" },
{ .FileDataId = 1278176, .Name = "DecalProperties.db2" },
{ .FileDataId = 1279100, .Name = "DeclinedWord.db2" },
{ .FileDataId = 1279099, .Name = "DeclinedWordCases.db2" },
+ { .FileDataId = 6247348, .Name = "DecorCategory.db2" },
+ { .FileDataId = 6254050, .Name = "DecorDyeSlot.db2" },
+ { .FileDataId = 6247357, .Name = "DecorSubcategory.db2" },
+ { .FileDataId = 6247358, .Name = "DecorXDecorSubcategory.db2" },
{ .FileDataId = 5920079, .Name = "DelvesSeason.db2" },
{ .FileDataId = 5920080, .Name = "DelvesSeasonXSpell.db2" },
{ .FileDataId = 1122116, .Name = "DestructibleModelData.db2" },
@@ -310,6 +318,8 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 1347279, .Name = "DungeonEncounter.db2" },
{ .FileDataId = 1283019, .Name = "DurabilityCosts.db2" },
{ .FileDataId = 1130268, .Name = "DurabilityQuality.db2" },
+ { .FileDataId = 6254051, .Name = "DyeColor.db2" },
+ { .FileDataId = 6254052, .Name = "DyeColorCategory.db2" },
{ .FileDataId = 1387381, .Name = "EdgeGlowEffect.db2" },
{ .FileDataId = 1343602, .Name = "Emotes.db2" },
{ .FileDataId = 1347273, .Name = "EmotesText.db2" },
@@ -319,6 +329,13 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 1343313, .Name = "Exhaustion.db2" },
{ .FileDataId = 1937326, .Name = "ExpectedStat.db2" },
{ .FileDataId = 1969773, .Name = "ExpectedStatMod.db2" },
+ { .FileDataId = 6931305, .Name = "ExteriorComponent.db2" },
+ { .FileDataId = 6931306, .Name = "ExteriorComponentExitPoint.db2" },
+ { .FileDataId = 7280847, .Name = "ExteriorComponentGroup.db2" },
+ { .FileDataId = 7280848, .Name = "ExteriorComponentGroupXHook.db2" },
+ { .FileDataId = 6931307, .Name = "ExteriorComponentHook.db2" },
+ { .FileDataId = 6931308, .Name = "ExteriorComponentType.db2" },
+ { .FileDataId = 7412982, .Name = "ExteriorComponentXGroup.db2" },
{ .FileDataId = 3527889, .Name = "ExtraAbilityInfo.db2" },
{ .FileDataId = 1361972, .Name = "Faction.db2" },
{ .FileDataId = 1343595, .Name = "FactionGroup.db2" },
@@ -446,7 +463,15 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 6905813, .Name = "HolidayXTimeEvent.db2" },
{ .FileDataId = 996357, .Name = "Holidays.db2" },
{ .FileDataId = 1995523, .Name = "Hotfixes.db2" },
+ { .FileDataId = 5149690, .Name = "House.db2" },
{ .FileDataId = 5149691, .Name = "HouseDecor.db2" },
+ { .FileDataId = 6855863, .Name = "HouseDecorMaterial.db2" },
+ { .FileDataId = 6860900, .Name = "HouseDecorThemeSet.db2" },
+ { .FileDataId = 6931309, .Name = "HouseExteriorWmoData.db2" },
+ { .FileDataId = 7149539, .Name = "HouseLevelData.db2" },
+ { .FileDataId = 7495433, .Name = "HouseLevelRewardInfo.db2" },
+ { .FileDataId = 5163003, .Name = "HouseRoom.db2" },
+ { .FileDataId = 6998392, .Name = "HouseTheme.db2" },
{ .FileDataId = 1121229, .Name = "ImportPriceArmor.db2" },
{ .FileDataId = 1121228, .Name = "ImportPriceQuality.db2" },
{ .FileDataId = 1121227, .Name = "ImportPriceShield.db2" },
@@ -641,6 +666,13 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 1117086, .Name = "NamesProfanity.db2" },
{ .FileDataId = 1117085, .Name = "NamesReserved.db2" },
{ .FileDataId = 1117087, .Name = "NamesReservedLocale.db2" },
+ { .FileDataId = 6699736, .Name = "NeighborhoodInitiative.db2" },
+ { .FileDataId = 6702594, .Name = "NeighborhoodInitiativeReward.db2" },
+ { .FileDataId = 6702595, .Name = "NeighborhoodInitiativeTask.db2" },
+ { .FileDataId = 6708736, .Name = "NeighborhoodInitiativeXTask.db2" },
+ { .FileDataId = 5550624, .Name = "NeighborhoodMap.db2" },
+ { .FileDataId = 6237720, .Name = "NeighborhoodNameGen.db2" },
+ { .FileDataId = 5550625, .Name = "NeighborhoodPlot.db2" },
{ .FileDataId = 1953326, .Name = "NumTalentsAtLevel.db2" },
{ .FileDataId = 1090577, .Name = "ObjectEffect.db2" },
{ .FileDataId = 1090575, .Name = "ObjectEffectModifier.db2" },
@@ -759,11 +791,19 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 1134090, .Name = "ResearchProject.db2" },
{ .FileDataId = 1134091, .Name = "ResearchSite.db2" },
{ .FileDataId = 1135072, .Name = "Resistances.db2" },
+ { .FileDataId = 7439104, .Name = "RetroactiveDecorReward.db2" },
+ { .FileDataId = 7507122, .Name = "RetroactiveDecorRewardCriteria.db2" },
{ .FileDataId = 1307156, .Name = "RewardPack.db2" },
{ .FileDataId = 1307153, .Name = "RewardPackXCurrencyType.db2" },
{ .FileDataId = 1307155, .Name = "RewardPackXItem.db2" },
{ .FileDataId = 1398908, .Name = "RibbonQuality.db2" },
{ .FileDataId = 5936950, .Name = "RolodexType.db2" },
+ { .FileDataId = 5503432, .Name = "RoomComponent.db2" },
+ { .FileDataId = 5503433, .Name = "RoomComponentOption.db2" },
+ { .FileDataId = 5503564, .Name = "RoomComponentOptionTexture.db2" },
+ { .FileDataId = 5503573, .Name = "RoomComponentTexture.db2" },
+ { .FileDataId = 6378467, .Name = "RoomGridLine.db2" },
+ { .FileDataId = 5503435, .Name = "RoomWmoData.db2" },
{ .FileDataId = 3256786, .Name = "RopeEffect.db2" },
{ .FileDataId = 3500241, .Name = "RuneforgeLegendaryAbility.db2" },
{ .FileDataId = 1712172, .Name = "SDReplacementModel.db2" },