diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-03-22 00:08:20 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-03-22 00:08:20 +0100 |
commit | 922f60fa25569db05a7717b6b55568f321a02f64 (patch) | |
tree | ab11e8c8da23ea0a93daf073b602dc92d1f98957 | |
parent | f18c0644f31f6264bd07345819bb48c432790bc7 (diff) |
Core: Update to 10.0.7
37 files changed, 636 insertions, 462 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index cd7871088ec..dc27bfaf320 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -698,7 +698,8 @@ INSERT INTO `build_info` VALUES (48069,10,0,5,NULL,NULL,'558CDF958FA082E95849779C7C6945E5',NULL,NULL,NULL), (48317,10,0,5,NULL,NULL,'C096E37B45B43244E9C79916604DD4AF',NULL,NULL,NULL), (48397,10,0,5,NULL,NULL,'64BA8779EAA97E6C57982B6B1A5B32E7',NULL,NULL,NULL), -(48526,10,0,5,NULL,NULL,'D5B7D3303A2A741E6913EE1AEB0BCB65',NULL,NULL,NULL); +(48526,10,0,5,NULL,NULL,'D5B7D3303A2A741E6913EE1AEB0BCB65',NULL,NULL,NULL), +(48676,10,0,7,NULL,NULL,'E059FB74DFF6438CC20C7F28900F64CA',NULL,NULL,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -2306,7 +2307,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float unsigned NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '48526', + `gamebuild` int unsigned NOT NULL DEFAULT '48676', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -2321,7 +2322,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,48526,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,48676,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -2667,7 +2668,8 @@ INSERT INTO `updates` VALUES ('2023_02_14_00_auth.sql','033F4460715121A8B6E9DD0F7456AE930DD18A7A','RELEASED','2023-02-14 10:02:49',0), ('2023_02_28_00_auth.sql','F57F70D6E1BBB1CB799E338C3358C265FD7F8689','RELEASED','2023-02-28 21:32:14',0), ('2023_03_08_00_auth.sql','2490CEA2EBDB0ECD3590F1D9328DD88266E179F3','RELEASED','2023-03-08 21:58:27',0), -('2023_03_11_00_auth.sql','6532C5E043692E7361689090DA19E6350705B591','RELEASED','2023-03-11 00:10:17',0); +('2023_03_11_00_auth.sql','6532C5E043692E7361689090DA19E6350705B591','RELEASED','2023-03-11 00:10:17',0), +('2023_03_22_00_auth.sql','C589D68CF88A62E03F2E797E03CF2F237371BD34','RELEASED','2023-03-21 18:12:28',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2023_03_22_00_auth.sql b/sql/updates/auth/master/2023_03_22_00_auth.sql new file mode 100644 index 00000000000..46edc6b85f7 --- /dev/null +++ b/sql/updates/auth/master/2023_03_22_00_auth.sql @@ -0,0 +1,7 @@ +DELETE FROM `build_info` WHERE `build`=48676; +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`,`winAuthSeed`,`win64AuthSeed`,`mac64AuthSeed`,`winChecksumSeed`,`macChecksumSeed`) VALUES +(48676,10,0,7,NULL,NULL,'E059FB74DFF6438CC20C7F28900F64CA',NULL,NULL,NULL); + +UPDATE `realmlist` SET `gamebuild`=48676 WHERE `gamebuild`=48526; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '48676'; diff --git a/sql/updates/hotfixes/master/2023_03_22_00_hotfixes.sql b/sql/updates/hotfixes/master/2023_03_22_00_hotfixes.sql new file mode 100644 index 00000000000..1a8a2278925 --- /dev/null +++ b/sql/updates/hotfixes/master/2023_03_22_00_hotfixes.sql @@ -0,0 +1,22 @@ +ALTER TABLE `area_trigger` MODIFY `AreaTriggerActionSetID` int NOT NULL DEFAULT 0 AFTER `ShapeID`; + +ALTER TABLE `currency_container` MODIFY `ContainerQuality` tinyint NOT NULL DEFAULT 0 AFTER `ContainerIconID`; + +ALTER TABLE `difficulty` MODIFY `GroupSizeHealthCurveID` int unsigned NOT NULL DEFAULT 0 AFTER `ToggleDifficultyID`; +ALTER TABLE `difficulty` MODIFY `GroupSizeDmgCurveID` int unsigned NOT NULL DEFAULT 0 AFTER `GroupSizeHealthCurveID`; +ALTER TABLE `difficulty` MODIFY `GroupSizeSpellPointsCurveID` int unsigned NOT NULL DEFAULT 0 AFTER `GroupSizeDmgCurveID`; + +ALTER TABLE `garr_building` MODIFY `GarrTypeID` tinyint NOT NULL DEFAULT 0 AFTER `Tooltip`; + +ALTER TABLE `garr_follower` MODIFY `GarrTypeID` tinyint NOT NULL DEFAULT 0 AFTER `TitleName`; + +ALTER TABLE `garr_mission` MODIFY `GarrTypeID` tinyint NOT NULL DEFAULT 0 AFTER `WorldPosY`; + +ALTER TABLE `garr_talent_tree` MODIFY `GarrTypeID` tinyint NOT NULL DEFAULT 0 AFTER `Name`; + +ALTER TABLE `languages` MODIFY `ID` int unsigned NOT NULL DEFAULT 0 AFTER `Name`; +ALTER TABLE `languages` ADD `LearningCurveID` int NOT NULL DEFAULT 0 AFTER `UiTextureKitElementCount`; + +ALTER TABLE `quest_info` MODIFY `Profession` smallint unsigned NOT NULL DEFAULT 0 AFTER `Modifiers`; + +ALTER TABLE `trait_node_x_trait_cost` MODIFY `TraitNodeID` int NOT NULL DEFAULT 0 AFTER `ID`; diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index 2df820e6fb4..d3fa897ea76 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -1026,7 +1026,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_LANGUAGE_WORDS, "SELECT MAX(ID) + 1 FROM language_words", CONNECTION_SYNCH); // Languages.db2 - PrepareStatement(HOTFIX_SEL_LANGUAGES, "SELECT ID, Name, Flags, UiTextureKitID, UiTextureKitElementCount FROM languages" + PrepareStatement(HOTFIX_SEL_LANGUAGES, "SELECT Name, ID, Flags, UiTextureKitID, UiTextureKitElementCount, LearningCurveID FROM languages" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_LANGUAGES, "SELECT MAX(ID) + 1 FROM languages", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_LANGUAGES, "SELECT ID, Name_lang FROM languages_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 567a98e8d95..87cd89de28f 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -216,7 +216,7 @@ struct AreaTriggerLoadInfo { false, FT_FLOAT, "BoxYaw" }, { true, FT_BYTE, "ShapeType" }, { true, FT_SHORT, "ShapeID" }, - { true, FT_SHORT, "AreaTriggerActionSetID" }, + { true, FT_INT, "AreaTriggerActionSetID" }, { true, FT_BYTE, "Flags" }, }; @@ -1446,7 +1446,7 @@ struct CurrencyContainerLoadInfo { true, FT_INT, "MinAmount" }, { true, FT_INT, "MaxAmount" }, { true, FT_INT, "ContainerIconID" }, - { true, FT_INT, "ContainerQuality" }, + { true, FT_BYTE, "ContainerQuality" }, { true, FT_INT, "OnLootSpellVisualKitID" }, { false, FT_INT, "CurrencyTypesID" }, }; @@ -1557,9 +1557,9 @@ struct DifficultyLoadInfo { false, FT_SHORT, "Flags" }, { false, FT_BYTE, "ItemContext" }, { false, FT_BYTE, "ToggleDifficultyID" }, - { false, FT_SHORT, "GroupSizeHealthCurveID" }, - { false, FT_SHORT, "GroupSizeDmgCurveID" }, - { false, FT_SHORT, "GroupSizeSpellPointsCurveID" }, + { false, FT_INT, "GroupSizeHealthCurveID" }, + { false, FT_INT, "GroupSizeDmgCurveID" }, + { false, FT_INT, "GroupSizeSpellPointsCurveID" }, }; static constexpr DB2LoadInfo Instance{ Fields, 14, &DifficultyMeta::Instance, HOTFIX_SEL_DIFFICULTY }; @@ -1918,7 +1918,7 @@ struct GarrBuildingLoadInfo { false, FT_STRING, "AllianceName" }, { false, FT_STRING, "Description" }, { false, FT_STRING, "Tooltip" }, - { false, FT_BYTE, "GarrTypeID" }, + { true, FT_BYTE, "GarrTypeID" }, { true, FT_BYTE, "BuildingType" }, { true, FT_INT, "HordeGameObjectID" }, { true, FT_INT, "AllianceGameObjectID" }, @@ -1983,7 +1983,7 @@ struct GarrFollowerLoadInfo { false, FT_STRING, "HordeSourceText" }, { false, FT_STRING, "AllianceSourceText" }, { false, FT_STRING, "TitleName" }, - { false, FT_BYTE, "GarrTypeID" }, + { true, FT_BYTE, "GarrTypeID" }, { true, FT_BYTE, "GarrFollowerTypeID" }, { true, FT_INT, "HordeCreatureID" }, { true, FT_INT, "AllianceCreatureID" }, @@ -2044,7 +2044,7 @@ struct GarrMissionLoadInfo { false, FT_FLOAT, "MapPosY" }, { false, FT_FLOAT, "WorldPosX" }, { false, FT_FLOAT, "WorldPosY" }, - { false, FT_BYTE, "GarrTypeID" }, + { true, FT_BYTE, "GarrTypeID" }, { false, FT_BYTE, "GarrMissionTypeID" }, { true, FT_BYTE, "GarrFollowerTypeID" }, { false, FT_BYTE, "MaxFollowers" }, @@ -2158,7 +2158,7 @@ struct GarrTalentTreeLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { false, FT_BYTE, "GarrTypeID" }, + { true, FT_BYTE, "GarrTypeID" }, { true, FT_INT, "ClassID" }, { true, FT_BYTE, "MaxTiers" }, { true, FT_BYTE, "UiOrder" }, @@ -3290,16 +3290,17 @@ struct LanguageWordsLoadInfo struct LanguagesLoadInfo { - static constexpr DB2FieldMeta Fields[5] = + static constexpr DB2FieldMeta Fields[6] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, + { false, FT_INT, "ID" }, { true, FT_INT, "Flags" }, { true, FT_INT, "UiTextureKitID" }, { true, FT_INT, "UiTextureKitElementCount" }, + { true, FT_INT, "LearningCurveID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 5, &LanguagesMeta::Instance, HOTFIX_SEL_LANGUAGES }; + static constexpr DB2LoadInfo Instance{ Fields, 6, &LanguagesMeta::Instance, HOTFIX_SEL_LANGUAGES }; }; struct LfgDungeonsLoadInfo @@ -4140,7 +4141,7 @@ struct QuestInfoLoadInfo { false, FT_STRING, "InfoName" }, { true, FT_BYTE, "Type" }, { true, FT_INT, "Modifiers" }, - { true, FT_INT, "Profession" }, + { false, FT_SHORT, "Profession" }, }; static constexpr DB2LoadInfo Instance{ Fields, 5, &QuestInfoMeta::Instance, HOTFIX_SEL_QUEST_INFO }; @@ -5742,7 +5743,7 @@ struct TraitNodeXTraitCostLoadInfo static constexpr DB2FieldMeta Fields[3] = { { false, FT_INT, "ID" }, - { false, FT_INT, "TraitNodeID" }, + { true, FT_INT, "TraitNodeID" }, { true, FT_INT, "TraitCostID" }, }; diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index 3713c5c6b1d..0c275f5c918 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -425,7 +425,7 @@ struct AreaPOIMeta { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, false }, - { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, @@ -441,7 +441,7 @@ struct AreaPOIMeta { FT_BYTE, 1, false }, }; - static constexpr DB2Meta Instance{ 1000630, 2, 21, 21, 0xD721BABB, Fields, 13 }; + static constexpr DB2Meta Instance{ 1000630, 2, 21, 21, 0x701F6E76, Fields, 13 }; }; struct AreaPOIStateMeta @@ -507,11 +507,11 @@ struct AreaTriggerMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, true }, { FT_SHORT, 1, true }, - { FT_SHORT, 1, true }, + { FT_INT, 1, true }, { FT_BYTE, 1, true }, }; - static constexpr DB2Meta Instance{ 1354401, 1, 15, 15, 0x5444D57A, Fields, 2 }; + static constexpr DB2Meta Instance{ 1354401, 1, 15, 15, 0xE8FBF624, Fields, 2 }; }; struct AreaTriggerActionSetMeta @@ -1387,7 +1387,7 @@ struct CameraEffectEntryMeta static constexpr DB2MetaField Fields[16] = { { FT_BYTE, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, false }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, @@ -1404,7 +1404,7 @@ struct CameraEffectEntryMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1117696, -1, 16, 15, 0x9F59F6DD, Fields, 15 }; + static constexpr DB2Meta Instance{ 1117696, -1, 16, 15, 0x10047B37, Fields, 15 }; }; struct CameraModeMeta @@ -1429,10 +1429,9 @@ struct CameraModeMeta struct CampaignMeta { - static constexpr DB2MetaField Fields[14] = + static constexpr DB2MetaField Fields[13] = { { FT_STRING, 1, true }, - { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_STRING, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, @@ -1447,7 +1446,7 @@ struct CampaignMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 2031607, -1, 14, 14, 0xAD30B727, Fields, -1 }; + static constexpr DB2Meta Instance{ 2031607, -1, 13, 13, 0x7E6B8B39, Fields, -1 }; }; struct CampaignXConditionMeta @@ -1554,9 +1553,10 @@ struct Cfg_RegionsMeta struct ChallengeModeItemBonusOverrideMeta { - static constexpr DB2MetaField Fields[6] = + static constexpr DB2MetaField Fields[7] = { { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, @@ -1564,7 +1564,7 @@ struct ChallengeModeItemBonusOverrideMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 2965645, -1, 6, 5, 0x54B1B4A1, Fields, 5 }; + static constexpr DB2Meta Instance{ 2965645, -1, 7, 6, 0xB5EA51A7, Fields, 6 }; }; struct CharBaseInfoMeta @@ -1678,7 +1678,7 @@ struct CharShipmentContainerMeta { FT_STRING, 1, true }, { FT_STRING, 1, true }, { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, @@ -2800,7 +2800,7 @@ struct CorruptionEffectsMeta struct CovenantMeta { - static constexpr DB2MetaField Fields[9] = + static constexpr DB2MetaField Fields[10] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -2811,9 +2811,10 @@ struct CovenantMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 3384973, -1, 9, 9, 0xD6E6D3C8, Fields, -1 }; + static constexpr DB2Meta Instance{ 3384973, -1, 10, 10, 0x1918652F, Fields, -1 }; }; struct CraftingDataMeta @@ -2985,7 +2986,7 @@ struct CreatureDifficultyMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 879282, -1, 6, 5, 0x1633422F, Fields, 5 }; + static constexpr DB2Meta Instance{ 879282, -1, 6, 5, 0xCDB617FB, Fields, 5 }; }; struct CreatureDifficultyTreasureMeta @@ -3413,12 +3414,12 @@ struct CurrencyContainerMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, - { FT_INT, 1, true }, + { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1934603, -1, 8, 7, 0x43B60080, Fields, 7 }; + static constexpr DB2Meta Instance{ 1934603, -1, 8, 7, 0xBF622379, Fields, 7 }; }; struct CurrencyTypesMeta @@ -3599,12 +3600,12 @@ struct DifficultyMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, false }, + { FT_INT, 1, false }, + { FT_INT, 1, false }, }; - static constexpr DB2Meta Instance{ 1352127, -1, 13, 13, 0x9B05F092, Fields, -1 }; + static constexpr DB2Meta Instance{ 1352127, -1, 13, 13, 0xD3044EE8, Fields, -1 }; }; struct DisplaySeasonMeta @@ -4237,7 +4238,7 @@ struct GarrAbilityMeta { FT_STRING, 1, true }, { FT_STRING, 1, true }, { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_SHORT, 1, false }, { FT_INT, 1, true }, @@ -4336,7 +4337,7 @@ struct GarrBuildingMeta { FT_STRING, 1, true }, { FT_STRING, 1, true }, { FT_STRING, 1, true }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, @@ -4494,8 +4495,8 @@ struct GarrFollowerMeta { FT_STRING, 1, true }, { FT_STRING, 1, true }, { FT_STRING, 1, true }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, + { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_BYTE, 1, false }, @@ -4533,7 +4534,7 @@ struct GarrFollowerLevelXPMeta { static constexpr DB2MetaField Fields[4] = { - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, @@ -4548,7 +4549,7 @@ struct GarrFollowerQualityMeta { { FT_BYTE, 1, false }, { FT_INT, 1, false }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, @@ -4573,7 +4574,7 @@ struct GarrFollowerTypeMeta { static constexpr DB2MetaField Fields[7] = { - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, @@ -4620,7 +4621,7 @@ struct GarrItemLevelUpgradeDataMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, }; static constexpr DB2Meta Instance{ 1572314, -1, 4, 4, 0xFF309F3E, Fields, -1 }; @@ -4672,9 +4673,9 @@ struct GarrMissionMeta { FT_STRING, 1, true }, { FT_FLOAT, 2, true }, { FT_FLOAT, 2, true }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, @@ -5037,7 +5038,7 @@ struct GarrTalentTreeMeta static constexpr DB2MetaField Fields[12] = { { FT_STRING, 1, true }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, @@ -5777,11 +5778,11 @@ struct ItemAppearanceXUiCameraMeta { static constexpr DB2MetaField Fields[2] = { - { FT_SHORT, 1, false }, + { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static constexpr DB2Meta Instance{ 1248126, -1, 2, 2, 0x7E42B0D5, Fields, -1 }; + static constexpr DB2Meta Instance{ 1248126, -1, 2, 2, 0xD239EB9B, Fields, -1 }; }; struct ItemArmorQualityMeta @@ -5868,8 +5869,9 @@ struct ItemBonusListGroupMeta struct ItemBonusListGroupEntryMeta { - static constexpr DB2MetaField Fields[8] = + static constexpr DB2MetaField Fields[9] = { + { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, @@ -5880,7 +5882,7 @@ struct ItemBonusListGroupEntryMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 3025306, -1, 8, 8, 0x1CC556EF, Fields, 0 }; + static constexpr DB2Meta Instance{ 3025306, 0, 9, 9, 0x17163D82, Fields, 1 }; }; struct ItemBonusListLevelDeltaMeta @@ -5935,7 +5937,7 @@ struct ItemBonusTreeGroupEntryMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 4407505, -1, 2, 1, 0x0D33F559, Fields, 1 }; + static constexpr DB2Meta Instance{ 4407505, -1, 2, 2, 0xF3BB739B, Fields, 0 }; }; struct ItemBonusTreeNodeMeta @@ -6917,15 +6919,17 @@ struct LanguageWordsMeta struct LanguagesMeta { - static constexpr DB2MetaField Fields[4] = + static constexpr DB2MetaField Fields[6] = { { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1135325, -1, 4, 4, 0x409916EB, Fields, -1 }; + static constexpr DB2Meta Instance{ 1135325, 1, 6, 6, 0xE026BB06, Fields, -1 }; }; struct LfgDungeonsGroupingMapMeta @@ -6993,20 +6997,20 @@ struct LightDataMeta { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, - { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, - { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_FLOAT, 1, true }, - { FT_INT, 1, false }, - { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_FLOAT, 4, true }, { FT_FLOAT, 4, true }, { FT_FLOAT, 4, true }, }; - static constexpr DB2Meta Instance{ 1375580, -1, 46, 46, 0x5A08CEBB, Fields, 0 }; + static constexpr DB2Meta Instance{ 1375580, -1, 46, 46, 0x1D523CA5, Fields, 0 }; }; struct LightParamsMeta @@ -8810,6 +8814,18 @@ struct ProfTraitTreeMeta static constexpr DB2Meta Instance{ 4542085, 0, 2, 2, 0x55614ED1, Fields, -1 }; }; +struct ProfTraitTreeHighlightMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4999865, -1, 3, 2, 0xCC9F815F, Fields, 2 }; +}; + struct ProfessionMeta { static constexpr DB2MetaField Fields[12] = @@ -9102,10 +9118,10 @@ struct QuestInfoMeta { FT_STRING, 1, true }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, - { FT_INT, 1, true }, + { FT_SHORT, 1, false }, }; - static constexpr DB2Meta Instance{ 1120960, -1, 4, 4, 0xAFE57F67, Fields, -1 }; + static constexpr DB2Meta Instance{ 1120960, -1, 4, 4, 0x8CE69EF5, Fields, -1 }; }; struct QuestLineMeta @@ -9149,7 +9165,7 @@ struct QuestObjectiveMeta static constexpr DB2MetaField Fields[8] = { { FT_STRING, 1, true }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_BYTE, 1, false }, @@ -9158,7 +9174,7 @@ struct QuestObjectiveMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1251960, -1, 8, 7, 0x0CF5606A, Fields, 7 }; + static constexpr DB2Meta Instance{ 1251960, -1, 8, 7, 0x6F7AE236, Fields, 7 }; }; struct QuestPOIBlobMeta @@ -10641,7 +10657,7 @@ struct SpellChainEffectsMeta { FT_INT, 1, false }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, - { FT_SHORT, 1, false }, + { FT_INT, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_INT, 1, false }, @@ -10655,7 +10671,7 @@ struct SpellChainEffectsMeta { FT_INT, 3, true }, }; - static constexpr DB2Meta Instance{ 1343310, -1, 60, 60, 0xD76BE290, Fields, -1 }; + static constexpr DB2Meta Instance{ 1343310, -1, 60, 60, 0x5DA65BBA, Fields, -1 }; }; struct SpellClassOptionsMeta @@ -11433,16 +11449,16 @@ struct SpellVisualColorEffectMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, false }, + { FT_INT, 1, false }, + { FT_INT, 1, false }, + { FT_INT, 1, false }, + { FT_INT, 1, false }, { FT_FLOAT, 1, true }, { FT_INT, 1, false }, }; - static constexpr DB2Meta Instance{ 1094006, -1, 11, 11, 0xBBAF68B7, Fields, -1 }; + static constexpr DB2Meta Instance{ 1094006, -1, 11, 11, 0x3D80C011, Fields, -1 }; }; struct SpellVisualEffectNameMeta diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index dc46d77eb54..5800ccd1642 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -978,13 +978,13 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul } // Check loaded DB2 files proper version - if (!sAreaTableStore.LookupEntry(14618) || // last area added in 10.0.5 (47660) - !sCharTitlesStore.LookupEntry(753) || // last char title added in 10.0.5 (47660) - !sGemPropertiesStore.LookupEntry(4028) || // last gem property added in 10.0.5 (47660) - !sItemStore.LookupEntry(203716) || // last item added in 10.0.5 (47660) - !sItemExtendedCostStore.LookupEntry(7882) || // last item extended cost added in 10.0.5 (47660) - !sMapStore.LookupEntry(2582) || // last map added in 10.0.5 (47660) - !sSpellNameStore.LookupEntry(401848)) // last spell added in 10.0.5 (47660) + if (!sAreaTableStore.LookupEntry(14720) || // last area added in 10.0.7 (48520) + !sCharTitlesStore.LookupEntry(762) || // last char title added in 10.0.7 (48520) + !sGemPropertiesStore.LookupEntry(4059) || // last gem property added in 10.0.7 (48520) + !sItemStore.LookupEntry(205244) || // last item added in 10.0.7 (48520) + !sItemExtendedCostStore.LookupEntry(8043) || // last item extended cost added in 10.0.7 (48520) + !sMapStore.LookupEntry(2616) || // last map added in 10.0.7 (48520) + !sSpellNameStore.LookupEntry(409033)) // last spell added in 10.0.7 (48520) { TC_LOG_ERROR("misc", "You have _outdated_ DB2 files. Please extract correct versions from current using client."); exit(1); diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 4b3fffe3996..37c798fcf52 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -182,7 +182,7 @@ struct AreaTriggerEntry float BoxYaw; int8 ShapeType; int16 ShapeID; - int16 AreaTriggerActionSetID; + int32 AreaTriggerActionSetID; int8 Flags; }; @@ -1259,7 +1259,7 @@ struct CurrencyContainerEntry int32 MinAmount; int32 MaxAmount; int32 ContainerIconID; - int32 ContainerQuality; + int8 ContainerQuality; int32 OnLootSpellVisualKitID; uint32 CurrencyTypesID; }; @@ -1396,9 +1396,9 @@ struct DifficultyEntry uint16 Flags; uint8 ItemContext; uint8 ToggleDifficultyID; - uint16 GroupSizeHealthCurveID; - uint16 GroupSizeDmgCurveID; - uint16 GroupSizeSpellPointsCurveID; + uint32 GroupSizeHealthCurveID; + uint32 GroupSizeDmgCurveID; + uint32 GroupSizeSpellPointsCurveID; }; struct DungeonEncounterEntry @@ -1649,7 +1649,7 @@ struct GarrBuildingEntry LocalizedString AllianceName; LocalizedString Description; LocalizedString Tooltip; - uint8 GarrTypeID; + int8 GarrTypeID; int8 BuildingType; int32 HordeGameObjectID; int32 AllianceGameObjectID; @@ -1698,7 +1698,7 @@ struct GarrFollowerEntry LocalizedString HordeSourceText; LocalizedString AllianceSourceText; LocalizedString TitleName; - uint8 GarrTypeID; + int8 GarrTypeID; int8 GarrFollowerTypeID; int32 HordeCreatureID; int32 AllianceCreatureID; @@ -1747,7 +1747,7 @@ struct GarrMissionEntry LocalizedString Description; DBCPosition2D MapPos; DBCPosition2D WorldPos; - uint8 GarrTypeID; + int8 GarrTypeID; uint8 GarrMissionTypeID; int8 GarrFollowerTypeID; uint8 MaxFollowers; @@ -1828,7 +1828,7 @@ struct GarrTalentTreeEntry { uint32 ID; LocalizedString Name; - uint8 GarrTypeID; + int8 GarrTypeID; int32 ClassID; int8 MaxTiers; int8 UiOrder; @@ -2489,11 +2489,12 @@ struct LanguageWordsEntry struct LanguagesEntry { - uint32 ID; LocalizedString Name; + uint32 ID; int32 Flags; int32 UiTextureKitID; int32 UiTextureKitElementCount; + int32 LearningCurveID; }; struct LFGDungeonsEntry @@ -3067,7 +3068,7 @@ struct QuestInfoEntry LocalizedString InfoName; int8 Type; int32 Modifiers; - int32 Profession; + uint16 Profession; }; struct QuestLineXQuestEntry @@ -4086,7 +4087,7 @@ struct TraitNodeXTraitCondEntry struct TraitNodeXTraitCostEntry { uint32 ID; - uint32 TraitNodeID; + int32 TraitNodeID; int32 TraitCostID; }; diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index 22ab691840d..114998f8d07 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -20,7 +20,7 @@ #include "ItemTemplate.h" #include "Player.h" -int32 const SocketColorToGemTypeMask[19] = +int32 const SocketColorToGemTypeMask[26] = { 0, SOCKET_COLOR_META, @@ -40,7 +40,14 @@ int32 const SocketColorToGemTypeMask[19] = SOCKET_COLOR_RELIC_WATER, SOCKET_COLOR_RELIC_LIFE, SOCKET_COLOR_RELIC_WIND, - SOCKET_COLOR_RELIC_HOLY + SOCKET_COLOR_RELIC_HOLY, + SOCKET_COLOR_PUNCHCARD_RED, + SOCKET_COLOR_PUNCHCARD_YELLOW, + SOCKET_COLOR_PUNCHCARD_BLUE, + SOCKET_COLOR_DOMINATION, + SOCKET_COLOR_CYPHER, + SOCKET_COLOR_TINKER, + SOCKET_COLOR_PRIMORDIAL }; char const* ItemTemplate::GetName(LocaleConstant locale) const diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index 8a8d86c9440..17bab58f10d 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -332,27 +332,34 @@ enum BAG_FAMILY_MASK enum SocketColor { - SOCKET_COLOR_META = 0x00001, - SOCKET_COLOR_RED = 0x00002, - SOCKET_COLOR_YELLOW = 0x00004, - SOCKET_COLOR_BLUE = 0x00008, - SOCKET_COLOR_HYDRAULIC = 0x00010, // not used - SOCKET_COLOR_COGWHEEL = 0x00020, - SOCKET_COLOR_PRISMATIC = 0x0000E, - SOCKET_COLOR_RELIC_IRON = 0x00040, - SOCKET_COLOR_RELIC_BLOOD = 0x00080, - SOCKET_COLOR_RELIC_SHADOW = 0x00100, - SOCKET_COLOR_RELIC_FEL = 0x00200, - SOCKET_COLOR_RELIC_ARCANE = 0x00400, - SOCKET_COLOR_RELIC_FROST = 0x00800, - SOCKET_COLOR_RELIC_FIRE = 0x01000, - SOCKET_COLOR_RELIC_WATER = 0x02000, - SOCKET_COLOR_RELIC_LIFE = 0x04000, - SOCKET_COLOR_RELIC_WIND = 0x08000, - SOCKET_COLOR_RELIC_HOLY = 0x10000 -}; - -extern int32 const SocketColorToGemTypeMask[19]; + SOCKET_COLOR_META = 0x000001, + SOCKET_COLOR_RED = 0x000002, + SOCKET_COLOR_YELLOW = 0x000004, + SOCKET_COLOR_BLUE = 0x000008, + SOCKET_COLOR_HYDRAULIC = 0x000010, // not used + SOCKET_COLOR_COGWHEEL = 0x000020, + SOCKET_COLOR_PRISMATIC = 0x00000E, + SOCKET_COLOR_RELIC_IRON = 0x000040, + SOCKET_COLOR_RELIC_BLOOD = 0x000080, + SOCKET_COLOR_RELIC_SHADOW = 0x000100, + SOCKET_COLOR_RELIC_FEL = 0x000200, + SOCKET_COLOR_RELIC_ARCANE = 0x000400, + SOCKET_COLOR_RELIC_FROST = 0x000800, + SOCKET_COLOR_RELIC_FIRE = 0x001000, + SOCKET_COLOR_RELIC_WATER = 0x002000, + SOCKET_COLOR_RELIC_LIFE = 0x004000, + SOCKET_COLOR_RELIC_WIND = 0x008000, + SOCKET_COLOR_RELIC_HOLY = 0x010000, + SOCKET_COLOR_PUNCHCARD_RED = 0x020000, + SOCKET_COLOR_PUNCHCARD_YELLOW = 0x040000, + SOCKET_COLOR_PUNCHCARD_BLUE = 0x080000, + SOCKET_COLOR_DOMINATION = 0x100000, + SOCKET_COLOR_CYPHER = 0x200000, + SOCKET_COLOR_TINKER = 0x400000, + SOCKET_COLOR_PRIMORDIAL = 0x800000, +}; + +extern int32 const SocketColorToGemTypeMask[26]; #define SOCKET_COLOR_STANDARD (SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE) diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 1cb77b9afe2..8d125ed74db 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -2121,7 +2121,7 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi data << int32(GuildTimeStamp); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember)) { - for (uint32 i = 0; i < 125; ++i) + for (uint32 i = 0; i < 175; ++i) { QuestLog[i].WriteCreate(data, owner, receiver); } @@ -2180,7 +2180,7 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { - Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000001Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x3FFFFFF8u }); + Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000001Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFE00000u, 0x0000FFFFu }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } @@ -2188,20 +2188,20 @@ void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember)) - allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFE0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000007u }; + allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFE0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x001FFFFFu, 0x00000000u }; } void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) { - Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000001Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x3FFFFFF8u }); + Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000001Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFE00000u, 0x0000FFFFu }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask &= allowedMaskForTarget; } void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const { - data.WriteBits(changesMask.GetBlocksMask(0), 6); - for (uint32 i = 0; i < 6; ++i) + data.WriteBits(changesMask.GetBlocksMask(0), 8); + for (uint32 i = 0; i < 8; ++i) if (changesMask.GetBlock(i)) data.WriteBits(changesMask.GetBlock(i), 32); @@ -2413,7 +2413,7 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign } if (changesMask[37]) { - for (uint32 i = 0; i < 125; ++i) + for (uint32 i = 0; i < 175; ++i) { if (changesMask[38 + i]) { @@ -2424,21 +2424,21 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign } } } - if (changesMask[163]) + if (changesMask[213]) { for (uint32 i = 0; i < 19; ++i) { - if (changesMask[164 + i]) + if (changesMask[214 + i]) { VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[183]) + if (changesMask[233]) { for (uint32 i = 0; i < 6; ++i) { - if (changesMask[184 + i]) + if (changesMask[234 + i]) { data << float(AvgItemLevel[i]); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 3048896d2f7..ee689dd4fa4 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -458,7 +458,7 @@ struct CTROptions : public IsUpdateFieldStructureTag bool operator!=(CTROptions const& right) const { return !(*this == right); } }; -struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<190> +struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<240> { UpdateField<bool, 0, 1> HasQuestSession; UpdateField<bool, 0, 2> HasLevelLink; @@ -495,9 +495,9 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<190> UpdateField<int32, 32, 34> CovenantID; UpdateField<int32, 32, 35> SoulbindID; UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 36> DungeonScore; - UpdateFieldArray<UF::QuestLog, 125, 37, 38> QuestLog; - UpdateFieldArray<UF::VisibleItem, 19, 163, 164> VisibleItems; - UpdateFieldArray<float, 6, 183, 184> AvgItemLevel; + UpdateFieldArray<UF::QuestLog, 175, 37, 38> QuestLog; + UpdateFieldArray<UF::VisibleItem, 19, 213, 214> VisibleItems; + UpdateFieldArray<float, 6, 233, 234> AvgItemLevel; 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/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 6fb901e19b1..380c5edf068 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1467,8 +1467,6 @@ void WorldSession::SendFeatureSystemStatus() /// START OF DUMMY VALUES features.ComplaintStatus = COMPLAINT_ENABLED_WITH_AUTO_IGNORE; - features.TwitterPostThrottleLimit = 60; - features.TwitterPostThrottleCooldown = 20; features.CfgRealmID = 2; features.CfgRealmRecID = 0; features.TokenPollTimeSeconds = 300; diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 1f482398a0a..256ce0f5aab 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -43,6 +43,13 @@ #include "World.h" #include <algorithm> +enum class ChatWhisperTargetStatus : uint8 +{ + CanWhisper = 0, + Offline = 1, + WrongFaction = 2 +}; + inline bool isNasty(uint8 c) { if (c == '\t') @@ -746,3 +753,25 @@ void WorldSession::SendChatRestricted(ChatRestrictionType restriction) packet.Reason = restriction; SendPacket(packet.Write()); } + +void WorldSession::HandleChatCanLocalWhisperTargetRequest(WorldPackets::Chat::CanLocalWhisperTargetRequest const& canLocalWhisperTargetRequest) +{ + ChatWhisperTargetStatus status = [&] + { + Player* sender = GetPlayer(); + Player* receiver = ObjectAccessor::FindConnectedPlayer(canLocalWhisperTargetRequest.WhisperTarget); + if (!receiver || (!receiver->isAcceptWhispers() && receiver->GetSession()->HasPermission(rbac::RBAC_PERM_CAN_FILTER_WHISPERS) && !receiver->IsInWhisperWhiteList(sender->GetGUID()))) + return ChatWhisperTargetStatus::Offline; + + if (!receiver->IsInWhisperWhiteList(sender->GetGUID()) && !receiver->IsGameMasterAcceptingWhispers()) + if (GetPlayer()->GetEffectiveTeam() != receiver->GetEffectiveTeam() && !HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT)) + return ChatWhisperTargetStatus::WrongFaction; + + return ChatWhisperTargetStatus::CanWhisper; + }(); + + WorldPackets::Chat::CanLocalWhisperTargetResponse canLocalWhisperTargetResponse; + canLocalWhisperTargetResponse.WhisperTarget = canLocalWhisperTargetRequest.WhisperTarget; + canLocalWhisperTargetResponse.Status = status; + SendPacket(canLocalWhisperTargetResponse.Write()); +} diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 4e707a2262e..69d22991c12 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1431,6 +1431,8 @@ enum SpellEffectName SPELL_EFFECT_GATHERING = 302, SPELL_EFFECT_CREATE_TRAIT_TREE_CONFIG = 303, // MiscValue[0] = TraitTreeID SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG = 304, + SPELL_EFFECT_305 = 305, + SPELL_EFFECT_306 = 306, TOTAL_SPELL_EFFECTS }; @@ -7955,41 +7957,43 @@ enum class GameError : uint32 ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1077, ERR_SOCKETING_REQUIRES_TINKER_GEM = 1078, ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1079, - ERR_LEVEL_LINKING_RESULT_LINKED = 1080, - ERR_LEVEL_LINKING_RESULT_UNLINKED = 1081, - ERR_CLUB_FINDER_ERROR_POST_CLUB = 1082, - ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1083, - ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1084, - ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1085, - ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1086, - ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1087, - ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1088, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1089, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1090, - ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1091, - ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1092, - ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1093, - ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1094, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1095, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1096, - ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1097, - ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1098, - ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1099, - ERR_SOULBIND_INVALID_CONDUIT = 1100, - ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1101, - ERR_SOULBIND_INVALID_TALENT = 1102, - ERR_SOULBIND_DUPLICATE_CONDUIT = 1103, - ERR_ACTIVATE_SOULBIND_S = 1104, - ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1105, - ERR_CANT_USE_PROFANITY = 1106, - ERR_NOT_IN_PET_BATTLE = 1107, - ERR_NOT_IN_NPE = 1108, - ERR_NO_SPEC = 1109, - ERR_NO_DOMINATIONSHARD_OVERWRITE = 1110, - ERR_USE_WEEKLY_REWARDS_DISABLED = 1111, - ERR_CROSS_FACTION_GROUP_JOINED = 1112, - ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1113, - ERR_EQUIPABLESPELLS_SLOTS_FULL = 1114, + ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1080, + ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1081, + ERR_LEVEL_LINKING_RESULT_LINKED = 1082, + ERR_LEVEL_LINKING_RESULT_UNLINKED = 1083, + ERR_CLUB_FINDER_ERROR_POST_CLUB = 1084, + ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1085, + ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1086, + ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1087, + ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1088, + ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1089, + ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1090, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1091, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1092, + ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1093, + ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1094, + ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1095, + ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1096, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1097, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1098, + ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1099, + ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1100, + ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1101, + ERR_SOULBIND_INVALID_CONDUIT = 1102, + ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1103, + ERR_SOULBIND_INVALID_TALENT = 1104, + ERR_SOULBIND_DUPLICATE_CONDUIT = 1105, + ERR_ACTIVATE_SOULBIND_S = 1106, + ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1107, + ERR_CANT_USE_PROFANITY = 1108, + ERR_NOT_IN_PET_BATTLE = 1109, + ERR_NOT_IN_NPE = 1110, + ERR_NO_SPEC = 1111, + ERR_NO_DOMINATIONSHARD_OVERWRITE = 1112, + ERR_USE_WEEKLY_REWARDS_DISABLED = 1113, + ERR_CROSS_FACTION_GROUP_JOINED = 1114, + ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1115, + ERR_EQUIPABLESPELLS_SLOTS_FULL = 1116, }; enum class MountResult : uint32 diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index e3eec9efc7e..faaea86fdcd 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -280,6 +280,8 @@ void AuctionBrowseQuery::Read() _worldPacket >> Offset; _worldPacket >> MinLevel; _worldPacket >> MaxLevel; + _worldPacket >> Unused1007_1; + _worldPacket >> Unused1007_2; Filters = _worldPacket.read<AuctionHouseFilterMask, uint32>(); uint32 knownPetsSize = _worldPacket.read<uint32>(); diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h index da5a2a6570f..9a6a8b729fc 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.h +++ b/src/server/game/Server/Packets/AuctionHousePackets.h @@ -152,6 +152,8 @@ namespace WorldPackets uint32 Offset = 0; uint8 MinLevel = 1; uint8 MaxLevel = MAX_LEVEL; + uint8 Unused1007_1 = 0; + uint8 Unused1007_2 = 0; AuctionHouseFilterMask Filters = AuctionHouseFilterMask(0); std::vector<uint8> KnownPets; // size checked separately in Read() int8 MaxPetLevel = 0; diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index c99a5f1b577..fccac7ce49a 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -178,7 +178,7 @@ WorldPacket const* WorldPackets::Chat::Chat::Write() _worldPacket.WriteBits(Prefix.length(), 5); _worldPacket.WriteBits(_Channel.length(), 7); _worldPacket.WriteBits(ChatText.length(), 12); - _worldPacket.WriteBits(_ChatFlags, 14); + _worldPacket.WriteBits(_ChatFlags, 15); _worldPacket.WriteBit(HideChatLog); _worldPacket.WriteBit(FakeSenderName); _worldPacket.WriteBit(Unused_801.has_value()); @@ -303,3 +303,16 @@ WorldPacket const* WorldPackets::Chat::ChatRestricted::Write() return &_worldPacket; } + +void WorldPackets::Chat::CanLocalWhisperTargetRequest::Read() +{ + _worldPacket >> WhisperTarget; +} + +WorldPacket const* WorldPackets::Chat::CanLocalWhisperTargetResponse::Write() +{ + _worldPacket << WhisperTarget; + _worldPacket << int32(Status); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index 6c6515a6848..c4a79438d56 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -26,6 +26,7 @@ #include "SharedDefines.h" class WorldObject; +enum class ChatWhisperTargetStatus : uint8; namespace WorldPackets { @@ -323,6 +324,27 @@ namespace WorldPackets uint8 Reason = 0; }; + + class CanLocalWhisperTargetRequest final : public ClientPacket + { + public: + CanLocalWhisperTargetRequest(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST, std::move(packet)) { } + + void Read() override; + + ObjectGuid WhisperTarget; + }; + + class CanLocalWhisperTargetResponse final : public ServerPacket + { + public: + CanLocalWhisperTargetResponse() : ServerPacket(SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE, 16 + 1) { } + + WorldPacket const* Write() override; + + ObjectGuid WhisperTarget; + ChatWhisperTargetStatus Status = {}; + }; } } diff --git a/src/server/game/Server/Packets/GameObjectPackets.cpp b/src/server/game/Server/Packets/GameObjectPackets.cpp index 987a0e4edac..4b7ca3ffcd3 100644 --- a/src/server/game/Server/Packets/GameObjectPackets.cpp +++ b/src/server/game/Server/Packets/GameObjectPackets.cpp @@ -20,13 +20,11 @@ void WorldPackets::GameObject::GameObjUse::Read() { _worldPacket >> Guid; - IsSoftInteract = _worldPacket.ReadBit(); } void WorldPackets::GameObject::GameObjReportUse::Read() { _worldPacket >> Guid; - IsSoftInteract = _worldPacket.ReadBit(); } WorldPacket const* WorldPackets::GameObject::GameObjectDespawn::Write() diff --git a/src/server/game/Server/Packets/GameObjectPackets.h b/src/server/game/Server/Packets/GameObjectPackets.h index d7ce351bdab..1604adecc55 100644 --- a/src/server/game/Server/Packets/GameObjectPackets.h +++ b/src/server/game/Server/Packets/GameObjectPackets.h @@ -35,7 +35,6 @@ namespace WorldPackets void Read() override; ObjectGuid Guid; - bool IsSoftInteract = false; }; class GameObjReportUse final : public ClientPacket @@ -46,7 +45,6 @@ namespace WorldPackets void Read() override; ObjectGuid Guid; - bool IsSoftInteract = false; }; class GameObjectDespawn final : public ServerPacket diff --git a/src/server/game/Server/Packets/LootPackets.cpp b/src/server/game/Server/Packets/LootPackets.cpp index ee205ab1908..883fa6d4cea 100644 --- a/src/server/game/Server/Packets/LootPackets.cpp +++ b/src/server/game/Server/Packets/LootPackets.cpp @@ -33,7 +33,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Loot::LootItemData const& void WorldPackets::Loot::LootUnit::Read() { _worldPacket >> Unit; - IsSoftInteract = _worldPacket.ReadBit(); } WorldPacket const* WorldPackets::Loot::LootResponse::Write() @@ -77,6 +76,8 @@ void WorldPackets::Loot::LootItem::Read() _worldPacket >> Loot[i].Object; _worldPacket >> Loot[i].LootListID; } + + IsSoftInteract = _worldPacket.ReadBit(); } void WorldPackets::Loot::MasterLootItem::Read() @@ -107,6 +108,11 @@ void WorldPackets::Loot::LootRelease::Read() _worldPacket >> Unit; } +void WorldPackets::Loot::LootMoney::Read() +{ + IsSoftInteract = _worldPacket.ReadBit(); +} + WorldPacket const* WorldPackets::Loot::LootMoneyNotify::Write() { _worldPacket << uint64(Money); diff --git a/src/server/game/Server/Packets/LootPackets.h b/src/server/game/Server/Packets/LootPackets.h index a69b36586c9..6f6f6456f2c 100644 --- a/src/server/game/Server/Packets/LootPackets.h +++ b/src/server/game/Server/Packets/LootPackets.h @@ -36,7 +36,6 @@ namespace WorldPackets void Read() override; ObjectGuid Unit; - bool IsSoftInteract = false; }; struct LootItemData @@ -93,6 +92,7 @@ namespace WorldPackets void Read() override; Array<LootRequest, 1000> Loot; + bool IsSoftInteract = false; }; class MasterLootItem final : public ClientPacket @@ -133,7 +133,9 @@ namespace WorldPackets public: LootMoney(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_MONEY, std::move(packet)) { } - void Read() override { } + void Read() override; + + bool IsSoftInteract = false; }; class LootMoneyNotify final : public ServerPacket diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp index 95582186f86..77c4ae5432b 100644 --- a/src/server/game/Server/Packets/MailPackets.cpp +++ b/src/server/game/Server/Packets/MailPackets.cpp @@ -166,6 +166,13 @@ void WorldPackets::Mail::MailCreateTextItem::Read() _worldPacket >> MailID; } +ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Mail::SendMail::StructSendMail::MailAttachment& attachment) +{ + data >> attachment.AttachPosition; + data >> attachment.ItemGUID; + return data; +} + void WorldPackets::Mail::SendMail::Read() { _worldPacket >> Info.Mailbox; @@ -183,11 +190,8 @@ void WorldPackets::Mail::SendMail::Read() Info.Subject = _worldPacket.ReadString(subjectLength); Info.Body = _worldPacket.ReadString(bodyLength); - for (auto& att : Info.Attachments) - { - _worldPacket >> att.AttachPosition; - _worldPacket >> att.ItemGUID; - } + for (StructSendMail::MailAttachment& att : Info.Attachments) + _worldPacket >> att; } void WorldPackets::Mail::MailReturnToSender::Read() diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 49159b9c370..e0e38969491 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -216,11 +216,11 @@ WorldPacket const* GossipComplete::Write() WorldPacket const* GossipPOI::Write() { _worldPacket << int32(ID); + _worldPacket << int32(Flags); _worldPacket << Pos; _worldPacket << int32(Icon); _worldPacket << int32(Importance); _worldPacket << int32(WMOGroupID); - _worldPacket.WriteBits(Flags, 14); _worldPacket.WriteBits(Name.length(), 6); _worldPacket.FlushBits(); _worldPacket.WriteString(Name); diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index a91b74076f8..72c5b922bc0 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -950,7 +950,6 @@ void SpellClick::Read() { _worldPacket >> SpellClickUnitGuid; TryAutoDismount = _worldPacket.ReadBit(); - IsSoftInteract = _worldPacket.ReadBit(); } WorldPacket const* ResyncRunes::Write() diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index c4abdceb31f..3f57ea4f205 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -949,7 +949,6 @@ namespace WorldPackets ObjectGuid SpellClickUnitGuid; bool TryAutoDismount = false; - bool IsSoftInteract = false; }; class ResyncRunes final : public ServerPacket diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 1b741458266..2bf9974a4a6 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -48,6 +48,17 @@ ByteBuffer& operator<<(ByteBuffer& data, GameRuleValuePair const& gameRuleValue) return data; } +ByteBuffer& operator<<(ByteBuffer& data, DebugTimeEventInfo const& debugTimeEventInfo) +{ + data << uint32(debugTimeEventInfo.TimeEvent); + data.WriteBits(debugTimeEventInfo.Text.length(), 7); + data.FlushBits(); + + data.WriteString(debugTimeEventInfo.Text); + + return data; +} + WorldPacket const* FeatureSystemStatus::Write() { _worldPacket << uint8(ComplaintStatus); @@ -59,9 +70,7 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << uint32(RAFSystem.MaxRecruitMonths); _worldPacket << uint32(RAFSystem.MaxRecruitmentUses); _worldPacket << uint32(RAFSystem.DaysInCycle); - - _worldPacket << uint32(TwitterPostThrottleLimit); - _worldPacket << uint32(TwitterPostThrottleCooldown); + _worldPacket << uint32(RAFSystem.Unknown1007); _worldPacket << uint32(TokenPollTimeSeconds); _worldPacket << uint32(KioskSessionMinutes); @@ -97,10 +106,9 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(RestrictedAccount); _worldPacket.WriteBit(CommerceSystemEnabled); _worldPacket.WriteBit(TutorialsEnabled); - _worldPacket.WriteBit(TwitterEnabled); _worldPacket.WriteBit(Unk67); - _worldPacket.WriteBit(WillKickFromWorld); + _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.WriteBit(CompetitiveModeEnabled); _worldPacket.WriteBit(TokenBalanceEnabled); @@ -108,8 +116,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(ClubsEnabled); _worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed); _worldPacket.WriteBit(ClubsCharacterClubTypeAllowed); - _worldPacket.WriteBit(ClubsPresenceUpdateEnabled); + _worldPacket.WriteBit(VoiceChatDisabledByParentalControl); _worldPacket.WriteBit(VoiceChatMutedByParentalControl); _worldPacket.WriteBit(QuestSessionEnabled); @@ -117,8 +125,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(ClubFinderEnabled); _worldPacket.WriteBit(Unknown901CheckoutRelated); _worldPacket.WriteBit(TextToSpeechFeatureEnabled); - _worldPacket.WriteBit(ChatDisabledByDefault); + _worldPacket.WriteBit(ChatDisabledByPlayer); _worldPacket.WriteBit(LFGListCustomRequiresAuthenticator); _worldPacket.WriteBit(AddonsDisabled); @@ -199,6 +207,10 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket.WriteBit(LaunchETA.has_value()); _worldPacket.WriteBit(AddonsDisabled); _worldPacket.WriteBit(Unused1000); + + _worldPacket.WriteBit(AccountSaveDataExportEnabled); + _worldPacket.WriteBit(AccountLockedByExport); + _worldPacket.FlushBits(); if (EuropaTicketSystemStatus) @@ -219,6 +231,8 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket << int16(MaxPlayerNameQueriesPerPacket); _worldPacket << int16(PlayerNameQueryTelemetryInterval); _worldPacket << PlayerNameQueryInterval; + _worldPacket << uint32(DebugTimeEvents.size()); + _worldPacket << int32(Unused1007); if (LaunchETA) _worldPacket << int32(*LaunchETA); @@ -229,6 +243,9 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() for (GameRuleValuePair const& gameRuleValue : GameRuleValues) _worldPacket << gameRuleValue; + for (DebugTimeEventInfo const& debugTimeEventInfo : DebugTimeEvents) + _worldPacket << debugTimeEventInfo; + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index bd1affa1f6b..2f1dd4d7c97 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -103,6 +103,7 @@ namespace WorldPackets uint32 MaxRecruitMonths = 0; uint32 MaxRecruitmentUses = 0; uint32 DaysInCycle = 0; + uint32 Unknown1007 = 0; }; FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 200) { } @@ -118,8 +119,6 @@ namespace WorldPackets uint32 CfgRealmID = 0; uint8 ComplaintStatus = 0; int32 CfgRealmRecID = 0; - uint32 TwitterPostThrottleLimit = 0; ///< Number of twitter posts the client can send before they start being throttled - uint32 TwitterPostThrottleCooldown = 0; ///< Time in seconds the client has to wait before posting again after hitting post limit uint32 TokenPollTimeSeconds = 0; int64 TokenBalanceAmount = 0; uint32 BpayStoreProductDeliveryDelay = 0; @@ -133,7 +132,6 @@ namespace WorldPackets bool ItemRestorationButtonEnabled = false; bool CharUndeleteEnabled = false; ///< Implemented bool BpayStoreDisabledByParentalControls = false; - bool TwitterEnabled = false; bool CommerceSystemEnabled = false; bool Unk67 = false; bool WillKickFromWorld = false; @@ -167,6 +165,12 @@ namespace WorldPackets std::vector<GameRuleValuePair> GameRuleValues; }; + struct DebugTimeEventInfo + { + uint32 TimeEvent = 0; + std::string_view Text; + }; + class FeatureSystemStatusGlueScreen final : public ServerPacket { public: @@ -193,6 +197,8 @@ namespace WorldPackets bool Unknown901CheckoutRelated = false; // NYI bool AddonsDisabled = false; bool Unused1000 = false; + bool AccountSaveDataExportEnabled = false; + bool AccountLockedByExport = false; Optional<EuropaTicketConfig> EuropaTicketSystemStatus; std::vector<int32> LiveRegionCharacterCopySourceRegions; uint32 TokenPollTimeSeconds = 0; // NYI @@ -206,10 +212,12 @@ namespace WorldPackets uint32 KioskSessionMinutes = 0; int32 ActiveSeason = 0; // Currently active Classic season std::vector<GameRuleValuePair> GameRuleValues; - int16 MaxPlayerNameQueriesPerPacket = 50; - int16 PlayerNameQueryTelemetryInterval = 600; + int16 MaxPlayerNameQueriesPerPacket = 50; + int16 PlayerNameQueryTelemetryInterval = 600; Duration<Seconds, uint32> PlayerNameQueryInterval = 10s; Optional<int32> LaunchETA; + std::vector<DebugTimeEventInfo> DebugTimeEvents; + int32 Unused1007 = 0; }; class MOTD final : public ServerPacket diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 49343589912..018e4fee0e8 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -24,6 +24,7 @@ ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Ticket::SupportTicketHead data >> header.MapID; data >> header.Position; data >> header.Facing; + data >> header.Program; return data; } @@ -211,6 +212,7 @@ ByteBuffer& operator>>(ByteBuffer& data, Optional<WorldPackets::Ticket::SupportT data >> lfgListSearchResult->RideTicket; data >> lfgListSearchResult->GroupFinderActivityID; + data >> lfgListSearchResult->Unknown1007; data >> lfgListSearchResult->LastTitleAuthorGuid; data >> lfgListSearchResult->LastDescriptionAuthorGuid; data >> lfgListSearchResult->LastVoiceChatAuthorGuid; diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index 5cece62fa03..aed1cc1d185 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -175,6 +175,7 @@ namespace WorldPackets { WorldPackets::LFG::RideTicket RideTicket; uint32 GroupFinderActivityID = 0; + uint8 Unknown1007 = 0; ObjectGuid LastTitleAuthorGuid; ObjectGuid LastDescriptionAuthorGuid; ObjectGuid LastVoiceChatAuthorGuid; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 60ca120a7a5..9d76171bc53 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -290,6 +290,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRaceOrFactionChangeOpcode); DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode); DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_TARGETED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageTargetedOpcode); + DEFINE_HANDLER(CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatCanLocalWhisperTargetRequest); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_ANNOUNCEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_BAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_DECLINE_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); @@ -834,6 +835,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_REVERT_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_RIDE_VEHICLE_INTERACT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRideVehicleInteract); DEFINE_HANDLER(CMSG_SAVE_CUF_PROFILES, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles); + DEFINE_HANDLER(CMSG_SAVE_ACCOUNT_DATA_EXPORT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetSave); DEFINE_HANDLER(CMSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblem); DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleScenePlaybackCanceled); @@ -860,6 +862,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetDungeonDifficultyOpcode); DEFINE_HANDLER(CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_EVERYONE_IS_ASSISTANT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetEveryoneIsAssistant); + DEFINE_HANDLER(CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_FACTION_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionAtWar); DEFINE_HANDLER(CMSG_SET_FACTION_INACTIVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionInactiveOpcode); DEFINE_HANDLER(CMSG_SET_FACTION_NOT_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionNotAtWar); @@ -942,9 +945,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems); DEFINE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetition); DEFINE_HANDLER(CMSG_TUTORIAL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialFlag); - DEFINE_HANDLER(CMSG_TWITTER_CHECK_STATUS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_TWITTER_CONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_TWITTER_DISCONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_UI_MAP_QUEST_LINES_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode); DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteOpcode); @@ -1195,6 +1195,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_AUTO_RESPONDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_IGNORED_ACCOUNT_MUTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_IS_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -2094,7 +2095,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TURN_IN_PETITION_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TUTORIAL_FLAGS, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_TWITTER_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_HEALING_RANGE_MODIFIED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 38a05995d99..a46c9bea1c5 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -44,14 +44,14 @@ enum OpcodeMisc : uint16 enum OpcodeClient : uint16 { - CMSG_ABANDON_NPE_RESPONSE = 0x33EB, + CMSG_ABANDON_NPE_RESPONSE = 0x33EA, CMSG_ACCEPT_GUILD_INVITE = 0x35FC, CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x3395, - CMSG_ACCEPT_SOCIAL_CONTRACT = 0x373C, + CMSG_ACCEPT_SOCIAL_CONTRACT = 0x373D, CMSG_ACCEPT_TRADE = 0x315A, CMSG_ACCEPT_WARGAME_INVITE = 0x35E0, - CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3731, - CMSG_ACTIVATE_SOULBIND = 0x33DA, + CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3732, + CMSG_ACTIVATE_SOULBIND = 0x33D9, CMSG_ACTIVATE_TAXI = 0x34B1, CMSG_ADDON_LIST = 0x35D8, CMSG_ADD_ACCOUNT_COSMETIC = 0x32B1, @@ -60,7 +60,7 @@ enum OpcodeClient : uint16 CMSG_ADD_IGNORE = 0x36D0, CMSG_ADD_TOY = 0x32B0, CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3204, - CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DD, + CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DC, CMSG_ADVENTURE_MAP_START_QUEST = 0x3369, CMSG_ALTER_APPEARANCE = 0x3503, CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B6, @@ -86,10 +86,10 @@ enum OpcodeClient : uint16 CMSG_AUCTION_PLACE_BID = 0x34D5, CMSG_AUCTION_REMOVE_ITEM = 0x34D3, CMSG_AUCTION_REPLICATE_ITEMS = 0x34D4, - CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3733, + CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3734, CMSG_AUCTION_SELL_COMMODITY = 0x34DF, CMSG_AUCTION_SELL_ITEM = 0x34D2, - CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3732, + CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3733, CMSG_AUTH_CONTINUED_SESSION = 0x3766, CMSG_AUTH_SESSION = 0x3765, CMSG_AUTOBANK_ITEM = 0x3997, @@ -118,17 +118,17 @@ enum OpcodeClient : uint16 CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36CF, CMSG_BATTLENET_REQUEST = 0x36F1, CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36C9, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x370F, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3710, CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C8, CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36BF, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3736, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3737, CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B7, CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B8, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3708, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3704, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3709, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3705, CMSG_BATTLE_PAY_START_PURCHASE = 0x36C7, CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36EE, - CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312B, + CMSG_BATTLE_PET_CLEAR_FANFARE = 0x3126, CMSG_BATTLE_PET_DELETE_PET = 0x3623, CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3624, CMSG_BATTLE_PET_MODIFY_NAME = 0x3626, @@ -179,7 +179,7 @@ enum OpcodeClient : uint16 CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500, CMSG_CANCEL_TRADE = 0x315C, CMSG_CAN_DUEL = 0x3660, - CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3703, + CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3704, CMSG_CAST_SPELL = 0x32B4, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F, CMSG_CHANGE_BAG_SLOT_FLAG = 0x334E, @@ -196,6 +196,7 @@ enum OpcodeClient : uint16 CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3690, CMSG_CHAT_ADDON_MESSAGE = 0x37EE, CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF, + CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x37F4, CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3, CMSG_CHAT_CHANNEL_BAN = 0x37E1, CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37E6, @@ -233,33 +234,33 @@ enum OpcodeClient : uint16 CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3643, CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3254, CMSG_CHOICE_RESPONSE = 0x32BC, - CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D9, - CMSG_CLAIM_WEEKLY_REWARD = 0x33B5, - CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3410, + CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D8, + CMSG_CLAIM_WEEKLY_REWARD = 0x33B4, + CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x340F, CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3214, - CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3412, - CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x340F, - CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x340E, - CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3413, + CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3411, + CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x340E, + CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x340D, + CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3412, CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3213, - CMSG_CLEAR_NEW_APPEARANCE = 0x312E, + CMSG_CLEAR_NEW_APPEARANCE = 0x3129, CMSG_CLEAR_RAID_MARKER = 0x31A7, CMSG_CLEAR_TRADE_ITEM = 0x315E, CMSG_CLIENT_PORT_GRAVEYARD = 0x353A, CMSG_CLOSE_INTERACTION = 0x3499, CMSG_CLOSE_QUEST_CHOICE = 0x32BD, - CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E1, - CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3414, - CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371A, - CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3718, - CMSG_CLUB_FINDER_POST = 0x3715, - CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371C, - CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3716, - CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3717, - CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371B, - CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371D, - CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x3719, - CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x3739, + CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E0, + CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3413, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371B, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3719, + CMSG_CLUB_FINDER_POST = 0x3716, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371D, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3717, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3718, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371C, + CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371E, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371A, + CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x373A, CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F3, CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3631, CMSG_COMMENTATOR_ENABLE = 0x35F0, @@ -268,7 +269,7 @@ enum OpcodeClient : uint16 CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F1, CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3, CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2, - CMSG_COMMENTATOR_SPECTATE = 0x3737, + CMSG_COMMENTATOR_SPECTATE = 0x3738, CMSG_COMMENTATOR_START_WARGAME = 0x35EF, CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E0, CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EA, @@ -321,7 +322,7 @@ enum OpcodeClient : uint16 CMSG_DF_TELEPORT = 0x3617, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A41, CMSG_DISMISS_CRITTER = 0x3507, - CMSG_DO_COUNTDOWN = 0x3714, + CMSG_DO_COUNTDOWN = 0x3715, CMSG_DO_MASTER_LOOT_ROLL = 0x321B, CMSG_DO_READY_CHECK = 0x3632, CMSG_DUEL_RESPONSE = 0x34F0, @@ -362,18 +363,18 @@ enum OpcodeClient : uint16 CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F9, CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F1, CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32FF, - CMSG_GARRISON_SOCKET_TALENT = 0x33EE, + CMSG_GARRISON_SOCKET_TALENT = 0x33ED, CMSG_GARRISON_START_MISSION = 0x333B, CMSG_GARRISON_SWAP_BUILDINGS = 0x32E9, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7, CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B2, - CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3730, + CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3731, CMSG_GET_GARRISON_INFO = 0x32DE, CMSG_GET_ITEM_PURCHASE_DATA = 0x3542, CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3319, CMSG_GET_MIRROR_IMAGE_DATA = 0x32AE, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE, - CMSG_GET_RAF_ACCOUNT_INFO = 0x371E, + CMSG_GET_RAF_ACCOUNT_INFO = 0x371F, CMSG_GET_REMAINING_GAME_TIME = 0x36E7, CMSG_GET_TROPHY_LIST = 0x332C, CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DB, @@ -435,7 +436,7 @@ enum OpcodeClient : uint16 CMSG_INITIATE_TRADE = 0x3156, CMSG_INSPECT = 0x353C, CMSG_INSTANCE_LOCK_RESPONSE = 0x351A, - CMSG_ISLAND_QUEUE = 0x33B1, + CMSG_ISLAND_QUEUE = 0x33B0, CMSG_ITEM_PURCHASE_REFUND = 0x3543, CMSG_ITEM_TEXT_QUERY = 0x334B, CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DF, @@ -490,7 +491,7 @@ enum OpcodeClient : uint16 CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C2, CMSG_MINIMAP_PING = 0x3649, CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318B, - CMSG_MOUNT_CLEAR_FANFARE = 0x312C, + CMSG_MOUNT_CLEAR_FANFARE = 0x3127, CMSG_MOUNT_SET_FAVORITE = 0x3630, CMSG_MOUNT_SPECIAL_ANIM = 0x3297, CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A50, @@ -587,7 +588,7 @@ enum OpcodeClient : uint16 CMSG_NEXT_CINEMATIC_CAMERA = 0x3557, CMSG_OBJECT_UPDATE_FAILED = 0x3181, CMSG_OBJECT_UPDATE_RESCUED = 0x3182, - CMSG_OFFER_PETITION = 0x33D8, + CMSG_OFFER_PETITION = 0x33D7, CMSG_OPENING_CINEMATIC = 0x3556, CMSG_OPEN_ITEM = 0x334C, CMSG_OPEN_MISSION_NPC = 0x330F, @@ -599,11 +600,11 @@ enum OpcodeClient : uint16 CMSG_PARTY_INVITE_RESPONSE = 0x3604, CMSG_PARTY_UNINVITE = 0x3645, CMSG_PERFORM_ITEM_INTERACTION = 0x323A, - CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x313A, - CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3400, - CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3401, - CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3402, - CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x33FF, + CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x3135, + CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x33FF, + CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3400, + CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3401, + CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x33FE, CMSG_PETITION_BUY = 0x34CF, CMSG_PETITION_RENAME_GUILD = 0x36C5, CMSG_PETITION_SHOW_LIST = 0x34CE, @@ -669,25 +670,25 @@ enum OpcodeClient : uint16 CMSG_QUEST_LOG_REMOVE_QUEST = 0x3541, CMSG_QUEST_POI_QUERY = 0x36AC, CMSG_QUEST_PUSH_RESULT = 0x34A6, - CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C9, - CMSG_QUEST_SESSION_REQUEST_START = 0x33C8, - CMSG_QUEST_SESSION_REQUEST_STOP = 0x3729, + CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C8, + CMSG_QUEST_SESSION_REQUEST_START = 0x33C7, + CMSG_QUEST_SESSION_REQUEST_STOP = 0x372A, CMSG_QUEUED_MESSAGES_END = 0x376C, CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3702, CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3701, - CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x372E, + CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x372F, CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3700, CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36FF, CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3512, - CMSG_RAF_CLAIM_NEXT_REWARD = 0x371F, - CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3721, - CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3720, + CMSG_RAF_CLAIM_NEXT_REWARD = 0x3720, + CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3722, + CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3721, CMSG_RANDOM_ROLL = 0x3652, CMSG_READY_CHECK_RESPONSE = 0x3633, CMSG_READ_ITEM = 0x334D, CMSG_RECLAIM_CORPSE = 0x34E9, CMSG_REMOVE_NEW_ITEM = 0x3373, - CMSG_REMOVE_RAF_RECRUIT = 0x3722, + CMSG_REMOVE_RAF_RECRUIT = 0x3723, CMSG_REORDER_CHARACTERS = 0x35E9, CMSG_REPAIR_ITEM = 0x34FA, CMSG_REPLACE_TROPHY = 0x332E, @@ -697,8 +698,8 @@ enum OpcodeClient : uint16 CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A4, CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FD, CMSG_REPORT_PVP_PLAYER_AFK = 0x3502, - CMSG_REPORT_SERVER_LAG = 0x33C1, - CMSG_REPORT_STUCK_IN_COMBAT = 0x33C2, + CMSG_REPORT_SERVER_LAG = 0x33C0, + CMSG_REPORT_STUCK_IN_COMBAT = 0x33C1, CMSG_REQUEST_ACCOUNT_DATA = 0x3692, CMSG_REQUEST_AREA_POI_UPDATE = 0x3372, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC, @@ -706,13 +707,13 @@ enum OpcodeClient : uint16 CMSG_REQUEST_CEMETERY_LIST = 0x3177, CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3689, CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32D0, - CMSG_REQUEST_COVENANT_CALLINGS = 0x33B3, + CMSG_REQUEST_COVENANT_CALLINGS = 0x33B2, CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353D, CMSG_REQUEST_FORCED_REACTIONS = 0x320E, - CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33ED, + CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33EC, CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A9, CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A8, - CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C3, + CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C2, CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32BF, CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3208, CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3209, @@ -731,7 +732,7 @@ enum OpcodeClient : uint16 CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3246, CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3245, CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3247, - CMSG_REQUEST_WEEKLY_REWARDS = 0x33B6, + CMSG_REQUEST_WEEKLY_REWARDS = 0x33B5, CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3371, CMSG_RESET_CHALLENGE_MODE = 0x3206, CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3207, @@ -739,6 +740,7 @@ enum OpcodeClient : uint16 CMSG_RESURRECT_RESPONSE = 0x3681, CMSG_REVERT_MONUMENT_APPEARANCE = 0x3330, CMSG_RIDE_VEHICLE_INTERACT = 0x3248, + CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3741, CMSG_SAVE_CUF_PROFILES = 0x318C, CMSG_SAVE_EQUIPMENT_SET = 0x3518, CMSG_SAVE_GUILD_EMBLEM = 0x32C3, @@ -766,6 +768,7 @@ enum OpcodeClient : uint16 CMSG_SET_DUNGEON_DIFFICULTY = 0x3680, CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x327E, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3618, + CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3703, CMSG_SET_FACTION_AT_WAR = 0x34EC, CMSG_SET_FACTION_INACTIVE = 0x34EE, CMSG_SET_FACTION_NOT_AT_WAR = 0x34ED, @@ -796,7 +799,7 @@ enum OpcodeClient : uint16 CMSG_SHOW_TRADE_SKILL = 0x36BE, CMSG_SIGN_PETITION = 0x3546, CMSG_SILENCE_PARTY_TALKER = 0x3650, - CMSG_SOCIAL_CONTRACT_REQUEST = 0x373B, + CMSG_SOCIAL_CONTRACT_REQUEST = 0x373C, CMSG_SOCKET_GEMS = 0x34F9, CMSG_SORT_BAGS = 0x3354, CMSG_SORT_BANK_BAGS = 0x3355, @@ -815,7 +818,7 @@ enum OpcodeClient : uint16 CMSG_START_WAR_GAME = 0x35DE, CMSG_STORE_GUILD_BANK_ITEM = 0x34BE, CMSG_SUBMIT_USER_FEEDBACK = 0x3691, - CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E2, + CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E1, CMSG_SUMMON_RESPONSE = 0x3668, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644, CMSG_SURRENDER_ARENA = 0x3174, @@ -839,25 +842,22 @@ enum OpcodeClient : uint16 CMSG_TOGGLE_DIFFICULTY = 0x3655, CMSG_TOGGLE_PVP = 0x32C6, CMSG_TOTEM_DESTROYED = 0x3506, - CMSG_TOY_CLEAR_FANFARE = 0x312D, + CMSG_TOY_CLEAR_FANFARE = 0x3128, CMSG_TRADE_SKILL_SET_FAVORITE = 0x336F, CMSG_TRAINER_BUY_SPELL = 0x34B4, CMSG_TRAINER_LIST = 0x34B3, - CMSG_TRAITS_COMMIT_CONFIG = 0x3408, - CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3406, + CMSG_TRAITS_COMMIT_CONFIG = 0x3407, + CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3405, CMSG_TRANSMOGRIFY_ITEMS = 0x3198, CMSG_TURN_IN_PETITION = 0x3548, CMSG_TUTORIAL = 0x36D8, - CMSG_TWITTER_CHECK_STATUS = 0x3129, - CMSG_TWITTER_CONNECT = 0x3126, - CMSG_TWITTER_DISCONNECT = 0x312A, - CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B2, + CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B1, CMSG_UNACCEPT_TRADE = 0x315B, CMSG_UNDELETE_CHARACTER = 0x36DA, CMSG_UNLEARN_SKILL = 0x34F3, CMSG_UNLEARN_SPECIALIZATION = 0x31A6, CMSG_UNLOCK_VOID_STORAGE = 0x31A2, - CMSG_UPDATE_AADC_STATUS = 0x3735, + CMSG_UPDATE_AADC_STATUS = 0x3736, CMSG_UPDATE_ACCOUNT_DATA = 0x3693, CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32B6, CMSG_UPDATE_CLIENT_SETTINGS = 0x3662, @@ -867,19 +867,19 @@ enum OpcodeClient : uint16 CMSG_UPDATE_SPELL_VISUAL = 0x32B5, CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36EF, CMSG_UPGRADE_GARRISON = 0x32D9, - CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E0, + CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33DF, CMSG_USED_FOLLOW = 0x3187, CMSG_USE_CRITTER_ITEM = 0x324E, CMSG_USE_EQUIPMENT_SET = 0x3995, CMSG_USE_ITEM = 0x32AF, CMSG_USE_TOY = 0x32B2, - CMSG_VAS_CHECK_TRANSFER_OK = 0x3707, - CMSG_VAS_GET_QUEUE_MINUTES = 0x3706, - CMSG_VAS_GET_SERVICE_STATUS = 0x3705, + CMSG_VAS_CHECK_TRANSFER_OK = 0x3708, + CMSG_VAS_GET_QUEUE_MINUTES = 0x3707, + CMSG_VAS_GET_SERVICE_STATUS = 0x3706, CMSG_VIOLENCE_LEVEL = 0x3185, - CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370B, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370C, - CMSG_VOICE_CHAT_LOGIN = 0x370A, + CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370C, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370D, + CMSG_VOICE_CHAT_LOGIN = 0x370B, CMSG_VOID_STORAGE_TRANSFER = 0x31A4, CMSG_WARDEN3_DATA = 0x35EC, CMSG_WHO = 0x367F, @@ -917,7 +917,7 @@ enum OpcodeServer : uint16 SMSG_AE_LOOT_TARGETS = 0x2616, SMSG_AE_LOOT_TARGET_ACK = 0x2617, SMSG_AI_REACTION = 0x26B2, - SMSG_ALLIED_RACE_DETAILS = 0x27F5, + SMSG_ALLIED_RACE_DETAILS = 0x27F6, SMSG_ALL_ACCOUNT_CRITERIA = 0x2571, SMSG_ALL_ACHIEVEMENT_DATA = 0x2570, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8, @@ -935,18 +935,18 @@ enum OpcodeServer : uint16 SMSG_ARENA_CLEAR_OPPONENTS = 0x2647, SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2630, SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2646, - SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279F, - SMSG_ARTIFACT_FORGE_ERROR = 0x279D, - SMSG_ARTIFACT_RESPEC_PROMPT = 0x279E, - SMSG_ARTIFACT_XP_GAIN = 0x27E8, + SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x27A0, + SMSG_ARTIFACT_FORGE_ERROR = 0x279E, + SMSG_ARTIFACT_RESPEC_PROMPT = 0x279F, + SMSG_ARTIFACT_XP_GAIN = 0x27E9, SMSG_ATTACKER_STATE_UPDATE = 0x294D, SMSG_ATTACK_START = 0x2938, SMSG_ATTACK_STOP = 0x2939, SMSG_ATTACK_SWING_ERROR = 0x2947, SMSG_ATTACK_SWING_LANDED_LOG = 0x2948, - SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D1, - SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27D0, - SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CF, + SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D2, + SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27D1, + SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27D0, SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26EE, SMSG_AUCTION_COMMAND_RESULT = 0x26EB, SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2895, @@ -985,29 +985,29 @@ enum OpcodeServer : uint16 SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928, SMSG_BATTLEGROUND_POINTS = 0x2949, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x2784, - SMSG_BATTLENET_CHALLENGE_START = 0x2783, - SMSG_BATTLENET_NOTIFICATION = 0x2801, - SMSG_BATTLENET_RESPONSE = 0x2800, - SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2802, - SMSG_BATTLE_PAY_ACK_FAILED = 0x277E, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2773, - SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2774, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277D, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2771, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2770, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x2785, + SMSG_BATTLENET_CHALLENGE_START = 0x2784, + SMSG_BATTLENET_NOTIFICATION = 0x2802, + SMSG_BATTLENET_RESPONSE = 0x2801, + SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2803, + SMSG_BATTLE_PAY_ACK_FAILED = 0x277F, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2774, + SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2775, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277E, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2772, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2771, SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2881, - SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276E, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276F, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276D, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276B, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276C, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2772, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277C, - SMSG_BATTLE_PAY_START_CHECKOUT = 0x281D, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x277A, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2779, - SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2811, + SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276F, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2770, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276E, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276C, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276D, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2773, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277D, + SMSG_BATTLE_PAY_START_CHECKOUT = 0x281E, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x277B, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x277A, + SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2812, SMSG_BATTLE_PETS_HEALED = 0x25F2, SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2676, SMSG_BATTLE_PET_DELETED = 0x25EF, @@ -1064,7 +1064,7 @@ enum OpcodeServer : uint16 SMSG_CANCEL_SPELL_VISUAL = 0x2C47, SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C4B, SMSG_CAN_DUEL_RESULT = 0x2942, - SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2810, + SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2811, SMSG_CAPTURE_POINT_REMOVED = 0x292A, SMSG_CAST_FAILED = 0x2C5A, SMSG_CATEGORY_COOLDOWN = 0x2C16, @@ -1075,24 +1075,25 @@ enum OpcodeServer : uint16 SMSG_CHALLENGE_MODE_START = 0x2607, SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2608, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004, - SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2803, + SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2804, SMSG_CHANNEL_LIST = 0x2BC3, SMSG_CHANNEL_NOTIFY = 0x2BC0, SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1, SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2, - SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27BA, + SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27BB, SMSG_CHARACTER_LOGIN_FAILED = 0x2700, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2782, - SMSG_CHARACTER_RENAME_RESULT = 0x275D, - SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B9, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B8, - SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BB, - SMSG_CHARACTER_UPGRADE_STARTED = 0x27B7, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2783, + SMSG_CHARACTER_RENAME_RESULT = 0x275E, + SMSG_CHARACTER_UPGRADE_ABORTED = 0x27BA, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B9, + SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BC, + SMSG_CHARACTER_UPGRADE_STARTED = 0x27B8, SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DD, SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DE, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A4, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A5, SMSG_CHAT = 0x2BAD, SMSG_CHAT_AUTO_RESPONDED = 0x2BB8, + SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x2BCA, SMSG_CHAT_DOWN = 0x2BBD, SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x2BAC, SMSG_CHAT_IS_DOWN = 0x2BBE, @@ -1117,7 +1118,7 @@ enum OpcodeServer : uint16 SMSG_CLEAR_SPELL_CHARGES = 0x2C28, SMSG_CLEAR_TARGET = 0x2943, SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1, - SMSG_CLOSE_ARTIFACT_FORGE = 0x279C, + SMSG_CLOSE_ARTIFACT_FORGE = 0x279D, SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x284B, SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284E, SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x284C, @@ -1130,32 +1131,32 @@ enum OpcodeServer : uint16 SMSG_COMMENTATOR_MAP_INFO = 0x2702, SMSG_COMMENTATOR_PLAYER_INFO = 0x2703, SMSG_COMMENTATOR_STATE_CHANGED = 0x2701, - SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CC, - SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D8, - SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CE, - SMSG_COMMERCE_TOKEN_UPDATE = 0x27CD, + SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CD, + SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D9, + SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CF, + SMSG_COMMERCE_TOKEN_UPDATE = 0x27CE, SMSG_COMPLAINT_RESULT = 0x26A9, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2795, - SMSG_CONFIRM_PARTY_INVITE = 0x280F, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2796, + SMSG_CONFIRM_PARTY_INVITE = 0x2810, SMSG_CONNECT_TO = 0x304D, - SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277F, + SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2780, SMSG_CONSOLE_WRITE = 0x2633, - SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D4, - SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D3, - SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D2, - SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D6, - SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D7, - SMSG_CONTACT_LIST = 0x2780, - SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2816, + SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D5, + SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D4, + SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D3, + SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D7, + SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D8, + SMSG_CONTACT_LIST = 0x2781, + SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2817, SMSG_CONTROL_UPDATE = 0x2645, SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2875, SMSG_COOLDOWN_CHEAT = 0x2733, SMSG_COOLDOWN_EVENT = 0x26B6, SMSG_CORPSE_LOCATION = 0x264D, - SMSG_CORPSE_RECLAIM_DELAY = 0x2744, + SMSG_CORPSE_RECLAIM_DELAY = 0x2745, SMSG_CORPSE_TRANSPORT_QUERY = 0x270D, SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3, - SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F8, + SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F9, SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2876, SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A6, SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A2, @@ -1169,14 +1170,14 @@ enum OpcodeServer : uint16 SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A7, SMSG_CRAFT_ENCHANT_RESULT = 0x28A5, SMSG_CREATE_CHAR = 0x26FC, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x2794, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x2795, SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AA, SMSG_CRITERIA_DELETED = 0x26E2, SMSG_CRITERIA_UPDATE = 0x26DC, SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BE, SMSG_CUSTOM_LOAD_SCREEN = 0x25CB, SMSG_DAILY_QUESTS_RESET = 0x2A80, - SMSG_DAMAGE_CALC_LOG = 0x27C1, + SMSG_DAMAGE_CALC_LOG = 0x27C2, SMSG_DB_REPLY = 0x290E, SMSG_DEATH_RELEASE_LOC = 0x26CF, SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2653, @@ -1195,7 +1196,7 @@ enum OpcodeServer : uint16 SMSG_DISPLAY_QUEST_POPUP = 0x2A9E, SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x287A, SMSG_DISPLAY_TOAST = 0x2622, - SMSG_DISPLAY_WORLD_TEXT = 0x27E9, + SMSG_DISPLAY_WORLD_TEXT = 0x27EA, SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25E0, SMSG_DROP_NEW_CONNECTION = 0x304C, SMSG_DUEL_ARRANGED = 0x293C, @@ -1206,24 +1207,24 @@ enum OpcodeServer : uint16 SMSG_DUEL_REQUESTED = 0x293B, SMSG_DUEL_WINNER = 0x2941, SMSG_DURABILITY_DAMAGE_DEATH = 0x2740, - SMSG_EMOTE = 0x27C2, + SMSG_EMOTE = 0x27C3, SMSG_ENABLE_BARBER_SHOP = 0x26B9, SMSG_ENCHANTMENT_LOG = 0x270E, - SMSG_ENCOUNTER_END = 0x2778, - SMSG_ENCOUNTER_START = 0x2777, + SMSG_ENCOUNTER_END = 0x2779, + SMSG_ENCOUNTER_START = 0x2778, SMSG_END_LIGHTNING_STORM = 0x26A6, SMSG_ENSURE_WORLD_LOADED = 0x2889, SMSG_ENTER_ENCRYPTED_MODE = 0x3049, SMSG_ENUM_CHARACTERS_RESULT = 0x2583, - SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27EE, + SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27EF, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21, SMSG_EQUIPMENT_SET_ID = 0x26AF, SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1, - SMSG_EXPLORATION_EXPERIENCE = 0x2759, + SMSG_EXPLORATION_EXPERIENCE = 0x275A, SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2873, SMSG_FACTION_BONUS_INFO = 0x271F, SMSG_FAILED_PLAYER_CONDITION = 0x2FFA, - SMSG_FAILED_QUEST_TURN_IN = 0x280C, + SMSG_FAILED_QUEST_TURN_IN = 0x280D, SMSG_FEATURE_SYSTEM_STATUS = 0x25BF, SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C0, SMSG_FEIGN_DEATH_RESISTED = 0x273F, @@ -1231,13 +1232,13 @@ enum OpcodeServer : uint16 SMSG_FISH_NOT_HOOKED = 0x26CB, SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B, SMSG_FORCED_DEATH_UPDATE = 0x26D0, - SMSG_FORCE_ANIM = 0x274B, - SMSG_FORCE_ANIMATIONS = 0x274C, + SMSG_FORCE_ANIM = 0x274C, + SMSG_FORCE_ANIMATIONS = 0x274D, SMSG_FORCE_OBJECT_RELINK = 0x2649, - SMSG_FRIEND_STATUS = 0x2781, - SMSG_GAIN_MAW_POWER = 0x27DD, + SMSG_FRIEND_STATUS = 0x2782, + SMSG_GAIN_MAW_POWER = 0x27DE, SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C3, - SMSG_GAME_OBJECT_BASE = 0x2823, + SMSG_GAME_OBJECT_BASE = 0x2824, SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x288D, SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C4, SMSG_GAME_OBJECT_DESPAWN = 0x25C5, @@ -1245,7 +1246,7 @@ enum OpcodeServer : uint16 SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4E, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4D, SMSG_GAME_OBJECT_RESET_STATE = 0x2719, - SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FF, + SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x2800, SMSG_GAME_SPEED_SET = 0x267F, SMSG_GAME_TIME_SET = 0x2707, SMSG_GAME_TIME_UPDATE = 0x2706, @@ -1320,17 +1321,17 @@ enum OpcodeServer : uint16 SMSG_GARRISON_UPGRADE_RESULT = 0x296B, SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585, - SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2817, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B, + SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2818, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275C, SMSG_GET_GARRISON_INFO_RESULT = 0x295E, - SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2797, - SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D5, - SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BF, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2796, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2792, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BE, - SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27EA, - SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EB, + SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2798, + SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D6, + SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27C0, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2797, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2793, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BF, + SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27EB, + SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EC, SMSG_GM_PLAYER_INFO = 0x3005, SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB, SMSG_GM_TICKET_CASE_STATUS = 0x26A1, @@ -1339,16 +1340,16 @@ enum OpcodeServer : uint16 SMSG_GOSSIP_COMPLETE = 0x2A97, SMSG_GOSSIP_MESSAGE = 0x2A98, SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7, - SMSG_GOSSIP_POI = 0x278F, + SMSG_GOSSIP_POI = 0x2790, SMSG_GOSSIP_QUEST_UPDATE = 0x2A99, SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6, SMSG_GROUP_ACTION_THROTTLED = 0x2590, - SMSG_GROUP_AUTO_KICK = 0x278C, - SMSG_GROUP_DECLINE = 0x2788, - SMSG_GROUP_DESTROYED = 0x278B, + SMSG_GROUP_AUTO_KICK = 0x278D, + SMSG_GROUP_DECLINE = 0x2789, + SMSG_GROUP_DESTROYED = 0x278C, SMSG_GROUP_NEW_LEADER = 0x262B, - SMSG_GROUP_REQUEST_DECLINE = 0x2789, - SMSG_GROUP_UNINVITE = 0x278A, + SMSG_GROUP_REQUEST_DECLINE = 0x278A, + SMSG_GROUP_UNINVITE = 0x278B, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7, @@ -1410,49 +1411,49 @@ enum OpcodeServer : uint16 SMSG_INITIAL_SETUP = 0x2580, SMSG_INIT_WORLD_STATES = 0x2741, SMSG_INSPECT_RESULT = 0x262F, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27AA, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A9, - SMSG_INSTANCE_ENCOUNTER_END = 0x27B2, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A8, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B4, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B3, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AD, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AC, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B1, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B5, - SMSG_INSTANCE_ENCOUNTER_START = 0x27AE, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AB, - SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B0, - SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AF, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27AB, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27AA, + SMSG_INSTANCE_ENCOUNTER_END = 0x27B3, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A9, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B5, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B4, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AE, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AD, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B2, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B6, + SMSG_INSTANCE_ENCOUNTER_START = 0x27AF, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AC, + SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B1, + SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27B0, SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F5, SMSG_INSTANCE_INFO = 0x2632, SMSG_INSTANCE_RESET = 0x2684, SMSG_INSTANCE_RESET_FAILED = 0x2685, - SMSG_INSTANCE_SAVE_CREATED = 0x2776, + SMSG_INSTANCE_SAVE_CREATED = 0x2777, SMSG_INTERRUPT_POWER_REGEN = 0x2C5C, SMSG_INVALIDATE_PAGE_TEXT = 0x2918, SMSG_INVALIDATE_PLAYER = 0x2FFF, - SMSG_INVALID_PROMOTION_CODE = 0x274D, + SMSG_INVALID_PROMOTION_CODE = 0x274E, SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5, - SMSG_INVENTORY_FIXUP_COMPLETE = 0x280E, - SMSG_INVENTORY_FULL_OVERFLOW = 0x281F, - SMSG_ISLAND_AZERITE_GAIN = 0x2756, - SMSG_ISLAND_COMPLETE = 0x2757, + SMSG_INVENTORY_FIXUP_COMPLETE = 0x280F, + SMSG_INVENTORY_FULL_OVERFLOW = 0x2820, + SMSG_ISLAND_AZERITE_GAIN = 0x2757, + SMSG_ISLAND_COMPLETE = 0x2758, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84, SMSG_ITEM_CHANGED = 0x26E6, - SMSG_ITEM_COOLDOWN = 0x27C0, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274F, + SMSG_ITEM_COOLDOWN = 0x27C1, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2750, SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25A0, SMSG_ITEM_INTERACTION_COMPLETE = 0x286B, SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259E, SMSG_ITEM_PUSH_RESULT = 0x2621, - SMSG_ITEM_TIME_UPDATE = 0x274E, + SMSG_ITEM_TIME_UPDATE = 0x274F, SMSG_KICK_REASON = 0x2687, SMSG_LATENCY_REPORT_PING = 0x287D, SMSG_LEARNED_SPELLS = 0x2C50, SMSG_LEARN_PVP_TALENT_FAILED = 0x25D4, SMSG_LEARN_TALENT_FAILED = 0x25D3, - SMSG_LEGACY_LOOT_RULES = 0x2824, + SMSG_LEGACY_LOOT_RULES = 0x2825, SMSG_LEVEL_LINKING_RESULT = 0x2851, SMSG_LEVEL_UP_INFO = 0x26E4, SMSG_LFG_BOOT_PLAYER = 0x2A35, @@ -1482,10 +1483,10 @@ enum OpcodeServer : uint16 SMSG_LFG_SLOT_INVALID = 0x2A30, SMSG_LFG_TELEPORT_DENIED = 0x2A32, SMSG_LFG_UPDATE_STATUS = 0x2A24, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2768, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2767, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275C, - SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2769, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2769, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2768, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275D, + SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x276A, SMSG_LOAD_CUF_PROFILES = 0x25BC, SMSG_LOAD_EQUIPMENT_SET = 0x2709, SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2891, @@ -1507,8 +1508,8 @@ enum OpcodeServer : uint16 SMSG_LOOT_ROLL_WON = 0x2620, SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266E, SMSG_MAIL_COMMAND_RESULT = 0x2639, - SMSG_MAIL_LIST_RESULT = 0x2750, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2751, + SMSG_MAIL_LIST_RESULT = 0x2751, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2752, SMSG_MAP_OBJECTIVES_INIT = 0x294B, SMSG_MAP_OBJ_EVENTS = 0x25C6, SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261D, @@ -1518,7 +1519,7 @@ enum OpcodeServer : uint16 SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13, SMSG_MISSILE_CANCEL = 0x25C7, - SMSG_MODIFY_COOLDOWN = 0x275E, + SMSG_MODIFY_COOLDOWN = 0x275F, SMSG_MOTD = 0x2BAF, SMSG_MOUNT_RESULT = 0x257B, SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2841, @@ -1629,8 +1630,8 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1, SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD, SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8, - SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27DA, - SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D9, + SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27DB, + SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27DA, SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260B, SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260D, SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2610, @@ -1646,17 +1647,17 @@ enum OpcodeServer : uint16 SMSG_OFFER_PETITION_ERROR = 0x26B3, SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E1, SMSG_ON_MONSTER_MOVE = 0x2DD4, - SMSG_OPEN_ARTIFACT_FORGE = 0x279B, + SMSG_OPEN_ARTIFACT_FORGE = 0x279C, SMSG_OPEN_CONTAINER = 0x2DA6, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2793, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2794, SMSG_OVERRIDE_LIGHT = 0x26B8, SMSG_PAGE_TEXT = 0x2714, - SMSG_PARTY_COMMAND_RESULT = 0x278D, + SMSG_PARTY_COMMAND_RESULT = 0x278E, SMSG_PARTY_INVITE = 0x25BD, - SMSG_PARTY_KILL_LOG = 0x2754, - SMSG_PARTY_MEMBER_FULL_STATE = 0x2753, - SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2752, + SMSG_PARTY_KILL_LOG = 0x2755, + SMSG_PARTY_MEMBER_FULL_STATE = 0x2754, + SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2753, SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2871, SMSG_PARTY_UPDATE = 0x25F4, SMSG_PAST_TIME_EVENTS = 0x25C2, @@ -1671,8 +1672,8 @@ enum OpcodeServer : uint16 SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA, SMSG_PETITION_SHOW_LIST = 0x26BB, SMSG_PETITION_SHOW_SIGNATURES = 0x26BC, - SMSG_PETITION_SIGN_RESULTS = 0x2746, - SMSG_PET_ACTION_FEEDBACK = 0x2743, + SMSG_PETITION_SIGN_RESULTS = 0x2747, + SMSG_PET_ACTION_FEEDBACK = 0x2744, SMSG_PET_ACTION_SOUND = 0x269E, SMSG_PET_ADDED = 0x2595, SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2602, @@ -1722,13 +1723,13 @@ enum OpcodeServer : uint16 SMSG_PLAYER_SKINNED = 0x3006, SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D, SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C, - SMSG_PLAY_MUSIC = 0x2763, - SMSG_PLAY_OBJECT_SOUND = 0x2764, + SMSG_PLAY_MUSIC = 0x2764, + SMSG_PLAY_OBJECT_SOUND = 0x2765, SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272B, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C4A, SMSG_PLAY_SCENE = 0x2634, - SMSG_PLAY_SOUND = 0x2762, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x2765, + SMSG_PLAY_SOUND = 0x2763, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x2766, SMSG_PLAY_SPELL_VISUAL = 0x2C48, SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C4C, SMSG_PLAY_TIME_WARNING = 0x26F9, @@ -1737,10 +1738,10 @@ enum OpcodeServer : uint16 SMSG_PRELOAD_CHILD_MAP = 0x2579, SMSG_PRELOAD_WORLD = 0x2599, SMSG_PREPOPULATE_NAME_CACHE = 0x2844, - SMSG_PRE_RESSURECT = 0x2761, + SMSG_PRE_RESSURECT = 0x2762, SMSG_PRINT_NOTIFICATION = 0x25CA, - SMSG_PROC_RESIST = 0x2755, - SMSG_PROFESSION_GOSSIP = 0x27FA, + SMSG_PROC_RESIST = 0x2756, + SMSG_PROFESSION_GOSSIP = 0x27FB, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C54, SMSG_PVP_CREDIT = 0x2945, SMSG_PVP_MATCH_COMPLETE = 0x294F, @@ -1793,11 +1794,11 @@ enum OpcodeServer : uint16 SMSG_QUEST_UPDATE_COMPLETE = 0x2A89, SMSG_QUEST_UPDATE_FAILED = 0x2A8A, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B, - SMSG_QUEUE_SUMMARY_UPDATE = 0x280D, + SMSG_QUEUE_SUMMARY_UPDATE = 0x280E, SMSG_RAF_ACCOUNT_INFO = 0x2852, SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2863, - SMSG_RAID_DIFFICULTY_SET = 0x27A5, - SMSG_RAID_GROUP_ONLY = 0x27A7, + SMSG_RAID_DIFFICULTY_SET = 0x27A6, + SMSG_RAID_GROUP_ONLY = 0x27A8, SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4, SMSG_RAID_MARKERS_CHANGED = 0x25A4, SMSG_RANDOM_ROLL = 0x262E, @@ -1805,18 +1806,18 @@ enum OpcodeServer : uint16 SMSG_READY_CHECK_COMPLETED = 0x25F8, SMSG_READY_CHECK_RESPONSE = 0x25F7, SMSG_READY_CHECK_STARTED = 0x25F6, - SMSG_READ_ITEM_RESULT_FAILED = 0x27A1, - SMSG_READ_ITEM_RESULT_OK = 0x2798, - SMSG_REALM_LOOKUP_INFO = 0x27C5, + SMSG_READ_ITEM_RESULT_FAILED = 0x27A2, + SMSG_READ_ITEM_RESULT_OK = 0x2799, + SMSG_REALM_LOOKUP_INFO = 0x27C6, SMSG_REALM_QUERY_RESPONSE = 0x2913, - SMSG_REATTACH_RESURRECT = 0x2745, + SMSG_REATTACH_RESURRECT = 0x2746, SMSG_RECRAFT_ITEM_RESULT = 0x28A3, SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BD, SMSG_REFRESH_COMPONENT = 0x264F, SMSG_REFRESH_SPELL_HISTORY = 0x2C2C, SMSG_REMOVE_ITEM_PASSIVE = 0x25AC, SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C55, - SMSG_REPLACE_TROPHY_RESPONSE = 0x27BD, + SMSG_REPLACE_TROPHY_RESPONSE = 0x27BE, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2935, @@ -1840,21 +1841,21 @@ enum OpcodeServer : uint16 SMSG_RESUME_TOKEN = 0x25AA, SMSG_RESURRECT_REQUEST = 0x257E, SMSG_RESYNC_RUNES = 0x2C62, - SMSG_RETURNING_PLAYER_PROMPT = 0x27A0, + SMSG_RETURNING_PLAYER_PROMPT = 0x27A1, SMSG_RETURN_APPLICANT_LIST = 0x2848, SMSG_RETURN_RECRUITING_CLUBS = 0x2847, SMSG_ROLE_CHANGED_INFORM = 0x258D, SMSG_ROLE_CHOSEN = 0x2A39, SMSG_ROLE_POLL_INFORM = 0x258E, - SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F9, + SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27FA, SMSG_RUNE_REGEN_DEBUG = 0x25B6, - SMSG_SCENARIO_COMPLETED = 0x27E7, + SMSG_SCENARIO_COMPLETED = 0x27E8, SMSG_SCENARIO_POIS = 0x2631, SMSG_SCENARIO_PROGRESS_UPDATE = 0x262A, - SMSG_SCENARIO_SHOW_CRITERIA = 0x27FD, + SMSG_SCENARIO_SHOW_CRITERIA = 0x27FE, SMSG_SCENARIO_STATE = 0x2629, - SMSG_SCENARIO_UI_UPDATE = 0x27FC, - SMSG_SCENARIO_VACATE = 0x27A2, + SMSG_SCENARIO_UI_UPDATE = 0x27FD, + SMSG_SCENARIO_VACATE = 0x27A3, SMSG_SCENE_OBJECT_EVENT = 0x25E1, SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E6, SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E7, @@ -1878,7 +1879,7 @@ enum OpcodeServer : uint16 SMSG_SETUP_CURRENCY = 0x2573, SMSG_SETUP_RESEARCH_HISTORY = 0x2586, SMSG_SET_AI_ANIM_KIT = 0x272A, - SMSG_SET_ALL_TASK_PROGRESS = 0x2786, + SMSG_SET_ALL_TASK_PROGRESS = 0x2787, SMSG_SET_ANIM_TIER = 0x272E, SMSG_SET_CHR_UPGRADE_TIER = 0x25DE, SMSG_SET_CURRENCY = 0x2574, @@ -1891,7 +1892,7 @@ enum OpcodeServer : uint16 SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C39, SMSG_SET_FORCED_REACTIONS = 0x2718, SMSG_SET_ITEM_PURCHASE_DATA = 0x259F, - SMSG_SET_LOOT_METHOD_FAILED = 0x27CB, + SMSG_SET_LOOT_METHOD_FAILED = 0x27CC, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A2, SMSG_SET_MELEE_ANIM_KIT = 0x272D, SMSG_SET_MOVEMENT_ANIM_KIT = 0x272C, @@ -1903,7 +1904,7 @@ enum OpcodeServer : uint16 SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x285B, SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998, SMSG_SET_SPELL_CHARGES = 0x2C29, - SMSG_SET_TASK_COMPLETE = 0x2787, + SMSG_SET_TASK_COMPLETE = 0x2788, SMSG_SET_TIME_ZONE_INFORMATION = 0x2675, SMSG_SET_VEHICLE_REC_ID = 0x26F2, SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x288A, @@ -1911,7 +1912,7 @@ enum OpcodeServer : uint16 SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25DA, SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95, SMSG_SHOW_TAXI_NODES = 0x26C9, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x276A, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x276B, SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2893, SMSG_SOCKET_GEMS_FAILURE = 0x2722, SMSG_SOCKET_GEMS_SUCCESS = 0x2721, @@ -1956,10 +1957,10 @@ enum OpcodeServer : uint16 SMSG_START_TIMER = 0x25A6, SMSG_STOP_ELAPSED_TIMER = 0x2605, SMSG_STOP_MIRROR_TIMER = 0x270C, - SMSG_STOP_SPEAKERBOT_SOUND = 0x2766, + SMSG_STOP_SPEAKERBOT_SOUND = 0x2767, SMSG_STOP_TIMER = 0x25A7, SMSG_STREAMING_MOVIES = 0x25A5, - SMSG_SUGGEST_INVITE_INFORM = 0x278E, + SMSG_SUGGEST_INVITE_INFORM = 0x278F, SMSG_SUMMON_CANCEL = 0x26AE, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F, SMSG_SUMMON_REQUEST = 0x271C, @@ -1988,53 +1989,52 @@ enum OpcodeServer : uint16 SMSG_TRANSFER_ABORTED = 0x26FE, SMSG_TRANSFER_PENDING = 0x25CD, SMSG_TREASURE_PICKER_RESPONSE = 0x291F, - SMSG_TRIGGER_CINEMATIC = 0x27C3, + SMSG_TRIGGER_CINEMATIC = 0x27C4, SMSG_TRIGGER_MOVIE = 0x26C7, - SMSG_TURN_IN_PETITION_RESULT = 0x2748, - SMSG_TUTORIAL_FLAGS = 0x27B6, - SMSG_TWITTER_STATUS = 0x3043, + SMSG_TURN_IN_PETITION_RESULT = 0x2749, + SMSG_TUTORIAL_FLAGS = 0x27B7, SMSG_UI_HEALING_RANGE_MODIFIED = 0x273E, SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C6, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C7, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C7, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C8, SMSG_UNLEARNED_SPELLS = 0x2C51, SMSG_UNLOAD_CHILD_MAP = 0x257A, SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287F, SMSG_UPDATE_ACCOUNT_DATA = 0x2704, SMSG_UPDATE_ACTION_BUTTONS = 0x25DF, - SMSG_UPDATE_BNET_SESSION_KEY = 0x281E, + SMSG_UPDATE_BNET_SESSION_KEY = 0x281F, SMSG_UPDATE_CAPTURE_POINT = 0x2929, - SMSG_UPDATE_CELESTIAL_BODY = 0x281A, - SMSG_UPDATE_CHARACTER_FLAGS = 0x27BC, - SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2760, - SMSG_UPDATE_COOLDOWN = 0x275F, + SMSG_UPDATE_CELESTIAL_BODY = 0x281B, + SMSG_UPDATE_CHARACTER_FLAGS = 0x27BD, + SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2761, + SMSG_UPDATE_COOLDOWN = 0x2760, SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996, SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F, SMSG_UPDATE_EXPANSION_LEVEL = 0x2644, - SMSG_UPDATE_GAME_TIME_STATE = 0x2821, + SMSG_UPDATE_GAME_TIME_STATE = 0x2822, SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A7, SMSG_UPDATE_LAST_INSTANCE = 0x2686, - SMSG_UPDATE_OBJECT = 0x27C4, + SMSG_UPDATE_OBJECT = 0x27C5, SMSG_UPDATE_PRIMARY_SPEC = 0x25D7, SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F5, SMSG_UPDATE_TALENT_DATA = 0x25D6, - SMSG_UPDATE_TASK_PROGRESS = 0x2785, + SMSG_UPDATE_TASK_PROGRESS = 0x2786, SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19, - SMSG_UPDATE_WORLD_STATE = 0x2742, + SMSG_UPDATE_WORLD_STATE = 0x2743, SMSG_USERLIST_ADD = 0x2BB9, SMSG_USERLIST_REMOVE = 0x2BBA, SMSG_USERLIST_UPDATE = 0x2BBB, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x2749, - SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2815, - SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2813, - SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2812, - SMSG_VAS_PURCHASE_COMPLETE = 0x27ED, - SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27EC, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x274A, + SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2816, + SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2814, + SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2813, + SMSG_VAS_PURCHASE_COMPLETE = 0x27EE, + SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27ED, SMSG_VENDOR_INVENTORY = 0x25B8, SMSG_VIGNETTE_UPDATE = 0x3008, - SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2819, + SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x281A, SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2879, - SMSG_VOICE_LOGIN_RESPONSE = 0x2818, + SMSG_VOICE_LOGIN_RESPONSE = 0x2819, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4, SMSG_VOID_STORAGE_CONTENTS = 0x2DA1, SMSG_VOID_STORAGE_FAILED = 0x2DA0, @@ -2043,9 +2043,9 @@ enum OpcodeServer : uint16 SMSG_WAIT_QUEUE_FINISH = 0x256F, SMSG_WAIT_QUEUE_UPDATE = 0x256E, SMSG_WARDEN3_DATA = 0x2577, - SMSG_WARDEN3_DISABLED = 0x281C, - SMSG_WARDEN3_ENABLED = 0x281B, - SMSG_WARFRONT_COMPLETE = 0x2758, + SMSG_WARDEN3_DISABLED = 0x281D, + SMSG_WARDEN3_ENABLED = 0x281C, + SMSG_WARFRONT_COMPLETE = 0x2759, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933, SMSG_WEATHER = 0x26A4, SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2870, @@ -2054,13 +2054,13 @@ enum OpcodeServer : uint16 SMSG_WEEKLY_SPELL_USAGE = 0x2C18, SMSG_WHO = 0x2BAE, SMSG_WHO_IS = 0x26A3, - SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2820, + SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2821, SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F, SMSG_WORLD_SERVER_INFO = 0x25AE, SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2866, SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A8, SMSG_XP_GAIN_ABORTED = 0x25C9, - SMSG_XP_GAIN_ENABLED = 0x27A6, + SMSG_XP_GAIN_ENABLED = 0x27A7, SMSG_ZONE_UNDER_ATTACK = 0x2BB5, // Opcodes that are not generated automatically diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3bdbbb23db3..a8f26da3f73 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -303,6 +303,7 @@ namespace WorldPackets class ChatRegisterAddonPrefixes; class ChatUnregisterAllAddonPrefixes; class ChatReportIgnored; + class CanLocalWhisperTargetRequest; } namespace Collections @@ -1549,6 +1550,7 @@ class TC_GAME_API WorldSession void SendChatRestricted(ChatRestrictionType restriction); void HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet); void HandleChatIgnoredOpcode(WorldPackets::Chat::ChatReportIgnored& chatReportIgnored); + void HandleChatCanLocalWhisperTargetRequest(WorldPackets::Chat::CanLocalWhisperTargetRequest const& canLocalWhisperTargetRequest); void HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& packet); void HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index f731304766e..39d9e952c68 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -391,6 +391,8 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectNULL, //302 SPELL_EFFECT_GATHERING &Spell::EffectCreateTraitTreeConfig, //303 SPELL_EFFECT_CREATE_TRAIT_TREE_CONFIG &Spell::EffectChangeActiveCombatTraitConfig, //304 SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG + &Spell::EffectNULL, //305 SPELL_EFFECT_305 + &Spell::EffectNULL, //306 SPELL_EFFECT_306 }; void Spell::EffectNULL() diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index e3966581516..294e01a9818 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1132,6 +1132,8 @@ std::array<SpellEffectInfo::StaticData, TOTAL_SPELL_EFFECTS> SpellEffectInfo::_d {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_NONE}, // 302 SPELL_EFFECT_GATHERING {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_UNIT}, // 303 SPELL_EFFECT_CREATE_TRAIT_TREE_CONFIG {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_UNIT}, // 304 SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 305 SPELL_EFFECT_305 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 306 SPELL_EFFECT_306 } }; SpellInfo::SpellInfo(SpellNameEntry const* spellName, ::Difficulty difficulty, SpellInfoLoadHelper const& data) diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h index 79df70ff6ab..6cfca9124a9 100644 --- a/src/tools/map_extractor/loadlib/DBFilesClientList.h +++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h @@ -608,6 +608,7 @@ DB2FileInfo const DBFilesClientList[] = { 4542069, "ProfTraitPathNode.db2" }, { 4542084, "ProfTraitPerkNode.db2" }, { 4542085, "ProfTraitTree.db2" }, + { 4999865, "ProfTraitTreeHighlight.db2" }, { 4508544, "Profession.db2" }, { 4505297, "ProfessionEffect.db2" }, { 4556715, "ProfessionEffectType.db2" }, |