diff options
25 files changed, 1311 insertions, 964 deletions
diff --git a/sql/updates/characters/master/2020_02_17_00_characters.sql b/sql/updates/characters/master/2020_02_17_00_characters.sql new file mode 100644 index 00000000000..171f0461235 --- /dev/null +++ b/sql/updates/characters/master/2020_02_17_00_characters.sql @@ -0,0 +1 @@ +UPDATE `character_inventory` SET `slot`=`slot`+4 WHERE `slot`>=47 AND `bag`=0;
diff --git a/sql/updates/world/master/2020_02_17_00_world.sql b/sql/updates/world/master/2020_02_17_00_world.sql new file mode 100644 index 00000000000..08401456442 --- /dev/null +++ b/sql/updates/world/master/2020_02_17_00_world.sql @@ -0,0 +1,223 @@ +DROP TABLE IF EXISTS `class_expansion_requirement`; +CREATE TABLE `class_expansion_requirement` ( + `ClassID` tinyint(3) unsigned NOT NULL, + `RaceID` tinyint(3) unsigned NOT NULL, + `ActiveExpansionLevel` tinyint(3) unsigned DEFAULT '0', + `AccountExpansionLevel` tinyint(3) unsigned DEFAULT '0', + PRIMARY KEY (`ClassID`,`RaceID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Dumping data for table `class_expansion_requirement` +-- +INSERT INTO `class_expansion_requirement` VALUES +(1,1,0,0), +(1,2,0,0), +(1,3,0,0), +(1,4,0,0), +(1,5,0,0), +(1,6,0,0), +(1,7,0,0), +(1,8,0,0), +(1,9,0,0), +(1,10,0,0), +(1,11,0,0), +(1,22,0,0), +(1,24,0,0), +(1,25,0,0), +(1,26,0,0), +(1,27,0,0), +(1,28,0,0), +(1,29,0,0), +(1,30,0,0), +(1,31,0,0), +(1,32,0,0), +(1,34,0,0), +(1,35,0,0), +(1,36,0,0), +(1,37,0,0), +(2,1,0,0), +(2,3,0,0), +(2,6,0,0), +(2,10,0,0), +(2,11,0,0), +(2,30,0,0), +(2,31,0,0), +(2,34,0,0), +(3,1,0,0), +(3,2,0,0), +(3,3,0,0), +(3,4,0,0), +(3,5,0,0), +(3,6,0,0), +(3,7,0,0), +(3,8,0,0), +(3,9,0,0), +(3,10,0,0), +(3,11,0,0), +(3,22,0,0), +(3,24,0,0), +(3,25,0,0), +(3,26,0,0), +(3,27,0,0), +(3,28,0,0), +(3,29,0,0), +(3,30,0,0), +(3,31,0,0), +(3,32,0,0), +(3,34,0,0), +(3,35,0,0), +(3,36,0,0), +(3,37,0,0), +(4,1,0,0), +(4,2,0,0), +(4,3,0,0), +(4,4,0,0), +(4,5,0,0), +(4,7,0,0), +(4,8,0,0), +(4,9,0,0), +(4,10,0,0), +(4,22,0,0), +(4,24,0,0), +(4,25,0,0), +(4,26,0,0), +(4,27,0,0), +(4,29,0,0), +(4,31,0,0), +(4,32,0,0), +(4,34,0,0), +(4,35,0,0), +(4,36,0,0), +(4,37,0,0), +(5,1,0,0), +(5,3,0,0), +(5,4,0,0), +(5,5,0,0), +(5,6,0,0), +(5,7,0,0), +(5,8,0,0), +(5,9,0,0), +(5,10,0,0), +(5,11,0,0), +(5,22,0,0), +(5,24,0,0), +(5,25,0,0), +(5,26,0,0), +(5,27,0,0), +(5,29,0,0), +(5,30,0,0), +(5,31,0,0), +(5,32,0,0), +(5,34,0,0), +(5,35,0,0), +(5,36,0,0), +(5,37,0,0), +(6,1,2,2), +(6,2,2,2), +(6,3,2,2), +(6,4,2,2), +(6,5,2,2), +(6,6,2,2), +(6,7,2,2), +(6,8,2,2), +(6,9,2,2), +(6,10,2,2), +(6,11,2,2), +(6,22,2,2), +(6,24,2,8), +(6,25,2,8), +(6,26,2,8), +(6,27,2,8), +(6,28,2,8), +(6,29,2,8), +(6,30,2,8), +(6,31,2,8), +(6,32,2,8), +(6,34,2,8), +(6,35,2,8), +(6,36,2,8), +(6,37,2,8), +(7,2,0,0), +(7,3,0,0), +(7,6,0,0), +(7,8,0,0), +(7,9,0,0), +(7,11,0,0), +(7,24,0,0), +(7,25,0,0), +(7,26,0,0), +(7,28,0,0), +(7,31,0,0), +(7,32,0,0), +(7,34,0,0), +(7,35,0,0), +(7,36,0,0), +(8,1,0,0), +(8,2,0,0), +(8,3,0,0), +(8,4,0,0), +(8,5,0,0), +(8,7,0,0), +(8,8,0,0), +(8,9,0,0), +(8,10,0,0), +(8,11,0,0), +(8,22,0,0), +(8,24,0,0), +(8,25,0,0), +(8,26,0,0), +(8,27,0,0), +(8,29,0,0), +(8,30,0,0), +(8,31,0,0), +(8,32,0,0), +(8,34,0,0), +(8,35,0,0), +(8,36,0,0), +(8,37,0,0), +(9,1,0,0), +(9,2,0,0), +(9,3,0,0), +(9,5,0,0), +(9,7,0,0), +(9,8,0,0), +(9,9,0,0), +(9,10,0,0), +(9,22,0,0), +(9,27,0,0), +(9,29,0,0), +(9,34,0,0), +(9,35,0,0), +(9,37,0,0), +(10,1,4,4), +(10,2,4,4), +(10,3,4,4), +(10,4,4,4), +(10,5,4,4), +(10,6,4,4), +(10,7,4,4), +(10,8,4,4), +(10,10,4,4), +(10,11,4,4), +(10,24,4,4), +(10,25,4,4), +(10,26,4,4), +(10,27,4,4), +(10,28,4,4), +(10,29,4,4), +(10,31,4,4), +(10,32,4,4), +(10,34,4,4), +(10,35,4,4), +(10,36,4,4), +(10,37,4,4), +(11,4,0,0), +(11,6,0,0), +(11,8,0,0), +(11,22,0,0), +(11,28,0,0), +(11,31,0,0), +(11,32,0,0), +(12,4,6,6), +(12,10,6,6); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 3b78a448089..56bade88f2d 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -518,7 +518,7 @@ void UnlockedAzeriteEssence::WriteUpdate(ByteBuffer& data, AzeriteItem const* ow void SelectedAzeriteEssences::WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const { - for (std::size_t i = 0; i < 3; ++i) + for (std::size_t i = 0; i < 4; ++i) { data << uint32(AzeriteEssenceID[i]); } @@ -529,7 +529,7 @@ void SelectedAzeriteEssences::WriteCreate(ByteBuffer& data, AzeriteItem const* o void SelectedAzeriteEssences::WriteUpdate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const { - UpdateMask<7> const& changesMask = _changesMask; + UpdateMask<8> const& changesMask = _changesMask; data.WriteBits(changesMask.GetBlocksMask(0), 1); if (changesMask.GetBlock(0)) data.WriteBits(changesMask.GetBlock(0), 32); @@ -548,7 +548,7 @@ void SelectedAzeriteEssences::WriteUpdate(ByteBuffer& data, AzeriteItem const* o } if (changesMask[3]) { - for (std::size_t i = 0; i < 3; ++i) + for (std::size_t i = 0; i < 4; ++i) { if (changesMask[4 + i]) { @@ -938,6 +938,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fiel data << uint32(PassiveSpells.size()); data << uint32(WorldEffects.size()); data << uint32(ChannelObjects.size()); + data << SkinningOwnerGUID; for (std::size_t i = 0; i < PassiveSpells.size(); ++i) { PassiveSpells[i].WriteCreate(data, owner, receiver); @@ -954,22 +955,22 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fiel void UnitData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { - UpdateMask<191> allowedMaskForTarget({ 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFDFFFF9u, 0x001FC003u, 0x00000000u }); + UpdateMask<192> allowedMaskForTarget({ 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFBFFFF9u, 0x003F8007u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, fieldVisibilityFlags, owner, receiver); } -void UnitData::AppendAllowedFieldsMaskForFlag(UpdateMask<191>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const +void UnitData::AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= { 0x00001000u, 0x03C04000u, 0xFFFE1000u, 0x00200006u, 0xFFE03FFCu, 0x7FFFFFFFu }; + allowedMaskForTarget |= { 0x00001000u, 0x03C04000u, 0xFFFE1000u, 0x00400006u, 0xFFC07FF8u, 0xFFFFFFFFu }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll)) - allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x00200000u, 0x00003FFCu, 0x00000000u }; + allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x00400000u, 0x00007FF8u, 0x00000000u }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath)) - allowedMaskForTarget |= { 0x00000000u, 0x03C00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000003FCu }; + allowedMaskForTarget |= { 0x00000000u, 0x03C00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000007F8u }; } -void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<191> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const +void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<192> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { data.WriteBits(changesMask.GetBlocksMask(0), 6); for (std::size_t i = 0; i < 6; ++i) @@ -1469,94 +1470,98 @@ void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<191> const& changesMask, { data << GuildGUID; } + if (changesMask[114]) + { + data << SkinningOwnerGUID; + } } - if (changesMask[114]) + if (changesMask[115]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[115 + i]) + if (changesMask[116 + i]) { data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(NpcFlags[i], i, owner, receiver)); } } } - if (changesMask[117]) + if (changesMask[118]) { for (std::size_t i = 0; i < 6; ++i) { - if (changesMask[118 + i]) + if (changesMask[119 + i]) { data << int32(Power[i]); } - if (changesMask[124 + i]) + if (changesMask[125 + i]) { data << int32(MaxPower[i]); } - if (changesMask[130 + i]) + if (changesMask[131 + i]) { data << float(PowerRegenFlatModifier[i]); } - if (changesMask[136 + i]) + if (changesMask[137 + i]) { data << float(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[142]) + if (changesMask[143]) { for (std::size_t i = 0; i < 3; ++i) { - if (changesMask[143 + i]) + if (changesMask[144 + i]) { VirtualItems[i].WriteUpdate(data, owner, receiver); } } } - if (changesMask[146]) + if (changesMask[147]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[147 + i]) + if (changesMask[148 + i]) { data << uint32(AttackRoundBaseTime[i]); } } } - if (changesMask[149]) + if (changesMask[150]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[150 + i]) + if (changesMask[151 + i]) { data << int32(Stats[i]); } - if (changesMask[154 + i]) + if (changesMask[155 + i]) { data << int32(StatPosBuff[i]); } - if (changesMask[158 + i]) + if (changesMask[159 + i]) { data << int32(StatNegBuff[i]); } } } - if (changesMask[162]) + if (changesMask[163]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[163 + i]) + if (changesMask[164 + i]) { data << int32(Resistances[i]); } - if (changesMask[170 + i]) + if (changesMask[171 + i]) { data << int32(BonusResistanceMods[i]); } - if (changesMask[177 + i]) + if (changesMask[178 + i]) { data << int32(PowerCostModifier[i]); } - if (changesMask[184 + i]) + if (changesMask[185 + i]) { data << float(PowerCostMultiplier[i]); } @@ -1676,6 +1681,7 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(LookAtControllerID); Base::ClearChangesMask(TaxiNodesID); Base::ClearChangesMask(GuildGUID); + Base::ClearChangesMask(SkinningOwnerGUID); Base::ClearChangesMask(NpcFlags); Base::ClearChangesMask(Power); Base::ClearChangesMask(MaxPower); @@ -2494,7 +2500,7 @@ void QuestSession::ClearChangesMask() void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { - for (std::size_t i = 0; i < 195; ++i) + for (std::size_t i = 0; i < 199; ++i) { data << InvSlots[i]; } @@ -2737,7 +2743,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { - UpdateMask<1490> const& changesMask = _changesMask; + UpdateMask<1494> const& changesMask = _changesMask; for (std::size_t i = 0; i < 1; ++i) data << uint32(changesMask.GetBlocksMask(i)); data.WriteBits(changesMask.GetBlocksMask(1), 15); @@ -3363,7 +3369,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl } if (changesMask[104]) { - for (std::size_t i = 0; i < 195; ++i) + for (std::size_t i = 0; i < 199; ++i) { if (changesMask[105 + i]) { @@ -3371,147 +3377,147 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl } } } - if (changesMask[300]) + if (changesMask[304]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[301 + i]) + if (changesMask[305 + i]) { data << uint32(TrackResourceMask[i]); } } } - if (changesMask[303]) + if (changesMask[307]) { for (std::size_t i = 0; i < 192; ++i) { - if (changesMask[304 + i]) + if (changesMask[308 + i]) { data << uint64(ExploredZones[i]); } } } - if (changesMask[496]) + if (changesMask[500]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[497 + i]) + if (changesMask[501 + i]) { RestInfo[i].WriteUpdate(data, owner, receiver); } } } - if (changesMask[499]) + if (changesMask[503]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[500 + i]) + if (changesMask[504 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[507 + i]) + if (changesMask[511 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[514 + i]) + if (changesMask[518 + i]) { data << float(ModDamageDonePercent[i]); } } } - if (changesMask[521]) + if (changesMask[525]) { for (std::size_t i = 0; i < 3; ++i) { - if (changesMask[522 + i]) + if (changesMask[526 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[525 + i]) + if (changesMask[529 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[528]) + if (changesMask[532]) { for (std::size_t i = 0; i < 12; ++i) { - if (changesMask[529 + i]) + if (changesMask[533 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[541 + i]) + if (changesMask[545 + i]) { data << uint32(BuybackTimestamp[i]); } } } - if (changesMask[553]) + if (changesMask[557]) { for (std::size_t i = 0; i < 32; ++i) { - if (changesMask[554 + i]) + if (changesMask[558 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[593]) + if (changesMask[597]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[594 + i]) + if (changesMask[598 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[598]) + if (changesMask[602]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[599 + i]) + if (changesMask[603 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[601]) + if (changesMask[605]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[602 + i]) + if (changesMask[606 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[606]) + if (changesMask[610]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[607 + i]) + if (changesMask[611 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[614]) + if (changesMask[618]) { for (std::size_t i = 0; i < 875; ++i) { - if (changesMask[615 + i]) + if (changesMask[619 + i]) { data << uint64(QuestCompleted[i]); } } } - if (changesMask[586]) + if (changesMask[590]) { for (std::size_t i = 0; i < 6; ++i) { - if (changesMask[587 + i]) + if (changesMask[591 + i]) { PvpInfo[i].WriteUpdate(data, owner, receiver); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index b31751eb061..0335b90b4ac 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -145,11 +145,11 @@ struct UnlockedAzeriteEssence : public IsUpdateFieldStructureTag void WriteUpdate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; }; -struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag, public HasChangesMask<7> +struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag, public HasChangesMask<8> { UpdateField<uint32, 0, 1> SpecializationID; UpdateField<uint32, 0, 2> Enabled; - UpdateFieldArray<uint32, 3, 3, 4> AzeriteEssenceID; + UpdateFieldArray<uint32, 4, 3, 4> AzeriteEssenceID; void WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; @@ -203,7 +203,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag void WriteUpdate(ByteBuffer& data, Unit const* owner, Player const* receiver) const; }; -struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<191> +struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<192> { UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs; DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells; @@ -320,26 +320,27 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<191> UpdateField<int32, 96, 111> LookAtControllerID; UpdateField<int32, 96, 112> TaxiNodesID; UpdateField<ObjectGuid, 96, 113> GuildGUID; - UpdateFieldArray<uint32, 2, 114, 115> NpcFlags; + UpdateField<ObjectGuid, 96, 114> SkinningOwnerGUID; + UpdateFieldArray<uint32, 2, 115, 116> NpcFlags; struct NpcFlagsTag : ViewerDependentValueTag<uint32> {}; - UpdateFieldArray<int32, 6, 117, 118> Power; - UpdateFieldArray<int32, 6, 117, 124> MaxPower; - UpdateFieldArray<float, 6, 117, 130> PowerRegenFlatModifier; - UpdateFieldArray<float, 6, 117, 136> PowerRegenInterruptedFlatModifier; - UpdateFieldArray<UF::VisibleItem, 3, 142, 143> VirtualItems; - UpdateFieldArray<uint32, 2, 146, 147> AttackRoundBaseTime; - UpdateFieldArray<int32, 4, 149, 150> Stats; - UpdateFieldArray<int32, 4, 149, 154> StatPosBuff; - UpdateFieldArray<int32, 4, 149, 158> StatNegBuff; - UpdateFieldArray<int32, 7, 162, 163> Resistances; - UpdateFieldArray<int32, 7, 162, 170> BonusResistanceMods; - UpdateFieldArray<int32, 7, 162, 177> PowerCostModifier; - UpdateFieldArray<float, 7, 162, 184> PowerCostMultiplier; + UpdateFieldArray<int32, 6, 118, 119> Power; + UpdateFieldArray<int32, 6, 118, 125> MaxPower; + UpdateFieldArray<float, 6, 118, 131> PowerRegenFlatModifier; + UpdateFieldArray<float, 6, 118, 137> PowerRegenInterruptedFlatModifier; + UpdateFieldArray<UF::VisibleItem, 3, 143, 144> VirtualItems; + UpdateFieldArray<uint32, 2, 147, 148> AttackRoundBaseTime; + UpdateFieldArray<int32, 4, 150, 151> Stats; + UpdateFieldArray<int32, 4, 150, 155> StatPosBuff; + UpdateFieldArray<int32, 4, 150, 159> StatNegBuff; + UpdateFieldArray<int32, 7, 163, 164> Resistances; + UpdateFieldArray<int32, 7, 163, 171> BonusResistanceMods; + UpdateFieldArray<int32, 7, 163, 178> PowerCostModifier; + UpdateFieldArray<float, 7, 163, 185> PowerCostMultiplier; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; - void AppendAllowedFieldsMaskForFlag(UpdateMask<191>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const; - void WriteUpdate(ByteBuffer& data, UpdateMask<191> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; + void AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const; + void WriteUpdate(ByteBuffer& data, UpdateMask<192> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -523,7 +524,7 @@ struct QuestSession : public IsUpdateFieldStructureTag, public HasChangesMask<87 void ClearChangesMask(); }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1490> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1494> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BankAutoSortDisabled; @@ -624,24 +625,24 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<int32, 98, 101> PvpLastWeeksRewardClaimed; UpdateField<uint8, 98, 102> NumBankSlots; OptionalUpdateField<UF::QuestSession, 98, 103> QuestSession; - UpdateFieldArray<ObjectGuid, 195, 104, 105> InvSlots; - UpdateFieldArray<uint32, 2, 300, 301> TrackResourceMask; - UpdateFieldArray<uint64, 192, 303, 304> ExploredZones; - UpdateFieldArray<UF::RestInfo, 2, 496, 497> RestInfo; - UpdateFieldArray<int32, 7, 499, 500> ModDamageDonePos; - UpdateFieldArray<int32, 7, 499, 507> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 499, 514> ModDamageDonePercent; - UpdateFieldArray<float, 3, 521, 522> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 521, 525> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 528, 529> BuybackPrice; - UpdateFieldArray<uint32, 12, 528, 541> BuybackTimestamp; - UpdateFieldArray<int32, 32, 553, 554> CombatRatings; - UpdateFieldArray<UF::PVPInfo, 6, 586, 587> PvpInfo; - UpdateFieldArray<uint32, 4, 593, 594> NoReagentCostMask; - UpdateFieldArray<int32, 2, 598, 599> ProfessionSkillLine; - UpdateFieldArray<uint32, 4, 601, 602> BagSlotFlags; - UpdateFieldArray<uint32, 7, 606, 607> BankBagSlotFlags; - UpdateFieldArray<uint64, 875, 614, 615> QuestCompleted; + UpdateFieldArray<ObjectGuid, 199, 104, 105> InvSlots; + UpdateFieldArray<uint32, 2, 304, 305> TrackResourceMask; + UpdateFieldArray<uint64, 192, 307, 308> ExploredZones; + UpdateFieldArray<UF::RestInfo, 2, 500, 501> RestInfo; + UpdateFieldArray<int32, 7, 503, 504> ModDamageDonePos; + UpdateFieldArray<int32, 7, 503, 511> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 503, 518> ModDamageDonePercent; + UpdateFieldArray<float, 3, 525, 526> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 525, 529> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 532, 533> BuybackPrice; + UpdateFieldArray<uint32, 12, 532, 545> BuybackTimestamp; + UpdateFieldArray<int32, 32, 557, 558> CombatRatings; + UpdateFieldArray<UF::PVPInfo, 6, 590, 591> PvpInfo; + UpdateFieldArray<uint32, 4, 597, 598> NoReagentCostMask; + UpdateFieldArray<int32, 2, 602, 603> ProfessionSkillLine; + UpdateFieldArray<uint32, 4, 605, 606> BagSlotFlags; + UpdateFieldArray<uint32, 7, 610, 611> BankBagSlotFlags; + UpdateFieldArray<uint64, 875, 618, 619> QuestCompleted; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 9e069fa8e5f..8e3f3841c11 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -604,41 +604,41 @@ enum InventorySlots : uint8 // 4 slots INVENTORY_SLOT_BAG_END = 23 }; -enum InventoryPackSlots : uint8 // 24 slots +enum InventoryPackSlots : uint8 // 28 slots { INVENTORY_SLOT_ITEM_START = 23, - INVENTORY_SLOT_ITEM_END = 47 + INVENTORY_SLOT_ITEM_END = 51 }; enum BankItemSlots // 28 slots { - BANK_SLOT_ITEM_START = 47, - BANK_SLOT_ITEM_END = 75 + BANK_SLOT_ITEM_START = 51, + BANK_SLOT_ITEM_END = 79 }; enum BankBagSlots // 7 slots { - BANK_SLOT_BAG_START = 75, - BANK_SLOT_BAG_END = 82 + BANK_SLOT_BAG_START = 79, + BANK_SLOT_BAG_END = 86 }; enum BuyBackSlots // 12 slots { // stored in m_buybackitems - BUYBACK_SLOT_START = 82, - BUYBACK_SLOT_END = 94 + BUYBACK_SLOT_START = 86, + BUYBACK_SLOT_END = 98 }; enum ReagentSlots // 98 slots { - REAGENT_SLOT_START = 94, - REAGENT_SLOT_END = 192, + REAGENT_SLOT_START = 98, + REAGENT_SLOT_END = 196, }; enum ChildEquipmentSlots { - CHILD_EQUIPMENT_SLOT_START = 192, - CHILD_EQUIPMENT_SLOT_END = 195, + CHILD_EQUIPMENT_SLOT_START = 196, + CHILD_EQUIPMENT_SLOT_END = 199, }; struct ItemPosCount diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 8a18c694894..54f736b857e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -9881,37 +9881,76 @@ void ObjectMgr::LoadRaceAndClassExpansionRequirements() oldMSTime = getMSTime(); _classExpansionRequirementStore.clear(); - // 0 1 - result = WorldDatabase.Query("SELECT classID, expansion FROM `class_expansion_requirement`"); + // 0 1 2 3 + result = WorldDatabase.Query("SELECT ClassID, RaceID, ActiveExpansionLevel, AccountExpansionLevel FROM `class_expansion_requirement`"); if (result) { + std::map<uint8, std::map<uint8, std::pair<uint8, uint8>>> temp; uint32 count = 0; do { Field* fields = result->Fetch(); - uint8 classID = fields[0].GetInt8(); - uint8 expansion = fields[1].GetInt8(); + uint8 classID = fields[0].GetUInt8(); + uint8 raceID = fields[1].GetUInt8(); + uint8 activeExpansionLevel = fields[2].GetUInt8(); + uint8 accountExpansionLevel = fields[3].GetUInt8(); ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(classID); if (!classEntry) { - TC_LOG_ERROR("sql.sql", "Class %u defined in `class_expansion_requirement` does not exists, skipped.", classID); + TC_LOG_ERROR("sql.sql", "Class %u (race %u) defined in `class_expansion_requirement` does not exists, skipped.", + uint32(classID), uint32(raceID)); continue; } - if (expansion >= MAX_EXPANSIONS) + ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(raceID); + if (!classEntry) { - TC_LOG_ERROR("sql.sql", "Class %u defined in `class_expansion_requirement` has incorrect expansion %u, skipped.", classID, expansion); + TC_LOG_ERROR("sql.sql", "Race %u (class %u) defined in `class_expansion_requirement` does not exists, skipped.", + uint32(raceID), uint32(classID)); continue; } - _classExpansionRequirementStore[classID] = expansion; + if (activeExpansionLevel >= MAX_EXPANSIONS) + { + TC_LOG_ERROR("sql.sql", "Class %u Race %u defined in `class_expansion_requirement` has incorrect ActiveExpansionLevel %u, skipped.", + uint32(classID), uint32(raceID), activeExpansionLevel); + continue; + } + + if (accountExpansionLevel >= MAX_ACCOUNT_EXPANSIONS) + { + TC_LOG_ERROR("sql.sql", "Class %u Race %u defined in `class_expansion_requirement` has incorrect AccountExpansionLevel %u, skipped.", + uint32(classID), uint32(raceID), accountExpansionLevel); + continue; + } + + temp[raceID][classID] = { activeExpansionLevel, accountExpansionLevel }; ++count; } while (result->NextRow()); + + for (auto&& race : temp) + { + _classExpansionRequirementStore.emplace_back(); + + RaceClassAvailability& raceClassAvailability = _classExpansionRequirementStore.back(); + raceClassAvailability.RaceID = race.first; + + for (auto&& class_ : race.second) + { + raceClassAvailability.Classes.emplace_back(); + + ClassAvailability& classAvailability = raceClassAvailability.Classes.back(); + classAvailability.ClassID = class_.first; + classAvailability.ActiveExpansionLevel = class_.second.first; + classAvailability.AccountExpansionLevel = class_.second.second; + } + } + TC_LOG_INFO("server.loading", ">> Loaded %u class expansion requirements in %u ms.", count, GetMSTimeDiffToNow(oldMSTime)); } else @@ -9974,6 +10013,25 @@ bool ObjectMgr::GetRealmName(uint32 realmId, std::string& name, std::string& nor return false; } +ClassAvailability const* ObjectMgr::GetClassExpansionRequirement(uint8 raceId, uint8 classId) const +{ + auto raceItr = std::find_if(_classExpansionRequirementStore.begin(), _classExpansionRequirementStore.end(), [raceId](RaceClassAvailability const& raceClass) + { + return raceClass.RaceID == raceId; + }); + if (raceItr == _classExpansionRequirementStore.end()) + return nullptr; + + auto classItr = std::find_if(raceItr->Classes.begin(), raceItr->Classes.end(), [classId](ClassAvailability const& classAvailability) + { + return classAvailability.ClassID == classId; + }); + if (classItr == raceItr->Classes.end()) + return nullptr; + + return &(*classItr); +} + PlayerChoice const* ObjectMgr::GetPlayerChoice(int32 choiceId) const { return Trinity::Containers::MapGetValuePtr(_playerChoices, choiceId); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 129cde974cb..671fb4465f5 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -934,6 +934,19 @@ struct PhaseAreaInfo ConditionContainer Conditions; }; +struct ClassAvailability +{ + uint8 ClassID = 0; + uint8 ActiveExpansionLevel = 0; + uint8 AccountExpansionLevel = 0; +}; + +struct RaceClassAvailability +{ + uint8 RaceID = 0; + std::vector<ClassAvailability> Classes; +}; + struct RaceUnlockRequirement { uint8 Expansion; @@ -1587,14 +1600,8 @@ class TC_GAME_API ObjectMgr return nullptr; } - std::unordered_map<uint8, uint8> const& GetClassExpansionRequirements() const { return _classExpansionRequirementStore; } - uint8 GetClassExpansionRequirement(uint8 class_) const - { - auto itr = _classExpansionRequirementStore.find(class_); - if (itr != _classExpansionRequirementStore.end()) - return itr->second; - return EXPANSION_CLASSIC; - } + std::vector<RaceClassAvailability> const& GetClassExpansionRequirements() const { return _classExpansionRequirementStore; } + ClassAvailability const* GetClassExpansionRequirement(uint8 raceId, uint8 classId) const; SceneTemplate const* GetSceneTemplate(uint32 sceneId) const { @@ -1771,7 +1778,7 @@ class TC_GAME_API ObjectMgr std::set<uint32> _hasDifficultyEntries[MAX_CREATURE_DIFFICULTIES]; // already loaded creatures with difficulty 1 values, used in CheckCreatureTemplate std::unordered_map<uint8, RaceUnlockRequirement> _raceUnlockRequirementStore; - std::unordered_map<uint8, uint8> _classExpansionRequirementStore; + std::vector<RaceClassAvailability> _classExpansionRequirementStore; RealmNameContainer _realmNameStore; SceneTemplateContainer _sceneTemplateStore; diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index e524803b254..87c0e29b43f 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -65,7 +65,7 @@ void WorldSession::SendAuctionHello(ObjectGuid guid, Creature* unit) WorldPackets::AuctionHouse::AuctionHelloResponse auctionHelloResponse; auctionHelloResponse.Guid = guid; - auctionHelloResponse.OpenForBusiness = true; // 3.3.3: 1 - AH enabled, 0 - AH disabled + auctionHelloResponse.OpenForBusiness = false; // 3.3.3: 1 - AH enabled, 0 - AH disabled SendPacket(auctionHelloResponse.Write()); } diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp index c1091b11431..20c3dc7235f 100644 --- a/src/server/game/Handlers/AuthHandler.cpp +++ b/src/server/game/Handlers/AuthHandler.cpp @@ -20,6 +20,7 @@ #include "BattlenetRpcErrorCodes.h" #include "CharacterTemplateDataStore.h" #include "ClientConfigPackets.h" +#include "GameTime.h" #include "ObjectMgr.h" #include "RBAC.h" #include "Realm.h" @@ -35,16 +36,16 @@ void WorldSession::SendAuthResponse(uint32 code, bool queued, uint32 queuePos) { response.SuccessInfo = boost::in_place(); - response.SuccessInfo->AccountExpansionLevel = GetAccountExpansion(); response.SuccessInfo->ActiveExpansionLevel = GetExpansion(); + response.SuccessInfo->AccountExpansionLevel = GetAccountExpansion(); response.SuccessInfo->VirtualRealmAddress = realm.Id.GetAddress(); - response.SuccessInfo->Time = int32(time(nullptr)); + response.SuccessInfo->Time = int32(GameTime::GetGameTime()); // Send current home realm. Also there is no need to send it later in realm queries. response.SuccessInfo->VirtualRealms.emplace_back(realm.Id.GetAddress(), true, false, realm.Name, realm.NormalizedName); if (HasPermission(rbac::RBAC_PERM_USE_CHARACTER_TEMPLATES)) - for (auto const& templ : sCharacterTemplateDataStore->GetCharacterTemplates()) + for (auto&& templ : sCharacterTemplateDataStore->GetCharacterTemplates()) response.SuccessInfo->Templates.push_back(&templ.second); response.SuccessInfo->AvailableClasses = &sObjectMgr->GetClassExpansionRequirements(); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 2b5fe7123d9..9ce5bfb3a5b 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -517,11 +517,19 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact //} // prevent character creating Expansion class without Expansion account - uint8 classExpansionRequirement = sObjectMgr->GetClassExpansionRequirement(charCreate.CreateInfo->Class); - if (classExpansionRequirement > GetAccountExpansion()) + ClassAvailability const* classExpansionRequirement = sObjectMgr->GetClassExpansionRequirement(charCreate.CreateInfo->Race, charCreate.CreateInfo->Class); + if (!classExpansionRequirement) { - TC_LOG_ERROR("entities.player.cheat", "Expansion %u account:[%d] tried to Create character with expansion %u class (%u)", - GetAccountExpansion(), GetAccountId(), classExpansionRequirement, charCreate.CreateInfo->Class); + TC_LOG_ERROR("entities.player.cheat", "Expansion %u account:[%d] tried to Create character for race/class combination that is missing requirements in db (%u/%u)", + GetAccountExpansion(), GetAccountId(), uint32(charCreate.CreateInfo->Race), uint32(charCreate.CreateInfo->Class)); + SendCharCreate(CHAR_CREATE_EXPANSION_CLASS); + return; + } + + if (classExpansionRequirement->ActiveExpansionLevel > GetExpansion() || classExpansionRequirement->AccountExpansionLevel > GetAccountExpansion()) + { + TC_LOG_ERROR("entities.player.cheat", "Expansion %u account:[%d] tried to Create character with expansion %u race/class (%u/%u)", + GetAccountExpansion(), GetAccountId(), uint32(charCreate.CreateInfo->Race), uint32(charCreate.CreateInfo->Class)); SendCharCreate(CHAR_CREATE_EXPANSION_CLASS); return; } diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index cd7399fa8eb..6d635c8ffdb 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -110,6 +110,7 @@ void WorldSession::HandleGameObjectQueryOpcode(WorldPackets::Query::QueryGameObj WorldPackets::Query::QueryGameObjectResponse response; response.GameObjectID = packet.GameObjectID; + response.Guid = packet.Guid; SendPacket(response.Write()); TC_LOG_DEBUG("network", "WORLD: Sent SMSG_GAMEOBJECT_QUERY_RESPONSE"); } diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index b2ecf24b19c..f0eb8b58dd0 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -109,11 +109,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::AuthWaitInfo const& return data; } -WorldPackets::Auth::AuthResponse::AuthResponse() - : ServerPacket(SMSG_AUTH_RESPONSE, 132) -{ -} - WorldPacket const* WorldPackets::Auth::AuthResponse::Write() { _worldPacket << uint32(Result); @@ -134,10 +129,17 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket << uint32(SuccessInfo->CurrencyID); _worldPacket << int32(SuccessInfo->Time); - for (auto const& klass : *SuccessInfo->AvailableClasses) + for (RaceClassAvailability const& raceClassAvailability : *SuccessInfo->AvailableClasses) { - _worldPacket << uint8(klass.first); /// the current class - _worldPacket << uint8(klass.second); /// the required Expansion + _worldPacket << uint8(raceClassAvailability.RaceID); + _worldPacket << uint32(raceClassAvailability.Classes.size()); + + for (ClassAvailability const& classAvailability : raceClassAvailability.Classes) + { + _worldPacket << uint8(classAvailability.ClassID); + _worldPacket << uint8(classAvailability.ActiveExpansionLevel); + _worldPacket << uint8(classAvailability.AccountExpansionLevel); + } } _worldPacket.WriteBit(SuccessInfo->IsExpansionTrial); diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 97037e70933..9e8305627b7 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -25,6 +25,7 @@ #include <unordered_map> struct CharacterTemplate; +struct RaceClassAvailability; namespace WorldPackets { @@ -137,8 +138,8 @@ namespace WorldPackets bool InGameRoom = false; }; - uint8 AccountExpansionLevel = 0; ///< the current expansion of this account, the possible values are in @ref Expansions uint8 ActiveExpansionLevel = 0; ///< the current server expansion, the possible values are in @ref Expansions + uint8 AccountExpansionLevel = 0; ///< the current expansion of this account, the possible values are in @ref Expansions uint32 TimeRested = 0; ///< affects the return value of the GetBillingTimeRested() client API call, it is the number of seconds you have left until the experience points and loot you receive from creatures and quests is reduced. It is only used in the Asia region in retail, it's not implemented in TC and will probably never be. uint32 VirtualRealmAddress = 0; ///< a special identifier made from the Index, BattleGroup and Region. @@ -151,7 +152,7 @@ namespace WorldPackets std::vector<VirtualRealmInfo> VirtualRealms; ///< list of realms connected to this one (inclusive) @todo implement std::vector<CharacterTemplate const*> Templates; ///< list of pre-made character templates. - std::unordered_map<uint8, uint8> const* AvailableClasses = nullptr; ///< the minimum AccountExpansion required to select the classes + std::vector<RaceClassAvailability> const* AvailableClasses = nullptr; ///< the minimum AccountExpansion required to select race/class combinations bool IsExpansionTrial = false; bool ForceCharacterTemplate = false; ///< forces the client to always use a character template when creating a new character. @see Templates. @todo implement @@ -160,7 +161,7 @@ namespace WorldPackets Optional<int32> ExpansionTrialExpiration; ///< expansion trial expiration unix timestamp }; - AuthResponse(); + AuthResponse() : ServerPacket(SMSG_AUTH_RESPONSE, 132) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 5c194dc29cd..a9aaf3d5e06 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -170,12 +170,21 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters data << uint32(charInfo.Unknown703); data << uint32(charInfo.LastLoginVersion); data << uint32(charInfo.Flags4); + data << uint32(charInfo.Unknown830.size()); data.WriteBits(charInfo.Name.length(), 6); data.WriteBit(charInfo.FirstLogin); data.WriteBit(charInfo.BoostInProgress); data.WriteBits(charInfo.unkWod61x, 5); + + for (std::string const& str : charInfo.Unknown830) + data.WriteBits(str.length() + 1, 6); + data.FlushBits(); + for (std::string const& str : charInfo.Unknown830) + if (!str.empty()) + data << str; + data.WriteString(charInfo.Name); return data; diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 4703b218a96..f8e5d245aab 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -166,6 +166,8 @@ namespace WorldPackets }; std::array<VisualItemInfo, 23> VisualItems = { }; + std::vector<std::string> Unknown830; // Something with character names, same length limit as name, + // client accepts unlimited number of these in packet but only uses first 3 }; struct RaceUnlock diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index 53b29a96cfe..68678dc7a9f 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -121,6 +121,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMission ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonTalent const& talent) { data << int32(talent.GarrTalentID); + data << int32(talent.Rank); data << int32(talent.ResearchStartTime); data << int32(talent.Flags); @@ -156,18 +157,18 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonInfo co data << *mission; for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionRewards) - { data << uint32(missionReward.size()); + + for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionRewards) for (WorldPackets::Garrison::GarrisonMissionReward const& missionRewardItem : missionReward) data << missionRewardItem; - } for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards) - { data << uint32(missionReward.size()); + + for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards) for (WorldPackets::Garrison::GarrisonMissionReward const& missionRewardItem : missionReward) data << missionRewardItem; - } for (WorldPackets::Garrison::GarrisonMissionBonusAbility const* areaBonus : garrison.MissionAreaBonuses) data << *areaBonus; diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index 8b886077c5d..6e929d08245 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -131,6 +131,7 @@ namespace WorldPackets struct GarrisonTalent { int32 GarrTalentID = 0; + int32 Rank = 0; time_t ResearchStartTime = time_t(0); int32 Flags = 0; }; diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index 5bebc275236..c1de4be8960 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -269,6 +269,7 @@ void WorldPackets::Query::QueryGameObject::Read() WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write() { _worldPacket << GameObjectID; + _worldPacket << Guid; _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h index 10a54dc4b22..6c8d2b6c648 100644 --- a/src/server/game/Server/Packets/QueryPackets.h +++ b/src/server/game/Server/Packets/QueryPackets.h @@ -239,6 +239,7 @@ namespace WorldPackets WorldPacket const* Write() override; uint32 GameObjectID = 0; + ObjectGuid Guid; bool Allow = false; GameObjectStats Stats; }; diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp index 330c77e5121..3720a9c576c 100644 --- a/src/server/game/Server/Packets/ScenePackets.cpp +++ b/src/server/game/Server/Packets/ScenePackets.cpp @@ -25,6 +25,8 @@ WorldPacket const* WorldPackets::Scenes::PlayScene::Write() _worldPacket << int32(SceneScriptPackageID); _worldPacket << TransportGUID; _worldPacket << Location.PositionXYZOStream(); + _worldPacket.WriteBit(PerformTactCallbacks); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ScenePackets.h b/src/server/game/Server/Packets/ScenePackets.h index a61274e7b12..08e6c6a1381 100644 --- a/src/server/game/Server/Packets/ScenePackets.h +++ b/src/server/game/Server/Packets/ScenePackets.h @@ -38,6 +38,7 @@ namespace WorldPackets int32 SceneScriptPackageID = 0; ObjectGuid TransportGUID; Position Location; + bool PerformTactCallbacks = false; }; class TC_GAME_API CancelScene final : public ServerPacket diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index d2a8de6f1fa..cd7501cd52a 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -65,7 +65,6 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket.WriteBit(WillKickFromWorld); _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.WriteBit(CompetitiveModeEnabled); - _worldPacket.WriteBit(RaceClassExpansionLevels.is_initialized()); _worldPacket.WriteBit(TokenBalanceEnabled); _worldPacket.WriteBit(WarModeFeatureEnabled); _worldPacket.WriteBit(ClubsEnabled); @@ -113,13 +112,6 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket << int32(SessionAlert->DisplayTime); } - if (RaceClassExpansionLevels) - { - _worldPacket << uint32(RaceClassExpansionLevels->size()); - if (!RaceClassExpansionLevels->empty()) - _worldPacket.append(RaceClassExpansionLevels->data(), RaceClassExpansionLevels->size()); - } - { _worldPacket.WriteBit(VoiceChatManagerSettings.IsSquelched); _worldPacket << VoiceChatManagerSettings.BnetAccountGuid; diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 9f19cb5ab8c..4f87ab34edc 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -145,7 +145,6 @@ namespace WorldPackets bool IsMuted = false; bool ClubFinderEnabled = false; - Optional<std::vector<uint8>> RaceClassExpansionLevels; SocialQueueConfig QuickJoinConfig; VoiceChatProxySettings VoiceChatManagerSettings; RafSystemFeatureInfo RAFSystem; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index b340a5928be..3fe7fd1d7da 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -163,15 +163,22 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_ARTIFACT_SET_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArtifactSetAppearance); DEFINE_HANDLER(CMSG_ATTACK_STOP, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackStopOpcode); DEFINE_HANDLER(CMSG_ATTACK_SWING, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackSwingOpcode); + DEFINE_HANDLER(CMSG_AUCTION_BROWSE_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_AUCTION_HELLO_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionHelloOpcode); - DEFINE_HANDLER(CMSG_AUCTION_LIST_BIDDER_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionListBidderItems); - DEFINE_HANDLER(CMSG_AUCTION_LIST_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionListItems); - DEFINE_HANDLER(CMSG_AUCTION_LIST_OWNER_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionListOwnerItems); - DEFINE_HANDLER(CMSG_AUCTION_LIST_PENDING_SALES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionListPendingSales); - DEFINE_HANDLER(CMSG_AUCTION_PLACE_BID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionPlaceBid); - DEFINE_HANDLER(CMSG_AUCTION_REMOVE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionRemoveItem); - DEFINE_HANDLER(CMSG_AUCTION_REPLICATE_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleReplicateItems); - DEFINE_HANDLER(CMSG_AUCTION_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionSellItem); + DEFINE_HANDLER(CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_LIST_BIDDER_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_LIST_ITEMS_BY_ITEM_KEYS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_LIST_OWNER_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_PLACE_BID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_REMOVE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_REPLICATE_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_SELL_COMMODITY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_SELL_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_SET_FAVORITE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AUCTION_START_COMMODITIES_PURCHASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_AUTH_CONTINUED_SESSION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess); DEFINE_HANDLER(CMSG_AUTH_SESSION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess); DEFINE_HANDLER(CMSG_AUTOBANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoBankItemOpcode); @@ -618,6 +625,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_PARTY_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyInviteOpcode); DEFINE_HANDLER(CMSG_PARTY_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyInviteResponseOpcode); DEFINE_HANDLER(CMSG_PARTY_UNINVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyUninviteOpcode); + DEFINE_HANDLER(CMSG_PERFORM_ITEM_INTERACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PETITION_BUY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionBuy); DEFINE_HANDLER(CMSG_PETITION_RENAME_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionRenameGuild); DEFINE_HANDLER(CMSG_PETITION_SHOW_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowList); @@ -931,14 +939,16 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACK_SWING_LANDED_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_CLOSED_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_COMMODITY_PRICE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_HELLO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_ITEMS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_PENDING_SALES_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_BUCKET_ITEMS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_FAVORITE_ITEMS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_ITEMS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_OUTBID_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_OWNER_BID_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_REPLICATE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_REPLICATE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_WON_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AURA_POINTS_DEPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AURA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1370,6 +1380,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_INTERACTION_OPEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_INTERACTION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1885,6 +1897,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO_IS, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_MAP_INTERACTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_QUEST_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_SERVER_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index f82f50d20e4..b114c55c8ba 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -44,36 +44,43 @@ enum OpcodeMisc : uint16 enum OpcodeClient : uint16 { - CMSG_ACCEPT_GUILD_INVITE = 0x35FD, + CMSG_ACCEPT_GUILD_INVITE = 0x35FC, CMSG_ACCEPT_TRADE = 0x315A, - CMSG_ACCEPT_WARGAME_INVITE = 0x35E1, + CMSG_ACCEPT_WARGAME_INVITE = 0x35E0, CMSG_ACTIVATE_TAXI = 0x34AB, CMSG_ADDON_LIST = 0x35D8, - CMSG_ADD_BATTLENET_FRIEND = 0x365C, - CMSG_ADD_FRIEND = 0x36D2, - CMSG_ADD_IGNORE = 0x36D6, - CMSG_ADD_TOY = 0x329B, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3204, - CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x3342, - CMSG_ADVENTURE_MAP_POI_QUERY = 0x3249, - CMSG_ALTER_APPEARANCE = 0x34F6, + CMSG_ADD_BATTLENET_FRIEND = 0x365B, + CMSG_ADD_FRIEND = 0x36D1, + CMSG_ADD_IGNORE = 0x36D5, + CMSG_ADD_TOY = 0x329C, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3203, + CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x3346, + CMSG_ADVENTURE_MAP_POI_QUERY = 0x324A, + CMSG_ALTER_APPEARANCE = 0x34FD, CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B0, CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B1, - CMSG_AREA_TRIGGER = 0x31D8, + CMSG_AREA_TRIGGER = 0x31D7, CMSG_ARTIFACT_ADD_POWER = 0x31A9, CMSG_ARTIFACT_SET_APPEARANCE = 0x31AB, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320C, - CMSG_ATTACK_STOP = 0x3258, - CMSG_ATTACK_SWING = 0x3257, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320B, + CMSG_ATTACK_STOP = 0x3259, + CMSG_ATTACK_SWING = 0x3258, + CMSG_AUCTION_BROWSE_QUERY = 0x34D0, + CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34D8, + CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34D7, CMSG_AUCTION_HELLO_REQUEST = 0x34CB, - CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x34D1, - CMSG_AUCTION_LIST_ITEMS = 0x34CE, - CMSG_AUCTION_LIST_OWNER_ITEMS = 0x34D0, - CMSG_AUCTION_LIST_PENDING_SALES = 0x34D3, - CMSG_AUCTION_PLACE_BID = 0x34D2, + CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x34D4, + CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x34D1, + CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x34D2, + CMSG_AUCTION_LIST_ITEMS_BY_ITEM_KEYS = 0x34D5, + CMSG_AUCTION_LIST_OWNER_ITEMS = 0x34D3, + CMSG_AUCTION_PLACE_BID = 0x34CF, CMSG_AUCTION_REMOVE_ITEM = 0x34CD, - CMSG_AUCTION_REPLICATE_ITEMS = 0x34CF, + CMSG_AUCTION_REPLICATE_ITEMS = 0x34CE, + CMSG_AUCTION_SELL_COMMODITY = 0x34D9, CMSG_AUCTION_SELL_ITEM = 0x34CC, + CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3736, + CMSG_AUCTION_START_COMMODITIES_PURCHASE = 0x34D6, CMSG_AUTH_CONTINUED_SESSION = 0x3766, CMSG_AUTH_SESSION = 0x3765, CMSG_AUTOBANK_ITEM = 0x3996, @@ -83,104 +90,104 @@ enum OpcodeClient : uint16 CMSG_AUTO_EQUIP_ITEM = 0x399A, CMSG_AUTO_EQUIP_ITEM_SLOT = 0x399F, CMSG_AUTO_STORE_BAG_ITEM = 0x399B, - CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3360, - CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x334C, - CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3362, - CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3361, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3366, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3350, + CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3368, + CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3367, CMSG_BANKER_ACTIVATE = 0x34B3, CMSG_BATTLEFIELD_LEAVE = 0x3173, CMSG_BATTLEFIELD_LIST = 0x317E, - CMSG_BATTLEFIELD_PORT = 0x3526, - CMSG_BATTLEMASTER_HELLO = 0x32B3, - CMSG_BATTLEMASTER_JOIN = 0x3521, - CMSG_BATTLEMASTER_JOIN_ARENA = 0x3522, - CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3524, - CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3523, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D5, - CMSG_BATTLENET_REQUEST = 0x36F9, - CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36FE, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CF, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3717, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CE, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C5, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BD, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BE, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3710, - CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C8, - CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C6, - CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x370D, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x370C, - CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x370E, - CMSG_BATTLE_PAY_START_PURCHASE = 0x36F5, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F6, - CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C7, - CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x370F, - CMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x36F4, + CMSG_BATTLEFIELD_PORT = 0x352F, + CMSG_BATTLEMASTER_HELLO = 0x32B4, + CMSG_BATTLEMASTER_JOIN = 0x3528, + CMSG_BATTLEMASTER_JOIN_ARENA = 0x3529, + CMSG_BATTLEMASTER_JOIN_BRAWL = 0x352D, + CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x352A, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D4, + CMSG_BATTLENET_REQUEST = 0x36F8, + CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36FD, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CE, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3716, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CD, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C4, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BC, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BD, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370F, + CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C7, + CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C5, + CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x370C, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x370B, + CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x370D, + CMSG_BATTLE_PAY_START_PURCHASE = 0x36F4, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F5, + CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C6, + CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x370E, + CMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x36F3, CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C, - 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 = 0x3631, - CMSG_BATTLE_PET_SUMMON = 0x3629, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E2, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E1, + 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 = 0x3630, + CMSG_BATTLE_PET_SUMMON = 0x3628, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E1, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E0, CMSG_BEGIN_TRADE = 0x3157, CMSG_BINDER_ACTIVATE = 0x34B2, - CMSG_BLACK_MARKET_BID_ON_ITEM = 0x352E, - CMSG_BLACK_MARKET_OPEN = 0x352C, - CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x352D, - CMSG_BONUS_ROLL = 0x3363, - CMSG_BUG_REPORT = 0x3688, + CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3537, + CMSG_BLACK_MARKET_OPEN = 0x3535, + CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3536, + CMSG_BONUS_ROLL = 0x3369, + CMSG_BUG_REPORT = 0x3687, CMSG_BUSY_TRADE = 0x3158, CMSG_BUY_BACK_ITEM = 0x34A4, CMSG_BUY_BANK_SLOT = 0x34B4, CMSG_BUY_ITEM = 0x34A3, CMSG_BUY_REAGENT_BANK = 0x34B5, - CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36EE, - CMSG_BUY_WOW_TOKEN_START = 0x36ED, - CMSG_CAGE_BATTLE_PET = 0x31F3, - CMSG_CALENDAR_ADD_EVENT = 0x367F, - CMSG_CALENDAR_COMMUNITY_FILTER = 0x3673, - CMSG_CALENDAR_COMPLAIN = 0x367B, - CMSG_CALENDAR_COPY_EVENT = 0x367A, - CMSG_CALENDAR_EVENT_INVITE = 0x3674, - CMSG_CALENDAR_EVENT_MODERATOR_STATUS = 0x3678, - CMSG_CALENDAR_EVENT_RSVP = 0x3676, - CMSG_CALENDAR_EVENT_SIGN_UP = 0x367D, - CMSG_CALENDAR_EVENT_STATUS = 0x3677, - CMSG_CALENDAR_GET = 0x3671, - CMSG_CALENDAR_GET_EVENT = 0x3672, - CMSG_CALENDAR_GET_NUM_PENDING = 0x367C, - CMSG_CALENDAR_REMOVE_EVENT = 0x3679, - CMSG_CALENDAR_REMOVE_INVITE = 0x3675, - CMSG_CALENDAR_UPDATE_EVENT = 0x3680, + CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36ED, + CMSG_BUY_WOW_TOKEN_START = 0x36EC, + CMSG_CAGE_BATTLE_PET = 0x31F2, + CMSG_CALENDAR_ADD_EVENT = 0x367E, + CMSG_CALENDAR_COMMUNITY_FILTER = 0x3672, + CMSG_CALENDAR_COMPLAIN = 0x367A, + CMSG_CALENDAR_COPY_EVENT = 0x3679, + CMSG_CALENDAR_EVENT_INVITE = 0x3673, + CMSG_CALENDAR_EVENT_MODERATOR_STATUS = 0x3677, + CMSG_CALENDAR_EVENT_RSVP = 0x3675, + CMSG_CALENDAR_EVENT_SIGN_UP = 0x367C, + CMSG_CALENDAR_EVENT_STATUS = 0x3676, + CMSG_CALENDAR_GET = 0x3670, + CMSG_CALENDAR_GET_EVENT = 0x3671, + CMSG_CALENDAR_GET_NUM_PENDING = 0x367B, + CMSG_CALENDAR_REMOVE_EVENT = 0x3678, + CMSG_CALENDAR_REMOVE_INVITE = 0x3674, + CMSG_CALENDAR_UPDATE_EVENT = 0x367F, CMSG_CANCEL_AURA = 0x31AD, - CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34E8, - CMSG_CANCEL_CAST = 0x32A1, - CMSG_CANCEL_CHANNELLING = 0x326D, - CMSG_CANCEL_GROWTH_AURA = 0x3272, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3214, + CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34EF, + CMSG_CANCEL_CAST = 0x32A2, + CMSG_CANCEL_CHANNELLING = 0x326E, + CMSG_CANCEL_GROWTH_AURA = 0x3273, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3213, CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AC, - CMSG_CANCEL_MOUNT_AURA = 0x3283, + CMSG_CANCEL_MOUNT_AURA = 0x3284, CMSG_CANCEL_QUEUED_SPELL = 0x317F, - CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34F3, + CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34FA, CMSG_CANCEL_TRADE = 0x315C, - CMSG_CAN_DUEL = 0x3664, - CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x370B, - CMSG_CAST_SPELL = 0x329E, + CMSG_CAN_DUEL = 0x3663, + CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x370A, + CMSG_CAST_SPELL = 0x329F, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090, CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS = 0x308F, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x3324, - CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3325, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3306, - CMSG_CHANGE_SUB_GROUP = 0x364E, - CMSG_CHARACTER_RENAME_REQUEST = 0x36C3, - CMSG_CHAR_CUSTOMIZE = 0x3693, - CMSG_CHAR_DELETE = 0x36A0, - CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3699, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x3328, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3329, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x330A, + CMSG_CHANGE_SUB_GROUP = 0x364D, + CMSG_CHARACTER_RENAME_REQUEST = 0x36C2, + CMSG_CHAR_CUSTOMIZE = 0x3692, + CMSG_CHAR_DELETE = 0x369F, + CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3698, CMSG_CHAT_ADDON_MESSAGE = 0x37EE, CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF, CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3, @@ -217,117 +224,117 @@ enum OpcodeClient : uint16 CMSG_CHAT_REPORT_FILTERED = 0x37CC, CMSG_CHAT_REPORT_IGNORED = 0x37CB, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE, - CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36EC, - CMSG_CHOICE_RESPONSE = 0x32A3, + CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36EB, + CMSG_CHOICE_RESPONSE = 0x32A4, CMSG_CLEAR_NEW_APPEARANCE = 0x312F, CMSG_CLEAR_RAID_MARKER = 0x31A5, CMSG_CLEAR_TRADE_ITEM = 0x315E, - CMSG_CLIENT_PORT_GRAVEYARD = 0x3528, + CMSG_CLIENT_PORT_GRAVEYARD = 0x3531, CMSG_CLOSE_INTERACTION = 0x3493, - CMSG_CLOSE_QUEST_CHOICE = 0x32A4, - CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x3721, - CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371F, - CMSG_CLUB_FINDER_POST = 0x371C, - CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x3723, - CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x371D, - CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x371E, - CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x3722, - CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x3724, - CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x3720, - CMSG_CLUB_INVITE = 0x36FD, - CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3634, - CMSG_COMMENTATOR_ENABLE = 0x35F1, - CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F5, - CMSG_COMMENTATOR_EXIT_INSTANCE = 0x35F6, - CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F2, - CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F4, - CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F3, - CMSG_COMMENTATOR_START_WARGAME = 0x35F0, - CMSG_COMPLAINT = 0x366E, - CMSG_COMPLETE_CINEMATIC = 0x3546, - CMSG_COMPLETE_MOVIE = 0x34DE, + CMSG_CLOSE_QUEST_CHOICE = 0x32A5, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x3720, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371E, + CMSG_CLUB_FINDER_POST = 0x371B, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x3722, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x371C, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x371D, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x3721, + CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x3723, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371F, + CMSG_CLUB_INVITE = 0x36FC, + 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_START_WARGAME = 0x35EF, + CMSG_COMPLAINT = 0x366D, + CMSG_COMPLETE_CINEMATIC = 0x354F, + CMSG_COMPLETE_MOVIE = 0x34E5, CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AA, - CMSG_CONFIRM_RESPEC_WIPE = 0x320E, + CMSG_CONFIRM_RESPEC_WIPE = 0x320D, CMSG_CONNECT_TO_FAILED = 0x35D4, - CMSG_CONTRIBUTION_CONTRIBUTE = 0x3556, - CMSG_CONTRIBUTION_GET_STATE = 0x3557, - CMSG_CONVERSATION_LINE_STARTED = 0x3547, - CMSG_CONVERT_RAID = 0x3650, - CMSG_CREATE_CHARACTER = 0x3645, - CMSG_CREATE_SHIPMENT = 0x32F2, - CMSG_DB_QUERY_BULK = 0x35E5, - CMSG_DECLINE_GUILD_INVITES = 0x351F, - CMSG_DECLINE_PETITION = 0x3535, - CMSG_DELETE_EQUIPMENT_SET = 0x350C, - CMSG_DEL_FRIEND = 0x36D3, - CMSG_DEL_IGNORE = 0x36D7, - CMSG_DEPOSIT_REAGENT_BANK = 0x332D, - CMSG_DESTROY_ITEM = 0x3295, - CMSG_DF_BOOT_PLAYER_VOTE = 0x3616, - CMSG_DF_GET_JOIN_STATUS = 0x3614, - CMSG_DF_GET_SYSTEM_INFO = 0x3613, - CMSG_DF_JOIN = 0x3609, - CMSG_DF_LEAVE = 0x3612, - CMSG_DF_PROPOSAL_RESPONSE = 0x3608, - CMSG_DF_READY_CHECK_RESPONSE = 0x3619, - CMSG_DF_SET_ROLES = 0x3615, - CMSG_DF_TELEPORT = 0x3617, - CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3C, - CMSG_DISMISS_CRITTER = 0x34FA, - CMSG_DO_MASTER_LOOT_ROLL = 0x3213, - CMSG_DO_READY_CHECK = 0x3635, - CMSG_DUEL_RESPONSE = 0x34E3, - CMSG_EJECT_PASSENGER = 0x323E, - CMSG_EMOTE = 0x3542, + CMSG_CONTRIBUTION_CONTRIBUTE = 0x355F, + CMSG_CONTRIBUTION_GET_STATE = 0x3560, + CMSG_CONVERSATION_LINE_STARTED = 0x3550, + CMSG_CONVERT_RAID = 0x364F, + CMSG_CREATE_CHARACTER = 0x3644, + CMSG_CREATE_SHIPMENT = 0x32F6, + CMSG_DB_QUERY_BULK = 0x35E4, + CMSG_DECLINE_GUILD_INVITES = 0x3526, + CMSG_DECLINE_PETITION = 0x353E, + CMSG_DELETE_EQUIPMENT_SET = 0x3513, + CMSG_DEL_FRIEND = 0x36D2, + CMSG_DEL_IGNORE = 0x36D6, + CMSG_DEPOSIT_REAGENT_BANK = 0x3331, + CMSG_DESTROY_ITEM = 0x3296, + CMSG_DF_BOOT_PLAYER_VOTE = 0x3615, + CMSG_DF_GET_JOIN_STATUS = 0x3613, + CMSG_DF_GET_SYSTEM_INFO = 0x3612, + CMSG_DF_JOIN = 0x3608, + CMSG_DF_LEAVE = 0x3611, + CMSG_DF_PROPOSAL_RESPONSE = 0x3607, + CMSG_DF_READY_CHECK_RESPONSE = 0x3618, + CMSG_DF_SET_ROLES = 0x3614, + CMSG_DF_TELEPORT = 0x3616, + CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3D, + CMSG_DISMISS_CRITTER = 0x3501, + CMSG_DO_MASTER_LOOT_ROLL = 0x3212, + CMSG_DO_READY_CHECK = 0x3634, + CMSG_DUEL_RESPONSE = 0x34EA, + CMSG_EJECT_PASSENGER = 0x323F, + CMSG_EMOTE = 0x354B, CMSG_ENABLE_ENCRYPTION_ACK = 0x3767, CMSG_ENABLE_NAGLE = 0x376B, CMSG_ENABLE_TAXI_NODE = 0x34A9, - CMSG_ENGINE_SURVEY = 0x36E6, - CMSG_ENUM_CHARACTERS = 0x35E9, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36E0, - CMSG_FAR_SIGHT = 0x34E9, + CMSG_ENGINE_SURVEY = 0x36E5, + CMSG_ENUM_CHARACTERS = 0x35E8, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DF, + CMSG_FAR_SIGHT = 0x34F0, CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B1, CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B0, - CMSG_GAME_OBJ_REPORT_USE = 0x34F0, - CMSG_GAME_OBJ_USE = 0x34EF, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32DD, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32CE, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3320, - CMSG_GARRISON_COMPLETE_MISSION = 0x3313, - CMSG_GARRISON_GENERATE_RECRUITS = 0x32E0, - CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32EE, - CMSG_GARRISON_GET_MISSION_REWARD = 0x3346, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3315, - CMSG_GARRISON_PURCHASE_BUILDING = 0x32CA, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32E2, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x330A, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32DE, - CMSG_GARRISON_RENAME_FOLLOWER = 0x32DF, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32C9, - CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32E7, - CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32F1, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32F0, - CMSG_GARRISON_RESEARCH_TALENT = 0x32E3, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32CB, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32DB, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32D7, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32E1, - CMSG_GARRISON_START_MISSION = 0x3312, - CMSG_GARRISON_SWAP_BUILDINGS = 0x32CF, - CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E8, - CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B9, - CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3685, - CMSG_GET_GARRISON_INFO = 0x32C4, - CMSG_GET_ITEM_PURCHASE_DATA = 0x3530, - CMSG_GET_MIRROR_IMAGE_DATA = 0x3299, - CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EF, - CMSG_GET_RAF_ACCOUNT_INFO = 0x3725, - CMSG_GET_REMAINING_GAME_TIME = 0x36EF, - CMSG_GET_TROPHY_LIST = 0x3303, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E2, - CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3697, - CMSG_GM_TICKET_GET_CASE_STATUS = 0x3696, - CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3695, + CMSG_GAME_OBJ_REPORT_USE = 0x34F7, + CMSG_GAME_OBJ_USE = 0x34F6, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32E1, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32CF, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3324, + CMSG_GARRISON_COMPLETE_MISSION = 0x3317, + CMSG_GARRISON_GENERATE_RECRUITS = 0x32E4, + CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32F2, + CMSG_GARRISON_GET_MISSION_REWARD = 0x334A, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3319, + CMSG_GARRISON_PURCHASE_BUILDING = 0x32CB, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32E6, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x330E, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32E2, + CMSG_GARRISON_RENAME_FOLLOWER = 0x32E3, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32CA, + CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32EB, + CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32F5, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32F4, + CMSG_GARRISON_RESEARCH_TALENT = 0x32E7, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32CC, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32DF, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32D8, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32E5, + CMSG_GARRISON_START_MISSION = 0x3316, + CMSG_GARRISON_SWAP_BUILDINGS = 0x32D0, + CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7, + CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B8, + CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3684, + CMSG_GET_GARRISON_INFO = 0x32C5, + CMSG_GET_ITEM_PURCHASE_DATA = 0x3539, + CMSG_GET_MIRROR_IMAGE_DATA = 0x329A, + CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE, + CMSG_GET_RAF_ACCOUNT_INFO = 0x3724, + CMSG_GET_REMAINING_GAME_TIME = 0x36EE, + CMSG_GET_TROPHY_LIST = 0x3307, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E1, + CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3696, + CMSG_GM_TICKET_GET_CASE_STATUS = 0x3695, + CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3694, CMSG_GOSSIP_SELECT_OPTION = 0x3494, CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308E, CMSG_GUILD_ADD_RANK = 0x3065, @@ -353,7 +360,7 @@ enum OpcodeClient : uint16 CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x3072, CMSG_GUILD_GET_RANKS = 0x306E, CMSG_GUILD_GET_ROSTER = 0x3074, - CMSG_GUILD_INVITE_BY_NAME = 0x3607, + CMSG_GUILD_INVITE_BY_NAME = 0x3606, CMSG_GUILD_LEAVE = 0x3063, CMSG_GUILD_NEWS_UPDATE_STICKY = 0x306F, CMSG_GUILD_OFFICER_REMOVE_MEMBER = 0x3064, @@ -366,206 +373,207 @@ 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 = 0x36CA, + CMSG_GUILD_SET_GUILD_MASTER = 0x36C9, CMSG_GUILD_SET_MEMBER_NOTE = 0x3073, CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3068, CMSG_GUILD_SHIFT_RANK = 0x3067, CMSG_GUILD_UPDATE_INFO_TEXT = 0x3076, CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3075, - CMSG_HEARTH_AND_RESURRECT = 0x3508, - CMSG_HOTFIX_REQUEST = 0x35E6, + CMSG_HEARTH_AND_RESURRECT = 0x350F, + CMSG_HOTFIX_REQUEST = 0x35E5, CMSG_IGNORE_TRADE = 0x3159, CMSG_INITIATE_ROLE_POLL = 0x35DA, CMSG_INITIATE_TRADE = 0x3156, - CMSG_INSPECT = 0x352A, - CMSG_INSTANCE_LOCK_RESPONSE = 0x350D, - CMSG_ISLAND_QUEUE = 0x3390, - CMSG_ITEM_PURCHASE_REFUND = 0x3531, - CMSG_ITEM_TEXT_QUERY = 0x3321, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DF, + CMSG_INSPECT = 0x3533, + CMSG_INSTANCE_LOCK_RESPONSE = 0x3514, + CMSG_ISLAND_QUEUE = 0x3396, + CMSG_ITEM_PURCHASE_REFUND = 0x353A, + CMSG_ITEM_TEXT_QUERY = 0x3325, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DE, CMSG_JOIN_RATED_BATTLEGROUND = 0x3178, - CMSG_KEEP_ALIVE = 0x3681, - CMSG_KEYBOUND_OVERRIDE = 0x3226, - CMSG_LEARN_PVP_TALENTS = 0x3555, - CMSG_LEARN_TALENTS = 0x3553, - CMSG_LEAVE_GROUP = 0x364B, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E0, - CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360D, - CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360E, - CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360F, - CMSG_LFG_LIST_GET_STATUS = 0x360B, - CMSG_LFG_LIST_INVITE_APPLICANT = 0x3610, - CMSG_LFG_LIST_INVITE_RESPONSE = 0x3611, - CMSG_LFG_LIST_JOIN = 0x335E, - CMSG_LFG_LIST_LEAVE = 0x360A, - CMSG_LFG_LIST_SEARCH = 0x360C, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x335F, - CMSG_LF_GUILD_ADD_RECRUIT = 0x361C, - CMSG_LF_GUILD_BROWSE = 0x361E, + CMSG_KEEP_ALIVE = 0x3680, + CMSG_KEYBOUND_OVERRIDE = 0x3225, + CMSG_LEARN_PVP_TALENTS = 0x355E, + CMSG_LEARN_TALENTS = 0x355C, + CMSG_LEAVE_GROUP = 0x364A, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DF, + CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360C, + CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360D, + CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360E, + CMSG_LFG_LIST_GET_STATUS = 0x360A, + CMSG_LFG_LIST_INVITE_APPLICANT = 0x360F, + CMSG_LFG_LIST_INVITE_RESPONSE = 0x3610, + CMSG_LFG_LIST_JOIN = 0x3364, + CMSG_LFG_LIST_LEAVE = 0x3609, + CMSG_LFG_LIST_SEARCH = 0x360B, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x3365, + CMSG_LF_GUILD_ADD_RECRUIT = 0x361B, + CMSG_LF_GUILD_BROWSE = 0x361D, CMSG_LF_GUILD_DECLINE_RECRUIT = 0x3079, CMSG_LF_GUILD_GET_APPLICATIONS = 0x307A, CMSG_LF_GUILD_GET_GUILD_POST = 0x3077, CMSG_LF_GUILD_GET_RECRUITS = 0x3078, CMSG_LF_GUILD_REMOVE_RECRUIT = 0x307B, - CMSG_LF_GUILD_SET_GUILD_POST = 0x361D, + CMSG_LF_GUILD_SET_GUILD_POST = 0x361C, CMSG_LIST_INVENTORY = 0x34A1, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36BC, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x36BB, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36BA, - CMSG_LOADING_SCREEN_NOTIFY = 0x35F9, - CMSG_LOAD_SELECTED_TROPHY = 0x3304, - CMSG_LOGOUT_CANCEL = 0x34D9, - CMSG_LOGOUT_INSTANT = 0x34DA, - CMSG_LOGOUT_REQUEST = 0x34D7, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36BB, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x36BA, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B9, + CMSG_LOADING_SCREEN_NOTIFY = 0x35F8, + CMSG_LOAD_SELECTED_TROPHY = 0x3308, + CMSG_LOGOUT_CANCEL = 0x34E0, + CMSG_LOGOUT_INSTANT = 0x34E1, + CMSG_LOGOUT_REQUEST = 0x34DE, CMSG_LOG_DISCONNECT = 0x3769, CMSG_LOG_STREAMING_ERROR = 0x376D, - CMSG_LOOT_ITEM = 0x3211, - CMSG_LOOT_MONEY = 0x3210, - CMSG_LOOT_RELEASE = 0x3215, - CMSG_LOOT_ROLL = 0x3216, - CMSG_LOOT_UNIT = 0x320F, - CMSG_LOW_LEVEL_RAID1 = 0x36A4, - CMSG_LOW_LEVEL_RAID2 = 0x3514, - CMSG_MAIL_CREATE_TEXT_ITEM = 0x353C, - CMSG_MAIL_DELETE = 0x3228, - CMSG_MAIL_GET_LIST = 0x3537, - CMSG_MAIL_MARK_AS_READ = 0x353B, - CMSG_MAIL_RETURN_TO_SENDER = 0x3657, - CMSG_MAIL_TAKE_ITEM = 0x3539, - CMSG_MAIL_TAKE_MONEY = 0x3538, - CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322A, - CMSG_MASTER_LOOT_ITEM = 0x3212, - CMSG_MINIMAP_PING = 0x364D, + CMSG_LOOT_ITEM = 0x3210, + CMSG_LOOT_MONEY = 0x320F, + CMSG_LOOT_RELEASE = 0x3214, + CMSG_LOOT_ROLL = 0x3215, + CMSG_LOOT_UNIT = 0x320E, + CMSG_LOW_LEVEL_RAID1 = 0x36A3, + CMSG_LOW_LEVEL_RAID2 = 0x351B, + CMSG_MAIL_CREATE_TEXT_ITEM = 0x3545, + CMSG_MAIL_DELETE = 0x3227, + CMSG_MAIL_GET_LIST = 0x3540, + CMSG_MAIL_MARK_AS_READ = 0x3544, + CMSG_MAIL_RETURN_TO_SENDER = 0x3656, + CMSG_MAIL_TAKE_ITEM = 0x3542, + CMSG_MAIL_TAKE_MONEY = 0x3541, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3229, + CMSG_MASTER_LOOT_ITEM = 0x3211, + CMSG_MINIMAP_PING = 0x364C, CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A, CMSG_MOUNT_CLEAR_FANFARE = 0x312D, - CMSG_MOUNT_SET_FAVORITE = 0x3633, - CMSG_MOUNT_SPECIAL_ANIM = 0x3284, - CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A12, - CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2C, - CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A31, - CMSG_MOVE_DISMISS_VEHICLE = 0x3A30, + CMSG_MOUNT_SET_FAVORITE = 0x3632, + CMSG_MOUNT_SPECIAL_ANIM = 0x3285, + CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A13, + CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2D, + CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A32, + CMSG_MOVE_DISMISS_VEHICLE = 0x3A31, CMSG_MOVE_DOUBLE_JUMP = 0x39EB, - CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1B, - CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A21, - CMSG_MOVE_FALL_LAND = 0x39F9, - CMSG_MOVE_FALL_RESET = 0x3A16, - CMSG_MOVE_FEATHER_FALL_ACK = 0x3A19, - CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2B, - CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2A, - CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A2F, - CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0B, - CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A09, - CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A08, - CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A1F, - CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0A, - CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A20, - CMSG_MOVE_FORCE_UNROOT_ACK = 0x3A0C, - CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A1E, - CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A32, - CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A33, - CMSG_MOVE_HEARTBEAT = 0x3A0D, - CMSG_MOVE_HOVER_ACK = 0x3A10, + CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1C, + CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A22, + CMSG_MOVE_FALL_LAND = 0x39FA, + CMSG_MOVE_FALL_RESET = 0x3A17, + CMSG_MOVE_FEATHER_FALL_ACK = 0x3A1A, + CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2C, + CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2B, + CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A30, + CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0C, + CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A0A, + CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A09, + CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A20, + CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0B, + CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A21, + CMSG_MOVE_FORCE_UNROOT_ACK = 0x3A0D, + CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A1F, + CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A33, + CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A34, + CMSG_MOVE_HEARTBEAT = 0x3A0E, + CMSG_MOVE_HOVER_ACK = 0x3A11, CMSG_MOVE_JUMP = 0x39EA, - CMSG_MOVE_KNOCK_BACK_ACK = 0x3A0F, - CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3A14, - CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3A13, - CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE = 0x3A3F, - CMSG_MOVE_SET_CAN_FLY_ACK = 0x3A24, - CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A22, - CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A36, - CMSG_MOVE_SET_FACING = 0x3A06, - CMSG_MOVE_SET_FLY = 0x3A25, - CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A23, - CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A3D, - CMSG_MOVE_SET_PITCH = 0x3A07, + CMSG_MOVE_KNOCK_BACK_ACK = 0x3A10, + CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3A15, + CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3A14, + CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE = 0x3A40, + CMSG_MOVE_SET_CAN_FLY_ACK = 0x3A25, + CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A23, + CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A37, + CMSG_MOVE_SET_FACING = 0x3A07, + CMSG_MOVE_SET_FLY = 0x3A26, + CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A24, + CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A3E, + CMSG_MOVE_SET_PITCH = 0x3A08, CMSG_MOVE_SET_RUN_MODE = 0x39F2, - CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A11, + CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A12, CMSG_MOVE_SET_WALK_MODE = 0x39F3, - CMSG_MOVE_SPLINE_DONE = 0x3A15, - CMSG_MOVE_START_ASCEND = 0x3A26, + CMSG_MOVE_SPLINE_DONE = 0x3A16, + CMSG_MOVE_START_ASCEND = 0x3A27, CMSG_MOVE_START_BACKWARD = 0x39E5, - CMSG_MOVE_START_DESCEND = 0x3A2D, + CMSG_MOVE_START_DESCEND = 0x3A2E, CMSG_MOVE_START_FORWARD = 0x39E4, CMSG_MOVE_START_PITCH_DOWN = 0x39F0, CMSG_MOVE_START_PITCH_UP = 0x39EF, CMSG_MOVE_START_STRAFE_LEFT = 0x39E7, CMSG_MOVE_START_STRAFE_RIGHT = 0x39E8, - CMSG_MOVE_START_SWIM = 0x39FA, + CMSG_MOVE_START_SWIM = 0x39FB, CMSG_MOVE_START_TURN_LEFT = 0x39EC, CMSG_MOVE_START_TURN_RIGHT = 0x39ED, CMSG_MOVE_STOP = 0x39E6, - CMSG_MOVE_STOP_ASCEND = 0x3A27, + CMSG_MOVE_STOP_ASCEND = 0x3A28, CMSG_MOVE_STOP_PITCH = 0x39F1, CMSG_MOVE_STOP_STRAFE = 0x39E9, - CMSG_MOVE_STOP_SWIM = 0x39FB, + CMSG_MOVE_STOP_SWIM = 0x39FC, CMSG_MOVE_STOP_TURN = 0x39EE, - CMSG_MOVE_TELEPORT_ACK = 0x39F8, - CMSG_MOVE_TIME_SKIPPED = 0x3A18, - CMSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x3A05, - CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A17, - CMSG_MOVE_WATER_WALK_ACK = 0x3A1A, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D5, - CMSG_NEXT_CINEMATIC_CAMERA = 0x3545, + CMSG_MOVE_TELEPORT_ACK = 0x39F9, + CMSG_MOVE_TIME_SKIPPED = 0x3A19, + CMSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x3A06, + CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A18, + CMSG_MOVE_WATER_WALK_ACK = 0x3A1B, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D4, + CMSG_NEXT_CINEMATIC_CAMERA = 0x354E, CMSG_OBJECT_UPDATE_FAILED = 0x3180, CMSG_OBJECT_UPDATE_RESCUED = 0x3181, - CMSG_OFFER_PETITION = 0x36B2, - CMSG_OPENING_CINEMATIC = 0x3544, - CMSG_OPEN_ITEM = 0x3322, - CMSG_OPEN_MISSION_NPC = 0x32E9, - CMSG_OPEN_SHIPMENT_NPC = 0x32EF, - CMSG_OPEN_TRADESKILL_NPC = 0x32FA, - CMSG_OPT_OUT_OF_LOOT = 0x34F7, - CMSG_PARTY_INVITE = 0x3603, - CMSG_PARTY_INVITE_RESPONSE = 0x3604, - CMSG_PARTY_UNINVITE = 0x3649, + CMSG_OFFER_PETITION = 0x36B1, + CMSG_OPENING_CINEMATIC = 0x354D, + CMSG_OPEN_ITEM = 0x3326, + CMSG_OPEN_MISSION_NPC = 0x32ED, + CMSG_OPEN_SHIPMENT_NPC = 0x32F3, + CMSG_OPEN_TRADESKILL_NPC = 0x32FE, + CMSG_OPT_OUT_OF_LOOT = 0x34FE, + CMSG_PARTY_INVITE = 0x3602, + CMSG_PARTY_INVITE_RESPONSE = 0x3603, + CMSG_PARTY_UNINVITE = 0x3648, + CMSG_PERFORM_ITEM_INTERACTION = 0x3231, CMSG_PETITION_BUY = 0x34C9, - CMSG_PETITION_RENAME_GUILD = 0x36CB, + CMSG_PETITION_RENAME_GUILD = 0x36CA, CMSG_PETITION_SHOW_LIST = 0x34C8, CMSG_PETITION_SHOW_SIGNATURES = 0x34CA, CMSG_PET_ABANDON = 0x348D, CMSG_PET_ACTION = 0x348B, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E4, - CMSG_PET_BATTLE_INPUT = 0x3642, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3227, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E3, - CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3643, - CMSG_PET_BATTLE_REQUEST_PVP = 0x31DD, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DE, - CMSG_PET_BATTLE_REQUEST_WILD = 0x31DB, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E5, - CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DC, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E3, + CMSG_PET_BATTLE_INPUT = 0x3641, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3226, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E2, + CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3642, + CMSG_PET_BATTLE_REQUEST_PVP = 0x31DC, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DD, + CMSG_PET_BATTLE_REQUEST_WILD = 0x31DA, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E4, + CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DB, CMSG_PET_CANCEL_AURA = 0x348E, - CMSG_PET_CAST_SPELL = 0x329D, - CMSG_PET_RENAME = 0x3687, + CMSG_PET_CAST_SPELL = 0x329E, + CMSG_PET_RENAME = 0x3686, CMSG_PET_SET_ACTION = 0x348A, CMSG_PET_SPELL_AUTOCAST = 0x348F, CMSG_PET_STOP_ATTACK = 0x348C, CMSG_PING = 0x3768, - CMSG_PLAYER_LOGIN = 0x35EB, + CMSG_PLAYER_LOGIN = 0x35EA, CMSG_PUSH_QUEST_TO_PARTY = 0x349F, CMSG_PVP_LOG_DATA = 0x317B, - CMSG_QUERY_BATTLE_PET_NAME = 0x3279, - CMSG_QUERY_COMMUNITY_NAME = 0x368E, - CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3662, - CMSG_QUERY_CORPSE_TRANSPORT = 0x3663, + CMSG_QUERY_BATTLE_PET_NAME = 0x327A, + CMSG_QUERY_COMMUNITY_NAME = 0x368D, + CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3661, + CMSG_QUERY_CORPSE_TRANSPORT = 0x3662, CMSG_QUERY_COUNTDOWN_TIMER = 0x31A8, - CMSG_QUERY_CREATURE = 0x3273, - CMSG_QUERY_GAME_OBJECT = 0x3274, - CMSG_QUERY_GARRISON_CREATURE_NAME = 0x327A, - CMSG_QUERY_GUILD_INFO = 0x3691, - CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3501, - CMSG_QUERY_NEXT_MAIL_TIME = 0x353A, - CMSG_QUERY_NPC_TEXT = 0x3275, - CMSG_QUERY_PAGE_TEXT = 0x3277, - CMSG_QUERY_PETITION = 0x327B, - CMSG_QUERY_PET_NAME = 0x3278, - CMSG_QUERY_PLAYER_NAME = 0x368D, + CMSG_QUERY_CREATURE = 0x3274, + CMSG_QUERY_GAME_OBJECT = 0x3275, + CMSG_QUERY_GARRISON_CREATURE_NAME = 0x327B, + CMSG_QUERY_GUILD_INFO = 0x3690, + CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3508, + CMSG_QUERY_NEXT_MAIL_TIME = 0x3543, + CMSG_QUERY_NPC_TEXT = 0x3276, + CMSG_QUERY_PAGE_TEXT = 0x3278, + CMSG_QUERY_PETITION = 0x327C, + CMSG_QUERY_PET_NAME = 0x3279, + CMSG_QUERY_PLAYER_NAME = 0x368C, CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175, - CMSG_QUERY_QUEST_INFO = 0x3276, - CMSG_QUERY_REALM_NAME = 0x3690, - CMSG_QUERY_SCENARIO_POI = 0x3658, - CMSG_QUERY_TIME = 0x34D6, - CMSG_QUERY_TREASURE_PICKER = 0x3348, + CMSG_QUERY_QUEST_INFO = 0x3277, + CMSG_QUERY_REALM_NAME = 0x368F, + CMSG_QUERY_SCENARIO_POI = 0x3657, + CMSG_QUERY_TIME = 0x34DD, + CMSG_QUERY_TREASURE_PICKER = 0x334C, CMSG_QUERY_VOID_STORAGE = 0x31A1, CMSG_QUEST_CONFIRM_ACCEPT = 0x349E, CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3498, @@ -576,210 +584,212 @@ enum OpcodeClient : uint16 CMSG_QUEST_GIVER_REQUEST_REWARD = 0x349B, CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x349D, CMSG_QUEST_GIVER_STATUS_QUERY = 0x349C, - CMSG_QUEST_LOG_REMOVE_QUEST = 0x352F, - CMSG_QUEST_POI_QUERY = 0x36B3, + CMSG_QUEST_LOG_REMOVE_QUEST = 0x3538, + CMSG_QUEST_POI_QUERY = 0x36B2, CMSG_QUEST_PUSH_RESULT = 0x34A0, - CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x339F, - CMSG_QUEST_SESSION_REQUEST_START = 0x339E, - CMSG_QUEST_SESSION_REQUEST_STOP = 0x3730, + CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33A5, + CMSG_QUEST_SESSION_REQUEST_START = 0x33A4, + CMSG_QUEST_SESSION_REQUEST_STOP = 0x372F, CMSG_QUEUED_MESSAGES_END = 0x376C, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x370A, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3709, - CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3735, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3708, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3707, - CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3505, - CMSG_RAF_CLAIM_NEXT_REWARD = 0x3726, - CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3728, - CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3727, - CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E7, - CMSG_RANDOM_ROLL = 0x3656, - CMSG_READY_CHECK_RESPONSE = 0x3636, - CMSG_READ_ITEM = 0x3323, - CMSG_RECLAIM_CORPSE = 0x34DC, - CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36F1, - CMSG_REDEEM_WOW_TOKEN_START = 0x36F0, - CMSG_REMOVE_NEW_ITEM = 0x334B, - CMSG_REMOVE_RAF_RECRUIT = 0x3729, - CMSG_REORDER_CHARACTERS = 0x35EA, - CMSG_REPAIR_ITEM = 0x34ED, - CMSG_REPLACE_TROPHY = 0x3305, - CMSG_REPOP_REQUEST = 0x3527, - CMSG_REPORT_CLIENT_VARIABLES = 0x3704, - CMSG_REPORT_ENABLED_ADDONS = 0x3703, - CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3705, - CMSG_REPORT_PVP_PLAYER_AFK = 0x34F5, - CMSG_REPORT_SERVER_LAG = 0x3396, - CMSG_REQUEST_ACCOUNT_DATA = 0x369A, - CMSG_REQUEST_AREA_POI_UPDATE = 0x334A, - CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DD, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3709, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3708, + CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3734, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3707, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3706, + CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x350C, + CMSG_RAF_CLAIM_NEXT_REWARD = 0x3725, + CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3727, + CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3726, + CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E6, + CMSG_RANDOM_ROLL = 0x3655, + CMSG_READY_CHECK_RESPONSE = 0x3635, + CMSG_READ_ITEM = 0x3327, + CMSG_RECLAIM_CORPSE = 0x34E3, + CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36F0, + CMSG_REDEEM_WOW_TOKEN_START = 0x36EF, + CMSG_REMOVE_NEW_ITEM = 0x334F, + CMSG_REMOVE_RAF_RECRUIT = 0x3728, + CMSG_REORDER_CHARACTERS = 0x35E9, + CMSG_REPAIR_ITEM = 0x34F4, + CMSG_REPLACE_TROPHY = 0x3309, + CMSG_REPOP_REQUEST = 0x3530, + CMSG_REPORT_CLIENT_VARIABLES = 0x3703, + CMSG_REPORT_ENABLED_ADDONS = 0x3702, + CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3704, + CMSG_REPORT_PVP_PLAYER_AFK = 0x34FC, + CMSG_REPORT_SERVER_LAG = 0x339C, + CMSG_REQUEST_ACCOUNT_DATA = 0x3699, + CMSG_REQUEST_AREA_POI_UPDATE = 0x334E, + CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC, CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317D, CMSG_REQUEST_CEMETERY_LIST = 0x3176, - CMSG_REQUEST_CHALLENGE_MODE_AFFIXES = 0x3208, - CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3692, - CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32B6, - CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x352B, - CMSG_REQUEST_FORCED_REACTIONS = 0x320A, + CMSG_REQUEST_CHALLENGE_MODE_AFFIXES = 0x3207, + CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3691, + CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32B7, + CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3534, + CMSG_REQUEST_FORCED_REACTIONS = 0x3209, CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A7, CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A6, - CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32A6, - CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F8, - CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3655, + CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32A7, + CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7, + CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3654, CMSG_REQUEST_PET_INFO = 0x3490, - CMSG_REQUEST_PLAYED_TIME = 0x327E, + CMSG_REQUEST_PLAYED_TIME = 0x327F, CMSG_REQUEST_PVP_BRAWL_INFO = 0x3195, CMSG_REQUEST_PVP_REWARDS = 0x3194, - CMSG_REQUEST_QUEST_LINES_FOR_MAP = 0x3391, - CMSG_REQUEST_RAID_INFO = 0x36CC, - CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x35E4, + CMSG_REQUEST_QUEST_LINES_FOR_MAP = 0x3397, + CMSG_REQUEST_RAID_INFO = 0x36CB, + CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x35E3, CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309B, CMSG_REQUEST_RESEARCH_HISTORY = 0x3167, CMSG_REQUEST_STABLED_PETS = 0x3491, - CMSG_REQUEST_VEHICLE_EXIT = 0x3239, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x323B, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x323A, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x323C, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3349, - CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36E9, - CMSG_RESET_CHALLENGE_MODE = 0x3206, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3207, - CMSG_RESET_INSTANCES = 0x366A, - CMSG_RESURRECT_RESPONSE = 0x3686, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x3307, - CMSG_RIDE_VEHICLE_INTERACT = 0x323D, + CMSG_REQUEST_VEHICLE_EXIT = 0x323A, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x323C, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x323B, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x323D, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x334D, + CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36E8, + CMSG_RESET_CHALLENGE_MODE = 0x3205, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3206, + CMSG_RESET_INSTANCES = 0x3669, + CMSG_RESURRECT_RESPONSE = 0x3685, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x330B, + CMSG_RIDE_VEHICLE_INTERACT = 0x323E, CMSG_SAVE_CUF_PROFILES = 0x318B, - CMSG_SAVE_EQUIPMENT_SET = 0x350B, - CMSG_SAVE_GUILD_EMBLEM = 0x32AA, - CMSG_SCENE_PLAYBACK_CANCELED = 0x3223, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x3222, - CMSG_SCENE_TRIGGER_EVENT = 0x3224, - CMSG_SELF_RES = 0x3532, + CMSG_SAVE_EQUIPMENT_SET = 0x3512, + CMSG_SAVE_GUILD_EMBLEM = 0x32AB, + CMSG_SCENE_PLAYBACK_CANCELED = 0x3222, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x3221, + CMSG_SCENE_TRIGGER_EVENT = 0x3223, + CMSG_SELF_RES = 0x353B, CMSG_SELL_ITEM = 0x34A2, - CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36EB, - CMSG_SELL_WOW_TOKEN_START = 0x36EA, - CMSG_SEND_CONTACT_LIST = 0x36D1, - CMSG_SEND_MAIL = 0x35FB, + CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36EA, + CMSG_SELL_WOW_TOKEN_START = 0x36E9, + CMSG_SEND_CONTACT_LIST = 0x36D0, + CMSG_SEND_MAIL = 0x35FA, CMSG_SEND_TEXT_EMOTE = 0x3488, - CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3229, - CMSG_SET_ACTION_BAR_TOGGLES = 0x3533, - CMSG_SET_ACTION_BUTTON = 0x3637, - CMSG_SET_ACTIVE_MOVER = 0x3A37, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32B7, - CMSG_SET_ASSISTANT_LEADER = 0x3651, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3326, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3327, - CMSG_SET_CONTACT_NOTES = 0x36D4, + CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3228, + CMSG_SET_ACTION_BAR_TOGGLES = 0x353C, + CMSG_SET_ACTION_BUTTON = 0x3636, + CMSG_SET_ACTIVE_MOVER = 0x3A38, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32B8, + CMSG_SET_ASSISTANT_LEADER = 0x3650, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x332A, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x332B, + CMSG_SET_CONTACT_NOTES = 0x36D3, CMSG_SET_CURRENCY_FLAGS = 0x3169, - CMSG_SET_DIFFICULTY_ID = 0x3225, - CMSG_SET_DUNGEON_DIFFICULTY = 0x3684, - CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3618, - CMSG_SET_FACTION_AT_WAR = 0x34DF, - CMSG_SET_FACTION_INACTIVE = 0x34E1, - CMSG_SET_FACTION_NOT_AT_WAR = 0x34E0, - CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B9, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3329, - CMSG_SET_LFG_BONUS_FACTION_ID = 0x32A5, - CMSG_SET_LOOT_METHOD = 0x364A, - CMSG_SET_LOOT_SPECIALIZATION = 0x3540, - CMSG_SET_PARTY_ASSIGNMENT = 0x3653, - CMSG_SET_PARTY_LEADER = 0x364C, + CMSG_SET_DIFFICULTY_ID = 0x3224, + CMSG_SET_DUNGEON_DIFFICULTY = 0x3683, + CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3617, + CMSG_SET_FACTION_AT_WAR = 0x34E6, + CMSG_SET_FACTION_INACTIVE = 0x34E8, + CMSG_SET_FACTION_NOT_AT_WAR = 0x34E7, + CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B8, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x332D, + CMSG_SET_LFG_BONUS_FACTION_ID = 0x32A6, + CMSG_SET_LOOT_METHOD = 0x3649, + CMSG_SET_LOOT_SPECIALIZATION = 0x3549, + CMSG_SET_PARTY_ASSIGNMENT = 0x3652, + CMSG_SET_PARTY_LEADER = 0x364B, CMSG_SET_PET_SLOT = 0x3168, - CMSG_SET_PLAYER_DECLINED_NAMES = 0x368C, + CMSG_SET_PLAYER_DECLINED_NAMES = 0x368B, CMSG_SET_PREFERRED_CEMETERY = 0x3177, - CMSG_SET_PVP = 0x32AE, - CMSG_SET_RAID_DIFFICULTY = 0x36DE, + CMSG_SET_PVP = 0x32AF, + CMSG_SET_RAID_DIFFICULTY = 0x36DD, CMSG_SET_ROLE = 0x35D9, - CMSG_SET_SAVED_INSTANCE_EXTEND = 0x368A, - CMSG_SET_SELECTION = 0x3529, + CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3689, + CMSG_SET_SELECTION = 0x3532, CMSG_SET_SHEATHED = 0x3489, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3328, - CMSG_SET_TAXI_BENCHMARK_MODE = 0x34F4, - CMSG_SET_TITLE = 0x3282, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x332C, + CMSG_SET_TAXI_BENCHMARK_MODE = 0x34FB, + CMSG_SET_TITLE = 0x3283, CMSG_SET_TRADE_CURRENCY = 0x3160, CMSG_SET_TRADE_GOLD = 0x315F, CMSG_SET_TRADE_ITEM = 0x315D, - CMSG_SET_USING_PARTY_GARRISON = 0x32EB, - CMSG_SET_WAR_MODE = 0x32AF, - CMSG_SET_WATCHED_FACTION = 0x34E2, - CMSG_SHOW_TRADE_SKILL = 0x36C4, - CMSG_SIGN_PETITION = 0x3534, - CMSG_SILENCE_PARTY_TALKER = 0x3654, - CMSG_SOCKET_GEMS = 0x34EC, - CMSG_SORT_BAGS = 0x332A, - CMSG_SORT_BANK_BAGS = 0x332B, - CMSG_SORT_REAGENT_BANK_BAGS = 0x332C, + CMSG_SET_USING_PARTY_GARRISON = 0x32EF, + CMSG_SET_WAR_MODE = 0x32B0, + CMSG_SET_WATCHED_FACTION = 0x34E9, + CMSG_SHOW_TRADE_SKILL = 0x36C3, + CMSG_SIGN_PETITION = 0x353D, + CMSG_SILENCE_PARTY_TALKER = 0x3653, + CMSG_SOCKET_GEMS = 0x34F3, + CMSG_SORT_BAGS = 0x332E, + CMSG_SORT_BANK_BAGS = 0x332F, + CMSG_SORT_REAGENT_BANK_BAGS = 0x3330, CMSG_SPELL_CLICK = 0x3495, CMSG_SPIRIT_HEALER_ACTIVATE = 0x34AF, CMSG_SPLIT_ITEM = 0x399E, CMSG_STAND_STATE_CHANGE = 0x3189, - CMSG_START_CHALLENGE_MODE = 0x354B, - CMSG_START_SPECTATOR_WAR_GAME = 0x35E0, - CMSG_START_WAR_GAME = 0x35DF, - CMSG_SUMMON_RESPONSE = 0x366C, - CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x3647, - CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646, - CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3648, + CMSG_START_CHALLENGE_MODE = 0x3554, + CMSG_START_SPECTATOR_WAR_GAME = 0x35DF, + CMSG_START_WAR_GAME = 0x35DE, + CMSG_SUMMON_RESPONSE = 0x366B, + CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x3646, + CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3645, + CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3647, CMSG_SURRENDER_ARENA = 0x3174, CMSG_SUSPEND_COMMS_ACK = 0x3764, CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A, CMSG_SWAP_INV_ITEM = 0x399D, CMSG_SWAP_ITEM = 0x399C, - CMSG_SWAP_SUB_GROUPS = 0x364F, + CMSG_SWAP_SUB_GROUPS = 0x364E, CMSG_SWAP_VOID_ITEM = 0x31A3, - CMSG_TABARD_VENDOR_ACTIVATE = 0x32AB, + CMSG_TABARD_VENDOR_ACTIVATE = 0x32AC, CMSG_TALK_TO_GOSSIP = 0x3492, CMSG_TAXI_NODE_STATUS_QUERY = 0x34A8, CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34AA, CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34AC, - CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3B, - CMSG_TIME_SYNC_RESPONSE = 0x3A38, - CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3A, - CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A39, - CMSG_TOGGLE_DIFFICULTY = 0x3659, - CMSG_TOGGLE_PVP = 0x32AD, - CMSG_TOTEM_DESTROYED = 0x34F9, + CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3C, + CMSG_TIME_SYNC_RESPONSE = 0x3A39, + CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3B, + CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3A, + CMSG_TOGGLE_DIFFICULTY = 0x3658, + CMSG_TOGGLE_PVP = 0x32AE, + CMSG_TOTEM_DESTROYED = 0x3500, CMSG_TOY_CLEAR_FANFARE = 0x312E, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x3347, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x334B, CMSG_TRAINER_BUY_SPELL = 0x34AE, CMSG_TRAINER_LIST = 0x34AD, CMSG_TRANSMOGRIFY_ITEMS = 0x3196, - CMSG_TURN_IN_PETITION = 0x3536, - CMSG_TUTORIAL = 0x36DF, + CMSG_TURN_IN_PETITION = 0x353F, + CMSG_TUTORIAL = 0x36DE, CMSG_TWITTER_CHECK_STATUS = 0x312A, CMSG_TWITTER_CONNECT = 0x3127, CMSG_TWITTER_DISCONNECT = 0x312B, - CMSG_TWITTER_POST = 0x332E, - CMSG_UI_TIME_REQUEST = 0x369F, + CMSG_TWITTER_POST = 0x3332, + CMSG_UI_TIME_REQUEST = 0x369E, CMSG_UNACCEPT_TRADE = 0x315B, - CMSG_UNDELETE_CHARACTER = 0x36E1, - CMSG_UNLEARN_SKILL = 0x34E6, + CMSG_UNDELETE_CHARACTER = 0x36E0, + CMSG_UNLEARN_SKILL = 0x34ED, CMSG_UNLEARN_SPECIALIZATION = 0x31A4, CMSG_UNLOCK_VOID_STORAGE = 0x31A0, - CMSG_UPDATE_ACCOUNT_DATA = 0x369B, - CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32A0, - CMSG_UPDATE_CLIENT_SETTINGS = 0x3666, - CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A3E, - CMSG_UPDATE_RAID_TARGET = 0x3652, - CMSG_UPDATE_SPELL_VISUAL = 0x329F, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F7, - CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36F2, - CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36E8, - CMSG_UPGRADE_GARRISON = 0x32BF, + CMSG_UPDATE_ACCOUNT_DATA = 0x369A, + CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32A1, + CMSG_UPDATE_CLIENT_SETTINGS = 0x3665, + CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A3F, + CMSG_UPDATE_RAID_TARGET = 0x3651, + CMSG_UPDATE_SPELL_VISUAL = 0x32A0, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F6, + CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36F1, + CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36E7, + CMSG_UPGRADE_GARRISON = 0x32C0, CMSG_USED_FOLLOW = 0x3186, - CMSG_USE_CRITTER_ITEM = 0x3243, + CMSG_USE_CRITTER_ITEM = 0x3244, CMSG_USE_EQUIPMENT_SET = 0x3995, - CMSG_USE_ITEM = 0x329A, - CMSG_USE_TOY = 0x329C, + CMSG_USE_ITEM = 0x329B, + CMSG_USE_TOY = 0x329D, CMSG_VIOLENCE_LEVEL = 0x3184, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3713, - CMSG_VOICE_CHAT_LOGIN = 0x3712, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3712, + CMSG_VOICE_CHAT_LOGIN = 0x3711, CMSG_VOID_STORAGE_TRANSFER = 0x31A2, - CMSG_WARDEN_DATA = 0x35ED, - CMSG_WHO = 0x3683, - CMSG_WHO_IS = 0x3682, - CMSG_WORLD_PORT_RESPONSE = 0x35FA, + CMSG_WARDEN_DATA = 0x35EC, + CMSG_WHO = 0x3682, + CMSG_WHO_IS = 0x3681, + CMSG_WORLD_PORT_RESPONSE = 0x35F9, CMSG_WRAP_ITEM = 0x3994, + CMSG_AUCTION_LIST_ITEMS = 0xBADD, + CMSG_AUCTION_LIST_PENDING_SALES = 0xBADD, CMSG_BF_MGR_ENTRY_INVITE_RESPONSE = 0xBADD, CMSG_BF_MGR_QUEUE_INVITE_RESPONSE = 0xBADD, CMSG_BF_MGR_QUEUE_EXIT_REQUEST = 0xBADD, @@ -788,8 +798,8 @@ enum OpcodeClient : uint16 enum OpcodeServer : uint16 { SMSG_ABORT_NEW_WORLD = 0x25AF, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x28C1, - SMSG_ACCOUNT_DATA_TIMES = 0x2752, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x28C5, + SMSG_ACCOUNT_DATA_TIMES = 0x274F, SMSG_ACCOUNT_MOUNT_UPDATE = 0x25C4, SMSG_ACCOUNT_TOYS_UPDATE = 0x25C5, SMSG_ACHIEVEMENT_DELETED = 0x2727, @@ -801,7 +811,7 @@ enum OpcodeServer : uint16 SMSG_ADD_LOSS_OF_CONTROL = 0x269C, SMSG_ADD_RUNE_POWER = 0x26EB, SMSG_ADJUST_SPLINE_DURATION = 0x25E9, - SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE = 0x2843, + SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE = 0x2842, SMSG_AE_LOOT_TARGETS = 0x262F, SMSG_AE_LOOT_TARGET_ACK = 0x2630, SMSG_AI_REACTION = 0x26E8, @@ -809,33 +819,35 @@ enum OpcodeServer : uint16 SMSG_ALL_ACHIEVEMENT_DATA = 0x2570, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8, SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588, - SMSG_AREA_POI_UPDATE = 0x2850, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x2789, + SMSG_AREA_POI_UPDATE = 0x284F, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x2786, SMSG_AREA_TRIGGER_DENIED = 0x26A3, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x275E, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x275B, SMSG_AREA_TRIGGER_PLAY_VISUAL_EVENT = 0x2641, SMSG_AREA_TRIGGER_RE_PATH = 0x263F, SMSG_AREA_TRIGGER_RE_SHAPE = 0x2644, SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x2652, - SMSG_ARENA_MATCH_END = 0x28A8, - SMSG_ARENA_MATCH_START = 0x28A7, + SMSG_ARENA_MATCH_END = 0x28A7, + SMSG_ARENA_MATCH_START = 0x28A6, SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2668, - SMSG_ARTIFACT_FORGE_OPENED = 0x27EB, - SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27EE, - SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27EF, - SMSG_ARTIFACT_XP_GAIN = 0x2833, - SMSG_ATTACKER_STATE_UPDATE = 0x27D8, + SMSG_ARTIFACT_FORGE_OPENED = 0x27E8, + SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27EB, + SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27EC, + SMSG_ARTIFACT_XP_GAIN = 0x2830, + SMSG_ATTACKER_STATE_UPDATE = 0x27D5, SMSG_ATTACK_START = 0x2670, SMSG_ATTACK_STOP = 0x2671, - SMSG_ATTACK_SWING_ERROR = 0x273C, - SMSG_ATTACK_SWING_LANDED_LOG = 0x273D, + SMSG_ATTACK_SWING_ERROR = 0x2739, + SMSG_ATTACK_SWING_LANDED_LOG = 0x273A, SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2731, SMSG_AUCTION_COMMAND_RESULT = 0x272E, + SMSG_AUCTION_COMMODITY_PRICE_UPDATE = 0x28C3, SMSG_AUCTION_HELLO_RESPONSE = 0x272C, - SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x2735, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2733, - SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x2734, - SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x2736, + SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x28C2, + SMSG_AUCTION_LIST_BUCKET_ITEMS_RESULT = 0x28BF, + SMSG_AUCTION_LIST_FAVORITE_ITEMS_RESULT = 0x28CC, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x28C0, + SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x28C1, SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2730, SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2732, SMSG_AUCTION_REPLICATE_RESPONSE = 0x272D, @@ -846,12 +858,12 @@ enum OpcodeServer : uint16 SMSG_AUTH_ERROR = 0x256C, SMSG_AUTH_RESPONSE = 0x256D, SMSG_AVAILABLE_HOTFIXES = 0x25A3, - SMSG_AZERITE_EMPOWERED_ITEM_EQUIPPED_STATUS_CHANGED = 0x2872, - SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN = 0x283D, - SMSG_AZERITE_ESSENCE_FORGE_CLOSE = 0x2875, - SMSG_AZERITE_ESSENCE_FORGE_OPENED = 0x2874, - SMSG_AZERITE_ESSENCE_SELECTION_RESULT = 0x2873, - SMSG_AZERITE_XP_GAIN = 0x2871, + SMSG_AZERITE_EMPOWERED_ITEM_EQUIPPED_STATUS_CHANGED = 0x2871, + SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN = 0x283B, + SMSG_AZERITE_ESSENCE_FORGE_CLOSE = 0x2874, + SMSG_AZERITE_ESSENCE_FORGE_OPENED = 0x2873, + SMSG_AZERITE_ESSENCE_SELECTION_RESULT = 0x2872, + SMSG_AZERITE_XP_GAIN = 0x2870, SMSG_BAN_REASON = 0x26B8, SMSG_BARBER_SHOP_RESULT = 0x26F1, SMSG_BATTLEFIELD_LIST = 0x2596, @@ -863,46 +875,46 @@ enum OpcodeServer : uint16 SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2593, SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x25A7, SMSG_BATTLEGROUND_INFO_THROTTLED = 0x259D, - SMSG_BATTLEGROUND_INIT = 0x27A7, + SMSG_BATTLEGROUND_INIT = 0x27A4, SMSG_BATTLEGROUND_PLAYER_JOINED = 0x259A, SMSG_BATTLEGROUND_PLAYER_LEFT = 0x259B, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2597, - SMSG_BATTLEGROUND_POINTS = 0x27A6, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x27D7, - SMSG_BATTLENET_CHALLENGE_START = 0x27D6, - SMSG_BATTLENET_NOTIFICATION = 0x284B, - SMSG_BATTLENET_REALM_LIST_TICKET = 0x284D, - SMSG_BATTLENET_RESPONSE = 0x284A, - SMSG_BATTLENET_SET_SESSION_STATE = 0x284C, - SMSG_BATTLENET_UPDATE_SESSION_KEY = 0x286B, - SMSG_BATTLE_PAY_ACK_FAILED = 0x27D1, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27C5, - SMSG_BATTLE_PAY_BUNDLE_PRICE_UPDATE = 0x285E, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27D0, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27C3, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27C2, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27C1, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27BF, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27BD, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27BE, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27C4, - SMSG_BATTLE_PAY_OPEN_CHECKOUT_RESULT = 0x2864, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27CF, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27CD, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27CC, - SMSG_BATTLE_PAY_SUBSCRIPTION_CHANGED = 0x286D, - SMSG_BATTLE_PAY_TOY_DELIVERED = 0x27C6, - SMSG_BATTLE_PAY_VAS_BNET_TRANSFER_VALIDATION_RESULT = 0x2862, - SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27C0, - SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2836, - SMSG_BATTLE_PAY_VAS_CHARACTER_QUEUE_STATUS = 0x2860, + SMSG_BATTLEGROUND_POINTS = 0x27A3, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x27D4, + SMSG_BATTLENET_CHALLENGE_START = 0x27D3, + SMSG_BATTLENET_NOTIFICATION = 0x284A, + SMSG_BATTLENET_REALM_LIST_TICKET = 0x284C, + SMSG_BATTLENET_RESPONSE = 0x2849, + SMSG_BATTLENET_SET_SESSION_STATE = 0x284B, + SMSG_BATTLENET_UPDATE_SESSION_KEY = 0x286A, + SMSG_BATTLE_PAY_ACK_FAILED = 0x27CE, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27C2, + SMSG_BATTLE_PAY_BUNDLE_PRICE_UPDATE = 0x285D, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27CD, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27C0, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27BF, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27BE, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27BC, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27BA, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27BB, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27C1, + SMSG_BATTLE_PAY_OPEN_CHECKOUT_RESULT = 0x2863, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27CC, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27CA, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27C9, + SMSG_BATTLE_PAY_SUBSCRIPTION_CHANGED = 0x286C, + SMSG_BATTLE_PAY_TOY_DELIVERED = 0x27C3, + SMSG_BATTLE_PAY_VAS_BNET_TRANSFER_VALIDATION_RESULT = 0x2861, + SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27BD, + SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2833, + SMSG_BATTLE_PAY_VAS_CHARACTER_QUEUE_STATUS = 0x285F, SMSG_BATTLE_PAY_VAS_GUILD_FOLLOW_INFO = 0x29E7, SMSG_BATTLE_PAY_VAS_GUILD_MASTER_LIST = 0x29E6, - SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x2839, - SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x283A, - SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x2838, - SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x2837, - SMSG_BATTLE_PAY_VAS_TRANSFER_QUEUE_STATUS = 0x285F, + SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x2836, + SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x2837, + SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x2835, + SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x2834, + SMSG_BATTLE_PAY_VAS_TRANSFER_QUEUE_STATUS = 0x285E, SMSG_BATTLE_PETS_HEALED = 0x260B, SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x26A6, SMSG_BATTLE_PET_DELETED = 0x2608, @@ -916,7 +928,7 @@ enum OpcodeServer : uint16 SMSG_BATTLE_PET_REVOKED = 0x2609, SMSG_BATTLE_PET_TRAP_LEVEL = 0x2602, SMSG_BATTLE_PET_UPDATES = 0x2601, - SMSG_BINDER_CONFIRM = 0x2742, + SMSG_BINDER_CONFIRM = 0x273F, SMSG_BIND_POINT_UPDATE = 0x257D, SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2648, SMSG_BLACK_MARKET_OPEN_RESULT = 0x2646, @@ -924,14 +936,14 @@ enum OpcodeServer : uint16 SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2647, SMSG_BLACK_MARKET_WON = 0x264A, SMSG_BONUS_ROLL_EMPTY = 0x2665, - SMSG_BONUS_ROLL_FAILED = 0x2878, - SMSG_BOSS_KILL_CREDIT = 0x27CB, + SMSG_BONUS_ROLL_FAILED = 0x2877, + SMSG_BOSS_KILL_CREDIT = 0x27C8, SMSG_BREAK_TARGET = 0x266F, SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC, SMSG_BUY_FAILED = 0x26FA, SMSG_BUY_SUCCEEDED = 0x26F9, - SMSG_CACHE_INFO = 0x274C, - SMSG_CACHE_VERSION = 0x274B, + SMSG_CACHE_INFO = 0x2749, + SMSG_CACHE_VERSION = 0x2748, SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26CC, SMSG_CALENDAR_COMMAND_RESULT = 0x26CD, SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26BC, @@ -952,9 +964,9 @@ enum OpcodeServer : uint16 SMSG_CALENDAR_SEND_CALENDAR = 0x26BA, SMSG_CALENDAR_SEND_EVENT = 0x26BB, SMSG_CALENDAR_SEND_NUM_PENDING = 0x26CB, - SMSG_CAMERA_EFFECT = 0x276E, + SMSG_CAMERA_EFFECT = 0x276B, SMSG_CANCEL_AUTO_REPEAT = 0x271B, - SMSG_CANCEL_COMBAT = 0x273A, + SMSG_CANCEL_COMBAT = 0x2737, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46, SMSG_CANCEL_SCENE = 0x2657, SMSG_CANCEL_SPELL_VISUAL = 0x2C44, @@ -972,25 +984,25 @@ enum OpcodeServer : uint16 SMSG_CHALLENGE_MODE_REWARDS = 0x2623, SMSG_CHALLENGE_MODE_START = 0x261F, SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2620, - SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x273E, + SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x273B, SMSG_CHANNEL_LIST = 0x2BC3, SMSG_CHANNEL_NOTIFY = 0x2BC0, SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1, SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2, - SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x2809, - SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING = 0x286C, - SMSG_CHARACTER_ITEM_FIXUP = 0x285B, - SMSG_CHARACTER_LOGIN_FAILED = 0x274D, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27D5, - SMSG_CHARACTER_RENAME_RESULT = 0x27AF, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x2808, - SMSG_CHARACTER_UPGRADE_QUEUED = 0x2807, + SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x2806, + SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING = 0x286B, + SMSG_CHARACTER_ITEM_FIXUP = 0x285A, + SMSG_CHARACTER_LOGIN_FAILED = 0x274A, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27D2, + SMSG_CHARACTER_RENAME_RESULT = 0x27AC, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x2805, + SMSG_CHARACTER_UPGRADE_QUEUED = 0x2804, SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F6, - SMSG_CHARACTER_UPGRADE_STARTED = 0x2806, - SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x280A, + SMSG_CHARACTER_UPGRADE_STARTED = 0x2803, + SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x2807, SMSG_CHAR_CUSTOMIZE = 0x2722, SMSG_CHAR_CUSTOMIZE_FAILED = 0x2721, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27F3, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27F0, SMSG_CHAT = 0x2BAD, SMSG_CHAT_AUTO_RESPONDED = 0x2BB8, SMSG_CHAT_DOWN = 0x2BBD, @@ -1011,44 +1023,44 @@ enum OpcodeServer : uint16 SMSG_CLEAR_LOSS_OF_CONTROL = 0x269E, SMSG_CLEAR_SPELL_CHARGES = 0x2C28, SMSG_CLEAR_TARGET = 0x26E4, - SMSG_CLUB_FINDER_APPLICANTS_LIST = 0x28AF, - SMSG_CLUB_FINDER_APPLICATIONS = 0x28B0, - SMSG_CLUB_FINDER_APPLICATIONS_CHANGED = 0x28B1, - SMSG_CLUB_FINDER_CLUBS_DATA = 0x28B3, - SMSG_CLUB_FINDER_CLUBS_LIST = 0x28AE, - SMSG_CLUB_FINDER_COMMAND_RESULT = 0x28B2, + SMSG_CLUB_FINDER_APPLICANTS_LIST = 0x28AE, + SMSG_CLUB_FINDER_APPLICATIONS = 0x28AF, + SMSG_CLUB_FINDER_APPLICATIONS_CHANGED = 0x28B0, + SMSG_CLUB_FINDER_CLUBS_DATA = 0x28B2, + SMSG_CLUB_FINDER_CLUBS_LIST = 0x28AD, + SMSG_CLUB_FINDER_COMMAND_RESULT = 0x28B1, SMSG_COIN_REMOVED = 0x262E, SMSG_COMBAT_EVENT_FAILED = 0x2672, - SMSG_COMMENTATOR_MAP_INFO = 0x274F, - SMSG_COMMENTATOR_PLAYER_INFO = 0x2750, - SMSG_COMMENTATOR_STATE_CHANGED = 0x274E, + SMSG_COMMENTATOR_MAP_INFO = 0x274C, + SMSG_COMMENTATOR_PLAYER_INFO = 0x274D, + SMSG_COMMENTATOR_STATE_CHANGED = 0x274B, SMSG_COMPLAINT_RESULT = 0x26DB, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27E7, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27E4, SMSG_CONNECT_TO = 0x304D, - SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27D2, + SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27CF, SMSG_CONSOLE_WRITE = 0x2655, - SMSG_CONTACT_LIST = 0x27D3, - SMSG_CONTRIBUTION_COLLECTOR_STATE = 0x2863, + SMSG_CONTACT_LIST = 0x27D0, + SMSG_CONTRIBUTION_COLLECTOR_STATE = 0x2862, SMSG_CONTROL_UPDATE = 0x2667, - SMSG_COOLDOWN_CHEAT = 0x2782, + SMSG_COOLDOWN_CHEAT = 0x277F, SMSG_COOLDOWN_EVENT = 0x26EC, SMSG_CORPSE_LOCATION = 0x266E, - SMSG_CORPSE_RECLAIM_DELAY = 0x2794, - SMSG_CORPSE_TRANSPORT_QUERY = 0x275A, - SMSG_CREATE_CHAR = 0x2747, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x27E6, + SMSG_CORPSE_RECLAIM_DELAY = 0x2791, + SMSG_CORPSE_TRANSPORT_QUERY = 0x2757, + SMSG_CREATE_CHAR = 0x2744, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x27E3, SMSG_CRITERIA_DELETED = 0x2726, SMSG_CRITERIA_UPDATE = 0x2720, SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26F5, SMSG_CUSTOM_LOAD_SCREEN = 0x25E4, SMSG_DAILY_QUESTS_RESET = 0x2A80, - SMSG_DAMAGE_CALC_LOG = 0x2811, + SMSG_DAMAGE_CALC_LOG = 0x280E, SMSG_DB_REPLY = 0x25A2, SMSG_DEATH_RELEASE_LOC = 0x2710, SMSG_DEFENSE_MESSAGE = 0x2BB6, - SMSG_DELETE_CHAR = 0x2748, - SMSG_DESTROY_ARENA_UNIT = 0x278B, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x273B, + SMSG_DELETE_CHAR = 0x2745, + SMSG_DESTROY_ARENA_UNIT = 0x2788, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x2738, SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C, SMSG_DISENCHANT_CREDIT = 0x25BD, SMSG_DISMOUNT = 0x26E3, @@ -1068,45 +1080,45 @@ enum OpcodeServer : uint16 SMSG_DUEL_OUT_OF_BOUNDS = 0x2675, SMSG_DUEL_REQUESTED = 0x2673, SMSG_DUEL_WINNER = 0x2679, - SMSG_DURABILITY_DAMAGE_DEATH = 0x2790, - SMSG_EMOTE = 0x2812, + SMSG_DURABILITY_DAMAGE_DEATH = 0x278D, + SMSG_EMOTE = 0x280F, SMSG_ENABLE_BARBER_SHOP = 0x26F0, SMSG_ENABLE_ENCRYPTION = 0x3049, - SMSG_ENCHANTMENT_LOG = 0x275B, - SMSG_ENCOUNTER_END = 0x27CA, - SMSG_ENCOUNTER_START = 0x27C9, - SMSG_ENTITLEMENTS = 0x28C4, - SMSG_ENTITLEMENT_NOTIFICATION = 0x28C5, + SMSG_ENCHANTMENT_LOG = 0x2758, + SMSG_ENCOUNTER_END = 0x27C7, + SMSG_ENCOUNTER_START = 0x27C6, + SMSG_ENTITLEMENTS = 0x28C8, + SMSG_ENTITLEMENT_NOTIFICATION = 0x28C9, SMSG_ENUM_CHARACTERS_RESULT = 0x2584, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21, SMSG_EQUIPMENT_SET_ID = 0x26E5, SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1, - SMSG_EXPLORATION_EXPERIENCE = 0x27AC, - SMSG_FACTION_BONUS_INFO = 0x276D, + SMSG_EXPLORATION_EXPERIENCE = 0x27A9, + SMSG_FACTION_BONUS_INFO = 0x276A, SMSG_FAILED_PLAYER_CONDITION = 0x25E3, SMSG_FEATURE_SYSTEM_STATUS = 0x25D2, SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25D3, - SMSG_FEIGN_DEATH_RESISTED = 0x278E, + SMSG_FEIGN_DEATH_RESISTED = 0x278B, SMSG_FISH_ESCAPED = 0x2703, SMSG_FISH_NOT_HOOKED = 0x2702, SMSG_FLIGHT_SPLINE_SYNC = 0x2DF7, SMSG_FORCED_DEATH_UPDATE = 0x2711, - SMSG_FORCE_ANIM = 0x279B, + SMSG_FORCE_ANIM = 0x2798, SMSG_FORCE_OBJECT_RELINK = 0x266A, - SMSG_FRIEND_STATUS = 0x27D4, + SMSG_FRIEND_STATUS = 0x27D1, SMSG_GAME_EVENT_DEBUG_INITIALIZE = 0x2680, SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25D7, SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25D8, SMSG_GAME_OBJECT_DESPAWN = 0x25D9, - SMSG_GAME_OBJECT_MULTI_TRANSITION = 0x2876, + SMSG_GAME_OBJECT_MULTI_TRANSITION = 0x2875, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A, - SMSG_GAME_OBJECT_RESET_STATE = 0x2765, - SMSG_GAME_OBJECT_SET_STATE = 0x2849, - SMSG_GAME_OBJECT_UI_ACTION = 0x2762, + SMSG_GAME_OBJECT_RESET_STATE = 0x2762, + SMSG_GAME_OBJECT_SET_STATE = 0x2848, + SMSG_GAME_OBJECT_UI_ACTION = 0x275F, SMSG_GAME_SPEED_SET = 0x26B0, - SMSG_GAME_TIME_SET = 0x2754, - SMSG_GAME_TIME_UPDATE = 0x2753, + SMSG_GAME_TIME_SET = 0x2751, + SMSG_GAME_TIME_UPDATE = 0x2750, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2902, SMSG_GARRISON_ADD_MISSION_RESULT = 0x2906, SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2918, @@ -1125,7 +1137,7 @@ enum OpcodeServer : uint16 SMSG_GARRISON_FOLLOWER_CHANGED_STATUS = 0x2915, SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x2912, SMSG_GARRISON_IS_UPGRADEABLE_RESULT = 0x2929, - SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27E9, + SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27E6, SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x28F7, SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x28F5, SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2905, @@ -1156,27 +1168,27 @@ enum OpcodeServer : uint16 SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x28F8, SMSG_GARRISON_UPGRADE_RESULT = 0x28FD, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AD, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AA, SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE = 0x2928, SMSG_GET_GARRISON_INFO_RESULT = 0x28F0, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27E8, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27E4, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x280D, - SMSG_GM_PLAYER_INFO = 0x2781, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27E5, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27E1, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x280A, + SMSG_GM_PLAYER_INFO = 0x277E, SMSG_GM_REQUEST_PLAYER_INFO = 0x25EF, SMSG_GM_TICKET_CASE_STATUS = 0x26D2, SMSG_GM_TICKET_SYSTEM_STATUS = 0x26D1, - SMSG_GOD_MODE = 0x2741, + SMSG_GOD_MODE = 0x273E, SMSG_GOSSIP_COMPLETE = 0x2A96, SMSG_GOSSIP_MESSAGE = 0x2A97, - SMSG_GOSSIP_POI = 0x27E1, + SMSG_GOSSIP_POI = 0x27DE, SMSG_GOSSIP_TEXT_UPDATE = 0x2A98, SMSG_GROUP_ACTION_THROTTLED = 0x259E, - SMSG_GROUP_DECLINE = 0x27DC, - SMSG_GROUP_DESTROYED = 0x27DE, - SMSG_GROUP_INVITE_CONFIRMATION = 0x285C, + SMSG_GROUP_DECLINE = 0x27D9, + SMSG_GROUP_DESTROYED = 0x27DB, + SMSG_GROUP_INVITE_CONFIRMATION = 0x285B, SMSG_GROUP_NEW_LEADER = 0x264D, - SMSG_GROUP_UNINVITE = 0x27DD, + SMSG_GROUP_UNINVITE = 0x27DA, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7, @@ -1234,51 +1246,53 @@ enum OpcodeServer : uint16 SMSG_HIGHEST_THREAT_UPDATE = 0x2717, SMSG_HOTFIX_MESSAGE = 0x25A4, SMSG_HOTFIX_RESPONSE = 0x25A5, - SMSG_INCOMING_SUMMON_COMPLETED = 0x28AA, - SMSG_INCOMING_SUMMON_PENDING = 0x28A9, - SMSG_INITIALIZE_FACTIONS = 0x276C, + SMSG_INCOMING_SUMMON_COMPLETED = 0x28A9, + SMSG_INCOMING_SUMMON_PENDING = 0x28A8, + SMSG_INITIALIZE_FACTIONS = 0x2769, SMSG_INITIAL_SETUP = 0x2581, - SMSG_INIT_WORLD_STATES = 0x2791, + SMSG_INIT_WORLD_STATES = 0x278E, SMSG_INSPECT_RESULT = 0x2651, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27F9, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27F8, - SMSG_INSTANCE_ENCOUNTER_END = 0x2801, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27F7, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x2803, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x2802, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27FC, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27FB, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x2800, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x2804, - SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x27FF, - SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x27FE, - SMSG_INSTANCE_ENCOUNTER_START = 0x27FD, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27FA, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x273F, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27F6, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27F5, + SMSG_INSTANCE_ENCOUNTER_END = 0x27FE, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27F4, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x2800, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27FF, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27F9, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27F8, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27FD, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x2801, + SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x27FC, + SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x27FB, + SMSG_INSTANCE_ENCOUNTER_START = 0x27FA, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27F7, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x273C, SMSG_INSTANCE_INFO = 0x2654, SMSG_INSTANCE_RESET = 0x26B5, SMSG_INSTANCE_RESET_FAILED = 0x26B6, - SMSG_INSTANCE_SAVE_CREATED = 0x27C8, + SMSG_INSTANCE_SAVE_CREATED = 0x27C5, SMSG_INVALIDATE_PAGE_TEXT = 0x270C, SMSG_INVALIDATE_PLAYER = 0x26DA, - SMSG_INVALID_PROMOTION_CODE = 0x279C, - SMSG_INVENTORY_CHANGE_FAILURE = 0x276A, - SMSG_ISLAND_AZERITE_XP_GAIN = 0x27A9, - SMSG_ISLAND_COMPLETED = 0x27AA, - SMSG_ISLAND_OPEN_QUEUE_NPC = 0x283E, + SMSG_INVALID_PROMOTION_CODE = 0x2799, + SMSG_INVENTORY_CHANGE_FAILURE = 0x2767, + SMSG_ISLAND_AZERITE_XP_GAIN = 0x27A6, + SMSG_ISLAND_COMPLETED = 0x27A7, + SMSG_ISLAND_OPEN_QUEUE_NPC = 0x283D, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A83, SMSG_ITEM_CHANGED = 0x2729, - SMSG_ITEM_COOLDOWN = 0x2810, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x279E, + SMSG_ITEM_COOLDOWN = 0x280D, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x279B, SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25B3, + SMSG_ITEM_INTERACTION_OPEN = 0x283C, + SMSG_ITEM_INTERACTION_RESULT = 0x28CE, SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25B1, SMSG_ITEM_PUSH_RESULT = 0x263A, - SMSG_ITEM_TIME_UPDATE = 0x279D, - SMSG_KICK_REASON = 0x2835, + SMSG_ITEM_TIME_UPDATE = 0x279A, + SMSG_KICK_REASON = 0x2832, SMSG_LEARNED_SPELLS = 0x2C4D, SMSG_LEARN_PVP_TALENTS_FAILED = 0x25EB, SMSG_LEARN_TALENTS_FAILED = 0x25EA, - SMSG_LEVEL_LINKING_RESULT = 0x28B8, + SMSG_LEVEL_LINKING_RESULT = 0x28B7, SMSG_LEVEL_UPDATE = 0x2589, SMSG_LEVEL_UP_INFO = 0x2728, SMSG_LFG_BOOT_PLAYER = 0x2A35, @@ -1316,21 +1330,21 @@ enum OpcodeServer : uint16 SMSG_LF_GUILD_RECRUITS = 0x29CF, SMSG_LIGHTNING_STORM_END = 0x26D7, SMSG_LIGHTNING_STORM_START = 0x26D6, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27BB, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27B9, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AE, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27B8, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27B6, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AB, SMSG_LOAD_CUF_PROFILES = 0x25CF, - SMSG_LOAD_EQUIPMENT_SET = 0x2756, - SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x280E, - SMSG_LOGIN_SET_TIME_SPEED = 0x2755, + SMSG_LOAD_EQUIPMENT_SET = 0x2753, + SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x280B, + SMSG_LOGIN_SET_TIME_SPEED = 0x2752, SMSG_LOGIN_VERIFY_WORLD = 0x25AE, SMSG_LOGOUT_CANCEL_ACK = 0x26B4, SMSG_LOGOUT_COMPLETE = 0x26B3, SMSG_LOGOUT_RESPONSE = 0x26B2, SMSG_LOG_XP_GAIN = 0x2724, SMSG_LOOT_ALL_PASSED = 0x2638, - SMSG_LOOT_LEGACY_RULES_IN_EFFECT = 0x2877, - SMSG_LOOT_LIST = 0x278A, + SMSG_LOOT_LEGACY_RULES_IN_EFFECT = 0x2876, + SMSG_LOOT_LIST = 0x2787, SMSG_LOOT_MONEY_NOTIFY = 0x2633, SMSG_LOOT_RELEASE = 0x2632, SMSG_LOOT_RELEASE_ALL = 0x2631, @@ -1341,9 +1355,9 @@ enum OpcodeServer : uint16 SMSG_LOOT_ROLL_WON = 0x2639, SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x269B, SMSG_MAIL_COMMAND_RESULT = 0x265B, - SMSG_MAIL_LIST_RESULT = 0x279F, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x27A0, - SMSG_MAP_OBJECTIVES_INIT = 0x27A8, + SMSG_MAIL_LIST_RESULT = 0x279C, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x279D, + SMSG_MAP_OBJECTIVES_INIT = 0x27A5, SMSG_MAP_OBJECTIVE_ADD = 0x2598, SMSG_MAP_OBJECTIVE_REMOVE = 0x2599, SMSG_MAP_OBJ_EVENTS = 0x25DA, @@ -1353,12 +1367,12 @@ enum OpcodeServer : uint16 SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13, SMSG_MISSILE_CANCEL = 0x25DB, - SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27B2, - SMSG_MODIFY_COOLDOWN = 0x27B0, - SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27B1, - SMSG_MODIFY_PARTY_RANGE = 0x278D, + SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27AF, + SMSG_MODIFY_COOLDOWN = 0x27AD, + SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27AE, + SMSG_MODIFY_PARTY_RANGE = 0x278A, SMSG_MOTD = 0x2BAF, - SMSG_MOUNT_EQUIPMENT_APPLY_RESULT = 0x28B6, + SMSG_MOUNT_EQUIPMENT_APPLY_RESULT = 0x28B5, SMSG_MOUNT_RESULT = 0x257B, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2DE1, SMSG_MOVE_DISABLE_COLLISION = 0x2DDD, @@ -1454,28 +1468,28 @@ enum OpcodeServer : uint16 SMSG_OFFER_PETITION_ERROR = 0x26E9, SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2725, SMSG_ON_MONSTER_MOVE = 0x2DA2, - SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x283F, - SMSG_OPEN_CONTAINER = 0x276B, + SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x283E, + SMSG_OPEN_CONTAINER = 0x2768, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31, - SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27E3, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27E5, - SMSG_OPEN_TRANSMOGRIFIER = 0x283C, + SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27E0, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27E2, + SMSG_OPEN_TRANSMOGRIFIER = 0x283A, SMSG_OVERRIDE_LIGHT = 0x26EF, - SMSG_PAGE_TEXT = 0x2761, - SMSG_PARTY_COMMAND_RESULT = 0x27E0, + SMSG_PAGE_TEXT = 0x275E, + SMSG_PARTY_COMMAND_RESULT = 0x27DD, SMSG_PARTY_INVITE = 0x25D0, - SMSG_PARTY_KILL_LOG = 0x27A4, - SMSG_PARTY_MEMBER_STATE = 0x27A2, - SMSG_PARTY_MEMBER_STATE_UPDATE = 0x27A1, + SMSG_PARTY_KILL_LOG = 0x27A1, + SMSG_PARTY_MEMBER_STATE = 0x279F, + SMSG_PARTY_MEMBER_STATE_UPDATE = 0x279E, SMSG_PARTY_UPDATE = 0x260D, - SMSG_PAUSE_MIRROR_TIMER = 0x2758, - SMSG_PENDING_RAID_LOCK = 0x2739, + SMSG_PAUSE_MIRROR_TIMER = 0x2755, + SMSG_PENDING_RAID_LOCK = 0x2736, SMSG_PETITION_ALREADY_SIGNED = 0x25B9, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA, SMSG_PETITION_SHOW_LIST = 0x26F2, SMSG_PETITION_SHOW_SIGNATURES = 0x26F3, - SMSG_PETITION_SIGN_RESULTS = 0x2796, - SMSG_PET_ACTION_FEEDBACK = 0x2793, + SMSG_PETITION_SIGN_RESULTS = 0x2793, + SMSG_PET_ACTION_FEEDBACK = 0x2790, SMSG_PET_ACTION_SOUND = 0x26CF, SMSG_PET_ADDED = 0x25AA, SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x261A, @@ -1497,7 +1511,7 @@ enum OpcodeServer : uint16 SMSG_PET_CLEAR_SPELLS = 0x2C24, SMSG_PET_DISMISS_SOUND = 0x26D0, SMSG_PET_GOD_MODE = 0x26AA, - SMSG_PET_GUIDS = 0x274A, + SMSG_PET_GUIDS = 0x2747, SMSG_PET_LEARNED_SPELLS = 0x2C4F, SMSG_PET_MODE = 0x258B, SMSG_PET_NAME_INVALID = 0x26F7, @@ -1511,27 +1525,27 @@ enum OpcodeServer : uint16 SMSG_PLAYED_TIME = 0x2713, SMSG_PLAYER_BOUND = 0x257E, SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F9, - SMSG_PLAYER_SKINNED = 0x278F, - SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x27A3, - SMSG_PLAY_MUSIC = 0x27B5, - SMSG_PLAY_OBJECT_SOUND = 0x27B6, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2779, + SMSG_PLAYER_SKINNED = 0x278C, + SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x27A0, + SMSG_PLAY_MUSIC = 0x27B2, + SMSG_PLAY_OBJECT_SOUND = 0x27B3, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2776, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47, SMSG_PLAY_SCENE = 0x2656, - SMSG_PLAY_SOUND = 0x27B4, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x27B7, + SMSG_PLAY_SOUND = 0x27B1, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x27B4, SMSG_PLAY_SPELL_VISUAL = 0x2C45, SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49, - SMSG_PLAY_TIME_WARNING = 0x2743, + SMSG_PLAY_TIME_WARNING = 0x2740, SMSG_PONG = 0x304E, SMSG_POWER_UPDATE = 0x2707, - SMSG_PRE_RESSURECT = 0x27B3, + SMSG_PRE_RESSURECT = 0x27B0, SMSG_PRINT_NOTIFICATION = 0x25E2, - SMSG_PROC_RESIST = 0x27A5, + SMSG_PROC_RESIST = 0x27A2, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51, SMSG_PVP_CREDIT = 0x271F, SMSG_PVP_LOG_DATA = 0x25B4, - SMSG_PVP_MATCH_START = 0x28AD, + SMSG_PVP_MATCH_START = 0x28AC, SMSG_PVP_OPTIONS_ENABLED = 0x25B7, SMSG_PVP_SEASON = 0x25D4, SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x270E, @@ -1540,7 +1554,7 @@ enum OpcodeServer : uint16 SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2705, SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE = 0x292B, SMSG_QUERY_GUILD_INFO_RESPONSE = 0x29E5, - SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x280F, + SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x280C, SMSG_QUERY_NPC_TEXT_RESPONSE = 0x2708, SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x270B, SMSG_QUERY_PETITION_RESPONSE = 0x270F, @@ -1548,7 +1562,7 @@ enum OpcodeServer : uint16 SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x2709, SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A95, SMSG_QUERY_TIME_RESPONSE = 0x2723, - SMSG_QUERY_TREASURE_PICKER_RESPONSE = 0x284E, + SMSG_QUERY_TREASURE_PICKER_RESPONSE = 0x284D, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81, SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8E, SMSG_QUEST_FORCE_REMOVED = 0x2A9B, @@ -1558,7 +1572,7 @@ enum OpcodeServer : uint16 SMSG_QUEST_GIVER_QUEST_DETAILS = 0x2A91, SMSG_QUEST_GIVER_QUEST_FAILED = 0x2A85, SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x2A99, - SMSG_QUEST_GIVER_QUEST_TURN_IN_FAILURE = 0x2859, + SMSG_QUEST_GIVER_QUEST_TURN_IN_FAILURE = 0x2858, SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x2A92, SMSG_QUEST_GIVER_STATUS = 0x2A9A, SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A90, @@ -1566,9 +1580,9 @@ enum OpcodeServer : uint16 SMSG_QUEST_POI_CHANGED = 0x2A9F, SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9C, SMSG_QUEST_PUSH_RESULT = 0x2A8F, - SMSG_QUEST_SESSION_MEMBER_CONFIRM = 0x28BC, - SMSG_QUEST_SESSION_MEMBER_START_RESPONSE = 0x28BD, - SMSG_QUEST_SESSION_NOTIFICATION = 0x28BB, + SMSG_QUEST_SESSION_MEMBER_CONFIRM = 0x28BB, + SMSG_QUEST_SESSION_MEMBER_START_RESPONSE = 0x28BC, + SMSG_QUEST_SESSION_NOTIFICATION = 0x28BA, SMSG_QUEST_SPAWN_TRACKING_UPDATE = 0x2A9E, SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8B, SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8C, @@ -1577,12 +1591,12 @@ enum OpcodeServer : uint16 SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A87, SMSG_QUEST_UPDATE_FAILED = 0x2A89, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8A, - SMSG_QUICK_JOIN_CONFIRM_REQUEST_INVITE = 0x28C6, - SMSG_RAF_ACCOUNT_INFO = 0x28B9, - SMSG_RAF_ACTIVITY = 0x28C2, - SMSG_RAF_INFO_UPDATE = 0x28BA, - SMSG_RAID_DIFFICULTY_SET = 0x27F4, - SMSG_RAID_GROUP_ONLY = 0x27F6, + SMSG_QUICK_JOIN_CONFIRM_REQUEST_INVITE = 0x28CA, + SMSG_RAF_ACCOUNT_INFO = 0x28B8, + SMSG_RAF_ACTIVITY = 0x28C6, + SMSG_RAF_INFO_UPDATE = 0x28B9, + SMSG_RAID_DIFFICULTY_SET = 0x27F1, + SMSG_RAID_GROUP_ONLY = 0x27F3, SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4, SMSG_RAID_MARKERS_CHANGED = 0x25BA, SMSG_RANDOM_ROLL = 0x2650, @@ -1590,16 +1604,16 @@ enum OpcodeServer : uint16 SMSG_READY_CHECK_COMPLETED = 0x2610, SMSG_READY_CHECK_RESPONSE = 0x260F, SMSG_READY_CHECK_STARTED = 0x260E, - SMSG_READ_ITEM_RESULT_FAILED = 0x27F0, - SMSG_READ_ITEM_RESULT_OK = 0x27EA, - SMSG_REALM_LOOKUP_INFORMATION = 0x2815, + SMSG_READ_ITEM_RESULT_FAILED = 0x27ED, + SMSG_READ_ITEM_RESULT_OK = 0x27E7, + SMSG_REALM_LOOKUP_INFORMATION = 0x2812, SMSG_REALM_QUERY_RESPONSE = 0x26EE, SMSG_REFER_A_FRIEND_FAILURE = 0x26F4, SMSG_REFRESH_COMPONENT = 0x267C, SMSG_REFRESH_SPELL_HISTORY = 0x2C2C, SMSG_REMOVE_ITEM_PASSIVE = 0x25C1, SMSG_REMOVE_LOSS_OF_CONTROL = 0x269D, - SMSG_REPLACE_TROPHY_RESPONSE = 0x280C, + SMSG_REPLACE_TROPHY_RESPONSE = 0x2809, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26E2, SMSG_REQUEST_ADDON_LIST = 0x2662, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x259F, @@ -1617,17 +1631,17 @@ enum OpcodeServer : uint16 SMSG_RESUME_TOKEN = 0x25BF, SMSG_RESURRECT_CLEAR_DATA = 0x2580, SMSG_RESURRECT_REQUEST = 0x257F, - SMSG_RESYNC_RUNES = 0x2746, + SMSG_RESYNC_RUNES = 0x2743, SMSG_ROLE_CHANGED_INFORM = 0x258E, SMSG_ROLE_CHOSEN = 0x2A39, SMSG_ROLE_POLL_INFORM = 0x258F, SMSG_RUNE_REGEN_DEBUG = 0x25C9, - SMSG_SCENARIO_BOOT = 0x27F1, - SMSG_SCENARIO_COMPLETED = 0x2832, + SMSG_SCENARIO_BOOT = 0x27EE, + SMSG_SCENARIO_COMPLETED = 0x282F, SMSG_SCENARIO_POIS = 0x2653, SMSG_SCENARIO_PROGRESS_UPDATE = 0x264C, - SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x2842, - SMSG_SCENARIO_SPELL_UPDATE = 0x2841, + SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x2841, + SMSG_SCENARIO_SPELL_UPDATE = 0x2840, SMSG_SCENARIO_STATE = 0x264B, SMSG_SCENE_OBJECT_EVENT = 0x25F9, SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FE, @@ -1649,44 +1663,44 @@ enum OpcodeServer : uint16 SMSG_SERVER_TIME = 0x26B1, SMSG_SETUP_CURRENCY = 0x2573, SMSG_SETUP_RESEARCH_HISTORY = 0x2586, - SMSG_SET_AI_ANIM_KIT = 0x2778, - SMSG_SET_ALL_TASK_PROGRESS = 0x27DA, - SMSG_SET_ANIM_TIER = 0x277C, + SMSG_SET_AI_ANIM_KIT = 0x2775, + SMSG_SET_ALL_TASK_PROGRESS = 0x27D7, + SMSG_SET_ANIM_TIER = 0x2779, SMSG_SET_CURRENCY = 0x2574, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E, SMSG_SET_DUNGEON_DIFFICULTY = 0x26D3, - SMSG_SET_FACTION_AT_WAR = 0x2745, - SMSG_SET_FACTION_NOT_VISIBLE = 0x2773, - SMSG_SET_FACTION_STANDING = 0x2774, - SMSG_SET_FACTION_VISIBLE = 0x2772, + SMSG_SET_FACTION_AT_WAR = 0x2742, + SMSG_SET_FACTION_NOT_VISIBLE = 0x2770, + SMSG_SET_FACTION_STANDING = 0x2771, + SMSG_SET_FACTION_VISIBLE = 0x276F, SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36, - SMSG_SET_FORCED_REACTIONS = 0x2764, + SMSG_SET_FORCED_REACTIONS = 0x2761, SMSG_SET_ITEM_PURCHASE_DATA = 0x25B2, - SMSG_SET_LOOT_METHOD_FAILED = 0x281B, + SMSG_SET_LOOT_METHOD_FAILED = 0x2818, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25B8, - SMSG_SET_MELEE_ANIM_KIT = 0x277B, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x277A, + SMSG_SET_MELEE_ANIM_KIT = 0x2778, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x2777, SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37, SMSG_SET_PET_SPECIALIZATION = 0x2645, SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2712, SMSG_SET_PLAY_HOVER_ANIM = 0x25CD, - SMSG_SET_PROFICIENCY = 0x277D, + SMSG_SET_PROFICIENCY = 0x277A, SMSG_SET_SPELL_CHARGES = 0x2C29, - SMSG_SET_TASK_COMPLETE = 0x27DB, + SMSG_SET_TASK_COMPLETE = 0x27D8, SMSG_SET_TIME_ZONE_INFORMATION = 0x26A5, - SMSG_SET_VEHICLE_REC_ID = 0x2738, - SMSG_SHOW_ADVENTURE_MAP = 0x283B, + SMSG_SET_VEHICLE_REC_ID = 0x2735, + SMSG_SHOW_ADVENTURE_MAP = 0x2838, SMSG_SHOW_BANK = 0x26AE, - SMSG_SHOW_MAILBOX = 0x27F2, + SMSG_SHOW_MAILBOX = 0x27EF, SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25F2, SMSG_SHOW_TAXI_NODES = 0x2700, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27BC, - SMSG_SOCKET_GEMS = 0x276F, - SMSG_SOCKET_GEMS_FAILURE = 0x2770, - SMSG_SORT_BAGS_RESULT = 0x2829, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27B9, + SMSG_SOCKET_GEMS = 0x276C, + SMSG_SOCKET_GEMS_FAILURE = 0x276D, + SMSG_SORT_BAGS_RESULT = 0x2826, SMSG_SPECIALIZATION_CHANGED = 0x25EE, SMSG_SPECIAL_MOUNT_ANIM = 0x26CE, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2760, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x275D, SMSG_SPELL_ABSORB_LOG = 0x2C1F, SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17, SMSG_SPELL_CHANNEL_START = 0x2C34, @@ -1711,24 +1725,24 @@ enum OpcodeServer : uint16 SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B, SMSG_SPELL_PREPARE = 0x2C38, SMSG_SPELL_START = 0x2C3A, - SMSG_SPIRIT_HEALER_CONFIRM = 0x275D, - SMSG_STAND_STATE_UPDATE = 0x2763, + SMSG_SPIRIT_HEALER_CONFIRM = 0x275A, + SMSG_STAND_STATE_UPDATE = 0x2760, SMSG_START_ELAPSED_TIMER = 0x261C, SMSG_START_ELAPSED_TIMERS = 0x261E, SMSG_START_LOOT_ROLL = 0x2634, - SMSG_START_MIRROR_TIMER = 0x2757, + SMSG_START_MIRROR_TIMER = 0x2754, SMSG_START_TIMER = 0x25BC, SMSG_STOP_ELAPSED_TIMER = 0x261D, - SMSG_STOP_MIRROR_TIMER = 0x2759, - SMSG_STOP_SPEAKERBOT_SOUND = 0x27B8, + SMSG_STOP_MIRROR_TIMER = 0x2756, + SMSG_STOP_SPEAKERBOT_SOUND = 0x27B5, SMSG_STREAMING_MOVIES = 0x25BB, SMSG_SUMMON_CANCEL = 0x26E1, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x2590, - SMSG_SUMMON_REQUEST = 0x2768, + SMSG_SUMMON_REQUEST = 0x2765, SMSG_SUPERCEDED_SPELLS = 0x2C4C, SMSG_SUSPEND_COMMS = 0x304A, SMSG_SUSPEND_TOKEN = 0x25BE, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x275F, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x275C, SMSG_TAXI_NODE_STATUS = 0x26AB, SMSG_TEXT_EMOTE = 0x26A9, SMSG_THREAT_CLEAR = 0x271A, @@ -1745,40 +1759,40 @@ enum OpcodeServer : uint16 SMSG_TRADE_UPDATED = 0x2582, SMSG_TRAINER_BUY_FAILED = 0x271E, SMSG_TRAINER_LIST = 0x271D, - SMSG_TRANSFER_ABORTED = 0x2749, + SMSG_TRANSFER_ABORTED = 0x2746, SMSG_TRANSFER_PENDING = 0x25E6, SMSG_TRANSMOG_COLLECTION_UPDATE = 0x25C7, SMSG_TRANSMOG_SET_COLLECTION_UPDATE = 0x25C8, - SMSG_TRIGGER_CINEMATIC = 0x2813, + SMSG_TRIGGER_CINEMATIC = 0x2810, SMSG_TRIGGER_MOVIE = 0x26FE, - SMSG_TURN_IN_PETITION_RESULT = 0x2798, - SMSG_TUTORIAL_FLAGS = 0x2805, - SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x2848, - SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x2847, + SMSG_TURN_IN_PETITION_RESULT = 0x2795, + SMSG_TUTORIAL_FLAGS = 0x2802, + SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x2847, + SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x2846, SMSG_TWITTER_STATUS = 0x2FFD, - SMSG_UI_TIME = 0x275C, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2816, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x2817, + SMSG_UI_TIME = 0x2759, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2813, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x2814, SMSG_UNLEARNED_SPELLS = 0x2C4E, - SMSG_UPDATE_ACCOUNT_DATA = 0x2751, + SMSG_UPDATE_ACCOUNT_DATA = 0x274E, SMSG_UPDATE_ACTION_BUTTONS = 0x25F7, - SMSG_UPDATE_CELESTIAL_BODY = 0x2867, - SMSG_UPDATE_CHARACTER_FLAGS = 0x280B, + SMSG_UPDATE_CELESTIAL_BODY = 0x2866, + SMSG_UPDATE_CHARACTER_FLAGS = 0x2808, SMSG_UPDATE_EXPANSION_LEVEL = 0x2666, - SMSG_UPDATE_GAME_TIME_STATE = 0x286E, + SMSG_UPDATE_GAME_TIME_STATE = 0x286D, SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26D8, SMSG_UPDATE_LAST_INSTANCE = 0x26B7, - SMSG_UPDATE_OBJECT = 0x2814, + SMSG_UPDATE_OBJECT = 0x2811, SMSG_UPDATE_TALENT_DATA = 0x25ED, - SMSG_UPDATE_TASK_PROGRESS = 0x27D9, + SMSG_UPDATE_TASK_PROGRESS = 0x27D6, SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19, - SMSG_UPDATE_WORLD_STATE = 0x2792, + SMSG_UPDATE_WORLD_STATE = 0x278F, SMSG_USERLIST_ADD = 0x2BB9, SMSG_USERLIST_REMOVE = 0x2BBA, SMSG_USERLIST_UPDATE = 0x2BBB, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x2799, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x2796, SMSG_VENDOR_INVENTORY = 0x25CB, - SMSG_VIGNETTE_UPDATE = 0x27BA, + SMSG_VIGNETTE_UPDATE = 0x27B7, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x25E0, SMSG_VOID_STORAGE_CONTENTS = 0x25DD, SMSG_VOID_STORAGE_FAILED = 0x25DC, @@ -1787,31 +1801,32 @@ enum OpcodeServer : uint16 SMSG_WAIT_QUEUE_FINISH = 0x256F, SMSG_WAIT_QUEUE_UPDATE = 0x256E, SMSG_WARDEN_DATA = 0x2577, - SMSG_WARFRONT_COMPLETED = 0x27AB, + SMSG_WARFRONT_COMPLETED = 0x27A8, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x25B5, SMSG_WEATHER = 0x26D5, SMSG_WEEKLY_SPELL_USAGE = 0x2C18, SMSG_WHO = 0x2BAE, SMSG_WHO_IS = 0x26D4, - SMSG_WORLD_QUEST_UPDATE = 0x284F, + SMSG_WORLD_MAP_INTERACTION = 0x2839, + SMSG_WORLD_QUEST_UPDATE = 0x284E, SMSG_WORLD_SERVER_INFO = 0x25C3, - SMSG_WORLD_TEXT = 0x2834, - SMSG_WOW_TOKEN_AUCTION_SOLD = 0x2821, - SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2823, - SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2824, - SMSG_WOW_TOKEN_CAN_REDEEM_FOR_BALANCE_RESULT = 0x285D, - SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x2822, - SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x281C, - SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x281D, - SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x281E, - SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2825, - SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2826, - SMSG_WOW_TOKEN_REDEEM_RESULT = 0x2827, - SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x281F, - SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x2820, - SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x2828, + SMSG_WORLD_TEXT = 0x2831, + SMSG_WOW_TOKEN_AUCTION_SOLD = 0x281E, + SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2820, + SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2821, + SMSG_WOW_TOKEN_CAN_REDEEM_FOR_BALANCE_RESULT = 0x285C, + SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x281F, + SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x2819, + SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x281A, + SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x281B, + SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2822, + SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2823, + SMSG_WOW_TOKEN_REDEEM_RESULT = 0x2824, + SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x281C, + SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x281D, + SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x2825, SMSG_XP_GAIN_ABORTED = 0x25E1, - SMSG_XP_GAIN_ENABLED = 0x27F5, + SMSG_XP_GAIN_ENABLED = 0x27F2, SMSG_ZONE_UNDER_ATTACK = 0x2BB5, // Opcodes that are not generated automatically @@ -1821,6 +1836,7 @@ enum OpcodeServer : uint16 // Deleted opcodes, here only to allow compile SMSG_ARENA_TEAM_STATS = 0xBADD, + SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0xBADD, SMSG_BUY_BANK_SLOT_RESULT = 0xBADD, SMSG_BF_MGR_EJECTED = 0xBADD, SMSG_BF_MGR_ENTERING = 0xBADD, |