aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-04-25 22:50:11 +0200
committerShauren <shauren.trinity@gmail.com>2025-04-25 22:50:11 +0200
commitf9bf082be962d45de79f936d625f644253e9b810 (patch)
treea7c40c0b5baf522d04896721df5c5d91e25c834e
parent05709a24976cc4cd378ee62bdfec52510892aa5b (diff)
Core: Updated to 11.1.5
-rw-r--r--sql/base/auth_database.sql35
-rw-r--r--sql/updates/auth/master/2025_04_25_00_auth.sql39
-rw-r--r--sql/updates/hotfixes/master/2025_04_25_00_hotfixes.sql46
-rw-r--r--sql/updates/world/master/2025_04_25_00_world.sql2
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp12
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp8
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h65
-rw-r--r--src/server/game/DataStores/DB2Metadata.h227
-rw-r--r--src/server/game/DataStores/DB2Structure.h35
-rw-r--r--src/server/game/DataStores/DBCEnums.h40
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.h2
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp5
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h6
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.h6
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp93
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h11
-rw-r--r--src/server/game/Entities/Player/Player.cpp32
-rw-r--r--src/server/game/Entities/Player/Player.h5
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp59
-rw-r--r--src/server/game/Globals/ObjectMgr.h1
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp5
-rw-r--r--src/server/game/Quests/QuestDef.cpp4
-rw-r--r--src/server/game/Quests/QuestDef.h21
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h2
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h2
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/InspectPackets.h2
-rw-r--r--src/server/game/Server/Packets/LFGPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/LFGPackets.h2
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h2
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp21
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h12
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h4
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h1
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp19
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h754
-rw-r--r--src/server/game/Support/SupportMgr.h32
-rw-r--r--src/server/proto/Client/api/client/v2/presence_types.pb.cc979
-rw-r--r--src/server/proto/Client/api/client/v2/presence_types.pb.h1631
-rw-r--r--src/tools/map_extractor/System.cpp42
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h5
46 files changed, 3579 insertions, 711 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index fe5f9def0f6..bc3da473a94 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -1056,7 +1056,28 @@ INSERT INTO `build_auth_key` VALUES
(60257,'Mac','x64','WoWC',0x174D184200D89BF13A62DEDF6E265827),
(60257,'Win','A64','WoW',0x5DE295571BA573F16EC0D27F9B256953),
(60257,'Win','x64','WoW',0x04863309B886141AAB63893CD2414960),
-(60257,'Win','x64','WoWC',0x6D386FDACBABA88604AFAE3826FE31FA);
+(60257,'Win','x64','WoWC',0x6D386FDACBABA88604AFAE3826FE31FA),
+(60392,'Mac','A64','WoW',0x2C1FB8AE803BD91C457D08D6DF1C6128),
+(60392,'Mac','A64','WoWC',0xDFCE89D38B558A97E34B82D38C6972C9),
+(60392,'Mac','x64','WoW',0xDD8F3F8D4290BA24F006106397DD00FA),
+(60392,'Mac','x64','WoWC',0xDE6A3F2957C68A4E100ABAEB8547E127),
+(60392,'Win','A64','WoW',0xF1FE18ECAF86E0FEF417D6AC8F450444),
+(60392,'Win','x64','WoW',0xD2262204981078AE85E98BDAFF11EB41),
+(60392,'Win','x64','WoWC',0x896CE1BADC6CD1D65169AD63803BD51C),
+(60428,'Mac','A64','WoW',0x2E7D82DB6D2AB614A9D523B773C1D921),
+(60428,'Mac','A64','WoWC',0x0DA35A86AF0709859B22F9CAE128CD49),
+(60428,'Mac','x64','WoW',0xFAF413508F53006209110192CD6C1DCF),
+(60428,'Mac','x64','WoWC',0x21838345675138FC55002B4E2BB95F37),
+(60428,'Win','A64','WoW',0x32AC6106995042A6355B1DFDDE62BC75),
+(60428,'Win','x64','WoW',0x264E5A8300CB3FBDD183BF90F4EFAD4F),
+(60428,'Win','x64','WoWC',0xA70F28AEE99CE8D2993B0AB11876C668),
+(60490,'Mac','A64','WoW',0xB9289C46A7581BCFBB3E4F2DA4E88C4A),
+(60490,'Mac','A64','WoWC',0xE2CB722BA3091FB93E11D0A45FDE245D),
+(60490,'Mac','x64','WoW',0x0A8D47F840CC05F8E2F37CF9397BB5B2),
+(60490,'Mac','x64','WoWC',0x90845571462EE2250F4B5C572C9188DA),
+(60490,'Win','A64','WoW',0xBD4A878CFFF3262669351D582949F2CD),
+(60490,'Win','x64','WoW',0xBE091C2F2AEA1D1800CDA7E6875F3665),
+(60490,'Win','x64','WoWC',0x22822461C16260D124680E05875F9D9D);
/*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1437,7 +1458,10 @@ INSERT INTO `build_info` VALUES
(60037,11,1,0,NULL),
(60189,11,1,0,NULL),
(60228,11,1,0,NULL),
-(60257,11,1,0,NULL);
+(60257,11,1,0,NULL),
+(60392,11,1,5,NULL),
+(60428,11,1,5,NULL),
+(60490,11,1,5,NULL);
/*!40000 ALTER TABLE `build_info` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3049,7 +3073,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 '60257',
+ `gamebuild` int unsigned NOT NULL DEFAULT '60490',
`Region` tinyint unsigned NOT NULL DEFAULT '1',
`Battlegroup` tinyint unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
@@ -3064,7 +3088,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,60257,1,1);
+(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,60490,1,1);
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3559,7 +3583,8 @@ INSERT INTO `updates` VALUES
('2025_03_31_00_auth.sql','0522AF5AE6CE2B2EB14265CC005CC209DB4834C0','RELEASED','2025-03-31 21:19:14',0),
('2025_04_09_00_auth.sql','7543CD6152ABDA64B5FC75FC28211A54F16B9E40','RELEASED','2025-04-09 10:06:12',0),
('2025_04_10_00_auth.sql','93EBDB49570AFD980449CE6858AFA588ED763FAB','RELEASED','2025-04-10 20:45:44',0),
-('2025_04_12_00_auth.sql','A33D1A1E50EA4B6E93DD6BAB5AD624EDAEC39BDF','RELEASED','2025-04-12 00:54:47',0);
+('2025_04_12_00_auth.sql','A33D1A1E50EA4B6E93DD6BAB5AD624EDAEC39BDF','RELEASED','2025-04-12 00:54:47',0),
+('2025_04_25_00_auth.sql','CD64B1560DE7A3715B561FC4E712C5E61C126A1D','RELEASED','2025-04-25 19:43:41',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/master/2025_04_25_00_auth.sql b/sql/updates/auth/master/2025_04_25_00_auth.sql
new file mode 100644
index 00000000000..60954c24588
--- /dev/null
+++ b/sql/updates/auth/master/2025_04_25_00_auth.sql
@@ -0,0 +1,39 @@
+DELETE FROM `build_info` WHERE `build` IN (60392,60428,60490);
+INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
+(60392,11,1,5,NULL),
+(60428,11,1,5,NULL),
+(60490,11,1,5,NULL);
+
+DELETE FROM `build_auth_key` WHERE `build` IN (60392,60428,60490) AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build` IN (60392,60428,60490) AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
+DELETE FROM `build_auth_key` WHERE `build` IN (60392,60428,60490) AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build` IN (60392,60428,60490) AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
+DELETE FROM `build_auth_key` WHERE `build` IN (60392,60428,60490) AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build` IN (60392,60428,60490) AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
+DELETE FROM `build_auth_key` WHERE `build` IN (60392,60428,60490) AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
+INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
+(60392,'Mac','A64','WoW',0x2C1FB8AE803BD91C457D08D6DF1C6128),
+(60392,'Mac','A64','WoWC',0xDFCE89D38B558A97E34B82D38C6972C9),
+(60392,'Mac','x64','WoW',0xDD8F3F8D4290BA24F006106397DD00FA),
+(60392,'Mac','x64','WoWC',0xDE6A3F2957C68A4E100ABAEB8547E127),
+(60392,'Win','A64','WoW',0xF1FE18ECAF86E0FEF417D6AC8F450444),
+(60392,'Win','x64','WoW',0xD2262204981078AE85E98BDAFF11EB41),
+(60392,'Win','x64','WoWC',0x896CE1BADC6CD1D65169AD63803BD51C),
+(60428,'Mac','A64','WoW',0x2E7D82DB6D2AB614A9D523B773C1D921),
+(60428,'Mac','A64','WoWC',0x0DA35A86AF0709859B22F9CAE128CD49),
+(60428,'Mac','x64','WoW',0xFAF413508F53006209110192CD6C1DCF),
+(60428,'Mac','x64','WoWC',0x21838345675138FC55002B4E2BB95F37),
+(60428,'Win','A64','WoW',0x32AC6106995042A6355B1DFDDE62BC75),
+(60428,'Win','x64','WoW',0x264E5A8300CB3FBDD183BF90F4EFAD4F),
+(60428,'Win','x64','WoWC',0xA70F28AEE99CE8D2993B0AB11876C668),
+(60490,'Mac','A64','WoW',0xB9289C46A7581BCFBB3E4F2DA4E88C4A),
+(60490,'Mac','A64','WoWC',0xE2CB722BA3091FB93E11D0A45FDE245D),
+(60490,'Mac','x64','WoW',0x0A8D47F840CC05F8E2F37CF9397BB5B2),
+(60490,'Mac','x64','WoWC',0x90845571462EE2250F4B5C572C9188DA),
+(60490,'Win','A64','WoW',0xBD4A878CFFF3262669351D582949F2CD),
+(60490,'Win','x64','WoW',0xBE091C2F2AEA1D1800CDA7E6875F3665),
+(60490,'Win','x64','WoWC',0x22822461C16260D124680E05875F9D9D);
+
+UPDATE `realmlist` SET `gamebuild`=60490 WHERE `gamebuild` IN (60257,60392,60428);
+
+ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '60490';
diff --git a/sql/updates/hotfixes/master/2025_04_25_00_hotfixes.sql b/sql/updates/hotfixes/master/2025_04_25_00_hotfixes.sql
new file mode 100644
index 00000000000..cb36356c8f7
--- /dev/null
+++ b/sql/updates/hotfixes/master/2025_04_25_00_hotfixes.sql
@@ -0,0 +1,46 @@
+ALTER TABLE `chr_classes` MODIFY COLUMN `PrimaryStatPriority` tinyint NOT NULL DEFAULT 0 AFTER `ID`;
+
+ALTER TABLE `chr_race_x_chr_model` MODIFY COLUMN `ChrRacesID` tinyint unsigned NOT NULL DEFAULT 0 AFTER `ID`;
+
+ALTER TABLE `creature_model_data` MODIFY COLUMN `SizeClass` tinyint NOT NULL DEFAULT 0 AFTER `SoundID`;
+
+ALTER TABLE `dungeon_encounter` ADD COLUMN `Unknown1115` int NOT NULL DEFAULT 0 AFTER `Faction`;
+
+ALTER TABLE `heirloom` MODIFY COLUMN `Flags` int NOT NULL DEFAULT 0 AFTER `SourceTypeEnum`;
+
+ALTER TABLE `item_class` MODIFY COLUMN `Flags` int NOT NULL DEFAULT 0 AFTER `PriceModifier`;
+
+ALTER TABLE `item_extended_cost` MODIFY COLUMN `Flags` int NOT NULL DEFAULT 0 AFTER `ArenaBracket`;
+
+ALTER TABLE `num_talents_at_level` ADD COLUMN `Unknown1115` float NOT NULL DEFAULT 0 AFTER `NumTalentsDemonHunter`;
+
+ALTER TABLE `spell_casting_requirements` MODIFY COLUMN `FacingCasterFlags` int NOT NULL DEFAULT 0 AFTER `SpellID`;
+
+ALTER TABLE `talent` ADD COLUMN `TabID` smallint unsigned NOT NULL DEFAULT 0 AFTER `ColumnIndex`;
+ALTER TABLE `talent` ADD COLUMN `RequiredSpellID` int unsigned NOT NULL DEFAULT 0 AFTER `OverridesSpellID`;
+ALTER TABLE `talent` MODIFY COLUMN `CategoryMask1` int NOT NULL DEFAULT 0 AFTER `RequiredSpellID`;
+ALTER TABLE `talent` MODIFY COLUMN `CategoryMask2` int NOT NULL DEFAULT 0 AFTER `CategoryMask1`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank1` int unsigned NOT NULL DEFAULT 0 AFTER `CategoryMask2`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank2` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank1`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank3` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank2`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank4` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank3`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank5` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank4`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank6` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank5`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank7` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank6`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank8` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank7`;
+ALTER TABLE `talent` ADD COLUMN `SpellRank9` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank8`;
+ALTER TABLE `talent` ADD COLUMN `PrereqTalent1` int unsigned NOT NULL DEFAULT 0 AFTER `SpellRank9`;
+ALTER TABLE `talent` ADD COLUMN `PrereqTalent2` int unsigned NOT NULL DEFAULT 0 AFTER `PrereqTalent1`;
+ALTER TABLE `talent` ADD COLUMN `PrereqTalent3` int unsigned NOT NULL DEFAULT 0 AFTER `PrereqTalent2`;
+ALTER TABLE `talent` ADD COLUMN `PrereqRank1` tinyint unsigned NOT NULL DEFAULT 0 AFTER `PrereqTalent3`;
+ALTER TABLE `talent` ADD COLUMN `PrereqRank2` tinyint unsigned NOT NULL DEFAULT 0 AFTER `PrereqRank1`;
+ALTER TABLE `talent` ADD COLUMN `PrereqRank3` tinyint unsigned NOT NULL DEFAULT 0 AFTER `PrereqRank2`;
+
+ALTER TABLE `toy` MODIFY COLUMN `Flags` int NOT NULL DEFAULT 0 AFTER `ItemID`;
+
+ALTER TABLE `vehicle_seat` MODIFY COLUMN `EnterAnimKitID` int NOT NULL DEFAULT 0 AFTER `CameraSeatZoomMax`;
+ALTER TABLE `vehicle_seat` MODIFY COLUMN `RideAnimKitID` int NOT NULL DEFAULT 0 AFTER `EnterAnimKitID`;
+ALTER TABLE `vehicle_seat` MODIFY COLUMN `ExitAnimKitID` int NOT NULL DEFAULT 0 AFTER `RideAnimKitID`;
+ALTER TABLE `vehicle_seat` MODIFY COLUMN `VehicleEnterAnimKitID` int NOT NULL DEFAULT 0 AFTER `ExitAnimKitID`;
+ALTER TABLE `vehicle_seat` MODIFY COLUMN `VehicleRideAnimKitID` int NOT NULL DEFAULT 0 AFTER `VehicleEnterAnimKitID`;
+ALTER TABLE `vehicle_seat` MODIFY COLUMN `VehicleExitAnimKitID` int NOT NULL DEFAULT 0 AFTER `VehicleRideAnimKitID`;
diff --git a/sql/updates/world/master/2025_04_25_00_world.sql b/sql/updates/world/master/2025_04_25_00_world.sql
new file mode 100644
index 00000000000..7e904a7beef
--- /dev/null
+++ b/sql/updates/world/master/2025_04_25_00_world.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `playerchoice_response_maw_power` DROP `RarityColor`;
+ALTER TABLE `quest_template` ADD `FlagsEx3` int unsigned NOT NULL DEFAULT 0 AFTER `FlagsEx2`;
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index d0a47a6ba82..94f1ced8408 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -580,7 +580,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// DungeonEncounter.db2
PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, CompleteWorldStateID, Bit, Flags, "
- "SpellIconFileID, Faction FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "SpellIconFileID, Faction, Unknown1115 FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT MAX(ID) + 1 FROM dungeon_encounter", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE (`VerifiedBuild` > 0) = ?"
" AND locale = ?", CONNECTION_SYNCH);
@@ -1246,8 +1246,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_MAX_ID_STMT(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT MAX(ID) + 1 FROM names_reserved_locale", CONNECTION_SYNCH);
// NumTalentsAtLevel.db2
- PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level"
- " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter, Unknown1115"
+ " FROM num_talents_at_level WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT MAX(ID) + 1 FROM num_talents_at_level", CONNECTION_SYNCH);
// OverrideSpellData.db2
@@ -1747,8 +1747,10 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_MAX_ID_STMT(HOTFIX_SEL_TACT_KEY, "SELECT MAX(ID) + 1 FROM tact_key", CONNECTION_SYNCH);
// Talent.db2
- PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, ClassID, SpecID, SpellID, OverridesSpellID, "
- "CategoryMask1, CategoryMask2 FROM talent WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, TabID, ClassID, SpecID, SpellID, OverridesSpellID, "
+ "RequiredSpellID, CategoryMask1, CategoryMask2, SpellRank1, SpellRank2, SpellRank3, SpellRank4, SpellRank5, SpellRank6, SpellRank7, "
+ "SpellRank8, SpellRank9, PrereqTalent1, PrereqTalent2, PrereqTalent3, PrereqRank1, PrereqRank2, PrereqRank3 FROM talent"
+ " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_TALENT, "SELECT MAX(ID) + 1 FROM talent", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TALENT, "SELECT ID, Description_lang FROM talent_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH);
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index f09cee5bd1b..c5406e0796f 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -4029,6 +4029,14 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
return false;
break;
}
+ case ModifierTreeType::PlayerTitle: // 393
+ if (referencePlayer->m_playerData->PlayerTitle != int32(reqValue))
+ return false;
+ break;
+ case ModifierTreeType::PlayerIsInGuild: // 404
+ if (!referencePlayer->GetGuildId())
+ return false;
+ break;
default:
return false;
}
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h
index f3fc6fa7366..a9d7548b077 100644
--- a/src/server/game/DataStores/DB2LoadInfo.h
+++ b/src/server/game/DataStores/DB2LoadInfo.h
@@ -962,7 +962,7 @@ struct ChrClassesLoadInfo
{ .IsSigned = false, .Type = FT_SHORT, .Name = "CinematicSequenceID" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "DefaultSpec" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "ID" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "PrimaryStatPriority" },
+ { .IsSigned = true, .Type = FT_BYTE, .Name = "PrimaryStatPriority" },
{ .IsSigned = true, .Type = FT_BYTE, .Name = "DisplayPower" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "RangedAttackPowerPerAgility" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "AttackPowerPerAgility" },
@@ -1499,7 +1499,7 @@ struct CreatureModelDataLoadInfo
{ .IsSigned = false, .Type = FT_INT, .Name = "FootstepCameraEffectID" },
{ .IsSigned = false, .Type = FT_INT, .Name = "DeathThudCameraEffectID" },
{ .IsSigned = false, .Type = FT_INT, .Name = "SoundID" },
- { .IsSigned = false, .Type = FT_INT, .Name = "SizeClass" },
+ { .IsSigned = true, .Type = FT_BYTE, .Name = "SizeClass" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "CollisionWidth" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "CollisionHeight" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "WorldEffectScale" },
@@ -1709,7 +1709,7 @@ struct DifficultyLoadInfo
struct DungeonEncounterLoadInfo
{
- static constexpr DB2FieldMeta Fields[10] =
+ static constexpr DB2FieldMeta Fields[11] =
{
{ .IsSigned = false, .Type = FT_STRING, .Name = "Name" },
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
@@ -1721,9 +1721,10 @@ struct DungeonEncounterLoadInfo
{ .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
{ .IsSigned = true, .Type = FT_INT, .Name = "SpellIconFileID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "Faction" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Unknown1115" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 10, &DungeonEncounterMeta::Instance, HOTFIX_SEL_DUNGEON_ENCOUNTER };
+ static constexpr DB2LoadInfo Instance{ Fields, 11, &DungeonEncounterMeta::Instance, HOTFIX_SEL_DUNGEON_ENCOUNTER };
};
struct DurabilityCostsLoadInfo
@@ -2516,7 +2517,7 @@ struct HeirloomLoadInfo
{ .IsSigned = true, .Type = FT_INT, .Name = "LegacyUpgradedItemID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "StaticUpgradedItemID" },
{ .IsSigned = true, .Type = FT_BYTE, .Name = "SourceTypeEnum" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
{ .IsSigned = true, .Type = FT_INT, .Name = "LegacyItemID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "UpgradeItemID1" },
{ .IsSigned = true, .Type = FT_INT, .Name = "UpgradeItemID2" },
@@ -2843,7 +2844,7 @@ struct ItemClassLoadInfo
{ .IsSigned = false, .Type = FT_STRING, .Name = "ClassName" },
{ .IsSigned = true, .Type = FT_BYTE, .Name = "ClassID" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "PriceModifier" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
};
static constexpr DB2LoadInfo Instance{ Fields, 5, &ItemClassMeta::Instance, HOTFIX_SEL_ITEM_CLASS };
@@ -3009,7 +3010,7 @@ struct ItemExtendedCostLoadInfo
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "RequiredArenaRating" },
{ .IsSigned = true, .Type = FT_BYTE, .Name = "ArenaBracket" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "MinFactionID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "MinReputation" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "RequiredAchievement" },
@@ -4037,15 +4038,16 @@ struct NamesReservedLocaleLoadInfo
struct NumTalentsAtLevelLoadInfo
{
- static constexpr DB2FieldMeta Fields[4] =
+ static constexpr DB2FieldMeta Fields[5] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "NumTalents" },
{ .IsSigned = true, .Type = FT_INT, .Name = "NumTalentsDeathKnight" },
{ .IsSigned = true, .Type = FT_INT, .Name = "NumTalentsDemonHunter" },
+ { .IsSigned = false, .Type = FT_FLOAT, .Name = "Unknown1115" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 4, &NumTalentsAtLevelMeta::Instance, HOTFIX_SEL_NUM_TALENTS_AT_LEVEL };
+ static constexpr DB2LoadInfo Instance{ Fields, 5, &NumTalentsAtLevelMeta::Instance, HOTFIX_SEL_NUM_TALENTS_AT_LEVEL };
};
struct OverrideSpellDataLoadInfo
@@ -5003,7 +5005,7 @@ struct SpellCastingRequirementsLoadInfo
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "SpellID" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "FacingCasterFlags" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "FacingCasterFlags" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "MinFactionID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "MinReputation" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "RequiredAreasID" },
@@ -5804,22 +5806,39 @@ struct TactKeyLoadInfo
struct TalentLoadInfo
{
- static constexpr DB2FieldMeta Fields[11] =
+ static constexpr DB2FieldMeta Fields[28] =
{
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = false, .Type = FT_STRING, .Name = "Description" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "TierID" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" },
{ .IsSigned = false, .Type = FT_BYTE, .Name = "ColumnIndex" },
+ { .IsSigned = false, .Type = FT_SHORT, .Name = "TabID" },
{ .IsSigned = true, .Type = FT_BYTE, .Name = "ClassID" },
{ .IsSigned = false, .Type = FT_SHORT, .Name = "SpecID" },
{ .IsSigned = false, .Type = FT_INT, .Name = "SpellID" },
{ .IsSigned = false, .Type = FT_INT, .Name = "OverridesSpellID" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "CategoryMask1" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "CategoryMask2" },
- };
-
- static constexpr DB2LoadInfo Instance{ Fields, 11, &TalentMeta::Instance, HOTFIX_SEL_TALENT };
+ { .IsSigned = false, .Type = FT_INT, .Name = "RequiredSpellID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "CategoryMask1" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "CategoryMask2" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank1" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank2" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank3" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank4" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank5" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank6" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank7" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank8" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank9" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "PrereqTalent1" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "PrereqTalent2" },
+ { .IsSigned = false, .Type = FT_INT, .Name = "PrereqTalent3" },
+ { .IsSigned = false, .Type = FT_BYTE, .Name = "PrereqRank1" },
+ { .IsSigned = false, .Type = FT_BYTE, .Name = "PrereqRank2" },
+ { .IsSigned = false, .Type = FT_BYTE, .Name = "PrereqRank3" },
+ };
+
+ static constexpr DB2LoadInfo Instance{ Fields, 28, &TalentMeta::Instance, HOTFIX_SEL_TALENT };
};
struct TaxiNodesLoadInfo
@@ -5904,7 +5923,7 @@ struct ToyLoadInfo
{ .IsSigned = false, .Type = FT_STRING, .Name = "SourceText" },
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
{ .IsSigned = true, .Type = FT_INT, .Name = "ItemID" },
- { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "Flags" },
{ .IsSigned = true, .Type = FT_BYTE, .Name = "SourceTypeEnum" },
};
@@ -6634,12 +6653,12 @@ struct VehicleSeatLoadInfo
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "CameraEnteringZoom" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "CameraSeatZoomMin" },
{ .IsSigned = false, .Type = FT_FLOAT, .Name = "CameraSeatZoomMax" },
- { .IsSigned = true, .Type = FT_SHORT, .Name = "EnterAnimKitID" },
- { .IsSigned = true, .Type = FT_SHORT, .Name = "RideAnimKitID" },
- { .IsSigned = true, .Type = FT_SHORT, .Name = "ExitAnimKitID" },
- { .IsSigned = true, .Type = FT_SHORT, .Name = "VehicleEnterAnimKitID" },
- { .IsSigned = true, .Type = FT_SHORT, .Name = "VehicleRideAnimKitID" },
- { .IsSigned = true, .Type = FT_SHORT, .Name = "VehicleExitAnimKitID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "EnterAnimKitID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "RideAnimKitID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "ExitAnimKitID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "VehicleEnterAnimKitID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "VehicleRideAnimKitID" },
+ { .IsSigned = true, .Type = FT_INT, .Name = "VehicleExitAnimKitID" },
{ .IsSigned = true, .Type = FT_SHORT, .Name = "CameraModeID" },
};
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index 08faf1eea37..c71bbabf68c 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -737,23 +737,24 @@ struct AnimationDataMeta
struct AreaConditionalDataMeta
{
- static constexpr DB2MetaField Fields[5] =
+ 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_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
{
.FileDataId = 2123730,
.IndexField = 1,
- .ParentIndexField = 4,
- .FieldCount = 5,
- .FileFieldCount = 4,
- .LayoutHash = 0xFFC38678,
+ .ParentIndexField = 5,
+ .FieldCount = 6,
+ .FileFieldCount = 5,
+ .LayoutHash = 0xAEE182C6,
.Fields = Fields
};
};
@@ -2687,6 +2688,26 @@ struct Cfg_ConfigsMeta
};
};
+struct Cfg_GameRulesMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6841377,
+ .IndexField = -1,
+ .ParentIndexField = -1,
+ .FieldCount = 2,
+ .FileFieldCount = 2,
+ .LayoutHash = 0x41B88A54,
+ .Fields = Fields
+ };
+};
+
struct Cfg_RegionsMeta
{
static constexpr DB2MetaField Fields[5] =
@@ -3294,7 +3315,7 @@ struct ChrClassesMeta
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
- { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
@@ -3313,7 +3334,7 @@ struct ChrClassesMeta
.ParentIndexField = -1,
.FieldCount = 39,
.FileFieldCount = 39,
- .LayoutHash = 0x6D301B0D,
+ .LayoutHash = 0x03A0FD4D,
.Fields = Fields
};
};
@@ -5013,6 +5034,73 @@ struct ConversationLineMeta
};
};
+struct CooldownSetMeta
+{
+ 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 = 6405756,
+ .IndexField = 0,
+ .ParentIndexField = 1,
+ .FieldCount = 3,
+ .FileFieldCount = 3,
+ .LayoutHash = 0x833402CE,
+ .Fields = Fields
+ };
+};
+
+struct CooldownSetLinkedSpellMeta
+{
+ 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 = 6422327,
+ .IndexField = -1,
+ .ParentIndexField = 2,
+ .FieldCount = 3,
+ .FileFieldCount = 2,
+ .LayoutHash = 0x11E4972F,
+ .Fields = Fields
+ };
+};
+
+struct CooldownSetSpellMeta
+{
+ static constexpr DB2MetaField Fields[7] =
+ {
+ { .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_INT, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
+ };
+
+ static constexpr DB2Meta Instance =
+ {
+ .FileDataId = 6405757,
+ .IndexField = 0,
+ .ParentIndexField = 1,
+ .FieldCount = 7,
+ .FileFieldCount = 7,
+ .LayoutHash = 0xB5A471F2,
+ .Fields = Fields
+ };
+};
+
struct CorruptionEffectsMeta
{
static constexpr DB2MetaField Fields[4] =
@@ -5469,7 +5557,7 @@ struct CreatureDisplayInfoMeta
.ParentIndexField = -1,
.FieldCount = 28,
.FileFieldCount = 28,
- .LayoutHash = 0x19189406,
+ .LayoutHash = 0x7275F5F6,
.Fields = Fields
};
};
@@ -5765,7 +5853,7 @@ struct CreatureModelDataMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
- { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .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 },
@@ -5794,7 +5882,7 @@ struct CreatureModelDataMeta
.ParentIndexField = -1,
.FieldCount = 34,
.FileFieldCount = 34,
- .LayoutHash = 0x6148D238,
+ .LayoutHash = 0x0F5449F8,
.Fields = Fields
};
};
@@ -6189,7 +6277,7 @@ struct DeathThudLookupsMeta
{
static constexpr DB2MetaField Fields[4] =
{
- { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
@@ -6202,7 +6290,7 @@ struct DeathThudLookupsMeta
.ParentIndexField = -1,
.FieldCount = 4,
.FileFieldCount = 4,
- .LayoutHash = 0xDDC6DB32,
+ .LayoutHash = 0xB84E88F2,
.Fields = Fields
};
};
@@ -6571,7 +6659,7 @@ struct DriverBlacklistMeta
struct DungeonEncounterMeta
{
- static constexpr DB2MetaField Fields[10] =
+ static constexpr DB2MetaField Fields[11] =
{
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
@@ -6583,6 +6671,7 @@ struct DungeonEncounterMeta
{ .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 =
@@ -6590,9 +6679,9 @@ struct DungeonEncounterMeta
.FileDataId = 1347279,
.IndexField = 1,
.ParentIndexField = 2,
- .FieldCount = 10,
- .FileFieldCount = 10,
- .LayoutHash = 0x7B6AC42A,
+ .FieldCount = 11,
+ .FileFieldCount = 11,
+ .LayoutHash = 0xE408B8D4,
.Fields = Fields
};
};
@@ -6719,7 +6808,7 @@ struct EmotesTextDataMeta
static constexpr DB2MetaField Fields[3] =
{
{ .Type = FT_STRING, .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 },
};
@@ -6730,7 +6819,7 @@ struct EmotesTextDataMeta
.ParentIndexField = 2,
.FieldCount = 3,
.FileFieldCount = 2,
- .LayoutHash = 0x4BF58EA9,
+ .LayoutHash = 0x62B26C79,
.Fields = Fields
};
};
@@ -7264,9 +7353,11 @@ struct GameClockDebugMeta
struct GameModeMeta
{
- static constexpr DB2MetaField Fields[9] =
+ static constexpr DB2MetaField Fields[12] =
{
{ .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true },
+ { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true },
+ { .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 },
@@ -7275,6 +7366,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 },
};
static constexpr DB2Meta Instance =
@@ -7282,9 +7374,9 @@ struct GameModeMeta
.FileDataId = 5008306,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 9,
- .FileFieldCount = 9,
- .LayoutHash = 0x60A1CBA9,
+ .FieldCount = 12,
+ .FileFieldCount = 12,
+ .LayoutHash = 0x3609B763,
.Fields = Fields
};
};
@@ -9719,7 +9811,7 @@ struct HeirloomMeta
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .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 },
{ .Type = FT_INT, .ArraySize = 6, .IsSigned = true },
{ .Type = FT_SHORT, .ArraySize = 6, .IsSigned = false },
@@ -9732,7 +9824,7 @@ struct HeirloomMeta
.ParentIndexField = -1,
.FieldCount = 10,
.FileFieldCount = 10,
- .LayoutHash = 0x2F8299AE,
+ .LayoutHash = 0x9ECA649E,
.Fields = Fields
};
};
@@ -10468,7 +10560,7 @@ struct ItemClassMeta
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
@@ -10478,7 +10570,7 @@ struct ItemClassMeta
.ParentIndexField = -1,
.FieldCount = 4,
.FileFieldCount = 4,
- .LayoutHash = 0xA2EB4A48,
+ .LayoutHash = 0x35680EB8,
.Fields = Fields
};
};
@@ -10844,7 +10936,7 @@ struct ItemExtendedCostMeta
{
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_BYTE, .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 },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
@@ -10861,7 +10953,7 @@ struct ItemExtendedCostMeta
.ParentIndexField = -1,
.FieldCount = 10,
.FileFieldCount = 10,
- .LayoutHash = 0xD2894EC8,
+ .LayoutHash = 0x6F3FC018,
.Fields = Fields
};
};
@@ -13335,7 +13427,7 @@ struct MawPowerRarityMeta
.ParentIndexField = -1,
.FieldCount = 2,
.FileFieldCount = 2,
- .LayoutHash = 0x3DFF7866,
+ .LayoutHash = 0xA575912D,
.Fields = Fields
};
};
@@ -14337,21 +14429,23 @@ struct NamesReservedLocaleMeta
struct NumTalentsAtLevelMeta
{
- static constexpr DB2MetaField Fields[3] =
+ 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_FLOAT, .ArraySize = 1, .IsSigned = true },
};
static constexpr DB2Meta Instance =
{
.FileDataId = 1953326,
- .IndexField = -1,
+ .IndexField = 0,
.ParentIndexField = -1,
- .FieldCount = 3,
- .FileFieldCount = 3,
- .LayoutHash = 0x9E707863,
+ .FieldCount = 5,
+ .FileFieldCount = 5,
+ .LayoutHash = 0x1B85660E,
.Fields = Fields
};
};
@@ -15491,7 +15585,7 @@ struct PlayerDataElementAccountMeta
.ParentIndexField = -1,
.FieldCount = 3,
.FileFieldCount = 3,
- .LayoutHash = 0x7F54ED49,
+ .LayoutHash = 0x099A3DF9,
.Fields = Fields
};
};
@@ -15512,7 +15606,7 @@ struct PlayerDataElementCharacterMeta
.ParentIndexField = -1,
.FieldCount = 3,
.FileFieldCount = 3,
- .LayoutHash = 0x7F54ED49,
+ .LayoutHash = 0x099A3DF9,
.Fields = Fields
};
};
@@ -18782,7 +18876,7 @@ struct SpellCastingRequirementsMeta
static constexpr DB2MetaField Fields[7] =
{
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_BYTE, .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 },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
@@ -18797,7 +18891,7 @@ struct SpellCastingRequirementsMeta
.ParentIndexField = -1,
.FieldCount = 7,
.FileFieldCount = 7,
- .LayoutHash = 0xEB5F42A0,
+ .LayoutHash = 0x02074290,
.Fields = Fields
};
};
@@ -20571,26 +20665,6 @@ struct StartupFilesMeta
};
};
-struct Startup_StringsMeta
-{
- static constexpr DB2MetaField Fields[2] =
- {
- { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
- };
-
- static constexpr DB2Meta Instance =
- {
- .FileDataId = 1375805,
- .IndexField = -1,
- .ParentIndexField = -1,
- .FieldCount = 2,
- .FileFieldCount = 2,
- .LayoutHash = 0xD758674F,
- .Fields = Fields
- };
-};
-
struct StationeryMeta
{
static constexpr DB2MetaField Fields[3] =
@@ -20675,17 +20749,22 @@ struct TactKeyLookupMeta
struct TalentMeta
{
- static constexpr DB2MetaField Fields[9] =
+ static constexpr DB2MetaField Fields[14] =
{
{ .Type = FT_STRING, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
- { .Type = FT_BYTE, .ArraySize = 2, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 2, .IsSigned = true },
+ { .Type = FT_INT, .ArraySize = 9, .IsSigned = false },
+ { .Type = FT_INT, .ArraySize = 3, .IsSigned = false },
+ { .Type = FT_BYTE, .ArraySize = 3, .IsSigned = false },
};
static constexpr DB2Meta Instance =
@@ -20693,9 +20772,9 @@ struct TalentMeta
.FileDataId = 1369062,
.IndexField = -1,
.ParentIndexField = -1,
- .FieldCount = 9,
- .FileFieldCount = 9,
- .LayoutHash = 0xFD0E9E24,
+ .FieldCount = 14,
+ .FileFieldCount = 14,
+ .LayoutHash = 0x4D999D55,
.Fields = Fields
};
};
@@ -20833,7 +20912,7 @@ struct TerrainTypeMeta
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false },
{ .Type = FT_SHORT, .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 },
};
static constexpr DB2Meta Instance =
@@ -20843,7 +20922,7 @@ struct TerrainTypeMeta
.ParentIndexField = -1,
.FieldCount = 5,
.FileFieldCount = 5,
- .LayoutHash = 0xEC0D143D,
+ .LayoutHash = 0x7A6E1ECD,
.Fields = Fields
};
};
@@ -20967,7 +21046,7 @@ struct ToyMeta
{ .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 = false },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
};
@@ -20978,7 +21057,7 @@ struct ToyMeta
.ParentIndexField = -1,
.FieldCount = 5,
.FileFieldCount = 5,
- .LayoutHash = 0xC55DB9B0,
+ .LayoutHash = 0x821B5D20,
.Fields = Fields
};
};
@@ -23524,12 +23603,12 @@ struct VehicleSeatMeta
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
- { .Type = FT_SHORT, .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 },
+ { .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
{ .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true },
};
@@ -23540,7 +23619,7 @@ struct VehicleSeatMeta
.ParentIndexField = -1,
.FieldCount = 61,
.FileFieldCount = 61,
- .LayoutHash = 0x53C25193,
+ .LayoutHash = 0x973F2793,
.Fields = Fields
};
};
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 4af8e10f860..eff70fb4b9d 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -684,7 +684,7 @@ struct ChrClassesEntry
uint16 CinematicSequenceID;
uint16 DefaultSpec;
uint8 ID;
- uint8 PrimaryStatPriority;
+ int8 PrimaryStatPriority;
int8 DisplayPower;
uint8 RangedAttackPowerPerAgility;
uint8 AttackPowerPerAgility;
@@ -1101,7 +1101,7 @@ struct CreatureModelDataEntry
uint32 FootstepCameraEffectID;
uint32 DeathThudCameraEffectID;
uint32 SoundID;
- uint32 SizeClass;
+ int8 SizeClass;
float CollisionWidth;
float CollisionHeight;
float WorldEffectScale;
@@ -1530,6 +1530,7 @@ struct DungeonEncounterEntry
int32 Flags;
int32 SpellIconFileID;
int32 Faction;
+ int32 Unknown1115;
};
struct DurabilityCostsEntry
@@ -2096,7 +2097,7 @@ struct HeirloomEntry
int32 LegacyUpgradedItemID;
int32 StaticUpgradedItemID;
int8 SourceTypeEnum;
- uint8 Flags;
+ int32 Flags;
int32 LegacyItemID;
std::array<int32, 6> UpgradeItemID;
std::array<uint16, 6> UpgradeItemBonusListID;
@@ -2275,7 +2276,7 @@ struct ItemClassEntry
LocalizedString ClassName;
int8 ClassID;
float PriceModifier;
- uint8 Flags;
+ int32 Flags;
};
struct ItemContextPickerEntryEntry
@@ -2364,7 +2365,7 @@ struct ItemExtendedCostEntry
uint32 ID;
uint16 RequiredArenaRating;
int8 ArenaBracket; // arena slot restrictions (min slot value)
- uint8 Flags;
+ int32 Flags;
uint8 MinFactionID;
int32 MinReputation;
uint8 RequiredAchievement; // required personal arena rating
@@ -3057,6 +3058,7 @@ struct NumTalentsAtLevelEntry
int32 NumTalents;
int32 NumTalentsDeathKnight;
int32 NumTalentsDemonHunter;
+ float Unknown1115;
};
#define MAX_OVERRIDE_SPELL 10
@@ -3655,7 +3657,7 @@ struct SpellCastingRequirementsEntry
{
uint32 ID;
int32 SpellID;
- uint8 FacingCasterFlags;
+ int32 FacingCasterFlags;
uint16 MinFactionID;
int32 MinReputation;
uint16 RequiredAreasID;
@@ -4158,11 +4160,16 @@ struct TalentEntry
uint8 TierID;
uint8 Flags;
uint8 ColumnIndex;
+ uint16 TabID;
int8 ClassID;
uint16 SpecID;
uint32 SpellID;
uint32 OverridesSpellID;
- std::array<uint8, 2> CategoryMask;
+ uint32 RequiredSpellID;
+ std::array<int32, 2> CategoryMask;
+ std::array<uint32, 9> SpellRank;
+ std::array<uint32, 3> PrereqTalent;
+ std::array<uint8, 3> PrereqRank;
};
struct TaxiNodesEntry
@@ -4235,7 +4242,7 @@ struct ToyEntry
LocalizedString SourceText;
uint32 ID;
int32 ItemID;
- uint8 Flags;
+ int32 Flags;
int8 SourceTypeEnum;
};
@@ -4730,12 +4737,12 @@ struct VehicleSeatEntry
float CameraEnteringZoom;
float CameraSeatZoomMin;
float CameraSeatZoomMax;
- int16 EnterAnimKitID;
- int16 RideAnimKitID;
- int16 ExitAnimKitID;
- int16 VehicleEnterAnimKitID;
- int16 VehicleRideAnimKitID;
- int16 VehicleExitAnimKitID;
+ int32 EnterAnimKitID;
+ int32 RideAnimKitID;
+ int32 ExitAnimKitID;
+ int32 VehicleEnterAnimKitID;
+ int32 VehicleRideAnimKitID;
+ int32 VehicleExitAnimKitID;
int16 CameraModeID;
inline bool HasFlag(VehicleSeatFlags flag) const { return !!(Flags & flag); }
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 80f5389d5a4..dc7f13b4192 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -441,7 +441,7 @@ enum class ContentTuningCalcType : int32
enum class ContentTuningFlag : int32
{
DisabledForItem = 0x04,
- Horde = 0x8,
+ Horde = 0x08,
Alliance = 0x10
};
@@ -885,14 +885,15 @@ DEFINE_ENUM_FLAG(CurrencyTypesFlags);
enum class CurrencyTypesFlagsB : uint32
{
- UseTotalEarnedForEarned = 0x01,
- ShowQuestXPGainInTooltip = 0x02, // NYI
- NoNotificationMailOnOfflineProgress = 0x04, // NYI
- BattlenetVirtualCurrency = 0x08, // NYI
- FutureCurrencyFlag = 0x10, // NYI
- DontDisplayIfZero = 0x20, // NYI
- ScaleMaxQuantityBySeasonWeeks = 0x40, // NYI
- ScaleMaxQuantityByWeeksSinceStart = 0x80, // NYI
+ UseTotalEarnedForEarned = 0x0001,
+ ShowQuestXPGainInTooltip = 0x0002, // NYI
+ NoNotificationMailOnOfflineProgress = 0x0004, // NYI
+ BattlenetVirtualCurrency = 0x0008, // NYI
+ FutureCurrencyFlag = 0x0010, // NYI
+ DontDisplayIfZero = 0x0020, // NYI
+ ScaleMaxQuantityBySeasonWeeks = 0x0040, // NYI
+ ScaleMaxQuantityByWeeksSinceStart = 0x0080, // NYI
+ ForceMaxQuantityOnConversion = 0x0100, // NYI
};
DEFINE_ENUM_FLAG(CurrencyTypesFlagsB);
@@ -1027,6 +1028,14 @@ enum class GlobalCurve : int32
ContentTuningPvpItemLevelHealthScaling = 13,
ContentTuningPvpLevelDamageScaling = 14,
ContentTuningPvpItemLevelDamageScaling = 15,
+
+ ArmorItemLevelDiminishing = 18,
+
+ ChallengeModeHealth = 21,
+ ChallengeModeDamage = 22,
+ MythicPlusEndOfRunGearSequenceLevel = 23,
+
+ SpellAreaEffectWarningRadius = 26, // ground spell effect warning circle radius (based on spell radius)
};
#define MAX_ITEM_PROTO_FLAGS 5
@@ -1829,6 +1838,9 @@ enum class ModifierTreeType : int32
PlayerDataElementCharacterEqual = 390, /*NYI*/ // Player {PlayerDataElementCharacter} is greater than {#Amount}
PlayerDataElementAccountEqual = 391, /*NYI*/ // Player {PlayerDataElementAccount} is greater than {#Amount}
PlayerHasCompletedQuestOrIsReadyToTurnIn = 392, // Player has previously completed quest "{QuestV2}" or is ready to turn it in
+ PlayerTitle = 393, // Player is currently using "{ChrTitles}" title
+
+ PlayerIsInGuild = 404, // Player is in a guild
};
enum class ModifierTreeOperator : int8
@@ -1996,6 +2008,14 @@ enum class PlayerInteractionType : int32
CharacterBanker = 67,
AccountBanker = 68,
ProfessionRespec = 69,
+ PlaceholderType71 = 70,
+ PlaceholderType72 = 71,
+ PlaceholderType73 = 72,
+ PlaceholderType74 = 73,
+ PlaceholderType75 = 74,
+ PlaceholderType76 = 75,
+ GuildRename = 76,
+ PlaceholderType77 = 77,
};
enum class PowerTypeFlags : int16
@@ -2301,7 +2321,7 @@ enum class SummonPropertiesFlags : uint32
DEFINE_ENUM_FLAG(SummonPropertiesFlags);
#define MAX_TALENT_TIERS 7
-#define MAX_TALENT_COLUMNS 3
+#define MAX_TALENT_COLUMNS 4
#define MAX_PVP_TALENT_SLOTS 4
enum class TaxiNodeFlags : int32
diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h
index cadf42d3061..0d6337b170f 100644
--- a/src/server/game/DungeonFinding/LFGMgr.h
+++ b/src/server/game/DungeonFinding/LFGMgr.h
@@ -134,6 +134,8 @@ enum LfgJoinResult
LFG_JOIN_ALREADY_USING_LFG_LIST = 0x3F, // You can't do that while using Premade Groups.
LFG_JOIN_NOT_LEADER = 0x45, // You are not the party leader.
LFG_JOIN_DEAD = 0x49,
+ LFG_FARM_LIMIT = 0x4D, // You or someone in your party has entered too many instances recently. Please wait awhile and try again.
+ LFG_NO_CROSS_FACTION_PARTIES = 0x4E, // Cross-faction groups can't queue for this instance
LFG_JOIN_PARTY_NOT_MEET_REQS = 6, // One or more party members do not meet the requirements for the chosen dungeons (FIXME)
};
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index d5785084f88..85d6ecb7e3d 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -287,6 +287,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID)
text.QuestFlags[0] = quest->GetFlags();
text.QuestFlags[1] = quest->GetFlagsEx();
text.QuestFlags[2] = quest->GetFlagsEx2();
+ text.QuestFlags[3] = quest->GetFlagsEx3();
text.Repeatable = quest->IsTurnIn() && quest->IsRepeatable() && !quest->IsDailyOrWeekly() && !quest->IsMonthly();
text.ResetByScheduler = quest->IsResetByScheduler();
text.Important = quest->IsImportant();
@@ -418,6 +419,7 @@ void PlayerMenu::SendQuestGiverQuestListMessage(Object* questgiver)
text.QuestFlags[0] = quest->GetFlags();
text.QuestFlags[1] = quest->GetFlagsEx();
text.QuestFlags[2] = quest->GetFlagsEx2();
+ text.QuestFlags[3] = quest->GetFlagsEx3();
text.Repeatable = quest->IsTurnIn() && quest->IsRepeatable() && !quest->IsDailyOrWeekly() && !quest->IsMonthly();
text.ResetByScheduler = quest->IsResetByScheduler();
text.Important = quest->IsImportant();
@@ -495,6 +497,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
packet.QuestFlags[0] = quest->GetFlags() & (sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_ACCEPT) ? ~QUEST_FLAGS_AUTO_ACCEPT : ~0);
packet.QuestFlags[1] = quest->GetFlagsEx();
packet.QuestFlags[2] = quest->GetFlagsEx2();
+ packet.QuestFlags[3] = quest->GetFlagsEx3();
packet.SuggestedPartyMembers = quest->GetSuggestedPlayers();
// Is there a better way? what about game objects?
@@ -602,6 +605,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI
offer.QuestFlags[0] = quest->GetFlags();
offer.QuestFlags[1] = quest->GetFlagsEx();
offer.QuestFlags[2] = quest->GetFlagsEx2();
+ offer.QuestFlags[3] = quest->GetFlagsEx3();
packet.PortraitTurnIn = quest->GetQuestTurnInPortrait();
packet.PortraitGiver = quest->GetQuestGiverPortrait();
@@ -668,6 +672,7 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGU
packet.QuestFlags[0] = quest->GetFlags();
packet.QuestFlags[1] = quest->GetFlagsEx();
packet.QuestFlags[2] = quest->GetFlagsEx2();
+ packet.QuestFlags[3] = quest->GetFlagsEx3();
packet.SuggestPartyMembers = quest->GetSuggestedPlayers();
packet.QuestInfoID = quest->GetQuestInfoID();
diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h
index 524a98a687e..03ac95cb8f7 100644
--- a/src/server/game/Entities/Creature/GossipDef.h
+++ b/src/server/game/Entities/Creature/GossipDef.h
@@ -92,6 +92,12 @@ enum class GossipOptionNpc : uint8
CharacterBanker = 56,
AccountBanker = 57,
ProfessionRespec = 58,
+ Placeholder1 = 59,
+ Placeholder2 = 60,
+ Placeholder3 = 61,
+ GuildRename = 62,
+ Placeholder4 = 63,
+ ItemUpgrade = 64,
Count
};
diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h
index 6dcdf08e85c..c7853ca5214 100644
--- a/src/server/game/Entities/Item/ItemTemplate.h
+++ b/src/server/game/Entities/Item/ItemTemplate.h
@@ -472,10 +472,12 @@ enum ItemSubclassConsumable
ITEM_SUBCLASS_ITEM_ENHANCEMENT = 6,
ITEM_SUBCLASS_BANDAGE = 7,
ITEM_SUBCLASS_CONSUMABLE_OTHER = 8,
- ITEM_SUBCLASS_VANTUS_RUNE = 9
+ ITEM_SUBCLASS_VANTUS_RUNE = 9,
+ ITEM_SUBCLASS_UTILITY_CURIO = 10,
+ ITEM_SUBCLASS_COMBAT_CURIO = 11,
};
-#define MAX_ITEM_SUBCLASS_CONSUMABLE 10
+#define MAX_ITEM_SUBCLASS_CONSUMABLE 12
enum ItemSubclassContainer
{
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index cc073ad6592..c575c61f10b 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -3061,7 +3061,7 @@ void BitVectors::ClearChangesMask()
void PlayerDataElement::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
- data.WriteBits(Type, 1);
+ data << uint32(Type);
if (Type == 1)
{
data << float(FloatValue);
@@ -3070,12 +3070,11 @@ void PlayerDataElement::WriteCreate(ByteBuffer& data, Player const* owner, Playe
{
data << int64(Int64Value);
}
- data.FlushBits();
}
void PlayerDataElement::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
{
- data.WriteBits(Type, 1);
+ data << uint32(Type);
if (Type == 1)
{
data << float(FloatValue);
@@ -3084,7 +3083,6 @@ void PlayerDataElement::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Pl
{
data << int64(Int64Value);
}
- data.FlushBits();
}
bool PlayerDataElement::operator==(PlayerDataElement const& right) const
@@ -4760,7 +4758,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << uint8(MultiActionBars);
data << uint8(LifetimeMaxRank);
data << uint8(NumRespecs);
- data << uint8(PvpMedals);
+ data << uint32(PvpMedals);
for (uint32 i = 0; i < 12; ++i)
{
data << uint32(BuybackPrice[i]);
@@ -4807,10 +4805,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
data << uint32(BankBagSlotFlags[i]);
}
- for (uint32 i = 0; i < 1000; ++i)
- {
- data << uint64(QuestCompleted[i]);
- }
data << int32(Honor);
data << int32(HonorNextLevel);
data << int32(PerksProgramCurrency);
@@ -4883,6 +4877,14 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
data << uint64(KnownTitles[i]);
}
+ for (uint32 i = 0; i < CharacterDataElements.size(); ++i)
+ {
+ CharacterDataElements[i].WriteCreate(data, owner, receiver);
+ }
+ for (uint32 i = 0; i < AccountDataElements.size(); ++i)
+ {
+ AccountDataElements[i].WriteCreate(data, owner, receiver);
+ }
for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i)
{
data << int32(DailyQuestsCompleted[i]);
@@ -5004,14 +5006,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << FrozenPerksVendorItem;
Field_1410->WriteCreate(data, owner, receiver);
data << DungeonScore;
- for (uint32 i = 0; i < CharacterDataElements.size(); ++i)
- {
- CharacterDataElements[i].WriteCreate(data, owner, receiver);
- }
- for (uint32 i = 0; i < AccountDataElements.size(); ++i)
- {
- AccountDataElements[i].WriteCreate(data, owner, receiver);
- }
for (uint32 i = 0; i < PvpInfo.size(); ++i)
{
PvpInfo[i].WriteCreate(data, owner, receiver);
@@ -5054,10 +5048,8 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const
{
- for (uint32 i = 0; i < 1; ++i)
- data << uint32(changesMask.GetBlocksMask(i));
- data.WriteBits(changesMask.GetBlocksMask(1), 16);
- for (uint32 i = 0; i < 48; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(0), 17);
+ for (uint32 i = 0; i < 17; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -5419,6 +5411,26 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
+ if (changesMask[8])
+ {
+ for (uint32 i = 0; i < CharacterDataElements.size(); ++i)
+ {
+ if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ if (changesMask[9])
+ {
+ for (uint32 i = 0; i < AccountDataElements.size(); ++i)
+ {
+ if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
if (changesMask[11])
{
for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i)
@@ -5682,26 +5694,6 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[0])
{
- if (changesMask[8])
- {
- for (uint32 i = 0; i < CharacterDataElements.size(); ++i)
- {
- if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask)
- {
- CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
- }
- if (changesMask[9])
- {
- for (uint32 i = 0; i < AccountDataElements.size(); ++i)
- {
- if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask)
- {
- AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
- }
- }
- }
if (changesMask[10])
{
for (uint32 i = 0; i < PvpInfo.size(); ++i)
@@ -5956,7 +5948,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[97])
{
- data << uint8(PvpMedals);
+ data << uint32(PvpMedals);
}
if (changesMask[98])
{
@@ -6300,19 +6292,9 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[498])
{
- for (uint32 i = 0; i < 1000; ++i)
- {
- if (changesMask[499 + i])
- {
- data << uint64(QuestCompleted[i]);
- }
- }
- }
- if (changesMask[1499])
- {
for (uint32 i = 0; i < 17; ++i)
{
- if (changesMask[1500 + i])
+ if (changesMask[499 + i])
{
data << float(ItemUpgradeHighWatermark[i]);
}
@@ -6333,6 +6315,8 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(ResearchSiteProgress);
Base::ClearChangesMask(Research);
Base::ClearChangesMask(KnownTitles);
+ Base::ClearChangesMask(CharacterDataElements);
+ Base::ClearChangesMask(AccountDataElements);
Base::ClearChangesMask(DailyQuestsCompleted);
Base::ClearChangesMask(AvailableQuestLineXQuestIDs);
Base::ClearChangesMask(Heirlooms);
@@ -6358,8 +6342,6 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(CategoryCooldownMods);
Base::ClearChangesMask(WeeklySpellUses);
Base::ClearChangesMask(TrackedCollectableSources);
- Base::ClearChangesMask(CharacterDataElements);
- Base::ClearChangesMask(AccountDataElements);
Base::ClearChangesMask(PvpInfo);
Base::ClearChangesMask(CharacterRestrictions);
Base::ClearChangesMask(TraitConfigs);
@@ -6476,7 +6458,6 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(ProfessionSkillLine);
Base::ClearChangesMask(BagSlotFlags);
Base::ClearChangesMask(BankBagSlotFlags);
- Base::ClearChangesMask(QuestCompleted);
Base::ClearChangesMask(ItemUpgradeHighWatermark);
_changesMask.ResetAll();
}
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index bc02576f7f6..d394afda2d9 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -1034,7 +1034,7 @@ struct Research : public IsUpdateFieldStructureTag
bool operator!=(Research const& right) const { return !(*this == right); }
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1517>
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<516>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
UpdateField<bool, 0, 2> BackpackSellJunkDisabled;
@@ -1046,6 +1046,8 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 43, 44> ResearchSiteProgress;
UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 45, 46> Research;
DynamicUpdateField<uint64, 0, 7> KnownTitles;
+ DynamicUpdateField<UF::PlayerDataElement, 0, 8> CharacterDataElements;
+ DynamicUpdateField<UF::PlayerDataElement, 0, 9> AccountDataElements;
DynamicUpdateField<int32, 0, 11> DailyQuestsCompleted;
DynamicUpdateField<int32, 0, 12> AvailableQuestLineXQuestIDs;
DynamicUpdateField<int32, 0, 13> Heirlooms;
@@ -1071,8 +1073,6 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
DynamicUpdateField<UF::CategoryCooldownMod, 32, 37> CategoryCooldownMods;
DynamicUpdateField<UF::WeeklySpellUse, 32, 38> WeeklySpellUses;
DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 39> TrackedCollectableSources;
- DynamicUpdateField<UF::PlayerDataElement, 0, 8> CharacterDataElements;
- DynamicUpdateField<UF::PlayerDataElement, 0, 9> AccountDataElements;
DynamicUpdateField<UF::PVPInfo, 0, 10> PvpInfo;
DynamicUpdateField<UF::CharacterRestriction, 0, 23> CharacterRestrictions;
DynamicUpdateField<UF::TraitConfig, 32, 33> TraitConfigs;
@@ -1127,7 +1127,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateField<uint8, 70, 94> MultiActionBars;
UpdateField<uint8, 70, 95> LifetimeMaxRank;
UpdateField<uint8, 70, 96> NumRespecs;
- UpdateField<uint8, 70, 97> PvpMedals;
+ UpdateField<uint32, 70, 97> PvpMedals;
UpdateField<uint16, 70, 98> TodayHonorableKills;
UpdateField<uint16, 70, 99> YesterdayHonorableKills;
UpdateField<uint32, 70, 100> LifetimeHonorableKills;
@@ -1189,8 +1189,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateFieldArray<int32, 2, 481, 482> ProfessionSkillLine;
UpdateFieldArray<uint32, 5, 484, 485> BagSlotFlags;
UpdateFieldArray<uint32, 7, 490, 491> BankBagSlotFlags;
- UpdateFieldArray<uint64, 1000, 498, 499> QuestCompleted;
- UpdateFieldArray<float, 17, 1499, 1500> ItemUpgradeHighWatermark;
+ UpdateFieldArray<float, 17, 498, 499> ItemUpgradeHighWatermark;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 48a0156ffce..c1e09611a53 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -14277,7 +14277,9 @@ 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::AccountBanker, PlayerInteractionType::ProfessionRespec, PlayerInteractionType::PlaceholderType72,
+ PlayerInteractionType::PlaceholderType75, PlayerInteractionType::PlaceholderType76, PlayerInteractionType::GuildRename,
+ PlayerInteractionType::PlaceholderType77, PlayerInteractionType::ItemUpgrade
};
PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[AsUnderlyingType(gossipOptionNpc)];
@@ -16569,26 +16571,17 @@ void Player::SetQuestCompletedBit(uint32 questId, bool completed)
uint32 fieldOffset = (questBit - 1) / QUESTS_COMPLETED_BITS_PER_BLOCK;
uint64 flag = UI64LIT(1) << ((questBit - 1) % QUESTS_COMPLETED_BITS_PER_BLOCK);
- if (fieldOffset < QUESTS_COMPLETED_BITS_SIZE)
- {
- if (completed)
- SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag);
- else
- RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag);
- }
+
+ auto field = m_values
+ .ModifyValue(&Player::m_activePlayerData)
+ .ModifyValue(&UF::ActivePlayerData::BitVectors)
+ .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX)
+ .ModifyValue(&UF::BitVector::Values, fieldOffset);
if (completed)
- SetUpdateFieldFlagValue(m_values
- .ModifyValue(&Player::m_activePlayerData)
- .ModifyValue(&UF::ActivePlayerData::BitVectors)
- .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX)
- .ModifyValue(&UF::BitVector::Values, fieldOffset), flag);
+ SetUpdateFieldFlagValue(field, flag);
else
- RemoveUpdateFieldFlagValue(m_values
- .ModifyValue(&Player::m_activePlayerData)
- .ModifyValue(&UF::ActivePlayerData::BitVectors)
- .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX)
- .ModifyValue(&UF::BitVector::Values, fieldOffset), flag);
+ RemoveUpdateFieldFlagValue(field, flag);
}
void Player::AreaExploredOrEventHappens(uint32 questId)
@@ -29851,7 +29844,7 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId)
ObjectMgr::GetLocaleString(playerChoiceLocale->Question, locale, displayPlayerChoice.Question);
displayPlayerChoice.Responses.resize(playerChoice->Responses.size());
- displayPlayerChoice.CloseChoiceFrame = false;
+ displayPlayerChoice.InfiniteRange = false;
displayPlayerChoice.HideWarboardHeader = playerChoice->HideWarboardHeader;
displayPlayerChoice.KeepOpenAfterChoice = playerChoice->KeepOpenAfterChoice;
@@ -29945,7 +29938,6 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId)
WorldPackets::Quest::PlayerChoiceResponseMawPower& mawPower = playerChoiceResponse.MawPower.emplace();
mawPower.TypeArtFileID = playerChoiceResponseTemplate.MawPower->TypeArtFileID;
mawPower.Rarity = playerChoiceResponseTemplate.MawPower->Rarity;
- mawPower.RarityColor = playerChoiceResponseTemplate.MawPower->RarityColor;
mawPower.SpellID = playerChoiceResponseTemplate.MawPower->SpellID;
mawPower.MaxStacks = playerChoiceResponseTemplate.MawPower->MaxStacks;
}
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index ae955a9b683..69329a69358 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -158,6 +158,8 @@ enum PlayerDataFlagConstants
PLAYER_DATA_FLAG_ACCOUNT_COMBINED_QUEST_REWARDS_INDEX = 7,
PLAYER_DATA_FLAG_CHARACTER_CONTENTPUSH_INDEX = 8,
PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX = 9,
+
+ // = 12 stores quests completed under ctrOptions & 0x2000
};
enum SpellModType : uint8
@@ -594,8 +596,7 @@ typedef std::map<uint32, QuestSaveType> QuestStatusSaveMap;
// Size of client completed quests bit map
enum PlayerQuestCompletedConstants
{
- QUESTS_COMPLETED_BITS_SIZE = UF::size<decltype(UF::ActivePlayerData::QuestCompleted)>(),
- QUESTS_COMPLETED_BITS_PER_BLOCK = UF::size_of_value_type<decltype(UF::ActivePlayerData::QuestCompleted)>() * 8
+ QUESTS_COMPLETED_BITS_PER_BLOCK = UF::size_of_value_type<decltype(UF::BitVector::Values)>() * 8
};
enum PlayerQuestLogConstants
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index ad13ffddca0..e3aca85d208 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -4577,33 +4577,33 @@ void ObjectMgr::LoadQuests()
"ID, QuestType, QuestPackageID, ContentTuningID, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, "
//10 11 12 13 14 15 16
"RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardSpell, RewardHonor, RewardKillHonor, StartItem, "
- //17 18 19 20 21 22
- "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, "
- //23 24 25 26 27 28 29 30
+ //17 18 19 20 21 22 23
+ "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, FlagsEx3, "
+ //24 25 26 27 28 29 30 31
"RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, "
- //31 32 33 34 35 36 37 38
+ //32 33 34 35 36 37 38 39
"RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, "
- //39 40 41 42 43 44
+ //40 41 42 43 44 45
"RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, "
- //45 46 47 48 49 50
+ //46 47 48 49 50 51
"RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, "
- //51 52 53 54 55 56
+ //52 53 54 55 56 57
"RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, "
- //57 58 59 60 61 62 63 64
+ //58 59 60 61 62 63 64 65
"POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, "
- //65 66 67 68
+ //66 67 68 69
"PortraitGiver, PortraitGiverMount, PortraitGiverModelSceneID, PortraitTurnIn, "
- //69 70 71 72 73 74 75 76
+ //70 71 72 73 74 75 76 77
"RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, "
- //77 78 79 80 81 82 83 84
+ //78 79 80 81 82 83 84 85
"RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, "
- //85 86 87 88 89
+ //86 87 88 89 90
"RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, "
- //90 91 92 93 94 95 96 97
+ //91 92 93 94 95 96 97 98
"RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, "
- //98 99 100 101 102 103 104 105 106
+ //99 100 101 102 103 104 105 106 107
"AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, ResetByScheduler, Expansion, ManagedWorldStateID, QuestSessionBonus, "
- //107 108 109 110 111 112 113 114 115
+ //108 109 110 111 112 113 114 115 116
"LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog "
"FROM quest_template");
if (!result)
@@ -11228,8 +11228,7 @@ void ObjectMgr::LoadPlayerChoices()
continue;
}
- auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(),
- [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; });
+ auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId);
if (responseItr == choice->Responses.end())
{
TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId);
@@ -11294,8 +11293,7 @@ void ObjectMgr::LoadPlayerChoices()
continue;
}
- auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(),
- [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; });
+ auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId);
if (responseItr == choice->Responses.end())
{
TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_item` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId);
@@ -11340,8 +11338,7 @@ void ObjectMgr::LoadPlayerChoices()
continue;
}
- auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(),
- [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; });
+ auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId);
if (responseItr == choice->Responses.end())
{
TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_currency` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId);
@@ -11386,8 +11383,7 @@ void ObjectMgr::LoadPlayerChoices()
continue;
}
- auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(),
- [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; });
+ auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId);
if (responseItr == choice->Responses.end())
{
TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_faction` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId);
@@ -11436,8 +11432,7 @@ void ObjectMgr::LoadPlayerChoices()
continue;
}
- auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(),
- [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; });
+ auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId);
if (responseItr == choice->Responses.end())
{
TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_item_choice` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId);
@@ -11464,7 +11459,7 @@ void ObjectMgr::LoadPlayerChoices()
} while (rewards->NextRow());
}
- if (QueryResult mawPowersResult = WorldDatabase.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, RarityColor, SpellID, MaxStacks FROM playerchoice_response_maw_power"))
+ if (QueryResult mawPowersResult = WorldDatabase.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, SpellID, MaxStacks FROM playerchoice_response_maw_power"))
{
do
{
@@ -11479,11 +11474,7 @@ void ObjectMgr::LoadPlayerChoices()
continue;
}
- auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(),
- [responseId](PlayerChoiceResponse const& playerChoiceResponse)
- {
- return playerChoiceResponse.ResponseId == responseId;
- });
+ auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId);
if (responseItr == choice->Responses.end())
{
TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_maw_power` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId);
@@ -11494,10 +11485,8 @@ void ObjectMgr::LoadPlayerChoices()
mawPower.TypeArtFileID = fields[2].GetInt32();
if (!fields[3].IsNull())
mawPower.Rarity = fields[3].GetInt32();
- if (!fields[4].IsNull())
- mawPower.RarityColor = fields[4].GetUInt32();
- mawPower.SpellID = fields[5].GetInt32();
- mawPower.MaxStacks = fields[6].GetInt32();
+ mawPower.SpellID = fields[4].GetInt32();
+ mawPower.MaxStacks = fields[5].GetInt32();
++mawPowersCount;
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 8160ebd7404..f523e50a225 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -908,7 +908,6 @@ struct PlayerChoiceResponseMawPower
{
int32 TypeArtFileID = 0;
Optional<int32> Rarity;
- Optional<uint32> RarityColor;
int32 SpellID = 0;
int32 MaxStacks = 0;
};
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 2515320fc4b..ccbd6c88b0b 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -498,7 +498,8 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorI
{
WorldPackets::Spells::MirrorImageComponentedData mirrorImageComponentedData;
mirrorImageComponentedData.UnitGUID = guid;
- mirrorImageComponentedData.DisplayID = creator->GetDisplayId();
+ if (ChrModelEntry const* chrModel = sDB2Manager.GetChrModel(creator->GetRace(), creator->GetGender()))
+ mirrorImageComponentedData.ChrModelID = chrModel->ID;
mirrorImageComponentedData.RaceID = creator->GetRace();
mirrorImageComponentedData.Gender = creator->GetGender();
mirrorImageComponentedData.ClassID = creator->GetClass();
@@ -511,7 +512,7 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorI
mirrorImageComponentedData.ItemDisplayID.reserve(11);
- static EquipmentSlots const itemSlots[] =
+ static constexpr EquipmentSlots itemSlots[] =
{
EQUIPMENT_SLOT_HEAD,
EQUIPMENT_SLOT_SHOULDERS,
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index aef47a0acac..023cc51d2f9 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -33,7 +33,7 @@
#define QUEST_TEMPLATE_FIELDS (ID)(QuestType)(QuestPackageID)(ContentTuningID)(QuestSortID)(QuestInfoID)(SuggestedGroupNum)(RewardNextQuest)(RewardXPDifficulty)\
(RewardXPMultiplier)(RewardMoneyDifficulty)(RewardMoneyMultiplier)(RewardBonusMoney)(RewardSpell)(RewardHonor)(RewardKillHonor)(StartItem)\
- (RewardArtifactXPDifficulty)(RewardArtifactXPMultiplier)(RewardArtifactCategoryID)(Flags)(FlagsEx)(FlagsEx2)\
+ (RewardArtifactXPDifficulty)(RewardArtifactXPMultiplier)(RewardArtifactCategoryID)(Flags)(FlagsEx)(FlagsEx2)(FlagsEx3)\
(RewardItem1)(RewardAmount1)(ItemDrop1)(ItemDropQuantity1)(RewardItem2)(RewardAmount2)(ItemDrop2)(ItemDropQuantity2)\
(RewardItem3)(RewardAmount3)(ItemDrop3)(ItemDropQuantity3)(RewardItem4)(RewardAmount4)(ItemDrop4)(ItemDropQuantity4)\
(RewardChoiceItemID1)(RewardChoiceItemQuantity1)(RewardChoiceItemDisplayID1)(RewardChoiceItemID2)(RewardChoiceItemQuantity2)(RewardChoiceItemDisplayID2)\
@@ -109,6 +109,7 @@ Quest::Quest(QuestTemplateQueryResult const& questRecord) :
_flags(questRecord.Flags().GetUInt32()),
_flagsEx(questRecord.FlagsEx().GetUInt32()),
_flagsEx2(questRecord.FlagsEx2().GetUInt32()),
+ _flagsEx3(questRecord.FlagsEx3().GetUInt32()),
_poiContinent(questRecord.POIContinent().GetUInt32()),
_poix(questRecord.POIx().GetFloat()),
_poiy(questRecord.POIy().GetFloat()),
@@ -733,6 +734,7 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const
response.Info.Flags = GetFlags();
response.Info.FlagsEx = GetFlagsEx();
response.Info.FlagsEx2 = GetFlagsEx2();
+ response.Info.FlagsEx3 = GetFlagsEx3();
response.Info.RewardTitle = GetRewTitle();
response.Info.RewardArenaPoints = GetRewArenaPoints();
response.Info.RewardSkillLineID = GetRewardSkillId();
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index 616cf5c2fe7..59f38eed53b 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -402,14 +402,17 @@ enum QuestObjectiveFlags2
enum class QuestCompleteSpellType : uint32
{
- LegacyBehavior = 0,
- Follower = 1,
- Tradeskill = 2,
- Ability = 3,
- Aura = 4,
- Spell = 5,
- Unlock = 6,
- Companion = 7,
+ LegacyBehavior = 0,
+ Follower = 1,
+ Tradeskill = 2,
+ Ability = 3,
+ Aura = 4,
+ Spell = 5,
+ Unlock = 6,
+ Companion = 7,
+ QuestlineUnlock = 8,
+ QuestlineReward = 9,
+ QuestlineUnlockPart = 10,
Max
};
@@ -698,6 +701,7 @@ class TC_GAME_API Quest
uint32 GetFlags() const { return _flags; }
uint32 GetFlagsEx() const { return _flagsEx; }
uint32 GetFlagsEx2() const { return _flagsEx2; }
+ uint32 GetFlagsEx3() const { return _flagsEx3; }
uint32 GetSpecialFlags() const { return _specialFlags; }
uint32 GetScriptId() const { return _scriptId; }
uint32 GetAreaGroupID() const { return _areaGroupID; }
@@ -796,6 +800,7 @@ class TC_GAME_API Quest
uint32 _flags = 0;
uint32 _flagsEx = 0;
uint32 _flagsEx2 = 0;
+ uint32 _flagsEx3 = 0;
uint32 _poiContinent = 0;
float _poix = 0.f;
float _poiy = 0.f;
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index 670347a44e8..b5501c18460 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -345,7 +345,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::RatedPvpInf
data << int32(bracketInfo.PvpTierID);
data << int32(bracketInfo.SeasonPvpTier);
data << int32(bracketInfo.BestWeeklyPvpTier);
- data << int32(bracketInfo.BestSeasonPvpTierEnum);
+ data << uint8(bracketInfo.BestSeasonPvpTierEnum);
data.WriteBit(bracketInfo.Disqualified);
data.FlushBits();
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index 4db509689f2..73c64c8ecc5 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -469,7 +469,7 @@ namespace WorldPackets
int32 PvpTierID = 0;
int32 SeasonPvpTier = 0;
int32 BestWeeklyPvpTier = 0;
- int32 BestSeasonPvpTierEnum = 0;
+ uint8 BestSeasonPvpTierEnum = 0;
bool Disqualified = false;
} Bracket[9];
};
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 6cd54e78b87..7df758a319f 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -215,7 +215,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfoBasi
{
data << charInfo.Guid;
data << uint32(charInfo.VirtualRealmAddress);
- data << uint8(charInfo.ListPosition);
+ data << uint16(charInfo.ListPosition);
data << uint8(charInfo.RaceID);
data << uint8(charInfo.SexID);
data << uint8(charInfo.ClassID);
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 5d84cbb7478..f26a7b13524 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -151,7 +151,7 @@ namespace WorldPackets
uint32 VirtualRealmAddress = 0;
uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known)
std::string Name;
- uint8 ListPosition = 0; ///< Order of the characters in list
+ uint16 ListPosition = 0; ///< Order of the characters in list
uint8 RaceID = 0;
uint8 ClassID = 0;
uint8 SexID = 0;
diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp
index 9cf557116dd..278eaed2127 100644
--- a/src/server/game/Server/Packets/InspectPackets.cpp
+++ b/src/server/game/Server/Packets/InspectPackets.cpp
@@ -136,7 +136,7 @@ ByteBuffer& operator<<(ByteBuffer& data, PVPBracketData const& bracket)
data << int32(bracket.Tier);
data << int32(bracket.WeeklyBestTier);
data << int32(bracket.SeasonBestRating);
- data << int32(bracket.SeasonBestTierEnum);
+ data << uint8(bracket.SeasonBestTierEnum);
data << int32(bracket.RoundsSeasonPlayed);
data << int32(bracket.RoundsSeasonWon);
data << int32(bracket.RoundsWeeklyPlayed);
diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h
index 9cd7dfe386d..f1dcdb7f310 100644
--- a/src/server/game/Server/Packets/InspectPackets.h
+++ b/src/server/game/Server/Packets/InspectPackets.h
@@ -108,7 +108,7 @@ namespace WorldPackets
int32 Tier = 0;
int32 WeeklyBestTier = 0;
int32 SeasonBestRating = 0;
- int32 SeasonBestTierEnum = 0;
+ uint8 SeasonBestTierEnum = 0;
int32 RoundsSeasonPlayed = 0;
int32 RoundsSeasonWon = 0;
int32 RoundsWeeklyPlayed = 0;
diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp
index d3d715aec5e..461c01dc15e 100644
--- a/src/server/game/Server/Packets/LFGPackets.cpp
+++ b/src/server/game/Server/Packets/LFGPackets.cpp
@@ -273,7 +273,7 @@ WorldPacket const* LFGRoleCheckUpdate::Write()
WorldPacket const* LFGJoinResult::Write()
{
_worldPacket << Ticket;
- _worldPacket << uint8(Result);
+ _worldPacket << int32(Result);
_worldPacket << uint8(ResultDetail);
_worldPacket << uint32(BlackList.size());
_worldPacket << uint32(BlackListNames.size());
diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h
index 8e51aa2378d..57b0e7fc1e5 100644
--- a/src/server/game/Server/Packets/LFGPackets.h
+++ b/src/server/game/Server/Packets/LFGPackets.h
@@ -286,7 +286,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
RideTicket Ticket;
- uint8 Result = 0;
+ int32 Result = 0;
uint8 ResultDetail = 0;
std::vector<LFGBlackList> BlackList;
std::vector<std::string const*> BlackListNames;
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 9afa34f5e06..12fd59e3d61 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -78,9 +78,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText)
data << int32(gossipText.ContentTuningID);
data << int32(gossipText.QuestType);
data << int32(gossipText.Unused1102);
- data << int32(gossipText.QuestFlags[0]);
- data << int32(gossipText.QuestFlags[1]);
- data << int32(gossipText.QuestFlags[2]);
+ data.append(gossipText.QuestFlags);
data << Bits<1>(gossipText.Repeatable);
data << Bits<1>(gossipText.ResetByScheduler);
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index 7bf8a0f148c..c3d4b4f926e 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -104,7 +104,7 @@ namespace WorldPackets
bool Important = false;
bool Meta = false;
std::string QuestTitle;
- std::array<int32, 3> QuestFlags = { };
+ std::array<int32, 4> QuestFlags = { };
};
ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText);
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index be591c38109..e8bac0296ee 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -111,6 +111,7 @@ WorldPacket const* QueryQuestInfoResponse::Write()
_worldPacket << uint32(Info.Flags);
_worldPacket << uint32(Info.FlagsEx);
_worldPacket << uint32(Info.FlagsEx2);
+ _worldPacket << uint32(Info.FlagsEx3);
for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i)
{
@@ -368,9 +369,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestGiverOfferReward const& offer)
data << offer.Rewards; // QuestRewards
data << int32(offer.Emotes.size());
data << offer.QuestGiverGUID;
- data << int32(offer.QuestFlags[0]); // Flags
- data << int32(offer.QuestFlags[1]); // FlagsEx
- data << int32(offer.QuestFlags[2]); // FlagsEx2
+ data.append(offer.QuestFlags);
data << int32(offer.QuestGiverCreatureID);
data << int32(offer.QuestID);
data << int32(offer.SuggestedPartyMembers);
@@ -467,9 +466,7 @@ WorldPacket const* QuestGiverQuestDetails::Write()
_worldPacket << int32(PortraitGiverMount);
_worldPacket << int32(PortraitGiverModelSceneID);
_worldPacket << int32(PortraitTurnIn);
- _worldPacket << uint32(QuestFlags[0]); // Flags
- _worldPacket << uint32(QuestFlags[1]); // FlagsEx
- _worldPacket << uint32(QuestFlags[2]); // FlagsEx
+ _worldPacket.append(QuestFlags);
_worldPacket << int32(SuggestedPartyMembers);
_worldPacket << uint32(LearnSpells.size());
_worldPacket << uint32(DescEmotes.size());
@@ -532,9 +529,7 @@ WorldPacket const* QuestGiverRequestItems::Write()
_worldPacket << int32(Collect.size());
_worldPacket << int32(Currency.size());
_worldPacket << QuestGiverGUID;
- _worldPacket << uint32(QuestFlags[0]);
- _worldPacket << uint32(QuestFlags[1]);
- _worldPacket << uint32(QuestFlags[2]);
+ _worldPacket.append(QuestFlags);
_worldPacket << int32(StatusFlags);
_worldPacket << int32(QuestGiverCreatureID);
_worldPacket << int32(QuestID);
@@ -774,15 +769,11 @@ ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseMawPower const& pla
data << int32(playerChoiceResponseMawPower.SpellID);
data << int32(playerChoiceResponseMawPower.MaxStacks);
data.WriteBit(playerChoiceResponseMawPower.Rarity.has_value());
- data.WriteBit(playerChoiceResponseMawPower.RarityColor.has_value());
data.FlushBits();
if (playerChoiceResponseMawPower.Rarity)
data << int32(*playerChoiceResponseMawPower.Rarity);
- if (playerChoiceResponseMawPower.RarityColor)
- data << uint32(*playerChoiceResponseMawPower.RarityColor);
-
return data;
}
@@ -840,9 +831,11 @@ WorldPacket const* DisplayPlayerChoice::Write()
_worldPacket << Duration;
_worldPacket.WriteBits(Question.length(), 8);
_worldPacket.WriteBits(PendingChoiceText.length(), 8);
- _worldPacket.WriteBit(CloseChoiceFrame);
+ _worldPacket.WriteBit(InfiniteRange);
_worldPacket.WriteBit(HideWarboardHeader);
_worldPacket.WriteBit(KeepOpenAfterChoice);
+ _worldPacket.WriteBit(Unknown_1115_1);
+ _worldPacket.WriteBit(Unknown_1115_2);
_worldPacket.FlushBits();
for (PlayerChoiceResponse const& response : Responses)
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 5a6e0e9be6f..b388f4ecc66 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -148,6 +148,7 @@ namespace WorldPackets
uint32 Flags = 0;
uint32 FlagsEx = 0;
uint32 FlagsEx2 = 0;
+ uint32 FlagsEx3 = 0;
int32 POIContinent = 0;
float POIx = 0.0f;
float POIy = 0.0f;
@@ -315,7 +316,7 @@ namespace WorldPackets
int32 SuggestedPartyMembers = 0;
QuestRewards Rewards;
std::vector<QuestDescEmote> Emotes;
- std::array<int32, 3> QuestFlags = { };
+ std::array<int32, 4> QuestFlags = { };
int32 QuestInfoID = 0;
};
@@ -414,7 +415,7 @@ namespace WorldPackets
ObjectGuid InformUnit;
int32 QuestID = 0;
int32 QuestPackageID = 0;
- uint32 QuestFlags[3] = { };
+ std::array<uint32, 4> QuestFlags = { };
int32 SuggestedPartyMembers = 0;
QuestRewards Rewards;
std::vector<QuestObjectiveSimple> Objectives;
@@ -478,7 +479,7 @@ namespace WorldPackets
std::vector<QuestCurrency> Currency;
int32 StatusFlags = 0;
int32 QuestInfoID = 0;
- uint32 QuestFlags[3] = { };
+ std::array<uint32, 4> QuestFlags = { };
std::string QuestTitle;
std::string CompletionText;
std::vector<ConditionalQuestText> ConditionalCompletionText;
@@ -728,7 +729,6 @@ namespace WorldPackets
int32 Unused901_1 = 0;
int32 TypeArtFileID = 0;
Optional<int32> Rarity;
- Optional<uint32> RarityColor;
int32 Unused901_2 = 0;
int32 SpellID = 0;
int32 MaxStacks = 0;
@@ -773,9 +773,11 @@ namespace WorldPackets
std::string_view Question;
std::string_view PendingChoiceText;
std::vector<PlayerChoiceResponse> Responses;
- bool CloseChoiceFrame = false;
+ bool InfiniteRange = false;
bool HideWarboardHeader = false;
bool KeepOpenAfterChoice = false;
+ bool Unknown_1115_1 = false;
+ bool Unknown_1115_2 = false;
};
class ChoiceResponse final : public ClientPacket
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index e7bb499d85b..63456d61402 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -388,6 +388,7 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData)
data << spellCastData.Visual;
data << uint32(spellCastData.CastFlags);
data << uint32(spellCastData.CastFlagsEx);
+ data << uint32(spellCastData.CastFlagsEx2);
data << uint32(spellCastData.CastTime);
data << spellCastData.MissileTrajectory;
data << int32(spellCastData.AmmoDisplayID);
@@ -984,14 +985,15 @@ MirrorImageComponentedData::~MirrorImageComponentedData() = default;
WorldPacket const* MirrorImageComponentedData::Write()
{
_worldPacket << UnitGUID;
- _worldPacket << int32(DisplayID);
- _worldPacket << int32(SpellVisualKitID);
+ _worldPacket << int32(ChrModelID);
_worldPacket << uint8(RaceID);
_worldPacket << uint8(Gender);
_worldPacket << uint8(ClassID);
_worldPacket << uint32(Customizations.size());
_worldPacket << GuildGUID;
_worldPacket << uint32(ItemDisplayID.size());
+ _worldPacket << int32(SpellVisualKitID);
+ _worldPacket << int32(Unused_1115);
for (Character::ChrCustomizationChoice const& customization : Customizations)
_worldPacket << customization;
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 5893496f13d..78af3cccc3b 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -361,6 +361,7 @@ namespace WorldPackets
SpellCastVisual Visual;
uint32 CastFlags = 0;
uint32 CastFlagsEx = 0;
+ uint32 CastFlagsEx2 = 0;
uint32 CastTime = 0;
std::vector<ObjectGuid> HitTargets;
std::vector<ObjectGuid> MissTargets;
@@ -989,8 +990,9 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid UnitGUID;
- int32 DisplayID = 0;
+ int32 ChrModelID = 0;
int32 SpellVisualKitID = 0;
+ int32 Unused_1115 = 0;
uint8 RaceID = 0;
uint8 Gender = 0;
uint8 ClassID = 0;
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index e8c2f899349..43631b60dcd 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -150,7 +150,6 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket << Bits<1>(GroupFinderEnabled);
_worldPacket << Bits<1>(IsPremadeGroupEnabled);
- _worldPacket << Bits<1>(UseActivePlayerDataQuestCompleted);
_worldPacket << Bits<1>(false); // unused 10.2.7
_worldPacket << Bits<1>(GuildEventsEditsEnabled);
_worldPacket << Bits<1>(GuildTradeSkillsEnabled);
@@ -158,8 +157,8 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket << Bits<1>(BNSendWhisperUseV2Services);
_worldPacket << Bits<1>(BNSendGameDataUseV2Services);
_worldPacket << Bits<1>(IsAccountCurrencyTransferEnabled);
-
_worldPacket << Bits<1>(false); // unused 11.0.7
+
_worldPacket << Bits<1>(LobbyMatchmakerQueueFromMainlineEnabled);
_worldPacket << Bits<1>(CanSendLobbyMatchmakerPartyCustomizations);
_worldPacket << Bits<1>(AddonProfilerEnabled);
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index 405f96bbd9a..d01babbb2a1 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -172,7 +172,6 @@ namespace WorldPackets
bool SellAllJunkEnabled = false;
bool GroupFinderEnabled = true; // classic only
bool IsPremadeGroupEnabled = true; // classic only
- bool UseActivePlayerDataQuestCompleted = false; ///< Uses ActivePlayerData::QuestCompleted (legacy) to store completed quest bits instead of ActivePlayerData::BitVectors[9]
bool GuildEventsEditsEnabled = true;
bool GuildTradeSkillsEnabled = true;
bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 3db08889b41..9cabcfbfc53 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -307,6 +307,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_KICK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand);
+ DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_OWNER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_PASSWORD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPassword);
@@ -315,6 +316,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNBAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNMODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNSILENCE_ALL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
+ DEFINE_HANDLER(CMSG_CHAT_DROP_CAUTIONARY_CHAT_MESSAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_JOIN_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleJoinChannel);
DEFINE_HANDLER(CMSG_CHAT_LEAVE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveChannel);
DEFINE_HANDLER(CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -335,6 +337,8 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
DEFINE_HANDLER(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_REPORT_IGNORED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode);
+ DEFINE_HANDLER(CMSG_CHAT_SEND_CAUTIONARY_CHANNEL_MESSAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CHAT_SEND_CAUTIONARY_CHAT_MESSAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode);
DEFINE_HANDLER(CMSG_CHECK_CHARACTER_NAME_AVAILABILITY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCheckCharacterNameAvailability);
DEFINE_HANDLER(CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCheckIsAdventureMapPoiValid);
@@ -532,6 +536,10 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_GUILD_QUERY_NEWS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryNews);
DEFINE_HANDLER(CMSG_GUILD_QUERY_RECIPES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GUILD_REPLACE_GUILD_MASTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildReplaceGuildMaster);
+ DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME_NAME_CHECK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME_REFUND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetAchievementTracking);
DEFINE_HANDLER(CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetFocusedAchievement);
DEFINE_HANDLER(CMSG_GUILD_SET_GUILD_MASTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetGuildMaster);
@@ -727,6 +735,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_PARTY_UNINVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyUninviteOpcode);
DEFINE_HANDLER(CMSG_PERFORM_ITEM_INTERACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_ITEMS_REFRESHED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_REFUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -822,9 +831,6 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_REPAIR_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRepairItemOpcode);
DEFINE_HANDLER(CMSG_REPLACE_TROPHY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REPOP_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRepopRequest);
- DEFINE_HANDLER(CMSG_REPORT_CLIENT_VARIABLES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_REPORT_ENABLED_ADDONS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REPORT_PVP_PLAYER_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleReportPvPAFK);
DEFINE_HANDLER(CMSG_REPORT_SERVER_LAG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REPORT_STUCK_IN_COMBAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -1232,6 +1238,8 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAPTURE_POINT_REMOVED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAS_REFRESH_REMOTE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAUTIONARY_CHANNEL_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ 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_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1389,6 +1397,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPORT_ACCOUNT_PROFILE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXTERNAL_TRANSACTION_ID_GENERATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_PLAYER_CONDITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1570,6 +1579,10 @@ void OpcodeTable::InitializeServerOpcodes()
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);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_NAME_CHECK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_REFUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_REQUESTED_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_STATUS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_REACTION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REWARD_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index c24e1633a20..fb6bab28936 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -40,38 +40,38 @@ constexpr uint16 UNKNOWN_OPCODE = 0xBADD; // special marker value for uninitia
enum OpcodeClient : uint32
{
- CMSG_ABANDON_NPE_RESPONSE = 0x310299,
+ CMSG_ABANDON_NPE_RESPONSE = 0x31029A,
CMSG_ACCEPT_GUILD_INVITE = 0x360029,
- CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x31025A,
- CMSG_ACCEPT_SOCIAL_CONTRACT = 0x360174,
+ CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x31025B,
+ CMSG_ACCEPT_SOCIAL_CONTRACT = 0x360172,
CMSG_ACCEPT_TRADE = 0x310004,
CMSG_ACCEPT_WARGAME_INVITE = 0x36000C,
- CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3102DB,
- CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3102DC,
- CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x360160,
+ CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3102DD,
+ CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3102DE,
+ CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x36015E,
CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x3600BE,
- CMSG_ACTIVATE_SOULBIND = 0x310288,
+ CMSG_ACTIVATE_SOULBIND = 0x310289,
CMSG_ACTIVATE_TAXI = 0x32003E,
CMSG_ADDON_LIST = 0x360004,
CMSG_ADD_ACCOUNT_COSMETIC = 0x310170,
CMSG_ADD_BATTLENET_FRIEND = 0x360084,
- CMSG_ADD_FRIEND = 0x3600FB,
- CMSG_ADD_IGNORE = 0x3600FF,
+ CMSG_ADD_FRIEND = 0x3600FC,
+ CMSG_ADD_IGNORE = 0x360100,
CMSG_ADD_TOY = 0x31016F,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3100B4,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x31028B,
- CMSG_ADVENTURE_MAP_START_QUEST = 0x31022B,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3100B3,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x31028C,
+ CMSG_ADVENTURE_MAP_START_QUEST = 0x31022C,
CMSG_ALTER_APPEARANCE = 0x32008F,
CMSG_AREA_SPIRIT_HEALER_QUERY = 0x320043,
CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x320044,
- CMSG_AREA_TRIGGER = 0x310087,
+ CMSG_AREA_TRIGGER = 0x310086,
CMSG_ARTIFACT_ADD_POWER = 0x310056,
CMSG_ARTIFACT_SET_APPEARANCE = 0x310058,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3100C0,
- CMSG_ATTACK_STOP = 0x31011E,
- CMSG_ATTACK_SWING = 0x31011D,
- CMSG_AUCTIONABLE_TOKEN_SELL = 0x360111,
- CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x360112,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3100BF,
+ CMSG_ATTACK_STOP = 0x31011D,
+ CMSG_ATTACK_SWING = 0x31011C,
+ CMSG_AUCTIONABLE_TOKEN_SELL = 0x360112,
+ CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x360113,
CMSG_AUCTION_BROWSE_QUERY = 0x320063,
CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x32006B,
CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x32006A,
@@ -87,47 +87,47 @@ enum OpcodeClient : uint32
CMSG_AUCTION_REPLICATE_ITEMS = 0x320061,
CMSG_AUCTION_SELL_COMMODITY = 0x32006C,
CMSG_AUCTION_SELL_ITEM = 0x32005F,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0x360161,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = 0x36015F,
CMSG_AUTH_CONTINUED_SESSION = 0x370002,
CMSG_AUTH_SESSION = 0x370001,
CMSG_AUTOBANK_ITEM = 0x330003,
CMSG_AUTOBANK_REAGENT = 0x330005,
CMSG_AUTOSTORE_BANK_ITEM = 0x330002,
CMSG_AUTOSTORE_BANK_REAGENT = 0x330004,
- CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3102E5,
+ CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3102E7,
CMSG_AUTO_EQUIP_ITEM = 0x330006,
CMSG_AUTO_EQUIP_ITEM_SLOT = 0x33000B,
CMSG_AUTO_GUILD_BANK_ITEM = 0x32004A,
CMSG_AUTO_STORE_BAG_ITEM = 0x330007,
CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x320053,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x310256,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x310237,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x310258,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x310257,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x310257,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x310238,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x310259,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x310258,
CMSG_BANKER_ACTIVATE = 0x320046,
CMSG_BATTLEFIELD_LEAVE = 0x31001F,
CMSG_BATTLEFIELD_LIST = 0x31002A,
CMSG_BATTLEFIELD_PORT = 0x3200C5,
- CMSG_BATTLEMASTER_HELLO = 0x31018D,
+ CMSG_BATTLEMASTER_HELLO = 0x31018E,
CMSG_BATTLEMASTER_JOIN = 0x3200BC,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x3200BD,
CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3200C3,
CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3200BF,
CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3200BE,
CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3200C0,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x3600FE,
- CMSG_BATTLENET_REQUEST = 0x36011F,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3600F8,
- CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x36013E,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3600F7,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3600EE,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x360164,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3600E5,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3600E6,
- CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x360137,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x360133,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x3600F6,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36011D,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x3600FF,
+ CMSG_BATTLENET_REQUEST = 0x360120,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3600F9,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x36013C,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3600F8,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3600EF,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x360162,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3600E6,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3600E7,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x360135,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x360131,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x3600F7,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36011E,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x2B0002,
CMSG_BATTLE_PET_DELETE_PET = 0x36004F,
CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x360050,
@@ -137,14 +137,14 @@ enum OpcodeClient : uint32
CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x360057,
CMSG_BATTLE_PET_SET_FLAGS = 0x36005A,
CMSG_BATTLE_PET_SUMMON = 0x360053,
- CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x310091,
- CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x310090,
+ CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x310090,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31008F,
CMSG_BEGIN_TRADE = 0x310001,
CMSG_BINDER_ACTIVATE = 0x320045,
CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3200CD,
CMSG_BLACK_MARKET_OPEN = 0x3200CB,
CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3200CC,
- CMSG_BONUS_ROLL = 0x310259,
+ CMSG_BONUS_ROLL = 0x31025A,
CMSG_BUG_REPORT = 0x3600AF,
CMSG_BUSY_TRADE = 0x310002,
CMSG_BUY_ACCOUNT_BANK_TAB = 0x320122,
@@ -152,7 +152,7 @@ enum OpcodeClient : uint32
CMSG_BUY_BANK_SLOT = 0x320047,
CMSG_BUY_ITEM = 0x320036,
CMSG_BUY_REAGENT_BANK = 0x320048,
- CMSG_CAGE_BATTLE_PET = 0x3100A4,
+ CMSG_CAGE_BATTLE_PET = 0x3100A3,
CMSG_CALENDAR_ADD_EVENT = 0x3600A7,
CMSG_CALENDAR_COMMUNITY_INVITE = 0x36009B,
CMSG_CALENDAR_COMPLAIN = 0x3600A3,
@@ -173,98 +173,102 @@ enum OpcodeClient : uint32
CMSG_CANCEL_CAST = 0x310176,
CMSG_CANCEL_CHANNELLING = 0x310137,
CMSG_CANCEL_GROWTH_AURA = 0x31013F,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3100CD,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3100CC,
CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x310059,
CMSG_CANCEL_MOUNT_AURA = 0x310152,
CMSG_CANCEL_QUEUED_SPELL = 0x31002B,
CMSG_CANCEL_TEMP_ENCHANTMENT = 0x32008C,
CMSG_CANCEL_TRADE = 0x310006,
CMSG_CAN_DUEL = 0x36008C,
- CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x360132,
+ CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x360130,
CMSG_CAST_SPELL = 0x310173,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x2E0002,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x31020F,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x310210,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3101F0,
- CMSG_CHANGE_REALM_TICKET = 0x360124,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x310210,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x310211,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3101F1,
+ CMSG_CHANGE_REALM_TICKET = 0x360125,
CMSG_CHANGE_SUB_GROUP = 0x360076,
- CMSG_CHARACTER_CHECK_UPGRADE = 0x3600F1,
- CMSG_CHARACTER_RENAME_REQUEST = 0x3600EC,
- CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3600EF,
- CMSG_CHARACTER_UPGRADE_START = 0x3600F0,
+ CMSG_CHARACTER_CHECK_UPGRADE = 0x3600F2,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x3600ED,
+ CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3600F0,
+ CMSG_CHARACTER_UPGRADE_START = 0x3600F1,
CMSG_CHAR_CUSTOMIZE = 0x3600B6,
CMSG_CHAR_DELETE = 0x3600C8,
CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3600BC,
- CMSG_CHAT_ADDON_MESSAGE = 0x2D0026,
- CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2D0027,
- CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x2D002E,
- CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x2D001B,
- CMSG_CHAT_CHANNEL_BAN = 0x2D0019,
- CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x2D001E,
- CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x2D000E,
- CMSG_CHAT_CHANNEL_INVITE = 0x2D0017,
- CMSG_CHAT_CHANNEL_KICK = 0x2D0018,
- CMSG_CHAT_CHANNEL_LIST = 0x2D000D,
- CMSG_CHAT_CHANNEL_MODERATOR = 0x2D0013,
- CMSG_CHAT_CHANNEL_OWNER = 0x2D0011,
- CMSG_CHAT_CHANNEL_PASSWORD = 0x2D000F,
- CMSG_CHAT_CHANNEL_SET_OWNER = 0x2D0010,
- CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x2D001C,
- CMSG_CHAT_CHANNEL_UNBAN = 0x2D001A,
- CMSG_CHAT_CHANNEL_UNMODERATOR = 0x2D0014,
- CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x2D001D,
+ CMSG_CHAT_ADDON_MESSAGE = 0x2D002A,
+ CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2D002B,
+ CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x2D0032,
+ CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x2D001F,
+ CMSG_CHAT_CHANNEL_BAN = 0x2D001D,
+ CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x2D0022,
+ CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x2D0012,
+ CMSG_CHAT_CHANNEL_INVITE = 0x2D001B,
+ CMSG_CHAT_CHANNEL_KICK = 0x2D001C,
+ CMSG_CHAT_CHANNEL_LIST = 0x2D0011,
+ CMSG_CHAT_CHANNEL_MODERATE = 0x2D0016,
+ CMSG_CHAT_CHANNEL_MODERATOR = 0x2D0017,
+ CMSG_CHAT_CHANNEL_OWNER = 0x2D0015,
+ CMSG_CHAT_CHANNEL_PASSWORD = 0x2D0013,
+ CMSG_CHAT_CHANNEL_SET_OWNER = 0x2D0014,
+ CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x2D0020,
+ CMSG_CHAT_CHANNEL_UNBAN = 0x2D001E,
+ CMSG_CHAT_CHANNEL_UNMODERATOR = 0x2D0018,
+ CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x2D0021,
+ CMSG_CHAT_DROP_CAUTIONARY_CHAT_MESSAGE = 0x2D000A,
CMSG_CHAT_JOIN_CHANNEL = 0x2D0000,
CMSG_CHAT_LEAVE_CHANNEL = 0x2D0001,
- CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT = 0x2D002D,
- CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY = 0x2D002C,
- CMSG_CHAT_MESSAGE_AFK = 0x2D000B,
+ CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT = 0x2D0031,
+ CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY = 0x2D0030,
+ CMSG_CHAT_MESSAGE_AFK = 0x2D000F,
CMSG_CHAT_MESSAGE_CHANNEL = 0x2D0007,
- CMSG_CHAT_MESSAGE_DND = 0x2D000C,
- CMSG_CHAT_MESSAGE_EMOTE = 0x2D0020,
- CMSG_CHAT_MESSAGE_GUILD = 0x2D0009,
- CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x2D0024,
- CMSG_CHAT_MESSAGE_OFFICER = 0x2D000A,
- CMSG_CHAT_MESSAGE_PARTY = 0x2D0022,
- CMSG_CHAT_MESSAGE_RAID = 0x2D0023,
- CMSG_CHAT_MESSAGE_RAID_WARNING = 0x2D0025,
- CMSG_CHAT_MESSAGE_SAY = 0x2D001F,
+ CMSG_CHAT_MESSAGE_DND = 0x2D0010,
+ CMSG_CHAT_MESSAGE_EMOTE = 0x2D0024,
+ CMSG_CHAT_MESSAGE_GUILD = 0x2D000D,
+ CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x2D0028,
+ CMSG_CHAT_MESSAGE_OFFICER = 0x2D000E,
+ CMSG_CHAT_MESSAGE_PARTY = 0x2D0026,
+ CMSG_CHAT_MESSAGE_RAID = 0x2D0027,
+ CMSG_CHAT_MESSAGE_RAID_WARNING = 0x2D0029,
+ CMSG_CHAT_MESSAGE_SAY = 0x2D0023,
CMSG_CHAT_MESSAGE_WHISPER = 0x2D0008,
- CMSG_CHAT_MESSAGE_YELL = 0x2D0021,
+ CMSG_CHAT_MESSAGE_YELL = 0x2D0025,
CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x2D0005,
CMSG_CHAT_REPORT_FILTERED = 0x2D0004,
CMSG_CHAT_REPORT_IGNORED = 0x2D0003,
+ CMSG_CHAT_SEND_CAUTIONARY_CHANNEL_MESSAGE = 0x2D000B,
+ CMSG_CHAT_SEND_CAUTIONARY_CHAT_MESSAGE = 0x2D0009,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x2D0006,
CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x36006F,
- CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x31010F,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x31010E,
CMSG_CHOICE_RESPONSE = 0x31017B,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x310287,
- CMSG_CLAIM_WEEKLY_REWARD = 0x310264,
- CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3102C0,
- CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3100C4,
- CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3102C2,
- CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3102BF,
- CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3102BE,
- CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3102C3,
- CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3100C3,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x310288,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x310265,
+ CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3102C2,
+ CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3100C3,
+ CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3102C4,
+ CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3102C1,
+ CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3102C0,
+ CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3102C5,
+ CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3100C2,
CMSG_CLEAR_NEW_APPEARANCE = 0x2B0005,
CMSG_CLEAR_RAID_MARKER = 0x310052,
CMSG_CLEAR_TRADE_ITEM = 0x310008,
CMSG_CLIENT_PORT_GRAVEYARD = 0x3200C7,
CMSG_CLOSE_INTERACTION = 0x320025,
CMSG_CLOSE_QUEST_CHOICE = 0x31017C,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x31028F,
- CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3102C4,
- CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x360149,
- CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x360147,
- CMSG_CLUB_FINDER_POST = 0x360144,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x36014B,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x360145,
- CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x360146,
- CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x36014A,
- CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x36014C,
- CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x360148,
- CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x360167,
- CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x360121,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x310290,
+ CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3102C6,
+ CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x360147,
+ CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x360145,
+ CMSG_CLUB_FINDER_POST = 0x360142,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x360149,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x360143,
+ CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x360144,
+ CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x360148,
+ CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x36014A,
+ CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x360146,
+ CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x360165,
+ CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x360122,
CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x36005D,
CMSG_COMMENTATOR_ENABLE = 0x36001C,
CMSG_COMMENTATOR_ENTER_INSTANCE = 0x360020,
@@ -272,30 +276,30 @@ enum OpcodeClient : uint32
CMSG_COMMENTATOR_GET_MAP_INFO = 0x36001D,
CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x36001F,
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x36001E,
- CMSG_COMMENTATOR_SPECTATE = 0x360165,
+ CMSG_COMMENTATOR_SPECTATE = 0x360163,
CMSG_COMMENTATOR_START_WARGAME = 0x36001B,
- CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36010F,
- CMSG_COMMERCE_TOKEN_GET_LOG = 0x360119,
- CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x360110,
+ CMSG_COMMERCE_TOKEN_GET_COUNT = 0x360110,
+ CMSG_COMMERCE_TOKEN_GET_LOG = 0x36011A,
+ CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x360111,
CMSG_COMPLAINT = 0x360096,
CMSG_COMPLETE_CINEMATIC = 0x3200E5,
CMSG_COMPLETE_MOVIE = 0x320077,
CMSG_CONFIRM_ARTIFACT_RESPEC = 0x310057,
- CMSG_CONFIRM_PROFESSION_RESPEC = 0x3100C7,
- CMSG_CONFIRM_RESPEC_WIPE = 0x3100C6,
+ CMSG_CONFIRM_PROFESSION_RESPEC = 0x3100C6,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3100C5,
CMSG_CONNECT_TO_FAILED = 0x360000,
- CMSG_CONSUMABLE_TOKEN_BUY = 0x360114,
- CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x360115,
- CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x360113,
- CMSG_CONSUMABLE_TOKEN_REDEEM = 0x360117,
- CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x360118,
- CMSG_CONTENT_TRACKING_START_TRACKING = 0x3102D4,
- CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3102D5,
+ CMSG_CONSUMABLE_TOKEN_BUY = 0x360115,
+ CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x360116,
+ CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x360114,
+ CMSG_CONSUMABLE_TOKEN_REDEEM = 0x360118,
+ CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x360119,
+ CMSG_CONTENT_TRACKING_START_TRACKING = 0x3102D6,
+ CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3102D7,
CMSG_CONTRIBUTION_CONTRIBUTE = 0x3200FA,
CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3200FB,
CMSG_CONVERSATION_CINEMATIC_READY = 0x3200E7,
CMSG_CONVERSATION_LINE_STARTED = 0x3200E6,
- CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3102E4,
+ CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3102E6,
CMSG_CONVERT_RAID = 0x360078,
CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x32010E,
CMSG_CRAFTING_ORDER_CANCEL = 0x32011A,
@@ -310,15 +314,15 @@ enum OpcodeClient : uint32
CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x32011C,
CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x32011D,
CMSG_CREATE_CHARACTER = 0x36006E,
- CMSG_CREATE_SHIPMENT = 0x3101D9,
+ CMSG_CREATE_SHIPMENT = 0x3101DA,
CMSG_DB_QUERY_BULK = 0x360010,
CMSG_DECLINE_GUILD_INVITES = 0x3200B9,
CMSG_DECLINE_PETITION = 0x3200D4,
CMSG_DELETE_EQUIPMENT_SET = 0x3200A5,
CMSG_DELVE_TELEPORT_OUT = 0x320129,
- CMSG_DEL_FRIEND = 0x3600FC,
- CMSG_DEL_IGNORE = 0x360100,
- CMSG_DEPOSIT_REAGENT_BANK = 0x310219,
+ CMSG_DEL_FRIEND = 0x3600FD,
+ CMSG_DEL_IGNORE = 0x360101,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x31021A,
CMSG_DESTROY_ITEM = 0x310169,
CMSG_DF_BOOT_PLAYER_VOTE = 0x360044,
CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x360036,
@@ -332,65 +336,65 @@ enum OpcodeClient : uint32
CMSG_DF_TELEPORT = 0x360045,
CMSG_DISCARDED_TIME_SYNC_ACKS = 0x34005E,
CMSG_DISMISS_CRITTER = 0x320093,
- CMSG_DO_COUNTDOWN = 0x360143,
- CMSG_DO_MASTER_LOOT_ROLL = 0x3100CC,
+ CMSG_DO_COUNTDOWN = 0x360141,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x3100CB,
CMSG_DO_READY_CHECK = 0x36005E,
CMSG_DUEL_RESPONSE = 0x32007C,
- CMSG_EJECT_PASSENGER = 0x310104,
+ CMSG_EJECT_PASSENGER = 0x310103,
CMSG_EMOTE = 0x3200E1,
CMSG_ENABLE_NAGLE = 0x370007,
CMSG_ENABLE_TAXI_NODE = 0x32003C,
- CMSG_ENGINE_SURVEY = 0x36010E,
+ CMSG_ENGINE_SURVEY = 0x36010F,
CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x370003,
CMSG_ENUM_CHARACTERS = 0x360014,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x360108,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x360109,
CMSG_FAR_SIGHT = 0x320082,
CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31005E,
CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31005D,
CMSG_GAME_OBJ_REPORT_USE = 0x320089,
CMSG_GAME_OBJ_USE = 0x320088,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3101D4,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3101BA,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3101A7,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x31020B,
- CMSG_GARRISON_COMPLETE_MISSION = 0x3101FD,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3101D5,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x3101BD,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3101CC,
- CMSG_GARRISON_GET_MAP_DATA = 0x3101D3,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x31022F,
- CMSG_GARRISON_LEARN_TALENT = 0x3101C8,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3101FF,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x3101A3,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3101BF,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x3101F4,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3101BB,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x3101BC,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x3101A2,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3101D7,
- CMSG_GARRISON_RESEARCH_TALENT = 0x3101C0,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3101A4,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3101B8,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3101B0,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3101BE,
- CMSG_GARRISON_SOCKET_TALENT = 0x31029C,
- CMSG_GARRISON_START_MISSION = 0x3101FC,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x3101A8,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3101D5,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3101BB,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3101A8,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x31020C,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x3101FE,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3101D6,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x3101BE,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3101CD,
+ CMSG_GARRISON_GET_MAP_DATA = 0x3101D4,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x310230,
+ CMSG_GARRISON_LEARN_TALENT = 0x3101C9,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x310200,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x3101A4,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3101C0,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3101F5,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3101BC,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x3101BD,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x3101A3,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3101D8,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x3101C1,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3101A5,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3101B9,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3101B1,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3101BF,
+ CMSG_GARRISON_SOCKET_TALENT = 0x31029D,
+ CMSG_GARRISON_START_MISSION = 0x3101FD,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x3101A9,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x360013,
- CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3600E0,
- CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x36015F,
- CMSG_GET_GARRISON_INFO = 0x31019D,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3600E1,
+ CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x36015D,
+ CMSG_GET_GARRISON_INFO = 0x31019E,
CMSG_GET_ITEM_PURCHASE_DATA = 0x3200CF,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3101D8,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3101D9,
CMSG_GET_MIRROR_IMAGE_DATA = 0x31016D,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x36001A,
- CMSG_GET_RAF_ACCOUNT_INFO = 0x36014D,
- CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x360190,
- CMSG_GET_REMAINING_GAME_TIME = 0x360116,
- CMSG_GET_TROPHY_LIST = 0x3101ED,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36010A,
- CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36011B,
- CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36011C,
+ CMSG_GET_RAF_ACCOUNT_INFO = 0x36014B,
+ CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x36018E,
+ CMSG_GET_REMAINING_GAME_TIME = 0x360117,
+ CMSG_GET_TROPHY_LIST = 0x3101EE,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36010B,
+ CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36011C,
+ CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36011D,
CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3600BA,
CMSG_GM_TICKET_GET_CASE_STATUS = 0x3600B9,
CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3600B8,
@@ -430,9 +434,13 @@ enum OpcodeClient : uint32
CMSG_GUILD_QUERY_NEWS = 0x2F000D,
CMSG_GUILD_QUERY_RECIPES = 0x2F000B,
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x2F001F,
+ CMSG_GUILD_REQUEST_RENAME = 0x2F0023,
+ CMSG_GUILD_REQUEST_RENAME_NAME_CHECK = 0x2F0022,
+ CMSG_GUILD_REQUEST_RENAME_REFUND = 0x2F0024,
+ CMSG_GUILD_REQUEST_RENAME_STATUS = 0x2F0021,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x2F0010,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x2F0011,
- CMSG_GUILD_SET_GUILD_MASTER = 0x3600F3,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x3600F4,
CMSG_GUILD_SET_MEMBER_NOTE = 0x2F0013,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x2F0008,
CMSG_GUILD_SHIFT_RANK = 0x2F0007,
@@ -446,68 +454,68 @@ enum OpcodeClient : uint32
CMSG_INITIATE_TRADE = 0x310000,
CMSG_INSPECT = 0x3200C9,
CMSG_INSTANCE_LOCK_RESPONSE = 0x3200A6,
- CMSG_ISLAND_QUEUE = 0x310260,
+ CMSG_ISLAND_QUEUE = 0x310261,
CMSG_ITEM_PURCHASE_REFUND = 0x3200D0,
- CMSG_ITEM_TEXT_QUERY = 0x31020C,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x31008E,
+ CMSG_ITEM_TEXT_QUERY = 0x31020D,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x31008D,
CMSG_JOIN_RATED_BATTLEGROUND = 0x310025,
CMSG_KEEP_ALIVE = 0x3600A9,
- CMSG_KEYBOUND_OVERRIDE = 0x3100E2,
+ CMSG_KEYBOUND_OVERRIDE = 0x3100E1,
CMSG_LATENCY_REPORT = 0x37000D,
CMSG_LEARN_PVP_TALENTS = 0x3200F9,
CMSG_LEARN_TALENTS = 0x3200F7,
CMSG_LEAVE_GROUP = 0x360073,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31008F,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31008E,
CMSG_LFG_LIST_APPLY_TO_GROUP = 0x36003B,
CMSG_LFG_LIST_CANCEL_APPLICATION = 0x36003C,
CMSG_LFG_LIST_DECLINE_APPLICANT = 0x36003D,
CMSG_LFG_LIST_GET_STATUS = 0x360039,
CMSG_LFG_LIST_INVITE_APPLICANT = 0x36003E,
CMSG_LFG_LIST_INVITE_RESPONSE = 0x36003F,
- CMSG_LFG_LIST_JOIN = 0x310254,
+ CMSG_LFG_LIST_JOIN = 0x310255,
CMSG_LFG_LIST_LEAVE = 0x360038,
CMSG_LFG_LIST_SEARCH = 0x36003A,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x310255,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x310256,
CMSG_LIST_INVENTORY = 0x320033,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3600E3,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x3600E2,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3600E1,
- CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3600E4,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3600E4,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x3600E3,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3600E2,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3600E5,
CMSG_LOADING_SCREEN_NOTIFY = 0x360024,
- CMSG_LOAD_SELECTED_TROPHY = 0x3101EE,
- CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x360172,
- CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x360169,
- CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x36017B,
- CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x360170,
- CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x36016C,
- CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x360168,
- CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x36016B,
- CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x360171,
- CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x36016A,
- CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x36016D,
- CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x36016E,
+ CMSG_LOAD_SELECTED_TROPHY = 0x3101EF,
+ CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x360170,
+ CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x360167,
+ CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x360179,
+ CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x36016E,
+ CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x36016A,
+ CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x360166,
+ CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x360169,
+ CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x36016F,
+ CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x360168,
+ CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x36016B,
+ CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x36016C,
CMSG_LOGOUT_CANCEL = 0x320072,
CMSG_LOGOUT_INSTANT = 0x320073,
CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x320121,
CMSG_LOGOUT_REQUEST = 0x320071,
CMSG_LOG_DISCONNECT = 0x370005,
CMSG_LOG_STREAMING_ERROR = 0x370009,
- CMSG_LOOT_ITEM = 0x3100CA,
- CMSG_LOOT_MONEY = 0x3100C9,
- CMSG_LOOT_RELEASE = 0x3100CE,
- CMSG_LOOT_ROLL = 0x3100CF,
- CMSG_LOOT_UNIT = 0x3100C8,
+ CMSG_LOOT_ITEM = 0x3100C9,
+ CMSG_LOOT_MONEY = 0x3100C8,
+ CMSG_LOOT_RELEASE = 0x3100CD,
+ CMSG_LOOT_ROLL = 0x3100CE,
+ CMSG_LOOT_UNIT = 0x3100C7,
CMSG_LOW_LEVEL_RAID1 = 0x3600CC,
CMSG_LOW_LEVEL_RAID2 = 0x3200AD,
CMSG_MAIL_CREATE_TEXT_ITEM = 0x3200DB,
- CMSG_MAIL_DELETE = 0x3100E4,
+ CMSG_MAIL_DELETE = 0x3100E3,
CMSG_MAIL_GET_LIST = 0x3200D6,
CMSG_MAIL_MARK_AS_READ = 0x3200DA,
CMSG_MAIL_RETURN_TO_SENDER = 0x36007F,
CMSG_MAIL_TAKE_ITEM = 0x3200D8,
CMSG_MAIL_TAKE_MONEY = 0x3200D7,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3100E5,
- CMSG_MASTER_LOOT_ITEM = 0x3100CB,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3100E4,
+ CMSG_MASTER_LOOT_ITEM = 0x3100CA,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x320054,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x320051,
CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x32004F,
@@ -608,45 +616,46 @@ enum OpcodeClient : uint32
CMSG_MOVE_UPDATE_FALL_SPEED = 0x340036,
CMSG_MOVE_WATER_WALK_ACK = 0x340039,
CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x2E0001,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x310084,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x310083,
CMSG_NEXT_CINEMATIC_CAMERA = 0x3200E4,
CMSG_OBJECT_UPDATE_FAILED = 0x31002C,
CMSG_OBJECT_UPDATE_RESCUED = 0x31002D,
- CMSG_OFFER_PETITION = 0x310286,
+ CMSG_OFFER_PETITION = 0x310287,
CMSG_OPENING_CINEMATIC = 0x3200E3,
- CMSG_OPEN_ITEM = 0x31020D,
- CMSG_OPEN_MISSION_NPC = 0x3101CE,
- CMSG_OPEN_SHIPMENT_NPC = 0x3101D6,
- CMSG_OPEN_TRADESKILL_NPC = 0x3101E1,
+ CMSG_OPEN_ITEM = 0x31020E,
+ CMSG_OPEN_MISSION_NPC = 0x3101CF,
+ CMSG_OPEN_SHIPMENT_NPC = 0x3101D7,
+ CMSG_OPEN_TRADESKILL_NPC = 0x3101E2,
CMSG_OPT_OUT_OF_LOOT = 0x320090,
CMSG_OVERRIDE_SCREEN_FLASH = 0x3200BA,
CMSG_PARTY_INVITE = 0x360030,
CMSG_PARTY_INVITE_RESPONSE = 0x360032,
CMSG_PARTY_UNINVITE = 0x360071,
- CMSG_PERFORM_ITEM_INTERACTION = 0x3100ED,
- CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3102AE,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x3100EC,
+ CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3102AF,
+ CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT = 0x3102B2,
CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x2B0012,
- CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3102B0,
- CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3102B1,
- CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3102B2,
- CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3102AF,
+ CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3102B1,
+ CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3102B3,
+ CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3102B4,
+ CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3102B0,
CMSG_PETITION_BUY = 0x32005C,
- CMSG_PETITION_RENAME_GUILD = 0x3600F4,
+ CMSG_PETITION_RENAME_GUILD = 0x3600F5,
CMSG_PETITION_SHOW_LIST = 0x32005B,
CMSG_PETITION_SHOW_SIGNATURES = 0x32005D,
CMSG_PET_ABANDON = 0x32001E,
CMSG_PET_ABANDON_BY_NUMBER = 0x32001F,
CMSG_PET_ACTION = 0x32001C,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0x310093,
+ CMSG_PET_BATTLE_FINAL_NOTIFY = 0x310092,
CMSG_PET_BATTLE_INPUT = 0x36006B,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3100E3,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x310092,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3100E2,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x310091,
CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x36006C,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x31008C,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31008D,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x31008A,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x310094,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31008B,
+ CMSG_PET_BATTLE_REQUEST_PVP = 0x31008B,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31008C,
+ CMSG_PET_BATTLE_REQUEST_WILD = 0x310089,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x310093,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31008A,
CMSG_PET_CANCEL_AURA = 0x320020,
CMSG_PET_CAST_SPELL = 0x310172,
CMSG_PET_RENAME = 0x3600AE,
@@ -679,11 +688,11 @@ enum OpcodeClient : uint32
CMSG_QUERY_QUEST_ITEM_USABILITY = 0x310022,
CMSG_QUERY_REALM_NAME = 0x3600B3,
CMSG_QUERY_SCENARIO_POI = 0x360080,
- CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3102E9,
+ CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3102EB,
CMSG_QUERY_TIME = 0x320070,
- CMSG_QUERY_TREASURE_PICKER = 0x310232,
+ CMSG_QUERY_TREASURE_PICKER = 0x310233,
CMSG_QUERY_VOID_STORAGE = 0x31004E,
- CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3102EA,
+ CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3102EC,
CMSG_QUEST_CONFIRM_ACCEPT = 0x320030,
CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x32002A,
CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x32002C,
@@ -695,119 +704,116 @@ enum OpcodeClient : uint32
CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x32002F,
CMSG_QUEST_GIVER_STATUS_QUERY = 0x32002E,
CMSG_QUEST_LOG_REMOVE_QUEST = 0x3200CE,
- CMSG_QUEST_POI_QUERY = 0x3600DA,
+ CMSG_QUEST_POI_QUERY = 0x3600DB,
CMSG_QUEST_PUSH_RESULT = 0x320032,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x310278,
- CMSG_QUEST_SESSION_REQUEST_START = 0x310277,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0x360158,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x310279,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x310278,
+ CMSG_QUEST_SESSION_REQUEST_STOP = 0x360156,
CMSG_QUEUED_MESSAGES_END = 0x370008,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x360130,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x36012F,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x36015D,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x36012E,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36012D,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x36012E,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x36012D,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x36015B,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x36012C,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36012B,
CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x32009E,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0x36014E,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x360150,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x36014F,
+ CMSG_RAF_CLAIM_NEXT_REWARD = 0x36014C,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x36014E,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x36014D,
CMSG_RANDOM_ROLL = 0x36007E,
CMSG_READY_CHECK_RESPONSE = 0x36005F,
- CMSG_READ_ITEM = 0x31020E,
+ CMSG_READ_ITEM = 0x31020F,
CMSG_RECLAIM_CORPSE = 0x320075,
- CMSG_REMOVE_NEW_ITEM = 0x310236,
- CMSG_REMOVE_RAF_RECRUIT = 0x360151,
+ CMSG_REMOVE_NEW_ITEM = 0x310237,
+ CMSG_REMOVE_RAF_RECRUIT = 0x36014F,
CMSG_REORDER_CHARACTERS = 0x360015,
CMSG_REPAIR_ITEM = 0x320086,
- CMSG_REPLACE_TROPHY = 0x3101EF,
+ CMSG_REPLACE_TROPHY = 0x3101F0,
CMSG_REPOP_REQUEST = 0x3200C6,
- CMSG_REPORT_CLIENT_VARIABLES = 0x36012A,
- CMSG_REPORT_ENABLED_ADDONS = 0x360129,
- CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36012B,
CMSG_REPORT_PVP_PLAYER_AFK = 0x32008E,
- CMSG_REPORT_SERVER_LAG = 0x310270,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x310271,
+ CMSG_REPORT_SERVER_LAG = 0x310271,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x310272,
CMSG_REQUEST_ACCOUNT_DATA = 0x3600C0,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x310234,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x310235,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x360008,
CMSG_REQUEST_CEMETERY_LIST = 0x310023,
CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3600B5,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x310262,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x310263,
CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3200CA,
CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x2B0019,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x31029B,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x31029C,
CMSG_REQUEST_GUILD_PARTY_STATE = 0x310054,
CMSG_REQUEST_GUILD_REWARDS_LIST = 0x310053,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x310272,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x310273,
CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x31017E,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3100B8,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3100B9,
- CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3102E8,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3100B7,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3100B8,
+ CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3102EA,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x360023,
CMSG_REQUEST_PARTY_MEMBER_STATS = 0x36007D,
CMSG_REQUEST_PET_INFO = 0x320022,
CMSG_REQUEST_PLAYED_TIME = 0x31014B,
CMSG_REQUEST_PVP_REWARDS = 0x310041,
- CMSG_REQUEST_RAID_INFO = 0x3600F5,
+ CMSG_REQUEST_RAID_INFO = 0x3600F6,
CMSG_REQUEST_RATED_PVP_INFO = 0x36000F,
- CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x360193,
- CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x310235,
+ CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x360191,
+ CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x310236,
CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x310042,
CMSG_REQUEST_STABLED_PETS = 0x320023,
CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x2B001E,
- CMSG_REQUEST_VEHICLE_EXIT = 0x3100FF,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x310101,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x310100,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x310102,
- CMSG_REQUEST_WEEKLY_REWARDS = 0x310265,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x310233,
- CMSG_RESET_CHALLENGE_MODE = 0x3100B6,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3100B7,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x3100FE,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x310100,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3100FF,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x310101,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x310266,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x310234,
+ CMSG_RESET_CHALLENGE_MODE = 0x3100B5,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3100B6,
CMSG_RESET_INSTANCES = 0x360092,
CMSG_RESURRECT_RESPONSE = 0x3600AD,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x3101F1,
- CMSG_RIDE_VEHICLE_INTERACT = 0x310103,
- CMSG_RPE_RESET_CHARACTER = 0x36017E,
- CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x360178,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3101F2,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x310102,
+ CMSG_RPE_RESET_CHARACTER = 0x36017C,
+ CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x360176,
CMSG_SAVE_CUF_PROFILES = 0x310037,
CMSG_SAVE_EQUIPMENT_SET = 0x3200A4,
- CMSG_SAVE_GUILD_EMBLEM = 0x310182,
- CMSG_SAVE_PERSONAL_EMBLEM = 0x310183,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x3100DF,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x3100DE,
- CMSG_SCENE_TRIGGER_EVENT = 0x3100E0,
- CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3102D7,
- CMSG_SELECT_WOW_LABS_AREA = 0x3102EB,
+ CMSG_SAVE_GUILD_EMBLEM = 0x310183,
+ CMSG_SAVE_PERSONAL_EMBLEM = 0x310184,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x3100DE,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x3100DD,
+ CMSG_SCENE_TRIGGER_EVENT = 0x3100DF,
+ CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3102D9,
+ CMSG_SELECT_WOW_LABS_AREA = 0x3102ED,
CMSG_SELF_RES = 0x3200D1,
CMSG_SELL_ALL_JUNK_ITEMS = 0x320035,
CMSG_SELL_ITEM = 0x320034,
- CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x360123,
- CMSG_SEND_CONTACT_LIST = 0x3600FA,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x360124,
+ CMSG_SEND_CONTACT_LIST = 0x3600FB,
CMSG_SEND_MAIL = 0x360026,
- CMSG_SEND_PING_UNIT = 0x3102D9,
- CMSG_SEND_PING_WORLD_POINT = 0x3102DA,
+ CMSG_SEND_PING_UNIT = 0x3102DB,
+ CMSG_SEND_PING_WORLD_POINT = 0x3102DC,
CMSG_SEND_TEXT_EMOTE = 0x320019,
CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3600C7,
- CMSG_SETUP_WARBAND_GROUPS = 0x36018C,
+ CMSG_SETUP_WARBAND_GROUPS = 0x36018A,
CMSG_SET_ACTION_BAR_TOGGLES = 0x3200D2,
CMSG_SET_ACTION_BUTTON = 0x360060,
CMSG_SET_ACTIVE_MOVER = 0x340059,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x310190,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x310191,
CMSG_SET_ASSISTANT_LEADER = 0x360079,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x310211,
- CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x310212,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x310213,
- CMSG_SET_CONTACT_NOTES = 0x3600FD,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x310212,
+ CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x310213,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x310214,
+ CMSG_SET_CONTACT_NOTES = 0x3600FE,
CMSG_SET_CURRENCY_FLAGS = 0x310015,
- CMSG_SET_DIFFICULTY_ID = 0x3100E1,
+ CMSG_SET_DIFFICULTY_ID = 0x3100E0,
CMSG_SET_DUNGEON_DIFFICULTY = 0x3600AC,
CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x31013A,
CMSG_SET_EVERYONE_IS_ASSISTANT = 0x360046,
- CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x360131,
+ CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x36012F,
CMSG_SET_FACTION_AT_WAR = 0x320078,
CMSG_SET_FACTION_INACTIVE = 0x32007A,
CMSG_SET_FACTION_NOT_AT_WAR = 0x320079,
CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x310065,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x310215,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x310216,
CMSG_SET_LOOT_METHOD = 0x360072,
CMSG_SET_LOOT_SPECIALIZATION = 0x3200DF,
CMSG_SET_PARTY_ASSIGNMENT = 0x36007B,
@@ -817,33 +823,33 @@ enum OpcodeClient : uint32
CMSG_SET_PET_SPECIALIZATION = 0x310013,
CMSG_SET_PLAYER_DECLINED_NAMES = 0x3600B2,
CMSG_SET_PREFERRED_CEMETERY = 0x310024,
- CMSG_SET_PVP = 0x310187,
- CMSG_SET_RAID_DIFFICULTY = 0x360106,
+ CMSG_SET_PVP = 0x310188,
+ CMSG_SET_RAID_DIFFICULTY = 0x360107,
CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x360047,
CMSG_SET_ROLE = 0x360005,
CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3600B0,
CMSG_SET_SELECTION = 0x3200C8,
CMSG_SET_SHEATHED = 0x32001A,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x310214,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x310215,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x32008D,
CMSG_SET_TITLE = 0x310151,
CMSG_SET_TRADE_CURRENCY = 0x31000A,
CMSG_SET_TRADE_GOLD = 0x310009,
CMSG_SET_TRADE_ITEM = 0x310007,
- CMSG_SET_USING_PARTY_GARRISON = 0x3101D0,
- CMSG_SET_WAR_MODE = 0x310188,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3101D1,
+ CMSG_SET_WAR_MODE = 0x310189,
CMSG_SET_WATCHED_FACTION = 0x32007B,
- CMSG_SHOW_TRADE_SKILL = 0x3600ED,
+ CMSG_SHOW_TRADE_SKILL = 0x3600EE,
CMSG_SIGN_PETITION = 0x3200D3,
CMSG_SILENCE_PARTY_TALKER = 0x36007C,
- CMSG_SOCIAL_CONTRACT_REQUEST = 0x360173,
+ CMSG_SOCIAL_CONTRACT_REQUEST = 0x360171,
CMSG_SOCKET_GEMS = 0x320085,
- CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3102DD,
- CMSG_SORT_BAGS = 0x310216,
- CMSG_SORT_BANK_BAGS = 0x310217,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x310218,
+ CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3102DF,
+ CMSG_SORT_BAGS = 0x310217,
+ CMSG_SORT_BANK_BAGS = 0x310218,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x310219,
CMSG_SPAWN_TRACKING_UPDATE = 0x310166,
- CMSG_SPECTATE_CHANGE = 0x3102D0,
+ CMSG_SPECTATE_CHANGE = 0x3102D2,
CMSG_SPELL_CLICK = 0x320027,
CMSG_SPELL_EMPOWER_RELEASE = 0x310138,
CMSG_SPELL_EMPOWER_RESTART = 0x310139,
@@ -858,7 +864,7 @@ enum OpcodeClient : uint32
CMSG_START_WAR_GAME = 0x36000A,
CMSG_STORE_GUILD_BANK_ITEM = 0x32004B,
CMSG_SUBMIT_USER_FEEDBACK = 0x3600BF,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x310290,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x310291,
CMSG_SUMMON_RESPONSE = 0x360094,
CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x360070,
CMSG_SURRENDER_ARENA = 0x310020,
@@ -870,7 +876,7 @@ enum OpcodeClient : uint32
CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x32004C,
CMSG_SWAP_SUB_GROUPS = 0x360077,
CMSG_SWAP_VOID_ITEM = 0x310050,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x310184,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x310185,
CMSG_TALK_TO_GOSSIP = 0x320024,
CMSG_TAXI_NODE_STATUS_QUERY = 0x32003B,
CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x32003D,
@@ -880,58 +886,58 @@ enum OpcodeClient : uint32
CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x34005C,
CMSG_TIME_SYNC_RESPONSE_FAILED = 0x34005B,
CMSG_TOGGLE_DIFFICULTY = 0x360081,
- CMSG_TOGGLE_PVP = 0x310186,
+ CMSG_TOGGLE_PVP = 0x310187,
CMSG_TOTEM_DESTROYED = 0x320092,
CMSG_TOY_CLEAR_FANFARE = 0x2B0004,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x310231,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x310232,
CMSG_TRAINER_BUY_SPELL = 0x320041,
CMSG_TRAINER_LIST = 0x320040,
- CMSG_TRAITS_COMMIT_CONFIG = 0x3102B8,
- CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3102B6,
- CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3102E6,
+ CMSG_TRAITS_COMMIT_CONFIG = 0x3102BA,
+ CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3102B8,
+ CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3102E8,
CMSG_TRANSMOGRIFY_ITEMS = 0x310043,
CMSG_TURN_IN_PETITION = 0x3200D5,
- CMSG_TUTORIAL = 0x360107,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x310261,
+ CMSG_TUTORIAL = 0x360108,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x310262,
CMSG_UNACCEPT_TRADE = 0x310005,
- CMSG_UNDELETE_CHARACTER = 0x360109,
+ CMSG_UNDELETE_CHARACTER = 0x36010A,
CMSG_UNLEARN_SKILL = 0x32007F,
CMSG_UNLEARN_SPECIALIZATION = 0x310051,
CMSG_UNLOCK_VOID_STORAGE = 0x31004D,
- CMSG_UPDATE_AADC_STATUS = 0x360163,
+ CMSG_UPDATE_AADC_STATUS = 0x360161,
CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x320128,
CMSG_UPDATE_ACCOUNT_DATA = 0x3600C1,
CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x310175,
CMSG_UPDATE_CLIENT_SETTINGS = 0x36008E,
- CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3101E2,
+ CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3101E3,
CMSG_UPDATE_MISSILE_TRAJECTORY = 0x340060,
CMSG_UPDATE_RAID_TARGET = 0x36007A,
CMSG_UPDATE_SPELL_VISUAL = 0x310174,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36011E,
- CMSG_UPGRADE_GARRISON = 0x310198,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x31028E,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36011F,
+ CMSG_UPGRADE_GARRISON = 0x310199,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x31028F,
CMSG_USED_FOLLOW = 0x310032,
- CMSG_USE_CRITTER_ITEM = 0x310109,
+ CMSG_USE_CRITTER_ITEM = 0x310108,
CMSG_USE_EQUIPMENT_SET = 0x330001,
CMSG_USE_ITEM = 0x31016E,
CMSG_USE_TOY = 0x310171,
- CMSG_VAS_CHECK_TRANSFER_OK = 0x360136,
- CMSG_VAS_GET_QUEUE_MINUTES = 0x360135,
- CMSG_VAS_GET_SERVICE_STATUS = 0x360134,
+ CMSG_VAS_CHECK_TRANSFER_OK = 0x360134,
+ CMSG_VAS_GET_QUEUE_MINUTES = 0x360133,
+ CMSG_VAS_GET_SERVICE_STATUS = 0x360132,
CMSG_VIOLENCE_LEVEL = 0x310030,
- CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x36013A,
- CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x36013B,
- CMSG_VOICE_CHAT_LOGIN = 0x360139,
+ CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x360138,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x360139,
+ CMSG_VOICE_CHAT_LOGIN = 0x360137,
CMSG_VOID_STORAGE_TRANSFER = 0x31004F,
CMSG_WARDEN3_DATA = 0x360018,
CMSG_WHO = 0x3600AB,
CMSG_WHO_IS = 0x3600AA,
- CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3102D3,
+ CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3102D5,
CMSG_WORLD_PORT_RESPONSE = 0x360025,
CMSG_WRAP_ITEM = 0x330000,
};
-inline constexpr std::size_t NUM_CMSG_OPCODES = 1724;
+inline constexpr std::size_t NUM_CMSG_OPCODES = 1732;
inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode)
{
@@ -939,15 +945,15 @@ inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode)
switch (opcode >> 16)
{
case 0x2B: return idInGroup < 31 ? idInGroup + 0 : -1;
- case 0x2D: return idInGroup < 47 ? idInGroup + 31 : -1;
- case 0x2E: return idInGroup < 3 ? idInGroup + 78 : -1;
- case 0x2F: return idInGroup < 33 ? idInGroup + 81 : -1;
- case 0x31: return idInGroup < 748 ? idInGroup + 114 : -1;
- case 0x32: return idInGroup < 299 ? idInGroup + 862 : -1;
- case 0x33: return idInGroup < 12 ? idInGroup + 1161 : -1;
- case 0x34: return idInGroup < 132 ? idInGroup + 1173 : -1;
- case 0x36: return idInGroup < 404 ? idInGroup + 1305 : -1;
- case 0x37: return idInGroup < 15 ? idInGroup + 1709 : -1;
+ case 0x2D: return idInGroup < 51 ? idInGroup + 31 : -1;
+ case 0x2E: return idInGroup < 3 ? idInGroup + 82 : -1;
+ case 0x2F: return idInGroup < 37 ? idInGroup + 85 : -1;
+ case 0x31: return idInGroup < 750 ? idInGroup + 122 : -1;
+ case 0x32: return idInGroup < 299 ? idInGroup + 872 : -1;
+ case 0x33: return idInGroup < 12 ? idInGroup + 1171 : -1;
+ case 0x34: return idInGroup < 132 ? idInGroup + 1183 : -1;
+ case 0x36: return idInGroup < 402 ? idInGroup + 1315 : -1;
+ case 0x37: return idInGroup < 15 ? idInGroup + 1717 : -1;
default: return -1;
}
}
@@ -1103,7 +1109,7 @@ enum OpcodeServer : uint32
SMSG_BONUS_ROLL_EMPTY = 0x3800DD,
SMSG_BOSS_KILL = 0x3E002B,
SMSG_BREAK_TARGET = 0x3E0016,
- SMSG_BROADCAST_ACHIEVEMENT = 0x3D0010,
+ SMSG_BROADCAST_ACHIEVEMENT = 0x3D0012,
SMSG_BROADCAST_SUMMON_CAST = 0x3802C2,
SMSG_BROADCAST_SUMMON_RESPONSE = 0x3802C3,
SMSG_BUY_FAILED = 0x380160,
@@ -1144,6 +1150,8 @@ enum OpcodeServer : uint32
SMSG_CAPTURE_POINT_REMOVED = 0x3E0008,
SMSG_CAST_FAILED = 0x4E0048,
SMSG_CAS_REFRESH_REMOTE_DATA = 0x380111,
+ SMSG_CAUTIONARY_CHANNEL_MESSAGE = 0x3D0009,
+ SMSG_CAUTIONARY_CHAT_MESSAGE = 0x3D0008,
SMSG_CHAIN_MISSILE_BOUNCE = 0x380061,
SMSG_CHALLENGE_MODE_COMPLETE = 0x3800A2,
SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x3800A8,
@@ -1152,11 +1160,11 @@ enum OpcodeServer : uint32
SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x3800A0,
SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x4B000C,
SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x38029A,
- SMSG_CHANNEL_LIST = 0x3D0019,
- SMSG_CHANNEL_NOTIFY = 0x3D0015,
- SMSG_CHANNEL_NOTIFY_JOINED = 0x3D0017,
- SMSG_CHANNEL_NOTIFY_LEFT = 0x3D0018,
- SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x3D0016,
+ SMSG_CHANNEL_LIST = 0x3D001B,
+ SMSG_CHANNEL_NOTIFY = 0x3D0017,
+ SMSG_CHANNEL_NOTIFY_JOINED = 0x3D0019,
+ SMSG_CHANNEL_NOTIFY_LEFT = 0x3D001A,
+ SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x3D0018,
SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x380254,
SMSG_CHARACTER_LOGIN_FAILED = 0x38019E,
SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x38021F,
@@ -1169,19 +1177,19 @@ enum OpcodeServer : uint32
SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x38017C,
SMSG_CHAR_FACTION_CHANGE_RESULT = 0x38023E,
SMSG_CHAT = 0x3D0001,
- SMSG_CHAT_AUTO_RESPONDED = 0x3D000C,
- SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3D0020,
- SMSG_CHAT_DOWN = 0x3D0012,
+ SMSG_CHAT_AUTO_RESPONDED = 0x3D000E,
+ SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3D0022,
+ SMSG_CHAT_DOWN = 0x3D0014,
SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x3D0000,
- SMSG_CHAT_IS_DOWN = 0x3D0013,
- SMSG_CHAT_NOT_IN_GUILD = 0x3D0021,
+ SMSG_CHAT_IS_DOWN = 0x3D0015,
+ SMSG_CHAT_NOT_IN_GUILD = 0x3D0023,
SMSG_CHAT_NOT_IN_PARTY = 0x3D0006,
SMSG_CHAT_PLAYER_AMBIGUOUS = 0x3D0004,
- SMSG_CHAT_PLAYER_NOTFOUND = 0x3D000B,
- SMSG_CHAT_RECONNECT = 0x3D0014,
- SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x3D001B,
+ SMSG_CHAT_PLAYER_NOTFOUND = 0x3D000D,
+ SMSG_CHAT_RECONNECT = 0x3D0016,
+ SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x3D001D,
SMSG_CHAT_RESTRICTED = 0x3D0007,
- SMSG_CHAT_SERVER_MESSAGE = 0x3D001A,
+ SMSG_CHAT_SERVER_MESSAGE = 0x3D001C,
SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x4E0002,
SMSG_CHECK_ABANDON_NPE = 0x4B0023,
SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x38001B,
@@ -1261,7 +1269,7 @@ enum OpcodeServer : uint32
SMSG_DB_REPLY = 0x3C0000,
SMSG_DEATH_RELEASE_LOC = 0x38016D,
SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x3800EF,
- SMSG_DEFENSE_MESSAGE = 0x3D000A,
+ SMSG_DEFENSE_MESSAGE = 0x3D000C,
SMSG_DELETE_CHAR = 0x38019B,
SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x420022,
SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x380348,
@@ -1301,6 +1309,7 @@ enum OpcodeServer : uint32
SMSG_EQUIPMENT_SET_ID = 0x38014C,
SMSG_EXPECTED_SPAM_RECORDS = 0x3D0005,
SMSG_EXPLORATION_EXPERIENCE = 0x3801F6,
+ SMSG_EXPORT_ACCOUNT_PROFILE = 0x3800EC,
SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x3802F3,
SMSG_FACTION_BONUS_INFO = 0x3801BC,
SMSG_FAILED_PLAYER_CONDITION = 0x4B0002,
@@ -1483,6 +1492,10 @@ enum OpcodeServer : uint32
SMSG_GUILD_PARTY_STATE = 0x440013,
SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x440029,
SMSG_GUILD_RANKS = 0x440010,
+ SMSG_GUILD_RENAME_NAME_CHECK = 0x440044,
+ SMSG_GUILD_RENAME_REFUND_RESULT = 0x440046,
+ SMSG_GUILD_RENAME_REQUESTED_RESULT = 0x440045,
+ SMSG_GUILD_RENAME_STATUS_UPDATE = 0x440043,
SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x440014,
SMSG_GUILD_RESET = 0x440020,
SMSG_GUILD_REWARD_LIST = 0x440008,
@@ -1612,6 +1625,7 @@ enum OpcodeServer : uint32
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x4E0003,
SMSG_MISSILE_CANCEL = 0x380060,
SMSG_MODIFY_COOLDOWN = 0x3801FB,
+ SMSG_MOTD = 0x3D0003,
SMSG_MOUNT_RESULT = 0x38000F,
SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x3802C1,
SMSG_MOVE_ADD_IMPULSE = 0x490062,
@@ -1903,7 +1917,7 @@ enum OpcodeServer : uint32
SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x380333,
SMSG_RAID_DIFFICULTY_SET = 0x38023F,
SMSG_RAID_GROUP_ONLY = 0x380241,
- SMSG_RAID_INSTANCE_MESSAGE = 0x3D0008,
+ SMSG_RAID_INSTANCE_MESSAGE = 0x3D000A,
SMSG_RAID_MARKERS_CHANGED = 0x380038,
SMSG_RANDOM_ROLL = 0x3800C8,
SMSG_RATED_PVP_INFO = 0x3E000F,
@@ -2128,9 +2142,9 @@ enum OpcodeServer : uint32
SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x38008D,
SMSG_UPDATE_TALENT_DATA = 0x38006F,
SMSG_UPDATE_WORLD_STATE = 0x3801DF,
- SMSG_USERLIST_ADD = 0x3D000D,
- SMSG_USERLIST_REMOVE = 0x3D000E,
- SMSG_USERLIST_UPDATE = 0x3D000F,
+ SMSG_USERLIST_ADD = 0x3D000F,
+ SMSG_USERLIST_REMOVE = 0x3D0010,
+ SMSG_USERLIST_UPDATE = 0x3D0011,
SMSG_USE_EQUIPMENT_SET_RESULT = 0x3801E6,
SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x3802AC,
SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x3802AA,
@@ -2175,7 +2189,7 @@ enum OpcodeServer : uint32
SMSG_XP_AWARDED_FROM_CURRENCY = 0x38032F,
SMSG_XP_GAIN_ABORTED = 0x380062,
SMSG_XP_GAIN_ENABLED = 0x380240,
- SMSG_ZONE_UNDER_ATTACK = 0x3D0009,
+ SMSG_ZONE_UNDER_ATTACK = 0x3D000B,
// Opcodes that are not generated automatically
SMSG_ACCOUNT_HEIRLOOM_UPDATE = SMSG_ACCOUNT_TOY_UPDATE + 1, // no client handler
@@ -2186,30 +2200,30 @@ enum OpcodeServer : uint32
SMSG_ARENA_TEAM_STATS = UNKNOWN_OPCODE,
};
-inline constexpr std::size_t NUM_SMSG_OPCODES = 1465;
+inline constexpr std::size_t NUM_SMSG_OPCODES = 1473;
inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeServer opcode)
{
uint32 idInGroup = opcode & 0xFFFF;
switch (opcode >> 16)
{
- case 0x38: return idInGroup < 845 ? idInGroup + 0 : -1;
- case 0x39: return idInGroup < 10 ? idInGroup + 845 : -1;
- case 0x3C: return idInGroup < 18 ? idInGroup + 855 : -1;
- case 0x3D: return idInGroup < 34 ? idInGroup + 873 : -1;
- case 0x3E: return idInGroup < 49 ? idInGroup + 907 : -1;
- case 0x3F: return idInGroup < 11 ? idInGroup + 956 : -1;
- case 0x40: return idInGroup < 12 ? idInGroup + 967 : -1;
- case 0x42: return idInGroup < 82 ? idInGroup + 979 : -1;
- case 0x44: return idInGroup < 67 ? idInGroup + 1061 : -1;
- case 0x46: return idInGroup < 33 ? idInGroup + 1128 : -1;
- case 0x48: return idInGroup < 1 ? idInGroup + 1161 : -1;
- case 0x49: return idInGroup < 120 ? idInGroup + 1162 : -1;
- case 0x4B: return idInGroup < 48 ? idInGroup + 1282 : -1;
- case 0x4C: return idInGroup < 41 ? idInGroup + 1330 : -1;
- case 0x4E: return idInGroup < 85 ? idInGroup + 1371 : -1;
- case 0x4F: return idInGroup < 8 ? idInGroup + 1456 : -1;
- case 0x51: return idInGroup < 1 ? idInGroup + 1464 : -1;
+ case 0x38: return idInGroup < 847 ? idInGroup + 0 : -1;
+ case 0x39: return idInGroup < 10 ? idInGroup + 847 : -1;
+ case 0x3C: return idInGroup < 18 ? idInGroup + 857 : -1;
+ case 0x3D: return idInGroup < 36 ? idInGroup + 875 : -1;
+ case 0x3E: return idInGroup < 49 ? idInGroup + 911 : -1;
+ case 0x3F: return idInGroup < 11 ? idInGroup + 960 : -1;
+ case 0x40: return idInGroup < 12 ? idInGroup + 971 : -1;
+ case 0x42: return idInGroup < 82 ? idInGroup + 983 : -1;
+ case 0x44: return idInGroup < 71 ? idInGroup + 1065 : -1;
+ case 0x46: return idInGroup < 33 ? idInGroup + 1136 : -1;
+ case 0x48: return idInGroup < 1 ? idInGroup + 1169 : -1;
+ case 0x49: return idInGroup < 120 ? idInGroup + 1170 : -1;
+ case 0x4B: return idInGroup < 48 ? idInGroup + 1290 : -1;
+ case 0x4C: return idInGroup < 41 ? idInGroup + 1338 : -1;
+ case 0x4E: return idInGroup < 85 ? idInGroup + 1379 : -1;
+ case 0x4F: return idInGroup < 8 ? idInGroup + 1464 : -1;
+ case 0x51: return idInGroup < 1 ? idInGroup + 1472 : -1;
default: return -1;
}
}
diff --git a/src/server/game/Support/SupportMgr.h b/src/server/game/Support/SupportMgr.h
index f8582ebb6d0..b21637a7991 100644
--- a/src/server/game/Support/SupportMgr.h
+++ b/src/server/game/Support/SupportMgr.h
@@ -53,21 +53,23 @@ enum class ReportMajorCategory : int32
enum class ReportMinorCategory : int32
{
- TextChat = 0x0001,
- Boosting = 0x0002,
- Spam = 0x0004,
- Afk = 0x0008,
- IntentionallyFeeding = 0x0010,
- BlockingProgress = 0x0020,
- Hacking = 0x0040,
- Botting = 0x0080,
- Advertisement = 0x0100,
- BTag = 0x0200,
- GroupName = 0x0400,
- CharacterName = 0x0800,
- GuildName = 0x1000,
- Description = 0x2000,
- Name = 0x4000,
+ TextChat = 0x00000001,
+ Boosting = 0x00000002,
+ Spam = 0x00000004,
+ Afk = 0x00000008,
+ IntentionallyFeeding = 0x00000010,
+ BlockingProgress = 0x00000020,
+ Hacking = 0x00000040,
+ Botting = 0x00000080,
+ Advertisement = 0x00000100,
+ BTag = 0x00000200,
+ GroupName = 0x00000400,
+ CharacterName = 0x00000800,
+ GuildName = 0x00001000,
+ Description = 0x00002000,
+ Name = 0x00004000,
+ ChinaHarmfulMinors = 0x00008000,
+ Disruption = 0x00010000,
};
// from blizzard lua
diff --git a/src/server/proto/Client/api/client/v2/presence_types.pb.cc b/src/server/proto/Client/api/client/v2/presence_types.pb.cc
new file mode 100644
index 00000000000..5cae430dc00
--- /dev/null
+++ b/src/server/proto/Client/api/client/v2/presence_types.pb.cc
@@ -0,0 +1,979 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: api/client/v2/presence_types.proto
+
+#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
+#include "api/client/v2/presence_types.pb.h"
+
+#include <utility>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/stubs/once.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+
+namespace bgs {
+namespace protocol {
+namespace presence {
+namespace v2 {
+
+namespace {
+
+const ::google::protobuf::Descriptor* RichPresenceKey_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ RichPresenceKey_reflection_ = NULL;
+const ::google::protobuf::Descriptor* PresenceFieldKey_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ PresenceFieldKey_reflection_ = NULL;
+const ::google::protobuf::Descriptor* PresenceField_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ PresenceField_reflection_ = NULL;
+const ::google::protobuf::Descriptor* PresenceFieldState_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ PresenceFieldState_reflection_ = NULL;
+const ::google::protobuf::Descriptor* PresenceFieldUpdate_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ PresenceFieldUpdate_reflection_ = NULL;
+const ::google::protobuf::Descriptor* PresenceOnlineGameAccount_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ PresenceOnlineGameAccount_reflection_ = NULL;
+const ::google::protobuf::Descriptor* PresenceOnlineGameAccountFieldValue_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ PresenceOnlineGameAccountFieldValue_reflection_ = NULL;
+const ::google::protobuf::Descriptor* PresenceExternalIdentityFieldValue_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+ PresenceExternalIdentityFieldValue_reflection_ = NULL;
+const ::google::protobuf::EnumDescriptor* PresenceQueryBehavior_descriptor_ = NULL;
+const ::google::protobuf::EnumDescriptor* PresenceAccountStatus_descriptor_ = NULL;
+
+} // namespace
+
+void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() {
+ protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ const ::google::protobuf::FileDescriptor* file =
+ ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
+ "api/client/v2/presence_types.proto");
+ GOOGLE_CHECK(file != NULL);
+ RichPresenceKey_descriptor_ = file->message_type(0);
+ static const int RichPresenceKey_offsets_[3] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, title_id_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, stream_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, localization_id_),
+ };
+ RichPresenceKey_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ RichPresenceKey_descriptor_,
+ RichPresenceKey::default_instance_,
+ RichPresenceKey_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(RichPresenceKey));
+ PresenceFieldKey_descriptor_ = file->message_type(1);
+ static const int PresenceFieldKey_offsets_[4] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, title_id_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, group_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, field_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, unique_id_),
+ };
+ PresenceFieldKey_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ PresenceFieldKey_descriptor_,
+ PresenceFieldKey::default_instance_,
+ PresenceFieldKey_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(PresenceFieldKey));
+ PresenceField_descriptor_ = file->message_type(2);
+ static const int PresenceField_offsets_[4] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, key_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, value_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, deleted_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, updated_time_us_),
+ };
+ PresenceField_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ PresenceField_descriptor_,
+ PresenceField::default_instance_,
+ PresenceField_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(PresenceField));
+ PresenceFieldState_descriptor_ = file->message_type(3);
+ static const int PresenceFieldState_offsets_[4] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, account_id_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, game_account_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, fields_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, oldest_time_us_),
+ };
+ PresenceFieldState_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ PresenceFieldState_descriptor_,
+ PresenceFieldState::default_instance_,
+ PresenceFieldState_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(PresenceFieldState));
+ PresenceFieldUpdate_descriptor_ = file->message_type(4);
+ static const int PresenceFieldUpdate_offsets_[3] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, key_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, value_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, delete__),
+ };
+ PresenceFieldUpdate_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ PresenceFieldUpdate_descriptor_,
+ PresenceFieldUpdate::default_instance_,
+ PresenceFieldUpdate_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(PresenceFieldUpdate));
+ PresenceOnlineGameAccount_descriptor_ = file->message_type(5);
+ static const int PresenceOnlineGameAccount_offsets_[2] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, game_account_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, online_time_us_),
+ };
+ PresenceOnlineGameAccount_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ PresenceOnlineGameAccount_descriptor_,
+ PresenceOnlineGameAccount::default_instance_,
+ PresenceOnlineGameAccount_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(PresenceOnlineGameAccount));
+ PresenceOnlineGameAccountFieldValue_descriptor_ = file->message_type(6);
+ static const int PresenceOnlineGameAccountFieldValue_offsets_[1] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccountFieldValue, online_game_accounts_),
+ };
+ PresenceOnlineGameAccountFieldValue_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ PresenceOnlineGameAccountFieldValue_descriptor_,
+ PresenceOnlineGameAccountFieldValue::default_instance_,
+ PresenceOnlineGameAccountFieldValue_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccountFieldValue, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccountFieldValue, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(PresenceOnlineGameAccountFieldValue));
+ PresenceExternalIdentityFieldValue_descriptor_ = file->message_type(7);
+ static const int PresenceExternalIdentityFieldValue_offsets_[2] = {
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, unique_id_),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, display_id_),
+ };
+ PresenceExternalIdentityFieldValue_reflection_ =
+ new ::google::protobuf::internal::GeneratedMessageReflection(
+ PresenceExternalIdentityFieldValue_descriptor_,
+ PresenceExternalIdentityFieldValue::default_instance_,
+ PresenceExternalIdentityFieldValue_offsets_,
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, _has_bits_[0]),
+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, _unknown_fields_),
+ -1,
+ ::google::protobuf::DescriptorPool::generated_pool(),
+ ::google::protobuf::MessageFactory::generated_factory(),
+ sizeof(PresenceExternalIdentityFieldValue));
+ PresenceQueryBehavior_descriptor_ = file->enum_type(0);
+ PresenceAccountStatus_descriptor_ = file->enum_type(1);
+}
+
+namespace {
+
+GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
+inline void protobuf_AssignDescriptorsOnce() {
+ ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
+ &protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto);
+}
+
+void protobuf_RegisterTypes(const ::std::string&) {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ RichPresenceKey_descriptor_, &RichPresenceKey::default_instance());
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ PresenceFieldKey_descriptor_, &PresenceFieldKey::default_instance());
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ PresenceField_descriptor_, &PresenceField::default_instance());
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ PresenceFieldState_descriptor_, &PresenceFieldState::default_instance());
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ PresenceFieldUpdate_descriptor_, &PresenceFieldUpdate::default_instance());
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ PresenceOnlineGameAccount_descriptor_, &PresenceOnlineGameAccount::default_instance());
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ PresenceOnlineGameAccountFieldValue_descriptor_, &PresenceOnlineGameAccountFieldValue::default_instance());
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+ PresenceExternalIdentityFieldValue_descriptor_, &PresenceExternalIdentityFieldValue::default_instance());
+}
+
+} // namespace
+
+void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() {
+ delete RichPresenceKey::default_instance_;
+ delete RichPresenceKey_reflection_;
+ delete PresenceFieldKey::default_instance_;
+ delete PresenceFieldKey_reflection_;
+ delete PresenceField::default_instance_;
+ delete PresenceField_reflection_;
+ delete PresenceFieldState::default_instance_;
+ delete PresenceFieldState_reflection_;
+ delete PresenceFieldUpdate::default_instance_;
+ delete PresenceFieldUpdate_reflection_;
+ delete PresenceOnlineGameAccount::default_instance_;
+ delete PresenceOnlineGameAccount_reflection_;
+ delete PresenceOnlineGameAccountFieldValue::default_instance_;
+ delete PresenceOnlineGameAccountFieldValue_reflection_;
+ delete PresenceExternalIdentityFieldValue::default_instance_;
+ delete PresenceExternalIdentityFieldValue_reflection_;
+}
+
+void protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() {
+ static bool already_here = false;
+ if (already_here) return;
+ already_here = true;
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+ ::bgs::protocol::v2::protobuf_AddDesc_api_2fcommon_2fv2_2fattribute_5ftypes_2eproto();
+ ::bgs::protocol::account::v2::protobuf_AddDesc_api_2fcommon_2fv2_2fgame_5faccount_5fhandle_2eproto();
+ ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
+ "\n\"api/client/v2/presence_types.proto\022\030bg"
+ "s.protocol.presence.v2\032#api/common/v2/at"
+ "tribute_types.proto\032\'api/common/v2/game_"
+ "account_handle.proto\"L\n\017RichPresenceKey\022"
+ "\020\n\010title_id\030\001 \001(\r\022\016\n\006stream\030\002 \001(\007\022\027\n\017loc"
+ "alization_id\030\003 \001(\r\"U\n\020PresenceFieldKey\022\020"
+ "\n\010title_id\030\001 \001(\r\022\r\n\005group\030\002 \001(\r\022\r\n\005field"
+ "\030\003 \001(\r\022\021\n\tunique_id\030\004 \001(\004\"\233\001\n\rPresenceFi"
+ "eld\0227\n\003key\030\001 \001(\0132*.bgs.protocol.presence"
+ ".v2.PresenceFieldKey\022\'\n\005value\030\002 \001(\0132\030.bg"
+ "s.protocol.v2.Variant\022\017\n\007deleted\030\003 \001(\010\022\027"
+ "\n\017updated_time_us\030\004 \001(\004\"\273\001\n\022PresenceFiel"
+ "dState\022\022\n\naccount_id\030\001 \001(\004\022@\n\014game_accou"
+ "nt\030\002 \001(\0132*.bgs.protocol.account.v2.GameA"
+ "ccountHandle\0227\n\006fields\030\003 \003(\0132\'.bgs.proto"
+ "col.presence.v2.PresenceField\022\026\n\016oldest_"
+ "time_us\030\004 \001(\004\"\207\001\n\023PresenceFieldUpdate\0227\n"
+ "\003key\030\001 \001(\0132*.bgs.protocol.presence.v2.Pr"
+ "esenceFieldKey\022\'\n\005value\030\002 \001(\0132\030.bgs.prot"
+ "ocol.v2.Variant\022\016\n\006delete\030\003 \001(\010\"u\n\031Prese"
+ "nceOnlineGameAccount\022@\n\014game_account\030\001 \001"
+ "(\0132*.bgs.protocol.account.v2.GameAccount"
+ "Handle\022\026\n\016online_time_us\030\002 \001(\004\"x\n#Presen"
+ "ceOnlineGameAccountFieldValue\022Q\n\024online_"
+ "game_accounts\030\001 \003(\01323.bgs.protocol.prese"
+ "nce.v2.PresenceOnlineGameAccount\"K\n\"Pres"
+ "enceExternalIdentityFieldValue\022\021\n\tunique"
+ "_id\030\001 \001(\t\022\022\n\ndisplay_id\030\002 \001(\t*r\n\025Presenc"
+ "eQueryBehavior\022\033\n\027BATTLE_NET_ACCOUNT_ONL"
+ "Y\020\000\022\035\n\031INCLUDE_SAME_GAME_ACCOUNT\020\001\022\035\n\031IN"
+ "CLUDE_ALL_GAME_ACCOUNTS\020\002*C\n\025PresenceAcc"
+ "ountStatus\022\013\n\007OFFLINE\020\000\022\n\n\006ONLINE\020\001\022\010\n\004A"
+ "WAY\020\002\022\007\n\003DND\020\003B\002H\002", 1298);
+ ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
+ "api/client/v2/presence_types.proto", &protobuf_RegisterTypes);
+ RichPresenceKey::default_instance_ = new RichPresenceKey();
+ PresenceFieldKey::default_instance_ = new PresenceFieldKey();
+ PresenceField::default_instance_ = new PresenceField();
+ PresenceFieldState::default_instance_ = new PresenceFieldState();
+ PresenceFieldUpdate::default_instance_ = new PresenceFieldUpdate();
+ PresenceOnlineGameAccount::default_instance_ = new PresenceOnlineGameAccount();
+ PresenceOnlineGameAccountFieldValue::default_instance_ = new PresenceOnlineGameAccountFieldValue();
+ PresenceExternalIdentityFieldValue::default_instance_ = new PresenceExternalIdentityFieldValue();
+ RichPresenceKey::default_instance_->InitAsDefaultInstance();
+ PresenceFieldKey::default_instance_->InitAsDefaultInstance();
+ PresenceField::default_instance_->InitAsDefaultInstance();
+ PresenceFieldState::default_instance_->InitAsDefaultInstance();
+ PresenceFieldUpdate::default_instance_->InitAsDefaultInstance();
+ PresenceOnlineGameAccount::default_instance_->InitAsDefaultInstance();
+ PresenceOnlineGameAccountFieldValue::default_instance_->InitAsDefaultInstance();
+ PresenceExternalIdentityFieldValue::default_instance_->InitAsDefaultInstance();
+ ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto);
+}
+
+// Force AddDescriptors() to be called at static initialization time.
+struct StaticDescriptorInitializer_api_2fclient_2fv2_2fpresence_5ftypes_2eproto {
+ StaticDescriptorInitializer_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() {
+ protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ }
+} static_descriptor_initializer_api_2fclient_2fv2_2fpresence_5ftypes_2eproto_;
+const ::google::protobuf::EnumDescriptor* PresenceQueryBehavior_descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceQueryBehavior_descriptor_;
+}
+bool PresenceQueryBehavior_IsValid(int value) {
+ switch(value) {
+ case 0:
+ case 1:
+ case 2:
+ return true;
+ default:
+ return false;
+ }
+}
+
+const ::google::protobuf::EnumDescriptor* PresenceAccountStatus_descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceAccountStatus_descriptor_;
+}
+bool PresenceAccountStatus_IsValid(int value) {
+ switch(value) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ return true;
+ default:
+ return false;
+ }
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int RichPresenceKey::kTitleIdFieldNumber;
+const int RichPresenceKey::kStreamFieldNumber;
+const int RichPresenceKey::kLocalizationIdFieldNumber;
+#endif // !_MSC_VER
+
+RichPresenceKey::RichPresenceKey()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.RichPresenceKey)
+}
+
+void RichPresenceKey::InitAsDefaultInstance() {
+}
+
+RichPresenceKey::RichPresenceKey(const RichPresenceKey& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.RichPresenceKey)
+}
+
+void RichPresenceKey::SharedCtor() {
+ _cached_size_ = 0;
+ title_id_ = 0u;
+ stream_ = 0u;
+ localization_id_ = 0u;
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+RichPresenceKey::~RichPresenceKey() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.RichPresenceKey)
+ SharedDtor();
+}
+
+void RichPresenceKey::SharedDtor() {
+ if (this != default_instance_) {
+ }
+}
+
+void RichPresenceKey::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* RichPresenceKey::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return RichPresenceKey_descriptor_;
+}
+
+const RichPresenceKey& RichPresenceKey::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+RichPresenceKey* RichPresenceKey::default_instance_ = NULL;
+
+RichPresenceKey* RichPresenceKey::New() const {
+ return new RichPresenceKey;
+}
+
+void RichPresenceKey::Swap(RichPresenceKey* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata RichPresenceKey::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = RichPresenceKey_descriptor_;
+ metadata.reflection = RichPresenceKey_reflection_;
+ return metadata;
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int PresenceFieldKey::kTitleIdFieldNumber;
+const int PresenceFieldKey::kGroupFieldNumber;
+const int PresenceFieldKey::kFieldFieldNumber;
+const int PresenceFieldKey::kUniqueIdFieldNumber;
+#endif // !_MSC_VER
+
+PresenceFieldKey::PresenceFieldKey()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceFieldKey)
+}
+
+void PresenceFieldKey::InitAsDefaultInstance() {
+}
+
+PresenceFieldKey::PresenceFieldKey(const PresenceFieldKey& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceFieldKey)
+}
+
+void PresenceFieldKey::SharedCtor() {
+ _cached_size_ = 0;
+ title_id_ = 0u;
+ group_ = 0u;
+ field_ = 0u;
+ unique_id_ = GOOGLE_ULONGLONG(0);
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+PresenceFieldKey::~PresenceFieldKey() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceFieldKey)
+ SharedDtor();
+}
+
+void PresenceFieldKey::SharedDtor() {
+ if (this != default_instance_) {
+ }
+}
+
+void PresenceFieldKey::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PresenceFieldKey::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceFieldKey_descriptor_;
+}
+
+const PresenceFieldKey& PresenceFieldKey::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+PresenceFieldKey* PresenceFieldKey::default_instance_ = NULL;
+
+PresenceFieldKey* PresenceFieldKey::New() const {
+ return new PresenceFieldKey;
+}
+
+void PresenceFieldKey::Swap(PresenceFieldKey* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata PresenceFieldKey::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = PresenceFieldKey_descriptor_;
+ metadata.reflection = PresenceFieldKey_reflection_;
+ return metadata;
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int PresenceField::kKeyFieldNumber;
+const int PresenceField::kValueFieldNumber;
+const int PresenceField::kDeletedFieldNumber;
+const int PresenceField::kUpdatedTimeUsFieldNumber;
+#endif // !_MSC_VER
+
+PresenceField::PresenceField()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceField)
+}
+
+void PresenceField::InitAsDefaultInstance() {
+ key_ = const_cast< ::bgs::protocol::presence::v2::PresenceFieldKey*>(&::bgs::protocol::presence::v2::PresenceFieldKey::default_instance());
+ value_ = const_cast< ::bgs::protocol::v2::Variant*>(&::bgs::protocol::v2::Variant::default_instance());
+}
+
+PresenceField::PresenceField(const PresenceField& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceField)
+}
+
+void PresenceField::SharedCtor() {
+ _cached_size_ = 0;
+ key_ = NULL;
+ value_ = NULL;
+ deleted_ = false;
+ updated_time_us_ = GOOGLE_ULONGLONG(0);
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+PresenceField::~PresenceField() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceField)
+ SharedDtor();
+}
+
+void PresenceField::SharedDtor() {
+ if (this != default_instance_) {
+ delete key_;
+ delete value_;
+ }
+}
+
+void PresenceField::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PresenceField::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceField_descriptor_;
+}
+
+const PresenceField& PresenceField::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+PresenceField* PresenceField::default_instance_ = NULL;
+
+PresenceField* PresenceField::New() const {
+ return new PresenceField;
+}
+
+void PresenceField::Swap(PresenceField* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata PresenceField::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = PresenceField_descriptor_;
+ metadata.reflection = PresenceField_reflection_;
+ return metadata;
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int PresenceFieldState::kAccountIdFieldNumber;
+const int PresenceFieldState::kGameAccountFieldNumber;
+const int PresenceFieldState::kFieldsFieldNumber;
+const int PresenceFieldState::kOldestTimeUsFieldNumber;
+#endif // !_MSC_VER
+
+PresenceFieldState::PresenceFieldState()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceFieldState)
+}
+
+void PresenceFieldState::InitAsDefaultInstance() {
+ game_account_ = const_cast< ::bgs::protocol::account::v2::GameAccountHandle*>(&::bgs::protocol::account::v2::GameAccountHandle::default_instance());
+}
+
+PresenceFieldState::PresenceFieldState(const PresenceFieldState& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceFieldState)
+}
+
+void PresenceFieldState::SharedCtor() {
+ _cached_size_ = 0;
+ account_id_ = GOOGLE_ULONGLONG(0);
+ game_account_ = NULL;
+ oldest_time_us_ = GOOGLE_ULONGLONG(0);
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+PresenceFieldState::~PresenceFieldState() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceFieldState)
+ SharedDtor();
+}
+
+void PresenceFieldState::SharedDtor() {
+ if (this != default_instance_) {
+ delete game_account_;
+ }
+}
+
+void PresenceFieldState::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PresenceFieldState::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceFieldState_descriptor_;
+}
+
+const PresenceFieldState& PresenceFieldState::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+PresenceFieldState* PresenceFieldState::default_instance_ = NULL;
+
+PresenceFieldState* PresenceFieldState::New() const {
+ return new PresenceFieldState;
+}
+
+void PresenceFieldState::Swap(PresenceFieldState* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata PresenceFieldState::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = PresenceFieldState_descriptor_;
+ metadata.reflection = PresenceFieldState_reflection_;
+ return metadata;
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int PresenceFieldUpdate::kKeyFieldNumber;
+const int PresenceFieldUpdate::kValueFieldNumber;
+const int PresenceFieldUpdate::kDeleteFieldNumber;
+#endif // !_MSC_VER
+
+PresenceFieldUpdate::PresenceFieldUpdate()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceFieldUpdate)
+}
+
+void PresenceFieldUpdate::InitAsDefaultInstance() {
+ key_ = const_cast< ::bgs::protocol::presence::v2::PresenceFieldKey*>(&::bgs::protocol::presence::v2::PresenceFieldKey::default_instance());
+ value_ = const_cast< ::bgs::protocol::v2::Variant*>(&::bgs::protocol::v2::Variant::default_instance());
+}
+
+PresenceFieldUpdate::PresenceFieldUpdate(const PresenceFieldUpdate& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceFieldUpdate)
+}
+
+void PresenceFieldUpdate::SharedCtor() {
+ _cached_size_ = 0;
+ key_ = NULL;
+ value_ = NULL;
+ delete__ = false;
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+PresenceFieldUpdate::~PresenceFieldUpdate() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceFieldUpdate)
+ SharedDtor();
+}
+
+void PresenceFieldUpdate::SharedDtor() {
+ if (this != default_instance_) {
+ delete key_;
+ delete value_;
+ }
+}
+
+void PresenceFieldUpdate::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PresenceFieldUpdate::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceFieldUpdate_descriptor_;
+}
+
+const PresenceFieldUpdate& PresenceFieldUpdate::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+PresenceFieldUpdate* PresenceFieldUpdate::default_instance_ = NULL;
+
+PresenceFieldUpdate* PresenceFieldUpdate::New() const {
+ return new PresenceFieldUpdate;
+}
+
+void PresenceFieldUpdate::Swap(PresenceFieldUpdate* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata PresenceFieldUpdate::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = PresenceFieldUpdate_descriptor_;
+ metadata.reflection = PresenceFieldUpdate_reflection_;
+ return metadata;
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int PresenceOnlineGameAccount::kGameAccountFieldNumber;
+const int PresenceOnlineGameAccount::kOnlineTimeUsFieldNumber;
+#endif // !_MSC_VER
+
+PresenceOnlineGameAccount::PresenceOnlineGameAccount()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccount)
+}
+
+void PresenceOnlineGameAccount::InitAsDefaultInstance() {
+ game_account_ = const_cast< ::bgs::protocol::account::v2::GameAccountHandle*>(&::bgs::protocol::account::v2::GameAccountHandle::default_instance());
+}
+
+PresenceOnlineGameAccount::PresenceOnlineGameAccount(const PresenceOnlineGameAccount& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccount)
+}
+
+void PresenceOnlineGameAccount::SharedCtor() {
+ _cached_size_ = 0;
+ game_account_ = NULL;
+ online_time_us_ = GOOGLE_ULONGLONG(0);
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+PresenceOnlineGameAccount::~PresenceOnlineGameAccount() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceOnlineGameAccount)
+ SharedDtor();
+}
+
+void PresenceOnlineGameAccount::SharedDtor() {
+ if (this != default_instance_) {
+ delete game_account_;
+ }
+}
+
+void PresenceOnlineGameAccount::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PresenceOnlineGameAccount::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceOnlineGameAccount_descriptor_;
+}
+
+const PresenceOnlineGameAccount& PresenceOnlineGameAccount::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+PresenceOnlineGameAccount* PresenceOnlineGameAccount::default_instance_ = NULL;
+
+PresenceOnlineGameAccount* PresenceOnlineGameAccount::New() const {
+ return new PresenceOnlineGameAccount;
+}
+
+void PresenceOnlineGameAccount::Swap(PresenceOnlineGameAccount* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata PresenceOnlineGameAccount::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = PresenceOnlineGameAccount_descriptor_;
+ metadata.reflection = PresenceOnlineGameAccount_reflection_;
+ return metadata;
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int PresenceOnlineGameAccountFieldValue::kOnlineGameAccountsFieldNumber;
+#endif // !_MSC_VER
+
+PresenceOnlineGameAccountFieldValue::PresenceOnlineGameAccountFieldValue()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue)
+}
+
+void PresenceOnlineGameAccountFieldValue::InitAsDefaultInstance() {
+}
+
+PresenceOnlineGameAccountFieldValue::PresenceOnlineGameAccountFieldValue(const PresenceOnlineGameAccountFieldValue& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue)
+}
+
+void PresenceOnlineGameAccountFieldValue::SharedCtor() {
+ _cached_size_ = 0;
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+PresenceOnlineGameAccountFieldValue::~PresenceOnlineGameAccountFieldValue() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue)
+ SharedDtor();
+}
+
+void PresenceOnlineGameAccountFieldValue::SharedDtor() {
+ if (this != default_instance_) {
+ }
+}
+
+void PresenceOnlineGameAccountFieldValue::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PresenceOnlineGameAccountFieldValue::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceOnlineGameAccountFieldValue_descriptor_;
+}
+
+const PresenceOnlineGameAccountFieldValue& PresenceOnlineGameAccountFieldValue::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+PresenceOnlineGameAccountFieldValue* PresenceOnlineGameAccountFieldValue::default_instance_ = NULL;
+
+PresenceOnlineGameAccountFieldValue* PresenceOnlineGameAccountFieldValue::New() const {
+ return new PresenceOnlineGameAccountFieldValue;
+}
+
+void PresenceOnlineGameAccountFieldValue::Swap(PresenceOnlineGameAccountFieldValue* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata PresenceOnlineGameAccountFieldValue::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = PresenceOnlineGameAccountFieldValue_descriptor_;
+ metadata.reflection = PresenceOnlineGameAccountFieldValue_reflection_;
+ return metadata;
+}
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int PresenceExternalIdentityFieldValue::kUniqueIdFieldNumber;
+const int PresenceExternalIdentityFieldValue::kDisplayIdFieldNumber;
+#endif // !_MSC_VER
+
+PresenceExternalIdentityFieldValue::PresenceExternalIdentityFieldValue()
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue)
+}
+
+void PresenceExternalIdentityFieldValue::InitAsDefaultInstance() {
+}
+
+PresenceExternalIdentityFieldValue::PresenceExternalIdentityFieldValue(const PresenceExternalIdentityFieldValue& from)
+ : ::google::protobuf::Message() {
+ SharedCtor();
+ MergeFrom(from);
+ // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue)
+}
+
+void PresenceExternalIdentityFieldValue::SharedCtor() {
+ ::google::protobuf::internal::GetEmptyString();
+ _cached_size_ = 0;
+ unique_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+ display_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+PresenceExternalIdentityFieldValue::~PresenceExternalIdentityFieldValue() {
+ // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue)
+ SharedDtor();
+}
+
+void PresenceExternalIdentityFieldValue::SharedDtor() {
+ if (unique_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ delete unique_id_;
+ }
+ if (display_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ delete display_id_;
+ }
+ if (this != default_instance_) {
+ }
+}
+
+void PresenceExternalIdentityFieldValue::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PresenceExternalIdentityFieldValue::descriptor() {
+ protobuf_AssignDescriptorsOnce();
+ return PresenceExternalIdentityFieldValue_descriptor_;
+}
+
+const PresenceExternalIdentityFieldValue& PresenceExternalIdentityFieldValue::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ return *default_instance_;
+}
+
+PresenceExternalIdentityFieldValue* PresenceExternalIdentityFieldValue::default_instance_ = NULL;
+
+PresenceExternalIdentityFieldValue* PresenceExternalIdentityFieldValue::New() const {
+ return new PresenceExternalIdentityFieldValue;
+}
+
+void PresenceExternalIdentityFieldValue::Swap(PresenceExternalIdentityFieldValue* other) {
+ if (other != this) {
+ GetReflection()->Swap(this, other);}
+}
+
+::google::protobuf::Metadata PresenceExternalIdentityFieldValue::GetMetadata() const {
+ protobuf_AssignDescriptorsOnce();
+ ::google::protobuf::Metadata metadata;
+ metadata.descriptor = PresenceExternalIdentityFieldValue_descriptor_;
+ metadata.reflection = PresenceExternalIdentityFieldValue_reflection_;
+ return metadata;
+}
+
+// @@protoc_insertion_point(namespace_scope)
+
+} // namespace v2
+} // namespace presence
+} // namespace protocol
+} // namespace bgs
+
+// @@protoc_insertion_point(global_scope)
diff --git a/src/server/proto/Client/api/client/v2/presence_types.pb.h b/src/server/proto/Client/api/client/v2/presence_types.pb.h
new file mode 100644
index 00000000000..d1b3259fd35
--- /dev/null
+++ b/src/server/proto/Client/api/client/v2/presence_types.pb.h
@@ -0,0 +1,1631 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: api/client/v2/presence_types.proto
+
+#ifndef PROTOBUF_api_2fclient_2fv2_2fpresence_5ftypes_2eproto__INCLUDED
+#define PROTOBUF_api_2fclient_2fv2_2fpresence_5ftypes_2eproto__INCLUDED
+
+#include <string>
+
+#include <google/protobuf/stubs/common.h>
+
+#if GOOGLE_PROTOBUF_VERSION < 2006000
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 2006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/generated_enum_reflection.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "api/common/v2/attribute_types.pb.h"
+#include "api/common/v2/game_account_handle.pb.h"
+#include "Define.h" // for TC_PROTO_API
+// @@protoc_insertion_point(includes)
+
+namespace bgs {
+namespace protocol {
+namespace presence {
+namespace v2 {
+
+// Internal implementation detail -- do not call these.
+void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+class RichPresenceKey;
+class PresenceFieldKey;
+class PresenceField;
+class PresenceFieldState;
+class PresenceFieldUpdate;
+class PresenceOnlineGameAccount;
+class PresenceOnlineGameAccountFieldValue;
+class PresenceExternalIdentityFieldValue;
+
+enum PresenceQueryBehavior {
+ BATTLE_NET_ACCOUNT_ONLY = 0,
+ INCLUDE_SAME_GAME_ACCOUNT = 1,
+ INCLUDE_ALL_GAME_ACCOUNTS = 2
+};
+TC_PROTO_API bool PresenceQueryBehavior_IsValid(int value);
+const PresenceQueryBehavior PresenceQueryBehavior_MIN = BATTLE_NET_ACCOUNT_ONLY;
+const PresenceQueryBehavior PresenceQueryBehavior_MAX = INCLUDE_ALL_GAME_ACCOUNTS;
+const int PresenceQueryBehavior_ARRAYSIZE = PresenceQueryBehavior_MAX + 1;
+
+TC_PROTO_API const ::google::protobuf::EnumDescriptor* PresenceQueryBehavior_descriptor();
+inline const ::std::string& PresenceQueryBehavior_Name(PresenceQueryBehavior value) {
+ return ::google::protobuf::internal::NameOfEnum(
+ PresenceQueryBehavior_descriptor(), value);
+}
+inline bool PresenceQueryBehavior_Parse(
+ const ::std::string& name, PresenceQueryBehavior* value) {
+ return ::google::protobuf::internal::ParseNamedEnum<PresenceQueryBehavior>(
+ PresenceQueryBehavior_descriptor(), name, value);
+}
+enum PresenceAccountStatus {
+ OFFLINE = 0,
+ ONLINE = 1,
+ AWAY = 2,
+ DND = 3
+};
+TC_PROTO_API bool PresenceAccountStatus_IsValid(int value);
+const PresenceAccountStatus PresenceAccountStatus_MIN = OFFLINE;
+const PresenceAccountStatus PresenceAccountStatus_MAX = DND;
+const int PresenceAccountStatus_ARRAYSIZE = PresenceAccountStatus_MAX + 1;
+
+TC_PROTO_API const ::google::protobuf::EnumDescriptor* PresenceAccountStatus_descriptor();
+inline const ::std::string& PresenceAccountStatus_Name(PresenceAccountStatus value) {
+ return ::google::protobuf::internal::NameOfEnum(
+ PresenceAccountStatus_descriptor(), value);
+}
+inline bool PresenceAccountStatus_Parse(
+ const ::std::string& name, PresenceAccountStatus* value) {
+ return ::google::protobuf::internal::ParseNamedEnum<PresenceAccountStatus>(
+ PresenceAccountStatus_descriptor(), name, value);
+}
+// ===================================================================
+
+class TC_PROTO_API RichPresenceKey : public ::google::protobuf::Message {
+ public:
+ RichPresenceKey();
+ virtual ~RichPresenceKey();
+
+ RichPresenceKey(const RichPresenceKey& from);
+
+ inline RichPresenceKey& operator=(const RichPresenceKey& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const RichPresenceKey& default_instance();
+
+ void Swap(RichPresenceKey* other);
+
+ // implements Message ----------------------------------------------
+
+ RichPresenceKey* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // optional uint32 title_id = 1;
+ inline bool has_title_id() const;
+ inline void clear_title_id();
+ static const int kTitleIdFieldNumber = 1;
+ inline ::google::protobuf::uint32 title_id() const;
+ inline void set_title_id(::google::protobuf::uint32 value);
+
+ // optional fixed32 stream = 2;
+ inline bool has_stream() const;
+ inline void clear_stream();
+ static const int kStreamFieldNumber = 2;
+ inline ::google::protobuf::uint32 stream() const;
+ inline void set_stream(::google::protobuf::uint32 value);
+
+ // optional uint32 localization_id = 3;
+ inline bool has_localization_id() const;
+ inline void clear_localization_id();
+ static const int kLocalizationIdFieldNumber = 3;
+ inline ::google::protobuf::uint32 localization_id() const;
+ inline void set_localization_id(::google::protobuf::uint32 value);
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.RichPresenceKey)
+ private:
+ inline void set_has_title_id();
+ inline void clear_has_title_id();
+ inline void set_has_stream();
+ inline void clear_has_stream();
+ inline void set_has_localization_id();
+ inline void clear_has_localization_id();
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::google::protobuf::uint32 title_id_;
+ ::google::protobuf::uint32 stream_;
+ ::google::protobuf::uint32 localization_id_;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static RichPresenceKey* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class TC_PROTO_API PresenceFieldKey : public ::google::protobuf::Message {
+ public:
+ PresenceFieldKey();
+ virtual ~PresenceFieldKey();
+
+ PresenceFieldKey(const PresenceFieldKey& from);
+
+ inline PresenceFieldKey& operator=(const PresenceFieldKey& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const PresenceFieldKey& default_instance();
+
+ void Swap(PresenceFieldKey* other);
+
+ // implements Message ----------------------------------------------
+
+ PresenceFieldKey* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // optional uint32 title_id = 1;
+ inline bool has_title_id() const;
+ inline void clear_title_id();
+ static const int kTitleIdFieldNumber = 1;
+ inline ::google::protobuf::uint32 title_id() const;
+ inline void set_title_id(::google::protobuf::uint32 value);
+
+ // optional uint32 group = 2;
+ inline bool has_group() const;
+ inline void clear_group();
+ static const int kGroupFieldNumber = 2;
+ inline ::google::protobuf::uint32 group() const;
+ inline void set_group(::google::protobuf::uint32 value);
+
+ // optional uint32 field = 3;
+ inline bool has_field() const;
+ inline void clear_field();
+ static const int kFieldFieldNumber = 3;
+ inline ::google::protobuf::uint32 field() const;
+ inline void set_field(::google::protobuf::uint32 value);
+
+ // optional uint64 unique_id = 4;
+ inline bool has_unique_id() const;
+ inline void clear_unique_id();
+ static const int kUniqueIdFieldNumber = 4;
+ inline ::google::protobuf::uint64 unique_id() const;
+ inline void set_unique_id(::google::protobuf::uint64 value);
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceFieldKey)
+ private:
+ inline void set_has_title_id();
+ inline void clear_has_title_id();
+ inline void set_has_group();
+ inline void clear_has_group();
+ inline void set_has_field();
+ inline void clear_has_field();
+ inline void set_has_unique_id();
+ inline void clear_has_unique_id();
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::google::protobuf::uint32 title_id_;
+ ::google::protobuf::uint32 group_;
+ ::google::protobuf::uint64 unique_id_;
+ ::google::protobuf::uint32 field_;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static PresenceFieldKey* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class TC_PROTO_API PresenceField : public ::google::protobuf::Message {
+ public:
+ PresenceField();
+ virtual ~PresenceField();
+
+ PresenceField(const PresenceField& from);
+
+ inline PresenceField& operator=(const PresenceField& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const PresenceField& default_instance();
+
+ void Swap(PresenceField* other);
+
+ // implements Message ----------------------------------------------
+
+ PresenceField* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1;
+ inline bool has_key() const;
+ inline void clear_key();
+ static const int kKeyFieldNumber = 1;
+ inline const ::bgs::protocol::presence::v2::PresenceFieldKey& key() const;
+ inline ::bgs::protocol::presence::v2::PresenceFieldKey* mutable_key();
+ inline ::bgs::protocol::presence::v2::PresenceFieldKey* release_key();
+ inline void set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key);
+
+ // optional .bgs.protocol.v2.Variant value = 2;
+ inline bool has_value() const;
+ inline void clear_value();
+ static const int kValueFieldNumber = 2;
+ inline const ::bgs::protocol::v2::Variant& value() const;
+ inline ::bgs::protocol::v2::Variant* mutable_value();
+ inline ::bgs::protocol::v2::Variant* release_value();
+ inline void set_allocated_value(::bgs::protocol::v2::Variant* value);
+
+ // optional bool deleted = 3;
+ inline bool has_deleted() const;
+ inline void clear_deleted();
+ static const int kDeletedFieldNumber = 3;
+ inline bool deleted() const;
+ inline void set_deleted(bool value);
+
+ // optional uint64 updated_time_us = 4;
+ inline bool has_updated_time_us() const;
+ inline void clear_updated_time_us();
+ static const int kUpdatedTimeUsFieldNumber = 4;
+ inline ::google::protobuf::uint64 updated_time_us() const;
+ inline void set_updated_time_us(::google::protobuf::uint64 value);
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceField)
+ private:
+ inline void set_has_key();
+ inline void clear_has_key();
+ inline void set_has_value();
+ inline void clear_has_value();
+ inline void set_has_deleted();
+ inline void clear_has_deleted();
+ inline void set_has_updated_time_us();
+ inline void clear_has_updated_time_us();
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::bgs::protocol::presence::v2::PresenceFieldKey* key_;
+ ::bgs::protocol::v2::Variant* value_;
+ ::google::protobuf::uint64 updated_time_us_;
+ bool deleted_;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static PresenceField* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class TC_PROTO_API PresenceFieldState : public ::google::protobuf::Message {
+ public:
+ PresenceFieldState();
+ virtual ~PresenceFieldState();
+
+ PresenceFieldState(const PresenceFieldState& from);
+
+ inline PresenceFieldState& operator=(const PresenceFieldState& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const PresenceFieldState& default_instance();
+
+ void Swap(PresenceFieldState* other);
+
+ // implements Message ----------------------------------------------
+
+ PresenceFieldState* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // optional uint64 account_id = 1;
+ inline bool has_account_id() const;
+ inline void clear_account_id();
+ static const int kAccountIdFieldNumber = 1;
+ inline ::google::protobuf::uint64 account_id() const;
+ inline void set_account_id(::google::protobuf::uint64 value);
+
+ // optional .bgs.protocol.account.v2.GameAccountHandle game_account = 2;
+ inline bool has_game_account() const;
+ inline void clear_game_account();
+ static const int kGameAccountFieldNumber = 2;
+ inline const ::bgs::protocol::account::v2::GameAccountHandle& game_account() const;
+ inline ::bgs::protocol::account::v2::GameAccountHandle* mutable_game_account();
+ inline ::bgs::protocol::account::v2::GameAccountHandle* release_game_account();
+ inline void set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account);
+
+ // repeated .bgs.protocol.presence.v2.PresenceField fields = 3;
+ inline int fields_size() const;
+ inline void clear_fields();
+ static const int kFieldsFieldNumber = 3;
+ inline const ::bgs::protocol::presence::v2::PresenceField& fields(int index) const;
+ inline ::bgs::protocol::presence::v2::PresenceField* mutable_fields(int index);
+ inline ::bgs::protocol::presence::v2::PresenceField* add_fields();
+ inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >&
+ fields() const;
+ inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >*
+ mutable_fields();
+
+ // optional uint64 oldest_time_us = 4;
+ inline bool has_oldest_time_us() const;
+ inline void clear_oldest_time_us();
+ static const int kOldestTimeUsFieldNumber = 4;
+ inline ::google::protobuf::uint64 oldest_time_us() const;
+ inline void set_oldest_time_us(::google::protobuf::uint64 value);
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceFieldState)
+ private:
+ inline void set_has_account_id();
+ inline void clear_has_account_id();
+ inline void set_has_game_account();
+ inline void clear_has_game_account();
+ inline void set_has_oldest_time_us();
+ inline void clear_has_oldest_time_us();
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::google::protobuf::uint64 account_id_;
+ ::bgs::protocol::account::v2::GameAccountHandle* game_account_;
+ ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField > fields_;
+ ::google::protobuf::uint64 oldest_time_us_;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static PresenceFieldState* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class TC_PROTO_API PresenceFieldUpdate : public ::google::protobuf::Message {
+ public:
+ PresenceFieldUpdate();
+ virtual ~PresenceFieldUpdate();
+
+ PresenceFieldUpdate(const PresenceFieldUpdate& from);
+
+ inline PresenceFieldUpdate& operator=(const PresenceFieldUpdate& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const PresenceFieldUpdate& default_instance();
+
+ void Swap(PresenceFieldUpdate* other);
+
+ // implements Message ----------------------------------------------
+
+ PresenceFieldUpdate* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1;
+ inline bool has_key() const;
+ inline void clear_key();
+ static const int kKeyFieldNumber = 1;
+ inline const ::bgs::protocol::presence::v2::PresenceFieldKey& key() const;
+ inline ::bgs::protocol::presence::v2::PresenceFieldKey* mutable_key();
+ inline ::bgs::protocol::presence::v2::PresenceFieldKey* release_key();
+ inline void set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key);
+
+ // optional .bgs.protocol.v2.Variant value = 2;
+ inline bool has_value() const;
+ inline void clear_value();
+ static const int kValueFieldNumber = 2;
+ inline const ::bgs::protocol::v2::Variant& value() const;
+ inline ::bgs::protocol::v2::Variant* mutable_value();
+ inline ::bgs::protocol::v2::Variant* release_value();
+ inline void set_allocated_value(::bgs::protocol::v2::Variant* value);
+
+ // optional bool delete = 3;
+ inline bool has_delete_() const;
+ inline void clear_delete_();
+ static const int kDeleteFieldNumber = 3;
+ inline bool delete_() const;
+ inline void set_delete_(bool value);
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceFieldUpdate)
+ private:
+ inline void set_has_key();
+ inline void clear_has_key();
+ inline void set_has_value();
+ inline void clear_has_value();
+ inline void set_has_delete_();
+ inline void clear_has_delete_();
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::bgs::protocol::presence::v2::PresenceFieldKey* key_;
+ ::bgs::protocol::v2::Variant* value_;
+ bool delete__;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static PresenceFieldUpdate* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class TC_PROTO_API PresenceOnlineGameAccount : public ::google::protobuf::Message {
+ public:
+ PresenceOnlineGameAccount();
+ virtual ~PresenceOnlineGameAccount();
+
+ PresenceOnlineGameAccount(const PresenceOnlineGameAccount& from);
+
+ inline PresenceOnlineGameAccount& operator=(const PresenceOnlineGameAccount& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const PresenceOnlineGameAccount& default_instance();
+
+ void Swap(PresenceOnlineGameAccount* other);
+
+ // implements Message ----------------------------------------------
+
+ PresenceOnlineGameAccount* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // optional .bgs.protocol.account.v2.GameAccountHandle game_account = 1;
+ inline bool has_game_account() const;
+ inline void clear_game_account();
+ static const int kGameAccountFieldNumber = 1;
+ inline const ::bgs::protocol::account::v2::GameAccountHandle& game_account() const;
+ inline ::bgs::protocol::account::v2::GameAccountHandle* mutable_game_account();
+ inline ::bgs::protocol::account::v2::GameAccountHandle* release_game_account();
+ inline void set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account);
+
+ // optional uint64 online_time_us = 2;
+ inline bool has_online_time_us() const;
+ inline void clear_online_time_us();
+ static const int kOnlineTimeUsFieldNumber = 2;
+ inline ::google::protobuf::uint64 online_time_us() const;
+ inline void set_online_time_us(::google::protobuf::uint64 value);
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceOnlineGameAccount)
+ private:
+ inline void set_has_game_account();
+ inline void clear_has_game_account();
+ inline void set_has_online_time_us();
+ inline void clear_has_online_time_us();
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::bgs::protocol::account::v2::GameAccountHandle* game_account_;
+ ::google::protobuf::uint64 online_time_us_;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static PresenceOnlineGameAccount* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class TC_PROTO_API PresenceOnlineGameAccountFieldValue : public ::google::protobuf::Message {
+ public:
+ PresenceOnlineGameAccountFieldValue();
+ virtual ~PresenceOnlineGameAccountFieldValue();
+
+ PresenceOnlineGameAccountFieldValue(const PresenceOnlineGameAccountFieldValue& from);
+
+ inline PresenceOnlineGameAccountFieldValue& operator=(const PresenceOnlineGameAccountFieldValue& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const PresenceOnlineGameAccountFieldValue& default_instance();
+
+ void Swap(PresenceOnlineGameAccountFieldValue* other);
+
+ // implements Message ----------------------------------------------
+
+ PresenceOnlineGameAccountFieldValue* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // repeated .bgs.protocol.presence.v2.PresenceOnlineGameAccount online_game_accounts = 1;
+ inline int online_game_accounts_size() const;
+ inline void clear_online_game_accounts();
+ static const int kOnlineGameAccountsFieldNumber = 1;
+ inline const ::bgs::protocol::presence::v2::PresenceOnlineGameAccount& online_game_accounts(int index) const;
+ inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* mutable_online_game_accounts(int index);
+ inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* add_online_game_accounts();
+ inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >&
+ online_game_accounts() const;
+ inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >*
+ mutable_online_game_accounts();
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue)
+ private:
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount > online_game_accounts_;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static PresenceOnlineGameAccountFieldValue* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class TC_PROTO_API PresenceExternalIdentityFieldValue : public ::google::protobuf::Message {
+ public:
+ PresenceExternalIdentityFieldValue();
+ virtual ~PresenceExternalIdentityFieldValue();
+
+ PresenceExternalIdentityFieldValue(const PresenceExternalIdentityFieldValue& from);
+
+ inline PresenceExternalIdentityFieldValue& operator=(const PresenceExternalIdentityFieldValue& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+ return _unknown_fields_;
+ }
+
+ inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+ return &_unknown_fields_;
+ }
+
+ static const ::google::protobuf::Descriptor* descriptor();
+ static const PresenceExternalIdentityFieldValue& default_instance();
+
+ void Swap(PresenceExternalIdentityFieldValue* other);
+
+ // implements Message ----------------------------------------------
+
+ PresenceExternalIdentityFieldValue* New() const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+ ::google::protobuf::Metadata GetMetadata() const;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ // optional string unique_id = 1;
+ inline bool has_unique_id() const;
+ inline void clear_unique_id();
+ static const int kUniqueIdFieldNumber = 1;
+ inline const ::std::string& unique_id() const;
+ inline void set_unique_id(const ::std::string& value);
+ inline void set_unique_id(const char* value);
+ inline void set_unique_id(const char* value, size_t size);
+ inline ::std::string* mutable_unique_id();
+ inline ::std::string* release_unique_id();
+ inline void set_allocated_unique_id(::std::string* unique_id);
+
+ // optional string display_id = 2;
+ inline bool has_display_id() const;
+ inline void clear_display_id();
+ static const int kDisplayIdFieldNumber = 2;
+ inline const ::std::string& display_id() const;
+ inline void set_display_id(const ::std::string& value);
+ inline void set_display_id(const char* value);
+ inline void set_display_id(const char* value, size_t size);
+ inline ::std::string* mutable_display_id();
+ inline ::std::string* release_display_id();
+ inline void set_allocated_display_id(::std::string* display_id);
+
+ // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue)
+ private:
+ inline void set_has_unique_id();
+ inline void clear_has_unique_id();
+ inline void set_has_display_id();
+ inline void clear_has_display_id();
+
+ ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+ ::google::protobuf::uint32 _has_bits_[1];
+ mutable int _cached_size_;
+ ::std::string* unique_id_;
+ ::std::string* display_id_;
+ friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+ friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto();
+
+ void InitAsDefaultInstance();
+ static PresenceExternalIdentityFieldValue* default_instance_;
+};
+// ===================================================================
+
+// ===================================================================
+
+// ===================================================================
+
+// RichPresenceKey
+
+// optional uint32 title_id = 1;
+inline bool RichPresenceKey::has_title_id() const {
+ return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void RichPresenceKey::set_has_title_id() {
+ _has_bits_[0] |= 0x00000001u;
+}
+inline void RichPresenceKey::clear_has_title_id() {
+ _has_bits_[0] &= ~0x00000001u;
+}
+inline void RichPresenceKey::clear_title_id() {
+ title_id_ = 0u;
+ clear_has_title_id();
+}
+inline ::google::protobuf::uint32 RichPresenceKey::title_id() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.RichPresenceKey.title_id)
+ return title_id_;
+}
+inline void RichPresenceKey::set_title_id(::google::protobuf::uint32 value) {
+ set_has_title_id();
+ title_id_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.RichPresenceKey.title_id)
+}
+
+// optional fixed32 stream = 2;
+inline bool RichPresenceKey::has_stream() const {
+ return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void RichPresenceKey::set_has_stream() {
+ _has_bits_[0] |= 0x00000002u;
+}
+inline void RichPresenceKey::clear_has_stream() {
+ _has_bits_[0] &= ~0x00000002u;
+}
+inline void RichPresenceKey::clear_stream() {
+ stream_ = 0u;
+ clear_has_stream();
+}
+inline ::google::protobuf::uint32 RichPresenceKey::stream() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.RichPresenceKey.stream)
+ return stream_;
+}
+inline void RichPresenceKey::set_stream(::google::protobuf::uint32 value) {
+ set_has_stream();
+ stream_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.RichPresenceKey.stream)
+}
+
+// optional uint32 localization_id = 3;
+inline bool RichPresenceKey::has_localization_id() const {
+ return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void RichPresenceKey::set_has_localization_id() {
+ _has_bits_[0] |= 0x00000004u;
+}
+inline void RichPresenceKey::clear_has_localization_id() {
+ _has_bits_[0] &= ~0x00000004u;
+}
+inline void RichPresenceKey::clear_localization_id() {
+ localization_id_ = 0u;
+ clear_has_localization_id();
+}
+inline ::google::protobuf::uint32 RichPresenceKey::localization_id() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.RichPresenceKey.localization_id)
+ return localization_id_;
+}
+inline void RichPresenceKey::set_localization_id(::google::protobuf::uint32 value) {
+ set_has_localization_id();
+ localization_id_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.RichPresenceKey.localization_id)
+}
+
+// -------------------------------------------------------------------
+
+// PresenceFieldKey
+
+// optional uint32 title_id = 1;
+inline bool PresenceFieldKey::has_title_id() const {
+ return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void PresenceFieldKey::set_has_title_id() {
+ _has_bits_[0] |= 0x00000001u;
+}
+inline void PresenceFieldKey::clear_has_title_id() {
+ _has_bits_[0] &= ~0x00000001u;
+}
+inline void PresenceFieldKey::clear_title_id() {
+ title_id_ = 0u;
+ clear_has_title_id();
+}
+inline ::google::protobuf::uint32 PresenceFieldKey::title_id() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.title_id)
+ return title_id_;
+}
+inline void PresenceFieldKey::set_title_id(::google::protobuf::uint32 value) {
+ set_has_title_id();
+ title_id_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.title_id)
+}
+
+// optional uint32 group = 2;
+inline bool PresenceFieldKey::has_group() const {
+ return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void PresenceFieldKey::set_has_group() {
+ _has_bits_[0] |= 0x00000002u;
+}
+inline void PresenceFieldKey::clear_has_group() {
+ _has_bits_[0] &= ~0x00000002u;
+}
+inline void PresenceFieldKey::clear_group() {
+ group_ = 0u;
+ clear_has_group();
+}
+inline ::google::protobuf::uint32 PresenceFieldKey::group() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.group)
+ return group_;
+}
+inline void PresenceFieldKey::set_group(::google::protobuf::uint32 value) {
+ set_has_group();
+ group_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.group)
+}
+
+// optional uint32 field = 3;
+inline bool PresenceFieldKey::has_field() const {
+ return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void PresenceFieldKey::set_has_field() {
+ _has_bits_[0] |= 0x00000004u;
+}
+inline void PresenceFieldKey::clear_has_field() {
+ _has_bits_[0] &= ~0x00000004u;
+}
+inline void PresenceFieldKey::clear_field() {
+ field_ = 0u;
+ clear_has_field();
+}
+inline ::google::protobuf::uint32 PresenceFieldKey::field() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.field)
+ return field_;
+}
+inline void PresenceFieldKey::set_field(::google::protobuf::uint32 value) {
+ set_has_field();
+ field_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.field)
+}
+
+// optional uint64 unique_id = 4;
+inline bool PresenceFieldKey::has_unique_id() const {
+ return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void PresenceFieldKey::set_has_unique_id() {
+ _has_bits_[0] |= 0x00000008u;
+}
+inline void PresenceFieldKey::clear_has_unique_id() {
+ _has_bits_[0] &= ~0x00000008u;
+}
+inline void PresenceFieldKey::clear_unique_id() {
+ unique_id_ = GOOGLE_ULONGLONG(0);
+ clear_has_unique_id();
+}
+inline ::google::protobuf::uint64 PresenceFieldKey::unique_id() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.unique_id)
+ return unique_id_;
+}
+inline void PresenceFieldKey::set_unique_id(::google::protobuf::uint64 value) {
+ set_has_unique_id();
+ unique_id_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.unique_id)
+}
+
+// -------------------------------------------------------------------
+
+// PresenceField
+
+// optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1;
+inline bool PresenceField::has_key() const {
+ return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void PresenceField::set_has_key() {
+ _has_bits_[0] |= 0x00000001u;
+}
+inline void PresenceField::clear_has_key() {
+ _has_bits_[0] &= ~0x00000001u;
+}
+inline void PresenceField::clear_key() {
+ if (key_ != NULL) key_->::bgs::protocol::presence::v2::PresenceFieldKey::Clear();
+ clear_has_key();
+}
+inline const ::bgs::protocol::presence::v2::PresenceFieldKey& PresenceField::key() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.key)
+ return key_ != NULL ? *key_ : *default_instance_->key_;
+}
+inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceField::mutable_key() {
+ set_has_key();
+ if (key_ == NULL) key_ = new ::bgs::protocol::presence::v2::PresenceFieldKey;
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceField.key)
+ return key_;
+}
+inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceField::release_key() {
+ clear_has_key();
+ ::bgs::protocol::presence::v2::PresenceFieldKey* temp = key_;
+ key_ = NULL;
+ return temp;
+}
+inline void PresenceField::set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key) {
+ delete key_;
+ key_ = key;
+ if (key) {
+ set_has_key();
+ } else {
+ clear_has_key();
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceField.key)
+}
+
+// optional .bgs.protocol.v2.Variant value = 2;
+inline bool PresenceField::has_value() const {
+ return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void PresenceField::set_has_value() {
+ _has_bits_[0] |= 0x00000002u;
+}
+inline void PresenceField::clear_has_value() {
+ _has_bits_[0] &= ~0x00000002u;
+}
+inline void PresenceField::clear_value() {
+ if (value_ != NULL) value_->::bgs::protocol::v2::Variant::Clear();
+ clear_has_value();
+}
+inline const ::bgs::protocol::v2::Variant& PresenceField::value() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.value)
+ return value_ != NULL ? *value_ : *default_instance_->value_;
+}
+inline ::bgs::protocol::v2::Variant* PresenceField::mutable_value() {
+ set_has_value();
+ if (value_ == NULL) value_ = new ::bgs::protocol::v2::Variant;
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceField.value)
+ return value_;
+}
+inline ::bgs::protocol::v2::Variant* PresenceField::release_value() {
+ clear_has_value();
+ ::bgs::protocol::v2::Variant* temp = value_;
+ value_ = NULL;
+ return temp;
+}
+inline void PresenceField::set_allocated_value(::bgs::protocol::v2::Variant* value) {
+ delete value_;
+ value_ = value;
+ if (value) {
+ set_has_value();
+ } else {
+ clear_has_value();
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceField.value)
+}
+
+// optional bool deleted = 3;
+inline bool PresenceField::has_deleted() const {
+ return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void PresenceField::set_has_deleted() {
+ _has_bits_[0] |= 0x00000004u;
+}
+inline void PresenceField::clear_has_deleted() {
+ _has_bits_[0] &= ~0x00000004u;
+}
+inline void PresenceField::clear_deleted() {
+ deleted_ = false;
+ clear_has_deleted();
+}
+inline bool PresenceField::deleted() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.deleted)
+ return deleted_;
+}
+inline void PresenceField::set_deleted(bool value) {
+ set_has_deleted();
+ deleted_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceField.deleted)
+}
+
+// optional uint64 updated_time_us = 4;
+inline bool PresenceField::has_updated_time_us() const {
+ return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void PresenceField::set_has_updated_time_us() {
+ _has_bits_[0] |= 0x00000008u;
+}
+inline void PresenceField::clear_has_updated_time_us() {
+ _has_bits_[0] &= ~0x00000008u;
+}
+inline void PresenceField::clear_updated_time_us() {
+ updated_time_us_ = GOOGLE_ULONGLONG(0);
+ clear_has_updated_time_us();
+}
+inline ::google::protobuf::uint64 PresenceField::updated_time_us() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.updated_time_us)
+ return updated_time_us_;
+}
+inline void PresenceField::set_updated_time_us(::google::protobuf::uint64 value) {
+ set_has_updated_time_us();
+ updated_time_us_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceField.updated_time_us)
+}
+
+// -------------------------------------------------------------------
+
+// PresenceFieldState
+
+// optional uint64 account_id = 1;
+inline bool PresenceFieldState::has_account_id() const {
+ return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void PresenceFieldState::set_has_account_id() {
+ _has_bits_[0] |= 0x00000001u;
+}
+inline void PresenceFieldState::clear_has_account_id() {
+ _has_bits_[0] &= ~0x00000001u;
+}
+inline void PresenceFieldState::clear_account_id() {
+ account_id_ = GOOGLE_ULONGLONG(0);
+ clear_has_account_id();
+}
+inline ::google::protobuf::uint64 PresenceFieldState::account_id() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.account_id)
+ return account_id_;
+}
+inline void PresenceFieldState::set_account_id(::google::protobuf::uint64 value) {
+ set_has_account_id();
+ account_id_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldState.account_id)
+}
+
+// optional .bgs.protocol.account.v2.GameAccountHandle game_account = 2;
+inline bool PresenceFieldState::has_game_account() const {
+ return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void PresenceFieldState::set_has_game_account() {
+ _has_bits_[0] |= 0x00000002u;
+}
+inline void PresenceFieldState::clear_has_game_account() {
+ _has_bits_[0] &= ~0x00000002u;
+}
+inline void PresenceFieldState::clear_game_account() {
+ if (game_account_ != NULL) game_account_->::bgs::protocol::account::v2::GameAccountHandle::Clear();
+ clear_has_game_account();
+}
+inline const ::bgs::protocol::account::v2::GameAccountHandle& PresenceFieldState::game_account() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.game_account)
+ return game_account_ != NULL ? *game_account_ : *default_instance_->game_account_;
+}
+inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceFieldState::mutable_game_account() {
+ set_has_game_account();
+ if (game_account_ == NULL) game_account_ = new ::bgs::protocol::account::v2::GameAccountHandle;
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldState.game_account)
+ return game_account_;
+}
+inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceFieldState::release_game_account() {
+ clear_has_game_account();
+ ::bgs::protocol::account::v2::GameAccountHandle* temp = game_account_;
+ game_account_ = NULL;
+ return temp;
+}
+inline void PresenceFieldState::set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account) {
+ delete game_account_;
+ game_account_ = game_account;
+ if (game_account) {
+ set_has_game_account();
+ } else {
+ clear_has_game_account();
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceFieldState.game_account)
+}
+
+// repeated .bgs.protocol.presence.v2.PresenceField fields = 3;
+inline int PresenceFieldState::fields_size() const {
+ return fields_.size();
+}
+inline void PresenceFieldState::clear_fields() {
+ fields_.Clear();
+}
+inline const ::bgs::protocol::presence::v2::PresenceField& PresenceFieldState::fields(int index) const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.fields)
+ return fields_.Get(index);
+}
+inline ::bgs::protocol::presence::v2::PresenceField* PresenceFieldState::mutable_fields(int index) {
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldState.fields)
+ return fields_.Mutable(index);
+}
+inline ::bgs::protocol::presence::v2::PresenceField* PresenceFieldState::add_fields() {
+ // @@protoc_insertion_point(field_add:bgs.protocol.presence.v2.PresenceFieldState.fields)
+ return fields_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >&
+PresenceFieldState::fields() const {
+ // @@protoc_insertion_point(field_list:bgs.protocol.presence.v2.PresenceFieldState.fields)
+ return fields_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >*
+PresenceFieldState::mutable_fields() {
+ // @@protoc_insertion_point(field_mutable_list:bgs.protocol.presence.v2.PresenceFieldState.fields)
+ return &fields_;
+}
+
+// optional uint64 oldest_time_us = 4;
+inline bool PresenceFieldState::has_oldest_time_us() const {
+ return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void PresenceFieldState::set_has_oldest_time_us() {
+ _has_bits_[0] |= 0x00000008u;
+}
+inline void PresenceFieldState::clear_has_oldest_time_us() {
+ _has_bits_[0] &= ~0x00000008u;
+}
+inline void PresenceFieldState::clear_oldest_time_us() {
+ oldest_time_us_ = GOOGLE_ULONGLONG(0);
+ clear_has_oldest_time_us();
+}
+inline ::google::protobuf::uint64 PresenceFieldState::oldest_time_us() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.oldest_time_us)
+ return oldest_time_us_;
+}
+inline void PresenceFieldState::set_oldest_time_us(::google::protobuf::uint64 value) {
+ set_has_oldest_time_us();
+ oldest_time_us_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldState.oldest_time_us)
+}
+
+// -------------------------------------------------------------------
+
+// PresenceFieldUpdate
+
+// optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1;
+inline bool PresenceFieldUpdate::has_key() const {
+ return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void PresenceFieldUpdate::set_has_key() {
+ _has_bits_[0] |= 0x00000001u;
+}
+inline void PresenceFieldUpdate::clear_has_key() {
+ _has_bits_[0] &= ~0x00000001u;
+}
+inline void PresenceFieldUpdate::clear_key() {
+ if (key_ != NULL) key_->::bgs::protocol::presence::v2::PresenceFieldKey::Clear();
+ clear_has_key();
+}
+inline const ::bgs::protocol::presence::v2::PresenceFieldKey& PresenceFieldUpdate::key() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldUpdate.key)
+ return key_ != NULL ? *key_ : *default_instance_->key_;
+}
+inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceFieldUpdate::mutable_key() {
+ set_has_key();
+ if (key_ == NULL) key_ = new ::bgs::protocol::presence::v2::PresenceFieldKey;
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldUpdate.key)
+ return key_;
+}
+inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceFieldUpdate::release_key() {
+ clear_has_key();
+ ::bgs::protocol::presence::v2::PresenceFieldKey* temp = key_;
+ key_ = NULL;
+ return temp;
+}
+inline void PresenceFieldUpdate::set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key) {
+ delete key_;
+ key_ = key;
+ if (key) {
+ set_has_key();
+ } else {
+ clear_has_key();
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceFieldUpdate.key)
+}
+
+// optional .bgs.protocol.v2.Variant value = 2;
+inline bool PresenceFieldUpdate::has_value() const {
+ return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void PresenceFieldUpdate::set_has_value() {
+ _has_bits_[0] |= 0x00000002u;
+}
+inline void PresenceFieldUpdate::clear_has_value() {
+ _has_bits_[0] &= ~0x00000002u;
+}
+inline void PresenceFieldUpdate::clear_value() {
+ if (value_ != NULL) value_->::bgs::protocol::v2::Variant::Clear();
+ clear_has_value();
+}
+inline const ::bgs::protocol::v2::Variant& PresenceFieldUpdate::value() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldUpdate.value)
+ return value_ != NULL ? *value_ : *default_instance_->value_;
+}
+inline ::bgs::protocol::v2::Variant* PresenceFieldUpdate::mutable_value() {
+ set_has_value();
+ if (value_ == NULL) value_ = new ::bgs::protocol::v2::Variant;
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldUpdate.value)
+ return value_;
+}
+inline ::bgs::protocol::v2::Variant* PresenceFieldUpdate::release_value() {
+ clear_has_value();
+ ::bgs::protocol::v2::Variant* temp = value_;
+ value_ = NULL;
+ return temp;
+}
+inline void PresenceFieldUpdate::set_allocated_value(::bgs::protocol::v2::Variant* value) {
+ delete value_;
+ value_ = value;
+ if (value) {
+ set_has_value();
+ } else {
+ clear_has_value();
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceFieldUpdate.value)
+}
+
+// optional bool delete = 3;
+inline bool PresenceFieldUpdate::has_delete_() const {
+ return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void PresenceFieldUpdate::set_has_delete_() {
+ _has_bits_[0] |= 0x00000004u;
+}
+inline void PresenceFieldUpdate::clear_has_delete_() {
+ _has_bits_[0] &= ~0x00000004u;
+}
+inline void PresenceFieldUpdate::clear_delete_() {
+ delete__ = false;
+ clear_has_delete_();
+}
+inline bool PresenceFieldUpdate::delete_() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldUpdate.delete)
+ return delete__;
+}
+inline void PresenceFieldUpdate::set_delete_(bool value) {
+ set_has_delete_();
+ delete__ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldUpdate.delete)
+}
+
+// -------------------------------------------------------------------
+
+// PresenceOnlineGameAccount
+
+// optional .bgs.protocol.account.v2.GameAccountHandle game_account = 1;
+inline bool PresenceOnlineGameAccount::has_game_account() const {
+ return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void PresenceOnlineGameAccount::set_has_game_account() {
+ _has_bits_[0] |= 0x00000001u;
+}
+inline void PresenceOnlineGameAccount::clear_has_game_account() {
+ _has_bits_[0] &= ~0x00000001u;
+}
+inline void PresenceOnlineGameAccount::clear_game_account() {
+ if (game_account_ != NULL) game_account_->::bgs::protocol::account::v2::GameAccountHandle::Clear();
+ clear_has_game_account();
+}
+inline const ::bgs::protocol::account::v2::GameAccountHandle& PresenceOnlineGameAccount::game_account() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceOnlineGameAccount.game_account)
+ return game_account_ != NULL ? *game_account_ : *default_instance_->game_account_;
+}
+inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceOnlineGameAccount::mutable_game_account() {
+ set_has_game_account();
+ if (game_account_ == NULL) game_account_ = new ::bgs::protocol::account::v2::GameAccountHandle;
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceOnlineGameAccount.game_account)
+ return game_account_;
+}
+inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceOnlineGameAccount::release_game_account() {
+ clear_has_game_account();
+ ::bgs::protocol::account::v2::GameAccountHandle* temp = game_account_;
+ game_account_ = NULL;
+ return temp;
+}
+inline void PresenceOnlineGameAccount::set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account) {
+ delete game_account_;
+ game_account_ = game_account;
+ if (game_account) {
+ set_has_game_account();
+ } else {
+ clear_has_game_account();
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceOnlineGameAccount.game_account)
+}
+
+// optional uint64 online_time_us = 2;
+inline bool PresenceOnlineGameAccount::has_online_time_us() const {
+ return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void PresenceOnlineGameAccount::set_has_online_time_us() {
+ _has_bits_[0] |= 0x00000002u;
+}
+inline void PresenceOnlineGameAccount::clear_has_online_time_us() {
+ _has_bits_[0] &= ~0x00000002u;
+}
+inline void PresenceOnlineGameAccount::clear_online_time_us() {
+ online_time_us_ = GOOGLE_ULONGLONG(0);
+ clear_has_online_time_us();
+}
+inline ::google::protobuf::uint64 PresenceOnlineGameAccount::online_time_us() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceOnlineGameAccount.online_time_us)
+ return online_time_us_;
+}
+inline void PresenceOnlineGameAccount::set_online_time_us(::google::protobuf::uint64 value) {
+ set_has_online_time_us();
+ online_time_us_ = value;
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceOnlineGameAccount.online_time_us)
+}
+
+// -------------------------------------------------------------------
+
+// PresenceOnlineGameAccountFieldValue
+
+// repeated .bgs.protocol.presence.v2.PresenceOnlineGameAccount online_game_accounts = 1;
+inline int PresenceOnlineGameAccountFieldValue::online_game_accounts_size() const {
+ return online_game_accounts_.size();
+}
+inline void PresenceOnlineGameAccountFieldValue::clear_online_game_accounts() {
+ online_game_accounts_.Clear();
+}
+inline const ::bgs::protocol::presence::v2::PresenceOnlineGameAccount& PresenceOnlineGameAccountFieldValue::online_game_accounts(int index) const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts)
+ return online_game_accounts_.Get(index);
+}
+inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* PresenceOnlineGameAccountFieldValue::mutable_online_game_accounts(int index) {
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts)
+ return online_game_accounts_.Mutable(index);
+}
+inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* PresenceOnlineGameAccountFieldValue::add_online_game_accounts() {
+ // @@protoc_insertion_point(field_add:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts)
+ return online_game_accounts_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >&
+PresenceOnlineGameAccountFieldValue::online_game_accounts() const {
+ // @@protoc_insertion_point(field_list:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts)
+ return online_game_accounts_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >*
+PresenceOnlineGameAccountFieldValue::mutable_online_game_accounts() {
+ // @@protoc_insertion_point(field_mutable_list:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts)
+ return &online_game_accounts_;
+}
+
+// -------------------------------------------------------------------
+
+// PresenceExternalIdentityFieldValue
+
+// optional string unique_id = 1;
+inline bool PresenceExternalIdentityFieldValue::has_unique_id() const {
+ return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void PresenceExternalIdentityFieldValue::set_has_unique_id() {
+ _has_bits_[0] |= 0x00000001u;
+}
+inline void PresenceExternalIdentityFieldValue::clear_has_unique_id() {
+ _has_bits_[0] &= ~0x00000001u;
+}
+inline void PresenceExternalIdentityFieldValue::clear_unique_id() {
+ if (unique_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ unique_id_->clear();
+ }
+ clear_has_unique_id();
+}
+inline const ::std::string& PresenceExternalIdentityFieldValue::unique_id() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id)
+ return *unique_id_;
+}
+inline void PresenceExternalIdentityFieldValue::set_unique_id(const ::std::string& value) {
+ set_has_unique_id();
+ if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ unique_id_ = new ::std::string;
+ }
+ unique_id_->assign(value);
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id)
+}
+inline void PresenceExternalIdentityFieldValue::set_unique_id(const char* value) {
+ set_has_unique_id();
+ if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ unique_id_ = new ::std::string;
+ }
+ unique_id_->assign(value);
+ // @@protoc_insertion_point(field_set_char:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id)
+}
+inline void PresenceExternalIdentityFieldValue::set_unique_id(const char* value, size_t size) {
+ set_has_unique_id();
+ if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ unique_id_ = new ::std::string;
+ }
+ unique_id_->assign(reinterpret_cast<const char*>(value), size);
+ // @@protoc_insertion_point(field_set_pointer:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id)
+}
+inline ::std::string* PresenceExternalIdentityFieldValue::mutable_unique_id() {
+ set_has_unique_id();
+ if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ unique_id_ = new ::std::string;
+ }
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id)
+ return unique_id_;
+}
+inline ::std::string* PresenceExternalIdentityFieldValue::release_unique_id() {
+ clear_has_unique_id();
+ if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ return NULL;
+ } else {
+ ::std::string* temp = unique_id_;
+ unique_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+ return temp;
+ }
+}
+inline void PresenceExternalIdentityFieldValue::set_allocated_unique_id(::std::string* unique_id) {
+ if (unique_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ delete unique_id_;
+ }
+ if (unique_id) {
+ set_has_unique_id();
+ unique_id_ = unique_id;
+ } else {
+ clear_has_unique_id();
+ unique_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id)
+}
+
+// optional string display_id = 2;
+inline bool PresenceExternalIdentityFieldValue::has_display_id() const {
+ return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void PresenceExternalIdentityFieldValue::set_has_display_id() {
+ _has_bits_[0] |= 0x00000002u;
+}
+inline void PresenceExternalIdentityFieldValue::clear_has_display_id() {
+ _has_bits_[0] &= ~0x00000002u;
+}
+inline void PresenceExternalIdentityFieldValue::clear_display_id() {
+ if (display_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ display_id_->clear();
+ }
+ clear_has_display_id();
+}
+inline const ::std::string& PresenceExternalIdentityFieldValue::display_id() const {
+ // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id)
+ return *display_id_;
+}
+inline void PresenceExternalIdentityFieldValue::set_display_id(const ::std::string& value) {
+ set_has_display_id();
+ if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ display_id_ = new ::std::string;
+ }
+ display_id_->assign(value);
+ // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id)
+}
+inline void PresenceExternalIdentityFieldValue::set_display_id(const char* value) {
+ set_has_display_id();
+ if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ display_id_ = new ::std::string;
+ }
+ display_id_->assign(value);
+ // @@protoc_insertion_point(field_set_char:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id)
+}
+inline void PresenceExternalIdentityFieldValue::set_display_id(const char* value, size_t size) {
+ set_has_display_id();
+ if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ display_id_ = new ::std::string;
+ }
+ display_id_->assign(reinterpret_cast<const char*>(value), size);
+ // @@protoc_insertion_point(field_set_pointer:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id)
+}
+inline ::std::string* PresenceExternalIdentityFieldValue::mutable_display_id() {
+ set_has_display_id();
+ if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ display_id_ = new ::std::string;
+ }
+ // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id)
+ return display_id_;
+}
+inline ::std::string* PresenceExternalIdentityFieldValue::release_display_id() {
+ clear_has_display_id();
+ if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ return NULL;
+ } else {
+ ::std::string* temp = display_id_;
+ display_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+ return temp;
+ }
+}
+inline void PresenceExternalIdentityFieldValue::set_allocated_display_id(::std::string* display_id) {
+ if (display_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
+ delete display_id_;
+ }
+ if (display_id) {
+ set_has_display_id();
+ display_id_ = display_id;
+ } else {
+ clear_has_display_id();
+ display_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+ }
+ // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id)
+}
+
+// @@protoc_insertion_point(namespace_scope)
+
+} // namespace v2
+} // namespace presence
+} // namespace protocol
+} // namespace bgs
+
+#ifndef SWIG
+namespace google {
+namespace protobuf {
+template <> struct is_proto_enum< ::bgs::protocol::presence::v2::PresenceQueryBehavior> : ::google::protobuf::internal::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::bgs::protocol::presence::v2::PresenceQueryBehavior>() {
+ return ::bgs::protocol::presence::v2::PresenceQueryBehavior_descriptor();
+}
+template <> struct is_proto_enum< ::bgs::protocol::presence::v2::PresenceAccountStatus> : ::google::protobuf::internal::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::bgs::protocol::presence::v2::PresenceAccountStatus>() {
+ return ::bgs::protocol::presence::v2::PresenceAccountStatus_descriptor();
+}
+} // namespace google
+} // namespace protobuf
+#endif // SWIG
+
+// @@protoc_insertion_point(global_scope)
+
+#endif // PROTOBUF_api_2fclient_2fv2_2fpresence_5ftypes_2eproto__INCLUDED
diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp
index 698adff25c1..b8b71f5f2e5 100644
--- a/src/tools/map_extractor/System.cpp
+++ b/src/tools/map_extractor/System.cpp
@@ -1335,28 +1335,28 @@ void ExtractGameTables()
printf("output path %s\n", outputPath.string().c_str());
- DB2FileInfo GameTables[] =
+ static constexpr DB2FileInfo GameTables[] =
{
- { 1582086, "ArtifactKnowledgeMultiplier.txt" },
- { 1391662, "ArtifactLevelXP.txt" },
- { 1391663, "BarberShopCostBase.txt" },
- { 1391664, "BaseMp.txt" },
- { 4494528, "BaseProfessionRatings.txt" },
- { 1391665, "BattlePetTypeDamageMod.txt" },
- { 1391666, "BattlePetXP.txt" },
- { 1391669, "CombatRatings.txt" },
- { 1391670, "CombatRatingsMultByILvl.txt" },
- { 1391671, "HonorLevel.txt" },
- { 1391642, "HpPerSta.txt" },
- { 2012881, "ItemLevelByLevel.txt" },
- { 1726830, "ItemLevelSquish.txt" },
- { 1391643, "ItemSocketCostPerLevel.txt" },
- { 1391651, "NPCManaCostScaler.txt" },
- { 4492239, "ProfessionRatings.txt" },
- { 1391659, "SandboxScaling.txt" },
- { 1391660, "SpellScaling.txt" },
- { 1980632, "StaminaMultByILvl.txt" },
- { 1391661, "xp.txt" }
+ { .FileDataId = 1582086, .Name = "ArtifactKnowledgeMultiplier.txt" },
+ { .FileDataId = 1391662, .Name = "ArtifactLevelXP.txt" },
+ { .FileDataId = 1391663, .Name = "BarberShopCostBase.txt" },
+ { .FileDataId = 1391664, .Name = "BaseMp.txt" },
+ { .FileDataId = 4494528, .Name = "BaseProfessionRatings.txt" },
+ { .FileDataId = 1391665, .Name = "BattlePetTypeDamageMod.txt" },
+ { .FileDataId = 1391666, .Name = "BattlePetXP.txt" },
+ { .FileDataId = 1391669, .Name = "CombatRatings.txt" },
+ { .FileDataId = 1391670, .Name = "CombatRatingsMultByILvl.txt" },
+ { .FileDataId = 1391671, .Name = "HonorLevel.txt" },
+ { .FileDataId = 1391642, .Name = "HpPerSta.txt" },
+ { .FileDataId = 2012881, .Name = "ItemLevelByLevel.txt" },
+ { .FileDataId = 1726830, .Name = "ItemLevelSquish.txt" },
+ { .FileDataId = 1391643, .Name = "ItemSocketCostPerLevel.txt" },
+ { .FileDataId = 1391651, .Name = "NPCManaCostScaler.txt" },
+ { .FileDataId = 4492239, .Name = "ProfessionRatings.txt" },
+ { .FileDataId = 1391659, .Name = "SandboxScaling.txt" },
+ { .FileDataId = 1391660, .Name = "SpellScaling.txt" },
+ { .FileDataId = 1980632, .Name = "StaminaMultByILvl.txt" },
+ { .FileDataId = 1391661, .Name = "xp.txt" }
};
uint32 count = 0;
diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h
index 8c0136fd719..d36c88f4384 100644
--- a/src/tools/map_extractor/loadlib/DBFilesClientList.h
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -138,6 +138,7 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 1592470, .Name = "CelestialBody.db2" },
{ .FileDataId = 1068162, .Name = "Cfg_Categories.db2" },
{ .FileDataId = 1080949, .Name = "Cfg_Configs.db2" },
+ { .FileDataId = 6841377, .Name = "Cfg_GameRules.db2" },
{ .FileDataId = 1082876, .Name = "Cfg_Regions.db2" },
{ .FileDataId = 2965645, .Name = "ChallengeModeItemBonusOverride.db2" },
{ .FileDataId = 1343386, .Name = "CharBaseInfo.db2" },
@@ -234,6 +235,9 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 2143633, .Name = "ContributionStyle.db2" },
{ .FileDataId = 2143634, .Name = "ContributionStyleContainer.db2" },
{ .FileDataId = 1260801, .Name = "ConversationLine.db2" },
+ { .FileDataId = 6405756, .Name = "CooldownSet.db2" },
+ { .FileDataId = 6422327, .Name = "CooldownSetLinkedSpell.db2" },
+ { .FileDataId = 6405757, .Name = "CooldownSetSpell.db2" },
{ .FileDataId = 3220711, .Name = "CorruptionEffects.db2" },
{ .FileDataId = 3384973, .Name = "Covenant.db2" },
{ .FileDataId = 4545611, .Name = "CraftingData.db2" },
@@ -882,7 +886,6 @@ constexpr DB2FileInfo DBFilesClientList[] =
{ .FileDataId = 1101657, .Name = "SpellXSpellVisual.db2" },
{ .FileDataId = 5735565, .Name = "SpotLightConditionMap.db2" },
{ .FileDataId = 1604265, .Name = "StartupFiles.db2" },
- { .FileDataId = 1375805, .Name = "Startup_Strings.db2" },
{ .FileDataId = 1140758, .Name = "Stationery.db2" },
{ .FileDataId = 1345276, .Name = "SummonProperties.db2" },
{ .FileDataId = 1302850, .Name = "TactKey.db2" },