aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-09-07 01:10:07 +0200
committerShauren <shauren.trinity@gmail.com>2023-09-07 01:10:07 +0200
commit8efeb202a500bda46283127f66fb85f6b91f9e76 (patch)
treec6c12b633d144d26927f615af4d3d64b07e62dcc /src
parent0bf5cf33c7dd909202ef492b69e317652e923f96 (diff)
Core: Update to 10.1.7
Diffstat (limited to 'src')
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp18
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h17
-rw-r--r--src/server/game/DataStores/DB2Metadata.h99
-rw-r--r--src/server/game/DataStores/DB2Structure.h9
-rw-r--r--src/server/game/Entities/Item/ItemDefines.h6
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp541
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h351
-rw-r--r--src/server/game/Entities/Player/Player.cpp32
-rw-r--r--src/server/game/Entities/Player/Player.h4
-rw-r--r--src/server/game/Groups/Group.cpp24
-rw-r--r--src/server/game/Groups/Group.h10
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp66
-rw-r--r--src/server/game/Handlers/InspectHandler.cpp5
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h716
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/ItemPackets.h4
-rw-r--r--src/server/game/Server/Packets/LFGPackets.cpp21
-rw-r--r--src/server/game/Server/Packets/LFGPackets.h22
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h2
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp106
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h52
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp28
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h10
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h1
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp29
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h1723
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp2
-rw-r--r--src/server/game/Spells/Spell.cpp11
-rw-r--r--src/server/game/Spells/Spell.h3
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h4
33 files changed, 2080 insertions, 1857 deletions
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index b6478ab01b5..12f874de4f4 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -329,11 +329,11 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ChrClasses.db2
PrepareStatement(HOTFIX_SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, Description, RoleInfoString, DisabledString, "
"HyphenatedNameMale, HyphenatedNameFemale, ID, CreateScreenFileDataID, SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, Flags, "
- "SpellTextureBlobFileDataID, RolesMask, ArmorTypeMask, CharStartKitUnknown901, MaleCharacterCreationVisualFallback, "
+ "SpellTextureBlobFileDataID, ArmorTypeMask, CharStartKitUnknown901, MaleCharacterCreationVisualFallback, "
"MaleCharacterCreationIdleVisualFallback, FemaleCharacterCreationVisualFallback, FemaleCharacterCreationIdleVisualFallback, "
"CharacterCreationIdleGroundVisualFallback, CharacterCreationGroundVisualFallback, AlteredFormCharacterCreationIdleVisualFallback, "
"CharacterCreationAnimLoopWaitTimeMsFallback, CinematicSequenceID, DefaultSpec, PrimaryStatPriority, DisplayPower, "
- "RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet, ClassColorR, ClassColorG, ClassColorB"
+ "RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet, ClassColorR, ClassColorG, ClassColorB, RolesMask"
" FROM chr_classes WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT MAX(ID) + 1 FROM chr_classes", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang, Description_lang, RoleInfoString_lang, "
@@ -361,7 +361,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ChrCustomizationElement.db2
PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT, "SELECT ID, ChrCustomizationChoiceID, RelatedChrCustomizationChoiceID, "
"ChrCustomizationGeosetID, ChrCustomizationSkinnedModelID, ChrCustomizationMaterialID, ChrCustomizationBoneSetID, "
- "ChrCustomizationCondModelID, ChrCustomizationDisplayInfoID, ChrCustItemGeoModifyID, ChrCustomizationVoiceID, AnimKitID"
+ "ChrCustomizationCondModelID, ChrCustomizationDisplayInfoID, ChrCustItemGeoModifyID, ChrCustomizationVoiceID, AnimKitID, ParticleColorID"
" FROM chr_customization_element WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT, "SELECT MAX(ID) + 1 FROM chr_customization_element", CONNECTION_SYNCH);
@@ -487,12 +487,12 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_LOCALE_STMT(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name_lang FROM creature_family_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH);
// CreatureModelData.db2
- PrepareStatement(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT ID, GeoBox1, GeoBox2, GeoBox3, GeoBox4, GeoBox5, GeoBox6, Flags, FileDataID, BloodID, "
- "FootprintTextureID, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, FoleyMaterialID, FootstepCameraEffectID, "
- "DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, CreatureGeosetDataID, HoverHeight, "
- "AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, MountHeight, OverrideLootEffectScale, "
- "OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale, Unknown820_1, Unknown820_2, Unknown820_31, Unknown820_32"
- " FROM creature_model_data WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT ID, GeoBox1, GeoBox2, GeoBox3, GeoBox4, GeoBox5, GeoBox6, Flags, FileDataID, WalkSpeed, "
+ "RunSpeed, BloodID, FootprintTextureID, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, FoleyMaterialID, "
+ "FootstepCameraEffectID, DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, "
+ "CreatureGeosetDataID, HoverHeight, AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, "
+ "MountHeight, OverrideLootEffectScale, OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale, Unknown820_1, Unknown820_2, "
+ "Unknown820_31, Unknown820_32 FROM creature_model_data WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT MAX(ID) + 1 FROM creature_model_data", CONNECTION_SYNCH);
// CreatureType.db2
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h
index 685c6484e97..d6ab9499fcd 100644
--- a/src/server/game/DataStores/DB2LoadInfo.h
+++ b/src/server/game/DataStores/DB2LoadInfo.h
@@ -914,7 +914,6 @@ struct ChrClassesLoadInfo
{ false, FT_INT, "LowResScreenFileDataID" },
{ true, FT_INT, "Flags" },
{ false, FT_INT, "SpellTextureBlobFileDataID" },
- { false, FT_INT, "RolesMask" },
{ false, FT_INT, "ArmorTypeMask" },
{ true, FT_INT, "CharStartKitUnknown901" },
{ true, FT_INT, "MaleCharacterCreationVisualFallback" },
@@ -936,6 +935,7 @@ struct ChrClassesLoadInfo
{ false, FT_BYTE, "ClassColorR" },
{ false, FT_BYTE, "ClassColorG" },
{ false, FT_BYTE, "ClassColorB" },
+ { false, FT_BYTE, "RolesMask" },
};
static constexpr DB2LoadInfo Instance{ Fields, 39, &ChrClassesMeta::Instance, HOTFIX_SEL_CHR_CLASSES };
@@ -990,7 +990,7 @@ struct ChrCustomizationDisplayInfoLoadInfo
struct ChrCustomizationElementLoadInfo
{
- static constexpr DB2FieldMeta Fields[12] =
+ static constexpr DB2FieldMeta Fields[13] =
{
{ false, FT_INT, "ID" },
{ true, FT_INT, "ChrCustomizationChoiceID" },
@@ -1004,9 +1004,10 @@ struct ChrCustomizationElementLoadInfo
{ true, FT_INT, "ChrCustItemGeoModifyID" },
{ true, FT_INT, "ChrCustomizationVoiceID" },
{ true, FT_INT, "AnimKitID" },
+ { true, FT_INT, "ParticleColorID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 12, &ChrCustomizationElementMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT };
+ static constexpr DB2LoadInfo Instance{ Fields, 13, &ChrCustomizationElementMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT };
};
struct ChrCustomizationOptionLoadInfo
@@ -1420,7 +1421,7 @@ struct CreatureFamilyLoadInfo
struct CreatureModelDataLoadInfo
{
- static constexpr DB2FieldMeta Fields[38] =
+ static constexpr DB2FieldMeta Fields[40] =
{
{ false, FT_INT, "ID" },
{ false, FT_FLOAT, "GeoBox1" },
@@ -1431,6 +1432,8 @@ struct CreatureModelDataLoadInfo
{ false, FT_FLOAT, "GeoBox6" },
{ false, FT_INT, "Flags" },
{ false, FT_INT, "FileDataID" },
+ { false, FT_FLOAT, "WalkSpeed" },
+ { false, FT_FLOAT, "RunSpeed" },
{ false, FT_INT, "BloodID" },
{ false, FT_INT, "FootprintTextureID" },
{ false, FT_FLOAT, "FootprintTextureLength" },
@@ -1462,7 +1465,7 @@ struct CreatureModelDataLoadInfo
{ false, FT_FLOAT, "Unknown820_32" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 38, &CreatureModelDataMeta::Instance, HOTFIX_SEL_CREATURE_MODEL_DATA };
+ static constexpr DB2LoadInfo Instance{ Fields, 40, &CreatureModelDataMeta::Instance, HOTFIX_SEL_CREATURE_MODEL_DATA };
};
struct CreatureTypeLoadInfo
@@ -5585,7 +5588,7 @@ struct TaxiNodesLoadInfo
{ false, FT_SHORT, "ContinentID" },
{ true, FT_INT, "ConditionID" },
{ false, FT_SHORT, "CharacterBitNumber" },
- { false, FT_SHORT, "Flags" },
+ { true, FT_INT, "Flags" },
{ true, FT_INT, "UiTextureKitID" },
{ true, FT_INT, "MinimapAtlasMemberID" },
{ false, FT_FLOAT, "Facing" },
@@ -5622,7 +5625,7 @@ struct TaxiPathNodeLoadInfo
{ false, FT_SHORT, "PathID" },
{ true, FT_INT, "NodeIndex" },
{ false, FT_SHORT, "ContinentID" },
- { false, FT_BYTE, "Flags" },
+ { true, FT_INT, "Flags" },
{ false, FT_INT, "Delay" },
{ true, FT_INT, "ArrivalEventID" },
{ true, FT_INT, "DepartureEventID" },
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index a9805140e98..28f43806b0a 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -230,10 +230,10 @@ struct AnimKitConfigMeta
{
static constexpr DB2MetaField Fields[1] =
{
- { FT_INT, 1, false },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1300872, -1, 1, 1, 0xA3858D19, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1300872, -1, 1, 1, 0x4BB04814, Fields, -1 };
};
struct AnimKitConfigBoneSetMeta
@@ -288,7 +288,7 @@ struct AnimKitSegmentMeta
{ FT_INT, 1, false },
{ FT_INT, 1, false },
{ FT_FLOAT, 1, true },
- { FT_SHORT, 1, false },
+ { FT_INT, 1, true },
{ FT_BYTE, 1, false },
{ FT_INT, 1, true },
{ FT_BYTE, 1, true },
@@ -297,7 +297,7 @@ struct AnimKitSegmentMeta
{ FT_FLOAT, 1, true },
};
- static constexpr DB2Meta Instance{ 1304324, -1, 19, 19, 0xDCD09D5C, Fields, 0 };
+ static constexpr DB2Meta Instance{ 1304324, -1, 19, 19, 0xC72DE963, Fields, 0 };
};
struct AnimReplacementMeta
@@ -1490,7 +1490,7 @@ struct CameraEffectEntryMeta
struct CameraModeMeta
{
- static constexpr DB2MetaField Fields[11] =
+ static constexpr DB2MetaField Fields[12] =
{
{ FT_FLOAT, 3, true },
{ FT_FLOAT, 3, true },
@@ -1503,9 +1503,10 @@ struct CameraModeMeta
{ FT_BYTE, 1, true },
{ FT_BYTE, 1, true },
{ FT_BYTE, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1343308, -1, 11, 11, 0xC26A74A9, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1343308, -1, 12, 12, 0x5F08423B, Fields, -1 };
};
struct CampaignMeta
@@ -2027,7 +2028,6 @@ struct ChrClassesMeta
{ 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 },
@@ -2048,9 +2048,10 @@ struct ChrClassesMeta
{ FT_BYTE, 1, false },
{ FT_BYTE, 1, false },
{ FT_BYTE, 1, false },
+ { FT_BYTE, 1, false },
};
- static constexpr DB2Meta Instance{ 1361031, 10, 39, 39, 0xCD8CBEDA, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1361031, 10, 39, 39, 0xA9224C3E, Fields, -1 };
};
struct ChrClassesXPowerTypesMeta
@@ -2224,7 +2225,7 @@ struct ChrCustomizationDisplayInfoMeta
struct ChrCustomizationElementMeta
{
- static constexpr DB2MetaField Fields[11] =
+ static constexpr DB2MetaField Fields[12] =
{
{ FT_INT, 1, true },
{ FT_INT, 1, true },
@@ -2237,9 +2238,10 @@ struct ChrCustomizationElementMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 3512765, -1, 11, 11, 0x978B6C48, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3512765, -1, 12, 12, 0xE040533A, Fields, -1 };
};
struct ChrCustomizationGeosetMeta
@@ -2254,6 +2256,21 @@ struct ChrCustomizationGeosetMeta
static constexpr DB2Meta Instance{ 3456171, -1, 3, 3, 0x9D95412A, Fields, -1 };
};
+struct ChrCustomizationGlyphPetMeta
+{
+ static constexpr DB2MetaField Fields[6] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5347591, -1, 6, 6, 0xD58B0F29, Fields, -1 };
+};
+
struct ChrCustomizationMaterialMeta
{
static constexpr DB2MetaField Fields[2] =
@@ -2512,6 +2529,19 @@ struct ChrRacesCreateScreenIconMeta
static constexpr DB2Meta Instance{ 4566929, 0, 4, 4, 0x892075D2, Fields, 1 };
};
+struct ChrRacesPingMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5320971, -1, 4, 4, 0xEEFB570B, Fields, -1 };
+};
+
struct ChrSelectBackgroundCDIMeta
{
static constexpr DB2MetaField Fields[3] =
@@ -3420,11 +3450,13 @@ struct CreatureLabelMeta
struct CreatureModelDataMeta
{
- static constexpr DB2MetaField Fields[31] =
+ static constexpr DB2MetaField Fields[33] =
{
{ FT_FLOAT, 6, true },
{ FT_INT, 1, false },
{ FT_INT, 1, false },
+ { FT_FLOAT, 1, true },
+ { FT_FLOAT, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, false },
{ FT_FLOAT, 1, true },
@@ -3455,7 +3487,7 @@ struct CreatureModelDataMeta
{ FT_FLOAT, 2, true },
};
- static constexpr DB2Meta Instance{ 1365368, -1, 31, 31, 0xEDDF3253, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1365368, -1, 33, 33, 0xCD28D54B, Fields, -1 };
};
struct CreatureMovementInfoMeta
@@ -5372,7 +5404,7 @@ struct GemPropertiesMeta
struct GlideEventMeta
{
- static constexpr DB2MetaField Fields[10] =
+ static constexpr DB2MetaField Fields[11] =
{
{ FT_FLOAT, 1, true },
{ FT_INT, 1, true },
@@ -5384,9 +5416,10 @@ struct GlideEventMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 4644012, -1, 10, 10, 0x63D375D1, Fields, -1 };
+ static constexpr DB2Meta Instance{ 4644012, -1, 11, 11, 0xAF8D7840, Fields, -1 };
};
struct GlideEventBlendTimesMeta
@@ -8864,6 +8897,17 @@ struct PerksActivityThresholdGroupMeta
static constexpr DB2Meta Instance{ 4519768, 1, 3, 3, 0x780A31D9, Fields, -1 };
};
+struct PerksActivityXHolidaysMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5330797, -1, 2, 1, 0x9B7FB7C6, Fields, 1 };
+};
+
struct PerksActivityXIntervalMeta
{
static constexpr DB2MetaField Fields[3] =
@@ -8985,6 +9029,20 @@ struct PhaseXPhaseGroupMeta
static constexpr DB2Meta Instance{ 987581, -1, 2, 1, 0xEC8D5E98, Fields, 1 };
};
+struct PingTypeMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { FT_INT, 1, true },
+ { FT_BYTE, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5152358, -1, 5, 5, 0x0CE5C49B, Fields, -1 };
+};
+
struct PlayerConditionMeta
{
static constexpr DB2MetaField Fields[84] =
@@ -12196,7 +12254,7 @@ struct TaxiNodesMeta
{ FT_SHORT, 1, false },
{ FT_INT, 1, true },
{ FT_SHORT, 1, false },
- { FT_SHORT, 1, false },
+ { FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_FLOAT, 1, true },
@@ -12205,7 +12263,7 @@ struct TaxiNodesMeta
{ FT_INT, 2, true },
};
- static constexpr DB2Meta Instance{ 1068100, 4, 15, 15, 0x3F7CC8B2, Fields, 5 };
+ static constexpr DB2Meta Instance{ 1068100, 4, 15, 15, 0x5EE95BA9, Fields, 5 };
};
struct TaxiPathMeta
@@ -12230,13 +12288,13 @@ struct TaxiPathNodeMeta
{ FT_SHORT, 1, false },
{ FT_INT, 1, true },
{ FT_SHORT, 1, false },
- { FT_BYTE, 1, false },
+ { FT_INT, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1000437, 1, 9, 9, 0xA20FF622, Fields, 2 };
+ static constexpr DB2Meta Instance{ 1000437, 1, 9, 9, 0xF1BEC205, Fields, 2 };
};
struct TerrainColorGradingRampMeta
@@ -13205,7 +13263,7 @@ struct UiCanvasMeta
struct UiCovenantDisplayInfoMeta
{
- static constexpr DB2MetaField Fields[12] =
+ static constexpr DB2MetaField Fields[13] =
{
{ FT_INT, 1, true },
{ FT_INT, 1, true },
@@ -13219,9 +13277,10 @@ struct UiCovenantDisplayInfoMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 3509132, -1, 12, 12, 0x04B5154E, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3509132, -1, 13, 13, 0xFB57169A, Fields, -1 };
};
struct UiItemInteractionMeta
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 5163e53c669..d58df6f6a80 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -631,7 +631,6 @@ struct ChrClassesEntry
uint32 LowResScreenFileDataID;
int32 Flags;
uint32 SpellTextureBlobFileDataID;
- uint32 RolesMask;
uint32 ArmorTypeMask;
int32 CharStartKitUnknown901;
int32 MaleCharacterCreationVisualFallback;
@@ -653,6 +652,7 @@ struct ChrClassesEntry
uint8 ClassColorR;
uint8 ClassColorG;
uint8 ClassColorB;
+ uint8 RolesMask;
};
struct ChrClassesXPowerTypesEntry
@@ -700,6 +700,7 @@ struct ChrCustomizationElementEntry
int32 ChrCustItemGeoModifyID;
int32 ChrCustomizationVoiceID;
int32 AnimKitID;
+ int32 ParticleColorID;
};
struct ChrCustomizationOptionEntry
@@ -1033,6 +1034,8 @@ struct CreatureModelDataEntry
std::array<float, 6> GeoBox;
uint32 Flags;
uint32 FileDataID;
+ float WalkSpeed;
+ float RunSpeed;
uint32 BloodID;
uint32 FootprintTextureID;
float FootprintTextureLength;
@@ -3973,7 +3976,7 @@ struct TaxiNodesEntry
uint16 ContinentID;
int32 ConditionID;
uint16 CharacterBitNumber;
- uint16 Flags;
+ int32 Flags;
int32 UiTextureKitID;
int32 MinimapAtlasMemberID;
float Facing;
@@ -3997,7 +4000,7 @@ struct TaxiPathNodeEntry
uint16 PathID;
int32 NodeIndex;
uint16 ContinentID;
- uint8 Flags;
+ int32 Flags;
uint32 Delay;
int32 ArrivalEventID;
int32 DepartureEventID;
diff --git a/src/server/game/Entities/Item/ItemDefines.h b/src/server/game/Entities/Item/ItemDefines.h
index 8a0aa7d2fd9..7df3f83b9f7 100644
--- a/src/server/game/Entities/Item/ItemDefines.h
+++ b/src/server/game/Entities/Item/ItemDefines.h
@@ -141,6 +141,7 @@ enum InventoryResult : uint8
EQUIP_ERR_REAGENTBAG_WRONG_SLOT = 115,// Reagent Bags can only be placed in the reagent bag slot.
EQUIP_ERR_SLOT_ONLY_REAGENTBAG = 116,// Only Reagent Bags can be placed in the reagent bag slot.
EQUIP_ERR_REAGENTBAG_ITEM_TYPE = 117,// Only Reagents can be placed in Reagent Bags.
+ EQUIP_ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 118,// Items that can be refunded can't be bulk sold.
};
// EnumUtils: DESCRIBE THIS
@@ -166,7 +167,10 @@ enum SellResult
SELL_ERR_YOU_DONT_OWN_THAT_ITEM = 4, // DESCRIPTION You don't own that item.
SELL_ERR_UNK = 5, // DESCRIPTION nothing appears...
SELL_ERR_ONLY_EMPTY_BAG = 6, // DESCRIPTION You can only do that with empty bags.
- SELL_ERR_CANT_SELL_TO_THIS_MERCHANT = 7 // DESCRIPTION You cannot sell items to this merchant.
+ SELL_ERR_CANT_SELL_TO_THIS_MERCHANT = 7, // DESCRIPTION You cannot sell items to this merchant.
+ SELL_ERR_MUST_REPAIR_DURABILITY = 8, // DESCRIPTION You must repair that item's durability to use it.
+ SELL_ERR_VENDOR_REFUSE_SCRAPPABLE_AZERITE = 9, // DESCRIPTION The merchant doesn't want that item. Bring it to the Scrapper to extract Titan Residuum.
+ SELL_ERR_INTERNAL_BAG_ERROR = 10, // DESCRIPTION Internal Bag Error
};
// -1 from client enchantment slot number
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 93ac9f8c967..dd13e001442 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -2130,7 +2130,10 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << uint32(GuildDeleteDate);
data << int32(GuildLevel);
data << uint32(Customizations.size());
- data << uint8(PartyType);
+ for (uint32 i = 0; i < 2; ++i)
+ {
+ data << uint8(PartyType[i]);
+ }
data << uint8(NativeSex);
data << uint8(Inebriation);
data << uint8(PvpTitle);
@@ -2165,6 +2168,7 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << int32(Field_B0);
data << int32(Field_B4);
data << int32(CurrentBattlePetSpeciesID);
+ data << field_138;
CtrOptions->WriteCreate(data, owner, receiver);
data << int32(CovenantID);
data << int32(SoulbindID);
@@ -2203,7 +2207,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, 0x0000003Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFC00000u, 0xFFFFFFFFu, 0x0000001Fu });
+ Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x000001FFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFE000000u, 0xFFFFFFFFu, 0x000000FFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -2211,12 +2215,12 @@ void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFC0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x003FFFFFu, 0x00000000u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000012u, 0xFFFFFE00u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x01FFFFFFu, 0x00000000u, 0x00000000u };
}
void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000003Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFC00000u, 0xFFFFFFFFu, 0x0000001Fu });
+ Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x000001FFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFE000000u, 0xFFFFFFFFu, 0x000000FFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -2348,78 +2352,78 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
if (changesMask[15])
{
- data << uint8(PartyType);
+ data << uint8(NativeSex);
}
if (changesMask[16])
{
- data << uint8(NativeSex);
+ data << uint8(Inebriation);
}
if (changesMask[17])
{
- data << uint8(Inebriation);
+ data << uint8(PvpTitle);
}
if (changesMask[18])
{
- data << uint8(PvpTitle);
+ data << uint8(ArenaFaction);
}
if (changesMask[19])
{
- data << uint8(ArenaFaction);
+ data << uint32(DuelTeam);
}
if (changesMask[20])
{
- data << uint32(DuelTeam);
+ data << int32(GuildTimeStamp);
}
if (changesMask[21])
{
- data << int32(GuildTimeStamp);
+ data << int32(PlayerTitle);
}
if (changesMask[22])
{
- data << int32(PlayerTitle);
+ data << int32(FakeInebriation);
}
if (changesMask[23])
{
- data << int32(FakeInebriation);
+ data << uint32(VirtualPlayerRealm);
}
if (changesMask[24])
{
- data << uint32(VirtualPlayerRealm);
+ data << uint32(CurrentSpecID);
}
if (changesMask[25])
{
- data << uint32(CurrentSpecID);
+ data << int32(TaxiMountAnimKitID);
}
if (changesMask[26])
{
- data << int32(TaxiMountAnimKitID);
+ data << uint8(CurrentBattlePetBreedQuality);
}
if (changesMask[27])
{
- data << uint8(CurrentBattlePetBreedQuality);
+ data << int32(HonorLevel);
}
if (changesMask[28])
{
- data << int32(HonorLevel);
+ data << int64(LogoutTime);
}
if (changesMask[29])
{
- data << int64(LogoutTime);
+ data << int32(Field_B0);
}
if (changesMask[30])
{
- data << int32(Field_B0);
+ data << int32(Field_B4);
}
if (changesMask[31])
{
- data << int32(Field_B4);
+ data << int32(CurrentBattlePetSpeciesID);
}
}
if (changesMask[32])
{
if (changesMask[33])
{
- data << int32(CurrentBattlePetSpeciesID);
+ data << field_138;
}
if (changesMask[34])
{
@@ -2440,10 +2444,20 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
if (changesMask[38])
{
- for (uint32 i = 0; i < 175; ++i)
+ for (uint32 i = 0; i < 2; ++i)
{
if (changesMask[39 + i])
{
+ data << uint8(PartyType[i]);
+ }
+ }
+ }
+ if (changesMask[41])
+ {
+ for (uint32 i = 0; i < 175; ++i)
+ {
+ if (changesMask[42 + i])
+ {
if (noQuestLogChangesMask)
QuestLog[i].WriteCreate(data, owner, receiver);
else
@@ -2451,31 +2465,31 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[214])
+ if (changesMask[217])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[215 + i])
+ if (changesMask[218 + i])
{
VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[234])
+ if (changesMask[237])
{
for (uint32 i = 0; i < 6; ++i)
{
- if (changesMask[235 + i])
+ if (changesMask[238 + i])
{
data << float(AvgItemLevel[i]);
}
}
}
- if (changesMask[241])
+ if (changesMask[244])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[242 + i])
+ if (changesMask[245 + i])
{
data << uint32(Field_3120[i]);
}
@@ -2500,7 +2514,6 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(GuildRankID);
Base::ClearChangesMask(GuildDeleteDate);
Base::ClearChangesMask(GuildLevel);
- Base::ClearChangesMask(PartyType);
Base::ClearChangesMask(NativeSex);
Base::ClearChangesMask(Inebriation);
Base::ClearChangesMask(PvpTitle);
@@ -2518,10 +2531,12 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(Field_B0);
Base::ClearChangesMask(Field_B4);
Base::ClearChangesMask(CurrentBattlePetSpeciesID);
+ Base::ClearChangesMask(field_138);
Base::ClearChangesMask(CtrOptions);
Base::ClearChangesMask(CovenantID);
Base::ClearChangesMask(SoulbindID);
Base::ClearChangesMask(DungeonScore);
+ Base::ClearChangesMask(PartyType);
Base::ClearChangesMask(QuestLog);
Base::ClearChangesMask(VisibleItems);
Base::ClearChangesMask(AvgItemLevel);
@@ -3803,6 +3818,47 @@ void StableInfo::ClearChangesMask()
_changesMask.ResetAll();
}
+void CollectableSourceTrackedData::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
+{
+ data << int32(TargetType);
+ data << int32(TargetID);
+ data << int32(CollectableSourceInfoID);
+}
+
+void CollectableSourceTrackedData::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
+{
+ Mask changesMask = _changesMask;
+ if (ignoreChangesMask)
+ changesMask.SetAll();
+
+ data.WriteBits(changesMask.GetBlock(0), 4);
+
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[1])
+ {
+ data << int32(TargetType);
+ }
+ if (changesMask[2])
+ {
+ data << int32(TargetID);
+ }
+ if (changesMask[3])
+ {
+ data << int32(CollectableSourceInfoID);
+ }
+ }
+}
+
+void CollectableSourceTrackedData::ClearChangesMask()
+{
+ Base::ClearChangesMask(TargetType);
+ Base::ClearChangesMask(TargetID);
+ Base::ClearChangesMask(CollectableSourceInfoID);
+ _changesMask.ResetAll();
+}
+
void Research::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
{
data << int16(ResearchProjectID);
@@ -4103,10 +4159,11 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
}
for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i)
{
- data << int64(TrackedCollectableSources[i]);
+ TrackedCollectableSources[i].WriteCreate(data, owner, receiver);
}
data.FlushBits();
data.WriteBit(BackpackAutoSortDisabled);
+ data.WriteBit(BackpackSellJunkDisabled);
data.WriteBit(BankAutoSortDisabled);
data.WriteBit(SortBagsRightToLeft);
data.WriteBit(InsertItemsLeftToRight);
@@ -4167,28 +4224,32 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[2])
{
- data.WriteBit(BankAutoSortDisabled);
+ data.WriteBit(BackpackSellJunkDisabled);
}
if (changesMask[3])
{
- data.WriteBit(SortBagsRightToLeft);
+ data.WriteBit(BankAutoSortDisabled);
}
if (changesMask[4])
{
- data.WriteBit(InsertItemsLeftToRight);
+ data.WriteBit(SortBagsRightToLeft);
}
if (changesMask[5])
{
- data.WriteBit(HasPerksProgramPendingReward);
+ data.WriteBit(InsertItemsLeftToRight);
}
if (changesMask[6])
{
+ data.WriteBit(HasPerksProgramPendingReward);
+ }
+ if (changesMask[7])
+ {
if (!ignoreNestedChangesMask)
KnownTitles.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(KnownTitles.size(), data);
}
- if (changesMask[7])
+ if (changesMask[8])
{
if (!ignoreNestedChangesMask)
PvpInfo.WriteUpdateMask(data);
@@ -4196,11 +4257,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data);
}
}
- if (changesMask[35])
+ if (changesMask[36])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[36 + i])
+ if (changesMask[37 + i])
{
if (!ignoreNestedChangesMask)
ResearchSites[i].WriteUpdateMask(data);
@@ -4209,11 +4270,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[37])
+ if (changesMask[38])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[38 + i])
+ if (changesMask[39 + i])
{
if (!ignoreNestedChangesMask)
ResearchSiteProgress[i].WriteUpdateMask(data);
@@ -4222,11 +4283,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[39])
+ if (changesMask[40])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[40 + i])
+ if (changesMask[41 + i])
{
if (!ignoreNestedChangesMask)
Research[i].WriteUpdateMask(data);
@@ -4235,11 +4296,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[35])
+ if (changesMask[36])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[36 + i])
+ if (changesMask[37 + i])
{
for (uint32 j = 0; j < ResearchSites[i].size(); ++j)
{
@@ -4251,11 +4312,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[37])
+ if (changesMask[38])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[38 + i])
+ if (changesMask[39 + i])
{
for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j)
{
@@ -4267,11 +4328,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[39])
+ if (changesMask[40])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[40 + i])
+ if (changesMask[41 + i])
{
for (uint32 j = 0; j < Research[i].size(); ++j)
{
@@ -4286,185 +4347,185 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[8])
+ if (changesMask[9])
{
if (!ignoreNestedChangesMask)
DailyQuestsCompleted.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(DailyQuestsCompleted.size(), data);
}
- if (changesMask[9])
+ if (changesMask[10])
{
if (!ignoreNestedChangesMask)
AvailableQuestLineXQuestIDs.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(AvailableQuestLineXQuestIDs.size(), data);
}
- if (changesMask[10])
+ if (changesMask[11])
{
if (!ignoreNestedChangesMask)
Heirlooms.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(Heirlooms.size(), data);
}
- if (changesMask[11])
+ if (changesMask[12])
{
if (!ignoreNestedChangesMask)
HeirloomFlags.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(HeirloomFlags.size(), data);
}
- if (changesMask[12])
+ if (changesMask[13])
{
if (!ignoreNestedChangesMask)
Toys.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(Toys.size(), data);
}
- if (changesMask[13])
+ if (changesMask[14])
{
if (!ignoreNestedChangesMask)
ToyFlags.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(ToyFlags.size(), data);
}
- if (changesMask[14])
+ if (changesMask[15])
{
if (!ignoreNestedChangesMask)
Transmog.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(Transmog.size(), data);
}
- if (changesMask[15])
+ if (changesMask[16])
{
if (!ignoreNestedChangesMask)
ConditionalTransmog.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(ConditionalTransmog.size(), data);
}
- if (changesMask[16])
+ if (changesMask[17])
{
if (!ignoreNestedChangesMask)
SelfResSpells.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SelfResSpells.size(), data);
}
- if (changesMask[17])
+ if (changesMask[18])
{
if (!ignoreNestedChangesMask)
RuneforgePowers.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(RuneforgePowers.size(), data);
}
- if (changesMask[18])
+ if (changesMask[19])
{
if (!ignoreNestedChangesMask)
TransmogIllusions.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(TransmogIllusions.size(), data);
}
- if (changesMask[19])
+ if (changesMask[20])
{
if (!ignoreNestedChangesMask)
CharacterRestrictions.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CharacterRestrictions.size(), data);
}
- if (changesMask[20])
+ if (changesMask[21])
{
if (!ignoreNestedChangesMask)
SpellPctModByLabel.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SpellPctModByLabel.size(), data);
}
- if (changesMask[21])
+ if (changesMask[22])
{
if (!ignoreNestedChangesMask)
SpellFlatModByLabel.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data);
}
- if (changesMask[22])
+ if (changesMask[23])
{
if (!ignoreNestedChangesMask)
MawPowers.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(MawPowers.size(), data);
}
- if (changesMask[23])
+ if (changesMask[24])
{
if (!ignoreNestedChangesMask)
MultiFloorExploration.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(MultiFloorExploration.size(), data);
}
- if (changesMask[24])
+ if (changesMask[25])
{
if (!ignoreNestedChangesMask)
RecipeProgression.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(RecipeProgression.size(), data);
}
- if (changesMask[25])
+ if (changesMask[26])
{
if (!ignoreNestedChangesMask)
ReplayedQuests.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(ReplayedQuests.size(), data);
}
- if (changesMask[26])
+ if (changesMask[27])
{
if (!ignoreNestedChangesMask)
TaskQuests.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(TaskQuests.size(), data);
}
- if (changesMask[27])
+ if (changesMask[28])
{
if (!ignoreNestedChangesMask)
DisabledSpells.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(DisabledSpells.size(), data);
}
- if (changesMask[28])
+ if (changesMask[29])
{
if (!ignoreNestedChangesMask)
TraitConfigs.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(TraitConfigs.size(), data);
}
- if (changesMask[29])
+ if (changesMask[30])
{
if (!ignoreNestedChangesMask)
CraftingOrders.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CraftingOrders.size(), data);
}
- if (changesMask[30])
+ if (changesMask[31])
{
if (!ignoreNestedChangesMask)
PersonalCraftingOrderCounts.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data);
}
- if (changesMask[31])
+ }
+ if (changesMask[32])
+ {
+ if (changesMask[33])
{
if (!ignoreNestedChangesMask)
CategoryCooldownMods.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data);
}
- }
- if (changesMask[32])
- {
- if (changesMask[33])
+ if (changesMask[34])
{
if (!ignoreNestedChangesMask)
WeeklySpellUses.WriteUpdateMask(data);
else
WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data);
}
- if (changesMask[34])
+ if (changesMask[35])
{
if (!ignoreNestedChangesMask)
TrackedCollectableSources.WriteUpdateMask(data);
@@ -4475,7 +4536,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[6])
+ if (changesMask[7])
{
for (uint32 i = 0; i < KnownTitles.size(); ++i)
{
@@ -4485,7 +4546,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[8])
+ if (changesMask[9])
{
for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i)
{
@@ -4495,7 +4556,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[9])
+ if (changesMask[10])
{
for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i)
{
@@ -4505,7 +4566,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[10])
+ if (changesMask[11])
{
for (uint32 i = 0; i < Heirlooms.size(); ++i)
{
@@ -4515,7 +4576,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[11])
+ if (changesMask[12])
{
for (uint32 i = 0; i < HeirloomFlags.size(); ++i)
{
@@ -4525,7 +4586,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[12])
+ if (changesMask[13])
{
for (uint32 i = 0; i < Toys.size(); ++i)
{
@@ -4535,7 +4596,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[13])
+ if (changesMask[14])
{
for (uint32 i = 0; i < ToyFlags.size(); ++i)
{
@@ -4545,7 +4606,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[14])
+ if (changesMask[15])
{
for (uint32 i = 0; i < Transmog.size(); ++i)
{
@@ -4555,7 +4616,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[15])
+ if (changesMask[16])
{
for (uint32 i = 0; i < ConditionalTransmog.size(); ++i)
{
@@ -4565,7 +4626,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[16])
+ if (changesMask[17])
{
for (uint32 i = 0; i < SelfResSpells.size(); ++i)
{
@@ -4575,7 +4636,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[17])
+ if (changesMask[18])
{
for (uint32 i = 0; i < RuneforgePowers.size(); ++i)
{
@@ -4585,7 +4646,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[18])
+ if (changesMask[19])
{
for (uint32 i = 0; i < TransmogIllusions.size(); ++i)
{
@@ -4595,7 +4656,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[20])
+ if (changesMask[21])
{
for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i)
{
@@ -4605,7 +4666,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[21])
+ if (changesMask[22])
{
for (uint32 i = 0; i < SpellFlatModByLabel.size(); ++i)
{
@@ -4615,7 +4676,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[22])
+ if (changesMask[23])
{
for (uint32 i = 0; i < MawPowers.size(); ++i)
{
@@ -4625,7 +4686,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[23])
+ if (changesMask[24])
{
for (uint32 i = 0; i < MultiFloorExploration.size(); ++i)
{
@@ -4635,7 +4696,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[24])
+ if (changesMask[25])
{
for (uint32 i = 0; i < RecipeProgression.size(); ++i)
{
@@ -4645,7 +4706,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[25])
+ if (changesMask[26])
{
for (uint32 i = 0; i < ReplayedQuests.size(); ++i)
{
@@ -4655,7 +4716,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[26])
+ if (changesMask[27])
{
for (uint32 i = 0; i < TaskQuests.size(); ++i)
{
@@ -4665,7 +4726,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[27])
+ if (changesMask[28])
{
for (uint32 i = 0; i < DisabledSpells.size(); ++i)
{
@@ -4675,7 +4736,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[30])
+ if (changesMask[31])
{
for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i)
{
@@ -4685,7 +4746,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[31])
+ }
+ if (changesMask[32])
+ {
+ if (changesMask[33])
{
for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i)
{
@@ -4695,10 +4759,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- }
- if (changesMask[32])
- {
- if (changesMask[33])
+ if (changesMask[34])
{
for (uint32 i = 0; i < WeeklySpellUses.size(); ++i)
{
@@ -4708,20 +4769,20 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[34])
+ if (changesMask[35])
{
for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i)
{
if (TrackedCollectableSources.HasChanged(i) || ignoreNestedChangesMask)
{
- data << int64(TrackedCollectableSources[i]);
+ TrackedCollectableSources[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
}
if (changesMask[0])
{
- if (changesMask[7])
+ if (changesMask[8])
{
for (uint32 i = 0; i < PvpInfo.size(); ++i)
{
@@ -4731,7 +4792,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[19])
+ if (changesMask[20])
{
for (uint32 i = 0; i < CharacterRestrictions.size(); ++i)
{
@@ -4741,7 +4802,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[28])
+ if (changesMask[29])
{
for (uint32 i = 0; i < TraitConfigs.size(); ++i)
{
@@ -4751,7 +4812,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[29])
+ if (changesMask[30])
{
for (uint32 i = 0; i < CraftingOrders.size(); ++i)
{
@@ -4764,356 +4825,356 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[32])
{
- if (changesMask[41])
- {
- data << FarsightObject;
- }
if (changesMask[42])
{
- data << SummonedBattlePetGUID;
+ data << FarsightObject;
}
if (changesMask[43])
{
- data << uint64(Coinage);
+ data << SummonedBattlePetGUID;
}
if (changesMask[44])
{
- data << int32(XP);
+ data << uint64(Coinage);
}
if (changesMask[45])
{
- data << int32(NextLevelXP);
+ data << int32(XP);
}
if (changesMask[46])
{
- data << int32(TrialXP);
+ data << int32(NextLevelXP);
}
if (changesMask[47])
{
- Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << int32(TrialXP);
}
if (changesMask[48])
{
- data << int32(CharacterPoints);
+ Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
if (changesMask[49])
{
- data << int32(MaxTalentTiers);
+ data << int32(CharacterPoints);
}
if (changesMask[50])
{
- data << uint32(TrackCreatureMask);
+ data << int32(MaxTalentTiers);
}
if (changesMask[51])
{
- data << float(MainhandExpertise);
+ data << uint32(TrackCreatureMask);
}
if (changesMask[52])
{
- data << float(OffhandExpertise);
+ data << float(MainhandExpertise);
}
if (changesMask[53])
{
- data << float(RangedExpertise);
+ data << float(OffhandExpertise);
}
if (changesMask[54])
{
- data << float(CombatRatingExpertise);
+ data << float(RangedExpertise);
}
if (changesMask[55])
{
- data << float(BlockPercentage);
+ data << float(CombatRatingExpertise);
}
if (changesMask[56])
{
- data << float(DodgePercentage);
+ data << float(BlockPercentage);
}
if (changesMask[57])
{
- data << float(DodgePercentageFromAttribute);
+ data << float(DodgePercentage);
}
if (changesMask[58])
{
- data << float(ParryPercentage);
+ data << float(DodgePercentageFromAttribute);
}
if (changesMask[59])
{
- data << float(ParryPercentageFromAttribute);
+ data << float(ParryPercentage);
}
if (changesMask[60])
{
- data << float(CritPercentage);
+ data << float(ParryPercentageFromAttribute);
}
if (changesMask[61])
{
- data << float(RangedCritPercentage);
+ data << float(CritPercentage);
}
if (changesMask[62])
{
- data << float(OffhandCritPercentage);
+ data << float(RangedCritPercentage);
}
if (changesMask[63])
{
- data << float(SpellCritPercentage);
+ data << float(OffhandCritPercentage);
}
if (changesMask[64])
{
- data << int32(ShieldBlock);
+ data << float(SpellCritPercentage);
}
if (changesMask[65])
{
- data << float(ShieldBlockCritPercentage);
+ data << int32(ShieldBlock);
}
if (changesMask[66])
{
- data << float(Mastery);
+ data << float(ShieldBlockCritPercentage);
}
if (changesMask[67])
{
- data << float(Speed);
+ data << float(Mastery);
}
if (changesMask[68])
{
- data << float(Avoidance);
+ data << float(Speed);
}
if (changesMask[69])
{
- data << float(Sturdiness);
+ data << float(Avoidance);
}
}
if (changesMask[70])
{
if (changesMask[71])
{
- data << int32(Versatility);
+ data << float(Sturdiness);
}
if (changesMask[72])
{
- data << float(VersatilityBonus);
+ data << int32(Versatility);
}
if (changesMask[73])
{
- data << float(PvpPowerDamage);
+ data << float(VersatilityBonus);
}
if (changesMask[74])
{
- data << float(PvpPowerHealing);
+ data << float(PvpPowerDamage);
}
if (changesMask[75])
{
- data << int32(ModHealingDonePos);
+ data << float(PvpPowerHealing);
}
if (changesMask[76])
{
- data << float(ModHealingPercent);
+ data << int32(ModHealingDonePos);
}
if (changesMask[77])
{
- data << float(ModPeriodicHealingDonePercent);
+ data << float(ModHealingPercent);
}
if (changesMask[78])
{
- data << float(ModSpellPowerPercent);
+ data << float(ModPeriodicHealingDonePercent);
}
if (changesMask[79])
{
- data << float(ModResiliencePercent);
+ data << float(ModSpellPowerPercent);
}
if (changesMask[80])
{
- data << float(OverrideSpellPowerByAPPercent);
+ data << float(ModResiliencePercent);
}
if (changesMask[81])
{
- data << float(OverrideAPBySpellPowerPercent);
+ data << float(OverrideSpellPowerByAPPercent);
}
if (changesMask[82])
{
- data << int32(ModTargetResistance);
+ data << float(OverrideAPBySpellPowerPercent);
}
if (changesMask[83])
{
- data << int32(ModTargetPhysicalResistance);
+ data << int32(ModTargetResistance);
}
if (changesMask[84])
{
- data << uint32(LocalFlags);
+ data << int32(ModTargetPhysicalResistance);
}
if (changesMask[85])
{
- data << uint8(GrantableLevels);
+ data << uint32(LocalFlags);
}
if (changesMask[86])
{
- data << uint8(MultiActionBars);
+ data << uint8(GrantableLevels);
}
if (changesMask[87])
{
- data << uint8(LifetimeMaxRank);
+ data << uint8(MultiActionBars);
}
if (changesMask[88])
{
- data << uint8(NumRespecs);
+ data << uint8(LifetimeMaxRank);
}
if (changesMask[89])
{
- data << uint32(PvpMedals);
+ data << uint8(NumRespecs);
}
if (changesMask[90])
{
- data << uint16(TodayHonorableKills);
+ data << uint32(PvpMedals);
}
if (changesMask[91])
{
- data << uint16(YesterdayHonorableKills);
+ data << uint16(TodayHonorableKills);
}
if (changesMask[92])
{
- data << uint32(LifetimeHonorableKills);
+ data << uint16(YesterdayHonorableKills);
}
if (changesMask[93])
{
- data << int32(WatchedFactionIndex);
+ data << uint32(LifetimeHonorableKills);
}
if (changesMask[94])
{
- data << int32(MaxLevel);
+ data << int32(WatchedFactionIndex);
}
if (changesMask[95])
{
- data << int32(ScalingPlayerLevelDelta);
+ data << int32(MaxLevel);
}
if (changesMask[96])
{
- data << int32(MaxCreatureScalingLevel);
+ data << int32(ScalingPlayerLevelDelta);
}
if (changesMask[97])
{
- data << int32(PetSpellPower);
+ data << int32(MaxCreatureScalingLevel);
}
if (changesMask[98])
{
- data << float(UiHitModifier);
+ data << int32(PetSpellPower);
}
if (changesMask[99])
{
- data << float(UiSpellHitModifier);
+ data << float(UiHitModifier);
}
if (changesMask[100])
{
- data << int32(HomeRealmTimeOffset);
+ data << float(UiSpellHitModifier);
}
if (changesMask[101])
{
- data << float(ModPetHaste);
+ data << int32(HomeRealmTimeOffset);
}
}
if (changesMask[102])
{
if (changesMask[103])
{
- data << int8(JailersTowerLevelMax);
+ data << float(ModPetHaste);
}
if (changesMask[104])
{
- data << int8(JailersTowerLevel);
+ data << int8(JailersTowerLevelMax);
}
if (changesMask[105])
{
- data << uint8(LocalRegenFlags);
+ data << int8(JailersTowerLevel);
}
if (changesMask[106])
{
- data << uint8(AuraVision);
+ data << uint8(LocalRegenFlags);
}
if (changesMask[107])
{
- data << uint8(NumBackpackSlots);
+ data << uint8(AuraVision);
}
if (changesMask[108])
{
- data << int32(OverrideSpellsID);
+ data << uint8(NumBackpackSlots);
}
if (changesMask[109])
{
- data << uint16(LootSpecID);
+ data << int32(OverrideSpellsID);
}
if (changesMask[110])
{
- data << uint32(OverrideZonePVPType);
+ data << uint16(LootSpecID);
}
if (changesMask[111])
{
- data << BnetAccount;
+ data << uint32(OverrideZonePVPType);
}
if (changesMask[112])
{
- data << uint64(GuildClubMemberID);
+ data << BnetAccount;
}
if (changesMask[113])
{
- data << int32(Honor);
+ data << uint64(GuildClubMemberID);
}
if (changesMask[114])
{
- data << int32(HonorNextLevel);
+ data << int32(Honor);
}
if (changesMask[115])
{
- data << int32(PerksProgramCurrency);
+ data << int32(HonorNextLevel);
}
if (changesMask[116])
{
+ data << int32(PerksProgramCurrency);
+ }
+ if (changesMask[117])
+ {
data << uint8(NumBankSlots);
}
- if (changesMask[121])
+ if (changesMask[122])
{
data << int32(UiChromieTimeExpansionID);
}
- if (changesMask[122])
+ if (changesMask[123])
{
data << int32(TransportServerTime);
}
- if (changesMask[123])
+ if (changesMask[124])
{
data << uint32(WeeklyRewardsPeriodSinceOrigin);
}
- if (changesMask[124])
+ if (changesMask[125])
{
data << int16(DEBUGSoulbindConduitRank);
}
- if (changesMask[126])
+ if (changesMask[127])
{
data << uint32(ActiveCombatTraitConfigID);
}
- if (changesMask[127])
+ if (changesMask[128])
{
data << int32(ItemUpgradeHighOnehandWeaponItemID);
}
- if (changesMask[128])
+ if (changesMask[129])
{
data << int32(ItemUpgradeHighFingerItemID);
}
- if (changesMask[129])
+ if (changesMask[130])
{
data << float(ItemUpgradeHighFingerWatermark);
}
- if (changesMask[130])
+ if (changesMask[131])
{
data << int32(ItemUpgradeHighTrinketItemID);
}
- if (changesMask[131])
+ if (changesMask[132])
{
data << float(ItemUpgradeHighTrinketWatermark);
}
- if (changesMask[132])
+ if (changesMask[133])
{
data << uint64(LootHistoryInstanceID);
}
}
if (changesMask[134])
{
- if (changesMask[135])
+ if (changesMask[136])
{
data << uint8(RequiredMountCapabilityFlags);
}
@@ -5121,32 +5182,41 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
if (changesMask[102])
{
data.WriteBits(QuestSession.has_value(), 1);
+ }
+ if (changesMask[134])
+ {
data.WriteBits(PetStable.has_value(), 1);
- data.FlushBits();
- if (changesMask[117])
+ }
+ data.FlushBits();
+ if (changesMask[102])
+ {
+ if (changesMask[118])
{
ResearchHistory->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[119])
+ if (changesMask[120])
{
if (QuestSession.has_value())
{
QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[118])
+ if (changesMask[119])
{
data << FrozenPerksVendorItem;
}
- if (changesMask[120])
+ if (changesMask[121])
{
Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[125])
+ if (changesMask[126])
{
data << DungeonScore;
}
- if (changesMask[133])
+ }
+ if (changesMask[134])
+ {
+ if (changesMask[135])
{
if (PetStable.has_value())
{
@@ -5154,151 +5224,151 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[136])
+ if (changesMask[137])
{
for (uint32 i = 0; i < 227; ++i)
{
- if (changesMask[137 + i])
+ if (changesMask[138 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[364])
+ if (changesMask[365])
{
for (uint32 i = 0; i < 240; ++i)
{
- if (changesMask[365 + i])
+ if (changesMask[366 + i])
{
data << uint64(ExploredZones[i]);
}
}
}
- if (changesMask[605])
+ if (changesMask[606])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[606 + i])
+ if (changesMask[607 + i])
{
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[608])
+ if (changesMask[609])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[609 + i])
+ if (changesMask[610 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[616 + i])
+ if (changesMask[617 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[623 + i])
+ if (changesMask[624 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[630 + i])
+ if (changesMask[631 + i])
{
data << float(ModHealingDonePercent[i]);
}
}
}
- if (changesMask[637])
+ if (changesMask[638])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[638 + i])
+ if (changesMask[639 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[641 + i])
+ if (changesMask[642 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[644])
+ if (changesMask[645])
{
for (uint32 i = 0; i < 12; ++i)
{
- if (changesMask[645 + i])
+ if (changesMask[646 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[657 + i])
+ if (changesMask[658 + i])
{
data << int64(BuybackTimestamp[i]);
}
}
}
- if (changesMask[669])
+ if (changesMask[670])
{
for (uint32 i = 0; i < 32; ++i)
{
- if (changesMask[670 + i])
+ if (changesMask[671 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[702])
+ if (changesMask[703])
{
for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[703 + i])
+ if (changesMask[704 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[707])
+ if (changesMask[708])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[708 + i])
+ if (changesMask[709 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[710])
+ if (changesMask[711])
{
for (uint32 i = 0; i < 5; ++i)
{
- if (changesMask[711 + i])
+ if (changesMask[712 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[716])
+ if (changesMask[717])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[717 + i])
+ if (changesMask[718 + i])
{
data << uint32(BankBagSlotFlags[i]);
}
}
}
- if (changesMask[724])
+ if (changesMask[725])
{
for (uint32 i = 0; i < 875; ++i)
{
- if (changesMask[725 + i])
+ if (changesMask[726 + i])
{
data << uint64(QuestCompleted[i]);
}
}
}
- if (changesMask[1600])
+ if (changesMask[1601])
{
for (uint32 i = 0; i < 17; ++i)
{
- if (changesMask[1601 + i])
+ if (changesMask[1602 + i])
{
data << float(ItemUpgradeHighWatermark[i]);
}
@@ -5310,6 +5380,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
void ActivePlayerData::ClearChangesMask()
{
Base::ClearChangesMask(BackpackAutoSortDisabled);
+ Base::ClearChangesMask(BackpackSellJunkDisabled);
Base::ClearChangesMask(BankAutoSortDisabled);
Base::ClearChangesMask(SortBagsRightToLeft);
Base::ClearChangesMask(InsertItemsLeftToRight);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 9d9c3df590f..1b5fe5782ce 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -462,7 +462,7 @@ struct CTROptions : public IsUpdateFieldStructureTag
bool operator!=(CTROptions const& right) const { return !(*this == right); }
};
-struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<261>
+struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<264>
{
UpdateField<bool, 0, 1> HasQuestSession;
UpdateField<bool, 0, 2> HasLevelLink;
@@ -478,32 +478,33 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<261>
UpdateField<uint32, 0, 12> GuildRankID;
UpdateField<uint32, 0, 13> GuildDeleteDate;
UpdateField<int32, 0, 14> GuildLevel;
- UpdateField<uint8, 0, 15> PartyType;
- UpdateField<uint8, 0, 16> NativeSex;
- UpdateField<uint8, 0, 17> Inebriation;
- UpdateField<uint8, 0, 18> PvpTitle;
- UpdateField<uint8, 0, 19> ArenaFaction;
- UpdateField<uint32, 0, 20> DuelTeam;
- UpdateField<int32, 0, 21> GuildTimeStamp;
- UpdateField<int32, 0, 22> PlayerTitle;
- UpdateField<int32, 0, 23> FakeInebriation;
- UpdateField<uint32, 0, 24> VirtualPlayerRealm;
- UpdateField<uint32, 0, 25> CurrentSpecID;
- UpdateField<int32, 0, 26> TaxiMountAnimKitID;
- UpdateField<uint8, 0, 27> CurrentBattlePetBreedQuality;
- UpdateField<int32, 0, 28> HonorLevel;
- UpdateField<int64, 0, 29> LogoutTime;
- UpdateField<int32, 0, 30> Field_B0;
- UpdateField<int32, 0, 31> Field_B4;
- UpdateField<int32, 32, 33> CurrentBattlePetSpeciesID;
+ UpdateField<uint8, 0, 15> NativeSex;
+ UpdateField<uint8, 0, 16> Inebriation;
+ UpdateField<uint8, 0, 17> PvpTitle;
+ UpdateField<uint8, 0, 18> ArenaFaction;
+ UpdateField<uint32, 0, 19> DuelTeam;
+ UpdateField<int32, 0, 20> GuildTimeStamp;
+ UpdateField<int32, 0, 21> PlayerTitle;
+ UpdateField<int32, 0, 22> FakeInebriation;
+ UpdateField<uint32, 0, 23> VirtualPlayerRealm;
+ UpdateField<uint32, 0, 24> CurrentSpecID;
+ UpdateField<int32, 0, 25> TaxiMountAnimKitID;
+ UpdateField<uint8, 0, 26> CurrentBattlePetBreedQuality;
+ UpdateField<int32, 0, 27> HonorLevel;
+ UpdateField<int64, 0, 28> LogoutTime;
+ UpdateField<int32, 0, 29> Field_B0;
+ UpdateField<int32, 0, 30> Field_B4;
+ UpdateField<int32, 0, 31> CurrentBattlePetSpeciesID;
+ UpdateField<ObjectGuid, 32, 33> field_138;
UpdateField<UF::CTROptions, 32, 34> CtrOptions;
UpdateField<int32, 32, 35> CovenantID;
UpdateField<int32, 32, 36> SoulbindID;
UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 37> DungeonScore;
- UpdateFieldArray<UF::QuestLog, 175, 38, 39> QuestLog;
- UpdateFieldArray<UF::VisibleItem, 19, 214, 215> VisibleItems;
- UpdateFieldArray<float, 6, 234, 235> AvgItemLevel;
- UpdateFieldArray<uint32, 19, 241, 242> Field_3120;
+ UpdateFieldArray<uint8, 2, 38, 39> PartyType;
+ UpdateFieldArray<UF::QuestLog, 175, 41, 42> QuestLog;
+ UpdateFieldArray<UF::VisibleItem, 19, 217, 218> VisibleItems;
+ UpdateFieldArray<float, 6, 237, 238> AvgItemLevel;
+ UpdateFieldArray<uint32, 19, 244, 245> Field_3120;
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;
@@ -827,6 +828,17 @@ struct StableInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3>
void ClearChangesMask();
};
+struct CollectableSourceTrackedData : public IsUpdateFieldStructureTag, public HasChangesMask<4>
+{
+ UpdateField<int32, 0, 1> TargetType;
+ UpdateField<int32, 0, 2> TargetID;
+ UpdateField<int32, 0, 3> CollectableSourceInfoID;
+
+ void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
+ void ClearChangesMask();
+};
+
struct Research : public IsUpdateFieldStructureTag
{
int16 ResearchProjectID;
@@ -837,154 +849,155 @@ struct Research : public IsUpdateFieldStructureTag
bool operator!=(Research const& right) const { return !(*this == right); }
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1618>
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1619>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
- UpdateField<bool, 0, 2> BankAutoSortDisabled;
- UpdateField<bool, 0, 3> SortBagsRightToLeft;
- UpdateField<bool, 0, 4> InsertItemsLeftToRight;
- UpdateField<bool, 0, 5> HasPerksProgramPendingReward;
- UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 35, 36> ResearchSites;
- UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 37, 38> ResearchSiteProgress;
- UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 39, 40> Research;
- DynamicUpdateField<uint64, 0, 6> KnownTitles;
- DynamicUpdateField<int32, 0, 8> DailyQuestsCompleted;
- DynamicUpdateField<int32, 0, 9> AvailableQuestLineXQuestIDs;
- DynamicUpdateField<int32, 0, 10> Heirlooms;
- DynamicUpdateField<uint32, 0, 11> HeirloomFlags;
- DynamicUpdateField<int32, 0, 12> Toys;
- DynamicUpdateField<uint32, 0, 13> ToyFlags;
- DynamicUpdateField<uint32, 0, 14> Transmog;
- DynamicUpdateField<int32, 0, 15> ConditionalTransmog;
- DynamicUpdateField<int32, 0, 16> SelfResSpells;
- DynamicUpdateField<uint32, 0, 17> RuneforgePowers;
- DynamicUpdateField<uint32, 0, 18> TransmogIllusions;
- DynamicUpdateField<UF::SpellPctModByLabel, 0, 20> SpellPctModByLabel;
- DynamicUpdateField<UF::SpellFlatModByLabel, 0, 21> SpellFlatModByLabel;
- DynamicUpdateField<UF::MawPower, 0, 22> MawPowers;
- DynamicUpdateField<UF::MultiFloorExplore, 0, 23> MultiFloorExploration;
- DynamicUpdateField<UF::RecipeProgressionInfo, 0, 24> RecipeProgression;
- DynamicUpdateField<UF::ReplayedQuest, 0, 25> ReplayedQuests;
- DynamicUpdateField<UF::QuestLog, 0, 26> TaskQuests;
- DynamicUpdateField<int32, 0, 27> DisabledSpells;
- DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 30> PersonalCraftingOrderCounts;
- DynamicUpdateField<UF::CategoryCooldownMod, 0, 31> CategoryCooldownMods;
- DynamicUpdateField<UF::WeeklySpellUse, 32, 33> WeeklySpellUses;
- DynamicUpdateField<int64, 32, 34> TrackedCollectableSources;
- DynamicUpdateField<UF::PVPInfo, 0, 7> PvpInfo;
- DynamicUpdateField<UF::CharacterRestriction, 0, 19> CharacterRestrictions;
- DynamicUpdateField<UF::TraitConfig, 0, 28> TraitConfigs;
- DynamicUpdateField<UF::CraftingOrder, 0, 29> CraftingOrders;
- UpdateField<ObjectGuid, 32, 41> FarsightObject;
- UpdateField<ObjectGuid, 32, 42> SummonedBattlePetGUID;
- UpdateField<uint64, 32, 43> Coinage;
- UpdateField<int32, 32, 44> XP;
- UpdateField<int32, 32, 45> NextLevelXP;
- UpdateField<int32, 32, 46> TrialXP;
- UpdateField<UF::SkillInfo, 32, 47> Skill;
- UpdateField<int32, 32, 48> CharacterPoints;
- UpdateField<int32, 32, 49> MaxTalentTiers;
- UpdateField<uint32, 32, 50> TrackCreatureMask;
- UpdateField<float, 32, 51> MainhandExpertise;
- UpdateField<float, 32, 52> OffhandExpertise;
- UpdateField<float, 32, 53> RangedExpertise;
- UpdateField<float, 32, 54> CombatRatingExpertise;
- UpdateField<float, 32, 55> BlockPercentage;
- UpdateField<float, 32, 56> DodgePercentage;
- UpdateField<float, 32, 57> DodgePercentageFromAttribute;
- UpdateField<float, 32, 58> ParryPercentage;
- UpdateField<float, 32, 59> ParryPercentageFromAttribute;
- UpdateField<float, 32, 60> CritPercentage;
- UpdateField<float, 32, 61> RangedCritPercentage;
- UpdateField<float, 32, 62> OffhandCritPercentage;
- UpdateField<float, 32, 63> SpellCritPercentage;
- UpdateField<int32, 32, 64> ShieldBlock;
- UpdateField<float, 32, 65> ShieldBlockCritPercentage;
- UpdateField<float, 32, 66> Mastery;
- UpdateField<float, 32, 67> Speed;
- UpdateField<float, 32, 68> Avoidance;
- UpdateField<float, 32, 69> Sturdiness;
- UpdateField<int32, 70, 71> Versatility;
- UpdateField<float, 70, 72> VersatilityBonus;
- UpdateField<float, 70, 73> PvpPowerDamage;
- UpdateField<float, 70, 74> PvpPowerHealing;
- UpdateField<int32, 70, 75> ModHealingDonePos;
- UpdateField<float, 70, 76> ModHealingPercent;
- UpdateField<float, 70, 77> ModPeriodicHealingDonePercent;
- UpdateField<float, 70, 78> ModSpellPowerPercent;
- UpdateField<float, 70, 79> ModResiliencePercent;
- UpdateField<float, 70, 80> OverrideSpellPowerByAPPercent;
- UpdateField<float, 70, 81> OverrideAPBySpellPowerPercent;
- UpdateField<int32, 70, 82> ModTargetResistance;
- UpdateField<int32, 70, 83> ModTargetPhysicalResistance;
- UpdateField<uint32, 70, 84> LocalFlags;
- UpdateField<uint8, 70, 85> GrantableLevels;
- UpdateField<uint8, 70, 86> MultiActionBars;
- UpdateField<uint8, 70, 87> LifetimeMaxRank;
- UpdateField<uint8, 70, 88> NumRespecs;
- UpdateField<uint32, 70, 89> PvpMedals;
- UpdateField<uint16, 70, 90> TodayHonorableKills;
- UpdateField<uint16, 70, 91> YesterdayHonorableKills;
- UpdateField<uint32, 70, 92> LifetimeHonorableKills;
- UpdateField<int32, 70, 93> WatchedFactionIndex;
- UpdateField<int32, 70, 94> MaxLevel;
- UpdateField<int32, 70, 95> ScalingPlayerLevelDelta;
- UpdateField<int32, 70, 96> MaxCreatureScalingLevel;
- UpdateField<int32, 70, 97> PetSpellPower;
- UpdateField<float, 70, 98> UiHitModifier;
- UpdateField<float, 70, 99> UiSpellHitModifier;
- UpdateField<int32, 70, 100> HomeRealmTimeOffset;
- UpdateField<float, 70, 101> ModPetHaste;
- UpdateField<int8, 102, 103> JailersTowerLevelMax;
- UpdateField<int8, 102, 104> JailersTowerLevel;
- UpdateField<uint8, 102, 105> LocalRegenFlags;
- UpdateField<uint8, 102, 106> AuraVision;
- UpdateField<uint8, 102, 107> NumBackpackSlots;
- UpdateField<int32, 102, 108> OverrideSpellsID;
- UpdateField<uint16, 102, 109> LootSpecID;
- UpdateField<uint32, 102, 110> OverrideZonePVPType;
- UpdateField<ObjectGuid, 102, 111> BnetAccount;
- UpdateField<uint64, 102, 112> GuildClubMemberID;
- UpdateField<int32, 102, 113> Honor;
- UpdateField<int32, 102, 114> HonorNextLevel;
- UpdateField<int32, 102, 115> PerksProgramCurrency;
- UpdateField<uint8, 102, 116> NumBankSlots;
- UpdateField<UF::ResearchHistory, 102, 117> ResearchHistory;
- UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 118> FrozenPerksVendorItem;
- UpdateField<UF::ActivePlayerUnk901, 102, 120> Field_1410;
- OptionalUpdateField<UF::QuestSession, 102, 119> QuestSession;
- UpdateField<int32, 102, 121> UiChromieTimeExpansionID;
- UpdateField<int32, 102, 122> TransportServerTime;
- UpdateField<uint32, 102, 123> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
- UpdateField<int16, 102, 124> DEBUGSoulbindConduitRank;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 102, 125> DungeonScore;
- UpdateField<uint32, 102, 126> ActiveCombatTraitConfigID;
- UpdateField<int32, 102, 127> ItemUpgradeHighOnehandWeaponItemID;
- UpdateField<int32, 102, 128> ItemUpgradeHighFingerItemID;
- UpdateField<float, 102, 129> ItemUpgradeHighFingerWatermark;
- UpdateField<int32, 102, 130> ItemUpgradeHighTrinketItemID;
- UpdateField<float, 102, 131> ItemUpgradeHighTrinketWatermark;
- UpdateField<uint64, 102, 132> LootHistoryInstanceID;
- OptionalUpdateField<UF::StableInfo, 102, 133> PetStable;
- UpdateField<uint8, 134, 135> RequiredMountCapabilityFlags;
- UpdateFieldArray<ObjectGuid, 227, 136, 137> InvSlots;
- UpdateFieldArray<uint64, 240, 364, 365> ExploredZones;
- UpdateFieldArray<UF::RestInfo, 2, 605, 606> RestInfo;
- UpdateFieldArray<int32, 7, 608, 609> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 608, 616> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 608, 623> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 608, 630> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 637, 638> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 637, 641> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 644, 645> BuybackPrice;
- UpdateFieldArray<int64, 12, 644, 657> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 669, 670> CombatRatings;
- UpdateFieldArray<uint32, 4, 702, 703> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 707, 708> ProfessionSkillLine;
- UpdateFieldArray<uint32, 5, 710, 711> BagSlotFlags;
- UpdateFieldArray<uint32, 7, 716, 717> BankBagSlotFlags;
- UpdateFieldArray<uint64, 875, 724, 725> QuestCompleted;
- UpdateFieldArray<float, 17, 1600, 1601> ItemUpgradeHighWatermark;
+ UpdateField<bool, 0, 2> BackpackSellJunkDisabled;
+ UpdateField<bool, 0, 3> BankAutoSortDisabled;
+ UpdateField<bool, 0, 4> SortBagsRightToLeft;
+ UpdateField<bool, 0, 5> InsertItemsLeftToRight;
+ UpdateField<bool, 0, 6> HasPerksProgramPendingReward;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 36, 37> ResearchSites;
+ UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 38, 39> ResearchSiteProgress;
+ UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 40, 41> Research;
+ DynamicUpdateField<uint64, 0, 7> KnownTitles;
+ DynamicUpdateField<int32, 0, 9> DailyQuestsCompleted;
+ DynamicUpdateField<int32, 0, 10> AvailableQuestLineXQuestIDs;
+ DynamicUpdateField<int32, 0, 11> Heirlooms;
+ DynamicUpdateField<uint32, 0, 12> HeirloomFlags;
+ DynamicUpdateField<int32, 0, 13> Toys;
+ DynamicUpdateField<uint32, 0, 14> ToyFlags;
+ DynamicUpdateField<uint32, 0, 15> Transmog;
+ DynamicUpdateField<int32, 0, 16> ConditionalTransmog;
+ DynamicUpdateField<int32, 0, 17> SelfResSpells;
+ DynamicUpdateField<uint32, 0, 18> RuneforgePowers;
+ DynamicUpdateField<uint32, 0, 19> TransmogIllusions;
+ DynamicUpdateField<UF::SpellPctModByLabel, 0, 21> SpellPctModByLabel;
+ DynamicUpdateField<UF::SpellFlatModByLabel, 0, 22> SpellFlatModByLabel;
+ DynamicUpdateField<UF::MawPower, 0, 23> MawPowers;
+ DynamicUpdateField<UF::MultiFloorExplore, 0, 24> MultiFloorExploration;
+ DynamicUpdateField<UF::RecipeProgressionInfo, 0, 25> RecipeProgression;
+ DynamicUpdateField<UF::ReplayedQuest, 0, 26> ReplayedQuests;
+ DynamicUpdateField<UF::QuestLog, 0, 27> TaskQuests;
+ DynamicUpdateField<int32, 0, 28> DisabledSpells;
+ DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 31> PersonalCraftingOrderCounts;
+ DynamicUpdateField<UF::CategoryCooldownMod, 32, 33> CategoryCooldownMods;
+ DynamicUpdateField<UF::WeeklySpellUse, 32, 34> WeeklySpellUses;
+ DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 35> TrackedCollectableSources;
+ DynamicUpdateField<UF::PVPInfo, 0, 8> PvpInfo;
+ DynamicUpdateField<UF::CharacterRestriction, 0, 20> CharacterRestrictions;
+ DynamicUpdateField<UF::TraitConfig, 0, 29> TraitConfigs;
+ DynamicUpdateField<UF::CraftingOrder, 0, 30> CraftingOrders;
+ UpdateField<ObjectGuid, 32, 42> FarsightObject;
+ UpdateField<ObjectGuid, 32, 43> SummonedBattlePetGUID;
+ UpdateField<uint64, 32, 44> Coinage;
+ UpdateField<int32, 32, 45> XP;
+ UpdateField<int32, 32, 46> NextLevelXP;
+ UpdateField<int32, 32, 47> TrialXP;
+ UpdateField<UF::SkillInfo, 32, 48> Skill;
+ UpdateField<int32, 32, 49> CharacterPoints;
+ UpdateField<int32, 32, 50> MaxTalentTiers;
+ UpdateField<uint32, 32, 51> TrackCreatureMask;
+ UpdateField<float, 32, 52> MainhandExpertise;
+ UpdateField<float, 32, 53> OffhandExpertise;
+ UpdateField<float, 32, 54> RangedExpertise;
+ UpdateField<float, 32, 55> CombatRatingExpertise;
+ UpdateField<float, 32, 56> BlockPercentage;
+ UpdateField<float, 32, 57> DodgePercentage;
+ UpdateField<float, 32, 58> DodgePercentageFromAttribute;
+ UpdateField<float, 32, 59> ParryPercentage;
+ UpdateField<float, 32, 60> ParryPercentageFromAttribute;
+ UpdateField<float, 32, 61> CritPercentage;
+ UpdateField<float, 32, 62> RangedCritPercentage;
+ UpdateField<float, 32, 63> OffhandCritPercentage;
+ UpdateField<float, 32, 64> SpellCritPercentage;
+ UpdateField<int32, 32, 65> ShieldBlock;
+ UpdateField<float, 32, 66> ShieldBlockCritPercentage;
+ UpdateField<float, 32, 67> Mastery;
+ UpdateField<float, 32, 68> Speed;
+ UpdateField<float, 32, 69> Avoidance;
+ UpdateField<float, 70, 71> Sturdiness;
+ UpdateField<int32, 70, 72> Versatility;
+ UpdateField<float, 70, 73> VersatilityBonus;
+ UpdateField<float, 70, 74> PvpPowerDamage;
+ UpdateField<float, 70, 75> PvpPowerHealing;
+ UpdateField<int32, 70, 76> ModHealingDonePos;
+ UpdateField<float, 70, 77> ModHealingPercent;
+ UpdateField<float, 70, 78> ModPeriodicHealingDonePercent;
+ UpdateField<float, 70, 79> ModSpellPowerPercent;
+ UpdateField<float, 70, 80> ModResiliencePercent;
+ UpdateField<float, 70, 81> OverrideSpellPowerByAPPercent;
+ UpdateField<float, 70, 82> OverrideAPBySpellPowerPercent;
+ UpdateField<int32, 70, 83> ModTargetResistance;
+ UpdateField<int32, 70, 84> ModTargetPhysicalResistance;
+ UpdateField<uint32, 70, 85> LocalFlags;
+ UpdateField<uint8, 70, 86> GrantableLevels;
+ UpdateField<uint8, 70, 87> MultiActionBars;
+ UpdateField<uint8, 70, 88> LifetimeMaxRank;
+ UpdateField<uint8, 70, 89> NumRespecs;
+ UpdateField<uint32, 70, 90> PvpMedals;
+ UpdateField<uint16, 70, 91> TodayHonorableKills;
+ UpdateField<uint16, 70, 92> YesterdayHonorableKills;
+ UpdateField<uint32, 70, 93> LifetimeHonorableKills;
+ UpdateField<int32, 70, 94> WatchedFactionIndex;
+ UpdateField<int32, 70, 95> MaxLevel;
+ UpdateField<int32, 70, 96> ScalingPlayerLevelDelta;
+ UpdateField<int32, 70, 97> MaxCreatureScalingLevel;
+ UpdateField<int32, 70, 98> PetSpellPower;
+ UpdateField<float, 70, 99> UiHitModifier;
+ UpdateField<float, 70, 100> UiSpellHitModifier;
+ UpdateField<int32, 70, 101> HomeRealmTimeOffset;
+ UpdateField<float, 102, 103> ModPetHaste;
+ UpdateField<int8, 102, 104> JailersTowerLevelMax;
+ UpdateField<int8, 102, 105> JailersTowerLevel;
+ UpdateField<uint8, 102, 106> LocalRegenFlags;
+ UpdateField<uint8, 102, 107> AuraVision;
+ UpdateField<uint8, 102, 108> NumBackpackSlots;
+ UpdateField<int32, 102, 109> OverrideSpellsID;
+ UpdateField<uint16, 102, 110> LootSpecID;
+ UpdateField<uint32, 102, 111> OverrideZonePVPType;
+ UpdateField<ObjectGuid, 102, 112> BnetAccount;
+ UpdateField<uint64, 102, 113> GuildClubMemberID;
+ UpdateField<int32, 102, 114> Honor;
+ UpdateField<int32, 102, 115> HonorNextLevel;
+ UpdateField<int32, 102, 116> PerksProgramCurrency;
+ UpdateField<uint8, 102, 117> NumBankSlots;
+ UpdateField<UF::ResearchHistory, 102, 118> ResearchHistory;
+ UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 119> FrozenPerksVendorItem;
+ UpdateField<UF::ActivePlayerUnk901, 102, 121> Field_1410;
+ OptionalUpdateField<UF::QuestSession, 102, 120> QuestSession;
+ UpdateField<int32, 102, 122> UiChromieTimeExpansionID;
+ UpdateField<int32, 102, 123> TransportServerTime;
+ UpdateField<uint32, 102, 124> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
+ UpdateField<int16, 102, 125> DEBUGSoulbindConduitRank;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 102, 126> DungeonScore;
+ UpdateField<uint32, 102, 127> ActiveCombatTraitConfigID;
+ UpdateField<int32, 102, 128> ItemUpgradeHighOnehandWeaponItemID;
+ UpdateField<int32, 102, 129> ItemUpgradeHighFingerItemID;
+ UpdateField<float, 102, 130> ItemUpgradeHighFingerWatermark;
+ UpdateField<int32, 102, 131> ItemUpgradeHighTrinketItemID;
+ UpdateField<float, 102, 132> ItemUpgradeHighTrinketWatermark;
+ UpdateField<uint64, 102, 133> LootHistoryInstanceID;
+ OptionalUpdateField<UF::StableInfo, 134, 135> PetStable;
+ UpdateField<uint8, 134, 136> RequiredMountCapabilityFlags;
+ UpdateFieldArray<ObjectGuid, 227, 137, 138> InvSlots;
+ UpdateFieldArray<uint64, 240, 365, 366> ExploredZones;
+ UpdateFieldArray<UF::RestInfo, 2, 606, 607> RestInfo;
+ UpdateFieldArray<int32, 7, 609, 610> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 609, 617> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 609, 624> ModDamageDonePercent;
+ UpdateFieldArray<float, 7, 609, 631> ModHealingDonePercent;
+ UpdateFieldArray<float, 3, 638, 639> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 638, 642> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 645, 646> BuybackPrice;
+ UpdateFieldArray<int64, 12, 645, 658> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 670, 671> CombatRatings;
+ UpdateFieldArray<uint32, 4, 703, 704> NoReagentCostMask;
+ UpdateFieldArray<int32, 2, 708, 709> ProfessionSkillLine;
+ UpdateFieldArray<uint32, 5, 711, 712> BagSlotFlags;
+ UpdateFieldArray<uint32, 7, 717, 718> BankBagSlotFlags;
+ UpdateFieldArray<uint64, 875, 725, 726> QuestCompleted;
+ UpdateFieldArray<float, 17, 1601, 1602> ItemUpgradeHighWatermark;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 5126853d96d..a52afe95a6d 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -13200,8 +13200,8 @@ void Player::SendBuyError(BuyResult msg, Creature* creature, uint32 item, uint32
void Player::SendSellError(SellResult msg, Creature* creature, ObjectGuid guid) const
{
WorldPackets::Item::SellResponse sellResponse;
- sellResponse.VendorGUID = (creature ? creature->GetGUID() : ObjectGuid::Empty);
- sellResponse.ItemGUID = guid;
+ sellResponse.VendorGUID = creature ? creature->GetGUID() : ObjectGuid::Empty;
+ sellResponse.ItemGUIDs.push_back(guid);
sellResponse.Reason = msg;
SendDirectMessage(sellResponse.Write());
}
@@ -23796,6 +23796,23 @@ bool Player::IsInGroup(ObjectGuid groupGuid) const
return false;
}
+Group const* Player::GetGroup(Optional<uint8> partyIndex) const
+{
+ Group const* group = GetGroup();
+ if (!partyIndex)
+ return group;
+
+ GroupCategory category = GroupCategory(*partyIndex);
+ if (group && group->GetGroupCategory() == category)
+ return group;
+
+ Group const* originalGroup = GetOriginalGroup();
+ if (originalGroup && originalGroup->GetGroupCategory() == category)
+ return originalGroup;
+
+ return nullptr;
+}
+
void Player::SetGroup(Group* group, int8 subgroup)
{
if (group == nullptr)
@@ -25469,9 +25486,9 @@ Player* Player::GetNextRandomRaidMember(float radius)
return nearMembers[randTarget];
}
-PartyResult Player::CanUninviteFromGroup(ObjectGuid guidMember) const
+PartyResult Player::CanUninviteFromGroup(ObjectGuid guidMember, Optional<uint8> partyIndex) const
{
- Group const* grp = GetGroup();
+ Group const* grp = GetGroup(partyIndex);
if (!grp)
return ERR_NOT_IN_GROUP;
@@ -25492,7 +25509,7 @@ PartyResult Player::CanUninviteFromGroup(ObjectGuid guidMember) const
return ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE;
Player* player = ObjectAccessor::FindConnectedPlayer(guidMember);
- if (!player->m_lootRolls.empty())
+ if (player && !player->m_lootRolls.empty())
return ERR_PARTY_LFG_BOOT_LOOT_ROLLS;
/// @todo Should also be sent when anyone has recently left combat, with an aprox ~5 seconds timer.
@@ -25574,10 +25591,7 @@ void Player::SetOriginalGroup(Group* group, int8 subgroup)
void Player::SetPartyType(GroupCategory category, uint8 type)
{
ASSERT(category < MAX_GROUP_CATEGORY);
- uint8 value = m_playerData->PartyType;
- value &= ~uint8(uint8(0xFF) << (category * 4));
- value |= uint8(uint8(type) << (category * 4));
- SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PartyType), value);
+ SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PartyType, category), type);
}
void Player::ResetGroupUpdateSequenceIfNeeded(Group const* group)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index c328092ac41..adf692b7507 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2587,6 +2587,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
bool IsInGroup(ObjectGuid groupGuid) const;
Group* GetGroupInvite() const { return m_groupInvite; }
void SetGroupInvite(Group* group) { m_groupInvite = group; }
+ Group* GetGroup(Optional<uint8> partyIndex) { return const_cast<Group*>(const_cast<Player const*>(this)->GetGroup(partyIndex)); }
+ Group const* GetGroup(Optional<uint8> partyIndex) const;
Group* GetGroup() { return m_group.getTarget(); }
Group const* GetGroup() const { return const_cast<Group const*>(m_group.getTarget()); }
GroupReference& GetGroupRef() { return m_group; }
@@ -2599,7 +2601,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void ResetGroupUpdateSequenceIfNeeded(Group const* group);
int32 NextGroupUpdateSequenceNumber(GroupCategory category);
Player* GetNextRandomRaidMember(float radius);
- PartyResult CanUninviteFromGroup(ObjectGuid guidMember = ObjectGuid::Empty) const;
+ PartyResult CanUninviteFromGroup(ObjectGuid guidMember, Optional<uint8> partyIndex) const;
// Battleground / Battlefield Group System
void SetBattlegroundOrBattlefieldRaid(Group* group, int8 subgroup = -1);
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index 821ee3c7dd8..55a481c8fc7 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -657,7 +657,7 @@ bool Group::RemoveMember(ObjectGuid guid, RemoveMethod method /*= GROUP_REMOVEME
}
}
-void Group::ChangeLeader(ObjectGuid newLeaderGuid, int8 partyIndex)
+void Group::ChangeLeader(ObjectGuid newLeaderGuid)
{
member_witerator slot = _getMemberWSlot(newLeaderGuid);
@@ -698,7 +698,7 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid, int8 partyIndex)
WorldPackets::Party::GroupNewLeader groupNewLeader;
groupNewLeader.Name = m_leaderName;
- groupNewLeader.PartyIndex = partyIndex;
+ groupNewLeader.PartyIndex = GetGroupCategory();
BroadcastPacket(groupNewLeader.Write(), true);
}
@@ -769,7 +769,7 @@ void Group::Disband(bool hideDestroy /* = false */)
delete this;
}
-void Group::SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy, uint8 partyIndex)
+void Group::SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy)
{
if (symbol >= TARGET_ICONS_COUNT)
return;
@@ -778,27 +778,27 @@ void Group::SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy,
if (!target.IsEmpty())
for (uint8 i = 0; i < TARGET_ICONS_COUNT; ++i)
if (m_targetIcons[i] == target)
- SetTargetIcon(i, ObjectGuid::Empty, changedBy, partyIndex);
+ SetTargetIcon(i, ObjectGuid::Empty, changedBy);
m_targetIcons[symbol] = target;
WorldPackets::Party::SendRaidTargetUpdateSingle updateSingle;
- updateSingle.PartyIndex = partyIndex;
+ updateSingle.PartyIndex = GetGroupCategory();
updateSingle.Target = target;
updateSingle.ChangedBy = changedBy;
updateSingle.Symbol = symbol;
BroadcastPacket(updateSingle.Write(), true);
}
-void Group::SendTargetIconList(WorldSession* session, int8 partyIndex)
+void Group::SendTargetIconList(WorldSession* session)
{
if (!session)
return;
WorldPackets::Party::SendRaidTargetUpdateAll updateAll;
- updateAll.PartyIndex = partyIndex;
+ updateAll.PartyIndex = GetGroupCategory();
for (uint8 i = 0; i < TARGET_ICONS_COUNT; i++)
- updateAll.TargetIcons.insert(std::pair<uint8, ObjectGuid>(i, m_targetIcons[i]));
+ updateAll.TargetIcons.try_emplace(i, m_targetIcons[i]);
session->SendPacket(updateAll.Write());
}
@@ -1444,7 +1444,7 @@ void Group::UpdateReadyCheck(uint32 diff)
EndReadyCheck();
}
-void Group::StartReadyCheck(ObjectGuid starterGuid, int8 partyIndex, Milliseconds duration)
+void Group::StartReadyCheck(ObjectGuid starterGuid, Milliseconds duration)
{
if (m_readyCheckStarted)
return;
@@ -1462,7 +1462,7 @@ void Group::StartReadyCheck(ObjectGuid starterGuid, int8 partyIndex, Millisecond
WorldPackets::Party::ReadyCheckStarted readyCheckStarted;
readyCheckStarted.PartyGUID = m_guid;
- readyCheckStarted.PartyIndex = partyIndex;
+ readyCheckStarted.PartyIndex = GetGroupCategory();
readyCheckStarted.InitiatorGUID = starterGuid;
readyCheckStarted.Duration = duration;
BroadcastPacket(readyCheckStarted.Write(), false);
@@ -1561,11 +1561,11 @@ void Group::DeleteRaidMarker(uint8 markerId)
SendRaidMarkersChanged();
}
-void Group::SendRaidMarkersChanged(WorldSession* session, int8 partyIndex)
+void Group::SendRaidMarkersChanged(WorldSession* session)
{
WorldPackets::Party::RaidMarkersChanged packet;
- packet.PartyIndex = partyIndex;
+ packet.PartyIndex = GetGroupCategory();
packet.ActiveMarkers = m_activeMarkers;
for (uint8 i = 0; i < RAID_MARKERS_COUNT; i++)
diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h
index 825c8732724..397755c6deb 100644
--- a/src/server/game/Groups/Group.h
+++ b/src/server/game/Groups/Group.h
@@ -209,7 +209,7 @@ class TC_GAME_API Group
bool AddLeaderInvite(Player* player);
bool AddMember(Player* player);
bool RemoveMember(ObjectGuid guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker = ObjectGuid::Empty, const char* reason = nullptr);
- void ChangeLeader(ObjectGuid guid, int8 partyIndex = 0);
+ void ChangeLeader(ObjectGuid guid);
void SetLootMethod(LootMethod method);
void SetLooterGuid(ObjectGuid guid);
void SetMasterLooterGuid(ObjectGuid guid);
@@ -224,7 +224,7 @@ class TC_GAME_API Group
void UpdateReadyCheck(uint32 diff);
// Ready check
- void StartReadyCheck(ObjectGuid starterGuid, int8 partyIndex, Milliseconds duration = Milliseconds(READYCHECK_DURATION));
+ void StartReadyCheck(ObjectGuid starterGuid, Milliseconds duration = Milliseconds(READYCHECK_DURATION));
void EndReadyCheck();
bool IsReadyCheckStarted(void) const { return m_readyCheckStarted; }
@@ -240,7 +240,7 @@ class TC_GAME_API Group
// Raid Markers
void AddRaidMarker(uint8 markerId, uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty);
void DeleteRaidMarker(uint8 markerId);
- void SendRaidMarkersChanged(WorldSession* session = nullptr, int8 partyIndex = 0);
+ void SendRaidMarkersChanged(WorldSession* session = nullptr);
// properties accessories
bool IsFull() const;
@@ -297,7 +297,7 @@ class TC_GAME_API Group
void ChangeMembersGroup(ObjectGuid guid, uint8 group);
void SwapMembersGroups(ObjectGuid firstGuid, ObjectGuid secondGuid);
- void SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy, uint8 partyIndex);
+ void SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy);
void SetGroupMemberFlag(ObjectGuid guid, bool apply, GroupMemberFlags flag);
void RemoveUniqueGroupMemberFlag(GroupMemberFlags flag);
@@ -312,7 +312,7 @@ class TC_GAME_API Group
// -no description-
//void SendInit(WorldSession* session);
- void SendTargetIconList(WorldSession* session, int8 partyIndex = 0);
+ void SendTargetIconList(WorldSession* session);
void SendUpdate();
void SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot = nullptr);
void SendUpdateDestroyGroupToPlayer(Player* player) const;
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index e12c5dec2e7..cf06a8c754f 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -111,15 +111,11 @@ void WorldSession::HandlePartyInviteOpcode(WorldPackets::Party::PartyInviteClien
return;
}
- Group* group = invitingPlayer->GetGroup();
- if (group && group->isBGGroup())
- group = invitingPlayer->GetOriginalGroup();
+ Group* group = invitingPlayer->GetGroup(packet.PartyIndex);
if (!group)
group = invitingPlayer->GetGroupInvite();
- Group* group2 = invitedPlayer->GetGroup();
- if (group2 && group2->isBGGroup())
- group2 = invitedPlayer->GetOriginalGroup();
+ Group* group2 = invitedPlayer->GetGroup(packet.PartyIndex);
// player already in another group or invited
if (group2 || invitedPlayer->GetGroupInvite())
{
@@ -195,6 +191,9 @@ void WorldSession::HandlePartyInviteResponseOpcode(WorldPackets::Party::PartyInv
if (!group)
return;
+ if (packet.PartyIndex && group->GetGroupCategory() != GroupCategory(*packet.PartyIndex))
+ return;
+
if (packet.Accept)
{
// Remove player from invitees in any case
@@ -265,14 +264,14 @@ void WorldSession::HandlePartyUninviteOpcode(WorldPackets::Party::PartyUninvite&
return;
}
- PartyResult res = GetPlayer()->CanUninviteFromGroup(packet.TargetGUID);
+ PartyResult res = GetPlayer()->CanUninviteFromGroup(packet.TargetGUID, packet.PartyIndex);
if (res != ERR_PARTY_RESULT_OK)
{
SendPartyResult(PARTY_OP_UNINVITE, "", res);
return;
}
- Group* grp = GetPlayer()->GetGroup();
+ Group* grp = GetPlayer()->GetGroup(packet.PartyIndex);
// grp is checked already above in CanUninviteFromGroup()
ASSERT(grp);
@@ -294,7 +293,7 @@ void WorldSession::HandlePartyUninviteOpcode(WorldPackets::Party::PartyUninvite&
void WorldSession::HandleSetPartyLeaderOpcode(WorldPackets::Party::SetPartyLeader& packet)
{
Player* player = ObjectAccessor::FindConnectedPlayer(packet.TargetGUID);
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group || !player)
return;
@@ -303,7 +302,7 @@ void WorldSession::HandleSetPartyLeaderOpcode(WorldPackets::Party::SetPartyLeade
return;
// Everything's fine, accepted.
- group->ChangeLeader(packet.TargetGUID, packet.PartyIndex);
+ group->ChangeLeader(packet.TargetGUID);
group->SendUpdate();
}
@@ -311,12 +310,12 @@ void WorldSession::HandleSetRoleOpcode(WorldPackets::Party::SetRole& packet)
{
WorldPackets::Party::RoleChangedInform roleChangedInform;
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
uint8 oldRole = group ? group->GetLfgRoles(packet.TargetGUID) : 0;
if (oldRole == packet.Role)
return;
- roleChangedInform.PartyIndex = packet.PartyIndex;
+ roleChangedInform.PartyIndex = group->GetGroupCategory();
roleChangedInform.From = GetPlayer()->GetGUID();
roleChangedInform.ChangedUnit = packet.TargetGUID;
roleChangedInform.OldRole = oldRole;
@@ -331,9 +330,9 @@ void WorldSession::HandleSetRoleOpcode(WorldPackets::Party::SetRole& packet)
SendPacket(roleChangedInform.Write());
}
-void WorldSession::HandleLeaveGroupOpcode(WorldPackets::Party::LeaveGroup& /*packet*/)
+void WorldSession::HandleLeaveGroupOpcode(WorldPackets::Party::LeaveGroup& packet)
{
- Group* grp = GetPlayer()->GetGroup();
+ Group* grp = GetPlayer()->GetGroup(packet.PartyIndex);
Group* grpInvite = GetPlayer()->GetGroupInvite();
if (!grp && !grpInvite)
return;
@@ -364,7 +363,7 @@ void WorldSession::HandleSetLootMethodOpcode(WorldPackets::Party::SetLootMethod&
{
// not allowed to change
/*
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -401,14 +400,15 @@ void WorldSession::HandleSetLootMethodOpcode(WorldPackets::Party::SetLootMethod&
void WorldSession::HandleMinimapPingOpcode(WorldPackets::Party::MinimapPingClient& packet)
{
- if (!GetPlayer()->GetGroup())
+ Group const* group = GetPlayer()->GetGroup(packet.PartyIndex);
+ if (!group)
return;
WorldPackets::Party::MinimapPing minimapPing;
minimapPing.Sender = GetPlayer()->GetGUID();
minimapPing.PositionX = packet.PositionX;
minimapPing.PositionY = packet.PositionY;
- GetPlayer()->GetGroup()->BroadcastPacket(minimapPing.Write(), true, -1, GetPlayer()->GetGUID());
+ group->BroadcastPacket(minimapPing.Write(), true, -1, GetPlayer()->GetGUID());
}
void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet)
@@ -423,12 +423,12 @@ void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient&
void WorldSession::HandleUpdateRaidTargetOpcode(WorldPackets::Party::UpdateRaidTarget& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
if (packet.Symbol == -1) // target icon request
- group->SendTargetIconList(this, packet.PartyIndex);
+ group->SendTargetIconList(this);
else // target icon update
{
if (group->isRaidGroup() && !group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
@@ -441,7 +441,7 @@ void WorldSession::HandleUpdateRaidTargetOpcode(WorldPackets::Party::UpdateRaidT
return;
}
- group->SetTargetIcon(packet.Symbol, packet.Target, GetPlayer()->GetGUID(), packet.PartyIndex);
+ group->SetTargetIcon(packet.Symbol, packet.Target, GetPlayer()->GetGUID());
}
}
@@ -470,18 +470,18 @@ void WorldSession::HandleConvertRaidOpcode(WorldPackets::Party::ConvertRaid& pac
void WorldSession::HandleRequestPartyJoinUpdates(WorldPackets::Party::RequestPartyJoinUpdates& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
- group->SendTargetIconList(this, packet.PartyIndex);
- group->SendRaidMarkersChanged(this, packet.PartyIndex);
+ group->SendTargetIconList(this);
+ group->SendRaidMarkersChanged(this);
}
void WorldSession::HandleChangeSubGroupOpcode(WorldPackets::Party::ChangeSubGroup& packet)
{
// we will get correct pointer for group here, so we don't have to check if group is BG raid
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -500,7 +500,7 @@ void WorldSession::HandleChangeSubGroupOpcode(WorldPackets::Party::ChangeSubGrou
void WorldSession::HandleSwapSubGroupsOpcode(WorldPackets::Party::SwapSubGroups& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -513,7 +513,7 @@ void WorldSession::HandleSwapSubGroupsOpcode(WorldPackets::Party::SwapSubGroups&
void WorldSession::HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssistantLeader& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -525,7 +525,7 @@ void WorldSession::HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssist
void WorldSession::HandleSetPartyAssignment(WorldPackets::Party::SetPartyAssignment& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -552,7 +552,7 @@ void WorldSession::HandleSetPartyAssignment(WorldPackets::Party::SetPartyAssignm
void WorldSession::HandleDoReadyCheckOpcode(WorldPackets::Party::DoReadyCheck& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -562,12 +562,12 @@ void WorldSession::HandleDoReadyCheckOpcode(WorldPackets::Party::DoReadyCheck& p
/********************/
// everything's fine, do it
- group->StartReadyCheck(GetPlayer()->GetGUID(), packet.PartyIndex);
+ group->StartReadyCheck(GetPlayer()->GetGUID());
}
void WorldSession::HandleReadyCheckResponseOpcode(WorldPackets::Party::ReadyCheckResponseClient& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -612,7 +612,7 @@ void WorldSession::HandleOptOutOfLootOpcode(WorldPackets::Party::OptOutOfLoot& p
void WorldSession::HandleInitiateRolePoll(WorldPackets::Party::InitiateRolePoll& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group const* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -622,13 +622,13 @@ void WorldSession::HandleInitiateRolePoll(WorldPackets::Party::InitiateRolePoll&
WorldPackets::Party::RolePollInform rolePollInform;
rolePollInform.From = GetPlayer()->GetGUID();
- rolePollInform.PartyIndex = packet.PartyIndex;
+ rolePollInform.PartyIndex = group->GetGroupCategory();
group->BroadcastPacket(rolePollInform.Write(), true);
}
void WorldSession::HandleSetEveryoneIsAssistant(WorldPackets::Party::SetEveryoneIsAssistant& packet)
{
- Group* group = GetPlayer()->GetGroup();
+ Group* group = GetPlayer()->GetGroup(packet.PartyIndex);
if (!group)
return;
diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp
index e4416383994..5bfd00dc1fa 100644
--- a/src/server/game/Handlers/InspectHandler.cpp
+++ b/src/server/game/Handlers/InspectHandler.cpp
@@ -56,6 +56,11 @@ void WorldSession::HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect)
PlayerPvpTalentMap const& pvpTalents = player->GetPvpTalentMap(player->GetActiveTalentGroup());
for (std::size_t i = 0; i < pvpTalents.size(); ++i)
inspectResult.PvpTalents[i] = pvpTalents[i];
+
+ inspectResult.TalentTraits.Level = player->GetLevel();
+ inspectResult.TalentTraits.ChrSpecializationID = AsUnderlyingType(player->GetPrimarySpecialization());
+ if (UF::TraitConfig const* traitConfig = player->GetTraitConfig(player->m_activePlayerData->ActiveCombatTraitConfigID))
+ inspectResult.TalentTraits.Config = WorldPackets::Traits::TraitConfig(*traitConfig);
}
if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId()))
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index c7d443f78d0..7b50a922715 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -7685,363 +7685,365 @@ enum class GameError : uint32
ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 764,
ERR_BATTLEGROUND_JOIN_RESPEC = 765,
ERR_BATTLEGROUND_INVITATION_DECLINED = 766,
- ERR_BATTLEGROUND_JOIN_TIMED_OUT = 767,
- ERR_BATTLEGROUND_DUPE_QUEUE = 768,
- ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 769,
- ERR_IN_BATTLEGROUND_RESPEC = 770,
- ERR_MAIL_LIMITED_DURATION_ITEM = 771,
- ERR_YELL_RESTRICTED_TRIAL = 772,
- ERR_CHAT_RAID_RESTRICTED_TRIAL = 773,
- ERR_LFG_ROLE_CHECK_FAILED = 774,
- ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 775,
- ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 776,
- ERR_LFG_READY_CHECK_FAILED = 777,
- ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 778,
- ERR_LFG_GROUP_FULL = 779,
- ERR_LFG_NO_LFG_OBJECT = 780,
- ERR_LFG_NO_SLOTS_PLAYER = 781,
- ERR_LFG_NO_SLOTS_PARTY = 782,
- ERR_LFG_NO_SPEC = 783,
- ERR_LFG_MISMATCHED_SLOTS = 784,
- ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 785,
- ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 786,
- ERR_LFG_MEMBERS_NOT_PRESENT = 787,
- ERR_LFG_GET_INFO_TIMEOUT = 788,
- ERR_LFG_INVALID_SLOT = 789,
- ERR_LFG_DESERTER_PLAYER = 790,
- ERR_LFG_DESERTER_PARTY = 791,
- ERR_LFG_DEAD = 792,
- ERR_LFG_RANDOM_COOLDOWN_PLAYER = 793,
- ERR_LFG_RANDOM_COOLDOWN_PARTY = 794,
- ERR_LFG_TOO_MANY_MEMBERS = 795,
- ERR_LFG_TOO_FEW_MEMBERS = 796,
- ERR_LFG_PROPOSAL_FAILED = 797,
- ERR_LFG_PROPOSAL_DECLINED_SELF = 798,
- ERR_LFG_PROPOSAL_DECLINED_PARTY = 799,
- ERR_LFG_NO_SLOTS_SELECTED = 800,
- ERR_LFG_NO_ROLES_SELECTED = 801,
- ERR_LFG_ROLE_CHECK_INITIATED = 802,
- ERR_LFG_READY_CHECK_INITIATED = 803,
- ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 804,
- ERR_LFG_PLAYER_DECLINED_READY_CHECK = 805,
- ERR_LFG_JOINED_QUEUE = 806,
- ERR_LFG_JOINED_FLEX_QUEUE = 807,
- ERR_LFG_JOINED_RF_QUEUE = 808,
- ERR_LFG_JOINED_SCENARIO_QUEUE = 809,
- ERR_LFG_JOINED_WORLD_PVP_QUEUE = 810,
- ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 811,
- ERR_LFG_JOINED_LIST = 812,
- ERR_LFG_LEFT_QUEUE = 813,
- ERR_LFG_LEFT_LIST = 814,
- ERR_LFG_ROLE_CHECK_ABORTED = 815,
- ERR_LFG_READY_CHECK_ABORTED = 816,
- ERR_LFG_CANT_USE_BATTLEGROUND = 817,
- ERR_LFG_CANT_USE_DUNGEONS = 818,
- ERR_LFG_REASON_TOO_MANY_LFG = 819,
- ERR_LFG_FARM_LIMIT = 820,
- ERR_LFG_NO_CROSS_FACTION_PARTIES = 821,
- ERR_INVALID_TELEPORT_LOCATION = 822,
- ERR_TOO_FAR_TO_INTERACT = 823,
- ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 824,
- ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 825,
- ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 826,
- ERR_DIFFICULTY_CHANGE_WORLDSTATE = 827,
- ERR_DIFFICULTY_CHANGE_ENCOUNTER = 828,
- ERR_DIFFICULTY_CHANGE_COMBAT = 829,
- ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 830,
- ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 831,
- ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 832,
- ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 833,
- ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 834,
- ERR_ARENA_TEAM_PARTY_SIZE = 835,
- ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 836,
- ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 837,
- ERR_SOLO_SHUFFLE_MIN_ITEM_LEVEL = 838,
- ERR_PVP_PLAYER_ABANDONED = 839,
- ERR_QUEST_FORCE_REMOVED_S = 840,
- ERR_ATTACK_NO_ACTIONS = 841,
- ERR_IN_RANDOM_BG = 842,
- ERR_IN_NON_RANDOM_BG = 843,
- ERR_BN_FRIEND_SELF = 844,
- ERR_BN_FRIEND_ALREADY = 845,
- ERR_BN_FRIEND_BLOCKED = 846,
- ERR_BN_FRIEND_LIST_FULL = 847,
- ERR_BN_FRIEND_REQUEST_SENT = 848,
- ERR_BN_BROADCAST_THROTTLE = 849,
- ERR_BG_DEVELOPER_ONLY = 850,
- ERR_CURRENCY_SPELL_SLOT_MISMATCH = 851,
- ERR_CURRENCY_NOT_TRADABLE = 852,
- ERR_REQUIRES_EXPANSION_S = 853,
- ERR_QUEST_FAILED_SPELL = 854,
- ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 855,
- ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 856,
- ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 857,
- ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 858,
- ERR_TALENT_FAILED_UNKNOWN = 859,
- ERR_TALENT_FAILED_IN_COMBAT = 860,
- ERR_TALENT_FAILED_IN_PVP_MATCH = 861,
- ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 862,
- ERR_WARGAME_REQUEST_FAILURE = 863,
- ERR_RANK_REQUIRES_AUTHENTICATOR = 864,
- ERR_GUILD_BANK_VOUCHER_FAILED = 865,
- ERR_WARGAME_REQUEST_SENT = 866,
- ERR_REQUIRES_ACHIEVEMENT_I = 867,
- ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 868,
- ERR_CANT_BUY_QUANTITY = 869,
- ERR_ITEM_IS_BATTLE_PAY_LOCKED = 870,
- ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 871,
- ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 872,
- ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 873,
- ERR_INSUFF_TRACKED_CURRENCY_IS = 874,
- ERR_NOT_ON_TOURNAMENT_REALM = 875,
- ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 876,
- ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 877,
- ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 878,
- ERR_CANT_DO_THAT_IN_A_GROUP = 879,
- ERR_GUILD_LEADER_REPLACED = 880,
- ERR_TRANSMOGRIFY_CANT_EQUIP = 881,
- ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 882,
- ERR_TRANSMOGRIFY_NOT_SOULBOUND = 883,
- ERR_TRANSMOGRIFY_INVALID_SOURCE = 884,
- ERR_TRANSMOGRIFY_INVALID_DESTINATION = 885,
- ERR_TRANSMOGRIFY_MISMATCH = 886,
- ERR_TRANSMOGRIFY_LEGENDARY = 887,
- ERR_TRANSMOGRIFY_SAME_ITEM = 888,
- ERR_TRANSMOGRIFY_SAME_APPEARANCE = 889,
- ERR_TRANSMOGRIFY_NOT_EQUIPPED = 890,
- ERR_VOID_DEPOSIT_FULL = 891,
- ERR_VOID_WITHDRAW_FULL = 892,
- ERR_VOID_STORAGE_WRAPPED = 893,
- ERR_VOID_STORAGE_STACKABLE = 894,
- ERR_VOID_STORAGE_UNBOUND = 895,
- ERR_VOID_STORAGE_REPAIR = 896,
- ERR_VOID_STORAGE_CHARGES = 897,
- ERR_VOID_STORAGE_QUEST = 898,
- ERR_VOID_STORAGE_CONJURED = 899,
- ERR_VOID_STORAGE_MAIL = 900,
- ERR_VOID_STORAGE_BAG = 901,
- ERR_VOID_TRANSFER_STORAGE_FULL = 902,
- ERR_VOID_TRANSFER_INV_FULL = 903,
- ERR_VOID_TRANSFER_INTERNAL_ERROR = 904,
- ERR_VOID_TRANSFER_ITEM_INVALID = 905,
- ERR_DIFFICULTY_DISABLED_IN_LFG = 906,
- ERR_VOID_STORAGE_UNIQUE = 907,
- ERR_VOID_STORAGE_LOOT = 908,
- ERR_VOID_STORAGE_HOLIDAY = 909,
- ERR_VOID_STORAGE_DURATION = 910,
- ERR_VOID_STORAGE_LOAD_FAILED = 911,
- ERR_VOID_STORAGE_INVALID_ITEM = 912,
- ERR_PARENTAL_CONTROLS_CHAT_MUTED = 913,
- ERR_SOR_START_EXPERIENCE_INCOMPLETE = 914,
- ERR_SOR_INVALID_EMAIL = 915,
- ERR_SOR_INVALID_COMMENT = 916,
- ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 917,
- ERR_CHALLENGE_MODE_RESET_KEYSTONE = 918,
- ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 919,
- ERR_REPORT_SUBMITTED_SUCCESSFULLY = 920,
- ERR_REPORT_SUBMISSION_FAILED = 921,
- ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 922,
- ERR_BUG_SUBMITTED_SUCCESSFULLY = 923,
- ERR_CHALLENGE_MODE_ENABLED = 924,
- ERR_CHALLENGE_MODE_DISABLED = 925,
- ERR_PETBATTLE_CREATE_FAILED = 926,
- ERR_PETBATTLE_NOT_HERE = 927,
- ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 928,
- ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 929,
- ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 930,
- ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 931,
- ERR_PETBATTLE_NOT_WHILE_DEAD = 932,
- ERR_PETBATTLE_NOT_WHILE_FLYING = 933,
- ERR_PETBATTLE_TARGET_INVALID = 934,
- ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 935,
- ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 936,
- ERR_PETBATTLE_NOT_A_TRAINER = 937,
- ERR_PETBATTLE_DECLINED = 938,
- ERR_PETBATTLE_IN_BATTLE = 939,
- ERR_PETBATTLE_INVALID_LOADOUT = 940,
- ERR_PETBATTLE_ALL_PETS_DEAD = 941,
- ERR_PETBATTLE_NO_PETS_IN_SLOTS = 942,
- ERR_PETBATTLE_NO_ACCOUNT_LOCK = 943,
- ERR_PETBATTLE_WILD_PET_TAPPED = 944,
- ERR_PETBATTLE_RESTRICTED_ACCOUNT = 945,
- ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 946,
- ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 947,
- ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 948,
- ERR_CANT_HAVE_MORE_PETS = 949,
- ERR_PVP_MAP_NOT_FOUND = 950,
- ERR_PVP_MAP_NOT_SET = 951,
- ERR_PETBATTLE_QUEUE_QUEUED = 952,
- ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 953,
- ERR_PETBATTLE_QUEUE_JOIN_FAILED = 954,
- ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 955,
- ERR_PETBATTLE_QUEUE_REMOVED = 956,
- ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 957,
- ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 958,
- ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 959,
- ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 960,
- ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 961,
- ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 962,
- ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 963,
- ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 964,
- ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 965,
- ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 966,
- ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 967,
- ERR_PETBATTLE_QUEUE_SLOT_DEAD = 968,
- ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 969,
- ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 970,
- ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 971,
- ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 972,
- ERR_HAS_RESTRICTION = 973,
- ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 974,
- ERR_ITEM_UPGRADE_NO_PATH = 975,
- ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 976,
- ERR_BONUS_ROLL_EMPTY = 977,
- ERR_CHALLENGE_MODE_FULL = 978,
- ERR_CHALLENGE_MODE_IN_PROGRESS = 979,
- ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 980,
- ERR_BATTLETAG_FRIEND_NOT_FOUND = 981,
- ERR_BATTLETAG_FRIEND_NOT_VALID = 982,
- ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 983,
- ERR_BATTLETAG_FRIEND_THROTTLED = 984,
- ERR_BATTLETAG_FRIEND_SUCCESS = 985,
- ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 986,
- ERR_PETBATTLE_INTERNAL = 987,
- ERR_CANT_CAGE_PET_YET = 988,
- ERR_NO_LOOT_IN_CHALLENGE_MODE = 989,
- ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 990,
- ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 991,
- ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 992,
- ERR_RECRUIT_A_FRIEND_FAILED = 993,
- ERR_SET_LOOT_PERSONAL = 994,
- ERR_SET_LOOT_METHOD_FAILED_COMBAT = 995,
- ERR_REAGENT_BANK_FULL = 996,
- ERR_REAGENT_BANK_LOCKED = 997,
- ERR_GARRISON_BUILDING_EXISTS = 998,
- ERR_GARRISON_INVALID_PLOT = 999,
- ERR_GARRISON_INVALID_BUILDINGID = 1000,
- ERR_GARRISON_INVALID_PLOT_BUILDING = 1001,
- ERR_GARRISON_REQUIRES_BLUEPRINT = 1002,
- ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1003,
- ERR_GARRISON_NOT_ENOUGH_GOLD = 1004,
- ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1005,
- ERR_ALREADY_USING_LFG_LIST = 1006,
- ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1007,
- ERR_TOY_USE_LIMIT_REACHED = 1008,
- ERR_TOY_ALREADY_KNOWN = 1009,
- ERR_TRANSMOG_SET_ALREADY_KNOWN = 1010,
- ERR_NOT_ENOUGH_CURRENCY = 1011,
- ERR_SPEC_IS_DISABLED = 1012,
- ERR_FEATURE_RESTRICTED_TRIAL = 1013,
- ERR_CANT_BE_OBLITERATED = 1014,
- ERR_CANT_BE_SCRAPPED = 1015,
- ERR_CANT_BE_RECRAFTED = 1016,
- ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1017,
- ERR_MUST_EQUIP_ARTIFACT = 1018,
- ERR_CANT_DO_THAT_RIGHT_NOW = 1019,
- ERR_AFFECTING_COMBAT = 1020,
- ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1021,
- ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1022,
- ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1023,
- ERR_MOVIE_RECORDING_WARNING_PERF = 1024,
- ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1025,
- ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1026,
- ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1027,
- ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1028,
- ERR_NO_CHALLENGE_MODE_REWARD = 1029,
- ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1030,
- ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1031,
- ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1032,
- ERR_TALENT_FAILED_REST_AREA = 1033,
- ERR_CANNOT_ABANDON_LAST_PET = 1034,
- ERR_TEST_CVAR_SET_SSS = 1035,
- ERR_QUEST_TURN_IN_FAIL_REASON = 1036,
- ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1037,
- ERR_TALENT_GRANTED_BY_AURA = 1038,
- ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1039,
- ERR_GLYPH_TARGET_NOT_AVAILABLE = 1040,
- ERR_PVP_WARMODE_TOGGLE_ON = 1041,
- ERR_PVP_WARMODE_TOGGLE_OFF = 1042,
- ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1043,
- ERR_SPELL_FAILED_CANT_FLY_HERE = 1044,
- ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1045,
- ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1046,
- ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1047,
- ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1048,
- ERR_VOICE_CHAT_SERVICE_LOST = 1049,
- ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1050,
- ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1051,
- ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1052,
- ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1053,
- ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1054,
- ERR_VOICE_CHAT_PLAYER_SILENCED = 1055,
- ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1056,
- ERR_VOICE_CHAT_DISABLED = 1057,
- ERR_NO_PVP_REWARD = 1058,
- ERR_CLAIMED_PVP_REWARD = 1059,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1060,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1061,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1062,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1063,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1064,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1065,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1066,
- ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1067,
- ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1068,
- ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1069,
- ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1070,
- ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1071,
- ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1072,
- ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1073,
- ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1074,
- ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1075,
- ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1076,
- ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1077,
- ERR_SOCKETING_REQUIRES_TINKER_GEM = 1078,
- ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1079,
- 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,
- ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1117,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1118,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1119,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1120,
- ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1121,
- ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1122,
- ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1123,
+ ERR_BATTLEGROUND_INVITATION_DECLINED_BY = 767,
+ ERR_BATTLEGROUND_JOIN_TIMED_OUT = 768,
+ ERR_BATTLEGROUND_DUPE_QUEUE = 769,
+ ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 770,
+ ERR_IN_BATTLEGROUND_RESPEC = 771,
+ ERR_MAIL_LIMITED_DURATION_ITEM = 772,
+ ERR_YELL_RESTRICTED_TRIAL = 773,
+ ERR_CHAT_RAID_RESTRICTED_TRIAL = 774,
+ ERR_LFG_ROLE_CHECK_FAILED = 775,
+ ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 776,
+ ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 777,
+ ERR_LFG_READY_CHECK_FAILED = 778,
+ ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 779,
+ ERR_LFG_GROUP_FULL = 780,
+ ERR_LFG_NO_LFG_OBJECT = 781,
+ ERR_LFG_NO_SLOTS_PLAYER = 782,
+ ERR_LFG_NO_SLOTS_PARTY = 783,
+ ERR_LFG_NO_SPEC = 784,
+ ERR_LFG_MISMATCHED_SLOTS = 785,
+ ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 786,
+ ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 787,
+ ERR_LFG_MEMBERS_NOT_PRESENT = 788,
+ ERR_LFG_GET_INFO_TIMEOUT = 789,
+ ERR_LFG_INVALID_SLOT = 790,
+ ERR_LFG_DESERTER_PLAYER = 791,
+ ERR_LFG_DESERTER_PARTY = 792,
+ ERR_LFG_DEAD = 793,
+ ERR_LFG_RANDOM_COOLDOWN_PLAYER = 794,
+ ERR_LFG_RANDOM_COOLDOWN_PARTY = 795,
+ ERR_LFG_TOO_MANY_MEMBERS = 796,
+ ERR_LFG_TOO_FEW_MEMBERS = 797,
+ ERR_LFG_PROPOSAL_FAILED = 798,
+ ERR_LFG_PROPOSAL_DECLINED_SELF = 799,
+ ERR_LFG_PROPOSAL_DECLINED_PARTY = 800,
+ ERR_LFG_NO_SLOTS_SELECTED = 801,
+ ERR_LFG_NO_ROLES_SELECTED = 802,
+ ERR_LFG_ROLE_CHECK_INITIATED = 803,
+ ERR_LFG_READY_CHECK_INITIATED = 804,
+ ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 805,
+ ERR_LFG_PLAYER_DECLINED_READY_CHECK = 806,
+ ERR_LFG_JOINED_QUEUE = 807,
+ ERR_LFG_JOINED_FLEX_QUEUE = 808,
+ ERR_LFG_JOINED_RF_QUEUE = 809,
+ ERR_LFG_JOINED_SCENARIO_QUEUE = 810,
+ ERR_LFG_JOINED_WORLD_PVP_QUEUE = 811,
+ ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 812,
+ ERR_LFG_JOINED_LIST = 813,
+ ERR_LFG_LEFT_QUEUE = 814,
+ ERR_LFG_LEFT_LIST = 815,
+ ERR_LFG_ROLE_CHECK_ABORTED = 816,
+ ERR_LFG_READY_CHECK_ABORTED = 817,
+ ERR_LFG_CANT_USE_BATTLEGROUND = 818,
+ ERR_LFG_CANT_USE_DUNGEONS = 819,
+ ERR_LFG_REASON_TOO_MANY_LFG = 820,
+ ERR_LFG_FARM_LIMIT = 821,
+ ERR_LFG_NO_CROSS_FACTION_PARTIES = 822,
+ ERR_INVALID_TELEPORT_LOCATION = 823,
+ ERR_TOO_FAR_TO_INTERACT = 824,
+ ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 825,
+ ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 826,
+ ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 827,
+ ERR_DIFFICULTY_CHANGE_WORLDSTATE = 828,
+ ERR_DIFFICULTY_CHANGE_ENCOUNTER = 829,
+ ERR_DIFFICULTY_CHANGE_COMBAT = 830,
+ ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 831,
+ ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 832,
+ ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 833,
+ ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 834,
+ ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 835,
+ ERR_ARENA_TEAM_PARTY_SIZE = 836,
+ ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 837,
+ ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 838,
+ ERR_SOLO_SHUFFLE_MIN_ITEM_LEVEL = 839,
+ ERR_PVP_PLAYER_ABANDONED = 840,
+ ERR_QUEST_FORCE_REMOVED_S = 841,
+ ERR_ATTACK_NO_ACTIONS = 842,
+ ERR_IN_RANDOM_BG = 843,
+ ERR_IN_NON_RANDOM_BG = 844,
+ ERR_BN_FRIEND_SELF = 845,
+ ERR_BN_FRIEND_ALREADY = 846,
+ ERR_BN_FRIEND_BLOCKED = 847,
+ ERR_BN_FRIEND_LIST_FULL = 848,
+ ERR_BN_FRIEND_REQUEST_SENT = 849,
+ ERR_BN_BROADCAST_THROTTLE = 850,
+ ERR_BG_DEVELOPER_ONLY = 851,
+ ERR_CURRENCY_SPELL_SLOT_MISMATCH = 852,
+ ERR_CURRENCY_NOT_TRADABLE = 853,
+ ERR_REQUIRES_EXPANSION_S = 854,
+ ERR_QUEST_FAILED_SPELL = 855,
+ ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 856,
+ ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 857,
+ ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 858,
+ ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 859,
+ ERR_TALENT_FAILED_UNKNOWN = 860,
+ ERR_TALENT_FAILED_IN_COMBAT = 861,
+ ERR_TALENT_FAILED_IN_PVP_MATCH = 862,
+ ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 863,
+ ERR_WARGAME_REQUEST_FAILURE = 864,
+ ERR_RANK_REQUIRES_AUTHENTICATOR = 865,
+ ERR_GUILD_BANK_VOUCHER_FAILED = 866,
+ ERR_WARGAME_REQUEST_SENT = 867,
+ ERR_REQUIRES_ACHIEVEMENT_I = 868,
+ ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 869,
+ ERR_CANT_BUY_QUANTITY = 870,
+ ERR_ITEM_IS_BATTLE_PAY_LOCKED = 871,
+ ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 872,
+ ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 873,
+ ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 874,
+ ERR_INSUFF_TRACKED_CURRENCY_IS = 875,
+ ERR_NOT_ON_TOURNAMENT_REALM = 876,
+ ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 877,
+ ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 878,
+ ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 879,
+ ERR_CANT_DO_THAT_IN_A_GROUP = 880,
+ ERR_GUILD_LEADER_REPLACED = 881,
+ ERR_TRANSMOGRIFY_CANT_EQUIP = 882,
+ ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 883,
+ ERR_TRANSMOGRIFY_NOT_SOULBOUND = 884,
+ ERR_TRANSMOGRIFY_INVALID_SOURCE = 885,
+ ERR_TRANSMOGRIFY_INVALID_DESTINATION = 886,
+ ERR_TRANSMOGRIFY_MISMATCH = 887,
+ ERR_TRANSMOGRIFY_LEGENDARY = 888,
+ ERR_TRANSMOGRIFY_SAME_ITEM = 889,
+ ERR_TRANSMOGRIFY_SAME_APPEARANCE = 890,
+ ERR_TRANSMOGRIFY_NOT_EQUIPPED = 891,
+ ERR_VOID_DEPOSIT_FULL = 892,
+ ERR_VOID_WITHDRAW_FULL = 893,
+ ERR_VOID_STORAGE_WRAPPED = 894,
+ ERR_VOID_STORAGE_STACKABLE = 895,
+ ERR_VOID_STORAGE_UNBOUND = 896,
+ ERR_VOID_STORAGE_REPAIR = 897,
+ ERR_VOID_STORAGE_CHARGES = 898,
+ ERR_VOID_STORAGE_QUEST = 899,
+ ERR_VOID_STORAGE_CONJURED = 900,
+ ERR_VOID_STORAGE_MAIL = 901,
+ ERR_VOID_STORAGE_BAG = 902,
+ ERR_VOID_TRANSFER_STORAGE_FULL = 903,
+ ERR_VOID_TRANSFER_INV_FULL = 904,
+ ERR_VOID_TRANSFER_INTERNAL_ERROR = 905,
+ ERR_VOID_TRANSFER_ITEM_INVALID = 906,
+ ERR_DIFFICULTY_DISABLED_IN_LFG = 907,
+ ERR_VOID_STORAGE_UNIQUE = 908,
+ ERR_VOID_STORAGE_LOOT = 909,
+ ERR_VOID_STORAGE_HOLIDAY = 910,
+ ERR_VOID_STORAGE_DURATION = 911,
+ ERR_VOID_STORAGE_LOAD_FAILED = 912,
+ ERR_VOID_STORAGE_INVALID_ITEM = 913,
+ ERR_PARENTAL_CONTROLS_CHAT_MUTED = 914,
+ ERR_SOR_START_EXPERIENCE_INCOMPLETE = 915,
+ ERR_SOR_INVALID_EMAIL = 916,
+ ERR_SOR_INVALID_COMMENT = 917,
+ ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 918,
+ ERR_CHALLENGE_MODE_RESET_KEYSTONE = 919,
+ ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 920,
+ ERR_REPORT_SUBMITTED_SUCCESSFULLY = 921,
+ ERR_REPORT_SUBMISSION_FAILED = 922,
+ ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 923,
+ ERR_BUG_SUBMITTED_SUCCESSFULLY = 924,
+ ERR_CHALLENGE_MODE_ENABLED = 925,
+ ERR_CHALLENGE_MODE_DISABLED = 926,
+ ERR_PETBATTLE_CREATE_FAILED = 927,
+ ERR_PETBATTLE_NOT_HERE = 928,
+ ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 929,
+ ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 930,
+ ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 931,
+ ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 932,
+ ERR_PETBATTLE_NOT_WHILE_DEAD = 933,
+ ERR_PETBATTLE_NOT_WHILE_FLYING = 934,
+ ERR_PETBATTLE_TARGET_INVALID = 935,
+ ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 936,
+ ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 937,
+ ERR_PETBATTLE_NOT_A_TRAINER = 938,
+ ERR_PETBATTLE_DECLINED = 939,
+ ERR_PETBATTLE_IN_BATTLE = 940,
+ ERR_PETBATTLE_INVALID_LOADOUT = 941,
+ ERR_PETBATTLE_ALL_PETS_DEAD = 942,
+ ERR_PETBATTLE_NO_PETS_IN_SLOTS = 943,
+ ERR_PETBATTLE_NO_ACCOUNT_LOCK = 944,
+ ERR_PETBATTLE_WILD_PET_TAPPED = 945,
+ ERR_PETBATTLE_RESTRICTED_ACCOUNT = 946,
+ ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 947,
+ ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 948,
+ ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 949,
+ ERR_CANT_HAVE_MORE_PETS = 950,
+ ERR_PVP_MAP_NOT_FOUND = 951,
+ ERR_PVP_MAP_NOT_SET = 952,
+ ERR_PETBATTLE_QUEUE_QUEUED = 953,
+ ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 954,
+ ERR_PETBATTLE_QUEUE_JOIN_FAILED = 955,
+ ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 956,
+ ERR_PETBATTLE_QUEUE_REMOVED = 957,
+ ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 958,
+ ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 959,
+ ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 960,
+ ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 961,
+ ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 962,
+ ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 963,
+ ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 964,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 965,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 966,
+ ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 967,
+ ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 968,
+ ERR_PETBATTLE_QUEUE_SLOT_DEAD = 969,
+ ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 970,
+ ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 971,
+ ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 972,
+ ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 973,
+ ERR_HAS_RESTRICTION = 974,
+ ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 975,
+ ERR_ITEM_UPGRADE_NO_PATH = 976,
+ ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 977,
+ ERR_BONUS_ROLL_EMPTY = 978,
+ ERR_CHALLENGE_MODE_FULL = 979,
+ ERR_CHALLENGE_MODE_IN_PROGRESS = 980,
+ ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 981,
+ ERR_BATTLETAG_FRIEND_NOT_FOUND = 982,
+ ERR_BATTLETAG_FRIEND_NOT_VALID = 983,
+ ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 984,
+ ERR_BATTLETAG_FRIEND_THROTTLED = 985,
+ ERR_BATTLETAG_FRIEND_SUCCESS = 986,
+ ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 987,
+ ERR_PETBATTLE_INTERNAL = 988,
+ ERR_CANT_CAGE_PET_YET = 989,
+ ERR_NO_LOOT_IN_CHALLENGE_MODE = 990,
+ ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 991,
+ ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 992,
+ ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 993,
+ ERR_RECRUIT_A_FRIEND_FAILED = 994,
+ ERR_SET_LOOT_PERSONAL = 995,
+ ERR_SET_LOOT_METHOD_FAILED_COMBAT = 996,
+ ERR_REAGENT_BANK_FULL = 997,
+ ERR_REAGENT_BANK_LOCKED = 998,
+ ERR_GARRISON_BUILDING_EXISTS = 999,
+ ERR_GARRISON_INVALID_PLOT = 1000,
+ ERR_GARRISON_INVALID_BUILDINGID = 1001,
+ ERR_GARRISON_INVALID_PLOT_BUILDING = 1002,
+ ERR_GARRISON_REQUIRES_BLUEPRINT = 1003,
+ ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1004,
+ ERR_GARRISON_NOT_ENOUGH_GOLD = 1005,
+ ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1006,
+ ERR_ALREADY_USING_LFG_LIST = 1007,
+ ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1008,
+ ERR_TOY_USE_LIMIT_REACHED = 1009,
+ ERR_TOY_ALREADY_KNOWN = 1010,
+ ERR_TRANSMOG_SET_ALREADY_KNOWN = 1011,
+ ERR_NOT_ENOUGH_CURRENCY = 1012,
+ ERR_SPEC_IS_DISABLED = 1013,
+ ERR_FEATURE_RESTRICTED_TRIAL = 1014,
+ ERR_CANT_BE_OBLITERATED = 1015,
+ ERR_CANT_BE_SCRAPPED = 1016,
+ ERR_CANT_BE_RECRAFTED = 1017,
+ ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1018,
+ ERR_MUST_EQUIP_ARTIFACT = 1019,
+ ERR_CANT_DO_THAT_RIGHT_NOW = 1020,
+ ERR_AFFECTING_COMBAT = 1021,
+ ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1022,
+ ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1023,
+ ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1024,
+ ERR_MOVIE_RECORDING_WARNING_PERF = 1025,
+ ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1026,
+ ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1027,
+ ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1028,
+ ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1029,
+ ERR_NO_CHALLENGE_MODE_REWARD = 1030,
+ ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1031,
+ ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1032,
+ ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1033,
+ ERR_TALENT_FAILED_REST_AREA = 1034,
+ ERR_CANNOT_ABANDON_LAST_PET = 1035,
+ ERR_TEST_CVAR_SET_SSS = 1036,
+ ERR_QUEST_TURN_IN_FAIL_REASON = 1037,
+ ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1038,
+ ERR_TALENT_GRANTED_BY_AURA = 1039,
+ ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1040,
+ ERR_GLYPH_TARGET_NOT_AVAILABLE = 1041,
+ ERR_PVP_WARMODE_TOGGLE_ON = 1042,
+ ERR_PVP_WARMODE_TOGGLE_OFF = 1043,
+ ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1044,
+ ERR_SPELL_FAILED_CANT_FLY_HERE = 1045,
+ ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1046,
+ ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1047,
+ ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1048,
+ ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1049,
+ ERR_VOICE_CHAT_SERVICE_LOST = 1050,
+ ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1051,
+ ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1052,
+ ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1053,
+ ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1054,
+ ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1055,
+ ERR_VOICE_CHAT_PLAYER_SILENCED = 1056,
+ ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1057,
+ ERR_VOICE_CHAT_DISABLED = 1058,
+ ERR_NO_PVP_REWARD = 1059,
+ ERR_CLAIMED_PVP_REWARD = 1060,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1061,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1062,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1063,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1064,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1065,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1066,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1067,
+ ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1068,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1069,
+ ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1070,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1071,
+ ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1072,
+ ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1073,
+ ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1074,
+ ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1075,
+ ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1076,
+ ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1077,
+ ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1078,
+ ERR_SOCKETING_REQUIRES_TINKER_GEM = 1079,
+ ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1080,
+ ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1081,
+ ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1082,
+ ERR_LEVEL_LINKING_RESULT_LINKED = 1083,
+ ERR_LEVEL_LINKING_RESULT_UNLINKED = 1084,
+ ERR_CLUB_FINDER_ERROR_POST_CLUB = 1085,
+ ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1086,
+ ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1087,
+ ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1088,
+ ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1089,
+ ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1090,
+ ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1091,
+ ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1092,
+ ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1093,
+ ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1094,
+ ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1095,
+ ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1096,
+ ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1097,
+ ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1098,
+ ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1099,
+ ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1100,
+ ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1101,
+ ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1102,
+ ERR_SOULBIND_INVALID_CONDUIT = 1103,
+ ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1104,
+ ERR_SOULBIND_INVALID_TALENT = 1105,
+ ERR_SOULBIND_DUPLICATE_CONDUIT = 1106,
+ ERR_ACTIVATE_SOULBIND_S = 1107,
+ ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1108,
+ ERR_CANT_USE_PROFANITY = 1109,
+ ERR_NOT_IN_PET_BATTLE = 1110,
+ ERR_NOT_IN_NPE = 1111,
+ ERR_NO_SPEC = 1112,
+ ERR_NO_DOMINATIONSHARD_OVERWRITE = 1113,
+ ERR_USE_WEEKLY_REWARDS_DISABLED = 1114,
+ ERR_CROSS_FACTION_GROUP_JOINED = 1115,
+ ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1116,
+ ERR_EQUIPABLESPELLS_SLOTS_FULL = 1117,
+ ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1118,
+ ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1119,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1120,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1121,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1122,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1123,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1124,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1125,
};
enum class MountResult : uint32
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index b85bee2752d..16dabff8f30 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -152,7 +152,7 @@ WorldPacket const* WorldPackets::Item::SetProficiency::Write()
WorldPacket const* WorldPackets::Item::InventoryChangeFailure::Write()
{
- _worldPacket << int8(BagResult);
+ _worldPacket << int32(BagResult);
_worldPacket << Item[0];
_worldPacket << Item[1];
_worldPacket << uint8(ContainerBSlot); // bag type subclass, used with EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM and EQUIP_ERR_WRONG_BAG_TYPE_2
@@ -238,8 +238,10 @@ void WorldPackets::Item::DestroyItem::Read()
WorldPacket const* WorldPackets::Item::SellResponse::Write()
{
_worldPacket << VendorGUID;
- _worldPacket << ItemGUID;
- _worldPacket << uint8(Reason);
+ _worldPacket << uint32(ItemGUIDs.size());
+ _worldPacket << int32(Reason);
+ for (ObjectGuid const& itemGuid : ItemGUIDs)
+ _worldPacket << itemGuid;
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h
index 702ed6c8adf..d2cb9df3944 100644
--- a/src/server/game/Server/Packets/ItemPackets.h
+++ b/src/server/game/Server/Packets/ItemPackets.h
@@ -212,7 +212,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- int8 BagResult = EQUIP_ERR_OK; /// @see enum InventoryResult
+ int32 BagResult = EQUIP_ERR_OK; /// @see enum InventoryResult
uint8 ContainerBSlot = 0;
ObjectGuid SrcContainer;
ObjectGuid DstContainer;
@@ -320,7 +320,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid VendorGUID;
- ObjectGuid ItemGUID;
+ std::vector<ObjectGuid> ItemGUIDs;
SellResult Reason = SELL_ERR_UNK;
};
diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp
index 8e966cd4c99..0e933141dcf 100644
--- a/src/server/game/Server/Packets/LFGPackets.cpp
+++ b/src/server/game/Server/Packets/LFGPackets.cpp
@@ -20,10 +20,12 @@
void WorldPackets::LFG::DFJoin::Read()
{
QueueAsGroup = _worldPacket.ReadBit();
+ bool hasPartyIndex = _worldPacket.ReadBit();
Unknown = _worldPacket.ReadBit();
- _worldPacket >> PartyIndex;
_worldPacket >> Roles;
Slots.resize(_worldPacket.read<uint32>());
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
for (uint32& slot : Slots)
_worldPacket >> slot;
}
@@ -43,8 +45,10 @@ void WorldPackets::LFG::DFProposalResponse::Read()
void WorldPackets::LFG::DFSetRoles::Read()
{
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> RolesDesired;
- _worldPacket >> PartyIndex;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::LFG::DFBootPlayerVote::Read()
@@ -60,7 +64,8 @@ void WorldPackets::LFG::DFTeleport::Read()
void WorldPackets::LFG::DFGetSystemInfo::Read()
{
Player = _worldPacket.ReadBit();
- _worldPacket >> PartyIndex;
+ if (_worldPacket.ReadBit())
+ _worldPacket >> PartyIndex.emplace();
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGBlackListSlot const& lfgBlackListSlot)
@@ -105,7 +110,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestReward
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestReward const& playerQuestReward)
{
- data << uint32(playerQuestReward.Mask);
+ data << uint8(playerQuestReward.Mask);
data << int32(playerQuestReward.RewardMoney);
data << int32(playerQuestReward.RewardXP);
data << uint32(playerQuestReward.Item.size());
@@ -196,7 +201,7 @@ WorldPacket const* WorldPackets::LFG::LFGUpdateStatus::Write()
_worldPacket << uint8(SubType);
_worldPacket << uint8(Reason);
_worldPacket << uint32(Slots.size());
- _worldPacket << uint32(RequestedRoles);
+ _worldPacket << uint8(RequestedRoles);
_worldPacket << uint32(SuspendedPlayers.size());
_worldPacket << uint32(QueueMapID);
@@ -220,7 +225,7 @@ WorldPacket const* WorldPackets::LFG::LFGUpdateStatus::Write()
WorldPacket const* WorldPackets::LFG::RoleChosen::Write()
{
_worldPacket << Player;
- _worldPacket << uint32(RoleMask);
+ _worldPacket << uint8(RoleMask);
_worldPacket.WriteBit(Accepted);
_worldPacket.FlushBits();
@@ -230,7 +235,7 @@ WorldPacket const* WorldPackets::LFG::RoleChosen::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGRoleCheckUpdateMember const& lfgRoleCheckUpdateMember)
{
data << lfgRoleCheckUpdateMember.Guid;
- data << uint32(lfgRoleCheckUpdateMember.RolesDesired);
+ data << uint8(lfgRoleCheckUpdateMember.RolesDesired);
data << uint8(lfgRoleCheckUpdateMember.Level);
data.WriteBit(lfgRoleCheckUpdateMember.RoleCheckComplete);
data.FlushBits();
@@ -356,7 +361,7 @@ WorldPacket const* WorldPackets::LFG::LfgBootPlayer::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGProposalUpdatePlayer const& lfgProposalUpdatePlayer)
{
- data << uint32(lfgProposalUpdatePlayer.Roles);
+ data << uint8(lfgProposalUpdatePlayer.Roles);
data.WriteBit(lfgProposalUpdatePlayer.Me);
data.WriteBit(lfgProposalUpdatePlayer.SameParty);
data.WriteBit(lfgProposalUpdatePlayer.MyParty);
diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h
index 133daa6a2bc..80f1f689c28 100644
--- a/src/server/game/Server/Packets/LFGPackets.h
+++ b/src/server/game/Server/Packets/LFGPackets.h
@@ -42,8 +42,8 @@ namespace WorldPackets
bool QueueAsGroup = false;
bool Unknown = false; // Always false in 7.2.5
- uint8 PartyIndex = 0;
- uint32 Roles = 0;
+ Optional<uint8> PartyIndex;
+ uint8 Roles = 0;
Array<uint32, 50> Slots;
};
@@ -77,8 +77,8 @@ namespace WorldPackets
void Read() override;
- uint32 RolesDesired = 0;
- uint8 PartyIndex = 0;
+ uint8 RolesDesired = 0;
+ Optional<uint8> PartyIndex;
};
class DFBootPlayerVote final : public ClientPacket
@@ -108,7 +108,7 @@ namespace WorldPackets
void Read() override;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
bool Player = false;
};
@@ -159,7 +159,7 @@ namespace WorldPackets
struct LfgPlayerQuestReward
{
- uint32 Mask = 0; // Roles required for this reward, only used by ShortageReward in SMSG_LFG_PLAYER_INFO
+ uint8 Mask = 0; // Roles required for this reward, only used by ShortageReward in SMSG_LFG_PLAYER_INFO
int32 RewardMoney = 0; // Only used by SMSG_LFG_PLAYER_INFO
int32 RewardXP = 0;
std::vector<LfgPlayerQuestRewardItem> Item;
@@ -226,7 +226,7 @@ namespace WorldPackets
uint8 SubType = 0;
uint8 Reason = 0;
std::vector<uint32> Slots;
- uint32 RequestedRoles = 0;
+ uint8 RequestedRoles = 0;
std::vector<ObjectGuid> SuspendedPlayers;
uint32 QueueMapID = 0;
bool NotifyUI = false;
@@ -245,18 +245,18 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid Player;
- uint32 RoleMask = 0;
+ uint8 RoleMask = 0;
bool Accepted = false;
};
struct LFGRoleCheckUpdateMember
{
LFGRoleCheckUpdateMember() = default;
- LFGRoleCheckUpdateMember(ObjectGuid guid, uint32 rolesDesired, uint8 level, bool roleCheckComplete)
+ LFGRoleCheckUpdateMember(ObjectGuid guid, uint8 rolesDesired, uint8 level, bool roleCheckComplete)
: Guid(guid), RolesDesired(rolesDesired), Level(level), RoleCheckComplete(roleCheckComplete) { }
ObjectGuid Guid;
- uint32 RolesDesired = 0;
+ uint8 RolesDesired = 0;
uint8 Level = 0;
bool RoleCheckComplete = false;
};
@@ -371,7 +371,7 @@ namespace WorldPackets
struct LFGProposalUpdatePlayer
{
- uint32 Roles = 0;
+ uint8 Roles = 0;
bool Me = false;
bool SameParty = false;
bool MyParty = false;
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index ca8bec42391..5b5b4b19571 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -407,9 +407,11 @@ WorldPacket const* WorldPackets::Misc::PlayMusic::Write()
void WorldPackets::Misc::RandomRollClient::Read()
{
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> Min;
_worldPacket >> Max;
- _worldPacket >> PartyIndex;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Misc::RandomRoll::Write()
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index d39bcb26e0a..a064d06633b 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -529,7 +529,7 @@ namespace WorldPackets
int32 Min = 0;
int32 Max = 0;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
};
class RandomRoll final : public ServerPacket
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 0f18a0069ce..8b329508115 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -44,18 +44,18 @@ WorldPacket const* WorldPackets::Party::PartyCommandResult::Write()
void WorldPackets::Party::PartyInviteClient::Read()
{
- uint32 targetNameLen, targetRealmLen;
+ bool hasPartyIndex = _worldPacket.ReadBit();
- _worldPacket >> PartyIndex;
-
- targetNameLen = _worldPacket.ReadBits(9);
- targetRealmLen = _worldPacket.ReadBits(9);
+ uint32 targetNameLen = _worldPacket.ReadBits(9);
+ uint32 targetRealmLen = _worldPacket.ReadBits(9);
_worldPacket >> ProposedRoles;
_worldPacket >> TargetGUID;
TargetName = _worldPacket.ReadString(targetNameLen);
TargetRealm = _worldPacket.ReadString(targetRealmLen);
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Party::PartyInvite::Write()
@@ -72,7 +72,7 @@ WorldPacket const* WorldPackets::Party::PartyInvite::Write()
_worldPacket << InviterGUID;
_worldPacket << InviterBNetAccountId;
_worldPacket << uint16(Unk1);
- _worldPacket << uint32(ProposedRoles);
+ _worldPacket << uint8(ProposedRoles);
_worldPacket << uint32(LfgSlots.size());
_worldPacket << uint32(LfgCompletedMask);
@@ -84,7 +84,7 @@ WorldPacket const* WorldPackets::Party::PartyInvite::Write()
return &_worldPacket;
}
-void WorldPackets::Party::PartyInvite::Initialize(Player* const inviter, int32 proposedRoles, bool canAccept)
+void WorldPackets::Party::PartyInvite::Initialize(Player const* inviter, int32 proposedRoles, bool canAccept)
{
CanAccept = canAccept;
@@ -99,24 +99,26 @@ void WorldPackets::Party::PartyInvite::Initialize(Player* const inviter, int32 p
void WorldPackets::Party::PartyInviteResponse::Read()
{
- _worldPacket >> PartyIndex;
-
+ bool hasPartyIndex = _worldPacket.ReadBit();
Accept = _worldPacket.ReadBit();
-
bool hasRolesDesired = _worldPacket.ReadBit();
+
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
+
if (hasRolesDesired)
- {
- RolesDesired.emplace();
- _worldPacket >> *RolesDesired;
- }
+ _worldPacket >> RolesDesired.emplace();
}
void WorldPackets::Party::PartyUninvite::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
+ uint32 reasonLen = _worldPacket.ReadBits(8);
+
_worldPacket >> TargetGUID;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
- uint8 reasonLen = _worldPacket.ReadBits(8);
Reason = _worldPacket.ReadString(reasonLen);
}
@@ -131,8 +133,10 @@ WorldPacket const* WorldPackets::Party::GroupDecline::Write()
void WorldPackets::Party::RequestPartyMemberStats::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> TargetGUID;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberPhase const& phase)
@@ -244,54 +248,65 @@ WorldPacket const* WorldPackets::Party::PartyMemberFullState::Write()
void WorldPackets::Party::SetPartyLeader::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> TargetGUID;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::SetPartyAssignment::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
+ Set = _worldPacket.ReadBit();
_worldPacket >> Assignment;
_worldPacket >> Target;
- Set = _worldPacket.ReadBit();
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::SetRole::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> TargetGUID;
_worldPacket >> Role;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Party::RoleChangedInform::Write()
{
- _worldPacket << PartyIndex;
+ _worldPacket << uint8(PartyIndex);
_worldPacket << From;
_worldPacket << ChangedUnit;
- _worldPacket << OldRole;
- _worldPacket << NewRole;
+ _worldPacket << uint8(OldRole);
+ _worldPacket << uint8(NewRole);
return &_worldPacket;
}
void WorldPackets::Party::LeaveGroup::Read()
{
- _worldPacket >> PartyIndex;
+ if (_worldPacket.ReadBit())
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::SetLootMethod::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> LootMethod;
_worldPacket >> LootMasterGUID;
_worldPacket >> LootThreshold;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::MinimapPingClient::Read()
{
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> PositionX;
_worldPacket >> PositionY;
- _worldPacket >> PartyIndex;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Party::MinimapPing::Write()
@@ -305,9 +320,11 @@ WorldPacket const* WorldPackets::Party::MinimapPing::Write()
void WorldPackets::Party::UpdateRaidTarget::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> Target;
_worldPacket >> Symbol;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateSingle::Write()
@@ -341,19 +358,23 @@ void WorldPackets::Party::ConvertRaid::Read()
void WorldPackets::Party::RequestPartyJoinUpdates::Read()
{
- _worldPacket >> PartyIndex;
+ if (_worldPacket.ReadBit())
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::SetAssistantLeader::Read()
{
- _worldPacket >> PartyIndex;
- _worldPacket >> Target;
+ bool hasPartyIndex = _worldPacket.ReadBit();
Apply = _worldPacket.ReadBit();
+ _worldPacket >> Target;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::DoReadyCheck::Read()
{
- _worldPacket >> PartyIndex;
+ if (_worldPacket.ReadBit())
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Party::ReadyCheckStarted::Write()
@@ -368,8 +389,9 @@ WorldPacket const* WorldPackets::Party::ReadyCheckStarted::Write()
void WorldPackets::Party::ReadyCheckResponseClient::Read()
{
- _worldPacket >> PartyIndex;
IsReady = _worldPacket.ReadBit();
+ if (_worldPacket.ReadBit())
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Party::ReadyCheckResponse::Write()
@@ -399,7 +421,8 @@ void WorldPackets::Party::OptOutOfLoot::Read()
void WorldPackets::Party::InitiateRolePoll::Read()
{
- _worldPacket >> PartyIndex;
+ if (_worldPacket.ReadBit())
+ _worldPacket >> PartyIndex.emplace();
}
WorldPacket const* WorldPackets::Party::RolePollInform::Write()
@@ -507,22 +530,27 @@ WorldPacket const* WorldPackets::Party::PartyUpdate::Write()
void WorldPackets::Party::SetEveryoneIsAssistant::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
EveryoneIsAssistant = _worldPacket.ReadBit();
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::ChangeSubGroup::Read()
{
_worldPacket >> TargetGUID;
- _worldPacket >> PartyIndex;
_worldPacket >> NewSubGroup;
+ if (_worldPacket.ReadBit())
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::SwapSubGroups::Read()
{
- _worldPacket >> PartyIndex;
+ bool hasPartyIndex = _worldPacket.ReadBit();
_worldPacket >> FirstTarget;
_worldPacket >> SecondTarget;
+ if (hasPartyIndex)
+ _worldPacket >> PartyIndex.emplace();
}
void WorldPackets::Party::ClearRaidMarker::Read()
@@ -600,8 +628,8 @@ void WorldPackets::Party::PartyMemberFullState::Initialize(Player const* player)
MemberStats.PositionZ = int16(player->GetPositionZ());
MemberStats.SpecID = AsUnderlyingType(player->GetPrimarySpecialization());
- MemberStats.PartyType[0] = player->m_playerData->PartyType & 0xF;
- MemberStats.PartyType[1] = player->m_playerData->PartyType >> 4;
+ MemberStats.PartyType[0] = player->m_playerData->PartyType[0];
+ MemberStats.PartyType[1] = player->m_playerData->PartyType[1];
MemberStats.WmoGroupID = 0;
MemberStats.WmoDoodadPlacementID = 0;
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
index 498967d1b74..179c881b3d9 100644
--- a/src/server/game/Server/Packets/PartyPackets.h
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -50,7 +50,7 @@ namespace WorldPackets
void Read() override;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
uint32 ProposedRoles = 0;
std::string TargetName;
std::string TargetRealm;
@@ -64,7 +64,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- void Initialize(Player* const inviter, int32 proposedRoles, bool canAccept);
+ void Initialize(Player const* inviter, int32 proposedRoles, bool canAccept);
bool MightCRZYou = false;
bool MustBeBNetFriend = false;
@@ -84,7 +84,7 @@ namespace WorldPackets
bool IsXRealm = false;
// Lfg
- uint32 ProposedRoles = 0;
+ uint8 ProposedRoles = 0;
uint32 LfgCompletedMask = 0;
std::vector<uint32> LfgSlots;
};
@@ -96,9 +96,9 @@ namespace WorldPackets
void Read() override;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
bool Accept = false;
- Optional<uint32> RolesDesired;
+ Optional<uint8> RolesDesired;
};
class PartyUninvite final : public ClientPacket
@@ -108,7 +108,7 @@ namespace WorldPackets
void Read() override;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
ObjectGuid TargetGUID;
std::string Reason;
};
@@ -138,7 +138,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
ObjectGuid TargetGUID;
};
@@ -236,7 +236,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
ObjectGuid TargetGUID;
};
@@ -247,9 +247,9 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
ObjectGuid TargetGUID;
- int32 Role = 0;
+ uint8 Role = 0;
};
class RoleChangedInform final : public ServerPacket
@@ -259,11 +259,11 @@ namespace WorldPackets
WorldPacket const* Write() override;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
ObjectGuid From;
ObjectGuid ChangedUnit;
- int32 OldRole = 0;
- int32 NewRole = 0;
+ uint8 OldRole = 0;
+ uint8 NewRole = 0;
};
class LeaveGroup final : public ClientPacket
@@ -273,7 +273,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
};
class SetLootMethod final : public ClientPacket
@@ -283,7 +283,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
ObjectGuid LootMasterGUID;
uint8 LootMethod = 0u;
uint32 LootThreshold = 0u;
@@ -296,7 +296,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
float PositionX = 0.f;
float PositionY = 0.f;
};
@@ -320,7 +320,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
ObjectGuid Target;
int8 Symbol = 0;
};
@@ -366,7 +366,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
};
class SetAssistantLeader final : public ClientPacket
@@ -377,7 +377,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid Target;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
bool Apply = false;
};
@@ -388,7 +388,7 @@ namespace WorldPackets
void Read() override;
uint8 Assignment = 0;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
ObjectGuid Target;
bool Set = false;
};
@@ -400,7 +400,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
};
class ReadyCheckStarted final : public ServerPacket
@@ -423,7 +423,7 @@ namespace WorldPackets
void Read() override;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
bool IsReady = false;
};
@@ -475,7 +475,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
};
class RolePollInform final : public ServerPacket
@@ -575,7 +575,7 @@ namespace WorldPackets
void Read() override;
- uint8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
bool EveryoneIsAssistant = false;
};
@@ -587,7 +587,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid TargetGUID;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
uint8 NewSubGroup = 0u;
};
@@ -600,7 +600,7 @@ namespace WorldPackets
ObjectGuid FirstTarget;
ObjectGuid SecondTarget;
- int8 PartyIndex = 0;
+ Optional<uint8> PartyIndex;
};
class ClearRaidMarker final : public ClientPacket
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index ed8239331c8..83ff89ef569 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -153,9 +153,7 @@ WorldPacket const* AuraUpdate::Write()
ByteBuffer& operator>>(ByteBuffer& buffer, TargetLocation& location)
{
buffer >> location.Transport;
- buffer >> location.Location.m_positionX;
- buffer >> location.Location.m_positionY;
- buffer >> location.Location.m_positionZ;
+ buffer >> location.Location;
return buffer;
}
@@ -290,9 +288,7 @@ WorldPacket const* SpellPrepare::Write()
ByteBuffer& operator<<(ByteBuffer& data, TargetLocation const& targetLocation)
{
data << targetLocation.Transport;
- data << float(targetLocation.Location.m_positionX);
- data << float(targetLocation.Location.m_positionY);
- data << float(targetLocation.Location.m_positionZ);
+ data << targetLocation.Location;
return data;
}
@@ -328,11 +324,10 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellTargetData const& spellTargetData)
ByteBuffer& operator<<(ByteBuffer& data, SpellMissStatus const& spellMissStatus)
{
- data.WriteBits(spellMissStatus.Reason, 4);
+ data << uint8(spellMissStatus.Reason);
if (spellMissStatus.Reason == SPELL_MISS_REFLECT)
- data.WriteBits(spellMissStatus.ReflectStatus, 4);
+ data << uint8(spellMissStatus.ReflectStatus);
- data.FlushBits();
return data;
}
@@ -367,13 +362,6 @@ ByteBuffer& operator<<(ByteBuffer& data, MissileTrajectoryResult const& missileT
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, SpellAmmo const& spellAmmo)
-{
- data << int32(spellAmmo.DisplayID);
- data << int8(spellAmmo.InventoryType);
- return data;
-}
-
ByteBuffer& operator<<(ByteBuffer& data, CreatureImmunities const& immunities)
{
data << int32(immunities.School);
@@ -401,7 +389,7 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData)
data << uint32(spellCastData.CastFlagsEx);
data << uint32(spellCastData.CastTime);
data << spellCastData.MissileTrajectory;
- data << int32(spellCastData.Ammo.DisplayID);
+ data << int32(spellCastData.AmmoDisplayID);
data << uint8(spellCastData.DestLocSpellCastIndex);
data << spellCastData.Immunities;
data << spellCastData.Predict;
@@ -414,9 +402,6 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData)
data.WriteBits(spellCastData.TargetPoints.size(), 16);
data.FlushBits();
- for (SpellMissStatus const& missStatus : spellCastData.MissStatus)
- data << missStatus;
-
data << spellCastData.Target;
for (ObjectGuid const& hitTarget : spellCastData.HitTargets)
@@ -428,6 +413,9 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData)
for (SpellHitStatus const& hitStatus : spellCastData.HitStatus)
data << hitStatus;
+ for (SpellMissStatus const& missStatus : spellCastData.MissStatus)
+ data << missStatus;
+
for (SpellPowerData const& power : spellCastData.RemainingPower)
data << power;
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 6872687f1d1..bc0e8a6f24b 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -195,7 +195,7 @@ namespace WorldPackets
struct TargetLocation
{
ObjectGuid Transport;
- Position Location;
+ TaggedPosition<Position::XYZ> Location;
};
struct SpellTargetData
@@ -336,12 +336,6 @@ namespace WorldPackets
float Pitch = 0.0f;
};
- struct SpellAmmo
- {
- int32 DisplayID = 0;
- int8 InventoryType = 0;
- };
-
struct CreatureImmunities
{
uint32 School = 0;
@@ -374,7 +368,7 @@ namespace WorldPackets
std::vector<SpellPowerData> RemainingPower;
Optional<RuneData> RemainingRunes;
MissileTrajectoryResult MissileTrajectory;
- SpellAmmo Ammo;
+ int32 AmmoDisplayID;
uint8 DestLocSpellCastIndex = 0;
std::vector<TargetLocation> TargetPoints;
CreatureImmunities Immunities;
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 6a6c4b74ea0..3b1bb5c7175 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -211,6 +211,10 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(AccountSaveDataExportEnabled);
_worldPacket.WriteBit(AccountLockedByExport);
+ _worldPacket.WriteBit(RealmHiddenAlert.has_value());
+
+ if (RealmHiddenAlert)
+ _worldPacket.WriteBits(RealmHiddenAlert->length() + 1, 11);
_worldPacket.FlushBits();
@@ -238,6 +242,9 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
if (LaunchETA)
_worldPacket << int32(*LaunchETA);
+ if (RealmHiddenAlert && !RealmHiddenAlert->empty())
+ _worldPacket.WriteString(*RealmHiddenAlert);
+
if (!LiveRegionCharacterCopySourceRegions.empty())
_worldPacket.append(LiveRegionCharacterCopySourceRegions.data(), LiveRegionCharacterCopySourceRegions.size());
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index bdbb066d33d..d6ef99f2c81 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -219,6 +219,7 @@ namespace WorldPackets
Optional<int32> LaunchETA;
std::vector<DebugTimeEventInfo> DebugTimeEvents;
int32 Unused1007 = 0;
+ Optional<std::string> RealmHiddenAlert;
};
class MOTD final : public ServerPacket
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 9367064babf..9d017c8d871 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -19,8 +19,6 @@
#include "Log.h"
#include "WorldSession.h"
#include "Packets/AllPackets.h"
-#include <iomanip>
-#include <sstream>
template<class PacketClass, void(WorldSession::*HandlerFunction)(PacketClass&)>
class PacketHandler : public ClientOpcodeHandler
@@ -849,6 +847,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SEND_CHARACTER_CLUB_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SEND_CONTACT_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleContactListOpcode);
DEFINE_HANDLER(CMSG_SEND_MAIL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendMail);
+ DEFINE_HANDLER(CMSG_SEND_PING_UNIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SEND_PING_WORLD_POINT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SEND_TEXT_EMOTE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTextEmoteOpcode);
DEFINE_HANDLER(CMSG_SERVER_TIME_OFFSET_REQUEST, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleServerTimeOffsetRequest);
DEFINE_HANDLER(CMSG_SET_ACHIEVEMENTS_HIDDEN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -858,6 +858,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_ADVANCED_COMBAT_LOGGING, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetAdvancedCombatLogging);
DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetAssistantLeaderOpcode);
DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SET_BACKPACK_SELL_JUNK_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_CONTACT_NOTES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode);
DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -880,6 +881,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_PREFERRED_CEMETERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_PVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPvP);
DEFINE_HANDLER(CMSG_SET_RAID_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetRaidDifficultyOpcode);
+ DEFINE_HANDLER(CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_ROLE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetRoleOpcode);
DEFINE_HANDLER(CMSG_SET_SAVED_INSTANCE_EXTEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetSavedInstanceExtend);
DEFINE_HANDLER(CMSG_SET_SELECTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetSelectionOpcode);
@@ -1164,6 +1166,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_ORPHAN_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_PING_PIN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_PRELOAD_WORLD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SCENE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1824,7 +1827,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_CLEAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_DISPLAY_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CONDITION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_HIDE_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_HIDE_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SAVE_GUILD_EMBLEM, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1925,6 +1928,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_LOOKUP_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REATTACH_RESURRECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECEIVE_PING_UNIT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECEIVE_PING_WORLD_POINT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRAFT_ITEM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRUIT_A_FRIEND_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_COMPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -2091,6 +2096,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_CREATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_DURATION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_MOVED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_UPDATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2153,6 +2159,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN3_DISABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN3_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARFRONT_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEATHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_REWARDS_PROGRESS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -2173,27 +2180,25 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
#undef DEFINE_SERVER_OPCODE_HANDLER
-};
+}
template<typename T>
inline std::string GetOpcodeNameForLoggingImpl(T id)
{
uint32 opcode = uint32(id);
- std::ostringstream ss;
- ss << '[';
+ char const* name = nullptr;
- if (static_cast<uint32>(id) < NUM_OPCODE_HANDLERS)
+ if (opcode < NUM_OPCODE_HANDLERS)
{
if (OpcodeHandler const* handler = opcodeTable[id])
- ss << handler->Name;
+ name = handler->Name;
else
- ss << "UNKNOWN OPCODE";
+ name = "UNKNOWN OPCODE";
}
else
- ss << "INVALID OPCODE";
+ name = "INVALID OPCODE";
- ss << " 0x" << std::hex << std::setw(4) << std::setfill('0') << std::uppercase << opcode << std::nouppercase << std::dec << " (" << opcode << ")]";
- return ss.str();
+ return Trinity::StringFormat("[{0} 0x{1:04X} ({1})]", name, opcode);
}
std::string GetOpcodeNameForLogging(OpcodeClient opcode)
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 6d9b0080918..a79e261590d 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -44,24 +44,24 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
- CMSG_ABANDON_NPE_RESPONSE = 0x33F0,
+ CMSG_ABANDON_NPE_RESPONSE = 0x33F1,
CMSG_ACCEPT_GUILD_INVITE = 0x35FD,
- CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x339B,
- CMSG_ACCEPT_SOCIAL_CONTRACT = 0x3744,
+ CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x339C,
+ CMSG_ACCEPT_SOCIAL_CONTRACT = 0x3745,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
- CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3733,
- CMSG_ACTIVATE_SOULBIND = 0x33DF,
+ CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3734,
+ CMSG_ACTIVATE_SOULBIND = 0x33E0,
CMSG_ACTIVATE_TAXI = 0x34B2,
CMSG_ADDON_LIST = 0x35D8,
CMSG_ADD_ACCOUNT_COSMETIC = 0x32B6,
- CMSG_ADD_BATTLENET_FRIEND = 0x3659,
- CMSG_ADD_FRIEND = 0x36CD,
- CMSG_ADD_IGNORE = 0x36D1,
+ CMSG_ADD_BATTLENET_FRIEND = 0x365A,
+ CMSG_ADD_FRIEND = 0x36CE,
+ CMSG_ADD_IGNORE = 0x36D2,
CMSG_ADD_TOY = 0x32B5,
CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3202,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E2,
- CMSG_ADVENTURE_MAP_START_QUEST = 0x336E,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E3,
+ CMSG_ADVENTURE_MAP_START_QUEST = 0x336F,
CMSG_ALTER_APPEARANCE = 0x3504,
CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B7,
CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B8,
@@ -71,8 +71,8 @@ enum OpcodeClient : uint16
CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320E,
CMSG_ATTACK_STOP = 0x3267,
CMSG_ATTACK_SWING = 0x3266,
- CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E3,
- CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E4,
+ CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E4,
+ CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E5,
CMSG_AUCTION_BROWSE_QUERY = 0x34D7,
CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DF,
CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DE,
@@ -86,10 +86,10 @@ enum OpcodeClient : uint16
CMSG_AUCTION_PLACE_BID = 0x34D6,
CMSG_AUCTION_REMOVE_ITEM = 0x34D4,
CMSG_AUCTION_REPLICATE_ITEMS = 0x34D5,
- CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3735,
+ CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3736,
CMSG_AUCTION_SELL_COMMODITY = 0x34E0,
CMSG_AUCTION_SELL_ITEM = 0x34D3,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3734,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3735,
CMSG_AUTH_CONTINUED_SESSION = 0x3766,
CMSG_AUTH_SESSION = 0x3765,
CMSG_AUTOBANK_ITEM = 0x3997,
@@ -101,10 +101,10 @@ enum OpcodeClient : uint16
CMSG_AUTO_GUILD_BANK_ITEM = 0x34BE,
CMSG_AUTO_STORE_BAG_ITEM = 0x399B,
CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C7,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3397,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3379,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3399,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3398,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3398,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x337A,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x339A,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3399,
CMSG_BANKER_ACTIVATE = 0x34BA,
CMSG_BATTLEFIELD_LEAVE = 0x3172,
CMSG_BATTLEFIELD_LIST = 0x317D,
@@ -115,28 +115,28 @@ enum OpcodeClient : uint16
CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3537,
CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3533,
CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3534,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D0,
- CMSG_BATTLENET_REQUEST = 0x36F2,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CA,
- CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3711,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C9,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C0,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3738,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B8,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B9,
- CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370A,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3706,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x36C8,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36EF,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D1,
+ CMSG_BATTLENET_REQUEST = 0x36F3,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CB,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3712,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CA,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C1,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3739,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B9,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BA,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370B,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3707,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x36C9,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F0,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x3126,
- CMSG_BATTLE_PET_DELETE_PET = 0x3624,
- CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3625,
- CMSG_BATTLE_PET_MODIFY_NAME = 0x3627,
- CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3623,
- CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3622,
- CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362C,
- CMSG_BATTLE_PET_SET_FLAGS = 0x362F,
- CMSG_BATTLE_PET_SUMMON = 0x3628,
+ CMSG_BATTLE_PET_DELETE_PET = 0x3625,
+ CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3626,
+ CMSG_BATTLE_PET_MODIFY_NAME = 0x3628,
+ CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3624,
+ CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3623,
+ CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362D,
+ CMSG_BATTLE_PET_SET_FLAGS = 0x3630,
+ CMSG_BATTLE_PET_SUMMON = 0x3629,
CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E0,
CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31DF,
CMSG_BEGIN_TRADE = 0x3157,
@@ -144,29 +144,29 @@ enum OpcodeClient : uint16
CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3541,
CMSG_BLACK_MARKET_OPEN = 0x353F,
CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3540,
- CMSG_BONUS_ROLL = 0x339A,
- CMSG_BUG_REPORT = 0x3684,
+ CMSG_BONUS_ROLL = 0x339B,
+ CMSG_BUG_REPORT = 0x3685,
CMSG_BUSY_TRADE = 0x3158,
CMSG_BUY_BACK_ITEM = 0x34AB,
CMSG_BUY_BANK_SLOT = 0x34BB,
CMSG_BUY_ITEM = 0x34AA,
CMSG_BUY_REAGENT_BANK = 0x34BC,
CMSG_CAGE_BATTLE_PET = 0x31F2,
- CMSG_CALENDAR_ADD_EVENT = 0x367C,
- CMSG_CALENDAR_COMMUNITY_INVITE = 0x3670,
- CMSG_CALENDAR_COMPLAIN = 0x3678,
- CMSG_CALENDAR_COPY_EVENT = 0x3677,
- CMSG_CALENDAR_EVENT_SIGN_UP = 0x367A,
- CMSG_CALENDAR_GET = 0x366E,
- CMSG_CALENDAR_GET_EVENT = 0x366F,
- CMSG_CALENDAR_GET_NUM_PENDING = 0x3679,
- CMSG_CALENDAR_INVITE = 0x3671,
- CMSG_CALENDAR_MODERATOR_STATUS = 0x3675,
- CMSG_CALENDAR_REMOVE_EVENT = 0x3676,
- CMSG_CALENDAR_REMOVE_INVITE = 0x3672,
- CMSG_CALENDAR_RSVP = 0x3673,
- CMSG_CALENDAR_STATUS = 0x3674,
- CMSG_CALENDAR_UPDATE_EVENT = 0x367D,
+ CMSG_CALENDAR_ADD_EVENT = 0x367D,
+ CMSG_CALENDAR_COMMUNITY_INVITE = 0x3671,
+ CMSG_CALENDAR_COMPLAIN = 0x3679,
+ CMSG_CALENDAR_COPY_EVENT = 0x3678,
+ CMSG_CALENDAR_EVENT_SIGN_UP = 0x367B,
+ CMSG_CALENDAR_GET = 0x366F,
+ CMSG_CALENDAR_GET_EVENT = 0x3670,
+ CMSG_CALENDAR_GET_NUM_PENDING = 0x367A,
+ CMSG_CALENDAR_INVITE = 0x3672,
+ CMSG_CALENDAR_MODERATOR_STATUS = 0x3676,
+ CMSG_CALENDAR_REMOVE_EVENT = 0x3677,
+ CMSG_CALENDAR_REMOVE_INVITE = 0x3673,
+ CMSG_CALENDAR_RSVP = 0x3674,
+ CMSG_CALENDAR_STATUS = 0x3675,
+ CMSG_CALENDAR_UPDATE_EVENT = 0x367E,
CMSG_CANCEL_AURA = 0x31AD,
CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F6,
CMSG_CANCEL_CAST = 0x32BC,
@@ -178,22 +178,22 @@ enum OpcodeClient : uint16
CMSG_CANCEL_QUEUED_SPELL = 0x317E,
CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3501,
CMSG_CANCEL_TRADE = 0x315C,
- CMSG_CAN_DUEL = 0x3661,
- CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3705,
+ CMSG_CAN_DUEL = 0x3662,
+ CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3706,
CMSG_CAST_SPELL = 0x32B9,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F,
CMSG_CHANGE_BAG_SLOT_FLAG = 0x3353,
CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3354,
CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3334,
- CMSG_CHANGE_REALM_TICKET = 0x36F7,
- CMSG_CHANGE_SUB_GROUP = 0x364B,
- CMSG_CHARACTER_CHECK_UPGRADE = 0x36C3,
- CMSG_CHARACTER_RENAME_REQUEST = 0x36BE,
- CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C1,
- CMSG_CHARACTER_UPGRADE_START = 0x36C2,
- CMSG_CHAR_CUSTOMIZE = 0x368B,
- CMSG_CHAR_DELETE = 0x369B,
- CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3691,
+ CMSG_CHANGE_REALM_TICKET = 0x36F8,
+ CMSG_CHANGE_SUB_GROUP = 0x364C,
+ CMSG_CHARACTER_CHECK_UPGRADE = 0x36C4,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x36BF,
+ CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C2,
+ CMSG_CHARACTER_UPGRADE_START = 0x36C3,
+ CMSG_CHAR_CUSTOMIZE = 0x368C,
+ CMSG_CHAR_DELETE = 0x369C,
+ CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3692,
CMSG_CHAT_ADDON_MESSAGE = 0x37EE,
CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF,
CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x37F6,
@@ -231,17 +231,17 @@ enum OpcodeClient : uint16
CMSG_CHAT_REPORT_FILTERED = 0x37CC,
CMSG_CHAT_REPORT_IGNORED = 0x37CB,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
- CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3644,
+ CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645,
CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3258,
CMSG_CHOICE_RESPONSE = 0x32C1,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33DE,
- CMSG_CLAIM_WEEKLY_REWARD = 0x33BA,
- CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3417,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33DF,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x33BB,
+ CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3418,
CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3212,
- CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3419,
- CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3416,
- CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3415,
- CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x341A,
+ CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x341A,
+ CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3417,
+ CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3416,
+ CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x341B,
CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3211,
CMSG_CLEAR_NEW_APPEARANCE = 0x3129,
CMSG_CLEAR_RAID_MARKER = 0x31A5,
@@ -249,49 +249,49 @@ enum OpcodeClient : uint16
CMSG_CLIENT_PORT_GRAVEYARD = 0x353B,
CMSG_CLOSE_INTERACTION = 0x3499,
CMSG_CLOSE_QUEST_CHOICE = 0x32C2,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E6,
- CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x341B,
- CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371C,
- CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371A,
- CMSG_CLUB_FINDER_POST = 0x3717,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371E,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3718,
- CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3719,
- CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371D,
- CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371F,
- CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371B,
- CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x373B,
- CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F4,
- CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3632,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E7,
+ CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x341C,
+ CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371D,
+ CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371B,
+ CMSG_CLUB_FINDER_POST = 0x3718,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371F,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3719,
+ CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x371A,
+ CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371E,
+ CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x3720,
+ CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371C,
+ CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x373C,
+ CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F5,
+ CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3633,
CMSG_COMMENTATOR_ENABLE = 0x35F0,
CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4,
CMSG_COMMENTATOR_EXIT_INSTANCE = 0x35F5,
CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F1,
CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3,
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2,
- CMSG_COMMENTATOR_SPECTATE = 0x3739,
+ CMSG_COMMENTATOR_SPECTATE = 0x373A,
CMSG_COMMENTATOR_START_WARGAME = 0x35EF,
- CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E1,
- CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EB,
- CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E2,
- CMSG_COMPLAINT = 0x366B,
+ CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E2,
+ CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EC,
+ CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E3,
+ CMSG_COMPLAINT = 0x366C,
CMSG_COMPLETE_CINEMATIC = 0x3559,
CMSG_COMPLETE_MOVIE = 0x34EC,
CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AA,
CMSG_CONFIRM_RESPEC_WIPE = 0x3214,
CMSG_CONNECT_TO_FAILED = 0x35D4,
- CMSG_CONSUMABLE_TOKEN_BUY = 0x36E6,
- CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E7,
- CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E5,
- CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E9,
- CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EA,
- CMSG_CONTENT_TRACKING_START_TRACKING = 0x342B,
- CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x342C,
+ CMSG_CONSUMABLE_TOKEN_BUY = 0x36E7,
+ CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E8,
+ CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E6,
+ CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36EA,
+ CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EB,
+ CMSG_CONTENT_TRACKING_START_TRACKING = 0x342C,
+ CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x342D,
CMSG_CONTRIBUTION_CONTRIBUTE = 0x356D,
CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356E,
CMSG_CONVERSATION_CINEMATIC_READY = 0x355B,
CMSG_CONVERSATION_LINE_STARTED = 0x355A,
- CMSG_CONVERT_RAID = 0x364D,
+ CMSG_CONVERT_RAID = 0x364E,
CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3581,
CMSG_CRAFTING_ORDER_CANCEL = 0x358C,
CMSG_CRAFTING_ORDER_CLAIM = 0x3589,
@@ -303,15 +303,15 @@ enum OpcodeClient : uint16
CMSG_CRAFTING_ORDER_RELEASE = 0x358A,
CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x358E,
CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x358F,
- CMSG_CREATE_CHARACTER = 0x3643,
+ CMSG_CREATE_CHARACTER = 0x3644,
CMSG_CREATE_SHIPMENT = 0x331F,
CMSG_DB_QUERY_BULK = 0x35E4,
CMSG_DECLINE_GUILD_INVITES = 0x352E,
CMSG_DECLINE_PETITION = 0x3548,
CMSG_DELETE_EQUIPMENT_SET = 0x351A,
- CMSG_DEL_FRIEND = 0x36CE,
- CMSG_DEL_IGNORE = 0x36D2,
- CMSG_DEPOSIT_REAGENT_BANK = 0x335C,
+ CMSG_DEL_FRIEND = 0x36CF,
+ CMSG_DEL_IGNORE = 0x36D3,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x335D,
CMSG_DESTROY_ITEM = 0x32AF,
CMSG_DF_BOOT_PLAYER_VOTE = 0x3617,
CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3609,
@@ -320,23 +320,23 @@ enum OpcodeClient : uint16
CMSG_DF_JOIN = 0x360A,
CMSG_DF_LEAVE = 0x3613,
CMSG_DF_PROPOSAL_RESPONSE = 0x3608,
- CMSG_DF_READY_CHECK_RESPONSE = 0x361A,
+ CMSG_DF_READY_CHECK_RESPONSE = 0x361B,
CMSG_DF_SET_ROLES = 0x3616,
CMSG_DF_TELEPORT = 0x3618,
CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A41,
CMSG_DISMISS_CRITTER = 0x3508,
- CMSG_DO_COUNTDOWN = 0x3716,
+ CMSG_DO_COUNTDOWN = 0x3717,
CMSG_DO_MASTER_LOOT_ROLL = 0x3219,
- CMSG_DO_READY_CHECK = 0x3633,
+ CMSG_DO_READY_CHECK = 0x3634,
CMSG_DUEL_RESPONSE = 0x34F1,
CMSG_EJECT_PASSENGER = 0x324D,
CMSG_EMOTE = 0x3555,
CMSG_ENABLE_NAGLE = 0x376B,
CMSG_ENABLE_TAXI_NODE = 0x34B0,
- CMSG_ENGINE_SURVEY = 0x36E0,
+ CMSG_ENGINE_SURVEY = 0x36E1,
CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767,
CMSG_ENUM_CHARACTERS = 0x35E8,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DA,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DB,
CMSG_FAR_SIGHT = 0x34F7,
CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B1,
CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B0,
@@ -351,7 +351,7 @@ enum OpcodeClient : uint16
CMSG_GARRISON_GENERATE_RECRUITS = 0x3303,
CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3312,
CMSG_GARRISON_GET_MAP_DATA = 0x3319,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x3372,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x3373,
CMSG_GARRISON_LEARN_TALENT = 0x330E,
CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3343,
CMSG_GARRISON_PURCHASE_BUILDING = 0x32E9,
@@ -366,26 +366,26 @@ enum OpcodeClient : uint16
CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32FE,
CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F6,
CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3304,
- CMSG_GARRISON_SOCKET_TALENT = 0x33F3,
+ CMSG_GARRISON_SOCKET_TALENT = 0x33F4,
CMSG_GARRISON_START_MISSION = 0x3340,
CMSG_GARRISON_SWAP_BUILDINGS = 0x32EE,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
- CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B3,
- CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3732,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B4,
+ CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3733,
CMSG_GET_GARRISON_INFO = 0x32E3,
CMSG_GET_ITEM_PURCHASE_DATA = 0x3543,
CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x331E,
CMSG_GET_MIRROR_IMAGE_DATA = 0x32B3,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
- CMSG_GET_RAF_ACCOUNT_INFO = 0x3720,
- CMSG_GET_REMAINING_GAME_TIME = 0x36E8,
+ CMSG_GET_RAF_ACCOUNT_INFO = 0x3721,
+ CMSG_GET_REMAINING_GAME_TIME = 0x36E9,
CMSG_GET_TROPHY_LIST = 0x3331,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DC,
- CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36ED,
- CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EE,
- CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368F,
- CMSG_GM_TICKET_GET_CASE_STATUS = 0x368E,
- CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368D,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DD,
+ CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36EE,
+ CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EF,
+ CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3690,
+ CMSG_GM_TICKET_GET_CASE_STATUS = 0x368F,
+ CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368E,
CMSG_GOSSIP_REFRESH_OPTIONS = 0x3580,
CMSG_GOSSIP_SELECT_OPTION = 0x349A,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308D,
@@ -425,7 +425,7 @@ enum OpcodeClient : uint16
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3089,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x3070,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3071,
- CMSG_GUILD_SET_GUILD_MASTER = 0x36C5,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x36C6,
CMSG_GUILD_SET_MEMBER_NOTE = 0x3073,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3068,
CMSG_GUILD_SHIFT_RANK = 0x3067,
@@ -439,17 +439,17 @@ enum OpcodeClient : uint16
CMSG_INITIATE_TRADE = 0x3156,
CMSG_INSPECT = 0x353D,
CMSG_INSTANCE_LOCK_RESPONSE = 0x351B,
- CMSG_ISLAND_QUEUE = 0x33B6,
+ CMSG_ISLAND_QUEUE = 0x33B7,
CMSG_ITEM_PURCHASE_REFUND = 0x3544,
CMSG_ITEM_TEXT_QUERY = 0x3350,
CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DD,
CMSG_JOIN_RATED_BATTLEGROUND = 0x3178,
- CMSG_KEEP_ALIVE = 0x367E,
+ CMSG_KEEP_ALIVE = 0x367F,
CMSG_KEYBOUND_OVERRIDE = 0x322F,
CMSG_LATENCY_REPORT = 0x3771,
CMSG_LEARN_PVP_TALENTS = 0x356C,
CMSG_LEARN_TALENTS = 0x356A,
- CMSG_LEAVE_GROUP = 0x3648,
+ CMSG_LEAVE_GROUP = 0x3649,
CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DE,
CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360E,
CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360F,
@@ -457,15 +457,15 @@ enum OpcodeClient : uint16
CMSG_LFG_LIST_GET_STATUS = 0x360C,
CMSG_LFG_LIST_INVITE_APPLICANT = 0x3611,
CMSG_LFG_LIST_INVITE_RESPONSE = 0x3612,
- CMSG_LFG_LIST_JOIN = 0x3395,
+ CMSG_LFG_LIST_JOIN = 0x3396,
CMSG_LFG_LIST_LEAVE = 0x360B,
CMSG_LFG_LIST_SEARCH = 0x360D,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3396,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x3397,
CMSG_LIST_INVENTORY = 0x34A7,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B6,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B5,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B4,
- CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B7,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B7,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B6,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B5,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B8,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
CMSG_LOAD_SELECTED_TROPHY = 0x3332,
CMSG_LOGOUT_CANCEL = 0x34E7,
@@ -478,13 +478,13 @@ enum OpcodeClient : uint16
CMSG_LOOT_RELEASE = 0x321B,
CMSG_LOOT_ROLL = 0x321C,
CMSG_LOOT_UNIT = 0x3215,
- CMSG_LOW_LEVEL_RAID1 = 0x369F,
+ CMSG_LOW_LEVEL_RAID1 = 0x36A0,
CMSG_LOW_LEVEL_RAID2 = 0x3522,
CMSG_MAIL_CREATE_TEXT_ITEM = 0x354F,
CMSG_MAIL_DELETE = 0x3231,
CMSG_MAIL_GET_LIST = 0x354A,
CMSG_MAIL_MARK_AS_READ = 0x354E,
- CMSG_MAIL_RETURN_TO_SENDER = 0x3654,
+ CMSG_MAIL_RETURN_TO_SENDER = 0x3655,
CMSG_MAIL_TAKE_ITEM = 0x354C,
CMSG_MAIL_TAKE_MONEY = 0x354B,
CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3233,
@@ -492,10 +492,10 @@ enum OpcodeClient : uint16
CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C8,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C5,
CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C3,
- CMSG_MINIMAP_PING = 0x364A,
+ CMSG_MINIMAP_PING = 0x364B,
CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3189,
CMSG_MOUNT_CLEAR_FANFARE = 0x3127,
- CMSG_MOUNT_SET_FAVORITE = 0x3631,
+ CMSG_MOUNT_SET_FAVORITE = 0x3632,
CMSG_MOUNT_SPECIAL_ANIM = 0x329B,
CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A50,
CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4E,
@@ -591,7 +591,7 @@ enum OpcodeClient : uint16
CMSG_NEXT_CINEMATIC_CAMERA = 0x3558,
CMSG_OBJECT_UPDATE_FAILED = 0x317F,
CMSG_OBJECT_UPDATE_RESCUED = 0x3180,
- CMSG_OFFER_PETITION = 0x33DD,
+ CMSG_OFFER_PETITION = 0x33DE,
CMSG_OPENING_CINEMATIC = 0x3557,
CMSG_OPEN_ITEM = 0x3351,
CMSG_OPEN_MISSION_NPC = 0x3314,
@@ -601,24 +601,24 @@ enum OpcodeClient : uint16
CMSG_OVERRIDE_SCREEN_FLASH = 0x352F,
CMSG_PARTY_INVITE = 0x3603,
CMSG_PARTY_INVITE_RESPONSE = 0x3605,
- CMSG_PARTY_UNINVITE = 0x3646,
+ CMSG_PARTY_UNINVITE = 0x3647,
CMSG_PERFORM_ITEM_INTERACTION = 0x323B,
CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x3135,
- CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3406,
- CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3407,
- CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3408,
- CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3405,
+ CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3407,
+ CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3408,
+ CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3409,
+ CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3406,
CMSG_PETITION_BUY = 0x34D0,
- CMSG_PETITION_RENAME_GUILD = 0x36C6,
+ CMSG_PETITION_RENAME_GUILD = 0x36C7,
CMSG_PETITION_SHOW_LIST = 0x34CF,
CMSG_PETITION_SHOW_SIGNATURES = 0x34D1,
CMSG_PET_ABANDON = 0x3493,
CMSG_PET_ACTION = 0x3491,
CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E2,
- CMSG_PET_BATTLE_INPUT = 0x3640,
+ CMSG_PET_BATTLE_INPUT = 0x3641,
CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3230,
CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E1,
- CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641,
+ CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3642,
CMSG_PET_BATTLE_REQUEST_PVP = 0x31DB,
CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DC,
CMSG_PET_BATTLE_REQUEST_WILD = 0x31D9,
@@ -626,7 +626,7 @@ enum OpcodeClient : uint16
CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DA,
CMSG_PET_CANCEL_AURA = 0x3494,
CMSG_PET_CAST_SPELL = 0x32B8,
- CMSG_PET_RENAME = 0x3683,
+ CMSG_PET_RENAME = 0x3684,
CMSG_PET_SET_ACTION = 0x3490,
CMSG_PET_SPELL_AUTOCAST = 0x3495,
CMSG_PET_STOP_ATTACK = 0x3492,
@@ -635,13 +635,13 @@ enum OpcodeClient : uint16
CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
CMSG_PVP_LOG_DATA = 0x317B,
CMSG_QUERY_BATTLE_PET_NAME = 0x328E,
- CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365F,
- CMSG_QUERY_CORPSE_TRANSPORT = 0x3660,
+ CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660,
+ CMSG_QUERY_CORPSE_TRANSPORT = 0x3661,
CMSG_QUERY_COUNTDOWN_TIMER = 0x31A8,
CMSG_QUERY_CREATURE = 0x3288,
CMSG_QUERY_GAME_OBJECT = 0x3289,
CMSG_QUERY_GARRISON_PET_NAME = 0x328F,
- CMSG_QUERY_GUILD_INFO = 0x3689,
+ CMSG_QUERY_GUILD_INFO = 0x368A,
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350F,
CMSG_QUERY_NEXT_MAIL_TIME = 0x354D,
CMSG_QUERY_NPC_TEXT = 0x328A,
@@ -654,10 +654,10 @@ enum OpcodeClient : uint16
CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3174,
CMSG_QUERY_QUEST_INFO = 0x328B,
CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3175,
- CMSG_QUERY_REALM_NAME = 0x3688,
- CMSG_QUERY_SCENARIO_POI = 0x3655,
+ CMSG_QUERY_REALM_NAME = 0x3689,
+ CMSG_QUERY_SCENARIO_POI = 0x3656,
CMSG_QUERY_TIME = 0x34E4,
- CMSG_QUERY_TREASURE_PICKER = 0x3375,
+ CMSG_QUERY_TREASURE_PICKER = 0x3376,
CMSG_QUERY_VOID_STORAGE = 0x31A1,
CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4,
CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E,
@@ -671,60 +671,60 @@ enum OpcodeClient : uint16
CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A2,
CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY = 0x3591,
CMSG_QUEST_LOG_REMOVE_QUEST = 0x3542,
- CMSG_QUEST_POI_QUERY = 0x36AD,
+ CMSG_QUEST_POI_QUERY = 0x36AE,
CMSG_QUEST_PUSH_RESULT = 0x34A6,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33CE,
- CMSG_QUEST_SESSION_REQUEST_START = 0x33CD,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0x372B,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33CF,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x33CE,
+ CMSG_QUEST_SESSION_REQUEST_STOP = 0x372C,
CMSG_QUEUED_MESSAGES_END = 0x376C,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3703,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3702,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3730,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3701,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3700,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3704,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3703,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3731,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3702,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3701,
CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3513,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0x3721,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3723,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3722,
- CMSG_RANDOM_ROLL = 0x3653,
- CMSG_READY_CHECK_RESPONSE = 0x3634,
+ CMSG_RAF_CLAIM_NEXT_REWARD = 0x3722,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3724,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3723,
+ CMSG_RANDOM_ROLL = 0x3654,
+ CMSG_READY_CHECK_RESPONSE = 0x3635,
CMSG_READ_ITEM = 0x3352,
CMSG_RECLAIM_CORPSE = 0x34EA,
- CMSG_REMOVE_NEW_ITEM = 0x3378,
- CMSG_REMOVE_RAF_RECRUIT = 0x3724,
+ CMSG_REMOVE_NEW_ITEM = 0x3379,
+ CMSG_REMOVE_RAF_RECRUIT = 0x3725,
CMSG_REORDER_CHARACTERS = 0x35E9,
CMSG_REPAIR_ITEM = 0x34FB,
CMSG_REPLACE_TROPHY = 0x3333,
CMSG_REPOP_REQUEST = 0x353A,
- CMSG_REPORT_CLIENT_VARIABLES = 0x36FD,
- CMSG_REPORT_ENABLED_ADDONS = 0x36FC,
- CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A5,
- CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FE,
+ CMSG_REPORT_CLIENT_VARIABLES = 0x36FE,
+ CMSG_REPORT_ENABLED_ADDONS = 0x36FD,
+ CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A6,
+ CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FF,
CMSG_REPORT_PVP_PLAYER_AFK = 0x3503,
- CMSG_REPORT_SERVER_LAG = 0x33C6,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x33C7,
- CMSG_REQUEST_ACCOUNT_DATA = 0x3693,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x3377,
+ CMSG_REPORT_SERVER_LAG = 0x33C7,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x33C8,
+ CMSG_REQUEST_ACCOUNT_DATA = 0x3694,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x3378,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
CMSG_REQUEST_CEMETERY_LIST = 0x3176,
- CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368A,
+ CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368B,
CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32D5,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x33B8,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x33B9,
CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353E,
CMSG_REQUEST_FORCED_REACTIONS = 0x320C,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F2,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F3,
CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A7,
CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A6,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C8,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C9,
CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32C4,
CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3206,
CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3207,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
- CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3652,
+ CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653,
CMSG_REQUEST_PET_INFO = 0x3496,
CMSG_REQUEST_PLAYED_TIME = 0x3293,
CMSG_REQUEST_PVP_REWARDS = 0x3194,
- CMSG_REQUEST_RAID_INFO = 0x36C7,
+ CMSG_REQUEST_RAID_INFO = 0x36C8,
CMSG_REQUEST_RATED_PVP_INFO = 0x35E3,
CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309A,
CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3195,
@@ -733,16 +733,16 @@ enum OpcodeClient : uint16
CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x324A,
CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3249,
CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x324B,
- CMSG_REQUEST_WEEKLY_REWARDS = 0x33BB,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3376,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x33BC,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3377,
CMSG_RESET_CHALLENGE_MODE = 0x3204,
CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3205,
- CMSG_RESET_INSTANCES = 0x3667,
- CMSG_RESURRECT_RESPONSE = 0x3682,
+ CMSG_RESET_INSTANCES = 0x3668,
+ CMSG_RESURRECT_RESPONSE = 0x3683,
CMSG_REVERT_MONUMENT_APPEARANCE = 0x3335,
CMSG_RIDE_VEHICLE_INTERACT = 0x324C,
- CMSG_RPE_RESET_CHARACTER = 0x374E,
- CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3748,
+ CMSG_RPE_RESET_CHARACTER = 0x374F,
+ CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3749,
CMSG_SAVE_CUF_PROFILES = 0x318A,
CMSG_SAVE_EQUIPMENT_SET = 0x3519,
CMSG_SAVE_GUILD_EMBLEM = 0x32C8,
@@ -752,45 +752,49 @@ enum OpcodeClient : uint16
CMSG_SELF_RES = 0x3545,
CMSG_SELL_ALL_JUNK_ITEMS = 0x34A9,
CMSG_SELL_ITEM = 0x34A8,
- CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F6,
- CMSG_SEND_CONTACT_LIST = 0x36CC,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F7,
+ CMSG_SEND_CONTACT_LIST = 0x36CD,
CMSG_SEND_MAIL = 0x35FA,
+ CMSG_SEND_PING_UNIT = 0x342F,
+ CMSG_SEND_PING_WORLD_POINT = 0x3430,
CMSG_SEND_TEXT_EMOTE = 0x348E,
- CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369A,
+ CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369B,
CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3232,
CMSG_SET_ACTION_BAR_TOGGLES = 0x3546,
- CMSG_SET_ACTION_BUTTON = 0x3635,
+ CMSG_SET_ACTION_BUTTON = 0x3636,
CMSG_SET_ACTIVE_MOVER = 0x3A3C,
CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D6,
- CMSG_SET_ASSISTANT_LEADER = 0x364E,
+ CMSG_SET_ASSISTANT_LEADER = 0x364F,
CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3355,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3356,
- CMSG_SET_CONTACT_NOTES = 0x36CF,
+ CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x3356,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3357,
+ CMSG_SET_CONTACT_NOTES = 0x36D0,
CMSG_SET_CURRENCY_FLAGS = 0x3168,
CMSG_SET_DIFFICULTY_ID = 0x322E,
- CMSG_SET_DUNGEON_DIFFICULTY = 0x3681,
+ CMSG_SET_DUNGEON_DIFFICULTY = 0x3682,
CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x3282,
CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3619,
- CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3704,
+ CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3705,
CMSG_SET_FACTION_AT_WAR = 0x34ED,
CMSG_SET_FACTION_INACTIVE = 0x34EF,
CMSG_SET_FACTION_NOT_AT_WAR = 0x34EE,
CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B8,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3358,
- CMSG_SET_LOOT_METHOD = 0x3647,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3359,
+ CMSG_SET_LOOT_METHOD = 0x3648,
CMSG_SET_LOOT_SPECIALIZATION = 0x3553,
- CMSG_SET_PARTY_ASSIGNMENT = 0x3650,
- CMSG_SET_PARTY_LEADER = 0x3649,
+ CMSG_SET_PARTY_ASSIGNMENT = 0x3651,
+ CMSG_SET_PARTY_LEADER = 0x364A,
CMSG_SET_PET_SLOT = 0x3167,
- CMSG_SET_PLAYER_DECLINED_NAMES = 0x3687,
+ CMSG_SET_PLAYER_DECLINED_NAMES = 0x3688,
CMSG_SET_PREFERRED_CEMETERY = 0x3177,
CMSG_SET_PVP = 0x32CC,
- CMSG_SET_RAID_DIFFICULTY = 0x36D8,
+ CMSG_SET_RAID_DIFFICULTY = 0x36D9,
+ CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x361A,
CMSG_SET_ROLE = 0x35D9,
- CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3685,
+ CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3686,
CMSG_SET_SELECTION = 0x353C,
CMSG_SET_SHEATHED = 0x348F,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3357,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3358,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x3502,
CMSG_SET_TITLE = 0x3299,
CMSG_SET_TRADE_CURRENCY = 0x3160,
@@ -799,14 +803,14 @@ enum OpcodeClient : uint16
CMSG_SET_USING_PARTY_GARRISON = 0x3316,
CMSG_SET_WAR_MODE = 0x32CD,
CMSG_SET_WATCHED_FACTION = 0x34F0,
- CMSG_SHOW_TRADE_SKILL = 0x36BF,
+ CMSG_SHOW_TRADE_SKILL = 0x36C0,
CMSG_SIGN_PETITION = 0x3547,
- CMSG_SILENCE_PARTY_TALKER = 0x3651,
- CMSG_SOCIAL_CONTRACT_REQUEST = 0x3743,
+ CMSG_SILENCE_PARTY_TALKER = 0x3652,
+ CMSG_SOCIAL_CONTRACT_REQUEST = 0x3744,
CMSG_SOCKET_GEMS = 0x34FA,
- CMSG_SORT_BAGS = 0x3359,
- CMSG_SORT_BANK_BAGS = 0x335A,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x335B,
+ CMSG_SORT_BAGS = 0x335A,
+ CMSG_SORT_BANK_BAGS = 0x335B,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x335C,
CMSG_SPAWN_TRACKING_UPDATE = 0x32AE,
CMSG_SPELL_CLICK = 0x349B,
CMSG_SPELL_EMPOWER_RELEASE = 0x3280,
@@ -821,10 +825,10 @@ enum OpcodeClient : uint16
CMSG_START_SPECTATOR_WAR_GAME = 0x35DF,
CMSG_START_WAR_GAME = 0x35DE,
CMSG_STORE_GUILD_BANK_ITEM = 0x34BF,
- CMSG_SUBMIT_USER_FEEDBACK = 0x3692,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E7,
- CMSG_SUMMON_RESPONSE = 0x3669,
- CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3645,
+ CMSG_SUBMIT_USER_FEEDBACK = 0x3693,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E8,
+ CMSG_SUMMON_RESPONSE = 0x366A,
+ CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646,
CMSG_SURRENDER_ARENA = 0x3173,
CMSG_SUSPEND_COMMS_ACK = 0x3764,
CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
@@ -832,7 +836,7 @@ enum OpcodeClient : uint16
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x34C0,
- CMSG_SWAP_SUB_GROUPS = 0x364C,
+ CMSG_SWAP_SUB_GROUPS = 0x364D,
CMSG_SWAP_VOID_ITEM = 0x31A3,
CMSG_TABARD_VENDOR_ACTIVATE = 0x32C9,
CMSG_TALK_TO_GOSSIP = 0x3498,
@@ -843,51 +847,51 @@ enum OpcodeClient : uint16
CMSG_TIME_SYNC_RESPONSE = 0x3A3D,
CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3F,
CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3E,
- CMSG_TOGGLE_DIFFICULTY = 0x3656,
+ CMSG_TOGGLE_DIFFICULTY = 0x3657,
CMSG_TOGGLE_PVP = 0x32CB,
CMSG_TOTEM_DESTROYED = 0x3507,
CMSG_TOY_CLEAR_FANFARE = 0x3128,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x3374,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x3375,
CMSG_TRAINER_BUY_SPELL = 0x34B5,
CMSG_TRAINER_LIST = 0x34B4,
- CMSG_TRAITS_COMMIT_CONFIG = 0x340F,
- CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x340D,
+ CMSG_TRAITS_COMMIT_CONFIG = 0x3410,
+ CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x340E,
CMSG_TRANSMOGRIFY_ITEMS = 0x3196,
CMSG_TURN_IN_PETITION = 0x3549,
- CMSG_TUTORIAL = 0x36D9,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B7,
+ CMSG_TUTORIAL = 0x36DA,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B8,
CMSG_UNACCEPT_TRADE = 0x315B,
- CMSG_UNDELETE_CHARACTER = 0x36DB,
+ CMSG_UNDELETE_CHARACTER = 0x36DC,
CMSG_UNLEARN_SKILL = 0x34F4,
CMSG_UNLEARN_SPECIALIZATION = 0x31A4,
CMSG_UNLOCK_VOID_STORAGE = 0x31A0,
- CMSG_UPDATE_AADC_STATUS = 0x3737,
- CMSG_UPDATE_ACCOUNT_DATA = 0x3694,
+ CMSG_UPDATE_AADC_STATUS = 0x3738,
+ CMSG_UPDATE_ACCOUNT_DATA = 0x3695,
CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32BB,
- CMSG_UPDATE_CLIENT_SETTINGS = 0x3663,
+ CMSG_UPDATE_CLIENT_SETTINGS = 0x3664,
CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3328,
CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A43,
- CMSG_UPDATE_RAID_TARGET = 0x364F,
+ CMSG_UPDATE_RAID_TARGET = 0x3650,
CMSG_UPDATE_SPELL_VISUAL = 0x32BA,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F0,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F1,
CMSG_UPGRADE_GARRISON = 0x32DE,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E5,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E6,
CMSG_USED_FOLLOW = 0x3185,
CMSG_USE_CRITTER_ITEM = 0x3252,
CMSG_USE_EQUIPMENT_SET = 0x3995,
CMSG_USE_ITEM = 0x32B4,
CMSG_USE_TOY = 0x32B7,
- CMSG_VAS_CHECK_TRANSFER_OK = 0x3709,
- CMSG_VAS_GET_QUEUE_MINUTES = 0x3708,
- CMSG_VAS_GET_SERVICE_STATUS = 0x3707,
+ CMSG_VAS_CHECK_TRANSFER_OK = 0x370A,
+ CMSG_VAS_GET_QUEUE_MINUTES = 0x3709,
+ CMSG_VAS_GET_SERVICE_STATUS = 0x3708,
CMSG_VIOLENCE_LEVEL = 0x3183,
- CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370D,
- CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370E,
- CMSG_VOICE_CHAT_LOGIN = 0x370C,
+ CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370E,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370F,
+ CMSG_VOICE_CHAT_LOGIN = 0x370D,
CMSG_VOID_STORAGE_TRANSFER = 0x31A2,
CMSG_WARDEN3_DATA = 0x35EC,
- CMSG_WHO = 0x3680,
- CMSG_WHO_IS = 0x367F,
+ CMSG_WHO = 0x3681,
+ CMSG_WHO_IS = 0x3680,
CMSG_WORLD_PORT_RESPONSE = 0x35F9,
CMSG_WRAP_ITEM = 0x3994,
};
@@ -895,89 +899,89 @@ enum OpcodeClient : uint16
enum OpcodeServer : uint16
{
SMSG_ABORT_NEW_WORLD = 0x2597,
- SMSG_ACCOUNT_COSMETIC_ADDED = 0x2872,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2858,
- SMSG_ACCOUNT_DATA_TIMES = 0x2700,
- SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28AF,
- SMSG_ACCOUNT_MOUNT_REMOVED = 0x25AB,
- SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AA,
- SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2871,
- SMSG_ACCOUNT_TOY_UPDATE = 0x25AC,
- SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B0,
- SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25AF,
- SMSG_ACHIEVEMENT_DELETED = 0x26DE,
- SMSG_ACHIEVEMENT_EARNED = 0x263C,
+ SMSG_ACCOUNT_COSMETIC_ADDED = 0x2876,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x285C,
+ SMSG_ACCOUNT_DATA_TIMES = 0x2704,
+ SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28B3,
+ SMSG_ACCOUNT_MOUNT_REMOVED = 0x25AE,
+ SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AD,
+ SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2875,
+ SMSG_ACCOUNT_TOY_UPDATE = 0x25AF,
+ SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B3,
+ SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B2,
+ SMSG_ACHIEVEMENT_DELETED = 0x26E2,
+ SMSG_ACHIEVEMENT_EARNED = 0x263F,
SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015,
SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017,
- SMSG_ACTIVATE_TAXI_REPLY = 0x2676,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x2679,
SMSG_ACTIVE_GLYPHS = 0x2C54,
- SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x273C,
- SMSG_ADDON_LIST_REQUEST = 0x263B,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2636,
- SMSG_ADD_ITEM_PASSIVE = 0x25A6,
- SMSG_ADD_LOSS_OF_CONTROL = 0x266A,
- SMSG_ADD_RUNE_POWER = 0x26B0,
- SMSG_ADJUST_SPLINE_DURATION = 0x25CC,
- SMSG_ADVANCED_COMBAT_LOG = 0x286E,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2868,
- SMSG_AE_LOOT_TARGETS = 0x2611,
- SMSG_AE_LOOT_TARGET_ACK = 0x2612,
- SMSG_AI_REACTION = 0x26AD,
- SMSG_ALLIED_RACE_DETAILS = 0x27EC,
+ SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x2740,
+ SMSG_ADDON_LIST_REQUEST = 0x263E,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2639,
+ SMSG_ADD_ITEM_PASSIVE = 0x25A9,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x266D,
+ SMSG_ADD_RUNE_POWER = 0x26B3,
+ SMSG_ADJUST_SPLINE_DURATION = 0x25CF,
+ SMSG_ADVANCED_COMBAT_LOG = 0x2872,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x286C,
+ SMSG_AE_LOOT_TARGETS = 0x2614,
+ SMSG_AE_LOOT_TARGET_ACK = 0x2615,
+ SMSG_AI_REACTION = 0x26B0,
+ SMSG_ALLIED_RACE_DETAILS = 0x27F0,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2571,
SMSG_ALL_ACHIEVEMENT_DATA = 0x2570,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2845,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2849,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2586,
SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x2735,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x2739,
SMSG_AREA_TRIGGER_DENIED = 0x2903,
SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2900,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x270C,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x2710,
SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE,
SMSG_AREA_TRIGGER_RE_PATH = 0x28FD,
SMSG_AREA_TRIGGER_RE_SHAPE = 0x2902,
SMSG_AREA_TRIGGER_UNATTACH = 0x2901,
SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x28FF,
- SMSG_ARENA_CLEAR_OPPONENTS = 0x2642,
- SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262B,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2641,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x2797,
- SMSG_ARTIFACT_FORGE_ERROR = 0x2795,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x2796,
- SMSG_ARTIFACT_XP_GAIN = 0x27DF,
- 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 = 0x27C8,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27C7,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27C6,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26E9,
- SMSG_AUCTION_COMMAND_RESULT = 0x26E6,
- SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x288F,
- SMSG_AUCTION_FAVORITE_LIST = 0x285F,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2856,
- SMSG_AUCTION_HELLO_RESPONSE = 0x26E4,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2855,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2852,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2853,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2854,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26E8,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EA,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E5,
- SMSG_AUCTION_WON_NOTIFICATION = 0x26E7,
+ SMSG_ARENA_CLEAR_OPPONENTS = 0x2645,
+ SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262E,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2644,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279B,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x2799,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x279A,
+ SMSG_ARTIFACT_XP_GAIN = 0x27E3,
+ SMSG_ATTACKER_STATE_UPDATE = 0x294E,
+ SMSG_ATTACK_START = 0x2939,
+ SMSG_ATTACK_STOP = 0x293A,
+ SMSG_ATTACK_SWING_ERROR = 0x2948,
+ SMSG_ATTACK_SWING_LANDED_LOG = 0x2949,
+ SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27CC,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CB,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CA,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26ED,
+ SMSG_AUCTION_COMMAND_RESULT = 0x26EA,
+ SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2893,
+ SMSG_AUCTION_FAVORITE_LIST = 0x2863,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285A,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x26E8,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2859,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2856,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2857,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2858,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26EC,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EE,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E9,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x26EB,
SMSG_AURA_POINTS_DEPLETED = 0x2C20,
SMSG_AURA_UPDATE = 0x2C1F,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_FAILED = 0x256C,
SMSG_AUTH_RESPONSE = 0x256D,
SMSG_AVAILABLE_HOTFIXES = 0x290F,
- SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x2894,
+ SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x2898,
SMSG_BAG_CLEANUP_FINISHED = 0x2DA7,
- SMSG_BARBER_SHOP_RESULT = 0x26B5,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2836,
+ SMSG_BARBER_SHOP_RESULT = 0x26B8,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283A,
SMSG_BATTLEFIELD_LIST = 0x2927,
SMSG_BATTLEFIELD_PORT_DENIED = 0x292D,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923,
@@ -988,115 +992,116 @@ enum OpcodeServer : uint16
SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2924,
SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x292F,
SMSG_BATTLEGROUND_INFO_THROTTLED = 0x292E,
- SMSG_BATTLEGROUND_INIT = 0x294A,
+ SMSG_BATTLEGROUND_INIT = 0x294B,
SMSG_BATTLEGROUND_PLAYER_JOINED = 0x292B,
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928,
- SMSG_BATTLEGROUND_POINTS = 0x2949,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x277F,
- SMSG_BATTLENET_CHALLENGE_START = 0x277E,
- SMSG_BATTLENET_NOTIFICATION = 0x27F8,
- SMSG_BATTLENET_RESPONSE = 0x27F7,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27F9,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x2779,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x276E,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x276F,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2778,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x276C,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x276B,
- SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2877,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2769,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276A,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2768,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2766,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2767,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x276D,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2777,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x2814,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2775,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2774,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2808,
- SMSG_BATTLE_PETS_HEALED = 0x25EE,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2671,
- SMSG_BATTLE_PET_DELETED = 0x25EB,
- SMSG_BATTLE_PET_ERROR = 0x2631,
- SMSG_BATTLE_PET_JOURNAL = 0x25EA,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25E8,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25E9,
- SMSG_BATTLE_PET_RESTORED = 0x25ED,
- SMSG_BATTLE_PET_REVOKED = 0x25EC,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E6,
- SMSG_BATTLE_PET_UPDATES = 0x25E5,
+ SMSG_BATTLEGROUND_POINTS = 0x294A,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x2783,
+ SMSG_BATTLENET_CHALLENGE_START = 0x2782,
+ SMSG_BATTLENET_NOTIFICATION = 0x27FC,
+ SMSG_BATTLENET_RESPONSE = 0x27FB,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27FD,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x277D,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2772,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2773,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277C,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2770,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x276F,
+ SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x287B,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276D,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276E,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276C,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276A,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276B,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2771,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277B,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x2818,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2779,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2778,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x280C,
+ SMSG_BATTLE_PETS_HEALED = 0x25F1,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2674,
+ SMSG_BATTLE_PET_DELETED = 0x25EE,
+ SMSG_BATTLE_PET_ERROR = 0x2634,
+ SMSG_BATTLE_PET_JOURNAL = 0x25ED,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EB,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25EC,
+ SMSG_BATTLE_PET_RESTORED = 0x25F0,
+ SMSG_BATTLE_PET_REVOKED = 0x25EF,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E9,
+ SMSG_BATTLE_PET_UPDATES = 0x25E8,
SMSG_BIND_POINT_UPDATE = 0x257D,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2621,
- SMSG_BLACK_MARKET_OUTBID = 0x2622,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2620,
- SMSG_BLACK_MARKET_WON = 0x2623,
- SMSG_BONUS_ROLL_EMPTY = 0x263E,
- SMSG_BOSS_KILL = 0x294C,
- SMSG_BREAK_TARGET = 0x2937,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2624,
+ SMSG_BLACK_MARKET_OUTBID = 0x2625,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2623,
+ SMSG_BLACK_MARKET_WON = 0x2626,
+ SMSG_BONUS_ROLL_EMPTY = 0x2641,
+ SMSG_BOSS_KILL = 0x294D,
+ SMSG_BREAK_TARGET = 0x2938,
SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
- SMSG_BROADCAST_SUMMON_CAST = 0x2838,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x2839,
- SMSG_BUY_FAILED = 0x26BE,
- SMSG_BUY_SUCCEEDED = 0x26BD,
+ SMSG_BROADCAST_SUMMON_CAST = 0x283C,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x283D,
+ SMSG_BUY_FAILED = 0x26C1,
+ SMSG_BUY_SUCCEEDED = 0x26C0,
SMSG_CACHE_INFO = 0x291D,
SMSG_CACHE_VERSION = 0x291C,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x2696,
- SMSG_CALENDAR_COMMAND_RESULT = 0x2697,
- SMSG_CALENDAR_COMMUNITY_INVITE = 0x2686,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x268E,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x268F,
- SMSG_CALENDAR_INVITE_ADDED = 0x2687,
- SMSG_CALENDAR_INVITE_ALERT = 0x268B,
- SMSG_CALENDAR_INVITE_NOTES = 0x2690,
- SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2691,
- SMSG_CALENDAR_INVITE_REMOVED = 0x2688,
- SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x268D,
- SMSG_CALENDAR_INVITE_STATUS = 0x2689,
- SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x268C,
- SMSG_CALENDAR_MODERATOR_STATUS = 0x268A,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2692,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2693,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2694,
- SMSG_CALENDAR_SEND_CALENDAR = 0x2684,
- SMSG_CALENDAR_SEND_EVENT = 0x2685,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x2695,
- SMSG_CAMERA_EFFECT = 0x271B,
- SMSG_CANCEL_AUTO_REPEAT = 0x26D4,
- SMSG_CANCEL_COMBAT = 0x2946,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x2699,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x269A,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x2689,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2691,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2692,
+ SMSG_CALENDAR_INVITE_ADDED = 0x268A,
+ SMSG_CALENDAR_INVITE_ALERT = 0x268E,
+ SMSG_CALENDAR_INVITE_NOTES = 0x2693,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2694,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x268B,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2690,
+ SMSG_CALENDAR_INVITE_STATUS = 0x268C,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x268F,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x268D,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2695,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2696,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2697,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x2687,
+ SMSG_CALENDAR_SEND_EVENT = 0x2688,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x2698,
+ SMSG_CAMERA_EFFECT = 0x271F,
+ SMSG_CANCEL_AUTO_REPEAT = 0x26D8,
+ SMSG_CANCEL_COMBAT = 0x2947,
SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46,
+ SMSG_CANCEL_PING_PIN = 0x25A2,
SMSG_CANCEL_PRELOAD_WORLD = 0x2595,
- SMSG_CANCEL_SCENE = 0x2630,
+ SMSG_CANCEL_SCENE = 0x2633,
SMSG_CANCEL_SPELL_VISUAL = 0x2C44,
SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48,
- SMSG_CAN_DUEL_RESULT = 0x2942,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2807,
+ SMSG_CAN_DUEL_RESULT = 0x2943,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280B,
SMSG_CAPTURE_POINT_REMOVED = 0x292A,
SMSG_CAST_FAILED = 0x2C57,
- SMSG_CHAIN_MISSILE_BOUNCE = 0x25C4,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x2605,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2609,
- SMSG_CHALLENGE_MODE_RESET = 0x2604,
- SMSG_CHALLENGE_MODE_START = 0x2602,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2603,
+ SMSG_CHAIN_MISSILE_BOUNCE = 0x25C7,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x2608,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260C,
+ SMSG_CHALLENGE_MODE_RESET = 0x2607,
+ SMSG_CHALLENGE_MODE_START = 0x2605,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2606,
SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27FA,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27FE,
SMSG_CHANNEL_LIST = 0x2BC4,
SMSG_CHANNEL_NOTIFY = 0x2BC1,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC2,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC3,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B2,
- SMSG_CHARACTER_LOGIN_FAILED = 0x26FB,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x277D,
- SMSG_CHARACTER_RENAME_RESULT = 0x2758,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B1,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B0,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27B3,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x27AF,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26D8,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26D9,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x279C,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B6,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x26FF,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2781,
+ SMSG_CHARACTER_RENAME_RESULT = 0x275C,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B5,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B4,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27B7,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27B3,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DC,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DD,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A0,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x2BCB,
@@ -1114,150 +1119,150 @@ enum OpcodeServer : uint16
SMSG_CHECK_ABANDON_NPE = 0x3018,
SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584,
SMSG_CHECK_WARGAME_ENTRY = 0x258F,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2862,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2849,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2866,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x284D,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C24,
- SMSG_CLEAR_BOSS_EMOTES = 0x25B7,
- SMSG_CLEAR_COOLDOWN = 0x26B2,
+ SMSG_CLEAR_BOSS_EMOTES = 0x25BA,
+ SMSG_CLEAR_COOLDOWN = 0x26B5,
SMSG_CLEAR_COOLDOWNS = 0x2C23,
SMSG_CLEAR_RESURRECT = 0x257F,
SMSG_CLEAR_SPELL_CHARGES = 0x2C25,
- SMSG_CLEAR_TARGET = 0x2943,
+ SMSG_CLEAR_TARGET = 0x2944,
SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x2794,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2841,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2844,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2842,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x283F,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2843,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2840,
- SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x2886,
- SMSG_COIN_REMOVED = 0x2610,
- SMSG_COMBAT_EVENT_FAILED = 0x293A,
- SMSG_COMMENTATOR_MAP_INFO = 0x26FD,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x26FE,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x26FC,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C3,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27CF,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C5,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x27C4,
- SMSG_COMPLAINT_RESULT = 0x26A4,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x278D,
- SMSG_CONFIRM_PARTY_INVITE = 0x2806,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x2798,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2845,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2848,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2846,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2843,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2847,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2844,
+ SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x288A,
+ SMSG_COIN_REMOVED = 0x2613,
+ SMSG_COMBAT_EVENT_FAILED = 0x293B,
+ SMSG_COMMENTATOR_MAP_INFO = 0x2701,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x2702,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x2700,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C7,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D3,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C9,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x27C8,
+ SMSG_COMPLAINT_RESULT = 0x26A7,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2791,
+ SMSG_CONFIRM_PARTY_INVITE = 0x280A,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277A,
- SMSG_CONSOLE_WRITE = 0x262E,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27CB,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27CA,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27C9,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27CD,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27CE,
- SMSG_CONTACT_LIST = 0x277B,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x280D,
- SMSG_CONTROL_UPDATE = 0x2640,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x286B,
- SMSG_COOLDOWN_CHEAT = 0x272E,
- SMSG_COOLDOWN_EVENT = 0x26B1,
- SMSG_CORPSE_LOCATION = 0x2648,
- SMSG_CORPSE_RECLAIM_DELAY = 0x273F,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x2708,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277E,
+ SMSG_CONSOLE_WRITE = 0x2631,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27CF,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27CE,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27CD,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D1,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D2,
+ SMSG_CONTACT_LIST = 0x277F,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2811,
+ SMSG_CONTROL_UPDATE = 0x2643,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x286F,
+ SMSG_COOLDOWN_CHEAT = 0x2732,
+ SMSG_COOLDOWN_EVENT = 0x26B4,
+ SMSG_CORPSE_LOCATION = 0x264B,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x2743,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x270C,
SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27EF,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x286C,
- SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A2,
- SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x289E,
- SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x289A,
- SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x289C,
- SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x2898,
- SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x289D,
- SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x2899,
- SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A0,
- SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x289B,
- SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A3,
- SMSG_CRAFT_ENCHANT_RESULT = 0x28A1,
- SMSG_CREATE_CHAR = 0x26F7,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x278C,
- SMSG_CREATOR_VISUALS_OVERRIDE = 0x28A6,
- SMSG_CRITERIA_DELETED = 0x26DD,
- SMSG_CRITERIA_UPDATE = 0x26D7,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26B9,
- SMSG_CUSTOM_LOAD_SCREEN = 0x25C7,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F3,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2870,
+ SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A6,
+ SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A2,
+ SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x289E,
+ SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x28A0,
+ SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289C,
+ SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A1,
+ SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x289D,
+ SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A4,
+ SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x289F,
+ SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A7,
+ SMSG_CRAFT_ENCHANT_RESULT = 0x28A5,
+ SMSG_CREATE_CHAR = 0x26FB,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x2790,
+ SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AA,
+ SMSG_CRITERIA_DELETED = 0x26E1,
+ SMSG_CRITERIA_UPDATE = 0x26DB,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BC,
+ SMSG_CUSTOM_LOAD_SCREEN = 0x25CA,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
SMSG_DAMAGE_CALC_LOG = 0x2C63,
SMSG_DB_REPLY = 0x290E,
- SMSG_DEATH_RELEASE_LOC = 0x26CA,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x264E,
+ SMSG_DEATH_RELEASE_LOC = 0x26CE,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2651,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x26F8,
+ SMSG_DELETE_CHAR = 0x26FC,
SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980,
- SMSG_DESTROY_ARENA_UNIT = 0x2737,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26EF,
+ SMSG_DESTROY_ARENA_UNIT = 0x273B,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F3,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x2589,
- SMSG_DISENCHANT_CREDIT = 0x25A3,
+ SMSG_DISENCHANT_CREDIT = 0x25A6,
SMSG_DISMOUNT_RESULT = 0x257C,
SMSG_DISPEL_FAILED = 0x2C2D,
SMSG_DISPLAY_GAME_ERROR = 0x259C,
SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
- SMSG_DISPLAY_PROMOTION = 0x2645,
+ SMSG_DISPLAY_PROMOTION = 0x2648,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9E,
- SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2870,
- SMSG_DISPLAY_TOAST = 0x261D,
- SMSG_DISPLAY_WORLD_TEXT = 0x27E0,
+ SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2874,
+ SMSG_DISPLAY_TOAST = 0x2620,
+ SMSG_DISPLAY_WORLD_TEXT = 0x27E4,
SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x2C62,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DC,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DF,
SMSG_DROP_NEW_CONNECTION = 0x304C,
- SMSG_DUEL_ARRANGED = 0x293C,
- SMSG_DUEL_COMPLETE = 0x2940,
- SMSG_DUEL_COUNTDOWN = 0x293F,
- SMSG_DUEL_IN_BOUNDS = 0x293E,
- SMSG_DUEL_OUT_OF_BOUNDS = 0x293D,
- SMSG_DUEL_REQUESTED = 0x293B,
- SMSG_DUEL_WINNER = 0x2941,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x273A,
- SMSG_EMOTE = 0x27B9,
- SMSG_ENABLE_BARBER_SHOP = 0x26B4,
- SMSG_ENCHANTMENT_LOG = 0x2709,
- SMSG_ENCOUNTER_END = 0x2773,
- SMSG_ENCOUNTER_START = 0x2772,
- SMSG_END_LIGHTNING_STORM = 0x26A1,
- SMSG_ENSURE_WORLD_LOADED = 0x2880,
+ SMSG_DUEL_ARRANGED = 0x293D,
+ SMSG_DUEL_COMPLETE = 0x2941,
+ SMSG_DUEL_COUNTDOWN = 0x2940,
+ SMSG_DUEL_IN_BOUNDS = 0x293F,
+ SMSG_DUEL_OUT_OF_BOUNDS = 0x293E,
+ SMSG_DUEL_REQUESTED = 0x293C,
+ SMSG_DUEL_WINNER = 0x2942,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x273E,
+ SMSG_EMOTE = 0x27BD,
+ SMSG_ENABLE_BARBER_SHOP = 0x26B7,
+ SMSG_ENCHANTMENT_LOG = 0x270D,
+ SMSG_ENCOUNTER_END = 0x2777,
+ SMSG_ENCOUNTER_START = 0x2776,
+ SMSG_END_LIGHTNING_STORM = 0x26A4,
+ SMSG_ENSURE_WORLD_LOADED = 0x2884,
SMSG_ENTER_ENCRYPTED_MODE = 0x3049,
SMSG_ENUM_CHARACTERS_RESULT = 0x2583,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E5,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E9,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C1E,
- SMSG_EQUIPMENT_SET_ID = 0x26AA,
+ SMSG_EQUIPMENT_SET_ID = 0x26AD,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x2754,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2869,
- SMSG_FACTION_BONUS_INFO = 0x271A,
+ SMSG_EXPLORATION_EXPERIENCE = 0x2758,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x286D,
+ SMSG_FACTION_BONUS_INFO = 0x271E,
SMSG_FAILED_PLAYER_CONDITION = 0x2FFA,
- SMSG_FAILED_QUEST_TURN_IN = 0x2803,
- SMSG_FEATURE_SYSTEM_STATUS = 0x25BB,
- SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BC,
- SMSG_FEIGN_DEATH_RESISTED = 0x2739,
- SMSG_FISH_ESCAPED = 0x26C7,
- SMSG_FISH_NOT_HOOKED = 0x26C6,
+ SMSG_FAILED_QUEST_TURN_IN = 0x2807,
+ SMSG_FEATURE_SYSTEM_STATUS = 0x25BE,
+ SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BF,
+ SMSG_FEIGN_DEATH_RESISTED = 0x273D,
+ SMSG_FISH_ESCAPED = 0x26CB,
+ SMSG_FISH_NOT_HOOKED = 0x26CA,
SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B,
- SMSG_FORCED_DEATH_UPDATE = 0x26CB,
- SMSG_FORCE_ANIM = 0x2746,
- SMSG_FORCE_ANIMATIONS = 0x2747,
- SMSG_FORCE_OBJECT_RELINK = 0x2644,
- SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x25AE,
- SMSG_FRIEND_STATUS = 0x277C,
- SMSG_GAIN_MAW_POWER = 0x27D4,
- SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25BF,
- SMSG_GAME_OBJECT_BASE = 0x281A,
- SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2884,
- SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C0,
- SMSG_GAME_OBJECT_DESPAWN = 0x25C1,
- SMSG_GAME_OBJECT_INTERACTION = 0x2883,
+ SMSG_FORCED_DEATH_UPDATE = 0x26CF,
+ SMSG_FORCE_ANIM = 0x274A,
+ SMSG_FORCE_ANIMATIONS = 0x274B,
+ SMSG_FORCE_OBJECT_RELINK = 0x2647,
+ SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x25B1,
+ SMSG_FRIEND_STATUS = 0x2780,
+ SMSG_GAIN_MAW_POWER = 0x27D8,
+ SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C2,
+ SMSG_GAME_OBJECT_BASE = 0x281E,
+ SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2888,
+ SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C3,
+ SMSG_GAME_OBJECT_DESPAWN = 0x25C4,
+ SMSG_GAME_OBJECT_INTERACTION = 0x2887,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A,
- SMSG_GAME_OBJECT_RESET_STATE = 0x2714,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27F6,
- SMSG_GAME_SPEED_SET = 0x267A,
- SMSG_GAME_TIME_SET = 0x2702,
- SMSG_GAME_TIME_UPDATE = 0x2701,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2718,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FA,
+ SMSG_GAME_SPEED_SET = 0x267D,
+ SMSG_GAME_TIME_SET = 0x2706,
+ SMSG_GAME_TIME_UPDATE = 0x2705,
SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982,
SMSG_GARRISON_ADD_EVENT = 0x29A6,
SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974,
@@ -1329,36 +1334,36 @@ 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 = 0x280E,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2756,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2812,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275A,
SMSG_GET_GARRISON_INFO_RESULT = 0x295E,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x278F,
- SMSG_GET_REALM_HIDDEN_RESULT = 0x28B4,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27CC,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27B7,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x278E,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x278A,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x27B6,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E1,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E2,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2793,
+ SMSG_GET_REALM_HIDDEN_RESULT = 0x28B8,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D0,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BB,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2792,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x278E,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BA,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E5,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E6,
SMSG_GM_PLAYER_INFO = 0x3005,
SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB,
- SMSG_GM_TICKET_CASE_STATUS = 0x269C,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x269B,
- SMSG_GOD_MODE = 0x26F2,
+ SMSG_GM_TICKET_CASE_STATUS = 0x269F,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x269E,
+ SMSG_GOD_MODE = 0x26F6,
SMSG_GOSSIP_COMPLETE = 0x2A97,
SMSG_GOSSIP_MESSAGE = 0x2A98,
SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7,
- SMSG_GOSSIP_POI = 0x2787,
+ SMSG_GOSSIP_POI = 0x278B,
SMSG_GOSSIP_QUEST_UPDATE = 0x2A99,
SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6,
SMSG_GROUP_ACTION_THROTTLED = 0x258D,
- SMSG_GROUP_AUTO_KICK = 0x2784,
- SMSG_GROUP_DECLINE = 0x2780,
- SMSG_GROUP_DESTROYED = 0x2783,
- SMSG_GROUP_NEW_LEADER = 0x2626,
- SMSG_GROUP_REQUEST_DECLINE = 0x2781,
- SMSG_GROUP_UNINVITE = 0x2782,
+ SMSG_GROUP_AUTO_KICK = 0x2788,
+ SMSG_GROUP_DECLINE = 0x2784,
+ SMSG_GROUP_DESTROYED = 0x2787,
+ SMSG_GROUP_NEW_LEADER = 0x2629,
+ SMSG_GROUP_REQUEST_DECLINE = 0x2785,
+ SMSG_GROUP_UNINVITE = 0x2786,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1412,59 +1417,59 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26C8,
- SMSG_HIGHEST_THREAT_UPDATE = 0x26D0,
+ SMSG_HEALTH_UPDATE = 0x26CC,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x26D4,
SMSG_HOTFIX_CONNECT = 0x2911,
SMSG_HOTFIX_MESSAGE = 0x2910,
- SMSG_INITIALIZE_FACTIONS = 0x2719,
+ SMSG_INITIALIZE_FACTIONS = 0x271D,
SMSG_INITIAL_SETUP = 0x2580,
- SMSG_INIT_WORLD_STATES = 0x273B,
- SMSG_INSPECT_RESULT = 0x262A,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A2,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A1,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27AA,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A0,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27AC,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27AB,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27A5,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27A4,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27A9,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27AD,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27A6,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27A3,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27A8,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27A7,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F0,
- SMSG_INSTANCE_INFO = 0x262D,
- SMSG_INSTANCE_RESET = 0x267F,
- SMSG_INSTANCE_RESET_FAILED = 0x2680,
- SMSG_INSTANCE_SAVE_CREATED = 0x2771,
+ SMSG_INIT_WORLD_STATES = 0x273F,
+ SMSG_INSPECT_RESULT = 0x262D,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A6,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A5,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27AE,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A4,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B0,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27AF,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27A9,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27A8,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27AD,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B1,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27AA,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27A7,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27AC,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AB,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F4,
+ SMSG_INSTANCE_INFO = 0x2630,
+ SMSG_INSTANCE_RESET = 0x2682,
+ SMSG_INSTANCE_RESET_FAILED = 0x2683,
+ SMSG_INSTANCE_SAVE_CREATED = 0x2775,
SMSG_INTERRUPT_POWER_REGEN = 0x2C59,
SMSG_INVALIDATE_PAGE_TEXT = 0x2918,
SMSG_INVALIDATE_PLAYER = 0x2FFF,
- SMSG_INVALID_PROMOTION_CODE = 0x2748,
+ SMSG_INVALID_PROMOTION_CODE = 0x274C,
SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x2805,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x2816,
- SMSG_ISLAND_AZERITE_GAIN = 0x2751,
- SMSG_ISLAND_COMPLETE = 0x2752,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x2809,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x281A,
+ SMSG_ISLAND_AZERITE_GAIN = 0x2755,
+ SMSG_ISLAND_COMPLETE = 0x2756,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84,
- SMSG_ITEM_CHANGED = 0x26E1,
- SMSG_ITEM_COOLDOWN = 0x27B8,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274A,
+ SMSG_ITEM_CHANGED = 0x26E5,
+ SMSG_ITEM_COOLDOWN = 0x27BC,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274E,
SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259B,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x2861,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x2865,
SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x2599,
- SMSG_ITEM_PUSH_RESULT = 0x261C,
- SMSG_ITEM_TIME_UPDATE = 0x2749,
- SMSG_KICK_REASON = 0x2682,
- SMSG_LATENCY_REPORT_PING = 0x2873,
+ SMSG_ITEM_PUSH_RESULT = 0x261F,
+ SMSG_ITEM_TIME_UPDATE = 0x274D,
+ SMSG_KICK_REASON = 0x2685,
+ SMSG_LATENCY_REPORT_PING = 0x2877,
SMSG_LEARNED_SPELLS = 0x2C4D,
- SMSG_LEARN_PVP_TALENT_FAILED = 0x25D0,
- SMSG_LEARN_TALENT_FAILED = 0x25CF,
- SMSG_LEGACY_LOOT_RULES = 0x281B,
- SMSG_LEVEL_LINKING_RESULT = 0x2847,
- SMSG_LEVEL_UP_INFO = 0x26DF,
+ SMSG_LEARN_PVP_TALENT_FAILED = 0x25D3,
+ SMSG_LEARN_TALENT_FAILED = 0x25D2,
+ SMSG_LEGACY_LOOT_RULES = 0x281F,
+ SMSG_LEVEL_LINKING_RESULT = 0x284B,
+ SMSG_LEVEL_UP_INFO = 0x26E3,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B,
@@ -1492,48 +1497,48 @@ enum OpcodeServer : uint16
SMSG_LFG_SLOT_INVALID = 0x2A30,
SMSG_LFG_TELEPORT_DENIED = 0x2A32,
SMSG_LFG_UPDATE_STATUS = 0x2A24,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2763,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2762,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2757,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2764,
- SMSG_LOAD_CUF_PROFILES = 0x25B8,
- SMSG_LOAD_EQUIPMENT_SET = 0x2704,
- SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2888,
- SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x2889,
- SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x288A,
- SMSG_LOGIN_SET_TIME_SPEED = 0x2703,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2767,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2766,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2768,
+ SMSG_LOAD_CUF_PROFILES = 0x25BB,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2708,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x288C,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x288D,
+ SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x288E,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x2707,
SMSG_LOGIN_VERIFY_WORLD = 0x2596,
- SMSG_LOGOUT_CANCEL_ACK = 0x267E,
- SMSG_LOGOUT_COMPLETE = 0x267D,
- SMSG_LOGOUT_RESPONSE = 0x267C,
- SMSG_LOG_XP_GAIN = 0x26DB,
- SMSG_LOOT_ALL_PASSED = 0x261A,
- SMSG_LOOT_LIST = 0x2736,
- SMSG_LOOT_MONEY_NOTIFY = 0x2615,
- SMSG_LOOT_RELEASE = 0x2614,
- SMSG_LOOT_RELEASE_ALL = 0x2613,
- SMSG_LOOT_REMOVED = 0x260F,
- SMSG_LOOT_RESPONSE = 0x260E,
- SMSG_LOOT_ROLL = 0x2617,
- SMSG_LOOT_ROLLS_COMPLETE = 0x2619,
- SMSG_LOOT_ROLL_WON = 0x261B,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2669,
- SMSG_MAIL_COMMAND_RESULT = 0x2634,
- SMSG_MAIL_LIST_RESULT = 0x274B,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x274C,
- SMSG_MAP_OBJECTIVES_INIT = 0x294B,
- SMSG_MAP_OBJ_EVENTS = 0x25C2,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2618,
- SMSG_MEETING_STONE_FAILED = 0x288B,
+ SMSG_LOGOUT_CANCEL_ACK = 0x2681,
+ SMSG_LOGOUT_COMPLETE = 0x2680,
+ SMSG_LOGOUT_RESPONSE = 0x267F,
+ SMSG_LOG_XP_GAIN = 0x26DF,
+ SMSG_LOOT_ALL_PASSED = 0x261D,
+ SMSG_LOOT_LIST = 0x273A,
+ SMSG_LOOT_MONEY_NOTIFY = 0x2618,
+ SMSG_LOOT_RELEASE = 0x2617,
+ SMSG_LOOT_RELEASE_ALL = 0x2616,
+ SMSG_LOOT_REMOVED = 0x2612,
+ SMSG_LOOT_RESPONSE = 0x2611,
+ SMSG_LOOT_ROLL = 0x261A,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x261C,
+ SMSG_LOOT_ROLL_WON = 0x261E,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266C,
+ SMSG_MAIL_COMMAND_RESULT = 0x2637,
+ SMSG_MAIL_LIST_RESULT = 0x274F,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2750,
+ SMSG_MAP_OBJECTIVES_INIT = 0x294C,
+ SMSG_MAP_OBJ_EVENTS = 0x25C5,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261B,
+ SMSG_MEETING_STONE_FAILED = 0x288F,
SMSG_MESSAGE_BOX = 0x2576,
- SMSG_MINIMAP_PING = 0x26C5,
+ SMSG_MINIMAP_PING = 0x26C9,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
- SMSG_MISSILE_CANCEL = 0x25C3,
- SMSG_MODIFY_COOLDOWN = 0x2759,
+ SMSG_MISSILE_CANCEL = 0x25C6,
+ SMSG_MODIFY_COOLDOWN = 0x275D,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257B,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2837,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x283B,
SMSG_MOVE_ADD_IMPULSE = 0x2E32,
SMSG_MOVE_APPLY_INERTIA = 0x2E2E,
SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15,
@@ -1641,83 +1646,83 @@ 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 = 0x27D1,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D0,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2606,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x2608,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260B,
- SMSG_MYTHIC_PLUS_SEASON_DATA = 0x2607,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D7,
- SMSG_NEW_DATA_BUILD = 0x28B3,
- SMSG_NEW_TAXI_PATH = 0x2677,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D5,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D4,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2609,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260B,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260E,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260A,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DA,
+ SMSG_NEW_DATA_BUILD = 0x28B7,
+ SMSG_NEW_TAXI_PATH = 0x267A,
SMSG_NEW_WORLD = 0x2593,
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A3,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A6,
SMSG_NOTIFY_MONEY = 0x2598,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x2635,
- SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2882,
- SMSG_OFFER_PETITION_ERROR = 0x26AE,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26DC,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x2638,
+ SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2886,
+ SMSG_OFFER_PETITION_ERROR = 0x26B1,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E0,
SMSG_ON_MONSTER_MOVE = 0x2DD4,
- SMSG_OPEN_ARTIFACT_FORGE = 0x2793,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x2797,
SMSG_OPEN_CONTAINER = 0x2DA6,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x278B,
- SMSG_OVERRIDE_LIGHT = 0x26B3,
- SMSG_PAGE_TEXT = 0x270F,
- SMSG_PARTY_COMMAND_RESULT = 0x2785,
- SMSG_PARTY_INVITE = 0x25B9,
- SMSG_PARTY_KILL_LOG = 0x274F,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x274E,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x274D,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2867,
- SMSG_PARTY_UPDATE = 0x25EF,
- SMSG_PAST_TIME_EVENTS = 0x25BE,
- SMSG_PAUSE_MIRROR_TIMER = 0x2706,
- SMSG_PENDING_RAID_LOCK = 0x26EE,
- SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x287E,
- SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x2879,
- SMSG_PERKS_PROGRAM_DISABLED = 0x287F,
- SMSG_PERKS_PROGRAM_RESULT = 0x287B,
- SMSG_PERKS_PROGRAM_VENDOR_PENDING = 0x287A,
- SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x2878,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x278F,
+ SMSG_OVERRIDE_LIGHT = 0x26B6,
+ SMSG_PAGE_TEXT = 0x2713,
+ SMSG_PARTY_COMMAND_RESULT = 0x2789,
+ SMSG_PARTY_INVITE = 0x25BC,
+ SMSG_PARTY_KILL_LOG = 0x2753,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x2752,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2751,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x286B,
+ SMSG_PARTY_UPDATE = 0x25F2,
+ SMSG_PAST_TIME_EVENTS = 0x25C1,
+ SMSG_PAUSE_MIRROR_TIMER = 0x270A,
+ SMSG_PENDING_RAID_LOCK = 0x26F2,
+ SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2882,
+ SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x287D,
+ SMSG_PERKS_PROGRAM_DISABLED = 0x2883,
+ SMSG_PERKS_PROGRAM_RESULT = 0x287F,
+ SMSG_PERKS_PROGRAM_VENDOR_PENDING = 0x287E,
+ SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x287C,
SMSG_PETITION_ALREADY_SIGNED = 0x259E,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA,
- SMSG_PETITION_SHOW_LIST = 0x26B6,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26B7,
- SMSG_PETITION_SIGN_RESULTS = 0x2741,
- SMSG_PET_ACTION_FEEDBACK = 0x273E,
- SMSG_PET_ACTION_SOUND = 0x2699,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25FD,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x266E,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F6,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x25FB,
- SMSG_PET_BATTLE_FINISHED = 0x25FC,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x25F8,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F7,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x25FE,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F5,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2632,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x2633,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FA,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F4,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x25F9,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E7,
+ SMSG_PETITION_SHOW_LIST = 0x26B9,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26BA,
+ SMSG_PETITION_SIGN_RESULTS = 0x2745,
+ SMSG_PET_ACTION_FEEDBACK = 0x2742,
+ SMSG_PET_ACTION_SOUND = 0x269C,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2600,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2671,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F9,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x25FE,
+ SMSG_PET_BATTLE_FINISHED = 0x25FF,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x25FB,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FA,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2601,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F8,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2635,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x2636,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FD,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F7,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x25FC,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EA,
SMSG_PET_CAST_FAILED = 0x2C58,
SMSG_PET_CLEAR_SPELLS = 0x2C21,
- SMSG_PET_DISMISS_SOUND = 0x269A,
- SMSG_PET_GOD_MODE = 0x2674,
- SMSG_PET_GUIDS = 0x26FA,
+ SMSG_PET_DISMISS_SOUND = 0x269D,
+ SMSG_PET_GOD_MODE = 0x2677,
+ SMSG_PET_GUIDS = 0x26FE,
SMSG_PET_LEARNED_SPELLS = 0x2C4F,
SMSG_PET_MODE = 0x2588,
- SMSG_PET_NAME_INVALID = 0x26BB,
+ SMSG_PET_NAME_INVALID = 0x26BE,
SMSG_PET_NEWLY_TAMED = 0x2587,
SMSG_PET_SPELLS_MESSAGE = 0x2C22,
SMSG_PET_STABLE_RESULT = 0x2592,
- SMSG_PET_TAME_FAILURE = 0x26AB,
+ SMSG_PET_TAME_FAILURE = 0x26AE,
SMSG_PET_UNLEARNED_SPELLS = 0x2C50,
SMSG_PHASE_SHIFT_CHANGE = 0x2578,
- SMSG_PLAYED_TIME = 0x26CC,
+ SMSG_PLAYED_TIME = 0x26D0,
SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x3022,
SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014,
SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013,
@@ -1737,34 +1742,34 @@ enum OpcodeServer : uint16
SMSG_PLAYER_SKINNED = 0x3006,
SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D,
SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C,
- SMSG_PLAY_MUSIC = 0x275E,
- SMSG_PLAY_OBJECT_SOUND = 0x275F,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2726,
+ SMSG_PLAY_MUSIC = 0x2762,
+ SMSG_PLAY_OBJECT_SOUND = 0x2763,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272A,
SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47,
- SMSG_PLAY_SCENE = 0x262F,
- SMSG_PLAY_SOUND = 0x275D,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x2760,
+ SMSG_PLAY_SCENE = 0x2632,
+ SMSG_PLAY_SOUND = 0x2761,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x2764,
SMSG_PLAY_SPELL_VISUAL = 0x2C45,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49,
- SMSG_PLAY_TIME_WARNING = 0x26F4,
+ SMSG_PLAY_TIME_WARNING = 0x26F8,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x26C9,
+ SMSG_POWER_UPDATE = 0x26CD,
SMSG_PRELOAD_CHILD_MAP = 0x2579,
SMSG_PRELOAD_WORLD = 0x2594,
- SMSG_PREPOPULATE_NAME_CACHE = 0x283A,
- SMSG_PRE_RESSURECT = 0x275C,
- SMSG_PRINT_NOTIFICATION = 0x25C6,
- SMSG_PROC_RESIST = 0x2750,
- SMSG_PROFESSION_GOSSIP = 0x27F1,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x283E,
+ SMSG_PRE_RESSURECT = 0x2760,
+ SMSG_PRINT_NOTIFICATION = 0x25C9,
+ SMSG_PROC_RESIST = 0x2754,
+ SMSG_PROFESSION_GOSSIP = 0x27F5,
SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51,
- SMSG_PVP_CREDIT = 0x2945,
- SMSG_PVP_MATCH_COMPLETE = 0x2950,
- SMSG_PVP_MATCH_INITIALIZE = 0x2951,
- SMSG_PVP_MATCH_SET_STATE = 0x294F,
- SMSG_PVP_MATCH_START = 0x294E,
+ SMSG_PVP_CREDIT = 0x2946,
+ SMSG_PVP_MATCH_COMPLETE = 0x2951,
+ SMSG_PVP_MATCH_INITIALIZE = 0x2952,
+ SMSG_PVP_MATCH_SET_STATE = 0x2950,
+ SMSG_PVP_MATCH_START = 0x294F,
SMSG_PVP_MATCH_STATISTICS = 0x2932,
- SMSG_PVP_OPTIONS_ENABLED = 0x2934,
- SMSG_PVP_TIER_RECORD = 0x2874,
+ SMSG_PVP_OPTIONS_ENABLED = 0x2935,
+ SMSG_PVP_TIER_RECORD = 0x2878,
SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A,
SMSG_QUERY_CREATURE_RESPONSE = 0x2914,
SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915,
@@ -1780,7 +1785,7 @@ enum OpcodeServer : uint16
SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96,
SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6,
- SMSG_QUERY_TIME_RESPONSE = 0x26DA,
+ SMSG_QUERY_TIME_RESPONSE = 0x26DE,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F,
SMSG_QUEST_FORCE_REMOVED = 0x2A9C,
@@ -1799,137 +1804,139 @@ enum OpcodeServer : uint16
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D,
SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F,
SMSG_QUEST_PUSH_RESULT = 0x2A90,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x285D,
- SMSG_QUEST_SESSION_READY_CHECK = 0x284B,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x284C,
- SMSG_QUEST_SESSION_RESULT = 0x284A,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2861,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x284F,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2850,
+ SMSG_QUEST_SESSION_RESULT = 0x284E,
SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C,
SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D,
SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E,
SMSG_QUEST_UPDATE_COMPLETE = 0x2A89,
SMSG_QUEST_UPDATE_FAILED = 0x2A8A,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B,
- SMSG_QUEUE_SUMMARY_UPDATE = 0x2804,
- SMSG_RAF_ACCOUNT_INFO = 0x2848,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2859,
- SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B0,
- SMSG_RAID_DIFFICULTY_SET = 0x279D,
- SMSG_RAID_GROUP_ONLY = 0x279F,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x2808,
+ SMSG_RAF_ACCOUNT_INFO = 0x284C,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x285D,
+ SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B4,
+ SMSG_RAID_DIFFICULTY_SET = 0x27A1,
+ SMSG_RAID_GROUP_ONLY = 0x27A3,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
SMSG_RAID_MARKERS_CHANGED = 0x259F,
- SMSG_RANDOM_ROLL = 0x2629,
+ SMSG_RANDOM_ROLL = 0x262C,
SMSG_RATED_PVP_INFO = 0x2931,
- SMSG_READY_CHECK_COMPLETED = 0x25F3,
- SMSG_READY_CHECK_RESPONSE = 0x25F2,
- SMSG_READY_CHECK_STARTED = 0x25F1,
- SMSG_READ_ITEM_RESULT_FAILED = 0x2799,
- SMSG_READ_ITEM_RESULT_OK = 0x2790,
- SMSG_REALM_LOOKUP_INFO = 0x27BC,
+ SMSG_READY_CHECK_COMPLETED = 0x25F6,
+ SMSG_READY_CHECK_RESPONSE = 0x25F5,
+ SMSG_READY_CHECK_STARTED = 0x25F4,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x279D,
+ SMSG_READ_ITEM_RESULT_OK = 0x2794,
+ SMSG_REALM_LOOKUP_INFO = 0x27C0,
SMSG_REALM_QUERY_RESPONSE = 0x2913,
- SMSG_REATTACH_RESURRECT = 0x2740,
- SMSG_RECRAFT_ITEM_RESULT = 0x289F,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26B8,
- SMSG_REFRESH_COMPONENT = 0x264A,
+ SMSG_REATTACH_RESURRECT = 0x2744,
+ SMSG_RECEIVE_PING_UNIT = 0x25A0,
+ SMSG_RECEIVE_PING_WORLD_POINT = 0x25A1,
+ SMSG_RECRAFT_ITEM_RESULT = 0x28A3,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BB,
+ SMSG_REFRESH_COMPONENT = 0x264D,
SMSG_REFRESH_SPELL_HISTORY = 0x2C29,
- SMSG_REMOVE_ITEM_PASSIVE = 0x25A7,
+ SMSG_REMOVE_ITEM_PASSIVE = 0x25AA,
SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C52,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x27B5,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27B9,
SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x258E,
- SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2935,
- SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2936,
+ SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2936,
+ SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2937,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26AF,
- SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28A5,
+ SMSG_RESET_FAILED_NOTIFY = 0x26B2,
+ SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28A9,
SMSG_RESET_QUEST_POI = 0x2AA0,
- SMSG_RESET_RANGED_COMBAT_TIMER = 0x2944,
+ SMSG_RESET_RANGED_COMBAT_TIMER = 0x2945,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
- SMSG_RESPEC_WIPE_CONFIRM = 0x260C,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x260F,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572,
- SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x287C,
- SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x287D,
+ SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x2880,
+ SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2881,
SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C61,
- SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B5,
+ SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B8,
SMSG_RESUME_CAST = 0x2C3B,
SMSG_RESUME_CAST_BAR = 0x2C3E,
SMSG_RESUME_COMMS = 0x304B,
- SMSG_RESUME_TOKEN = 0x25A5,
+ SMSG_RESUME_TOKEN = 0x25A8,
SMSG_RESURRECT_REQUEST = 0x257E,
SMSG_RESYNC_RUNES = 0x2C5F,
- SMSG_RETURNING_PLAYER_PROMPT = 0x2798,
- SMSG_RETURN_APPLICANT_LIST = 0x283E,
- SMSG_RETURN_RECRUITING_CLUBS = 0x283D,
+ SMSG_RETURNING_PLAYER_PROMPT = 0x279C,
+ SMSG_RETURN_APPLICANT_LIST = 0x2842,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x2841,
SMSG_ROLE_CHANGED_INFORM = 0x258A,
SMSG_ROLE_CHOSEN = 0x2A39,
SMSG_ROLE_POLL_INFORM = 0x258B,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F0,
- SMSG_RUNE_REGEN_DEBUG = 0x25B2,
- SMSG_SCENARIO_COMPLETED = 0x27DE,
- SMSG_SCENARIO_POIS = 0x262C,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x2625,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x27F4,
- SMSG_SCENARIO_STATE = 0x2624,
- SMSG_SCENARIO_UI_UPDATE = 0x27F3,
- SMSG_SCENARIO_VACATE = 0x279A,
- SMSG_SCENE_OBJECT_EVENT = 0x25DD,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E2,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E3,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25DF,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DE,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E1,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E0,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F4,
+ SMSG_RUNE_REGEN_DEBUG = 0x25B5,
+ SMSG_SCENARIO_COMPLETED = 0x27E2,
+ SMSG_SCENARIO_POIS = 0x262F,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x2628,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x27F8,
+ SMSG_SCENARIO_STATE = 0x2627,
+ SMSG_SCENARIO_UI_UPDATE = 0x27F7,
+ SMSG_SCENARIO_VACATE = 0x279E,
+ SMSG_SCENE_OBJECT_EVENT = 0x25E0,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E5,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E6,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E2,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E1,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E4,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E3,
SMSG_SCRIPT_CAST = 0x2C56,
- SMSG_SEASON_INFO = 0x25BD,
- SMSG_SELL_RESPONSE = 0x26BC,
- SMSG_SEND_ITEM_PASSIVES = 0x25A8,
+ SMSG_SEASON_INFO = 0x25C0,
+ SMSG_SELL_RESPONSE = 0x26BF,
+ SMSG_SEND_ITEM_PASSIVES = 0x25AB,
SMSG_SEND_KNOWN_SPELLS = 0x2C27,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2627,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2628,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262A,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262B,
SMSG_SEND_SPELL_CHARGES = 0x2C2A,
SMSG_SEND_SPELL_HISTORY = 0x2C28,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2B,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2647,
- SMSG_SERVER_TIME = 0x267B,
- SMSG_SERVER_TIME_OFFSET = 0x270A,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264A,
+ SMSG_SERVER_TIME = 0x267E,
+ SMSG_SERVER_TIME_OFFSET = 0x270E,
SMSG_SETUP_CURRENCY = 0x2573,
- SMSG_SET_AI_ANIM_KIT = 0x2725,
- SMSG_SET_ANIM_TIER = 0x2729,
- SMSG_SET_CHR_UPGRADE_TIER = 0x25DA,
+ SMSG_SET_AI_ANIM_KIT = 0x2729,
+ SMSG_SET_ANIM_TIER = 0x272D,
+ SMSG_SET_CHR_UPGRADE_TIER = 0x25DD,
SMSG_SET_CURRENCY = 0x2574,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x269D,
- SMSG_SET_FACTION_AT_WAR = 0x26F6,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x2720,
- SMSG_SET_FACTION_STANDING = 0x2721,
- SMSG_SET_FACTION_VISIBLE = 0x271F,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x26A0,
+ SMSG_SET_FACTION_AT_WAR = 0x26FA,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x2724,
+ SMSG_SET_FACTION_STANDING = 0x2725,
+ SMSG_SET_FACTION_VISIBLE = 0x2723,
SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
- SMSG_SET_FORCED_REACTIONS = 0x2713,
+ SMSG_SET_FORCED_REACTIONS = 0x2717,
SMSG_SET_ITEM_PURCHASE_DATA = 0x259A,
- SMSG_SET_LOOT_METHOD_FAILED = 0x27C2,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x27C6,
SMSG_SET_MAX_WEEKLY_QUANTITY = 0x259D,
- SMSG_SET_MELEE_ANIM_KIT = 0x2728,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x2727,
+ SMSG_SET_MELEE_ANIM_KIT = 0x272C,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x272B,
SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
- SMSG_SET_PET_SPECIALIZATION = 0x261E,
+ SMSG_SET_PET_SPECIALIZATION = 0x2621,
SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003,
- SMSG_SET_PLAY_HOVER_ANIM = 0x25B6,
- SMSG_SET_PROFICIENCY = 0x272A,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2851,
+ SMSG_SET_PLAY_HOVER_ANIM = 0x25B9,
+ SMSG_SET_PROFICIENCY = 0x272E,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2855,
SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998,
SMSG_SET_SPELL_CHARGES = 0x2C26,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x2670,
- SMSG_SET_VEHICLE_REC_ID = 0x26ED,
- SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2881,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x2673,
+ SMSG_SET_VEHICLE_REC_ID = 0x26F1,
+ SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2885,
SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2999,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D6,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D9,
SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95,
- SMSG_SHOW_TAXI_NODES = 0x26C4,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2765,
- SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x288C,
- SMSG_SOCKET_GEMS_FAILURE = 0x271D,
- SMSG_SOCKET_GEMS_SUCCESS = 0x271C,
- SMSG_SPECIAL_MOUNT_ANIM = 0x2698,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x270E,
+ SMSG_SHOW_TAXI_NODES = 0x26C8,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2769,
+ SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2890,
+ SMSG_SOCKET_GEMS_FAILURE = 0x2721,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x2720,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x269B,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2712,
SMSG_SPELL_ABSORB_LOG = 0x2C1C,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C16,
SMSG_SPELL_CHANNEL_START = 0x2C31,
@@ -1957,93 +1964,94 @@ enum OpcodeServer : uint16
SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C18,
SMSG_SPELL_PREPARE = 0x2C38,
SMSG_SPELL_START = 0x2C3A,
- SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25C8,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2863,
- SMSG_STAND_STATE_UPDATE = 0x2712,
- SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25CE,
- SMSG_START_ELAPSED_TIMER = 0x25FF,
- SMSG_START_ELAPSED_TIMERS = 0x2601,
- SMSG_START_LIGHTNING_STORM = 0x26A0,
- SMSG_START_LOOT_ROLL = 0x2616,
- SMSG_START_MIRROR_TIMER = 0x2705,
- SMSG_START_TIMER = 0x25A1,
- SMSG_STOP_ELAPSED_TIMER = 0x2600,
- SMSG_STOP_MIRROR_TIMER = 0x2707,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x2761,
- SMSG_STOP_TIMER = 0x25A2,
- SMSG_STREAMING_MOVIES = 0x25A0,
- SMSG_SUGGEST_INVITE_INFORM = 0x2786,
- SMSG_SUMMON_CANCEL = 0x26A9,
+ SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CB,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2867,
+ SMSG_STAND_STATE_UPDATE = 0x2716,
+ SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D1,
+ SMSG_START_ELAPSED_TIMER = 0x2602,
+ SMSG_START_ELAPSED_TIMERS = 0x2604,
+ SMSG_START_LIGHTNING_STORM = 0x26A3,
+ SMSG_START_LOOT_ROLL = 0x2619,
+ SMSG_START_MIRROR_TIMER = 0x2709,
+ SMSG_START_TIMER = 0x25A4,
+ SMSG_STOP_ELAPSED_TIMER = 0x2603,
+ SMSG_STOP_MIRROR_TIMER = 0x270B,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x2765,
+ SMSG_STOP_TIMER = 0x25A5,
+ SMSG_STREAMING_MOVIES = 0x25A3,
+ SMSG_SUGGEST_INVITE_INFORM = 0x278A,
+ SMSG_SUMMON_CANCEL = 0x26AC,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258C,
- SMSG_SUMMON_REQUEST = 0x2717,
+ SMSG_SUMMON_REQUEST = 0x271B,
SMSG_SUPERCEDED_SPELLS = 0x2C4C,
SMSG_SUSPEND_COMMS = 0x304A,
- SMSG_SUSPEND_TOKEN = 0x25A4,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x285B,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x270D,
- SMSG_TAXI_NODE_STATUS = 0x2675,
- SMSG_TEXT_EMOTE = 0x2673,
- SMSG_THREAT_CLEAR = 0x26D3,
- SMSG_THREAT_REMOVE = 0x26D2,
- SMSG_THREAT_UPDATE = 0x26D1,
+ SMSG_SUSPEND_TOKEN = 0x25A7,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x285F,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2711,
+ SMSG_TAXI_NODE_STATUS = 0x2678,
+ SMSG_TEXT_EMOTE = 0x2676,
+ SMSG_THREAT_CLEAR = 0x26D7,
+ SMSG_THREAT_REMOVE = 0x26D6,
+ SMSG_THREAT_UPDATE = 0x26D5,
SMSG_TIME_ADJUSTMENT = 0x2DD3,
SMSG_TIME_SYNC_REQUEST = 0x2DD2,
- SMSG_TITLE_EARNED = 0x26CE,
- SMSG_TITLE_LOST = 0x26CF,
- SMSG_TOTEM_CREATED = 0x26BF,
- SMSG_TOTEM_DURATION_CHANGED = 0x26C0,
- SMSG_TOTEM_MOVED = 0x26C1,
+ SMSG_TITLE_EARNED = 0x26D2,
+ SMSG_TITLE_LOST = 0x26D3,
+ SMSG_TOTEM_CREATED = 0x26C2,
+ SMSG_TOTEM_DURATION_CHANGED = 0x26C4,
+ SMSG_TOTEM_MOVED = 0x26C5,
+ SMSG_TOTEM_REMOVED = 0x26C3,
SMSG_TRADE_STATUS = 0x2582,
SMSG_TRADE_UPDATED = 0x2581,
- SMSG_TRAINER_BUY_FAILED = 0x26D6,
- SMSG_TRAINER_LIST = 0x26D5,
- SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25CD,
- SMSG_TRANSFER_ABORTED = 0x26F9,
- SMSG_TRANSFER_PENDING = 0x25C9,
+ SMSG_TRAINER_BUY_FAILED = 0x26DA,
+ SMSG_TRAINER_LIST = 0x26D9,
+ SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D0,
+ SMSG_TRANSFER_ABORTED = 0x26FD,
+ SMSG_TRANSFER_PENDING = 0x25CC,
SMSG_TREASURE_PICKER_RESPONSE = 0x291F,
- SMSG_TRIGGER_CINEMATIC = 0x27BA,
- SMSG_TRIGGER_MOVIE = 0x26C2,
- SMSG_TURN_IN_PETITION_RESULT = 0x2743,
- SMSG_TUTORIAL_FLAGS = 0x27AE,
+ SMSG_TRIGGER_CINEMATIC = 0x27BE,
+ SMSG_TRIGGER_MOVIE = 0x26C6,
+ SMSG_TURN_IN_PETITION_RESULT = 0x2747,
+ SMSG_TUTORIAL_FLAGS = 0x27B2,
SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27BD,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27BE,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C1,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C2,
SMSG_UNLEARNED_SPELLS = 0x2C4E,
SMSG_UNLOAD_CHILD_MAP = 0x257A,
- SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2875,
- SMSG_UPDATE_ACCOUNT_DATA = 0x26FF,
- SMSG_UPDATE_ACTION_BUTTONS = 0x25DB,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x2815,
+ SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2879,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x2703,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x25DE,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x2819,
SMSG_UPDATE_CAPTURE_POINT = 0x2929,
- SMSG_UPDATE_CELESTIAL_BODY = 0x2811,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x27B4,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x275B,
- SMSG_UPDATE_COOLDOWN = 0x275A,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x2815,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27B8,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x275F,
+ SMSG_UPDATE_COOLDOWN = 0x275E,
SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996,
SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x263F,
- SMSG_UPDATE_GAME_TIME_STATE = 0x2818,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A2,
- SMSG_UPDATE_LAST_INSTANCE = 0x2681,
- SMSG_UPDATE_OBJECT = 0x27BB,
- SMSG_UPDATE_PRIMARY_SPEC = 0x25D3,
- SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F0,
- SMSG_UPDATE_TALENT_DATA = 0x25D2,
- SMSG_UPDATE_WORLD_STATE = 0x273D,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x2642,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x281C,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A5,
+ SMSG_UPDATE_LAST_INSTANCE = 0x2684,
+ SMSG_UPDATE_OBJECT = 0x27BF,
+ SMSG_UPDATE_PRIMARY_SPEC = 0x25D6,
+ SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F3,
+ SMSG_UPDATE_TALENT_DATA = 0x25D5,
+ SMSG_UPDATE_WORLD_STATE = 0x2741,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x2744,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x280C,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x280A,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2809,
- SMSG_VAS_PURCHASE_COMPLETE = 0x27E4,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E3,
- SMSG_VENDOR_INVENTORY = 0x25B4,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x2748,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2810,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x280E,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x280D,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x27E8,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E7,
+ SMSG_VENDOR_INVENTORY = 0x25B7,
SMSG_VIGNETTE_UPDATE = 0x3008,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2810,
- SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x286F,
- SMSG_VOICE_LOGIN_RESPONSE = 0x280F,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2814,
+ SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2873,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x2813,
SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4,
SMSG_VOID_STORAGE_CONTENTS = 0x2DA1,
SMSG_VOID_STORAGE_FAILED = 0x2DA0,
@@ -2052,27 +2060,28 @@ enum OpcodeServer : uint16
SMSG_WAIT_QUEUE_FINISH = 0x256F,
SMSG_WAIT_QUEUE_UPDATE = 0x256E,
SMSG_WARDEN3_DATA = 0x2577,
- SMSG_WARDEN3_DISABLED = 0x2813,
- SMSG_WARDEN3_ENABLED = 0x2812,
- SMSG_WARFRONT_COMPLETE = 0x2753,
+ SMSG_WARDEN3_DISABLED = 0x2817,
+ SMSG_WARDEN3_ENABLED = 0x2816,
+ SMSG_WARFRONT_COMPLETE = 0x2757,
+ SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x2934,
SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933,
- SMSG_WEATHER = 0x269F,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2866,
- SMSG_WEEKLY_REWARDS_RESULT = 0x2864,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2865,
+ SMSG_WEATHER = 0x26A2,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286A,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x2868,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2869,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x269E,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2817,
+ SMSG_WHO_IS = 0x26A1,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281B,
SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F,
- SMSG_WORLD_SERVER_INFO = 0x25A9,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x285C,
- SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A4,
- SMSG_XP_GAIN_ABORTED = 0x25C5,
- SMSG_XP_GAIN_ENABLED = 0x279E,
+ SMSG_WORLD_SERVER_INFO = 0x25AC,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2860,
+ SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A8,
+ SMSG_XP_GAIN_ABORTED = 0x25C8,
+ SMSG_XP_GAIN_ENABLED = 0x27A2,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
- SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25AD, // no client handler
+ SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25B0, // no client handler
SMSG_COMPRESSED_PACKET = 0x3052,
SMSG_MULTIPLE_PACKETS = 0x3051,
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index d1d552c368f..08a064b51eb 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -633,6 +633,8 @@ enum AuraType : uint32
SPELL_AURA_ALLOW_MOUNT_IN_COMBAT = 539,
SPELL_AURA_MOD_SUPPORT_STAT = 540, // NYI
SPELL_AURA_MOD_REQUIRED_MOUNT_CAPABILITY_FLAGS = 541,
+ SPELL_AURA_542 = 542,
+ SPELL_AURA_543 = 543,
TOTAL_AURAS
};
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 6b008d36f06..9ad9cc23074 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -609,6 +609,8 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNoImmediateEffect, //539 SPELL_AURA_ALLOW_MOUNT_IN_COMBAT implemented in SpellInfo::CanBeUsedInCombat
&AuraEffect::HandleNULL, //540 SPELL_AURA_MOD_SUPPORT_STAT
&AuraEffect::HandleModRequiredMountCapabilityFlags, //541 SPELL_AURA_MOD_REQUIRED_MOUNT_CAPABILITY_FLAGS
+ &AuraEffect::HandleNULL, //542
+ &AuraEffect::HandleNULL, //543
};
AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, int32 const* baseAmount, Unit* caster) :
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 6e5fc130645..19a68fa341d 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -144,7 +144,7 @@ SpellCastTargets::SpellCastTargets(Unit* caster, WorldPackets::Spells::SpellCast
else
pos = &m_src._position;
- pos->Relocate(spellCastRequest.Target.SrcLocation->Location);
+ pos->Relocate(spellCastRequest.Target.SrcLocation->Location.Pos);
if (spellCastRequest.Target.Orientation)
pos->SetOrientation(*spellCastRequest.Target.Orientation);
}
@@ -158,7 +158,7 @@ SpellCastTargets::SpellCastTargets(Unit* caster, WorldPackets::Spells::SpellCast
else
pos = &m_dst._position;
- pos->Relocate(spellCastRequest.Target.DstLocation->Location);
+ pos->Relocate(spellCastRequest.Target.DstLocation->Location.Pos);
if (spellCastRequest.Target.Orientation)
pos->SetOrientation(*spellCastRequest.Target.Orientation);
}
@@ -4734,7 +4734,7 @@ void Spell::SendSpellStart()
}
if (castFlags & CAST_FLAG_PROJECTILE)
- UpdateSpellCastDataAmmo(castData.Ammo);
+ castData.AmmoDisplayID = GetSpellCastDataAmmo();
if (castFlags & CAST_FLAG_IMMUNITY)
{
@@ -4883,7 +4883,7 @@ void Spell::UpdateSpellCastDataTargets(WorldPackets::Spells::SpellCastData& data
m_channelTargetEffectMask = 0;
}
-void Spell::UpdateSpellCastDataAmmo(WorldPackets::Spells::SpellAmmo& ammo)
+int32 Spell::GetSpellCastDataAmmo()
{
uint32 ammoInventoryType = 0;
uint32 ammoDisplayID = 0;
@@ -4950,8 +4950,7 @@ void Spell::UpdateSpellCastDataAmmo(WorldPackets::Spells::SpellAmmo& ammo)
}
}
- ammo.DisplayID = ammoDisplayID;
- ammo.InventoryType = ammoInventoryType;
+ return ammoDisplayID;
}
void Spell::SendSpellExecuteLog()
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index 29f7b61fb62..3b3c37f4a80 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -32,7 +32,6 @@ namespace WorldPackets
{
namespace Spells
{
- struct SpellAmmo;
struct SpellCastData;
}
}
@@ -887,7 +886,7 @@ class TC_GAME_API Spell
void CalculateJumpSpeeds(SpellEffectInfo const* effInfo, float dist, float& speedXY, float& speedZ);
void UpdateSpellCastDataTargets(WorldPackets::Spells::SpellCastData& data);
- void UpdateSpellCastDataAmmo(WorldPackets::Spells::SpellAmmo& data);
+ int32 GetSpellCastDataAmmo();
SpellCastResult CanOpenLock(SpellEffectInfo const& effect, uint32 lockid, SkillType& skillid, int32& reqSkillValue, int32& skillValue);
// -------------------------------------------
diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h
index cc9565e8c3d..3cb50dea4c9 100644
--- a/src/tools/map_extractor/loadlib/DBFilesClientList.h
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -172,6 +172,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 3593032, "ChrCustomizationDisplayInfo.db2" },
{ 3512765, "ChrCustomizationElement.db2" },
{ 3456171, "ChrCustomizationGeoset.db2" },
+ { 5347591, "ChrCustomizationGlyphPet.db2" },
{ 3459652, "ChrCustomizationMaterial.db2" },
{ 3384247, "ChrCustomizationOption.db2" },
{ 3450453, "ChrCustomizationReq.db2" },
@@ -186,6 +187,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 3490304, "ChrRaceXChrModel.db2" },
{ 1305311, "ChrRaces.db2" },
{ 4566929, "ChrRacesCreateScreenIcon.db2" },
+ { 5320971, "ChrRacesPing.db2" },
{ 4195187, "ChrSelectBackgroundCDI.db2" },
{ 1343390, "ChrSpecialization.db2" },
{ 984529, "ChrUpgradeBucket.db2" },
@@ -618,6 +620,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 4694317, "PerksActivityTag.db2" },
{ 4519767, "PerksActivityThreshold.db2" },
{ 4519768, "PerksActivityThresholdGroup.db2" },
+ { 5330797, "PerksActivityXHolidays.db2" },
{ 4519781, "PerksActivityXInterval.db2" },
{ 4694318, "PerksActivityXTag.db2" },
{ 4281310, "PerksVendorCategory.db2" },
@@ -627,6 +630,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1348558, "Phase.db2" },
{ 1267336, "PhaseShiftZoneSounds.db2" },
{ 987581, "PhaseXPhaseGroup.db2" },
+ { 5152358, "PingType.db2" },
{ 1045411, "PlayerCondition.db2" },
{ 1251523, "Positioner.db2" },
{ 1251506, "PositionerState.db2" },