aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp2
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h29
-rw-r--r--src/server/game/DataStores/DB2Metadata.h128
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp14
-rw-r--r--src/server/game/DataStores/DB2Structure.h25
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.cpp11
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.h49
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp22
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h8
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp2
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp29
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h74
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp2
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h2
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp15
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h22
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.h2
-rw-r--r--src/server/game/Server/Packets/LootPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/LootPackets.h6
-rw-r--r--src/server/game/Server/Packets/MailPackets.cpp14
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h1
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp31
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h18
-rw-r--r--src/server/game/Server/Packets/TicketPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/TicketPackets.h1
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp8
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h522
-rw-r--r--src/server/game/Server/WorldSession.h2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/game/Spells/SpellInfo.cpp2
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h1
34 files changed, 601 insertions, 458 deletions
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" },