From e6dd6d8b96a9398d5f647e55883d260eef07213f Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 17 Aug 2026 23:43:10 +0200 Subject: [PATCH] Core/PacketIO: Updated to 12.1.0 --- .../world/master/2026_08_18_00_world.sql | 4 + .../game/Entities/Object/BaseEntity.cpp | 86 +- .../Entities/Object/Updates/UpdateFields.cpp | 1810 +++--- .../Entities/Object/Updates/UpdateFields.h | 523 +- src/server/game/Entities/Player/Player.cpp | 3 + src/server/game/Globals/ObjectMgr.cpp | 9 +- src/server/game/Globals/PlayerChoice.h | 3 + src/server/game/Groups/Group.h | 16 +- src/server/game/Handlers/GroupHandler.cpp | 30 + .../Server/Packets/AuctionHousePackets.cpp | 54 +- .../Server/Packets/AuthenticationPackets.cpp | 49 +- .../game/Server/Packets/BattlePetPackets.cpp | 21 +- .../Server/Packets/BlackMarketPackets.cpp | 26 +- .../game/Server/Packets/CalendarPackets.cpp | 19 +- .../game/Server/Packets/CharacterPackets.cpp | 21 +- .../game/Server/Packets/CharacterPackets.h | 2 + .../game/Server/Packets/ChatPackets.cpp | 2 +- src/server/game/Server/Packets/ChatPackets.h | 2 +- .../game/Server/Packets/CombatLogPackets.cpp | 25 +- .../Server/Packets/CraftingPacketsCommon.cpp | 11 +- .../game/Server/Packets/GarrisonPackets.cpp | 51 +- .../game/Server/Packets/GuildPackets.cpp | 28 +- .../game/Server/Packets/InspectPackets.cpp | 16 +- .../game/Server/Packets/ItemPackets.cpp | 9 +- .../game/Server/Packets/ItemPacketsCommon.cpp | 7 +- src/server/game/Server/Packets/LFGPackets.cpp | 20 +- .../game/Server/Packets/LootPackets.cpp | 19 +- .../game/Server/Packets/MailPackets.cpp | 14 +- .../game/Server/Packets/MiscPackets.cpp | 2 +- .../game/Server/Packets/MovementPackets.cpp | 144 +- .../game/Server/Packets/MovementPackets.h | 2 +- .../Packets/MythicPlusPacketsCommon.cpp | 2 +- src/server/game/Server/Packets/NPCPackets.cpp | 19 +- .../game/Server/Packets/PartyPackets.cpp | 59 +- src/server/game/Server/Packets/PartyPackets.h | 43 +- .../game/Server/Packets/QueryPackets.cpp | 14 +- .../game/Server/Packets/QuestPackets.cpp | 118 +- src/server/game/Server/Packets/QuestPackets.h | 3 + .../game/Server/Packets/ScenarioPackets.cpp | 12 +- .../game/Server/Packets/SpellPackets.cpp | 65 +- src/server/game/Server/Packets/SpellPackets.h | 1 + .../game/Server/Packets/SystemPackets.cpp | 18 +- .../game/Server/Packets/SystemPackets.h | 1 + .../game/Server/Packets/TalentPackets.cpp | 3 - .../game/Server/Packets/TalentPackets.h | 1 - .../game/Server/Packets/TicketPackets.cpp | 34 +- .../game/Server/Packets/TicketPackets.h | 7 + .../game/Server/Packets/TradePackets.cpp | 2 +- .../Server/Packets/TraitPacketsCommon.cpp | 8 +- .../Packets/TransmogrificationPackets.cpp | 2 +- src/server/game/Server/Packets/WhoPackets.cpp | 6 +- src/server/game/Server/Protocol/Opcodes.cpp | 36 +- src/server/game/Server/Protocol/Opcodes.h | 4937 +++++++++-------- src/server/game/Server/WorldSession.h | 2 + 54 files changed, 4200 insertions(+), 4221 deletions(-) create mode 100644 sql/updates/world/master/2026_08_18_00_world.sql diff --git a/sql/updates/world/master/2026_08_18_00_world.sql b/sql/updates/world/master/2026_08_18_00_world.sql new file mode 100644 index 0000000000..efd5971f5a --- /dev/null +++ b/sql/updates/world/master/2026_08_18_00_world.sql @@ -0,0 +1,4 @@ +ALTER TABLE `playerchoice` + ADD COLUMN `ShowChoicesAsGrid` tinyint(1) NOT NULL DEFAULT 0 AFTER `RequiresSelection`, + ADD COLUMN `HideAnswerArt` tinyint(1) NOT NULL DEFAULT 0 AFTER `ShowChoicesAsGrid`, + ADD COLUMN `ShowChoicesAsColumns` tinyint(1) NOT NULL DEFAULT 0 AFTER `HideAnswerArt`; diff --git a/src/server/game/Entities/Object/BaseEntity.cpp b/src/server/game/Entities/Object/BaseEntity.cpp index b0e564a705..d314c8257b 100644 --- a/src/server/game/Entities/Object/BaseEntity.cpp +++ b/src/server/game/Entities/Object/BaseEntity.cpp @@ -261,6 +261,8 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P data.WriteBit(flags.MeshObject); data.FlushBits(); + data << uint32(PauseTimes.size()); + if (flags.MovementUpdate) { Unit const* unit = static_cast(this); @@ -304,24 +306,11 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P data.WriteBit(HasDriveStatus); // HasDriveStatus data.FlushBits(); - if (!unit->m_movementInfo.transport.guid.IsEmpty()) - data << unit->m_movementInfo.transport; - if (HasStandingOnGameObjectGUID) data << *unit->m_movementInfo.standingOnGameObjectGUID; - if (HasInertia) - { - data << unit->m_movementInfo.inertia->id; - data << unit->m_movementInfo.inertia->force.PositionXYZStream(); - data << uint32(unit->m_movementInfo.inertia->lifetime); - } - - if (HasAdvFlying) - { - data << float(unit->m_movementInfo.advFlying->forwardVelocity); - data << float(unit->m_movementInfo.advFlying->upVelocity); - } + if (!unit->m_movementInfo.transport.guid.IsEmpty()) + data << unit->m_movementInfo.transport; if (HasFall) { @@ -336,6 +325,19 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P } } + if (HasInertia) + { + data << unit->m_movementInfo.inertia->id; + data << unit->m_movementInfo.inertia->force.PositionXYZStream(); + data << uint32(unit->m_movementInfo.inertia->lifetime); + } + + if (HasAdvFlying) + { + data << float(unit->m_movementInfo.advFlying->forwardVelocity); + data << float(unit->m_movementInfo.advFlying->upVelocity); + } + if (HasDriveStatus) { data << float(unit->m_movementInfo.driveStatus->speed); @@ -384,18 +386,22 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P data << float(unit->GetAdvFlyingSpeed(ADV_FLYING_OVER_MAX_DECELERATION)); data << float(unit->GetAdvFlyingSpeed(ADV_FLYING_LAUNCH_SPEED_COEFFICIENT)); - data.WriteBit(HasSpline); - data.FlushBits(); - if (MovementForces const* movementForces = unit->GetMovementForces()) for (MovementForce const& force : *movementForces->GetForces()) WorldPackets::Movement::CommonMovement::WriteMovementForceWithDirection(force, data, unit); + data.WriteBit(HasSpline); + data.FlushBits(); + if (HasSpline) WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(*unit->movespline, data); } - data << uint32(PauseTimes.size()); + if (flags.MovementTransport) + { + WorldObject const* self = static_cast(this); + data << self->m_movementInfo.transport; + } if (flags.Stationary) { @@ -433,30 +439,6 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P data << uint64(gameObject->GetPackedLocalRotation()); // Rotation } - //if (flags.Room) - // data << ObjectGuid(HouseGUID); - - //if (flags.Decor) - // data << ObjectGuid(RoomGUID); - - //if (flags.MeshObject) - //{ - // data << ObjectGuid(AttachParentGUID); - // data << TaggedPosition(PositionLocalSpace); - // data << QuaternionData(RotationLocalSpace); - // data << float(ScaleLocalSpace); - // data << uint8(AttachmentFlags); - //} - - if (!PauseTimes.empty()) - data.append(PauseTimes.data(), PauseTimes.size()); - - if (flags.MovementTransport) - { - WorldObject const* self = static_cast(this); - data << self->m_movementInfo.transport; - } - if (flags.GameObject) { GameObject const* gameObject = static_cast(this); @@ -650,6 +632,24 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P data.FlushBits(); } + + //if (flags.Room) + // data << ObjectGuid(HouseGUID); + + //if (flags.Decor) + // data << ObjectGuid(RoomGUID); + + //if (flags.MeshObject) + //{ + // data << ObjectGuid(AttachParentGUID); + // data << TaggedPosition(PositionLocalSpace); + // data << QuaternionData(RotationLocalSpace); + // data << float(ScaleLocalSpace); + // data << uint8(AttachmentFlags); + //} + + if (!PauseTimes.empty()) + data.append(PauseTimes.data(), PauseTimes.size()); } UF::UpdateFieldFlag BaseEntity::GetUpdateFieldFlagsFor(Player const* /*target*/) const diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 96b1d4fcd8..ffa793ab23 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -132,12 +132,6 @@ void ItemMod::WriteCreate(ByteBuffer& data, Player const* receiver, Item const* data << int32(Value); } -void ItemMod::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Item const* owner) const -{ - data << uint8(Type); - data << int32(Value); -} - bool ItemMod::operator==(ItemMod const& right) const { return Type == right.Type @@ -147,11 +141,11 @@ bool ItemMod::operator==(ItemMod const& right) const void ItemModList::WriteCreate(ByteBuffer& data, Player const* receiver, Item const* owner) const { data.WriteBits(Values.size(), 7); + data.FlushBits(); for (uint32 i = 0; i < Values.size(); ++i) { Values[i].WriteCreate(data, receiver, owner); } - data.FlushBits(); } void ItemModList::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Item const* owner) const @@ -180,7 +174,6 @@ void ItemModList::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player c } } } - data.FlushBits(); } void ItemModList::ClearChangesMask() @@ -196,13 +189,6 @@ void ArtifactPower::WriteCreate(ByteBuffer& data, Player const* receiver, Item c data << uint8(CurrentRankWithBonus); } -void ArtifactPower::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Item const* owner) const -{ - data << int16(ArtifactPowerID); - data << uint8(PurchasedRank); - data << uint8(CurrentRankWithBonus); -} - bool ArtifactPower::operator==(ArtifactPower const& right) const { return ArtifactPowerID == right.ArtifactPowerID @@ -295,6 +281,7 @@ void ItemData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteB data << uint64(ArtifactXP); data << uint8(ItemAppearanceModID); } + Modifiers->WriteCreate(data, receiver, owner); data << uint32(ArtifactPowers.size()); data << uint32(Gems.size()); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) @@ -314,7 +301,6 @@ void ItemData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteB { Gems[i].WriteCreate(data, receiver, owner); } - Modifiers->WriteCreate(data, receiver, owner); } static constexpr void ItemDataAppendAllowedFieldsMaskForFlag(ItemData::Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) @@ -445,6 +431,10 @@ void ItemData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player con { data << uint8(ItemAppearanceModID); } + if (changesMask[17]) + { + Modifiers->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } if (changesMask[18]) { data << uint32(ZoneFlags); @@ -457,10 +447,6 @@ void ItemData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player con { data << uint16(DEBUGItemLevel); } - if (changesMask[17]) - { - Modifiers->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } } if (changesMask[21]) { @@ -603,12 +589,6 @@ void UnlockedAzeriteEssence::WriteCreate(ByteBuffer& data, Player const* receive data << uint32(Rank); } -void UnlockedAzeriteEssence::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AzeriteItem const* owner) const -{ - data << uint32(AzeriteEssenceID); - data << uint32(Rank); -} - bool UnlockedAzeriteEssence::operator==(UnlockedAzeriteEssence const& right) const { return AzeriteEssenceID == right.AzeriteEssenceID @@ -661,7 +641,6 @@ void SelectedAzeriteEssences::WriteUpdate(bool ignoreChangesMask, ByteBuffer& da } } } - data.FlushBits(); } void SelectedAzeriteEssences::ClearChangesMask() @@ -689,6 +668,10 @@ void AzeriteItemData::WriteCreate(EnumFlag fieldVisibilityFlags { UnlockedEssences[i].WriteCreate(data, receiver, owner); } + for (uint32 i = 0; i < SelectedEssences.size(); ++i) + { + SelectedEssences[i].WriteCreate(data, receiver, owner); + } for (uint32 i = 0; i < UnlockedEssenceMilestones.size(); ++i) { data << uint32(UnlockedEssenceMilestones[i]); @@ -697,10 +680,6 @@ void AzeriteItemData::WriteCreate(EnumFlag fieldVisibilityFlags { data.WriteBit(Enabled); } - for (uint32 i = 0; i < SelectedEssences.size(); ++i) - { - SelectedEssences[i].WriteCreate(data, receiver, owner); - } data.FlushBits(); } @@ -774,16 +753,6 @@ void AzeriteItemData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla } } } - if (changesMask[4]) - { - for (uint32 i = 0; i < UnlockedEssenceMilestones.size(); ++i) - { - if (UnlockedEssenceMilestones.HasChanged(i) || ignoreNestedChangesMask) - { - data << uint32(UnlockedEssenceMilestones[i]); - } - } - } if (changesMask[3]) { for (uint32 i = 0; i < SelectedEssences.size(); ++i) @@ -794,6 +763,16 @@ void AzeriteItemData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla } } } + if (changesMask[4]) + { + for (uint32 i = 0; i < UnlockedEssenceMilestones.size(); ++i) + { + if (UnlockedEssenceMilestones.HasChanged(i) || ignoreNestedChangesMask) + { + data << uint32(UnlockedEssenceMilestones[i]); + } + } + } if (changesMask[5]) { data << uint64(Xp); @@ -815,15 +794,14 @@ void AzeriteItemData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla data << int32(DEBUGknowledgeWeek); } } - data.FlushBits(); } void AzeriteItemData::ClearChangesMask() { Base::ClearChangesMask(Enabled); Base::ClearChangesMask(UnlockedEssences); - Base::ClearChangesMask(UnlockedEssenceMilestones); Base::ClearChangesMask(SelectedEssences); + Base::ClearChangesMask(UnlockedEssenceMilestones); Base::ClearChangesMask(Xp); Base::ClearChangesMask(Level); Base::ClearChangesMask(AuraLevel); @@ -838,12 +816,6 @@ void SpellCastVisual::WriteCreate(ByteBuffer& data, Player const* receiver, Obje data << int32(ScriptVisualID); } -void SpellCastVisual::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Object const* owner) const -{ - data << int32(SpellXSpellVisualID); - data << int32(ScriptVisualID); -} - bool SpellCastVisual::operator==(SpellCastVisual const& right) const { return SpellXSpellVisualID == right.SpellXSpellVisualID @@ -858,14 +830,6 @@ void UnitChannel::WriteCreate(ByteBuffer& data, Player const* receiver, Unit con data << uint32(Duration); } -void UnitChannel::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Unit const* owner) const -{ - data << int32(SpellID); - SpellVisual.WriteUpdate(ignoreChangesMask, data, receiver, owner); - data << uint32(StartTimeMs); - data << uint32(Duration); -} - bool UnitChannel::operator==(UnitChannel const& right) const { return SpellID == right.SpellID @@ -944,7 +908,6 @@ void VisibleItem::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player c data << uint8(SheatheCategory); } } - data.FlushBits(); } void VisibleItem::ClearChangesMask() @@ -968,12 +931,6 @@ void PassiveSpellHistory::WriteCreate(ByteBuffer& data, Player const* receiver, data << int32(AuraSpellID); } -void PassiveSpellHistory::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Unit const* owner) const -{ - data << int32(SpellID); - data << int32(AuraSpellID); -} - bool PassiveSpellHistory::operator==(PassiveSpellHistory const& right) const { return SpellID == right.SpellID @@ -1057,6 +1014,8 @@ void UnitData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteB data << *Target; data << *BattlePetCompanionGUID; data << uint64(BattlePetDBID); + data << *BattlePetAttachedToDecorGUID; + data << *BattlePetDecorHouseGUID; ChannelData->WriteCreate(data, receiver, owner); data << int8(SpellEmpowerStage); data << uint32(SummonedByHomeRealm); @@ -1090,6 +1049,10 @@ void UnitData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteB data << int32(ScalingLevelDelta); data << uint8(ScalingFactionGroup); data << int32(ViewerDependentValue::GetValue(this, receiver, owner)); + for (uint32 i = 0; i < 3; ++i) + { + VirtualItems[i].WriteCreate(data, receiver, owner); + } data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); @@ -1233,28 +1196,23 @@ void UnitData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteB { data << ChannelObjects[i]; } - for (uint32 i = 0; i < 3; ++i) - { - VirtualItems[i].WriteCreate(data, receiver, owner); - } - data.FlushBits(); data.WriteBit(Field_314); - data.WriteBits(AssistActionData.has_value(), 1); + data.WriteBit(AssistActionData.has_value()); + data.FlushBits(); if (AssistActionData.has_value()) { AssistActionData->WriteCreate(data, receiver, owner); } - data.FlushBits(); } static constexpr void UnitDataAppendAllowedFieldsMaskForFlag(UnitData::Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= std::array{ 0x00010000u, 0xE0080000u, 0xFE100002u, 0x00000FFEu, 0xC0000200u, 0xFE03FFFFu, 0xFFFFFFFFu, 0x0000000Fu }; + allowedMaskForTarget |= std::array{ 0x00010000u, 0x80200000u, 0xF840000Eu, 0x00003FFEu, 0x00000800u, 0xF80FFFFFu, 0xFFFFFFFFu, 0x0000003Fu }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll)) - allowedMaskForTarget |= std::array{ 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000200u, 0x0003FFFFu, 0x00000000u, 0x00000000u }; + allowedMaskForTarget |= std::array{ 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000800u, 0x000FFFFFu, 0x00000000u, 0x00000000u }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath)) - allowedMaskForTarget |= std::array{ 0x00000000u, 0xE0000000u, 0x00000002u, 0x00000000u, 0x00000000u, 0x00000000u, 0x003FC000u, 0x00000000u }; + allowedMaskForTarget |= std::array{ 0x00000000u, 0x80000000u, 0x0000000Eu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00FF0000u, 0x00000000u }; } void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) @@ -1264,14 +1222,14 @@ void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFl void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag fieldVisibilityFlags) { - Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x1FF7FFFFu, 0x01EFFFFDu, 0xFFFFF001u, 0x3FFFFFFFu, 0x01FC0000u, 0x00000000u, 0x00000000u }); + Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x7FDFFFFFu, 0x07BFFFF1u, 0xFFFFC001u, 0xFFFFFFFFu, 0x07F00000u, 0x00000000u, 0x00000000u }); UnitDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask &= allowedMaskForTarget; } void UnitData::WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Unit const* owner) const { - Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x1FF7FFFFu, 0x01EFFFFDu, 0xFFFFF001u, 0x3FFFFFFFu, 0x01FC0000u, 0x00000000u, 0x00000000u }); + Mask allowedMaskForTarget({ 0xFFFEFFFFu, 0x7FDFFFFFu, 0x07BFFFF1u, 0xFFFFC001u, 0xFFFFFFFFu, 0x07F00000u, 0x00000000u, 0x00000000u }); UnitDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(_changesMask & allowedMaskForTarget, data, receiver, owner, false); } @@ -1437,447 +1395,458 @@ void UnitData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player con } if (changesMask[25]) { - ChannelData->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + data << *BattlePetAttachedToDecorGUID; } if (changesMask[26]) { - data << int8(SpellEmpowerStage); + data << *BattlePetDecorHouseGUID; } if (changesMask[27]) { - data << uint32(SummonedByHomeRealm); + ChannelData->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } if (changesMask[28]) { - data << uint8(Race); + data << int8(SpellEmpowerStage); } if (changesMask[29]) { - data << uint8(ClassId); + data << uint32(SummonedByHomeRealm); } if (changesMask[30]) { - data << uint8(PlayerClassId); + data << uint8(Race); } if (changesMask[31]) { - data << uint8(Sex); + data << uint8(ClassId); } } if (changesMask[32]) { if (changesMask[33]) { - data << uint8(CreatureType); + data << uint8(PlayerClassId); } if (changesMask[34]) { - data << uint8(DisplayPower); + data << uint8(Sex); } if (changesMask[35]) { - data << uint32(OverrideDisplayPowerID); + data << uint8(CreatureType); } if (changesMask[36]) { - data << int64(Health); + data << uint8(DisplayPower); } if (changesMask[37]) { - data << int64(MaxHealth); + data << uint32(OverrideDisplayPowerID); } if (changesMask[38]) { - data << int32(Level); + data << int64(Health); } if (changesMask[39]) { - data << int32(EffectiveLevel); + data << int64(MaxHealth); } if (changesMask[40]) { - data << int32(ContentTuningID); + data << int32(Level); } if (changesMask[41]) { - data << int32(ScalingLevelMin); + data << int32(EffectiveLevel); } if (changesMask[42]) { - data << int32(ScalingLevelMax); + data << int32(ContentTuningID); } if (changesMask[43]) { - data << int32(ScalingLevelDelta); + data << int32(ScalingLevelMin); } if (changesMask[44]) { - data << uint8(ScalingFactionGroup); + data << int32(ScalingLevelMax); } if (changesMask[45]) { - data << int32(ViewerDependentValue::GetValue(this, receiver, owner)); + data << int32(ScalingLevelDelta); } if (changesMask[46]) { - data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); + data << uint8(ScalingFactionGroup); } if (changesMask[47]) { - data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); + data << int32(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[48]) { - data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); + data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[49]) { - data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); + data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[50]) { - data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); + data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[51]) { - data << uint32(RangedAttackRoundBaseTime); + data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[52]) { - data << float(BoundingRadius); + data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[53]) { - data << float(CombatReach); + data << uint32(RangedAttackRoundBaseTime); } if (changesMask[54]) { - data << float(DisplayScale); + data << float(BoundingRadius); } if (changesMask[55]) { - data << int32(CreatureFamily); + data << float(CombatReach); } if (changesMask[56]) { - data << uint8(OverrideCreatureType); + data << float(DisplayScale); } if (changesMask[57]) { - data << int32(NativeDisplayID); + data << int32(CreatureFamily); } if (changesMask[58]) { - data << float(NativeXDisplayScale); + data << uint8(OverrideCreatureType); } if (changesMask[59]) { - data << int32(MountDisplayID); + data << int32(NativeDisplayID); } if (changesMask[60]) { - data << int32(CosmeticMountDisplayID); + data << float(NativeXDisplayScale); } if (changesMask[61]) { - data << float(MinDamage); + data << int32(MountDisplayID); } if (changesMask[62]) { - data << float(MaxDamage); + data << int32(CosmeticMountDisplayID); } if (changesMask[63]) { - data << float(MinOffHandDamage); + data << float(MinDamage); } } if (changesMask[64]) { if (changesMask[65]) { - data << float(MaxOffHandDamage); + data << float(MaxDamage); } if (changesMask[66]) { - data << uint8(StandState); + data << float(MinOffHandDamage); } if (changesMask[67]) { - data << uint8(PetTalentPoints); + data << float(MaxOffHandDamage); } if (changesMask[68]) { - data << uint8(VisFlags); + data << uint8(StandState); } if (changesMask[69]) { - data << uint8(AnimTier); + data << uint8(PetTalentPoints); } if (changesMask[70]) { - data << uint32(PetNumber); + data << uint8(VisFlags); } if (changesMask[71]) { - data << uint32(PetNameTimestamp); + data << uint8(AnimTier); } if (changesMask[72]) { - data << uint32(PetExperience); + data << uint32(PetNumber); } if (changesMask[73]) { - data << uint32(PetNextLevelExperience); + data << uint32(PetNameTimestamp); } if (changesMask[74]) { - data << float(ModCastingSpeed); + data << uint32(PetExperience); } if (changesMask[75]) { - data << float(ModCastingSpeedNeg); + data << uint32(PetNextLevelExperience); } if (changesMask[76]) { - data << float(ModSpellHaste); + data << float(ModCastingSpeed); } if (changesMask[77]) { - data << float(ModHaste); + data << float(ModCastingSpeedNeg); } if (changesMask[78]) { - data << float(ModRangedHaste); + data << float(ModSpellHaste); } if (changesMask[79]) { - data << float(ModHasteRegen); + data << float(ModHaste); } if (changesMask[80]) { - data << float(ModTimeRate); + data << float(ModRangedHaste); } if (changesMask[81]) { - data << int32(CreatedBySpell); + data << float(ModHasteRegen); } if (changesMask[82]) { - data << int32(EmoteState); + data << float(ModTimeRate); } if (changesMask[83]) { - data << int32(BaseMana); + data << int32(CreatedBySpell); } if (changesMask[84]) { - data << int32(BaseHealth); + data << int32(EmoteState); } if (changesMask[85]) { - data << uint8(SheatheState); + data << int32(BaseMana); } if (changesMask[86]) { - data << uint8(ViewerDependentValue::GetValue(this, receiver, owner)); + data << int32(BaseHealth); } if (changesMask[87]) { - data << uint8(PetFlags); + data << uint8(SheatheState); } if (changesMask[88]) { - data << uint8(ShapeshiftForm); + data << uint8(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[89]) { - data << int32(AttackPower); + data << uint8(PetFlags); } if (changesMask[90]) { - data << int32(AttackPowerModPos); + data << uint8(ShapeshiftForm); } if (changesMask[91]) { - data << int32(AttackPowerModNeg); + data << int32(AttackPower); } if (changesMask[92]) { - data << float(AttackPowerMultiplier); + data << int32(AttackPowerModPos); } if (changesMask[93]) { - data << int32(AttackPowerModSupport); + data << int32(AttackPowerModNeg); } if (changesMask[94]) { - data << int32(RangedAttackPower); + data << float(AttackPowerMultiplier); } if (changesMask[95]) { - data << int32(RangedAttackPowerModPos); + data << int32(AttackPowerModSupport); } } if (changesMask[96]) { if (changesMask[97]) { - data << int32(RangedAttackPowerModNeg); + data << int32(RangedAttackPower); } if (changesMask[98]) { - data << float(RangedAttackPowerMultiplier); + data << int32(RangedAttackPowerModPos); } if (changesMask[99]) { - data << int32(RangedAttackPowerModSupport); + data << int32(RangedAttackPowerModNeg); } if (changesMask[100]) { - data << int32(MainHandWeaponAttackPower); + data << float(RangedAttackPowerMultiplier); } if (changesMask[101]) { - data << int32(OffHandWeaponAttackPower); + data << int32(RangedAttackPowerModSupport); } if (changesMask[102]) { - data << int32(RangedWeaponAttackPower); + data << int32(MainHandWeaponAttackPower); } if (changesMask[103]) { - data << int32(SetAttackSpeedAura); + data << int32(OffHandWeaponAttackPower); } if (changesMask[104]) { - data << float(Lifesteal); + data << int32(RangedWeaponAttackPower); } if (changesMask[105]) { - data << float(MinRangedDamage); + data << int32(SetAttackSpeedAura); } if (changesMask[106]) { - data << float(MaxRangedDamage); + data << float(Lifesteal); } if (changesMask[107]) { - data << float(ManaCostMultiplier); + data << float(MinRangedDamage); } if (changesMask[108]) { - data << float(MaxHealthModifier); + data << float(MaxRangedDamage); } if (changesMask[109]) { - data << float(HoverHeight); + data << float(ManaCostMultiplier); } if (changesMask[110]) { - data << int32(MinItemLevelCutoff); + data << float(MaxHealthModifier); } if (changesMask[111]) { - data << int32(MinItemLevel); + data << float(HoverHeight); } if (changesMask[112]) { - data << int32(MaxItemLevel); + data << int32(MinItemLevelCutoff); } if (changesMask[113]) { - data << int32(AzeriteItemLevel); + data << int32(MinItemLevel); } if (changesMask[114]) { - data << int32(WildBattlePetLevel); + data << int32(MaxItemLevel); } if (changesMask[115]) { - data << int32(BattlePetCompanionExperience); + data << int32(AzeriteItemLevel); } if (changesMask[116]) { - data << uint32(BattlePetCompanionNameTimestamp); + data << int32(WildBattlePetLevel); } if (changesMask[117]) { - data << int32(ViewerDependentValue::GetValue(this, receiver, owner)); + data << int32(BattlePetCompanionExperience); } if (changesMask[118]) { - data << int32(ScaleDuration); + data << uint32(BattlePetCompanionNameTimestamp); } if (changesMask[119]) { - data << int32(LooksLikeMountID); + data << int32(ViewerDependentValue::GetValue(this, receiver, owner)); } if (changesMask[120]) { - data << int32(LooksLikeCreatureID); + data << int32(ScaleDuration); } if (changesMask[121]) { - data << int32(LookAtControllerID); + data << int32(LooksLikeMountID); } if (changesMask[122]) { - data << int32(PerksVendorItemID); + data << int32(LooksLikeCreatureID); } if (changesMask[123]) { - data << int32(TaxiNodesID); + data << int32(LookAtControllerID); } if (changesMask[124]) { - data << *GuildGUID; + data << int32(PerksVendorItemID); } if (changesMask[125]) { - data << int32(FlightCapabilityID); + data << int32(TaxiNodesID); } if (changesMask[126]) { - data << float(GlideEventSpeedDivisor); + data << *GuildGUID; } if (changesMask[127]) { - data << int32(DriveCapabilityID); + data << int32(FlightCapabilityID); } } if (changesMask[128]) { if (changesMask[129]) { - data << int32(MaxHealthModifierFlatNeg); + data << float(GlideEventSpeedDivisor); } if (changesMask[130]) { - data << int32(MaxHealthModifierFlatPos); + data << int32(DriveCapabilityID); } if (changesMask[131]) { - data << uint32(SilencedSchoolMask); + data << int32(MaxHealthModifierFlatNeg); } if (changesMask[132]) { - data << uint32(CurrentAreaID); + data << int32(MaxHealthModifierFlatPos); } if (changesMask[133]) { - data << float(NameplateDistanceMod); + data << uint32(SilencedSchoolMask); } if (changesMask[134]) { - data << float(AutoAttackRangeMod); + data << uint32(CurrentAreaID); } if (changesMask[135]) + { + data << float(NameplateDistanceMod); + } + if (changesMask[136]) + { + data << float(AutoAttackRangeMod); + } + if (changesMask[137]) { data << *NameplateAttachToGUID; } - data.WriteBits(AssistActionData.has_value(), 1); - data.FlushBits(); - if (changesMask[136]) + data.WriteBit(AssistActionData.has_value()); + } + data.FlushBits(); + if (changesMask[128]) + { + if (changesMask[138]) { if (AssistActionData.has_value()) { @@ -1885,89 +1854,88 @@ void UnitData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player con } } } - if (changesMask[137]) + if (changesMask[139]) { for (uint32 i = 0; i < 10; ++i) { - if (changesMask[138 + i]) + if (changesMask[140 + i]) { data << int32(Power[i]); } - if (changesMask[148 + i]) + if (changesMask[150 + i]) { data << int32(MaxPower[i]); } - if (changesMask[158 + i]) + if (changesMask[160 + i]) { data << float(PowerRegenFlatModifier[i]); } - if (changesMask[168 + i]) + if (changesMask[170 + i]) { data << float(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[182]) - { - for (uint32 i = 0; i < 2; ++i) - { - if (changesMask[183 + i]) - { - data << uint32(AttackRoundBaseTime[i]); - } - } - } - if (changesMask[185]) - { - for (uint32 i = 0; i < 5; ++i) - { - if (changesMask[186 + i]) - { - data << int32(Stats[i]); - } - if (changesMask[191 + i]) - { - data << int32(StatPosBuff[i]); - } - if (changesMask[196 + i]) - { - data << int32(StatNegBuff[i]); - } - if (changesMask[201 + i]) - { - data << int32(StatSupportBuff[i]); - } - } - } - if (changesMask[206]) - { - for (uint32 i = 0; i < 7; ++i) - { - if (changesMask[207 + i]) - { - data << int32(Resistances[i]); - } - if (changesMask[214 + i]) - { - data << int32(BonusResistanceMods[i]); - } - if (changesMask[221 + i]) - { - data << int32(ManaCostModifier[i]); - } - } - } - if (changesMask[178]) + if (changesMask[180]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[179 + i]) + if (changesMask[181 + i]) { VirtualItems[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } } - data.FlushBits(); + if (changesMask[184]) + { + for (uint32 i = 0; i < 2; ++i) + { + if (changesMask[185 + i]) + { + data << uint32(AttackRoundBaseTime[i]); + } + } + } + if (changesMask[187]) + { + for (uint32 i = 0; i < 5; ++i) + { + if (changesMask[188 + i]) + { + data << int32(Stats[i]); + } + if (changesMask[193 + i]) + { + data << int32(StatPosBuff[i]); + } + if (changesMask[198 + i]) + { + data << int32(StatNegBuff[i]); + } + if (changesMask[203 + i]) + { + data << int32(StatSupportBuff[i]); + } + } + } + if (changesMask[208]) + { + for (uint32 i = 0; i < 7; ++i) + { + if (changesMask[209 + i]) + { + data << int32(Resistances[i]); + } + if (changesMask[216 + i]) + { + data << int32(BonusResistanceMods[i]); + } + if (changesMask[223 + i]) + { + data << int32(ManaCostModifier[i]); + } + } + } } void UnitData::ClearChangesMask() @@ -1996,6 +1964,8 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(Target); Base::ClearChangesMask(BattlePetCompanionGUID); Base::ClearChangesMask(BattlePetDBID); + Base::ClearChangesMask(BattlePetAttachedToDecorGUID); + Base::ClearChangesMask(BattlePetDecorHouseGUID); Base::ClearChangesMask(ChannelData); Base::ClearChangesMask(SpellEmpowerStage); Base::ClearChangesMask(SummonedByHomeRealm); @@ -2126,12 +2096,6 @@ void ChrCustomizationChoice::WriteCreate(ByteBuffer& data, Player const* receive data << uint32(ChrCustomizationChoiceID); } -void ChrCustomizationChoice::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Object const* owner) const -{ - data << uint32(ChrCustomizationOptionID); - data << uint32(ChrCustomizationChoiceID); -} - bool ChrCustomizationChoice::operator==(ChrCustomizationChoice const& right) const { return ChrCustomizationOptionID == right.ChrCustomizationOptionID @@ -2312,8 +2276,8 @@ void PetCreatureName::WriteCreate(ByteBuffer& data, Player const* receiver, Play { data << uint32(CreatureID); data.WriteBits(Name->size(), 8); - data << WorldPackets::SizedString::Data(*Name); data.FlushBits(); + data << WorldPackets::SizedString::Data(*Name); } void PetCreatureName::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -2334,10 +2298,10 @@ void PetCreatureName::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Play if (changesMask[2]) { data.WriteBits(Name->size(), 8); + data.FlushBits(); data << WorldPackets::SizedString::Data(*Name); } } - data.FlushBits(); } void PetCreatureName::ClearChangesMask() @@ -2358,18 +2322,6 @@ void CTROptions::WriteCreate(ByteBuffer& data, Player const* receiver, Player co } } -void CTROptions::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << uint32(ConditionalFlags.size()); - data.FlushBits(); - data << uint8(FactionGroup); - data << uint32(ChromieTimeExpansionMask); - for (uint32 i = 0; i < ConditionalFlags.size(); ++i) - { - data << uint32(ConditionalFlags[i]); - } -} - bool CTROptions::operator==(CTROptions const& right) const { return ConditionalFlags == right.ConditionalFlags @@ -2392,22 +2344,6 @@ void LeaverInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Player co data.FlushBits(); } -void LeaverInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data.FlushBits(); - data << BnetAccountGUID; - data << float(LeaveScore); - data << uint32(SeasonID); - data << uint32(TotalLeaves); - data << uint32(TotalSuccesses); - data << int32(ConsecutiveSuccesses); - data << int64(LastPenaltyTime); - data << int64(LeaverExpirationTime); - data << int32(Flags); - data.WriteBit(IsLeaver); - data.FlushBits(); -} - bool LeaverInfo::operator==(LeaverInfo const& right) const { return IsLeaver == right.IsLeaver @@ -2432,7 +2368,6 @@ void DeclinedNames::WriteCreate(ByteBuffer& data, Player const* receiver, Player { data << WorldPackets::SizedString::Data(Name[i]); } - data.FlushBits(); } void DeclinedNames::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -2466,7 +2401,6 @@ void DeclinedNames::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player } } } - data.FlushBits(); } void DeclinedNames::ClearChangesMask() @@ -2538,16 +2472,6 @@ void NPCAsPlayerInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Play data << TransportGUID; } -void NPCAsPlayerInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(Field_0); - data << int32(CharacterLoadoutID); - data << int32(CreatureID); - data << LocWorldSpace; - data << float(FacingWorldSpace); - data << TransportGUID; -} - bool NPCAsPlayerInfo::operator==(NPCAsPlayerInfo const& right) const { return Field_0 == right.Field_0 @@ -2591,6 +2515,10 @@ void PlayerData::WriteCreate(EnumFlag fieldVisibilityFlags, Byt WriteMapFieldCreate(QuestLogQuestIdToIndex, data, receiver, owner); data << uint32(QuestSessionQuestLog.size()); } + for (uint32 i = 0; i < 19; ++i) + { + VisibleItems[i].WriteCreate(data, receiver, owner); + } data << int32(PlayerTitle); data << int32(FakeInebriation); data << uint32(VirtualPlayerRealm); @@ -2616,8 +2544,14 @@ void PlayerData::WriteCreate(EnumFlag fieldVisibilityFlags, Byt CtrOptions->WriteCreate(data, receiver, owner); data << int32(CovenantID); data << int32(SoulbindID); + data << *DungeonScore; + LeaverInfo->WriteCreate(data, receiver, owner); data << *SpectateTarget; data << int32(WorldLootObjectInventorySwapSlot); + for (uint32 i = 0; i < 16; ++i) + { + data << VisibleEquipableSpells[i]; + } data << uint32(VisualItemReplacements.size()); for (uint32 i = 0; i < 19; ++i) { @@ -2644,38 +2578,27 @@ void PlayerData::WriteCreate(EnumFlag fieldVisibilityFlags, Byt { ArenaCooldowns[i].WriteCreate(data, receiver, owner); } + for (uint32 i = 0; i < PetNames.size(); ++i) + { + PetNames[i].WriteCreate(data, receiver, owner); + } for (uint32 i = 0; i < VisualItemReplacements.size(); ++i) { data << int32(VisualItemReplacements[i]); } - for (uint32 i = 0; i < 19; ++i) - { - VisibleItems[i].WriteCreate(data, receiver, owner); - } - data.FlushBits(); data.WriteBits(Name->size(), 6); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember)) { data.WriteBit(HasQuestSession); } data.WriteBit(HasLevelLink); - data.WriteBits(DeclinedNames.has_value(), 1); - data << *DungeonScore; + data.WriteBit(DeclinedNames.has_value()); + data.FlushBits(); data << WorldPackets::SizedString::Data(*Name); - LeaverInfo->WriteCreate(data, receiver, owner); - for (uint32 i = 0; i < 16; ++i) - { - data << VisibleEquipableSpells[i]; - } - for (uint32 i = 0; i < PetNames.size(); ++i) - { - PetNames[i].WriteCreate(data, receiver, owner); - } if (DeclinedNames.has_value()) { DeclinedNames->WriteCreate(data, receiver, owner); } - data.FlushBits(); } static constexpr void PlayerDataAppendAllowedFieldsMaskForFlag(PlayerData::Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) @@ -2810,16 +2733,6 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } } } - if (changesMask[8]) - { - for (uint32 i = 0; i < VisualItemReplacements.size(); ++i) - { - if (VisualItemReplacements.HasChanged(i) || ignoreNestedChangesMask) - { - data << int32(VisualItemReplacements[i]); - } - } - } if (changesMask[7]) { for (uint32 i = 0; i < PetNames.size(); ++i) @@ -2830,6 +2743,16 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } } } + if (changesMask[8]) + { + for (uint32 i = 0; i < VisualItemReplacements.size(); ++i) + { + if (VisualItemReplacements.HasChanged(i) || ignoreNestedChangesMask) + { + data << int32(VisualItemReplacements[i]); + } + } + } if (changesMask[9]) { data << *DuelArbiter; @@ -2961,6 +2884,14 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c { data << int32(SoulbindID); } + if (changesMask[43]) + { + data << *DungeonScore; + } + if (changesMask[44]) + { + LeaverInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } if (changesMask[45]) { data << *SpectateTarget; @@ -2981,20 +2912,15 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c { data.WriteBits(Name->size(), 6); } - data.WriteBits(DeclinedNames.has_value(), 1); - data.FlushBits(); - if (changesMask[43]) - { - data << *DungeonScore; - } + data.WriteBit(DeclinedNames.has_value()); + } + data.FlushBits(); + if (changesMask[32]) + { if (changesMask[36]) { data << WorldPackets::SizedString::Data(*Name); } - if (changesMask[44]) - { - LeaverInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } if (changesMask[47]) { if (DeclinedNames.has_value()) @@ -3026,6 +2952,16 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } } } + if (changesMask[229]) + { + for (uint32 i = 0; i < 19; ++i) + { + if (changesMask[230 + i]) + { + VisibleItems[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + } + } if (changesMask[249]) { for (uint32 i = 0; i < 6; ++i) @@ -3046,26 +2982,6 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } } } - if (changesMask[306]) - { - for (uint32 i = 0; i < 19; ++i) - { - if (changesMask[307 + i]) - { - data << uint32(PlunderstormItemDisplayID[i]); - } - } - } - if (changesMask[229]) - { - for (uint32 i = 0; i < 19; ++i) - { - if (changesMask[230 + i]) - { - VisibleItems[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - } if (changesMask[289]) { for (uint32 i = 0; i < 16; ++i) @@ -3076,7 +2992,16 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } } } - data.FlushBits(); + if (changesMask[306]) + { + for (uint32 i = 0; i < 19; ++i) + { + if (changesMask[307 + i]) + { + data << uint32(PlunderstormItemDisplayID[i]); + } + } + } } void PlayerData::ClearChangesMask() @@ -3087,8 +3012,8 @@ void PlayerData::ClearChangesMask() Base::ClearChangesMask(RandomCustomizations); Base::ClearChangesMask(QuestSessionQuestLog); Base::ClearChangesMask(ArenaCooldowns); - Base::ClearChangesMask(VisualItemReplacements); Base::ClearChangesMask(PetNames); + Base::ClearChangesMask(VisualItemReplacements); Base::ClearChangesMask(DuelArbiter); Base::ClearChangesMask(WowAccount); Base::ClearChangesMask(BnetAccount); @@ -3314,19 +3239,6 @@ void PlayerDataElement::WriteCreate(ByteBuffer& data, Player const* receiver, Pl } } -void PlayerDataElement::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << uint32(Type); - if (Type == 1) - { - data << float(FloatValue); - } - if (Type == 0) - { - data << int64(Int64Value); - } -} - bool PlayerDataElement::operator==(PlayerDataElement const& right) const { return Type == right.Type @@ -3479,7 +3391,6 @@ void PVPInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const data << uint32(SeasonRoundsWon); } } - data.FlushBits(); } void PVPInfo::ClearChangesMask() @@ -3505,16 +3416,17 @@ void PVPInfo::ClearChangesMask() _changesMask.ResetAll(); } -void CharacterRestriction::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const +void Research::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { - data << int32(Field_0); - data << int32(Field_4); - data << int32(Field_8); - data.WriteBits(Type, 5); - data.FlushBits(); + data << int16(ResearchProjectID); } -void CharacterRestriction::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const +bool Research::operator==(Research const& right) const +{ + return ResearchProjectID == right.ResearchProjectID; +} + +void CharacterRestriction::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { data << int32(Field_0); data << int32(Field_4); @@ -3538,13 +3450,6 @@ void SpellPctModByLabel::WriteCreate(ByteBuffer& data, Player const* receiver, P data << int32(LabelID); } -void SpellPctModByLabel::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(ModIndex); - data << float(ModifierValue); - data << int32(LabelID); -} - bool SpellPctModByLabel::operator==(SpellPctModByLabel const& right) const { return ModIndex == right.ModIndex @@ -3559,13 +3464,6 @@ void SpellFlatModByLabel::WriteCreate(ByteBuffer& data, Player const* receiver, data << int32(LabelID); } -void SpellFlatModByLabel::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(ModIndex); - data << int32(ModifierValue); - data << int32(LabelID); -} - bool SpellFlatModByLabel::operator==(SpellFlatModByLabel const& right) const { return ModIndex == right.ModIndex @@ -3580,13 +3478,6 @@ void SpellPctPVPModByLabel::WriteCreate(ByteBuffer& data, Player const* receiver data << int32(LabelID); } -void SpellPctPVPModByLabel::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(PvpModIndex); - data << float(ModifierValue); - data << int32(LabelID); -} - bool SpellPctPVPModByLabel::operator==(SpellPctPVPModByLabel const& right) const { return PvpModIndex == right.PvpModIndex @@ -3601,13 +3492,6 @@ void SpellFlatPVPModByLabel::WriteCreate(ByteBuffer& data, Player const* receive data << int32(LabelID); } -void SpellFlatPVPModByLabel::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(PvpModIndex); - data << int32(ModifierValue); - data << int32(LabelID); -} - bool SpellFlatPVPModByLabel::operator==(SpellFlatPVPModByLabel const& right) const { return PvpModIndex == right.PvpModIndex @@ -3712,13 +3596,6 @@ void MawPower::WriteCreate(ByteBuffer& data, Player const* receiver, Player cons data << int32(Stacks); } -void MawPower::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(SpellID); - data << int32(MawPowerID); - data << int32(Stacks); -} - bool MawPower::operator==(MawPower const& right) const { return SpellID == right.SpellID @@ -3735,16 +3612,6 @@ void MultiFloorExplore::WriteCreate(ByteBuffer& data, Player const* receiver, Pl } } -void MultiFloorExplore::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << uint32(WorldMapOverlayIDs.size()); - for (uint32 i = 0; i < WorldMapOverlayIDs.size(); ++i) - { - data << int32(WorldMapOverlayIDs[i]); - } - data.FlushBits(); -} - bool MultiFloorExplore::operator==(MultiFloorExplore const& right) const { return WorldMapOverlayIDs == right.WorldMapOverlayIDs; @@ -3756,51 +3623,31 @@ void RecipeProgressionInfo::WriteCreate(ByteBuffer& data, Player const* receiver data << uint16(Experience); } -void RecipeProgressionInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << uint16(RecipeProgressionGroupID); - data << uint16(Experience); -} - bool RecipeProgressionInfo::operator==(RecipeProgressionInfo const& right) const { return RecipeProgressionGroupID == right.RecipeProgressionGroupID && Experience == right.Experience; } -void LevelLinkInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const +void DiscordPlayerInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { - data << *TargetGUID; - data << int32(Level); + data.WriteBits(AccessToken.size() + 1, 24); + data << uint64(DiscordUserID); + data << uint8(AccountType); + data << uint64(GuildLobbyID); + data << uint8(GuildSettings); + data << uint8(DisplayNameType); + data << WorldPackets::SizedCString::Data(AccessToken); } -void LevelLinkInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const +bool DiscordPlayerInfo::operator==(DiscordPlayerInfo const& right) const { - Mask changesMask = _changesMask; - if (ignoreChangesMask) - changesMask.SetAll(); - - data.WriteBits(changesMask.GetBlock(0), 3); - - data.FlushBits(); - if (changesMask[0]) - { - if (changesMask[1]) - { - data << *TargetGUID; - } - if (changesMask[2]) - { - data << int32(Level); - } - } -} - -void LevelLinkInfo::ClearChangesMask() -{ - Base::ClearChangesMask(TargetGUID); - Base::ClearChangesMask(Level); - _changesMask.ResetAll(); + return DiscordUserID == right.DiscordUserID + && AccountType == right.AccountType + && GuildLobbyID == right.GuildLobbyID + && GuildSettings == right.GuildSettings + && DisplayNameType == right.DisplayNameType + && AccessToken == right.AccessToken; } void QuestSession::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -3873,16 +3720,42 @@ void ReplayedQuest::ClearChangesMask() _changesMask.ResetAll(); } -void TraitEntry::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const +void LevelLinkInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { - data << int32(TraitNodeID); - data << int32(TraitNodeEntryID); - data << int32(Rank); - data << int32(GrantedRanks); - data << int32(BonusRanks); + data << *TargetGUID; + data << int32(Level); } -void TraitEntry::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const +void LevelLinkInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const +{ + Mask changesMask = _changesMask; + if (ignoreChangesMask) + changesMask.SetAll(); + + data.WriteBits(changesMask.GetBlock(0), 3); + + data.FlushBits(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data << *TargetGUID; + } + if (changesMask[2]) + { + data << int32(Level); + } + } +} + +void LevelLinkInfo::ClearChangesMask() +{ + Base::ClearChangesMask(TargetGUID); + Base::ClearChangesMask(Level); + _changesMask.ResetAll(); +} + +void TraitEntry::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { data << int32(TraitNodeID); data << int32(TraitNodeEntryID); @@ -3912,19 +3785,6 @@ void TraitSubTreeCache::WriteCreate(ByteBuffer& data, Player const* receiver, Pl data.FlushBits(); } -void TraitSubTreeCache::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(TraitSubTreeID); - data << uint32(Entries.size()); - for (uint32 i = 0; i < Entries.size(); ++i) - { - Entries[i].WriteUpdate(ignoreChangesMask, data, receiver, owner); - } - data.FlushBits(); - data.WriteBits(Active, 1); - data.FlushBits(); -} - bool TraitSubTreeCache::operator==(TraitSubTreeCache const& right) const { return Entries == right.Entries @@ -3957,13 +3817,13 @@ void TraitConfig::WriteCreate(ByteBuffer& data, Player const* receiver, Player c { Entries[i].WriteCreate(data, receiver, owner); } - data.WriteBits(Name->size(), 9); for (uint32 i = 0; i < SubTrees.size(); ++i) { SubTrees[i].WriteCreate(data, receiver, owner); } - data << WorldPackets::SizedString::Data(*Name); + data.WriteBits(Name->size(), 9); data.FlushBits(); + data << WorldPackets::SizedString::Data(*Name); } void TraitConfig::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -4079,10 +3939,16 @@ void TraitConfig::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player c if (changesMask[5]) { data.WriteBits(Name->size(), 9); - data << WorldPackets::SizedString::Data(*Name); } } data.FlushBits(); + if (changesMask[4]) + { + if (changesMask[5]) + { + data << WorldPackets::SizedString::Data(*Name); + } + } } void TraitConfig::ClearChangesMask() @@ -4103,23 +3969,8 @@ void TraitConfig::ClearChangesMask() void CraftingReagentBase::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { - data.WriteBits(ItemID.has_value(), 1); - data.WriteBits(CurrencyID.has_value(), 1); - data.FlushBits(); - if (ItemID.has_value()) - { - data << int32(*ItemID); - } - if (CurrencyID.has_value()) - { - data << int32(*CurrencyID); - } -} - -void CraftingReagentBase::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data.WriteBits(ItemID.has_value(), 1); - data.WriteBits(CurrencyID.has_value(), 1); + data.WriteBit(ItemID.has_value()); + data.WriteBit(CurrencyID.has_value()); data.FlushBits(); if (ItemID.has_value()) { @@ -4143,11 +3994,11 @@ void CraftingOrderItem::WriteCreate(ByteBuffer& data, Player const* receiver, Pl data << int32(OrderItemType); data << *ItemGUID; data << *OwnerGUID; + Reagent->WriteCreate(data, receiver, owner); data << uint32(Quantity); data << int32(ReagentQuality); data << uint32(Flags); - Reagent->WriteCreate(data, receiver, owner); - data.WriteBits(DataSlotIndex.has_value(), 1); + data.WriteBit(DataSlotIndex.has_value()); data.FlushBits(); if (DataSlotIndex.has_value()) { @@ -4185,6 +4036,10 @@ void CraftingOrderItem::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Pl { data << *OwnerGUID; } + if (changesMask[6]) + { + Reagent->WriteUpdate(ignoreChangesMask, data, receiver, owner); + } if (changesMask[7]) { data << uint32(Quantity); @@ -4200,18 +4055,11 @@ void CraftingOrderItem::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Pl { data << uint32(Flags); } + data.WriteBit(DataSlotIndex.has_value()); } - if (changesMask[4]) - { - if (changesMask[6]) - { - Reagent->WriteUpdate(ignoreChangesMask, data, receiver, owner); - } - } + data.FlushBits(); if (changesMask[8]) { - data.WriteBits(DataSlotIndex.has_value(), 1); - data.FlushBits(); if (changesMask[10]) { if (DataSlotIndex.has_value()) @@ -4318,16 +4166,16 @@ void CraftingOrderData::WriteCreate(ByteBuffer& data, Player const* receiver, Pl data << int32(NpcCraftingOrderSetID); data << int32(NpcTreasureID); data << uint32(Reagents.size()); - data.WriteBits(CustomerNotes->size(), 10); - data.WriteBits(Customer.has_value(), 1); - data.WriteBits(NpcCustomer.has_value(), 1); - data.WriteBits(OutputItem.has_value(), 1); - data.WriteBits(OutputItemData.has_value(), 1); - data.FlushBits(); for (uint32 i = 0; i < Reagents.size(); ++i) { Reagents[i].WriteCreate(data, receiver, owner); } + data.WriteBits(CustomerNotes->size(), 10); + data.WriteBit(Customer.has_value()); + data.WriteBit(NpcCustomer.has_value()); + data.WriteBit(OutputItem.has_value()); + data.WriteBit(OutputItemData.has_value()); + data.FlushBits(); data << WorldPackets::SizedString::Data(*CustomerNotes); if (Customer.has_value()) { @@ -4345,7 +4193,6 @@ void CraftingOrderData::WriteCreate(ByteBuffer& data, Player const* receiver, Pl { data << *OutputItemData; } - data.FlushBits(); } void CraftingOrderData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -4452,14 +4299,15 @@ void CraftingOrderData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Pl { data.WriteBits(CustomerNotes->size(), 10); } - data.WriteBits(Customer.has_value(), 1); - data.WriteBits(NpcCustomer.has_value(), 1); - data.WriteBits(OutputItem.has_value(), 1); + data.WriteBit(Customer.has_value()); + data.WriteBit(NpcCustomer.has_value()); + data.WriteBit(OutputItem.has_value()); } if (changesMask[24]) { - data.WriteBits(OutputItemData.has_value(), 1); + data.WriteBit(OutputItemData.has_value()); } + data.FlushBits(); if (changesMask[18]) { if (changesMask[20]) @@ -4498,7 +4346,6 @@ void CraftingOrderData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Pl } } } - data.FlushBits(); } void CraftingOrderData::ClearChangesMask() @@ -4530,7 +4377,7 @@ void CraftingOrderData::ClearChangesMask() void CraftingOrder::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { Data->WriteCreate(data, receiver, owner); - data.WriteBits(RecraftItemInfo.has_value(), 1); + data.WriteBit(RecraftItemInfo.has_value()); data.WriteBits(Enchantments.size(), 4); data.WriteBits(Gems.size(), 2); data.FlushBits(); @@ -4596,7 +4443,7 @@ void CraftingOrder::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player { Data->WriteUpdate(ignoreChangesMask, data, receiver, owner); } - data.WriteBits(RecraftItemInfo.has_value(), 1); + data.WriteBit(RecraftItemInfo.has_value()); data.FlushBits(); if (changesMask[3]) { @@ -4605,7 +4452,6 @@ void CraftingOrder::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player data << *RecraftItemInfo; } } - data.FlushBits(); } void CraftingOrder::ClearChangesMask() @@ -4699,12 +4545,6 @@ void CategoryCooldownMod::WriteCreate(ByteBuffer& data, Player const* receiver, data << int32(ModCooldown); } -void CategoryCooldownMod::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(SpellCategoryID); - data << int32(ModCooldown); -} - bool CategoryCooldownMod::operator==(CategoryCooldownMod const& right) const { return SpellCategoryID == right.SpellCategoryID @@ -4717,12 +4557,6 @@ void WeeklySpellUse::WriteCreate(ByteBuffer& data, Player const* receiver, Playe data << uint8(Uses); } -void WeeklySpellUse::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(SpellCategoryID); - data << uint8(Uses); -} - bool WeeklySpellUse::operator==(WeeklySpellUse const& right) const { return SpellCategoryID == right.SpellCategoryID @@ -4739,8 +4573,8 @@ void StablePetInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Player data << uint8(PetFlags); data << uint32(Specialization); data.WriteBits(Name->size(), 8); - data << WorldPackets::SizedString::Data(*Name); data.FlushBits(); + data << WorldPackets::SizedString::Data(*Name); } void StablePetInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -4785,10 +4619,16 @@ void StablePetInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player if (changesMask[6]) { data.WriteBits(Name->size(), 8); - data << WorldPackets::SizedString::Data(*Name); } } data.FlushBits(); + if (changesMask[0]) + { + if (changesMask[6]) + { + data << WorldPackets::SizedString::Data(*Name); + } + } } void StablePetInfo::ClearChangesMask() @@ -4909,7 +4749,6 @@ void BankTabSettings::WriteCreate(ByteBuffer& data, Player const* receiver, Play data << WorldPackets::SizedString::Data(*Name); data << WorldPackets::SizedString::Data(*Icon); data << WorldPackets::SizedString::Data(*Description); - data.FlushBits(); } void BankTabSettings::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -4949,7 +4788,6 @@ void BankTabSettings::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Play { data << WorldPackets::SizedString::Data(*Description); } - data.FlushBits(); } void BankTabSettings::ClearChangesMask() @@ -4970,15 +4808,6 @@ void WalkInData::WriteCreate(ByteBuffer& data, Player const* receiver, Player co data.FlushBits(); } -void WalkInData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(MapID); - data << int64(InstanceID); - data << WalkInPartyGUID; - data.WriteBits(WalkInInstanceType, 1); - data.FlushBits(); -} - bool WalkInData::operator==(WalkInData const& right) const { return MapID == right.MapID @@ -5004,27 +4833,7 @@ void DelveData::WriteCreate(ByteBuffer& data, Player const* receiver, Player con data << int32(ActiveOptionalAffixIDs[i]); } data.WriteBits(RestrictingRewardPlayers, 1); - data.FlushBits(); -} - -void DelveData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data.FlushBits(); - data << int32(MapID); - data << int32(Tier); - data << uint64(InstanceID); - data << uint32(PlayersEligibleForRewards.size()); - data << uint32(ActiveOptionalAffixIDs.size()); - data << int32(EntranceType); - for (uint32 i = 0; i < PlayersEligibleForRewards.size(); ++i) - { - data << PlayersEligibleForRewards[i]; - } - for (uint32 i = 0; i < ActiveOptionalAffixIDs.size(); ++i) - { - data << int32(ActiveOptionalAffixIDs[i]); - } - data.WriteBits(RestrictingRewardPlayers, 1); + data.WriteBits(IsLfg, 1); data.FlushBits(); } @@ -5036,7 +4845,8 @@ bool DelveData::operator==(DelveData const& right) const && Tier == right.Tier && InstanceID == right.InstanceID && EntranceType == right.EntranceType - && RestrictingRewardPlayers == right.RestrictingRewardPlayers; + && RestrictingRewardPlayers == right.RestrictingRewardPlayers + && IsLfg == right.IsLfg; } void TransmogOutfitDataInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -5047,7 +4857,6 @@ void TransmogOutfitDataInfo::WriteCreate(ByteBuffer& data, Player const* receive data.WriteBit(SituationsEnabled); data.FlushBits(); data << WorldPackets::SizedString::Data(*Name); - data.FlushBits(); } void TransmogOutfitDataInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -5076,7 +4885,6 @@ void TransmogOutfitDataInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& dat data.WriteBits(Name->size(), 8); data << WorldPackets::SizedString::Data(*Name); } - data.FlushBits(); } void TransmogOutfitDataInfo::ClearChangesMask() @@ -5212,6 +5020,7 @@ void TransmogOutfitSlotData::ClearChangesMask() void TransmogOutfitData::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { data << uint32(Id); + OutfitInfo->WriteCreate(data, receiver, owner); data << uint32(Situations.size()); data << uint32(Slots.size()); data << uint32(Flags); @@ -5223,7 +5032,6 @@ void TransmogOutfitData::WriteCreate(ByteBuffer& data, Player const* receiver, P { Slots[i].WriteCreate(data, receiver, owner); } - OutfitInfo->WriteCreate(data, receiver, owner); } void TransmogOutfitData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -5273,14 +5081,14 @@ void TransmogOutfitData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, P { data << uint32(Id); } - if (changesMask[4]) - { - data << uint32(Flags); - } if (changesMask[3]) { OutfitInfo->WriteUpdate(ignoreChangesMask, data, receiver, owner); } + if (changesMask[4]) + { + data << uint32(Flags); + } } void TransmogOutfitData::ClearChangesMask() @@ -5308,21 +5116,6 @@ void ChallengeModeData::WriteCreate(ByteBuffer& data, Player const* receiver, Pl data.FlushBits(); } -void ChallengeModeData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(MapID); - data << int32(InitialPlayerCount); - data << uint64(InstanceID); - data << int64(StartTime); - data << KeystoneOwnerGUID; - data << LeaverGUID; - data << int64(InstanceAbandonVoteCooldown); - data.WriteBits(IsActive, 1); - data.WriteBits(HasRestrictions, 1); - data.WriteBits(CanVoteAbandon, 1); - data.FlushBits(); -} - bool ChallengeModeData::operator==(ChallengeModeData const& right) const { return MapID == right.MapID @@ -5348,18 +5141,6 @@ void TransmogOutfitMetadata::WriteCreate(ByteBuffer& data, Player const* receive data.FlushBits(); } -void TransmogOutfitMetadata::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << uint8(SituationTrigger); - data << uint32(TransmogOutfitID); - data << uint8(StampedOptionMainHand); - data << uint8(StampedOptionOffHand); - data << float(CostMod); - data.WriteBit(Locked); - data.FlushBits(); - data.FlushBits(); -} - bool TransmogOutfitMetadata::operator==(TransmogOutfitMetadata const& right) const { return Locked == right.Locked @@ -5370,21 +5151,6 @@ bool TransmogOutfitMetadata::operator==(TransmogOutfitMetadata const& right) con && CostMod == right.CostMod; } -void Research::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int16(ResearchProjectID); -} - -void Research::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int16(ResearchProjectID); -} - -bool Research::operator==(Research const& right) const -{ - return ResearchProjectID == right.ResearchProjectID; -} - void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const { for (uint32 i = 0; i < 105; ++i) @@ -5551,17 +5317,23 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag data << uint32(SpellFlatModByLabel.size()); data << uint32(SpellPctModPVPByLabel.size()); data << uint32(SpellFlatModPVPByLabel.size()); + ResearchHistory->WriteCreate(data, receiver, owner); data << uint32(MawPowers.size()); data << uint32(MultiFloorExploration.size()); data << uint32(RecipeProgression.size()); + data << *FrozenPerksVendorItem; + DiscordInfo->WriteCreate(data, receiver, owner); data << uint32(ReplayedQuests.size()); data << uint32(TaskQuests.size()); + LevelLinkInfo->WriteCreate(data, receiver, owner); data << uint32(DisabledSpells.size()); data << int32(UiChromieTimeExpansionID); data << int32(TimerunningSeasonID); data << int32(TransportServerTime); data << uint32(WeeklyRewardsPeriodSinceOrigin); data << int16(DEBUGSoulbindConduitRank); + data << *DungeonScore; + WriteMapFieldCreate(TraitConfigs, data, receiver, owner); data << uint32(ActiveCombatTraitConfigID); data << uint32(CraftingOrders.size()); data << uint32(PersonalCraftingOrderCounts.size()); @@ -5580,6 +5352,11 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag data << uint64(LootHistoryInstanceID); data << uint32(TrackedCollectableSources.size()); data << uint8(RequiredMountCapabilityFlags); + WriteMapFieldCreate(DelveData, data, receiver, owner); + WriteMapFieldCreate(TransmogOutfits, data, receiver, owner); + ViewedOutfit->WriteCreate(data, receiver, owner); + TransmogMetadata->WriteCreate(data, receiver, owner); + data.FlushBits(); for (uint32 i = 0; i < KnownTitles.size(); ++i) { data << uint64(KnownTitles[i]); @@ -5592,6 +5369,10 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag { AccountDataElements[i].WriteCreate(data, receiver, owner); } + for (uint32 i = 0; i < PvpInfo.size(); ++i) + { + PvpInfo[i].WriteCreate(data, receiver, owner); + } for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i) { data << int32(DailyQuestsCompleted[i]); @@ -5668,6 +5449,10 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag { data << int32(UnlockedTransmogOutfits[i]); } + for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) + { + CharacterRestrictions[i].WriteCreate(data, receiver, owner); + } for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i) { SpellPctModByLabel[i].WriteCreate(data, receiver, owner); @@ -5708,6 +5493,10 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag { data << int32(DisabledSpells[i]); } + for (uint32 i = 0; i < CraftingOrders.size(); ++i) + { + CraftingOrders[i].WriteCreate(data, receiver, owner); + } for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i) { PersonalCraftingOrderCounts[i].WriteCreate(data, receiver, owner); @@ -5728,45 +5517,23 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag { TrackedCollectableSources[i].WriteCreate(data, receiver, owner); } - data.FlushBits(); data.WriteBit(BackpackAutoSortDisabled); data.WriteBit(BackpackSellJunkDisabled); data.WriteBit(BankAutoSortDisabled); data.WriteBit(SortBagsRightToLeft); data.WriteBit(InsertItemsLeftToRight); data.WriteBit(HasPerksProgramPendingReward); - data.WriteBits(QuestSession.has_value(), 1); - data.WriteBits(PetStable.has_value(), 1); + data.WriteBit(QuestSession.has_value()); + data.WriteBit(PetStable.has_value()); data.WriteBits(CharacterBankTabSettings.size(), 3); data.WriteBits(AccountBankTabSettings.size(), 3); - data.WriteBits(WalkInData.has_value(), 1); - data.WriteBits(ChallengeModeData.has_value(), 1); + data.WriteBit(WalkInData.has_value()); + data.WriteBit(ChallengeModeData.has_value()); data.FlushBits(); - ResearchHistory->WriteCreate(data, receiver, owner); if (QuestSession.has_value()) { QuestSession->WriteCreate(data, receiver, owner); } - data << *FrozenPerksVendorItem; - LevelLinkInfo->WriteCreate(data, receiver, owner); - data << *DungeonScore; - WriteMapFieldCreate(TraitConfigs, data, receiver, owner); - WriteMapFieldCreate(DelveData, data, receiver, owner); - WriteMapFieldCreate(TransmogOutfits, data, receiver, owner); - ViewedOutfit->WriteCreate(data, receiver, owner); - TransmogMetadata->WriteCreate(data, receiver, owner); - for (uint32 i = 0; i < PvpInfo.size(); ++i) - { - PvpInfo[i].WriteCreate(data, receiver, owner); - } - for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) - { - CharacterRestrictions[i].WriteCreate(data, receiver, owner); - } - for (uint32 i = 0; i < CraftingOrders.size(); ++i) - { - CraftingOrders[i].WriteCreate(data, receiver, owner); - } if (PetStable.has_value()) { PetStable->WriteCreate(data, receiver, owner); @@ -5787,7 +5554,6 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag { ChallengeModeData->WriteCreate(data, receiver, owner); } - data.FlushBits(); } void ActivePlayerData::WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -5944,7 +5710,6 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl } } } - data.FlushBits(); if (changesMask[0]) { if (changesMask[11]) @@ -6236,6 +6001,16 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl } } } + if (changesMask[10]) + { + for (uint32 i = 0; i < PvpInfo.size(); ++i) + { + if (PvpInfo.HasChanged(i) || ignoreNestedChangesMask) + { + PvpInfo[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + } + } if (changesMask[11]) { for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i) @@ -6426,6 +6201,16 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl } } } + if (changesMask[30]) + { + for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) + { + if (CharacterRestrictions.HasChanged(i) || ignoreNestedChangesMask) + { + CharacterRestrictions[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + } + } if (changesMask[31]) { for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i) @@ -6529,6 +6314,16 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl } } } + if (changesMask[42]) + { + for (uint32 i = 0; i < CraftingOrders.size(); ++i) + { + if (CraftingOrders.HasChanged(i) || ignoreNestedChangesMask) + { + CraftingOrders[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + } + } if (changesMask[43]) { for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i) @@ -6597,43 +6392,6 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl else WriteCompleteDynamicFieldUpdateMask(AccountBankTabSettings.size(), data, 3); } - } - data.FlushBits(); - if (changesMask[0]) - { - if (changesMask[10]) - { - for (uint32 i = 0; i < PvpInfo.size(); ++i) - { - if (PvpInfo.HasChanged(i) || ignoreNestedChangesMask) - { - PvpInfo[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - } - if (changesMask[30]) - { - for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) - { - if (CharacterRestrictions.HasChanged(i) || ignoreNestedChangesMask) - { - CharacterRestrictions[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - } - } - if (changesMask[32]) - { - if (changesMask[42]) - { - for (uint32 i = 0; i < CraftingOrders.size(); ++i) - { - if (CraftingOrders.HasChanged(i) || ignoreNestedChangesMask) - { - CraftingOrders[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - } if (changesMask[48]) { for (uint32 i = 0; i < CharacterBankTabSettings.size(); ++i) @@ -6971,124 +6729,128 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl { data << uint8(NumAccountBankTabs); } - if (changesMask[140]) - { - data << int32(UiChromieTimeExpansionID); - } - if (changesMask[141]) - { - data << int32(TimerunningSeasonID); - } - if (changesMask[142]) - { - data << int32(TransportServerTime); - } - if (changesMask[143]) - { - data << uint32(WeeklyRewardsPeriodSinceOrigin); - } - if (changesMask[144]) - { - data << int16(DEBUGSoulbindConduitRank); - } - if (changesMask[147]) - { - data << uint32(ActiveCombatTraitConfigID); - } - if (changesMask[148]) - { - data << int32(ItemUpgradeHighOnehandWeaponItemID); - } - if (changesMask[149]) - { - data << int32(ItemUpgradeHighFingerItemID); - } - if (changesMask[150]) - { - data << float(ItemUpgradeHighFingerWatermark); - } - if (changesMask[151]) - { - data << int32(ItemUpgradeHighTrinketItemID); - } - if (changesMask[152]) - { - data << float(ItemUpgradeHighTrinketWatermark); - } - if (changesMask[153]) - { - data << uint64(LootHistoryInstanceID); - } - if (changesMask[155]) - { - data << uint8(RequiredMountCapabilityFlags); - } - data.WriteBits(QuestSession.has_value(), 1); - data.WriteBits(PetStable.has_value(), 1); - data.WriteBits(WalkInData.has_value(), 1); - data.WriteBits(ChallengeModeData.has_value(), 1); - } - data.FlushBits(); - if (changesMask[134]) - { if (changesMask[136]) { ResearchHistory->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } + if (changesMask[137]) + { + data << *FrozenPerksVendorItem; + } if (changesMask[138]) + { + DiscordInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[140]) + { + LevelLinkInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[141]) + { + data << int32(UiChromieTimeExpansionID); + } + if (changesMask[142]) + { + data << int32(TimerunningSeasonID); + } + if (changesMask[143]) + { + data << int32(TransportServerTime); + } + if (changesMask[144]) + { + data << uint32(WeeklyRewardsPeriodSinceOrigin); + } + if (changesMask[145]) + { + data << int16(DEBUGSoulbindConduitRank); + } + if (changesMask[146]) + { + data << *DungeonScore; + } + if (changesMask[147]) + { + WriteMapFieldUpdate(TraitConfigs, ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[148]) + { + data << uint32(ActiveCombatTraitConfigID); + } + if (changesMask[149]) + { + data << int32(ItemUpgradeHighOnehandWeaponItemID); + } + if (changesMask[150]) + { + data << int32(ItemUpgradeHighFingerItemID); + } + if (changesMask[151]) + { + data << float(ItemUpgradeHighFingerWatermark); + } + if (changesMask[152]) + { + data << int32(ItemUpgradeHighTrinketItemID); + } + if (changesMask[153]) + { + data << float(ItemUpgradeHighTrinketWatermark); + } + if (changesMask[154]) + { + data << uint64(LootHistoryInstanceID); + } + if (changesMask[156]) + { + data << uint8(RequiredMountCapabilityFlags); + } + if (changesMask[158]) + { + WriteMapFieldUpdate(DelveData, ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[159]) + { + WriteMapFieldUpdate(TransmogOutfits, ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[161]) + { + ViewedOutfit->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[162]) + { + TransmogMetadata->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + } + if (changesMask[134]) + { + data.WriteBit(QuestSession.has_value()); + data.WriteBit(PetStable.has_value()); + data.WriteBit(WalkInData.has_value()); + data.WriteBit(ChallengeModeData.has_value()); + data.FlushBits(); + if (changesMask[139]) { if (QuestSession.has_value()) { QuestSession->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } - if (changesMask[137]) - { - data << *FrozenPerksVendorItem; - } - if (changesMask[139]) - { - LevelLinkInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[145]) - { - data << *DungeonScore; - } - if (changesMask[146]) - { - WriteMapFieldUpdate(TraitConfigs, ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[157]) - { - WriteMapFieldUpdate(DelveData, ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[158]) - { - WriteMapFieldUpdate(TransmogOutfits, ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[160]) - { - ViewedOutfit->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[161]) - { - TransmogMetadata->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[154]) + if (changesMask[155]) { if (PetStable.has_value()) { PetStable->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } - if (changesMask[156]) + if (changesMask[157]) { if (WalkInData.has_value()) { WalkInData->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } - if (changesMask[159]) + if (changesMask[160]) { if (ChallengeModeData.has_value()) { @@ -7096,127 +6858,126 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl } } } - if (changesMask[162]) + if (changesMask[163]) { for (uint32 i = 0; i < 105; ++i) { - if (changesMask[163 + i]) + if (changesMask[164 + i]) { data << InvSlots[i]; } } } - if (changesMask[268]) + if (changesMask[269]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[269 + i]) + if (changesMask[270 + i]) { RestInfo[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } } - if (changesMask[271]) + if (changesMask[272]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[272 + i]) + if (changesMask[273 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[279 + i]) + if (changesMask[280 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[286 + i]) + if (changesMask[287 + i]) { data << float(ModDamageDonePercent[i]); } - if (changesMask[293 + i]) + if (changesMask[294 + i]) { data << float(ModHealingDonePercent[i]); } } } - if (changesMask[300]) + if (changesMask[301]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[301 + i]) + if (changesMask[302 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[304 + i]) + if (changesMask[305 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[307]) + if (changesMask[308]) { for (uint32 i = 0; i < 12; ++i) { - if (changesMask[308 + i]) + if (changesMask[309 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[320 + i]) + if (changesMask[321 + i]) { data << int64(BuybackTimestamp[i]); } } } - if (changesMask[332]) + if (changesMask[333]) { for (uint32 i = 0; i < 32; ++i) { - if (changesMask[333 + i]) + if (changesMask[334 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[365]) + if (changesMask[366]) { for (uint32 i = 0; i < 4; ++i) { - if (changesMask[366 + i]) + if (changesMask[367 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[370]) + if (changesMask[371]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[371 + i]) + if (changesMask[372 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[373]) + if (changesMask[374]) { for (uint32 i = 0; i < 5; ++i) { - if (changesMask[374 + i]) + if (changesMask[375 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[379]) + if (changesMask[380]) { for (uint32 i = 0; i < 17; ++i) { - if (changesMask[380 + i]) + if (changesMask[381 + i]) { data << float(ItemUpgradeHighWatermark[i]); } } } - data.FlushBits(); } void ActivePlayerData::ClearChangesMask() @@ -7227,12 +6988,10 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(SortBagsRightToLeft); Base::ClearChangesMask(InsertItemsLeftToRight); Base::ClearChangesMask(HasPerksProgramPendingReward); - Base::ClearChangesMask(ResearchSites); - Base::ClearChangesMask(ResearchSiteProgress); - Base::ClearChangesMask(Research); Base::ClearChangesMask(KnownTitles); Base::ClearChangesMask(CharacterDataElements); Base::ClearChangesMask(AccountDataElements); + Base::ClearChangesMask(PvpInfo); Base::ClearChangesMask(DailyQuestsCompleted); Base::ClearChangesMask(Field_1328); Base::ClearChangesMask(AvailableQuestLineXQuestIDs); @@ -7252,6 +7011,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(HouseRoomComponentTextures); Base::ClearChangesMask(HouseTypes); Base::ClearChangesMask(UnlockedTransmogOutfits); + Base::ClearChangesMask(CharacterRestrictions); Base::ClearChangesMask(SpellPctModByLabel); Base::ClearChangesMask(SpellFlatModByLabel); Base::ClearChangesMask(SpellPctModPVPByLabel); @@ -7262,16 +7022,17 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(ReplayedQuests); Base::ClearChangesMask(TaskQuests); Base::ClearChangesMask(DisabledSpells); + Base::ClearChangesMask(CraftingOrders); Base::ClearChangesMask(PersonalCraftingOrderCounts); Base::ClearChangesMask(NpcCraftingOrders); Base::ClearChangesMask(CategoryCooldownMods); Base::ClearChangesMask(WeeklySpellUses); Base::ClearChangesMask(TrackedCollectableSources); - Base::ClearChangesMask(PvpInfo); - Base::ClearChangesMask(CharacterRestrictions); - Base::ClearChangesMask(CraftingOrders); Base::ClearChangesMask(CharacterBankTabSettings); Base::ClearChangesMask(AccountBankTabSettings); + Base::ClearChangesMask(ResearchSites); + Base::ClearChangesMask(ResearchSiteProgress); + Base::ClearChangesMask(Research); Base::ClearChangesMask(FarsightObject); Base::ClearChangesMask(SummonedBattlePetGUID); Base::ClearChangesMask(Coinage); @@ -7351,8 +7112,9 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(NumAccountBankTabs); Base::ClearChangesMask(ResearchHistory); Base::ClearChangesMask(FrozenPerksVendorItem); - Base::ClearChangesMask(LevelLinkInfo); + Base::ClearChangesMask(DiscordInfo); Base::ClearChangesMask(QuestSession); + Base::ClearChangesMask(LevelLinkInfo); Base::ClearChangesMask(UiChromieTimeExpansionID); Base::ClearChangesMask(TimerunningSeasonID); Base::ClearChangesMask(TransportServerTime); @@ -7405,18 +7167,6 @@ void GameObjectAssistActionData::WriteCreate(ByteBuffer& data, Player const* rec data << WorldPackets::SizedCString::Data(MonsterName); } -void GameObjectAssistActionData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, GameObject const* owner) const -{ - data.WriteBits(PlayerName.size(), 6); - data.WriteBits(MonsterName.size() + 1, 11); - data << uint32(VirtualRealmAddress); - data << uint8(Sex); - data << int64(Time); - data << int32(DelveTier); - data << WorldPackets::SizedString::Data(PlayerName); - data << WorldPackets::SizedCString::Data(MonsterName); -} - bool GameObjectAssistActionData::operator==(GameObjectAssistActionData const& right) const { return PlayerName == right.PlayerName @@ -7472,7 +7222,7 @@ void GameObjectData::WriteCreate(EnumFlag fieldVisibilityFlags, { data << int32(WorldEffects[i]); } - data.WriteBits(AssistActionData.has_value(), 1); + data.WriteBit(AssistActionData.has_value()); data.FlushBits(); if (AssistActionData.has_value()) { @@ -7635,8 +7385,11 @@ void GameObjectData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Play { data << uint32(UiWidgetItemCount); } - data.WriteBits(AssistActionData.has_value(), 1); - data.FlushBits(); + data.WriteBit(AssistActionData.has_value()); + } + data.FlushBits(); + if (changesMask[0]) + { if (changesMask[26]) { if (AssistActionData.has_value()) @@ -7921,7 +7674,6 @@ void ScaleCurve::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player co } } } - data.FlushBits(); } void ScaleCurve::ClearChangesMask() @@ -7935,7 +7687,7 @@ void ScaleCurve::ClearChangesMask() void VisualAnim::WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const { - data.WriteBits(AnimationDataID.has_value(), 1); + data.WriteBit(AnimationDataID.has_value()); data.WriteBit(IsDecay); data.FlushBits(); data << uint32(AnimKitID); @@ -7944,7 +7696,6 @@ void VisualAnim::WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigg { data << int16(*AnimationDataID); } - data.FlushBits(); } void VisualAnim::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const @@ -7961,7 +7712,11 @@ void VisualAnim::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player co { data.WriteBit(IsDecay); } - data.WriteBits(AnimationDataID.has_value(), 1); + } + data.FlushBits(); + if (changesMask[0]) + { + data.WriteBit(AnimationDataID.has_value()); } data.FlushBits(); if (changesMask[0]) @@ -7982,7 +7737,6 @@ void VisualAnim::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player co } } } - data.FlushBits(); } void VisualAnim::ClearChangesMask() @@ -8004,16 +7758,6 @@ void ForceSetAreaTriggerPositionAndRotation::WriteCreate(ByteBuffer& data, Playe data << float(Rotation.w); } -void ForceSetAreaTriggerPositionAndRotation::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const -{ - data << TriggerGUID; - data << Pos; - data << float(Rotation.x); - data << float(Rotation.y); - data << float(Rotation.z); - data << float(Rotation.w); -} - bool ForceSetAreaTriggerPositionAndRotation::operator==(ForceSetAreaTriggerPositionAndRotation const& right) const { return TriggerGUID == right.TriggerGUID @@ -8060,6 +7804,7 @@ void AreaTriggerSplineCalculator::WriteCreate(ByteBuffer& data, Player const* re { data.WriteBits(Points.size(), 16); data.WriteBit(Catmullrom); + data.FlushBits(); for (uint32 i = 0; i < Points.size(); ++i) { data << Points[i]; @@ -8103,7 +7848,6 @@ void AreaTriggerSplineCalculator::WriteUpdate(bool ignoreChangesMask, ByteBuffer } } } - data.FlushBits(); } void AreaTriggerSplineCalculator::ClearChangesMask() @@ -8163,7 +7907,6 @@ void AreaTriggerOrbit::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Pla data << int32(ExtraTimeForBlending); } } - data.FlushBits(); } void AreaTriggerOrbit::ClearChangesMask() @@ -8540,6 +8283,11 @@ void AreaTriggerBoundedPlane::ClearChangesMask() void AreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const { OverrideScaleCurve->WriteCreate(data, receiver, owner); + ExtraScaleCurve->WriteCreate(data, receiver, owner); + OverrideMoveCurveX->WriteCreate(data, receiver, owner); + OverrideMoveCurveY->WriteCreate(data, receiver, owner); + OverrideMoveCurveZ->WriteCreate(data, receiver, owner); + Unk1205Curve->WriteCreate(data, receiver, owner); data << *Caster; data << uint32(Duration); data << uint32(TimeToTarget); @@ -8560,6 +8308,7 @@ void AreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags data << uint32(CreationTime); data << float(ZOffset); data << uint32(Flags); + VisualAnim->WriteCreate(data, receiver, owner); data << uint32(ScaleCurveId); data << uint32(FacingCurveId); data << uint32(MorphCurveId); @@ -8568,6 +8317,14 @@ void AreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags data << int32(PathType); data << uint8(ShapeType); PeriodModifier->WriteCreate(data, receiver, owner); + if (PathType == 0) + { + PathData.Get()->WriteCreate(data, receiver, owner); + } + if (PathType == 1) + { + PathData.Get()->WriteCreate(data, receiver, owner); + } if (PathType == 3) { PathData.Get()->WriteCreate(data, receiver, owner); @@ -8596,11 +8353,9 @@ void AreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags { ShapeData.Get()->WriteCreate(data, receiver, owner); } - ExtraScaleCurve->WriteCreate(data, receiver, owner); + data.WriteBit(TargetRollPitchYaw.has_value()); + data.WriteBit(ForcedPositionAndRotation.has_value()); data.FlushBits(); - data.WriteBits(TargetRollPitchYaw.has_value(), 1); - data.WriteBits(ForcedPositionAndRotation.has_value(), 1); - OverrideMoveCurveX->WriteCreate(data, receiver, owner); if (TargetRollPitchYaw.has_value()) { data << *TargetRollPitchYaw; @@ -8609,18 +8364,6 @@ void AreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags { ForcedPositionAndRotation->WriteCreate(data, receiver, owner); } - OverrideMoveCurveY->WriteCreate(data, receiver, owner); - OverrideMoveCurveZ->WriteCreate(data, receiver, owner); - Unk1205Curve->WriteCreate(data, receiver, owner); - VisualAnim->WriteCreate(data, receiver, owner); - if (PathType == 0) - { - PathData.Get()->WriteCreate(data, receiver, owner); - } - if (PathType == 1) - { - PathData.Get()->WriteCreate(data, receiver, owner); - } } void AreaTriggerData::WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const @@ -8640,6 +8383,26 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla { OverrideScaleCurve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } + if (changesMask[2]) + { + ExtraScaleCurve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[3]) + { + OverrideMoveCurveX->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[4]) + { + OverrideMoveCurveY->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[5]) + { + OverrideMoveCurveZ->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[6]) + { + Unk1205Curve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } if (changesMask[7]) { data << *Caster; @@ -8720,6 +8483,10 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla { data << uint32(Flags); } + if (changesMask[28]) + { + VisualAnim->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } if (changesMask[29]) { data << uint32(ScaleCurveId); @@ -8757,6 +8524,14 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla } if (changesMask[36]) { + if (PathType == 0) + { + PathData.Get()->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (PathType == 1) + { + PathData.Get()->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } if (PathType == 3) { PathData.Get()->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); @@ -8792,27 +8567,15 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla } if (changesMask[0]) { - if (changesMask[2]) - { - ExtraScaleCurve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - data.FlushBits(); - if (changesMask[0]) - { - data.WriteBits(TargetRollPitchYaw.has_value(), 1); + data.WriteBit(TargetRollPitchYaw.has_value()); } if (changesMask[32]) { - data.WriteBits(ForcedPositionAndRotation.has_value(), 1); + data.WriteBit(ForcedPositionAndRotation.has_value()); } data.FlushBits(); if (changesMask[0]) { - if (changesMask[3]) - { - OverrideMoveCurveX->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } if (changesMask[26]) { if (TargetRollPitchYaw.has_value()) @@ -8831,39 +8594,6 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla } } } - if (changesMask[0]) - { - if (changesMask[4]) - { - OverrideMoveCurveY->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[5]) - { - OverrideMoveCurveZ->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[6]) - { - Unk1205Curve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - if (changesMask[28]) - { - VisualAnim->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - if (changesMask[32]) - { - if (changesMask[36]) - { - if (PathType == 0) - { - PathData.Get()->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - if (PathType == 1) - { - PathData.Get()->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - } } void AreaTriggerData::ClearChangesMask() @@ -8903,10 +8633,10 @@ void AreaTriggerData::ClearChangesMask() Base::ClearChangesMask(Facing); Base::ClearChangesMask(ForcedPositionAndRotation); Base::ClearChangesMask(PathType); - Base::ClearChangesMask(ShapeType); - Base::ClearChangesMask(PeriodModifier); Base::ClearChangesMask(PathData); + Base::ClearChangesMask(ShapeType); Base::ClearChangesMask(ShapeData); + Base::ClearChangesMask(PeriodModifier); _changesMask.ResetAll(); } @@ -8969,17 +8699,6 @@ void ConversationLine::WriteCreate(ByteBuffer& data, Player const* receiver, Con data << uint8(ChatType); } -void ConversationLine::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Conversation const* owner) const -{ - data << int32(ConversationLineID); - data << int32(BroadcastTextID); - data << uint32(ViewerDependentValue::GetValue(this, receiver, owner)); - data << int32(UiCameraID); - data << uint8(ActorIndex); - data << uint8(Flags); - data << uint8(ChatType); -} - bool ConversationLine::operator==(ConversationLine const& right) const { return ConversationLineID == right.ConversationLineID @@ -9002,17 +8721,6 @@ void ConversationActor::WriteCreate(ByteBuffer& data, Player const* receiver, Co data.FlushBits(); } -void ConversationActor::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Conversation const* owner) const -{ - data << uint32(CreatureID); - data << uint32(CreatureDisplayInfoID); - data << ActorGUID; - data << int32(Id); - data.WriteBits(Type, 1); - data.WriteBits(NoActorObject, 1); - data.FlushBits(); -} - bool ConversationActor::operator==(ConversationActor const& right) const { return CreatureID == right.CreatureID @@ -9108,7 +8816,6 @@ void ConversationData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl data << uint32(Flags); } } - data.FlushBits(); } void ConversationData::ClearChangesMask() @@ -9127,14 +8834,13 @@ void MeshObjectData::WriteCreate(EnumFlag fieldVisibilityFlags, { data.WriteBit(IsWMO); data.WriteBit(IsRoom); - data.WriteBits(Geobox.has_value(), 1); + data.WriteBit(Geobox.has_value()); + data.FlushBits(); data << int32(FileDataID); if (Geobox.has_value()) { data << *Geobox; } - data.FlushBits(); - data.FlushBits(); } void MeshObjectData::WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Object const* owner) const @@ -9156,7 +8862,7 @@ void MeshObjectData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Play { data.WriteBit(IsRoom); } - data.WriteBits(Geobox.has_value(), 1); + data.WriteBit(Geobox.has_value()); } data.FlushBits(); if (changesMask[0]) @@ -9173,7 +8879,6 @@ void MeshObjectData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Play } } } - data.FlushBits(); } void MeshObjectData::ClearChangesMask() @@ -9223,14 +8928,6 @@ void DecorDyeSlots::WriteCreate(ByteBuffer& data, Player const* receiver, BaseEn } } -void DecorDyeSlots::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const -{ - for (uint32 i = 0; i < 3; ++i) - { - data << int32(DyeColorID[i]); - } -} - bool DecorDyeSlots::operator==(DecorDyeSlots const& right) const { return DyeColorID == right.DyeColorID; @@ -9239,8 +8936,9 @@ bool DecorDyeSlots::operator==(DecorDyeSlots const& right) const void DecorStoragePersistedData::WriteCreate(ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const { data << *HouseGUID; + data << uint8(PlacementStatus); data << uint8(SourceType); - data.WriteBits(DyeSlots.has_value(), 1); + data.WriteBit(DyeSlots.has_value()); data.WriteBits(SourceValue->size() + 1, 24); data.FlushBits(); if (DyeSlots.has_value()) @@ -9256,31 +8954,35 @@ void DecorStoragePersistedData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& if (ignoreChangesMask) changesMask.SetAll(); - data.WriteBits(changesMask.GetBlock(0), 4); + data.WriteBits(changesMask.GetBlock(0), 5); data.FlushBits(); if (changesMask[0]) { data << *HouseGUID; } - if (changesMask[2]) + if (changesMask[1]) + { + data << uint8(PlacementStatus); + } + if (changesMask[3]) { data << uint8(SourceType); } - data.WriteBits(DyeSlots.has_value(), 1); - if (changesMask[3]) + data.WriteBit(DyeSlots.has_value()); + if (changesMask[4]) { data.WriteBits(SourceValue->size() + 1, 24); } data.FlushBits(); - if (changesMask[1]) + if (changesMask[2]) { if (DyeSlots.has_value()) { DyeSlots->WriteUpdate(ignoreChangesMask, data, receiver, owner); } } - if (changesMask[3]) + if (changesMask[4]) { data << WorldPackets::SizedCString::Data(*SourceValue); } @@ -9289,24 +8991,93 @@ void DecorStoragePersistedData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& void DecorStoragePersistedData::ClearChangesMask() { Base::ClearChangesMask(HouseGUID); + Base::ClearChangesMask(PlacementStatus); Base::ClearChangesMask(DyeSlots); Base::ClearChangesMask(SourceType); Base::ClearChangesMask(SourceValue); _changesMask.ResetAll(); } +void DecorPetInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Object const* owner) const +{ + data << *BattlePetGUID; + data << *SpawnGroup; + data << *SpawnedPet; + data << uint32(CreatureID); + data << uint8(PetBehavior); + data.WriteBits(PetName->size(), 6); + data.FlushBits(); + data << WorldPackets::SizedString::Data(*PetName); +} + +void DecorPetInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Object const* owner) const +{ + Mask changesMask = _changesMask; + if (ignoreChangesMask) + changesMask.SetAll(); + + data.WriteBits(changesMask.GetBlock(0), 6); + + data.FlushBits(); + if (changesMask[0]) + { + data << *BattlePetGUID; + } + if (changesMask[1]) + { + data << *SpawnGroup; + } + if (changesMask[2]) + { + data << *SpawnedPet; + } + if (changesMask[3]) + { + data << uint32(CreatureID); + } + if (changesMask[5]) + { + data << uint8(PetBehavior); + } + if (changesMask[4]) + { + data.WriteBits(PetName->size(), 6); + } + data.FlushBits(); + if (changesMask[4]) + { + data << WorldPackets::SizedString::Data(*PetName); + } +} + +void DecorPetInfo::ClearChangesMask() +{ + Base::ClearChangesMask(BattlePetGUID); + Base::ClearChangesMask(SpawnGroup); + Base::ClearChangesMask(SpawnedPet); + Base::ClearChangesMask(CreatureID); + Base::ClearChangesMask(PetName); + Base::ClearChangesMask(PetBehavior); + _changesMask.ResetAll(); +} + void HousingDecorData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Object const* owner) const { data << *DecorGUID; data << *AttachParentGUID; data << uint8(Flags); data << *TargetGameObjectGUID; - data.WriteBits(PersistedData.has_value(), 1); + data.WriteBit(PersistedData.has_value()); + data.WriteBit(PetInfo.has_value()); data.FlushBits(); if (PersistedData.has_value()) { PersistedData->WriteCreate(data, receiver, owner); } + if (PetInfo.has_value()) + { + PetInfo->WriteCreate(data, receiver, owner); + } } void HousingDecorData::WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Object const* owner) const @@ -9316,7 +9087,7 @@ void HousingDecorData::WriteUpdate(EnumFlag fieldVisibilityFlag void HousingDecorData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, Object const* owner, bool ignoreNestedChangesMask) const { - data.WriteBits(changesMask.GetBlock(0), 6); + data.WriteBits(changesMask.GetBlock(0), 7); data.FlushBits(); if (changesMask[0]) @@ -9333,11 +9104,15 @@ void HousingDecorData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl { data << uint8(Flags); } - if (changesMask[5]) + if (changesMask[6]) { data << *TargetGameObjectGUID; } - data.WriteBits(PersistedData.has_value(), 1); + } + if (changesMask[0]) + { + data.WriteBit(PersistedData.has_value()); + data.WriteBit(PetInfo.has_value()); data.FlushBits(); if (changesMask[4]) { @@ -9346,6 +9121,13 @@ void HousingDecorData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl PersistedData->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } + if (changesMask[5]) + { + if (PetInfo.has_value()) + { + PetInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + } } } @@ -9355,6 +9137,7 @@ void HousingDecorData::ClearChangesMask() Base::ClearChangesMask(AttachParentGUID); Base::ClearChangesMask(Flags); Base::ClearChangesMask(PersistedData); + Base::ClearChangesMask(PetInfo); Base::ClearChangesMask(TargetGameObjectGUID); _changesMask.ResetAll(); } @@ -9413,7 +9196,6 @@ void HousingRoomData::WriteCreate(EnumFlag fieldVisibilityFlags data << int32(Flags); data << uint32(MeshObjects.size()); data << uint32(Doors.size()); - data << int32(FloorIndex); for (uint32 i = 0; i < MeshObjects.size(); ++i) { data << MeshObjects[i]; @@ -9431,7 +9213,7 @@ void HousingRoomData::WriteUpdate(EnumFlag fieldVisibilityFlags void HousingRoomData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner, bool ignoreNestedChangesMask) const { - data.WriteBits(changesMask.GetBlock(0), 7); + data.WriteBits(changesMask.GetBlock(0), 6); if (changesMask[0]) { @@ -9485,10 +9267,6 @@ void HousingRoomData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla { data << int32(Flags); } - if (changesMask[6]) - { - data << int32(FloorIndex); - } } } @@ -9499,7 +9277,6 @@ void HousingRoomData::ClearChangesMask() Base::ClearChangesMask(HouseGUID); Base::ClearChangesMask(HouseRoomID); Base::ClearChangesMask(Flags); - Base::ClearChangesMask(FloorIndex); _changesMask.ResetAll(); } @@ -9707,12 +9484,6 @@ void PlayerHouseInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Base data << OwnerGUID; } -void PlayerHouseInfo::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const -{ - data << HouseGUID; - data << OwnerGUID; -} - bool PlayerHouseInfo::operator==(PlayerHouseInfo const& right) const { return HouseGUID == right.HouseGUID @@ -9725,12 +9496,6 @@ void HousingOwner::WriteCreate(ByteBuffer& data, Player const* receiver, BaseEnt data << PlayerGUID; } -void HousingOwner::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const -{ - data << BnetAccountGUID; - data << PlayerGUID; -} - bool HousingOwner::operator==(HousingOwner const& right) const { return BnetAccountGUID == right.BnetAccountGUID @@ -9826,8 +9591,8 @@ void NeighborhoodMirrorData::ClearChangesMask() { Base::ClearChangesMask(Houses); Base::ClearChangesMask(Managers); - Base::ClearChangesMask(OwnerGUID); Base::ClearChangesMask(Name); + Base::ClearChangesMask(OwnerGUID); _changesMask.ResetAll(); } @@ -9931,17 +9696,6 @@ void PlayerMirrorHouse::WriteCreate(ByteBuffer& data, Player const* receiver, Pl data << int32(PlotID); } -void PlayerMirrorHouse::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << HouseGUID; - data << NeighborhoodGUID; - data << uint32(Level); - data << uint32(Favor); - data << uint32(InitiativeFavor); - data << int32(MapID); - data << int32(PlotID); -} - bool PlayerMirrorHouse::operator==(PlayerMirrorHouse const& right) const { return HouseGUID == right.HouseGUID @@ -9958,11 +9712,6 @@ void NeighborhoodCharterSignature::WriteCreate(ByteBuffer& data, Player const* r data << Guid; } -void NeighborhoodCharterSignature::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << Guid; -} - bool NeighborhoodCharterSignature::operator==(NeighborhoodCharterSignature const& right) const { return Guid == right.Guid; @@ -9978,20 +9727,7 @@ void NeighborhoodCharter::WriteCreate(ByteBuffer& data, Player const* receiver, Signatures[i].WriteCreate(data, receiver, owner); } data.WriteBits(Name.size() + 1, 8); - data << WorldPackets::SizedCString::Data(Name); -} - -void NeighborhoodCharter::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int32(Field_0); - data << int32(Field_4); - data << uint32(Signatures.size()); - for (uint32 i = 0; i < Signatures.size(); ++i) - { - Signatures[i].WriteUpdate(ignoreChangesMask, data, receiver, owner); - } data.FlushBits(); - data.WriteBits(Name.size() + 1, 8); data << WorldPackets::SizedCString::Data(Name); } @@ -10012,15 +9748,6 @@ void NeighborhoodOwnershipTransfer::WriteCreate(ByteBuffer& data, Player const* data << WorldPackets::SizedCString::Data(NeighborhoodName); } -void NeighborhoodOwnershipTransfer::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << NeighborhoodGUID; - data << CurrentOwnerGUID; - data.WriteBits(NeighborhoodName.size() + 1, 8); - data.FlushBits(); - data << WorldPackets::SizedCString::Data(NeighborhoodName); -} - bool NeighborhoodOwnershipTransfer::operator==(NeighborhoodOwnershipTransfer const& right) const { return NeighborhoodGUID == right.NeighborhoodGUID @@ -10040,7 +9767,10 @@ void PlayerHouseInfoComponentData::WriteCreate(EnumFlag fieldVi data << uint32(Field_88.size()); data << uint32(Field_C0.size()); data << uint32(Field_F8.size()); + data << uint32(Field_130.size()); + Charter->WriteCreate(data, receiver, owner); data << uint8(EditorMode); + NeighborhoodOwnershipTransfer->WriteCreate(data, receiver, owner); data << *CurrentHouse; for (uint32 i = 0; i < Field_8.size(); ++i) { @@ -10065,15 +9795,17 @@ void PlayerHouseInfoComponentData::WriteCreate(EnumFlag fieldVi { data << Field_F8[i]; } - Charter->WriteCreate(data, receiver, owner); - NeighborhoodOwnershipTransfer->WriteCreate(data, receiver, owner); + for (uint32 i = 0; i < Field_130.size(); ++i) + { + data << Field_130[i]; + } } } static constexpr void PlayerHouseInfoComponentDataAppendAllowedFieldsMaskForFlag(PlayerHouseInfoComponentData::Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= std::array{ 0x000003FAu }; + allowedMaskForTarget |= std::array{ 0x000007FAu }; } void PlayerHouseInfoComponentData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) @@ -10097,7 +9829,7 @@ void PlayerHouseInfoComponentData::WriteUpdate(EnumFlag fieldVi void PlayerHouseInfoComponentData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, Player const* owner, bool ignoreNestedChangesMask) const { - data.WriteBits(changesMask.GetBlock(0), 10); + data.WriteBits(changesMask.GetBlock(0), 11); if (changesMask[0]) { @@ -10136,6 +9868,13 @@ void PlayerHouseInfoComponentData::WriteUpdate(Mask const& changesMask, ByteBuff else WriteCompleteDynamicFieldUpdateMask(Field_F8.size(), data); } + if (changesMask[6]) + { + if (!ignoreNestedChangesMask) + Field_130.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(Field_130.size(), data); + } } data.FlushBits(); if (changesMask[0]) @@ -10190,22 +9929,32 @@ void PlayerHouseInfoComponentData::WriteUpdate(Mask const& changesMask, ByteBuff } } } - if (changesMask[7]) - { - data << uint8(EditorMode); - } - if (changesMask[9]) - { - data << *CurrentHouse; - } if (changesMask[6]) + { + for (uint32 i = 0; i < Field_130.size(); ++i) + { + if (Field_130.HasChanged(i) || ignoreNestedChangesMask) + { + data << Field_130[i]; + } + } + } + if (changesMask[7]) { Charter->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } if (changesMask[8]) + { + data << uint8(EditorMode); + } + if (changesMask[9]) { NeighborhoodOwnershipTransfer->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } + if (changesMask[10]) + { + data << *CurrentHouse; + } } } @@ -10216,6 +9965,7 @@ void PlayerHouseInfoComponentData::ClearChangesMask() Base::ClearChangesMask(Field_88); Base::ClearChangesMask(Field_C0); Base::ClearChangesMask(Field_F8); + Base::ClearChangesMask(Field_130); Base::ClearChangesMask(Charter); Base::ClearChangesMask(EditorMode); Base::ClearChangesMask(NeighborhoodOwnershipTransfer); @@ -10443,12 +10193,6 @@ void NICompletedMilestoneEntry::WriteCreate(ByteBuffer& data, Player const* rece data << uint32(MilestoneID); } -void NICompletedMilestoneEntry::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << int64(AwardDate); - data << uint32(MilestoneID); -} - bool NICompletedMilestoneEntry::operator==(NICompletedMilestoneEntry const& right) const { return AwardDate == right.AwardDate @@ -10467,20 +10211,6 @@ void NICompletedInitiativesEntry::WriteCreate(ByteBuffer& data, Player const* re data.FlushBits(); } -void NICompletedInitiativesEntry::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data << uint32(InitiativeID); - data << uint32(CompletedMilestones.size()); - for (uint32 i = 0; i < CompletedMilestones.size(); ++i) - { - CompletedMilestones[i].WriteUpdate(ignoreChangesMask, data, receiver, owner); - } - data.FlushBits(); - data.FlushBits(); - data.WriteBit(Completed); - data.FlushBits(); -} - bool NICompletedInitiativesEntry::operator==(NICompletedInitiativesEntry const& right) const { return Completed == right.Completed diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 6a7116abc4..05b3eb4c92 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -84,7 +84,7 @@ struct ItemMod : public IsUpdateFieldStructureTag using OwnerObject = Item; void WriteCreate(ByteBuffer& data, Player const* receiver, Item const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Item const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Item const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(ItemMod const& right) const; bool operator!=(ItemMod const& right) const { return !(*this == right); } }; @@ -107,7 +107,7 @@ struct ArtifactPower : public IsUpdateFieldStructureTag using OwnerObject = Item; void WriteCreate(ByteBuffer& data, Player const* receiver, Item const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Item const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Item const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(ArtifactPower const& right) const; bool operator!=(ArtifactPower const& right) const { return !(*this == right); } }; @@ -188,7 +188,7 @@ struct UnlockedAzeriteEssence : public IsUpdateFieldStructureTag using OwnerObject = AzeriteItem; void WriteCreate(ByteBuffer& data, Player const* receiver, AzeriteItem const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AzeriteItem const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, AzeriteItem const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(UnlockedAzeriteEssence const& right) const; bool operator!=(UnlockedAzeriteEssence const& right) const { return !(*this == right); } }; @@ -209,8 +209,8 @@ struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask { UpdateField Enabled; DynamicUpdateField UnlockedEssences; - DynamicUpdateField UnlockedEssenceMilestones; DynamicUpdateField SelectedEssences; + DynamicUpdateField UnlockedEssenceMilestones; UpdateField Xp; UpdateField Level; UpdateField AuraLevel; @@ -233,7 +233,7 @@ struct SpellCastVisual : public IsUpdateFieldStructureTag using OwnerObject = Object; void WriteCreate(ByteBuffer& data, Player const* receiver, Object const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Object const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Object const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(SpellCastVisual const& right) const; bool operator!=(SpellCastVisual const& right) const { return !(*this == right); } }; @@ -247,7 +247,7 @@ struct UnitChannel : public IsUpdateFieldStructureTag using OwnerObject = Unit; void WriteCreate(ByteBuffer& data, Player const* receiver, Unit const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Unit const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Unit const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(UnitChannel const& right) const; bool operator!=(UnitChannel const& right) const { return !(*this == right); } }; @@ -278,7 +278,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag using OwnerObject = Unit; void WriteCreate(ByteBuffer& data, Player const* receiver, Unit const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Unit const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Unit const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(PassiveSpellHistory const& right) const; bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); } }; @@ -295,7 +295,7 @@ struct UnitAssistActionData : public IsUpdateFieldStructureTag, public HasChange void ClearChangesMask(); }; -struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<228> +struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<230> { UpdateField Field_314; UpdateField, 0, 2> StateWorldEffectIDs; @@ -329,135 +329,137 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<228> UpdateField Target; UpdateField BattlePetCompanionGUID; UpdateField BattlePetDBID; - UpdateField ChannelData; - UpdateField SpellEmpowerStage; - UpdateField SummonedByHomeRealm; - UpdateField Race; - UpdateField ClassId; - UpdateField PlayerClassId; - UpdateField Sex; - UpdateField CreatureType; - UpdateField DisplayPower; - UpdateField OverrideDisplayPowerID; - UpdateField Health; - UpdateField MaxHealth; - UpdateField Level; - UpdateField EffectiveLevel; - UpdateField ContentTuningID; - UpdateField ScalingLevelMin; - UpdateField ScalingLevelMax; - UpdateField ScalingLevelDelta; - UpdateField ScalingFactionGroup; - UpdateField FactionTemplate; + UpdateField BattlePetAttachedToDecorGUID; + UpdateField BattlePetDecorHouseGUID; + UpdateField ChannelData; + UpdateField SpellEmpowerStage; + UpdateField SummonedByHomeRealm; + UpdateField Race; + UpdateField ClassId; + UpdateField PlayerClassId; + UpdateField Sex; + UpdateField CreatureType; + UpdateField DisplayPower; + UpdateField OverrideDisplayPowerID; + UpdateField Health; + UpdateField MaxHealth; + UpdateField Level; + UpdateField EffectiveLevel; + UpdateField ContentTuningID; + UpdateField ScalingLevelMin; + UpdateField ScalingLevelMax; + UpdateField ScalingLevelDelta; + UpdateField ScalingFactionGroup; + UpdateField FactionTemplate; struct FactionTemplateTag : ViewerDependentValueTag {}; - UpdateField Flags; + UpdateField Flags; struct FlagsTag : ViewerDependentValueTag {}; - UpdateField Flags2; + UpdateField Flags2; struct Flags2Tag : ViewerDependentValueTag {}; - UpdateField Flags3; + UpdateField Flags3; struct Flags3Tag : ViewerDependentValueTag {}; - UpdateField Flags4; + UpdateField Flags4; struct Flags4Tag : ViewerDependentValueTag {}; - UpdateField AuraState; + UpdateField AuraState; struct AuraStateTag : ViewerDependentValueTag {}; - UpdateField RangedAttackRoundBaseTime; - UpdateField BoundingRadius; - UpdateField CombatReach; - UpdateField DisplayScale; - UpdateField CreatureFamily; - UpdateField OverrideCreatureType; - UpdateField NativeDisplayID; - UpdateField NativeXDisplayScale; - UpdateField MountDisplayID; - UpdateField CosmeticMountDisplayID; - UpdateField MinDamage; - UpdateField MaxDamage; - UpdateField MinOffHandDamage; - UpdateField MaxOffHandDamage; - UpdateField StandState; - UpdateField PetTalentPoints; - UpdateField VisFlags; - UpdateField AnimTier; - UpdateField PetNumber; - UpdateField PetNameTimestamp; - UpdateField PetExperience; - UpdateField PetNextLevelExperience; - UpdateField ModCastingSpeed; - UpdateField ModCastingSpeedNeg; - UpdateField ModSpellHaste; - UpdateField ModHaste; - UpdateField ModRangedHaste; - UpdateField ModHasteRegen; - UpdateField ModTimeRate; - UpdateField CreatedBySpell; - UpdateField EmoteState; - UpdateField BaseMana; - UpdateField BaseHealth; - UpdateField SheatheState; - UpdateField PvpFlags; + UpdateField RangedAttackRoundBaseTime; + UpdateField BoundingRadius; + UpdateField CombatReach; + UpdateField DisplayScale; + UpdateField CreatureFamily; + UpdateField OverrideCreatureType; + UpdateField NativeDisplayID; + UpdateField NativeXDisplayScale; + UpdateField MountDisplayID; + UpdateField CosmeticMountDisplayID; + UpdateField MinDamage; + UpdateField MaxDamage; + UpdateField MinOffHandDamage; + UpdateField MaxOffHandDamage; + UpdateField StandState; + UpdateField PetTalentPoints; + UpdateField VisFlags; + UpdateField AnimTier; + UpdateField PetNumber; + UpdateField PetNameTimestamp; + UpdateField PetExperience; + UpdateField PetNextLevelExperience; + UpdateField ModCastingSpeed; + UpdateField ModCastingSpeedNeg; + UpdateField ModSpellHaste; + UpdateField ModHaste; + UpdateField ModRangedHaste; + UpdateField ModHasteRegen; + UpdateField ModTimeRate; + UpdateField CreatedBySpell; + UpdateField EmoteState; + UpdateField BaseMana; + UpdateField BaseHealth; + UpdateField SheatheState; + UpdateField PvpFlags; struct PvpFlagsTag : ViewerDependentValueTag {}; - UpdateField PetFlags; - UpdateField ShapeshiftForm; - UpdateField AttackPower; - UpdateField AttackPowerModPos; - UpdateField AttackPowerModNeg; - UpdateField AttackPowerMultiplier; - UpdateField AttackPowerModSupport; - UpdateField RangedAttackPower; - UpdateField RangedAttackPowerModPos; - UpdateField RangedAttackPowerModNeg; - UpdateField RangedAttackPowerMultiplier; - UpdateField RangedAttackPowerModSupport; - UpdateField MainHandWeaponAttackPower; - UpdateField OffHandWeaponAttackPower; - UpdateField RangedWeaponAttackPower; - UpdateField SetAttackSpeedAura; - UpdateField Lifesteal; - UpdateField MinRangedDamage; - UpdateField MaxRangedDamage; - UpdateField ManaCostMultiplier; - UpdateField MaxHealthModifier; - UpdateField HoverHeight; - UpdateField MinItemLevelCutoff; - UpdateField MinItemLevel; - UpdateField MaxItemLevel; - UpdateField AzeriteItemLevel; - UpdateField WildBattlePetLevel; - UpdateField BattlePetCompanionExperience; - UpdateField BattlePetCompanionNameTimestamp; - UpdateField InteractSpellID; + UpdateField PetFlags; + UpdateField ShapeshiftForm; + UpdateField AttackPower; + UpdateField AttackPowerModPos; + UpdateField AttackPowerModNeg; + UpdateField AttackPowerMultiplier; + UpdateField AttackPowerModSupport; + UpdateField RangedAttackPower; + UpdateField RangedAttackPowerModPos; + UpdateField RangedAttackPowerModNeg; + UpdateField RangedAttackPowerMultiplier; + UpdateField RangedAttackPowerModSupport; + UpdateField MainHandWeaponAttackPower; + UpdateField OffHandWeaponAttackPower; + UpdateField RangedWeaponAttackPower; + UpdateField SetAttackSpeedAura; + UpdateField Lifesteal; + UpdateField MinRangedDamage; + UpdateField MaxRangedDamage; + UpdateField ManaCostMultiplier; + UpdateField MaxHealthModifier; + UpdateField HoverHeight; + UpdateField MinItemLevelCutoff; + UpdateField MinItemLevel; + UpdateField MaxItemLevel; + UpdateField AzeriteItemLevel; + UpdateField WildBattlePetLevel; + UpdateField BattlePetCompanionExperience; + UpdateField BattlePetCompanionNameTimestamp; + UpdateField InteractSpellID; struct InteractSpellIDTag : ViewerDependentValueTag {}; - UpdateField ScaleDuration; - UpdateField LooksLikeMountID; - UpdateField LooksLikeCreatureID; - UpdateField LookAtControllerID; - UpdateField PerksVendorItemID; - UpdateField TaxiNodesID; - UpdateField GuildGUID; - UpdateField FlightCapabilityID; - UpdateField GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use - UpdateField DriveCapabilityID; - UpdateField MaxHealthModifierFlatNeg; - UpdateField MaxHealthModifierFlatPos; - UpdateField SilencedSchoolMask; - UpdateField CurrentAreaID; - UpdateField NameplateDistanceMod; - UpdateField AutoAttackRangeMod; // When UnitFlags3 & 0x40000000 is set, increases some autoattack range by this amount - UpdateField NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object - OptionalUpdateField AssistActionData; - UpdateFieldArray Power; - UpdateFieldArray MaxPower; - UpdateFieldArray PowerRegenFlatModifier; - UpdateFieldArray PowerRegenInterruptedFlatModifier; - UpdateFieldArray VirtualItems; - UpdateFieldArray AttackRoundBaseTime; - UpdateFieldArray Stats; - UpdateFieldArray StatPosBuff; - UpdateFieldArray StatNegBuff; - UpdateFieldArray StatSupportBuff; - UpdateFieldArray Resistances; - UpdateFieldArray BonusResistanceMods; - UpdateFieldArray ManaCostModifier; + UpdateField ScaleDuration; + UpdateField LooksLikeMountID; + UpdateField LooksLikeCreatureID; + UpdateField LookAtControllerID; + UpdateField PerksVendorItemID; + UpdateField TaxiNodesID; + UpdateField GuildGUID; + UpdateField FlightCapabilityID; + UpdateField GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use + UpdateField DriveCapabilityID; + UpdateField MaxHealthModifierFlatNeg; + UpdateField MaxHealthModifierFlatPos; + UpdateField SilencedSchoolMask; + UpdateField CurrentAreaID; + UpdateField NameplateDistanceMod; + UpdateField AutoAttackRangeMod; // When UnitFlags3 & 0x40000000 is set, increases some autoattack range by this amount + UpdateField NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object + OptionalUpdateField AssistActionData; + UpdateFieldArray Power; + UpdateFieldArray MaxPower; + UpdateFieldArray PowerRegenFlatModifier; + UpdateFieldArray PowerRegenInterruptedFlatModifier; + UpdateFieldArray VirtualItems; + UpdateFieldArray AttackRoundBaseTime; + UpdateFieldArray Stats; + UpdateFieldArray StatPosBuff; + UpdateFieldArray StatNegBuff; + UpdateFieldArray StatSupportBuff; + UpdateFieldArray Resistances; + UpdateFieldArray BonusResistanceMods; + UpdateFieldArray ManaCostModifier; using OwnerObject = Unit; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Unit const* owner) const; @@ -475,7 +477,7 @@ struct ChrCustomizationChoice : public IsUpdateFieldStructureTag using OwnerObject = Object; void WriteCreate(ByteBuffer& data, Player const* receiver, Object const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Object const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Object const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(ChrCustomizationChoice const& right) const; bool operator!=(ChrCustomizationChoice const& right) const { return !(*this == right); } }; @@ -541,7 +543,7 @@ struct CTROptions : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(CTROptions const& right) const; bool operator!=(CTROptions const& right) const { return !(*this == right); } }; @@ -561,7 +563,7 @@ struct LeaverInfo : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(LeaverInfo const& right) const; bool operator!=(LeaverInfo const& right) const { return !(*this == right); } }; @@ -601,7 +603,7 @@ struct NPCAsPlayerInfo : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(NPCAsPlayerInfo const& right) const; bool operator!=(NPCAsPlayerInfo const& right) const { return !(*this == right); } }; @@ -614,8 +616,8 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<326> DynamicUpdateField RandomCustomizations; DynamicUpdateField QuestSessionQuestLog; DynamicUpdateField ArenaCooldowns; - DynamicUpdateField VisualItemReplacements; DynamicUpdateField PetNames; + DynamicUpdateField VisualItemReplacements; UpdateField DuelArbiter; UpdateField WowAccount; UpdateField BnetAccount; @@ -718,7 +720,7 @@ struct PlayerDataElement : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(PlayerDataElement const& right) const; bool operator!=(PlayerDataElement const& right) const { return !(*this == right); } }; @@ -761,6 +763,17 @@ struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<19> void ClearChangesMask(); }; +struct Research : public IsUpdateFieldStructureTag +{ + int16 ResearchProjectID = 0; + + using OwnerObject = Player; + void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } + bool operator==(Research const& right) const; + bool operator!=(Research const& right) const { return !(*this == right); } +}; + struct CharacterRestriction : public IsUpdateFieldStructureTag { int32 Field_0 = 0; @@ -770,7 +783,7 @@ struct CharacterRestriction : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(CharacterRestriction const& right) const; bool operator!=(CharacterRestriction const& right) const { return !(*this == right); } }; @@ -783,7 +796,7 @@ struct SpellPctModByLabel : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(SpellPctModByLabel const& right) const; bool operator!=(SpellPctModByLabel const& right) const { return !(*this == right); } }; @@ -796,7 +809,7 @@ struct SpellFlatModByLabel : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(SpellFlatModByLabel const& right) const; bool operator!=(SpellFlatModByLabel const& right) const { return !(*this == right); } }; @@ -809,7 +822,7 @@ struct SpellPctPVPModByLabel : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(SpellPctPVPModByLabel const& right) const; bool operator!=(SpellPctPVPModByLabel const& right) const { return !(*this == right); } }; @@ -822,7 +835,7 @@ struct SpellFlatPVPModByLabel : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(SpellFlatPVPModByLabel const& right) const; bool operator!=(SpellFlatPVPModByLabel const& right) const { return !(*this == right); } }; @@ -857,7 +870,7 @@ struct MawPower : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(MawPower const& right) const; bool operator!=(MawPower const& right) const { return !(*this == right); } }; @@ -868,7 +881,7 @@ struct MultiFloorExplore : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(MultiFloorExplore const& right) const; bool operator!=(MultiFloorExplore const& right) const { return !(*this == right); } }; @@ -880,20 +893,25 @@ struct RecipeProgressionInfo : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(RecipeProgressionInfo const& right) const; bool operator!=(RecipeProgressionInfo const& right) const { return !(*this == right); } }; -struct LevelLinkInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3> +struct DiscordPlayerInfo : public IsUpdateFieldStructureTag { - UpdateField TargetGUID; - UpdateField Level; + uint64 DiscordUserID = 0; + uint8 AccountType = 0; + uint64 GuildLobbyID = 0; + uint8 GuildSettings = 0; + uint8 DisplayNameType = 0; + std::string AccessToken; using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; - void ClearChangesMask(); + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } + bool operator==(DiscordPlayerInfo const& right) const; + bool operator!=(DiscordPlayerInfo const& right) const { return !(*this == right); } }; struct QuestSession : public IsUpdateFieldStructureTag, public HasChangesMask<3> @@ -918,6 +936,17 @@ struct ReplayedQuest : public IsUpdateFieldStructureTag, public HasChangesMask<3 void ClearChangesMask(); }; +struct LevelLinkInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3> +{ + UpdateField TargetGUID; + UpdateField Level; + + using OwnerObject = Player; + void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void ClearChangesMask(); +}; + struct TraitEntry : public IsUpdateFieldStructureTag { int32 TraitNodeID = 0; @@ -928,7 +957,7 @@ struct TraitEntry : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(TraitEntry const& right) const; bool operator!=(TraitEntry const& right) const { return !(*this == right); } }; @@ -941,7 +970,7 @@ struct TraitSubTreeCache : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(TraitSubTreeCache const& right) const; bool operator!=(TraitSubTreeCache const& right) const { return !(*this == right); } }; @@ -973,7 +1002,7 @@ struct CraftingReagentBase : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(CraftingReagentBase const& right) const; bool operator!=(CraftingReagentBase const& right) const { return !(*this == right); } }; @@ -1092,7 +1121,7 @@ struct CategoryCooldownMod : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(CategoryCooldownMod const& right) const; bool operator!=(CategoryCooldownMod const& right) const { return !(*this == right); } }; @@ -1104,7 +1133,7 @@ struct WeeklySpellUse : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(WeeklySpellUse const& right) const; bool operator!=(WeeklySpellUse const& right) const { return !(*this == right); } }; @@ -1171,7 +1200,7 @@ struct WalkInData : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(WalkInData const& right) const; bool operator!=(WalkInData const& right) const { return !(*this == right); } }; @@ -1185,10 +1214,11 @@ struct DelveData : public IsUpdateFieldStructureTag uint64 InstanceID = 0; int32 EntranceType = 0; uint32 RestrictingRewardPlayers = 0; // Restricts rewards to players in m_owners if set to true. Intended to prevent rewarwding players that join in-progress delve? + uint32 IsLfg = 0; using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(DelveData const& right) const; bool operator!=(DelveData const& right) const { return !(*this == right); } }; @@ -1265,7 +1295,7 @@ struct ChallengeModeData : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(ChallengeModeData const& right) const; bool operator!=(ChallengeModeData const& right) const { return !(*this == right); } }; @@ -1281,23 +1311,12 @@ struct TransmogOutfitMetadata : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(TransmogOutfitMetadata const& right) const; bool operator!=(TransmogOutfitMetadata const& right) const { return !(*this == right); } }; -struct Research : public IsUpdateFieldStructureTag -{ - int16 ResearchProjectID = 0; - - using OwnerObject = Player; - void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; - bool operator==(Research const& right) const; - bool operator!=(Research const& right) const { return !(*this == right); } -}; - -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<397> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<398> { UpdateField BackpackAutoSortDisabled; UpdateField BackpackSellJunkDisabled; @@ -1305,12 +1324,10 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField SortBagsRightToLeft; UpdateField InsertItemsLeftToRight; UpdateField HasPerksProgramPendingReward; - UpdateFieldArray, 1, 50, 51> ResearchSites; - UpdateFieldArray, 1, 52, 53> ResearchSiteProgress; - UpdateFieldArray, 1, 54, 55> Research; DynamicUpdateField KnownTitles; DynamicUpdateField CharacterDataElements; DynamicUpdateField AccountDataElements; + DynamicUpdateField PvpInfo; DynamicUpdateField DailyQuestsCompleted; DynamicUpdateField Field_1328; DynamicUpdateField AvailableQuestLineXQuestIDs; @@ -1330,6 +1347,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas DynamicUpdateField HouseRoomComponentTextures; DynamicUpdateField HouseTypes; DynamicUpdateField UnlockedTransmogOutfits; + DynamicUpdateField CharacterRestrictions; DynamicUpdateField SpellPctModByLabel; DynamicUpdateField SpellFlatModByLabel; DynamicUpdateField SpellPctModPVPByLabel; @@ -1340,16 +1358,17 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas DynamicUpdateField ReplayedQuests; DynamicUpdateField TaskQuests; DynamicUpdateField DisabledSpells; + DynamicUpdateField CraftingOrders; DynamicUpdateField PersonalCraftingOrderCounts; DynamicUpdateField NpcCraftingOrders; DynamicUpdateField CategoryCooldownMods; DynamicUpdateField WeeklySpellUses; DynamicUpdateField TrackedCollectableSources; - DynamicUpdateField PvpInfo; - DynamicUpdateField CharacterRestrictions; - DynamicUpdateField CraftingOrders; DynamicUpdateField CharacterBankTabSettings; DynamicUpdateField AccountBankTabSettings; + UpdateFieldArray, 1, 50, 51> ResearchSites; + UpdateFieldArray, 1, 52, 53> ResearchSiteProgress; + UpdateFieldArray, 1, 54, 55> Research; UpdateField FarsightObject; UpdateField SummonedBattlePetGUID; UpdateField Coinage; @@ -1429,45 +1448,46 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField NumAccountBankTabs; UpdateField ResearchHistory; UpdateField FrozenPerksVendorItem; - UpdateField LevelLinkInfo; - OptionalUpdateField QuestSession; - UpdateField UiChromieTimeExpansionID; - UpdateField TimerunningSeasonID; - UpdateField TransportServerTime; - UpdateField WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin - UpdateField DEBUGSoulbindConduitRank; - UpdateField DungeonScore; - MapUpdateField TraitConfigs; - UpdateField ActiveCombatTraitConfigID; - UpdateField ItemUpgradeHighOnehandWeaponItemID; - UpdateField ItemUpgradeHighFingerItemID; - UpdateField ItemUpgradeHighFingerWatermark; - UpdateField ItemUpgradeHighTrinketItemID; - UpdateField ItemUpgradeHighTrinketWatermark; - UpdateField LootHistoryInstanceID; - OptionalUpdateField PetStable; - UpdateField RequiredMountCapabilityFlags; - OptionalUpdateField WalkInData; - MapUpdateField DelveData; - MapUpdateField TransmogOutfits; - OptionalUpdateField ChallengeModeData; - UpdateField ViewedOutfit; - UpdateField TransmogMetadata; - UpdateFieldArray InvSlots; - UpdateFieldArray RestInfo; - UpdateFieldArray ModDamageDonePos; - UpdateFieldArray ModDamageDoneNeg; - UpdateFieldArray ModDamageDonePercent; - UpdateFieldArray ModHealingDonePercent; - UpdateFieldArray WeaponDmgMultipliers; - UpdateFieldArray WeaponAtkSpeedMultipliers; - UpdateFieldArray BuybackPrice; - UpdateFieldArray BuybackTimestamp; - UpdateFieldArray CombatRatings; - UpdateFieldArray NoReagentCostMask; - UpdateFieldArray ProfessionSkillLine; - UpdateFieldArray BagSlotFlags; - UpdateFieldArray ItemUpgradeHighWatermark; + UpdateField DiscordInfo; + OptionalUpdateField QuestSession; + UpdateField LevelLinkInfo; + UpdateField UiChromieTimeExpansionID; + UpdateField TimerunningSeasonID; + UpdateField TransportServerTime; + UpdateField WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin + UpdateField DEBUGSoulbindConduitRank; + UpdateField DungeonScore; + MapUpdateField TraitConfigs; + UpdateField ActiveCombatTraitConfigID; + UpdateField ItemUpgradeHighOnehandWeaponItemID; + UpdateField ItemUpgradeHighFingerItemID; + UpdateField ItemUpgradeHighFingerWatermark; + UpdateField ItemUpgradeHighTrinketItemID; + UpdateField ItemUpgradeHighTrinketWatermark; + UpdateField LootHistoryInstanceID; + OptionalUpdateField PetStable; + UpdateField RequiredMountCapabilityFlags; + OptionalUpdateField WalkInData; + MapUpdateField DelveData; + MapUpdateField TransmogOutfits; + OptionalUpdateField ChallengeModeData; + UpdateField ViewedOutfit; + UpdateField TransmogMetadata; + UpdateFieldArray InvSlots; + UpdateFieldArray RestInfo; + UpdateFieldArray ModDamageDonePos; + UpdateFieldArray ModDamageDoneNeg; + UpdateFieldArray ModDamageDonePercent; + UpdateFieldArray ModHealingDonePercent; + UpdateFieldArray WeaponDmgMultipliers; + UpdateFieldArray WeaponAtkSpeedMultipliers; + UpdateFieldArray BuybackPrice; + UpdateFieldArray BuybackTimestamp; + UpdateFieldArray CombatRatings; + UpdateFieldArray NoReagentCostMask; + UpdateFieldArray ProfessionSkillLine; + UpdateFieldArray BagSlotFlags; + UpdateFieldArray ItemUpgradeHighWatermark; using OwnerObject = Player; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const; @@ -1487,7 +1507,7 @@ struct GameObjectAssistActionData : public IsUpdateFieldStructureTag using OwnerObject = GameObject; void WriteCreate(ByteBuffer& data, Player const* receiver, GameObject const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, GameObject const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, GameObject const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(GameObjectAssistActionData const& right) const; bool operator!=(GameObjectAssistActionData const& right) const { return !(*this == right); } }; @@ -1608,7 +1628,7 @@ struct ForceSetAreaTriggerPositionAndRotation : public IsUpdateFieldStructureTag using OwnerObject = AreaTrigger; void WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(ForceSetAreaTriggerPositionAndRotation const& right) const; bool operator!=(ForceSetAreaTriggerPositionAndRotation const& right) const { return !(*this == right); } }; @@ -1777,10 +1797,10 @@ struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask UpdateField Facing; OptionalUpdateField ForcedPositionAndRotation; UpdateField PathType; - UpdateField ShapeType; - UpdateField PeriodModifier; VariantUpdateField<32, 36, UF::AreaTriggerSplineCalculator, UF::AreaTriggerOrbit, UF::AreaTriggerMovementScript> PathData; + UpdateField ShapeType; VariantUpdateField<32, 37, UF::AreaTriggerSphere, UF::AreaTriggerBox, UF::AreaTriggerPolygon, UF::AreaTriggerCylinder, UF::AreaTriggerDisk, UF::AreaTriggerBoundedPlane> ShapeData; + UpdateField PeriodModifier; using OwnerObject = AreaTrigger; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const; @@ -1816,7 +1836,7 @@ struct ConversationLine : public IsUpdateFieldStructureTag using OwnerObject = Conversation; void WriteCreate(ByteBuffer& data, Player const* receiver, Conversation const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Conversation const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Conversation const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(ConversationLine const& right) const; bool operator!=(ConversationLine const& right) const { return !(*this == right); } }; @@ -1832,7 +1852,7 @@ struct ConversationActor : public IsUpdateFieldStructureTag using OwnerObject = Conversation; void WriteCreate(ByteBuffer& data, Player const* receiver, Conversation const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Conversation const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Conversation const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(ConversationActor const& right) const; bool operator!=(ConversationActor const& right) const { return !(*this == right); } }; @@ -1886,17 +1906,18 @@ struct DecorDyeSlots : public IsUpdateFieldStructureTag using OwnerObject = BaseEntity; void WriteCreate(ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(DecorDyeSlots const& right) const; bool operator!=(DecorDyeSlots const& right) const { return !(*this == right); } }; -struct DecorStoragePersistedData : public IsUpdateFieldStructureTag, public HasChangesMask<4> +struct DecorStoragePersistedData : public IsUpdateFieldStructureTag, public HasChangesMask<5> { UpdateField HouseGUID; - OptionalUpdateField DyeSlots; - UpdateField SourceType; - UpdateField SourceValue; + UpdateField PlacementStatus; + OptionalUpdateField DyeSlots; + UpdateField SourceType; + UpdateField SourceValue; using OwnerObject = BaseEntity; void WriteCreate(ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; @@ -1904,13 +1925,29 @@ struct DecorStoragePersistedData : public IsUpdateFieldStructureTag, public HasC void ClearChangesMask(); }; -struct HousingDecorData : public IsUpdateFieldStructureTag, public HasChangesMask<6> +struct DecorPetInfo : public IsUpdateFieldStructureTag, public HasChangesMask<6> +{ + UpdateField BattlePetGUID; + UpdateField SpawnGroup; + UpdateField SpawnedPet; + UpdateField CreatureID; + UpdateField PetName; + UpdateField PetBehavior; + + using OwnerObject = Object; + void WriteCreate(ByteBuffer& data, Player const* receiver, Object const* owner) const; + void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Object const* owner) const; + void ClearChangesMask(); +}; + +struct HousingDecorData : public IsUpdateFieldStructureTag, public HasChangesMask<7> { UpdateField DecorGUID; UpdateField AttachParentGUID; UpdateField Flags; OptionalUpdateField PersistedData; - UpdateField TargetGameObjectGUID; + OptionalUpdateField PetInfo; + UpdateField TargetGameObjectGUID; using OwnerObject = Object; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Object const* owner) const; @@ -1932,14 +1969,13 @@ struct HousingDoorData : public IsUpdateFieldStructureTag, public HasChangesMask void ClearChangesMask(); }; -struct HousingRoomData : public IsUpdateFieldStructureTag, public HasChangesMask<7> +struct HousingRoomData : public IsUpdateFieldStructureTag, public HasChangesMask<6> { DynamicUpdateField MeshObjects; DynamicUpdateField Doors; UpdateField HouseGUID; UpdateField HouseRoomID; UpdateField Flags; - UpdateField FloorIndex; using OwnerObject = BaseEntity; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; @@ -2006,7 +2042,7 @@ struct PlayerHouseInfo : public IsUpdateFieldStructureTag using OwnerObject = BaseEntity; void WriteCreate(ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(PlayerHouseInfo const& right) const; bool operator!=(PlayerHouseInfo const& right) const { return !(*this == right); } }; @@ -2018,7 +2054,7 @@ struct HousingOwner : public IsUpdateFieldStructureTag using OwnerObject = BaseEntity; void WriteCreate(ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(HousingOwner const& right) const; bool operator!=(HousingOwner const& right) const { return !(*this == right); } }; @@ -2027,8 +2063,8 @@ struct NeighborhoodMirrorData : public IsUpdateFieldStructureTag, public HasChan { DynamicUpdateField Houses; DynamicUpdateField Managers; - UpdateField OwnerGUID; UpdateField Name; + UpdateField OwnerGUID; using OwnerObject = BaseEntity; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; @@ -2074,7 +2110,7 @@ struct PlayerMirrorHouse : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(PlayerMirrorHouse const& right) const; bool operator!=(PlayerMirrorHouse const& right) const { return !(*this == right); } }; @@ -2085,7 +2121,7 @@ struct NeighborhoodCharterSignature : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(NeighborhoodCharterSignature const& right) const; bool operator!=(NeighborhoodCharterSignature const& right) const { return !(*this == right); } }; @@ -2099,7 +2135,7 @@ struct NeighborhoodCharter : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(NeighborhoodCharter const& right) const; bool operator!=(NeighborhoodCharter const& right) const { return !(*this == right); } }; @@ -2112,22 +2148,23 @@ struct NeighborhoodOwnershipTransfer : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(NeighborhoodOwnershipTransfer const& right) const; bool operator!=(NeighborhoodOwnershipTransfer const& right) const { return !(*this == right); } }; -struct PlayerHouseInfoComponentData : public IsUpdateFieldStructureTag, public HasChangesMask<10> +struct PlayerHouseInfoComponentData : public IsUpdateFieldStructureTag, public HasChangesMask<11> { DynamicUpdateField Field_8; DynamicUpdateField Houses; DynamicUpdateField Field_88; DynamicUpdateField Field_C0; DynamicUpdateField Field_F8; - UpdateField Charter; - UpdateField EditorMode; - UpdateField NeighborhoodOwnershipTransfer; - UpdateField CurrentHouse; + DynamicUpdateField Field_130; + UpdateField Charter; + UpdateField EditorMode; + UpdateField NeighborhoodOwnershipTransfer; + UpdateField CurrentHouse; using OwnerObject = Player; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const; @@ -2204,7 +2241,7 @@ struct NICompletedMilestoneEntry : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(NICompletedMilestoneEntry const& right) const; bool operator!=(NICompletedMilestoneEntry const& right) const { return !(*this == right); } }; @@ -2217,7 +2254,7 @@ struct NICompletedInitiativesEntry : public IsUpdateFieldStructureTag using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool /*ignoreChangesMask*/, ByteBuffer& data, Player const* receiver, Player const* owner) const { WriteCreate(data, receiver, owner); } bool operator==(NICompletedInitiativesEntry const& right) const; bool operator!=(NICompletedInitiativesEntry const& right) const { return !(*this == right); } }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e636aca136..7a70c78838 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -30140,6 +30140,9 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) displayPlayerChoice.KeepOpenAfterChoice = playerChoice->KeepOpenAfterChoice; displayPlayerChoice.ShowChoicesAsList = playerChoice->ShowChoicesAsList; displayPlayerChoice.RequiresSelection = playerChoice->RequiresSelection; + displayPlayerChoice.ShowChoicesAsGrid = playerChoice->ShowChoicesAsGrid; + displayPlayerChoice.HideAnswerArt = playerChoice->HideAnswerArt; + displayPlayerChoice.ShowChoicesAsColumns = playerChoice->ShowChoicesAsColumns; for (std::size_t i = 0; i < playerChoice->Responses.size() && (!playerChoice->MaxResponses || displayPlayerChoice.Responses.size() < *playerChoice->MaxResponses); ++i) { diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 85b0dc5ca3..9f166b0e88 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -10988,7 +10988,8 @@ void ObjectMgr::LoadPlayerChoices() _playerChoices.clear(); QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, SoundKitId, CloseSoundKitId, Duration, Question, PendingChoiceText, " - "InfiniteRange, HideWarboardHeader, KeepOpenAfterChoice, ShowChoicesAsList, RequiresSelection, MaxResponses, ScriptName FROM playerchoice"); + "InfiniteRange, HideWarboardHeader, KeepOpenAfterChoice, ShowChoicesAsList, RequiresSelection, ShowChoicesAsGrid, HideAnswerArt, " + "ShowChoicesAsColumns, MaxResponses, ScriptName FROM playerchoice"); if (!choices) { TC_LOG_INFO("server.loading", ">> Loaded 0 player choices. DB table `playerchoice` is empty."); @@ -11007,7 +11008,8 @@ void ObjectMgr::LoadPlayerChoices() do { DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(ResultSet, (ChoiceId)(UiTextureKitId)(SoundKitId)(CloseSoundKitId)(Duration)(Question)(PendingChoiceText) - (InfiniteRange)(HideWarboardHeader)(KeepOpenAfterChoice)(ShowChoicesAsList)(RequiresSelection)(MaxResponses)(ScriptName)) fields { *choices }; + (InfiniteRange)(HideWarboardHeader)(KeepOpenAfterChoice)(ShowChoicesAsList)(RequiresSelection)(ShowChoicesAsGrid)(HideAnswerArt) + (ShowChoicesAsColumns)(MaxResponses)(ScriptName)) fields { *choices }; int32 choiceId = fields.ChoiceId().GetInt32(); @@ -11025,6 +11027,9 @@ void ObjectMgr::LoadPlayerChoices() choice.KeepOpenAfterChoice = fields.KeepOpenAfterChoice().GetBool(); choice.ShowChoicesAsList = fields.ShowChoicesAsList().GetBool(); choice.RequiresSelection = fields.RequiresSelection().GetBool(); + choice.ShowChoicesAsGrid = fields.ShowChoicesAsGrid().GetBool(); + choice.HideAnswerArt = fields.HideAnswerArt().GetBool(); + choice.ShowChoicesAsColumns = fields.ShowChoicesAsColumns().GetBool(); choice.MaxResponses = fields.MaxResponses().GetUInt32OrNull(); choice.ScriptId = GetScriptId(fields.ScriptName().GetStringView()); diff --git a/src/server/game/Globals/PlayerChoice.h b/src/server/game/Globals/PlayerChoice.h index 99f7e7abd3..673229a655 100644 --- a/src/server/game/Globals/PlayerChoice.h +++ b/src/server/game/Globals/PlayerChoice.h @@ -119,6 +119,9 @@ struct PlayerChoice bool KeepOpenAfterChoice = false; bool ShowChoicesAsList = false; bool RequiresSelection = false; + bool ShowChoicesAsGrid = false; + bool HideAnswerArt = false; + bool ShowChoicesAsColumns = false; Optional MaxResponses; diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index f663f09662..40e7a38156 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -181,12 +181,16 @@ enum class CountdownTimerType : int32 enum class PingSubjectType : uint8 { - Attack = 0, - Warning = 1, - Assist = 2, - OnMyWay = 3, - AlertThreat = 4, - AlertNotThreat = 5, + Attack = 0, + Warning = 1, + Assist = 2, + OnMyWay = 3, + AlertThreat = 4, + AlertNotThreat = 5, + ActionReady = 6, + ActionOnCooldown = 7, + ActionUnavailable = 8, + ActionNotReady = 9, Max }; diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index f1af31b325..14c485149d 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -716,6 +716,9 @@ void WorldSession::HandleSendPingUnit(WorldPackets::Party::SendPingUnit const& p broadcastPingUnit.Type = pingUnit.Type; broadcastPingUnit.PinFrameID = pingUnit.PinFrameID; broadcastPingUnit.PingDuration = pingUnit.PingDuration; + broadcastPingUnit.Health = pingUnit.Health; + broadcastPingUnit.Mana = pingUnit.Mana; + broadcastPingUnit.IsUnitFrameStatusTextPing = pingUnit.IsUnitFrameStatusTextPing; broadcastPingUnit.CreatureID = pingUnit.CreatureID; broadcastPingUnit.SpellOverrideNameID = pingUnit.SpellOverrideNameID; broadcastPingUnit.Write(); @@ -758,3 +761,30 @@ void WorldSession::HandleSendPingWorldPoint(WorldPackets::Party::SendPingWorldPo member->SendDirectMessage(broadcastPingWorldPoint.GetRawPacket()); } } + +void WorldSession::HandleSendPingCooldown(WorldPackets::Party::SendPingCooldown const& pingCooldown) +{ + Group const* group = nullptr; + if (!CanSendPing(*_player, pingCooldown.Type, group)) + return; + + WorldPackets::Party::ReceivePingCooldown broadcastPingCooldown; + broadcastPingCooldown.SenderGUID = _player->GetGUID(); + broadcastPingCooldown.PinFrameID = pingCooldown.PinFrameID; + broadcastPingCooldown.SpellID = pingCooldown.SpellID; + broadcastPingCooldown.ItemID = pingCooldown.ItemID; + broadcastPingCooldown.Duration = pingCooldown.Duration; + broadcastPingCooldown.Remaining = pingCooldown.Remaining; + broadcastPingCooldown.Type = pingCooldown.Type; + broadcastPingCooldown.SpellCategoryID = pingCooldown.SpellCategoryID; + broadcastPingCooldown.Write(); + + for (GroupReference const& itr : group->GetMembers()) + { + Player const* member = itr.GetSource(); + if (_player == member || !_player->IsInMap(member)) + continue; + + member->SendDirectMessage(broadcastPingCooldown.GetRawPacket()); + } +} diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index aa53a119d6..cf5068b2b4 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -194,13 +194,16 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) { data << OptionalInit(auctionItem.Bidder); data << OptionalInit(auctionItem.BidAmount); + + if (auctionItem.Bidder) + data << *auctionItem.Bidder; + + if (auctionItem.BidAmount) + data << uint64(*auctionItem.BidAmount); } data.FlushBits(); - if (auctionItem.Item) - data << *auctionItem.Item; - data << int32(auctionItem.Count); data << int32(auctionItem.Charges); data << int32(auctionItem.Flags); @@ -210,9 +213,15 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) data << uint8(auctionItem.DeleteReason); data << uint32(auctionItem.Unused1110); + if (auctionItem.Item) + data << *auctionItem.Item; + for (WorldPackets::Item::ItemEnchantData const& enchant : auctionItem.Enchantments) data << enchant; + for (WorldPackets::Item::ItemGemData const& gem : auctionItem.Gems) + data << gem; + if (auctionItem.MinBid) data << uint64(*auctionItem.MinBid); @@ -232,24 +241,12 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) data << int32(auctionItem.EndTime); } - if (auctionItem.Creator) - data << *auctionItem.Creator; - - if (!auctionItem.CensorBidInfo) - { - if (auctionItem.Bidder) - data << *auctionItem.Bidder; - - if (auctionItem.BidAmount) - data << uint64(*auctionItem.BidAmount); - } - - for (WorldPackets::Item::ItemGemData const& gem : auctionItem.Gems) - data << gem; - if (auctionItem.AuctionBucketKey) data << *auctionItem.AuctionBucketKey; + if (auctionItem.Creator) + data << *auctionItem.Creator; + return data; } @@ -267,6 +264,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionBidderNotification const& bidder data << int32(bidderNotification.AuctionID); data << bidderNotification.Bidder; data << bidderNotification.Item; + return data; } @@ -368,13 +366,12 @@ void AuctionListBucketsByBucketKeys::Read() void AuctionListItemsByBucketKey::Read() { _worldPacket >> Auctioneer; + _worldPacket >> BucketKey; _worldPacket >> Offset; _worldPacket >> Unknown830; _worldPacket >> OptionalInit(TaintedBy); _worldPacket >> BitsSize<2>(Sorts); - _worldPacket >> BucketKey; - if (TaintedBy) _worldPacket >> *TaintedBy; @@ -563,12 +560,13 @@ WorldPacket const* AuctionListBiddedItemsResult::Write() { _worldPacket << Size(Items); _worldPacket << uint32(DesiredDelay); - _worldPacket << Bits<1>(HasMoreResults); - _worldPacket.FlushBits(); for (AuctionItem const& item : Items) _worldPacket << item; + _worldPacket << Bits<1>(HasMoreResults); + _worldPacket.FlushBits(); + return &_worldPacket; } @@ -578,13 +576,14 @@ WorldPacket const* AuctionListBucketsResult::Write() _worldPacket << uint32(DesiredDelay); _worldPacket << int32(Filters); _worldPacket << int32(TotalCount); - _worldPacket << Bits<1>(BrowseMode); - _worldPacket << Bits<1>(HasMoreResults); - _worldPacket.FlushBits(); for (BucketInfo const& bucketInfo : Buckets) _worldPacket << bucketInfo; + _worldPacket << Bits<1>(BrowseMode); + _worldPacket << Bits<1>(HasMoreResults); + _worldPacket.FlushBits(); + return &_worldPacket; } @@ -615,8 +614,6 @@ WorldPacket const* AuctionListOwnedItemsResult::Write() _worldPacket << Size(Items); _worldPacket << Size(SoldItems); _worldPacket << uint32(DesiredDelay); - _worldPacket << Bits<1>(HasMoreResults); - _worldPacket.FlushBits(); for (AuctionItem const& item : Items) _worldPacket << item; @@ -624,6 +621,9 @@ WorldPacket const* AuctionListOwnedItemsResult::Write() for (AuctionItem const& item : SoldItems) _worldPacket << item; + _worldPacket << Bits<1>(HasMoreResults); + _worldPacket.FlushBits(); + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 33b20859cb..a5a796daf9 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -127,8 +127,12 @@ ByteBuffer& operator<<(ByteBuffer& data, AuthSuccessInfo const& successInfo) data << Size(*successInfo.AvailableClasses); data << Size(successInfo.Templates); data << uint32(successInfo.CurrencyID); + data << successInfo.GameTimeInfo; data << successInfo.Time; + for (VirtualRealmInfo const& virtualRealm : successInfo.VirtualRealms) + data << virtualRealm; + for (RaceClassAvailability const& raceClassAvailability : *successInfo.AvailableClasses) { data << uint8(raceClassAvailability.RaceID); @@ -143,31 +147,6 @@ ByteBuffer& operator<<(ByteBuffer& data, AuthSuccessInfo const& successInfo) } } - data << Bits<1>(successInfo.IsExpansionTrial); - data << Bits<1>(successInfo.ForceCharacterTemplate); - data << OptionalInit(successInfo.NumPlayersHorde); - data << OptionalInit(successInfo.NumPlayersAlliance); - data << OptionalInit(successInfo.ExpansionTrialExpiration); - data << OptionalInit(successInfo.CurrentBuild); - data.FlushBits(); - - data << successInfo.GameTimeInfo; - - if (successInfo.NumPlayersHorde) - data << uint16(*successInfo.NumPlayersHorde); - - if (successInfo.NumPlayersAlliance) - data << uint16(*successInfo.NumPlayersAlliance); - - if (successInfo.ExpansionTrialExpiration) - data << *successInfo.ExpansionTrialExpiration; - - if (successInfo.CurrentBuild) - data << *successInfo.CurrentBuild; - - for (VirtualRealmInfo const& virtualRealm : successInfo.VirtualRealms) - data << virtualRealm; - for (CharacterTemplate const* characterTemplate : successInfo.Templates) { data << uint32(characterTemplate->TemplateSetId); @@ -186,6 +165,26 @@ ByteBuffer& operator<<(ByteBuffer& data, AuthSuccessInfo const& successInfo) data << SizedString::Data(characterTemplate->Description); } + data << Bits<1>(successInfo.IsExpansionTrial); + data << Bits<1>(successInfo.ForceCharacterTemplate); + data << OptionalInit(successInfo.NumPlayersHorde); + data << OptionalInit(successInfo.NumPlayersAlliance); + data << OptionalInit(successInfo.ExpansionTrialExpiration); + data << OptionalInit(successInfo.CurrentBuild); + data.FlushBits(); + + if (successInfo.NumPlayersHorde) + data << uint16(*successInfo.NumPlayersHorde); + + if (successInfo.NumPlayersAlliance) + data << uint16(*successInfo.NumPlayersAlliance); + + if (successInfo.ExpansionTrialExpiration) + data << *successInfo.ExpansionTrialExpiration; + + if (successInfo.CurrentBuild) + data << *successInfo.CurrentBuild; + return data; } diff --git a/src/server/game/Server/Packets/BattlePetPackets.cpp b/src/server/game/Server/Packets/BattlePetPackets.cpp index c5c2ba14bc..46308f8cad 100644 --- a/src/server/game/Server/Packets/BattlePetPackets.cpp +++ b/src/server/game/Server/Packets/BattlePetPackets.cpp @@ -73,8 +73,6 @@ WorldPacket const* BattlePetJournal::Write() _worldPacket << uint16(Trap); _worldPacket << Size(Slots); _worldPacket << Size(Pets); - _worldPacket << Bits<1>(HasJournalLock); - _worldPacket.FlushBits(); for (BattlePetSlot const& slot : Slots) _worldPacket << slot; @@ -82,31 +80,36 @@ WorldPacket const* BattlePetJournal::Write() for (BattlePet const& pet : Pets) _worldPacket << pet; + _worldPacket << Bits<1>(HasJournalLock); + _worldPacket.FlushBits(); + return &_worldPacket; } WorldPacket const* BattlePetUpdates::Write() { _worldPacket << Size(Pets); - _worldPacket << Bits<1>(PetAdded); - _worldPacket.FlushBits(); for (BattlePet const& pet : Pets) _worldPacket << pet; + _worldPacket << Bits<1>(PetAdded); + _worldPacket.FlushBits(); + return &_worldPacket; } WorldPacket const* PetBattleSlotUpdates::Write() { _worldPacket << Size(Slots); - _worldPacket << Bits<1>(NewSlot); - _worldPacket << Bits<1>(AutoSlotted); - _worldPacket.FlushBits(); for (BattlePetSlot const& slot : Slots) _worldPacket << slot; + _worldPacket << Bits<1>(NewSlot); + _worldPacket << Bits<1>(AutoSlotted); + _worldPacket.FlushBits(); + return &_worldPacket; } @@ -122,6 +125,8 @@ void BattlePetModifyName::Read() _worldPacket >> SizedString::BitsSize<7>(Name); _worldPacket >> OptionalInit(DeclinedNames); + _worldPacket >> SizedString::Data(Name); + if (DeclinedNames) { for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i) @@ -130,8 +135,6 @@ void BattlePetModifyName::Read() for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i) _worldPacket >> SizedString::Data(DeclinedNames->name[i]); } - - _worldPacket >> SizedString::Data(Name); } void QueryBattlePetName::Read() diff --git a/src/server/game/Server/Packets/BlackMarketPackets.cpp b/src/server/game/Server/Packets/BlackMarketPackets.cpp index 7c8bbb0b99..8f0e16ce78 100644 --- a/src/server/game/Server/Packets/BlackMarketPackets.cpp +++ b/src/server/game/Server/Packets/BlackMarketPackets.cpp @@ -35,35 +35,19 @@ ByteBuffer& operator<<(ByteBuffer& data, BlackMarketItem const& blackMarketItem) { data << int32(blackMarketItem.MarketID); data << int32(blackMarketItem.SellerNPC); + data << blackMarketItem.Item; data << int32(blackMarketItem.Quantity); data << uint64(blackMarketItem.MinBid); data << uint64(blackMarketItem.MinIncrement); data << uint64(blackMarketItem.CurrentBid); data << int32(blackMarketItem.SecondsRemaining); data << int32(blackMarketItem.NumBids); - data << blackMarketItem.Item; data << Bits<1>(blackMarketItem.HighBid); data.FlushBits(); return data; } -ByteBuffer& operator>>(ByteBuffer& data, BlackMarketItem& blackMarketItem) -{ - data >> blackMarketItem.MarketID; - data >> blackMarketItem.SellerNPC; - data >> blackMarketItem.Item; - data >> blackMarketItem.Quantity; - data >> blackMarketItem.MinBid; - data >> blackMarketItem.MinIncrement; - data >> blackMarketItem.CurrentBid; - data >> blackMarketItem.SecondsRemaining; - data >> blackMarketItem.NumBids; - data >> Bits<1>(blackMarketItem.HighBid); - - return data; -} - WorldPacket const* BlackMarketRequestItemsResult::Write() { _worldPacket << LastUpdateID; @@ -79,15 +63,15 @@ void BlackMarketBidOnItem::Read() { _worldPacket >> Guid; _worldPacket >> MarketID; - _worldPacket >> BidAmount; _worldPacket >> Item; + _worldPacket >> BidAmount; } WorldPacket const* BlackMarketBidOnItemResult::Write() { _worldPacket << int32(MarketID); - _worldPacket << int32(Result); _worldPacket << Item; + _worldPacket << int32(Result); return &_worldPacket; } @@ -95,8 +79,8 @@ WorldPacket const* BlackMarketBidOnItemResult::Write() WorldPacket const* BlackMarketOutbid::Write() { _worldPacket << int32(MarketID); - _worldPacket << int32(RandomPropertiesID); _worldPacket << Item; + _worldPacket << int32(RandomPropertiesID); return &_worldPacket; } @@ -104,8 +88,8 @@ WorldPacket const* BlackMarketOutbid::Write() WorldPacket const* BlackMarketWon::Write() { _worldPacket << int32(MarketID); - _worldPacket << int32(RandomPropertiesID); _worldPacket << Item; + _worldPacket << int32(RandomPropertiesID); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp index 129fbd5832..eb729eb793 100644 --- a/src/server/game/Server/Packets/CalendarPackets.cpp +++ b/src/server/game/Server/Packets/CalendarPackets.cpp @@ -124,12 +124,12 @@ ByteBuffer& operator>>(ByteBuffer& buffer, CalendarAddEventInfo& addEventInfo) buffer >> addEventInfo.Flags; buffer >> Size(addEventInfo.Invites); - buffer >> SizedString::BitsSize<8>(addEventInfo.Title); - buffer >> SizedString::BitsSize<11>(addEventInfo.Description); - for (CalendarAddEventInviteInfo& invite : addEventInfo.Invites) buffer >> invite; + buffer >> SizedString::BitsSize<8>(addEventInfo.Title); + buffer >> SizedString::BitsSize<11>(addEventInfo.Description); + buffer >> SizedString::Data(addEventInfo.Title); buffer >> SizedString::Data(addEventInfo.Description); @@ -265,15 +265,15 @@ WorldPacket const* CalendarSendCalendar::Write() _worldPacket << Size(Events); _worldPacket << Size(RaidLockouts); - for (CalendarSendCalendarRaidLockoutInfo const& lockout : RaidLockouts) - _worldPacket << lockout; - for (CalendarSendCalendarInviteInfo const& invite : Invites) _worldPacket << invite; for (CalendarSendCalendarEventInfo const& event : Events) _worldPacket << event; + for (CalendarSendCalendarRaidLockoutInfo const& lockout : RaidLockouts) + _worldPacket << lockout; + return &_worldPacket; } @@ -289,13 +289,14 @@ WorldPacket const* CalendarSendEvent::Write() _worldPacket << LockDate; _worldPacket << uint64(EventClubID); _worldPacket << Size(Invites); - _worldPacket << SizedString::BitsSize<8>(EventName); - _worldPacket << SizedString::BitsSize<11>(Description); - _worldPacket.FlushBits(); for (CalendarEventInviteInfo const& invite : Invites) _worldPacket << invite; + _worldPacket << SizedString::BitsSize<8>(EventName); + _worldPacket << SizedString::BitsSize<11>(Description); + _worldPacket.FlushBits(); + _worldPacket << SizedString::Data(EventName); _worldPacket << SizedString::Data(Description); diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index cd7f9eb342..679eba5bf6 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -323,7 +323,9 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::ClassUnlock const { data << int8(classUnlock.ClassID); data << uint32(classUnlock.AchievementID); + data << Bits<1>(classUnlock.HasExpansion); data << Bits<1>(classUnlock.HasUnlockedAchievement); + data << Bits<1>(classUnlock.HasEntitlement); data.FlushBits(); return data; @@ -333,6 +335,10 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceUnlock const& { data << int8(raceUnlock.RaceID); data << Size(raceUnlock.ClassUnlocks); + + for (EnumCharactersResult::ClassUnlock const& classUnlock : raceUnlock.ClassUnlocks) + data << classUnlock; + data << Bits<1>(raceUnlock.HasUnlockedLicense); data << Bits<1>(raceUnlock.HasUnlockedAchievement); data << Bits<1>(raceUnlock.HasHeritageArmorUnlockAchievement); @@ -340,9 +346,6 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceUnlock const& data << Bits<1>(raceUnlock.FactionBalanceDisabled); data.FlushBits(); - for (EnumCharactersResult::ClassUnlock const& classUnlock : raceUnlock.ClassUnlocks) - data << classUnlock; - return data; } @@ -426,12 +429,6 @@ WorldPacket const* EnumCharactersResult::Write() if (ClassDisableMask) _worldPacket << uint32(*ClassDisableMask); - for (UnlockedConditionalAppearance const& unlockedConditionalAppearance : UnlockedConditionalAppearances) - _worldPacket << unlockedConditionalAppearance; - - for (RaceLimitDisableInfo const& raceLimitDisableInfo : RaceLimitDisables) - _worldPacket << raceLimitDisableInfo; - for (CharacterInfo const& charInfo : Characters) _worldPacket << charInfo; @@ -441,6 +438,12 @@ WorldPacket const* EnumCharactersResult::Write() for (RaceUnlock const& raceUnlock : RaceUnlockData) _worldPacket << raceUnlock; + for (UnlockedConditionalAppearance const& unlockedConditionalAppearance : UnlockedConditionalAppearances) + _worldPacket << unlockedConditionalAppearance; + + for (RaceLimitDisableInfo const& raceLimitDisableInfo : RaceLimitDisables) + _worldPacket << raceLimitDisableInfo; + for (WarbandGroup const& warbandGroup : WarbandGroups) _worldPacket << warbandGroup; diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 1459a7ae80..887fb6f3ad 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -236,7 +236,9 @@ namespace WorldPackets struct ClassUnlock { int8 ClassID = 0; + bool HasExpansion = false; bool HasUnlockedAchievement = false; + bool HasEntitlement = false; uint32 AchievementID = 0; }; diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index c15c347bb4..01f4b4bcd9 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -195,7 +195,7 @@ WorldPacket const* Chat::Write() _worldPacket << uint32(TargetVirtualAddress); _worldPacket << uint32(SenderVirtualAddress); _worldPacket << int32(AchievementID); - _worldPacket << uint16(_ChatFlags); + _worldPacket << uint32(_ChatFlags); _worldPacket << float(DisplayTime); _worldPacket << int32(SpellID); _worldPacket << SizedString::BitsSize<11>(SenderName); diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index 620e7f7a69..bc8cbe6638 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -176,7 +176,7 @@ namespace WorldPackets std::string _Channel; ///< Channel Name std::string ChatText; uint32 AchievementID = 0; - uint16 _ChatFlags = 0; ///< @see enum ChatFlags + uint32 _ChatFlags = 0; ///< @see enum ChatFlags float DisplayTime = 0.0f; int32 SpellID = 0; Optional BroadcastTextID; diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index 2aca50b0c0..5aea33876b 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -57,6 +57,9 @@ WorldPacket const* SpellNonMeleeDamageLog::Write() *this << Size(WorldTextViewers); *this << Size(Supporters); + for (CombatWorldTextViewerInfo const& worldTextViewer : WorldTextViewers) + *this << worldTextViewer; + for (Spells::SpellSupportInfo const& supportInfo : Supporters) *this << supportInfo; @@ -66,9 +69,6 @@ WorldPacket const* SpellNonMeleeDamageLog::Write() *this << OptionalInit(ContentTuning); FlushBits(); - for (CombatWorldTextViewerInfo const& worldTextViewer : WorldTextViewers) - *this << worldTextViewer; - WriteLogData(); if (ContentTuning) *this << *ContentTuning; @@ -178,14 +178,14 @@ WorldPacket const* SpellHealLog::Write() *this << OptionalInit(ContentTuning); FlushBits(); - WriteLogData(); - if (CritRollMade) *this << *CritRollMade; if (CritRollNeeded) *this << *CritRollNeeded; + WriteLogData(); + if (ContentTuning) *this << *ContentTuning; @@ -219,12 +219,12 @@ ByteBuffer& operator<<(ByteBuffer& data, PeriodicAuraLogEffect const& effect) data << OptionalInit(effect.ContentTuning); data.FlushBits(); - if (effect.ContentTuning) - data << *effect.ContentTuning; - if (effect.DebugInfo) data << *effect.DebugInfo; + if (effect.ContentTuning) + data << *effect.ContentTuning; + return data; } @@ -234,12 +234,13 @@ WorldPacket const* SpellPeriodicAuraLog::Write() *this << CasterGUID; *this << int32(SpellID); *this << Size(Effects); - WriteLogDataBit(); - FlushBits(); for (PeriodicAuraLogEffect const& effect : Effects) *this << effect; + WriteLogDataBit(); + FlushBits(); + WriteLogData(); return &_worldPacket; @@ -309,10 +310,12 @@ WorldPacket const* SpellMissLog::Write() _worldPacket << int32(SpellID); _worldPacket << Caster; _worldPacket << Size(Entries); - _worldPacket << Bits<1>(HideFromCombatLog); for (SpellLogMissEntry const& missEntry : Entries) _worldPacket << missEntry; + _worldPacket << Bits<1>(HideFromCombatLog); + _worldPacket.FlushBits(); + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp index 5b3a8d7895..b6ac4f7e19 100644 --- a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp @@ -74,11 +74,16 @@ ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData) data << uint32(craftingData.OperationID); data << craftingData.ItemGUID; data << int32(craftingData.Quantity); + data << craftingData.OldItem; + data << craftingData.NewItem; data << int32(craftingData.EnchantID); data << int32(craftingData.ConcentrationCurrencyID); data << int32(craftingData.ConcentrationSpent); data << int32(craftingData.IngenuityRefund); + for (SpellReducedReagent const& spellReducedReagent : craftingData.ResourcesReturned) + data << spellReducedReagent; + data << Bits<1>(craftingData.IsCrit); data << Bits<1>(craftingData.IsRecraft); data << Bits<1>(craftingData.IsInitialRecraft); @@ -87,12 +92,6 @@ ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData) data << Bits<1>(craftingData.ApplyConcentration); data.FlushBits(); - data << craftingData.OldItem; - data << craftingData.NewItem; - - for (SpellReducedReagent const& spellReducedReagent : craftingData.ResourcesReturned) - data << spellReducedReagent; - return data; } } diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index 1e6bc914d0..85e2e6f2c0 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -255,18 +255,41 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison) data << uint32(garrison.NumMissionsStartedToday); data << int32(garrison.MinAutoTroopLevel); + for (GarrisonBuildingInfo const* building : garrison.Buildings) + data << *building; + for (GarrisonPlotInfo const* plot : garrison.Plots) data << *plot; + for (GarrisonFollower const* follower : garrison.Followers) + data << *follower; + + for (GarrisonFollower const* follower : garrison.AutoTroops) + data << *follower; + + for (GarrisonMission const* mission : garrison.Missions) + data << *mission; + for (std::vector const& missionReward : garrison.MissionRewards) + { data << Size(missionReward); + for (GarrisonMissionReward const& missionRewardItem : missionReward) + data << missionRewardItem; + } for (std::vector const& missionReward : garrison.MissionOvermaxRewards) + { data << Size(missionReward); + for (GarrisonMissionReward const& missionRewardItem : missionReward) + data << missionRewardItem; + } for (GarrisonMissionBonusAbility const* areaBonus : garrison.MissionAreaBonuses) data << *areaBonus; + for (GarrisonTalent const& talent : garrison.Talents) + data << talent; + for (GarrisonCollection const& collection : garrison.Collections) data << collection; @@ -279,34 +302,11 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison) if (!garrison.ArchivedMissions.empty()) data.append(garrison.ArchivedMissions.data(), garrison.ArchivedMissions.size()); - for (GarrisonBuildingInfo const* building : garrison.Buildings) - data << *building; - for (bool canStartMission : garrison.CanStartMission) data << Bits<1>(canStartMission); data.FlushBits(); - for (GarrisonFollower const* follower : garrison.Followers) - data << *follower; - - for (GarrisonFollower const* follower : garrison.AutoTroops) - data << *follower; - - for (GarrisonMission const* mission : garrison.Missions) - data << *mission; - - for (GarrisonTalent const& talent : garrison.Talents) - data << talent; - - for (std::vector const& missionReward : garrison.MissionRewards) - for (GarrisonMissionReward const& missionRewardItem : missionReward) - data << missionRewardItem; - - for (std::vector const& missionReward : garrison.MissionOvermaxRewards) - for (GarrisonMissionReward const& missionRewardItem : missionReward) - data << missionRewardItem; - return data; } @@ -322,12 +322,13 @@ WorldPacket const* GetGarrisonInfoResult::Write() _worldPacket << int8(FactionIndex); _worldPacket << Size(Garrisons); _worldPacket << Size(FollowerSoftCaps); - for (FollowerSoftCapInfo const& followerSoftCapInfo : FollowerSoftCaps) - _worldPacket << followerSoftCapInfo; for (GarrisonInfo const& garrison : Garrisons) _worldPacket << garrison; + for (FollowerSoftCapInfo const& followerSoftCapInfo : FollowerSoftCaps) + _worldPacket << followerSoftCapInfo; + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index b175381200..9e64d1494b 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -42,9 +42,6 @@ WorldPacket const* QueryGuildInfoResponse::Write() _worldPacket << uint32(Info->BorderStyle); _worldPacket << uint32(Info->BorderColor); _worldPacket << uint32(Info->BackgroundColor); - _worldPacket << SizedString::BitsSize<7>(Info->GuildName); - _worldPacket.FlushBits(); - for (GuildInfo::GuildInfoRank const& rank : Info->Ranks) { _worldPacket << uint32(rank.RankID); @@ -55,6 +52,9 @@ WorldPacket const* QueryGuildInfoResponse::Write() _worldPacket << SizedString::Data(rank.RankName); } + _worldPacket << SizedString::BitsSize<7>(Info->GuildName); + _worldPacket.FlushBits(); + _worldPacket << SizedString::Data(Info->GuildName); } @@ -87,6 +87,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GuildRosterMemberData const& rosterMemb data << uint8(rosterMemberData.Level); data << uint8(rosterMemberData.ClassID); data << uint8(rosterMemberData.Gender); + data << rosterMemberData.DungeonScore; data << uint64(rosterMemberData.GuildClubMemberID); data << uint8(rosterMemberData.RaceID); data << int32(rosterMemberData.TimerunningSeasonID); @@ -97,8 +98,6 @@ ByteBuffer& operator<<(ByteBuffer& data, GuildRosterMemberData const& rosterMemb data << Bits<1>(rosterMemberData.Authenticated); data.FlushBits(); - data << rosterMemberData.DungeonScore; - data << SizedString::Data(rosterMemberData.Name); data << SizedString::Data(rosterMemberData.Note); data << SizedString::Data(rosterMemberData.OfficerNote); @@ -112,13 +111,14 @@ WorldPacket const* GuildRoster::Write() _worldPacket << CreateDate; _worldPacket << int32(GuildFlags); _worldPacket << Size(MemberData); - _worldPacket << SizedString::BitsSize<11>(WelcomeText); - _worldPacket << SizedString::BitsSize<11>(InfoText); - _worldPacket.FlushBits(); for (GuildRosterMemberData const& member : MemberData) _worldPacket << member; + _worldPacket << SizedString::BitsSize<11>(WelcomeText); + _worldPacket << SizedString::BitsSize<11>(InfoText); + _worldPacket.FlushBits(); + _worldPacket << SizedString::Data(WelcomeText); _worldPacket << SizedString::Data(InfoText); @@ -618,8 +618,6 @@ WorldPacket const* GuildBankQueryResults::Write() _worldPacket << int32(WithdrawalsRemaining); _worldPacket << Size(TabInfo); _worldPacket << Size(ItemInfo); - _worldPacket << Bits<1>(FullUpdate); - _worldPacket.FlushBits(); for (GuildBankTabInfo const& tab : TabInfo) { @@ -635,12 +633,12 @@ WorldPacket const* GuildBankQueryResults::Write() for (GuildBankItemInfo const& item : ItemInfo) { _worldPacket << int32(item.Slot); + _worldPacket << item.Item; _worldPacket << int32(item.Count); _worldPacket << int32(item.EnchantmentID); _worldPacket << int32(item.Charges); _worldPacket << int32(item.OnUseEnchantmentID); _worldPacket << int32(item.Flags); - _worldPacket << item.Item; _worldPacket << BitsSize<2>(item.SocketEnchant); _worldPacket << Bits<1>(item.Locked); _worldPacket.FlushBits(); @@ -649,6 +647,9 @@ WorldPacket const* GuildBankQueryResults::Write() _worldPacket << socketEnchant; } + _worldPacket << Bits<1>(FullUpdate); + _worldPacket.FlushBits(); + return &_worldPacket; } @@ -794,8 +795,6 @@ WorldPacket const* GuildBankLogQueryResults::Write() { _worldPacket << int32(Tab); _worldPacket << Size(Entry); - _worldPacket << OptionalInit(WeeklyBonusMoney); - _worldPacket.FlushBits(); for (GuildBankLogEntry const& logEntry : Entry) { @@ -822,6 +821,9 @@ WorldPacket const* GuildBankLogQueryResults::Write() _worldPacket << int8(*logEntry.OtherTab); } + _worldPacket << OptionalInit(WeeklyBonusMoney); + _worldPacket.FlushBits(); + if (WeeklyBonusMoney) _worldPacket << uint64(*WeeklyBonusMoney); diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp index 286627b2a1..35be26464c 100644 --- a/src/server/game/Server/Packets/InspectPackets.cpp +++ b/src/server/game/Server/Packets/InspectPackets.cpp @@ -111,8 +111,8 @@ ByteBuffer& operator<<(ByteBuffer& data, PlayerModelDisplayInfo const& displayIn { data << displayInfo.GUID; data << int32(displayInfo.SpecializationID); - data << Size(displayInfo.Items); data << displayInfo.DisplayInfo; + data << Size(displayInfo.Items); for (InspectItemData const& item : displayInfo.Items) data << item; @@ -219,12 +219,19 @@ WorldPacket const* InspectResult::Write() _worldPacket << Size(Glyphs); _worldPacket << Size(Talents); _worldPacket << Size(PvpTalents); + _worldPacket << TalentInfo; _worldPacket << int32(ItemLevel); + + for (PVPBracketData const& bracket : Bracket) + _worldPacket << bracket; + _worldPacket << uint8(LifetimeMaxRank); _worldPacket << uint16(TodayHK); _worldPacket << uint16(YesterdayHK); _worldPacket << uint32(LifetimeHK); _worldPacket << uint32(HonorLevel); + _worldPacket << TraitsInfo; + if (!Glyphs.empty()) _worldPacket.append(Glyphs.data(), Glyphs.size()); if (!Talents.empty()) @@ -232,23 +239,16 @@ WorldPacket const* InspectResult::Write() if (!PvpTalents.empty()) _worldPacket.append(PvpTalents.data(), PvpTalents.size()); - _worldPacket << TalentInfo; - _worldPacket << OptionalInit(GuildData); _worldPacket << OptionalInit(AzeriteLevel); _worldPacket.FlushBits(); - for (PVPBracketData const& bracket : Bracket) - _worldPacket << bracket; - if (GuildData) _worldPacket << *GuildData; if (AzeriteLevel) _worldPacket << int32(*AzeriteLevel); - _worldPacket << TraitsInfo; - return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index e03789fb7e..be0942bcdd 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -30,11 +30,11 @@ void BuyItem::Read() { _worldPacket >> VendorGUID; _worldPacket >> ContainerGUID; + _worldPacket >> Item; _worldPacket >> Quantity; _worldPacket >> Muid; _worldPacket >> Slot; _worldPacket >> As(ItemType); - _worldPacket >> Item; } WorldPacket const* BuySucceeded::Write() @@ -259,6 +259,7 @@ WorldPacket const* ItemPushResult::Write() _worldPacket << PlayerGUID; _worldPacket << uint8(Slot); _worldPacket << int32(SlotInBag); + _worldPacket << Item; _worldPacket << int32(ProxyItemID); _worldPacket << int32(Quantity); _worldPacket << int32(QuantityInInventory); @@ -283,14 +284,12 @@ WorldPacket const* ItemPushResult::Write() _worldPacket << OptionalInit(FirstCraftOperationID); _worldPacket.FlushBits(); - _worldPacket << Item; + if (CraftingData) + _worldPacket << *CraftingData; if (FirstCraftOperationID) _worldPacket << uint32(*FirstCraftOperationID); - if (CraftingData) - _worldPacket << *CraftingData; - return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.cpp b/src/server/game/Server/Packets/ItemPacketsCommon.cpp index 1e7c97def2..f5d356fe40 100644 --- a/src/server/game/Server/Packets/ItemPacketsCommon.cpp +++ b/src/server/game/Server/Packets/ItemPacketsCommon.cpp @@ -173,12 +173,10 @@ ByteBuffer& operator>>(ByteBuffer& data, ItemModList& itemModList) ByteBuffer& operator<<(ByteBuffer& data, ItemInstance const& itemInstance) { data << int32(itemInstance.ItemID); - + data << itemInstance.Modifications; data << OptionalInit(itemInstance.ItemBonus); data.FlushBits(); - data << itemInstance.Modifications; - if (itemInstance.ItemBonus) data << *itemInstance.ItemBonus; @@ -188,11 +186,10 @@ ByteBuffer& operator<<(ByteBuffer& data, ItemInstance const& itemInstance) ByteBuffer& operator>>(ByteBuffer& data, ItemInstance& itemInstance) { data >> itemInstance.ItemID; + data >> itemInstance.Modifications; data >> OptionalInit(itemInstance.ItemBonus); data.ResetBitPos(); - data >> itemInstance.Modifications; - if (itemInstance.ItemBonus) data >> *itemInstance.ItemBonus; diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp index de1a0d3e2c..7f76fa5cef 100644 --- a/src/server/game/Server/Packets/LFGPackets.cpp +++ b/src/server/game/Server/Packets/LFGPackets.cpp @@ -170,14 +170,15 @@ ByteBuffer& operator<<(ByteBuffer& data, LfgPlayerDungeonInfo const& playerDunge data << uint32(playerDungeonInfo.CompletedMask); data << uint32(playerDungeonInfo.EncounterMask); data << Size(playerDungeonInfo.ShortageReward); + data << playerDungeonInfo.Rewards; + + for (LfgPlayerQuestReward const& shortageReward : playerDungeonInfo.ShortageReward) + data << shortageReward; + data << Bits<1>(playerDungeonInfo.FirstReward); data << Bits<1>(playerDungeonInfo.ShortageEligible); data.FlushBits(); - data << playerDungeonInfo.Rewards; - for (LfgPlayerQuestReward const& shortageReward : playerDungeonInfo.ShortageReward) - data << shortageReward; - return data; } @@ -263,13 +264,13 @@ WorldPacket const* LFGRoleCheckUpdate::Write() for (uint64 bgQueueID : BgQueueIDs) _worldPacket << uint64(bgQueueID); + for (LFGRoleCheckUpdateMember const& member : Members) + _worldPacket << member; + _worldPacket << Bits<1>(IsBeginning); _worldPacket << Bits<1>(IsRequeue); _worldPacket.FlushBits(); - for (LFGRoleCheckUpdateMember const& member : Members) - _worldPacket << member; - return &_worldPacket; } @@ -314,11 +315,12 @@ ByteBuffer& operator<<(ByteBuffer& data, LFGPlayerRewards const& lfgPlayerReward { data << OptionalInit(lfgPlayerRewards.RewardItem); data << OptionalInit(lfgPlayerRewards.RewardCurrency); + data << uint32(lfgPlayerRewards.Quantity); + data << int32(lfgPlayerRewards.BonusQuantity); + if (lfgPlayerRewards.RewardItem) data << *lfgPlayerRewards.RewardItem; - data << uint32(lfgPlayerRewards.Quantity); - data << int32(lfgPlayerRewards.BonusQuantity); if (lfgPlayerRewards.RewardCurrency) data << int32(*lfgPlayerRewards.RewardCurrency); diff --git a/src/server/game/Server/Packets/LootPackets.cpp b/src/server/game/Server/Packets/LootPackets.cpp index 54ce4aff1d..2eb6224a8c 100644 --- a/src/server/game/Server/Packets/LootPackets.cpp +++ b/src/server/game/Server/Packets/LootPackets.cpp @@ -26,10 +26,10 @@ static ByteBuffer& operator<<(ByteBuffer& data, LootItemData const& lootItem) data << Bits<3>(lootItem.UIType); data << Bits<1>(lootItem.CanTradeToTapList); data.FlushBits(); - data << lootItem.Loot; // WorldPackets::Item::ItemInstance data << uint32(lootItem.Quantity); data << uint8(lootItem.LootItemType); data << uint8(lootItem.LootListID); + data << lootItem.Loot; // WorldPackets::Item::ItemInstance return data; } @@ -61,10 +61,6 @@ WorldPacket const* LootResponse::Write() _worldPacket << uint32(Coins); _worldPacket << Size(Items); _worldPacket << Size(Currencies); - _worldPacket << Bits<1>(Acquired); - _worldPacket << Bits<1>(AELooting); - _worldPacket << Bits<1>(SuppressError); - _worldPacket.FlushBits(); for (LootItemData const& item : Items) _worldPacket << item; @@ -72,6 +68,11 @@ WorldPacket const* LootResponse::Write() for (LootCurrency const& currency : Currencies) _worldPacket << currency; + _worldPacket << Bits<1>(Acquired); + _worldPacket << Bits<1>(AELooting); + _worldPacket << Bits<1>(SuppressError); + _worldPacket.FlushBits(); + return &_worldPacket; } @@ -179,12 +180,12 @@ WorldPacket const* StartLootRoll::Write() { _worldPacket << LootObj; _worldPacket << int32(MapID); + _worldPacket << Item; _worldPacket << RollTime; _worldPacket << uint8(ValidRolls); _worldPacket.append(LootRollIneligibleReason.data(), LootRollIneligibleReason.size()); _worldPacket << uint8(Method); _worldPacket << int32(DungeonEncounterID); - _worldPacket << Item; return &_worldPacket; } @@ -193,10 +194,10 @@ WorldPacket const* LootRollBroadcast::Write() { _worldPacket << LootObj; _worldPacket << Player; + _worldPacket << Item; _worldPacket << int32(Roll); _worldPacket << uint8(RollType); _worldPacket << int32(DungeonEncounterID); - _worldPacket << Item; _worldPacket << Bits<1>(Autopassed); _worldPacket << Bits<1>(OffSpec); _worldPacket.FlushBits(); @@ -207,11 +208,11 @@ WorldPacket const* LootRollBroadcast::Write() WorldPacket const* LootRollWon::Write() { _worldPacket << LootObj; + _worldPacket << Item; _worldPacket << Winner; _worldPacket << int32(Roll); _worldPacket << uint8(RollType); _worldPacket << int32(DungeonEncounterID); - _worldPacket << Item; _worldPacket << Bits<1>(MainSpec); _worldPacket.FlushBits(); @@ -221,8 +222,8 @@ WorldPacket const* LootRollWon::Write() WorldPacket const* LootAllPassed::Write() { _worldPacket << LootObj; - _worldPacket << int32(DungeonEncounterID); _worldPacket << Item; + _worldPacket << int32(DungeonEncounterID); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp index 12ce2572dc..723a03efe6 100644 --- a/src/server/game/Server/Packets/MailPackets.cpp +++ b/src/server/game/Server/Packets/MailPackets.cpp @@ -62,22 +62,22 @@ ByteBuffer& operator<<(ByteBuffer& data, MailAttachedItem const& att) { data << uint8(att.Position); data << uint64(att.AttachID); + data << att.Item; data << int32(att.Count); data << int32(att.Charges); data << uint32(att.MaxDurability); data << int32(att.Durability); - data << att.Item; data << BitsSize<4>(att.Enchants); data << BitsSize<2>(att.Gems); data << Bits<1>(att.Unlocked); data.FlushBits(); - for (Item::ItemGemData const& gem : att.Gems) - data << gem; - for (Item::ItemEnchantData const& en : att.Enchants) data << en; + for (Item::ItemGemData const& gem : att.Gems) + data << gem; + return data; } @@ -150,13 +150,13 @@ ByteBuffer& operator<<(ByteBuffer& data, MailListEntry const& entry) break; } + for (MailAttachedItem const& att : entry.Attachments) + data << att; + data << SizedString::BitsSize<8>(entry.Subject); data << SizedString::BitsSize<13>(entry.Body); data.FlushBits(); - for (MailAttachedItem const& att : entry.Attachments) - data << att; - data << SizedString::Data(entry.Subject); data << SizedString::Data(entry.Body); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index e70554a69c..16b7f8463d 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -801,7 +801,7 @@ WorldPacket const* SplashScreenShowLatest::Write() WorldPacket const* DisplayToast::Write() { _worldPacket << uint64(Quantity); - _worldPacket << As(DisplayToastMethod); + _worldPacket << As(DisplayToastMethod); _worldPacket << uint32(QuestID); _worldPacket << Bits<1>(Mailed); diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index dd1d27895a..60215dc1fe 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -107,24 +107,11 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo) data.FlushBits(); - if (hasTransportData) - data << movementInfo.transport; - if (movementInfo.standingOnGameObjectGUID) data << *movementInfo.standingOnGameObjectGUID; - if (movementInfo.inertia) - { - data << uint32(movementInfo.inertia->id); - data << movementInfo.inertia->force.PositionXYZStream(); - data << uint32(movementInfo.inertia->lifetime); - } - - if (movementInfo.advFlying) - { - data << float(movementInfo.advFlying->forwardVelocity); - data << float(movementInfo.advFlying->upVelocity); - } + if (hasTransportData) + data << movementInfo.transport; if (hasFallData) { @@ -141,6 +128,19 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo) } } + if (movementInfo.inertia) + { + data << uint32(movementInfo.inertia->id); + data << movementInfo.inertia->force.PositionXYZStream(); + data << uint32(movementInfo.inertia->lifetime); + } + + if (movementInfo.advFlying) + { + data << float(movementInfo.advFlying->forwardVelocity); + data << float(movementInfo.advFlying->upVelocity); + } + if (movementInfo.driveStatus) { data << float(movementInfo.driveStatus->speed); @@ -183,24 +183,11 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) data >> WorldPackets::OptionalInit(movementInfo.advFlying); data >> WorldPackets::OptionalInit(movementInfo.driveStatus); - if (hasTransport) - data >> movementInfo.transport; - if (movementInfo.standingOnGameObjectGUID) data >> *movementInfo.standingOnGameObjectGUID; - if (movementInfo.inertia) - { - data >> movementInfo.inertia->id; - data >> movementInfo.inertia->force.PositionXYZStream(); - data >> movementInfo.inertia->lifetime; - } - - if (movementInfo.advFlying) - { - data >> movementInfo.advFlying->forwardVelocity; - data >> movementInfo.advFlying->upVelocity; - } + if (hasTransport) + data >> movementInfo.transport; if (hasFall) { @@ -218,6 +205,19 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) } } + if (movementInfo.inertia) + { + data >> movementInfo.inertia->id; + data >> movementInfo.inertia->force.PositionXYZStream(); + data >> movementInfo.inertia->lifetime; + } + + if (movementInfo.advFlying) + { + data >> movementInfo.advFlying->forwardVelocity; + data >> movementInfo.advFlying->upVelocity; + } + if (movementInfo.driveStatus) { data.ResetBitPos(); @@ -356,15 +356,15 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementSpline const& movementSpline) data << OptionalInit(movementSpline.SpellVisualData); data.FlushBits(); - if (movementSpline.SplineFilter) - data << *movementSpline.SplineFilter; - for (TaggedPosition const& pos : movementSpline.Points) data << pos; for (TaggedPosition const& pos : movementSpline.PackedDeltas) data << pos; + if (movementSpline.SplineFilter) + data << *movementSpline.SplineFilter; + if (movementSpline.SpellEffectExtraData) data << *movementSpline.SpellEffectExtraData; @@ -386,11 +386,11 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementSpline const& movementSpline) ByteBuffer& operator<<(ByteBuffer& data, MovementMonsterSpline const& movementMonsterSpline) { data << movementMonsterSpline.ID; + data << movementMonsterSpline.Move; data << Bits<1>(movementMonsterSpline.CrzTeleport); data << Bits<1>(movementMonsterSpline.StopUseFaceDirection); data << Bits<3>(movementMonsterSpline.StopSplineStyle); - - data << movementMonsterSpline.Move; + data.FlushBits(); return data; } @@ -420,35 +420,11 @@ void CommonMovement::WriteCreateObjectSplineDataBlock(::Movement::MoveSpline con if (hasSplineMove) // MovementSplineMove { data << uint32(moveSpline.splineflags.Raw.AsUnderlyingType()); // SplineFlags + data << uint8(moveSpline.facing.type); // Face data << int32(moveSpline.timePassed()); // Elapsed data << uint32(moveSpline.Duration()); // Duration data << float(1.0f); // DurationModifier data << float(1.0f); // NextDurationModifier - data << Bits<2>(moveSpline.facing.type); // Face - bool hasFadeObjectTime = moveSpline.splineflags.FadeObject && moveSpline.effect_start_time < moveSpline.Duration(); - data << Bits<1>(hasFadeObjectTime); - data << BitsSize<16>(moveSpline.getPath()); - data << Bits<1>(false); // HasSplineFilter - data << OptionalInit(moveSpline.spell_effect_extra); // HasSpellEffectExtraData - bool hasJumpExtraData = moveSpline.splineflags.Parabolic && (!moveSpline.spell_effect_extra || moveSpline.effect_start_time); - data << Bits<1>(hasJumpExtraData); - data << OptionalInit(moveSpline.turn); // HasTurnData - data << OptionalInit(moveSpline.anim_tier); // HasAnimTierTransition - data << Bits<1>(false); // HasSpellVisualData - data.FlushBits(); - - //if (HasSplineFilterKey) - //{ - // data << uint32(FilterKeysCount); - // for (var i = 0; i < FilterKeysCount; ++i) - // { - // data << float(In); - // data << float(Out); - // } - - // data << Bits<2>(FilterFlags); - // data.FlushBits(); - //} switch (moveSpline.facing.type) { @@ -470,11 +446,36 @@ void CommonMovement::WriteCreateObjectSplineDataBlock(::Movement::MoveSpline con break; } + bool hasFadeObjectTime = moveSpline.splineflags.FadeObject && moveSpline.effect_start_time < moveSpline.Duration(); + data << Bits<1>(hasFadeObjectTime); + data << BitsSize<16>(moveSpline.getPath()); + data << Bits<1>(false); // HasSplineFilter + data << OptionalInit(moveSpline.spell_effect_extra); // HasSpellEffectExtraData + bool hasJumpExtraData = moveSpline.splineflags.Parabolic && (!moveSpline.spell_effect_extra || moveSpline.effect_start_time); + data << Bits<1>(hasJumpExtraData); + data << OptionalInit(moveSpline.turn); // HasTurnData + data << OptionalInit(moveSpline.anim_tier); // HasAnimTierTransition + data << Bits<1>(false); // HasSpellVisualData + data.FlushBits(); + if (hasFadeObjectTime) data << uint32(moveSpline.effect_start_time); // FadeObjectTime data.append(reinterpret_cast(moveSpline.getPath().data()), moveSpline.getPath().size() * 3); + //if (HasSplineFilterKey) + //{ + // data << uint32(FilterKeysCount); + // for (var i = 0; i < FilterKeysCount; ++i) + // { + // data << float(In); + // data << float(Out); + // } + + // data << Bits<2>(FilterFlags); + // data.FlushBits(); + //} + if (moveSpline.spell_effect_extra) { data << moveSpline.spell_effect_extra->Target; @@ -643,8 +644,8 @@ void MonsterMove::InitializeSplineData(::Movement::MoveSpline const& moveSpline) WorldPacket const* MonsterMove::Write() { _worldPacket << MoverGUID; - _worldPacket << Pos; _worldPacket << SplineData; + _worldPacket << Pos; return &_worldPacket; } @@ -785,12 +786,15 @@ WorldPacket const* MoveTeleport::Write() _worldPacket << uint32(SequenceIndex); _worldPacket << Pos; _worldPacket << float(Facing); - _worldPacket << uint8(PreloadWorld); _worldPacket << OptionalInit(TransportGUID); _worldPacket << OptionalInit(Vehicle); + _worldPacket << Bits<1>(PreloadWorld); _worldPacket.FlushBits(); + if (TransportGUID) + _worldPacket << *TransportGUID; + if (Vehicle) { _worldPacket << uint8(Vehicle->VehicleSeatIndex); @@ -799,9 +803,6 @@ WorldPacket const* MoveTeleport::Write() _worldPacket.FlushBits(); } - if (TransportGUID) - _worldPacket << *TransportGUID; - return &_worldPacket; } @@ -826,6 +827,10 @@ WorldPacket const* MoveUpdateTeleport::Write() _worldPacket << *Status; _worldPacket << Size(MovementForces); + + for (MovementForce const& force : MovementForces) + _worldPacket << force; + _worldPacket << OptionalInit(WalkSpeed); _worldPacket << OptionalInit(RunSpeed); _worldPacket << OptionalInit(RunBackSpeed); @@ -837,9 +842,6 @@ WorldPacket const* MoveUpdateTeleport::Write() _worldPacket << OptionalInit(PitchRate); _worldPacket.FlushBits(); - for (MovementForce const& force : MovementForces) - _worldPacket << force; - if (WalkSpeed) _worldPacket << *WalkSpeed; @@ -1144,9 +1146,6 @@ ByteBuffer& operator<<(ByteBuffer& data, MoveStateChange const& stateChange) data << OptionalInit(stateChange.DriveCapabilityRecID); data.FlushBits(); - if (stateChange.MovementForce_) - data << *stateChange.MovementForce_; - if (stateChange.Speed) data << float(*stateChange.Speed); @@ -1162,6 +1161,9 @@ ByteBuffer& operator<<(ByteBuffer& data, MoveStateChange const& stateChange) if (stateChange.CollisionHeight) data << *stateChange.CollisionHeight; + if (stateChange.MovementForce_) + data << *stateChange.MovementForce_; + if (stateChange.MovementForceGUID) data << *stateChange.MovementForceGUID; diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index a362ccd098..dd85bedae7 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -348,7 +348,7 @@ namespace WorldPackets ObjectGuid MoverGUID; Optional TransportGUID; float Facing = 0.0f; - uint8 PreloadWorld = 0; + bool PreloadWorld = false; }; class MoveUpdateTeleport final : public ServerPacket diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp index a7dc238339..84d45da31a 100644 --- a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp +++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp @@ -85,8 +85,8 @@ ByteBuffer& operator<<(ByteBuffer& data, MythicPlusRun const& mythicPlusRun) ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreBestRunForAffix const& dungeonScoreBestRunForAffix) { data << int32(dungeonScoreBestRunForAffix.KeystoneAffixID); - data << float(dungeonScoreBestRunForAffix.Score); data << dungeonScoreBestRunForAffix.Run; + data << float(dungeonScoreBestRunForAffix.Score); return data; } diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index d1e1d725e4..86fd3709a2 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -46,6 +46,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption data << int8(gossipOption.OptionFlags); data << uint64(gossipOption.OptionCost); data << uint32(gossipOption.OptionLanguage); + data << gossipOption.Treasure; data << int32(gossipOption.Flags); data << int32(gossipOption.OrderIndex); data << SizedString::BitsSize<12>(gossipOption.Text); @@ -56,8 +57,6 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption data << SizedCString::BitsSize<8>(gossipOption.FailureDescription); data.FlushBits(); - data << gossipOption.Treasure; - data << SizedString::Data(gossipOption.Text); data << SizedString::Data(gossipOption.Confirm); @@ -115,22 +114,23 @@ WorldPacket const* GossipMessage::Write() _worldPacket << int32(FriendshipFactionID); _worldPacket << Size(GossipOptions); _worldPacket << Size(GossipText); - _worldPacket << OptionalInit(RandomTextID); - _worldPacket << OptionalInit(BroadcastTextID); - _worldPacket.FlushBits(); for (ClientGossipOptions const& options : GossipOptions) _worldPacket << options; + for (ClientGossipText const& text : GossipText) + _worldPacket << text; + + _worldPacket << OptionalInit(RandomTextID); + _worldPacket << OptionalInit(BroadcastTextID); + _worldPacket.FlushBits(); + if (RandomTextID) _worldPacket << int32(*RandomTextID); if (BroadcastTextID) _worldPacket << int32(*BroadcastTextID); - for (ClientGossipText const& text : GossipText) - _worldPacket << text; - return &_worldPacket; } @@ -143,13 +143,12 @@ ByteBuffer& operator<<(ByteBuffer& data, VendorItem const& item) data << int32(item.Quantity); data << int32(item.ExtendedCostID); data << int32(item.PlayerConditionFailed); + data << item.Item; data << Bits<1>(item.Locked); data << Bits<1>(item.DoNotFilterOnVendor); data << Bits<1>(item.Refundable); data.FlushBits(); - data << item.Item; - return data; } diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 4ff4d10b9c..9df5c24f80 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -69,10 +69,10 @@ WorldPacket const* PartyInvite::Write() _worldPacket << SizedString::BitsSize<6>(InviterName); _worldPacket << Bits<1>(IsCrossFaction); - _worldPacket << InviterRealm; _worldPacket << InviterGUID; _worldPacket << InviterBNetAccountId; _worldPacket << uint16(InviterCfgRealmID); + _worldPacket << InviterRealm; _worldPacket << uint8(ProposedRoles); _worldPacket << Size(LfgSlots); _worldPacket << uint32(LfgCompletedMask); @@ -238,6 +238,7 @@ ByteBuffer& operator<<(ByteBuffer& data, PartyMemberStats const& memberStats) data << Size(memberStats.Auras); data << memberStats.Phases; data << memberStats.ChromieTime; + data << memberStats.DungeonScore; for (PartyMemberAuraStates const& aura : memberStats.Auras) data << aura; @@ -245,8 +246,6 @@ ByteBuffer& operator<<(ByteBuffer& data, PartyMemberStats const& memberStats) data << OptionalInit(memberStats.PetStats); data.FlushBits(); - data << memberStats.DungeonScore; - if (memberStats.PetStats) data << *memberStats.PetStats; @@ -257,8 +256,8 @@ WorldPacket const* PartyMemberFullState::Write() { _worldPacket << Bits<1>(ForEnemy); - _worldPacket << MemberStats; _worldPacket << MemberGuid; + _worldPacket << MemberStats; return &_worldPacket; } @@ -488,13 +487,14 @@ ByteBuffer& operator<<(ByteBuffer& data, PartyPlayerInfo const& playerInfo) data << Bits<1>(playerInfo.Connected); data << Bits<1>(playerInfo.FromSocialQueue); data << Bits<1>(playerInfo.VoiceChatSilenced); - data << playerInfo.Leaver; data << playerInfo.GUID; data << uint8(playerInfo.Subgroup); data << uint8(playerInfo.Flags); data << uint8(playerInfo.RolesAssigned); + data << uint8(playerInfo.RolesUnk_1210); data << uint8(playerInfo.Class); data << uint8(playerInfo.FactionGroup); + data << playerInfo.Leaver; data << SizedString::Data(playerInfo.Name); data << SizedCString::Data(playerInfo.VoiceStateID); @@ -565,14 +565,21 @@ WorldPacket const* PartyUpdate::Write() _worldPacket << uint8(LeaderFactionGroup); _worldPacket << int32(PingRestriction); _worldPacket << Size(PlayerList); + + for (PartyPlayerInfo const& playerInfos : PlayerList) + _worldPacket << playerInfos; + _worldPacket << OptionalInit(ChallengeMode); _worldPacket << OptionalInit(LfgInfos); _worldPacket << OptionalInit(LootSettings); _worldPacket << OptionalInit(DifficultySettings); _worldPacket.FlushBits(); - for (PartyPlayerInfo const& playerInfos : PlayerList) - _worldPacket << playerInfos; + if (ChallengeMode) + _worldPacket << *ChallengeMode; + + if (LfgInfos) + _worldPacket << *LfgInfos; if (LootSettings) _worldPacket << *LootSettings; @@ -580,12 +587,6 @@ WorldPacket const* PartyUpdate::Write() if (DifficultySettings) _worldPacket << *DifficultySettings; - if (ChallengeMode) - _worldPacket << *ChallengeMode; - - if (LfgInfos) - _worldPacket << *LfgInfos; - return &_worldPacket; } @@ -793,6 +794,9 @@ void SendPingUnit::Read() _worldPacket >> As(Type); _worldPacket >> PinFrameID; _worldPacket >> PingDuration; + _worldPacket >> Health; + _worldPacket >> Mana; + _worldPacket >> Bits<1>(IsUnitFrameStatusTextPing); _worldPacket >> OptionalInit(CreatureID); _worldPacket >> OptionalInit(SpellOverrideNameID); if (CreatureID) @@ -809,6 +813,9 @@ WorldPacket const* ReceivePingUnit::Write() _worldPacket << uint8(Type); _worldPacket << uint32(PinFrameID); _worldPacket << PingDuration; + _worldPacket << Health; + _worldPacket << Mana; + _worldPacket << Bits<1>(IsUnitFrameStatusTextPing); _worldPacket << OptionalInit(CreatureID); _worldPacket << OptionalInit(SpellOverrideNameID); _worldPacket.FlushBits(); @@ -846,6 +853,32 @@ WorldPacket const* ReceivePingWorldPoint::Write() return &_worldPacket; } +void SendPingCooldown::Read() +{ + _worldPacket >> SenderGUID; + _worldPacket >> PinFrameID; + _worldPacket >> SpellID; + _worldPacket >> ItemID; + _worldPacket >> Duration; + _worldPacket >> Remaining; + _worldPacket >> As(Type); + _worldPacket >> SpellCategoryID; +} + +WorldPacket const* ReceivePingCooldown::Write() +{ + _worldPacket << SenderGUID; + _worldPacket << uint32(PinFrameID); + _worldPacket << uint32(SpellID); + _worldPacket << uint32(ItemID); + _worldPacket << Duration; + _worldPacket << Remaining; + _worldPacket << uint8(Type); + _worldPacket << uint32(SpellCategoryID); + + return &_worldPacket; +} + WorldPacket const* CancelPingPin::Write() { _worldPacket << SenderGUID; diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index 6469db0a6a..712df1843d 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -532,6 +532,7 @@ namespace WorldPackets uint8 Subgroup = 0u; uint8 Flags = 0u; uint8 RolesAssigned = 0u; + uint8 RolesUnk_1210 = 0u; // forces role displayed to be tank if this field contains tank role and RolesAssigned is dps uint8 FactionGroup = 0u; bool FromSocialQueue = false; bool VoiceChatSilenced = false; @@ -729,6 +730,9 @@ namespace WorldPackets PingSubjectType Type = { }; uint32 PinFrameID = 0; Duration PingDuration; + float Health = 1.0f; // range 0-1 + float Mana = 1.0f; // range 0-1 + bool IsUnitFrameStatusTextPing = false; // prints health (and mana if healer) in chat Optional CreatureID; Optional SpellOverrideNameID; }; @@ -736,7 +740,7 @@ namespace WorldPackets class ReceivePingUnit final : public ServerPacket { public: - explicit ReceivePingUnit() : ServerPacket(SMSG_RECEIVE_PING_UNIT, 16 + 16 + 1 + 4) { } + explicit ReceivePingUnit() : ServerPacket(SMSG_RECEIVE_PING_UNIT, 16 + 16 + 1 + 4 + 4 + 4 + 4) { } WorldPacket const* Write() override; @@ -745,6 +749,9 @@ namespace WorldPackets PingSubjectType Type = { }; uint32 PinFrameID = 0; Duration PingDuration; + float Health = 1.0f; // range 0-1 + float Mana = 1.0f; // range 0-1 + bool IsUnitFrameStatusTextPing = false; // prints health (and mana if healer) in chat Optional CreatureID; Optional SpellOverrideNameID; }; @@ -781,6 +788,40 @@ namespace WorldPackets ObjectGuid Transport; }; + class SendPingCooldown final : public ClientPacket + { + public: + explicit SendPingCooldown(WorldPacket&& packet) : ClientPacket(CMSG_SEND_PING_COOLDOWN, std::move(packet)) { } + + void Read() override; + + ObjectGuid SenderGUID; + uint32 PinFrameID = 0; + uint32 SpellID = 0; + uint32 ItemID = 0; + WorldPackets::Duration Duration; + WorldPackets::Duration Remaining; + PingSubjectType Type = { }; + uint32 SpellCategoryID = 0; + }; + + class ReceivePingCooldown final : public ServerPacket + { + public: + explicit ReceivePingCooldown() : ServerPacket(SMSG_RECEIVE_PING_COOLDOWN, 16 + 4 + 4 + 4 + 4 + 4 + 1 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid SenderGUID; + uint32 PinFrameID = 0; + uint32 SpellID = 0; + uint32 ItemID = 0; + WorldPackets::Duration Duration; + WorldPackets::Duration Remaining; + PingSubjectType Type = { }; + uint32 SpellCategoryID = 0; + }; + class CancelPingPin final : public ServerPacket { public: diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index 8b57913c0b..4b4a380074 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -508,8 +508,8 @@ WorldPacket const* QueryItemTextResponse::Write() { _worldPacket << Bits<1>(Valid); _worldPacket.FlushBits(); - _worldPacket << Item; _worldPacket << Id; + _worldPacket << Item; return &_worldPacket; } @@ -566,8 +566,6 @@ ByteBuffer& operator<<(ByteBuffer& data, TreasurePickerBonus const& treasurePick data << Size(treasurePickerBonus.ItemPicks); data << Size(treasurePickerBonus.CurrencyPicks); data << uint64(treasurePickerBonus.Gold); - data << Bits<1>(treasurePickerBonus.Context); - data.FlushBits(); for (TreasurePickItem const& treasurePickerItem : treasurePickerBonus.ItemPicks) data << treasurePickerItem; @@ -575,7 +573,10 @@ ByteBuffer& operator<<(ByteBuffer& data, TreasurePickerBonus const& treasurePick for (TreasurePickCurrency const& treasurePickCurrency : treasurePickerBonus.CurrencyPicks) data << treasurePickCurrency; - return data; + data << Bits<1>(treasurePickerBonus.Context); + data.FlushBits(); + + return data; } ByteBuffer& operator<<(ByteBuffer& data, TreasurePickerPick const& treasurePickerPick) @@ -585,8 +586,6 @@ ByteBuffer& operator<<(ByteBuffer& data, TreasurePickerPick const& treasurePicke data << uint64(treasurePickerPick.Gold); data << Size(treasurePickerPick.Bonuses); data << int32(treasurePickerPick.Flags); - data << Bits<1>(treasurePickerPick.IsChoice); - data.FlushBits(); for (TreasurePickItem const& treasurePickItem : treasurePickerPick.ItemPicks) data << treasurePickItem; @@ -597,6 +596,9 @@ ByteBuffer& operator<<(ByteBuffer& data, TreasurePickerPick const& treasurePicke for (TreasurePickerBonus const& treasurePickerBonus : treasurePickerPick.Bonuses) data << treasurePickerBonus; + data << Bits<1>(treasurePickerPick.IsChoice); + data.FlushBits(); + return data; } diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index cfca85bfbf..547a7592c5 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -185,31 +185,6 @@ WorldPacket const* QueryQuestInfoResponse::Write() for (QuestCompleteDisplaySpell const& rewardDisplaySpell : Info.RewardDisplaySpell) _worldPacket << rewardDisplaySpell; - if (!Info.TreasurePickerID.empty()) - _worldPacket.append(Info.TreasurePickerID.data(), Info.TreasurePickerID.size()); - - if (!Info.NonDisplayableTreasurePickerIDs.empty()) - _worldPacket.append(Info.NonDisplayableTreasurePickerIDs.data(), Info.NonDisplayableTreasurePickerIDs.size()); - - if (!Info.RewardHouseRoomIDs.empty()) - _worldPacket.append(Info.RewardHouseRoomIDs.data(), Info.RewardHouseRoomIDs.size()); - - if (!Info.RewardHouseDecorIDs.empty()) - _worldPacket.append(Info.RewardHouseDecorIDs.data(), Info.RewardHouseDecorIDs.size()); - - _worldPacket << SizedString::BitsSize<9>(Info.LogTitle); - _worldPacket << SizedString::BitsSize<12>(Info.LogDescription); - _worldPacket << SizedString::BitsSize<12>(Info.QuestDescription); - _worldPacket << SizedString::BitsSize<9>(Info.AreaDescription); - _worldPacket << SizedString::BitsSize<10>(Info.PortraitGiverText); - _worldPacket << SizedString::BitsSize<8>(Info.PortraitGiverName); - _worldPacket << SizedString::BitsSize<10>(Info.PortraitTurnInText); - _worldPacket << SizedString::BitsSize<8>(Info.PortraitTurnInName); - _worldPacket << SizedString::BitsSize<11>(Info.QuestCompletionLog); - _worldPacket << Bits<1>(Info.ResetByScheduler); - _worldPacket << Bits<1>(Info.ReadyForTranslation); - _worldPacket.FlushBits(); - for (QuestInfoObjective const& questObjective : Info.Objectives) { _worldPacket << uint32(questObjective.ID); @@ -235,6 +210,37 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << SizedString::Data(questObjective.Description); } + if (!Info.TreasurePickerID.empty()) + _worldPacket.append(Info.TreasurePickerID.data(), Info.TreasurePickerID.size()); + + if (!Info.NonDisplayableTreasurePickerIDs.empty()) + _worldPacket.append(Info.NonDisplayableTreasurePickerIDs.data(), Info.NonDisplayableTreasurePickerIDs.size()); + + for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestDescription) + _worldPacket << conditionalQuestText; + + for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestCompletionLog) + _worldPacket << conditionalQuestText; + + if (!Info.RewardHouseRoomIDs.empty()) + _worldPacket.append(Info.RewardHouseRoomIDs.data(), Info.RewardHouseRoomIDs.size()); + + if (!Info.RewardHouseDecorIDs.empty()) + _worldPacket.append(Info.RewardHouseDecorIDs.data(), Info.RewardHouseDecorIDs.size()); + + _worldPacket << SizedString::BitsSize<9>(Info.LogTitle); + _worldPacket << SizedString::BitsSize<12>(Info.LogDescription); + _worldPacket << SizedString::BitsSize<12>(Info.QuestDescription); + _worldPacket << SizedString::BitsSize<9>(Info.AreaDescription); + _worldPacket << SizedString::BitsSize<10>(Info.PortraitGiverText); + _worldPacket << SizedString::BitsSize<8>(Info.PortraitGiverName); + _worldPacket << SizedString::BitsSize<10>(Info.PortraitTurnInText); + _worldPacket << SizedString::BitsSize<8>(Info.PortraitTurnInName); + _worldPacket << SizedString::BitsSize<11>(Info.QuestCompletionLog); + _worldPacket << Bits<1>(Info.ResetByScheduler); + _worldPacket << Bits<1>(Info.ReadyForTranslation); + _worldPacket.FlushBits(); + _worldPacket << SizedString::Data(Info.LogTitle); _worldPacket << SizedString::Data(Info.LogDescription); _worldPacket << SizedString::Data(Info.QuestDescription); @@ -244,12 +250,6 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << SizedString::Data(Info.PortraitTurnInText); _worldPacket << SizedString::Data(Info.PortraitTurnInName); _worldPacket << SizedString::Data(Info.QuestCompletionLog); - - for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestDescription) - _worldPacket << conditionalQuestText; - - for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestCompletionLog) - _worldPacket << conditionalQuestText; } return &_worldPacket; @@ -339,7 +339,13 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards) for (QuestRewardItem const& item : questRewards.Items) data << item; + for (QuestRewardCurrency const& currency : questRewards.Currencies) + data << currency; + data << int32(questRewards.ChoiceItemCount); + for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems) + data << choiceItem; + data << int32(questRewards.ItemCount); data << int32(questRewards.Money); data << int32(questRewards.XP); @@ -367,15 +373,9 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards) if (!questRewards.TreasurePickerID.empty()) data.append(questRewards.TreasurePickerID.data(), questRewards.TreasurePickerID.size()); - for (QuestRewardCurrency const& currency : questRewards.Currencies) - data << currency; - data << Bits<1>(questRewards.IsBoostSpell); data.FlushBits(); - for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems) - data << choiceItem; - return data; } @@ -414,6 +414,9 @@ WorldPacket const* QuestGiverOfferRewardMessage::Write() _worldPacket << int32(QuestGiverCreatureID); _worldPacket << Size(ConditionalRewardText); + for (ConditionalQuestText const& conditionalQuestText : ConditionalRewardText) + _worldPacket << conditionalQuestText; + _worldPacket << SizedString::BitsSize<9>(QuestTitle); _worldPacket << SizedString::BitsSize<12>(RewardText); _worldPacket << SizedString::BitsSize<10>(PortraitGiverText); @@ -422,9 +425,6 @@ WorldPacket const* QuestGiverOfferRewardMessage::Write() _worldPacket << SizedString::BitsSize<8>(PortraitTurnInName); _worldPacket.FlushBits(); - for (ConditionalQuestText const& conditionalQuestText : ConditionalRewardText) - _worldPacket << conditionalQuestText; - _worldPacket << SizedString::Data(QuestTitle); _worldPacket << SizedString::Data(RewardText); _worldPacket << SizedString::Data(PortraitGiverText); @@ -449,13 +449,12 @@ WorldPacket const* QuestGiverQuestComplete::Write() _worldPacket << int64(MoneyReward); _worldPacket << int32(SkillLineIDReward); _worldPacket << int32(NumSkillUpsReward); + _worldPacket << ItemReward; _worldPacket << Bits<1>(UseQuestReward); _worldPacket << Bits<1>(LaunchGossip); _worldPacket << Bits<1>(LaunchQuest); _worldPacket << Bits<1>(HideChatMessage); - _worldPacket << ItemReward; - return &_worldPacket; } @@ -484,6 +483,7 @@ WorldPacket const* QuestGiverQuestDetails::Write() _worldPacket.append(QuestFlags); _worldPacket << int32(SuggestedPartyMembers); _worldPacket << Size(LearnSpells); + _worldPacket << Rewards; // QuestRewards _worldPacket << Size(DescEmotes); _worldPacket << Size(Objectives); _worldPacket << int32(QuestStartItemID); @@ -509,6 +509,9 @@ WorldPacket const* QuestGiverQuestDetails::Write() _worldPacket << int32(obj.Amount); } + for (ConditionalQuestText const& conditionalQuestText : ConditionalDescriptionText) + _worldPacket << conditionalQuestText; + _worldPacket << SizedString::BitsSize<9>(QuestTitle); _worldPacket << SizedString::BitsSize<12>(DescriptionText); _worldPacket << SizedString::BitsSize<12>(LogDescription); @@ -524,7 +527,6 @@ WorldPacket const* QuestGiverQuestDetails::Write() _worldPacket << Bits<1>(DisplayPopup); _worldPacket.FlushBits(); - _worldPacket << Rewards; // QuestRewards _worldPacket << SizedString::Data(QuestTitle); _worldPacket << SizedString::Data(DescriptionText); _worldPacket << SizedString::Data(LogDescription); @@ -533,9 +535,6 @@ WorldPacket const* QuestGiverQuestDetails::Write() _worldPacket << SizedString::Data(PortraitTurnInText); _worldPacket << SizedString::Data(PortraitTurnInName); - for (ConditionalQuestText const& conditionalQuestText : ConditionalDescriptionText) - _worldPacket << conditionalQuestText; - return &_worldPacket; } @@ -574,13 +573,13 @@ WorldPacket const* QuestGiverRequestItems::Write() _worldPacket << int32(QuestGiverCreatureID); _worldPacket << Size(ConditionalCompletionText); + for (ConditionalQuestText const& conditionalQuestText : ConditionalCompletionText) + _worldPacket << conditionalQuestText; + _worldPacket << SizedString::BitsSize<9>(QuestTitle); _worldPacket << SizedString::BitsSize<12>(CompletionText); _worldPacket.FlushBits(); - for (ConditionalQuestText const& conditionalQuestText : ConditionalCompletionText) - _worldPacket << conditionalQuestText; - _worldPacket << SizedString::Data(QuestTitle); _worldPacket << SizedString::Data(CompletionText); @@ -618,12 +617,13 @@ WorldPacket const* QuestGiverQuestListMessage::Write() _worldPacket << uint32(GreetEmoteDelay); _worldPacket << uint32(GreetEmoteType); _worldPacket << Size(QuestDataText); - _worldPacket << SizedString::BitsSize<11>(Greeting); - _worldPacket.FlushBits(); for (NPC::ClientGossipText const& gossip : QuestDataText) _worldPacket << gossip; + _worldPacket << SizedString::BitsSize<11>(Greeting); + _worldPacket.FlushBits(); + _worldPacket << SizedString::Data(Greeting); return &_worldPacket; @@ -817,9 +817,6 @@ ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponse const& playerChoic data << OptionalInit(playerChoiceResponse.MawPower); data.FlushBits(); - if (playerChoiceResponse.Reward) - data << *playerChoiceResponse.Reward; - data << SizedString::Data(playerChoiceResponse.Answer); data << SizedString::Data(playerChoiceResponse.Header); data << SizedString::Data(playerChoiceResponse.SubHeader); @@ -830,6 +827,9 @@ ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponse const& playerChoic if (playerChoiceResponse.RewardQuestID) data << uint32(*playerChoiceResponse.RewardQuestID); + if (playerChoiceResponse.Reward) + data << *playerChoiceResponse.Reward; + if (playerChoiceResponse.MawPower) data << *playerChoiceResponse.MawPower; @@ -846,6 +846,10 @@ WorldPacket const* DisplayPlayerChoice::Write() _worldPacket << uint32(CloseUISoundKitID); _worldPacket << uint8(NumRerolls); _worldPacket << ExpireTime; + + for (PlayerChoiceResponse const& response : Responses) + _worldPacket << response; + _worldPacket << SizedString::BitsSize<8>(Question); _worldPacket << SizedString::BitsSize<8>(PendingChoiceText); _worldPacket << Bits<1>(InfiniteRange); @@ -854,11 +858,11 @@ WorldPacket const* DisplayPlayerChoice::Write() _worldPacket << Bits<1>(ShowChoicesAsList); _worldPacket << Bits<1>(HasPowerChoice); _worldPacket << Bits<1>(RequiresSelection); + _worldPacket << Bits<1>(ShowChoicesAsGrid); + _worldPacket << Bits<1>(HideAnswerArt); + _worldPacket << Bits<1>(ShowChoicesAsColumns); _worldPacket.FlushBits(); - for (PlayerChoiceResponse const& response : Responses) - _worldPacket << response; - _worldPacket << SizedString::Data(Question); _worldPacket << SizedString::Data(PendingChoiceText); diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index cf0dbb896a..606828ed05 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -803,6 +803,9 @@ namespace WorldPackets bool ShowChoicesAsList = false; bool HasPowerChoice = false; bool RequiresSelection = false; + bool ShowChoicesAsGrid = false; + bool HideAnswerArt = false; + bool ShowChoicesAsColumns = false; }; class ChoiceResponse final : public ClientPacket diff --git a/src/server/game/Server/Packets/ScenarioPackets.cpp b/src/server/game/Server/Packets/ScenarioPackets.cpp index 8c74808e5d..8aac40eb48 100644 --- a/src/server/game/Server/Packets/ScenarioPackets.cpp +++ b/src/server/game/Server/Packets/ScenarioPackets.cpp @@ -54,21 +54,21 @@ WorldPacket const* ScenarioState::Write() _worldPacket << Size(Spells); _worldPacket << PlayerGUID; - if (!PickedSteps.empty()) - _worldPacket.append(PickedSteps.data(), PickedSteps.size()); - - _worldPacket << Bits<1>(ScenarioComplete); - _worldPacket.FlushBits(); - for (Achievement::CriteriaProgress const& progress : CriteriaProgress) _worldPacket << progress; for (BonusObjectiveData const& bonusObjective : BonusObjectives) _worldPacket << bonusObjective; + if (!PickedSteps.empty()) + _worldPacket.append(PickedSteps.data(), PickedSteps.size()); + for (ScenarioSpellUpdate const& spell : Spells) _worldPacket << spell; + _worldPacket << Bits<1>(ScenarioComplete); + _worldPacket.FlushBits(); + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 0ff7108d6e..cc6d49347d 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -105,9 +105,6 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData) data << BitsSize<6>(auraData.EstimatedPoints); data << OptionalInit(auraData.ContentTuning); - if (auraData.ContentTuning) - data << *auraData.ContentTuning; - if (auraData.CastUnit) data << *auraData.CastUnit; @@ -129,6 +126,9 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData) if (!auraData.EstimatedPoints.empty()) data.append(auraData.EstimatedPoints.data(), auraData.EstimatedPoints.size()); + if (auraData.ContentTuning) + data << *auraData.ContentTuning; + return data; } @@ -148,11 +148,11 @@ WorldPacket const* AuraUpdate::Write() { _worldPacket << Bits<1>(UpdateAll); _worldPacket << BitsSize<9>(Auras); + _worldPacket << UnitGUID; + for (AuraInfo const& aura : Auras) _worldPacket << aura; - _worldPacket << UnitGUID; - return &_worldPacket; } @@ -203,6 +203,16 @@ ByteBuffer& operator>>(ByteBuffer& buffer, MissileTrajectoryRequest& trajectory) return buffer; } +ByteBuffer& operator>>(ByteBuffer& data, SpellWeight& weight) +{ + data.ResetBitPos(); + data >> Bits<2>(weight.Type); + data >> weight.ID; + data >> weight.Quantity; + + return data; +} + ByteBuffer& operator>>(ByteBuffer& data, SpellCraftingReagent& optionalReagent) { data >> optionalReagent.Slot; @@ -232,6 +242,7 @@ ByteBuffer& operator>>(ByteBuffer& buffer, SpellCastRequest& request) buffer >> request.Misc[2]; buffer >> request.SpellID; buffer >> request.Visual; + buffer >> request.Target; buffer >> request.MissileTrajectory; buffer >> request.CraftingNPC; buffer >> Size(request.ExtraCurrencyCosts); @@ -242,36 +253,29 @@ ByteBuffer& operator>>(ByteBuffer& buffer, SpellCastRequest& request) for (SpellExtraCurrencyCost& optionalCurrency : request.ExtraCurrencyCosts) buffer >> optionalCurrency; - buffer.ResetBitPos(); - buffer >> OptionalInit(request.ReceiveTime); - buffer >> OptionalInit(request.MoveUpdate); - buffer >> BitsSize<2>(request.Weight); - buffer >> OptionalInit(request.CraftingOrderID); - - buffer >> request.Target; - - if (request.ReceiveTime) - buffer >> *request.ReceiveTime; - - if (request.CraftingOrderID) - buffer >> *request.CraftingOrderID; - for (SpellCraftingReagent& optionalReagent : request.CraftingReagents) buffer >> optionalReagent; for (SpellCraftingReagent& optionalReagent : request.RemovedReagents) buffer >> optionalReagent; + buffer.ResetBitPos(); + buffer >> OptionalInit(request.ReceiveTime); + buffer >> OptionalInit(request.MoveUpdate); + buffer >> BitsSize<2>(request.Weight); + buffer >> OptionalInit(request.CraftingOrderID); + + if (request.ReceiveTime) + buffer >> *request.ReceiveTime; + if (request.MoveUpdate) buffer >> *request.MoveUpdate; for (SpellWeight& weight : request.Weight) - { - buffer.ResetBitPos(); - buffer >> Bits<2>(weight.Type); - buffer >> weight.ID; - buffer >> weight.Quantity; - } + buffer >> weight; + + if (request.CraftingOrderID) + buffer >> *request.CraftingOrderID; return buffer; } @@ -413,6 +417,7 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData) data << uint32(spellCastData.CastFlagsEx); data << uint32(spellCastData.CastFlagsEx2); data << uint32(spellCastData.CastTime); + data << spellCastData.Target; data << spellCastData.MissileTrajectory; data << int32(spellCastData.AmmoDisplayID); data << uint8(spellCastData.DestLocSpellCastIndex); @@ -427,8 +432,6 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData) data << BitsSize<16>(spellCastData.TargetPoints); data.FlushBits(); - data << spellCastData.Target; - for (ObjectGuid const& hitTarget : spellCastData.HitTargets) data << hitTarget; @@ -498,13 +501,14 @@ WorldPacket const* LearnedSpells::Write() _worldPacket << Size(ClientLearnedSpellData); _worldPacket << uint32(SpecializationID); _worldPacket << int32(MinActionBarSlot); - _worldPacket << Bits<1>(SuppressMessaging); - _worldPacket << Bits<1>(TraitGrantedByAura); - _worldPacket.FlushBits(); for (LearnedSpellInfo const& spell : ClientLearnedSpellData) _worldPacket << spell; + _worldPacket << Bits<1>(SuppressMessaging); + _worldPacket << Bits<1>(TraitGrantedByAura); + _worldPacket.FlushBits(); + return &_worldPacket; } @@ -852,6 +856,7 @@ WorldPacket const* SpellVisualLoadScreen::Write() _worldPacket << int32(SpellVisualKitID); _worldPacket << Duration; _worldPacket << int32(Delay); + _worldPacket << Bits<1>(Unknown_1210); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index e53256033f..40946e69b5 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -810,6 +810,7 @@ namespace WorldPackets int32 SpellVisualKitID = 0; WorldPackets::Duration Duration; int32 Delay = 0; + bool Unknown_1210 = false; }; class CancelCast final : public ClientPacket diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index f816038dbc..31c23f2818 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -135,11 +135,14 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << uint32(CommercePricePollTimeSeconds); _worldPacket << uint32(KioskSessionDurationMinutes); + _worldPacket << QuickJoinConfig; _worldPacket << int64(RedeemForBalanceAmount); _worldPacket << uint32(ClubsPresenceDelay); _worldPacket << uint32(ClubPresenceUnsubscribeDelay); + _worldPacket << Squelch; + _worldPacket << int32(ContentSetID); _worldPacket << Size(DisabledGameModes); _worldPacket << Size(GameRules); @@ -225,21 +228,18 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(GlobalUserGeneratedContentMuteEnabled); _worldPacket << Bits<1>(AccountUserGeneratedContentIsRisky); + _worldPacket << Bits<1>(FriendsDisabled); _worldPacket.FlushBits(); - _worldPacket << QuickJoinConfig; + if (EuropaTicketSystemStatus) + _worldPacket << *EuropaTicketSystemStatus; if (SessionAlert) _worldPacket << *SessionAlert; _worldPacket << SizedString::Data(Unknown1027); - _worldPacket << Squelch; - - if (EuropaTicketSystemStatus) - _worldPacket << *EuropaTicketSystemStatus; - return &_worldPacket; } @@ -287,9 +287,6 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket.FlushBits(); - if (EuropaTicketSystemStatus) - _worldPacket << *EuropaTicketSystemStatus; - _worldPacket << uint32(CommercePricePollTimeSeconds); _worldPacket << uint32(KioskSessionDurationMinutes); _worldPacket << int64(RedeemForBalanceAmount); @@ -314,6 +311,9 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket << int32(MostRecentTimeEventID); _worldPacket << uint32(EventRealmQueues); + if (EuropaTicketSystemStatus) + _worldPacket << *EuropaTicketSystemStatus; + if (LaunchDurationETA) _worldPacket << int32(*LaunchDurationETA); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 97ee541bc8..9786c07925 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -185,6 +185,7 @@ namespace WorldPackets bool AddonProfilingEnabled = false; bool GlobalUserGeneratedContentMuteEnabled = false; bool AccountUserGeneratedContentIsRisky = false; + bool FriendsDisabled = false; SocialQueueConfig QuickJoinConfig; SquelchInfo Squelch; diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp index b3d3bbf4fa..8a3effd1df 100644 --- a/src/server/game/Server/Packets/TalentPackets.cpp +++ b/src/server/game/Server/Packets/TalentPackets.cpp @@ -61,9 +61,6 @@ ByteBuffer& operator<<(ByteBuffer& data, ClassicTalentGroupInfo const& talentGro if (!talentGroupInfo.GlyphIDs.empty()) data.append(talentGroupInfo.GlyphIDs.data(), talentGroupInfo.GlyphIDs.size()); - data.WriteBit(talentGroupInfo.Unused1125); - data.FlushBits(); - return data; } diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h index 8a502e60dd..2aa9e2e50a 100644 --- a/src/server/game/Server/Packets/TalentPackets.h +++ b/src/server/game/Server/Packets/TalentPackets.h @@ -62,7 +62,6 @@ namespace WorldPackets std::vector GlyphIDs; int8 Role = 0; int32 PrimarySpecialization = 0; - bool Unused1125 = false; }; struct ClassicTalentInfoUpdate diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 2c6b689900..694237b6be 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -266,14 +266,28 @@ ByteBuffer& operator>>(ByteBuffer& data, SupportTicketHouseInfo& houseInfo) return data; } +ByteBuffer& operator>>(ByteBuffer& data, SupportTicketHousingBlueprint& housingBlueprint) +{ + data.ResetBitPos(); + + data >> SizedCString::BitsSize<24>(housingBlueprint.Id); + data >> SizedCString::BitsSize<24>(housingBlueprint.ShareCode); + + data >> SizedCString::Data(housingBlueprint.Id); + data >> SizedCString::Data(housingBlueprint.ShareCode); + + return data; +} + void SupportTicketSubmitComplaint::Read() { _worldPacket >> Header; + _worldPacket >> ChatLog; + _worldPacket >> HorusChatLog; _worldPacket >> TargetCharacterGUID; _worldPacket >> ReportType; _worldPacket >> MajorCategory; _worldPacket >> MinorCategoryFlags; - _worldPacket >> ChatLog; _worldPacket >> SizedString::BitsSize<10>(Note); _worldPacket >> OptionalInit(MailInfo); @@ -286,14 +300,7 @@ void SupportTicketSubmitComplaint::Read() _worldPacket >> OptionalInit(ClubFinderInfo); _worldPacket >> OptionalInit(ArenaTeamInfo); _worldPacket >> OptionalInit(HouseInfo); - - if (VoiceChatInfo) - { - _worldPacket.ResetBitPos(); - _worldPacket >> Bits<1>(VoiceChatInfo->TargetIsCurrentlyInVoiceChatWithPlayer); - } - - _worldPacket >> HorusChatLog; + _worldPacket >> OptionalInit(HousingBlueprint); _worldPacket >> SizedString::Data(Note); @@ -323,6 +330,15 @@ void SupportTicketSubmitComplaint::Read() if (HouseInfo) _worldPacket >> *HouseInfo; + + if (HousingBlueprint) + _worldPacket >> *HousingBlueprint; + + if (VoiceChatInfo) + { + _worldPacket.ResetBitPos(); + _worldPacket >> Bits<1>(VoiceChatInfo->TargetIsCurrentlyInVoiceChatWithPlayer); + } } ByteBuffer& operator>>(ByteBuffer& data, Complaint::ComplaintOffender& complaintOffender) diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index 0f6f854d9f..5873d97054 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -220,6 +220,12 @@ namespace WorldPackets uint8 PlotID = 0; }; + struct SupportTicketHousingBlueprint + { + std::string_view Id; + std::string_view ShareCode; + }; + class SupportTicketSubmitComplaint final : public ClientPacket { public: @@ -245,6 +251,7 @@ namespace WorldPackets Optional ClubFinderInfo; Optional ArenaTeamInfo; Optional HouseInfo; + Optional HousingBlueprint; }; class Complaint final : public ClientPacket diff --git a/src/server/game/Server/Packets/TradePackets.cpp b/src/server/game/Server/Packets/TradePackets.cpp index 73e4aba869..240eacbed7 100644 --- a/src/server/game/Server/Packets/TradePackets.cpp +++ b/src/server/game/Server/Packets/TradePackets.cpp @@ -106,9 +106,9 @@ ByteBuffer& operator<<(ByteBuffer& buffer, UnwrappedTradeItem const& unwrappedTr ByteBuffer& operator<<(ByteBuffer& buffer, TradeItem const& tradeItem) { buffer << uint8(tradeItem.Slot); + buffer << tradeItem.Item; buffer << uint32(tradeItem.StackCount); buffer << tradeItem.GiftCreator; - buffer << tradeItem.Item; buffer << OptionalInit(tradeItem.Unwrapped); buffer.FlushBits(); if (tradeItem.Unwrapped) diff --git a/src/server/game/Server/Packets/TraitPacketsCommon.cpp b/src/server/game/Server/Packets/TraitPacketsCommon.cpp index 66e3037661..e672b95697 100644 --- a/src/server/game/Server/Packets/TraitPacketsCommon.cpp +++ b/src/server/game/Server/Packets/TraitPacketsCommon.cpp @@ -151,11 +151,12 @@ ByteBuffer& operator>>(ByteBuffer& data, TraitConfig& traitConfig) for (TraitEntry& traitEntry : traitConfig.Entries) data >> traitEntry; - data >> SizedString::BitsSize<9>(traitConfig.Name); - for (TraitSubTreeCache& traitSubTreeCache : traitConfig.SubTrees) data >> traitSubTreeCache; + data.ResetBitPos(); + data >> SizedString::BitsSize<9>(traitConfig.Name); + data >> SizedString::Data(traitConfig.Name); return data; @@ -188,11 +189,10 @@ ByteBuffer& operator<<(ByteBuffer& data, TraitConfig const& traitConfig) for (TraitEntry const& traitEntry : traitConfig.Entries) data << traitEntry; - data << SizedString::BitsSize<9>(traitConfig.Name); - for (TraitSubTreeCache const& traitSubTreeCache : traitConfig.SubTrees) data << traitSubTreeCache; + data << SizedString::BitsSize<9>(traitConfig.Name); data.FlushBits(); data << SizedString::Data(static_cast(traitConfig.Name)); diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp index abbab82a18..60a390dc0a 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp +++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp @@ -70,8 +70,8 @@ ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitDataInfo const& transmogO void TransmogOutfitNew::Read() { _worldPacket >> Npc; - _worldPacket >> As(Source); _worldPacket >> Info; + _worldPacket >> As(Source); } WorldPacket const* TransmogOutfitNewEntryAdded::Write() diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp index c9f4da0712..e66c27512e 100644 --- a/src/server/game/Server/Packets/WhoPackets.cpp +++ b/src/server/game/Server/Packets/WhoPackets.cpp @@ -71,14 +71,14 @@ ByteBuffer& operator>>(ByteBuffer& data, WhoRequest& request) data >> Bits<1>(request.ExactName); data >> OptionalInit(request.ServerInfo); - for (size_t i = 0; i < request.Words.size(); ++i) - data >> request.Words[i]; - data >> SizedString::Data(request.Name); data >> SizedString::Data(request.VirtualRealmName); data >> SizedString::Data(request.Guild); data >> SizedString::Data(request.GuildVirtualRealmName); + for (size_t i = 0; i < request.Words.size(); ++i) + data >> request.Words[i]; + if (request.ServerInfo) data >> *request.ServerInfo; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 74912c9472..1ecd03b0a5 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -440,6 +440,11 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_DF_SET_ROLES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgSetRolesOpcode); DEFINE_HANDLER(CMSG_DF_TELEPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgTeleportOpcode); DEFINE_HANDLER(CMSG_DISCARDED_TIME_SYNC_ACKS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_DISCORD_GUILD_LINK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_DISCORD_GUILD_UNLINK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_DISCORD_REFRESH_AUTH, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_DISCORD_SET_DISPLAY_NAME_TYPE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_DISCORD_SET_GUILD_SETTING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_DISMISS_CRITTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDismissCritter); DEFINE_HANDLER(CMSG_DO_COUNTDOWN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_DO_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -566,6 +571,12 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_HOUSE_EXTERIOR_LOCK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSE_INTERIOR_LEAVE_HOUSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_BLUEPRINT_DELETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_BLUEPRINT_EXPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_BLUEPRINT_IMPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_BLUEPRINT_RENAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_BLUEPRINT_REQUEST_COLLECTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_BLUEPRINT_REQUEST_CONTENTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_DELETE_FROM_STORAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_LOCK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_MOVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -575,6 +586,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_HOUSING_DECOR_REQUEST_STORAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_SET_DYE_SLOTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_SET_EDIT_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_DECOR_SET_PET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_FIXTURE_CREATE_FIXTURE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_FIXTURE_DELETE_FIXTURE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_FIXTURE_SET_CORE_FIXTURE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -586,6 +598,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_HOUSING_HOUSE_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_PHOTO_SHARING_CLEAR_AUTHORIZATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_PHOTO_SHARING_COMPLETE_AUTHORIZATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_RESET_HOUSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_RESET_KIOSK_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_ROOM_ADD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_ROOM_APPLY_COMPONENT_MATERIALS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -604,6 +617,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_HOUSING_SVCS_GET_PLAYER_HOUSES_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_SVCS_GET_POTENTIAL_HOUSE_OWNERS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_SVCS_GUILD_CREATE_NEIGHBORHOOD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_HOUSING_SVCS_HOUSE_FINDER_IGNORE_NEIGHBORHOOD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_BNET_ACCOUNT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_PLAYER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -636,6 +650,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_LEAVE_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LFG_LIST_APPLY_TO_GROUP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LFG_LIST_CANCEL_APPLICATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_LFG_LIST_CONFIRM_CENSORED_ACTIVE_ENTRY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LFG_LIST_DECLINE_APPLICANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LFG_LIST_GET_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LFG_LIST_INVITE_APPLICANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -1001,6 +1016,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_SEND_CHARACTER_CLUB_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SEND_CONTACT_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleContactListOpcode); DEFINE_HANDLER(CMSG_SEND_MAIL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendMail); + DEFINE_HANDLER(CMSG_SEND_PING_COOLDOWN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendPingCooldown); DEFINE_HANDLER(CMSG_SEND_PING_UNIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendPingUnit); DEFINE_HANDLER(CMSG_SEND_PING_WORLD_POINT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendPingWorldPoint); DEFINE_HANDLER(CMSG_SEND_TEXT_EMOTE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTextEmoteOpcode); @@ -1399,6 +1415,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_IGNORED_ACCOUNT_MUTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_IS_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_LAIR_DIFFICULTY_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_NOT_IN_GUILD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_NOT_IN_PARTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_AMBIGUOUS, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1732,6 +1749,12 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSE_EXTERIOR_LOCK_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_BLUEPRINT_CHECK_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_BLUEPRINT_DELETE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_BLUEPRINT_EXPORT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_BLUEPRINT_GET_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_BLUEPRINT_IMPORT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_BLUEPRINT_RENAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_DECOR_ADD_TO_HOUSE_CHEST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_DECOR_DELETE_FROM_STORAGE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_DECOR_DRAW_SERVER_LIGHTING_DEBUG_SPHERES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1742,7 +1765,6 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_DECOR_REQUEST_STORAGE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_DECOR_SET_EDIT_MODE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_DECOR_SYSTEM_SET_DYE_SLOTS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_EXPORT_HOUSE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_FIRST_TIME_DECOR_ACQUISITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_FIXTURE_CREATE_BASIC_HOUSE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_FIXTURE_CREATE_FIXTURE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1758,6 +1780,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_CLEARED_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_REDEEM_DEFERRED_DECOR_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_RESET_HOUSE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_RESET_KIOSK_MODE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_ROOM_ADD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_ROOM_APPLY_COMPONENT_MATERIALS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1785,6 +1808,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_GUILD_REMOVE_HOUSE_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_GUILD_RENAME_NEIGHBORHOOD_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_HOUSE_FINDER_FORCE_REFRESH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_IGNORE_NEIGHBORHOOD_INVITE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_NEIGHBORHOOD_OWNERSHIP_TRANSFERRED_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_NEIGHBORHOOD_UPDATE_NAME_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1870,6 +1894,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_APPLICANT_LIST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_CENSORED_ACTIVE_ENTRY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_JOIN_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_SEARCH_RESULTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -2281,6 +2306,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_READ_ITEM_RESULT_OK, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REATTACH_RESURRECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECEIVE_PING_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECEIVE_PING_UNIT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECEIVE_PING_WORLD_POINT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECENT_ALLY_DATA_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -2530,10 +2556,10 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICE_LOGIN_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_ITEM_SWAP_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_CONTENTS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_TRANSFER_CHANGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_TRANSFER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_CONTENTS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_TRANSFER_CHANGES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_TRANSFER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_FINISH, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WALK_IN_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 1d1b108c4c..cb8e4240f6 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -36,1013 +36,1029 @@ constexpr uint32 UNKNOWN_OPCODE = 0xBADD; // special marker value for uninitia enum OpcodeClient : uint32 { - CMSG_ABANDON_NPE_RESPONSE = 0x3A02A0, - CMSG_ACCEPT_GUILD_INVITE = 0x400029, - CMSG_ACCEPT_SOCIAL_CONTRACT = 0x400177, - CMSG_ACCEPT_TRADE = 0x3A0004, - CMSG_ACCEPT_WARGAME_INVITE = 0x40000C, - CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3A02E3, - CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3A02E4, - CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x400163, - CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x4000C1, - CMSG_ACTIVATE_SOULBIND = 0x3A028F, - CMSG_ACTIVATE_TAXI = 0x3B003F, - CMSG_ADDON_LIST = 0x400004, - CMSG_ADD_ACCOUNT_COSMETIC = 0x3A0175, - CMSG_ADD_BATTLENET_FRIEND = 0x400086, - CMSG_ADD_FRIEND = 0x400100, - CMSG_ADD_IGNORE = 0x400104, - CMSG_ADD_TOY = 0x3A0174, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3A00B7, - CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x3A0292, - CMSG_ADVENTURE_MAP_START_QUEST = 0x3A0232, - CMSG_ALTER_APPEARANCE = 0x3B008E, - CMSG_AREA_SPIRIT_HEALER_QUERY = 0x3B0044, - CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x3B0045, - CMSG_AREA_TRIGGER = 0x3A0089, - CMSG_ARTIFACT_ADD_POWER = 0x3A005C, - CMSG_ARTIFACT_SET_APPEARANCE = 0x3A005E, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3A00C3, - CMSG_ATTACK_STOP = 0x3A0121, - CMSG_ATTACK_SWING = 0x3A0120, - CMSG_AUCTIONABLE_TOKEN_SELL = 0x400116, - CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x400117, - CMSG_AUCTION_BROWSE_QUERY = 0x3B0062, - CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x3B006A, - CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x3B0069, - CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x3B0068, - CMSG_AUCTION_HELLO_REQUEST = 0x3B005D, - CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x3B0066, - CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x3B0067, - CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x3B0063, - CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x3B0064, - CMSG_AUCTION_LIST_OWNED_ITEMS = 0x3B0065, - CMSG_AUCTION_PLACE_BID = 0x3B0061, - CMSG_AUCTION_REMOVE_ITEM = 0x3B005F, - CMSG_AUCTION_REPLICATE_ITEMS = 0x3B0060, - CMSG_AUCTION_SELL_COMMODITY = 0x3B006B, - CMSG_AUCTION_SELL_ITEM = 0x3B005E, - CMSG_AUCTION_SET_FAVORITE_ITEM = 0x400164, - CMSG_AUTH_CONTINUED_SESSION = 0x410003, - CMSG_AUTH_SESSION = 0x410001, - CMSG_AUTOBANK_ITEM = 0x3D0003, - CMSG_AUTOSTORE_BANK_ITEM = 0x3D0002, - CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3A02ED, - CMSG_AUTO_DEPOSIT_CHARACTER_BANK = 0x3A02F7, - CMSG_AUTO_EQUIP_ITEM = 0x3D0004, - CMSG_AUTO_EQUIP_ITEM_SLOT = 0x3D0009, - CMSG_AUTO_GUILD_BANK_ITEM = 0x3B0049, - CMSG_AUTO_STORE_BAG_ITEM = 0x3D0005, - CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x3B0052, - CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3A025E, - CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3A023E, - CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3A0260, - CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3A025F, - CMSG_BANKER_ACTIVATE = 0x3B0047, - CMSG_BATTLEFIELD_LEAVE = 0x3A001F, - CMSG_BATTLEFIELD_LIST = 0x3A002A, - CMSG_BATTLEFIELD_PORT = 0x3B00C5, - CMSG_BATTLEMASTER_HELLO = 0x3A0193, - CMSG_BATTLEMASTER_JOIN = 0x3B00BB, - CMSG_BATTLEMASTER_JOIN_ARENA = 0x3B00BC, - CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3B00C2, - CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3B00BE, - CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3B00BD, - CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3B00BF, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x400103, - CMSG_BATTLENET_REQUEST = 0x400124, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x4000FC, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x400141, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x4000FB, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x4000F2, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x400167, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x4000E9, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x4000EA, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x40013A, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x400135, - CMSG_BATTLE_PAY_START_PURCHASE = 0x4000FA, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x400122, - CMSG_BATTLE_PET_CLEAR_FANFARE = 0x290002, - CMSG_BATTLE_PET_DELETE_PET = 0x40004F, - CMSG_BATTLE_PET_MODIFY_NAME = 0x400052, - CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x40004E, - CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x40004D, - CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x400057, - CMSG_BATTLE_PET_SET_FLAGS = 0x40005A, - CMSG_BATTLE_PET_SUMMON = 0x400053, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x3A0093, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x3A0092, - CMSG_BEGIN_TRADE = 0x3A0001, - CMSG_BINDER_ACTIVATE = 0x3B0046, - CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3B00CD, - CMSG_BLACK_MARKET_OPEN = 0x3B00CB, - CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3B00CC, - CMSG_BLEEP_PONG = 0x4001A0, - CMSG_BONUS_ROLL = 0x3A0261, - CMSG_BUG_REPORT = 0x4000B1, - CMSG_BULK_PURCHASE = 0x290032, - CMSG_BULK_REFUND = 0x290033, - CMSG_BUSY_TRADE = 0x3A0002, - CMSG_BUY_ACCOUNT_BANK_TAB = 0x3B0126, - CMSG_BUY_BACK_ITEM = 0x3B0038, - CMSG_BUY_ITEM = 0x3B0037, - CMSG_CAGE_BATTLE_PET = 0x3A00A6, - CMSG_CALENDAR_ADD_EVENT = 0x4000A9, - CMSG_CALENDAR_COMMUNITY_INVITE = 0x40009D, - CMSG_CALENDAR_COMPLAIN = 0x4000A5, - CMSG_CALENDAR_COPY_EVENT = 0x4000A4, - CMSG_CALENDAR_EVENT_SIGN_UP = 0x4000A7, - CMSG_CALENDAR_GET = 0x40009B, - CMSG_CALENDAR_GET_EVENT = 0x40009C, - CMSG_CALENDAR_GET_NUM_PENDING = 0x4000A6, - CMSG_CALENDAR_INVITE = 0x40009E, - CMSG_CALENDAR_MODERATOR_STATUS = 0x4000A2, - CMSG_CALENDAR_REMOVE_EVENT = 0x4000A3, - CMSG_CALENDAR_REMOVE_INVITE = 0x40009F, - CMSG_CALENDAR_RSVP = 0x4000A0, - CMSG_CALENDAR_STATUS = 0x4000A1, - CMSG_CALENDAR_UPDATE_EVENT = 0x4000AA, - CMSG_CANCEL_AURA = 0x3A0060, - CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x3B0080, - CMSG_CANCEL_CAST = 0x3A017B, - CMSG_CANCEL_CHANNELLING = 0x3A013C, - CMSG_CANCEL_GROWTH_AURA = 0x3A0144, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3A00D0, - CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x3A005F, - CMSG_CANCEL_MOUNT_AURA = 0x3A0157, - CMSG_CANCEL_QUEUED_SPELL = 0x3A002B, - CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3B008B, - CMSG_CANCEL_TRADE = 0x3A0006, - CMSG_CAN_DUEL = 0x40008E, - CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x400134, - CMSG_CAST_SPELL = 0x3A0178, - CMSG_CATALOG_SHOP_LICENSE_GAME_DATA_REQUEST = 0x4000FD, - CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x2C0002, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x3A0217, - CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3A0218, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3A01F8, - CMSG_CHANGE_REALM_TICKET = 0x400129, - CMSG_CHANGE_SUB_GROUP = 0x400078, - CMSG_CHARACTER_CHECK_UPGRADE = 0x4000F5, - CMSG_CHARACTER_RENAME_REQUEST = 0x4000F0, - CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x4000F3, - CMSG_CHARACTER_UPGRADE_START = 0x4000F4, - CMSG_CHAR_CUSTOMIZE = 0x4000B9, - CMSG_CHAR_DELETE = 0x4000CB, - CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x4000BF, - CMSG_CHAT_ADDON_MESSAGE = 0x2B002A, - CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2B002B, - CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x2B0032, - CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x2B001F, - CMSG_CHAT_CHANNEL_BAN = 0x2B001D, - CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x2B0022, - CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x2B0012, - CMSG_CHAT_CHANNEL_INVITE = 0x2B001B, - CMSG_CHAT_CHANNEL_KICK = 0x2B001C, - CMSG_CHAT_CHANNEL_LIST = 0x2B0011, - CMSG_CHAT_CHANNEL_MODERATE = 0x2B0016, - CMSG_CHAT_CHANNEL_MODERATOR = 0x2B0017, - CMSG_CHAT_CHANNEL_OWNER = 0x2B0015, - CMSG_CHAT_CHANNEL_PASSWORD = 0x2B0013, - CMSG_CHAT_CHANNEL_SET_OWNER = 0x2B0014, - CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x2B0020, - CMSG_CHAT_CHANNEL_UNBAN = 0x2B001E, - CMSG_CHAT_CHANNEL_UNMODERATOR = 0x2B0018, - CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x2B0021, - CMSG_CHAT_DROP_CAUTIONARY_CHAT_MESSAGE = 0x2B000A, - CMSG_CHAT_JOIN_CHANNEL = 0x2B0000, - CMSG_CHAT_LEAVE_CHANNEL = 0x2B0001, - CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT = 0x2B0031, - CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY = 0x2B0030, - CMSG_CHAT_MESSAGE_AFK = 0x2B000F, - CMSG_CHAT_MESSAGE_CHANNEL = 0x2B0007, - CMSG_CHAT_MESSAGE_DND = 0x2B0010, - CMSG_CHAT_MESSAGE_EMOTE = 0x2B0024, - CMSG_CHAT_MESSAGE_GUILD = 0x2B000D, - CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x2B0028, - CMSG_CHAT_MESSAGE_OFFICER = 0x2B000E, - CMSG_CHAT_MESSAGE_PARTY = 0x2B0026, - CMSG_CHAT_MESSAGE_RAID = 0x2B0027, - CMSG_CHAT_MESSAGE_RAID_WARNING = 0x2B0029, - CMSG_CHAT_MESSAGE_SAY = 0x2B0023, - CMSG_CHAT_MESSAGE_WHISPER = 0x2B0008, - CMSG_CHAT_MESSAGE_YELL = 0x2B0025, - CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x2B0005, - CMSG_CHAT_REPORT_FILTERED = 0x2B0004, - CMSG_CHAT_REPORT_IGNORED = 0x2B0003, - CMSG_CHAT_SEND_CAUTIONARY_CHANNEL_MESSAGE = 0x2B000B, - CMSG_CHAT_SEND_CAUTIONARY_CHAT_MESSAGE = 0x2B0009, - CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x2B0006, - CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x400071, - CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3A0112, - CMSG_CHOICE_RESPONSE = 0x3A0180, - CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x3A028E, - CMSG_CLAIM_WEEKLY_REWARD = 0x3A026B, - CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3A02C8, - CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3A00C7, - CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3A02CA, - CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3A02C7, - CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3A02C6, - CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3A02CB, - CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3A00C6, - CMSG_CLEAR_NEW_APPEARANCE = 0x290005, - CMSG_CLEAR_RAID_MARKER = 0x3A0058, - CMSG_CLEAR_TRADE_ITEM = 0x3A0008, - CMSG_CLIENT_PORT_GRAVEYARD = 0x3B00C7, - CMSG_CLOSE_INTERACTION = 0x3B0026, - CMSG_CLOSE_QUEST_CHOICE = 0x3A0181, - CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x3A0296, - CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3A02CC, - CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x40014C, - CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x40014A, - CMSG_CLUB_FINDER_POST = 0x400147, - CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x40014E, - CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x400148, - CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x400149, - CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x40014D, - CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x40014F, - CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x40014B, - CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x40016A, - CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x400126, - CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x40005D, - CMSG_COMMENTATOR_ENABLE = 0x40001C, - CMSG_COMMENTATOR_ENTER_INSTANCE = 0x400020, - CMSG_COMMENTATOR_EXIT_INSTANCE = 0x400021, - CMSG_COMMENTATOR_GET_MAP_INFO = 0x40001D, - CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x40001F, - CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x40001E, - CMSG_COMMENTATOR_SPECTATE = 0x400168, - CMSG_COMMENTATOR_START_WARGAME = 0x40001B, - CMSG_COMMERCE_TOKEN_GET_COUNT = 0x400114, - CMSG_COMMERCE_TOKEN_GET_LOG = 0x40011E, - CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x400115, - CMSG_COMPLAINT = 0x400098, - CMSG_COMPLETE_CINEMATIC = 0x3B00E5, - CMSG_COMPLETE_MOVIE = 0x3B0076, - CMSG_CONFIRM_ARTIFACT_RESPEC = 0x3A005D, - CMSG_CONFIRM_PROFESSION_RESPEC = 0x3A00CA, - CMSG_CONFIRM_RESPEC_WIPE = 0x3A00C9, - CMSG_CONNECT_TO_FAILED = 0x400000, - CMSG_CONSUMABLE_TOKEN_BUY = 0x400119, - CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x40011A, - CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x400118, - CMSG_CONSUMABLE_TOKEN_REDEEM = 0x40011C, - CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x40011D, - CMSG_CONTENT_TRACKING_START_TRACKING = 0x3A02DC, - CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3A02DD, - CMSG_CONTRIBUTION_CONTRIBUTE = 0x3B00FD, - CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3B00FE, - CMSG_CONVERSATION_CINEMATIC_READY = 0x3B00E7, - CMSG_CONVERSATION_LINE_STARTED = 0x3B00E6, - CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3A02EC, - CMSG_CONVERT_RAID = 0x40007A, - CMSG_CONVERT_TIMERUNNING_CHARACTER = 0x40018D, - CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3B0111, - CMSG_CRAFTING_ORDER_CANCEL = 0x3B011E, - CMSG_CRAFTING_ORDER_CLAIM = 0x3B011B, - CMSG_CRAFTING_ORDER_CREATE = 0x3B0117, - CMSG_CRAFTING_ORDER_FULFILL = 0x3B011D, - CMSG_CRAFTING_ORDER_GET_NPC_REWARD_INFO = 0x3B011A, - CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3B0119, - CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3B0118, - CMSG_CRAFTING_ORDER_REJECT = 0x3B011F, - CMSG_CRAFTING_ORDER_RELEASE = 0x3B011C, - CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x3B0120, - CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x3B0121, - CMSG_CREATE_CHARACTER = 0x400070, - CMSG_CREATE_SHIPMENT = 0x3A01E1, - CMSG_DB_QUERY_BULK = 0x400010, - CMSG_DECLINE_GUILD_INVITES = 0x3B00B8, - CMSG_DECLINE_NEIGHBORHOOD_INVITES = 0x3B0132, - CMSG_DECLINE_PETITION = 0x3B00D4, - CMSG_DELETE_EQUIPMENT_SET = 0x3B00A4, - CMSG_DELVE_TELEPORT_OUT = 0x3B012E, - CMSG_DEL_FRIEND = 0x400101, - CMSG_DEL_IGNORE = 0x400105, - CMSG_DESTROY_ITEM = 0x3A016E, - CMSG_DF_BOOT_PLAYER_VOTE = 0x400044, - CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x400036, - CMSG_DF_GET_JOIN_STATUS = 0x400042, - CMSG_DF_GET_SYSTEM_INFO = 0x400041, - CMSG_DF_JOIN = 0x400037, - CMSG_DF_LEAVE = 0x400040, - CMSG_DF_PROPOSAL_RESPONSE = 0x400035, - CMSG_DF_READY_CHECK_RESPONSE = 0x400048, - CMSG_DF_SET_ROLES = 0x400043, - CMSG_DF_TELEPORT = 0x400045, - CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3E0060, - CMSG_DISMISS_CRITTER = 0x3B0092, - CMSG_DO_COUNTDOWN = 0x400146, - CMSG_DO_MASTER_LOOT_ROLL = 0x3A00CF, - CMSG_DO_READY_CHECK = 0x40005E, - CMSG_DUEL_RESPONSE = 0x3B007B, - CMSG_EJECT_PASSENGER = 0x3A0107, - CMSG_EMOTE = 0x3B00E1, - CMSG_ENABLE_NAGLE = 0x410009, - CMSG_ENABLE_TAXI_NODE = 0x3B003D, - CMSG_ENCOUNTER_JOURNAL_START_ARATHI_RPE = 0x3A0307, - CMSG_ENGINE_SURVEY = 0x400113, - CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x410005, - CMSG_ENUM_CHARACTERS = 0x400014, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x40010D, - CMSG_EXPIRE_BLEEP_TOKENS = 0x4001A3, - CMSG_FAR_SIGHT = 0x3B0081, - CMSG_FETCH_BLEEP_PROXIES = 0x4001A1, - CMSG_GAME_OBJ_REPORT_USE = 0x3B0088, - CMSG_GAME_OBJ_USE = 0x3B0087, - CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3A01DC, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3A01C2, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3A01AE, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3A0213, - CMSG_GARRISON_COMPLETE_MISSION = 0x3A0205, - CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3A01DD, - CMSG_GARRISON_GENERATE_RECRUITS = 0x3A01C5, - CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3A01D4, - CMSG_GARRISON_GET_MAP_DATA = 0x3A01DB, - CMSG_GARRISON_GET_MISSION_REWARD = 0x3A0236, - CMSG_GARRISON_LEARN_TALENT = 0x3A01D0, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3A0207, - CMSG_GARRISON_PURCHASE_BUILDING = 0x3A01AA, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3A01C7, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x3A01FC, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3A01C3, - CMSG_GARRISON_RENAME_FOLLOWER = 0x3A01C4, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x3A01A9, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3A01DF, - CMSG_GARRISON_RESEARCH_TALENT = 0x3A01C8, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3A01AB, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3A01C0, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3A01B7, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3A01C6, - CMSG_GARRISON_SOCKET_TALENT = 0x3A02A3, - CMSG_GARRISON_START_MISSION = 0x3A0204, - CMSG_GARRISON_SWAP_BUILDINGS = 0x3A01AF, - CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x400013, - CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x4000E4, - CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x400162, - CMSG_GET_ALL_LICENSED_DECOR_QUANTITIES = 0x290034, - CMSG_GET_AVAILABLE_INITIATIVE_REQUEST = 0x380002, - CMSG_GET_CHARACTER_CURRENCY_TRANSFER_LOG = 0x29001F, - CMSG_GET_CLIENT_CHECKOUT_LICENSES = 0x400140, - CMSG_GET_DECOR_REFUND_LIST = 0x290031, - CMSG_GET_GARRISON_INFO = 0x3A01A4, - CMSG_GET_INITIATIVE_ACTIVITY_LOG_REQUEST = 0x380004, - CMSG_GET_ITEM_PURCHASE_DATA = 0x3B00CF, - CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3A01E0, - CMSG_GET_LAST_CATALOG_FETCH = 0x290036, - CMSG_GET_MIRROR_IMAGE_DATA = 0x3A0172, - CMSG_GET_PVP_OPTIONS_ENABLED = 0x40001A, - CMSG_GET_RAF_ACCOUNT_INFO = 0x400150, - CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x400193, - CMSG_GET_REMAINING_GAME_TIME = 0x40011B, - CMSG_GET_TROPHY_LIST = 0x3A01F5, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x40010F, - CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x400120, - CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x400121, - CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x4000BD, - CMSG_GM_TICKET_GET_CASE_STATUS = 0x4000BC, - CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x4000BB, - CMSG_GOSSIP_REFRESH_OPTIONS = 0x3B0110, - CMSG_GOSSIP_SELECT_OPTION = 0x3B0027, - CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x2D0020, - CMSG_GUILD_ADD_RANK = 0x2D0005, - CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x2D0002, - CMSG_GUILD_BANK_ACTIVATE = 0x3B0048, - CMSG_GUILD_BANK_BUY_TAB = 0x3B0056, - CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x3B0058, - CMSG_GUILD_BANK_LOG_QUERY = 0x2D0019, - CMSG_GUILD_BANK_QUERY_TAB = 0x3B0055, - CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x2D001A, - CMSG_GUILD_BANK_SET_TAB_TEXT = 0x2D001D, - CMSG_GUILD_BANK_TEXT_QUERY = 0x2D001E, - CMSG_GUILD_BANK_UPDATE_TAB = 0x3B0057, - CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x3B0059, - CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x2D0017, - CMSG_GUILD_CHANGE_NAME_REQUEST = 0x2D0018, - CMSG_GUILD_DECLINE_INVITATION = 0x40002A, - CMSG_GUILD_DELETE = 0x2D0009, - CMSG_GUILD_DELETE_RANK = 0x2D0006, - CMSG_GUILD_DEMOTE_MEMBER = 0x2D0001, - CMSG_GUILD_EVENT_LOG_QUERY = 0x2D001C, - CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x2D0012, - CMSG_GUILD_GET_OTHERS_OWNED_HOUSES = 0x2D0026, - CMSG_GUILD_GET_RANKS = 0x2D000E, - CMSG_GUILD_GET_ROSTER = 0x2D0014, - CMSG_GUILD_INVITE_BY_NAME = 0x400034, - CMSG_GUILD_LEAVE = 0x2D0003, - CMSG_GUILD_NEWS_UPDATE_STICKY = 0x2D000F, - CMSG_GUILD_OFFICER_REMOVE_MEMBER = 0x2D0004, - CMSG_GUILD_PERMISSIONS_QUERY = 0x2D001B, - CMSG_GUILD_PROMOTE_MEMBER = 0x2D0000, - CMSG_GUILD_QUERY_MEMBERS_FOR_RECIPE = 0x2D000C, - CMSG_GUILD_QUERY_MEMBER_RECIPES = 0x2D000A, - CMSG_GUILD_QUERY_NEWS = 0x2D000D, - CMSG_GUILD_QUERY_RECIPES = 0x2D000B, - CMSG_GUILD_REPLACE_GUILD_MASTER = 0x2D001F, - CMSG_GUILD_REQUEST_RENAME = 0x2D0023, - CMSG_GUILD_REQUEST_RENAME_NAME_CHECK = 0x2D0022, - CMSG_GUILD_REQUEST_RENAME_REFUND = 0x2D0024, - CMSG_GUILD_REQUEST_RENAME_STATUS = 0x2D0021, - CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x2D0010, - CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x2D0011, - CMSG_GUILD_SET_GUILD_MASTER = 0x4000F7, - CMSG_GUILD_SET_MEMBER_NOTE = 0x2D0013, - CMSG_GUILD_SET_RANK_PERMISSIONS = 0x2D0008, - CMSG_GUILD_SHIFT_RANK = 0x2D0007, - CMSG_GUILD_UPDATE_INFO_TEXT = 0x2D0016, - CMSG_GUILD_UPDATE_MOTD_TEXT = 0x2D0015, - CMSG_HEARTH_AND_RESURRECT = 0x3B00A0, - CMSG_HIDE_QUEST_CHOICE = 0x3A0182, - CMSG_HOTFIX_REQUEST = 0x400011, - CMSG_HOUSE_EXTERIOR_LOCK = 0x2E0000, - CMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION = 0x2E0001, - CMSG_HOUSE_INTERIOR_LEAVE_HOUSE = 0x2F0001, - CMSG_HOUSING_DECOR_DELETE_FROM_STORAGE = 0x30000A, - CMSG_HOUSING_DECOR_LOCK = 0x300004, - CMSG_HOUSING_DECOR_MOVE = 0x300002, - CMSG_HOUSING_DECOR_PLACE = 0x300001, - CMSG_HOUSING_DECOR_REDEEM_DEFERRED_DECOR = 0x300011, - CMSG_HOUSING_DECOR_REMOVE = 0x300003, - CMSG_HOUSING_DECOR_REQUEST_STORAGE = 0x30000F, - CMSG_HOUSING_DECOR_SET_DYE_SLOTS = 0x300006, - CMSG_HOUSING_DECOR_SET_EDIT_MODE = 0x300000, - CMSG_HOUSING_FIXTURE_CREATE_FIXTURE = 0x310006, - CMSG_HOUSING_FIXTURE_DELETE_FIXTURE = 0x310007, - CMSG_HOUSING_FIXTURE_SET_CORE_FIXTURE = 0x310005, - CMSG_HOUSING_FIXTURE_SET_EDIT_MODE = 0x310000, - CMSG_HOUSING_FIXTURE_SET_HOUSE_SIZE = 0x310003, - CMSG_HOUSING_FIXTURE_SET_HOUSE_TYPE = 0x310004, - CMSG_HOUSING_GET_CURRENT_HOUSE_INFO = 0x350006, - CMSG_HOUSING_GET_PLAYER_PERMISSIONS = 0x350007, - CMSG_HOUSING_HOUSE_STATUS = 0x350005, - CMSG_HOUSING_PHOTO_SHARING_CLEAR_AUTHORIZATION = 0x4001A5, - CMSG_HOUSING_PHOTO_SHARING_COMPLETE_AUTHORIZATION = 0x4001A4, - CMSG_HOUSING_RESET_KIOSK_MODE = 0x350008, - CMSG_HOUSING_ROOM_ADD = 0x320001, - CMSG_HOUSING_ROOM_APPLY_COMPONENT_MATERIALS = 0x320006, - CMSG_HOUSING_ROOM_MOVE = 0x320004, - CMSG_HOUSING_ROOM_REMOVE = 0x320002, - CMSG_HOUSING_ROOM_ROTATE = 0x320003, - CMSG_HOUSING_ROOM_SET_CEILING_TYPE = 0x320008, - CMSG_HOUSING_ROOM_SET_COMPONENT_THEME = 0x320005, - CMSG_HOUSING_ROOM_SET_DOOR_TYPE = 0x320007, - CMSG_HOUSING_ROOM_SET_LAYOUT_EDIT_MODE = 0x320000, - CMSG_HOUSING_SVCS_ACCEPT_NEIGHBORHOOD_OWNERSHIP = 0x33001E, - CMSG_HOUSING_SVCS_DELETE_ALL_NEIGHBORHOOD_INVITES = 0x330025, - CMSG_HOUSING_SVCS_GET_BNET_FRIEND_NEIGHBORHOODS = 0x330023, - CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_INFO = 0x330021, - CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_NEIGHBORHOOD = 0x330022, - CMSG_HOUSING_SVCS_GET_PLAYER_HOUSES_INFO = 0x330013, - CMSG_HOUSING_SVCS_GET_POTENTIAL_HOUSE_OWNERS = 0x330020, - CMSG_HOUSING_SVCS_GUILD_CREATE_NEIGHBORHOOD = 0x330001, - CMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT = 0x330007, - CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_BNET_ACCOUNT = 0x330011, - CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_PLAYER = 0x330010, - CMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP = 0x33001F, - CMSG_HOUSING_SVCS_RELINQUISH_HOUSE = 0x33000A, - CMSG_HOUSING_SVCS_START_TUTORIAL = 0x33001A, - CMSG_HOUSING_SVCS_TELEPORT_TO_PLOT = 0x330019, - CMSG_HOUSING_SVCS_UPDATE_HOUSE_SETTINGS = 0x33000B, - CMSG_IGNORE_TRADE = 0x3A0003, - CMSG_INITIATE_ROLE_POLL = 0x400006, - CMSG_INITIATE_TRADE = 0x3A0000, - CMSG_INITIATIVE_UPDATE_ACTIVE_NEIGHBORHOOD = 0x3C0000, - CMSG_INSPECT = 0x3B00C9, - CMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x400061, - CMSG_INSTANCE_LOCK_RESPONSE = 0x3B00A5, - CMSG_INVITE_PLAYER_TO_NEIGHBORHOOD = 0x40019B, - CMSG_ISLAND_QUEUE = 0x3A0267, - CMSG_ITEM_PURCHASE_REFUND = 0x3B00D0, - CMSG_ITEM_TEXT_QUERY = 0x3A0214, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x3A0090, - CMSG_JOIN_RATED_BATTLEGROUND = 0x3A0025, - CMSG_KEEP_ALIVE = 0x4000AB, - CMSG_KEYBOUND_OVERRIDE = 0x3A00E5, - CMSG_KIOSK_ENABLE_GOD_MODE = 0x3A009A, - CMSG_LATENCY_REPORT = 0x41000F, - CMSG_LEARN_PVP_TALENTS = 0x3B00FC, - CMSG_LEARN_TALENTS = 0x3B00FA, - CMSG_LEAVE_GROUP = 0x400075, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x3A0091, - CMSG_LFG_LIST_APPLY_TO_GROUP = 0x40003B, - CMSG_LFG_LIST_CANCEL_APPLICATION = 0x40003C, - CMSG_LFG_LIST_DECLINE_APPLICANT = 0x40003D, - CMSG_LFG_LIST_GET_STATUS = 0x400039, - CMSG_LFG_LIST_INVITE_APPLICANT = 0x40003E, - CMSG_LFG_LIST_INVITE_RESPONSE = 0x40003F, - CMSG_LFG_LIST_JOIN = 0x3A025B, - CMSG_LFG_LIST_LEAVE = 0x400038, - CMSG_LFG_LIST_SEARCH = 0x40003A, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x3A025C, - CMSG_LFG_LOREWALKING_UPDATE_REQUEST = 0x3A025D, - CMSG_LIST_INVENTORY = 0x3B0034, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x4000E7, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x4000E6, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x4000E5, - CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x4000E8, - CMSG_LOADING_SCREEN_NOTIFY = 0x400024, - CMSG_LOAD_SELECTED_TROPHY = 0x3A01F6, - CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x400175, - CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x40016C, - CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x40017E, - CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x400173, - CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x40016F, - CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x40016B, - CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x40016E, - CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x400174, - CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x40016D, - CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x400170, - CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x400171, - CMSG_LOGOUT_CANCEL = 0x3B0071, - CMSG_LOGOUT_INSTANT = 0x3B0072, - CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3B0125, - CMSG_LOGOUT_REQUEST = 0x3B0070, - CMSG_LOG_DISCONNECT = 0x410007, - CMSG_LOG_STREAMING_ERROR = 0x41000B, - CMSG_LOOT_ITEM = 0x3A00CD, - CMSG_LOOT_MONEY = 0x3A00CC, - CMSG_LOOT_RELEASE = 0x3A00D1, - CMSG_LOOT_ROLL = 0x3A00D2, - CMSG_LOOT_UNIT = 0x3A00CB, - CMSG_LOW_LEVEL_RAID1 = 0x4000CF, - CMSG_LOW_LEVEL_RAID2 = 0x3B00AC, - CMSG_MAIL_CREATE_TEXT_ITEM = 0x3B00DB, - CMSG_MAIL_DELETE = 0x3A00E7, - CMSG_MAIL_GET_LIST = 0x3B00D6, - CMSG_MAIL_MARK_AS_READ = 0x3B00DA, - CMSG_MAIL_RETURN_TO_SENDER = 0x400081, - CMSG_MAIL_TAKE_ITEM = 0x3B00D8, - CMSG_MAIL_TAKE_MONEY = 0x3B00D7, - CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3A00E8, - CMSG_MASTER_LOOT_ITEM = 0x3A00CE, - CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3B0053, - CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x3B0050, - CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004E, - CMSG_MESSAGE_WHISPER = 0x410011, - CMSG_MINIMAP_PING = 0x400077, - CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3A0036, - CMSG_MOUNT_CLEAR_FANFARE = 0x290003, - CMSG_MOUNT_SET_FAVORITE = 0x40005C, - CMSG_MOUNT_SPECIAL_ANIM = 0x3A0158, - CMSG_MOVE_ADD_IMPULSE_ACK = 0x3E006E, - CMSG_MOVE_APPLY_INERTIA_ACK = 0x3E006C, - CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3E0033, - CMSG_MOVE_CHANGE_TRANSPORT = 0x3E004E, - CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3E0053, - CMSG_MOVE_COLLISION_DISABLE_ACK = 0x3E0058, - CMSG_MOVE_COLLISION_ENABLE_ACK = 0x3E0059, - CMSG_MOVE_DISABLE_JUMPING_ACK = 0x3E0086, - CMSG_MOVE_DISABLE_STRAFING_ACK = 0x3E0087, - CMSG_MOVE_DISMISS_VEHICLE = 0x3E0052, - CMSG_MOVE_DOUBLE_JUMP = 0x3E0007, - CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3E003C, - CMSG_MOVE_ENABLE_FULL_SPEED_PITCHING_ACK = 0x3E0085, - CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK = 0x3E0084, - CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3E0042, - CMSG_MOVE_FALL_LAND = 0x3E0017, - CMSG_MOVE_FALL_RESET = 0x3E0037, - CMSG_MOVE_FEATHER_FALL_ACK = 0x3E003A, - CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3E004D, - CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3E004C, - CMSG_MOVE_FORCE_GRAVITY_MODIFIER_CHANGE_ACK = 0x3E0022, - CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3E0051, - CMSG_MOVE_FORCE_ROOT_ACK = 0x3E002C, - CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3E002A, - CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3E0029, - CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3E0040, - CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3E002B, - CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3E0041, - CMSG_MOVE_FORCE_UNROOT_ACK = 0x3E002D, - CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3E003F, - CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3E0054, - CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3E0055, - CMSG_MOVE_GUILD_BANK_ITEM = 0x3B004D, - CMSG_MOVE_HEARTBEAT = 0x3E002E, - CMSG_MOVE_HOVER_ACK = 0x3E0031, - CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3E0056, - CMSG_MOVE_INERTIA_ENABLE_ACK = 0x3E0057, - CMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE_ACK = 0x3E0083, - CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3E0064, - CMSG_MOVE_JUMP = 0x3E0006, - CMSG_MOVE_KNOCK_BACK_ACK = 0x3E0030, - CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3E006D, - CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3E0035, - CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3E0034, - CMSG_MOVE_SET_ADV_FLY = 0x3E0070, - CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x3E0078, - CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x3E0073, - CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x3E0079, - CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x3E0076, - CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x3E0077, - CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x3E0080, - CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x3E0075, - CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x3E0074, - CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x3E007E, - CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x3E007A, - CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x3E007B, - CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x3E007D, - CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x3E007C, - CMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING_ACK = 0x3E0088, - CMSG_MOVE_SET_CANNOT_SWIM_ACK = 0x3E0046, - CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x3E006F, - CMSG_MOVE_SET_CAN_DRIVE_ACK = 0x3E0071, - CMSG_MOVE_SET_CAN_FLY_ACK = 0x3E0045, - CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3E0043, - CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3E005A, - CMSG_MOVE_SET_FACING = 0x3E0027, - CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3E007F, - CMSG_MOVE_SET_FLY = 0x3E0047, - CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3E0044, - CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3E0061, - CMSG_MOVE_SET_PITCH = 0x3E0028, - CMSG_MOVE_SET_RUN_MODE = 0x3E000E, - CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x3E0024, - CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3E0032, - CMSG_MOVE_SET_WALK_MODE = 0x3E000F, - CMSG_MOVE_SPLINE_DONE = 0x3E0036, - CMSG_MOVE_START_ASCEND = 0x3E0048, - CMSG_MOVE_START_BACKWARD = 0x3E0001, - CMSG_MOVE_START_DESCEND = 0x3E004F, - CMSG_MOVE_START_DRIVE_FORWARD = 0x3E0072, - CMSG_MOVE_START_FORWARD = 0x3E0000, - CMSG_MOVE_START_PITCH_DOWN = 0x3E000C, - CMSG_MOVE_START_PITCH_UP = 0x3E000B, - CMSG_MOVE_START_STRAFE_LEFT = 0x3E0003, - CMSG_MOVE_START_STRAFE_RIGHT = 0x3E0004, - CMSG_MOVE_START_SWIM = 0x3E0018, - CMSG_MOVE_START_TURN_LEFT = 0x3E0008, - CMSG_MOVE_START_TURN_RIGHT = 0x3E0009, - CMSG_MOVE_STOP = 0x3E0002, - CMSG_MOVE_STOP_ASCEND = 0x3E0049, - CMSG_MOVE_STOP_PITCH = 0x3E000D, - CMSG_MOVE_STOP_STRAFE = 0x3E0005, - CMSG_MOVE_STOP_SWIM = 0x3E0019, - CMSG_MOVE_STOP_TURN = 0x3E000A, - CMSG_MOVE_TELEPORT_ACK = 0x3E0016, - CMSG_MOVE_TIME_SKIPPED = 0x3E0039, - CMSG_MOVE_UPDATE_FALL_SPEED = 0x3E0038, - CMSG_MOVE_WATER_WALK_ACK = 0x3E003B, - CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x2C0001, - CMSG_NEIGHBORHOOD_ADD_SECONDARY_OWNER = 0x390002, - CMSG_NEIGHBORHOOD_BUY_HOUSE = 0x390009, - CMSG_NEIGHBORHOOD_CANCEL_INVITATION = 0x390005, - CMSG_NEIGHBORHOOD_CHARTER_ADD_SIGNATURE = 0x370006, - CMSG_NEIGHBORHOOD_CHARTER_CREATE = 0x370001, - CMSG_NEIGHBORHOOD_CHARTER_EDIT = 0x370003, - CMSG_NEIGHBORHOOD_CHARTER_FINALIZE = 0x370004, - CMSG_NEIGHBORHOOD_CHARTER_OPEN_CONFIRMATION_UI = 0x370000, - CMSG_NEIGHBORHOOD_CHARTER_SEND_SIGNATURE_REQUEST = 0x370007, - CMSG_NEIGHBORHOOD_EVICT_PLOT = 0x39000F, - CMSG_NEIGHBORHOOD_GET_INVITES = 0x390008, - CMSG_NEIGHBORHOOD_GET_ROSTER = 0x39000E, - CMSG_NEIGHBORHOOD_INITIATIVE_SERVICE_STATUS_CHECK = 0x380000, - CMSG_NEIGHBORHOOD_INVITE_RESIDENT = 0x390004, - CMSG_NEIGHBORHOOD_MOVE_HOUSE = 0x39000A, - CMSG_NEIGHBORHOOD_OFFER_OWNERSHIP = 0x39000D, - CMSG_NEIGHBORHOOD_OPEN_CORNERSTONE_UI = 0x39000B, - CMSG_NEIGHBORHOOD_PLAYER_DECLINE_INVITE = 0x390006, - CMSG_NEIGHBORHOOD_PLAYER_GET_INVITE = 0x390007, - CMSG_NEIGHBORHOOD_REMOVE_SECONDARY_OWNER = 0x390003, - CMSG_NEIGHBORHOOD_SET_PUBLIC_FLAG = 0x390001, - CMSG_NEIGHBORHOOD_UPDATE_NAME = 0x390000, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x3A0086, - CMSG_NEXT_CINEMATIC_CAMERA = 0x3B00E4, - CMSG_NPC_CRAFTING_ORDER_REQUEST = 0x3B012F, - CMSG_OBJECT_UPDATE_FAILED = 0x3A002C, - CMSG_OBJECT_UPDATE_RESCUED = 0x3A002D, - CMSG_OFFER_PETITION = 0x3A028D, - CMSG_OPENING_CINEMATIC = 0x3B00E3, - CMSG_OPEN_ITEM = 0x3A0215, - CMSG_OPEN_MISSION_NPC = 0x3A01D6, - CMSG_OPEN_SHIPMENT_NPC = 0x3A01DE, - CMSG_OPEN_TRADESKILL_NPC = 0x3A01E9, - CMSG_OPT_OUT_OF_LOOT = 0x3B008F, - CMSG_OVERRIDE_SCREEN_FLASH = 0x3B00B9, - CMSG_PARTY_INVITE = 0x400030, - CMSG_PARTY_INVITE_RESPONSE = 0x400032, - CMSG_PARTY_UNINVITE = 0x400073, - CMSG_PERFORM_ITEM_INTERACTION = 0x3A00F0, - CMSG_PERKS_PROGRAM_GET_RECENT_PURCHASES = 0x290018, - CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3A02B5, - CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT = 0x3A02B8, - CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x290017, - CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3A02B7, - CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3A02B9, - CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3A02BA, - CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3A02B6, - CMSG_PETITION_BUY = 0x3B005B, - CMSG_PETITION_RENAME_GUILD = 0x4000F8, - CMSG_PETITION_SHOW_LIST = 0x3B005A, - CMSG_PETITION_SHOW_SIGNATURES = 0x3B005C, - CMSG_PET_ABANDON = 0x3B001F, - CMSG_PET_ABANDON_BY_NUMBER = 0x3B0020, - CMSG_PET_ACTION = 0x3B001D, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x3A0095, - CMSG_PET_BATTLE_INPUT = 0x40006D, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3A00E6, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x3A0094, - CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x40006E, - CMSG_PET_BATTLE_REQUEST_PVP = 0x3A008E, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x3A008F, - CMSG_PET_BATTLE_REQUEST_WILD = 0x3A008C, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x3A0096, - CMSG_PET_CANCEL_AURA = 0x3B0021, - CMSG_PET_CAST_SPELL = 0x3A0177, - CMSG_PET_RENAME = 0x4000B0, - CMSG_PET_SET_ACTION = 0x3B001C, - CMSG_PET_SPELL_AUTOCAST = 0x3B0022, - CMSG_PET_STOP_ATTACK = 0x3B001E, - CMSG_PING = 0x410006, - CMSG_PLAYER_LOGIN = 0x400016, - CMSG_PUSH_QUEST_TO_PARTY = 0x3B0032, - CMSG_PVP_LOG_DATA = 0x3A0028, - CMSG_QUERY_BATTLE_PET_NAME = 0x3A014B, - CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x40008C, - CMSG_QUERY_CORPSE_TRANSPORT = 0x40008D, - CMSG_QUERY_COUNTDOWN_TIMER = 0x3A005B, - CMSG_QUERY_CREATURE = 0x3A0145, - CMSG_QUERY_GAME_OBJECT = 0x3A0146, - CMSG_QUERY_GARRISON_PET_NAME = 0x3A014C, - CMSG_QUERY_GUILD_INFO = 0x4000B6, - CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3B0099, - CMSG_QUERY_NEIGHBORHOOD_INFO = 0x4000B7, - CMSG_QUERY_NEXT_MAIL_TIME = 0x3B00D9, - CMSG_QUERY_NPC_TEXT = 0x3A0147, - CMSG_QUERY_PAGE_TEXT = 0x3A0149, - CMSG_QUERY_PETITION = 0x3A014D, - CMSG_QUERY_PET_NAME = 0x3A014A, - CMSG_QUERY_PLAYER_NAMES = 0x410010, - CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x41000E, - CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x41000D, - CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3A0021, - CMSG_QUERY_QUEST_INFO = 0x3A0148, - CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3A0022, - CMSG_QUERY_REALM_NAME = 0x4000B5, - CMSG_QUERY_SCENARIO_POI = 0x400082, - CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3A02F3, - CMSG_QUERY_TIME = 0x3B006F, - CMSG_QUERY_TREASURE_PICKER = 0x3A0239, - CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3A02F4, - CMSG_QUEST_CONFIRM_ACCEPT = 0x3B0031, - CMSG_QUEST_DRIVEN_SCENARIO_STATE_CHANGE = 0x3A02EF, - CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3B002B, - CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x3B002D, - CMSG_QUEST_GIVER_CLOSE_QUEST = 0x3B00EA, - CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3B002C, - CMSG_QUEST_GIVER_HELLO = 0x3B0029, - CMSG_QUEST_GIVER_QUERY_QUEST = 0x3B002A, - CMSG_QUEST_GIVER_REQUEST_REWARD = 0x3B002E, - CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x3B0030, - CMSG_QUEST_GIVER_STATUS_QUERY = 0x3B002F, - CMSG_QUEST_LOG_REMOVE_QUEST = 0x3B00CE, - CMSG_QUEST_POI_QUERY = 0x4000DE, - CMSG_QUEST_PUSH_RESULT = 0x3B0033, - CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x3A027F, - CMSG_QUEST_SESSION_REQUEST_START = 0x3A027E, - CMSG_QUEST_SESSION_REQUEST_STOP = 0x40015B, - CMSG_QUEUED_MESSAGES_END = 0x41000A, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x400132, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x400131, - CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x400160, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x400130, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x40012F, - CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3B009D, - CMSG_RAF_CLAIM_NEXT_REWARD = 0x400151, - CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x400153, - CMSG_RAF_RECRUIT_PRESENCE_SUBSCRIBE = 0x400127, - CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x400152, - CMSG_RANDOM_ROLL = 0x400080, - CMSG_READY_CHECK_RESPONSE = 0x40005F, - CMSG_READ_ITEM = 0x3A0216, - CMSG_RECENT_ALLY_REQUEST_DATA = 0x400198, - CMSG_RECENT_ALLY_SET_NOTE = 0x400199, - CMSG_RECLAIM_CORPSE = 0x3B0074, - CMSG_REFRESH_BLEEP_TOKENS = 0x4001A2, - CMSG_REFRESH_ENTITLEMENTS_ON_ORDER_COMPLETE = 0x40019C, - CMSG_REGISTER_FAST_LOGIN = 0x400172, - CMSG_REMOVE_NEW_ITEM = 0x3A023D, - CMSG_REMOVE_RAF_RECRUIT = 0x400154, - CMSG_REORDER_CHARACTERS = 0x400015, - CMSG_REPAIR_ITEM = 0x3B0085, - CMSG_REPLACE_TROPHY = 0x3A01F7, - CMSG_REPOP_REQUEST = 0x3B00C6, - CMSG_REPORT_PVP_PLAYER_AFK = 0x3B008D, - CMSG_REPORT_SERVER_LAG = 0x3A0277, - CMSG_REPORT_STUCK_IN_COMBAT = 0x3A0278, - CMSG_REQUEST_ACCOUNT_DATA = 0x4000C3, - CMSG_REQUEST_AREA_POI_UPDATE = 0x3A023B, - CMSG_REQUEST_BATTLEFIELD_STATUS = 0x400008, - CMSG_REQUEST_CEMETERY_LIST = 0x3A0023, - CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x4000B8, - CMSG_REQUEST_CHAT_LOGIN = 0x400028, - CMSG_REQUEST_COVENANT_CALLINGS = 0x3A0269, - CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3B00CA, - CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x29001E, - CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x3A02A2, - CMSG_REQUEST_GUILD_PARTY_STATE = 0x3A005A, - CMSG_REQUEST_GUILD_REWARDS_LIST = 0x3A0059, - CMSG_REQUEST_INSTANCE_ENCOUNTER_EVENT_SYNC = 0x3A0196, - CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x3A0279, - CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x3A0183, - CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3A00BB, - CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3A00BC, - CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3A02F0, - CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x400023, - CMSG_REQUEST_PARTY_MEMBER_STATS = 0x40007F, - CMSG_REQUEST_PET_INFO = 0x3B0023, - CMSG_REQUEST_PLAYED_TIME = 0x3A0150, - CMSG_REQUEST_PVP_REWARDS = 0x3A0041, - CMSG_REQUEST_RAID_INFO = 0x4000F9, - CMSG_REQUEST_RATED_PVP_INFO = 0x40000F, - CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x400196, - CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x3A023C, - CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3A0042, - CMSG_REQUEST_STABLED_PETS = 0x3B0024, - CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x290023, - CMSG_REQUEST_SURVEY = 0x3A0306, - CMSG_REQUEST_TREASURE_PUNCH_LIST_ITEMS = 0x3A030A, - CMSG_REQUEST_VEHICLE_EXIT = 0x3A0102, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3A0104, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3A0103, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3A0105, - CMSG_REQUEST_WEEKLY_REWARDS = 0x3A026C, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3A023A, - CMSG_RESET_CHALLENGE_MODE = 0x3A00B9, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3A00BA, - CMSG_RESET_INSTANCES = 0x400094, - CMSG_RESURRECT_RESPONSE = 0x4000AF, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x3A01F9, - CMSG_RIDE_VEHICLE_INTERACT = 0x3A0106, - CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x40017B, - CMSG_SAVE_CUF_PROFILES = 0x3A0037, - CMSG_SAVE_EQUIPMENT_SET = 0x3B00A3, - CMSG_SAVE_GUILD_EMBLEM = 0x3A0188, - CMSG_SAVE_PERSONAL_EMBLEM = 0x3A0189, - CMSG_SCENE_PLAYBACK_CANCELED = 0x3A00E2, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x3A00E1, - CMSG_SCENE_TRIGGER_EVENT = 0x3A00E3, - CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3A02DF, - CMSG_SELECT_DELVE_ENTRANCE_TIER = 0x3B0134, - CMSG_SELECT_WOW_LABS_AREA = 0x3A02F5, - CMSG_SELF_RES = 0x3B00D1, - CMSG_SELL_ALL_JUNK_ITEMS = 0x3B0036, - CMSG_SELL_ITEM = 0x3B0035, - CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x400128, - CMSG_SEND_CONTACT_LIST = 0x4000FF, - CMSG_SEND_MAIL = 0x400026, - CMSG_SEND_PING_UNIT = 0x3A02E1, - CMSG_SEND_PING_WORLD_POINT = 0x3A02E2, - CMSG_SEND_TEXT_EMOTE = 0x3B001A, - CMSG_SERVER_TIME_OFFSET_REQUEST = 0x4000CA, - CMSG_SERVER_VALIDATION_SIGNATURE_REQUEST = 0x400197, - CMSG_SETUP_WARBAND_GROUPS = 0x40018F, - CMSG_SET_ACTION_BAR_TOGGLES = 0x3B00D2, - CMSG_SET_ACTION_BUTTON = 0x400062, - CMSG_SET_ACTIVE_MOVER = 0x3E005B, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x3A0197, - CMSG_SET_ALLOW_RECENT_ALLIES_SEE_LOCATION = 0x3A0308, - CMSG_SET_ASSISTANT_LEADER = 0x40007B, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3A0219, - CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x3A021A, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3A021B, - CMSG_SET_CONTACT_NOTES = 0x400102, - CMSG_SET_CURRENCY_FLAGS = 0x3A0015, - CMSG_SET_DIFFICULTY_ID = 0x3A00E4, - CMSG_SET_DUNGEON_DIFFICULTY = 0x4000AE, - CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x3A013F, - CMSG_SET_EVERYONE_IS_ASSISTANT = 0x400046, - CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x400133, - CMSG_SET_FACTION_AT_WAR = 0x3B0077, - CMSG_SET_FACTION_INACTIVE = 0x3B0079, - CMSG_SET_FACTION_NOT_AT_WAR = 0x3B0078, - CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x3A006B, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3A021D, - CMSG_SET_LOOT_METHOD = 0x400074, - CMSG_SET_LOOT_SPECIALIZATION = 0x3B00DF, - CMSG_SET_PARTY_ASSIGNMENT = 0x40007D, - CMSG_SET_PARTY_LEADER = 0x400076, - CMSG_SET_PET_FAVORITE = 0x3A0012, - CMSG_SET_PET_SLOT = 0x3A0011, - CMSG_SET_PET_SPECIALIZATION = 0x3A0013, - CMSG_SET_PLAYER_DECLINED_NAMES = 0x4000B4, - CMSG_SET_PREFERRED_CEMETERY = 0x3A0024, - CMSG_SET_PVP = 0x3A018D, - CMSG_SET_RAID_DIFFICULTY = 0x40010B, - CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x400047, - CMSG_SET_ROLE = 0x400005, - CMSG_SET_SAVED_INSTANCE_EXTEND = 0x4000B2, - CMSG_SET_SELECTION = 0x3B00C8, - CMSG_SET_SHEATHED = 0x3B001B, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3A021C, - CMSG_SET_STOP_CONVERSATION = 0x3A0222, - CMSG_SET_TAXI_BENCHMARK_MODE = 0x3B008C, - CMSG_SET_TITLE = 0x3A0156, - CMSG_SET_TRADE_CURRENCY = 0x3A000A, - CMSG_SET_TRADE_GOLD = 0x3A0009, - CMSG_SET_TRADE_ITEM = 0x3A0007, - CMSG_SET_USING_PARTY_GARRISON = 0x3A01D8, - CMSG_SET_WAR_MODE = 0x3A018E, - CMSG_SET_WATCHED_FACTION = 0x3B007A, - CMSG_SHOW_TRADE_SKILL = 0x4000F1, - CMSG_SIGN_PETITION = 0x3B00D3, - CMSG_SILENCE_PARTY_TALKER = 0x40007E, - CMSG_SOCIAL_CONTRACT_REQUEST = 0x400176, - CMSG_SOCKET_GEMS = 0x3B0084, - CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3A02E5, - CMSG_SORT_BAGS = 0x3A021E, - CMSG_SORT_BANK_BAGS = 0x3A021F, - CMSG_SPAWN_TRACKING_UPDATE = 0x3A016B, - CMSG_SPECTATE_CHANGE = 0x3A02D7, - CMSG_SPECTATE_END = 0x3A02D9, - CMSG_SPECTATE_SET_NEXT_TARGET = 0x3A02D8, - CMSG_SPELL_CLICK = 0x3B0028, - CMSG_SPELL_EMPOWER_RELEASE = 0x3A013D, - CMSG_SPELL_EMPOWER_RESTART = 0x3A013E, - CMSG_SPIRIT_HEALER_ACTIVATE = 0x3B0043, - CMSG_SPLIT_GUILD_BANK_ITEM = 0x3B0054, - CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x3B0051, - CMSG_SPLIT_ITEM = 0x3D0008, - CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x3B004F, - CMSG_STAND_STATE_CHANGE = 0x3A0035, - CMSG_START_CHALLENGE_MODE = 0x3B00EB, - CMSG_START_INSTANCE_ABANDON_VOTE = 0x400060, - CMSG_START_SPECTATOR_WAR_GAME = 0x40000B, - CMSG_START_WAR_GAME = 0x40000A, - CMSG_STORE_GUILD_BANK_ITEM = 0x3B004A, - CMSG_SUBMIT_USER_FEEDBACK = 0x4000C2, - CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x3A0297, - CMSG_SUMMON_RESPONSE = 0x400096, - CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x400072, - CMSG_SURRENDER_ARENA = 0x3A0020, - CMSG_SUSPEND_COMMS_ACK = 0x410000, - CMSG_SUSPEND_TOKEN_RESPONSE = 0x410008, - CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004C, - CMSG_SWAP_INV_ITEM = 0x3D0007, - CMSG_SWAP_ITEM = 0x3D0006, - CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004B, - CMSG_SWAP_SUB_GROUPS = 0x400079, - CMSG_TABARD_VENDOR_ACTIVATE = 0x3A018A, - CMSG_TALK_TO_GOSSIP = 0x3B0025, - CMSG_TAXI_NODE_STATUS_QUERY = 0x3B003C, - CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x3B003E, - CMSG_TAXI_REQUEST_EARLY_LANDING = 0x3B0040, - CMSG_TIERED_ENTRANCE_OPEN = 0x3B0133, - CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3E005F, - CMSG_TIME_SYNC_RESPONSE = 0x3E005C, - CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3E005E, - CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3E005D, - CMSG_TOGGLE_DIFFICULTY = 0x400083, - CMSG_TOGGLE_PVP = 0x3A018C, - CMSG_TOTEM_DESTROYED = 0x3B0091, - CMSG_TOY_CLEAR_FANFARE = 0x290004, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x3A0238, - CMSG_TRAINER_BUY_SPELL = 0x3B0042, - CMSG_TRAINER_LIST = 0x3B0041, - CMSG_TRAINING_GROUNDS_JOIN = 0x3B00C4, - CMSG_TRAITS_COMMIT_CONFIG = 0x3A02C0, - CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3A02BE, - CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3A02EE, - CMSG_TRANSMOG_OUTFIT_NEW = 0x3A0044, - CMSG_TRANSMOG_OUTFIT_UPDATE_INFO = 0x3A0045, - CMSG_TRANSMOG_OUTFIT_UPDATE_SITUATIONS = 0x3A0046, - CMSG_TRANSMOG_OUTFIT_UPDATE_SLOTS = 0x3A0047, - CMSG_TURN_IN_PETITION = 0x3B00D5, - CMSG_TUTORIAL = 0x40010C, - CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x3A0268, - CMSG_UNACCEPT_TRADE = 0x3A0005, - CMSG_UNDELETE_CHARACTER = 0x40010E, - CMSG_UNLEARN_SKILL = 0x3B007E, - CMSG_UNLEARN_SPECIALIZATION = 0x3A0057, - CMSG_UPDATE_AADC_STATUS = 0x400166, - CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x3B012D, - CMSG_UPDATE_ACCOUNT_DATA = 0x4000C4, - CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x3A017A, - CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3A01EA, - CMSG_UPDATE_LAST_CATALOG_FETCH = 0x290035, - CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3E0062, - CMSG_UPDATE_RAID_TARGET = 0x40007C, - CMSG_UPDATE_SPELL_VISUAL = 0x3A0179, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x400123, - CMSG_UPGRADE_GARRISON = 0x3A019F, - CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x3A0295, - CMSG_USED_FOLLOW = 0x3A0032, - CMSG_USE_CRITTER_ITEM = 0x3A010C, - CMSG_USE_EQUIPMENT_SET = 0x3D0001, - CMSG_USE_ITEM = 0x3A0173, - CMSG_USE_TOY = 0x3A0176, - CMSG_VAS_CHECK_TRANSFER_OK = 0x400139, - CMSG_VAS_GET_QUEUE_MINUTES = 0x400138, - CMSG_VAS_GET_SERVICE_STATUS = 0x400137, - CMSG_VIOLENCE_LEVEL = 0x3A0030, - CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x40013D, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x40013E, - CMSG_VOICE_CHAT_LOGIN = 0x40013C, - CMSG_WARDEN3_DATA = 0x400018, - CMSG_WHO = 0x4000AD, - CMSG_WHO_IS = 0x4000AC, - CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3A02DB, - CMSG_WORLD_PORT_RESPONSE = 0x400025, - CMSG_WRAP_ITEM = 0x3D0000, + CMSG_ABANDON_NPE_RESPONSE = 0x3D029C, + CMSG_ACCEPT_GUILD_INVITE = 0x430029, + CMSG_ACCEPT_SOCIAL_CONTRACT = 0x430177, + CMSG_ACCEPT_TRADE = 0x3D0004, + CMSG_ACCEPT_WARGAME_INVITE = 0x43000C, + CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3D02E0, + CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3D02E1, + CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x430163, + CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x4300C1, + CMSG_ACTIVATE_SOULBIND = 0x3D028B, + CMSG_ACTIVATE_TAXI = 0x3E0041, + CMSG_ADDON_LIST = 0x430004, + CMSG_ADD_ACCOUNT_COSMETIC = 0x3D0171, + CMSG_ADD_BATTLENET_FRIEND = 0x430086, + CMSG_ADD_FRIEND = 0x430100, + CMSG_ADD_IGNORE = 0x430104, + CMSG_ADD_TOY = 0x3D0170, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3D00B7, + CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x3D028E, + CMSG_ADVENTURE_MAP_START_QUEST = 0x3D022E, + CMSG_ALTER_APPEARANCE = 0x3E0090, + CMSG_AREA_SPIRIT_HEALER_QUERY = 0x3E0046, + CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x3E0047, + CMSG_AREA_TRIGGER = 0x3D0089, + CMSG_ARTIFACT_ADD_POWER = 0x3D005C, + CMSG_ARTIFACT_SET_APPEARANCE = 0x3D005E, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3D00C3, + CMSG_ATTACK_STOP = 0x3D011D, + CMSG_ATTACK_SWING = 0x3D011C, + CMSG_AUCTIONABLE_TOKEN_SELL = 0x430116, + CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x430117, + CMSG_AUCTION_BROWSE_QUERY = 0x3E0064, + CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x3E006C, + CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x3E006B, + CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x3E006A, + CMSG_AUCTION_HELLO_REQUEST = 0x3E005F, + CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x3E0068, + CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x3E0069, + CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x3E0065, + CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x3E0066, + CMSG_AUCTION_LIST_OWNED_ITEMS = 0x3E0067, + CMSG_AUCTION_PLACE_BID = 0x3E0063, + CMSG_AUCTION_REMOVE_ITEM = 0x3E0061, + CMSG_AUCTION_REPLICATE_ITEMS = 0x3E0062, + CMSG_AUCTION_SELL_COMMODITY = 0x3E006D, + CMSG_AUCTION_SELL_ITEM = 0x3E0060, + CMSG_AUCTION_SET_FAVORITE_ITEM = 0x430164, + CMSG_AUTH_CONTINUED_SESSION = 0x440003, + CMSG_AUTH_SESSION = 0x440001, + CMSG_AUTOBANK_ITEM = 0x400003, + CMSG_AUTOSTORE_BANK_ITEM = 0x400002, + CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3D02EA, + CMSG_AUTO_DEPOSIT_CHARACTER_BANK = 0x3D02FE, + CMSG_AUTO_EQUIP_ITEM = 0x400004, + CMSG_AUTO_EQUIP_ITEM_SLOT = 0x400009, + CMSG_AUTO_GUILD_BANK_ITEM = 0x3E004B, + CMSG_AUTO_STORE_BAG_ITEM = 0x400005, + CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x3E0054, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3D025A, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3D023A, + CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3D025C, + CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3D025B, + CMSG_BANKER_ACTIVATE = 0x3E0049, + CMSG_BATTLEFIELD_LEAVE = 0x3D001F, + CMSG_BATTLEFIELD_LIST = 0x3D002A, + CMSG_BATTLEFIELD_PORT = 0x3E00C7, + CMSG_BATTLEMASTER_HELLO = 0x3D018F, + CMSG_BATTLEMASTER_JOIN = 0x3E00BD, + CMSG_BATTLEMASTER_JOIN_ARENA = 0x3E00BE, + CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3E00C4, + CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3E00C0, + CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3E00BF, + CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3E00C1, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x430103, + CMSG_BATTLENET_REQUEST = 0x430124, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x4300FC, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x430141, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x4300FB, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x4300F2, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x430167, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x4300E9, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x4300EA, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x43013A, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x430135, + CMSG_BATTLE_PAY_START_PURCHASE = 0x4300FA, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x430122, + CMSG_BATTLE_PET_CLEAR_FANFARE = 0x2A0002, + CMSG_BATTLE_PET_DELETE_PET = 0x43004F, + CMSG_BATTLE_PET_MODIFY_NAME = 0x430052, + CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x43004E, + CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x43004D, + CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x430057, + CMSG_BATTLE_PET_SET_FLAGS = 0x43005A, + CMSG_BATTLE_PET_SUMMON = 0x430053, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x3D0093, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x3D0092, + CMSG_BEGIN_TRADE = 0x3D0001, + CMSG_BINDER_ACTIVATE = 0x3E0048, + CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3E00CF, + CMSG_BLACK_MARKET_OPEN = 0x3E00CD, + CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3E00CE, + CMSG_BLEEP_PONG = 0x4301A0, + CMSG_BONUS_ROLL = 0x3D025D, + CMSG_BUG_REPORT = 0x4300B1, + CMSG_BULK_PURCHASE = 0x2A0032, + CMSG_BULK_REFUND = 0x2A0033, + CMSG_BUSY_TRADE = 0x3D0002, + CMSG_BUY_ACCOUNT_BANK_TAB = 0x3E0128, + CMSG_BUY_BACK_ITEM = 0x3E003A, + CMSG_BUY_ITEM = 0x3E0039, + CMSG_CAGE_BATTLE_PET = 0x3D00A6, + CMSG_CALENDAR_ADD_EVENT = 0x4300A9, + CMSG_CALENDAR_COMMUNITY_INVITE = 0x43009D, + CMSG_CALENDAR_COMPLAIN = 0x4300A5, + CMSG_CALENDAR_COPY_EVENT = 0x4300A4, + CMSG_CALENDAR_EVENT_SIGN_UP = 0x4300A7, + CMSG_CALENDAR_GET = 0x43009B, + CMSG_CALENDAR_GET_EVENT = 0x43009C, + CMSG_CALENDAR_GET_NUM_PENDING = 0x4300A6, + CMSG_CALENDAR_INVITE = 0x43009E, + CMSG_CALENDAR_MODERATOR_STATUS = 0x4300A2, + CMSG_CALENDAR_REMOVE_EVENT = 0x4300A3, + CMSG_CALENDAR_REMOVE_INVITE = 0x43009F, + CMSG_CALENDAR_RSVP = 0x4300A0, + CMSG_CALENDAR_STATUS = 0x4300A1, + CMSG_CALENDAR_UPDATE_EVENT = 0x4300AA, + CMSG_CANCEL_AURA = 0x3D0060, + CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x3E0082, + CMSG_CANCEL_CAST = 0x3D0177, + CMSG_CANCEL_CHANNELLING = 0x3D0138, + CMSG_CANCEL_GROWTH_AURA = 0x3D0140, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3D00D0, + CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x3D005F, + CMSG_CANCEL_MOUNT_AURA = 0x3D0153, + CMSG_CANCEL_QUEUED_SPELL = 0x3D002B, + CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3E008D, + CMSG_CANCEL_TRADE = 0x3D0006, + CMSG_CAN_DUEL = 0x43008E, + CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x430134, + CMSG_CAST_SPELL = 0x3D0174, + CMSG_CATALOG_SHOP_LICENSE_GAME_DATA_REQUEST = 0x4300FD, + CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x2D0002, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x3D0213, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3D0214, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3D01F4, + CMSG_CHANGE_REALM_TICKET = 0x430129, + CMSG_CHANGE_SUB_GROUP = 0x430078, + CMSG_CHARACTER_CHECK_UPGRADE = 0x4300F5, + CMSG_CHARACTER_RENAME_REQUEST = 0x4300F0, + CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x4300F3, + CMSG_CHARACTER_UPGRADE_START = 0x4300F4, + CMSG_CHAR_CUSTOMIZE = 0x4300B9, + CMSG_CHAR_DELETE = 0x4300CB, + CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x4300BF, + CMSG_CHAT_ADDON_MESSAGE = 0x2C002A, + CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2C002B, + CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x2C0032, + CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x2C001F, + CMSG_CHAT_CHANNEL_BAN = 0x2C001D, + CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x2C0022, + CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x2C0012, + CMSG_CHAT_CHANNEL_INVITE = 0x2C001B, + CMSG_CHAT_CHANNEL_KICK = 0x2C001C, + CMSG_CHAT_CHANNEL_LIST = 0x2C0011, + CMSG_CHAT_CHANNEL_MODERATE = 0x2C0016, + CMSG_CHAT_CHANNEL_MODERATOR = 0x2C0017, + CMSG_CHAT_CHANNEL_OWNER = 0x2C0015, + CMSG_CHAT_CHANNEL_PASSWORD = 0x2C0013, + CMSG_CHAT_CHANNEL_SET_OWNER = 0x2C0014, + CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x2C0020, + CMSG_CHAT_CHANNEL_UNBAN = 0x2C001E, + CMSG_CHAT_CHANNEL_UNMODERATOR = 0x2C0018, + CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x2C0021, + CMSG_CHAT_DROP_CAUTIONARY_CHAT_MESSAGE = 0x2C000A, + CMSG_CHAT_JOIN_CHANNEL = 0x2C0000, + CMSG_CHAT_LEAVE_CHANNEL = 0x2C0001, + CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT = 0x2C0031, + CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY = 0x2C0030, + CMSG_CHAT_MESSAGE_AFK = 0x2C000F, + CMSG_CHAT_MESSAGE_CHANNEL = 0x2C0007, + CMSG_CHAT_MESSAGE_DND = 0x2C0010, + CMSG_CHAT_MESSAGE_EMOTE = 0x2C0024, + CMSG_CHAT_MESSAGE_GUILD = 0x2C000D, + CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x2C0028, + CMSG_CHAT_MESSAGE_OFFICER = 0x2C000E, + CMSG_CHAT_MESSAGE_PARTY = 0x2C0026, + CMSG_CHAT_MESSAGE_RAID = 0x2C0027, + CMSG_CHAT_MESSAGE_RAID_WARNING = 0x2C0029, + CMSG_CHAT_MESSAGE_SAY = 0x2C0023, + CMSG_CHAT_MESSAGE_WHISPER = 0x2C0008, + CMSG_CHAT_MESSAGE_YELL = 0x2C0025, + CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x2C0005, + CMSG_CHAT_REPORT_FILTERED = 0x2C0004, + CMSG_CHAT_REPORT_IGNORED = 0x2C0003, + CMSG_CHAT_SEND_CAUTIONARY_CHANNEL_MESSAGE = 0x2C000B, + CMSG_CHAT_SEND_CAUTIONARY_CHAT_MESSAGE = 0x2C0009, + CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x2C0006, + CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x430071, + CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3D010E, + CMSG_CHOICE_RESPONSE = 0x3D017C, + CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x3D028A, + CMSG_CLAIM_WEEKLY_REWARD = 0x3D0267, + CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3D02C4, + CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3D00C7, + CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3D02C6, + CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3D02C3, + CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3D02C2, + CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3D02C7, + CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3D00C6, + CMSG_CLEAR_NEW_APPEARANCE = 0x2A0005, + CMSG_CLEAR_RAID_MARKER = 0x3D0058, + CMSG_CLEAR_TRADE_ITEM = 0x3D0008, + CMSG_CLIENT_PORT_GRAVEYARD = 0x3E00C9, + CMSG_CLOSE_INTERACTION = 0x3E0028, + CMSG_CLOSE_QUEST_CHOICE = 0x3D017D, + CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x3D0292, + CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3D02C8, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x43014C, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x43014A, + CMSG_CLUB_FINDER_POST = 0x430147, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x43014E, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x430148, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x430149, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x43014D, + CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x43014F, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x43014B, + CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x43016A, + CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x430126, + CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x43005D, + CMSG_COMMENTATOR_ENABLE = 0x43001C, + CMSG_COMMENTATOR_ENTER_INSTANCE = 0x430020, + CMSG_COMMENTATOR_EXIT_INSTANCE = 0x430021, + CMSG_COMMENTATOR_GET_MAP_INFO = 0x43001D, + CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x43001F, + CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x43001E, + CMSG_COMMENTATOR_SPECTATE = 0x430168, + CMSG_COMMENTATOR_START_WARGAME = 0x43001B, + CMSG_COMMERCE_TOKEN_GET_COUNT = 0x430114, + CMSG_COMMERCE_TOKEN_GET_LOG = 0x43011E, + CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x430115, + CMSG_COMPLAINT = 0x430098, + CMSG_COMPLETE_CINEMATIC = 0x3E00E7, + CMSG_COMPLETE_MOVIE = 0x3E0078, + CMSG_CONFIRM_ARTIFACT_RESPEC = 0x3D005D, + CMSG_CONFIRM_PROFESSION_RESPEC = 0x3D00CA, + CMSG_CONFIRM_RESPEC_WIPE = 0x3D00C9, + CMSG_CONNECT_TO_FAILED = 0x430000, + CMSG_CONSUMABLE_TOKEN_BUY = 0x430119, + CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x43011A, + CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x430118, + CMSG_CONSUMABLE_TOKEN_REDEEM = 0x43011C, + CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x43011D, + CMSG_CONTENT_TRACKING_START_TRACKING = 0x3D02D8, + CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3D02D9, + CMSG_CONTRIBUTION_CONTRIBUTE = 0x3E00FF, + CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3E0100, + CMSG_CONVERSATION_CINEMATIC_READY = 0x3E00E9, + CMSG_CONVERSATION_LINE_STARTED = 0x3E00E8, + CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3D02E9, + CMSG_CONVERT_RAID = 0x43007A, + CMSG_CONVERT_TIMERUNNING_CHARACTER = 0x43018D, + CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3E0113, + CMSG_CRAFTING_ORDER_CANCEL = 0x3E0120, + CMSG_CRAFTING_ORDER_CLAIM = 0x3E011D, + CMSG_CRAFTING_ORDER_CREATE = 0x3E0119, + CMSG_CRAFTING_ORDER_FULFILL = 0x3E011F, + CMSG_CRAFTING_ORDER_GET_NPC_REWARD_INFO = 0x3E011C, + CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3E011B, + CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3E011A, + CMSG_CRAFTING_ORDER_REJECT = 0x3E0121, + CMSG_CRAFTING_ORDER_RELEASE = 0x3E011E, + CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x3E0122, + CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x3E0123, + CMSG_CREATE_CHARACTER = 0x430070, + CMSG_CREATE_SHIPMENT = 0x3D01DD, + CMSG_DB_QUERY_BULK = 0x430010, + CMSG_DECLINE_GUILD_INVITES = 0x3E00BA, + CMSG_DECLINE_NEIGHBORHOOD_INVITES = 0x3E0134, + CMSG_DECLINE_PETITION = 0x3E00D6, + CMSG_DELETE_EQUIPMENT_SET = 0x3E00A6, + CMSG_DELVE_TELEPORT_OUT = 0x3E0130, + CMSG_DEL_FRIEND = 0x430101, + CMSG_DEL_IGNORE = 0x430105, + CMSG_DESTROY_ITEM = 0x3D016A, + CMSG_DF_BOOT_PLAYER_VOTE = 0x430044, + CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x430036, + CMSG_DF_GET_JOIN_STATUS = 0x430042, + CMSG_DF_GET_SYSTEM_INFO = 0x430041, + CMSG_DF_JOIN = 0x430037, + CMSG_DF_LEAVE = 0x430040, + CMSG_DF_PROPOSAL_RESPONSE = 0x430035, + CMSG_DF_READY_CHECK_RESPONSE = 0x430048, + CMSG_DF_SET_ROLES = 0x430043, + CMSG_DF_TELEPORT = 0x430045, + CMSG_DISCARDED_TIME_SYNC_ACKS = 0x410060, + CMSG_DISCORD_GUILD_LINK = 0x3D02EE, + CMSG_DISCORD_GUILD_UNLINK = 0x3D02EF, + CMSG_DISCORD_REFRESH_AUTH = 0x3D02EC, + CMSG_DISCORD_SET_DISPLAY_NAME_TYPE = 0x3D02ED, + CMSG_DISCORD_SET_GUILD_SETTING = 0x3D02F0, + CMSG_DISMISS_CRITTER = 0x3E0094, + CMSG_DO_COUNTDOWN = 0x430146, + CMSG_DO_MASTER_LOOT_ROLL = 0x3D00CF, + CMSG_DO_READY_CHECK = 0x43005E, + CMSG_DUEL_RESPONSE = 0x3E007D, + CMSG_EJECT_PASSENGER = 0x3D0103, + CMSG_EMOTE = 0x3E00E3, + CMSG_ENABLE_NAGLE = 0x440009, + CMSG_ENABLE_TAXI_NODE = 0x3E003F, + CMSG_ENCOUNTER_JOURNAL_START_ARATHI_RPE = 0x3D030E, + CMSG_ENGINE_SURVEY = 0x430113, + CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x440005, + CMSG_ENUM_CHARACTERS = 0x430014, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x43010D, + CMSG_EXPIRE_BLEEP_TOKENS = 0x4301A3, + CMSG_FAR_SIGHT = 0x3E0083, + CMSG_FETCH_BLEEP_PROXIES = 0x4301A1, + CMSG_GAME_OBJ_REPORT_USE = 0x3E008A, + CMSG_GAME_OBJ_USE = 0x3E0089, + CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3D01D8, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3D01BE, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3D01AA, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3D020F, + CMSG_GARRISON_COMPLETE_MISSION = 0x3D0201, + CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3D01D9, + CMSG_GARRISON_GENERATE_RECRUITS = 0x3D01C1, + CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3D01D0, + CMSG_GARRISON_GET_MAP_DATA = 0x3D01D7, + CMSG_GARRISON_GET_MISSION_REWARD = 0x3D0232, + CMSG_GARRISON_LEARN_TALENT = 0x3D01CC, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3D0203, + CMSG_GARRISON_PURCHASE_BUILDING = 0x3D01A6, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3D01C3, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x3D01F8, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3D01BF, + CMSG_GARRISON_RENAME_FOLLOWER = 0x3D01C0, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x3D01A5, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3D01DB, + CMSG_GARRISON_RESEARCH_TALENT = 0x3D01C4, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3D01A7, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3D01BC, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3D01B3, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3D01C2, + CMSG_GARRISON_SOCKET_TALENT = 0x3D029F, + CMSG_GARRISON_START_MISSION = 0x3D0200, + CMSG_GARRISON_SWAP_BUILDINGS = 0x3D01AB, + CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x430013, + CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x4300E4, + CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x430162, + CMSG_GET_ALL_LICENSED_DECOR_QUANTITIES = 0x2A0034, + CMSG_GET_AVAILABLE_INITIATIVE_REQUEST = 0x3A0002, + CMSG_GET_CHARACTER_CURRENCY_TRANSFER_LOG = 0x2A001F, + CMSG_GET_CLIENT_CHECKOUT_LICENSES = 0x430140, + CMSG_GET_DECOR_REFUND_LIST = 0x2A0031, + CMSG_GET_GARRISON_INFO = 0x3D01A0, + CMSG_GET_INITIATIVE_ACTIVITY_LOG_REQUEST = 0x3A0004, + CMSG_GET_ITEM_PURCHASE_DATA = 0x3E00D1, + CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3D01DC, + CMSG_GET_LAST_CATALOG_FETCH = 0x2A0036, + CMSG_GET_MIRROR_IMAGE_DATA = 0x3D016E, + CMSG_GET_PVP_OPTIONS_ENABLED = 0x43001A, + CMSG_GET_RAF_ACCOUNT_INFO = 0x430150, + CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x430193, + CMSG_GET_REMAINING_GAME_TIME = 0x43011B, + CMSG_GET_TROPHY_LIST = 0x3D01F1, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x43010F, + CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x430120, + CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x430121, + CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x4300BD, + CMSG_GM_TICKET_GET_CASE_STATUS = 0x4300BC, + CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x4300BB, + CMSG_GOSSIP_REFRESH_OPTIONS = 0x3E0112, + CMSG_GOSSIP_SELECT_OPTION = 0x3E0029, + CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x2E0020, + CMSG_GUILD_ADD_RANK = 0x2E0005, + CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x2E0002, + CMSG_GUILD_BANK_ACTIVATE = 0x3E004A, + CMSG_GUILD_BANK_BUY_TAB = 0x3E0058, + CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x3E005A, + CMSG_GUILD_BANK_LOG_QUERY = 0x2E0019, + CMSG_GUILD_BANK_QUERY_TAB = 0x3E0057, + CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x2E001A, + CMSG_GUILD_BANK_SET_TAB_TEXT = 0x2E001D, + CMSG_GUILD_BANK_TEXT_QUERY = 0x2E001E, + CMSG_GUILD_BANK_UPDATE_TAB = 0x3E0059, + CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x3E005B, + CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x2E0017, + CMSG_GUILD_CHANGE_NAME_REQUEST = 0x2E0018, + CMSG_GUILD_DECLINE_INVITATION = 0x43002A, + CMSG_GUILD_DELETE = 0x2E0009, + CMSG_GUILD_DELETE_RANK = 0x2E0006, + CMSG_GUILD_DEMOTE_MEMBER = 0x2E0001, + CMSG_GUILD_EVENT_LOG_QUERY = 0x2E001C, + CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x2E0012, + CMSG_GUILD_GET_OTHERS_OWNED_HOUSES = 0x2E0026, + CMSG_GUILD_GET_RANKS = 0x2E000E, + CMSG_GUILD_GET_ROSTER = 0x2E0014, + CMSG_GUILD_INVITE_BY_NAME = 0x430034, + CMSG_GUILD_LEAVE = 0x2E0003, + CMSG_GUILD_NEWS_UPDATE_STICKY = 0x2E000F, + CMSG_GUILD_OFFICER_REMOVE_MEMBER = 0x2E0004, + CMSG_GUILD_PERMISSIONS_QUERY = 0x2E001B, + CMSG_GUILD_PROMOTE_MEMBER = 0x2E0000, + CMSG_GUILD_QUERY_MEMBERS_FOR_RECIPE = 0x2E000C, + CMSG_GUILD_QUERY_MEMBER_RECIPES = 0x2E000A, + CMSG_GUILD_QUERY_NEWS = 0x2E000D, + CMSG_GUILD_QUERY_RECIPES = 0x2E000B, + CMSG_GUILD_REPLACE_GUILD_MASTER = 0x2E001F, + CMSG_GUILD_REQUEST_RENAME = 0x2E0023, + CMSG_GUILD_REQUEST_RENAME_NAME_CHECK = 0x2E0022, + CMSG_GUILD_REQUEST_RENAME_REFUND = 0x2E0024, + CMSG_GUILD_REQUEST_RENAME_STATUS = 0x2E0021, + CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x2E0010, + CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x2E0011, + CMSG_GUILD_SET_GUILD_MASTER = 0x4300F7, + CMSG_GUILD_SET_MEMBER_NOTE = 0x2E0013, + CMSG_GUILD_SET_RANK_PERMISSIONS = 0x2E0008, + CMSG_GUILD_SHIFT_RANK = 0x2E0007, + CMSG_GUILD_UPDATE_INFO_TEXT = 0x2E0016, + CMSG_GUILD_UPDATE_MOTD_TEXT = 0x2E0015, + CMSG_HEARTH_AND_RESURRECT = 0x3E00A2, + CMSG_HIDE_QUEST_CHOICE = 0x3D017E, + CMSG_HOTFIX_REQUEST = 0x430011, + CMSG_HOUSE_EXTERIOR_LOCK = 0x2F0000, + CMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION = 0x2F0001, + CMSG_HOUSE_INTERIOR_LEAVE_HOUSE = 0x300001, + CMSG_HOUSING_BLUEPRINT_DELETE = 0x310003, + CMSG_HOUSING_BLUEPRINT_EXPORT = 0x310000, + CMSG_HOUSING_BLUEPRINT_IMPORT = 0x310005, + CMSG_HOUSING_BLUEPRINT_RENAME = 0x310002, + CMSG_HOUSING_BLUEPRINT_REQUEST_COLLECTION = 0x310001, + CMSG_HOUSING_BLUEPRINT_REQUEST_CONTENTS = 0x310008, + CMSG_HOUSING_DECOR_DELETE_FROM_STORAGE = 0x32000C, + CMSG_HOUSING_DECOR_LOCK = 0x320005, + CMSG_HOUSING_DECOR_MOVE = 0x320002, + CMSG_HOUSING_DECOR_PLACE = 0x320001, + CMSG_HOUSING_DECOR_REDEEM_DEFERRED_DECOR = 0x320013, + CMSG_HOUSING_DECOR_REMOVE = 0x320004, + CMSG_HOUSING_DECOR_REQUEST_STORAGE = 0x320011, + CMSG_HOUSING_DECOR_SET_DYE_SLOTS = 0x320007, + CMSG_HOUSING_DECOR_SET_EDIT_MODE = 0x320000, + CMSG_HOUSING_DECOR_SET_PET = 0x320003, + CMSG_HOUSING_FIXTURE_CREATE_FIXTURE = 0x330006, + CMSG_HOUSING_FIXTURE_DELETE_FIXTURE = 0x330007, + CMSG_HOUSING_FIXTURE_SET_CORE_FIXTURE = 0x330005, + CMSG_HOUSING_FIXTURE_SET_EDIT_MODE = 0x330000, + CMSG_HOUSING_FIXTURE_SET_HOUSE_SIZE = 0x330003, + CMSG_HOUSING_FIXTURE_SET_HOUSE_TYPE = 0x330004, + CMSG_HOUSING_GET_CURRENT_HOUSE_INFO = 0x370004, + CMSG_HOUSING_GET_PLAYER_PERMISSIONS = 0x370005, + CMSG_HOUSING_HOUSE_STATUS = 0x370003, + CMSG_HOUSING_PHOTO_SHARING_CLEAR_AUTHORIZATION = 0x4301A5, + CMSG_HOUSING_PHOTO_SHARING_COMPLETE_AUTHORIZATION = 0x4301A4, + CMSG_HOUSING_RESET_HOUSE = 0x370008, + CMSG_HOUSING_RESET_KIOSK_MODE = 0x370006, + CMSG_HOUSING_ROOM_ADD = 0x340001, + CMSG_HOUSING_ROOM_APPLY_COMPONENT_MATERIALS = 0x340006, + CMSG_HOUSING_ROOM_MOVE = 0x340004, + CMSG_HOUSING_ROOM_REMOVE = 0x340002, + CMSG_HOUSING_ROOM_ROTATE = 0x340003, + CMSG_HOUSING_ROOM_SET_CEILING_TYPE = 0x340008, + CMSG_HOUSING_ROOM_SET_COMPONENT_THEME = 0x340005, + CMSG_HOUSING_ROOM_SET_DOOR_TYPE = 0x340007, + CMSG_HOUSING_ROOM_SET_LAYOUT_EDIT_MODE = 0x340000, + CMSG_HOUSING_SVCS_ACCEPT_NEIGHBORHOOD_OWNERSHIP = 0x35001E, + CMSG_HOUSING_SVCS_DELETE_ALL_NEIGHBORHOOD_INVITES = 0x350025, + CMSG_HOUSING_SVCS_GET_BNET_FRIEND_NEIGHBORHOODS = 0x350023, + CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_INFO = 0x350021, + CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_NEIGHBORHOOD = 0x350022, + CMSG_HOUSING_SVCS_GET_PLAYER_HOUSES_INFO = 0x350013, + CMSG_HOUSING_SVCS_GET_POTENTIAL_HOUSE_OWNERS = 0x350020, + CMSG_HOUSING_SVCS_GUILD_CREATE_NEIGHBORHOOD = 0x350001, + CMSG_HOUSING_SVCS_HOUSE_FINDER_IGNORE_NEIGHBORHOOD = 0x350026, + CMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT = 0x350007, + CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_BNET_ACCOUNT = 0x350011, + CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_PLAYER = 0x350010, + CMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP = 0x35001F, + CMSG_HOUSING_SVCS_RELINQUISH_HOUSE = 0x35000A, + CMSG_HOUSING_SVCS_START_TUTORIAL = 0x35001A, + CMSG_HOUSING_SVCS_TELEPORT_TO_PLOT = 0x350019, + CMSG_HOUSING_SVCS_UPDATE_HOUSE_SETTINGS = 0x35000B, + CMSG_IGNORE_TRADE = 0x3D0003, + CMSG_INITIATE_ROLE_POLL = 0x430006, + CMSG_INITIATE_TRADE = 0x3D0000, + CMSG_INITIATIVE_UPDATE_ACTIVE_NEIGHBORHOOD = 0x3F0000, + CMSG_INSPECT = 0x3E00CB, + CMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x430061, + CMSG_INSTANCE_LOCK_RESPONSE = 0x3E00A7, + CMSG_INVITE_PLAYER_TO_NEIGHBORHOOD = 0x43019B, + CMSG_ISLAND_QUEUE = 0x3D0263, + CMSG_ITEM_PURCHASE_REFUND = 0x3E00D2, + CMSG_ITEM_TEXT_QUERY = 0x3D0210, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x3D0090, + CMSG_JOIN_RATED_BATTLEGROUND = 0x3D0025, + CMSG_KEEP_ALIVE = 0x4300AB, + CMSG_KEYBOUND_OVERRIDE = 0x3D00E5, + CMSG_KIOSK_ENABLE_GOD_MODE = 0x3D009A, + CMSG_LATENCY_REPORT = 0x44000F, + CMSG_LEARN_PVP_TALENTS = 0x3E00FE, + CMSG_LEARN_TALENTS = 0x3E00FC, + CMSG_LEAVE_GROUP = 0x430075, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x3D0091, + CMSG_LFG_LIST_APPLY_TO_GROUP = 0x43003B, + CMSG_LFG_LIST_CANCEL_APPLICATION = 0x43003C, + CMSG_LFG_LIST_CONFIRM_CENSORED_ACTIVE_ENTRY = 0x4301AB, + CMSG_LFG_LIST_DECLINE_APPLICANT = 0x43003D, + CMSG_LFG_LIST_GET_STATUS = 0x430039, + CMSG_LFG_LIST_INVITE_APPLICANT = 0x43003E, + CMSG_LFG_LIST_INVITE_RESPONSE = 0x43003F, + CMSG_LFG_LIST_JOIN = 0x3D0257, + CMSG_LFG_LIST_LEAVE = 0x430038, + CMSG_LFG_LIST_SEARCH = 0x43003A, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x3D0258, + CMSG_LFG_LOREWALKING_UPDATE_REQUEST = 0x3D0259, + CMSG_LIST_INVENTORY = 0x3E0036, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x4300E7, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x4300E6, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x4300E5, + CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x4300E8, + CMSG_LOADING_SCREEN_NOTIFY = 0x430024, + CMSG_LOAD_SELECTED_TROPHY = 0x3D01F2, + CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x430175, + CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x43016C, + CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x43017E, + CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x430173, + CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x43016F, + CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x43016B, + CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x43016E, + CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x430174, + CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x43016D, + CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x430170, + CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x430171, + CMSG_LOGOUT_CANCEL = 0x3E0073, + CMSG_LOGOUT_INSTANT = 0x3E0074, + CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3E0127, + CMSG_LOGOUT_REQUEST = 0x3E0072, + CMSG_LOG_DISCONNECT = 0x440007, + CMSG_LOG_STREAMING_ERROR = 0x44000B, + CMSG_LOOT_ITEM = 0x3D00CD, + CMSG_LOOT_MONEY = 0x3D00CC, + CMSG_LOOT_RELEASE = 0x3D00D1, + CMSG_LOOT_ROLL = 0x3D00D2, + CMSG_LOOT_UNIT = 0x3D00CB, + CMSG_LOW_LEVEL_RAID1 = 0x4300CF, + CMSG_LOW_LEVEL_RAID2 = 0x3E00AE, + CMSG_MAIL_CREATE_TEXT_ITEM = 0x3E00DD, + CMSG_MAIL_DELETE = 0x3D00E7, + CMSG_MAIL_GET_LIST = 0x3E00D8, + CMSG_MAIL_MARK_AS_READ = 0x3E00DC, + CMSG_MAIL_RETURN_TO_SENDER = 0x430081, + CMSG_MAIL_TAKE_ITEM = 0x3E00DA, + CMSG_MAIL_TAKE_MONEY = 0x3E00D9, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3D00E8, + CMSG_MASTER_LOOT_ITEM = 0x3D00CE, + CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3E0055, + CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x3E0052, + CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x3E0050, + CMSG_MESSAGE_WHISPER = 0x440011, + CMSG_MINIMAP_PING = 0x430077, + CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3D0036, + CMSG_MOUNT_CLEAR_FANFARE = 0x2A0003, + CMSG_MOUNT_SET_FAVORITE = 0x43005C, + CMSG_MOUNT_SPECIAL_ANIM = 0x3D0154, + CMSG_MOVE_ADD_IMPULSE_ACK = 0x41006E, + CMSG_MOVE_APPLY_INERTIA_ACK = 0x41006C, + CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x410033, + CMSG_MOVE_CHANGE_TRANSPORT = 0x41004E, + CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x410053, + CMSG_MOVE_COLLISION_DISABLE_ACK = 0x410058, + CMSG_MOVE_COLLISION_ENABLE_ACK = 0x410059, + CMSG_MOVE_DISABLE_JUMPING_ACK = 0x410086, + CMSG_MOVE_DISABLE_STRAFING_ACK = 0x410087, + CMSG_MOVE_DISMISS_VEHICLE = 0x410052, + CMSG_MOVE_DOUBLE_JUMP = 0x410007, + CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x41003C, + CMSG_MOVE_ENABLE_FULL_SPEED_PITCHING_ACK = 0x410085, + CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK = 0x410084, + CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x410042, + CMSG_MOVE_FALL_LAND = 0x410017, + CMSG_MOVE_FALL_RESET = 0x410037, + CMSG_MOVE_FEATHER_FALL_ACK = 0x41003A, + CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x41004D, + CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x41004C, + CMSG_MOVE_FORCE_GRAVITY_MODIFIER_CHANGE_ACK = 0x410022, + CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x410051, + CMSG_MOVE_FORCE_ROOT_ACK = 0x41002C, + CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x41002A, + CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x410029, + CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x410040, + CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x41002B, + CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x410041, + CMSG_MOVE_FORCE_UNROOT_ACK = 0x41002D, + CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x41003F, + CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x410054, + CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x410055, + CMSG_MOVE_GUILD_BANK_ITEM = 0x3E004F, + CMSG_MOVE_HEARTBEAT = 0x41002E, + CMSG_MOVE_HOVER_ACK = 0x410031, + CMSG_MOVE_INERTIA_DISABLE_ACK = 0x410056, + CMSG_MOVE_INERTIA_ENABLE_ACK = 0x410057, + CMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE_ACK = 0x410083, + CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x410064, + CMSG_MOVE_JUMP = 0x410006, + CMSG_MOVE_KNOCK_BACK_ACK = 0x410030, + CMSG_MOVE_REMOVE_INERTIA_ACK = 0x41006D, + CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x410035, + CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x410034, + CMSG_MOVE_SET_ADV_FLY = 0x410070, + CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x410078, + CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x410073, + CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x410079, + CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x410076, + CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x410077, + CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x410080, + CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x410075, + CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x410074, + CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x41007E, + CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x41007A, + CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x41007B, + CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x41007D, + CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x41007C, + CMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING_ACK = 0x410088, + CMSG_MOVE_SET_CANNOT_SWIM_ACK = 0x410046, + CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x41006F, + CMSG_MOVE_SET_CAN_DRIVE_ACK = 0x410071, + CMSG_MOVE_SET_CAN_FLY_ACK = 0x410045, + CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x410043, + CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x41005A, + CMSG_MOVE_SET_FACING = 0x410027, + CMSG_MOVE_SET_FACING_HEARTBEAT = 0x41007F, + CMSG_MOVE_SET_FLY = 0x410047, + CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x410044, + CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x410061, + CMSG_MOVE_SET_PITCH = 0x410028, + CMSG_MOVE_SET_RUN_MODE = 0x41000E, + CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x410024, + CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x410032, + CMSG_MOVE_SET_WALK_MODE = 0x41000F, + CMSG_MOVE_SPLINE_DONE = 0x410036, + CMSG_MOVE_START_ASCEND = 0x410048, + CMSG_MOVE_START_BACKWARD = 0x410001, + CMSG_MOVE_START_DESCEND = 0x41004F, + CMSG_MOVE_START_DRIVE_FORWARD = 0x410072, + CMSG_MOVE_START_FORWARD = 0x410000, + CMSG_MOVE_START_PITCH_DOWN = 0x41000C, + CMSG_MOVE_START_PITCH_UP = 0x41000B, + CMSG_MOVE_START_STRAFE_LEFT = 0x410003, + CMSG_MOVE_START_STRAFE_RIGHT = 0x410004, + CMSG_MOVE_START_SWIM = 0x410018, + CMSG_MOVE_START_TURN_LEFT = 0x410008, + CMSG_MOVE_START_TURN_RIGHT = 0x410009, + CMSG_MOVE_STOP = 0x410002, + CMSG_MOVE_STOP_ASCEND = 0x410049, + CMSG_MOVE_STOP_PITCH = 0x41000D, + CMSG_MOVE_STOP_STRAFE = 0x410005, + CMSG_MOVE_STOP_SWIM = 0x410019, + CMSG_MOVE_STOP_TURN = 0x41000A, + CMSG_MOVE_TELEPORT_ACK = 0x410016, + CMSG_MOVE_TIME_SKIPPED = 0x410039, + CMSG_MOVE_UPDATE_FALL_SPEED = 0x410038, + CMSG_MOVE_WATER_WALK_ACK = 0x41003B, + CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x2D0001, + CMSG_NEIGHBORHOOD_ADD_SECONDARY_OWNER = 0x3B0002, + CMSG_NEIGHBORHOOD_BUY_HOUSE = 0x3B0009, + CMSG_NEIGHBORHOOD_CANCEL_INVITATION = 0x3B0005, + CMSG_NEIGHBORHOOD_CHARTER_ADD_SIGNATURE = 0x390006, + CMSG_NEIGHBORHOOD_CHARTER_CREATE = 0x390001, + CMSG_NEIGHBORHOOD_CHARTER_EDIT = 0x390003, + CMSG_NEIGHBORHOOD_CHARTER_FINALIZE = 0x390004, + CMSG_NEIGHBORHOOD_CHARTER_OPEN_CONFIRMATION_UI = 0x390000, + CMSG_NEIGHBORHOOD_CHARTER_SEND_SIGNATURE_REQUEST = 0x390007, + CMSG_NEIGHBORHOOD_EVICT_PLOT = 0x3B000F, + CMSG_NEIGHBORHOOD_GET_INVITES = 0x3B0008, + CMSG_NEIGHBORHOOD_GET_ROSTER = 0x3B000E, + CMSG_NEIGHBORHOOD_INITIATIVE_SERVICE_STATUS_CHECK = 0x3A0000, + CMSG_NEIGHBORHOOD_INVITE_RESIDENT = 0x3B0004, + CMSG_NEIGHBORHOOD_MOVE_HOUSE = 0x3B000A, + CMSG_NEIGHBORHOOD_OFFER_OWNERSHIP = 0x3B000D, + CMSG_NEIGHBORHOOD_OPEN_CORNERSTONE_UI = 0x3B000B, + CMSG_NEIGHBORHOOD_PLAYER_DECLINE_INVITE = 0x3B0006, + CMSG_NEIGHBORHOOD_PLAYER_GET_INVITE = 0x3B0007, + CMSG_NEIGHBORHOOD_REMOVE_SECONDARY_OWNER = 0x3B0003, + CMSG_NEIGHBORHOOD_SET_PUBLIC_FLAG = 0x3B0001, + CMSG_NEIGHBORHOOD_UPDATE_NAME = 0x3B0000, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x3D0086, + CMSG_NEXT_CINEMATIC_CAMERA = 0x3E00E6, + CMSG_NPC_CRAFTING_ORDER_REQUEST = 0x3E0131, + CMSG_OBJECT_UPDATE_FAILED = 0x3D002C, + CMSG_OBJECT_UPDATE_RESCUED = 0x3D002D, + CMSG_OFFER_PETITION = 0x3D0289, + CMSG_OPENING_CINEMATIC = 0x3E00E5, + CMSG_OPEN_ITEM = 0x3D0211, + CMSG_OPEN_MISSION_NPC = 0x3D01D2, + CMSG_OPEN_SHIPMENT_NPC = 0x3D01DA, + CMSG_OPEN_TRADESKILL_NPC = 0x3D01E5, + CMSG_OPT_OUT_OF_LOOT = 0x3E0091, + CMSG_OVERRIDE_SCREEN_FLASH = 0x3E00BB, + CMSG_PARTY_INVITE = 0x430030, + CMSG_PARTY_INVITE_RESPONSE = 0x430032, + CMSG_PARTY_UNINVITE = 0x430073, + CMSG_PERFORM_ITEM_INTERACTION = 0x3D00F0, + CMSG_PERKS_PROGRAM_GET_RECENT_PURCHASES = 0x2A0018, + CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3D02B1, + CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT = 0x3D02B4, + CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x2A0017, + CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3D02B3, + CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3D02B5, + CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3D02B6, + CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3D02B2, + CMSG_PETITION_BUY = 0x3E005D, + CMSG_PETITION_RENAME_GUILD = 0x4300F8, + CMSG_PETITION_SHOW_LIST = 0x3E005C, + CMSG_PETITION_SHOW_SIGNATURES = 0x3E005E, + CMSG_PET_ABANDON = 0x3E0021, + CMSG_PET_ABANDON_BY_NUMBER = 0x3E0022, + CMSG_PET_ACTION = 0x3E001F, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x3D0095, + CMSG_PET_BATTLE_INPUT = 0x43006D, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3D00E6, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x3D0094, + CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x43006E, + CMSG_PET_BATTLE_REQUEST_PVP = 0x3D008E, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x3D008F, + CMSG_PET_BATTLE_REQUEST_WILD = 0x3D008C, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x3D0096, + CMSG_PET_CANCEL_AURA = 0x3E0023, + CMSG_PET_CAST_SPELL = 0x3D0173, + CMSG_PET_RENAME = 0x4300B0, + CMSG_PET_SET_ACTION = 0x3E001E, + CMSG_PET_SPELL_AUTOCAST = 0x3E0024, + CMSG_PET_STOP_ATTACK = 0x3E0020, + CMSG_PING = 0x440006, + CMSG_PLAYER_LOGIN = 0x430016, + CMSG_PUSH_QUEST_TO_PARTY = 0x3E0034, + CMSG_PVP_LOG_DATA = 0x3D0028, + CMSG_QUERY_BATTLE_PET_NAME = 0x3D0147, + CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x43008C, + CMSG_QUERY_CORPSE_TRANSPORT = 0x43008D, + CMSG_QUERY_COUNTDOWN_TIMER = 0x3D005B, + CMSG_QUERY_CREATURE = 0x3D0141, + CMSG_QUERY_GAME_OBJECT = 0x3D0142, + CMSG_QUERY_GARRISON_PET_NAME = 0x3D0148, + CMSG_QUERY_GUILD_INFO = 0x4300B6, + CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3E009B, + CMSG_QUERY_NEIGHBORHOOD_INFO = 0x4300B7, + CMSG_QUERY_NEXT_MAIL_TIME = 0x3E00DB, + CMSG_QUERY_NPC_TEXT = 0x3D0143, + CMSG_QUERY_PAGE_TEXT = 0x3D0145, + CMSG_QUERY_PETITION = 0x3D0149, + CMSG_QUERY_PET_NAME = 0x3D0146, + CMSG_QUERY_PLAYER_NAMES = 0x440010, + CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x44000E, + CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x44000D, + CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3D0021, + CMSG_QUERY_QUEST_INFO = 0x3D0144, + CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3D0022, + CMSG_QUERY_REALM_NAME = 0x4300B5, + CMSG_QUERY_SCENARIO_POI = 0x430082, + CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3D02FA, + CMSG_QUERY_TIME = 0x3E0071, + CMSG_QUERY_TREASURE_PICKER = 0x3D0235, + CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3D02FB, + CMSG_QUEST_CONFIRM_ACCEPT = 0x3E0033, + CMSG_QUEST_DRIVEN_SCENARIO_STATE_CHANGE = 0x3D02F6, + CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3E002D, + CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x3E002F, + CMSG_QUEST_GIVER_CLOSE_QUEST = 0x3E00EC, + CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3E002E, + CMSG_QUEST_GIVER_HELLO = 0x3E002B, + CMSG_QUEST_GIVER_QUERY_QUEST = 0x3E002C, + CMSG_QUEST_GIVER_REQUEST_REWARD = 0x3E0030, + CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x3E0032, + CMSG_QUEST_GIVER_STATUS_QUERY = 0x3E0031, + CMSG_QUEST_LOG_REMOVE_QUEST = 0x3E00D0, + CMSG_QUEST_POI_QUERY = 0x4300DE, + CMSG_QUEST_PUSH_RESULT = 0x3E0035, + CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x3D027B, + CMSG_QUEST_SESSION_REQUEST_START = 0x3D027A, + CMSG_QUEST_SESSION_REQUEST_STOP = 0x43015B, + CMSG_QUEUED_MESSAGES_END = 0x44000A, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x430132, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x430131, + CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x430160, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x430130, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x43012F, + CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3E009F, + CMSG_RAF_CLAIM_NEXT_REWARD = 0x430151, + CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x430153, + CMSG_RAF_RECRUIT_PRESENCE_SUBSCRIBE = 0x430127, + CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x430152, + CMSG_RANDOM_ROLL = 0x430080, + CMSG_READY_CHECK_RESPONSE = 0x43005F, + CMSG_READ_ITEM = 0x3D0212, + CMSG_RECENT_ALLY_REQUEST_DATA = 0x430198, + CMSG_RECENT_ALLY_SET_NOTE = 0x430199, + CMSG_RECLAIM_CORPSE = 0x3E0076, + CMSG_REFRESH_BLEEP_TOKENS = 0x4301A2, + CMSG_REFRESH_ENTITLEMENTS_ON_ORDER_COMPLETE = 0x43019C, + CMSG_REGISTER_FAST_LOGIN = 0x430172, + CMSG_REMOVE_NEW_ITEM = 0x3D0239, + CMSG_REMOVE_RAF_RECRUIT = 0x430154, + CMSG_REORDER_CHARACTERS = 0x430015, + CMSG_REPAIR_ITEM = 0x3E0087, + CMSG_REPLACE_TROPHY = 0x3D01F3, + CMSG_REPOP_REQUEST = 0x3E00C8, + CMSG_REPORT_PVP_PLAYER_AFK = 0x3E008F, + CMSG_REPORT_SERVER_LAG = 0x3D0273, + CMSG_REPORT_STUCK_IN_COMBAT = 0x3D0274, + CMSG_REQUEST_ACCOUNT_DATA = 0x4300C3, + CMSG_REQUEST_AREA_POI_UPDATE = 0x3D0237, + CMSG_REQUEST_BATTLEFIELD_STATUS = 0x430008, + CMSG_REQUEST_CEMETERY_LIST = 0x3D0023, + CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x4300B8, + CMSG_REQUEST_CHAT_LOGIN = 0x430028, + CMSG_REQUEST_COVENANT_CALLINGS = 0x3D0265, + CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3E00CC, + CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x2A001E, + CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x3D029E, + CMSG_REQUEST_GUILD_PARTY_STATE = 0x3D005A, + CMSG_REQUEST_GUILD_REWARDS_LIST = 0x3D0059, + CMSG_REQUEST_INSTANCE_ENCOUNTER_EVENT_SYNC = 0x3D0192, + CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x3D0275, + CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x3D017F, + CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3D00BB, + CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3D00BC, + CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3D02F7, + CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x430023, + CMSG_REQUEST_PARTY_MEMBER_STATS = 0x43007F, + CMSG_REQUEST_PET_INFO = 0x3E0025, + CMSG_REQUEST_PLAYED_TIME = 0x3D014C, + CMSG_REQUEST_PVP_REWARDS = 0x3D0041, + CMSG_REQUEST_RAID_INFO = 0x4300F9, + CMSG_REQUEST_RATED_PVP_INFO = 0x43000F, + CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x430196, + CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x3D0238, + CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3D0042, + CMSG_REQUEST_STABLED_PETS = 0x3E0026, + CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x2A0023, + CMSG_REQUEST_SURVEY = 0x3D030D, + CMSG_REQUEST_TREASURE_PUNCH_LIST_ITEMS = 0x3D0311, + CMSG_REQUEST_VEHICLE_EXIT = 0x3D00FE, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3D0100, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3D00FF, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3D0101, + CMSG_REQUEST_WEEKLY_REWARDS = 0x3D0268, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3D0236, + CMSG_RESET_CHALLENGE_MODE = 0x3D00B9, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3D00BA, + CMSG_RESET_INSTANCES = 0x430094, + CMSG_RESURRECT_RESPONSE = 0x4300AF, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x3D01F5, + CMSG_RIDE_VEHICLE_INTERACT = 0x3D0102, + CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x43017B, + CMSG_SAVE_CUF_PROFILES = 0x3D0037, + CMSG_SAVE_EQUIPMENT_SET = 0x3E00A5, + CMSG_SAVE_GUILD_EMBLEM = 0x3D0184, + CMSG_SAVE_PERSONAL_EMBLEM = 0x3D0185, + CMSG_SCENE_PLAYBACK_CANCELED = 0x3D00E2, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x3D00E1, + CMSG_SCENE_TRIGGER_EVENT = 0x3D00E3, + CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3D02DB, + CMSG_SELECT_DELVE_ENTRANCE_TIER = 0x3E0136, + CMSG_SELECT_WOW_LABS_AREA = 0x3D02FC, + CMSG_SELF_RES = 0x3E00D3, + CMSG_SELL_ALL_JUNK_ITEMS = 0x3E0038, + CMSG_SELL_ITEM = 0x3E0037, + CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x430128, + CMSG_SEND_CONTACT_LIST = 0x4300FF, + CMSG_SEND_MAIL = 0x430026, + CMSG_SEND_PING_COOLDOWN = 0x3D02DF, + CMSG_SEND_PING_UNIT = 0x3D02DD, + CMSG_SEND_PING_WORLD_POINT = 0x3D02DE, + CMSG_SEND_TEXT_EMOTE = 0x3E001C, + CMSG_SERVER_TIME_OFFSET_REQUEST = 0x4300CA, + CMSG_SERVER_VALIDATION_SIGNATURE_REQUEST = 0x430197, + CMSG_SETUP_WARBAND_GROUPS = 0x43018F, + CMSG_SET_ACTION_BAR_TOGGLES = 0x3E00D4, + CMSG_SET_ACTION_BUTTON = 0x430062, + CMSG_SET_ACTIVE_MOVER = 0x41005B, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x3D0193, + CMSG_SET_ALLOW_RECENT_ALLIES_SEE_LOCATION = 0x3D030F, + CMSG_SET_ASSISTANT_LEADER = 0x43007B, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3D0215, + CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x3D0216, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3D0217, + CMSG_SET_CONTACT_NOTES = 0x430102, + CMSG_SET_CURRENCY_FLAGS = 0x3D0015, + CMSG_SET_DIFFICULTY_ID = 0x3D00E4, + CMSG_SET_DUNGEON_DIFFICULTY = 0x4300AE, + CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x3D013B, + CMSG_SET_EVERYONE_IS_ASSISTANT = 0x430046, + CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x430133, + CMSG_SET_FACTION_AT_WAR = 0x3E0079, + CMSG_SET_FACTION_INACTIVE = 0x3E007B, + CMSG_SET_FACTION_NOT_AT_WAR = 0x3E007A, + CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x3D006B, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3D0219, + CMSG_SET_LOOT_METHOD = 0x430074, + CMSG_SET_LOOT_SPECIALIZATION = 0x3E00E1, + CMSG_SET_PARTY_ASSIGNMENT = 0x43007D, + CMSG_SET_PARTY_LEADER = 0x430076, + CMSG_SET_PET_FAVORITE = 0x3D0012, + CMSG_SET_PET_SLOT = 0x3D0011, + CMSG_SET_PET_SPECIALIZATION = 0x3D0013, + CMSG_SET_PLAYER_DECLINED_NAMES = 0x4300B4, + CMSG_SET_PREFERRED_CEMETERY = 0x3D0024, + CMSG_SET_PVP = 0x3D0189, + CMSG_SET_RAID_DIFFICULTY = 0x43010B, + CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x430047, + CMSG_SET_ROLE = 0x430005, + CMSG_SET_SAVED_INSTANCE_EXTEND = 0x4300B2, + CMSG_SET_SELECTION = 0x3E00CA, + CMSG_SET_SHEATHED = 0x3E001D, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3D0218, + CMSG_SET_STOP_CONVERSATION = 0x3D021E, + CMSG_SET_TAXI_BENCHMARK_MODE = 0x3E008E, + CMSG_SET_TITLE = 0x3D0152, + CMSG_SET_TRADE_CURRENCY = 0x3D000A, + CMSG_SET_TRADE_GOLD = 0x3D0009, + CMSG_SET_TRADE_ITEM = 0x3D0007, + CMSG_SET_USING_PARTY_GARRISON = 0x3D01D4, + CMSG_SET_WAR_MODE = 0x3D018A, + CMSG_SET_WATCHED_FACTION = 0x3E007C, + CMSG_SHOW_TRADE_SKILL = 0x4300F1, + CMSG_SIGN_PETITION = 0x3E00D5, + CMSG_SILENCE_PARTY_TALKER = 0x43007E, + CMSG_SOCIAL_CONTRACT_REQUEST = 0x430176, + CMSG_SOCKET_GEMS = 0x3E0086, + CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3D02E2, + CMSG_SORT_BAGS = 0x3D021A, + CMSG_SORT_BANK_BAGS = 0x3D021B, + CMSG_SPAWN_TRACKING_UPDATE = 0x3D0167, + CMSG_SPECTATE_CHANGE = 0x3D02D3, + CMSG_SPECTATE_END = 0x3D02D5, + CMSG_SPECTATE_SET_NEXT_TARGET = 0x3D02D4, + CMSG_SPELL_CLICK = 0x3E002A, + CMSG_SPELL_EMPOWER_RELEASE = 0x3D0139, + CMSG_SPELL_EMPOWER_RESTART = 0x3D013A, + CMSG_SPIRIT_HEALER_ACTIVATE = 0x3E0045, + CMSG_SPLIT_GUILD_BANK_ITEM = 0x3E0056, + CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x3E0053, + CMSG_SPLIT_ITEM = 0x400008, + CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x3E0051, + CMSG_STAND_STATE_CHANGE = 0x3D0035, + CMSG_START_CHALLENGE_MODE = 0x3E00ED, + CMSG_START_INSTANCE_ABANDON_VOTE = 0x430060, + CMSG_START_SPECTATOR_WAR_GAME = 0x43000B, + CMSG_START_WAR_GAME = 0x43000A, + CMSG_STORE_GUILD_BANK_ITEM = 0x3E004C, + CMSG_SUBMIT_USER_FEEDBACK = 0x4300C2, + CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x3D0293, + CMSG_SUMMON_RESPONSE = 0x430096, + CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x430072, + CMSG_SURRENDER_ARENA = 0x3D0020, + CMSG_SUSPEND_COMMS_ACK = 0x440000, + CMSG_SUSPEND_TOKEN_RESPONSE = 0x440008, + CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3E004E, + CMSG_SWAP_INV_ITEM = 0x400007, + CMSG_SWAP_ITEM = 0x400006, + CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x3E004D, + CMSG_SWAP_SUB_GROUPS = 0x430079, + CMSG_TABARD_VENDOR_ACTIVATE = 0x3D0186, + CMSG_TALK_TO_GOSSIP = 0x3E0027, + CMSG_TAXI_NODE_STATUS_QUERY = 0x3E003E, + CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x3E0040, + CMSG_TAXI_REQUEST_EARLY_LANDING = 0x3E0042, + CMSG_TIERED_ENTRANCE_OPEN = 0x3E0135, + CMSG_TIME_ADJUSTMENT_RESPONSE = 0x41005F, + CMSG_TIME_SYNC_RESPONSE = 0x41005C, + CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x41005E, + CMSG_TIME_SYNC_RESPONSE_FAILED = 0x41005D, + CMSG_TOGGLE_DIFFICULTY = 0x430083, + CMSG_TOGGLE_PVP = 0x3D0188, + CMSG_TOTEM_DESTROYED = 0x3E0093, + CMSG_TOY_CLEAR_FANFARE = 0x2A0004, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x3D0234, + CMSG_TRAINER_BUY_SPELL = 0x3E0044, + CMSG_TRAINER_LIST = 0x3E0043, + CMSG_TRAINING_GROUNDS_JOIN = 0x3E00C6, + CMSG_TRAITS_COMMIT_CONFIG = 0x3D02BC, + CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3D02BA, + CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3D02EB, + CMSG_TRANSMOG_OUTFIT_NEW = 0x3D0044, + CMSG_TRANSMOG_OUTFIT_UPDATE_INFO = 0x3D0045, + CMSG_TRANSMOG_OUTFIT_UPDATE_SITUATIONS = 0x3D0046, + CMSG_TRANSMOG_OUTFIT_UPDATE_SLOTS = 0x3D0047, + CMSG_TURN_IN_PETITION = 0x3E00D7, + CMSG_TUTORIAL = 0x43010C, + CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x3D0264, + CMSG_UNACCEPT_TRADE = 0x3D0005, + CMSG_UNDELETE_CHARACTER = 0x43010E, + CMSG_UNLEARN_SKILL = 0x3E0080, + CMSG_UNLEARN_SPECIALIZATION = 0x3D0057, + CMSG_UPDATE_AADC_STATUS = 0x430166, + CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x3E012F, + CMSG_UPDATE_ACCOUNT_DATA = 0x4300C4, + CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x3D0176, + CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3D01E6, + CMSG_UPDATE_LAST_CATALOG_FETCH = 0x2A0035, + CMSG_UPDATE_MISSILE_TRAJECTORY = 0x410062, + CMSG_UPDATE_RAID_TARGET = 0x43007C, + CMSG_UPDATE_SPELL_VISUAL = 0x3D0175, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x430123, + CMSG_UPGRADE_GARRISON = 0x3D019B, + CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x3D0291, + CMSG_USED_FOLLOW = 0x3D0032, + CMSG_USE_CRITTER_ITEM = 0x3D0108, + CMSG_USE_EQUIPMENT_SET = 0x400001, + CMSG_USE_ITEM = 0x3D016F, + CMSG_USE_TOY = 0x3D0172, + CMSG_VAS_CHECK_TRANSFER_OK = 0x430139, + CMSG_VAS_GET_QUEUE_MINUTES = 0x430138, + CMSG_VAS_GET_SERVICE_STATUS = 0x430137, + CMSG_VIOLENCE_LEVEL = 0x3D0030, + CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x43013D, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x43013E, + CMSG_VOICE_CHAT_LOGIN = 0x43013C, + CMSG_WARDEN3_DATA = 0x430018, + CMSG_WHO = 0x4300AD, + CMSG_WHO_IS = 0x4300AC, + CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3D02D7, + CMSG_WORLD_PORT_RESPONSE = 0x430025, + CMSG_WRAP_ITEM = 0x400000, CMSG_BATTLE_PET_DELETE_PET_CHEAT = CMSG_BATTLE_PET_DELETE_PET + 1, CMSG_PET_BATTLE_WILD_LOCATION_FAIL = CMSG_PET_BATTLE_REQUEST_WILD + 1, @@ -1051,1476 +1067,1489 @@ enum OpcodeClient : uint32 CMSG_TRANSMOGRIFY_ITEMS = CMSG_REQUEST_SCHEDULED_PVP_INFO + 1, }; -inline constexpr std::size_t NUM_CMSG_OPCODES = 1950; +inline constexpr std::size_t NUM_CMSG_OPCODES = 1977; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) { uint32 idInGroup = opcode & 0xFFFF; switch (opcode >> 16) { - case 0x29: return idInGroup < 55 ? idInGroup + 0 : -1; - case 0x2B: return idInGroup < 51 ? idInGroup + 55 : -1; - case 0x2C: return idInGroup < 3 ? idInGroup + 106 : -1; - case 0x2D: return idInGroup < 39 ? idInGroup + 109 : -1; - case 0x2E: return idInGroup < 2 ? idInGroup + 148 : -1; - case 0x2F: return idInGroup < 2 ? idInGroup + 150 : -1; - case 0x30: return idInGroup < 18 ? idInGroup + 152 : -1; - case 0x31: return idInGroup < 8 ? idInGroup + 170 : -1; - case 0x32: return idInGroup < 9 ? idInGroup + 178 : -1; - case 0x33: return idInGroup < 38 ? idInGroup + 187 : -1; - case 0x35: return idInGroup < 9 ? idInGroup + 225 : -1; - case 0x37: return idInGroup < 8 ? idInGroup + 234 : -1; - case 0x38: return idInGroup < 16 ? idInGroup + 242 : -1; - case 0x39: return idInGroup < 16 ? idInGroup + 258 : -1; - case 0x3A: return idInGroup < 779 ? idInGroup + 274 : -1; - case 0x3B: return idInGroup < 309 ? idInGroup + 1053 : -1; - case 0x3C: return idInGroup < 1 ? idInGroup + 1362 : -1; - case 0x3D: return idInGroup < 10 ? idInGroup + 1363 : -1; - case 0x3E: return idInGroup < 137 ? idInGroup + 1373 : -1; - case 0x40: return idInGroup < 422 ? idInGroup + 1510 : -1; - case 0x41: return idInGroup < 18 ? idInGroup + 1932 : -1; + case 0x2A: return idInGroup < 55 ? idInGroup + 0 : -1; + case 0x2C: return idInGroup < 51 ? idInGroup + 55 : -1; + case 0x2D: return idInGroup < 3 ? idInGroup + 106 : -1; + case 0x2E: return idInGroup < 39 ? idInGroup + 109 : -1; + case 0x2F: return idInGroup < 2 ? idInGroup + 148 : -1; + case 0x30: return idInGroup < 2 ? idInGroup + 150 : -1; + case 0x31: return idInGroup < 9 ? idInGroup + 152 : -1; + case 0x32: return idInGroup < 20 ? idInGroup + 161 : -1; + case 0x33: return idInGroup < 8 ? idInGroup + 181 : -1; + case 0x34: return idInGroup < 9 ? idInGroup + 189 : -1; + case 0x35: return idInGroup < 39 ? idInGroup + 198 : -1; + case 0x37: return idInGroup < 9 ? idInGroup + 237 : -1; + case 0x39: return idInGroup < 8 ? idInGroup + 246 : -1; + case 0x3A: return idInGroup < 16 ? idInGroup + 254 : -1; + case 0x3B: return idInGroup < 16 ? idInGroup + 270 : -1; + case 0x3D: return idInGroup < 786 ? idInGroup + 286 : -1; + case 0x3E: return idInGroup < 311 ? idInGroup + 1072 : -1; + case 0x3F: return idInGroup < 1 ? idInGroup + 1383 : -1; + case 0x40: return idInGroup < 10 ? idInGroup + 1384 : -1; + case 0x41: return idInGroup < 137 ? idInGroup + 1394 : -1; + case 0x43: return idInGroup < 428 ? idInGroup + 1531 : -1; + case 0x44: return idInGroup < 18 ? idInGroup + 1959 : -1; default: return -1; } } enum OpcodeServer : uint32 { - SMSG_ABORT_NEW_WORLD = 0x420030, - SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x420353, - SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x420358, - SMSG_ACCOUNT_COSMETIC_ADDED = 0x420311, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x4202F9, - SMSG_ACCOUNT_DATA_TIMES = 0x4201B4, - SMSG_ACCOUNT_EXPORT_RESPONSE = 0x420342, - SMSG_ACCOUNT_EXTERIOR_FIXTURE_COLLECTION_UPDATE = 0x420054, - SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x420049, - SMSG_ACCOUNT_HOUSE_TYPE_COLLECTION_UPDATE = 0x420057, - SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x42035E, - SMSG_ACCOUNT_MOUNT_REMOVED = 0x420047, - SMSG_ACCOUNT_MOUNT_UPDATE = 0x420046, - SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x420310, - SMSG_ACCOUNT_ROOM_COLLECTION_UPDATE = 0x420053, - SMSG_ACCOUNT_ROOM_MATERIAL_COLLECTION_UPDATE = 0x420056, - SMSG_ACCOUNT_ROOM_THEME_COLLECTION_UPDATE = 0x420055, - SMSG_ACCOUNT_STORE_CURRENCY_UPDATE = 0x42032B, - SMSG_ACCOUNT_STORE_FRONT_UPDATE = 0x42032C, - SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED = 0x42032D, - SMSG_ACCOUNT_STORE_RESULT = 0x42032E, - SMSG_ACCOUNT_TOY_UPDATE = 0x420048, - SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x420050, - SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x42004F, - SMSG_ACCOUNT_WARBAND_SCENE_UPDATE = 0x420052, - SMSG_ACHIEVEMENT_DELETED = 0x420191, - SMSG_ACHIEVEMENT_EARNED = 0x4200EB, - SMSG_ACTIVATE_ESSENCE_FAILED = 0x5F0021, - SMSG_ACTIVATE_SOULBIND_FAILED = 0x5F0023, - SMSG_ACTIVATE_TAXI_REPLY = 0x420127, - SMSG_ACTIVE_GLYPHS = 0x620047, - SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x4201EF, - SMSG_ADDON_LIST_REQUEST = 0x4200EA, - SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x4200E5, - SMSG_ADD_ITEM_PASSIVE = 0x420042, - SMSG_ADD_LOSS_OF_CONTROL = 0x42011A, - SMSG_ADD_RUNE_POWER = 0x420162, - SMSG_ADJUST_SPLINE_DURATION = 0x420073, - SMSG_ADVANCED_COMBAT_LOG = 0x42030E, - SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x420309, - SMSG_AE_LOOT_TARGETS = 0x4200C0, - SMSG_AE_LOOT_TARGET_ACK = 0x4200C1, - SMSG_AI_REACTION = 0x42015F, - SMSG_ALLIED_RACE_DETAILS = 0x4202A2, - SMSG_ALL_ACCOUNT_CRITERIA = 0x420005, - SMSG_ALL_ACHIEVEMENT_DATA = 0x420004, - SMSG_ALL_GUILD_ACHIEVEMENTS = 0x4E0000, - SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x4202E6, - SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x42001D, - SMSG_AREA_POI_UPDATE_RESPONSE = 0x5F0019, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x4201E8, - SMSG_AREA_TRIGGER_DENIED = 0x430004, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x4201C0, - SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x430002, - SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x430003, - SMSG_ARENA_CLEAR_OPPONENTS = 0x4200F1, - SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x4200DA, - SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x4200F0, - SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x420250, - SMSG_ARTIFACT_FORGE_ERROR = 0x42024E, - SMSG_ARTIFACT_RESPEC_PROMPT = 0x42024F, - SMSG_ARTIFACT_XP_GAIN = 0x420295, - SMSG_ATTACKER_STATE_UPDATE = 0x48002C, - SMSG_ATTACK_START = 0x480017, - SMSG_ATTACK_STOP = 0x480018, - SMSG_ATTACK_SWING_ERROR = 0x480026, - SMSG_ATTACK_SWING_LANDED_LOG = 0x480027, - SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x42027E, - SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x42027D, - SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x42027C, - SMSG_AUCTION_CLOSED_NOTIFICATION = 0x42019C, - SMSG_AUCTION_COMMAND_RESULT = 0x420199, - SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x42032F, - SMSG_AUCTION_FAVORITE_LIST = 0x420300, - SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x4202F8, - SMSG_AUCTION_HELLO_RESPONSE = 0x420197, - SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x4202F7, - SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x4202F3, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x4202F4, - SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x4202F6, - SMSG_AUCTION_OUTBID_NOTIFICATION = 0x42019B, - SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x42019D, - SMSG_AUCTION_REPLICATE_RESPONSE = 0x420198, - SMSG_AUCTION_WON_NOTIFICATION = 0x42019A, - SMSG_AURA_POINTS_DEPLETED = 0x620012, - SMSG_AURA_UPDATE = 0x620011, - SMSG_AUTH_CHALLENGE = 0x490000, - SMSG_AUTH_FAILED = 0x420000, - SMSG_AUTH_RESPONSE = 0x420001, - SMSG_AVAILABLE_HOTFIXES = 0x460001, - SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x420330, - SMSG_BAG_CLEANUP_FINISHED = 0x630007, - SMSG_BARBER_SHOP_RESULT = 0x420167, - SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x4202D7, - SMSG_BATTLEFIELD_LIST = 0x480005, - SMSG_BATTLEFIELD_PORT_DENIED = 0x48000B, - SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x480001, - SMSG_BATTLEFIELD_STATUS_FAILED = 0x480004, - SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED = 0x48000E, - SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION = 0x480000, - SMSG_BATTLEFIELD_STATUS_NONE = 0x480003, - SMSG_BATTLEFIELD_STATUS_QUEUED = 0x480002, - SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x48000D, - SMSG_BATTLEGROUND_INFO_THROTTLED = 0x48000C, - SMSG_BATTLEGROUND_INIT = 0x480029, - SMSG_BATTLEGROUND_PLAYER_JOINED = 0x480009, - SMSG_BATTLEGROUND_PLAYER_LEFT = 0x48000A, - SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x480006, - SMSG_BATTLEGROUND_POINTS = 0x480028, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x420238, - SMSG_BATTLENET_CHALLENGE_START = 0x420237, - SMSG_BATTLENET_NOTIFICATION = 0x4202AE, - SMSG_BATTLENET_RESPONSE = 0x4202AD, - SMSG_BATTLE_NET_CONNECTION_STATUS = 0x4202AF, - SMSG_BATTLE_PAY_ACK_FAILED = 0x420233, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x420222, - SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x420223, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x420232, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x420220, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x42021F, - SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x420316, - SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x42021D, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x42021E, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x42021C, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x42021A, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x42021B, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x420221, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x420231, - SMSG_BATTLE_PAY_START_CHECKOUT = 0x4202CB, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x42022F, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x42022E, - SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x4202BE, - SMSG_BATTLE_PETS_HEALED = 0x420095, - SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x420122, - SMSG_BATTLE_PET_DELETED = 0x420092, - SMSG_BATTLE_PET_ERROR = 0x4200E0, - SMSG_BATTLE_PET_JOURNAL = 0x420091, - SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x42008F, - SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x420090, - SMSG_BATTLE_PET_RESTORED = 0x420094, - SMSG_BATTLE_PET_REVOKED = 0x420093, - SMSG_BATTLE_PET_TRAP_LEVEL = 0x42008D, - SMSG_BATTLE_PET_UPDATES = 0x42008C, - SMSG_BIND_POINT_UPDATE = 0x420011, - SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x4200D0, - SMSG_BLACK_MARKET_OUTBID = 0x4200D1, - SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x4200CF, - SMSG_BLACK_MARKET_WON = 0x4200D2, - SMSG_BLEEP_PING = 0x49000C, - SMSG_BONUS_ROLL_EMPTY = 0x4200ED, - SMSG_BOSS_KILL = 0x48002B, - SMSG_BREAK_TARGET = 0x480016, - SMSG_BROADCAST_ACHIEVEMENT = 0x470012, - SMSG_BROADCAST_SUMMON_CAST = 0x4202D9, - SMSG_BROADCAST_SUMMON_RESPONSE = 0x4202DA, - SMSG_BULK_PURCHASE_RESPONSE = 0x420376, - SMSG_BULK_PURCHASE_UPDATE_RESPONSE = 0x420377, - SMSG_BULK_REFUND_RESPONSE = 0x420378, - SMSG_BUY_FAILED = 0x420170, - SMSG_BUY_SUCCEEDED = 0x42016F, - SMSG_CACHE_INFO = 0x46000F, - SMSG_CACHE_VERSION = 0x46000E, - SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x420147, - SMSG_CALENDAR_COMMAND_RESULT = 0x420148, - SMSG_CALENDAR_COMMUNITY_INVITE = 0x420137, - SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x42013F, - SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x420140, - SMSG_CALENDAR_INVITE_ADDED = 0x420138, - SMSG_CALENDAR_INVITE_ALERT = 0x42013C, - SMSG_CALENDAR_INVITE_NOTES = 0x420141, - SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x420142, - SMSG_CALENDAR_INVITE_REMOVED = 0x420139, - SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x42013E, - SMSG_CALENDAR_INVITE_STATUS = 0x42013A, - SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x42013D, - SMSG_CALENDAR_MODERATOR_STATUS = 0x42013B, - SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x420143, - SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x420144, - SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x420145, - SMSG_CALENDAR_SEND_CALENDAR = 0x420135, - SMSG_CALENDAR_SEND_EVENT = 0x420136, - SMSG_CALENDAR_SEND_NUM_PENDING = 0x420146, - SMSG_CAMERA_EFFECT = 0x4201CE, - SMSG_CANCEL_AUTO_REPEAT = 0x420187, - SMSG_CANCEL_COMBAT = 0x480025, - SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x620039, - SMSG_CANCEL_PING_PIN = 0x42003B, - SMSG_CANCEL_PRELOAD_WORLD = 0x42002E, - SMSG_CANCEL_SCENE = 0x4200DF, - SMSG_CANCEL_SPELL_VISUAL = 0x620037, - SMSG_CANCEL_SPELL_VISUAL_KIT = 0x62003B, - SMSG_CAN_DUEL_RESULT = 0x480021, - SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x4202BD, - SMSG_CAPTURE_POINT_REMOVED = 0x480008, - SMSG_CAST_FAILED = 0x62004A, - SMSG_CAS_REFRESH_REMOTE_DATA = 0x420120, - SMSG_CATALOG_SHOP_LICENSE_DATA = 0x4202BF, - SMSG_CATALOG_SHOP_OBTAIN_LICENSE = 0x42036C, - SMSG_CATALOG_SHOP_OPEN_CHECKOUT_RESULT = 0x42035F, - SMSG_CAUTIONARY_CHANNEL_MESSAGE = 0x470009, - SMSG_CAUTIONARY_CHAT_MESSAGE = 0x470008, - SMSG_CHAIN_MISSILE_BOUNCE = 0x42006B, - SMSG_CHALLENGE_MODE_COMPLETE = 0x4200B0, - SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x4200B1, - SMSG_CHALLENGE_MODE_REQUEST_LEADERBOARD_RESULT = 0x4200B8, - SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x4200B7, - SMSG_CHALLENGE_MODE_RESET = 0x4200AF, - SMSG_CHALLENGE_MODE_SET_LEAVER_PENALTY_TIMER = 0x5F0031, - SMSG_CHALLENGE_MODE_START = 0x4200AD, - SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x4200AE, - SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x5F000D, - SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x4202B0, - SMSG_CHANNEL_LIST = 0x47001B, - SMSG_CHANNEL_NOTIFY = 0x470017, - SMSG_CHANNEL_NOTIFY_JOINED = 0x470019, - SMSG_CHANNEL_NOTIFY_LEFT = 0x47001A, - SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x470018, - SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x42026A, - SMSG_CHARACTER_LOGIN_FAILED = 0x4201AE, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x420236, - SMSG_CHARACTER_RENAME_RESULT = 0x42020B, - SMSG_CHARACTER_UPGRADE_ABORTED = 0x420269, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x420268, - SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x42026B, - SMSG_CHARACTER_UPGRADE_STARTED = 0x420267, - SMSG_CHAR_CUSTOMIZE_FAILURE = 0x42018B, - SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x42018C, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x420254, - SMSG_CHAT = 0x470001, - SMSG_CHAT_AUTO_RESPONDED = 0x47000E, - SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x470022, - SMSG_CHAT_DOWN = 0x470014, - SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x470000, - SMSG_CHAT_IS_DOWN = 0x470015, - SMSG_CHAT_NOT_IN_GUILD = 0x470023, - SMSG_CHAT_NOT_IN_PARTY = 0x470006, - SMSG_CHAT_PLAYER_AMBIGUOUS = 0x470004, - SMSG_CHAT_PLAYER_NOTFOUND = 0x47000D, - SMSG_CHAT_RECONNECT = 0x470016, - SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x47001D, - SMSG_CHAT_RESTRICTED = 0x470007, - SMSG_CHAT_SERVER_MESSAGE = 0x47001C, - SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x620002, - SMSG_CHECK_ABANDON_NPE = 0x5F0024, - SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x42001B, - SMSG_CHECK_WARGAME_ENTRY = 0x420027, - SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x420303, - SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x4202EA, - SMSG_CLEAR_ALL_SPELL_CHARGES = 0x620016, - SMSG_CLEAR_BOSS_EMOTES = 0x42005E, - SMSG_CLEAR_COOLDOWN = 0x420164, - SMSG_CLEAR_COOLDOWNS = 0x620015, - SMSG_CLEAR_INITIATIVE_TASK_CRITERIA_PROGRESS = 0x420367, - SMSG_CLEAR_RESURRECT = 0x420013, - SMSG_CLEAR_SPELL_CHARGES = 0x620017, - SMSG_CLEAR_TARGET = 0x480022, - SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x600022, - SMSG_CLOSE_ARTIFACT_FORGE = 0x42024D, - SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x4202E2, - SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x4202E5, - SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x4202E3, - SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x4202E0, - SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x4202E4, - SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x4202E1, - SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x42031B, - SMSG_COIN_REMOVED = 0x4200BF, - SMSG_COMBAT_EVENT_FAILED = 0x480019, - SMSG_COMMENTATOR_MAP_INFO = 0x4201B0, - SMSG_COMMENTATOR_PLAYER_INFO = 0x4201B1, - SMSG_COMMENTATOR_STATE_CHANGED = 0x4201AF, - SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x420279, - SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x420285, - SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x42027B, - SMSG_COMMERCE_TOKEN_UPDATE = 0x42027A, - SMSG_COMPLAINT_RESULT = 0x420155, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x420246, - SMSG_COMPRESSED_PACKET = 0x49000E, - SMSG_CONFIRM_PARTY_INVITE = 0x4202BC, - SMSG_CONNECT_TO = 0x490008, - SMSG_CONSOLE_WRITE = 0x4200DD, - SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x420281, - SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x420280, - SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x42027F, - SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x420283, - SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x420284, - SMSG_CONTACT_LIST = 0x420234, - SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x4202C4, - SMSG_CONTROL_UPDATE = 0x4200EF, - SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x42030C, - SMSG_COOLDOWN_CHEAT = 0x4201E1, - SMSG_COOLDOWN_EVENT = 0x420163, - SMSG_CORPSE_LOCATION = 0x4200F6, - SMSG_CORPSE_RECLAIM_DELAY = 0x4201F2, - SMSG_CORPSE_TRANSPORT_QUERY = 0x4201BC, - SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x600024, - SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x4202A5, - SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x42030D, - SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x42033C, - SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x420338, - SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x420334, - SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x420336, - SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x420332, - SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x420337, - SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x420333, - SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x42033E, - SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x42033A, - SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x420335, - SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x42033D, - SMSG_CRAFT_ENCHANT_RESULT = 0x42033B, - SMSG_CREATE_CHAR = 0x4201AA, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x420245, - SMSG_CREATOR_VISUALS_OVERRIDE = 0x420341, - SMSG_CRITERIA_DELETED = 0x420190, - SMSG_CRITERIA_UPDATE = 0x42018A, - SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x42016B, - SMSG_CURRENCY_TRANSFER_LOG = 0x420355, - SMSG_CURRENCY_TRANSFER_RESULT = 0x420354, - SMSG_CUSTOM_LOAD_SCREEN = 0x42006E, - SMSG_DAILY_QUESTS_RESET = 0x600000, - SMSG_DAMAGE_CALC_LOG = 0x620056, - SMSG_DB_REPLY = 0x460000, - SMSG_DEATH_RELEASE_LOC = 0x42017D, - SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x4200FE, - SMSG_DEFENSE_MESSAGE = 0x47000C, - SMSG_DELETE_CHAR = 0x4201AB, - SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x4C0022, - SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x42035A, - SMSG_DESTROY_ARENA_UNIT = 0x4201EA, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x4201A2, - SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x420020, - SMSG_DISENCHANT_CREDIT = 0x42003F, - SMSG_DISMOUNT_RESULT = 0x420010, - SMSG_DISPEL_FAILED = 0x62001E, - SMSG_DISPLAY_GAME_ERROR = 0x420035, - SMSG_DISPLAY_PLAYER_CHOICE = 0x5F0004, - SMSG_DISPLAY_PROMOTION = 0x4200F3, - SMSG_DISPLAY_QUEST_POPUP = 0x60001E, - SMSG_DISPLAY_TOAST = 0x4200CC, - SMSG_DISPLAY_WORLD_TEXT = 0x420296, - SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x620055, - SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x420083, - SMSG_DROP_NEW_CONNECTION = 0x490007, - SMSG_DUEL_ARRANGED = 0x48001B, - SMSG_DUEL_COMPLETE = 0x48001F, - SMSG_DUEL_COUNTDOWN = 0x48001E, - SMSG_DUEL_IN_BOUNDS = 0x48001D, - SMSG_DUEL_OUT_OF_BOUNDS = 0x48001C, - SMSG_DUEL_REQUESTED = 0x48001A, - SMSG_DUEL_WINNER = 0x480020, - SMSG_DURABILITY_DAMAGE_DEATH = 0x4201ED, - SMSG_EMOTE = 0x420271, - SMSG_ENABLE_BARBER_SHOP = 0x420166, - SMSG_ENCHANTMENT_LOG = 0x4201BD, - SMSG_ENCOUNTER_END = 0x420227, - SMSG_ENCOUNTER_START = 0x420226, - SMSG_END_LIGHTNING_STORM = 0x420152, - SMSG_ENTER_ENCRYPTED_MODE = 0x490004, - SMSG_ENUM_CHARACTERS_RESULT = 0x420018, - SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x42029B, - SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x62000E, - SMSG_EQUIPMENT_SET_ID = 0x42015B, - SMSG_EXPECTED_SPAM_RECORDS = 0x470005, - SMSG_EXPLORATION_EXPERIENCE = 0x420207, - SMSG_EXPORT_ACCOUNT_PROFILE = 0x4200FB, - SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x42030A, - SMSG_FACTION_BONUS_INFO = 0x4201CD, - SMSG_FAILED_PLAYER_CONDITION = 0x5F0002, - SMSG_FAILED_QUEST_TURN_IN = 0x4202B9, - SMSG_FEATURE_SYSTEM_STATUS = 0x420062, - SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x420063, - SMSG_FEIGN_DEATH_RESISTED = 0x4201EC, - SMSG_FETCH_BLEEP_PROXIES_RESPONSE = 0x420381, - SMSG_FISH_ESCAPED = 0x42017A, - SMSG_FISH_NOT_HOOKED = 0x420179, - SMSG_FLIGHT_SPLINE_SYNC = 0x5A005D, - SMSG_FLUSH_COMBAT_LOG_FILE = 0x620010, - SMSG_FORCED_DEATH_UPDATE = 0x42017E, - SMSG_FORCE_ANIM = 0x4201F9, - SMSG_FORCE_ANIMATIONS = 0x4201FA, - SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x42004E, - SMSG_FORCE_SPAWN_TRACKING_UPDATE = 0x600021, - SMSG_FRIEND_STATUS = 0x420235, - SMSG_GAIN_MAW_POWER = 0x42028A, - SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x420066, - SMSG_GAME_OBJECT_BASE = 0x4202D1, - SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x42031A, - SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x420067, - SMSG_GAME_OBJECT_DESPAWN = 0x420068, - SMSG_GAME_OBJECT_INTERACTION = 0x420319, - SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x62003E, - SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x62003D, - SMSG_GAME_OBJECT_RESET_STATE = 0x4201C7, - SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x4202AC, - SMSG_GAME_SPEED_SET = 0x42012B, - SMSG_GAME_TIME_SET = 0x4201B6, - SMSG_GAME_TIME_UPDATE = 0x4201B5, - SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x4C0024, - SMSG_GARRISON_ADD_EVENT = 0x4C0048, - SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x4C0016, - SMSG_GARRISON_ADD_MISSION_RESULT = 0x4C001A, - SMSG_GARRISON_ADD_SPEC_GROUPS = 0x4C004B, - SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x4C004F, - SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x4C002C, - SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x4C0051, - SMSG_GARRISON_BUILDING_ACTIVATED = 0x4C000B, - SMSG_GARRISON_BUILDING_REMOVED = 0x4C0004, - SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x4C0006, - SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x4C001D, - SMSG_GARRISON_CLEAR_COLLECTION = 0x4C0047, - SMSG_GARRISON_CLEAR_EVENT_LIST = 0x4C004A, - SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0x4C004C, - SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x4C0046, - SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x4C0045, - SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x4C003D, - SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x4C001C, - SMSG_GARRISON_CREATE_RESULT = 0x4C000C, - SMSG_GARRISON_DELETE_MISSION_RESULT = 0x4C0023, - SMSG_GARRISON_DELETE_RESULT = 0x4C0035, - SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0x4C002B, - SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0x4C0029, - SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x4C0027, - SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0x4C0028, - SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x4C0026, - SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0x4C002A, - SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x4C0033, - SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x4C0015, - SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x4C001E, - SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x4C003F, - SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x4C0007, - SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x4C0005, - SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x4C0040, - SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x4C0019, - SMSG_GARRISON_MAP_DATA_RESPONSE = 0x4C0042, - SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x4C0020, - SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x4C0043, - SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x4C0025, - SMSG_GARRISON_OPEN_CRAFTER = 0x4C0037, - SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x4C0030, - SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x4C0003, - SMSG_GARRISON_PLOT_PLACED = 0x4C0001, - SMSG_GARRISON_PLOT_REMOVED = 0x4C0002, - SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x4C0034, - SMSG_GARRISON_REMOTE_INFO = 0x4C000A, - SMSG_GARRISON_REMOVE_EVENT = 0x4C0049, - SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x4C002F, - SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x4C002D, - SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x4C0017, - SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0x4C002E, - SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x4C0009, - SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0x4C000E, - SMSG_GARRISON_RESET_TALENT_TREE = 0x4C0013, - SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x4C0014, - SMSG_GARRISON_START_MISSION_RESULT = 0x4C001B, - SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x4C003C, - SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x4C004D, - SMSG_GARRISON_TALENT_COMPLETED = 0x4C000F, - SMSG_GARRISON_TALENT_REMOVED = 0x4C0010, - SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x4C0012, - SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x4C0011, - SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x4C004E, - SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x4C0008, - SMSG_GARRISON_UPDATE_FOLLOWER = 0x4C0018, - SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x4C003E, - SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x4C0050, - SMSG_GARRISON_UPGRADE_RESULT = 0x4C000D, - SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x4C001F, - SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x42001C, - SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x4202C5, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x420209, - SMSG_GET_ALL_LICENSED_DECOR_QUANTITIES_RESPONSE = 0x42037A, - SMSG_GET_DECOR_REFUND_LIST_RESPONSE = 0x420375, - SMSG_GET_GARRISON_INFO_RESULT = 0x4C0000, - SMSG_GET_INITIATIVE_ACTIVITY_LOG_RESULT = 0x420369, - SMSG_GET_INITIATIVE_REWARDS_RESULT = 0x42036A, - SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x420248, - SMSG_GET_PLAYER_INITIATIVE_INFO_RESULT = 0x420368, - SMSG_GET_REALM_HIDDEN_RESULT = 0x42034A, - SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x420282, - SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x42026F, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x420247, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x420243, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x42026E, - SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x420297, - SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x420298, - SMSG_GM_PLAYER_INFO = 0x5F000E, - SMSG_GM_REQUEST_PLAYER_INFO = 0x5F0003, - SMSG_GM_TICKET_CASE_STATUS = 0x42014D, - SMSG_GM_TICKET_SYSTEM_STATUS = 0x42014C, - SMSG_GOD_MODE = 0x4201A5, - SMSG_GOSSIP_COMPLETE = 0x600017, - SMSG_GOSSIP_MESSAGE = 0x600018, - SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x600028, - SMSG_GOSSIP_POI = 0x420240, - SMSG_GOSSIP_QUEST_UPDATE = 0x600019, - SMSG_GOSSIP_REFRESH_OPTIONS = 0x600027, - SMSG_GROUP_ACTION_THROTTLED = 0x420024, - SMSG_GROUP_AUTO_KICK = 0x42023D, - SMSG_GROUP_DECLINE = 0x420239, - SMSG_GROUP_DESTROYED = 0x42023C, - SMSG_GROUP_NEW_LEADER = 0x4200D5, - SMSG_GROUP_REQUEST_DECLINE = 0x42023A, - SMSG_GROUP_UNINVITE = 0x42023B, - SMSG_GUILD_ACHIEVEMENT_DELETED = 0x4E000D, - SMSG_GUILD_ACHIEVEMENT_EARNED = 0x4E000C, - SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x4E000F, - SMSG_GUILD_BANK_LOG_QUERY_RESULTS = 0x4E0027, - SMSG_GUILD_BANK_QUERY_RESULTS = 0x4E0026, - SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY = 0x4E0028, - SMSG_GUILD_BANK_TEXT_QUERY_RESULT = 0x4E002B, - SMSG_GUILD_CHALLENGE_COMPLETED = 0x4E001B, - SMSG_GUILD_CHALLENGE_UPDATE = 0x4E001A, - SMSG_GUILD_CHANGE_NAME_RESULT = 0x4E0025, - SMSG_GUILD_COMMAND_RESULT = 0x4E0002, - SMSG_GUILD_CRITERIA_DELETED = 0x4E000E, - SMSG_GUILD_CRITERIA_UPDATE = 0x4E000B, - SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x4E0040, - SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x4E003F, - SMSG_GUILD_EVENT_DISBANDED = 0x4E0035, - SMSG_GUILD_EVENT_LOG_QUERY_RESULTS = 0x4E002A, - SMSG_GUILD_EVENT_MOTD = 0x4E0036, - SMSG_GUILD_EVENT_NEW_LEADER = 0x4E0034, - SMSG_GUILD_EVENT_PLAYER_JOINED = 0x4E0032, - SMSG_GUILD_EVENT_PLAYER_LEFT = 0x4E0033, - SMSG_GUILD_EVENT_PRESENCE_CHANGE = 0x4E0037, - SMSG_GUILD_EVENT_RANKS_UPDATED = 0x4E0039, - SMSG_GUILD_EVENT_RANK_CHANGED = 0x4E003A, - SMSG_GUILD_EVENT_STATUS_CHANGE = 0x4E0038, - SMSG_GUILD_EVENT_TAB_ADDED = 0x4E003B, - SMSG_GUILD_EVENT_TAB_DELETED = 0x4E003C, - SMSG_GUILD_EVENT_TAB_MODIFIED = 0x4E003D, - SMSG_GUILD_EVENT_TAB_TEXT_CHANGED = 0x4E003E, - SMSG_GUILD_FLAGGED_FOR_RENAME = 0x4E0024, - SMSG_GUILD_HARDCORE_MEMBER_DEATH = 0x4E0004, - SMSG_GUILD_INVITE = 0x4E0012, - SMSG_GUILD_INVITE_DECLINED = 0x4E0030, - SMSG_GUILD_INVITE_EXPIRED = 0x4E0031, - SMSG_GUILD_ITEM_LOOTED_NOTIFY = 0x4E001C, - SMSG_GUILD_KNOWN_RECIPES = 0x4E0006, - SMSG_GUILD_MEMBERS_WITH_RECIPE = 0x4E0007, - SMSG_GUILD_MEMBER_DAILY_RESET = 0x4E002C, - SMSG_GUILD_MEMBER_RECIPES = 0x4E0005, - SMSG_GUILD_MEMBER_UPDATE_NOTE = 0x4E0011, - SMSG_GUILD_MOVED = 0x4E0022, - SMSG_GUILD_MOVE_STARTING = 0x4E0021, - SMSG_GUILD_NAME_CHANGED = 0x4E0023, - SMSG_GUILD_NEWS = 0x4E0009, - SMSG_GUILD_NEWS_DELETED = 0x4E000A, - SMSG_GUILD_OTHERS_OWNED_HOUSES_RESULT = 0x4E0047, - SMSG_GUILD_PARTY_STATE = 0x4E0013, - SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x4E0029, - SMSG_GUILD_RANKS = 0x4E0010, - SMSG_GUILD_RENAME_NAME_CHECK = 0x4E0044, - SMSG_GUILD_RENAME_REFUND_RESULT = 0x4E0046, - SMSG_GUILD_RENAME_REQUESTED_RESULT = 0x4E0045, - SMSG_GUILD_RENAME_STATUS_UPDATE = 0x4E0043, - SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x4E0014, - SMSG_GUILD_RESET = 0x4E0020, - SMSG_GUILD_REWARD_LIST = 0x4E0008, - SMSG_GUILD_ROSTER = 0x4E0003, - SMSG_GUILD_SEND_RANK_CHANGE = 0x4E0001, - SMSG_HARDCORE_DEATH_ALERT = 0x420352, - SMSG_HEALTH_UPDATE = 0x42017B, - SMSG_HIGHEST_THREAT_UPDATE = 0x420183, - SMSG_HOTFIX_CONNECT = 0x460003, - SMSG_HOTFIX_MESSAGE = 0x460002, - SMSG_HOUSE_EXTERIOR_LOCK_RESPONSE = 0x500000, - SMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION_RESPONSE = 0x500001, - SMSG_HOUSING_DECOR_ADD_TO_HOUSE_CHEST_RESPONSE = 0x510008, - SMSG_HOUSING_DECOR_DELETE_FROM_STORAGE_RESPONSE = 0x510006, - SMSG_HOUSING_DECOR_DRAW_SERVER_LIGHTING_DEBUG_SPHERES_RESPONSE = 0x510001, - SMSG_HOUSING_DECOR_LOCK_RESPONSE = 0x510005, - SMSG_HOUSING_DECOR_MOVE_RESPONSE = 0x510002, - SMSG_HOUSING_DECOR_PLACE_RESPONSE = 0x510003, - SMSG_HOUSING_DECOR_REMOVE_RESPONSE = 0x510004, - SMSG_HOUSING_DECOR_REQUEST_STORAGE_RESPONSE = 0x510007, - SMSG_HOUSING_DECOR_SET_EDIT_MODE_RESPONSE = 0x510000, - SMSG_HOUSING_DECOR_SYSTEM_SET_DYE_SLOTS_RESPONSE = 0x510009, - SMSG_HOUSING_EXPORT_HOUSE_RESPONSE = 0x550003, - SMSG_HOUSING_FIRST_TIME_DECOR_ACQUISITION = 0x51000B, - SMSG_HOUSING_FIXTURE_CREATE_BASIC_HOUSE_RESPONSE = 0x520001, - SMSG_HOUSING_FIXTURE_CREATE_FIXTURE_RESPONSE = 0x520006, - SMSG_HOUSING_FIXTURE_DELETE_FIXTURE_RESPONSE = 0x520007, - SMSG_HOUSING_FIXTURE_DELETE_HOUSE_RESPONSE = 0x520002, - SMSG_HOUSING_FIXTURE_SET_CORE_FIXTURE_RESPONSE = 0x520005, - SMSG_HOUSING_FIXTURE_SET_EDIT_MODE_RESPONSE = 0x520000, - SMSG_HOUSING_FIXTURE_SET_HOUSE_SIZE_RESPONSE = 0x520003, - SMSG_HOUSING_FIXTURE_SET_HOUSE_TYPE_RESPONSE = 0x520004, - SMSG_HOUSING_GET_CURRENT_HOUSE_INFO_RESPONSE = 0x550001, - SMSG_HOUSING_GET_PLAYER_PERMISSIONS_RESPONSE = 0x550006, - SMSG_HOUSING_HOUSE_STATUS_RESPONSE = 0x550000, - SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_CLEARED_RESULT = 0x420380, - SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_RESULT = 0x42037F, - SMSG_HOUSING_REDEEM_DEFERRED_DECOR_RESPONSE = 0x51000A, - SMSG_HOUSING_RESET_KIOSK_MODE_RESPONSE = 0x550007, - SMSG_HOUSING_ROOM_ADD_RESPONSE = 0x530001, - SMSG_HOUSING_ROOM_APPLY_COMPONENT_MATERIALS_RESPONSE = 0x530005, - SMSG_HOUSING_ROOM_REMOVE_RESPONSE = 0x530002, - SMSG_HOUSING_ROOM_SET_CEILING_TYPE_RESPONSE = 0x530007, - SMSG_HOUSING_ROOM_SET_COMPONENT_THEME_RESPONSE = 0x530004, - SMSG_HOUSING_ROOM_SET_DOOR_TYPE_RESPONSE = 0x530006, - SMSG_HOUSING_ROOM_SET_LAYOUT_EDIT_MODE_RESPONSE = 0x530000, - SMSG_HOUSING_ROOM_UPDATE_RESPONSE = 0x530003, - SMSG_HOUSING_SVCS_ACCEPT_NEIGHBORHOOD_OWNERSHIP_RESPONSE = 0x540017, - SMSG_HOUSING_SVCS_CANCEL_RELINQUISH_HOUSE_RESPONSE = 0x540008, - SMSG_HOUSING_SVCS_CHANGE_HOUSE_COSMETIC_OWNER = 0x540010, - SMSG_HOUSING_SVCS_CLEAR_PLOT_RESERVATION_RESPONSE = 0x540005, - SMSG_HOUSING_SVCS_CREATE_CHARTER_NEIGHBORHOOD_RESPONSE = 0x540003, - SMSG_HOUSING_SVCS_DELETE_ALL_NEIGHBORHOOD_INVITES_RESPONSE = 0x540021, - SMSG_HOUSING_SVCS_GET_BNET_FRIEND_NEIGHBORHOODS_RESPONSE = 0x54001E, - SMSG_HOUSING_SVCS_GET_HOUSE_FINDER_INFO_RESPONSE = 0x54001C, - SMSG_HOUSING_SVCS_GET_HOUSE_FINDER_NEIGHBORHOOD_RESPONSE = 0x54001D, - SMSG_HOUSING_SVCS_GET_PLAYER_HOUSES_INFO_RESPONSE = 0x54000B, - SMSG_HOUSING_SVCS_GET_POTENTIAL_HOUSE_OWNERS_RESPONSE = 0x54001A, - SMSG_HOUSING_SVCS_GUILD_ADD_HOUSE_NOTIFICATION = 0x540012, - SMSG_HOUSING_SVCS_GUILD_APPEND_NEIGHBORHOOD_NOTIFICATION = 0x540014, - SMSG_HOUSING_SVCS_GUILD_CREATE_NEIGHBORHOOD_NOTIFICATION = 0x540001, - SMSG_HOUSING_SVCS_GUILD_GET_HOUSING_INFO_RESPONSE = 0x540016, - SMSG_HOUSING_SVCS_GUILD_REMOVE_HOUSE_NOTIFICATION = 0x540013, - SMSG_HOUSING_SVCS_GUILD_RENAME_NEIGHBORHOOD_NOTIFICATION = 0x540015, - SMSG_HOUSING_SVCS_HOUSE_FINDER_FORCE_REFRESH = 0x54001F, - SMSG_HOUSING_SVCS_NEIGHBORHOOD_OWNERSHIP_TRANSFERRED_RESPONSE = 0x540019, - SMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT_RESPONSE = 0x540004, - SMSG_HOUSING_SVCS_NEIGHBORHOOD_UPDATE_NAME_NOTIFICATION = 0x540023, - SMSG_HOUSING_SVCS_NOTIFY_PERMISSIONS_FAILURE = 0x540000, - SMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_RESPONSE = 0x54000C, - SMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP_RESPONSE = 0x540018, - SMSG_HOUSING_SVCS_RELINQUISH_HOUSE_RESPONSE = 0x540007, - SMSG_HOUSING_SVCS_UPDATE_HOUSES_LEVEL_FAVOR = 0x540011, - SMSG_HOUSING_SVCS_UPDATE_HOUSE_SETTINGS_RESPONSE = 0x54001B, - SMSG_HOUSING_SVC_REQUEST_PLAYER_RELOAD_DATA = 0x540020, - SMSG_INITIALIZE_FACTIONS = 0x4201CC, - SMSG_INITIAL_SETUP = 0x420014, - SMSG_INITIATIVE_COMPLETE = 0x420366, - SMSG_INITIATIVE_REWARD_AVAILABLE = 0x42036B, - SMSG_INITIATIVE_SERVICE_STATUS = 0x420364, - SMSG_INITIATIVE_TASK_COMPLETE = 0x420365, - SMSG_INIT_WORLD_STATES = 0x4201EE, - SMSG_INSPECT_RESULT = 0x4200D9, - SMSG_INSTANCE_ABANDON_VOTE_COMPLETED = 0x42009D, - SMSG_INSTANCE_ABANDON_VOTE_PLAYER_LEFT = 0x42009E, - SMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x42009C, - SMSG_INSTANCE_ABANDON_VOTE_STARTED = 0x42009B, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x42025A, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x420259, - SMSG_INSTANCE_ENCOUNTER_END = 0x420262, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x420258, - SMSG_INSTANCE_ENCOUNTER_EVENT_APPEND = 0x42022A, - SMSG_INSTANCE_ENCOUNTER_EVENT_BLOCKED_CHANGED = 0x42022C, - SMSG_INSTANCE_ENCOUNTER_EVENT_CAST_UPDATE = 0x42022D, - SMSG_INSTANCE_ENCOUNTER_EVENT_RESPAWN = 0x42022B, - SMSG_INSTANCE_ENCOUNTER_EVENT_SEQUENCE = 0x420228, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x420264, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x420263, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x42025D, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x42025C, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x420261, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x420265, - SMSG_INSTANCE_ENCOUNTER_START = 0x42025E, - SMSG_INSTANCE_ENCOUNTER_TIMELINE_SYNC = 0x420229, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x42025B, - SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x420260, - SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x42025F, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x4201A3, - SMSG_INSTANCE_INFO = 0x4200DC, - SMSG_INSTANCE_RESET = 0x420130, - SMSG_INSTANCE_RESET_FAILED = 0x420131, - SMSG_INSTANCE_SAVE_CREATED = 0x420225, - SMSG_INTERRUPT_POWER_REGEN = 0x62004C, - SMSG_INVALIDATE_NEIGHBORHOOD = 0x5F0008, - SMSG_INVALIDATE_NEIGHBORHOOD_NAME = 0x460013, - SMSG_INVALIDATE_PAGE_TEXT = 0x46000A, - SMSG_INVALIDATE_PLAYER = 0x5F0007, - SMSG_INVALID_PROMOTION_CODE = 0x4201FB, - SMSG_INVENTORY_CHANGE_FAILURE = 0x630005, - SMSG_INVENTORY_FIXUP_COMPLETE = 0x4202BB, - SMSG_INVENTORY_FULL_OVERFLOW = 0x4202CD, - SMSG_ISLAND_AZERITE_GAIN = 0x420204, - SMSG_ISLAND_COMPLETE = 0x420205, - SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x600004, - SMSG_ITEM_CHANGED = 0x420194, - SMSG_ITEM_COOLDOWN = 0x420270, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x4201FD, - SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x420034, - SMSG_ITEM_INTERACTION_COMPLETE = 0x420302, - SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x420032, - SMSG_ITEM_PUSH_RESULT = 0x4200CB, - SMSG_ITEM_TIME_UPDATE = 0x4201FC, - SMSG_KICK_REASON = 0x420133, - SMSG_LAST_CATALOG_FETCH_RESPONSE = 0x42037E, - SMSG_LATENCY_REPORT_PING = 0x420312, - SMSG_LEARNED_SPELLS = 0x620040, - SMSG_LEARN_PVP_TALENT_FAILED = 0x420077, - SMSG_LEARN_TALENT_FAILED = 0x420076, - SMSG_LEGACY_LOOT_RULES = 0x4202D2, - SMSG_LEVEL_LINKING_RESULT = 0x4202E8, - SMSG_LEVEL_UP_INFO = 0x420192, - SMSG_LFG_BOOT_PLAYER = 0x560019, - SMSG_LFG_DISABLED = 0x560017, - SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x56001F, - SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x560009, - SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE = 0x560020, - SMSG_LFG_JOIN_RESULT = 0x560000, - SMSG_LFG_LIST_APPLICANT_LIST_UPDATE = 0x56000F, - SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE = 0x56000C, - SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT = 0x56000D, - SMSG_LFG_LIST_JOIN_RESULT = 0x560001, - SMSG_LFG_LIST_SEARCH_RESULTS = 0x560002, - SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE = 0x560010, - SMSG_LFG_LIST_SEARCH_STATUS = 0x560003, - SMSG_LFG_LIST_UPDATE_BLACKLIST = 0x56000E, - SMSG_LFG_LIST_UPDATE_EXPIRATION = 0x56000B, - SMSG_LFG_LIST_UPDATE_STATUS = 0x56000A, - SMSG_LFG_OFFER_CONTINUE = 0x560018, - SMSG_LFG_PARTY_INFO = 0x56001A, - SMSG_LFG_PLAYER_INFO = 0x56001B, - SMSG_LFG_PLAYER_REWARD = 0x56001C, - SMSG_LFG_PROPOSAL_UPDATE = 0x560011, - SMSG_LFG_QUEUE_STATUS = 0x560004, - SMSG_LFG_READY_CHECK_RESULT = 0x56001E, - SMSG_LFG_READY_CHECK_UPDATE = 0x560006, - SMSG_LFG_ROLE_CHECK_UPDATE = 0x560005, - SMSG_LFG_SLOT_INVALID = 0x560014, - SMSG_LFG_SUSPEND_LOREWALKING = 0x560021, - SMSG_LFG_TELEPORT_DENIED = 0x560016, - SMSG_LFG_UPDATE_STATUS = 0x560008, - SMSG_LICENSED_DECOR_QUANTITIES_UPDATE = 0x42037B, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x420217, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x420216, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x42020A, - SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x420218, - SMSG_LOAD_CUF_PROFILES = 0x42005F, - SMSG_LOAD_EQUIPMENT_SET = 0x4201B8, - SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x42031C, - SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x42031D, - SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x42031E, - SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED = 0x420320, - SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT = 0x420321, - SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x42031F, - SMSG_LOGIN_SET_TIME_SPEED = 0x4201B7, - SMSG_LOGIN_VERIFY_WORLD = 0x42002F, - SMSG_LOGOUT_CANCEL_ACK = 0x42012F, - SMSG_LOGOUT_COMPLETE = 0x42012E, - SMSG_LOGOUT_RESPONSE = 0x42012D, - SMSG_LOG_XP_GAIN = 0x42018E, - SMSG_LOOT_ALL_PASSED = 0x4200C9, - SMSG_LOOT_LIST = 0x4201E9, - SMSG_LOOT_MONEY_NOTIFY = 0x4200C4, - SMSG_LOOT_RELEASE = 0x4200C3, - SMSG_LOOT_RELEASE_ALL = 0x4200C2, - SMSG_LOOT_REMOVED = 0x4200BE, - SMSG_LOOT_RESPONSE = 0x4200BD, - SMSG_LOOT_ROLL = 0x4200C6, - SMSG_LOOT_ROLLS_COMPLETE = 0x4200C8, - SMSG_LOOT_ROLL_WON = 0x4200CA, - SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x420119, - SMSG_MAIL_COMMAND_RESULT = 0x4200E3, - SMSG_MAIL_LIST_RESULT = 0x4201FE, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x4201FF, - SMSG_MAP_OBJECTIVES_INIT = 0x48002A, - SMSG_MAP_OBJ_EVENTS = 0x420069, - SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x4200C7, - SMSG_MEETING_STONE_FAILED = 0x420322, - SMSG_MESSAGE_BOX = 0x42000A, - SMSG_MINIMAP_PING = 0x420178, - SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x620004, - SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x620003, - SMSG_MIRROR_VARS = 0x42036D, - SMSG_MISSILE_CANCEL = 0x42006A, - SMSG_MODIFY_COOLDOWN = 0x42020C, - SMSG_MOTD = 0x470003, - SMSG_MOUNT_RESULT = 0x42000F, - SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x4202D8, - SMSG_MOVE_ADD_IMPULSE = 0x5A0064, - SMSG_MOVE_APPLY_INERTIA = 0x5A0060, - SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x5A0047, - SMSG_MOVE_DISABLE_COLLISION = 0x5A0043, - SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x5A002D, - SMSG_MOVE_DISABLE_FULL_SPEED_PITCHING = 0x5A0079, - SMSG_MOVE_DISABLE_FULL_SPEED_TURNING = 0x5A0077, - SMSG_MOVE_DISABLE_GRAVITY = 0x5A003F, - SMSG_MOVE_DISABLE_INERTIA = 0x5A0041, - SMSG_MOVE_DISABLE_JUMPING = 0x5A007C, - SMSG_MOVE_DISABLE_STRAFING = 0x5A007E, - SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x5A003E, - SMSG_MOVE_ENABLE_COLLISION = 0x5A0044, - SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x5A002C, - SMSG_MOVE_ENABLE_FULL_SPEED_PITCHING = 0x5A0078, - SMSG_MOVE_ENABLE_FULL_SPEED_TURNING = 0x5A0076, - SMSG_MOVE_ENABLE_GRAVITY = 0x5A0040, - SMSG_MOVE_ENABLE_INERTIA = 0x5A0042, - SMSG_MOVE_ENABLE_JUMPING = 0x5A007D, - SMSG_MOVE_ENABLE_STRAFING = 0x5A007F, - SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x5A003D, - SMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE = 0x5A0075, - SMSG_MOVE_KNOCK_BACK = 0x5A0033, - SMSG_MOVE_MARK_REMOTE_TIME_INVALID = 0x5A005F, - SMSG_MOVE_REMOVE_INERTIA = 0x5A0061, - SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x5A0048, - SMSG_MOVE_ROOT = 0x5A0029, - SMSG_MOVE_SET_ACTIVE_MOVER = 0x5A0003, - SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = 0x5A006D, - SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = 0x5A0068, - SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = 0x5A006E, - SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = 0x5A006B, - SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = 0x5A006C, - SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = 0x5A0074, - SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = 0x5A006A, - SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = 0x5A0069, - SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = 0x5A0073, - SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = 0x5A006F, - SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0x5A0070, - SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0x5A0072, - SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0x5A0071, - SMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING = 0x5A0080, - SMSG_MOVE_SET_CANNOT_SWIM = 0x5A0037, - SMSG_MOVE_SET_CAN_ADV_FLY = 0x5A0066, - SMSG_MOVE_SET_CAN_DRIVE = 0x5A007A, - SMSG_MOVE_SET_CAN_FLY = 0x5A0035, - SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x5A0039, - SMSG_MOVE_SET_COLLISION_HEIGHT = 0x5A0045, - SMSG_MOVE_SET_COMPOUND_STATE = 0x5A0049, - SMSG_MOVE_SET_FEATHER_FALL = 0x5A002F, - SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x5A0025, - SMSG_MOVE_SET_FLIGHT_SPEED = 0x5A0024, - SMSG_MOVE_SET_GRAVITY_MODIFIER = 0x5A001A, - SMSG_MOVE_SET_HOVERING = 0x5A0031, - SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x5A003B, - SMSG_MOVE_SET_LAND_WALK = 0x5A002E, - SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x5A0014, - SMSG_MOVE_SET_NORMAL_FALL = 0x5A0030, - SMSG_MOVE_SET_PITCH_RATE = 0x5A0028, - SMSG_MOVE_SET_RUN_BACK_SPEED = 0x5A0021, - SMSG_MOVE_SET_RUN_SPEED = 0x5A0020, - SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x5A0023, - SMSG_MOVE_SET_SWIM_SPEED = 0x5A0022, - SMSG_MOVE_SET_TURN_RATE = 0x5A0027, - SMSG_MOVE_SET_VEHICLE_REC_ID = 0x5A0046, - SMSG_MOVE_SET_WALK_SPEED = 0x5A0026, - SMSG_MOVE_SET_WATER_WALK = 0x5A002B, - SMSG_MOVE_SKIP_TIME = 0x5A004A, - SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x5A004F, - SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x5A004D, - SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x5A0050, - SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x5A004E, - SMSG_MOVE_SPLINE_ROOT = 0x5A004B, - SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x5A0051, - SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0x5A001C, - SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x5A001B, - SMSG_MOVE_SPLINE_SET_FLYING = 0x5A005B, - SMSG_MOVE_SPLINE_SET_HOVER = 0x5A0053, - SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x5A0056, - SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x5A0052, - SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0x5A001F, - SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x5A0016, - SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x5A0059, - SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x5A0015, - SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0x5A0018, - SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0x5A0017, - SMSG_MOVE_SPLINE_SET_TURN_RATE = 0x5A001E, - SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x5A005A, - SMSG_MOVE_SPLINE_SET_WALK_SPEED = 0x5A001D, - SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x5A0055, - SMSG_MOVE_SPLINE_START_SWIM = 0x5A0057, - SMSG_MOVE_SPLINE_STOP_SWIM = 0x5A0058, - SMSG_MOVE_SPLINE_UNROOT = 0x5A004C, - SMSG_MOVE_SPLINE_UNSET_FLYING = 0x5A005C, - SMSG_MOVE_SPLINE_UNSET_HOVER = 0x5A0054, - SMSG_MOVE_TELEPORT = 0x5A0034, - SMSG_MOVE_UNROOT = 0x5A002A, - SMSG_MOVE_UNSET_ALWAYS_ALLOW_PITCHING = 0x5A0081, - SMSG_MOVE_UNSET_CANNOT_SWIM = 0x5A0038, - SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x5A0067, - SMSG_MOVE_UNSET_CAN_DRIVE = 0x5A007B, - SMSG_MOVE_UNSET_CAN_FLY = 0x5A0036, - SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x5A003A, - SMSG_MOVE_UNSET_HOVERING = 0x5A0032, - SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x5A003C, - SMSG_MOVE_UPDATE = 0x5A000E, - SMSG_MOVE_UPDATE_ADD_IMPULSE = 0x5A0065, - SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x5A0062, - SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x5A0012, - SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x5A000D, - SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x5A000A, - SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x5A0009, - SMSG_MOVE_UPDATE_KNOCK_BACK = 0x5A0010, - SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x5A0011, - SMSG_MOVE_UPDATE_PITCH_RATE = 0x5A000C, - SMSG_MOVE_UPDATE_REMOVE_INERTIA = 0x5A0063, - SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x5A0013, - SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x5A0005, - SMSG_MOVE_UPDATE_RUN_SPEED = 0x5A0004, - SMSG_MOVE_UPDATE_SET_GRAVITY_MODIFIER = 0x5A0019, - SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x5A0008, - SMSG_MOVE_UPDATE_SWIM_SPEED = 0x5A0007, - SMSG_MOVE_UPDATE_TELEPORT = 0x5A000F, - SMSG_MOVE_UPDATE_TURN_RATE = 0x5A000B, - SMSG_MOVE_UPDATE_WALK_SPEED = 0x5A0006, - SMSG_MULTIPLE_PACKETS = 0x49000D, - SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x420287, - SMSG_MULTI_FLOOR_NEW_FLOOR = 0x420286, - SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x4200B2, - SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x4200B4, - SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x4200BA, - SMSG_MYTHIC_PLUS_SEASON_DATA = 0x4200B3, - SMSG_NEIGHBORHOOD_ADD_SECONDARY_OWNER_RESPONSE = 0x5C0003, - SMSG_NEIGHBORHOOD_BUY_HOUSE_RESPONSE = 0x5C0005, - SMSG_NEIGHBORHOOD_CANCEL_INVITATION_RESPONSE = 0x5C0009, - SMSG_NEIGHBORHOOD_CHARTER_ADD_SIGNATURE_RESPONSE = 0x5B0003, - SMSG_NEIGHBORHOOD_CHARTER_OPEN_CONFIRMATION_UI_RESPONSE = 0x5B0004, - SMSG_NEIGHBORHOOD_CHARTER_OPEN_UI_RESPONSE = 0x5B0001, - SMSG_NEIGHBORHOOD_CHARTER_SIGNATURE_REMOVED_NOTIFICATION = 0x5B0005, - SMSG_NEIGHBORHOOD_CHARTER_SIGN_REQUEST = 0x5B0002, - SMSG_NEIGHBORHOOD_CHARTER_UPDATE_RESPONSE = 0x5B0000, - SMSG_NEIGHBORHOOD_DECLINE_INVITATION_RESPONSE = 0x5C000A, - SMSG_NEIGHBORHOOD_EVICT_PLAYER = 0x5C0000, - SMSG_NEIGHBORHOOD_EVICT_PLOT_NOTICE = 0x5C0013, - SMSG_NEIGHBORHOOD_EVICT_PLOT_RESPONSE = 0x5C0012, - SMSG_NEIGHBORHOOD_GET_INVITES_RESPONSE = 0x5C000C, - SMSG_NEIGHBORHOOD_GET_ROSTER_RESPONSE = 0x5C000F, - SMSG_NEIGHBORHOOD_INVITE_NAME_LOOKUP_RESULT = 0x5C0011, - SMSG_NEIGHBORHOOD_INVITE_NOTIFICATION = 0x5C000D, - SMSG_NEIGHBORHOOD_INVITE_RESIDENT_RESPONSE = 0x5C0008, - SMSG_NEIGHBORHOOD_MOVE_HOUSE_RESPONSE = 0x5C0006, - SMSG_NEIGHBORHOOD_OFFER_OWNERSHIP_RESPONSE = 0x5C000E, - SMSG_NEIGHBORHOOD_OPEN_CORNERSTONE_UI_RESPONSE = 0x5C0007, - SMSG_NEIGHBORHOOD_PLAYER_GET_INVITE_RESPONSE = 0x5C000B, - SMSG_NEIGHBORHOOD_REMOVE_SECONDARY_OWNER_RESPONSE = 0x5C0004, - SMSG_NEIGHBORHOOD_ROSTER_RESIDENT_UPDATE = 0x5C0010, - SMSG_NEIGHBORHOOD_UPDATE_NAME_RESPONSE = 0x5C0001, - SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x42007E, - SMSG_NEW_DATA_BUILD = 0x420349, - SMSG_NEW_TAXI_PATH = 0x420128, - SMSG_NEW_WORLD = 0x42002B, - SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x620036, - SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x420154, - SMSG_NOTIFY_MONEY = 0x420031, - SMSG_NOTIFY_RECEIVED_MAIL = 0x4200E4, - SMSG_NPC_INTERACTION_OPEN_RESULT = 0x420318, - SMSG_OFFER_PETITION_ERROR = 0x420160, - SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x42018F, - SMSG_ON_MONSTER_MOVE = 0x5A0002, - SMSG_OPEN_ARTIFACT_FORGE = 0x42024C, - SMSG_OPEN_CONTAINER = 0x630006, - SMSG_OPEN_LFG_DUNGEON_FINDER = 0x560015, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x420244, - SMSG_OVERRIDE_LIGHT = 0x420165, - SMSG_PAGE_TEXT = 0x4201C3, - SMSG_PARTY_COMMAND_RESULT = 0x42023E, - SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x42035D, - SMSG_PARTY_INVITE = 0x420060, - SMSG_PARTY_KILL_LOG = 0x420202, - SMSG_PARTY_MEMBER_FULL_STATE = 0x420201, - SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x420200, - SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x420308, - SMSG_PARTY_UPDATE = 0x420096, - SMSG_PAST_TIME_EVENTS = 0x420065, - SMSG_PAUSE_MIRROR_TIMER = 0x4201BA, - SMSG_PENDING_RAID_LOCK = 0x4201A1, - SMSG_PERKS_ANIM_TOGGLE_KILL_SWITCH = 0x5E0007, - SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x5E0005, - SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x5E0001, - SMSG_PERKS_PROGRAM_DISABLED = 0x5E0006, - SMSG_PERKS_PROGRAM_RESULT = 0x5E0002, - SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x5E0000, - SMSG_PETITION_ALREADY_SIGNED = 0x420037, - SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x4E0042, - SMSG_PETITION_SHOW_LIST = 0x420168, - SMSG_PETITION_SHOW_SIGNATURES = 0x420169, - SMSG_PETITION_SIGN_RESULTS = 0x4201F4, - SMSG_PET_ACTION_FEEDBACK = 0x4201F1, - SMSG_PET_ACTION_SOUND = 0x42014A, - SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x4200A8, - SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x42011E, - SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x4200A1, - SMSG_PET_BATTLE_FINAL_ROUND = 0x4200A6, - SMSG_PET_BATTLE_FINISHED = 0x4200A7, - SMSG_PET_BATTLE_FIRST_ROUND = 0x4200A3, - SMSG_PET_BATTLE_INITIAL_UPDATE = 0x4200A2, - SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x4200A9, - SMSG_PET_BATTLE_PVP_CHALLENGE = 0x4200A0, - SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x4200E1, - SMSG_PET_BATTLE_QUEUE_STATUS = 0x4200E2, - SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x4200A5, - SMSG_PET_BATTLE_REQUEST_FAILED = 0x42009F, - SMSG_PET_BATTLE_ROUND_RESULT = 0x4200A4, - SMSG_PET_BATTLE_SLOT_UPDATES = 0x42008E, - SMSG_PET_CAST_FAILED = 0x62004B, - SMSG_PET_CLEAR_SPELLS = 0x620013, - SMSG_PET_DISMISS_SOUND = 0x42014B, - SMSG_PET_GOD_MODE = 0x420125, - SMSG_PET_GUIDS = 0x4201AD, - SMSG_PET_LEARNED_SPELLS = 0x620042, - SMSG_PET_MODE = 0x42001F, - SMSG_PET_NAME_INVALID = 0x42016D, - SMSG_PET_NEWLY_TAMED = 0x42001E, - SMSG_PET_SPELLS_MESSAGE = 0x620014, - SMSG_PET_STABLE_RESULT = 0x42002A, - SMSG_PET_TAME_FAILURE = 0x42015C, - SMSG_PET_UNLEARNED_SPELLS = 0x620043, - SMSG_PHASE_SHIFT_CHANGE = 0x42000C, - SMSG_PLAYED_TIME = 0x42017F, - SMSG_PLAYER_ACKNOWLEDGE_ARROW_CALLOUT = 0x5F002E, - SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x5F0020, - SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x5F001F, - SMSG_PLAYER_BONUS_ROLL_FAILED = 0x5F0022, - SMSG_PLAYER_BOUND = 0x5F0000, - SMSG_PLAYER_CHOICE_CLEAR = 0x5F0006, - SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x5F0005, - SMSG_PLAYER_CONDITION_RESULT = 0x5F0013, - SMSG_PLAYER_DELAYED_UPLOAD_SCREENSHOT = 0x5F0033, - SMSG_PLAYER_END_OF_MATCH_DETAILS = 0x5F0030, - SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x5F002D, - SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x5F0012, - SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x5F0017, - SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x4E0041, - SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = 0x5F002F, - SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x5F002C, - SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x5F002A, - SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0x5F002B, - SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x5F0025, - SMSG_PLAYER_SKINNED = 0x5F000F, - SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x5F0016, - SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x5F0015, - SMSG_PLAYER_UPLOAD_SCREENSHOT = 0x5F0032, - SMSG_PLAY_MUSIC = 0x420211, - SMSG_PLAY_OBJECT_SOUND = 0x420213, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x4201D9, - SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x62003A, - SMSG_PLAY_SCENE = 0x4200DE, - SMSG_PLAY_SOUND = 0x420210, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x420214, - SMSG_PLAY_SPELL_VISUAL = 0x620038, - SMSG_PLAY_SPELL_VISUAL_KIT = 0x62003C, - SMSG_PLAY_TIME_WARNING = 0x4201A7, - SMSG_PONG = 0x490009, - SMSG_POWER_UPDATE = 0x42017C, - SMSG_PRELOAD_CHILD_MAP = 0x42000D, - SMSG_PRELOAD_WORLD = 0x42002C, - SMSG_PREPOPULATE_NAME_CACHE = 0x4202DB, - SMSG_PRE_RESSURECT = 0x42020F, - SMSG_PRINT_NOTIFICATION = 0x42006D, - SMSG_PROC_RESIST = 0x420203, - SMSG_PROFESSION_GOSSIP = 0x4202A7, - SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x620044, - SMSG_PVP_CREDIT = 0x480024, - SMSG_PVP_MATCH_COMPLETE = 0x48002F, - SMSG_PVP_MATCH_INITIALIZE = 0x480030, - SMSG_PVP_MATCH_SET_STATE = 0x48002E, - SMSG_PVP_MATCH_START = 0x48002D, - SMSG_PVP_MATCH_STATISTICS = 0x480010, - SMSG_PVP_OPTIONS_ENABLED = 0x480013, - SMSG_PVP_TIER_RECORD = 0x420313, - SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x46000C, - SMSG_QUERY_CREATURE_RESPONSE = 0x460006, - SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x460007, - SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x4C0041, - SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = 0x4E002F, - SMSG_QUERY_GUILD_INFO_RESPONSE = 0x4E002D, - SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x460010, - SMSG_QUERY_NEIGHBORHOOD_NAME_RESPONSE = 0x460012, - SMSG_QUERY_NPC_TEXT_RESPONSE = 0x460008, - SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x460009, - SMSG_QUERY_PETITION_RESPONSE = 0x46000D, - SMSG_QUERY_PET_NAME_RESPONSE = 0x46000B, - SMSG_QUERY_PLAYER_NAMES_RESPONSE = 0x5F0027, - SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x5F000B, - SMSG_QUERY_QUEST_INFO_RESPONSE = 0x600016, - SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x4E002E, - SMSG_QUERY_SELECTED_WOW_LABS_AREA_RESPONSE = 0x420327, - SMSG_QUERY_TIME_RESPONSE = 0x42018D, - SMSG_QUERY_WOW_LABS_AREA_INFO_RESPONSE = 0x420328, - SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x600001, - SMSG_QUEST_CONFIRM_ACCEPT = 0x60000F, - SMSG_QUEST_FORCE_REMOVED = 0x60001C, - SMSG_QUEST_GIVER_INVALID_QUEST = 0x600005, - SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x600014, - SMSG_QUEST_GIVER_QUEST_COMPLETE = 0x600003, - SMSG_QUEST_GIVER_QUEST_DETAILS = 0x600012, - SMSG_QUEST_GIVER_QUEST_FAILED = 0x600006, - SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x60001A, - SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x600013, - SMSG_QUEST_GIVER_STATUS = 0x60001B, - SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x600011, - SMSG_QUEST_ITEM_USABILITY_RESPONSE = 0x600002, - SMSG_QUEST_LOG_FULL = 0x600007, - SMSG_QUEST_NON_LOG_UPDATE_COMPLETE = 0x600008, - SMSG_QUEST_POI_QUERY_RESPONSE = 0x60001D, - SMSG_QUEST_POI_UPDATE_RESPONSE = 0x60001F, - SMSG_QUEST_PUSH_RESULT = 0x600010, - SMSG_QUEST_SESSION_INFO_RESPONSE = 0x4202FE, - SMSG_QUEST_SESSION_READY_CHECK = 0x4202EC, - SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x4202ED, - SMSG_QUEST_SESSION_RESULT = 0x4202EB, - SMSG_QUEST_UPDATE_ADD_CREDIT = 0x60000C, - SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x60000D, - SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x60000E, - SMSG_QUEST_UPDATE_COMPLETE = 0x600009, - SMSG_QUEST_UPDATE_FAILED = 0x60000A, - SMSG_QUEST_UPDATE_FAILED_TIMER = 0x60000B, - SMSG_QUEUE_SUMMARY_UPDATE = 0x4202BA, - SMSG_RAF_ACCOUNT_INFO = 0x4202E9, - SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x4202FA, - SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x420343, - SMSG_RAID_DIFFICULTY_SET = 0x420255, - SMSG_RAID_GROUP_ONLY = 0x420257, - SMSG_RAID_INSTANCE_MESSAGE = 0x47000A, - SMSG_RAID_MARKERS_CHANGED = 0x420038, - SMSG_RANDOM_ROLL = 0x4200D8, - SMSG_RATED_PVP_INFO = 0x48000F, - SMSG_READY_CHECK_COMPLETED = 0x42009A, - SMSG_READY_CHECK_RESPONSE = 0x420099, - SMSG_READY_CHECK_STARTED = 0x420098, - SMSG_READ_ITEM_RESULT_FAILED = 0x420251, - SMSG_READ_ITEM_RESULT_OK = 0x420249, - SMSG_REALM_QUERY_RESPONSE = 0x460005, - SMSG_REATTACH_RESURRECT = 0x4201F3, - SMSG_RECEIVE_PING_UNIT = 0x420039, - SMSG_RECEIVE_PING_WORLD_POINT = 0x42003A, - SMSG_RECENT_ALLY_DATA_RESPONSE = 0x420360, - SMSG_RECENT_ALLY_NOTE_UPDATED = 0x420361, - SMSG_RECRAFT_ITEM_RESULT = 0x420339, - SMSG_RECRUIT_A_FRIEND_FAILURE = 0x42016A, - SMSG_REFETCH_TACT_KEYS = 0x420374, - SMSG_REFRESH_BLEEP_TOKENS_RESPONSE = 0x420382, - SMSG_REFRESH_COMPONENT = 0x4200F8, - SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x42001A, - SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x420019, - SMSG_REMOVE_ITEM_PASSIVE = 0x420043, - SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x620045, - SMSG_REPLACE_TROPHY_RESPONSE = 0x42026D, - SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x5F000A, - SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x420025, - SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x480014, - SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x480015, - SMSG_RESET_COMPRESSION_CONTEXT = 0x49000A, - SMSG_RESET_FAILED_NOTIFY = 0x420161, - SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x420340, - SMSG_RESET_QUEST_POI = 0x600020, - SMSG_RESET_RANGED_COMBAT_TIMER = 0x480023, - SMSG_RESET_WEEKLY_CURRENCY = 0x420009, - SMSG_RESPEC_WIPE_CONFIRM = 0x4200BB, - SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x420006, - SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x5E0003, - SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x5E0004, - SMSG_RESTART_GLOBAL_COOLDOWN = 0x620054, - SMSG_RESTRICTED_ACCOUNT_WARNING = 0x42005C, - SMSG_RESUME_CAST = 0x62002E, - SMSG_RESUME_CAST_BAR = 0x620031, - SMSG_RESUME_COMMS = 0x490006, - SMSG_RESUME_TOKEN = 0x420041, - SMSG_RESURRECT_REQUEST = 0x420012, - SMSG_RESYNC_RUNES = 0x620052, - SMSG_RETURN_APPLICANT_LIST = 0x4202DF, - SMSG_RETURN_RECRUITING_CLUBS = 0x4202DE, - SMSG_ROLE_CHANGED_INFORM = 0x420021, - SMSG_ROLE_CHOSEN = 0x56001D, - SMSG_ROLE_POLL_INFORM = 0x420022, - SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x4202A6, - SMSG_RUNE_REGEN_DEBUG = 0x420059, - SMSG_SCENARIO_COMPLETED = 0x420294, - SMSG_SCENARIO_POIS = 0x4200DB, - SMSG_SCENARIO_PROGRESS_UPDATE = 0x4200D4, - SMSG_SCENARIO_SHOW_CRITERIA = 0x4202AA, - SMSG_SCENARIO_STATE = 0x4200D3, - SMSG_SCENARIO_UI_UPDATE = 0x4202A9, - SMSG_SCENARIO_VACATE = 0x420252, - SMSG_SCENE_OBJECT_EVENT = 0x420084, - SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x420089, - SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x42008A, - SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x420086, - SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x420085, - SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x420088, - SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x420087, - SMSG_SCHEDULED_AREA_POI_UPDATE_RESPONSE = 0x5F001A, - SMSG_SCRIPT_CAST = 0x620049, - SMSG_SEASON_INFO = 0x420064, - SMSG_SELL_RESPONSE = 0x42016E, - SMSG_SEND_FORCE_PITCH_CHANGE = 0x42002D, - SMSG_SEND_ITEM_PASSIVES = 0x420044, - SMSG_SEND_KNOWN_SPELLS = 0x620019, - SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x4200D6, - SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x4200D7, - SMSG_SEND_SPELL_CHARGES = 0x62001B, - SMSG_SEND_SPELL_HISTORY = 0x62001A, - SMSG_SEND_UNLEARN_SPELLS = 0x62001C, - SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x4200F5, - SMSG_SERVER_TIME = 0x42012C, - SMSG_SERVER_TIME_OFFSET = 0x4201BE, - SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x62000F, - SMSG_SETUP_CURRENCY = 0x420007, - SMSG_SET_AI_ANIM_KIT = 0x4201D8, - SMSG_SET_ANIM_TIER = 0x4201DC, - SMSG_SET_CHR_UPGRADE_TIER = 0x420081, - SMSG_SET_CTR_OPTIONS = 0x420371, - SMSG_SET_CURRENCY = 0x420008, - SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x560012, - SMSG_SET_DUNGEON_DIFFICULTY = 0x42014E, - SMSG_SET_FACTION_AT_WAR = 0x4201A9, - SMSG_SET_FACTION_NOT_VISIBLE = 0x4201D3, - SMSG_SET_FACTION_STANDING = 0x4201D4, - SMSG_SET_FACTION_VISIBLE = 0x4201D2, - SMSG_SET_FLAT_SPELL_MODIFIER = 0x620027, - SMSG_SET_FLAT_SPELL_PVP_MODIFIER = 0x620029, - SMSG_SET_INSTANCE_LEAVER = 0x42036E, - SMSG_SET_ITEM_PURCHASE_DATA = 0x420033, - SMSG_SET_LOOT_METHOD_FAILED = 0x420278, - SMSG_SET_MAX_WEEKLY_QUANTITY = 0x420036, - SMSG_SET_MELEE_ANIM_KIT = 0x4201DB, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x4201DA, - SMSG_SET_PCT_SPELL_MODIFIER = 0x620028, - SMSG_SET_PCT_SPELL_PVP_MODIFIER = 0x62002A, - SMSG_SET_PET_SPECIALIZATION = 0x4200CD, - SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x5F000C, - SMSG_SET_PLAY_HOVER_ANIM = 0x42005D, - SMSG_SET_PROFICIENCY = 0x4201DD, - SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x4202F2, - SMSG_SET_SHIPMENT_READY_RESPONSE = 0x4C003A, - SMSG_SET_SPELL_CHARGES = 0x620018, - SMSG_SET_TIME_ZONE_INFORMATION = 0x420121, - SMSG_SET_VEHICLE_REC_ID = 0x4201A0, - SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x420317, - SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x4C003B, - SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x42035B, - SMSG_SHOW_DELVES_DISPLAY_UI = 0x420359, - SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x42007D, - SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x600015, - SMSG_SHOW_TAXI_NODES = 0x420177, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x420219, - SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x420323, - SMSG_SOCKET_GEMS_FAILURE = 0x4201D0, - SMSG_SOCKET_GEMS_SUCCESS = 0x4201CF, - SMSG_SPECIAL_MOUNT_ANIM = 0x420149, - SMSG_SPECTATE_END = 0x420348, - SMSG_SPECTATE_NEXT = 0x420347, - SMSG_SPECTATE_PLAYER = 0x420345, - SMSG_SPECTATE_RESET = 0x420344, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x4201C2, - SMSG_SPELL_ABSORB_LOG = 0x62000C, - SMSG_SPELL_CATEGORY_COOLDOWN = 0x620006, - SMSG_SPELL_CHANNEL_START = 0x620022, - SMSG_SPELL_CHANNEL_UPDATE = 0x620023, - SMSG_SPELL_COOLDOWN = 0x620005, - SMSG_SPELL_DAMAGE_SHIELD = 0x62001F, - SMSG_SPELL_DELAYED = 0x620032, - SMSG_SPELL_DISPELL_LOG = 0x620007, - SMSG_SPELL_EMPOWER_SET_STAGE = 0x620026, - SMSG_SPELL_EMPOWER_START = 0x620024, - SMSG_SPELL_EMPOWER_UPDATE = 0x620025, - SMSG_SPELL_ENERGIZE_LOG = 0x620009, - SMSG_SPELL_EXECUTE_LOG = 0x620033, - SMSG_SPELL_FAILED_OTHER = 0x620048, - SMSG_SPELL_FAILURE = 0x620046, - SMSG_SPELL_FAILURE_MESSAGE = 0x62004D, - SMSG_SPELL_GO = 0x62002C, - SMSG_SPELL_HEAL_ABSORB_LOG = 0x62000B, - SMSG_SPELL_HEAL_LOG = 0x62000A, - SMSG_SPELL_INSTAKILL_LOG = 0x620021, - SMSG_SPELL_INTERRUPT_LOG = 0x62000D, - SMSG_SPELL_MISS_LOG = 0x620034, - SMSG_SPELL_NON_MELEE_DAMAGE_LOG = 0x620020, - SMSG_SPELL_OR_DAMAGE_IMMUNE = 0x62001D, - SMSG_SPELL_PERIODIC_AURA_LOG = 0x620008, - SMSG_SPELL_PREPARE = 0x62002B, - SMSG_SPELL_START = 0x62002D, - SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x42006F, - SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x420304, - SMSG_STAND_STATE_UPDATE = 0x4201C6, - SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x420075, - SMSG_START_ELAPSED_TIMER = 0x4200AA, - SMSG_START_ELAPSED_TIMERS = 0x4200AC, - SMSG_START_LIGHTNING_STORM = 0x420151, - SMSG_START_LOOT_ROLL = 0x4200C5, - SMSG_START_MIRROR_TIMER = 0x4201B9, - SMSG_START_TIMER = 0x42003D, - SMSG_STOP_ELAPSED_TIMER = 0x4200AB, - SMSG_STOP_MIRROR_TIMER = 0x4201BB, - SMSG_STOP_SPEAKERBOT_SOUND = 0x420215, - SMSG_STOP_TIMER = 0x42003E, - SMSG_STREAMING_MOVIES = 0x42003C, - SMSG_SUGGEST_INVITE_INFORM = 0x42023F, - SMSG_SUMMON_CANCEL = 0x42015A, - SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x420023, - SMSG_SUMMON_REQUEST = 0x4201CA, - SMSG_SUPERCEDED_SPELLS = 0x62003F, - SMSG_SURVEY_DELIVERED = 0x420363, - SMSG_SUSPEND_COMMS = 0x490005, - SMSG_SUSPEND_TOKEN = 0x420040, - SMSG_SYNC_WOW_ENTITLEMENTS = 0x4202FC, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x4201C1, - SMSG_TAXI_NODE_STATUS = 0x420126, - SMSG_TEXT_EMOTE = 0x420124, - SMSG_THREAT_CLEAR = 0x420186, - SMSG_THREAT_REMOVE = 0x420185, - SMSG_THREAT_UPDATE = 0x420184, - SMSG_TIERED_ENTRANCE_OPEN_RESPONSE = 0x42037C, - SMSG_TIMERUNNING_SEASON_ENDED = 0x42035C, - SMSG_TIME_ADJUSTMENT = 0x5A0001, - SMSG_TIME_SYNC_REQUEST = 0x5A0000, - SMSG_TITLE_EARNED = 0x420181, - SMSG_TITLE_LOST = 0x420182, - SMSG_TOTEM_CREATED = 0x420171, - SMSG_TOTEM_DURATION_CHANGED = 0x420173, - SMSG_TOTEM_MOVED = 0x420174, - SMSG_TOTEM_REMOVED = 0x420172, - SMSG_TRADE_STATUS = 0x420017, - SMSG_TRADE_UPDATED = 0x420016, - SMSG_TRAINER_BUY_FAILED = 0x420189, - SMSG_TRAINER_LIST = 0x420188, - SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x420074, - SMSG_TRANSFER_ABORTED = 0x4201AC, - SMSG_TRANSFER_PENDING = 0x420070, - SMSG_TRANSMOG_OUTFIT_INFO_UPDATED = 0x42004B, - SMSG_TRANSMOG_OUTFIT_NEW_ENTRY_ADDED = 0x42004A, - SMSG_TRANSMOG_OUTFIT_SITUATIONS_UPDATED = 0x42004C, - SMSG_TRANSMOG_OUTFIT_SLOTS_UPDATED = 0x42004D, - SMSG_TREASURE_PICKER_RESPONSE = 0x460011, - SMSG_TREASURE_PUNCH_LIST_ITEMS_RESPONSE = 0x42037D, - SMSG_TRIGGER_CINEMATIC = 0x420272, - SMSG_TRIGGER_MOVIE = 0x420175, - SMSG_TURN_IN_PETITION_RESULT = 0x4201F6, - SMSG_TUTORIAL_FLAGS = 0x420266, - SMSG_UI_ACTION = 0x420212, - SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x600023, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x420273, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x420274, - SMSG_UNIT_DIMINISHING_RETURN_START = 0x420379, - SMSG_UNLEARNED_SPELLS = 0x620041, - SMSG_UNLOAD_CHILD_MAP = 0x42000E, - SMSG_UNSET_INSTANCE_LEAVER = 0x42036F, - SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x420314, - SMSG_UPDATE_ACCOUNT_DATA = 0x4201B2, - SMSG_UPDATE_ACCOUNT_DATA_COMPLETE = 0x4201B3, - SMSG_UPDATE_ACTION_BUTTONS = 0x420082, - SMSG_UPDATE_BNET_SESSION_KEY = 0x4202CC, - SMSG_UPDATE_CAPTURE_POINT = 0x480007, - SMSG_UPDATE_CELESTIAL_BODY = 0x4202C8, - SMSG_UPDATE_CHARACTER_FLAGS = 0x42026C, - SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x42020E, - SMSG_UPDATE_COOLDOWN = 0x42020D, - SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x4C0038, - SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x4C0021, - SMSG_UPDATE_EXPANSION_LEVEL = 0x4200EE, - SMSG_UPDATE_GAME_TIME_STATE = 0x4202CF, - SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x420153, - SMSG_UPDATE_LAST_INSTANCE = 0x420132, - SMSG_UPDATE_OBJECT = 0x580000, - SMSG_UPDATE_PRIMARY_SPEC = 0x42007A, - SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x420097, - SMSG_UPDATE_TALENT_DATA = 0x420079, - SMSG_UPDATE_WORLD_STATE = 0x4201F0, - SMSG_USERLIST_ADD = 0x47000F, - SMSG_USERLIST_REMOVE = 0x470010, - SMSG_USERLIST_UPDATE = 0x470011, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x4201F7, - SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x4202C3, - SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x4202C1, - SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x4202C0, - SMSG_VAS_PURCHASE_COMPLETE = 0x42029A, - SMSG_VAS_PURCHASE_STATE_UPDATE = 0x420299, - SMSG_VENDOR_INVENTORY = 0x42005B, - SMSG_VIGNETTE_UPDATE = 0x5F0011, - SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x4202C7, - SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x42030F, - SMSG_VOICE_LOGIN_RESPONSE = 0x4202C6, - SMSG_VOID_ITEM_SWAP_RESPONSE = 0x630004, - SMSG_VOID_STORAGE_CONTENTS = 0x630001, - SMSG_VOID_STORAGE_FAILED = 0x630000, - SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x630002, - SMSG_VOID_TRANSFER_RESULT = 0x630003, - SMSG_WAIT_QUEUE_FINISH = 0x420003, - SMSG_WAIT_QUEUE_UPDATE = 0x420002, - SMSG_WALK_IN_RESULT = 0x650000, - SMSG_WARDEN3_DATA = 0x42000B, - SMSG_WARDEN3_DISABLED = 0x4202CA, - SMSG_WARDEN3_ENABLED = 0x4202C9, - SMSG_WARFRONT_COMPLETE = 0x420206, - SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x480012, - SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x480011, - SMSG_WEATHER = 0x420150, - SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x420307, - SMSG_WEEKLY_REWARDS_RESULT = 0x420305, - SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x420306, - SMSG_WHO = 0x470002, - SMSG_WHO_IS = 0x42014F, - SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x4202CE, - SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x5F0018, - SMSG_WORLD_SERVER_INFO = 0x420045, - SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x4202FD, - SMSG_WOW_LABS_AREA_SELECTED = 0x420329, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x420324, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x420325, - SMSG_WOW_LABS_PARTY_ERROR = 0x420331, - SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x42032A, - SMSG_WOW_LABS_SET_WOW_LABS_AREA_ID_RESPONSE = 0x420326, - SMSG_XP_AWARDED_FROM_CURRENCY = 0x42033F, - SMSG_XP_GAIN_ABORTED = 0x42006C, - SMSG_XP_GAIN_ENABLED = 0x420256, - SMSG_ZONE_UNDER_ATTACK = 0x47000B, + SMSG_ABORT_NEW_WORLD = 0x450030, + SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x450355, + SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x45035A, + SMSG_ACCOUNT_COSMETIC_ADDED = 0x450313, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x4502FB, + SMSG_ACCOUNT_DATA_TIMES = 0x4501B6, + SMSG_ACCOUNT_EXPORT_RESPONSE = 0x450344, + SMSG_ACCOUNT_EXTERIOR_FIXTURE_COLLECTION_UPDATE = 0x450055, + SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x45004A, + SMSG_ACCOUNT_HOUSE_TYPE_COLLECTION_UPDATE = 0x450058, + SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x450360, + SMSG_ACCOUNT_MOUNT_REMOVED = 0x450048, + SMSG_ACCOUNT_MOUNT_UPDATE = 0x450047, + SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x450312, + SMSG_ACCOUNT_ROOM_COLLECTION_UPDATE = 0x450054, + SMSG_ACCOUNT_ROOM_MATERIAL_COLLECTION_UPDATE = 0x450057, + SMSG_ACCOUNT_ROOM_THEME_COLLECTION_UPDATE = 0x450056, + SMSG_ACCOUNT_STORE_CURRENCY_UPDATE = 0x45032D, + SMSG_ACCOUNT_STORE_FRONT_UPDATE = 0x45032E, + SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED = 0x45032F, + SMSG_ACCOUNT_STORE_RESULT = 0x450330, + SMSG_ACCOUNT_TOY_UPDATE = 0x450049, + SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x450051, + SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x450050, + SMSG_ACCOUNT_WARBAND_SCENE_UPDATE = 0x450053, + SMSG_ACHIEVEMENT_DELETED = 0x450193, + SMSG_ACHIEVEMENT_EARNED = 0x4500EC, + SMSG_ACTIVATE_ESSENCE_FAILED = 0x640021, + SMSG_ACTIVATE_SOULBIND_FAILED = 0x640023, + SMSG_ACTIVATE_TAXI_REPLY = 0x450129, + SMSG_ACTIVE_GLYPHS = 0x670047, + SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x4501F1, + SMSG_ADDON_LIST_REQUEST = 0x4500EB, + SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x4500E6, + SMSG_ADD_ITEM_PASSIVE = 0x450043, + SMSG_ADD_LOSS_OF_CONTROL = 0x45011C, + SMSG_ADD_RUNE_POWER = 0x450164, + SMSG_ADJUST_SPLINE_DURATION = 0x450074, + SMSG_ADVANCED_COMBAT_LOG = 0x450310, + SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x45030B, + SMSG_AE_LOOT_TARGETS = 0x4500C1, + SMSG_AE_LOOT_TARGET_ACK = 0x4500C2, + SMSG_AI_REACTION = 0x450161, + SMSG_ALLIED_RACE_DETAILS = 0x4502A4, + SMSG_ALL_ACCOUNT_CRITERIA = 0x450005, + SMSG_ALL_ACHIEVEMENT_DATA = 0x450004, + SMSG_ALL_GUILD_ACHIEVEMENTS = 0x510000, + SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x4502E8, + SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x45001D, + SMSG_AREA_POI_UPDATE_RESPONSE = 0x640019, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x4501EA, + SMSG_AREA_TRIGGER_DENIED = 0x460004, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x4501C2, + SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x460002, + SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x460003, + SMSG_ARENA_CLEAR_OPPONENTS = 0x4500F2, + SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x4500DB, + SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x4500F1, + SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x450252, + SMSG_ARTIFACT_FORGE_ERROR = 0x450250, + SMSG_ARTIFACT_RESPEC_PROMPT = 0x450251, + SMSG_ARTIFACT_XP_GAIN = 0x450297, + SMSG_ATTACKER_STATE_UPDATE = 0x4B002C, + SMSG_ATTACK_START = 0x4B0017, + SMSG_ATTACK_STOP = 0x4B0018, + SMSG_ATTACK_SWING_ERROR = 0x4B0026, + SMSG_ATTACK_SWING_LANDED_LOG = 0x4B0027, + SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x450280, + SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x45027F, + SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x45027E, + SMSG_AUCTION_CLOSED_NOTIFICATION = 0x45019E, + SMSG_AUCTION_COMMAND_RESULT = 0x45019B, + SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x450331, + SMSG_AUCTION_FAVORITE_LIST = 0x450302, + SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x4502FA, + SMSG_AUCTION_HELLO_RESPONSE = 0x450199, + SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x4502F9, + SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x4502F5, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x4502F6, + SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x4502F8, + SMSG_AUCTION_OUTBID_NOTIFICATION = 0x45019D, + SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x45019F, + SMSG_AUCTION_REPLICATE_RESPONSE = 0x45019A, + SMSG_AUCTION_WON_NOTIFICATION = 0x45019C, + SMSG_AURA_POINTS_DEPLETED = 0x670012, + SMSG_AURA_UPDATE = 0x670011, + SMSG_AUTH_CHALLENGE = 0x4C0000, + SMSG_AUTH_FAILED = 0x450000, + SMSG_AUTH_RESPONSE = 0x450001, + SMSG_AVAILABLE_HOTFIXES = 0x490001, + SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x450332, + SMSG_BAG_CLEANUP_FINISHED = 0x680007, + SMSG_BARBER_SHOP_RESULT = 0x450169, + SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x4502D9, + SMSG_BATTLEFIELD_LIST = 0x4B0005, + SMSG_BATTLEFIELD_PORT_DENIED = 0x4B000B, + SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x4B0001, + SMSG_BATTLEFIELD_STATUS_FAILED = 0x4B0004, + SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED = 0x4B000E, + SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION = 0x4B0000, + SMSG_BATTLEFIELD_STATUS_NONE = 0x4B0003, + SMSG_BATTLEFIELD_STATUS_QUEUED = 0x4B0002, + SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x4B000D, + SMSG_BATTLEGROUND_INFO_THROTTLED = 0x4B000C, + SMSG_BATTLEGROUND_INIT = 0x4B0029, + SMSG_BATTLEGROUND_PLAYER_JOINED = 0x4B0009, + SMSG_BATTLEGROUND_PLAYER_LEFT = 0x4B000A, + SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x4B0006, + SMSG_BATTLEGROUND_POINTS = 0x4B0028, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x45023A, + SMSG_BATTLENET_CHALLENGE_START = 0x450239, + SMSG_BATTLENET_NOTIFICATION = 0x4502B0, + SMSG_BATTLENET_RESPONSE = 0x4502AF, + SMSG_BATTLE_NET_CONNECTION_STATUS = 0x4502B1, + SMSG_BATTLE_PAY_ACK_FAILED = 0x450235, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x450224, + SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x450225, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x450234, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x450222, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x450221, + SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x450318, + SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x45021F, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x450220, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x45021E, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x45021C, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x45021D, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x450223, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x450233, + SMSG_BATTLE_PAY_START_CHECKOUT = 0x4502CD, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x450231, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x450230, + SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x4502C0, + SMSG_BATTLE_PETS_HEALED = 0x450096, + SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x450124, + SMSG_BATTLE_PET_DELETED = 0x450093, + SMSG_BATTLE_PET_ERROR = 0x4500E1, + SMSG_BATTLE_PET_JOURNAL = 0x450092, + SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x450090, + SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x450091, + SMSG_BATTLE_PET_RESTORED = 0x450095, + SMSG_BATTLE_PET_REVOKED = 0x450094, + SMSG_BATTLE_PET_TRAP_LEVEL = 0x45008E, + SMSG_BATTLE_PET_UPDATES = 0x45008D, + SMSG_BIND_POINT_UPDATE = 0x450011, + SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x4500D1, + SMSG_BLACK_MARKET_OUTBID = 0x4500D2, + SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x4500D0, + SMSG_BLACK_MARKET_WON = 0x4500D3, + SMSG_BLEEP_PING = 0x4C000C, + SMSG_BONUS_ROLL_EMPTY = 0x4500EE, + SMSG_BOSS_KILL = 0x4B002B, + SMSG_BREAK_TARGET = 0x4B0016, + SMSG_BROADCAST_ACHIEVEMENT = 0x4A0012, + SMSG_BROADCAST_SUMMON_CAST = 0x4502DB, + SMSG_BROADCAST_SUMMON_RESPONSE = 0x4502DC, + SMSG_BULK_PURCHASE_RESPONSE = 0x450378, + SMSG_BULK_PURCHASE_UPDATE_RESPONSE = 0x450379, + SMSG_BULK_REFUND_RESPONSE = 0x45037A, + SMSG_BUY_FAILED = 0x450172, + SMSG_BUY_SUCCEEDED = 0x450171, + SMSG_CACHE_INFO = 0x49000F, + SMSG_CACHE_VERSION = 0x49000E, + SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x450149, + SMSG_CALENDAR_COMMAND_RESULT = 0x45014A, + SMSG_CALENDAR_COMMUNITY_INVITE = 0x450139, + SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x450141, + SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x450142, + SMSG_CALENDAR_INVITE_ADDED = 0x45013A, + SMSG_CALENDAR_INVITE_ALERT = 0x45013E, + SMSG_CALENDAR_INVITE_NOTES = 0x450143, + SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x450144, + SMSG_CALENDAR_INVITE_REMOVED = 0x45013B, + SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x450140, + SMSG_CALENDAR_INVITE_STATUS = 0x45013C, + SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x45013F, + SMSG_CALENDAR_MODERATOR_STATUS = 0x45013D, + SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x450145, + SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x450146, + SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x450147, + SMSG_CALENDAR_SEND_CALENDAR = 0x450137, + SMSG_CALENDAR_SEND_EVENT = 0x450138, + SMSG_CALENDAR_SEND_NUM_PENDING = 0x450148, + SMSG_CAMERA_EFFECT = 0x4501D0, + SMSG_CANCEL_AUTO_REPEAT = 0x450189, + SMSG_CANCEL_COMBAT = 0x4B0025, + SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x670039, + SMSG_CANCEL_PING_PIN = 0x45003C, + SMSG_CANCEL_PRELOAD_WORLD = 0x45002E, + SMSG_CANCEL_SCENE = 0x4500E0, + SMSG_CANCEL_SPELL_VISUAL = 0x670037, + SMSG_CANCEL_SPELL_VISUAL_KIT = 0x67003B, + SMSG_CAN_DUEL_RESULT = 0x4B0021, + SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x4502BF, + SMSG_CAPTURE_POINT_REMOVED = 0x4B0008, + SMSG_CAST_FAILED = 0x67004A, + SMSG_CAS_REFRESH_REMOTE_DATA = 0x450122, + SMSG_CATALOG_SHOP_LICENSE_DATA = 0x4502C1, + SMSG_CATALOG_SHOP_OBTAIN_LICENSE = 0x45036E, + SMSG_CATALOG_SHOP_OPEN_CHECKOUT_RESULT = 0x450361, + SMSG_CAUTIONARY_CHANNEL_MESSAGE = 0x4A0009, + SMSG_CAUTIONARY_CHAT_MESSAGE = 0x4A0008, + SMSG_CHAIN_MISSILE_BOUNCE = 0x45006C, + SMSG_CHALLENGE_MODE_COMPLETE = 0x4500B1, + SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x4500B2, + SMSG_CHALLENGE_MODE_REQUEST_LEADERBOARD_RESULT = 0x4500B9, + SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x4500B8, + SMSG_CHALLENGE_MODE_RESET = 0x4500B0, + SMSG_CHALLENGE_MODE_SET_LEAVER_PENALTY_TIMER = 0x640031, + SMSG_CHALLENGE_MODE_START = 0x4500AE, + SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x4500AF, + SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x64000D, + SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x4502B2, + SMSG_CHANNEL_LIST = 0x4A001B, + SMSG_CHANNEL_NOTIFY = 0x4A0017, + SMSG_CHANNEL_NOTIFY_JOINED = 0x4A0019, + SMSG_CHANNEL_NOTIFY_LEFT = 0x4A001A, + SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x4A0018, + SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x45026C, + SMSG_CHARACTER_LOGIN_FAILED = 0x4501B0, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x450238, + SMSG_CHARACTER_RENAME_RESULT = 0x45020D, + SMSG_CHARACTER_UPGRADE_ABORTED = 0x45026B, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x45026A, + SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x45026D, + SMSG_CHARACTER_UPGRADE_STARTED = 0x450269, + SMSG_CHAR_CUSTOMIZE_FAILURE = 0x45018D, + SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x45018E, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x450256, + SMSG_CHAT = 0x4A0001, + SMSG_CHAT_AUTO_RESPONDED = 0x4A000E, + SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x4A0022, + SMSG_CHAT_DOWN = 0x4A0014, + SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x4A0000, + SMSG_CHAT_IS_DOWN = 0x4A0015, + SMSG_CHAT_LAIR_DIFFICULTY_MESSAGE = 0x4A0024, + SMSG_CHAT_NOT_IN_GUILD = 0x4A0023, + SMSG_CHAT_NOT_IN_PARTY = 0x4A0006, + SMSG_CHAT_PLAYER_AMBIGUOUS = 0x4A0004, + SMSG_CHAT_PLAYER_NOTFOUND = 0x4A000D, + SMSG_CHAT_RECONNECT = 0x4A0016, + SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x4A001D, + SMSG_CHAT_RESTRICTED = 0x4A0007, + SMSG_CHAT_SERVER_MESSAGE = 0x4A001C, + SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x670002, + SMSG_CHECK_ABANDON_NPE = 0x640024, + SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x45001B, + SMSG_CHECK_WARGAME_ENTRY = 0x450027, + SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x450305, + SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x4502EC, + SMSG_CLEAR_ALL_SPELL_CHARGES = 0x670016, + SMSG_CLEAR_BOSS_EMOTES = 0x45005F, + SMSG_CLEAR_COOLDOWN = 0x450166, + SMSG_CLEAR_COOLDOWNS = 0x670015, + SMSG_CLEAR_INITIATIVE_TASK_CRITERIA_PROGRESS = 0x450369, + SMSG_CLEAR_RESURRECT = 0x450013, + SMSG_CLEAR_SPELL_CHARGES = 0x670017, + SMSG_CLEAR_TARGET = 0x4B0022, + SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x650022, + SMSG_CLOSE_ARTIFACT_FORGE = 0x45024F, + SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x4502E4, + SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x4502E7, + SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x4502E5, + SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x4502E2, + SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x4502E6, + SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x4502E3, + SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x45031D, + SMSG_COIN_REMOVED = 0x4500C0, + SMSG_COMBAT_EVENT_FAILED = 0x4B0019, + SMSG_COMMENTATOR_MAP_INFO = 0x4501B2, + SMSG_COMMENTATOR_PLAYER_INFO = 0x4501B3, + SMSG_COMMENTATOR_STATE_CHANGED = 0x4501B1, + SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x45027B, + SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x450287, + SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x45027D, + SMSG_COMMERCE_TOKEN_UPDATE = 0x45027C, + SMSG_COMPLAINT_RESULT = 0x450157, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x450248, + SMSG_COMPRESSED_PACKET = 0x4C000E, + SMSG_CONFIRM_PARTY_INVITE = 0x4502BE, + SMSG_CONNECT_TO = 0x4C0008, + SMSG_CONSOLE_WRITE = 0x4500DE, + SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x450283, + SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x450282, + SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x450281, + SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x450285, + SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x450286, + SMSG_CONTACT_LIST = 0x450236, + SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x4502C6, + SMSG_CONTROL_UPDATE = 0x4500F0, + SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x45030E, + SMSG_COOLDOWN_CHEAT = 0x4501E3, + SMSG_COOLDOWN_EVENT = 0x450165, + SMSG_CORPSE_LOCATION = 0x4500F7, + SMSG_CORPSE_RECLAIM_DELAY = 0x4501F4, + SMSG_CORPSE_TRANSPORT_QUERY = 0x4501BE, + SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x650024, + SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x4502A7, + SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x45030F, + SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x45033E, + SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x45033A, + SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x450336, + SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x450338, + SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x450334, + SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x450339, + SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x450335, + SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x450340, + SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x45033C, + SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x450337, + SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x45033F, + SMSG_CRAFT_ENCHANT_RESULT = 0x45033D, + SMSG_CREATE_CHAR = 0x4501AC, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x450247, + SMSG_CREATOR_VISUALS_OVERRIDE = 0x450343, + SMSG_CRITERIA_DELETED = 0x450192, + SMSG_CRITERIA_UPDATE = 0x45018C, + SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x45016D, + SMSG_CURRENCY_TRANSFER_LOG = 0x450357, + SMSG_CURRENCY_TRANSFER_RESULT = 0x450356, + SMSG_CUSTOM_LOAD_SCREEN = 0x45006F, + SMSG_DAILY_QUESTS_RESET = 0x650000, + SMSG_DAMAGE_CALC_LOG = 0x670056, + SMSG_DB_REPLY = 0x490000, + SMSG_DEATH_RELEASE_LOC = 0x45017F, + SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x4500FF, + SMSG_DEFENSE_MESSAGE = 0x4A000C, + SMSG_DELETE_CHAR = 0x4501AD, + SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x4F0022, + SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x45035C, + SMSG_DESTROY_ARENA_UNIT = 0x4501EC, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x4501A4, + SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x450020, + SMSG_DISENCHANT_CREDIT = 0x450040, + SMSG_DISMOUNT_RESULT = 0x450010, + SMSG_DISPEL_FAILED = 0x67001E, + SMSG_DISPLAY_GAME_ERROR = 0x450035, + SMSG_DISPLAY_PLAYER_CHOICE = 0x640004, + SMSG_DISPLAY_PROMOTION = 0x4500F4, + SMSG_DISPLAY_QUEST_POPUP = 0x65001E, + SMSG_DISPLAY_TOAST = 0x4500CD, + SMSG_DISPLAY_WORLD_TEXT = 0x450298, + SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x670055, + SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x450084, + SMSG_DROP_NEW_CONNECTION = 0x4C0007, + SMSG_DUEL_ARRANGED = 0x4B001B, + SMSG_DUEL_COMPLETE = 0x4B001F, + SMSG_DUEL_COUNTDOWN = 0x4B001E, + SMSG_DUEL_IN_BOUNDS = 0x4B001D, + SMSG_DUEL_OUT_OF_BOUNDS = 0x4B001C, + SMSG_DUEL_REQUESTED = 0x4B001A, + SMSG_DUEL_WINNER = 0x4B0020, + SMSG_DURABILITY_DAMAGE_DEATH = 0x4501EF, + SMSG_EMOTE = 0x450273, + SMSG_ENABLE_BARBER_SHOP = 0x450168, + SMSG_ENCHANTMENT_LOG = 0x4501BF, + SMSG_ENCOUNTER_END = 0x450229, + SMSG_ENCOUNTER_START = 0x450228, + SMSG_END_LIGHTNING_STORM = 0x450154, + SMSG_ENTER_ENCRYPTED_MODE = 0x4C0004, + SMSG_ENUM_CHARACTERS_RESULT = 0x450018, + SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x45029D, + SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x67000E, + SMSG_EQUIPMENT_SET_ID = 0x45015D, + SMSG_EXPECTED_SPAM_RECORDS = 0x4A0005, + SMSG_EXPLORATION_EXPERIENCE = 0x450209, + SMSG_EXPORT_ACCOUNT_PROFILE = 0x4500FC, + SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x45030C, + SMSG_FACTION_BONUS_INFO = 0x4501CF, + SMSG_FAILED_PLAYER_CONDITION = 0x640002, + SMSG_FAILED_QUEST_TURN_IN = 0x4502BB, + SMSG_FEATURE_SYSTEM_STATUS = 0x450063, + SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x450064, + SMSG_FEIGN_DEATH_RESISTED = 0x4501EE, + SMSG_FETCH_BLEEP_PROXIES_RESPONSE = 0x450383, + SMSG_FISH_ESCAPED = 0x45017C, + SMSG_FISH_NOT_HOOKED = 0x45017B, + SMSG_FLIGHT_SPLINE_SYNC = 0x5E005D, + SMSG_FLUSH_COMBAT_LOG_FILE = 0x670010, + SMSG_FORCED_DEATH_UPDATE = 0x450180, + SMSG_FORCE_ANIM = 0x4501FB, + SMSG_FORCE_ANIMATIONS = 0x4501FC, + SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x45004F, + SMSG_FORCE_SPAWN_TRACKING_UPDATE = 0x650021, + SMSG_FRIEND_STATUS = 0x450237, + SMSG_GAIN_MAW_POWER = 0x45028C, + SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x450067, + SMSG_GAME_OBJECT_BASE = 0x4502D3, + SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x45031C, + SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x450068, + SMSG_GAME_OBJECT_DESPAWN = 0x450069, + SMSG_GAME_OBJECT_INTERACTION = 0x45031B, + SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x67003E, + SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x67003D, + SMSG_GAME_OBJECT_RESET_STATE = 0x4501C9, + SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x4502AE, + SMSG_GAME_SPEED_SET = 0x45012D, + SMSG_GAME_TIME_SET = 0x4501B8, + SMSG_GAME_TIME_UPDATE = 0x4501B7, + SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x4F0024, + SMSG_GARRISON_ADD_EVENT = 0x4F0048, + SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x4F0016, + SMSG_GARRISON_ADD_MISSION_RESULT = 0x4F001A, + SMSG_GARRISON_ADD_SPEC_GROUPS = 0x4F004B, + SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x4F004F, + SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x4F002C, + SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x4F0051, + SMSG_GARRISON_BUILDING_ACTIVATED = 0x4F000B, + SMSG_GARRISON_BUILDING_REMOVED = 0x4F0004, + SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x4F0006, + SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x4F001D, + SMSG_GARRISON_CLEAR_COLLECTION = 0x4F0047, + SMSG_GARRISON_CLEAR_EVENT_LIST = 0x4F004A, + SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0x4F004C, + SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x4F0046, + SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x4F0045, + SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x4F003D, + SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x4F001C, + SMSG_GARRISON_CREATE_RESULT = 0x4F000C, + SMSG_GARRISON_DELETE_MISSION_RESULT = 0x4F0023, + SMSG_GARRISON_DELETE_RESULT = 0x4F0035, + SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0x4F002B, + SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0x4F0029, + SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x4F0027, + SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0x4F0028, + SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x4F0026, + SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0x4F002A, + SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x4F0033, + SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x4F0015, + SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x4F001E, + SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x4F003F, + SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x4F0007, + SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x4F0005, + SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x4F0040, + SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x4F0019, + SMSG_GARRISON_MAP_DATA_RESPONSE = 0x4F0042, + SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x4F0020, + SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x4F0043, + SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x4F0025, + SMSG_GARRISON_OPEN_CRAFTER = 0x4F0037, + SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x4F0030, + SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x4F0003, + SMSG_GARRISON_PLOT_PLACED = 0x4F0001, + SMSG_GARRISON_PLOT_REMOVED = 0x4F0002, + SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x4F0034, + SMSG_GARRISON_REMOTE_INFO = 0x4F000A, + SMSG_GARRISON_REMOVE_EVENT = 0x4F0049, + SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x4F002F, + SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x4F002D, + SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x4F0017, + SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0x4F002E, + SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x4F0009, + SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0x4F000E, + SMSG_GARRISON_RESET_TALENT_TREE = 0x4F0013, + SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x4F0014, + SMSG_GARRISON_START_MISSION_RESULT = 0x4F001B, + SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x4F003C, + SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x4F004D, + SMSG_GARRISON_TALENT_COMPLETED = 0x4F000F, + SMSG_GARRISON_TALENT_REMOVED = 0x4F0010, + SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x4F0012, + SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x4F0011, + SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x4F004E, + SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x4F0008, + SMSG_GARRISON_UPDATE_FOLLOWER = 0x4F0018, + SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x4F003E, + SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x4F0050, + SMSG_GARRISON_UPGRADE_RESULT = 0x4F000D, + SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x4F001F, + SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x45001C, + SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x4502C7, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x45020B, + SMSG_GET_ALL_LICENSED_DECOR_QUANTITIES_RESPONSE = 0x45037C, + SMSG_GET_DECOR_REFUND_LIST_RESPONSE = 0x450377, + SMSG_GET_GARRISON_INFO_RESULT = 0x4F0000, + SMSG_GET_INITIATIVE_ACTIVITY_LOG_RESULT = 0x45036B, + SMSG_GET_INITIATIVE_REWARDS_RESULT = 0x45036C, + SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x45024A, + SMSG_GET_PLAYER_INITIATIVE_INFO_RESULT = 0x45036A, + SMSG_GET_REALM_HIDDEN_RESULT = 0x45034C, + SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x450284, + SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x450271, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x450249, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x450245, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x450270, + SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x450299, + SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x45029A, + SMSG_GM_PLAYER_INFO = 0x64000E, + SMSG_GM_REQUEST_PLAYER_INFO = 0x640003, + SMSG_GM_TICKET_CASE_STATUS = 0x45014F, + SMSG_GM_TICKET_SYSTEM_STATUS = 0x45014E, + SMSG_GOD_MODE = 0x4501A7, + SMSG_GOSSIP_COMPLETE = 0x650017, + SMSG_GOSSIP_MESSAGE = 0x650018, + SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x650028, + SMSG_GOSSIP_POI = 0x450242, + SMSG_GOSSIP_QUEST_UPDATE = 0x650019, + SMSG_GOSSIP_REFRESH_OPTIONS = 0x650027, + SMSG_GROUP_ACTION_THROTTLED = 0x450024, + SMSG_GROUP_AUTO_KICK = 0x45023F, + SMSG_GROUP_DECLINE = 0x45023B, + SMSG_GROUP_DESTROYED = 0x45023E, + SMSG_GROUP_NEW_LEADER = 0x4500D6, + SMSG_GROUP_REQUEST_DECLINE = 0x45023C, + SMSG_GROUP_UNINVITE = 0x45023D, + SMSG_GUILD_ACHIEVEMENT_DELETED = 0x51000D, + SMSG_GUILD_ACHIEVEMENT_EARNED = 0x51000C, + SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x51000F, + SMSG_GUILD_BANK_LOG_QUERY_RESULTS = 0x510027, + SMSG_GUILD_BANK_QUERY_RESULTS = 0x510026, + SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY = 0x510028, + SMSG_GUILD_BANK_TEXT_QUERY_RESULT = 0x51002B, + SMSG_GUILD_CHALLENGE_COMPLETED = 0x51001B, + SMSG_GUILD_CHALLENGE_UPDATE = 0x51001A, + SMSG_GUILD_CHANGE_NAME_RESULT = 0x510025, + SMSG_GUILD_COMMAND_RESULT = 0x510002, + SMSG_GUILD_CRITERIA_DELETED = 0x51000E, + SMSG_GUILD_CRITERIA_UPDATE = 0x51000B, + SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x510040, + SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x51003F, + SMSG_GUILD_EVENT_DISBANDED = 0x510035, + SMSG_GUILD_EVENT_LOG_QUERY_RESULTS = 0x51002A, + SMSG_GUILD_EVENT_MOTD = 0x510036, + SMSG_GUILD_EVENT_NEW_LEADER = 0x510034, + SMSG_GUILD_EVENT_PLAYER_JOINED = 0x510032, + SMSG_GUILD_EVENT_PLAYER_LEFT = 0x510033, + SMSG_GUILD_EVENT_PRESENCE_CHANGE = 0x510037, + SMSG_GUILD_EVENT_RANKS_UPDATED = 0x510039, + SMSG_GUILD_EVENT_RANK_CHANGED = 0x51003A, + SMSG_GUILD_EVENT_STATUS_CHANGE = 0x510038, + SMSG_GUILD_EVENT_TAB_ADDED = 0x51003B, + SMSG_GUILD_EVENT_TAB_DELETED = 0x51003C, + SMSG_GUILD_EVENT_TAB_MODIFIED = 0x51003D, + SMSG_GUILD_EVENT_TAB_TEXT_CHANGED = 0x51003E, + SMSG_GUILD_FLAGGED_FOR_RENAME = 0x510024, + SMSG_GUILD_HARDCORE_MEMBER_DEATH = 0x510004, + SMSG_GUILD_INVITE = 0x510012, + SMSG_GUILD_INVITE_DECLINED = 0x510030, + SMSG_GUILD_INVITE_EXPIRED = 0x510031, + SMSG_GUILD_ITEM_LOOTED_NOTIFY = 0x51001C, + SMSG_GUILD_KNOWN_RECIPES = 0x510006, + SMSG_GUILD_MEMBERS_WITH_RECIPE = 0x510007, + SMSG_GUILD_MEMBER_DAILY_RESET = 0x51002C, + SMSG_GUILD_MEMBER_RECIPES = 0x510005, + SMSG_GUILD_MEMBER_UPDATE_NOTE = 0x510011, + SMSG_GUILD_MOVED = 0x510022, + SMSG_GUILD_MOVE_STARTING = 0x510021, + SMSG_GUILD_NAME_CHANGED = 0x510023, + SMSG_GUILD_NEWS = 0x510009, + SMSG_GUILD_NEWS_DELETED = 0x51000A, + SMSG_GUILD_OTHERS_OWNED_HOUSES_RESULT = 0x510047, + SMSG_GUILD_PARTY_STATE = 0x510013, + SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x510029, + SMSG_GUILD_RANKS = 0x510010, + SMSG_GUILD_RENAME_NAME_CHECK = 0x510044, + SMSG_GUILD_RENAME_REFUND_RESULT = 0x510046, + SMSG_GUILD_RENAME_REQUESTED_RESULT = 0x510045, + SMSG_GUILD_RENAME_STATUS_UPDATE = 0x510043, + SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x510014, + SMSG_GUILD_RESET = 0x510020, + SMSG_GUILD_REWARD_LIST = 0x510008, + SMSG_GUILD_ROSTER = 0x510003, + SMSG_GUILD_SEND_RANK_CHANGE = 0x510001, + SMSG_HARDCORE_DEATH_ALERT = 0x450354, + SMSG_HEALTH_UPDATE = 0x45017D, + SMSG_HIGHEST_THREAT_UPDATE = 0x450185, + SMSG_HOTFIX_CONNECT = 0x490003, + SMSG_HOTFIX_MESSAGE = 0x490002, + SMSG_HOUSE_EXTERIOR_LOCK_RESPONSE = 0x530000, + SMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION_RESPONSE = 0x530001, + SMSG_HOUSING_BLUEPRINT_CHECK_RESPONSE = 0x540007, + SMSG_HOUSING_BLUEPRINT_DELETE_RESPONSE = 0x540003, + SMSG_HOUSING_BLUEPRINT_EXPORT_RESPONSE = 0x540000, + SMSG_HOUSING_BLUEPRINT_GET_RESPONSE = 0x540001, + SMSG_HOUSING_BLUEPRINT_IMPORT_RESPONSE = 0x540004, + SMSG_HOUSING_BLUEPRINT_RENAME_RESPONSE = 0x540002, + SMSG_HOUSING_DECOR_ADD_TO_HOUSE_CHEST_RESPONSE = 0x550008, + SMSG_HOUSING_DECOR_DELETE_FROM_STORAGE_RESPONSE = 0x550006, + SMSG_HOUSING_DECOR_DRAW_SERVER_LIGHTING_DEBUG_SPHERES_RESPONSE = 0x550001, + SMSG_HOUSING_DECOR_LOCK_RESPONSE = 0x550005, + SMSG_HOUSING_DECOR_MOVE_RESPONSE = 0x550002, + SMSG_HOUSING_DECOR_PLACE_RESPONSE = 0x550003, + SMSG_HOUSING_DECOR_REMOVE_RESPONSE = 0x550004, + SMSG_HOUSING_DECOR_REQUEST_STORAGE_RESPONSE = 0x550007, + SMSG_HOUSING_DECOR_SET_EDIT_MODE_RESPONSE = 0x550000, + SMSG_HOUSING_DECOR_SYSTEM_SET_DYE_SLOTS_RESPONSE = 0x550009, + SMSG_HOUSING_FIRST_TIME_DECOR_ACQUISITION = 0x55000B, + SMSG_HOUSING_FIXTURE_CREATE_BASIC_HOUSE_RESPONSE = 0x560001, + SMSG_HOUSING_FIXTURE_CREATE_FIXTURE_RESPONSE = 0x560006, + SMSG_HOUSING_FIXTURE_DELETE_FIXTURE_RESPONSE = 0x560007, + SMSG_HOUSING_FIXTURE_DELETE_HOUSE_RESPONSE = 0x560002, + SMSG_HOUSING_FIXTURE_SET_CORE_FIXTURE_RESPONSE = 0x560005, + SMSG_HOUSING_FIXTURE_SET_EDIT_MODE_RESPONSE = 0x560000, + SMSG_HOUSING_FIXTURE_SET_HOUSE_SIZE_RESPONSE = 0x560003, + SMSG_HOUSING_FIXTURE_SET_HOUSE_TYPE_RESPONSE = 0x560004, + SMSG_HOUSING_GET_CURRENT_HOUSE_INFO_RESPONSE = 0x590001, + SMSG_HOUSING_GET_PLAYER_PERMISSIONS_RESPONSE = 0x590004, + SMSG_HOUSING_HOUSE_STATUS_RESPONSE = 0x590000, + SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_CLEARED_RESULT = 0x450382, + SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_RESULT = 0x450381, + SMSG_HOUSING_REDEEM_DEFERRED_DECOR_RESPONSE = 0x55000A, + SMSG_HOUSING_RESET_HOUSE_RESPONSE = 0x590006, + SMSG_HOUSING_RESET_KIOSK_MODE_RESPONSE = 0x590005, + SMSG_HOUSING_ROOM_ADD_RESPONSE = 0x570001, + SMSG_HOUSING_ROOM_APPLY_COMPONENT_MATERIALS_RESPONSE = 0x570005, + SMSG_HOUSING_ROOM_REMOVE_RESPONSE = 0x570002, + SMSG_HOUSING_ROOM_SET_CEILING_TYPE_RESPONSE = 0x570007, + SMSG_HOUSING_ROOM_SET_COMPONENT_THEME_RESPONSE = 0x570004, + SMSG_HOUSING_ROOM_SET_DOOR_TYPE_RESPONSE = 0x570006, + SMSG_HOUSING_ROOM_SET_LAYOUT_EDIT_MODE_RESPONSE = 0x570000, + SMSG_HOUSING_ROOM_UPDATE_RESPONSE = 0x570003, + SMSG_HOUSING_SVCS_ACCEPT_NEIGHBORHOOD_OWNERSHIP_RESPONSE = 0x580017, + SMSG_HOUSING_SVCS_CANCEL_RELINQUISH_HOUSE_RESPONSE = 0x580008, + SMSG_HOUSING_SVCS_CHANGE_HOUSE_COSMETIC_OWNER = 0x580010, + SMSG_HOUSING_SVCS_CLEAR_PLOT_RESERVATION_RESPONSE = 0x580005, + SMSG_HOUSING_SVCS_CREATE_CHARTER_NEIGHBORHOOD_RESPONSE = 0x580003, + SMSG_HOUSING_SVCS_DELETE_ALL_NEIGHBORHOOD_INVITES_RESPONSE = 0x580021, + SMSG_HOUSING_SVCS_GET_BNET_FRIEND_NEIGHBORHOODS_RESPONSE = 0x58001E, + SMSG_HOUSING_SVCS_GET_HOUSE_FINDER_INFO_RESPONSE = 0x58001C, + SMSG_HOUSING_SVCS_GET_HOUSE_FINDER_NEIGHBORHOOD_RESPONSE = 0x58001D, + SMSG_HOUSING_SVCS_GET_PLAYER_HOUSES_INFO_RESPONSE = 0x58000B, + SMSG_HOUSING_SVCS_GET_POTENTIAL_HOUSE_OWNERS_RESPONSE = 0x58001A, + SMSG_HOUSING_SVCS_GUILD_ADD_HOUSE_NOTIFICATION = 0x580012, + SMSG_HOUSING_SVCS_GUILD_APPEND_NEIGHBORHOOD_NOTIFICATION = 0x580014, + SMSG_HOUSING_SVCS_GUILD_CREATE_NEIGHBORHOOD_NOTIFICATION = 0x580001, + SMSG_HOUSING_SVCS_GUILD_GET_HOUSING_INFO_RESPONSE = 0x580016, + SMSG_HOUSING_SVCS_GUILD_REMOVE_HOUSE_NOTIFICATION = 0x580013, + SMSG_HOUSING_SVCS_GUILD_RENAME_NEIGHBORHOOD_NOTIFICATION = 0x580015, + SMSG_HOUSING_SVCS_HOUSE_FINDER_FORCE_REFRESH = 0x58001F, + SMSG_HOUSING_SVCS_IGNORE_NEIGHBORHOOD_INVITE_RESPONSE = 0x580022, + SMSG_HOUSING_SVCS_NEIGHBORHOOD_OWNERSHIP_TRANSFERRED_RESPONSE = 0x580019, + SMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT_RESPONSE = 0x580004, + SMSG_HOUSING_SVCS_NEIGHBORHOOD_UPDATE_NAME_NOTIFICATION = 0x580024, + SMSG_HOUSING_SVCS_NOTIFY_PERMISSIONS_FAILURE = 0x580000, + SMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_RESPONSE = 0x58000C, + SMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP_RESPONSE = 0x580018, + SMSG_HOUSING_SVCS_RELINQUISH_HOUSE_RESPONSE = 0x580007, + SMSG_HOUSING_SVCS_UPDATE_HOUSES_LEVEL_FAVOR = 0x580011, + SMSG_HOUSING_SVCS_UPDATE_HOUSE_SETTINGS_RESPONSE = 0x58001B, + SMSG_HOUSING_SVC_REQUEST_PLAYER_RELOAD_DATA = 0x580020, + SMSG_INITIALIZE_FACTIONS = 0x4501CE, + SMSG_INITIAL_SETUP = 0x450014, + SMSG_INITIATIVE_COMPLETE = 0x450368, + SMSG_INITIATIVE_REWARD_AVAILABLE = 0x45036D, + SMSG_INITIATIVE_SERVICE_STATUS = 0x450366, + SMSG_INITIATIVE_TASK_COMPLETE = 0x450367, + SMSG_INIT_WORLD_STATES = 0x4501F0, + SMSG_INSPECT_RESULT = 0x4500DA, + SMSG_INSTANCE_ABANDON_VOTE_COMPLETED = 0x45009E, + SMSG_INSTANCE_ABANDON_VOTE_PLAYER_LEFT = 0x45009F, + SMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x45009D, + SMSG_INSTANCE_ABANDON_VOTE_STARTED = 0x45009C, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x45025C, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x45025B, + SMSG_INSTANCE_ENCOUNTER_END = 0x450264, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x45025A, + SMSG_INSTANCE_ENCOUNTER_EVENT_APPEND = 0x45022C, + SMSG_INSTANCE_ENCOUNTER_EVENT_BLOCKED_CHANGED = 0x45022E, + SMSG_INSTANCE_ENCOUNTER_EVENT_CAST_UPDATE = 0x45022F, + SMSG_INSTANCE_ENCOUNTER_EVENT_RESPAWN = 0x45022D, + SMSG_INSTANCE_ENCOUNTER_EVENT_SEQUENCE = 0x45022A, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x450266, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x450265, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x45025F, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x45025E, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x450263, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x450267, + SMSG_INSTANCE_ENCOUNTER_START = 0x450260, + SMSG_INSTANCE_ENCOUNTER_TIMELINE_SYNC = 0x45022B, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x45025D, + SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x450262, + SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x450261, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x4501A5, + SMSG_INSTANCE_INFO = 0x4500DD, + SMSG_INSTANCE_RESET = 0x450132, + SMSG_INSTANCE_RESET_FAILED = 0x450133, + SMSG_INSTANCE_SAVE_CREATED = 0x450227, + SMSG_INTERRUPT_POWER_REGEN = 0x67004C, + SMSG_INVALIDATE_NEIGHBORHOOD = 0x640008, + SMSG_INVALIDATE_NEIGHBORHOOD_NAME = 0x490013, + SMSG_INVALIDATE_PAGE_TEXT = 0x49000A, + SMSG_INVALIDATE_PLAYER = 0x640007, + SMSG_INVALID_PROMOTION_CODE = 0x4501FD, + SMSG_INVENTORY_CHANGE_FAILURE = 0x680005, + SMSG_INVENTORY_FIXUP_COMPLETE = 0x4502BD, + SMSG_INVENTORY_FULL_OVERFLOW = 0x4502CF, + SMSG_ISLAND_AZERITE_GAIN = 0x450206, + SMSG_ISLAND_COMPLETE = 0x450207, + SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x650004, + SMSG_ITEM_CHANGED = 0x450196, + SMSG_ITEM_COOLDOWN = 0x450272, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x4501FF, + SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x450034, + SMSG_ITEM_INTERACTION_COMPLETE = 0x450304, + SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x450032, + SMSG_ITEM_PUSH_RESULT = 0x4500CC, + SMSG_ITEM_TIME_UPDATE = 0x4501FE, + SMSG_KICK_REASON = 0x450135, + SMSG_LAST_CATALOG_FETCH_RESPONSE = 0x450380, + SMSG_LATENCY_REPORT_PING = 0x450314, + SMSG_LEARNED_SPELLS = 0x670040, + SMSG_LEARN_PVP_TALENT_FAILED = 0x450078, + SMSG_LEARN_TALENT_FAILED = 0x450077, + SMSG_LEGACY_LOOT_RULES = 0x4502D4, + SMSG_LEVEL_LINKING_RESULT = 0x4502EA, + SMSG_LEVEL_UP_INFO = 0x450194, + SMSG_LFG_BOOT_PLAYER = 0x5A0019, + SMSG_LFG_DISABLED = 0x5A0017, + SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x5A001F, + SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x5A0009, + SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE = 0x5A0020, + SMSG_LFG_JOIN_RESULT = 0x5A0000, + SMSG_LFG_LIST_APPLICANT_LIST_UPDATE = 0x5A000F, + SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE = 0x5A000C, + SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT = 0x5A000D, + SMSG_LFG_LIST_CENSORED_ACTIVE_ENTRY_UPDATE = 0x5A0022, + SMSG_LFG_LIST_JOIN_RESULT = 0x5A0001, + SMSG_LFG_LIST_SEARCH_RESULTS = 0x5A0002, + SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE = 0x5A0010, + SMSG_LFG_LIST_SEARCH_STATUS = 0x5A0003, + SMSG_LFG_LIST_UPDATE_BLACKLIST = 0x5A000E, + SMSG_LFG_LIST_UPDATE_EXPIRATION = 0x5A000B, + SMSG_LFG_LIST_UPDATE_STATUS = 0x5A000A, + SMSG_LFG_OFFER_CONTINUE = 0x5A0018, + SMSG_LFG_PARTY_INFO = 0x5A001A, + SMSG_LFG_PLAYER_INFO = 0x5A001B, + SMSG_LFG_PLAYER_REWARD = 0x5A001C, + SMSG_LFG_PROPOSAL_UPDATE = 0x5A0011, + SMSG_LFG_QUEUE_STATUS = 0x5A0004, + SMSG_LFG_READY_CHECK_RESULT = 0x5A001E, + SMSG_LFG_READY_CHECK_UPDATE = 0x5A0006, + SMSG_LFG_ROLE_CHECK_UPDATE = 0x5A0005, + SMSG_LFG_SLOT_INVALID = 0x5A0014, + SMSG_LFG_SUSPEND_LOREWALKING = 0x5A0021, + SMSG_LFG_TELEPORT_DENIED = 0x5A0016, + SMSG_LFG_UPDATE_STATUS = 0x5A0008, + SMSG_LICENSED_DECOR_QUANTITIES_UPDATE = 0x45037D, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x450219, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x450218, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x45020C, + SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x45021A, + SMSG_LOAD_CUF_PROFILES = 0x450060, + SMSG_LOAD_EQUIPMENT_SET = 0x4501BA, + SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x45031E, + SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x45031F, + SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x450320, + SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED = 0x450322, + SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT = 0x450323, + SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x450321, + SMSG_LOGIN_SET_TIME_SPEED = 0x4501B9, + SMSG_LOGIN_VERIFY_WORLD = 0x45002F, + SMSG_LOGOUT_CANCEL_ACK = 0x450131, + SMSG_LOGOUT_COMPLETE = 0x450130, + SMSG_LOGOUT_RESPONSE = 0x45012F, + SMSG_LOG_XP_GAIN = 0x450190, + SMSG_LOOT_ALL_PASSED = 0x4500CA, + SMSG_LOOT_LIST = 0x4501EB, + SMSG_LOOT_MONEY_NOTIFY = 0x4500C5, + SMSG_LOOT_RELEASE = 0x4500C4, + SMSG_LOOT_RELEASE_ALL = 0x4500C3, + SMSG_LOOT_REMOVED = 0x4500BF, + SMSG_LOOT_RESPONSE = 0x4500BE, + SMSG_LOOT_ROLL = 0x4500C7, + SMSG_LOOT_ROLLS_COMPLETE = 0x4500C9, + SMSG_LOOT_ROLL_WON = 0x4500CB, + SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x45011B, + SMSG_MAIL_COMMAND_RESULT = 0x4500E4, + SMSG_MAIL_LIST_RESULT = 0x450200, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x450201, + SMSG_MAP_OBJECTIVES_INIT = 0x4B002A, + SMSG_MAP_OBJ_EVENTS = 0x45006A, + SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x4500C8, + SMSG_MEETING_STONE_FAILED = 0x450324, + SMSG_MESSAGE_BOX = 0x45000A, + SMSG_MINIMAP_PING = 0x45017A, + SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x670004, + SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x670003, + SMSG_MIRROR_VARS = 0x45036F, + SMSG_MISSILE_CANCEL = 0x45006B, + SMSG_MODIFY_COOLDOWN = 0x45020E, + SMSG_MOTD = 0x4A0003, + SMSG_MOUNT_RESULT = 0x45000F, + SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x4502DA, + SMSG_MOVE_ADD_IMPULSE = 0x5E0064, + SMSG_MOVE_APPLY_INERTIA = 0x5E0060, + SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x5E0047, + SMSG_MOVE_DISABLE_COLLISION = 0x5E0043, + SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x5E002D, + SMSG_MOVE_DISABLE_FULL_SPEED_PITCHING = 0x5E0079, + SMSG_MOVE_DISABLE_FULL_SPEED_TURNING = 0x5E0077, + SMSG_MOVE_DISABLE_GRAVITY = 0x5E003F, + SMSG_MOVE_DISABLE_INERTIA = 0x5E0041, + SMSG_MOVE_DISABLE_JUMPING = 0x5E007C, + SMSG_MOVE_DISABLE_STRAFING = 0x5E007E, + SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x5E003E, + SMSG_MOVE_ENABLE_COLLISION = 0x5E0044, + SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x5E002C, + SMSG_MOVE_ENABLE_FULL_SPEED_PITCHING = 0x5E0078, + SMSG_MOVE_ENABLE_FULL_SPEED_TURNING = 0x5E0076, + SMSG_MOVE_ENABLE_GRAVITY = 0x5E0040, + SMSG_MOVE_ENABLE_INERTIA = 0x5E0042, + SMSG_MOVE_ENABLE_JUMPING = 0x5E007D, + SMSG_MOVE_ENABLE_STRAFING = 0x5E007F, + SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x5E003D, + SMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE = 0x5E0075, + SMSG_MOVE_KNOCK_BACK = 0x5E0033, + SMSG_MOVE_MARK_REMOTE_TIME_INVALID = 0x5E005F, + SMSG_MOVE_REMOVE_INERTIA = 0x5E0061, + SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x5E0048, + SMSG_MOVE_ROOT = 0x5E0029, + SMSG_MOVE_SET_ACTIVE_MOVER = 0x5E0003, + SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = 0x5E006D, + SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = 0x5E0068, + SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = 0x5E006E, + SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = 0x5E006B, + SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = 0x5E006C, + SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = 0x5E0074, + SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = 0x5E006A, + SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = 0x5E0069, + SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = 0x5E0073, + SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = 0x5E006F, + SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0x5E0070, + SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0x5E0072, + SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0x5E0071, + SMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING = 0x5E0080, + SMSG_MOVE_SET_CANNOT_SWIM = 0x5E0037, + SMSG_MOVE_SET_CAN_ADV_FLY = 0x5E0066, + SMSG_MOVE_SET_CAN_DRIVE = 0x5E007A, + SMSG_MOVE_SET_CAN_FLY = 0x5E0035, + SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x5E0039, + SMSG_MOVE_SET_COLLISION_HEIGHT = 0x5E0045, + SMSG_MOVE_SET_COMPOUND_STATE = 0x5E0049, + SMSG_MOVE_SET_FEATHER_FALL = 0x5E002F, + SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x5E0025, + SMSG_MOVE_SET_FLIGHT_SPEED = 0x5E0024, + SMSG_MOVE_SET_GRAVITY_MODIFIER = 0x5E001A, + SMSG_MOVE_SET_HOVERING = 0x5E0031, + SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x5E003B, + SMSG_MOVE_SET_LAND_WALK = 0x5E002E, + SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x5E0014, + SMSG_MOVE_SET_NORMAL_FALL = 0x5E0030, + SMSG_MOVE_SET_PITCH_RATE = 0x5E0028, + SMSG_MOVE_SET_RUN_BACK_SPEED = 0x5E0021, + SMSG_MOVE_SET_RUN_SPEED = 0x5E0020, + SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x5E0023, + SMSG_MOVE_SET_SWIM_SPEED = 0x5E0022, + SMSG_MOVE_SET_TURN_RATE = 0x5E0027, + SMSG_MOVE_SET_VEHICLE_REC_ID = 0x5E0046, + SMSG_MOVE_SET_WALK_SPEED = 0x5E0026, + SMSG_MOVE_SET_WATER_WALK = 0x5E002B, + SMSG_MOVE_SKIP_TIME = 0x5E004A, + SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x5E004F, + SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x5E004D, + SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x5E0050, + SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x5E004E, + SMSG_MOVE_SPLINE_ROOT = 0x5E004B, + SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x5E0051, + SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0x5E001C, + SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x5E001B, + SMSG_MOVE_SPLINE_SET_FLYING = 0x5E005B, + SMSG_MOVE_SPLINE_SET_HOVER = 0x5E0053, + SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x5E0056, + SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x5E0052, + SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0x5E001F, + SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x5E0016, + SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x5E0059, + SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x5E0015, + SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0x5E0018, + SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0x5E0017, + SMSG_MOVE_SPLINE_SET_TURN_RATE = 0x5E001E, + SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x5E005A, + SMSG_MOVE_SPLINE_SET_WALK_SPEED = 0x5E001D, + SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x5E0055, + SMSG_MOVE_SPLINE_START_SWIM = 0x5E0057, + SMSG_MOVE_SPLINE_STOP_SWIM = 0x5E0058, + SMSG_MOVE_SPLINE_UNROOT = 0x5E004C, + SMSG_MOVE_SPLINE_UNSET_FLYING = 0x5E005C, + SMSG_MOVE_SPLINE_UNSET_HOVER = 0x5E0054, + SMSG_MOVE_TELEPORT = 0x5E0034, + SMSG_MOVE_UNROOT = 0x5E002A, + SMSG_MOVE_UNSET_ALWAYS_ALLOW_PITCHING = 0x5E0081, + SMSG_MOVE_UNSET_CANNOT_SWIM = 0x5E0038, + SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x5E0067, + SMSG_MOVE_UNSET_CAN_DRIVE = 0x5E007B, + SMSG_MOVE_UNSET_CAN_FLY = 0x5E0036, + SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x5E003A, + SMSG_MOVE_UNSET_HOVERING = 0x5E0032, + SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x5E003C, + SMSG_MOVE_UPDATE = 0x5E000E, + SMSG_MOVE_UPDATE_ADD_IMPULSE = 0x5E0065, + SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x5E0062, + SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x5E0012, + SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x5E000D, + SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x5E000A, + SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x5E0009, + SMSG_MOVE_UPDATE_KNOCK_BACK = 0x5E0010, + SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x5E0011, + SMSG_MOVE_UPDATE_PITCH_RATE = 0x5E000C, + SMSG_MOVE_UPDATE_REMOVE_INERTIA = 0x5E0063, + SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x5E0013, + SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x5E0005, + SMSG_MOVE_UPDATE_RUN_SPEED = 0x5E0004, + SMSG_MOVE_UPDATE_SET_GRAVITY_MODIFIER = 0x5E0019, + SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x5E0008, + SMSG_MOVE_UPDATE_SWIM_SPEED = 0x5E0007, + SMSG_MOVE_UPDATE_TELEPORT = 0x5E000F, + SMSG_MOVE_UPDATE_TURN_RATE = 0x5E000B, + SMSG_MOVE_UPDATE_WALK_SPEED = 0x5E0006, + SMSG_MULTIPLE_PACKETS = 0x4C000D, + SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x450289, + SMSG_MULTI_FLOOR_NEW_FLOOR = 0x450288, + SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x4500B3, + SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x4500B5, + SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x4500BB, + SMSG_MYTHIC_PLUS_SEASON_DATA = 0x4500B4, + SMSG_NEIGHBORHOOD_ADD_SECONDARY_OWNER_RESPONSE = 0x600003, + SMSG_NEIGHBORHOOD_BUY_HOUSE_RESPONSE = 0x600005, + SMSG_NEIGHBORHOOD_CANCEL_INVITATION_RESPONSE = 0x600009, + SMSG_NEIGHBORHOOD_CHARTER_ADD_SIGNATURE_RESPONSE = 0x5F0003, + SMSG_NEIGHBORHOOD_CHARTER_OPEN_CONFIRMATION_UI_RESPONSE = 0x5F0004, + SMSG_NEIGHBORHOOD_CHARTER_OPEN_UI_RESPONSE = 0x5F0001, + SMSG_NEIGHBORHOOD_CHARTER_SIGNATURE_REMOVED_NOTIFICATION = 0x5F0005, + SMSG_NEIGHBORHOOD_CHARTER_SIGN_REQUEST = 0x5F0002, + SMSG_NEIGHBORHOOD_CHARTER_UPDATE_RESPONSE = 0x5F0000, + SMSG_NEIGHBORHOOD_DECLINE_INVITATION_RESPONSE = 0x60000A, + SMSG_NEIGHBORHOOD_EVICT_PLAYER = 0x600000, + SMSG_NEIGHBORHOOD_EVICT_PLOT_NOTICE = 0x600013, + SMSG_NEIGHBORHOOD_EVICT_PLOT_RESPONSE = 0x600012, + SMSG_NEIGHBORHOOD_GET_INVITES_RESPONSE = 0x60000C, + SMSG_NEIGHBORHOOD_GET_ROSTER_RESPONSE = 0x60000F, + SMSG_NEIGHBORHOOD_INVITE_NAME_LOOKUP_RESULT = 0x600011, + SMSG_NEIGHBORHOOD_INVITE_NOTIFICATION = 0x60000D, + SMSG_NEIGHBORHOOD_INVITE_RESIDENT_RESPONSE = 0x600008, + SMSG_NEIGHBORHOOD_MOVE_HOUSE_RESPONSE = 0x600006, + SMSG_NEIGHBORHOOD_OFFER_OWNERSHIP_RESPONSE = 0x60000E, + SMSG_NEIGHBORHOOD_OPEN_CORNERSTONE_UI_RESPONSE = 0x600007, + SMSG_NEIGHBORHOOD_PLAYER_GET_INVITE_RESPONSE = 0x60000B, + SMSG_NEIGHBORHOOD_REMOVE_SECONDARY_OWNER_RESPONSE = 0x600004, + SMSG_NEIGHBORHOOD_ROSTER_RESIDENT_UPDATE = 0x600010, + SMSG_NEIGHBORHOOD_UPDATE_NAME_RESPONSE = 0x600001, + SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x45007F, + SMSG_NEW_DATA_BUILD = 0x45034B, + SMSG_NEW_TAXI_PATH = 0x45012A, + SMSG_NEW_WORLD = 0x45002B, + SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x670036, + SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x450156, + SMSG_NOTIFY_MONEY = 0x450031, + SMSG_NOTIFY_RECEIVED_MAIL = 0x4500E5, + SMSG_NPC_INTERACTION_OPEN_RESULT = 0x45031A, + SMSG_OFFER_PETITION_ERROR = 0x450162, + SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x450191, + SMSG_ON_MONSTER_MOVE = 0x5E0002, + SMSG_OPEN_ARTIFACT_FORGE = 0x45024E, + SMSG_OPEN_CONTAINER = 0x680006, + SMSG_OPEN_LFG_DUNGEON_FINDER = 0x5A0015, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x450246, + SMSG_OVERRIDE_LIGHT = 0x450167, + SMSG_PAGE_TEXT = 0x4501C5, + SMSG_PARTY_COMMAND_RESULT = 0x450240, + SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x45035F, + SMSG_PARTY_INVITE = 0x450061, + SMSG_PARTY_KILL_LOG = 0x450204, + SMSG_PARTY_MEMBER_FULL_STATE = 0x450203, + SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x450202, + SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x45030A, + SMSG_PARTY_UPDATE = 0x450097, + SMSG_PAST_TIME_EVENTS = 0x450066, + SMSG_PAUSE_MIRROR_TIMER = 0x4501BC, + SMSG_PENDING_RAID_LOCK = 0x4501A3, + SMSG_PERKS_ANIM_TOGGLE_KILL_SWITCH = 0x630007, + SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x630005, + SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x630001, + SMSG_PERKS_PROGRAM_DISABLED = 0x630006, + SMSG_PERKS_PROGRAM_RESULT = 0x630002, + SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x630000, + SMSG_PETITION_ALREADY_SIGNED = 0x450037, + SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x510042, + SMSG_PETITION_SHOW_LIST = 0x45016A, + SMSG_PETITION_SHOW_SIGNATURES = 0x45016B, + SMSG_PETITION_SIGN_RESULTS = 0x4501F6, + SMSG_PET_ACTION_FEEDBACK = 0x4501F3, + SMSG_PET_ACTION_SOUND = 0x45014C, + SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x4500A9, + SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x450120, + SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x4500A2, + SMSG_PET_BATTLE_FINAL_ROUND = 0x4500A7, + SMSG_PET_BATTLE_FINISHED = 0x4500A8, + SMSG_PET_BATTLE_FIRST_ROUND = 0x4500A4, + SMSG_PET_BATTLE_INITIAL_UPDATE = 0x4500A3, + SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x4500AA, + SMSG_PET_BATTLE_PVP_CHALLENGE = 0x4500A1, + SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x4500E2, + SMSG_PET_BATTLE_QUEUE_STATUS = 0x4500E3, + SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x4500A6, + SMSG_PET_BATTLE_REQUEST_FAILED = 0x4500A0, + SMSG_PET_BATTLE_ROUND_RESULT = 0x4500A5, + SMSG_PET_BATTLE_SLOT_UPDATES = 0x45008F, + SMSG_PET_CAST_FAILED = 0x67004B, + SMSG_PET_CLEAR_SPELLS = 0x670013, + SMSG_PET_DISMISS_SOUND = 0x45014D, + SMSG_PET_GOD_MODE = 0x450127, + SMSG_PET_GUIDS = 0x4501AF, + SMSG_PET_LEARNED_SPELLS = 0x670042, + SMSG_PET_MODE = 0x45001F, + SMSG_PET_NAME_INVALID = 0x45016F, + SMSG_PET_NEWLY_TAMED = 0x45001E, + SMSG_PET_SPELLS_MESSAGE = 0x670014, + SMSG_PET_STABLE_RESULT = 0x45002A, + SMSG_PET_TAME_FAILURE = 0x45015E, + SMSG_PET_UNLEARNED_SPELLS = 0x670043, + SMSG_PHASE_SHIFT_CHANGE = 0x45000C, + SMSG_PLAYED_TIME = 0x450181, + SMSG_PLAYER_ACKNOWLEDGE_ARROW_CALLOUT = 0x64002E, + SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x640020, + SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x64001F, + SMSG_PLAYER_BONUS_ROLL_FAILED = 0x640022, + SMSG_PLAYER_BOUND = 0x640000, + SMSG_PLAYER_CHOICE_CLEAR = 0x640006, + SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x640005, + SMSG_PLAYER_CONDITION_RESULT = 0x640013, + SMSG_PLAYER_DELAYED_UPLOAD_SCREENSHOT = 0x640033, + SMSG_PLAYER_END_OF_MATCH_DETAILS = 0x640030, + SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x64002D, + SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x640012, + SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x640017, + SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x510041, + SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = 0x64002F, + SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x64002C, + SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x64002A, + SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0x64002B, + SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x640025, + SMSG_PLAYER_SKINNED = 0x64000F, + SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x640016, + SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x640015, + SMSG_PLAYER_UPLOAD_SCREENSHOT = 0x640032, + SMSG_PLAY_MUSIC = 0x450213, + SMSG_PLAY_OBJECT_SOUND = 0x450215, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x4501DB, + SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x67003A, + SMSG_PLAY_SCENE = 0x4500DF, + SMSG_PLAY_SOUND = 0x450212, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x450216, + SMSG_PLAY_SPELL_VISUAL = 0x670038, + SMSG_PLAY_SPELL_VISUAL_KIT = 0x67003C, + SMSG_PLAY_TIME_WARNING = 0x4501A9, + SMSG_PONG = 0x4C0009, + SMSG_POWER_UPDATE = 0x45017E, + SMSG_PRELOAD_CHILD_MAP = 0x45000D, + SMSG_PRELOAD_WORLD = 0x45002C, + SMSG_PREPOPULATE_NAME_CACHE = 0x4502DD, + SMSG_PRE_RESSURECT = 0x450211, + SMSG_PRINT_NOTIFICATION = 0x45006E, + SMSG_PROC_RESIST = 0x450205, + SMSG_PROFESSION_GOSSIP = 0x4502A9, + SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x670044, + SMSG_PVP_CREDIT = 0x4B0024, + SMSG_PVP_MATCH_COMPLETE = 0x4B002F, + SMSG_PVP_MATCH_INITIALIZE = 0x4B0030, + SMSG_PVP_MATCH_SET_STATE = 0x4B002E, + SMSG_PVP_MATCH_START = 0x4B002D, + SMSG_PVP_MATCH_STATISTICS = 0x4B0010, + SMSG_PVP_OPTIONS_ENABLED = 0x4B0013, + SMSG_PVP_TIER_RECORD = 0x450315, + SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x49000C, + SMSG_QUERY_CREATURE_RESPONSE = 0x490006, + SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x490007, + SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x4F0041, + SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = 0x51002F, + SMSG_QUERY_GUILD_INFO_RESPONSE = 0x51002D, + SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x490010, + SMSG_QUERY_NEIGHBORHOOD_NAME_RESPONSE = 0x490012, + SMSG_QUERY_NPC_TEXT_RESPONSE = 0x490008, + SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x490009, + SMSG_QUERY_PETITION_RESPONSE = 0x49000D, + SMSG_QUERY_PET_NAME_RESPONSE = 0x49000B, + SMSG_QUERY_PLAYER_NAMES_RESPONSE = 0x640027, + SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x64000B, + SMSG_QUERY_QUEST_INFO_RESPONSE = 0x650016, + SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x51002E, + SMSG_QUERY_SELECTED_WOW_LABS_AREA_RESPONSE = 0x450329, + SMSG_QUERY_TIME_RESPONSE = 0x45018F, + SMSG_QUERY_WOW_LABS_AREA_INFO_RESPONSE = 0x45032A, + SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x650001, + SMSG_QUEST_CONFIRM_ACCEPT = 0x65000F, + SMSG_QUEST_FORCE_REMOVED = 0x65001C, + SMSG_QUEST_GIVER_INVALID_QUEST = 0x650005, + SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x650014, + SMSG_QUEST_GIVER_QUEST_COMPLETE = 0x650003, + SMSG_QUEST_GIVER_QUEST_DETAILS = 0x650012, + SMSG_QUEST_GIVER_QUEST_FAILED = 0x650006, + SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x65001A, + SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x650013, + SMSG_QUEST_GIVER_STATUS = 0x65001B, + SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x650011, + SMSG_QUEST_ITEM_USABILITY_RESPONSE = 0x650002, + SMSG_QUEST_LOG_FULL = 0x650007, + SMSG_QUEST_NON_LOG_UPDATE_COMPLETE = 0x650008, + SMSG_QUEST_POI_QUERY_RESPONSE = 0x65001D, + SMSG_QUEST_POI_UPDATE_RESPONSE = 0x65001F, + SMSG_QUEST_PUSH_RESULT = 0x650010, + SMSG_QUEST_SESSION_INFO_RESPONSE = 0x450300, + SMSG_QUEST_SESSION_READY_CHECK = 0x4502EE, + SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x4502EF, + SMSG_QUEST_SESSION_RESULT = 0x4502ED, + SMSG_QUEST_UPDATE_ADD_CREDIT = 0x65000C, + SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x65000D, + SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x65000E, + SMSG_QUEST_UPDATE_COMPLETE = 0x650009, + SMSG_QUEST_UPDATE_FAILED = 0x65000A, + SMSG_QUEST_UPDATE_FAILED_TIMER = 0x65000B, + SMSG_QUEUE_SUMMARY_UPDATE = 0x4502BC, + SMSG_RAF_ACCOUNT_INFO = 0x4502EB, + SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x4502FC, + SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x450345, + SMSG_RAID_DIFFICULTY_SET = 0x450257, + SMSG_RAID_GROUP_ONLY = 0x450259, + SMSG_RAID_INSTANCE_MESSAGE = 0x4A000A, + SMSG_RAID_MARKERS_CHANGED = 0x450038, + SMSG_RANDOM_ROLL = 0x4500D9, + SMSG_RATED_PVP_INFO = 0x4B000F, + SMSG_READY_CHECK_COMPLETED = 0x45009B, + SMSG_READY_CHECK_RESPONSE = 0x45009A, + SMSG_READY_CHECK_STARTED = 0x450099, + SMSG_READ_ITEM_RESULT_FAILED = 0x450253, + SMSG_READ_ITEM_RESULT_OK = 0x45024B, + SMSG_REALM_QUERY_RESPONSE = 0x490005, + SMSG_REATTACH_RESURRECT = 0x4501F5, + SMSG_RECEIVE_PING_COOLDOWN = 0x45003B, + SMSG_RECEIVE_PING_UNIT = 0x450039, + SMSG_RECEIVE_PING_WORLD_POINT = 0x45003A, + SMSG_RECENT_ALLY_DATA_RESPONSE = 0x450362, + SMSG_RECENT_ALLY_NOTE_UPDATED = 0x450363, + SMSG_RECRAFT_ITEM_RESULT = 0x45033B, + SMSG_RECRUIT_A_FRIEND_FAILURE = 0x45016C, + SMSG_REFETCH_TACT_KEYS = 0x450376, + SMSG_REFRESH_BLEEP_TOKENS_RESPONSE = 0x450384, + SMSG_REFRESH_COMPONENT = 0x4500F9, + SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x45001A, + SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x450019, + SMSG_REMOVE_ITEM_PASSIVE = 0x450044, + SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x670045, + SMSG_REPLACE_TROPHY_RESPONSE = 0x45026F, + SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x64000A, + SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x450025, + SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x4B0014, + SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x4B0015, + SMSG_RESET_COMPRESSION_CONTEXT = 0x4C000A, + SMSG_RESET_FAILED_NOTIFY = 0x450163, + SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x450342, + SMSG_RESET_QUEST_POI = 0x650020, + SMSG_RESET_RANGED_COMBAT_TIMER = 0x4B0023, + SMSG_RESET_WEEKLY_CURRENCY = 0x450009, + SMSG_RESPEC_WIPE_CONFIRM = 0x4500BC, + SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x450006, + SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x630003, + SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x630004, + SMSG_RESTART_GLOBAL_COOLDOWN = 0x670054, + SMSG_RESTRICTED_ACCOUNT_WARNING = 0x45005D, + SMSG_RESUME_CAST = 0x67002E, + SMSG_RESUME_CAST_BAR = 0x670031, + SMSG_RESUME_COMMS = 0x4C0006, + SMSG_RESUME_TOKEN = 0x450042, + SMSG_RESURRECT_REQUEST = 0x450012, + SMSG_RESYNC_RUNES = 0x670052, + SMSG_RETURN_APPLICANT_LIST = 0x4502E1, + SMSG_RETURN_RECRUITING_CLUBS = 0x4502E0, + SMSG_ROLE_CHANGED_INFORM = 0x450021, + SMSG_ROLE_CHOSEN = 0x5A001D, + SMSG_ROLE_POLL_INFORM = 0x450022, + SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x4502A8, + SMSG_RUNE_REGEN_DEBUG = 0x45005A, + SMSG_SCENARIO_COMPLETED = 0x450296, + SMSG_SCENARIO_POIS = 0x4500DC, + SMSG_SCENARIO_PROGRESS_UPDATE = 0x4500D5, + SMSG_SCENARIO_SHOW_CRITERIA = 0x4502AC, + SMSG_SCENARIO_STATE = 0x4500D4, + SMSG_SCENARIO_UI_UPDATE = 0x4502AB, + SMSG_SCENARIO_VACATE = 0x450254, + SMSG_SCENE_OBJECT_EVENT = 0x450085, + SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x45008A, + SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x45008B, + SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x450087, + SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x450086, + SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x450089, + SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x450088, + SMSG_SCHEDULED_AREA_POI_UPDATE_RESPONSE = 0x64001A, + SMSG_SCRIPT_CAST = 0x670049, + SMSG_SEASON_INFO = 0x450065, + SMSG_SELL_RESPONSE = 0x450170, + SMSG_SEND_FORCE_PITCH_CHANGE = 0x45002D, + SMSG_SEND_ITEM_PASSIVES = 0x450045, + SMSG_SEND_KNOWN_SPELLS = 0x670019, + SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x4500D7, + SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x4500D8, + SMSG_SEND_SPELL_CHARGES = 0x67001B, + SMSG_SEND_SPELL_HISTORY = 0x67001A, + SMSG_SEND_UNLEARN_SPELLS = 0x67001C, + SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x4500F6, + SMSG_SERVER_TIME = 0x45012E, + SMSG_SERVER_TIME_OFFSET = 0x4501C0, + SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x67000F, + SMSG_SETUP_CURRENCY = 0x450007, + SMSG_SET_AI_ANIM_KIT = 0x4501DA, + SMSG_SET_ANIM_TIER = 0x4501DE, + SMSG_SET_CHR_UPGRADE_TIER = 0x450082, + SMSG_SET_CTR_OPTIONS = 0x450373, + SMSG_SET_CURRENCY = 0x450008, + SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x5A0012, + SMSG_SET_DUNGEON_DIFFICULTY = 0x450150, + SMSG_SET_FACTION_AT_WAR = 0x4501AB, + SMSG_SET_FACTION_NOT_VISIBLE = 0x4501D5, + SMSG_SET_FACTION_STANDING = 0x4501D6, + SMSG_SET_FACTION_VISIBLE = 0x4501D4, + SMSG_SET_FLAT_SPELL_MODIFIER = 0x670027, + SMSG_SET_FLAT_SPELL_PVP_MODIFIER = 0x670029, + SMSG_SET_INSTANCE_LEAVER = 0x450370, + SMSG_SET_ITEM_PURCHASE_DATA = 0x450033, + SMSG_SET_LOOT_METHOD_FAILED = 0x45027A, + SMSG_SET_MAX_WEEKLY_QUANTITY = 0x450036, + SMSG_SET_MELEE_ANIM_KIT = 0x4501DD, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x4501DC, + SMSG_SET_PCT_SPELL_MODIFIER = 0x670028, + SMSG_SET_PCT_SPELL_PVP_MODIFIER = 0x67002A, + SMSG_SET_PET_SPECIALIZATION = 0x4500CE, + SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x64000C, + SMSG_SET_PLAY_HOVER_ANIM = 0x45005E, + SMSG_SET_PROFICIENCY = 0x4501DF, + SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x4502F4, + SMSG_SET_SHIPMENT_READY_RESPONSE = 0x4F003A, + SMSG_SET_SPELL_CHARGES = 0x670018, + SMSG_SET_TIME_ZONE_INFORMATION = 0x450123, + SMSG_SET_VEHICLE_REC_ID = 0x4501A2, + SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x450319, + SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x4F003B, + SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x45035D, + SMSG_SHOW_DELVES_DISPLAY_UI = 0x45035B, + SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x45007E, + SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x650015, + SMSG_SHOW_TAXI_NODES = 0x450179, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x45021B, + SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x450325, + SMSG_SOCKET_GEMS_FAILURE = 0x4501D2, + SMSG_SOCKET_GEMS_SUCCESS = 0x4501D1, + SMSG_SPECIAL_MOUNT_ANIM = 0x45014B, + SMSG_SPECTATE_END = 0x45034A, + SMSG_SPECTATE_NEXT = 0x450349, + SMSG_SPECTATE_PLAYER = 0x450347, + SMSG_SPECTATE_RESET = 0x450346, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x4501C4, + SMSG_SPELL_ABSORB_LOG = 0x67000C, + SMSG_SPELL_CATEGORY_COOLDOWN = 0x670006, + SMSG_SPELL_CHANNEL_START = 0x670022, + SMSG_SPELL_CHANNEL_UPDATE = 0x670023, + SMSG_SPELL_COOLDOWN = 0x670005, + SMSG_SPELL_DAMAGE_SHIELD = 0x67001F, + SMSG_SPELL_DELAYED = 0x670032, + SMSG_SPELL_DISPELL_LOG = 0x670007, + SMSG_SPELL_EMPOWER_SET_STAGE = 0x670026, + SMSG_SPELL_EMPOWER_START = 0x670024, + SMSG_SPELL_EMPOWER_UPDATE = 0x670025, + SMSG_SPELL_ENERGIZE_LOG = 0x670009, + SMSG_SPELL_EXECUTE_LOG = 0x670033, + SMSG_SPELL_FAILED_OTHER = 0x670048, + SMSG_SPELL_FAILURE = 0x670046, + SMSG_SPELL_FAILURE_MESSAGE = 0x67004D, + SMSG_SPELL_GO = 0x67002C, + SMSG_SPELL_HEAL_ABSORB_LOG = 0x67000B, + SMSG_SPELL_HEAL_LOG = 0x67000A, + SMSG_SPELL_INSTAKILL_LOG = 0x670021, + SMSG_SPELL_INTERRUPT_LOG = 0x67000D, + SMSG_SPELL_MISS_LOG = 0x670034, + SMSG_SPELL_NON_MELEE_DAMAGE_LOG = 0x670020, + SMSG_SPELL_OR_DAMAGE_IMMUNE = 0x67001D, + SMSG_SPELL_PERIODIC_AURA_LOG = 0x670008, + SMSG_SPELL_PREPARE = 0x67002B, + SMSG_SPELL_START = 0x67002D, + SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x450070, + SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x450306, + SMSG_STAND_STATE_UPDATE = 0x4501C8, + SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x450076, + SMSG_START_ELAPSED_TIMER = 0x4500AB, + SMSG_START_ELAPSED_TIMERS = 0x4500AD, + SMSG_START_LIGHTNING_STORM = 0x450153, + SMSG_START_LOOT_ROLL = 0x4500C6, + SMSG_START_MIRROR_TIMER = 0x4501BB, + SMSG_START_TIMER = 0x45003E, + SMSG_STOP_ELAPSED_TIMER = 0x4500AC, + SMSG_STOP_MIRROR_TIMER = 0x4501BD, + SMSG_STOP_SPEAKERBOT_SOUND = 0x450217, + SMSG_STOP_TIMER = 0x45003F, + SMSG_STREAMING_MOVIES = 0x45003D, + SMSG_SUGGEST_INVITE_INFORM = 0x450241, + SMSG_SUMMON_CANCEL = 0x45015C, + SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x450023, + SMSG_SUMMON_REQUEST = 0x4501CC, + SMSG_SUPERCEDED_SPELLS = 0x67003F, + SMSG_SURVEY_DELIVERED = 0x450365, + SMSG_SUSPEND_COMMS = 0x4C0005, + SMSG_SUSPEND_TOKEN = 0x450041, + SMSG_SYNC_WOW_ENTITLEMENTS = 0x4502FE, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x4501C3, + SMSG_TAXI_NODE_STATUS = 0x450128, + SMSG_TEXT_EMOTE = 0x450126, + SMSG_THREAT_CLEAR = 0x450188, + SMSG_THREAT_REMOVE = 0x450187, + SMSG_THREAT_UPDATE = 0x450186, + SMSG_TIERED_ENTRANCE_OPEN_RESPONSE = 0x45037E, + SMSG_TIMERUNNING_SEASON_ENDED = 0x45035E, + SMSG_TIME_ADJUSTMENT = 0x5E0001, + SMSG_TIME_SYNC_REQUEST = 0x5E0000, + SMSG_TITLE_EARNED = 0x450183, + SMSG_TITLE_LOST = 0x450184, + SMSG_TOTEM_CREATED = 0x450173, + SMSG_TOTEM_DURATION_CHANGED = 0x450175, + SMSG_TOTEM_MOVED = 0x450176, + SMSG_TOTEM_REMOVED = 0x450174, + SMSG_TRADE_STATUS = 0x450017, + SMSG_TRADE_UPDATED = 0x450016, + SMSG_TRAINER_BUY_FAILED = 0x45018B, + SMSG_TRAINER_LIST = 0x45018A, + SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x450075, + SMSG_TRANSFER_ABORTED = 0x4501AE, + SMSG_TRANSFER_PENDING = 0x450071, + SMSG_TRANSMOG_OUTFIT_INFO_UPDATED = 0x45004C, + SMSG_TRANSMOG_OUTFIT_NEW_ENTRY_ADDED = 0x45004B, + SMSG_TRANSMOG_OUTFIT_SITUATIONS_UPDATED = 0x45004D, + SMSG_TRANSMOG_OUTFIT_SLOTS_UPDATED = 0x45004E, + SMSG_TREASURE_PICKER_RESPONSE = 0x490011, + SMSG_TREASURE_PUNCH_LIST_ITEMS_RESPONSE = 0x45037F, + SMSG_TRIGGER_CINEMATIC = 0x450274, + SMSG_TRIGGER_MOVIE = 0x450177, + SMSG_TURN_IN_PETITION_RESULT = 0x4501F8, + SMSG_TUTORIAL_FLAGS = 0x450268, + SMSG_UI_ACTION = 0x450214, + SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x650023, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x450275, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x450276, + SMSG_UNIT_DIMINISHING_RETURN_START = 0x45037B, + SMSG_UNLEARNED_SPELLS = 0x670041, + SMSG_UNLOAD_CHILD_MAP = 0x45000E, + SMSG_UNSET_INSTANCE_LEAVER = 0x450371, + SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x450316, + SMSG_UPDATE_ACCOUNT_DATA = 0x4501B4, + SMSG_UPDATE_ACCOUNT_DATA_COMPLETE = 0x4501B5, + SMSG_UPDATE_ACTION_BUTTONS = 0x450083, + SMSG_UPDATE_BNET_SESSION_KEY = 0x4502CE, + SMSG_UPDATE_CAPTURE_POINT = 0x4B0007, + SMSG_UPDATE_CELESTIAL_BODY = 0x4502CA, + SMSG_UPDATE_CHARACTER_FLAGS = 0x45026E, + SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x450210, + SMSG_UPDATE_COOLDOWN = 0x45020F, + SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x4F0038, + SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x4F0021, + SMSG_UPDATE_EXPANSION_LEVEL = 0x4500EF, + SMSG_UPDATE_GAME_TIME_STATE = 0x4502D1, + SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x450155, + SMSG_UPDATE_LAST_INSTANCE = 0x450134, + SMSG_UPDATE_OBJECT = 0x5C0000, + SMSG_UPDATE_PRIMARY_SPEC = 0x45007B, + SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x450098, + SMSG_UPDATE_TALENT_DATA = 0x45007A, + SMSG_UPDATE_WORLD_STATE = 0x4501F2, + SMSG_USERLIST_ADD = 0x4A000F, + SMSG_USERLIST_REMOVE = 0x4A0010, + SMSG_USERLIST_UPDATE = 0x4A0011, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x4501F9, + SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x4502C5, + SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x4502C3, + SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x4502C2, + SMSG_VAS_PURCHASE_COMPLETE = 0x45029C, + SMSG_VAS_PURCHASE_STATE_UPDATE = 0x45029B, + SMSG_VENDOR_INVENTORY = 0x45005C, + SMSG_VIGNETTE_UPDATE = 0x640011, + SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x4502C9, + SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x450311, + SMSG_VOICE_LOGIN_RESPONSE = 0x4502C8, + SMSG_VOID_ITEM_SWAP_RESPONSE = 0x680004, + SMSG_VOID_STORAGE_CONTENTS = 0x680001, + SMSG_VOID_STORAGE_FAILED = 0x680000, + SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x680002, + SMSG_VOID_TRANSFER_RESULT = 0x680003, + SMSG_WAIT_QUEUE_FINISH = 0x450003, + SMSG_WAIT_QUEUE_UPDATE = 0x450002, + SMSG_WALK_IN_RESULT = 0x6A0000, + SMSG_WARDEN3_DATA = 0x45000B, + SMSG_WARDEN3_DISABLED = 0x4502CC, + SMSG_WARDEN3_ENABLED = 0x4502CB, + SMSG_WARFRONT_COMPLETE = 0x450208, + SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x4B0012, + SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x4B0011, + SMSG_WEATHER = 0x450152, + SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x450309, + SMSG_WEEKLY_REWARDS_RESULT = 0x450307, + SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x450308, + SMSG_WHO = 0x4A0002, + SMSG_WHO_IS = 0x450151, + SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x4502D0, + SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x640018, + SMSG_WORLD_SERVER_INFO = 0x450046, + SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x4502FF, + SMSG_WOW_LABS_AREA_SELECTED = 0x45032B, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x450326, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x450327, + SMSG_WOW_LABS_PARTY_ERROR = 0x450333, + SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x45032C, + SMSG_WOW_LABS_SET_WOW_LABS_AREA_ID_RESPONSE = 0x450328, + SMSG_XP_AWARDED_FROM_CURRENCY = 0x450341, + SMSG_XP_GAIN_ABORTED = 0x45006D, + SMSG_XP_GAIN_ENABLED = 0x450258, + SMSG_ZONE_UNDER_ATTACK = 0x4A000B, // Deleted opcodes, here only to allow compile SMSG_ARENA_TEAM_STATS = UNKNOWN_OPCODE, }; -inline constexpr std::size_t NUM_SMSG_OPCODES = 1654; +inline constexpr std::size_t NUM_SMSG_OPCODES = 1671; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeServer opcode) { uint32 idInGroup = opcode & 0xFFFF; switch (opcode >> 16) { - case 0x42: return idInGroup < 901 ? idInGroup + 0 : -1; - case 0x43: return idInGroup < 5 ? idInGroup + 901 : -1; - case 0x46: return idInGroup < 20 ? idInGroup + 906 : -1; - case 0x47: return idInGroup < 36 ? idInGroup + 926 : -1; - case 0x48: return idInGroup < 49 ? idInGroup + 962 : -1; - case 0x49: return idInGroup < 15 ? idInGroup + 1011 : -1; - case 0x4A: return idInGroup < 12 ? idInGroup + 1026 : -1; - case 0x4C: return idInGroup < 82 ? idInGroup + 1038 : -1; - case 0x4E: return idInGroup < 72 ? idInGroup + 1120 : -1; - case 0x50: return idInGroup < 2 ? idInGroup + 1192 : -1; - case 0x51: return idInGroup < 12 ? idInGroup + 1194 : -1; - case 0x52: return idInGroup < 8 ? idInGroup + 1206 : -1; - case 0x53: return idInGroup < 8 ? idInGroup + 1214 : -1; - case 0x54: return idInGroup < 36 ? idInGroup + 1222 : -1; - case 0x55: return idInGroup < 8 ? idInGroup + 1258 : -1; - case 0x56: return idInGroup < 34 ? idInGroup + 1266 : -1; - case 0x58: return idInGroup < 1 ? idInGroup + 1300 : -1; - case 0x5A: return idInGroup < 130 ? idInGroup + 1301 : -1; - case 0x5B: return idInGroup < 6 ? idInGroup + 1431 : -1; - case 0x5C: return idInGroup < 20 ? idInGroup + 1437 : -1; - case 0x5E: return idInGroup < 8 ? idInGroup + 1457 : -1; - case 0x5F: return idInGroup < 52 ? idInGroup + 1465 : -1; - case 0x60: return idInGroup < 41 ? idInGroup + 1517 : -1; - case 0x62: return idInGroup < 87 ? idInGroup + 1558 : -1; - case 0x63: return idInGroup < 8 ? idInGroup + 1645 : -1; - case 0x65: return idInGroup < 1 ? idInGroup + 1653 : -1; + case 0x45: return idInGroup < 903 ? idInGroup + 0 : -1; + case 0x46: return idInGroup < 5 ? idInGroup + 903 : -1; + case 0x49: return idInGroup < 20 ? idInGroup + 908 : -1; + case 0x4A: return idInGroup < 37 ? idInGroup + 928 : -1; + case 0x4B: return idInGroup < 49 ? idInGroup + 965 : -1; + case 0x4C: return idInGroup < 15 ? idInGroup + 1014 : -1; + case 0x4D: return idInGroup < 12 ? idInGroup + 1029 : -1; + case 0x4F: return idInGroup < 82 ? idInGroup + 1041 : -1; + case 0x51: return idInGroup < 72 ? idInGroup + 1123 : -1; + case 0x53: return idInGroup < 2 ? idInGroup + 1195 : -1; + case 0x54: return idInGroup < 8 ? idInGroup + 1197 : -1; + case 0x55: return idInGroup < 13 ? idInGroup + 1205 : -1; + case 0x56: return idInGroup < 8 ? idInGroup + 1218 : -1; + case 0x57: return idInGroup < 8 ? idInGroup + 1226 : -1; + case 0x58: return idInGroup < 37 ? idInGroup + 1234 : -1; + case 0x59: return idInGroup < 10 ? idInGroup + 1271 : -1; + case 0x5A: return idInGroup < 35 ? idInGroup + 1281 : -1; + case 0x5C: return idInGroup < 1 ? idInGroup + 1316 : -1; + case 0x5E: return idInGroup < 130 ? idInGroup + 1317 : -1; + case 0x5F: return idInGroup < 6 ? idInGroup + 1447 : -1; + case 0x60: return idInGroup < 20 ? idInGroup + 1453 : -1; + case 0x62: return idInGroup < 1 ? idInGroup + 1473 : -1; + case 0x63: return idInGroup < 8 ? idInGroup + 1474 : -1; + case 0x64: return idInGroup < 52 ? idInGroup + 1482 : -1; + case 0x65: return idInGroup < 41 ? idInGroup + 1534 : -1; + case 0x67: return idInGroup < 87 ? idInGroup + 1575 : -1; + case 0x68: return idInGroup < 8 ? idInGroup + 1662 : -1; + case 0x6A: return idInGroup < 1 ? idInGroup + 1670 : -1; default: return -1; } } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index b1f58d58a5..8ba9b624dd 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -617,6 +617,7 @@ namespace WorldPackets class SetRestrictPingsToAssistants; class SendPingUnit; class SendPingWorldPoint; + class SendPingCooldown; } namespace Pet @@ -1424,6 +1425,7 @@ class TC_GAME_API WorldSession void HandleSetRestrictPingsToAssistants(WorldPackets::Party::SetRestrictPingsToAssistants const& setRestrictPingsToAssistants); void HandleSendPingUnit(WorldPackets::Party::SendPingUnit const& pingUnit); void HandleSendPingWorldPoint(WorldPackets::Party::SendPingWorldPoint const& pingWorldPoint); + void HandleSendPingCooldown(WorldPackets::Party::SendPingCooldown const& pingCooldown); void HandlePetitionBuy(WorldPackets::Petition::PetitionBuy& packet); void HandlePetitionShowSignatures(WorldPackets::Petition::PetitionShowSignatures& packet);