diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
| commit | e59eef5432c7b70679d33f4911c88d0f7d75fd39 (patch) | |
| tree | fe9bce9c82496589facec3719b3f2943d8295e76 /src/server/game/Server | |
| parent | 7fb9168d57f378075b0f6692ea7ad822c1d8e43d (diff) | |
Core/PacketIO: Updated to 11.0.0
Diffstat (limited to 'src/server/game/Server')
55 files changed, 1862 insertions, 1430 deletions
diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.cpp b/src/server/game/Server/Packets/AreaTriggerPackets.cpp index ae6dfddb134..c03ddb7d058 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.cpp +++ b/src/server/game/Server/Packets/AreaTriggerPackets.cpp @@ -82,6 +82,7 @@ WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerDenied::Write() WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerRePath::Write() { _worldPacket << TriggerGUID; + _worldPacket << Unused_1100; _worldPacket.WriteBit(AreaTriggerSpline.has_value()); _worldPacket.WriteBit(AreaTriggerOrbit.has_value()); diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.h b/src/server/game/Server/Packets/AreaTriggerPackets.h index 2af22e72d2c..1186b772b60 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.h +++ b/src/server/game/Server/Packets/AreaTriggerPackets.h @@ -82,6 +82,7 @@ namespace WorldPackets Optional<AreaTriggerOrbitInfo> AreaTriggerOrbit; Optional<AreaTriggerMovementScriptInfo> AreaTriggerMovementScript; ObjectGuid TriggerGUID; + ObjectGuid Unused_1100; }; class AreaTriggerPlaySpellVisual final : public ServerPacket diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index ed6aea45f77..3ede64d39c0 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -99,7 +99,7 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterClass& filterClass) ByteBuffer& operator>>(ByteBuffer& data, AuctionSortDef& sortDef) { data.ResetBitPos(); - data >> Bits<4>(sortDef.SortOrder); + data >> As<uint8>(sortDef.SortOrder); data >> Bits<1>(sortDef.ReverseSort); return data; @@ -302,15 +302,15 @@ void AuctionBrowseQuery::Read() ItemClassFilters.resize(_worldPacket.ReadBits(3)); Sorts.resize(_worldPacket.ReadBits(2)); - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; - if (TaintedBy) _worldPacket >> *TaintedBy; Name = _worldPacket.ReadString(nameLength); for (AuctionListFilterClass& filterClass : ItemClassFilters) _worldPacket >> filterClass; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionCancelCommoditiesPurchase::Read() @@ -351,14 +351,14 @@ void AuctionListBiddedItems::Read() AuctionIDs.resize(_worldPacket.ReadBits(7)); Sorts.resize(_worldPacket.ReadBits(2)); - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; - if (TaintedBy) _worldPacket >> *TaintedBy; for (uint32& auctionID : AuctionIDs) _worldPacket >> auctionID; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionListBucketsByBucketKeys::Read() @@ -371,14 +371,14 @@ void AuctionListBucketsByBucketKeys::Read() BucketKeys.resize(_worldPacket.ReadBits(7)); Sorts.resize(_worldPacket.ReadBits(2)); - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; - if (TaintedBy) _worldPacket >> *TaintedBy; for (AuctionBucketKey& bucketKey : BucketKeys) _worldPacket >> bucketKey; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionListItemsByBucketKey::Read() @@ -392,13 +392,13 @@ void AuctionListItemsByBucketKey::Read() Sorts.resize(_worldPacket.ReadBits(2)); - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; - _worldPacket >> BucketKey; if (TaintedBy) _worldPacket >> *TaintedBy; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionListItemsByItemID::Read() @@ -413,11 +413,11 @@ void AuctionListItemsByItemID::Read() Sorts.resize(_worldPacket.ReadBits(2)); - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; - if (TaintedBy) _worldPacket >> *TaintedBy; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionListOwnedItems::Read() @@ -430,11 +430,11 @@ void AuctionListOwnedItems::Read() Sorts.resize(_worldPacket.ReadBits(2)); - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; - if (TaintedBy) _worldPacket >> *TaintedBy; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionPlaceBid::Read() diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 5ae68849569..4a948e6ca35 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -327,8 +327,8 @@ void WorldPackets::Auth::AuthContinuedSession::Read() void WorldPackets::Auth::ConnectToFailed::Read() { - _worldPacket >> As<uint32>(Serial); _worldPacket >> Con; + _worldPacket >> As<uint32>(Serial); } bool WorldPackets::Auth::EnterEncryptedMode::InitializeEncryption() diff --git a/src/server/game/Server/Packets/AzeritePackets.cpp b/src/server/game/Server/Packets/AzeritePackets.cpp index 87406b757dc..bbaf9668d01 100644 --- a/src/server/game/Server/Packets/AzeritePackets.cpp +++ b/src/server/game/Server/Packets/AzeritePackets.cpp @@ -56,10 +56,10 @@ void WorldPackets::Azerite::AzeriteEmpoweredItemViewed::Read() void WorldPackets::Azerite::AzeriteEmpoweredItemSelectPower::Read() { - _worldPacket >> Tier; - _worldPacket >> AzeritePowerID; _worldPacket >> ContainerSlot; _worldPacket >> Slot; + _worldPacket >> Tier; + _worldPacket >> AzeritePowerID; } WorldPacket const* WorldPackets::Azerite::PlayerAzeriteItemEquippedStatusChanged::Write() diff --git a/src/server/game/Server/Packets/AzeritePackets.h b/src/server/game/Server/Packets/AzeritePackets.h index 0a0204c61e7..4d76a83884e 100644 --- a/src/server/game/Server/Packets/AzeritePackets.h +++ b/src/server/game/Server/Packets/AzeritePackets.h @@ -89,7 +89,7 @@ namespace WorldPackets void Read() override; - int32 Tier = 0; + uint8 Tier = 0; int32 AzeritePowerID = 0; uint8 ContainerSlot = 0; uint8 Slot = 0; diff --git a/src/server/game/Server/Packets/BankPackets.cpp b/src/server/game/Server/Packets/BankPackets.cpp index 63f9300c31d..74f24cb7519 100644 --- a/src/server/game/Server/Packets/BankPackets.cpp +++ b/src/server/game/Server/Packets/BankPackets.cpp @@ -16,10 +16,12 @@ */ #include "BankPackets.h" +#include "DBCEnums.h" void WorldPackets::Bank::AutoBankItem::Read() { _worldPacket >> Inv + >> As<int8>(BankType) >> Bag >> Slot; } @@ -54,3 +56,9 @@ void WorldPackets::Bank::ReagentBank::Read() { _worldPacket >> Banker; } + +void WorldPackets::Bank::BankerActivate::Read() +{ + _worldPacket >> Banker; + _worldPacket >> As<int32>(InteractionType); +} diff --git a/src/server/game/Server/Packets/BankPackets.h b/src/server/game/Server/Packets/BankPackets.h index f43f672bc95..f81a1c02bfe 100644 --- a/src/server/game/Server/Packets/BankPackets.h +++ b/src/server/game/Server/Packets/BankPackets.h @@ -22,6 +22,8 @@ #include "ItemPacketsCommon.h" #include "ObjectGuid.h" +enum class PlayerInteractionType : int32; + namespace WorldPackets { namespace Bank @@ -34,6 +36,7 @@ namespace WorldPackets void Read() override; WorldPackets::Item::InvUpdate Inv; + ::BankType BankType = ::BankType::Character; uint8 Bag = 0; uint8 Slot = 0; }; @@ -95,6 +98,17 @@ namespace WorldPackets ObjectGuid Banker; }; + + class BankerActivate final : public ClientPacket + { + public: + explicit BankerActivate(WorldPacket&& packet) : ClientPacket(CMSG_BANKER_ACTIVATE, std::move(packet)) { } + + void Read() override; + + ObjectGuid Banker; + PlayerInteractionType InteractionType = { }; + }; } } #endif // BankPackets_h__ diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp index 07cb5393c06..8d1dd199bb4 100644 --- a/src/server/game/Server/Packets/CalendarPackets.cpp +++ b/src/server/game/Server/Packets/CalendarPackets.cpp @@ -22,7 +22,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCal data << uint64(eventInfo.EventID); data << uint8(eventInfo.EventType); data << eventInfo.Date; - data << uint32(eventInfo.Flags); + data << uint16(eventInfo.Flags); data << int32(eventInfo.TextureID); data << uint64(eventInfo.EventClubID); data << eventInfo.OwnerGuid; @@ -285,7 +285,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarSendEvent::Write() _worldPacket << uint64(EventID); _worldPacket << uint8(GetEventType); _worldPacket << int32(TextureID); - _worldPacket << uint32(Flags); + _worldPacket << uint16(Flags); _worldPacket << Date; _worldPacket << LockDate; _worldPacket << uint64(EventClubID); @@ -307,7 +307,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarInviteAlert::Write() { _worldPacket << uint64(EventID); _worldPacket << Date; - _worldPacket << uint32(Flags); + _worldPacket << uint16(Flags); _worldPacket << uint8(EventType); _worldPacket << int32(TextureID); _worldPacket << uint64(EventClubID); @@ -320,6 +320,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarInviteAlert::Write() _worldPacket << OwnerGuid; _worldPacket << BitsSize<8>(EventName); + _worldPacket << Bits<1>(Unknown_1100); _worldPacket.FlushBits(); _worldPacket.WriteString(EventName); @@ -383,7 +384,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventUpdatedAlert::Write() _worldPacket << OriginalDate; _worldPacket << Date; _worldPacket << LockDate; - _worldPacket << uint32(Flags); + _worldPacket << uint16(Flags); _worldPacket << uint32(TextureID); _worldPacket << uint8(EventType); diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h index e76b4162f02..1d1ae538fac 100644 --- a/src/server/game/Server/Packets/CalendarPackets.h +++ b/src/server/game/Server/Packets/CalendarPackets.h @@ -103,7 +103,7 @@ namespace WorldPackets uint8 EventType = 0; uint32 TextureID = 0; WowTime Time; - uint32 Flags = 0; + uint16 Flags = 0; }; class CalendarUpdateEvent final : public ClientPacket @@ -185,7 +185,7 @@ namespace WorldPackets std::string EventName; uint8 EventType = 0; WowTime Date; - uint32 Flags = 0; + uint16 Flags = 0; int32 TextureID = 0; uint64 EventClubID = 0; ObjectGuid OwnerGuid; @@ -228,7 +228,7 @@ namespace WorldPackets uint64 EventID = 0; WowTime Date; WowTime LockDate; - uint32 Flags = 0; + uint16 Flags = 0; int32 TextureID = 0; uint8 GetEventType = 0; uint8 EventType = 0; @@ -249,13 +249,14 @@ namespace WorldPackets ObjectGuid InvitedByGuid; uint64 InviteID = 0; uint64 EventID = 0; - uint32 Flags = 0; + uint16 Flags = 0; WowTime Date; int32 TextureID = 0; uint8 Status = 0; uint8 EventType = 0; uint8 ModeratorStatus = 0; std::string EventName; + bool Unknown_1100 = false; }; class CalendarInvite final : public ClientPacket @@ -358,7 +359,7 @@ namespace WorldPackets uint64 EventClubID = 0; uint64 EventID = 0; WowTime Date; - uint32 Flags = 0; + uint16 Flags = 0; WowTime LockDate; WowTime OriginalDate; int32 TextureID = 0; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 5dd7ba275cf..1fd503aa176 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -79,7 +79,7 @@ EnumCharacters::EnumCharacters(WorldPacket&& packet) : ClientPacket(std::move(pa ASSERT(GetOpcode() == CMSG_ENUM_CHARACTERS || GetOpcode() == CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT); } -EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields) +EnumCharactersResult::CharacterInfoBasic::CharacterInfoBasic(Field const* fields) { // 0 1 2 3 4 5 // "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.level, " @@ -95,6 +95,7 @@ EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields) // "character_declinedname.genitive" Guid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); + VirtualRealmAddress = GetVirtualRealmAddress(); GuildClubMemberID = ::Battlenet::Services::Clubs::CreateClubMemberId(Guid); Name = fields[1].GetString(); RaceID = fields[2].GetUInt8(); @@ -137,7 +138,6 @@ EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields) Flags2 = CHAR_CUSTOMIZE_FLAG_RACE; Flags3 = 0; - Flags4 = 0; FirstLogin = (atLoginFlags & AT_LOGIN_FIRST) != 0; // show pet at selection character in character list only for non-ghost character @@ -151,7 +151,6 @@ EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields) } } - BoostInProgress = false; ProfessionIds[0] = 0; ProfessionIds[1] = 0; @@ -182,80 +181,114 @@ EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields) } } -ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem) +ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfoBasic::VisualItemInfo const& visualItem) { data << uint32(visualItem.DisplayID); - data << uint32(visualItem.DisplayEnchantID); - data << int32(visualItem.SecondaryItemModifiedAppearanceID); data << uint8(visualItem.InvType); + data << uint32(visualItem.DisplayEnchantID); data << uint8(visualItem.Subclass); + data << int32(visualItem.SecondaryItemModifiedAppearanceID); + data << uint32(visualItem.ItemID); return data; } -ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo const& charInfo) +ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfoBasic const& charInfo) { - ASSERT(charInfo.MailSenders.size() == charInfo.MailSenderTypes.size()); - data << charInfo.Guid; - data << uint64(charInfo.GuildClubMemberID); + data << uint32(charInfo.VirtualRealmAddress); data << uint8(charInfo.ListPosition); data << uint8(charInfo.RaceID); - data << uint8(charInfo.ClassID); data << uint8(charInfo.SexID); + data << uint8(charInfo.ClassID); + data << int16(charInfo.SpecID); data << uint32(charInfo.Customizations.size()); data << uint8(charInfo.ExperienceLevel); - data << int32(charInfo.ZoneID); data << int32(charInfo.MapID); + data << int32(charInfo.ZoneID); data << charInfo.PreloadPos; + data << uint64(charInfo.GuildClubMemberID); data << charInfo.GuildGUID; data << uint32(charInfo.Flags); data << uint32(charInfo.Flags2); data << uint32(charInfo.Flags3); + data << uint8(charInfo.unkWod61x); + data << uint32(charInfo.PetCreatureDisplayID); data << uint32(charInfo.PetExperienceLevel); data << uint32(charInfo.PetCreatureFamilyID); - data << uint32(charInfo.ProfessionIds[0]); - data << uint32(charInfo.ProfessionIds[1]); - - for (EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem : charInfo.VisualItems) + for (EnumCharactersResult::CharacterInfoBasic::VisualItemInfo const& visualItem : charInfo.VisualItems) data << visualItem; - data << charInfo.LastPlayedTime; - data << int16(charInfo.SpecID); data << int32(charInfo.Unknown703); + data << charInfo.LastPlayedTime; data << int32(charInfo.LastLoginVersion); - data << uint32(charInfo.Flags4); - data << uint32(charInfo.MailSenders.size()); - data << uint32(charInfo.MailSenderTypes.size()); - data << uint32(charInfo.OverrideSelectScreenFileDataID); data << charInfo.PersonalTabard; + + data << uint32(charInfo.ProfessionIds[0]); + data << uint32(charInfo.ProfessionIds[1]); + data << int32(charInfo.TimerunningSeasonID); + data << uint32(charInfo.OverrideSelectScreenFileDataID); for (ChrCustomizationChoice const& customization : charInfo.Customizations) data << customization; - if (!charInfo.MailSenderTypes.empty()) - data.append(charInfo.MailSenderTypes.data(), charInfo.MailSenderTypes.size()); - data << BitsSize<6>(charInfo.Name); data << Bits<1>(charInfo.FirstLogin); - data << Bits<1>(charInfo.BoostInProgress); - data << Bits<5>(charInfo.unkWod61x); - data << Bits<1>(charInfo.RpeResetAvailable); - data << Bits<1>(charInfo.RpeResetQuestClearAvailable); - for (std::string const& str : charInfo.MailSenders) + data.FlushBits(); + + data.WriteString(charInfo.Name); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterRestrictionAndMailData const& restrictionsAndMails) +{ + ASSERT(restrictionsAndMails.MailSenders.size() == restrictionsAndMails.MailSenderTypes.size()); + + data << Bits<1>(restrictionsAndMails.BoostInProgress); + data << Bits<1>(restrictionsAndMails.RpeResetAvailable); + data << Bits<1>(restrictionsAndMails.RpeResetQuestClearAvailable); + data.FlushBits(); + + data << uint32(restrictionsAndMails.Flags4); + data << uint32(restrictionsAndMails.MailSenders.size()); + data << uint32(restrictionsAndMails.MailSenderTypes.size()); + + if (!restrictionsAndMails.MailSenderTypes.empty()) + data.append(restrictionsAndMails.MailSenderTypes.data(), restrictionsAndMails.MailSenderTypes.size()); + + for (std::string const& str : restrictionsAndMails.MailSenders) data << Bits<6>(str.length() + 1); data.FlushBits(); - for (std::string const& str : charInfo.MailSenders) + for (std::string const& str : restrictionsAndMails.MailSenders) if (!str.empty()) data << str; - data.WriteString(charInfo.Name); + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo const& charInfo) +{ + data << charInfo.Basic; + data << charInfo.RestrictionsAndMails; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RegionwideCharacterListEntry const& charInfo) +{ + data << charInfo.Basic; + data << uint64(charInfo.Money); + data << float(charInfo.CurrentSeasonMythicPlusOverallScore); + data << int32(charInfo.CurrentSeasonBestPvpRating); + data << int8(charInfo.PvpRatingBracket); + data << int16(charInfo.PvpRatingAssociatedSpecID); return data; } @@ -289,22 +322,57 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceLimitDisableI return data; } +ByteBuffer& operator<<(ByteBuffer& data, WarbandGroupMember const& warbandGroupMember) +{ + data << int32(warbandGroupMember.WarbandScenePlacementID); + data << int32(warbandGroupMember.Type); + if (warbandGroupMember.Type == 0) + data << warbandGroupMember.Guid; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WarbandGroup const& warbandGroup) +{ + data << uint64(warbandGroup.GroupID); + data << uint8(warbandGroup.Unknown_1100); + data << int32(warbandGroup.Flags); + data << uint32(warbandGroup.Members.size()); + + for (WarbandGroupMember const& member : warbandGroup.Members) + data << member; + + return data; +} + +EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields) : Basic(fields) +{ +} + +EnumCharactersResult::RegionwideCharacterListEntry::RegionwideCharacterListEntry(Field const* fields) : Basic(fields) +{ +} + WorldPacket const* EnumCharactersResult::Write() { _worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + RaceUnlockData.size() * sizeof(RaceUnlock)); _worldPacket << Bits<1>(Success); + _worldPacket << Bits<1>(Realmless); _worldPacket << Bits<1>(IsDeletedCharacters); _worldPacket << Bits<1>(IsNewPlayerRestrictionSkipped); _worldPacket << Bits<1>(IsNewPlayerRestricted); _worldPacket << Bits<1>(IsNewPlayer); _worldPacket << Bits<1>(IsTrialAccountRestricted); _worldPacket << OptionalInit(DisabledClassesMask); + _worldPacket << Bits<1>(DontCreateCharacterDisplays); _worldPacket << uint32(Characters.size()); + _worldPacket << uint32(RegionwideCharacters.size()); _worldPacket << int32(MaxCharacterLevel); _worldPacket << uint32(RaceUnlockData.size()); _worldPacket << uint32(UnlockedConditionalAppearances.size()); _worldPacket << uint32(RaceLimitDisables.size()); + _worldPacket << uint32(WarbandGroups.size()); if (DisabledClassesMask) _worldPacket << uint32(*DisabledClassesMask); @@ -315,9 +383,15 @@ WorldPacket const* EnumCharactersResult::Write() for (RaceLimitDisableInfo const& raceLimitDisableInfo : RaceLimitDisables) _worldPacket << raceLimitDisableInfo; + for (WarbandGroup const& warbandGroup : WarbandGroups) + _worldPacket << warbandGroup; + for (CharacterInfo const& charInfo : Characters) _worldPacket << charInfo; + for (RegionwideCharacterListEntry const& charInfo : RegionwideCharacters) + _worldPacket << charInfo; + for (RaceUnlock const& raceUnlock : RaceUnlockData) _worldPacket << raceUnlock; @@ -590,6 +664,7 @@ void AlterApperance::Read() _worldPacket >> NewSex; _worldPacket >> CustomizedRace; _worldPacket >> CustomizedChrModelID; + _worldPacket >> UnalteredVisualRaceID; for (ChrCustomizationChoice& customization : Customizations) _worldPacket >> customization; diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 89d4312a6fc..e061ce3f7fa 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -116,10 +116,25 @@ namespace WorldPackets int32 BackgroundColor = -1; }; + struct WarbandGroupMember + { + int32 WarbandScenePlacementID = 0; + int32 Type = 0; + ObjectGuid Guid; + }; + + struct WarbandGroup + { + uint64 GroupID = 0; + uint8 Unknown_1100 = 0; + int32 Flags = 0; ///< enum WarbandGroupFlags { Collapsed = 1 } + std::vector<WarbandGroupMember> Members; + }; + class EnumCharactersResult final : public ServerPacket { public: - struct CharacterInfo + struct CharacterInfoBasic { /** * @fn void WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields); @@ -128,9 +143,10 @@ namespace WorldPackets * * @param fields Field set of CharacterDatabaseStatements::CHAR_SEL_ENUM */ - CharacterInfo(Field const* fields); + CharacterInfoBasic(Field const* fields); ObjectGuid Guid; + uint32 VirtualRealmAddress = 0; uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known) std::string Name; uint8 ListPosition = 0; ///< Order of the characters in list @@ -146,7 +162,6 @@ namespace WorldPackets uint32 Flags = 0; ///< Character flag @see enum CharacterFlags uint32 Flags2 = 0; ///< Character customization flags @see enum CharacterCustomizeFlags uint32 Flags3 = 0; ///< Character flags 3 @todo research - uint32 Flags4 = 0; bool FirstLogin = false; uint8 unkWod61x = 0; Timestamp<> LastPlayedTime; @@ -160,7 +175,6 @@ namespace WorldPackets uint32 PetExperienceLevel = 0; uint32 PetCreatureFamilyID = 0; - bool BoostInProgress = false; ///< @todo int32 ProfessionIds[2] = { }; ///< @todo struct VisualItemInfo @@ -170,14 +184,41 @@ namespace WorldPackets int32 SecondaryItemModifiedAppearanceID = 0; // also -1 is some special value uint8 InvType = 0; uint8 Subclass = 0; + uint32 ItemID = 0; }; std::array<VisualItemInfo, 19> VisualItems = { }; + CustomTabardInfo PersonalTabard; + }; + + struct CharacterRestrictionAndMailData + { + bool BoostInProgress = false; ///< @todo + uint32 Flags4 = 0; std::vector<std::string> MailSenders; std::vector<uint32> MailSenderTypes; bool RpeResetAvailable = false; bool RpeResetQuestClearAvailable = false; - CustomTabardInfo PersonalTabard; + }; + + struct CharacterInfo + { + CharacterInfo(Field const* fields); + + CharacterInfoBasic Basic; + CharacterRestrictionAndMailData RestrictionsAndMails; + }; + + struct RegionwideCharacterListEntry + { + RegionwideCharacterListEntry(Field const* fields); + + CharacterInfoBasic Basic; + uint64 Money = 0; + float CurrentSeasonMythicPlusOverallScore = 0.0f; + uint32 CurrentSeasonBestPvpRating = 0; + int8 PvpRatingBracket = 0; + int16 PvpRatingAssociatedSpecID = 0; }; struct RaceUnlock @@ -212,20 +253,24 @@ namespace WorldPackets WorldPacket const* Write() override; - bool Success = false; ///< + bool Success = false; + bool Realmless = false; bool IsDeletedCharacters = false; ///< used for character undelete list bool IsNewPlayerRestrictionSkipped = false; ///< allows client to skip new player restrictions bool IsNewPlayerRestricted = false; ///< forbids using level boost and class trials bool IsNewPlayer = false; ///< forbids hero classes and allied races bool IsTrialAccountRestricted = false; + bool DontCreateCharacterDisplays = false; int32 MaxCharacterLevel = 1; Optional<uint32> DisabledClassesMask; std::vector<CharacterInfo> Characters; ///< all characters on the list - std::vector<RaceUnlock> RaceUnlockData; ///< + std::vector<RegionwideCharacterListEntry> RegionwideCharacters; + std::vector<RaceUnlock> RaceUnlockData; std::vector<UnlockedConditionalAppearance> UnlockedConditionalAppearances; std::vector<RaceLimitDisableInfo> RaceLimitDisables; + std::vector<WarbandGroup> WarbandGroups; }; class CheckCharacterNameAvailability final : public ClientPacket @@ -656,6 +701,7 @@ namespace WorldPackets Array<ChrCustomizationChoice, 250> Customizations; int32 CustomizedRace = 0; int32 CustomizedChrModelID = 0; + int32 UnalteredVisualRaceID = 0; }; class BarberShopResult final : public ServerPacket diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index 9ba99eb837e..6a7e93a32fa 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -110,7 +110,7 @@ WorldPacket const* SpellExecuteLog::Write() { *this << powerDrainTarget.Victim; *this << uint32(powerDrainTarget.Points); - *this << uint32(powerDrainTarget.PowerType); + *this << int8(powerDrainTarget.PowerType); *this << float(powerDrainTarget.Amplitude); } } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 11b66971073..3be80ecc4ce 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -49,13 +49,13 @@ void SpellCastLogData::Initialize(Spell const* spell) bool primaryPowerAdded = false; for (SpellPowerCost const& cost : spell->GetPowerCost()) { - PowerData.emplace_back(int32(cost.Power), unitCaster->GetPower(Powers(cost.Power)), int32(cost.Amount)); + PowerData.emplace_back(int8(cost.Power), unitCaster->GetPower(Powers(cost.Power)), int32(cost.Amount)); if (cost.Power == primaryPowerType) primaryPowerAdded = true; } if (!primaryPowerAdded) - PowerData.emplace(PowerData.begin(), int32(primaryPowerType), unitCaster->GetPower(primaryPowerType), 0); + PowerData.emplace(PowerData.begin(), int8(primaryPowerType), unitCaster->GetPower(primaryPowerType), 0); } } @@ -165,7 +165,7 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogDat for (SpellLogPowerData const& powerData : spellCastLogData.PowerData) { - data << int32(powerData.PowerType); + data << int8(powerData.PowerType); data << int32(powerData.Amount); data << int32(powerData.Cost); } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index 084d3851555..feda3b7afda 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -30,9 +30,9 @@ namespace WorldPackets { struct SpellLogPowerData { - SpellLogPowerData(int32 powerType, int32 amount, int32 cost) : PowerType(powerType), Amount(amount), Cost(cost) { } + SpellLogPowerData(int8 powerType, int32 amount, int32 cost) : PowerType(powerType), Amount(amount), Cost(cost) { } - int32 PowerType = 0; + int8 PowerType = 0; int32 Amount = 0; int32 Cost = 0; }; diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index 33dd2c9a64a..51de6ecde50 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -107,8 +107,8 @@ WorldPacket const* WorldPackets::Combat::PowerUpdate::Write() _worldPacket << uint32(Powers.size()); for (PowerUpdatePower const& power : Powers) { - _worldPacket << int32(power.Power); _worldPacket << uint8(power.PowerType); + _worldPacket << int32(power.Power); } return &_worldPacket; @@ -116,7 +116,7 @@ WorldPacket const* WorldPackets::Combat::PowerUpdate::Write() WorldPacket const* WorldPackets::Combat::InterruptPowerRegen::Write() { - _worldPacket << int32(PowerType); + _worldPacket << int8(PowerType); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 27dc7ec44ad..42424d8f18b 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -163,7 +163,7 @@ namespace WorldPackets class InterruptPowerRegen final : public ServerPacket { public: - explicit InterruptPowerRegen(Powers powerType) : ServerPacket(SMSG_INTERRUPT_POWER_REGEN, 4), PowerType(powerType) { } + explicit InterruptPowerRegen(Powers powerType) : ServerPacket(SMSG_INTERRUPT_POWER_REGEN, 1), PowerType(powerType) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp index d5518dda79e..ee03eedbb75 100644 --- a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp @@ -44,6 +44,9 @@ ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData) data << craftingData.ItemGUID; data << int32(craftingData.Quantity); data << int32(craftingData.EnchantID); + data << int32(craftingData.ConcentrationCurrencyID); + data << int32(craftingData.ConcentrationSpent); + data << int32(craftingData.IngenuityRefund); for (SpellReducedReagent const& spellReducedReagent : craftingData.ResourcesReturned) data << spellReducedReagent; @@ -52,6 +55,8 @@ ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData) data << Bits<1>(craftingData.field_29); data << Bits<1>(craftingData.field_2A); data << Bits<1>(craftingData.BonusCraft); + data << Bits<1>(craftingData.HasIngenuityProc); + data << Bits<1>(craftingData.ApplyConcentration); data.FlushBits(); data << craftingData.OldItem; diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.h b/src/server/game/Server/Packets/CraftingPacketsCommon.h index 9426662d460..2182a28627b 100644 --- a/src/server/game/Server/Packets/CraftingPacketsCommon.h +++ b/src/server/game/Server/Packets/CraftingPacketsCommon.h @@ -52,6 +52,11 @@ struct CraftingData Item::ItemInstance OldItem; Item::ItemInstance NewItem; int32 EnchantID = 0; + int32 ConcentrationCurrencyID = 0; + int32 ConcentrationSpent = 0; + int32 IngenuityRefund = 0; + bool HasIngenuityProc = false; + bool ApplyConcentration = false; }; ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReducedReagent); diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp index 7d7fa640b9a..f8423393343 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp +++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp @@ -19,9 +19,9 @@ WorldPacket const* WorldPackets::EquipmentSet::EquipmentSetID::Write() { - _worldPacket << uint64(GUID); _worldPacket << int32(Type); _worldPacket << uint32(SetID); + _worldPacket << uint64(GUID); return &_worldPacket; } @@ -119,8 +119,8 @@ void WorldPackets::EquipmentSet::UseEquipmentSet::Read() WorldPacket const* WorldPackets::EquipmentSet::UseEquipmentSetResult::Write() { + _worldPacket << int32(Reason); _worldPacket << uint64(GUID); - _worldPacket << uint8(Reason); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h index a36c95829e0..ed4165b4236 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.h +++ b/src/server/game/Server/Packets/EquipmentSetPackets.h @@ -94,7 +94,7 @@ namespace WorldPackets WorldPacket const* Write() override; uint64 GUID = 0; ///< Set Identifier - uint8 Reason = 0; + int32 Reason = 0; }; } } diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index c3212ea899c..20f14eaa47e 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -41,7 +41,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonPlotInfo const& plotInfo) { data << uint32(plotInfo.GarrPlotInstanceID); data << plotInfo.PlotPos; - data << uint32(plotInfo.PlotType); + data << uint8(plotInfo.PlotType); return data; } @@ -232,7 +232,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison) ASSERT(garrison.Missions.size() == garrison.MissionOvermaxRewards.size()); ASSERT(garrison.Missions.size() == garrison.CanStartMission.size()); - data << int32(garrison.GarrTypeID); + data << uint8(garrison.GarrTypeID); data << int32(garrison.GarrSiteID); data << int32(garrison.GarrSiteLevelID); data << uint32(garrison.Buildings.size()); @@ -310,7 +310,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison) ByteBuffer& operator<<(ByteBuffer& data, FollowerSoftCapInfo const& followerSoftCapInfo) { - data << int32(followerSoftCapInfo.GarrFollowerTypeID); + data << uint8(followerSoftCapInfo.GarrFollowerTypeID); data << uint32(followerSoftCapInfo.Count); return data; } @@ -365,7 +365,7 @@ void GarrisonPurchaseBuilding::Read() WorldPacket const* GarrisonPlaceBuildingResult::Write() { - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << uint32(Result); _worldPacket << BuildingInfo; _worldPacket.WriteBit(PlayActivationCinematic); @@ -382,7 +382,7 @@ void GarrisonCancelConstruction::Read() WorldPacket const* GarrisonBuildingRemoved::Write() { - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << uint32(Result); _worldPacket << uint32(GarrPlotInstanceID); _worldPacket << uint32(GarrBuildingID); @@ -392,7 +392,7 @@ WorldPacket const* GarrisonBuildingRemoved::Write() WorldPacket const* GarrisonLearnBlueprintResult::Write() { - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << uint32(Result); _worldPacket << uint32(BuildingID); @@ -401,7 +401,7 @@ WorldPacket const* GarrisonLearnBlueprintResult::Write() WorldPacket const* GarrisonUnlearnBlueprintResult::Write() { - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << uint32(Result); _worldPacket << uint32(BuildingID); @@ -410,7 +410,7 @@ WorldPacket const* GarrisonUnlearnBlueprintResult::Write() WorldPacket const* GarrisonRequestBlueprintAndSpecializationDataResult::Write() { - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << uint32(BlueprintsKnown ? BlueprintsKnown->size() : 0); _worldPacket << uint32(SpecializationsKnown ? SpecializationsKnown->size() : 0); if (BlueprintsKnown) @@ -443,7 +443,7 @@ WorldPacket const* GarrisonMapDataResponse::Write() WorldPacket const* GarrisonPlotPlaced::Write() { - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << *PlotInfo; return &_worldPacket; @@ -458,7 +458,7 @@ WorldPacket const* GarrisonPlotRemoved::Write() WorldPacket const* GarrisonAddFollowerResult::Write() { - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << uint32(Result); _worldPacket << Follower; @@ -467,9 +467,9 @@ WorldPacket const* GarrisonAddFollowerResult::Write() WorldPacket const* GarrisonRemoveFollowerResult::Write() { - _worldPacket << uint64(FollowerDBID); - _worldPacket << int32(GarrTypeID); + _worldPacket << uint8(GarrTypeID); _worldPacket << uint32(Result); + _worldPacket << uint64(FollowerDBID); _worldPacket << uint32(Destroyed); return &_worldPacket; diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index 983982842f8..4053c784582 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -68,7 +68,7 @@ namespace WorldPackets { uint32 GarrPlotInstanceID = 0; TaggedPosition<Position::XYZO> PlotPos; - uint32 PlotType = 0; + uint8 PlotType = 0; }; struct GarrisonBuildingInfo @@ -197,7 +197,7 @@ namespace WorldPackets struct GarrisonInfo { - int32 GarrTypeID = 0; + uint8 GarrTypeID = 0; uint32 GarrSiteID = 0; uint32 GarrSiteLevelID = 0; uint32 NumFollowerActivationsRemaining = 0; @@ -221,7 +221,7 @@ namespace WorldPackets struct FollowerSoftCapInfo { - int32 GarrFollowerTypeID; + uint8 GarrFollowerTypeID; uint32 Count; }; @@ -281,7 +281,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 GarrTypeID = 0; + uint8 GarrTypeID = 0; uint32 Result = 0; GarrisonBuildingInfo BuildingInfo; bool PlayActivationCinematic = false; @@ -305,7 +305,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 GarrTypeID = 0; + uint8 GarrTypeID = 0; uint32 Result = 0; uint32 GarrPlotInstanceID = 0; uint32 GarrBuildingID = 0; @@ -318,7 +318,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 GarrTypeID = 0; + uint8 GarrTypeID = 0; uint32 BuildingID = 0; uint32 Result = 0; }; @@ -330,9 +330,9 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 GarrTypeID = 0; - uint32 BuildingID = 0; + uint8 GarrTypeID = 0; uint32 Result = 0; + uint32 BuildingID = 0; }; class GarrisonRequestBlueprintAndSpecializationData final : public ClientPacket @@ -350,9 +350,9 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 GarrTypeID = 0; - std::unordered_set<uint32> const* SpecializationsKnown = nullptr; + uint8 GarrTypeID = 0; std::unordered_set<uint32> const* BlueprintsKnown = nullptr; + std::unordered_set<uint32> const* SpecializationsKnown = nullptr; }; class GarrisonGetMapData final : public ClientPacket @@ -389,7 +389,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 GarrTypeID = 0; + uint8 GarrTypeID = 0; GarrisonPlotInfo* PlotInfo = nullptr; }; @@ -410,7 +410,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 GarrTypeID = 0; + uint8 GarrTypeID = 0; GarrisonFollower Follower; uint32 Result = 0; }; @@ -418,13 +418,13 @@ namespace WorldPackets class GarrisonRemoveFollowerResult final : public ServerPacket { public: - GarrisonRemoveFollowerResult() : ServerPacket(SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, 8 + 4 + 4 + 4) { } + GarrisonRemoveFollowerResult() : ServerPacket(SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, 1 + 4 + 8 + 4) { } WorldPacket const* Write() override; - uint64 FollowerDBID = 0; - int32 GarrTypeID = 0; + uint8 GarrTypeID = 0; uint32 Result = 0; + uint64 FollowerDBID = 0; uint32 Destroyed = 0; }; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 88c971c8ae7..db54693206f 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -109,6 +109,11 @@ WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write() return &_worldPacket; } +void WorldPackets::Guild::AcceptGuildInvite::Read() +{ + _worldPacket >> GuildGuid; +} + void WorldPackets::Guild::DeclineGuildInvites::Read() { Allow = _worldPacket.ReadBit(); @@ -214,7 +219,6 @@ WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write() _worldPacket.WriteBits(Name.length(), 6); _worldPacket.WriteBit(LoggedOn); - _worldPacket.WriteBit(Mobile); _worldPacket.FlushBits(); _worldPacket.WriteString(Name); diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index 31f9c6ba62d..f78d582c83f 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -173,7 +173,9 @@ namespace WorldPackets public: AcceptGuildInvite(WorldPacket&& packet) : ClientPacket(CMSG_ACCEPT_GUILD_INVITE, std::move(packet)) { } - void Read() override { } + void Read() override; + + ObjectGuid GuildGuid; }; class GuildDeclineInvitation final : public ClientPacket @@ -250,7 +252,6 @@ namespace WorldPackets ObjectGuid Guid; uint32 VirtualRealmAddress = 0; std::string Name; - bool Mobile = false; bool LoggedOn = false; }; diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index 41e73128573..86caa86b6ee 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -108,9 +108,11 @@ WorldPacket const* WorldPackets::Instance::PendingRaidLock::Write() WorldPacket const* WorldPackets::Instance::RaidInstanceMessage::Write() { - _worldPacket << uint8(Type); + _worldPacket << int32(Type); _worldPacket << uint32(MapID); _worldPacket << uint32(DifficultyID); + _worldPacket << int32(TimeLeft); + _worldPacket << BitsSize<8>(WarningMessage); _worldPacket << Bits<1>(Locked); _worldPacket << Bits<1>(Extended); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h index 86f6838946f..ab980ca148f 100644 --- a/src/server/game/Server/Packets/InstancePackets.h +++ b/src/server/game/Server/Packets/InstancePackets.h @@ -157,9 +157,11 @@ namespace WorldPackets WorldPacket const* Write() override; - uint8 Type = 0; + int32 Type = 0; uint32 MapID = 0; uint32 DifficultyID = 0; + int32 TimeLeft = 0; + std::string_view WarningMessage; // GlobalStrings tag bool Locked = false; bool Extended = false; }; diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 7dc3dc23138..5dccbe3e1c9 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -254,10 +254,11 @@ WorldPacket const* WorldPackets::Item::ItemPushResult::Write() _worldPacket << int32(QuestLogItemID); _worldPacket << int32(Quantity); _worldPacket << int32(QuantityInInventory); + _worldPacket << int32(QuantityInQuestLog); _worldPacket << int32(DungeonEncounterID); _worldPacket << int32(BattlePetSpeciesID); _worldPacket << int32(BattlePetBreedID); - _worldPacket << uint32(BattlePetBreedQuality); + _worldPacket << uint8(BattlePetBreedQuality); _worldPacket << int32(BattlePetLevel); _worldPacket << ItemGUID; _worldPacket << uint32(Toasts.size()); diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index 60287883441..e1b33cc99db 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -347,10 +347,11 @@ namespace WorldPackets // only set if different than real ID (similar to CreatureTemplate.KillCredit) int32 Quantity = 0; int32 QuantityInInventory = 0; + int32 QuantityInQuestLog = 0; int32 DungeonEncounterID = 0; int32 BattlePetSpeciesID = 0; int32 BattlePetBreedID = 0; - uint32 BattlePetBreedQuality = 0; + uint8 BattlePetBreedQuality = 0; int32 BattlePetLevel = 0; ObjectGuid ItemGUID; std::vector<UiEventToast> Toasts; @@ -488,6 +489,14 @@ namespace WorldPackets ObjectGuid Item; }; + class SortAccountBankBags final : public ClientPacket + { + public: + explicit SortAccountBankBags(WorldPacket&& packet) : ClientPacket(CMSG_SORT_ACCOUNT_BANK_BAGS, std::move(packet)) { } + + void Read() override { } + }; + class SortBags final : public ClientPacket { public: @@ -545,7 +554,7 @@ namespace WorldPackets void Read() override; - uint32 BagIndex = 0; + uint8 BagIndex = 0; BagSlotFlags FlagToChange = { }; bool On = false; }; @@ -557,7 +566,7 @@ namespace WorldPackets void Read() override; - uint32 BagIndex = 0; + uint8 BagIndex = 0; BagSlotFlags FlagToChange = { }; bool On = false; }; diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.cpp b/src/server/game/Server/Packets/ItemPacketsCommon.cpp index e68a6f35dca..9fdc43bc91b 100644 --- a/src/server/game/Server/Packets/ItemPacketsCommon.cpp +++ b/src/server/game/Server/Packets/ItemPacketsCommon.cpp @@ -163,16 +163,16 @@ ByteBuffer& operator>>(ByteBuffer& data, ItemBonuses& itemBonusInstanceData) ByteBuffer& operator<<(ByteBuffer& data, ItemMod const& itemMod) { - data << int32(itemMod.Value); data << uint8(itemMod.Type); + data << int32(itemMod.Value); return data; } ByteBuffer& operator>>(ByteBuffer& data, ItemMod& itemMod) { - data >> itemMod.Value; data >> As<uint8>(itemMod.Type); + data >> itemMod.Value; return data; } diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 895c12fb704..242a0c0594b 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -691,6 +691,7 @@ WorldPacket const* WorldPackets::Movement::NewWorld::Write() _worldPacket << Loc; _worldPacket << uint32(Reason); _worldPacket << MovementOffset; + _worldPacket << int32(Counter); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 77cc00d71c7..ed05e244c19 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -283,6 +283,7 @@ namespace WorldPackets uint32 Reason = 0; TeleportLocation Loc; TaggedPosition<Position::XYZ> MovementOffset; // Adjusts all pending movement events by this offset + int32 Counter = 0; }; class WorldPortResponse final : public ClientPacket diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 4a81fef3f0b..7ba4257f4f1 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -51,6 +51,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption data << Bits<2>(gossipOption.Status); data << OptionalInit(gossipOption.SpellID); data << OptionalInit(gossipOption.OverrideIconID); + data << Bits<8>(gossipOption.FailureDescription.length() + 1); data.FlushBits(); data << gossipOption.Treasure; @@ -64,6 +65,9 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption if (gossipOption.OverrideIconID) data << int32(*gossipOption.OverrideIconID); + if (!gossipOption.FailureDescription.empty()) + data << gossipOption.FailureDescription; + return data; } @@ -74,9 +78,12 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText) data << int32(gossipText.QuestType); data << int32(gossipText.QuestFlags[0]); data << int32(gossipText.QuestFlags[1]); + data << int32(gossipText.QuestFlags[2]); data << Bits<1>(gossipText.Repeatable); + data << Bits<1>(gossipText.ResetByScheduler); data << Bits<1>(gossipText.Important); + data << Bits<1>(gossipText.Meta); data << BitsSize<9>(gossipText.QuestTitle); data.FlushBits(); @@ -104,6 +111,7 @@ WorldPacket const* GossipMessage::Write() { _worldPacket << GossipGUID; _worldPacket << int32(GossipID); + _worldPacket << int32(LfgDungeonsID); _worldPacket << int32(FriendshipFactionID); _worldPacket << uint32(GossipOptions.size()); _worldPacket << uint32(GossipText.size()); diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index 79b2bd45625..41b96bfc763 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -34,7 +34,6 @@ namespace WorldPackets { namespace NPC { - // CMSG_BANKER_ACTIVATE // CMSG_BINDER_ACTIVATE // CMSG_BINDER_CONFIRM // CMSG_GOSSIP_HELLO @@ -90,6 +89,7 @@ namespace WorldPackets TreasureLootList Treasure; Optional<int32> SpellID; Optional<int32> OverrideIconID; + std::string FailureDescription; }; struct ClientGossipText @@ -98,9 +98,11 @@ namespace WorldPackets int32 ContentTuningID = 0; int32 QuestType = 0; bool Repeatable = false; + bool ResetByScheduler = false; bool Important = false; + bool Meta = false; std::string QuestTitle; - std::array<int32, 2> QuestFlags = { }; + std::array<int32, 3> QuestFlags = { }; }; ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText); @@ -119,6 +121,7 @@ namespace WorldPackets Optional<int32> TextID; // in classic variants this still holds npc_text id Optional<int32> BroadcastTextID; int32 GossipID = 0; + int32 LfgDungeonsID = 0; }; class GossipSelectOption final : public ClientPacket diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index fc8365dd507..5b7e79a164b 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -508,6 +508,7 @@ WorldPacket const* WorldPackets::Party::PartyUpdate::Write() _worldPacket << uint32(SequenceNum); _worldPacket << LeaderGUID; _worldPacket << uint8(LeaderFactionGroup); + _worldPacket << int32(PingRestriction); _worldPacket << uint32(PlayerList.size()); _worldPacket.WriteBit(LfgInfos.has_value()); _worldPacket.WriteBit(LootSettings.has_value()); @@ -736,7 +737,7 @@ WorldPacket const* WorldPackets::Party::BroadcastSummonResponse::Write() void WorldPackets::Party::SetRestrictPingsToAssistants::Read() { _worldPacket >> OptionalInit(PartyIndex); - _worldPacket >> Bits<1>(RestrictPingsToAssistants); + _worldPacket >> As<int32>(RestrictTo); if (PartyIndex) _worldPacket >> PartyIndex.emplace(); } @@ -764,8 +765,9 @@ void WorldPackets::Party::SendPingWorldPoint::Read() _worldPacket >> SenderGUID; _worldPacket >> MapID; _worldPacket >> Point; - _worldPacket >> As<uint8>(Type); + _worldPacket >> As<int32>(Type); _worldPacket >> PinFrameID; + _worldPacket >> Transport; } WorldPacket const* WorldPackets::Party::ReceivePingWorldPoint::Write() @@ -775,6 +777,7 @@ WorldPacket const* WorldPackets::Party::ReceivePingWorldPoint::Write() _worldPacket << Point; _worldPacket << uint8(Type); _worldPacket << PinFrameID; + _worldPacket << Transport; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index a865f1f1e7c..1adaa3d33dd 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -561,6 +561,8 @@ namespace WorldPackets int32 MyIndex = 0; int32 SequenceNum = 0; + RestrictPingsTo PingRestriction = RestrictPingsTo::None; + std::vector<PartyPlayerInfo> PlayerList; Optional<PartyLFGInfo> LfgInfos; @@ -674,7 +676,7 @@ namespace WorldPackets void Read() override; Optional<uint8> PartyIndex; - bool RestrictPingsToAssistants = false; + RestrictPingsTo RestrictTo = RestrictPingsTo::None; }; class SendPingUnit final : public ClientPacket @@ -715,6 +717,7 @@ namespace WorldPackets TaggedPosition<Position::XYZ> Point; PingSubjectType Type = PingSubjectType::Max; uint32 PinFrameID = 0; + ObjectGuid Transport; }; class ReceivePingWorldPoint final : public ServerPacket @@ -729,6 +732,7 @@ namespace WorldPackets TaggedPosition<Position::XYZ> Point; PingSubjectType Type = PingSubjectType::Max; uint32 PinFrameID = 0; + ObjectGuid Transport; }; class CancelPingPin final : public ServerPacket diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index 72bde99ff5d..3e1f6aefd51 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -374,9 +374,9 @@ WorldPacket const* CorpseLocation::Write() _worldPacket << Player; _worldPacket << ActualMapID; - _worldPacket << Position; _worldPacket << MapID; _worldPacket << Transport; + _worldPacket << Position; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 1d8dc537de5..d1f31ccc7a7 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -182,7 +182,7 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << uint32(Info.Objectives.size()); _worldPacket << uint64(Info.AllowableRaces.RawValue); - _worldPacket << int32(Info.TreasurePickerID); + _worldPacket << uint32(Info.TreasurePickerID.size()); _worldPacket << int32(Info.Expansion); _worldPacket << int32(Info.ManagedWorldStateID); _worldPacket << int32(Info.QuestSessionBonus); @@ -194,6 +194,9 @@ WorldPacket const* QueryQuestInfoResponse::Write() for (QuestCompleteDisplaySpell const& rewardDisplaySpell : Info.RewardDisplaySpell) _worldPacket << rewardDisplaySpell; + if (!Info.TreasurePickerID.empty()) + _worldPacket.append(Info.TreasurePickerID.data(), Info.TreasurePickerID.size()); + _worldPacket << BitsSize<9>(Info.LogTitle); _worldPacket << BitsSize<12>(Info.LogDescription); _worldPacket << BitsSize<12>(Info.QuestDescription); @@ -204,12 +207,13 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << BitsSize<8>(Info.PortraitTurnInName); _worldPacket << BitsSize<11>(Info.QuestCompletionLog); _worldPacket << Bits<1>(Info.ReadyForTranslation); + _worldPacket << Bits<1>(Info.ResetByScheduler); _worldPacket.FlushBits(); for (QuestObjective const& questObjective : Info.Objectives) { _worldPacket << uint32(questObjective.ID); - _worldPacket << uint8(questObjective.Type); + _worldPacket << int32(questObjective.Type); _worldPacket << int8(questObjective.StorageIndex); _worldPacket << int32(questObjective.ObjectID); _worldPacket << int32(questObjective.Amount); @@ -276,11 +280,26 @@ WorldPacket const* QuestUpdateAddPvPCredit::Write() return &_worldPacket; } +ByteBuffer& operator<<(ByteBuffer& data, QuestRewardItem const& questRewardItem) +{ + data << int32(questRewardItem.ItemID); + data << int32(questRewardItem.ItemQty); + data << OptionalInit(questRewardItem.ContextFlags); + data.FlushBits(); + if (questRewardItem.ContextFlags) + data << As<int32>(*questRewardItem.ContextFlags); + + return data; +} + ByteBuffer& operator<<(ByteBuffer& data, QuestChoiceItem const& questChoiceItem) { data << Bits<2>(questChoiceItem.LootItemType); + data << OptionalInit(questChoiceItem.ContextFlags); data << questChoiceItem.Item; data << int32(questChoiceItem.Quantity); + if (questChoiceItem.ContextFlags) + data << As<int32>(*questChoiceItem.ContextFlags); return data; } @@ -289,23 +308,35 @@ ByteBuffer& operator>>(ByteBuffer& data, QuestChoiceItem& questChoiceItem) { data.ResetBitPos(); data >> Bits<2>(questChoiceItem.LootItemType); + data >> OptionalInit(questChoiceItem.ContextFlags); data >> questChoiceItem.Item; data >> questChoiceItem.Quantity; + if (questChoiceItem.ContextFlags) + data >> As<int32>(*questChoiceItem.ContextFlags); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, QuestRewardCurrency const& questRewardCurrency) +{ + data << int32(questRewardCurrency.CurrencyID); + data << int32(questRewardCurrency.CurrencyQty); + data << int32(questRewardCurrency.BonusQty); + data << OptionalInit(questRewardCurrency.ContextFlags); + data.FlushBits(); + if (questRewardCurrency.ContextFlags) + data << As<int32>(*questRewardCurrency.ContextFlags); return data; } ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards) { + for (QuestRewardItem const& item : questRewards.Items) + data << item; + data << int32(questRewards.ChoiceItemCount); data << int32(questRewards.ItemCount); - - for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) - { - data << int32(questRewards.ItemID[i]); - data << int32(questRewards.ItemQty[i]); - } - data << int32(questRewards.Money); data << int32(questRewards.XP); data << int64(questRewards.ArtifactXP); @@ -326,22 +357,21 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards) data << int32(questRewards.SpellCompletionID); - for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) - { - data << int32(questRewards.CurrencyID[i]); - data << int32(questRewards.CurrencyQty[i]); - } - data << int32(questRewards.SkillLineID); data << int32(questRewards.NumSkillUps); - data << int32(questRewards.TreasurePickerID); + data << uint32(questRewards.TreasurePickerID.size()); + if (!questRewards.TreasurePickerID.empty()) + data.append(questRewards.TreasurePickerID.data(), questRewards.TreasurePickerID.size()); - for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems) - data << choiceItem; + 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; } @@ -354,6 +384,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestGiverOfferReward const& offer) data << int32(offer.QuestFlags[1]); // FlagsEx data << int32(offer.QuestFlags[2]); // FlagsEx2 data << int32(offer.SuggestedPartyMembers); + data << int32(offer.QuestInfoID); data << int32(offer.Emotes.size()); for (QuestDescEmote const& emote : offer.Emotes) { @@ -456,6 +487,7 @@ WorldPacket const* QuestGiverQuestDetails::Write() _worldPacket << uint32(DescEmotes.size()); _worldPacket << uint32(Objectives.size()); _worldPacket << int32(QuestStartItemID); + _worldPacket << int32(QuestInfoID); _worldPacket << int32(QuestSessionBonus); _worldPacket << int32(QuestGiverCreatureID); _worldPacket << uint32(ConditionalDescriptionText.size()); @@ -472,9 +504,9 @@ WorldPacket const* QuestGiverQuestDetails::Write() for (QuestObjectiveSimple const& obj : Objectives) { _worldPacket << int32(obj.ID); + _worldPacket << int32(obj.Type); _worldPacket << int32(obj.ObjectID); _worldPacket << int32(obj.Amount); - _worldPacket << uint8(obj.Type); } _worldPacket << BitsSize<9>(QuestTitle); @@ -521,6 +553,7 @@ WorldPacket const* QuestGiverRequestItems::Write() _worldPacket << int32(Collect.size()); _worldPacket << int32(Currency.size()); _worldPacket << int32(StatusFlags); + _worldPacket << int32(QuestInfoID); for (QuestObjectiveCollect const& obj : Collect) { diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index a6c89c0cd69..f119eac4e31 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -185,7 +185,7 @@ namespace WorldPackets int32 CompleteSoundKitID = 0; int32 AreaGroupID = 0; int64 TimeAllowed = 0; - int32 TreasurePickerID = 0; + std::span<int32 const> TreasurePickerID; int32 Expansion = 0; int32 ManagedWorldStateID = 0; int32 QuestSessionBonus = 0; @@ -205,6 +205,7 @@ namespace WorldPackets int32 RewardCurrencyID[QUEST_REWARD_CURRENCY_COUNT] = { }; int32 RewardCurrencyQty[QUEST_REWARD_CURRENCY_COUNT] = { }; bool ReadyForTranslation = false; + bool ResetByScheduler = false; }; class QueryQuestInfoResponse final : public ServerPacket @@ -257,11 +258,27 @@ namespace WorldPackets uint16 Count = 0; }; + struct QuestRewardItem + { + int32 ItemID = 0; + int32 ItemQty = 0; + Optional<QuestRewardContextFlags> ContextFlags; + }; + struct QuestChoiceItem { ::LootItemType LootItemType = ::LootItemType::Item; Item::ItemInstance Item; int32 Quantity = 0; + Optional<QuestRewardContextFlags> ContextFlags; + }; + + struct QuestRewardCurrency + { + int32 CurrencyID = 0; + int32 CurrencyQty = 0; + int32 BonusQty = 0; + Optional<QuestRewardContextFlags> ContextFlags; }; struct QuestRewards @@ -279,16 +296,14 @@ namespace WorldPackets int32 SpellCompletionID = 0; int32 SkillLineID = 0; int32 NumSkillUps = 0; - int32 TreasurePickerID = 0; + std::span<int32 const> TreasurePickerID; std::array<QuestChoiceItem, QUEST_REWARD_CHOICES_COUNT> ChoiceItems = { }; - std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemID = { }; - std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemQty = { }; + std::array<QuestRewardItem, QUEST_REWARD_ITEM_COUNT> Items = { }; std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionID = { }; std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionValue = { }; std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionOverride = { }; std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionCapIn = { }; - std::array<int32, QUEST_REWARD_CURRENCY_COUNT> CurrencyID = { }; - std::array<int32, QUEST_REWARD_CURRENCY_COUNT> CurrencyQty = { }; + std::array<QuestRewardCurrency, QUEST_REWARD_CURRENCY_COUNT> Currencies = { }; bool IsBoostSpell = false; }; @@ -309,6 +324,7 @@ namespace WorldPackets QuestRewards Rewards; std::vector<QuestDescEmote> Emotes; std::array<int32, 3> QuestFlags = { }; + int32 QuestInfoID = 0; }; class QuestGiverOfferRewardMessage final : public ServerPacket @@ -390,9 +406,9 @@ namespace WorldPackets struct QuestObjectiveSimple { int32 ID = 0; + int32 Type = 0; int32 ObjectID = 0; int32 Amount = 0; - uint8 Type = 0; }; class QuestGiverQuestDetails final : public ServerPacket @@ -417,6 +433,7 @@ namespace WorldPackets int32 PortraitGiverMount = 0; int32 PortraitGiverModelSceneID = 0; int32 QuestStartItemID = 0; + int32 QuestInfoID = 0; int32 QuestSessionBonus = 0; int32 QuestGiverCreatureID = 0; std::string PortraitGiverText; @@ -466,6 +483,7 @@ namespace WorldPackets std::vector<QuestObjectiveCollect> Collect; std::vector<QuestCurrency> Currency; int32 StatusFlags = 0; + int32 QuestInfoID = 0; uint32 QuestFlags[3] = { }; std::string QuestTitle; std::string CompletionText; diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp index aff39c3bbde..fece28f80b7 100644 --- a/src/server/game/Server/Packets/ReputationPackets.cpp +++ b/src/server/game/Server/Packets/ReputationPackets.cpp @@ -18,18 +18,37 @@ #include "ReputationPackets.h" #include "PacketUtilities.h" +namespace WorldPackets::Reputation +{ +ByteBuffer& operator<<(ByteBuffer& data, FactionData const& factionData) +{ + data << int32(factionData.FactionID); + data << uint16(factionData.Flags); + data << int32(factionData.Standing); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, FactionBonusData const& factionBonusData) +{ + data << int32(factionBonusData.FactionID); + data << Bits<1>(factionBonusData.FactionHasBonus); + data.FlushBits(); + + return data; +} +} + WorldPacket const* WorldPackets::Reputation::InitializeFactions::Write() { - for (uint16 i = 0; i < FactionCount; ++i) - { - _worldPacket << uint16(FactionFlags[i]); - _worldPacket << int32(FactionStandings[i]); - } + _worldPacket << uint32(Factions.size()); + _worldPacket << uint32(Bonuses.size()); - for (uint16 i = 0; i < FactionCount; ++i) - _worldPacket.WriteBit(FactionHasBonus[i]); + for (FactionData const& faction : Factions) + _worldPacket << faction; - _worldPacket.FlushBits(); + for (FactionBonusData const& bonus : Bonuses) + _worldPacket << bonus; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ReputationPackets.h b/src/server/game/Server/Packets/ReputationPackets.h index c38c4235914..98b0146e9b4 100644 --- a/src/server/game/Server/Packets/ReputationPackets.h +++ b/src/server/game/Server/Packets/ReputationPackets.h @@ -25,18 +25,28 @@ namespace WorldPackets { namespace Reputation { - static constexpr uint16 FactionCount = 1000; + struct FactionData + { + int32 FactionID = 0; + uint16 Flags = 0; + int32 Standing = 0; + }; + + struct FactionBonusData + { + int32 FactionID = 0; + bool FactionHasBonus = false; + }; class InitializeFactions final : public ServerPacket { public: - InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, FactionCount * (4 + 2) + FactionCount / 8) { } + InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, 0x1000) { } WorldPacket const* Write() override; - std::array<int32, FactionCount> FactionStandings = { }; - std::array<bool, FactionCount> FactionHasBonus = { }; ///< @todo: implement faction bonus - std::array<uint16, FactionCount> FactionFlags = { }; ///< @see enum FactionFlags + std::vector<FactionData> Factions; + std::vector<FactionBonusData> Bonuses; }; class RequestForcedReactions final : public ClientPacket diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp index 98ead11342e..bab779d2fb0 100644 --- a/src/server/game/Server/Packets/ScenePackets.cpp +++ b/src/server/game/Server/Packets/ScenePackets.cpp @@ -26,6 +26,7 @@ WorldPacket const* WorldPackets::Scenes::PlayScene::Write() _worldPacket << int32(SceneScriptPackageID); _worldPacket << TransportGUID; _worldPacket << Location; + _worldPacket << int32(MovieID); _worldPacket << Bits<1>(Encrypted); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/ScenePackets.h b/src/server/game/Server/Packets/ScenePackets.h index af33a9e68ab..f5c091d6803 100644 --- a/src/server/game/Server/Packets/ScenePackets.h +++ b/src/server/game/Server/Packets/ScenePackets.h @@ -37,6 +37,7 @@ namespace WorldPackets uint32 PlaybackFlags = 0; uint32 SceneInstanceID = 0; int32 SceneScriptPackageID = 0; + int32 MovieID = 0; ObjectGuid TransportGUID; TaggedPosition<Position::XYZO> Location; bool Encrypted = false; diff --git a/src/server/game/Server/Packets/SocialPackets.cpp b/src/server/game/Server/Packets/SocialPackets.cpp index 7e7d7e188e5..839a9ea91f0 100644 --- a/src/server/game/Server/Packets/SocialPackets.cpp +++ b/src/server/game/Server/Packets/SocialPackets.cpp @@ -50,7 +50,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Social::ContactInfo const data << uint32(contact.Level); data << uint32(contact.ClassID); data.WriteBits(contact.Notes.length(), 10); - data.WriteBit(contact.Mobile); data.FlushBits(); data.WriteString(contact.Notes); @@ -93,7 +92,6 @@ WorldPacket const* WorldPackets::Social::FriendStatus::Write() _worldPacket << uint32(Level); _worldPacket << uint32(ClassID); _worldPacket.WriteBits(Notes.length(), 10); - _worldPacket.WriteBit(Mobile); _worldPacket.FlushBits(); _worldPacket.WriteString(Notes); diff --git a/src/server/game/Server/Packets/SocialPackets.h b/src/server/game/Server/Packets/SocialPackets.h index 3007cb3800b..9ee43e163b1 100644 --- a/src/server/game/Server/Packets/SocialPackets.h +++ b/src/server/game/Server/Packets/SocialPackets.h @@ -53,7 +53,6 @@ namespace WorldPackets uint32 AreaID = 0; uint32 Level = 0; uint32 ClassID = CLASS_NONE; - bool Mobile = false; }; class ContactList final : public ServerPacket @@ -85,7 +84,6 @@ namespace WorldPackets uint32 Level = 0; uint32 AreaID = 0; uint8 FriendResult = 0; ///< @see enum FriendsResult - bool Mobile = false; }; struct QualifiedGUID diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index e4a06ff214f..486ac112d34 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -225,6 +225,7 @@ ByteBuffer& operator>>(ByteBuffer& buffer, SpellCastRequest& request) request.OptionalCurrencies.resize(buffer.read<uint32>()); request.OptionalReagents.resize(buffer.read<uint32>()); request.RemovedModifications.resize(buffer.read<uint32>()); + buffer >> request.CraftingFlags; for (SpellExtraCurrencyCost& optionalCurrency : request.OptionalCurrencies) buffer >> optionalCurrency; @@ -339,8 +340,8 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellHitStatus const& spellHitStatus) ByteBuffer& operator<<(ByteBuffer& data, SpellPowerData const& spellPowerData) { - data << int32(spellPowerData.Cost); data << int8(spellPowerData.Type); + data << int32(spellPowerData.Cost); return data; } @@ -750,6 +751,7 @@ WorldPacket const* PlayOrphanSpellVisual::Write() _worldPacket << SourceRotation; _worldPacket << TargetLocation; _worldPacket << Target; + _worldPacket << TargetTransport; _worldPacket << int32(SpellVisualID); _worldPacket << float(TravelSpeed); _worldPacket << float(LaunchDelay); diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 42c58e35772..c5efa757a5a 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -251,6 +251,7 @@ namespace WorldPackets Array<SpellCraftingReagent, 6> RemovedModifications; Array<SpellExtraCurrencyCost, 5 /*MAX_ITEM_EXT_COST_CURRENCIES*/> OptionalCurrencies; Optional<uint64> CraftingOrderID; + uint8 CraftingFlags = 0; // 1 = ApplyConcentration ObjectGuid CraftingNPC; int32 Misc[2] = { }; }; @@ -713,6 +714,7 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid Target; // Exclusive with TargetLocation + ObjectGuid TargetTransport; TaggedPosition<Position::XYZ> SourceLocation; int32 SpellVisualID = 0; bool SpeedAsTime = false; diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 3e0bee090bb..c14bc777465 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -82,6 +82,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << int32(ActiveSeason); _worldPacket << uint32(GameRuleValues.size()); + _worldPacket << int32(ActiveTimerunningSeasonID); + _worldPacket << int32(RemainingTimerunningSeasonSeconds); _worldPacket << int16(MaxPlayerNameQueriesPerPacket); _worldPacket << int16(PlayerNameQueryTelemetryInterval); @@ -134,19 +136,25 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(ChatDisabledByPlayer); _worldPacket << Bits<1>(LFGListCustomRequiresAuthenticator); _worldPacket << Bits<1>(AddonsDisabled); + _worldPacket << Bits<1>(TimerunningEnabled); _worldPacket << Bits<1>(WarGamesEnabled); _worldPacket << Bits<1>(ContentTrackingEnabled); _worldPacket << Bits<1>(IsSellAllJunkEnabled); - _worldPacket << Bits<1>(IsGroupFinderEnabled); + _worldPacket << Bits<1>(IsGroupFinderEnabled); _worldPacket << Bits<1>(IsLFDEnabled); _worldPacket << Bits<1>(IsLFREnabled); _worldPacket << Bits<1>(IsPremadeGroupEnabled); _worldPacket << Bits<1>(CanShowSetRoleButton); _worldPacket << Bits<1>(false); // unused 10.2.7 - _worldPacket << Bits<1>(false); // unused 10.2.7 + _worldPacket << Bits<1>(GuildEventsEditsEnabled); + _worldPacket << Bits<1>(GuildTradeSkillsEnabled); _worldPacket << BitsSize<7>(Unknown1027); + _worldPacket << Bits<1>(BNSendWhisperUseV2Services); + + _worldPacket << Bits<1>(BNSendGameDataUseV2Services); + _worldPacket << Bits<1>(IsAccountCurrencyTransferEnabled); _worldPacket.FlushBits(); @@ -213,10 +221,11 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket << Bits<1>(IsBoostEnabled); _worldPacket << Bits<1>(TrialBoostEnabled); _worldPacket << Bits<1>(TokenBalanceEnabled); + _worldPacket << Bits<1>(PaidCharacterTransfersBetweenBnetAccountsEnabled); _worldPacket << Bits<1>(LiveRegionCharacterListEnabled); _worldPacket << Bits<1>(LiveRegionCharacterCopyEnabled); - _worldPacket << Bits<1>(LiveRegionAccountCopyEnabled); + _worldPacket << Bits<1>(LiveRegionAccountCopyEnabled); _worldPacket << Bits<1>(LiveRegionKeyBindingsCopyEnabled); _worldPacket << Bits<1>(Unknown901CheckoutRelated); _worldPacket << Bits<1>(false); // unused, 10.0.2 @@ -224,14 +233,19 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket << Bits<1>(IsNameReservationEnabled); _worldPacket << OptionalInit(LaunchETA); _worldPacket << Bits<1>(TimerunningEnabled); - _worldPacket << Bits<1>(AddonsDisabled); + _worldPacket << Bits<1>(AddonsDisabled); _worldPacket << Bits<1>(Unused1000); _worldPacket << Bits<1>(AccountSaveDataExportEnabled); _worldPacket << Bits<1>(AccountLockedByExport); _worldPacket << Bits<11>(RealmHiddenAlert.length() + 1); + _worldPacket << Bits<1>(BNSendWhisperUseV2Services); + + _worldPacket << Bits<1>(BNSendGameDataUseV2Services); + _worldPacket << Bits<1>(CharacterSelectListModeRealmless); + _worldPacket.FlushBits(); if (EuropaTicketSystemStatus) diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 4a326f33206..8c1ff5f18e5 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -165,6 +165,7 @@ namespace WorldPackets bool ChatDisabledByPlayer = false; bool LFGListCustomRequiresAuthenticator = false; bool AddonsDisabled = false; + bool TimerunningEnabled = false; bool WarGamesEnabled = false; // classic only bool ContentTrackingEnabled = false; bool IsSellAllJunkEnabled = false; @@ -173,11 +174,18 @@ namespace WorldPackets bool IsLFREnabled = true; // classic only bool IsPremadeGroupEnabled = true; // classic only bool CanShowSetRoleButton = true; + bool GuildEventsEditsEnabled = true; + bool GuildTradeSkillsEnabled = true; + bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService + bool BNSendGameDataUseV2Services = true; ///< BNSendGameData will send to v2.NotificationService instead of v1.NotificationService + bool IsAccountCurrencyTransferEnabled = false; SocialQueueConfig QuickJoinConfig; SquelchInfo Squelch; RafSystemFeatureInfo RAFSystem; std::vector<GameRuleValuePair> GameRuleValues; + int32 ActiveTimerunningSeasonID = 0; + int32 RemainingTimerunningSeasonSeconds = 0; std::string Unknown1027; // related to movement lua functions used by keybinds AddonChatThrottleParams AddonChatThrottle; }; @@ -208,6 +216,7 @@ namespace WorldPackets bool IsBoostEnabled = false; // classic only bool TrialBoostEnabled = false; // NYI bool TokenBalanceEnabled = false; // NYI + bool PaidCharacterTransfersBetweenBnetAccountsEnabled = false; bool LiveRegionCharacterListEnabled = false; // NYI bool LiveRegionCharacterCopyEnabled = false; // NYI bool LiveRegionAccountCopyEnabled = false; // NYI @@ -219,6 +228,9 @@ namespace WorldPackets bool Unused1000 = false; bool AccountSaveDataExportEnabled = false; bool AccountLockedByExport = false; + bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService + bool BNSendGameDataUseV2Services = true; ///< BNSendGameData will send to v2.NotificationService instead of v1.NotificationService + bool CharacterSelectListModeRealmless = false; Optional<EuropaTicketConfig> EuropaTicketSystemStatus; std::vector<int32> LiveRegionCharacterCopySourceRegions; uint32 TokenPollTimeSeconds = 0; // NYI diff --git a/src/server/game/Server/Packets/TraitPacketsCommon.cpp b/src/server/game/Server/Packets/TraitPacketsCommon.cpp index aa8d6ca5e6f..0d3158ef4b9 100644 --- a/src/server/game/Server/Packets/TraitPacketsCommon.cpp +++ b/src/server/game/Server/Packets/TraitPacketsCommon.cpp @@ -31,6 +31,16 @@ TraitEntry::TraitEntry(UF::TraitEntry const& ufEntry) GrantedRanks = ufEntry.GrantedRanks; } +TraitSubTreeCache::TraitSubTreeCache() = default; + +TraitSubTreeCache::TraitSubTreeCache(UF::TraitSubTreeCache const& ufSubTreeCache) +{ + TraitSubTreeID = ufSubTreeCache.TraitSubTreeID; + for (UF::TraitEntry const& ufEntry : ufSubTreeCache.Entries) + Entries.emplace_back(ufEntry); + Active = ufSubTreeCache.Active; +} + TraitConfig::TraitConfig() = default; TraitConfig::TraitConfig(UF::TraitConfig const& ufConfig) @@ -67,6 +77,35 @@ ByteBuffer& operator<<(ByteBuffer& data, TraitEntry const& traitEntry) return data; } +ByteBuffer& operator>>(ByteBuffer& data, TraitSubTreeCache& traitSubTreeCache) +{ + data >> traitSubTreeCache.TraitSubTreeID; + uint32 entriesSize = data.read<uint32>(); + if (entriesSize > 100) + throw PacketArrayMaxCapacityException(entriesSize, 100); + + for (TraitEntry& traitEntry : traitSubTreeCache.Entries) + data >> traitEntry; + + data >> Bits<1>(traitSubTreeCache.Active); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, TraitSubTreeCache const& traitSubTreeCache) +{ + data << int32(traitSubTreeCache.TraitSubTreeID); + data << uint32(traitSubTreeCache.Entries.size()); + + for (TraitEntry const& traitEntry : traitSubTreeCache.Entries) + data << traitEntry; + + data << Bits<1>(traitSubTreeCache.Active); + data.FlushBits(); + + return data; +} + ByteBuffer& operator>>(ByteBuffer& data, TraitConfig& traitConfig) { data >> traitConfig.ID; @@ -76,6 +115,13 @@ ByteBuffer& operator>>(ByteBuffer& data, TraitConfig& traitConfig) throw PacketArrayMaxCapacityException(entriesSize, 100); traitConfig.Entries.resize(entriesSize); + + uint32 subtreesSize = data.read<uint32>(); + if (subtreesSize > 10) + throw PacketArrayMaxCapacityException(subtreesSize, 10); + + traitConfig.SubTrees.resize(subtreesSize); + switch (traitConfig.Type) { case TraitConfigType::Combat: @@ -97,6 +143,10 @@ ByteBuffer& operator>>(ByteBuffer& data, TraitConfig& traitConfig) data >> traitEntry; uint32 nameLength = data.ReadBits(9); + + for (TraitSubTreeCache& traitSubTreeCache : traitConfig.SubTrees) + data >> traitSubTreeCache; + traitConfig.Name = data.ReadString(nameLength, false); return data; @@ -107,6 +157,7 @@ ByteBuffer& operator<<(ByteBuffer& data, TraitConfig const& traitConfig) data << int32(traitConfig.ID); data << int32(traitConfig.Type); data << uint32(traitConfig.Entries.size()); + data << uint32(traitConfig.SubTrees.size()); switch (traitConfig.Type) { case TraitConfigType::Combat: @@ -128,6 +179,10 @@ ByteBuffer& operator<<(ByteBuffer& data, TraitConfig const& traitConfig) data << traitEntry; data.WriteBits(traitConfig.Name.length(), 9); + + for (TraitSubTreeCache const& traitSubTreeCache : traitConfig.SubTrees) + data << traitSubTreeCache; + data.FlushBits(); data.WriteString(static_cast<std::string const&>(traitConfig.Name)); diff --git a/src/server/game/Server/Packets/TraitPacketsCommon.h b/src/server/game/Server/Packets/TraitPacketsCommon.h index b6d143e7baf..8cf075bc7a8 100644 --- a/src/server/game/Server/Packets/TraitPacketsCommon.h +++ b/src/server/game/Server/Packets/TraitPacketsCommon.h @@ -27,6 +27,7 @@ namespace UF { struct TraitConfig; struct TraitEntry; +struct TraitSubTreeCache; } namespace WorldPackets::Traits @@ -42,6 +43,16 @@ struct TraitEntry int32 GrantedRanks = 0; }; +struct TraitSubTreeCache +{ + TraitSubTreeCache(); + explicit TraitSubTreeCache(UF::TraitSubTreeCache const& ufSubTreeCache); + + int32 TraitSubTreeID = 0; + std::vector<TraitEntry> Entries; + bool Active = false; +}; + struct TraitConfig { TraitConfig(); @@ -55,11 +66,14 @@ struct TraitConfig int32 SkillLineID = 0; int32 TraitSystemID = 0; std::vector<TraitEntry> Entries; + std::vector<TraitSubTreeCache> SubTrees; String<259> Name; }; ByteBuffer& operator>>(ByteBuffer& data, TraitEntry& traitEntry); ByteBuffer& operator<<(ByteBuffer& data, TraitEntry const& traitEntry); +ByteBuffer& operator>>(ByteBuffer& data, TraitSubTreeCache& traitSubTreeCache); +ByteBuffer& operator<<(ByteBuffer& data, TraitSubTreeCache const& traitSubTreeCache); ByteBuffer& operator>>(ByteBuffer& data, TraitConfig& traitConfig); ByteBuffer& operator<<(ByteBuffer& data, TraitConfig const& traitConfig); } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d8de9ca04d1..9df1813dc0c 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -146,6 +146,8 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_ACCEPT_SOCIAL_CONTRACT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode); DEFINE_HANDLER(CMSG_ACCEPT_WARGAME_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_ACCOUNT_BANK_DEPOSIT_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_ACCOUNT_BANK_WITHDRAW_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACTIVATE_SOULBIND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ACTIVATE_TAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode); @@ -192,6 +194,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_AUTOBANK_REAGENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoBankReagentOpcode); DEFINE_HANDLER(CMSG_AUTOSTORE_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAutoStoreBankItemOpcode); DEFINE_HANDLER(CMSG_AUTOSTORE_BANK_REAGENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoStoreBankReagentOpcode); + DEFINE_HANDLER(CMSG_AUTO_DEPOSIT_ACCOUNT_BANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAutoEquipItemOpcode); DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM_SLOT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAutoEquipItemSlotOpcode); DEFINE_HANDLER(CMSG_AUTO_GUILD_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoGuildBankItem); @@ -209,6 +212,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_BATTLEMASTER_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinOpcode); DEFINE_HANDLER(CMSG_BATTLEMASTER_JOIN_ARENA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinArena); DEFINE_HANDLER(CMSG_BATTLEMASTER_JOIN_BRAWL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLEMASTER_JOIN_SKIRMISH, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLENET_CHALLENGE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -243,6 +247,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_BONUS_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BUG_REPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBugReportOpcode); DEFINE_HANDLER(CMSG_BUSY_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBusyTradeOpcode); + DEFINE_HANDLER(CMSG_BUY_ACCOUNT_BANK_TAB, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BUY_BACK_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleBuybackItem); DEFINE_HANDLER(CMSG_BUY_BANK_SLOT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleBuyBankSlotOpcode); DEFINE_HANDLER(CMSG_BUY_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleBuyItemOpcode); @@ -389,6 +394,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONVERSATION_CINEMATIC_READY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONVERSATION_LINE_STARTED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleConversationLineStarted); + DEFINE_HANDLER(CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONVERT_RAID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleConvertRaidOpcode); DEFINE_HANDLER(CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CRAFTING_ORDER_CANCEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -407,6 +413,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_DECLINE_GUILD_INVITES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDeclineGuildInvites); DEFINE_HANDLER(CMSG_DECLINE_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDeclinePetition); DEFINE_HANDLER(CMSG_DELETE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDeleteEquipmentSet); + DEFINE_HANDLER(CMSG_DELVE_TELEPORT_OUT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_DEL_FRIEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDelFriendOpcode); DEFINE_HANDLER(CMSG_DEL_IGNORE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDelIgnoreOpcode); DEFINE_HANDLER(CMSG_DEPOSIT_REAGENT_BANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleReagentBankDepositOpcode); @@ -476,6 +483,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_GET_MIRROR_IMAGE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMirrorImageDataRequest); DEFINE_HANDLER(CMSG_GET_PVP_OPTIONS_ENABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGetPVPOptionsEnabled); DEFINE_HANDLER(CMSG_GET_RAF_ACCOUNT_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GET_REMAINING_GAME_TIME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GET_TROPHY_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGetUndeleteCooldownStatus); @@ -489,7 +497,6 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_GUILD_ADD_BATTLENET_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GUILD_ADD_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAddRank); DEFINE_HANDLER(CMSG_GUILD_ASSIGN_MEMBER_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAssignRank); - DEFINE_HANDLER(CMSG_GUILD_AUTO_DECLINE_INVITATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GUILD_BANK_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankActivate); DEFINE_HANDLER(CMSG_GUILD_BANK_BUY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankBuyTab); DEFINE_HANDLER(CMSG_GUILD_BANK_DEPOSIT_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankDepositMoney); @@ -614,6 +621,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_MOVE_DISMISS_VEHICLE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveDismissVehicle); DEFINE_HANDLER(CMSG_MOVE_DOUBLE_JUMP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes); DEFINE_HANDLER(CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); + DEFINE_HANDLER(CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_FALL_LAND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes); DEFINE_HANDLER(CMSG_MOVE_FALL_RESET, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes); @@ -642,7 +650,6 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_MOVE_REMOVE_INERTIA_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_REMOVE_MOVEMENT_FORCES, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveRemoveMovementForceAck); - DEFINE_HANDLER(CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLY, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); @@ -807,7 +814,6 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_REPOP_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRepopRequest); DEFINE_HANDLER(CMSG_REPORT_CLIENT_VARIABLES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REPORT_ENABLED_ADDONS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_REPORT_FROZEN_WHILE_LOADING_MAP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REPORT_PVP_PLAYER_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleReportPvPAFK); DEFINE_HANDLER(CMSG_REPORT_SERVER_LAG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -819,6 +825,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_COVENANT_CALLINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_CROWD_CONTROL_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_FORCED_REACTIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestForcedReactionsOpcode); DEFINE_HANDLER(CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_GUILD_PARTY_STATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestPartyState); @@ -858,6 +865,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleScenePlaybackCanceled); DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleScenePlaybackComplete); DEFINE_HANDLER(CMSG_SCENE_TRIGGER_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSceneTriggerEvent); + DEFINE_HANDLER(CMSG_SEAMLESS_TRANSFER_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SELF_RES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode); DEFINE_HANDLER(CMSG_SELL_ALL_JUNK_ITEMS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSellItemOpcode); @@ -868,6 +876,7 @@ void OpcodeTable::InitializeClientOpcodes() 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); DEFINE_HANDLER(CMSG_SERVER_TIME_OFFSET_REQUEST, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleServerTimeOffsetRequest); + DEFINE_HANDLER(CMSG_SETUP_WARBAND_GROUPS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_ACHIEVEMENTS_HIDDEN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_ACTION_BAR_TOGGLES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActionBarToggles); DEFINE_HANDLER(CMSG_SET_ACTION_BUTTON, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActionButtonOpcode); @@ -918,6 +927,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_SILENCE_PARTY_TALKER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SOCIAL_CONTRACT_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleSocialContractRequest); DEFINE_HANDLER(CMSG_SOCKET_GEMS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSocketGems); + DEFINE_HANDLER(CMSG_SORT_ACCOUNT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortAccountBankBags); DEFINE_HANDLER(CMSG_SORT_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortBags); DEFINE_HANDLER(CMSG_SORT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortBankBags); DEFINE_HANDLER(CMSG_SORT_REAGENT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortReagentBankBags); @@ -967,6 +977,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTrainerListOpcode); DEFINE_HANDLER(CMSG_TRAITS_COMMIT_CONFIG, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTraitsCommitConfig); DEFINE_HANDLER(CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems); DEFINE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetition); DEFINE_HANDLER(CMSG_TUTORIAL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialFlag); @@ -977,6 +988,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_UNLEARN_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_UNLOCK_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleVoidStorageUnlock); DEFINE_HANDLER(CMSG_UPDATE_AADC_STATUS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleChatUpdateAADCStatus); + DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData); DEFINE_HANDLER(CMSG_UPDATE_AREA_TRIGGER_VISUAL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_UPDATE_CLIENT_SETTINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -1017,6 +1029,8 @@ void OpcodeTable::InitializeServerOpcodes() ValidateAndSetServerOpcode(opcode, #opcode, status, con) DEFINE_SERVER_OPCODE_HANDLER(SMSG_ABORT_NEW_WORLD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_CONVERSION_STATE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_COSMETIC_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_DATA_TIMES, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1198,6 +1212,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAPTURE_POINT_REMOVED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAS_REFRESH_REMOTE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAIN_MISSILE_BOUNCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1227,6 +1242,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_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); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_NOTFOUND, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1294,6 +1310,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_CREATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_FULFILL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_NPC_REWARD_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_REJECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_RELEASE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_UPDATE_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1304,6 +1321,8 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CROSSED_INEBRIATION_THRESHOLD, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CURRENCY_TRANSFER_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CURRENCY_TRANSFER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CUSTOM_LOAD_SCREEN, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DAILY_QUESTS_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DAMAGE_CALC_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1343,7 +1362,6 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_END_LIGHTNING_STORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENSURE_WORLD_LOADED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENTER_ENCRYPTED_MODE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1368,6 +1386,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIMATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_OBJECT_RELINK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_RANDOM_TRANSMOG_TOAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_SPAWN_TRACKING_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FRIEND_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAIN_MAW_POWER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1537,6 +1556,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_SEND_RANK_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HARDCORE_DEATH_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HIGHEST_THREAT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_CONNECT, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1664,11 +1684,13 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_APPLY_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_COLLISION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_DOUBLE_JUMP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_FULL_SPEED_TURNING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_INERTIA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_COLLISION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_DOUBLE_JUMP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_FULL_SPEED_TURNING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_INERTIA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1957,6 +1979,8 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRUIT_A_FRIEND_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_COMPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_SPELL_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_REGIONWIDE_CHARACTER_MAIL_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_ITEM_PASSIVE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_SPELL_FROM_ACTION_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REPLACE_TROPHY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -2048,6 +2072,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_VEHICLE_REC_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHADOWLANDS_CAPACITANCE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHIPMENT_FACTION_UPDATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_DELVES_DISPLAY_UI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_QUEST_COMPLETION_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_TAXI_NODES, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -2115,6 +2140,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_CLEAR, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_REMOVE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIMERUNNING_SEASON_ENDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIME_ADJUSTMENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIME_SYNC_REQUEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TITLE_EARNED, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index ff4ecf3df72..e6dbc884121 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -48,35 +48,37 @@ constexpr uint16 UNKNOWN_OPCODE = 0xBADD; // special marker value for uninitia enum OpcodeClient : uint16 { - CMSG_ABANDON_NPE_RESPONSE = 0x33F2, + CMSG_ABANDON_NPE_RESPONSE = 0x33E9, CMSG_ACCEPT_GUILD_INVITE = 0x35FD, - CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x339D, - CMSG_ACCEPT_SOCIAL_CONTRACT = 0x3742, + CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x33AA, + CMSG_ACCEPT_SOCIAL_CONTRACT = 0x3744, CMSG_ACCEPT_TRADE = 0x315A, CMSG_ACCEPT_WARGAME_INVITE = 0x35E0, - CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3731, - CMSG_ACTIVATE_SOULBIND = 0x33E1, + CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x342B, + CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x342C, + CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3733, + CMSG_ACTIVATE_SOULBIND = 0x33D8, CMSG_ACTIVATE_TAXI = 0x34B3, CMSG_ADDON_LIST = 0x35D8, - CMSG_ADD_ACCOUNT_COSMETIC = 0x32B7, - CMSG_ADD_BATTLENET_FRIEND = 0x3657, - CMSG_ADD_FRIEND = 0x36CB, - CMSG_ADD_IGNORE = 0x36CF, - CMSG_ADD_TOY = 0x32B6, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3203, - CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E4, - CMSG_ADVENTURE_MAP_START_QUEST = 0x3370, - CMSG_ALTER_APPEARANCE = 0x3505, + CMSG_ADD_ACCOUNT_COSMETIC = 0x32C2, + CMSG_ADD_BATTLENET_FRIEND = 0x3658, + CMSG_ADD_FRIEND = 0x36CD, + CMSG_ADD_IGNORE = 0x36D1, + CMSG_ADD_TOY = 0x32C1, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3206, + CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DB, + CMSG_ADVENTURE_MAP_START_QUEST = 0x337D, + CMSG_ALTER_APPEARANCE = 0x3504, CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B8, CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B9, - CMSG_AREA_TRIGGER = 0x31D7, + CMSG_AREA_TRIGGER = 0x31D9, CMSG_ARTIFACT_ADD_POWER = 0x31AA, CMSG_ARTIFACT_SET_APPEARANCE = 0x31AC, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320F, - CMSG_ATTACK_STOP = 0x3268, - CMSG_ATTACK_SWING = 0x3267, - CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E1, - CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E2, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3212, + CMSG_ATTACK_STOP = 0x3270, + CMSG_ATTACK_SWING = 0x326F, + CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E3, + CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E4, CMSG_AUCTION_BROWSE_QUERY = 0x34D8, CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34E0, CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DF, @@ -90,114 +92,117 @@ enum OpcodeClient : uint16 CMSG_AUCTION_PLACE_BID = 0x34D7, CMSG_AUCTION_REMOVE_ITEM = 0x34D5, CMSG_AUCTION_REPLICATE_ITEMS = 0x34D6, - CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3733, + CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3735, CMSG_AUCTION_SELL_COMMODITY = 0x34E1, CMSG_AUCTION_SELL_ITEM = 0x34D4, - CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3732, + CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3734, CMSG_AUTH_CONTINUED_SESSION = 0x377A, CMSG_AUTH_SESSION = 0x3779, CMSG_AUTOBANK_ITEM = 0x3997, CMSG_AUTOBANK_REAGENT = 0x3999, CMSG_AUTOSTORE_BANK_ITEM = 0x3996, CMSG_AUTOSTORE_BANK_REAGENT = 0x3998, + CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3436, CMSG_AUTO_EQUIP_ITEM = 0x399A, CMSG_AUTO_EQUIP_ITEM_SLOT = 0x399F, CMSG_AUTO_GUILD_BANK_ITEM = 0x34BF, CMSG_AUTO_STORE_BAG_ITEM = 0x399B, CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C8, - CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3399, - CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x337B, - CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x339B, - CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x339A, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x33A6, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3388, + CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x33A8, + CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x33A7, CMSG_BANKER_ACTIVATE = 0x34BB, CMSG_BATTLEFIELD_LEAVE = 0x3173, CMSG_BATTLEFIELD_LIST = 0x317E, CMSG_BATTLEFIELD_PORT = 0x353A, - CMSG_BATTLEMASTER_HELLO = 0x32D4, - CMSG_BATTLEMASTER_JOIN = 0x3532, - CMSG_BATTLEMASTER_JOIN_ARENA = 0x3533, + CMSG_BATTLEMASTER_HELLO = 0x32DF, + CMSG_BATTLEMASTER_JOIN = 0x3531, + CMSG_BATTLEMASTER_JOIN_ARENA = 0x3532, CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3538, - CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3534, + CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3534, + CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3533, CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3535, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36CE, - CMSG_BATTLENET_REQUEST = 0x36F0, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36C8, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x370F, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C7, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36BE, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3736, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B6, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B7, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3708, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3704, - CMSG_BATTLE_PAY_START_PURCHASE = 0x36C6, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36ED, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D0, + CMSG_BATTLENET_REQUEST = 0x36F2, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CA, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3711, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C9, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C0, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3738, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B8, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B9, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370A, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3706, + CMSG_BATTLE_PAY_START_PURCHASE = 0x36C8, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36EF, CMSG_BATTLE_PET_CLEAR_FANFARE = 0x3126, - CMSG_BATTLE_PET_DELETE_PET = 0x3622, - CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3623, - CMSG_BATTLE_PET_MODIFY_NAME = 0x3625, - CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3621, - CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3620, - CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362A, - CMSG_BATTLE_PET_SET_FLAGS = 0x362D, - CMSG_BATTLE_PET_SUMMON = 0x3626, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E1, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E0, + CMSG_BATTLE_PET_DELETE_PET = 0x3623, + CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3624, + CMSG_BATTLE_PET_MODIFY_NAME = 0x3626, + CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3622, + CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3621, + CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362B, + CMSG_BATTLE_PET_SET_FLAGS = 0x362E, + CMSG_BATTLE_PET_SUMMON = 0x3627, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E3, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E2, CMSG_BEGIN_TRADE = 0x3157, CMSG_BINDER_ACTIVATE = 0x34BA, CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3542, CMSG_BLACK_MARKET_OPEN = 0x3540, CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3541, - CMSG_BONUS_ROLL = 0x339C, - CMSG_BUG_REPORT = 0x3682, + CMSG_BONUS_ROLL = 0x33A9, + CMSG_BUG_REPORT = 0x3683, CMSG_BUSY_TRADE = 0x3158, + CMSG_BUY_ACCOUNT_BANK_TAB = 0x3597, CMSG_BUY_BACK_ITEM = 0x34AC, CMSG_BUY_BANK_SLOT = 0x34BC, CMSG_BUY_ITEM = 0x34AB, CMSG_BUY_REAGENT_BANK = 0x34BD, - CMSG_CAGE_BATTLE_PET = 0x31F3, - CMSG_CALENDAR_ADD_EVENT = 0x367A, - CMSG_CALENDAR_COMMUNITY_INVITE = 0x366E, - CMSG_CALENDAR_COMPLAIN = 0x3676, - CMSG_CALENDAR_COPY_EVENT = 0x3675, - CMSG_CALENDAR_EVENT_SIGN_UP = 0x3678, - CMSG_CALENDAR_GET = 0x366C, - CMSG_CALENDAR_GET_EVENT = 0x366D, - CMSG_CALENDAR_GET_NUM_PENDING = 0x3677, - CMSG_CALENDAR_INVITE = 0x366F, - CMSG_CALENDAR_MODERATOR_STATUS = 0x3673, - CMSG_CALENDAR_REMOVE_EVENT = 0x3674, - CMSG_CALENDAR_REMOVE_INVITE = 0x3670, - CMSG_CALENDAR_RSVP = 0x3671, - CMSG_CALENDAR_STATUS = 0x3672, - CMSG_CALENDAR_UPDATE_EVENT = 0x367B, + CMSG_CAGE_BATTLE_PET = 0x31F6, + CMSG_CALENDAR_ADD_EVENT = 0x367B, + CMSG_CALENDAR_COMMUNITY_INVITE = 0x366F, + CMSG_CALENDAR_COMPLAIN = 0x3677, + CMSG_CALENDAR_COPY_EVENT = 0x3676, + CMSG_CALENDAR_EVENT_SIGN_UP = 0x3679, + CMSG_CALENDAR_GET = 0x366D, + CMSG_CALENDAR_GET_EVENT = 0x366E, + CMSG_CALENDAR_GET_NUM_PENDING = 0x3678, + CMSG_CALENDAR_INVITE = 0x3670, + CMSG_CALENDAR_MODERATOR_STATUS = 0x3674, + CMSG_CALENDAR_REMOVE_EVENT = 0x3675, + CMSG_CALENDAR_REMOVE_INVITE = 0x3671, + CMSG_CALENDAR_RSVP = 0x3672, + CMSG_CALENDAR_STATUS = 0x3673, + CMSG_CALENDAR_UPDATE_EVENT = 0x367C, CMSG_CANCEL_AURA = 0x31AE, - CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F7, - CMSG_CANCEL_CAST = 0x32BD, - CMSG_CANCEL_CHANNELLING = 0x3280, - CMSG_CANCEL_GROWTH_AURA = 0x3288, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321B, + CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F6, + CMSG_CANCEL_CAST = 0x32C8, + CMSG_CANCEL_CHANNELLING = 0x3289, + CMSG_CANCEL_GROWTH_AURA = 0x3291, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321E, CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AD, - CMSG_CANCEL_MOUNT_AURA = 0x329B, + CMSG_CANCEL_MOUNT_AURA = 0x32A4, CMSG_CANCEL_QUEUED_SPELL = 0x317F, - CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3502, + CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3501, CMSG_CANCEL_TRADE = 0x315C, - CMSG_CAN_DUEL = 0x365F, - CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3703, - CMSG_CAST_SPELL = 0x32BA, + CMSG_CAN_DUEL = 0x3660, + CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3705, + CMSG_CAST_SPELL = 0x32C5, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x305E, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x3354, - CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3355, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3335, - CMSG_CHANGE_REALM_TICKET = 0x36F5, - CMSG_CHANGE_SUB_GROUP = 0x3649, - CMSG_CHARACTER_CHECK_UPGRADE = 0x36C1, - CMSG_CHARACTER_RENAME_REQUEST = 0x36BC, - CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36BF, - CMSG_CHARACTER_UPGRADE_START = 0x36C0, - CMSG_CHAR_CUSTOMIZE = 0x3689, - CMSG_CHAR_DELETE = 0x3699, - CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x368F, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x3361, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3362, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3342, + CMSG_CHANGE_REALM_TICKET = 0x36F7, + CMSG_CHANGE_SUB_GROUP = 0x364A, + CMSG_CHARACTER_CHECK_UPGRADE = 0x36C3, + CMSG_CHARACTER_RENAME_REQUEST = 0x36BE, + CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C1, + CMSG_CHARACTER_UPGRADE_START = 0x36C2, + CMSG_CHAR_CUSTOMIZE = 0x368A, + CMSG_CHAR_DELETE = 0x369B, + CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3690, CMSG_CHAT_ADDON_MESSAGE = 0x3802, CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x3803, CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x380A, @@ -237,298 +242,301 @@ enum OpcodeClient : uint16 CMSG_CHAT_REPORT_FILTERED = 0x37E0, CMSG_CHAT_REPORT_IGNORED = 0x37DF, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37E2, - CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3642, - CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3259, - CMSG_CHOICE_RESPONSE = 0x32C2, - CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33E0, - CMSG_CLAIM_WEEKLY_REWARD = 0x33BC, - CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x341B, - CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3213, - CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x341D, - CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x341A, - CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3419, - CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x341E, - CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3212, + CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3643, + CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3261, + CMSG_CHOICE_RESPONSE = 0x32CD, + CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D7, + CMSG_CLAIM_WEEKLY_REWARD = 0x33B4, + CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3410, + CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3216, + CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3412, + CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x340F, + CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x340E, + CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3413, + CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3215, CMSG_CLEAR_NEW_APPEARANCE = 0x3129, CMSG_CLEAR_RAID_MARKER = 0x31A6, CMSG_CLEAR_TRADE_ITEM = 0x315E, CMSG_CLIENT_PORT_GRAVEYARD = 0x353C, CMSG_CLOSE_INTERACTION = 0x349A, - CMSG_CLOSE_QUEST_CHOICE = 0x32C3, - CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E8, - CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x341F, - CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371A, - CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3718, - CMSG_CLUB_FINDER_POST = 0x3715, - CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371C, - CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3716, - CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3717, - CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371B, - CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371D, - CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x3719, - CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x3739, - CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F2, - CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3630, + CMSG_CLOSE_QUEST_CHOICE = 0x32CE, + CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33DF, + CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3414, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371C, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371A, + CMSG_CLUB_FINDER_POST = 0x3717, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371E, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3718, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3719, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371D, + CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371F, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371B, + CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x373B, + CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F4, + CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3631, CMSG_COMMENTATOR_ENABLE = 0x35F0, CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4, CMSG_COMMENTATOR_EXIT_INSTANCE = 0x35F5, CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F1, CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3, CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2, - CMSG_COMMENTATOR_SPECTATE = 0x3737, + CMSG_COMMENTATOR_SPECTATE = 0x3739, CMSG_COMMENTATOR_START_WARGAME = 0x35EF, - CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36DF, - CMSG_COMMERCE_TOKEN_GET_LOG = 0x36E9, - CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E0, - CMSG_COMPLAINT = 0x3669, + CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E1, + CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EB, + CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E2, + CMSG_COMPLAINT = 0x366A, CMSG_COMPLETE_CINEMATIC = 0x355A, - CMSG_COMPLETE_MOVIE = 0x34ED, + CMSG_COMPLETE_MOVIE = 0x34EC, CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AB, - CMSG_CONFIRM_RESPEC_WIPE = 0x3215, + CMSG_CONFIRM_RESPEC_WIPE = 0x3218, CMSG_CONNECT_TO_FAILED = 0x35D4, - CMSG_CONSUMABLE_TOKEN_BUY = 0x36E4, - CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E5, - CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E3, - CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E7, - CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36E8, - CMSG_CONTENT_TRACKING_START_TRACKING = 0x342F, - CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3430, + CMSG_CONSUMABLE_TOKEN_BUY = 0x36E6, + CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E7, + CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E5, + CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E9, + CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EA, + CMSG_CONTENT_TRACKING_START_TRACKING = 0x3424, + CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3425, CMSG_CONTRIBUTION_CONTRIBUTE = 0x356F, CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3570, CMSG_CONVERSATION_CINEMATIC_READY = 0x355C, CMSG_CONVERSATION_LINE_STARTED = 0x355B, - CMSG_CONVERT_RAID = 0x364B, + CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3435, + CMSG_CONVERT_RAID = 0x364C, CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3583, - CMSG_CRAFTING_ORDER_CANCEL = 0x358E, - CMSG_CRAFTING_ORDER_CLAIM = 0x358B, + CMSG_CRAFTING_ORDER_CANCEL = 0x358F, + CMSG_CRAFTING_ORDER_CLAIM = 0x358C, CMSG_CRAFTING_ORDER_CREATE = 0x3588, - CMSG_CRAFTING_ORDER_FULFILL = 0x358D, + CMSG_CRAFTING_ORDER_FULFILL = 0x358E, CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x358A, CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3589, - CMSG_CRAFTING_ORDER_REJECT = 0x358F, - CMSG_CRAFTING_ORDER_RELEASE = 0x358C, - CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x3590, - CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x3591, - CMSG_CREATE_CHARACTER = 0x3641, - CMSG_CREATE_SHIPMENT = 0x3320, + CMSG_CRAFTING_ORDER_REJECT = 0x3590, + CMSG_CRAFTING_ORDER_RELEASE = 0x358D, + CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x3591, + CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x3592, + CMSG_CREATE_CHARACTER = 0x3642, + CMSG_CREATE_SHIPMENT = 0x332B, CMSG_DB_QUERY_BULK = 0x35E4, - CMSG_DECLINE_GUILD_INVITES = 0x352F, + CMSG_DECLINE_GUILD_INVITES = 0x352E, CMSG_DECLINE_PETITION = 0x3549, - CMSG_DELETE_EQUIPMENT_SET = 0x351B, - CMSG_DEL_FRIEND = 0x36CC, - CMSG_DEL_IGNORE = 0x36D0, - CMSG_DEPOSIT_REAGENT_BANK = 0x335E, - CMSG_DESTROY_ITEM = 0x32B0, - CMSG_DF_BOOT_PLAYER_VOTE = 0x3617, - CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3609, - CMSG_DF_GET_JOIN_STATUS = 0x3615, - CMSG_DF_GET_SYSTEM_INFO = 0x3614, - CMSG_DF_JOIN = 0x360A, - CMSG_DF_LEAVE = 0x3613, - CMSG_DF_PROPOSAL_RESPONSE = 0x3608, - CMSG_DF_READY_CHECK_RESPONSE = 0x361B, - CMSG_DF_SET_ROLES = 0x3616, - CMSG_DF_TELEPORT = 0x3618, - CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A41, - CMSG_DISMISS_CRITTER = 0x3509, - CMSG_DO_COUNTDOWN = 0x3714, - CMSG_DO_MASTER_LOOT_ROLL = 0x321A, - CMSG_DO_READY_CHECK = 0x3631, - CMSG_DUEL_RESPONSE = 0x34F2, - CMSG_EJECT_PASSENGER = 0x324E, + CMSG_DELETE_EQUIPMENT_SET = 0x351A, + CMSG_DELVE_TELEPORT_OUT = 0x359E, + CMSG_DEL_FRIEND = 0x36CE, + CMSG_DEL_IGNORE = 0x36D2, + CMSG_DEPOSIT_REAGENT_BANK = 0x336B, + CMSG_DESTROY_ITEM = 0x32BB, + CMSG_DF_BOOT_PLAYER_VOTE = 0x3618, + CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x360A, + CMSG_DF_GET_JOIN_STATUS = 0x3616, + CMSG_DF_GET_SYSTEM_INFO = 0x3615, + CMSG_DF_JOIN = 0x360B, + CMSG_DF_LEAVE = 0x3614, + CMSG_DF_PROPOSAL_RESPONSE = 0x3609, + CMSG_DF_READY_CHECK_RESPONSE = 0x361C, + CMSG_DF_SET_ROLES = 0x3617, + CMSG_DF_TELEPORT = 0x3619, + CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A42, + CMSG_DISMISS_CRITTER = 0x3508, + CMSG_DO_COUNTDOWN = 0x3716, + CMSG_DO_MASTER_LOOT_ROLL = 0x321D, + CMSG_DO_READY_CHECK = 0x3632, + CMSG_DUEL_RESPONSE = 0x34F1, + CMSG_EJECT_PASSENGER = 0x3256, CMSG_EMOTE = 0x3556, CMSG_ENABLE_NAGLE = 0x377F, CMSG_ENABLE_TAXI_NODE = 0x34B1, - CMSG_ENGINE_SURVEY = 0x36DE, + CMSG_ENGINE_SURVEY = 0x36E0, CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x377B, CMSG_ENUM_CHARACTERS = 0x35E8, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36D8, - CMSG_FAR_SIGHT = 0x34F8, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DA, + CMSG_FAR_SIGHT = 0x34F7, CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B2, CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B1, - CMSG_GAME_OBJ_REPORT_USE = 0x34FF, - CMSG_GAME_OBJ_USE = 0x34FE, - CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x331B, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3301, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32EE, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3350, - CMSG_GARRISON_COMPLETE_MISSION = 0x3342, - CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x331C, - CMSG_GARRISON_GENERATE_RECRUITS = 0x3304, - CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3313, - CMSG_GARRISON_GET_MAP_DATA = 0x331A, - CMSG_GARRISON_GET_MISSION_REWARD = 0x3374, - CMSG_GARRISON_LEARN_TALENT = 0x330F, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3344, - CMSG_GARRISON_PURCHASE_BUILDING = 0x32EA, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3306, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x3339, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3302, - CMSG_GARRISON_RENAME_FOLLOWER = 0x3303, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32E9, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x331E, - CMSG_GARRISON_RESEARCH_TALENT = 0x3307, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32EB, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32FF, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F7, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3305, - CMSG_GARRISON_SOCKET_TALENT = 0x33F5, - CMSG_GARRISON_START_MISSION = 0x3341, - CMSG_GARRISON_SWAP_BUILDINGS = 0x32EF, + CMSG_GAME_OBJ_REPORT_USE = 0x34FE, + CMSG_GAME_OBJ_USE = 0x34FD, + CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3326, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x330C, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32F9, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x335D, + CMSG_GARRISON_COMPLETE_MISSION = 0x334F, + CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3327, + CMSG_GARRISON_GENERATE_RECRUITS = 0x330F, + CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x331E, + CMSG_GARRISON_GET_MAP_DATA = 0x3325, + CMSG_GARRISON_GET_MISSION_REWARD = 0x3381, + CMSG_GARRISON_LEARN_TALENT = 0x331A, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3351, + CMSG_GARRISON_PURCHASE_BUILDING = 0x32F5, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3311, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x3346, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x330D, + CMSG_GARRISON_RENAME_FOLLOWER = 0x330E, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32F4, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3329, + CMSG_GARRISON_RESEARCH_TALENT = 0x3312, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32F6, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x330A, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3302, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3310, + CMSG_GARRISON_SOCKET_TALENT = 0x33EC, + CMSG_GARRISON_START_MISSION = 0x334E, + CMSG_GARRISON_SWAP_BUILDINGS = 0x32FA, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7, - CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B1, - CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3730, - CMSG_GET_GARRISON_INFO = 0x32E4, + CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B3, + CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3732, + CMSG_GET_GARRISON_INFO = 0x32EF, CMSG_GET_ITEM_PURCHASE_DATA = 0x3544, - CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x331F, - CMSG_GET_MIRROR_IMAGE_DATA = 0x32B4, + CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x332A, + CMSG_GET_MIRROR_IMAGE_DATA = 0x32BF, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE, - CMSG_GET_RAF_ACCOUNT_INFO = 0x371E, - CMSG_GET_REMAINING_GAME_TIME = 0x36E6, - CMSG_GET_TROPHY_LIST = 0x3332, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DA, - CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36EB, - CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EC, - CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368D, - CMSG_GM_TICKET_GET_CASE_STATUS = 0x368C, - CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368B, + CMSG_GET_RAF_ACCOUNT_INFO = 0x3720, + CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x375E, + CMSG_GET_REMAINING_GAME_TIME = 0x36E8, + CMSG_GET_TROPHY_LIST = 0x333F, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DC, + CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36ED, + CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EE, + CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368E, + CMSG_GM_TICKET_GET_CASE_STATUS = 0x368D, + CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368C, CMSG_GOSSIP_REFRESH_OPTIONS = 0x3582, CMSG_GOSSIP_SELECT_OPTION = 0x349B, - CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x5036, - CMSG_GUILD_ADD_RANK = 0x501B, + CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x5034, + CMSG_GUILD_ADD_RANK = 0x5019, CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x5016, - CMSG_GUILD_AUTO_DECLINE_INVITATION = 0x5018, CMSG_GUILD_BANK_ACTIVATE = 0x34BE, CMSG_GUILD_BANK_BUY_TAB = 0x34CC, CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34CE, - CMSG_GUILD_BANK_LOG_QUERY = 0x502F, + CMSG_GUILD_BANK_LOG_QUERY = 0x502D, CMSG_GUILD_BANK_QUERY_TAB = 0x34CB, - CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x5030, - CMSG_GUILD_BANK_SET_TAB_TEXT = 0x5033, - CMSG_GUILD_BANK_TEXT_QUERY = 0x5034, + CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x502E, + CMSG_GUILD_BANK_SET_TAB_TEXT = 0x5031, + CMSG_GUILD_BANK_TEXT_QUERY = 0x5032, CMSG_GUILD_BANK_UPDATE_TAB = 0x34CD, CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34CF, - CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x502D, - CMSG_GUILD_CHANGE_NAME_REQUEST = 0x502E, - CMSG_GUILD_DECLINE_INVITATION = 0x5017, - CMSG_GUILD_DELETE = 0x501F, - CMSG_GUILD_DELETE_RANK = 0x501C, + CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x502B, + CMSG_GUILD_CHANGE_NAME_REQUEST = 0x502C, + CMSG_GUILD_DECLINE_INVITATION = 0x35FE, + CMSG_GUILD_DELETE = 0x501D, + CMSG_GUILD_DELETE_RANK = 0x501A, CMSG_GUILD_DEMOTE_MEMBER = 0x5015, - CMSG_GUILD_EVENT_LOG_QUERY = 0x5032, - CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x5028, - CMSG_GUILD_GET_RANKS = 0x5024, - CMSG_GUILD_GET_ROSTER = 0x502A, - CMSG_GUILD_INVITE_BY_NAME = 0x3607, - CMSG_GUILD_LEAVE = 0x5019, - CMSG_GUILD_NEWS_UPDATE_STICKY = 0x5025, - CMSG_GUILD_OFFICER_REMOVE_MEMBER = 0x501A, - CMSG_GUILD_PERMISSIONS_QUERY = 0x5031, + CMSG_GUILD_EVENT_LOG_QUERY = 0x5030, + CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x5026, + CMSG_GUILD_GET_RANKS = 0x5022, + CMSG_GUILD_GET_ROSTER = 0x5028, + CMSG_GUILD_INVITE_BY_NAME = 0x3608, + CMSG_GUILD_LEAVE = 0x5017, + CMSG_GUILD_NEWS_UPDATE_STICKY = 0x5023, + CMSG_GUILD_OFFICER_REMOVE_MEMBER = 0x5018, + CMSG_GUILD_PERMISSIONS_QUERY = 0x502F, CMSG_GUILD_PROMOTE_MEMBER = 0x5014, - CMSG_GUILD_QUERY_MEMBERS_FOR_RECIPE = 0x5022, - CMSG_GUILD_QUERY_MEMBER_RECIPES = 0x5020, - CMSG_GUILD_QUERY_NEWS = 0x5023, - CMSG_GUILD_QUERY_RECIPES = 0x5021, - CMSG_GUILD_REPLACE_GUILD_MASTER = 0x5035, - CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x5026, - CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x5027, - CMSG_GUILD_SET_GUILD_MASTER = 0x36C3, - CMSG_GUILD_SET_MEMBER_NOTE = 0x5029, - CMSG_GUILD_SET_RANK_PERMISSIONS = 0x501E, - CMSG_GUILD_SHIFT_RANK = 0x501D, - CMSG_GUILD_UPDATE_INFO_TEXT = 0x502C, - CMSG_GUILD_UPDATE_MOTD_TEXT = 0x502B, - CMSG_HEARTH_AND_RESURRECT = 0x3517, - CMSG_HIDE_QUEST_CHOICE = 0x32C4, + CMSG_GUILD_QUERY_MEMBERS_FOR_RECIPE = 0x5020, + CMSG_GUILD_QUERY_MEMBER_RECIPES = 0x501E, + CMSG_GUILD_QUERY_NEWS = 0x5021, + CMSG_GUILD_QUERY_RECIPES = 0x501F, + CMSG_GUILD_REPLACE_GUILD_MASTER = 0x5033, + CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x5024, + CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x5025, + CMSG_GUILD_SET_GUILD_MASTER = 0x36C5, + CMSG_GUILD_SET_MEMBER_NOTE = 0x5027, + CMSG_GUILD_SET_RANK_PERMISSIONS = 0x501C, + CMSG_GUILD_SHIFT_RANK = 0x501B, + CMSG_GUILD_UPDATE_INFO_TEXT = 0x502A, + CMSG_GUILD_UPDATE_MOTD_TEXT = 0x5029, + CMSG_HEARTH_AND_RESURRECT = 0x3516, + CMSG_HIDE_QUEST_CHOICE = 0x32CF, CMSG_HOTFIX_REQUEST = 0x35E5, CMSG_IGNORE_TRADE = 0x3159, CMSG_INITIATE_ROLE_POLL = 0x35DA, CMSG_INITIATE_TRADE = 0x3156, CMSG_INSPECT = 0x353E, - CMSG_INSTANCE_LOCK_RESPONSE = 0x351C, - CMSG_ISLAND_QUEUE = 0x33B8, + CMSG_INSTANCE_LOCK_RESPONSE = 0x351B, + CMSG_ISLAND_QUEUE = 0x33B0, CMSG_ITEM_PURCHASE_REFUND = 0x3545, - CMSG_ITEM_TEXT_QUERY = 0x3351, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DE, + CMSG_ITEM_TEXT_QUERY = 0x335E, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x31E0, CMSG_JOIN_RATED_BATTLEGROUND = 0x3179, - CMSG_KEEP_ALIVE = 0x367C, - CMSG_KEYBOUND_OVERRIDE = 0x3230, + CMSG_KEEP_ALIVE = 0x367D, + CMSG_KEYBOUND_OVERRIDE = 0x3233, CMSG_LATENCY_REPORT = 0x3785, CMSG_LEARN_PVP_TALENTS = 0x356E, CMSG_LEARN_TALENTS = 0x356C, - CMSG_LEAVE_GROUP = 0x3646, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DF, - CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360E, - CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360F, - CMSG_LFG_LIST_DECLINE_APPLICANT = 0x3610, - CMSG_LFG_LIST_GET_STATUS = 0x360C, - CMSG_LFG_LIST_INVITE_APPLICANT = 0x3611, - CMSG_LFG_LIST_INVITE_RESPONSE = 0x3612, - CMSG_LFG_LIST_JOIN = 0x3397, - CMSG_LFG_LIST_LEAVE = 0x360B, - CMSG_LFG_LIST_SEARCH = 0x360D, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x3398, + CMSG_LEAVE_GROUP = 0x3647, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E1, + CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360F, + CMSG_LFG_LIST_CANCEL_APPLICATION = 0x3610, + CMSG_LFG_LIST_DECLINE_APPLICANT = 0x3611, + CMSG_LFG_LIST_GET_STATUS = 0x360D, + CMSG_LFG_LIST_INVITE_APPLICANT = 0x3612, + CMSG_LFG_LIST_INVITE_RESPONSE = 0x3613, + CMSG_LFG_LIST_JOIN = 0x33A4, + CMSG_LFG_LIST_LEAVE = 0x360C, + CMSG_LFG_LIST_SEARCH = 0x360E, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x33A5, CMSG_LIST_INVENTORY = 0x34A8, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B4, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B3, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B2, - CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B5, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B6, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B5, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B4, + CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B7, CMSG_LOADING_SCREEN_NOTIFY = 0x35F8, - CMSG_LOAD_SELECTED_TROPHY = 0x3333, - CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x373B, - CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x3749, - CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x373E, - CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x373A, - CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x373D, - CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x373C, - CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x373F, - CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x3740, - CMSG_LOGOUT_CANCEL = 0x34E8, - CMSG_LOGOUT_INSTANT = 0x34E9, - CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3595, + CMSG_LOAD_SELECTED_TROPHY = 0x3340, + CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x373D, + CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x374B, + CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x3740, + CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x373C, + CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x373F, + CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x373E, + CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x3741, + CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x3742, + CMSG_LOGOUT_CANCEL = 0x34E7, + CMSG_LOGOUT_INSTANT = 0x34E8, + CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3596, CMSG_LOGOUT_REQUEST = 0x34E6, CMSG_LOG_DISCONNECT = 0x377D, CMSG_LOG_STREAMING_ERROR = 0x3781, - CMSG_LOOT_ITEM = 0x3218, - CMSG_LOOT_MONEY = 0x3217, - CMSG_LOOT_RELEASE = 0x321C, - CMSG_LOOT_ROLL = 0x321D, - CMSG_LOOT_UNIT = 0x3216, - CMSG_LOW_LEVEL_RAID1 = 0x369D, - CMSG_LOW_LEVEL_RAID2 = 0x3523, + CMSG_LOOT_ITEM = 0x321B, + CMSG_LOOT_MONEY = 0x321A, + CMSG_LOOT_RELEASE = 0x321F, + CMSG_LOOT_ROLL = 0x3220, + CMSG_LOOT_UNIT = 0x3219, + CMSG_LOW_LEVEL_RAID1 = 0x369F, + CMSG_LOW_LEVEL_RAID2 = 0x3522, CMSG_MAIL_CREATE_TEXT_ITEM = 0x3550, - CMSG_MAIL_DELETE = 0x3232, + CMSG_MAIL_DELETE = 0x3235, CMSG_MAIL_GET_LIST = 0x354B, CMSG_MAIL_MARK_AS_READ = 0x354F, - CMSG_MAIL_RETURN_TO_SENDER = 0x3652, + CMSG_MAIL_RETURN_TO_SENDER = 0x3653, CMSG_MAIL_TAKE_ITEM = 0x354D, CMSG_MAIL_TAKE_MONEY = 0x354C, - CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3234, - CMSG_MASTER_LOOT_ITEM = 0x3219, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3237, + CMSG_MASTER_LOOT_ITEM = 0x321C, CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C9, CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C6, CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C4, - CMSG_MINIMAP_PING = 0x3648, + CMSG_MINIMAP_PING = 0x3649, CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A, CMSG_MOUNT_CLEAR_FANFARE = 0x3127, - CMSG_MOUNT_SET_FAVORITE = 0x362F, - CMSG_MOUNT_SPECIAL_ANIM = 0x329C, - CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A50, - CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4E, + CMSG_MOUNT_SET_FAVORITE = 0x3630, + CMSG_MOUNT_SPECIAL_ANIM = 0x32A5, + CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A51, + CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4F, CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A15, - CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2F, - CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A34, - CMSG_MOVE_COLLISION_DISABLE_ACK = 0x3A39, - CMSG_MOVE_COLLISION_ENABLE_ACK = 0x3A3A, - CMSG_MOVE_DISMISS_VEHICLE = 0x3A33, + CMSG_MOVE_CHANGE_TRANSPORT = 0x3A30, + CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A35, + CMSG_MOVE_COLLISION_DISABLE_ACK = 0x3A3A, + CMSG_MOVE_COLLISION_ENABLE_ACK = 0x3A3B, + CMSG_MOVE_DISMISS_VEHICLE = 0x3A34, CMSG_MOVE_DOUBLE_JUMP = 0x39EB, CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1E, + CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK = 0x3A65, CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A24, CMSG_MOVE_FALL_LAND = 0x39FB, CMSG_MOVE_FALL_RESET = 0x3A19, CMSG_MOVE_FEATHER_FALL_ACK = 0x3A1C, - CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2E, - CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2D, - CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A32, + CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2F, + CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2E, + CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A33, CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0E, CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A0C, CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A0B, @@ -537,52 +545,51 @@ enum OpcodeClient : uint16 CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A23, CMSG_MOVE_FORCE_UNROOT_ACK = 0x3A0F, CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A21, - CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A35, - CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A36, + CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A36, + CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A37, CMSG_MOVE_GUILD_BANK_ITEM = 0x34C3, CMSG_MOVE_HEARTBEAT = 0x3A10, CMSG_MOVE_HOVER_ACK = 0x3A13, - CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3A37, - CMSG_MOVE_INERTIA_ENABLE_ACK = 0x3A38, - CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3A46, + CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3A38, + CMSG_MOVE_INERTIA_ENABLE_ACK = 0x3A39, + CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3A47, CMSG_MOVE_JUMP = 0x39EA, CMSG_MOVE_KNOCK_BACK_ACK = 0x3A12, - CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3A4F, + CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3A50, CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3A17, CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3A16, - CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE = 0x3A44, - CMSG_MOVE_SET_ADV_FLY = 0x3A52, - CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x3A58, - CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x3A53, - CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x3A59, - CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x3A56, - CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x3A57, - CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x3A60, - CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x3A55, - CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x3A54, - CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x3A5E, - CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x3A5A, - CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x3A5B, - CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x3A5D, - CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x3A5C, - CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x3A51, + CMSG_MOVE_SET_ADV_FLY = 0x3A53, + CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x3A59, + CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x3A54, + CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x3A5A, + CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x3A57, + CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x3A58, + CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x3A61, + CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x3A56, + CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x3A55, + CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x3A5F, + CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x3A5B, + CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x3A5C, + CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x3A5E, + CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x3A5D, + CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x3A52, CMSG_MOVE_SET_CAN_FLY_ACK = 0x3A27, CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A25, - CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A3B, + CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A3C, CMSG_MOVE_SET_FACING = 0x3A09, - CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3A5F, - CMSG_MOVE_SET_FLY = 0x3A28, + CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3A60, + CMSG_MOVE_SET_FLY = 0x3A29, CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A26, - CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A42, + CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A43, CMSG_MOVE_SET_PITCH = 0x3A0A, CMSG_MOVE_SET_RUN_MODE = 0x39F2, CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x3A06, CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A14, CMSG_MOVE_SET_WALK_MODE = 0x39F3, CMSG_MOVE_SPLINE_DONE = 0x3A18, - CMSG_MOVE_START_ASCEND = 0x3A29, + CMSG_MOVE_START_ASCEND = 0x3A2A, CMSG_MOVE_START_BACKWARD = 0x39E5, - CMSG_MOVE_START_DESCEND = 0x3A30, + CMSG_MOVE_START_DESCEND = 0x3A31, CMSG_MOVE_START_FORWARD = 0x39E4, CMSG_MOVE_START_PITCH_DOWN = 0x39F0, CMSG_MOVE_START_PITCH_UP = 0x39EF, @@ -592,7 +599,7 @@ enum OpcodeClient : uint16 CMSG_MOVE_START_TURN_LEFT = 0x39EC, CMSG_MOVE_START_TURN_RIGHT = 0x39ED, CMSG_MOVE_STOP = 0x39E6, - CMSG_MOVE_STOP_ASCEND = 0x3A2A, + CMSG_MOVE_STOP_ASCEND = 0x3A2B, CMSG_MOVE_STOP_PITCH = 0x39F1, CMSG_MOVE_STOP_STRAFE = 0x39E9, CMSG_MOVE_STOP_SWIM = 0x39FD, @@ -602,48 +609,48 @@ enum OpcodeClient : uint16 CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A1A, CMSG_MOVE_WATER_WALK_ACK = 0x3A1D, CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x305D, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D4, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D6, CMSG_NEXT_CINEMATIC_CAMERA = 0x3559, CMSG_OBJECT_UPDATE_FAILED = 0x3180, CMSG_OBJECT_UPDATE_RESCUED = 0x3181, - CMSG_OFFER_PETITION = 0x33DF, + CMSG_OFFER_PETITION = 0x33D6, CMSG_OPENING_CINEMATIC = 0x3558, - CMSG_OPEN_ITEM = 0x3352, - CMSG_OPEN_MISSION_NPC = 0x3315, - CMSG_OPEN_SHIPMENT_NPC = 0x331D, - CMSG_OPEN_TRADESKILL_NPC = 0x3328, - CMSG_OPT_OUT_OF_LOOT = 0x3506, - CMSG_OVERRIDE_SCREEN_FLASH = 0x3530, - CMSG_PARTY_INVITE = 0x3603, - CMSG_PARTY_INVITE_RESPONSE = 0x3605, - CMSG_PARTY_UNINVITE = 0x3644, - CMSG_PERFORM_ITEM_INTERACTION = 0x323C, - CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3408, + CMSG_OPEN_ITEM = 0x335F, + CMSG_OPEN_MISSION_NPC = 0x3320, + CMSG_OPEN_SHIPMENT_NPC = 0x3328, + CMSG_OPEN_TRADESKILL_NPC = 0x3333, + CMSG_OPT_OUT_OF_LOOT = 0x3505, + CMSG_OVERRIDE_SCREEN_FLASH = 0x352F, + CMSG_PARTY_INVITE = 0x3604, + CMSG_PARTY_INVITE_RESPONSE = 0x3606, + CMSG_PARTY_UNINVITE = 0x3645, + CMSG_PERFORM_ITEM_INTERACTION = 0x323F, + CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x33FE, CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x3135, - CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x340A, - CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x340B, - CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x340C, - CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3409, + CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3400, + CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3401, + CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3402, + CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x33FF, CMSG_PETITION_BUY = 0x34D1, - CMSG_PETITION_RENAME_GUILD = 0x36C4, + CMSG_PETITION_RENAME_GUILD = 0x36C6, CMSG_PETITION_SHOW_LIST = 0x34D0, CMSG_PETITION_SHOW_SIGNATURES = 0x34D2, CMSG_PET_ABANDON = 0x3493, CMSG_PET_ABANDON_BY_NUMBER = 0x3494, CMSG_PET_ACTION = 0x3491, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E3, - CMSG_PET_BATTLE_INPUT = 0x363E, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3231, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E2, - CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x363F, - CMSG_PET_BATTLE_REQUEST_PVP = 0x31DC, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DD, - CMSG_PET_BATTLE_REQUEST_WILD = 0x31DA, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E4, - CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DB, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E5, + CMSG_PET_BATTLE_INPUT = 0x363F, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3234, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E4, + CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3640, + CMSG_PET_BATTLE_REQUEST_PVP = 0x31DE, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DF, + CMSG_PET_BATTLE_REQUEST_WILD = 0x31DC, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E6, + CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DD, CMSG_PET_CANCEL_AURA = 0x3495, - CMSG_PET_CAST_SPELL = 0x32B9, - CMSG_PET_RENAME = 0x3681, + CMSG_PET_CAST_SPELL = 0x32C4, + CMSG_PET_RENAME = 0x3682, CMSG_PET_SET_ACTION = 0x3490, CMSG_PET_SPELL_AUTOCAST = 0x3496, CMSG_PET_STOP_ATTACK = 0x3492, @@ -651,30 +658,30 @@ enum OpcodeClient : uint16 CMSG_PLAYER_LOGIN = 0x35EA, CMSG_PUSH_QUEST_TO_PARTY = 0x34A6, CMSG_PVP_LOG_DATA = 0x317C, - CMSG_QUERY_BATTLE_PET_NAME = 0x328F, - CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365D, - CMSG_QUERY_CORPSE_TRANSPORT = 0x365E, + CMSG_QUERY_BATTLE_PET_NAME = 0x3298, + CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365E, + CMSG_QUERY_CORPSE_TRANSPORT = 0x365F, CMSG_QUERY_COUNTDOWN_TIMER = 0x31A9, - CMSG_QUERY_CREATURE = 0x3289, - CMSG_QUERY_GAME_OBJECT = 0x328A, - CMSG_QUERY_GARRISON_PET_NAME = 0x3290, - CMSG_QUERY_GUILD_INFO = 0x3687, - CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3510, + CMSG_QUERY_CREATURE = 0x3292, + CMSG_QUERY_GAME_OBJECT = 0x3293, + CMSG_QUERY_GARRISON_PET_NAME = 0x3299, + CMSG_QUERY_GUILD_INFO = 0x3688, + CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350F, CMSG_QUERY_NEXT_MAIL_TIME = 0x354E, - CMSG_QUERY_NPC_TEXT = 0x328B, - CMSG_QUERY_PAGE_TEXT = 0x328D, - CMSG_QUERY_PETITION = 0x3291, - CMSG_QUERY_PET_NAME = 0x328E, + CMSG_QUERY_NPC_TEXT = 0x3294, + CMSG_QUERY_PAGE_TEXT = 0x3296, + CMSG_QUERY_PETITION = 0x329A, + CMSG_QUERY_PET_NAME = 0x3297, CMSG_QUERY_PLAYER_NAMES = 0x3786, CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3784, CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x3783, CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175, - CMSG_QUERY_QUEST_INFO = 0x328C, + CMSG_QUERY_QUEST_INFO = 0x3295, CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3176, - CMSG_QUERY_REALM_NAME = 0x3686, - CMSG_QUERY_SCENARIO_POI = 0x3653, + CMSG_QUERY_REALM_NAME = 0x3687, + CMSG_QUERY_SCENARIO_POI = 0x3654, CMSG_QUERY_TIME = 0x34E5, - CMSG_QUERY_TREASURE_PICKER = 0x3377, + CMSG_QUERY_TREASURE_PICKER = 0x3384, CMSG_QUERY_VOID_STORAGE = 0x31A2, CMSG_QUEST_CONFIRM_ACCEPT = 0x34A5, CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349F, @@ -686,154 +693,157 @@ enum OpcodeClient : uint16 CMSG_QUEST_GIVER_REQUEST_REWARD = 0x34A2, CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A4, CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A3, - CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY = 0x3593, + CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY = 0x3594, CMSG_QUEST_LOG_REMOVE_QUEST = 0x3543, - CMSG_QUEST_POI_QUERY = 0x36AB, + CMSG_QUEST_POI_QUERY = 0x36AD, CMSG_QUEST_PUSH_RESULT = 0x34A7, - CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33D0, - CMSG_QUEST_SESSION_REQUEST_START = 0x33CF, - CMSG_QUEST_SESSION_REQUEST_STOP = 0x3729, + CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C8, + CMSG_QUEST_SESSION_REQUEST_START = 0x33C7, + CMSG_QUEST_SESSION_REQUEST_STOP = 0x372B, CMSG_QUEUED_MESSAGES_END = 0x3780, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3701, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3700, - CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x372E, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x36FF, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36FE, - CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3514, - CMSG_RAF_CLAIM_NEXT_REWARD = 0x371F, - CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3721, - CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3720, - CMSG_RANDOM_ROLL = 0x3651, - CMSG_READY_CHECK_RESPONSE = 0x3632, - CMSG_READ_ITEM = 0x3353, - CMSG_RECLAIM_CORPSE = 0x34EB, - CMSG_REMOVE_NEW_ITEM = 0x337A, - CMSG_REMOVE_RAF_RECRUIT = 0x3722, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3703, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3702, + CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3730, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3701, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3700, + CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3513, + CMSG_RAF_CLAIM_NEXT_REWARD = 0x3721, + CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3723, + CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3722, + CMSG_RANDOM_ROLL = 0x3652, + CMSG_READY_CHECK_RESPONSE = 0x3633, + CMSG_READ_ITEM = 0x3360, + CMSG_RECLAIM_CORPSE = 0x34EA, + CMSG_REMOVE_NEW_ITEM = 0x3387, + CMSG_REMOVE_RAF_RECRUIT = 0x3724, CMSG_REORDER_CHARACTERS = 0x35E9, - CMSG_REPAIR_ITEM = 0x34FC, - CMSG_REPLACE_TROPHY = 0x3334, + CMSG_REPAIR_ITEM = 0x34FB, + CMSG_REPLACE_TROPHY = 0x3341, CMSG_REPOP_REQUEST = 0x353B, - CMSG_REPORT_CLIENT_VARIABLES = 0x36FB, - CMSG_REPORT_ENABLED_ADDONS = 0x36FA, - CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A3, - CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FC, - CMSG_REPORT_PVP_PLAYER_AFK = 0x3504, - CMSG_REPORT_SERVER_LAG = 0x33C8, - CMSG_REPORT_STUCK_IN_COMBAT = 0x33C9, - CMSG_REQUEST_ACCOUNT_DATA = 0x3691, - CMSG_REQUEST_AREA_POI_UPDATE = 0x3379, + CMSG_REPORT_CLIENT_VARIABLES = 0x36FD, + CMSG_REPORT_ENABLED_ADDONS = 0x36FC, + CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FE, + CMSG_REPORT_PVP_PLAYER_AFK = 0x3503, + CMSG_REPORT_SERVER_LAG = 0x33C0, + CMSG_REPORT_STUCK_IN_COMBAT = 0x33C1, + CMSG_REQUEST_ACCOUNT_DATA = 0x3693, + CMSG_REQUEST_AREA_POI_UPDATE = 0x3386, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC, CMSG_REQUEST_CEMETERY_LIST = 0x3177, - CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3688, - CMSG_REQUEST_COVENANT_CALLINGS = 0x33BA, + CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3689, + CMSG_REQUEST_COVENANT_CALLINGS = 0x33B2, CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353F, - CMSG_REQUEST_FORCED_REACTIONS = 0x320D, - CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F4, + CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x313C, + CMSG_REQUEST_FORCED_REACTIONS = 0x3210, + CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33EB, CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A8, CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A7, - CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33CA, - CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32C5, - CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3207, - CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3208, + CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C2, + CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32D0, + CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x320A, + CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320B, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7, - CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3650, + CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3651, CMSG_REQUEST_PET_INFO = 0x3497, - CMSG_REQUEST_PLAYED_TIME = 0x3294, + CMSG_REQUEST_PLAYED_TIME = 0x329D, CMSG_REQUEST_PVP_REWARDS = 0x3195, - CMSG_REQUEST_RAID_INFO = 0x36C5, + CMSG_REQUEST_RAID_INFO = 0x36C7, CMSG_REQUEST_RATED_PVP_INFO = 0x35E3, - CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x5037, + CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x3761, CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3196, CMSG_REQUEST_STABLED_PETS = 0x3498, - CMSG_REQUEST_VEHICLE_EXIT = 0x3249, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x324B, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x324A, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x324C, - CMSG_REQUEST_WEEKLY_REWARDS = 0x33BD, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3378, - CMSG_RESET_CHALLENGE_MODE = 0x3205, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3206, - CMSG_RESET_INSTANCES = 0x3665, - CMSG_RESURRECT_RESPONSE = 0x3680, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x3336, - CMSG_RIDE_VEHICLE_INTERACT = 0x324D, - CMSG_RPE_RESET_CHARACTER = 0x374C, - CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3746, + CMSG_REQUEST_VEHICLE_EXIT = 0x3251, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3253, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3252, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3254, + CMSG_REQUEST_WEEKLY_REWARDS = 0x33B5, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3385, + CMSG_RESET_CHALLENGE_MODE = 0x3208, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3209, + CMSG_RESET_INSTANCES = 0x3666, + CMSG_RESURRECT_RESPONSE = 0x3681, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x3343, + CMSG_RIDE_VEHICLE_INTERACT = 0x3255, + CMSG_RPE_RESET_CHARACTER = 0x374E, + CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3748, CMSG_SAVE_CUF_PROFILES = 0x318B, - CMSG_SAVE_EQUIPMENT_SET = 0x351A, - CMSG_SAVE_GUILD_EMBLEM = 0x32C9, - CMSG_SAVE_PERSONAL_EMBLEM = 0x32CA, - CMSG_SCENE_PLAYBACK_CANCELED = 0x322D, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x322C, - CMSG_SCENE_TRIGGER_EVENT = 0x322E, + CMSG_SAVE_EQUIPMENT_SET = 0x3519, + CMSG_SAVE_GUILD_EMBLEM = 0x32D4, + CMSG_SAVE_PERSONAL_EMBLEM = 0x32D5, + CMSG_SCENE_PLAYBACK_CANCELED = 0x3230, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x322F, + CMSG_SCENE_TRIGGER_EVENT = 0x3231, + CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3427, CMSG_SELF_RES = 0x3546, CMSG_SELL_ALL_JUNK_ITEMS = 0x34AA, CMSG_SELL_ITEM = 0x34A9, - CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F4, - CMSG_SEND_CONTACT_LIST = 0x36CA, + CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F6, + CMSG_SEND_CONTACT_LIST = 0x36CC, CMSG_SEND_MAIL = 0x35FA, - CMSG_SEND_PING_UNIT = 0x3433, - CMSG_SEND_PING_WORLD_POINT = 0x3434, + CMSG_SEND_PING_UNIT = 0x3429, + CMSG_SEND_PING_WORLD_POINT = 0x342A, CMSG_SEND_TEXT_EMOTE = 0x348E, - CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3698, - CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3233, + CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369A, + CMSG_SETUP_WARBAND_GROUPS = 0x375C, + CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3236, CMSG_SET_ACTION_BAR_TOGGLES = 0x3547, - CMSG_SET_ACTION_BUTTON = 0x3633, - CMSG_SET_ACTIVE_MOVER = 0x3A3C, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D7, - CMSG_SET_ASSISTANT_LEADER = 0x364C, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3356, - CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x3357, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3358, - CMSG_SET_CONTACT_NOTES = 0x36CD, + CMSG_SET_ACTION_BUTTON = 0x3634, + CMSG_SET_ACTIVE_MOVER = 0x3A3D, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32E2, + CMSG_SET_ASSISTANT_LEADER = 0x364D, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3363, + CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x3364, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3365, + CMSG_SET_CONTACT_NOTES = 0x36CF, CMSG_SET_CURRENCY_FLAGS = 0x3169, - CMSG_SET_DIFFICULTY_ID = 0x322F, - CMSG_SET_DUNGEON_DIFFICULTY = 0x367F, - CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x3283, - CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3619, - CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3702, - CMSG_SET_FACTION_AT_WAR = 0x34EE, - CMSG_SET_FACTION_INACTIVE = 0x34F0, - CMSG_SET_FACTION_NOT_AT_WAR = 0x34EF, + CMSG_SET_DIFFICULTY_ID = 0x3232, + CMSG_SET_DUNGEON_DIFFICULTY = 0x3680, + CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x328C, + CMSG_SET_EVERYONE_IS_ASSISTANT = 0x361A, + CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3704, + CMSG_SET_FACTION_AT_WAR = 0x34ED, + CMSG_SET_FACTION_INACTIVE = 0x34EF, + CMSG_SET_FACTION_NOT_AT_WAR = 0x34EE, CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B9, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x335A, - CMSG_SET_LOOT_METHOD = 0x3645, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3367, + CMSG_SET_LOOT_METHOD = 0x3646, CMSG_SET_LOOT_SPECIALIZATION = 0x3554, - CMSG_SET_PARTY_ASSIGNMENT = 0x364E, - CMSG_SET_PARTY_LEADER = 0x3647, + CMSG_SET_PARTY_ASSIGNMENT = 0x364F, + CMSG_SET_PARTY_LEADER = 0x3648, CMSG_SET_PET_FAVORITE = 0x3168, CMSG_SET_PET_SLOT = 0x3167, - CMSG_SET_PLAYER_DECLINED_NAMES = 0x3685, + CMSG_SET_PLAYER_DECLINED_NAMES = 0x3686, CMSG_SET_PREFERRED_CEMETERY = 0x3178, - CMSG_SET_PVP = 0x32CE, - CMSG_SET_RAID_DIFFICULTY = 0x36D6, - CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x361A, + CMSG_SET_PVP = 0x32D9, + CMSG_SET_RAID_DIFFICULTY = 0x36D8, + CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x361B, CMSG_SET_ROLE = 0x35D9, - CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3683, + CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3684, CMSG_SET_SELECTION = 0x353D, CMSG_SET_SHEATHED = 0x348F, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3359, - CMSG_SET_TAXI_BENCHMARK_MODE = 0x3503, - CMSG_SET_TITLE = 0x329A, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3366, + CMSG_SET_TAXI_BENCHMARK_MODE = 0x3502, + CMSG_SET_TITLE = 0x32A3, CMSG_SET_TRADE_CURRENCY = 0x3160, CMSG_SET_TRADE_GOLD = 0x315F, CMSG_SET_TRADE_ITEM = 0x315D, - CMSG_SET_USING_PARTY_GARRISON = 0x3317, - CMSG_SET_WAR_MODE = 0x32CF, - CMSG_SET_WATCHED_FACTION = 0x34F1, - CMSG_SHOW_TRADE_SKILL = 0x36BD, + CMSG_SET_USING_PARTY_GARRISON = 0x3322, + CMSG_SET_WAR_MODE = 0x32DA, + CMSG_SET_WATCHED_FACTION = 0x34F0, + CMSG_SHOW_TRADE_SKILL = 0x36BF, CMSG_SIGN_PETITION = 0x3548, - CMSG_SILENCE_PARTY_TALKER = 0x364F, - CMSG_SOCIAL_CONTRACT_REQUEST = 0x3741, - CMSG_SOCKET_GEMS = 0x34FB, - CMSG_SORT_BAGS = 0x335B, - CMSG_SORT_BANK_BAGS = 0x335C, - CMSG_SORT_REAGENT_BANK_BAGS = 0x335D, - CMSG_SPAWN_TRACKING_UPDATE = 0x32AF, - CMSG_SPECTATE_CHANGE = 0x342B, + CMSG_SILENCE_PARTY_TALKER = 0x3650, + CMSG_SOCIAL_CONTRACT_REQUEST = 0x3743, + CMSG_SOCKET_GEMS = 0x34FA, + CMSG_SORT_ACCOUNT_BANK_BAGS = 0x342D, + CMSG_SORT_BAGS = 0x3368, + CMSG_SORT_BANK_BAGS = 0x3369, + CMSG_SORT_REAGENT_BANK_BAGS = 0x336A, + CMSG_SPAWN_TRACKING_UPDATE = 0x32B8, + CMSG_SPECTATE_CHANGE = 0x3420, CMSG_SPELL_CLICK = 0x349C, - CMSG_SPELL_EMPOWER_RELEASE = 0x3281, - CMSG_SPELL_EMPOWER_RESTART = 0x3282, + CMSG_SPELL_EMPOWER_RELEASE = 0x328A, + CMSG_SPELL_EMPOWER_RESTART = 0x328B, CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B7, CMSG_SPLIT_GUILD_BANK_ITEM = 0x34CA, CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x34C7, @@ -844,10 +854,10 @@ enum OpcodeClient : uint16 CMSG_START_SPECTATOR_WAR_GAME = 0x35DF, CMSG_START_WAR_GAME = 0x35DE, CMSG_STORE_GUILD_BANK_ITEM = 0x34C0, - CMSG_SUBMIT_USER_FEEDBACK = 0x3690, - CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E9, - CMSG_SUMMON_RESPONSE = 0x3667, - CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3643, + CMSG_SUBMIT_USER_FEEDBACK = 0x3692, + CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E0, + CMSG_SUMMON_RESPONSE = 0x3668, + CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644, CMSG_SURRENDER_ARENA = 0x3174, CMSG_SUSPEND_COMMS_ACK = 0x3778, CMSG_SUSPEND_TOKEN_RESPONSE = 0x377E, @@ -855,153 +865,157 @@ enum OpcodeClient : uint16 CMSG_SWAP_INV_ITEM = 0x399D, CMSG_SWAP_ITEM = 0x399C, CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x34C1, - CMSG_SWAP_SUB_GROUPS = 0x364A, + CMSG_SWAP_SUB_GROUPS = 0x364B, CMSG_SWAP_VOID_ITEM = 0x31A4, - CMSG_TABARD_VENDOR_ACTIVATE = 0x32CB, + CMSG_TABARD_VENDOR_ACTIVATE = 0x32D6, CMSG_TALK_TO_GOSSIP = 0x3499, CMSG_TAXI_NODE_STATUS_QUERY = 0x34B0, CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B2, CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34B4, - CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A40, - CMSG_TIME_SYNC_RESPONSE = 0x3A3D, - CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3F, - CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3E, - CMSG_TOGGLE_DIFFICULTY = 0x3654, - CMSG_TOGGLE_PVP = 0x32CD, - CMSG_TOTEM_DESTROYED = 0x3508, + CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A41, + CMSG_TIME_SYNC_RESPONSE = 0x3A3E, + CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A40, + CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3F, + CMSG_TOGGLE_DIFFICULTY = 0x3655, + CMSG_TOGGLE_PVP = 0x32D8, + CMSG_TOTEM_DESTROYED = 0x3507, CMSG_TOY_CLEAR_FANFARE = 0x3128, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x3376, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x3383, CMSG_TRAINER_BUY_SPELL = 0x34B6, CMSG_TRAINER_LIST = 0x34B5, - CMSG_TRAITS_COMMIT_CONFIG = 0x3413, - CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3411, + CMSG_TRAITS_COMMIT_CONFIG = 0x3408, + CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3406, + CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3437, CMSG_TRANSMOGRIFY_ITEMS = 0x3197, CMSG_TURN_IN_PETITION = 0x354A, - CMSG_TUTORIAL = 0x36D7, - CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B9, + CMSG_TUTORIAL = 0x36D9, + CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B1, CMSG_UNACCEPT_TRADE = 0x315B, - CMSG_UNDELETE_CHARACTER = 0x36D9, - CMSG_UNLEARN_SKILL = 0x34F5, + CMSG_UNDELETE_CHARACTER = 0x36DB, + CMSG_UNLEARN_SKILL = 0x34F4, CMSG_UNLEARN_SPECIALIZATION = 0x31A5, CMSG_UNLOCK_VOID_STORAGE = 0x31A1, - CMSG_UPDATE_AADC_STATUS = 0x3735, - CMSG_UPDATE_ACCOUNT_DATA = 0x3692, - CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32BC, - CMSG_UPDATE_CLIENT_SETTINGS = 0x3661, - CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3329, - CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A43, - CMSG_UPDATE_RAID_TARGET = 0x364D, - CMSG_UPDATE_SPELL_VISUAL = 0x32BB, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36EE, - CMSG_UPGRADE_GARRISON = 0x32DF, - CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E7, + CMSG_UPDATE_AADC_STATUS = 0x3737, + CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x359D, + CMSG_UPDATE_ACCOUNT_DATA = 0x3694, + CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32C7, + CMSG_UPDATE_CLIENT_SETTINGS = 0x3662, + CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3334, + CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A44, + CMSG_UPDATE_RAID_TARGET = 0x364E, + CMSG_UPDATE_SPELL_VISUAL = 0x32C6, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F0, + CMSG_UPGRADE_GARRISON = 0x32EA, + CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33DE, CMSG_USED_FOLLOW = 0x3186, - CMSG_USE_CRITTER_ITEM = 0x3253, + CMSG_USE_CRITTER_ITEM = 0x325B, CMSG_USE_EQUIPMENT_SET = 0x3995, - CMSG_USE_ITEM = 0x32B5, - CMSG_USE_TOY = 0x32B8, - CMSG_VAS_CHECK_TRANSFER_OK = 0x3707, - CMSG_VAS_GET_QUEUE_MINUTES = 0x3706, - CMSG_VAS_GET_SERVICE_STATUS = 0x3705, + CMSG_USE_ITEM = 0x32C0, + CMSG_USE_TOY = 0x32C3, + CMSG_VAS_CHECK_TRANSFER_OK = 0x3709, + CMSG_VAS_GET_QUEUE_MINUTES = 0x3708, + CMSG_VAS_GET_SERVICE_STATUS = 0x3707, CMSG_VIOLENCE_LEVEL = 0x3184, - CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370B, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370C, - CMSG_VOICE_CHAT_LOGIN = 0x370A, + CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370D, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370E, + CMSG_VOICE_CHAT_LOGIN = 0x370C, CMSG_VOID_STORAGE_TRANSFER = 0x31A3, CMSG_WARDEN3_DATA = 0x35EC, - CMSG_WHO = 0x367E, - CMSG_WHO_IS = 0x367D, - CMSG_WORLD_LOOT_OBJECT_CLICK = 0x342E, + CMSG_WHO = 0x367F, + CMSG_WHO_IS = 0x367E, + CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3423, CMSG_WORLD_PORT_RESPONSE = 0x35F9, CMSG_WRAP_ITEM = 0x3994, }; enum OpcodeServer : uint16 { - SMSG_ABORT_NEW_WORLD = 0x2599, - SMSG_ACCOUNT_COSMETIC_ADDED = 0x2879, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x285F, - SMSG_ACCOUNT_DATA_TIMES = 0x2709, - SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28B6, - SMSG_ACCOUNT_MOUNT_REMOVED = 0x25B0, - SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AF, - SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2878, - SMSG_ACCOUNT_TOY_UPDATE = 0x25B1, - SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B5, - SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B4, - SMSG_ACHIEVEMENT_DELETED = 0x26E7, - SMSG_ACHIEVEMENT_EARNED = 0x2642, - SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015, - SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017, - SMSG_ACTIVATE_TAXI_REPLY = 0x267E, + SMSG_ABORT_NEW_WORLD = 0x259B, + SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x28A1, + SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x28A6, + SMSG_ACCOUNT_COSMETIC_ADDED = 0x2864, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x284B, + SMSG_ACCOUNT_DATA_TIMES = 0x270C, + SMSG_ACCOUNT_EXPORT_RESPONSE = 0x2892, + SMSG_ACCOUNT_MOUNT_REMOVED = 0x25B2, + SMSG_ACCOUNT_MOUNT_UPDATE = 0x25B1, + SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2863, + SMSG_ACCOUNT_TOY_UPDATE = 0x25B3, + SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B7, + SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B6, + SMSG_ACHIEVEMENT_DELETED = 0x26EA, + SMSG_ACHIEVEMENT_EARNED = 0x2644, + SMSG_ACTIVATE_ESSENCE_FAILED = 0x3017, + SMSG_ACTIVATE_SOULBIND_FAILED = 0x3019, + SMSG_ACTIVATE_TAXI_REPLY = 0x2681, SMSG_ACTIVE_GLYPHS = 0x2C56, - SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x2745, - SMSG_ADDON_LIST_REQUEST = 0x2641, - SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263C, - SMSG_ADD_ITEM_PASSIVE = 0x25AB, - SMSG_ADD_LOSS_OF_CONTROL = 0x2672, - SMSG_ADD_RUNE_POWER = 0x26B8, - SMSG_ADJUST_SPLINE_DURATION = 0x25D1, - SMSG_ADVANCED_COMBAT_LOG = 0x2875, - SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x286F, - SMSG_AE_LOOT_TARGETS = 0x2617, - SMSG_AE_LOOT_TARGET_ACK = 0x2618, - SMSG_AI_REACTION = 0x26B5, - SMSG_ALLIED_RACE_DETAILS = 0x27F3, + SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x2748, + SMSG_ADDON_LIST_REQUEST = 0x2643, + SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263E, + SMSG_ADD_ITEM_PASSIVE = 0x25AD, + SMSG_ADD_LOSS_OF_CONTROL = 0x2674, + SMSG_ADD_RUNE_POWER = 0x26BB, + SMSG_ADJUST_SPLINE_DURATION = 0x25D3, + SMSG_ADVANCED_COMBAT_LOG = 0x2860, + SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x285B, + SMSG_AE_LOOT_TARGETS = 0x2619, + SMSG_AE_LOOT_TARGET_ACK = 0x261A, + SMSG_AI_REACTION = 0x26B8, + SMSG_ALLIED_RACE_DETAILS = 0x27F6, SMSG_ALL_ACCOUNT_CRITERIA = 0x2571, SMSG_ALL_ACHIEVEMENT_DATA = 0x2570, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8, - SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284C, - SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2587, + SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2839, + SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2589, SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x273E, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x2741, SMSG_AREA_TRIGGER_DENIED = 0x2903, SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2900, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x2715, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x2718, SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE, SMSG_AREA_TRIGGER_RE_PATH = 0x28FD, SMSG_AREA_TRIGGER_RE_SHAPE = 0x2902, SMSG_AREA_TRIGGER_UNATTACH = 0x2901, SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x28FF, - SMSG_ARENA_CLEAR_OPPONENTS = 0x2648, - SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2631, - SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2647, - SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279F, - SMSG_ARTIFACT_FORGE_ERROR = 0x279D, - SMSG_ARTIFACT_RESPEC_PROMPT = 0x279E, - SMSG_ARTIFACT_XP_GAIN = 0x27E6, + SMSG_ARENA_CLEAR_OPPONENTS = 0x264A, + SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2633, + SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2649, + SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x27A2, + SMSG_ARTIFACT_FORGE_ERROR = 0x27A0, + SMSG_ARTIFACT_RESPEC_PROMPT = 0x27A1, + SMSG_ARTIFACT_XP_GAIN = 0x27E9, SMSG_ATTACKER_STATE_UPDATE = 0x294E, SMSG_ATTACK_START = 0x2939, SMSG_ATTACK_STOP = 0x293A, SMSG_ATTACK_SWING_ERROR = 0x2948, SMSG_ATTACK_SWING_LANDED_LOG = 0x2949, - SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27CF, - SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CE, - SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CD, - SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26F2, - SMSG_AUCTION_COMMAND_RESULT = 0x26EF, - SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2896, - SMSG_AUCTION_FAVORITE_LIST = 0x2866, - SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285D, - SMSG_AUCTION_HELLO_RESPONSE = 0x26ED, - SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285C, - SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2859, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x285A, - SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285B, - SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26F1, - SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26F3, - SMSG_AUCTION_REPLICATE_RESPONSE = 0x26EE, - SMSG_AUCTION_WON_NOTIFICATION = 0x26F0, + SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D2, + SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27D1, + SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27D0, + SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26F5, + SMSG_AUCTION_COMMAND_RESULT = 0x26F2, + SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x287F, + SMSG_AUCTION_FAVORITE_LIST = 0x2852, + SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x284A, + SMSG_AUCTION_HELLO_RESPONSE = 0x26F0, + SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2849, + SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2846, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2847, + SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2848, + SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26F4, + SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26F6, + SMSG_AUCTION_REPLICATE_RESPONSE = 0x26F1, + SMSG_AUCTION_WON_NOTIFICATION = 0x26F3, SMSG_AURA_POINTS_DEPLETED = 0x2C22, SMSG_AURA_UPDATE = 0x2C21, SMSG_AUTH_CHALLENGE = 0x3048, SMSG_AUTH_FAILED = 0x256C, SMSG_AUTH_RESPONSE = 0x256D, SMSG_AVAILABLE_HOTFIXES = 0x290F, - SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x289B, + SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x2880, SMSG_BAG_CLEANUP_FINISHED = 0x2DA7, - SMSG_BARBER_SHOP_RESULT = 0x26BD, - SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283D, + SMSG_BARBER_SHOP_RESULT = 0x26C0, + SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x282A, SMSG_BATTLEFIELD_LIST = 0x2927, SMSG_BATTLEFIELD_PORT_DENIED = 0x292D, SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923, @@ -1017,117 +1031,119 @@ enum OpcodeServer : uint16 SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928, SMSG_BATTLEGROUND_POINTS = 0x294A, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x2787, - SMSG_BATTLENET_CHALLENGE_START = 0x2786, - SMSG_BATTLENET_NOTIFICATION = 0x27FF, - SMSG_BATTLENET_RESPONSE = 0x27FE, - SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2800, - SMSG_BATTLE_PAY_ACK_FAILED = 0x2782, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2777, - SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2778, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2781, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2775, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2774, - SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x287E, - SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2772, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2773, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2771, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276F, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2770, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2776, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2780, - SMSG_BATTLE_PAY_START_CHECKOUT = 0x281B, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x277E, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x277D, - SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x280F, - SMSG_BATTLE_PETS_HEALED = 0x25F3, - SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2679, - SMSG_BATTLE_PET_DELETED = 0x25F0, - SMSG_BATTLE_PET_ERROR = 0x2637, - SMSG_BATTLE_PET_JOURNAL = 0x25EF, - SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25ED, - SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25EE, - SMSG_BATTLE_PET_RESTORED = 0x25F2, - SMSG_BATTLE_PET_REVOKED = 0x25F1, - SMSG_BATTLE_PET_TRAP_LEVEL = 0x25EB, - SMSG_BATTLE_PET_UPDATES = 0x25EA, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x278A, + SMSG_BATTLENET_CHALLENGE_START = 0x2789, + SMSG_BATTLENET_NOTIFICATION = 0x2802, + SMSG_BATTLENET_RESPONSE = 0x2801, + SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2803, + SMSG_BATTLE_PAY_ACK_FAILED = 0x2785, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x277A, + SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x277B, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2784, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2778, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2777, + SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2869, + SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2775, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2776, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2774, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2772, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2773, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2779, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2783, + SMSG_BATTLE_PAY_START_CHECKOUT = 0x281E, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2781, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2780, + SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2812, + SMSG_BATTLE_PETS_HEALED = 0x25F5, + SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x267C, + SMSG_BATTLE_PET_DELETED = 0x25F2, + SMSG_BATTLE_PET_ERROR = 0x2639, + SMSG_BATTLE_PET_JOURNAL = 0x25F1, + SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EF, + SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25F0, + SMSG_BATTLE_PET_RESTORED = 0x25F4, + SMSG_BATTLE_PET_REVOKED = 0x25F3, + SMSG_BATTLE_PET_TRAP_LEVEL = 0x25ED, + SMSG_BATTLE_PET_UPDATES = 0x25EC, SMSG_BIND_POINT_UPDATE = 0x257D, - SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2627, - SMSG_BLACK_MARKET_OUTBID = 0x2628, - SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2626, - SMSG_BLACK_MARKET_WON = 0x2629, - SMSG_BONUS_ROLL_EMPTY = 0x2644, + SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2629, + SMSG_BLACK_MARKET_OUTBID = 0x262A, + SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2628, + SMSG_BLACK_MARKET_WON = 0x262B, + SMSG_BONUS_ROLL_EMPTY = 0x2646, SMSG_BOSS_KILL = 0x294D, SMSG_BREAK_TARGET = 0x2938, SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC, - SMSG_BROADCAST_SUMMON_CAST = 0x283F, - SMSG_BROADCAST_SUMMON_RESPONSE = 0x2840, - SMSG_BUY_FAILED = 0x26C6, - SMSG_BUY_SUCCEEDED = 0x26C5, + SMSG_BROADCAST_SUMMON_CAST = 0x282C, + SMSG_BROADCAST_SUMMON_RESPONSE = 0x282D, + SMSG_BUY_FAILED = 0x26C9, + SMSG_BUY_SUCCEEDED = 0x26C8, SMSG_CACHE_INFO = 0x291D, SMSG_CACHE_VERSION = 0x291C, - SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269E, - SMSG_CALENDAR_COMMAND_RESULT = 0x269F, - SMSG_CALENDAR_COMMUNITY_INVITE = 0x268E, - SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2696, - SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2697, - SMSG_CALENDAR_INVITE_ADDED = 0x268F, - SMSG_CALENDAR_INVITE_ALERT = 0x2693, - SMSG_CALENDAR_INVITE_NOTES = 0x2698, - SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2699, - SMSG_CALENDAR_INVITE_REMOVED = 0x2690, - SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2695, - SMSG_CALENDAR_INVITE_STATUS = 0x2691, - SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2694, - SMSG_CALENDAR_MODERATOR_STATUS = 0x2692, - SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x269A, - SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x269B, - SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x269C, - SMSG_CALENDAR_SEND_CALENDAR = 0x268C, - SMSG_CALENDAR_SEND_EVENT = 0x268D, - SMSG_CALENDAR_SEND_NUM_PENDING = 0x269D, - SMSG_CAMERA_EFFECT = 0x2724, - SMSG_CANCEL_AUTO_REPEAT = 0x26DD, + SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26A1, + SMSG_CALENDAR_COMMAND_RESULT = 0x26A2, + SMSG_CALENDAR_COMMUNITY_INVITE = 0x2691, + SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2699, + SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x269A, + SMSG_CALENDAR_INVITE_ADDED = 0x2692, + SMSG_CALENDAR_INVITE_ALERT = 0x2696, + SMSG_CALENDAR_INVITE_NOTES = 0x269B, + SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x269C, + SMSG_CALENDAR_INVITE_REMOVED = 0x2693, + SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2698, + SMSG_CALENDAR_INVITE_STATUS = 0x2694, + SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2697, + SMSG_CALENDAR_MODERATOR_STATUS = 0x2695, + SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x269D, + SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x269E, + SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x269F, + SMSG_CALENDAR_SEND_CALENDAR = 0x268F, + SMSG_CALENDAR_SEND_EVENT = 0x2690, + SMSG_CALENDAR_SEND_NUM_PENDING = 0x26A0, + SMSG_CAMERA_EFFECT = 0x2727, + SMSG_CANCEL_AUTO_REPEAT = 0x26E0, SMSG_CANCEL_COMBAT = 0x2947, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C48, - SMSG_CANCEL_PING_PIN = 0x25A4, - SMSG_CANCEL_PRELOAD_WORLD = 0x2597, - SMSG_CANCEL_SCENE = 0x2636, + SMSG_CANCEL_PING_PIN = 0x25A6, + SMSG_CANCEL_PRELOAD_WORLD = 0x2599, + SMSG_CANCEL_SCENE = 0x2638, SMSG_CANCEL_SPELL_VISUAL = 0x2C46, SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C4A, SMSG_CAN_DUEL_RESULT = 0x2943, - SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280E, + SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2811, SMSG_CAPTURE_POINT_REMOVED = 0x292A, SMSG_CAST_FAILED = 0x2C59, - SMSG_CHAIN_MISSILE_BOUNCE = 0x25C9, - SMSG_CHALLENGE_MODE_COMPLETE = 0x260A, - SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260F, - SMSG_CHALLENGE_MODE_RESET = 0x2609, - SMSG_CHALLENGE_MODE_START = 0x2607, - SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2608, + SMSG_CAS_REFRESH_REMOTE_DATA = 0x267A, + SMSG_CHAIN_MISSILE_BOUNCE = 0x25CB, + SMSG_CHALLENGE_MODE_COMPLETE = 0x260C, + SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2611, + SMSG_CHALLENGE_MODE_RESET = 0x260B, + SMSG_CHALLENGE_MODE_START = 0x2609, + SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x260A, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004, - SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2801, + SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2804, SMSG_CHANNEL_LIST = 0x2BC4, SMSG_CHANNEL_NOTIFY = 0x2BC1, SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC2, SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC3, - SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27BA, - SMSG_CHARACTER_LOGIN_FAILED = 0x2704, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2785, - SMSG_CHARACTER_RENAME_RESULT = 0x2761, - SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B9, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B8, - SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BB, - SMSG_CHARACTER_UPGRADE_STARTED = 0x27B7, - SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26E1, - SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26E2, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A4, + SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27BD, + SMSG_CHARACTER_LOGIN_FAILED = 0x2707, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2788, + SMSG_CHARACTER_RENAME_RESULT = 0x2764, + SMSG_CHARACTER_UPGRADE_ABORTED = 0x27BC, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27BB, + SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BE, + SMSG_CHARACTER_UPGRADE_STARTED = 0x27BA, + SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26E4, + SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26E5, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A7, SMSG_CHAT = 0x2BAD, SMSG_CHAT_AUTO_RESPONDED = 0x2BB8, SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x2BCB, SMSG_CHAT_DOWN = 0x2BBE, SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x2BAC, SMSG_CHAT_IS_DOWN = 0x2BBF, + SMSG_CHAT_NOT_IN_GUILD = 0x2BCC, SMSG_CHAT_NOT_IN_PARTY = 0x2BB2, SMSG_CHAT_PLAYER_AMBIGUOUS = 0x2BB0, SMSG_CHAT_PLAYER_NOTFOUND = 0x2BB7, @@ -1136,99 +1152,102 @@ enum OpcodeServer : uint16 SMSG_CHAT_RESTRICTED = 0x2BB3, SMSG_CHAT_SERVER_MESSAGE = 0x2BC5, SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x2C12, - SMSG_CHECK_ABANDON_NPE = 0x3018, - SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2585, - SMSG_CHECK_WARGAME_ENTRY = 0x2591, - SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2869, - SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2850, + SMSG_CHECK_ABANDON_NPE = 0x301A, + SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2587, + SMSG_CHECK_WARGAME_ENTRY = 0x2593, + SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2855, + SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x283D, SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C26, - SMSG_CLEAR_BOSS_EMOTES = 0x25BC, - SMSG_CLEAR_COOLDOWN = 0x26BA, + SMSG_CLEAR_BOSS_EMOTES = 0x25BE, + SMSG_CLEAR_COOLDOWN = 0x26BD, SMSG_CLEAR_COOLDOWNS = 0x2C25, SMSG_CLEAR_RESURRECT = 0x257F, SMSG_CLEAR_SPELL_CHARGES = 0x2C27, SMSG_CLEAR_TARGET = 0x2944, - SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1, - SMSG_CLOSE_ARTIFACT_FORGE = 0x279C, - SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2848, - SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284B, - SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2849, - SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2846, - SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x284A, - SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2847, - SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x288C, - SMSG_COIN_REMOVED = 0x2616, + SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA2, + SMSG_CLOSE_ARTIFACT_FORGE = 0x279F, + SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2835, + SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2838, + SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2836, + SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2833, + SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2837, + SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2834, + SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x2875, + SMSG_COIN_REMOVED = 0x2618, SMSG_COMBAT_EVENT_FAILED = 0x293B, - SMSG_COMMENTATOR_MAP_INFO = 0x2706, - SMSG_COMMENTATOR_PLAYER_INFO = 0x2707, - SMSG_COMMENTATOR_STATE_CHANGED = 0x2705, - SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CA, - SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D6, - SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CC, - SMSG_COMMERCE_TOKEN_UPDATE = 0x27CB, - SMSG_COMPLAINT_RESULT = 0x26AC, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2795, - SMSG_CONFIRM_PARTY_INVITE = 0x280D, + SMSG_COMMENTATOR_MAP_INFO = 0x2709, + SMSG_COMMENTATOR_PLAYER_INFO = 0x270A, + SMSG_COMMENTATOR_STATE_CHANGED = 0x2708, + SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CD, + SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D9, + SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CF, + SMSG_COMMERCE_TOKEN_UPDATE = 0x27CE, + SMSG_COMPLAINT_RESULT = 0x26AF, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2798, + SMSG_CONFIRM_PARTY_INVITE = 0x2810, SMSG_CONNECT_TO = 0x304D, - SMSG_CONSOLE_WRITE = 0x2634, - SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D2, - SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D1, - SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D0, - SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D4, - SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D5, - SMSG_CONTACT_LIST = 0x2783, - SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2814, - SMSG_CONTROL_UPDATE = 0x2646, - SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2872, - SMSG_COOLDOWN_CHEAT = 0x2737, - SMSG_COOLDOWN_EVENT = 0x26B9, - SMSG_CORPSE_LOCATION = 0x264E, - SMSG_CORPSE_RECLAIM_DELAY = 0x2748, - SMSG_CORPSE_TRANSPORT_QUERY = 0x2711, - SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3, - SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F6, - SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2873, - SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A9, - SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A5, - SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x28A1, - SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x28A3, - SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289F, - SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A4, - SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x28A0, - SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A7, - SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x28A2, - SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28AA, - SMSG_CRAFT_ENCHANT_RESULT = 0x28A8, - SMSG_CREATE_CHAR = 0x2700, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x2794, - SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AD, - SMSG_CRITERIA_DELETED = 0x26E6, - SMSG_CRITERIA_UPDATE = 0x26E0, - SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26C1, - SMSG_CUSTOM_LOAD_SCREEN = 0x25CC, + SMSG_CONSOLE_WRITE = 0x2636, + SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D5, + SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D4, + SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D3, + SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D7, + SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D8, + SMSG_CONTACT_LIST = 0x2786, + SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2817, + SMSG_CONTROL_UPDATE = 0x2648, + SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x285E, + SMSG_COOLDOWN_CHEAT = 0x273A, + SMSG_COOLDOWN_EVENT = 0x26BC, + SMSG_CORPSE_LOCATION = 0x2650, + SMSG_CORPSE_RECLAIM_DELAY = 0x274B, + SMSG_CORPSE_TRANSPORT_QUERY = 0x2714, + SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA4, + SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F9, + SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x285F, + SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x288C, + SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x2888, + SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x2884, + SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x2886, + SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x2882, + SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x2887, + SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x2883, + SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x288E, + SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x288A, + SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x2885, + SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x288D, + SMSG_CRAFT_ENCHANT_RESULT = 0x288B, + SMSG_CREATE_CHAR = 0x2703, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x2797, + SMSG_CREATOR_VISUALS_OVERRIDE = 0x2891, + SMSG_CRITERIA_DELETED = 0x26E9, + SMSG_CRITERIA_UPDATE = 0x26E3, + SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26C4, + SMSG_CURRENCY_TRANSFER_LOG = 0x28A3, + SMSG_CURRENCY_TRANSFER_RESULT = 0x28A2, + SMSG_CUSTOM_LOAD_SCREEN = 0x25CE, SMSG_DAILY_QUESTS_RESET = 0x2A80, SMSG_DAMAGE_CALC_LOG = 0x2C65, SMSG_DB_REPLY = 0x290E, - SMSG_DEATH_RELEASE_LOC = 0x26D3, - SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2656, + SMSG_DEATH_RELEASE_LOC = 0x26D6, + SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2658, SMSG_DEFENSE_MESSAGE = 0x2BB6, - SMSG_DELETE_CHAR = 0x2701, + SMSG_DELETE_CHAR = 0x2704, SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980, - SMSG_DESTROY_ARENA_UNIT = 0x2740, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F8, - SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258A, - SMSG_DISENCHANT_CREDIT = 0x25A8, + SMSG_DESTROY_ARENA_UNIT = 0x2743, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26FB, + SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C, + SMSG_DISENCHANT_CREDIT = 0x25AA, SMSG_DISMOUNT_RESULT = 0x257C, SMSG_DISPEL_FAILED = 0x2C2F, - SMSG_DISPLAY_GAME_ERROR = 0x259E, + SMSG_DISPLAY_GAME_ERROR = 0x25A0, SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC, - SMSG_DISPLAY_PROMOTION = 0x264B, + SMSG_DISPLAY_PROMOTION = 0x264D, SMSG_DISPLAY_QUEST_POPUP = 0x2A9E, - SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2877, - SMSG_DISPLAY_TOAST = 0x2623, - SMSG_DISPLAY_WORLD_TEXT = 0x27E7, + SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2862, + SMSG_DISPLAY_TOAST = 0x2625, + SMSG_DISPLAY_WORLD_TEXT = 0x27EA, SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x2C64, - SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25E1, + SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25E3, SMSG_DROP_NEW_CONNECTION = 0x304C, SMSG_DUEL_ARRANGED = 0x293D, SMSG_DUEL_COMPLETE = 0x2941, @@ -1237,53 +1256,53 @@ enum OpcodeServer : uint16 SMSG_DUEL_OUT_OF_BOUNDS = 0x293E, SMSG_DUEL_REQUESTED = 0x293C, SMSG_DUEL_WINNER = 0x2942, - SMSG_DURABILITY_DAMAGE_DEATH = 0x2743, - SMSG_EMOTE = 0x27C1, - SMSG_ENABLE_BARBER_SHOP = 0x26BC, - SMSG_ENCHANTMENT_LOG = 0x2712, - SMSG_ENCOUNTER_END = 0x277C, - SMSG_ENCOUNTER_START = 0x277B, - SMSG_END_LIGHTNING_STORM = 0x26A9, - SMSG_ENSURE_WORLD_LOADED = 0x2886, + SMSG_DURABILITY_DAMAGE_DEATH = 0x2746, + SMSG_EMOTE = 0x27C4, + SMSG_ENABLE_BARBER_SHOP = 0x26BF, + SMSG_ENCHANTMENT_LOG = 0x2715, + SMSG_ENCOUNTER_END = 0x277F, + SMSG_ENCOUNTER_START = 0x277E, + SMSG_END_LIGHTNING_STORM = 0x26AC, SMSG_ENTER_ENCRYPTED_MODE = 0x3049, SMSG_ENUM_CHARACTERS_RESULT = 0x2584, - SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27EC, + SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27EF, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C1E, - SMSG_EQUIPMENT_SET_ID = 0x26B2, + SMSG_EQUIPMENT_SET_ID = 0x26B5, SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1, - SMSG_EXPLORATION_EXPERIENCE = 0x275D, - SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2870, - SMSG_FACTION_BONUS_INFO = 0x2723, + SMSG_EXPLORATION_EXPERIENCE = 0x2760, + SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x285C, + SMSG_FACTION_BONUS_INFO = 0x2726, SMSG_FAILED_PLAYER_CONDITION = 0x2FFA, - SMSG_FAILED_QUEST_TURN_IN = 0x280A, - SMSG_FEATURE_SYSTEM_STATUS = 0x25C0, - SMSG_FEATURE_SYSTEM_STATUS2 = 0x28C1, - SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C1, - SMSG_FEIGN_DEATH_RESISTED = 0x2742, - SMSG_FISH_ESCAPED = 0x26D0, - SMSG_FISH_NOT_HOOKED = 0x26CF, - SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B, + SMSG_FAILED_QUEST_TURN_IN = 0x280D, + SMSG_FEATURE_SYSTEM_STATUS = 0x25C2, + SMSG_FEATURE_SYSTEM_STATUS2 = 0x28A0, + SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C3, + SMSG_FEIGN_DEATH_RESISTED = 0x2745, + SMSG_FISH_ESCAPED = 0x26D3, + SMSG_FISH_NOT_HOOKED = 0x26D2, + SMSG_FLIGHT_SPLINE_SYNC = 0x2E2D, SMSG_FLUSH_COMBAT_LOG_FILE = 0x2C20, - SMSG_FORCED_DEATH_UPDATE = 0x26D4, - SMSG_FORCE_ANIM = 0x274F, - SMSG_FORCE_ANIMATIONS = 0x2750, - SMSG_FORCE_OBJECT_RELINK = 0x264A, - SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x25B3, - SMSG_FRIEND_STATUS = 0x2784, - SMSG_GAIN_MAW_POWER = 0x27DB, - SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C4, - SMSG_GAME_OBJECT_BASE = 0x2821, - SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x288A, - SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C5, - SMSG_GAME_OBJECT_DESPAWN = 0x25C6, - SMSG_GAME_OBJECT_INTERACTION = 0x2889, + SMSG_FORCED_DEATH_UPDATE = 0x26D7, + SMSG_FORCE_ANIM = 0x2752, + SMSG_FORCE_ANIMATIONS = 0x2753, + SMSG_FORCE_OBJECT_RELINK = 0x264C, + SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x25B5, + SMSG_FORCE_SPAWN_TRACKING_UPDATE = 0x2AA1, + SMSG_FRIEND_STATUS = 0x2787, + SMSG_GAIN_MAW_POWER = 0x27DE, + SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C6, + SMSG_GAME_OBJECT_BASE = 0x2824, + SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2874, + SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C7, + SMSG_GAME_OBJECT_DESPAWN = 0x25C8, + SMSG_GAME_OBJECT_INTERACTION = 0x2873, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4D, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4C, - SMSG_GAME_OBJECT_RESET_STATE = 0x271D, - SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FD, - SMSG_GAME_SPEED_SET = 0x2682, - SMSG_GAME_TIME_SET = 0x270B, - SMSG_GAME_TIME_UPDATE = 0x270A, + SMSG_GAME_OBJECT_RESET_STATE = 0x2720, + SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x2800, + SMSG_GAME_SPEED_SET = 0x2685, + SMSG_GAME_TIME_SET = 0x270E, + SMSG_GAME_TIME_UPDATE = 0x270D, SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982, SMSG_GARRISON_ADD_EVENT = 0x29A6, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974, @@ -1354,37 +1373,37 @@ enum OpcodeServer : uint16 SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x29AE, SMSG_GARRISON_UPGRADE_RESULT = 0x296B, SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D, - SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2586, - SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2815, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275F, + SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2588, + SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2818, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2762, SMSG_GET_GARRISON_INFO_RESULT = 0x295E, - SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2797, - SMSG_GET_REALM_HIDDEN_RESULT = 0x28BB, - SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D3, - SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BF, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2796, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2792, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BE, - SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E8, - SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E9, + SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x279A, + SMSG_GET_REALM_HIDDEN_RESULT = 0x2897, + SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D6, + SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27C2, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2799, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2795, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x27C1, + SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27EB, + SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EC, SMSG_GM_PLAYER_INFO = 0x3005, SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB, - SMSG_GM_TICKET_CASE_STATUS = 0x26A4, - SMSG_GM_TICKET_SYSTEM_STATUS = 0x26A3, - SMSG_GOD_MODE = 0x26FB, + SMSG_GM_TICKET_CASE_STATUS = 0x26A7, + SMSG_GM_TICKET_SYSTEM_STATUS = 0x26A6, + SMSG_GOD_MODE = 0x26FE, SMSG_GOSSIP_COMPLETE = 0x2A97, SMSG_GOSSIP_MESSAGE = 0x2A98, - SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7, - SMSG_GOSSIP_POI = 0x278F, + SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA8, + SMSG_GOSSIP_POI = 0x2792, SMSG_GOSSIP_QUEST_UPDATE = 0x2A99, - SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6, - SMSG_GROUP_ACTION_THROTTLED = 0x258E, - SMSG_GROUP_AUTO_KICK = 0x278C, - SMSG_GROUP_DECLINE = 0x2788, - SMSG_GROUP_DESTROYED = 0x278B, - SMSG_GROUP_NEW_LEADER = 0x262C, - SMSG_GROUP_REQUEST_DECLINE = 0x2789, - SMSG_GROUP_UNINVITE = 0x278A, + SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA7, + SMSG_GROUP_ACTION_THROTTLED = 0x2590, + SMSG_GROUP_AUTO_KICK = 0x278F, + SMSG_GROUP_DECLINE = 0x278B, + SMSG_GROUP_DESTROYED = 0x278E, + SMSG_GROUP_NEW_LEADER = 0x262E, + SMSG_GROUP_REQUEST_DECLINE = 0x278C, + SMSG_GROUP_UNINVITE = 0x278D, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C6, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C5, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C8, @@ -1415,6 +1434,7 @@ enum OpcodeServer : uint16 SMSG_GUILD_EVENT_TAB_MODIFIED = 0x29F6, SMSG_GUILD_EVENT_TAB_TEXT_CHANGED = 0x29F7, SMSG_GUILD_FLAGGED_FOR_RENAME = 0x29DD, + SMSG_GUILD_HARDCORE_MEMBER_DEATH = 0x29BD, SMSG_GUILD_INVITE = 0x29CB, SMSG_GUILD_INVITE_DECLINED = 0x29E9, SMSG_GUILD_INVITE_EXPIRED = 0x29EA, @@ -1438,59 +1458,60 @@ enum OpcodeServer : uint16 SMSG_GUILD_ROSTER = 0x29BB, SMSG_GUILD_ROSTER_UPDATE = 0x29BC, SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9, - SMSG_HEALTH_UPDATE = 0x26D1, - SMSG_HIGHEST_THREAT_UPDATE = 0x26D9, + SMSG_HARDCORE_DEATH_ALERT = 0x289F, + SMSG_HEALTH_UPDATE = 0x26D4, + SMSG_HIGHEST_THREAT_UPDATE = 0x26DC, SMSG_HOTFIX_CONNECT = 0x2911, SMSG_HOTFIX_MESSAGE = 0x2910, - SMSG_INITIALIZE_FACTIONS = 0x2722, + SMSG_INITIALIZE_FACTIONS = 0x2725, SMSG_INITIAL_SETUP = 0x2580, - SMSG_INIT_WORLD_STATES = 0x2744, - SMSG_INSPECT_RESULT = 0x2630, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27AA, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A9, - SMSG_INSTANCE_ENCOUNTER_END = 0x27B2, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A8, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B4, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B3, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AD, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AC, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B1, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B5, - SMSG_INSTANCE_ENCOUNTER_START = 0x27AE, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AB, - SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B0, - SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AF, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F9, - SMSG_INSTANCE_INFO = 0x2633, - SMSG_INSTANCE_RESET = 0x2687, - SMSG_INSTANCE_RESET_FAILED = 0x2688, - SMSG_INSTANCE_SAVE_CREATED = 0x277A, + SMSG_INIT_WORLD_STATES = 0x2747, + SMSG_INSPECT_RESULT = 0x2632, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27AD, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27AC, + SMSG_INSTANCE_ENCOUNTER_END = 0x27B5, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27AB, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B7, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B6, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27B0, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AF, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B4, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B8, + SMSG_INSTANCE_ENCOUNTER_START = 0x27B1, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AE, + SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B3, + SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27B2, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26FC, + SMSG_INSTANCE_INFO = 0x2635, + SMSG_INSTANCE_RESET = 0x268A, + SMSG_INSTANCE_RESET_FAILED = 0x268B, + SMSG_INSTANCE_SAVE_CREATED = 0x277D, SMSG_INTERRUPT_POWER_REGEN = 0x2C5B, SMSG_INVALIDATE_PAGE_TEXT = 0x2918, SMSG_INVALIDATE_PLAYER = 0x2FFF, - SMSG_INVALID_PROMOTION_CODE = 0x2751, + SMSG_INVALID_PROMOTION_CODE = 0x2754, SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5, - SMSG_INVENTORY_FIXUP_COMPLETE = 0x280C, - SMSG_INVENTORY_FULL_OVERFLOW = 0x281D, - SMSG_ISLAND_AZERITE_GAIN = 0x275A, - SMSG_ISLAND_COMPLETE = 0x275B, + SMSG_INVENTORY_FIXUP_COMPLETE = 0x280F, + SMSG_INVENTORY_FULL_OVERFLOW = 0x2820, + SMSG_ISLAND_AZERITE_GAIN = 0x275D, + SMSG_ISLAND_COMPLETE = 0x275E, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84, - SMSG_ITEM_CHANGED = 0x26EA, - SMSG_ITEM_COOLDOWN = 0x27C0, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2753, - SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259D, - SMSG_ITEM_INTERACTION_COMPLETE = 0x2868, - SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259B, - SMSG_ITEM_PUSH_RESULT = 0x2622, - SMSG_ITEM_TIME_UPDATE = 0x2752, - SMSG_KICK_REASON = 0x268A, - SMSG_LATENCY_REPORT_PING = 0x287A, + SMSG_ITEM_CHANGED = 0x26ED, + SMSG_ITEM_COOLDOWN = 0x27C3, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2756, + SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259F, + SMSG_ITEM_INTERACTION_COMPLETE = 0x2854, + SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259D, + SMSG_ITEM_PUSH_RESULT = 0x2624, + SMSG_ITEM_TIME_UPDATE = 0x2755, + SMSG_KICK_REASON = 0x268D, + SMSG_LATENCY_REPORT_PING = 0x2865, SMSG_LEARNED_SPELLS = 0x2C4F, - SMSG_LEARN_PVP_TALENT_FAILED = 0x25D5, - SMSG_LEARN_TALENT_FAILED = 0x25D4, - SMSG_LEGACY_LOOT_RULES = 0x2822, - SMSG_LEVEL_LINKING_RESULT = 0x284E, - SMSG_LEVEL_UP_INFO = 0x26E8, + SMSG_LEARN_PVP_TALENT_FAILED = 0x25D7, + SMSG_LEARN_TALENT_FAILED = 0x25D6, + SMSG_LEGACY_LOOT_RULES = 0x2825, + SMSG_LEVEL_LINKING_RESULT = 0x283B, + SMSG_LEVEL_UP_INFO = 0x26EB, SMSG_LFG_BOOT_PLAYER = 0x2A35, SMSG_LFG_DISABLED = 0x2A33, SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B, @@ -1518,89 +1539,91 @@ enum OpcodeServer : uint16 SMSG_LFG_SLOT_INVALID = 0x2A30, SMSG_LFG_TELEPORT_DENIED = 0x2A32, SMSG_LFG_UPDATE_STATUS = 0x2A24, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x276C, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x276B, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2760, - SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x276D, - SMSG_LOAD_CUF_PROFILES = 0x25BD, - SMSG_LOAD_EQUIPMENT_SET = 0x270D, - SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x288D, - SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x288E, - SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x288F, - SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x2890, - SMSG_LOGIN_SET_TIME_SPEED = 0x270C, - SMSG_LOGIN_VERIFY_WORLD = 0x2598, - SMSG_LOGOUT_CANCEL_ACK = 0x2686, - SMSG_LOGOUT_COMPLETE = 0x2685, - SMSG_LOGOUT_RESPONSE = 0x2684, - SMSG_LOG_XP_GAIN = 0x26E4, - SMSG_LOOT_ALL_PASSED = 0x2620, - SMSG_LOOT_LIST = 0x273F, - SMSG_LOOT_MONEY_NOTIFY = 0x261B, - SMSG_LOOT_RELEASE = 0x261A, - SMSG_LOOT_RELEASE_ALL = 0x2619, - SMSG_LOOT_REMOVED = 0x2615, - SMSG_LOOT_RESPONSE = 0x2614, - SMSG_LOOT_ROLL = 0x261D, - SMSG_LOOT_ROLLS_COMPLETE = 0x261F, - SMSG_LOOT_ROLL_WON = 0x2621, - SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2671, - SMSG_MAIL_COMMAND_RESULT = 0x263A, - SMSG_MAIL_LIST_RESULT = 0x2754, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2755, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x276F, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x276E, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2763, + SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2770, + SMSG_LOAD_CUF_PROFILES = 0x25BF, + SMSG_LOAD_EQUIPMENT_SET = 0x2710, + SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x2876, + SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2877, + SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x2878, + SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x2879, + SMSG_LOGIN_SET_TIME_SPEED = 0x270F, + SMSG_LOGIN_VERIFY_WORLD = 0x259A, + SMSG_LOGOUT_CANCEL_ACK = 0x2689, + SMSG_LOGOUT_COMPLETE = 0x2688, + SMSG_LOGOUT_RESPONSE = 0x2687, + SMSG_LOG_XP_GAIN = 0x26E7, + SMSG_LOOT_ALL_PASSED = 0x2622, + SMSG_LOOT_LIST = 0x2742, + SMSG_LOOT_MONEY_NOTIFY = 0x261D, + SMSG_LOOT_RELEASE = 0x261C, + SMSG_LOOT_RELEASE_ALL = 0x261B, + SMSG_LOOT_REMOVED = 0x2617, + SMSG_LOOT_RESPONSE = 0x2616, + SMSG_LOOT_ROLL = 0x261F, + SMSG_LOOT_ROLLS_COMPLETE = 0x2621, + SMSG_LOOT_ROLL_WON = 0x2623, + SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2673, + SMSG_MAIL_COMMAND_RESULT = 0x263C, + SMSG_MAIL_LIST_RESULT = 0x2757, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2758, SMSG_MAP_OBJECTIVES_INIT = 0x294C, - SMSG_MAP_OBJ_EVENTS = 0x25C7, - SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261E, - SMSG_MEETING_STONE_FAILED = 0x2891, + SMSG_MAP_OBJ_EVENTS = 0x25C9, + SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2620, + SMSG_MEETING_STONE_FAILED = 0x287A, SMSG_MESSAGE_BOX = 0x2576, - SMSG_MINIMAP_PING = 0x26CE, + SMSG_MINIMAP_PING = 0x26D1, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13, - SMSG_MISSILE_CANCEL = 0x25C8, - SMSG_MODIFY_COOLDOWN = 0x2762, + SMSG_MISSILE_CANCEL = 0x25CA, + SMSG_MODIFY_COOLDOWN = 0x2765, SMSG_MOUNT_RESULT = 0x257B, - SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x283E, - SMSG_MOVE_ADD_IMPULSE = 0x2E32, - SMSG_MOVE_APPLY_INERTIA = 0x2E2E, - SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15, - SMSG_MOVE_DISABLE_COLLISION = 0x2E11, + SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x282B, + SMSG_MOVE_ADD_IMPULSE = 0x2E34, + SMSG_MOVE_APPLY_INERTIA = 0x2E30, + SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E17, + SMSG_MOVE_DISABLE_COLLISION = 0x2E13, SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x2DFD, - SMSG_MOVE_DISABLE_GRAVITY = 0x2E0D, - SMSG_MOVE_DISABLE_INERTIA = 0x2E0F, - SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0C, - SMSG_MOVE_ENABLE_COLLISION = 0x2E12, + SMSG_MOVE_DISABLE_FULL_SPEED_TURNING = 0x2E47, + SMSG_MOVE_DISABLE_GRAVITY = 0x2E0F, + SMSG_MOVE_DISABLE_INERTIA = 0x2E11, + SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0E, + SMSG_MOVE_ENABLE_COLLISION = 0x2E14, SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x2DFC, - SMSG_MOVE_ENABLE_GRAVITY = 0x2E0E, - SMSG_MOVE_ENABLE_INERTIA = 0x2E10, - SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0B, + SMSG_MOVE_ENABLE_FULL_SPEED_TURNING = 0x2E46, + SMSG_MOVE_ENABLE_GRAVITY = 0x2E10, + SMSG_MOVE_ENABLE_INERTIA = 0x2E12, + SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0D, SMSG_MOVE_KNOCK_BACK = 0x2E03, - SMSG_MOVE_REMOVE_INERTIA = 0x2E2F, - SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x2E16, + SMSG_MOVE_REMOVE_INERTIA = 0x2E31, + SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x2E18, SMSG_MOVE_ROOT = 0x2DF9, SMSG_MOVE_SET_ACTIVE_MOVER = 0x2DD5, - SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = 0x2E3B, - SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = 0x2E36, - SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = 0x2E3C, - SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = 0x2E39, - SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = 0x2E3A, - SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = 0x2E42, - SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = 0x2E38, - SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = 0x2E37, - SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = 0x2E41, - SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = 0x2E3D, - SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0x2E3E, - SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0x2E40, - SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0x2E3F, - SMSG_MOVE_SET_CAN_ADV_FLY = 0x2E34, + SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED = 0x2E3D, + SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION = 0x2E38, + SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE = 0x2E3E, + SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD = 0x2E3B, + SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT = 0x2E3C, + SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT = 0x2E44, + SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT = 0x2E3A, + SMSG_MOVE_SET_ADV_FLYING_MAX_VEL = 0x2E39, + SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION = 0x2E43, + SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN = 0x2E3F, + SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0x2E40, + SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0x2E42, + SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0x2E41, + SMSG_MOVE_SET_CAN_ADV_FLY = 0x2E36, SMSG_MOVE_SET_CAN_FLY = 0x2E05, - SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x2E07, - SMSG_MOVE_SET_COLLISION_HEIGHT = 0x2E13, - SMSG_MOVE_SET_COMPOUND_STATE = 0x2E17, + SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x2E09, + SMSG_MOVE_SET_COLLISION_HEIGHT = 0x2E15, + SMSG_MOVE_SET_COMPOUND_STATE = 0x2E19, SMSG_MOVE_SET_FEATHER_FALL = 0x2DFF, SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x2DF5, SMSG_MOVE_SET_FLIGHT_SPEED = 0x2DF4, SMSG_MOVE_SET_HOVERING = 0x2E01, - SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x2E09, + SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x2E0B, SMSG_MOVE_SET_LAND_WALK = 0x2DFE, SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DE6, SMSG_MOVE_SET_NORMAL_FALL = 0x2E00, @@ -1610,47 +1633,47 @@ enum OpcodeServer : uint16 SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x2DF3, SMSG_MOVE_SET_SWIM_SPEED = 0x2DF2, SMSG_MOVE_SET_TURN_RATE = 0x2DF7, - SMSG_MOVE_SET_VEHICLE_REC_ID = 0x2E14, + SMSG_MOVE_SET_VEHICLE_REC_ID = 0x2E16, SMSG_MOVE_SET_WALK_SPEED = 0x2DF6, SMSG_MOVE_SET_WATER_WALK = 0x2DFB, - SMSG_MOVE_SKIP_TIME = 0x2E18, - SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x2E1D, - SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x2E1B, - SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x2E1E, - SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x2E1C, - SMSG_MOVE_SPLINE_ROOT = 0x2E19, - SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x2E1F, + SMSG_MOVE_SKIP_TIME = 0x2E1A, + SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x2E1F, + SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x2E1D, + SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x2E20, + SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x2E1E, + SMSG_MOVE_SPLINE_ROOT = 0x2E1B, + SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x2E21, SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0x2DEC, SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x2DEB, - SMSG_MOVE_SPLINE_SET_FLYING = 0x2E29, - SMSG_MOVE_SPLINE_SET_HOVER = 0x2E21, - SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x2E24, - SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x2E20, + SMSG_MOVE_SPLINE_SET_FLYING = 0x2E2B, + SMSG_MOVE_SPLINE_SET_HOVER = 0x2E23, + SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x2E26, + SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x2E22, SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0x2DEF, SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x2DE8, - SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x2E27, + SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x2E29, SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x2DE7, SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0x2DEA, SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0x2DE9, SMSG_MOVE_SPLINE_SET_TURN_RATE = 0x2DEE, - SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x2E28, + SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x2E2A, SMSG_MOVE_SPLINE_SET_WALK_SPEED = 0x2DED, - SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x2E23, - SMSG_MOVE_SPLINE_START_SWIM = 0x2E25, - SMSG_MOVE_SPLINE_STOP_SWIM = 0x2E26, - SMSG_MOVE_SPLINE_UNROOT = 0x2E1A, - SMSG_MOVE_SPLINE_UNSET_FLYING = 0x2E2A, - SMSG_MOVE_SPLINE_UNSET_HOVER = 0x2E22, + SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x2E25, + SMSG_MOVE_SPLINE_START_SWIM = 0x2E27, + SMSG_MOVE_SPLINE_STOP_SWIM = 0x2E28, + SMSG_MOVE_SPLINE_UNROOT = 0x2E1C, + SMSG_MOVE_SPLINE_UNSET_FLYING = 0x2E2C, + SMSG_MOVE_SPLINE_UNSET_HOVER = 0x2E24, SMSG_MOVE_TELEPORT = 0x2E04, SMSG_MOVE_UNROOT = 0x2DFA, - SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x2E35, + SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x2E37, SMSG_MOVE_UNSET_CAN_FLY = 0x2E06, - SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x2E08, + SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x2E0A, SMSG_MOVE_UNSET_HOVERING = 0x2E02, - SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x2E0A, + SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x2E0C, SMSG_MOVE_UPDATE = 0x2DE0, - SMSG_MOVE_UPDATE_ADD_IMPULSE = 0x2E33, - SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x2E30, + SMSG_MOVE_UPDATE_ADD_IMPULSE = 0x2E35, + SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x2E32, SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x2DE4, SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x2DDF, SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x2DDC, @@ -1658,7 +1681,7 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_KNOCK_BACK = 0x2DE2, SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DE3, SMSG_MOVE_UPDATE_PITCH_RATE = 0x2DDE, - SMSG_MOVE_UPDATE_REMOVE_INERTIA = 0x2E31, + SMSG_MOVE_UPDATE_REMOVE_INERTIA = 0x2E33, SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x2DE5, SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x2DD7, SMSG_MOVE_UPDATE_RUN_SPEED = 0x2DD6, @@ -1667,121 +1690,121 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1, SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD, SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8, - SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D8, - SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D7, - SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260B, - SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260D, - SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2611, - SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260C, - SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DC, - SMSG_NEW_DATA_BUILD = 0x28BA, - SMSG_NEW_TAXI_PATH = 0x267F, - SMSG_NEW_WORLD = 0x2595, + SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27DB, + SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27DA, + SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260D, + SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260F, + SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2613, + SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260E, + SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DE, + SMSG_NEW_DATA_BUILD = 0x2896, + SMSG_NEW_TAXI_PATH = 0x2682, + SMSG_NEW_WORLD = 0x2597, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C45, - SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26AB, - SMSG_NOTIFY_MONEY = 0x259A, - SMSG_NOTIFY_RECEIVED_MAIL = 0x263B, - SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2888, - SMSG_OFFER_PETITION_ERROR = 0x26B6, - SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E5, + SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26AE, + SMSG_NOTIFY_MONEY = 0x259C, + SMSG_NOTIFY_RECEIVED_MAIL = 0x263D, + SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2872, + SMSG_OFFER_PETITION_ERROR = 0x26B9, + SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E8, SMSG_ON_MONSTER_MOVE = 0x2DD4, - SMSG_OPEN_ARTIFACT_FORGE = 0x279B, + SMSG_OPEN_ARTIFACT_FORGE = 0x279E, SMSG_OPEN_CONTAINER = 0x2DA6, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2793, - SMSG_OVERRIDE_LIGHT = 0x26BB, - SMSG_PAGE_TEXT = 0x2718, - SMSG_PARTY_COMMAND_RESULT = 0x278D, - SMSG_PARTY_INVITE = 0x25BE, - SMSG_PARTY_KILL_LOG = 0x2758, - SMSG_PARTY_MEMBER_FULL_STATE = 0x2757, - SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2756, - SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x286E, - SMSG_PARTY_UPDATE = 0x25F4, - SMSG_PAST_TIME_EVENTS = 0x25C3, - SMSG_PAUSE_MIRROR_TIMER = 0x270F, - SMSG_PENDING_RAID_LOCK = 0x26F7, - SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2884, - SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x2880, - SMSG_PERKS_PROGRAM_DISABLED = 0x2885, - SMSG_PERKS_PROGRAM_RESULT = 0x2881, - SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x287F, - SMSG_PETITION_ALREADY_SIGNED = 0x25A0, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2796, + SMSG_OVERRIDE_LIGHT = 0x26BE, + SMSG_PAGE_TEXT = 0x271B, + SMSG_PARTY_COMMAND_RESULT = 0x2790, + SMSG_PARTY_INVITE = 0x25C0, + SMSG_PARTY_KILL_LOG = 0x275B, + SMSG_PARTY_MEMBER_FULL_STATE = 0x275A, + SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2759, + SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x285A, + SMSG_PARTY_UPDATE = 0x25F6, + SMSG_PAST_TIME_EVENTS = 0x25C5, + SMSG_PAUSE_MIRROR_TIMER = 0x2712, + SMSG_PENDING_RAID_LOCK = 0x26FA, + SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x286F, + SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x286B, + SMSG_PERKS_PROGRAM_DISABLED = 0x2870, + SMSG_PERKS_PROGRAM_RESULT = 0x286C, + SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x286A, + SMSG_PETITION_ALREADY_SIGNED = 0x25A2, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FB, - SMSG_PETITION_SHOW_LIST = 0x26BE, - SMSG_PETITION_SHOW_SIGNATURES = 0x26BF, - SMSG_PETITION_SIGN_RESULTS = 0x274A, - SMSG_PET_ACTION_FEEDBACK = 0x2747, - SMSG_PET_ACTION_SOUND = 0x26A1, - SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2602, - SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2676, - SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FB, - SMSG_PET_BATTLE_FINAL_ROUND = 0x2600, - SMSG_PET_BATTLE_FINISHED = 0x2601, - SMSG_PET_BATTLE_FIRST_ROUND = 0x25FD, - SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FC, - SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2603, - SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25FA, - SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2638, - SMSG_PET_BATTLE_QUEUE_STATUS = 0x2639, - SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FF, - SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F9, - SMSG_PET_BATTLE_ROUND_RESULT = 0x25FE, - SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EC, + SMSG_PETITION_SHOW_LIST = 0x26C1, + SMSG_PETITION_SHOW_SIGNATURES = 0x26C2, + SMSG_PETITION_SIGN_RESULTS = 0x274D, + SMSG_PET_ACTION_FEEDBACK = 0x274A, + SMSG_PET_ACTION_SOUND = 0x26A4, + SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2604, + SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2678, + SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FD, + SMSG_PET_BATTLE_FINAL_ROUND = 0x2602, + SMSG_PET_BATTLE_FINISHED = 0x2603, + SMSG_PET_BATTLE_FIRST_ROUND = 0x25FF, + SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FE, + SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2605, + SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25FC, + SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x263A, + SMSG_PET_BATTLE_QUEUE_STATUS = 0x263B, + SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2601, + SMSG_PET_BATTLE_REQUEST_FAILED = 0x25FB, + SMSG_PET_BATTLE_ROUND_RESULT = 0x2600, + SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EE, SMSG_PET_CAST_FAILED = 0x2C5A, SMSG_PET_CLEAR_SPELLS = 0x2C23, - SMSG_PET_DISMISS_SOUND = 0x26A2, - SMSG_PET_GOD_MODE = 0x267C, - SMSG_PET_GUIDS = 0x2703, + SMSG_PET_DISMISS_SOUND = 0x26A5, + SMSG_PET_GOD_MODE = 0x267F, + SMSG_PET_GUIDS = 0x2706, SMSG_PET_LEARNED_SPELLS = 0x2C51, - SMSG_PET_MODE = 0x2589, - SMSG_PET_NAME_INVALID = 0x26C3, - SMSG_PET_NEWLY_TAMED = 0x2588, + SMSG_PET_MODE = 0x258B, + SMSG_PET_NAME_INVALID = 0x26C6, + SMSG_PET_NEWLY_TAMED = 0x258A, SMSG_PET_SPELLS_MESSAGE = 0x2C24, - SMSG_PET_STABLE_RESULT = 0x2594, - SMSG_PET_TAME_FAILURE = 0x26B3, + SMSG_PET_STABLE_RESULT = 0x2596, + SMSG_PET_TAME_FAILURE = 0x26B6, SMSG_PET_UNLEARNED_SPELLS = 0x2C52, SMSG_PHASE_SHIFT_CHANGE = 0x2578, - SMSG_PLAYED_TIME = 0x26D5, - SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x3022, - SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014, - SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013, - SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3016, + SMSG_PLAYED_TIME = 0x26D8, + SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x3024, + SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3016, + SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3015, + SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3018, SMSG_PLAYER_BOUND = 0x2FF8, SMSG_PLAYER_CHOICE_CLEAR = 0x2FFE, SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x2FFD, SMSG_PLAYER_CONDITION_RESULT = 0x300A, - SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x3021, + SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x3023, SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x3009, SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x300E, SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29FA, - SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = 0x3023, - SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x3020, - SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x301E, - SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0x301F, - SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x3019, + SMSG_PLAYER_SAVE_PERSONAL_EMBLEM = 0x3025, + SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x3022, + SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x3020, + SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0x3021, + SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x301B, SMSG_PLAYER_SKINNED = 0x3006, SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D, SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C, - SMSG_PLAY_MUSIC = 0x2767, - SMSG_PLAY_OBJECT_SOUND = 0x2768, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272F, + SMSG_PLAY_MUSIC = 0x276A, + SMSG_PLAY_OBJECT_SOUND = 0x276B, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2732, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C49, - SMSG_PLAY_SCENE = 0x2635, - SMSG_PLAY_SOUND = 0x2766, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x2769, + SMSG_PLAY_SCENE = 0x2637, + SMSG_PLAY_SOUND = 0x2769, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x276C, SMSG_PLAY_SPELL_VISUAL = 0x2C47, SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C4B, - SMSG_PLAY_TIME_WARNING = 0x26FD, + SMSG_PLAY_TIME_WARNING = 0x2700, SMSG_PONG = 0x304E, - SMSG_POWER_UPDATE = 0x26D2, + SMSG_POWER_UPDATE = 0x26D5, SMSG_PRELOAD_CHILD_MAP = 0x2579, - SMSG_PRELOAD_WORLD = 0x2596, - SMSG_PREPOPULATE_NAME_CACHE = 0x2841, - SMSG_PRE_RESSURECT = 0x2765, - SMSG_PRINT_NOTIFICATION = 0x25CB, - SMSG_PROC_RESIST = 0x2759, - SMSG_PROFESSION_GOSSIP = 0x27F8, + SMSG_PRELOAD_WORLD = 0x2598, + SMSG_PREPOPULATE_NAME_CACHE = 0x282E, + SMSG_PRE_RESSURECT = 0x2768, + SMSG_PRINT_NOTIFICATION = 0x25CD, + SMSG_PROC_RESIST = 0x275C, + SMSG_PROFESSION_GOSSIP = 0x27FB, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C53, SMSG_PVP_CREDIT = 0x2946, SMSG_PVP_MATCH_COMPLETE = 0x2951, @@ -1790,7 +1813,7 @@ enum OpcodeServer : uint16 SMSG_PVP_MATCH_START = 0x294F, SMSG_PVP_MATCH_STATISTICS = 0x2932, SMSG_PVP_OPTIONS_ENABLED = 0x2935, - SMSG_PVP_TIER_RECORD = 0x287B, + SMSG_PVP_TIER_RECORD = 0x2866, SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A, SMSG_QUERY_CREATURE_RESPONSE = 0x2914, SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915, @@ -1802,11 +1825,11 @@ enum OpcodeServer : uint16 SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x2917, SMSG_QUERY_PETITION_RESPONSE = 0x291B, SMSG_QUERY_PET_NAME_RESPONSE = 0x2919, - SMSG_QUERY_PLAYER_NAMES_RESPONSE = 0x301B, + SMSG_QUERY_PLAYER_NAMES_RESPONSE = 0x301D, SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002, SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96, SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E7, - SMSG_QUERY_TIME_RESPONSE = 0x26E3, + SMSG_QUERY_TIME_RESPONSE = 0x26E6, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81, SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F, SMSG_QUEST_FORCE_REMOVED = 0x2A9C, @@ -1825,141 +1848,144 @@ enum OpcodeServer : uint16 SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D, SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F, SMSG_QUEST_PUSH_RESULT = 0x2A90, - SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2864, - SMSG_QUEST_SESSION_READY_CHECK = 0x2852, - SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2853, - SMSG_QUEST_SESSION_RESULT = 0x2851, + SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2850, + SMSG_QUEST_SESSION_READY_CHECK = 0x283F, + SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2840, + SMSG_QUEST_SESSION_RESULT = 0x283E, SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C, SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D, SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E, SMSG_QUEST_UPDATE_COMPLETE = 0x2A89, SMSG_QUEST_UPDATE_FAILED = 0x2A8A, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B, - SMSG_QUEUE_SUMMARY_UPDATE = 0x280B, - SMSG_RAF_ACCOUNT_INFO = 0x284F, - SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2860, - SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B7, - SMSG_RAID_DIFFICULTY_SET = 0x27A5, - SMSG_RAID_GROUP_ONLY = 0x27A7, + SMSG_QUEUE_SUMMARY_UPDATE = 0x280E, + SMSG_RAF_ACCOUNT_INFO = 0x283C, + SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x284C, + SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x2893, + SMSG_RAID_DIFFICULTY_SET = 0x27A8, + SMSG_RAID_GROUP_ONLY = 0x27AA, SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4, - SMSG_RAID_MARKERS_CHANGED = 0x25A1, - SMSG_RANDOM_ROLL = 0x262F, + SMSG_RAID_MARKERS_CHANGED = 0x25A3, + SMSG_RANDOM_ROLL = 0x2631, SMSG_RATED_PVP_INFO = 0x2931, - SMSG_READY_CHECK_COMPLETED = 0x25F8, - SMSG_READY_CHECK_RESPONSE = 0x25F7, - SMSG_READY_CHECK_STARTED = 0x25F6, - SMSG_READ_ITEM_RESULT_FAILED = 0x27A1, - SMSG_READ_ITEM_RESULT_OK = 0x2798, + SMSG_READY_CHECK_COMPLETED = 0x25FA, + SMSG_READY_CHECK_RESPONSE = 0x25F9, + SMSG_READY_CHECK_STARTED = 0x25F8, + SMSG_READ_ITEM_RESULT_FAILED = 0x27A4, + SMSG_READ_ITEM_RESULT_OK = 0x279B, SMSG_REALM_QUERY_RESPONSE = 0x2913, - SMSG_REATTACH_RESURRECT = 0x2749, - SMSG_RECEIVE_PING_UNIT = 0x25A2, - SMSG_RECEIVE_PING_WORLD_POINT = 0x25A3, - SMSG_RECRAFT_ITEM_RESULT = 0x28A6, - SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26C0, - SMSG_REFRESH_COMPONENT = 0x2650, + SMSG_REATTACH_RESURRECT = 0x274C, + SMSG_RECEIVE_PING_UNIT = 0x25A4, + SMSG_RECEIVE_PING_WORLD_POINT = 0x25A5, + SMSG_RECRAFT_ITEM_RESULT = 0x2889, + SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26C3, + SMSG_REFRESH_COMPONENT = 0x2652, SMSG_REFRESH_SPELL_HISTORY = 0x2C2B, - SMSG_REMOVE_ITEM_PASSIVE = 0x25AC, + SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x2586, + SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x2585, + SMSG_REMOVE_ITEM_PASSIVE = 0x25AE, SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C54, - SMSG_REPLACE_TROPHY_RESPONSE = 0x27BD, + SMSG_REPLACE_TROPHY_RESPONSE = 0x27C0, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001, - SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x258F, + SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2936, SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2937, SMSG_RESET_COMPRESSION_CONTEXT = 0x304F, - SMSG_RESET_FAILED_NOTIFY = 0x26B7, - SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28AC, + SMSG_RESET_FAILED_NOTIFY = 0x26BA, + SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x2890, SMSG_RESET_QUEST_POI = 0x2AA0, SMSG_RESET_RANGED_COMBAT_TIMER = 0x2945, SMSG_RESET_WEEKLY_CURRENCY = 0x2575, - SMSG_RESPEC_WIPE_CONFIRM = 0x2612, + SMSG_RESPEC_WIPE_CONFIRM = 0x2614, SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572, - SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x2882, - SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2883, + SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x286D, + SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x286E, SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C63, - SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25BA, + SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25BC, SMSG_RESUME_CAST = 0x2C3D, SMSG_RESUME_CAST_BAR = 0x2C40, SMSG_RESUME_COMMS = 0x304B, - SMSG_RESUME_TOKEN = 0x25AA, + SMSG_RESUME_TOKEN = 0x25AC, SMSG_RESURRECT_REQUEST = 0x257E, SMSG_RESYNC_RUNES = 0x2C61, - SMSG_RETURNING_PLAYER_PROMPT = 0x27A0, - SMSG_RETURN_APPLICANT_LIST = 0x2845, - SMSG_RETURN_RECRUITING_CLUBS = 0x2844, - SMSG_ROLE_CHANGED_INFORM = 0x258B, + SMSG_RETURNING_PLAYER_PROMPT = 0x27A3, + SMSG_RETURN_APPLICANT_LIST = 0x2832, + SMSG_RETURN_RECRUITING_CLUBS = 0x2831, + SMSG_ROLE_CHANGED_INFORM = 0x258D, SMSG_ROLE_CHOSEN = 0x2A39, - SMSG_ROLE_POLL_INFORM = 0x258C, - SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F7, - SMSG_RUNE_REGEN_DEBUG = 0x25B7, - SMSG_SCENARIO_COMPLETED = 0x27E5, - SMSG_SCENARIO_POIS = 0x2632, - SMSG_SCENARIO_PROGRESS_UPDATE = 0x262B, - SMSG_SCENARIO_SHOW_CRITERIA = 0x27FB, - SMSG_SCENARIO_STATE = 0x262A, - SMSG_SCENARIO_UI_UPDATE = 0x27FA, - SMSG_SCENARIO_VACATE = 0x27A2, - SMSG_SCENE_OBJECT_EVENT = 0x25E2, - SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E7, - SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E8, - SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E4, - SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E3, - SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E6, - SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E5, + SMSG_ROLE_POLL_INFORM = 0x258E, + SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27FA, + SMSG_RUNE_REGEN_DEBUG = 0x25B9, + SMSG_SCENARIO_COMPLETED = 0x27E8, + SMSG_SCENARIO_POIS = 0x2634, + SMSG_SCENARIO_PROGRESS_UPDATE = 0x262D, + SMSG_SCENARIO_SHOW_CRITERIA = 0x27FE, + SMSG_SCENARIO_STATE = 0x262C, + SMSG_SCENARIO_UI_UPDATE = 0x27FD, + SMSG_SCENARIO_VACATE = 0x27A5, + SMSG_SCENE_OBJECT_EVENT = 0x25E4, + SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E9, + SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25EA, + SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E6, + SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E5, + SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E8, + SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E7, SMSG_SCRIPT_CAST = 0x2C58, - SMSG_SEASON_INFO = 0x25C2, - SMSG_SELL_RESPONSE = 0x26C4, - SMSG_SEND_ITEM_PASSIVES = 0x25AD, + SMSG_SEASON_INFO = 0x25C4, + SMSG_SELL_RESPONSE = 0x26C7, + SMSG_SEND_ITEM_PASSIVES = 0x25AF, SMSG_SEND_KNOWN_SPELLS = 0x2C29, - SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262D, - SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262E, + SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262F, + SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2630, SMSG_SEND_SPELL_CHARGES = 0x2C2C, SMSG_SEND_SPELL_HISTORY = 0x2C2A, SMSG_SEND_UNLEARN_SPELLS = 0x2C2D, - SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264D, - SMSG_SERVER_TIME = 0x2683, - SMSG_SERVER_TIME_OFFSET = 0x2713, + SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264F, + SMSG_SERVER_TIME = 0x2686, + SMSG_SERVER_TIME_OFFSET = 0x2716, SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x2C1F, SMSG_SETUP_CURRENCY = 0x2573, - SMSG_SET_AI_ANIM_KIT = 0x272E, - SMSG_SET_ANIM_TIER = 0x2732, - SMSG_SET_CHR_UPGRADE_TIER = 0x25DF, + SMSG_SET_AI_ANIM_KIT = 0x2731, + SMSG_SET_ANIM_TIER = 0x2735, + SMSG_SET_CHR_UPGRADE_TIER = 0x25E1, SMSG_SET_CURRENCY = 0x2574, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E, - SMSG_SET_DUNGEON_DIFFICULTY = 0x26A5, - SMSG_SET_FACTION_AT_WAR = 0x26FF, - SMSG_SET_FACTION_NOT_VISIBLE = 0x2729, - SMSG_SET_FACTION_STANDING = 0x272A, - SMSG_SET_FACTION_VISIBLE = 0x2728, + SMSG_SET_DUNGEON_DIFFICULTY = 0x26A8, + SMSG_SET_FACTION_AT_WAR = 0x2702, + SMSG_SET_FACTION_NOT_VISIBLE = 0x272C, + SMSG_SET_FACTION_STANDING = 0x272D, + SMSG_SET_FACTION_VISIBLE = 0x272B, SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C38, - SMSG_SET_FORCED_REACTIONS = 0x271C, - SMSG_SET_ITEM_PURCHASE_DATA = 0x259C, - SMSG_SET_LOOT_METHOD_FAILED = 0x27C9, - SMSG_SET_MAX_WEEKLY_QUANTITY = 0x259F, - SMSG_SET_MELEE_ANIM_KIT = 0x2731, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x2730, + SMSG_SET_FORCED_REACTIONS = 0x271F, + SMSG_SET_ITEM_PURCHASE_DATA = 0x259E, + SMSG_SET_LOOT_METHOD_FAILED = 0x27CC, + SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A1, + SMSG_SET_MELEE_ANIM_KIT = 0x2734, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x2733, SMSG_SET_PCT_SPELL_MODIFIER = 0x2C39, - SMSG_SET_PET_SPECIALIZATION = 0x2624, + SMSG_SET_PET_SPECIALIZATION = 0x2626, SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003, - SMSG_SET_PLAY_HOVER_ANIM = 0x25BB, - SMSG_SET_PROFICIENCY = 0x2733, - SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2858, + SMSG_SET_PLAY_HOVER_ANIM = 0x25BD, + SMSG_SET_PROFICIENCY = 0x2736, + SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2845, SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998, SMSG_SET_SPELL_CHARGES = 0x2C28, - SMSG_SET_TIME_ZONE_INFORMATION = 0x2678, - SMSG_SET_VEHICLE_REC_ID = 0x26F6, - SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2887, + SMSG_SET_TIME_ZONE_INFORMATION = 0x267B, + SMSG_SET_VEHICLE_REC_ID = 0x26F9, + SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2871, SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2999, - SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25DB, + SMSG_SHOW_DELVES_DISPLAY_UI = 0x28A7, + SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25DD, SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95, - SMSG_SHOW_TAXI_NODES = 0x26CD, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x276E, - SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2892, - SMSG_SOCKET_GEMS_FAILURE = 0x2726, - SMSG_SOCKET_GEMS_SUCCESS = 0x2725, - SMSG_SPECIAL_MOUNT_ANIM = 0x26A0, - SMSG_SPECTATE_END = 0x28B9, - SMSG_SPECTATE_PLAYER = 0x28B8, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2717, + SMSG_SHOW_TAXI_NODES = 0x26D0, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2771, + SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x287B, + SMSG_SOCKET_GEMS_FAILURE = 0x2729, + SMSG_SOCKET_GEMS_SUCCESS = 0x2728, + SMSG_SPECIAL_MOUNT_ANIM = 0x26A3, + SMSG_SPECTATE_END = 0x2895, + SMSG_SPECTATE_PLAYER = 0x2894, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x271A, SMSG_SPELL_ABSORB_LOG = 0x2C1C, SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C16, SMSG_SPELL_CHANNEL_START = 0x2C33, @@ -1987,94 +2013,95 @@ enum OpcodeServer : uint16 SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C18, SMSG_SPELL_PREPARE = 0x2C3A, SMSG_SPELL_START = 0x2C3C, - SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CD, - SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x286A, - SMSG_STAND_STATE_UPDATE = 0x271B, - SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D3, - SMSG_START_ELAPSED_TIMER = 0x2604, - SMSG_START_ELAPSED_TIMERS = 0x2606, - SMSG_START_LIGHTNING_STORM = 0x26A8, - SMSG_START_LOOT_ROLL = 0x261C, - SMSG_START_MIRROR_TIMER = 0x270E, - SMSG_START_TIMER = 0x25A6, - SMSG_STOP_ELAPSED_TIMER = 0x2605, - SMSG_STOP_MIRROR_TIMER = 0x2710, - SMSG_STOP_SPEAKERBOT_SOUND = 0x276A, - SMSG_STOP_TIMER = 0x25A7, - SMSG_STREAMING_MOVIES = 0x25A5, - SMSG_SUGGEST_INVITE_INFORM = 0x278E, - SMSG_SUMMON_CANCEL = 0x26B1, - SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258D, - SMSG_SUMMON_REQUEST = 0x2720, + SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CF, + SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2856, + SMSG_STAND_STATE_UPDATE = 0x271E, + SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D5, + SMSG_START_ELAPSED_TIMER = 0x2606, + SMSG_START_ELAPSED_TIMERS = 0x2608, + SMSG_START_LIGHTNING_STORM = 0x26AB, + SMSG_START_LOOT_ROLL = 0x261E, + SMSG_START_MIRROR_TIMER = 0x2711, + SMSG_START_TIMER = 0x25A8, + SMSG_STOP_ELAPSED_TIMER = 0x2607, + SMSG_STOP_MIRROR_TIMER = 0x2713, + SMSG_STOP_SPEAKERBOT_SOUND = 0x276D, + SMSG_STOP_TIMER = 0x25A9, + SMSG_STREAMING_MOVIES = 0x25A7, + SMSG_SUGGEST_INVITE_INFORM = 0x2791, + SMSG_SUMMON_CANCEL = 0x26B4, + SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F, + SMSG_SUMMON_REQUEST = 0x2723, SMSG_SUPERCEDED_SPELLS = 0x2C4E, SMSG_SUSPEND_COMMS = 0x304A, - SMSG_SUSPEND_TOKEN = 0x25A9, - SMSG_SYNC_WOW_ENTITLEMENTS = 0x2862, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2716, - SMSG_TAXI_NODE_STATUS = 0x267D, - SMSG_TEXT_EMOTE = 0x267B, - SMSG_THREAT_CLEAR = 0x26DC, - SMSG_THREAT_REMOVE = 0x26DB, - SMSG_THREAT_UPDATE = 0x26DA, + SMSG_SUSPEND_TOKEN = 0x25AB, + SMSG_SYNC_WOW_ENTITLEMENTS = 0x284E, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2719, + SMSG_TAXI_NODE_STATUS = 0x2680, + SMSG_TEXT_EMOTE = 0x267E, + SMSG_THREAT_CLEAR = 0x26DF, + SMSG_THREAT_REMOVE = 0x26DE, + SMSG_THREAT_UPDATE = 0x26DD, + SMSG_TIMERUNNING_SEASON_ENDED = 0x28AA, SMSG_TIME_ADJUSTMENT = 0x2DD3, SMSG_TIME_SYNC_REQUEST = 0x2DD2, - SMSG_TITLE_EARNED = 0x26D7, - SMSG_TITLE_LOST = 0x26D8, - SMSG_TOTEM_CREATED = 0x26C7, - SMSG_TOTEM_DURATION_CHANGED = 0x26C9, - SMSG_TOTEM_MOVED = 0x26CA, - SMSG_TOTEM_REMOVED = 0x26C8, + SMSG_TITLE_EARNED = 0x26DA, + SMSG_TITLE_LOST = 0x26DB, + SMSG_TOTEM_CREATED = 0x26CA, + SMSG_TOTEM_DURATION_CHANGED = 0x26CC, + SMSG_TOTEM_MOVED = 0x26CD, + SMSG_TOTEM_REMOVED = 0x26CB, SMSG_TRADE_STATUS = 0x2583, SMSG_TRADE_UPDATED = 0x2582, - SMSG_TRAINER_BUY_FAILED = 0x26DF, - SMSG_TRAINER_LIST = 0x26DE, - SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D2, - SMSG_TRANSFER_ABORTED = 0x2702, - SMSG_TRANSFER_PENDING = 0x25CE, + SMSG_TRAINER_BUY_FAILED = 0x26E2, + SMSG_TRAINER_LIST = 0x26E1, + SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D4, + SMSG_TRANSFER_ABORTED = 0x2705, + SMSG_TRANSFER_PENDING = 0x25D0, SMSG_TREASURE_PICKER_RESPONSE = 0x291F, - SMSG_TRIGGER_CINEMATIC = 0x27C2, - SMSG_TRIGGER_MOVIE = 0x26CB, - SMSG_TURN_IN_PETITION_RESULT = 0x274C, - SMSG_TUTORIAL_FLAGS = 0x27B6, - SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C4, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C5, + SMSG_TRIGGER_CINEMATIC = 0x27C5, + SMSG_TRIGGER_MOVIE = 0x26CE, + SMSG_TURN_IN_PETITION_RESULT = 0x274F, + SMSG_TUTORIAL_FLAGS = 0x27B9, + SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA3, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C7, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C8, SMSG_UNLEARNED_SPELLS = 0x2C50, SMSG_UNLOAD_CHILD_MAP = 0x257A, - SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287C, - SMSG_UPDATE_ACCOUNT_DATA = 0x2708, - SMSG_UPDATE_ACTION_BUTTONS = 0x25E0, - SMSG_UPDATE_BNET_SESSION_KEY = 0x281C, + SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2867, + SMSG_UPDATE_ACCOUNT_DATA = 0x270B, + SMSG_UPDATE_ACTION_BUTTONS = 0x25E2, + SMSG_UPDATE_BNET_SESSION_KEY = 0x281F, SMSG_UPDATE_CAPTURE_POINT = 0x2929, - SMSG_UPDATE_CELESTIAL_BODY = 0x2818, - SMSG_UPDATE_CHARACTER_FLAGS = 0x27BC, - SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2764, - SMSG_UPDATE_COOLDOWN = 0x2763, + SMSG_UPDATE_CELESTIAL_BODY = 0x281B, + SMSG_UPDATE_CHARACTER_FLAGS = 0x27BF, + SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2767, + SMSG_UPDATE_COOLDOWN = 0x2766, SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996, SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F, - SMSG_UPDATE_EXPANSION_LEVEL = 0x2645, - SMSG_UPDATE_GAME_TIME_STATE = 0x281F, - SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26AA, - SMSG_UPDATE_LAST_INSTANCE = 0x2689, - SMSG_UPDATE_OBJECT = 0x27C3, - SMSG_UPDATE_PRIMARY_SPEC = 0x25D8, - SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F5, - SMSG_UPDATE_TALENT_DATA = 0x25D7, - SMSG_UPDATE_WORLD_STATE = 0x2746, + SMSG_UPDATE_EXPANSION_LEVEL = 0x2647, + SMSG_UPDATE_GAME_TIME_STATE = 0x2822, + SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26AD, + SMSG_UPDATE_LAST_INSTANCE = 0x268C, + SMSG_UPDATE_OBJECT = 0x27C6, + SMSG_UPDATE_PRIMARY_SPEC = 0x25DA, + SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F7, + SMSG_UPDATE_TALENT_DATA = 0x25D9, + SMSG_UPDATE_WORLD_STATE = 0x2749, SMSG_USERLIST_ADD = 0x2BB9, SMSG_USERLIST_REMOVE = 0x2BBA, SMSG_USERLIST_UPDATE = 0x2BBB, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x274D, - SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2813, - SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2811, - SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2810, - SMSG_VAS_PURCHASE_COMPLETE = 0x27EB, - SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27EA, - SMSG_VENDOR_INVENTORY = 0x25B9, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x2750, + SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2816, + SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2814, + SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2813, + SMSG_VAS_PURCHASE_COMPLETE = 0x27EE, + SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27ED, + SMSG_VENDOR_INVENTORY = 0x25BB, SMSG_VIGNETTE_UPDATE = 0x3008, - SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2817, - SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2876, - SMSG_VOICE_LOGIN_RESPONSE = 0x2816, + SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x281A, + SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2861, + SMSG_VOICE_LOGIN_RESPONSE = 0x2819, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4, SMSG_VOID_STORAGE_CONTENTS = 0x2DA1, SMSG_VOID_STORAGE_FAILED = 0x2DA0, @@ -2083,28 +2110,28 @@ enum OpcodeServer : uint16 SMSG_WAIT_QUEUE_FINISH = 0x256F, SMSG_WAIT_QUEUE_UPDATE = 0x256E, SMSG_WARDEN3_DATA = 0x2577, - SMSG_WARDEN3_DISABLED = 0x281A, - SMSG_WARDEN3_ENABLED = 0x2819, - SMSG_WARFRONT_COMPLETE = 0x275C, + SMSG_WARDEN3_DISABLED = 0x281D, + SMSG_WARDEN3_ENABLED = 0x281C, + SMSG_WARFRONT_COMPLETE = 0x275F, SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x2934, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933, - SMSG_WEATHER = 0x26A7, - SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286D, - SMSG_WEEKLY_REWARDS_RESULT = 0x286B, - SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286C, + SMSG_WEATHER = 0x26AA, + SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2859, + SMSG_WEEKLY_REWARDS_RESULT = 0x2857, + SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2858, SMSG_WHO = 0x2BAE, - SMSG_WHO_IS = 0x26A6, - SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281E, + SMSG_WHO_IS = 0x26A9, + SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2821, SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F, - SMSG_WORLD_SERVER_INFO = 0x25AE, - SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2863, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x2893, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x2894, - SMSG_WOW_LABS_PARTY_ERROR = 0x289C, - SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x2895, - SMSG_XP_AWARDED_FROM_CURRENCY = 0x28AB, - SMSG_XP_GAIN_ABORTED = 0x25CA, - SMSG_XP_GAIN_ENABLED = 0x27A6, + SMSG_WORLD_SERVER_INFO = 0x25B0, + SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x284F, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x287C, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x287D, + SMSG_WOW_LABS_PARTY_ERROR = 0x2881, + SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x287E, + SMSG_XP_AWARDED_FROM_CURRENCY = 0x288F, + SMSG_XP_GAIN_ABORTED = 0x25CC, + SMSG_XP_GAIN_ENABLED = 0x27A9, SMSG_ZONE_UNDER_ATTACK = 0x2BB5, // Opcodes that are not generated automatically diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index fb344305d75..fb05eeeb24a 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -65,6 +65,7 @@ struct Petition; struct Position; enum class AuctionCommand : int8; enum class AuctionResult : int8; +enum class PlayerInteractionType : int32; enum InventoryResult : uint8; enum class StableResult : uint8; enum class TabardVendorType : int32; @@ -170,6 +171,7 @@ namespace WorldPackets class AutoBankReagent; class AutoStoreBankReagent; class ReagentBank; + class BankerActivate; } namespace Battleground @@ -447,6 +449,7 @@ namespace WorldPackets class CancelTempEnchantment; class UseCritterItem; class SocketGems; + class SortAccountBankBags; class SortBags; class SortBankBags; class SortReagentBankBags; @@ -860,14 +863,14 @@ namespace pb = google::protobuf; enum AccountDataType { - GLOBAL_CONFIG_CACHE = 0, // 0x01 g - PER_CHARACTER_CONFIG_CACHE = 1, // 0x02 p - GLOBAL_BINDINGS_CACHE = 2, // 0x04 g - PER_CHARACTER_BINDINGS_CACHE = 3, // 0x08 p - GLOBAL_MACROS_CACHE = 4, // 0x10 g - PER_CHARACTER_MACROS_CACHE = 5, // 0x20 p - PER_CHARACTER_LAYOUT_CACHE = 6, // 0x40 p - PER_CHARACTER_CHAT_CACHE = 7, // 0x80 p + GLOBAL_CONFIG_CACHE = 0, + PER_CHARACTER_CONFIG_CACHE = 1, + GLOBAL_BINDINGS_CACHE = 2, + PER_CHARACTER_BINDINGS_CACHE = 3, + GLOBAL_MACROS_CACHE = 4, + PER_CHARACTER_MACROS_CACHE = 5, + PER_CHARACTER_LAYOUT_CACHE = 6, + PER_CHARACTER_CHAT_CACHE = 7, GLOBAL_TTS_CACHE = 8, PER_CHARACTER_TTS_CACHE = 9, GLOBAL_FLAGGED_CACHE = 10, @@ -875,13 +878,15 @@ enum AccountDataType PER_CHARACTER_CLICK_BINDINGS_CACHE = 12, GLOBAL_EDIT_MODE_CACHE = 13, PER_CHARACTER_EDIT_MODE_CACHE = 14, + GLOBAL_FRONTEND_CHAT_SETTINGS = 15, + GLOBAL_CHARACTER_LIST_ORDER = 16 }; -#define NUM_ACCOUNT_DATA_TYPES 15 +#define NUM_ACCOUNT_DATA_TYPES 17 -#define ALL_ACCOUNT_DATA_CACHE_MASK 0x7FFF -#define GLOBAL_CACHE_MASK 0x2515 -#define PER_CHARACTER_CACHE_MASK 0x5AEA +#define ALL_ACCOUNT_DATA_CACHE_MASK 0x0001FFFFu +#define GLOBAL_CACHE_MASK 0x0001A515u +#define PER_CHARACTER_CACHE_MASK 0x00005AEAu struct AccountData { @@ -1070,7 +1075,7 @@ class TC_GAME_API WorldSession void SendTrainerList(Creature* npc, uint32 trainerId); void SendListInventory(ObjectGuid guid); - void SendShowBank(ObjectGuid guid); + void SendShowBank(ObjectGuid guid, PlayerInteractionType interactionType); bool CanOpenMailBox(ObjectGuid guid); void SendShowMailBox(ObjectGuid guid); void SendTabardVendorActivate(ObjectGuid guid, TabardVendorType type); @@ -1422,7 +1427,7 @@ class TC_GAME_API WorldSession void HandleTaxiRequestEarlyLanding(WorldPackets::Taxi::TaxiRequestEarlyLanding& taxiRequestEarlyLanding); void HandleTabardVendorActivateOpcode(WorldPackets::NPC::TabardVendorActivate const& tabardVendorActivate); - void HandleBankerActivateOpcode(WorldPackets::NPC::Hello& packet); + void HandleBankerActivateOpcode(WorldPackets::Bank::BankerActivate const& bankerActivate); void HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet); void HandleTrainerBuySpellOpcode(WorldPackets::NPC::TrainerBuySpell& packet); void HandlePetitionShowList(WorldPackets::Petition::PetitionShowList& packet); @@ -1683,6 +1688,7 @@ class TC_GAME_API WorldSession // Socket gem void HandleSocketGems(WorldPackets::Item::SocketGems& socketGems); + void HandleSortAccountBankBags(WorldPackets::Item::SortAccountBankBags& sortBankBags); void HandleSortBags(WorldPackets::Item::SortBags& sortBags); void HandleSortBankBags(WorldPackets::Item::SortBankBags& sortBankBags); void HandleSortReagentBankBags(WorldPackets::Item::SortReagentBankBags& sortReagentBankBags); diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 6aa746ebef7..688c8c5aed0 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -151,7 +151,7 @@ void WorldSocket::InitializeHandler(boost::system::error_code const& error, std: try { ByteBuffer buffer(std::move(_packetBuffer)); - std::string initializer = buffer.ReadString(ClientConnectionInitialize.length()); + std::string initializer(buffer.ReadString(ClientConnectionInitialize.length())); if (initializer != ClientConnectionInitialize) { CloseSocket(); |
