aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp4
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h2
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h2
-rw-r--r--src/server/game/Server/Packets/AzeritePackets.cpp14
-rw-r--r--src/server/game/Server/Packets/AzeritePackets.h28
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h5
-rw-r--r--src/server/game/Server/Packets/BlackMarketPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/BlackMarketPackets.h11
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp24
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h23
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/CraftingPacketsCommon.cpp61
-rw-r--r--src/server/game/Server/Packets/CraftingPacketsCommon.h59
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.cpp24
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.h35
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h12
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp55
-rw-r--r--src/server/game/Server/Packets/InspectPackets.h40
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp13
-rw-r--r--src/server/game/Server/Packets/ItemPackets.h6
-rw-r--r--src/server/game/Server/Packets/ItemPacketsCommon.cpp42
-rw-r--r--src/server/game/Server/Packets/ItemPacketsCommon.h40
-rw-r--r--src/server/game/Server/Packets/LootPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/LootPackets.h4
-rw-r--r--src/server/game/Server/Packets/MailPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/MailPackets.h10
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp36
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h19
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp34
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h9
-rw-r--r--src/server/game/Server/Packets/MythicPlusPacketsCommon.h1
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp141
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h74
-rw-r--r--src/server/game/Server/Packets/PacketUtilities.h5
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp46
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h21
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.h16
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp269
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h55
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp19
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h8
-rw-r--r--src/server/game/Server/Packets/TraitPacketsCommon.cpp65
-rw-r--r--src/server/game/Server/Packets/TraitPacketsCommon.h53
-rw-r--r--src/server/game/Server/Packets/TransmogrificationPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/TransmogrificationPackets.h10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp144
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2199
51 files changed, 2183 insertions, 1612 deletions
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index 08478565728..e3eec9efc7e 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -80,8 +80,8 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionBucketKey const& itemKey)
ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterSubClass& filterSubClass)
{
- data >> filterSubClass.ItemSubclass;
data >> filterSubClass.InvTypeMask;
+ data >> filterSubClass.ItemSubclass;
return data;
}
@@ -595,7 +595,7 @@ WorldPacket const* AuctionHelloResponse::Write()
WorldPacket const* AuctionListBiddedItemsResult::Write()
{
- _worldPacket << int32(Items.size());
+ _worldPacket << uint32(Items.size());
_worldPacket << uint32(DesiredDelay);
_worldPacket.WriteBit(HasMoreResults);
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h
index 795565c6fa0..da5a2a6570f 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.h
+++ b/src/server/game/Server/Packets/AuctionHousePackets.h
@@ -51,7 +51,7 @@ namespace WorldPackets
struct AuctionListFilterSubClass
{
int32 ItemSubclass = 0;
- uint32 InvTypeMask = 0;
+ uint64 InvTypeMask = 0;
};
struct AuctionListFilterClass
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index f05643e807e..3809c421c86 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -138,6 +138,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket << uint8(classAvailability.ClassID);
_worldPacket << uint8(classAvailability.ActiveExpansionLevel);
_worldPacket << uint8(classAvailability.AccountExpansionLevel);
+ _worldPacket << uint8(classAvailability.MinActiveExpansionLevel);
}
}
@@ -166,7 +167,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket << uint16(*SuccessInfo->NumPlayersAlliance);
if (SuccessInfo->ExpansionTrialExpiration)
- _worldPacket << int32(*SuccessInfo->ExpansionTrialExpiration);
+ _worldPacket << *SuccessInfo->ExpansionTrialExpiration;
for (VirtualRealmInfo const& virtualRealm : SuccessInfo->VirtualRealms)
_worldPacket << virtualRealm;
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h
index 0e6b2b65331..7999186ed3d 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -162,7 +162,7 @@ namespace WorldPackets
bool ForceCharacterTemplate = false; ///< forces the client to always use a character template when creating a new character. @see Templates. @todo implement
Optional<uint16> NumPlayersHorde; ///< number of horde players in this realm. @todo implement
Optional<uint16> NumPlayersAlliance; ///< number of alliance players in this realm. @todo implement
- Optional<int32> ExpansionTrialExpiration; ///< expansion trial expiration unix timestamp
+ Optional<Timestamp<>> ExpansionTrialExpiration; ///< expansion trial expiration unix timestamp
};
AuthResponse() : ServerPacket(SMSG_AUTH_RESPONSE, 132) { }
diff --git a/src/server/game/Server/Packets/AzeritePackets.cpp b/src/server/game/Server/Packets/AzeritePackets.cpp
index 13222e3175e..87406b757dc 100644
--- a/src/server/game/Server/Packets/AzeritePackets.cpp
+++ b/src/server/game/Server/Packets/AzeritePackets.cpp
@@ -26,13 +26,6 @@ WorldPacket const* WorldPackets::Azerite::PlayerAzeriteItemGains::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Azerite::OpenHeartForge::Write()
-{
- _worldPacket << ForgeGUID;
-
- return &_worldPacket;
-}
-
void WorldPackets::Azerite::AzeriteEssenceUnlockMilestone::Read()
{
_worldPacket >> AzeriteItemMilestonePowerID;
@@ -76,10 +69,3 @@ WorldPacket const* WorldPackets::Azerite::PlayerAzeriteItemEquippedStatusChanged
return &_worldPacket;
}
-
-WorldPacket const* WorldPackets::Azerite::AzeriteRespecNPC::Write()
-{
- _worldPacket << NpcGUID;
-
- return &_worldPacket;
-}
diff --git a/src/server/game/Server/Packets/AzeritePackets.h b/src/server/game/Server/Packets/AzeritePackets.h
index 487c5d2bced..0a0204c61e7 100644
--- a/src/server/game/Server/Packets/AzeritePackets.h
+++ b/src/server/game/Server/Packets/AzeritePackets.h
@@ -38,24 +38,6 @@ namespace WorldPackets
uint64 XP = 0;
};
- class OpenHeartForge final : public ServerPacket
- {
- public:
- OpenHeartForge() : ServerPacket(SMSG_OPEN_HEART_FORGE, 16) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid ForgeGUID;
- };
-
- class CloseHeartForge final : public ServerPacket
- {
- public:
- CloseHeartForge() : ServerPacket(SMSG_CLOSE_HEART_FORGE, 0) { }
-
- WorldPacket const* Write() override { return &_worldPacket; }
- };
-
class AzeriteEssenceUnlockMilestone final : public ClientPacket
{
public:
@@ -122,16 +104,6 @@ namespace WorldPackets
bool IsHeartEquipped = false;
};
-
- class AzeriteRespecNPC final : public ServerPacket
- {
- public:
- AzeriteRespecNPC(ObjectGuid npcGuid) : ServerPacket(SMSG_AZERITE_RESPEC_NPC, 16), NpcGUID(npcGuid) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid NpcGUID;
- };
}
}
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index 1c8abe81261..2fa88ef4901 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -323,12 +323,15 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::RatedPvpInf
data << int32(bracketInfo.Unused2);
data << int32(bracketInfo.WeeklyPlayed);
data << int32(bracketInfo.WeeklyWon);
+ data << int32(bracketInfo.RoundsSeasonPlayed);
+ data << int32(bracketInfo.RoundsSeasonWon);
+ data << int32(bracketInfo.RoundsWeeklyPlayed);
+ data << int32(bracketInfo.RoundsWeeklyWon);
data << int32(bracketInfo.BestWeeklyRating);
data << int32(bracketInfo.LastWeeksBestRating);
data << int32(bracketInfo.BestSeasonRating);
data << int32(bracketInfo.PvpTierID);
data << int32(bracketInfo.Unused3);
- data << int32(bracketInfo.WeeklyBestWinPvpTierID);
data << int32(bracketInfo.Unused4);
data << int32(bracketInfo.Rank);
data.WriteBit(bracketInfo.Disqualified);
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index fcc98786fa6..587efc4e224 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -450,12 +450,15 @@ namespace WorldPackets
int32 Unused2 = 0;
int32 WeeklyPlayed = 0;
int32 WeeklyWon = 0;
+ int32 RoundsSeasonPlayed = 0;
+ int32 RoundsSeasonWon = 0;
+ int32 RoundsWeeklyPlayed = 0;
+ int32 RoundsWeeklyWon = 0;
int32 BestWeeklyRating = 0;
int32 LastWeeksBestRating = 0;
int32 BestSeasonRating = 0;
int32 PvpTierID = 0;
int32 Unused3 = 0;
- int32 WeeklyBestWinPvpTierID = 0;
int32 Unused4 = 0;
int32 Rank = 0;
bool Disqualified = false;
diff --git a/src/server/game/Server/Packets/BlackMarketPackets.cpp b/src/server/game/Server/Packets/BlackMarketPackets.cpp
index aac7626632a..d24019ec693 100644
--- a/src/server/game/Server/Packets/BlackMarketPackets.cpp
+++ b/src/server/game/Server/Packets/BlackMarketPackets.cpp
@@ -22,15 +22,6 @@ void WorldPackets::BlackMarket::BlackMarketOpen::Read()
_worldPacket >> Guid;
}
-WorldPacket const* WorldPackets::BlackMarket::BlackMarketOpenResult::Write()
-{
- _worldPacket << Guid;
- _worldPacket.WriteBit(Enable);
- _worldPacket.FlushBits();
-
- return &_worldPacket;
-}
-
void WorldPackets::BlackMarket::BlackMarketRequestItems::Read()
{
_worldPacket >> Guid;
diff --git a/src/server/game/Server/Packets/BlackMarketPackets.h b/src/server/game/Server/Packets/BlackMarketPackets.h
index 5c51cb5f095..aa400617008 100644
--- a/src/server/game/Server/Packets/BlackMarketPackets.h
+++ b/src/server/game/Server/Packets/BlackMarketPackets.h
@@ -50,17 +50,6 @@ namespace WorldPackets
ObjectGuid Guid;
};
- class BlackMarketOpenResult final : public ServerPacket
- {
- public:
- BlackMarketOpenResult() : ServerPacket(SMSG_BLACK_MARKET_OPEN_RESULT, 15) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid Guid;
- bool Enable = true;
- };
-
class BlackMarketRequestItems final : public ClientPacket
{
public:
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 92de494024c..9eae2466da9 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -141,7 +141,7 @@ EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields)
LastLoginVersion = fields[22].GetUInt32();
- for (uint8 slot = 0; slot < INVENTORY_SLOT_BAG_END; ++slot)
+ for (uint8 slot = 0; slot < REAGENT_BAG_SLOT_END; ++slot)
{
uint32 visualBase = slot * 5;
VisualItems[slot].InvType = Trinity::StringTo<uint8>(equipment[visualBase + 0]).value_or(0);
@@ -193,9 +193,9 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo con
data << visualItem;
data << charInfo.LastPlayedTime;
- data << uint16(charInfo.SpecID);
- data << uint32(charInfo.Unknown703);
- data << uint32(charInfo.LastLoginVersion);
+ data << int16(charInfo.SpecID);
+ data << int32(charInfo.Unknown703);
+ data << int32(charInfo.LastLoginVersion);
data << uint32(charInfo.Flags4);
data << uint32(charInfo.MailSenders.size());
data << uint32(charInfo.MailSenderTypes.size());
@@ -245,6 +245,14 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::UnlockedCondition
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceLimitDisableInfo const& raceLimitDisableInfo)
+{
+ data << int32(raceLimitDisableInfo.RaceID);
+ data << int32(raceLimitDisableInfo.BlockReason);
+
+ return data;
+}
+
WorldPacket const* EnumCharactersResult::Write()
{
_worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + RaceUnlockData.size() * sizeof(RaceUnlock));
@@ -254,12 +262,14 @@ WorldPacket const* EnumCharactersResult::Write()
_worldPacket.WriteBit(IsNewPlayerRestrictionSkipped);
_worldPacket.WriteBit(IsNewPlayerRestricted);
_worldPacket.WriteBit(IsNewPlayer);
+ _worldPacket.WriteBit(IsTrialAccountRestricted);
_worldPacket.WriteBit(DisabledClassesMask.has_value());
_worldPacket.WriteBit(IsAlliedRacesCreationAllowed);
_worldPacket << uint32(Characters.size());
_worldPacket << int32(MaxCharacterLevel);
_worldPacket << uint32(RaceUnlockData.size());
_worldPacket << uint32(UnlockedConditionalAppearances.size());
+ _worldPacket << uint32(RaceLimitDisables.size());
if (DisabledClassesMask)
_worldPacket << uint32(*DisabledClassesMask);
@@ -267,6 +277,9 @@ WorldPacket const* EnumCharactersResult::Write()
for (UnlockedConditionalAppearance const& unlockedConditionalAppearance : UnlockedConditionalAppearances)
_worldPacket << unlockedConditionalAppearance;
+ for (RaceLimitDisableInfo const& raceLimitDisableInfo : RaceLimitDisables)
+ _worldPacket << raceLimitDisableInfo;
+
for (CharacterInfo const& charInfo : Characters)
_worldPacket << charInfo;
@@ -377,6 +390,7 @@ void CharRaceOrFactionChange::Read()
_worldPacket >> RaceOrFactionChangeInfo->Guid;
_worldPacket >> RaceOrFactionChangeInfo->SexID;
_worldPacket >> RaceOrFactionChangeInfo->RaceID;
+ _worldPacket >> RaceOrFactionChangeInfo->InitialRaceID;
RaceOrFactionChangeInfo->Customizations.resize(_worldPacket.read<uint32>());
RaceOrFactionChangeInfo->Name = _worldPacket.ReadString(nameLength);
for (ChrCustomizationChoice& customization : RaceOrFactionChangeInfo->Customizations)
@@ -537,6 +551,7 @@ void AlterApperance::Read()
{
Customizations.resize(_worldPacket.read<uint32>());
_worldPacket >> NewSex;
+ _worldPacket >> CustomizedRace;
for (ChrCustomizationChoice& customization : Customizations)
_worldPacket >> customization;
@@ -556,7 +571,6 @@ WorldPacket const* LogXPGain::Write()
_worldPacket << uint8(Reason);
_worldPacket << int32(Amount);
_worldPacket << float(GroupBonus);
- _worldPacket << uint8(ReferAFriendBonusType);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index d4eff75626a..cf7b14a81ff 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -87,6 +87,7 @@ namespace WorldPackets
struct CharRaceOrFactionChangeInfo
{
uint8 RaceID = RACE_NONE;
+ uint8 InitialRaceID = RACE_NONE;
uint8 SexID = GENDER_NONE;
ObjectGuid Guid;
bool FactionChange = false;
@@ -159,7 +160,7 @@ namespace WorldPackets
uint8 Subclass = 0;
};
- std::array<VisualItemInfo, 23> VisualItems = { };
+ std::array<VisualItemInfo, 35> VisualItems = { };
std::vector<std::string> MailSenders;
std::vector<uint32> MailSenderTypes;
};
@@ -178,6 +179,18 @@ namespace WorldPackets
int32 Unused = 0;
};
+ struct RaceLimitDisableInfo
+ {
+ enum
+ {
+ Server,
+ Level
+ };
+
+ int32 RaceID = 0;
+ int32 BlockReason = 0;
+ };
+
EnumCharactersResult() : ServerPacket(SMSG_ENUM_CHARACTERS_RESULT) { }
WorldPacket const* Write() override;
@@ -187,6 +200,7 @@ namespace WorldPackets
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 IsAlliedRacesCreationAllowed = false;
int32 MaxCharacterLevel = 1;
@@ -195,6 +209,7 @@ namespace WorldPackets
std::vector<CharacterInfo> Characters; ///< all characters on the list
std::vector<RaceUnlock> RaceUnlockData; ///<
std::vector<UnlockedConditionalAppearance> UnlockedConditionalAppearances;
+ std::vector<RaceLimitDisableInfo> RaceLimitDisables;
};
class CheckCharacterNameAvailability final : public ClientPacket
@@ -623,6 +638,7 @@ namespace WorldPackets
uint8 NewSex = 0;
Array<ChrCustomizationChoice, 50> Customizations;
+ int32 CustomizedRace = 0;
};
class BarberShopResult final : public ServerPacket
@@ -646,7 +662,7 @@ namespace WorldPackets
class LogXPGain final : public ServerPacket
{
public:
- LogXPGain() : ServerPacket(SMSG_LOG_XP_GAIN, 30) { }
+ LogXPGain() : ServerPacket(SMSG_LOG_XP_GAIN, 16 + 4 + 1 + 4 + 4) { }
WorldPacket const* Write() override;
@@ -654,8 +670,7 @@ namespace WorldPackets
int32 Original = 0;
uint8 Reason = 0;
int32 Amount = 0;
- float GroupBonus = 0;
- uint8 ReferAFriendBonusType = 0; // 1 - 300% of normal XP; 2 - 150% of normal XP
+ float GroupBonus = 0.0f;
};
class TitleEarned final : public ServerPacket
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index 2cf1eec9701..c99a5f1b577 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -25,7 +25,7 @@
void WorldPackets::Chat::ChatMessage::Read()
{
_worldPacket >> Language;
- uint32 len = _worldPacket.ReadBits(9);
+ uint32 len = _worldPacket.ReadBits(11);
Text = _worldPacket.ReadString(len);
}
@@ -33,7 +33,7 @@ void WorldPackets::Chat::ChatMessageWhisper::Read()
{
_worldPacket >> Language;
uint32 targetLen = _worldPacket.ReadBits(9);
- uint32 textLen = _worldPacket.ReadBits(9);
+ uint32 textLen = _worldPacket.ReadBits(11);
Target = _worldPacket.ReadString(targetLen);
Text = _worldPacket.ReadString(textLen);
}
@@ -43,7 +43,7 @@ void WorldPackets::Chat::ChatMessageChannel::Read()
_worldPacket >> Language;
_worldPacket >> ChannelGUID;
uint32 targetLen = _worldPacket.ReadBits(9);
- uint32 textLen = _worldPacket.ReadBits(9);
+ uint32 textLen = _worldPacket.ReadBits(11);
Target = _worldPacket.ReadString(targetLen);
Text = _worldPacket.ReadString(textLen);
}
@@ -77,19 +77,19 @@ void WorldPackets::Chat::ChatAddonMessageTargeted::Read()
void WorldPackets::Chat::ChatMessageDND::Read()
{
- uint32 len = _worldPacket.ReadBits(9);
+ uint32 len = _worldPacket.ReadBits(11);
Text = _worldPacket.ReadString(len);
}
void WorldPackets::Chat::ChatMessageAFK::Read()
{
- uint32 len = _worldPacket.ReadBits(9);
+ uint32 len = _worldPacket.ReadBits(11);
Text = _worldPacket.ReadString(len);
}
void WorldPackets::Chat::ChatMessageEmote::Read()
{
- uint32 len = _worldPacket.ReadBits(9);
+ uint32 len = _worldPacket.ReadBits(11);
Text = _worldPacket.ReadString(len);
}
diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp
new file mode 100644
index 00000000000..d06b0e21e7d
--- /dev/null
+++ b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp
@@ -0,0 +1,61 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "CraftingPacketsCommon.h"
+
+namespace WorldPackets::Crafting
+{
+ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReducedReagent)
+{
+ data << int32(spellReducedReagent.ItemID);
+ data << int32(spellReducedReagent.Quantity);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData)
+{
+ data << int32(craftingData.CraftingQualityID);
+ data << int32(craftingData.field_4);
+ data << int32(craftingData.field_8);
+ data << int32(craftingData.Multicraft);
+ data << int32(craftingData.field_10);
+ data << int32(craftingData.field_14);
+ data << int32(craftingData.CritBonusSkill);
+ data << float(craftingData.field_1C);
+ data << uint64(craftingData.field_20);
+ data << uint32(craftingData.ResourcesReturned.size());
+ data << uint32(craftingData.OperationID);
+ data << craftingData.ItemGUID;
+ data << int32(craftingData.Quantity);
+ data << int32(craftingData.EnchantID);
+
+ for (SpellReducedReagent const& spellReducedReagent : craftingData.ResourcesReturned)
+ data << spellReducedReagent;
+
+ data.WriteBit(craftingData.IsCrit);
+ data.WriteBit(craftingData.field_29);
+ data.WriteBit(craftingData.field_2A);
+ data.WriteBit(craftingData.BonusCraft);
+ data.FlushBits();
+
+ data << craftingData.OldItem;
+ data << craftingData.NewItem;
+
+ return data;
+}
+}
diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.h b/src/server/game/Server/Packets/CraftingPacketsCommon.h
new file mode 100644
index 00000000000..b74d77cda29
--- /dev/null
+++ b/src/server/game/Server/Packets/CraftingPacketsCommon.h
@@ -0,0 +1,59 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef TRINITYCORE_CRAFTING_PACKETS_COMMON_H
+#define TRINITYCORE_CRAFTING_PACKETS_COMMON_H
+
+#include "ItemPacketsCommon.h"
+#include "ObjectGuid.h"
+
+namespace WorldPackets::Crafting
+{
+struct SpellReducedReagent
+{
+ int32 ItemID = 0;
+ int32 Quantity = 0;
+};
+
+struct CraftingData
+{
+ int32 CraftingQualityID = 0;
+ int32 field_4 = 0;
+ int32 field_8 = 0;
+ int32 Multicraft = 0;
+ int32 field_10 = 0;
+ int32 field_14 = 0;
+ int32 CritBonusSkill = 0;
+ float field_1C = 0.0f;
+ uint64 field_20 = 0;
+ bool IsCrit = false;
+ bool field_29 = false;
+ bool field_2A = false;
+ bool BonusCraft = false;
+ std::vector<SpellReducedReagent> ResourcesReturned;
+ uint32 OperationID = 0;
+ ObjectGuid ItemGUID;
+ int32 Quantity = 0;
+ Item::ItemInstance OldItem;
+ Item::ItemInstance NewItem;
+ int32 EnchantID = 0;
+};
+
+ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReducedReagent);
+ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData);
+}
+#endif // TRINITYCORE_CRAFTING_PACKETS_COMMON_H
diff --git a/src/server/game/Server/Packets/GameObjectPackets.cpp b/src/server/game/Server/Packets/GameObjectPackets.cpp
index fd15e7264cf..987a0e4edac 100644
--- a/src/server/game/Server/Packets/GameObjectPackets.cpp
+++ b/src/server/game/Server/Packets/GameObjectPackets.cpp
@@ -20,11 +20,13 @@
void WorldPackets::GameObject::GameObjUse::Read()
{
_worldPacket >> Guid;
+ IsSoftInteract = _worldPacket.ReadBit();
}
void WorldPackets::GameObject::GameObjReportUse::Read()
{
_worldPacket >> Guid;
+ IsSoftInteract = _worldPacket.ReadBit();
}
WorldPacket const* WorldPackets::GameObject::GameObjectDespawn::Write()
@@ -70,28 +72,34 @@ WorldPacket const* WorldPackets::GameObject::GameObjectCustomAnim::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::GameObject::GameObjectUILink::Write()
+WorldPacket const* WorldPackets::GameObject::GameObjectPlaySpellVisual::Write()
{
_worldPacket << ObjectGUID;
- _worldPacket << int32(UILink);
- _worldPacket << int32(UIItemInteractionID);
+ _worldPacket << ActivatorGUID;
+ _worldPacket << int32(SpellVisualID);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::GameObject::GameObjectPlaySpellVisual::Write()
+WorldPacket const* WorldPackets::GameObject::GameObjectSetStateLocal::Write()
{
_worldPacket << ObjectGUID;
- _worldPacket << ActivatorGUID;
- _worldPacket << int32(SpellVisualID);
+ _worldPacket << uint8(State);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::GameObject::GameObjectSetStateLocal::Write()
+WorldPacket const* WorldPackets::GameObject::GameObjectInteraction::Write()
{
_worldPacket << ObjectGUID;
- _worldPacket << uint8(State);
+ _worldPacket << int32(InteractionType);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::GameObject::GameObjectCloseInteraction::Write()
+{
+ _worldPacket << int32(InteractionType);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/GameObjectPackets.h b/src/server/game/Server/Packets/GameObjectPackets.h
index 3bd71aba0ab..d7ce351bdab 100644
--- a/src/server/game/Server/Packets/GameObjectPackets.h
+++ b/src/server/game/Server/Packets/GameObjectPackets.h
@@ -21,6 +21,8 @@
#include "Packet.h"
#include "GameObject.h"
+enum class PlayerInteractionType : int32;
+
namespace WorldPackets
{
namespace GameObject
@@ -33,6 +35,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid Guid;
+ bool IsSoftInteract = false;
};
class GameObjReportUse final : public ClientPacket
@@ -43,6 +46,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid Guid;
+ bool IsSoftInteract = false;
};
class GameObjectDespawn final : public ServerPacket
@@ -119,39 +123,48 @@ namespace WorldPackets
bool PlayAsDespawn = false;
};
- class GameObjectUILink final : public ServerPacket
+ class GameObjectPlaySpellVisual final : public ServerPacket
{
public:
- GameObjectUILink() : ServerPacket(SMSG_GAME_OBJECT_UI_LINK, 16 + 4) { }
+ GameObjectPlaySpellVisual() : ServerPacket(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, 16 + 16 + 4) { }
WorldPacket const* Write() override;
ObjectGuid ObjectGUID;
- int32 UILink = 0;
- int32 UIItemInteractionID = 0;
+ ObjectGuid ActivatorGUID;
+ int32 SpellVisualID = 0;
};
- class GameObjectPlaySpellVisual final : public ServerPacket
+ class GameObjectSetStateLocal final : public ServerPacket
{
public:
- GameObjectPlaySpellVisual() : ServerPacket(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, 16 + 16 + 4) { }
+ GameObjectSetStateLocal() : ServerPacket(SMSG_GAME_OBJECT_SET_STATE_LOCAL, 16 + 1) { }
WorldPacket const* Write() override;
ObjectGuid ObjectGUID;
- ObjectGuid ActivatorGUID;
- int32 SpellVisualID = 0;
+ uint8 State = 0;
};
- class GameObjectSetStateLocal final : public ServerPacket
+ class GameObjectInteraction final : public ServerPacket
{
public:
- GameObjectSetStateLocal() : ServerPacket(SMSG_GAME_OBJECT_SET_STATE_LOCAL, 16 + 1) { }
+ GameObjectInteraction() : ServerPacket(SMSG_GAME_OBJECT_INTERACTION, 16 + 4) { }
WorldPacket const* Write() override;
ObjectGuid ObjectGUID;
- uint8 State = 0;
+ PlayerInteractionType InteractionType = {};
+ };
+
+ class GameObjectCloseInteraction final : public ServerPacket
+ {
+ public:
+ GameObjectCloseInteraction() : ServerPacket(SMSG_GAME_OBJECT_CLOSE_INTERACTION, 4) { }
+
+ WorldPacket const* Write() override;
+
+ PlayerInteractionType InteractionType = {};
};
}
}
diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp
index 234ce345462..0796748d877 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.cpp
+++ b/src/server/game/Server/Packets/GarrisonPackets.cpp
@@ -481,13 +481,4 @@ WorldPacket const* GarrisonBuildingActivated::Write()
return &_worldPacket;
}
-
-WorldPacket const* GarrisonOpenTalentNpc::Write()
-{
- _worldPacket << NpcGUID;
- _worldPacket << int32(GarrTalentTreeID);
- _worldPacket << int32(FriendshipFactionID);
-
- return &_worldPacket;
-}
}
diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h
index 9b1367a5819..983982842f8 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.h
+++ b/src/server/game/Server/Packets/GarrisonPackets.h
@@ -437,18 +437,6 @@ namespace WorldPackets
uint32 GarrPlotInstanceID = 0;
};
-
- class GarrisonOpenTalentNpc final : public ServerPacket
- {
- public:
- GarrisonOpenTalentNpc() : ServerPacket(SMSG_GARRISON_OPEN_TALENT_NPC, 16 + 4 + 4) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid NpcGUID;
- int32 GarrTalentTreeID = 0;
- int32 FriendshipFactionID = 0; // Always 0 except on The Deaths of Chromie Scenario
- };
}
}
diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp
index 9cd83f4ac62..71cd2daf6d9 100644
--- a/src/server/game/Server/Packets/InspectPackets.cpp
+++ b/src/server/game/Server/Packets/InspectPackets.cpp
@@ -20,12 +20,14 @@
#include "Item.h"
#include "Player.h"
-void WorldPackets::Inspect::Inspect::Read()
+namespace WorldPackets::Inspect
+{
+void Inspect::Read()
{
_worldPacket >> Target;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectEnchantData const& enchantData)
+ByteBuffer& operator<<(ByteBuffer& data, InspectEnchantData const& enchantData)
{
data << uint32(enchantData.Id);
data << uint8(enchantData.Index);
@@ -33,7 +35,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectEnchantDa
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::AzeriteEssenceData const& azeriteEssenceData)
+ByteBuffer& operator<<(ByteBuffer& data, AzeriteEssenceData const& azeriteEssenceData)
{
data << uint32(azeriteEssenceData.Index);
data << uint32(azeriteEssenceData.AzeriteEssenceID);
@@ -44,7 +46,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::AzeriteEssenceDa
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectItemData const& itemData)
+ByteBuffer& operator<<(ByteBuffer& data, InspectItemData const& itemData)
{
data << itemData.CreatorGUID;
data << uint8(itemData.Index);
@@ -60,19 +62,19 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectItemData
data.WriteBits(itemData.Gems.size(), 2);
data.FlushBits();
- for (WorldPackets::Inspect::AzeriteEssenceData const& azeriteEssenceData : itemData.AzeriteEssences)
+ for (AzeriteEssenceData const& azeriteEssenceData : itemData.AzeriteEssences)
data << azeriteEssenceData;
- for (WorldPackets::Inspect::InspectEnchantData const& enchantData : itemData.Enchants)
+ for (InspectEnchantData const& enchantData : itemData.Enchants)
data << enchantData;
- for (WorldPackets::Item::ItemGemData const& gem : itemData.Gems)
+ for (Item::ItemGemData const& gem : itemData.Gems)
data << gem;
return data;
}
-void WorldPackets::Inspect::PlayerModelDisplayInfo::Initialize(Player const* player)
+void PlayerModelDisplayInfo::Initialize(Player const* player)
{
GUID = player->GetGUID();
SpecializationID = player->GetPrimarySpecialization();
@@ -89,7 +91,7 @@ void WorldPackets::Inspect::PlayerModelDisplayInfo::Initialize(Player const* pla
Items.emplace_back(item, i);
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PlayerModelDisplayInfo const& displayInfo)
+ByteBuffer& operator<<(ByteBuffer& data, PlayerModelDisplayInfo const& displayInfo)
{
data << displayInfo.GUID;
data << int32(displayInfo.SpecializationID);
@@ -101,16 +103,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PlayerModelDispl
data << uint32(displayInfo.Customizations.size());
data.WriteString(displayInfo.Name);
- for (WorldPackets::Character::ChrCustomizationChoice const& customization : displayInfo.Customizations)
+ for (Character::ChrCustomizationChoice const& customization : displayInfo.Customizations)
data << customization;
- for (WorldPackets::Inspect::InspectItemData const& item : displayInfo.Items)
+ for (InspectItemData const& item : displayInfo.Items)
data << item;
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectGuildData const& guildData)
+ByteBuffer& operator<<(ByteBuffer& data, InspectGuildData const& guildData)
{
data << guildData.GuildGUID;
data << int32(guildData.NumGuildMembers);
@@ -119,9 +121,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectGuildData
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData const& bracket)
+ByteBuffer& operator<<(ByteBuffer& data, PVPBracketData const& bracket)
{
data << uint8(bracket.Bracket);
+ data << int32(bracket.Unused3);
data << int32(bracket.Rating);
data << int32(bracket.Rank);
data << int32(bracket.WeeklyPlayed);
@@ -134,13 +137,26 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData c
data << int32(bracket.WeeklyBestWinPvpTierID);
data << int32(bracket.Unused1);
data << int32(bracket.Unused2);
+ data << int32(bracket.RoundsSeasonPlayed);
+ data << int32(bracket.RoundsSeasonWon);
+ data << int32(bracket.RoundsWeeklyPlayed);
+ data << int32(bracket.RoundsWeeklyWon);
data.WriteBit(bracket.Disqualified);
data.FlushBits();
return data;
}
-WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint8 index)
+ByteBuffer& operator<<(ByteBuffer& data, TraitInspectInfo const& traits)
+{
+ data << int32(traits.Level);
+ data << int32(traits.ChrSpecializationID);
+ data << traits.Config;
+
+ return data;
+}
+
+InspectItemData::InspectItemData(::Item const* item, uint8 index)
{
CreatorGUID = item->GetCreator();
@@ -159,7 +175,7 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint
{
Gems.emplace_back();
- WorldPackets::Item::ItemGemData& gem = Gems.back();
+ Item::ItemGemData& gem = Gems.back();
gem.Slot = i;
gem.Item.Initialize(&gemData);
}
@@ -174,7 +190,7 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint
{
AzeriteEssences.emplace_back();
- WorldPackets::Inspect::AzeriteEssenceData& essence = AzeriteEssences.back();
+ AzeriteEssenceData& essence = AzeriteEssences.back();
essence.Index = slot;
essence.AzeriteEssenceID = essences->AzeriteEssenceID[slot];
if (essence.AzeriteEssenceID)
@@ -189,7 +205,7 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint
}
}
-WorldPacket const* WorldPackets::Inspect::InspectResult::Write()
+WorldPacket const* InspectResult::Write()
{
_worldPacket << DisplayInfo;
_worldPacket << uint32(Glyphs.size());
@@ -221,10 +237,13 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write()
if (AzeriteLevel)
_worldPacket << int32(*AzeriteLevel);
+ _worldPacket << TalentTraits;
+
return &_worldPacket;
}
-void WorldPackets::Inspect::QueryInspectAchievements::Read()
+void QueryInspectAchievements::Read()
{
_worldPacket >> Guid;
}
+}
diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h
index 94411ef5e07..ac65e1a0785 100644
--- a/src/server/game/Server/Packets/InspectPackets.h
+++ b/src/server/game/Server/Packets/InspectPackets.h
@@ -24,6 +24,7 @@
#include "ObjectGuid.h"
#include "RaceMask.h"
#include "SharedDefines.h"
+#include "TraitPacketsCommon.h"
class Item;
class Player;
@@ -46,7 +47,7 @@ namespace WorldPackets
{
InspectEnchantData(uint32 id, uint8 index) : Id(id), Index(index) { }
- uint32 Id = 0;
+ uint32 Id = 0;
uint8 Index = 0;
};
@@ -95,20 +96,32 @@ namespace WorldPackets
struct PVPBracketData
{
- int32 Rating = 0;
- int32 Rank = 0;
- int32 WeeklyPlayed = 0;
- int32 WeeklyWon = 0;
- int32 SeasonPlayed = 0;
- int32 SeasonWon = 0;
+ int32 Rating = 0;
+ int32 Rank = 0;
+ int32 WeeklyPlayed = 0;
+ int32 WeeklyWon = 0;
+ int32 SeasonPlayed = 0;
+ int32 SeasonWon = 0;
int32 WeeklyBestRating = 0;
int32 SeasonBestRating = 0;
- int32 PvpTierID = 0;
+ int32 PvpTierID = 0;
int32 WeeklyBestWinPvpTierID = 0;
- int32 Unused1 = 0;
- int32 Unused2 = 0;
- uint8 Bracket = 0;
- bool Disqualified = false;
+ int32 Unused1 = 0;
+ int32 Unused2 = 0;
+ int32 Unused3 = 0;
+ int32 RoundsSeasonPlayed = 0;
+ int32 RoundsSeasonWon = 0;
+ int32 RoundsWeeklyPlayed = 0;
+ int32 RoundsWeeklyWon = 0;
+ uint8 Bracket = 0;
+ bool Disqualified = false;
+ };
+
+ struct TraitInspectInfo
+ {
+ int32 Level = 0;
+ int32 ChrSpecializationID = 0;
+ Traits::TraitConfig Config;
};
class InspectResult final : public ServerPacket
@@ -126,7 +139,7 @@ namespace WorldPackets
std::vector<uint16> Talents;
std::array<uint16, MAX_PVP_TALENT_SLOTS> PvpTalents;
Optional<InspectGuildData> GuildData;
- std::array<PVPBracketData, 6> Bracket;
+ std::array<PVPBracketData, 7> Bracket;
Optional<int32> AzeriteLevel;
int32 ItemLevel = 0;
uint32 LifetimeHK = 0;
@@ -134,6 +147,7 @@ namespace WorldPackets
uint16 TodayHK = 0;
uint16 YesterdayHK = 0;
uint8 LifetimeMaxRank = 0;
+ TraitInspectInfo TalentTraits;
};
class QueryInspectAchievements final : public ClientPacket
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index 1c6c2117e76..c747b94a643 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -258,14 +258,27 @@ WorldPacket const* WorldPackets::Item::ItemPushResult::Write()
_worldPacket << uint32(BattlePetBreedQuality);
_worldPacket << int32(BattlePetLevel);
_worldPacket << ItemGUID;
+ _worldPacket << uint32(Toasts.size());
+ for (UiEventToast const& uiEventToast : Toasts)
+ _worldPacket << uiEventToast;
+
_worldPacket.WriteBit(Pushed);
_worldPacket.WriteBit(Created);
_worldPacket.WriteBits(DisplayText, 3);
_worldPacket.WriteBit(IsBonusRoll);
_worldPacket.WriteBit(IsEncounterLoot);
+ _worldPacket.WriteBit(CraftingData.has_value());
+ _worldPacket.WriteBit(FirstCraftOperationID.has_value());
_worldPacket.FlushBits();
+
_worldPacket << Item;
+ if (FirstCraftOperationID)
+ _worldPacket << uint32(*FirstCraftOperationID);
+
+ if (CraftingData)
+ _worldPacket << *CraftingData;
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h
index caa18789635..702ed6c8adf 100644
--- a/src/server/game/Server/Packets/ItemPackets.h
+++ b/src/server/game/Server/Packets/ItemPackets.h
@@ -19,6 +19,7 @@
#define ItemPackets_h__
#include "Packet.h"
+#include "CraftingPacketsCommon.h"
#include "DBCEnums.h"
#include "ItemDefines.h"
#include "ItemPacketsCommon.h"
@@ -345,12 +346,15 @@ namespace WorldPackets
// only set if different than real ID (similar to CreatureTemplate.KillCredit)
int32 Quantity = 0;
int32 QuantityInInventory = 0;
- int32 DungeonEncounterID = 0;
+ int32 DungeonEncounterID = 0;
int32 BattlePetSpeciesID = 0;
int32 BattlePetBreedID = 0;
uint32 BattlePetBreedQuality = 0;
int32 BattlePetLevel = 0;
ObjectGuid ItemGUID;
+ std::vector<UiEventToast> Toasts;
+ Optional<Crafting::CraftingData> CraftingData;
+ Optional<uint32> FirstCraftOperationID;
bool Pushed = false;
DisplayType DisplayText = DISPLAY_TYPE_HIDDEN;
bool Created = false;
diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.cpp b/src/server/game/Server/Packets/ItemPacketsCommon.cpp
index a022a0b3783..70da5777d07 100644
--- a/src/server/game/Server/Packets/ItemPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/ItemPacketsCommon.cpp
@@ -20,9 +20,7 @@
#include "Loot.h"
#include "Player.h"
-namespace WorldPackets
-{
-namespace Item
+namespace WorldPackets::Item
{
bool ItemBonuses::operator==(ItemBonuses const& r) const
{
@@ -51,7 +49,7 @@ bool ItemModList::operator==(ItemModList const& r) const
void ItemInstance::Initialize(::Item const* item)
{
ItemID = item->GetEntry();
- std::vector<int32> const& bonusListIds = item->m_itemData->BonusListIDs;
+ std::vector<int32> const& bonusListIds = item->GetBonusListIDs();
if (!bonusListIds.empty())
{
ItemBonus.emplace();
@@ -126,6 +124,20 @@ bool ItemInstance::operator==(ItemInstance const& r) const
return true;
}
+bool ItemBonusKey::operator==(ItemBonusKey const& right) const
+{
+ if (ItemID != right.ItemID)
+ return false;
+
+ if (BonusListIDs != right.BonusListIDs)
+ return false;
+
+ if (Modifications != right.Modifications)
+ return false;
+
+ return true;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, ItemBonuses const& itemBonusInstanceData)
{
data << uint8(itemBonusInstanceData.Context);
@@ -224,6 +236,21 @@ ByteBuffer& operator>>(ByteBuffer& data, ItemInstance& itemInstance)
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, ItemBonusKey const& itemBonusKey)
+{
+ data << int32(itemBonusKey.ItemID);
+ data << uint32(itemBonusKey.BonusListIDs.size());
+ data << uint32(itemBonusKey.Modifications.size());
+
+ if (!itemBonusKey.BonusListIDs.empty())
+ data.append(itemBonusKey.BonusListIDs.data(), itemBonusKey.BonusListIDs.size());
+
+ for (ItemMod const& modification : itemBonusKey.Modifications)
+ data << modification;
+
+ return data;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, ItemEnchantData const& itemEnchantData)
{
data << int32(itemEnchantData.ID);
@@ -259,5 +286,12 @@ ByteBuffer& operator>>(ByteBuffer& data, InvUpdate& invUpdate)
return data;
}
+
+ByteBuffer& operator<<(ByteBuffer& data, UiEventToast const& uiEventToast)
+{
+ data << int32(uiEventToast.UiEventToastID);
+ data << int32(uiEventToast.Asset);
+
+ return data;
}
}
diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.h b/src/server/game/Server/Packets/ItemPacketsCommon.h
index 2131d8ae7a5..b70cb8b1491 100644
--- a/src/server/game/Server/Packets/ItemPacketsCommon.h
+++ b/src/server/game/Server/Packets/ItemPacketsCommon.h
@@ -82,6 +82,16 @@ namespace WorldPackets
bool operator!=(ItemInstance const& r) const { return !(*this == r); }
};
+ struct ItemBonusKey
+ {
+ int32 ItemID = 0;
+ std::vector<int32> BonusListIDs;
+ std::vector<ItemMod> Modifications;
+
+ bool operator==(ItemBonusKey const& right) const;
+ bool operator!=(ItemBonusKey const& r) const { return !(*this == r); }
+ };
+
struct ItemEnchantData
{
ItemEnchantData(int32 id, uint32 expiration, int32 charges, uint8 slot) : ID(id), Expiration(expiration), Charges(charges), Slot(slot) { }
@@ -107,23 +117,27 @@ namespace WorldPackets
std::vector<InvItem> Items;
};
- }
-}
-namespace WorldPackets
-{
-namespace Item
-{
-ByteBuffer& operator<<(ByteBuffer& data, ItemInstance const& itemInstance);
-ByteBuffer& operator>>(ByteBuffer& data, ItemInstance& itemInstance);
+ struct UiEventToast
+ {
+ int32 UiEventToastID = 0;
+ int32 Asset = 0;
+ };
-ByteBuffer& operator<<(ByteBuffer& data, ItemEnchantData const& itemEnchantData);
+ ByteBuffer& operator<<(ByteBuffer& data, ItemEnchantData const& itemEnchantData);
-ByteBuffer& operator<<(ByteBuffer& data, ItemGemData const& itemGemInstanceData);
-ByteBuffer& operator>>(ByteBuffer& data, ItemGemData& itemGemInstanceData);
+ ByteBuffer& operator<<(ByteBuffer& data, ItemGemData const& itemGemInstanceData);
+ ByteBuffer& operator>>(ByteBuffer& data, ItemGemData& itemGemInstanceData);
-ByteBuffer& operator>>(ByteBuffer& data, InvUpdate& invUpdate);
-}
+ ByteBuffer& operator<<(ByteBuffer& data, ItemInstance const& itemInstance);
+ ByteBuffer& operator>>(ByteBuffer& data, ItemInstance& itemInstance);
+
+ ByteBuffer& operator<<(ByteBuffer& data, ItemBonusKey const& itemBonusKey);
+
+ ByteBuffer& operator>>(ByteBuffer& data, InvUpdate& invUpdate);
+
+ ByteBuffer& operator<<(ByteBuffer& data, UiEventToast const& uiEventToast);
+ }
}
#endif // ItemPacketsCommon_h__
diff --git a/src/server/game/Server/Packets/LootPackets.cpp b/src/server/game/Server/Packets/LootPackets.cpp
index 5c06b7bd41f..ee205ab1908 100644
--- a/src/server/game/Server/Packets/LootPackets.cpp
+++ b/src/server/game/Server/Packets/LootPackets.cpp
@@ -33,6 +33,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Loot::LootItemData const&
void WorldPackets::Loot::LootUnit::Read()
{
_worldPacket >> Unit;
+ IsSoftInteract = _worldPacket.ReadBit();
}
WorldPacket const* WorldPackets::Loot::LootResponse::Write()
@@ -168,6 +169,7 @@ WorldPacket const* WorldPackets::Loot::StartLootRoll::Write()
_worldPacket << int32(MapID);
_worldPacket << RollTime;
_worldPacket << uint8(ValidRolls);
+ _worldPacket.append(LootRollIneligibleReason.data(), LootRollIneligibleReason.size());
_worldPacket << uint8(Method);
_worldPacket << Item;
diff --git a/src/server/game/Server/Packets/LootPackets.h b/src/server/game/Server/Packets/LootPackets.h
index 794e5ca3212..a69b36586c9 100644
--- a/src/server/game/Server/Packets/LootPackets.h
+++ b/src/server/game/Server/Packets/LootPackets.h
@@ -22,6 +22,8 @@
#include "ObjectGuid.h"
#include "ItemPacketsCommon.h"
+enum class LootRollIneligibilityReason : uint32;
+
namespace WorldPackets
{
namespace Loot
@@ -34,6 +36,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid Unit;
+ bool IsSoftInteract = false;
};
struct LootItemData
@@ -221,6 +224,7 @@ namespace WorldPackets
Duration<Milliseconds, uint32> RollTime;
uint8 Method = 0;
uint8 ValidRolls = 0;
+ std::array<LootRollIneligibilityReason, 4> LootRollIneligibleReason = { };
LootItemData Item;
};
diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp
index e916410f78b..712f174bd39 100644
--- a/src/server/game/Server/Packets/MailPackets.cpp
+++ b/src/server/game/Server/Packets/MailPackets.cpp
@@ -277,10 +277,3 @@ WorldPacket const* WorldPackets::Mail::NotifyReceivedMail::Write()
return &_worldPacket;
}
-
-WorldPacket const* WorldPackets::Mail::ShowMailbox::Write()
-{
- _worldPacket << PostmasterGUID;
-
- return &_worldPacket;
-}
diff --git a/src/server/game/Server/Packets/MailPackets.h b/src/server/game/Server/Packets/MailPackets.h
index c7cb29bf4c0..5c65dce692e 100644
--- a/src/server/game/Server/Packets/MailPackets.h
+++ b/src/server/game/Server/Packets/MailPackets.h
@@ -235,16 +235,6 @@ namespace WorldPackets
float Delay = 0.0f;
};
-
- class ShowMailbox final : public ServerPacket
- {
- public:
- ShowMailbox() : ServerPacket(SMSG_SHOW_MAILBOX, 16) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid PostmasterGUID;
- };
}
}
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index bfbe9f748a4..dc07825fdf5 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -53,11 +53,13 @@ WorldPacket const* WorldPackets::Misc::SetCurrency::Write()
_worldPacket.WriteBit(WeeklyQuantity.has_value());
_worldPacket.WriteBit(TrackedQuantity.has_value());
_worldPacket.WriteBit(MaxQuantity.has_value());
- _worldPacket.WriteBit(Unused901.has_value());
+ _worldPacket.WriteBit(TotalEarned.has_value());
_worldPacket.WriteBit(SuppressChatLog);
_worldPacket.WriteBit(QuantityChange.has_value());
- _worldPacket.WriteBit(QuantityGainSource.has_value());
_worldPacket.WriteBit(QuantityLostSource.has_value());
+ _worldPacket.WriteBit(QuantityGainSource.has_value());
+ _worldPacket.WriteBit(FirstCraftOperationID.has_value());
+ _worldPacket.WriteBit(LastSpendTime.has_value());
_worldPacket.FlushBits();
if (WeeklyQuantity)
@@ -69,17 +71,23 @@ WorldPacket const* WorldPackets::Misc::SetCurrency::Write()
if (MaxQuantity)
_worldPacket << int32(*MaxQuantity);
- if (Unused901)
- _worldPacket << int32(*Unused901);
+ if (TotalEarned)
+ _worldPacket << int32(*TotalEarned);
if (QuantityChange)
_worldPacket << int32(*QuantityChange);
+ if (QuantityLostSource)
+ _worldPacket << int32(*QuantityLostSource);
+
if (QuantityGainSource)
_worldPacket << int32(*QuantityGainSource);
- if (QuantityLostSource)
- _worldPacket << int32(*QuantityLostSource);
+ if (FirstCraftOperationID)
+ _worldPacket << uint32(*FirstCraftOperationID);
+
+ if (LastSpendTime)
+ _worldPacket << *LastSpendTime;
return &_worldPacket;
}
@@ -102,7 +110,8 @@ WorldPacket const* WorldPackets::Misc::SetupCurrency::Write()
_worldPacket.WriteBit(data.MaxWeeklyQuantity.has_value());
_worldPacket.WriteBit(data.TrackedQuantity.has_value());
_worldPacket.WriteBit(data.MaxQuantity.has_value());
- _worldPacket.WriteBit(data.Unused901.has_value());
+ _worldPacket.WriteBit(data.TotalEarned.has_value());
+ _worldPacket.WriteBit(data.LastSpendTime.has_value());
_worldPacket.WriteBits(data.Flags, 5);
_worldPacket.FlushBits();
@@ -114,8 +123,10 @@ WorldPacket const* WorldPackets::Misc::SetupCurrency::Write()
_worldPacket << uint32(*data.TrackedQuantity);
if (data.MaxQuantity)
_worldPacket << int32(*data.MaxQuantity);
- if (data.Unused901)
- _worldPacket << int32(*data.Unused901);
+ if (data.TotalEarned)
+ _worldPacket << int32(*data.TotalEarned);
+ if (data.LastSpendTime)
+ _worldPacket << *data.LastSpendTime;
}
return &_worldPacket;
@@ -321,13 +332,6 @@ WorldPacket const* WorldPackets::Misc::PlayerBound::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Misc::BinderConfirm::Write()
-{
- _worldPacket << Unit;
-
- return &_worldPacket;
-}
-
WorldPacket const* WorldPackets::Misc::StartMirrorTimer::Write()
{
_worldPacket << int32(Timer);
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index ead73143901..f4b089371b7 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -63,17 +63,6 @@ namespace WorldPackets
uint32 AreaID = 0;
};
- class BinderConfirm final : public ServerPacket
- {
- public:
- BinderConfirm() : ServerPacket(SMSG_BINDER_CONFIRM, 16) { }
- BinderConfirm(ObjectGuid unit) : ServerPacket(SMSG_BINDER_CONFIRM, 16), Unit(unit) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid Unit;
- };
-
class InvalidatePlayer final : public ServerPacket
{
public:
@@ -116,13 +105,16 @@ namespace WorldPackets
int32 Type = 0;
int32 Quantity = 0;
uint32 Flags = 0;
+ std::vector<Item::UiEventToast> Toasts;
Optional<int32> WeeklyQuantity;
Optional<int32> TrackedQuantity;
Optional<int32> MaxQuantity;
- Optional<int32> Unused901;
+ Optional<int32> TotalEarned;
Optional<int32> QuantityChange;
Optional<int32> QuantityGainSource;
Optional<int32> QuantityLostSource;
+ Optional<uint32> FirstCraftOperationID;
+ Optional<Timestamp<>> LastSpendTime;
bool SuppressChatLog = false;
};
@@ -147,7 +139,8 @@ namespace WorldPackets
Optional<int32> MaxWeeklyQuantity; // Weekly Currency cap.
Optional<int32> TrackedQuantity;
Optional<int32> MaxQuantity;
- Optional<int32> Unused901;
+ Optional<int32> TotalEarned;
+ Optional<Timestamp<>> LastSpendTime;
uint8 Flags = 0; // 0 = none,
};
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index c631249f01a..391be953ee7 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -29,6 +29,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
bool hasFallData = hasFallDirection || movementInfo.jump.fallTime != 0;
bool hasSpline = false; // todo 6.x send this infos
bool hasInertia = movementInfo.inertia.has_value();
+ bool hasAdvFlying = movementInfo.advFlying.has_value();
data << movementInfo.guid;
data << uint32(movementInfo.flags);
@@ -57,6 +58,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
data.WriteBit(false); // HeightChangeFailed
data.WriteBit(false); // RemoteTimeValid
data.WriteBit(hasInertia);
+ data.WriteBit(hasAdvFlying);
data.FlushBits();
@@ -65,11 +67,17 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
if (hasInertia)
{
- data << movementInfo.inertia->guid;
+ data << uint32(movementInfo.inertia->id);
data << movementInfo.inertia->force.PositionXYZStream();
data << uint32(movementInfo.inertia->lifetime);
}
+ if (hasAdvFlying)
+ {
+ data << float(movementInfo.advFlying->forwardVelocity);
+ data << float(movementInfo.advFlying->upVelocity);
+ }
+
if (hasFallData)
{
data << uint32(movementInfo.jump.fallTime);
@@ -120,6 +128,7 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo)
data.ReadBit(); // HeightChangeFailed
data.ReadBit(); // RemoteTimeValid
bool hasInertia = data.ReadBit();
+ bool hasAdvFlying = data.ReadBit();
if (hasTransport)
data >> movementInfo.transport;
@@ -128,11 +137,19 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo)
{
movementInfo.inertia.emplace();
- data >> movementInfo.inertia->guid;
+ data >> movementInfo.inertia->id;
data >> movementInfo.inertia->force.PositionXYZStream();
data >> movementInfo.inertia->lifetime;
}
+ if (hasAdvFlying)
+ {
+ movementInfo.advFlying.emplace();
+
+ data >> movementInfo.advFlying->forwardVelocity;
+ data >> movementInfo.advFlying->upVelocity;
+ }
+
if (hasFall)
{
data >> movementInfo.jump.fallTime;
@@ -1008,12 +1025,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound
data << uint16(stateChange.MessageID);
data << uint32(stateChange.SequenceIndex);
data.WriteBit(stateChange.Speed.has_value());
+ data.WriteBit(stateChange.SpeedRange.has_value());
data.WriteBit(stateChange.KnockBack.has_value());
data.WriteBit(stateChange.VehicleRecID.has_value());
data.WriteBit(stateChange.CollisionHeight.has_value());
data.WriteBit(stateChange.MovementForce_.has_value());
data.WriteBit(stateChange.MovementForceGUID.has_value());
- data.WriteBit(stateChange.MovementInertiaGUID.has_value());
+ data.WriteBit(stateChange.MovementInertiaID.has_value());
data.WriteBit(stateChange.MovementInertiaLifetimeMs.has_value());
data.FlushBits();
@@ -1023,6 +1041,12 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound
if (stateChange.Speed)
data << float(*stateChange.Speed);
+ if (stateChange.SpeedRange)
+ {
+ data << float(stateChange.SpeedRange->Min);
+ data << float(stateChange.SpeedRange->Max);
+ }
+
if (stateChange.KnockBack)
{
data << float(stateChange.KnockBack->HorzSpeed);
@@ -1043,8 +1067,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound
if (stateChange.MovementForceGUID)
data << *stateChange.MovementForceGUID;
- if (stateChange.MovementInertiaGUID)
- data << *stateChange.MovementInertiaGUID;
+ if (stateChange.MovementInertiaID)
+ data << int32(*stateChange.MovementInertiaID);
if (stateChange.MovementInertiaLifetimeMs)
data << uint32(*stateChange.MovementInertiaLifetimeMs);
diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h
index 8b114cb0e1f..e9421952c33 100644
--- a/src/server/game/Server/Packets/MovementPackets.h
+++ b/src/server/game/Server/Packets/MovementPackets.h
@@ -670,6 +670,12 @@ namespace WorldPackets
float InitVertSpeed = 0.0f;
};
+ struct SpeedRange
+ {
+ float Min = 0.0f;
+ float Max = 0.0f;
+ };
+
struct MoveStateChange
{
MoveStateChange(OpcodeServer messageId, uint32 sequenceIndex) : MessageID(messageId), SequenceIndex(sequenceIndex) { }
@@ -677,12 +683,13 @@ namespace WorldPackets
uint16 MessageID = 0;
uint32 SequenceIndex = 0;
Optional<float> Speed;
+ Optional<SpeedRange> SpeedRange;
Optional<KnockBackInfo> KnockBack;
Optional<int32> VehicleRecID;
Optional<CollisionHeightInfo> CollisionHeight;
Optional<MovementForce> MovementForce_;
Optional<ObjectGuid> MovementForceGUID;
- Optional<ObjectGuid> MovementInertiaGUID;
+ Optional<int32> MovementInertiaID;
Optional<uint32> MovementInertiaLifetimeMs;
};
diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.h b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
index eaf56d5344d..c9f921a21ec 100644
--- a/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
+++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
@@ -82,7 +82,6 @@ namespace WorldPackets
int32 MapChallengeModeID = 0;
std::vector<DungeonScoreBestRunForAffix> BestRuns;
float OverAllScore = 0.0f;
-
};
struct DungeonScoreSeasonData
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 74551b6380b..7a6d003e4a3 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -18,10 +18,56 @@
#include "NPCPackets.h"
#include "Util.h"
-namespace WorldPackets
+namespace WorldPackets::NPC
{
-namespace NPC
+ByteBuffer& operator<<(ByteBuffer& data, TreasureItem const& treasureItem)
+{
+ data.WriteBits(AsUnderlyingType(treasureItem.Type), 1);
+ data << int32(treasureItem.ID);
+ data << int32(treasureItem.Quantity);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, TreasureLootList const& treasureLootList)
{
+ data << uint32(treasureLootList.Items.size());
+ for (TreasureItem const& treasureItem : treasureLootList.Items)
+ data << treasureItem;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption)
+{
+ data << int32(gossipOption.GossipOptionID);
+ data << uint8(gossipOption.OptionNPC);
+ data << int8(gossipOption.OptionFlags);
+ data << int32(gossipOption.OptionCost);
+ data << uint32(gossipOption.OptionLanguage);
+ data << int32(gossipOption.Flags);
+ data << int32(gossipOption.OrderIndex);
+ data.WriteBits(gossipOption.Text.size(), 12);
+ data.WriteBits(gossipOption.Confirm.size(), 12);
+ data.WriteBits(AsUnderlyingType(gossipOption.Status), 2);
+ data.WriteBit(gossipOption.SpellID.has_value());
+ data.WriteBit(gossipOption.OverrideIconID.has_value());
+ data.FlushBits();
+
+ data << gossipOption.Treasure;
+
+ data.WriteString(gossipOption.Text);
+ data.WriteString(gossipOption.Confirm);
+
+ if (gossipOption.SpellID)
+ data << int32(*gossipOption.SpellID);
+
+ if (*gossipOption.OverrideIconID)
+ data << int32(*gossipOption.OverrideIconID);
+
+ return data;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText)
{
data << int32(gossipText.QuestID);
@@ -44,22 +90,14 @@ void Hello::Read()
_worldPacket >> Unit;
}
-ByteBuffer& operator<<(ByteBuffer& data, TreasureItem const& treasureItem)
-{
- data.WriteBits(AsUnderlyingType(treasureItem.Type), 1);
- data << int32(treasureItem.ID);
- data << int32(treasureItem.Quantity);
-
- return data;
-}
-
-ByteBuffer& operator<<(ByteBuffer& data, TreasureLootList const& treasureLootList)
+WorldPacket const* NPCInteractionOpenResult::Write()
{
- data << uint32(treasureLootList.Items.size());
- for (TreasureItem const& treasureItem : treasureLootList.Items)
- data << treasureItem;
+ _worldPacket << Npc;
+ _worldPacket << int32(InteractionType);
+ _worldPacket.WriteBit(Success);
+ _worldPacket.FlushBits();
- return data;
+ return &_worldPacket;
}
WorldPacket const* GossipMessage::Write()
@@ -67,31 +105,20 @@ WorldPacket const* GossipMessage::Write()
_worldPacket << GossipGUID;
_worldPacket << int32(GossipID);
_worldPacket << int32(FriendshipFactionID);
- _worldPacket << int32(TextID);
_worldPacket << uint32(GossipOptions.size());
_worldPacket << uint32(GossipText.size());
+ _worldPacket.WriteBit(TextID.has_value());
+ _worldPacket.WriteBit(TextID2.has_value());
+ _worldPacket.FlushBits();
for (ClientGossipOptions const& options : GossipOptions)
- {
- _worldPacket << int32(options.ClientOption);
- _worldPacket << uint8(options.OptionNPC);
- _worldPacket << int8(options.OptionFlags);
- _worldPacket << int32(options.OptionCost);
- _worldPacket << uint32(options.OptionLanguage);
- _worldPacket.WriteBits(options.Text.size(), 12);
- _worldPacket.WriteBits(options.Confirm.size(), 12);
- _worldPacket.WriteBits(AsUnderlyingType(options.Status), 2);
- _worldPacket.WriteBit(options.SpellID.has_value());
- _worldPacket.FlushBits();
-
- _worldPacket << options.Treasure;
-
- _worldPacket.WriteString(options.Text);
- _worldPacket.WriteString(options.Confirm);
-
- if (options.SpellID)
- _worldPacket << int32(*options.SpellID);
- }
+ _worldPacket << options;
+
+ if (TextID)
+ _worldPacket << int32(*TextID);
+
+ if (TextID2)
+ _worldPacket << int32(*TextID2);
for (ClientGossipText const& text : GossipText)
_worldPacket << text;
@@ -101,20 +128,21 @@ WorldPacket const* GossipMessage::Write()
ByteBuffer& operator<<(ByteBuffer& data, VendorItem const& item)
{
- data << uint32(item.MuID);
- data << int32(item.Type);
- data << int32(item.Quantity);
data << uint64(item.Price);
+ data << uint32(item.MuID);
data << int32(item.Durability);
data << int32(item.StackCount);
+ data << int32(item.Quantity);
data << int32(item.ExtendedCostID);
data << int32(item.PlayerConditionFailed);
- data << item.Item;
+ data.WriteBits(item.Type, 3);
data.WriteBit(item.Locked);
data.WriteBit(item.DoNotFilterOnVendor);
data.WriteBit(item.Refundable);
data.FlushBits();
+ data << item.Item;
+
return data;
}
@@ -154,34 +182,33 @@ WorldPacket const* TrainerList::Write()
return &_worldPacket;
}
-WorldPacket const* ShowBank::Write()
-{
- _worldPacket << Guid;
-
- return &_worldPacket;
-}
-
void GossipSelectOption::Read()
{
_worldPacket >> GossipUnit;
_worldPacket >> GossipID;
- _worldPacket >> GossipIndex;
+ _worldPacket >> GossipOptionID;
uint32 length = _worldPacket.ReadBits(8);
PromotionCode = _worldPacket.ReadString(length);
}
-WorldPacket const* GossipComplete::Write()
+WorldPacket const* GossipOptionNPCInteraction::Write()
{
- _worldPacket.WriteBit(SuppressSound);
+ _worldPacket << GossipGUID;
+ _worldPacket << int32(GossipNpcOptionID);
+ _worldPacket.WriteBit(FriendshipFactionID.has_value());
_worldPacket.FlushBits();
+ if (FriendshipFactionID)
+ _worldPacket << int32(*FriendshipFactionID);
+
return &_worldPacket;
}
-WorldPacket const* PlayerTabardVendorActivate::Write()
+WorldPacket const* GossipComplete::Write()
{
- _worldPacket << Vendor;
+ _worldPacket.WriteBit(SuppressSound);
+ _worldPacket.FlushBits();
return &_worldPacket;
}
@@ -206,13 +233,6 @@ void SpiritHealerActivate::Read()
_worldPacket >> Healer;
}
-WorldPacket const* SpiritHealerConfirm::Write()
-{
- _worldPacket << Unit;
-
- return &_worldPacket;
-}
-
void TrainerBuySpell::Read()
{
_worldPacket >> TrainerGUID;
@@ -241,4 +261,3 @@ void SetPetSlot::Read()
_worldPacket >> StableMaster;
}
}
-}
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index ab6f04fd4af..cb6666cfa71 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -24,9 +24,11 @@
#include "Position.h"
#include <array>
+enum class GossipOptionFlags : int32;
enum class GossipOptionNpc : uint8;
enum class GossipOptionStatus : uint8;
enum class GossipOptionRewardType : uint8;
+enum class PlayerInteractionType : int32;
namespace WorldPackets
{
@@ -49,6 +51,18 @@ namespace WorldPackets
ObjectGuid Unit;
};
+ class TC_GAME_API NPCInteractionOpenResult final : public ServerPacket
+ {
+ public:
+ NPCInteractionOpenResult() : ServerPacket(SMSG_NPC_INTERACTION_OPEN_RESULT, 16 + 4 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Npc;
+ PlayerInteractionType InteractionType = {};
+ bool Success = true;
+ };
+
struct TreasureItem
{
GossipOptionRewardType Type = GossipOptionRewardType(0);
@@ -63,16 +77,19 @@ namespace WorldPackets
struct ClientGossipOptions
{
- int32 ClientOption = 0;
- GossipOptionNpc OptionNPC = GossipOptionNpc(0);
+ int32 GossipOptionID = 0;
+ GossipOptionNpc OptionNPC = {};
uint8 OptionFlags = 0;
int32 OptionCost = 0;
uint32 OptionLanguage = 0;
- GossipOptionStatus Status = GossipOptionStatus(0);
- std::string Text;
- std::string Confirm;
+ GossipOptionFlags Flags = {};
+ int32 OrderIndex = 0;
+ GossipOptionStatus Status = {};
+ std::string_view Text;
+ std::string_view Confirm;
TreasureLootList Treasure;
Optional<int32> SpellID;
+ Optional<int32> OverrideIconID;
};
struct ClientGossipText
@@ -98,7 +115,8 @@ namespace WorldPackets
int32 FriendshipFactionID = 0;
ObjectGuid GossipGUID;
std::vector<ClientGossipText> GossipText;
- int32 TextID = 0;
+ Optional<int32> TextID;
+ Optional<int32> TextID2;
int32 GossipID = 0;
};
@@ -110,11 +128,23 @@ namespace WorldPackets
void Read() override;
ObjectGuid GossipUnit;
- int32 GossipIndex = 0;
+ int32 GossipOptionID = 0;
int32 GossipID = 0;
std::string PromotionCode;
};
+ class GossipOptionNPCInteraction final : public ServerPacket
+ {
+ public:
+ GossipOptionNPCInteraction() : ServerPacket(SMSG_GOSSIP_OPTION_NPC_INTERACTION, 16 + 4 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid GossipGUID;
+ int32 GossipNpcOptionID = 0;
+ Optional<int32> FriendshipFactionID;
+ };
+
class GossipComplete final : public ServerPacket
{
public:
@@ -178,26 +208,6 @@ namespace WorldPackets
std::string Greeting;
};
- class ShowBank final : public ServerPacket
- {
- public:
- ShowBank() : ServerPacket(SMSG_SHOW_BANK, 16) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid Guid;
- };
-
- class PlayerTabardVendorActivate final : public ServerPacket
- {
- public:
- PlayerTabardVendorActivate() : ServerPacket(SMSG_PLAYER_TABARD_VENDOR_ACTIVATE, 16) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid Vendor;
- };
-
class GossipPOI final : public ServerPacket
{
public:
@@ -224,16 +234,6 @@ namespace WorldPackets
ObjectGuid Healer;
};
- class TC_GAME_API SpiritHealerConfirm final : public ServerPacket
- {
- public:
- SpiritHealerConfirm() : ServerPacket(SMSG_SPIRIT_HEALER_CONFIRM, 16) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid Unit;
- };
-
class TrainerBuySpell final : public ClientPacket
{
public:
diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h
index a4ecc96c08c..f445169784c 100644
--- a/src/server/game/Server/Packets/PacketUtilities.h
+++ b/src/server/game/Server/Packets/PacketUtilities.h
@@ -78,6 +78,7 @@ namespace WorldPackets
public:
bool empty() const { return _storage.empty(); }
+ std::size_t length() const { return _storage.length(); }
char const* c_str() const { return _storage.c_str(); }
operator std::string_view() const { return _storage; }
@@ -132,11 +133,11 @@ namespace WorldPackets
/**
* Utility class for automated prevention of loop counter spoofing in client packets
*/
- template<typename T, std::size_t N>
+ template<typename T, std::size_t N, typename Container = boost::container::static_vector<T, N>>
class Array
{
public:
- typedef boost::container::static_vector<T, N> storage_type;
+ typedef Container storage_type;
typedef std::integral_constant<std::size_t, N> max_capacity;
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 76d803dbf17..43fd278239f 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -18,9 +18,7 @@
#include "QuestPackets.h"
#include "Util.h"
-namespace WorldPackets
-{
-namespace Quest
+namespace WorldPackets::Quest
{
ByteBuffer& operator<<(ByteBuffer& data, QuestCompleteDisplaySpell const& questDisplaySpell)
{
@@ -30,6 +28,18 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestCompleteDisplaySpell const& questD
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, ConditionalQuestText const& conditionalQuestText)
+{
+ data << int32(conditionalQuestText.PlayerConditionID);
+ data << int32(conditionalQuestText.QuestGiverCreatureID);
+ data.WriteBits(conditionalQuestText.Text.length(), 12);
+ data.FlushBits();
+
+ data.WriteString(conditionalQuestText.Text);
+
+ return data;
+}
+
void QuestGiverStatusQuery::Read()
{
_worldPacket >> QuestGiverGUID;
@@ -159,6 +169,10 @@ WorldPacket const* QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.Expansion);
_worldPacket << int32(Info.ManagedWorldStateID);
_worldPacket << int32(Info.QuestSessionBonus);
+ _worldPacket << int32(Info.QuestGiverCreatureID);
+
+ _worldPacket << uint32(Info.ConditionalQuestDescription.size());
+ _worldPacket << uint32(Info.ConditionalQuestCompletionLog.size());
for (QuestCompleteDisplaySpell const& rewardDisplaySpell : Info.RewardDisplaySpell)
_worldPacket << rewardDisplaySpell;
@@ -205,6 +219,12 @@ WorldPacket const* QueryQuestInfoResponse::Write()
_worldPacket.WriteString(Info.PortraitTurnInText);
_worldPacket.WriteString(Info.PortraitTurnInName);
_worldPacket.WriteString(Info.QuestCompletionLog);
+
+ for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestDescription)
+ _worldPacket << conditionalQuestText;
+
+ for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestCompletionLog)
+ _worldPacket << conditionalQuestText;
}
return &_worldPacket;
@@ -315,6 +335,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestGiverOfferReward const& offer)
data << int32(offer.QuestID);
data << int32(offer.QuestFlags[0]); // Flags
data << int32(offer.QuestFlags[1]); // FlagsEx
+ data << int32(offer.QuestFlags[2]); // FlagsEx2
data << int32(offer.SuggestedPartyMembers);
data << int32(offer.Emotes.size());
for (QuestDescEmote const& emote : offer.Emotes)
@@ -340,6 +361,8 @@ WorldPacket const* QuestGiverOfferRewardMessage::Write()
_worldPacket << int32(PortraitGiverMount);
_worldPacket << int32(PortraitGiverModelSceneID);
_worldPacket << int32(PortraitTurnIn);
+ _worldPacket << int32(QuestGiverCreatureID);
+ _worldPacket << uint32(ConditionalRewardText.size());
_worldPacket.WriteBits(QuestTitle.size(), 9);
_worldPacket.WriteBits(RewardText.size(), 12);
@@ -349,6 +372,9 @@ WorldPacket const* QuestGiverOfferRewardMessage::Write()
_worldPacket.WriteBits(PortraitTurnInName.size(), 8);
_worldPacket.FlushBits();
+ for (ConditionalQuestText const& conditionalQuestText : ConditionalRewardText)
+ _worldPacket << conditionalQuestText;
+
_worldPacket.WriteString(QuestTitle);
_worldPacket.WriteString(RewardText);
_worldPacket.WriteString(PortraitGiverText);
@@ -407,12 +433,15 @@ WorldPacket const* QuestGiverQuestDetails::Write()
_worldPacket << int32(PortraitTurnIn);
_worldPacket << uint32(QuestFlags[0]); // Flags
_worldPacket << uint32(QuestFlags[1]); // FlagsEx
+ _worldPacket << uint32(QuestFlags[2]); // FlagsEx
_worldPacket << int32(SuggestedPartyMembers);
_worldPacket << uint32(LearnSpells.size());
_worldPacket << uint32(DescEmotes.size());
_worldPacket << uint32(Objectives.size());
_worldPacket << int32(QuestStartItemID);
_worldPacket << int32(QuestSessionBonus);
+ _worldPacket << int32(QuestGiverCreatureID);
+ _worldPacket << uint32(ConditionalDescriptionText.size());
for (int32 spell : LearnSpells)
_worldPacket << int32(spell);
@@ -453,6 +482,9 @@ WorldPacket const* QuestGiverQuestDetails::Write()
_worldPacket.WriteString(PortraitTurnInText);
_worldPacket.WriteString(PortraitTurnInName);
+ for (ConditionalQuestText const& conditionalQuestText : ConditionalDescriptionText)
+ _worldPacket << conditionalQuestText;
+
return &_worldPacket;
}
@@ -465,6 +497,7 @@ WorldPacket const* QuestGiverRequestItems::Write()
_worldPacket << int32(CompEmoteType);
_worldPacket << uint32(QuestFlags[0]);
_worldPacket << uint32(QuestFlags[1]);
+ _worldPacket << uint32(QuestFlags[2]);
_worldPacket << int32(SuggestPartyMembers);
_worldPacket << int32(MoneyToGet);
_worldPacket << int32(Collect.size());
@@ -487,10 +520,16 @@ WorldPacket const* QuestGiverRequestItems::Write()
_worldPacket.WriteBit(AutoLaunched);
_worldPacket.FlushBits();
+ _worldPacket << int32(QuestGiverCreatureID);
+ _worldPacket << uint32(ConditionalCompletionText.size());
+
_worldPacket.WriteBits(QuestTitle.size(), 9);
_worldPacket.WriteBits(CompletionText.size(), 12);
_worldPacket.FlushBits();
+ for (ConditionalQuestText const& conditionalQuestText : ConditionalCompletionText)
+ _worldPacket << conditionalQuestText;
+
_worldPacket.WriteString(QuestTitle);
_worldPacket.WriteString(CompletionText);
@@ -773,4 +812,3 @@ void ChoiceResponse::Read()
IsReroll = _worldPacket.ReadBit();
}
}
-}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 630cb3880cc..14c9f25e981 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -113,6 +113,13 @@ namespace WorldPackets
int32 PlayerConditionID = 0;
};
+ struct ConditionalQuestText
+ {
+ int32 PlayerConditionID = 0;
+ int32 QuestGiverCreatureID = 0;
+ std::string_view Text;
+ };
+
struct QuestInfo
{
int32 QuestID = 0;
@@ -171,7 +178,10 @@ namespace WorldPackets
int32 Expansion = 0;
int32 ManagedWorldStateID = 0;
int32 QuestSessionBonus = 0;
+ int32 QuestGiverCreatureID = 0; // used to select ConditionalQuestText
std::vector<QuestObjective> Objectives;
+ std::vector<ConditionalQuestText> ConditionalQuestDescription;
+ std::vector<ConditionalQuestText> ConditionalQuestCompletionLog;
int32 RewardItems[QUEST_REWARD_ITEM_COUNT] = { };
int32 RewardAmount[QUEST_REWARD_ITEM_COUNT] = { };
int32 ItemDrop[QUEST_ITEM_DROP_COUNT] = { };
@@ -287,7 +297,7 @@ namespace WorldPackets
int32 SuggestedPartyMembers = 0;
QuestRewards Rewards;
std::vector<QuestDescEmote> Emotes;
- int32 QuestFlags[2] = { }; // Flags and FlagsEx
+ int32 QuestFlags[3] = { }; // Flags and FlagsEx
};
class QuestGiverOfferRewardMessage final : public ServerPacket
@@ -301,12 +311,14 @@ namespace WorldPackets
int32 PortraitGiver = 0;
int32 PortraitGiverMount = 0;
int32 PortraitGiverModelSceneID = 0;
+ int32 QuestGiverCreatureID = 0;
std::string QuestTitle;
std::string RewardText;
std::string PortraitGiverText;
std::string PortraitGiverName;
std::string PortraitTurnInText;
std::string PortraitTurnInName;
+ std::vector<ConditionalQuestText> ConditionalRewardText;
QuestGiverOfferReward QuestData;
int32 QuestPackageID = 0;
};
@@ -383,7 +395,7 @@ namespace WorldPackets
ObjectGuid InformUnit;
int32 QuestID = 0;
int32 QuestPackageID = 0;
- uint32 QuestFlags[2] = { };
+ uint32 QuestFlags[3] = { };
int32 SuggestedPartyMembers = 0;
QuestRewards Rewards;
std::vector<QuestObjectiveSimple> Objectives;
@@ -395,6 +407,7 @@ namespace WorldPackets
int32 PortraitGiverModelSceneID = 0;
int32 QuestStartItemID = 0;
int32 QuestSessionBonus = 0;
+ int32 QuestGiverCreatureID = 0;
std::string PortraitGiverText;
std::string PortraitGiverName;
std::string PortraitTurnInText;
@@ -402,6 +415,7 @@ namespace WorldPackets
std::string QuestTitle;
std::string LogDescription;
std::string DescriptionText;
+ std::vector<ConditionalQuestText> ConditionalDescriptionText;
bool DisplayPopup = false;
bool StartCheat = false;
bool AutoLaunched = false;
@@ -440,9 +454,10 @@ namespace WorldPackets
std::vector<QuestObjectiveCollect> Collect;
std::vector<QuestCurrency> Currency;
int32 StatusFlags = 0;
- uint32 QuestFlags[2] = { };
+ uint32 QuestFlags[3] = { };
std::string QuestTitle;
std::string CompletionText;
+ std::vector<ConditionalQuestText> ConditionalCompletionText;
};
class QuestGiverRequestReward final : public ClientPacket
diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp
index 5029e785cc6..8896c2071c0 100644
--- a/src/server/game/Server/Packets/ReputationPackets.cpp
+++ b/src/server/game/Server/Packets/ReputationPackets.cpp
@@ -21,7 +21,7 @@ WorldPacket const* WorldPackets::Reputation::InitializeFactions::Write()
{
for (uint16 i = 0; i < FactionCount; ++i)
{
- _worldPacket << uint8(FactionFlags[i]);
+ _worldPacket << uint16(FactionFlags[i]);
_worldPacket << int32(FactionStandings[i]);
}
@@ -58,7 +58,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Reputation::FactionStandi
WorldPacket const* WorldPackets::Reputation::SetFactionStanding::Write()
{
- _worldPacket << float(ReferAFriendBonus);
_worldPacket << float(BonusFromAchievementSystem);
_worldPacket << uint32(Faction.size());
for (FactionStandingData const& factionStanding : Faction)
diff --git a/src/server/game/Server/Packets/ReputationPackets.h b/src/server/game/Server/Packets/ReputationPackets.h
index b3eecced951..84fe8f001e8 100644
--- a/src/server/game/Server/Packets/ReputationPackets.h
+++ b/src/server/game/Server/Packets/ReputationPackets.h
@@ -25,23 +25,18 @@ namespace WorldPackets
{
namespace Reputation
{
- static uint16 const FactionCount = 400;
+ static constexpr uint16 FactionCount = 443;
class InitializeFactions final : public ServerPacket
{
public:
- InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, FactionCount * (4 + 1) + FactionCount / 8)
- {
- FactionStandings.fill(0);
- FactionHasBonus.fill(false);
- FactionFlags.fill(0);
- }
+ InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, FactionCount * (4 + 2) + FactionCount / 8) { }
WorldPacket const* Write() override;
- std::array<int32, FactionCount> FactionStandings;
- std::array<bool, FactionCount> FactionHasBonus; ///< @todo: implement faction bonus
- std::array<uint8, FactionCount> FactionFlags; ///< @see enum FactionFlags
+ std::array<int32, FactionCount> FactionStandings = { };
+ std::array<bool, FactionCount> FactionHasBonus = { }; ///< @todo: implement faction bonus
+ std::array<uint16, FactionCount> FactionFlags = { }; ///< @see enum FactionFlags
};
class RequestForcedReactions final : public ClientPacket
@@ -84,7 +79,6 @@ namespace WorldPackets
WorldPacket const* Write() override;
- float ReferAFriendBonus = 0.0f;
float BonusFromAchievementSystem = 0.0f;
std::vector<FactionStandingData> Faction;
bool ShowVisual = false;
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index ebf38bba3ad..84b5066863f 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -19,30 +19,32 @@
#include "CharacterPackets.h"
#include "SpellPackets.h"
-void WorldPackets::Spells::CancelAura::Read()
+namespace WorldPackets::Spells
+{
+void CancelAura::Read()
{
_worldPacket >> SpellID;
_worldPacket >> CasterGUID;
}
-void WorldPackets::Spells::CancelChannelling::Read()
+void CancelChannelling::Read()
{
_worldPacket >> ChannelSpell;
_worldPacket >> Reason;
}
-void WorldPackets::Spells::CancelModSpeedNoControlAuras::Read()
+void CancelModSpeedNoControlAuras::Read()
{
_worldPacket >> TargetGUID;
}
-void WorldPackets::Spells::PetCancelAura::Read()
+void PetCancelAura::Read()
{
_worldPacket >> PetGUID;
_worldPacket >> SpellID;
}
-WorldPacket const* WorldPackets::Spells::CategoryCooldown::Write()
+WorldPacket const* CategoryCooldown::Write()
{
_worldPacket.reserve(4 + 8 * CategoryCooldowns.size());
@@ -57,7 +59,7 @@ WorldPacket const* WorldPackets::Spells::CategoryCooldown::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SendKnownSpells::Write()
+WorldPacket const* SendKnownSpells::Write()
{
_worldPacket.reserve(1 + 4 * KnownSpells.size() + 4 * FavoriteSpells.size());
@@ -74,7 +76,7 @@ WorldPacket const* WorldPackets::Spells::SendKnownSpells::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::UpdateActionButtons::Write()
+WorldPacket const* UpdateActionButtons::Write()
{
_worldPacket.append(ActionButtons.data(), ActionButtons.size());
_worldPacket << Reason;
@@ -82,13 +84,13 @@ WorldPacket const* WorldPackets::Spells::UpdateActionButtons::Write()
return &_worldPacket;
}
-void WorldPackets::Spells::SetActionButton::Read()
+void SetActionButton::Read()
{
_worldPacket >> Action;
_worldPacket >> Index;
}
-WorldPacket const* WorldPackets::Spells::SendUnlearnSpells::Write()
+WorldPacket const* SendUnlearnSpells::Write()
{
_worldPacket << uint32(Spells.size());
for (uint32 spellId : Spells)
@@ -97,7 +99,7 @@ WorldPacket const* WorldPackets::Spells::SendUnlearnSpells::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraDataInfo const& auraData)
+ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData)
{
data << auraData.CastID;
data << int32(auraData.SpellID);
@@ -139,7 +141,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraDataInfo cons
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraInfo const& aura)
+ByteBuffer& operator<<(ByteBuffer& data, AuraInfo const& aura)
{
data << aura.Slot;
data.WriteBit(aura.AuraData.has_value());
@@ -151,7 +153,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraInfo const& a
return data;
}
-WorldPacket const* WorldPackets::Spells::AuraUpdate::Write()
+WorldPacket const* AuraUpdate::Write()
{
_worldPacket.WriteBit(UpdateAll);
_worldPacket.WriteBits(Auras.size(), 9);
@@ -163,7 +165,7 @@ WorldPacket const* WorldPackets::Spells::AuraUpdate::Write()
return &_worldPacket;
}
-ByteBuffer& operator>>(ByteBuffer& buffer, Optional<WorldPackets::Spells::TargetLocation>& location)
+ByteBuffer& operator>>(ByteBuffer& buffer, Optional<TargetLocation>& location)
{
location.emplace();
buffer >> location->Transport;
@@ -173,11 +175,11 @@ ByteBuffer& operator>>(ByteBuffer& buffer, Optional<WorldPackets::Spells::Target
return buffer;
}
-ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellTargetData& targetData)
+ByteBuffer& operator>>(ByteBuffer& buffer, SpellTargetData& targetData)
{
buffer.ResetBitPos();
- targetData.Flags = buffer.ReadBits(26);
+ targetData.Flags = buffer.ReadBits(28);
bool hasSrcLocation = buffer.ReadBit();
bool hasDstLocation = buffer.ReadBit();
bool hasOrientation = buffer.ReadBit();
@@ -204,28 +206,32 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellTargetData
return buffer;
}
-ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::MissileTrajectoryRequest& trajectory)
+ByteBuffer& operator>>(ByteBuffer& buffer, MissileTrajectoryRequest& trajectory)
{
buffer >> trajectory.Pitch;
buffer >> trajectory.Speed;
return buffer;
}
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Spells::SpellOptionalReagent& optionalReagent)
+ByteBuffer& operator>>(ByteBuffer& data, SpellCraftingReagent& optionalReagent)
{
data >> optionalReagent.ItemID;
- data >> optionalReagent.Slot;
+ data >> optionalReagent.DataSlotIndex;
+ data >> optionalReagent.Quantity;
+ if (data.ReadBit())
+ optionalReagent.Unknown_1000 = data.read<uint8>();
+
return data;
}
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Spells::SpellExtraCurrencyCost& extraCurrencyCost)
+ByteBuffer& operator>>(ByteBuffer& data, SpellExtraCurrencyCost& extraCurrencyCost)
{
data >> extraCurrencyCost.CurrencyID;
data >> extraCurrencyCost.Count;
return data;
}
-ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastRequest& request)
+ByteBuffer& operator>>(ByteBuffer& buffer, SpellCastRequest& request)
{
buffer >> request.CastID;
buffer >> request.Misc[0];
@@ -234,27 +240,31 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastReques
buffer >> request.Visual;
buffer >> request.MissileTrajectory;
buffer >> request.CraftingNPC;
- request.OptionalReagents.resize(buffer.read<uint32>());
request.OptionalCurrencies.resize(buffer.read<uint32>());
+ request.OptionalReagents.resize(buffer.read<uint32>());
- for (WorldPackets::Spells::SpellOptionalReagent& optionalReagent : request.OptionalReagents)
- buffer >> optionalReagent;
-
- for (WorldPackets::Spells::SpellExtraCurrencyCost& optionalCurrency : request.OptionalCurrencies)
+ for (SpellExtraCurrencyCost& optionalCurrency : request.OptionalCurrencies)
buffer >> optionalCurrency;
request.SendCastFlags = buffer.ReadBits(5);
bool hasMoveUpdate = buffer.ReadBit();
request.Weight.resize(buffer.ReadBits(2));
+ bool hasCraftingOrderID = buffer.ReadBit();
buffer >> request.Target;
+ if (hasCraftingOrderID)
+ request.CraftingOrderID = buffer.read<uint64>();
+
+ for (SpellCraftingReagent& optionalReagent : request.OptionalReagents)
+ buffer >> optionalReagent;
+
if (hasMoveUpdate)
{
request.MoveUpdate.emplace();
buffer >> *request.MoveUpdate;
}
- for (WorldPackets::Spells::SpellWeight& weight : request.Weight)
+ for (SpellWeight& weight : request.Weight)
{
buffer.ResetBitPos();
weight.Type = buffer.ReadBits(2);
@@ -265,18 +275,18 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastReques
return buffer;
}
-void WorldPackets::Spells::CastSpell::Read()
+void CastSpell::Read()
{
_worldPacket >> Cast;
}
-void WorldPackets::Spells::PetCastSpell::Read()
+void PetCastSpell::Read()
{
_worldPacket >> PetGUID;
_worldPacket >> Cast;
}
-void WorldPackets::Spells::UseItem::Read()
+void UseItem::Read()
{
_worldPacket >> PackSlot;
_worldPacket >> Slot;
@@ -284,7 +294,7 @@ void WorldPackets::Spells::UseItem::Read()
_worldPacket >> Cast;
}
-WorldPacket const* WorldPackets::Spells::SpellPrepare::Write()
+WorldPacket const* SpellPrepare::Write()
{
_worldPacket << ClientCastID;
_worldPacket << ServerCastID;
@@ -292,7 +302,7 @@ WorldPacket const* WorldPackets::Spells::SpellPrepare::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::TargetLocation const& targetLocation)
+ByteBuffer& operator<<(ByteBuffer& data, TargetLocation const& targetLocation)
{
data << targetLocation.Transport;
data << float(targetLocation.Location.m_positionX);
@@ -301,9 +311,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::TargetLocation co
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellTargetData const& spellTargetData)
+ByteBuffer& operator<<(ByteBuffer& data, SpellTargetData const& spellTargetData)
{
- data.WriteBits(spellTargetData.Flags, 26);
+ data.WriteBits(spellTargetData.Flags, 28);
data.WriteBit(spellTargetData.SrcLocation.has_value());
data.WriteBit(spellTargetData.DstLocation.has_value());
data.WriteBit(spellTargetData.Orientation.has_value());
@@ -331,7 +341,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellTargetData c
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellMissStatus const& spellMissStatus)
+ByteBuffer& operator<<(ByteBuffer& data, SpellMissStatus const& spellMissStatus)
{
data.WriteBits(spellMissStatus.Reason, 4);
if (spellMissStatus.Reason == SPELL_MISS_REFLECT)
@@ -341,20 +351,20 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellMissStatus c
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellHitStatus const& spellHitStatus)
+ByteBuffer& operator<<(ByteBuffer& data, SpellHitStatus const& spellHitStatus)
{
data << uint8(spellHitStatus.Reason);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellPowerData const& spellPowerData)
+ByteBuffer& operator<<(ByteBuffer& data, SpellPowerData const& spellPowerData)
{
data << int32(spellPowerData.Cost);
data << int8(spellPowerData.Type);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::RuneData const& runeData)
+ByteBuffer& operator<<(ByteBuffer& data, RuneData const& runeData)
{
data << uint8(runeData.Start);
data << uint8(runeData.Count);
@@ -365,28 +375,28 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::RuneData const& r
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::MissileTrajectoryResult const& missileTrajectory)
+ByteBuffer& operator<<(ByteBuffer& data, MissileTrajectoryResult const& missileTrajectory)
{
data << uint32(missileTrajectory.TravelTime);
data << float(missileTrajectory.Pitch);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellAmmo const& spellAmmo)
+ByteBuffer& operator<<(ByteBuffer& data, SpellAmmo const& spellAmmo)
{
data << int32(spellAmmo.DisplayID);
data << int8(spellAmmo.InventoryType);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::CreatureImmunities const& immunities)
+ByteBuffer& operator<<(ByteBuffer& data, CreatureImmunities const& immunities)
{
data << int32(immunities.School);
data << int32(immunities.Value);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellHealPrediction const& spellPred)
+ByteBuffer& operator<<(ByteBuffer& data, SpellHealPrediction const& spellPred)
{
data << int32(spellPred.Points);
data << uint8(spellPred.Type);
@@ -394,7 +404,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellHealPredicti
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData const& spellCastData)
+ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData)
{
data << spellCastData.CasterGUID;
data << spellCastData.CasterUnit;
@@ -419,7 +429,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con
data.WriteBits(spellCastData.TargetPoints.size(), 16);
data.FlushBits();
- for (WorldPackets::Spells::SpellMissStatus const& missStatus : spellCastData.MissStatus)
+ for (SpellMissStatus const& missStatus : spellCastData.MissStatus)
data << missStatus;
data << spellCastData.Target;
@@ -430,29 +440,29 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con
for (ObjectGuid const& missTarget : spellCastData.MissTargets)
data << missTarget;
- for (WorldPackets::Spells::SpellHitStatus const& hitStatus : spellCastData.HitStatus)
+ for (SpellHitStatus const& hitStatus : spellCastData.HitStatus)
data << hitStatus;
- for (WorldPackets::Spells::SpellPowerData const& power : spellCastData.RemainingPower)
+ for (SpellPowerData const& power : spellCastData.RemainingPower)
data << power;
if (spellCastData.RemainingRunes)
data << *spellCastData.RemainingRunes;
- for (WorldPackets::Spells::TargetLocation const& targetLoc : spellCastData.TargetPoints)
+ for (TargetLocation const& targetLoc : spellCastData.TargetPoints)
data << targetLoc;
return data;
}
-WorldPacket const* WorldPackets::Spells::SpellStart::Write()
+WorldPacket const* SpellStart::Write()
{
_worldPacket << Cast;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SpellGo::Write()
+WorldPacket const* SpellGo::Write()
{
*this << Cast;
@@ -464,42 +474,51 @@ WorldPacket const* WorldPackets::Spells::SpellGo::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::LearnedSpells::Write()
+ByteBuffer& operator<<(ByteBuffer& data, LearnedSpellInfo const& learnedSpellInfo)
{
- _worldPacket << uint32(SpellID.size());
- _worldPacket << uint32(FavoriteSpellID.size());
- _worldPacket << uint32(SpecializationID);
- for (int32 spell : SpellID)
- _worldPacket << spell;
+ data << int32(learnedSpellInfo.SpellID);
+ data.WriteBit(learnedSpellInfo.IsFavorite);
+ data.WriteBit(learnedSpellInfo.field_8.has_value());
+ data.WriteBit(learnedSpellInfo.Superceded.has_value());
+ data.WriteBit(learnedSpellInfo.TraitDefinitionID.has_value());
+ data.FlushBits();
- for (int32 spell : FavoriteSpellID)
- _worldPacket << spell;
+ if (learnedSpellInfo.field_8)
+ data << int32(*learnedSpellInfo.field_8);
+
+ if (learnedSpellInfo.Superceded)
+ data << int32(*learnedSpellInfo.Superceded);
+ if (learnedSpellInfo.TraitDefinitionID)
+ data << int32(*learnedSpellInfo.TraitDefinitionID);
+
+ return data;
+}
+
+WorldPacket const* LearnedSpells::Write()
+{
+ _worldPacket << uint32(ClientLearnedSpellData.size());
+ _worldPacket << uint32(SpecializationID);
_worldPacket.WriteBit(SuppressMessaging);
_worldPacket.FlushBits();
+ for (LearnedSpellInfo const& spell : ClientLearnedSpellData)
+ _worldPacket << spell;
+
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SupercededSpells::Write()
+WorldPacket const* SupercededSpells::Write()
{
- _worldPacket << uint32(SpellID.size());
- _worldPacket << uint32(Superceded.size());
- _worldPacket << uint32(FavoriteSpellID.size());
-
- if (!SpellID.empty())
- _worldPacket.append(SpellID.data(), SpellID.size());
+ _worldPacket << uint32(ClientLearnedSpellData.size());
- if (!Superceded.empty())
- _worldPacket.append(Superceded.data(), Superceded.size());
-
- if (!FavoriteSpellID.empty())
- _worldPacket.append(FavoriteSpellID.data(), FavoriteSpellID.size());
+ for (LearnedSpellInfo const& spell : ClientLearnedSpellData)
+ _worldPacket << spell;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SpellFailure::Write()
+WorldPacket const* SpellFailure::Write()
{
_worldPacket << CasterUnit;
_worldPacket << CastID;
@@ -510,7 +529,7 @@ WorldPacket const* WorldPackets::Spells::SpellFailure::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write()
+WorldPacket const* SpellFailedOther::Write()
{
_worldPacket << CasterUnit;
_worldPacket << CastID;
@@ -521,7 +540,7 @@ WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::CastFailed::Write()
+WorldPacket const* CastFailed::Write()
{
_worldPacket << CastID;
_worldPacket << int32(SpellID);
@@ -533,7 +552,7 @@ WorldPacket const* WorldPackets::Spells::CastFailed::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::PetCastFailed::Write()
+WorldPacket const* PetCastFailed::Write()
{
_worldPacket << CastID;
_worldPacket << int32(SpellID);
@@ -544,7 +563,7 @@ WorldPacket const* WorldPackets::Spells::PetCastFailed::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellModifierData const& spellModifierData)
+ByteBuffer& operator<<(ByteBuffer& data, SpellModifierData const& spellModifierData)
{
data << float(spellModifierData.ModifierValue);
data << uint8(spellModifierData.ClassIndex);
@@ -552,26 +571,26 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellModifierData
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellModifier const& spellModifier)
+ByteBuffer& operator<<(ByteBuffer& data, SpellModifier const& spellModifier)
{
data << uint8(spellModifier.ModIndex);
data << uint32(spellModifier.ModifierData.size());
- for (WorldPackets::Spells::SpellModifierData const& modData : spellModifier.ModifierData)
+ for (SpellModifierData const& modData : spellModifier.ModifierData)
data << modData;
return data;
}
-WorldPacket const* WorldPackets::Spells::SetSpellModifier::Write()
+WorldPacket const* SetSpellModifier::Write()
{
_worldPacket << uint32(Modifiers.size());
- for (WorldPackets::Spells::SpellModifier const& spellMod : Modifiers)
+ for (SpellModifier const& spellMod : Modifiers)
_worldPacket << spellMod;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::UnlearnedSpells::Write()
+WorldPacket const* UnlearnedSpells::Write()
{
_worldPacket << uint32(SpellID.size());
for (uint32 spellId : SpellID)
@@ -583,7 +602,7 @@ WorldPacket const* WorldPackets::Spells::UnlearnedSpells::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::CooldownEvent::Write()
+WorldPacket const* CooldownEvent::Write()
{
_worldPacket << int32(SpellID);
_worldPacket.WriteBit(IsPet);
@@ -592,7 +611,7 @@ WorldPacket const* WorldPackets::Spells::CooldownEvent::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::ClearCooldowns::Write()
+WorldPacket const* ClearCooldowns::Write()
{
_worldPacket << uint32(SpellID.size());
if (!SpellID.empty())
@@ -604,7 +623,7 @@ WorldPacket const* WorldPackets::Spells::ClearCooldowns::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::ClearCooldown::Write()
+WorldPacket const* ClearCooldown::Write()
{
_worldPacket << uint32(SpellID);
_worldPacket.WriteBit(ClearOnHold);
@@ -614,7 +633,7 @@ WorldPacket const* WorldPackets::Spells::ClearCooldown::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::ModifyCooldown::Write()
+WorldPacket const* ModifyCooldown::Write()
{
_worldPacket << int32(SpellID);
_worldPacket << int32(DeltaTime);
@@ -625,7 +644,7 @@ WorldPacket const* WorldPackets::Spells::ModifyCooldown::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCooldownStruct const& cooldown)
+ByteBuffer& operator<<(ByteBuffer& data, SpellCooldownStruct const& cooldown)
{
data << uint32(cooldown.SrecID);
data << uint32(cooldown.ForcedCooldown);
@@ -633,7 +652,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCooldownStru
return data;
}
-WorldPacket const* WorldPackets::Spells::SpellCooldown::Write()
+WorldPacket const* SpellCooldown::Write()
{
_worldPacket << Caster;
_worldPacket << uint8(Flags);
@@ -644,7 +663,7 @@ WorldPacket const* WorldPackets::Spells::SpellCooldown::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellHistoryEntry const& historyEntry)
+ByteBuffer& operator<<(ByteBuffer& data, SpellHistoryEntry const& historyEntry)
{
data << uint32(historyEntry.SpellID);
data << uint32(historyEntry.ItemID);
@@ -664,7 +683,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellHistoryEntry
return data;
}
-WorldPacket const* WorldPackets::Spells::SendSpellHistory::Write()
+WorldPacket const* SendSpellHistory::Write()
{
_worldPacket << uint32(Entries.size());
for (SpellHistoryEntry const& historyEntry : Entries)
@@ -673,7 +692,7 @@ WorldPacket const* WorldPackets::Spells::SendSpellHistory::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::ClearAllSpellCharges::Write()
+WorldPacket const* ClearAllSpellCharges::Write()
{
_worldPacket.WriteBit(IsPet);
_worldPacket.FlushBits();
@@ -681,7 +700,7 @@ WorldPacket const* WorldPackets::Spells::ClearAllSpellCharges::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::ClearSpellCharges::Write()
+WorldPacket const* ClearSpellCharges::Write()
{
_worldPacket << int32(Category);
_worldPacket.WriteBit(IsPet);
@@ -690,7 +709,7 @@ WorldPacket const* WorldPackets::Spells::ClearSpellCharges::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SetSpellCharges::Write()
+WorldPacket const* SetSpellCharges::Write()
{
_worldPacket << int32(Category);
_worldPacket << uint32(NextRecoveryTime);
@@ -702,7 +721,7 @@ WorldPacket const* WorldPackets::Spells::SetSpellCharges::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellChargeEntry const& chargeEntry)
+ByteBuffer& operator<<(ByteBuffer& data, SpellChargeEntry const& chargeEntry)
{
data << uint32(chargeEntry.Category);
data << uint32(chargeEntry.NextRecoveryTime);
@@ -711,7 +730,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellChargeEntry
return data;
}
-WorldPacket const* WorldPackets::Spells::SendSpellCharges::Write()
+WorldPacket const* SendSpellCharges::Write()
{
_worldPacket << uint32(Entries.size());
for (SpellChargeEntry const& chargeEntry : Entries)
@@ -720,21 +739,21 @@ WorldPacket const* WorldPackets::Spells::SendSpellCharges::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::ClearTarget::Write()
+WorldPacket const* ClearTarget::Write()
{
_worldPacket << Guid;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::CancelOrphanSpellVisual::Write()
+WorldPacket const* CancelOrphanSpellVisual::Write()
{
_worldPacket << int32(SpellVisualID);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::CancelSpellVisual::Write()
+WorldPacket const* CancelSpellVisual::Write()
{
_worldPacket << Source;
_worldPacket << int32(SpellVisualID);
@@ -742,7 +761,7 @@ WorldPacket const* WorldPackets::Spells::CancelSpellVisual::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::CancelSpellVisualKit::Write()
+WorldPacket const* CancelSpellVisualKit::Write()
{
_worldPacket << Source;
_worldPacket << int32(SpellVisualKitID);
@@ -752,7 +771,7 @@ WorldPacket const* WorldPackets::Spells::CancelSpellVisualKit::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::PlayOrphanSpellVisual::Write()
+WorldPacket const* PlayOrphanSpellVisual::Write()
{
_worldPacket << SourceLocation;
_worldPacket << SourceRotation;
@@ -768,7 +787,7 @@ WorldPacket const* WorldPackets::Spells::PlayOrphanSpellVisual::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::PlaySpellVisual::Write()
+WorldPacket const* PlaySpellVisual::Write()
{
_worldPacket << Source;
_worldPacket << Target;
@@ -787,7 +806,7 @@ WorldPacket const* WorldPackets::Spells::PlaySpellVisual::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::PlaySpellVisualKit::Write()
+WorldPacket const* PlaySpellVisualKit::Write()
{
_worldPacket << Unit;
_worldPacket << int32(KitRecID);
@@ -799,7 +818,7 @@ WorldPacket const* WorldPackets::Spells::PlaySpellVisualKit::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SpellVisualLoadScreen::Write()
+WorldPacket const* SpellVisualLoadScreen::Write()
{
_worldPacket << int32(SpellVisualKitID);
_worldPacket << int32(Delay);
@@ -807,33 +826,33 @@ WorldPacket const* WorldPackets::Spells::SpellVisualLoadScreen::Write()
return &_worldPacket;
}
-void WorldPackets::Spells::CancelCast::Read()
+void CancelCast::Read()
{
_worldPacket >> CastID;
_worldPacket >> SpellID;
}
-void WorldPackets::Spells::OpenItem::Read()
+void OpenItem::Read()
{
_worldPacket >> Slot
>> PackSlot;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellChannelStartInterruptImmunities const& interruptImmunities)
+ByteBuffer& operator<<(ByteBuffer& data, SpellChannelStartInterruptImmunities const& interruptImmunities)
{
data << int32(interruptImmunities.SchoolImmunities);
data << int32(interruptImmunities.Immunities);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellTargetedHealPrediction const& targetedHealPrediction)
+ByteBuffer& operator<<(ByteBuffer& data, SpellTargetedHealPrediction const& targetedHealPrediction)
{
data << targetedHealPrediction.TargetGUID;
data << targetedHealPrediction.Predict;
return data;
}
-WorldPacket const* WorldPackets::Spells::SpellChannelStart::Write()
+WorldPacket const* SpellChannelStart::Write()
{
_worldPacket << CasterGUID;
_worldPacket << int32(SpellID);
@@ -852,14 +871,14 @@ WorldPacket const* WorldPackets::Spells::SpellChannelStart::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::SpellChannelUpdate::Write()
+WorldPacket const* SpellChannelUpdate::Write()
{
_worldPacket << CasterGUID;
_worldPacket << int32(TimeRemaining);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::ResurrectRequest::Write()
+WorldPacket const* ResurrectRequest::Write()
{
_worldPacket << ResurrectOffererGUID;
_worldPacket << uint32(ResurrectOffererVirtualRealmAddress);
@@ -875,30 +894,30 @@ WorldPacket const* WorldPackets::Spells::ResurrectRequest::Write()
return &_worldPacket;
}
-void WorldPackets::Spells::UnlearnSkill::Read()
+void UnlearnSkill::Read()
{
_worldPacket >> SkillLine;
}
-void WorldPackets::Spells::SelfRes::Read()
+void SelfRes::Read()
{
_worldPacket >> SpellID;
}
-void WorldPackets::Spells::GetMirrorImageData::Read()
+void GetMirrorImageData::Read()
{
_worldPacket >> UnitGUID;
_worldPacket >> DisplayID;
}
-WorldPackets::Spells::MirrorImageComponentedData::MirrorImageComponentedData()
+MirrorImageComponentedData::MirrorImageComponentedData()
: ServerPacket(SMSG_MIRROR_IMAGE_COMPONENTED_DATA, 8 + 4 + 8 * 1 + 8 + 11 * 4)
{
}
-WorldPackets::Spells::MirrorImageComponentedData::~MirrorImageComponentedData() = default;
+MirrorImageComponentedData::~MirrorImageComponentedData() = default;
-WorldPacket const* WorldPackets::Spells::MirrorImageComponentedData::Write()
+WorldPacket const* MirrorImageComponentedData::Write()
{
_worldPacket << UnitGUID;
_worldPacket << int32(DisplayID);
@@ -919,7 +938,7 @@ WorldPacket const* WorldPackets::Spells::MirrorImageComponentedData::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::MirrorImageCreatureData::Write()
+WorldPacket const* MirrorImageCreatureData::Write()
{
_worldPacket << UnitGUID;
_worldPacket << int32(DisplayID);
@@ -928,27 +947,28 @@ WorldPacket const* WorldPackets::Spells::MirrorImageCreatureData::Write()
return &_worldPacket;
}
-void WorldPackets::Spells::SpellClick::Read()
+void SpellClick::Read()
{
_worldPacket >> SpellClickUnitGuid;
TryAutoDismount = _worldPacket.ReadBit();
+ IsSoftInteract = _worldPacket.ReadBit();
}
-WorldPacket const* WorldPackets::Spells::ResyncRunes::Write()
+WorldPacket const* ResyncRunes::Write()
{
_worldPacket << Runes;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::AddRunePower::Write()
+WorldPacket const* AddRunePower::Write()
{
_worldPacket << uint32(AddedRunesMask);
return &_worldPacket;
}
-void WorldPackets::Spells::MissileTrajectoryCollision::Read()
+void MissileTrajectoryCollision::Read()
{
_worldPacket >> Target;
_worldPacket >> SpellID;
@@ -956,7 +976,7 @@ void WorldPackets::Spells::MissileTrajectoryCollision::Read()
_worldPacket >> CollisionPos;
}
-WorldPacket const* WorldPackets::Spells::NotifyMissileTrajectoryCollision::Write()
+WorldPacket const* NotifyMissileTrajectoryCollision::Write()
{
_worldPacket << Caster;
_worldPacket << CastID;
@@ -965,7 +985,7 @@ WorldPacket const* WorldPackets::Spells::NotifyMissileTrajectoryCollision::Write
return &_worldPacket;
}
-void WorldPackets::Spells::UpdateMissileTrajectory::Read()
+void UpdateMissileTrajectory::Read()
{
_worldPacket >> Guid;
_worldPacket >> CastID;
@@ -985,7 +1005,7 @@ void WorldPackets::Spells::UpdateMissileTrajectory::Read()
}
}
-WorldPacket const* WorldPackets::Spells::SpellDelayed::Write()
+WorldPacket const* SpellDelayed::Write()
{
_worldPacket << Caster;
_worldPacket << uint32(ActualDelay);
@@ -993,7 +1013,7 @@ WorldPacket const* WorldPackets::Spells::SpellDelayed::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::DispelFailed::Write()
+WorldPacket const* DispelFailed::Write()
{
_worldPacket << CasterGUID;
_worldPacket << VictimGUID;
@@ -1005,21 +1025,21 @@ WorldPacket const* WorldPackets::Spells::DispelFailed::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::CustomLoadScreen::Write()
+WorldPacket const* CustomLoadScreen::Write()
{
_worldPacket << uint32(TeleportSpellID);
_worldPacket << uint32(LoadingScreenID);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::MountResult::Write()
+WorldPacket const* MountResult::Write()
{
_worldPacket << int32(Result);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Spells::MissileCancel::Write()
+WorldPacket const* MissileCancel::Write()
{
_worldPacket << OwnerGUID;
_worldPacket << int32(SpellID);
@@ -1028,3 +1048,4 @@ WorldPacket const* WorldPackets::Spells::MissileCancel::Write()
return &_worldPacket;
}
+}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index b5c1bc3edbd..4d2380a964f 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -62,8 +62,8 @@ namespace WorldPackets
void Read() override;
int32 ChannelSpell = 0;
- int32 Reason = 0; // 40 = /run SpellStopCasting(), 16 = movement/SpellAuraInterruptFlags::Moving, 41 = turning/SpellAuraInterruptFlags::Turning
- // does not match SpellCastResult enum
+ int32 Reason = 0; // 40 = /run SpellStopCasting(), 16 = movement/SpellAuraInterruptFlags::Moving, 41 = turning/SpellAuraInterruptFlags::Turning
+ // does not match SpellCastResult enum
};
class CancelGrowthAura final : public ClientPacket
@@ -139,22 +139,19 @@ namespace WorldPackets
bool InitialLogin = false;
std::vector<uint32> KnownSpells;
- std::vector<uint32> FavoriteSpells; // tradeskill recipes
+ std::vector<uint32> FavoriteSpells; // tradeskill recipes
};
class UpdateActionButtons final : public ServerPacket
{
public:
- static std::size_t constexpr NumActionButtons = 132;
+ static std::size_t constexpr NumActionButtons = 180;
- UpdateActionButtons() : ServerPacket(SMSG_UPDATE_ACTION_BUTTONS, NumActionButtons * 8 + 1)
- {
- ActionButtons.fill(0);
- }
+ UpdateActionButtons() : ServerPacket(SMSG_UPDATE_ACTION_BUTTONS, NumActionButtons * 8 + 1) { }
WorldPacket const* Write() override;
- std::array<uint64, NumActionButtons> ActionButtons;
+ std::array<uint64, NumActionButtons> ActionButtons = { };
uint8 Reason = 0;
/*
Reason can be 0, 1, 2
@@ -253,10 +250,12 @@ namespace WorldPackets
uint32 Quantity = 0;
};
- struct SpellOptionalReagent
+ struct SpellCraftingReagent
{
int32 ItemID = 0;
- int32 Slot = 0;
+ int32 DataSlotIndex = 0;
+ int32 Quantity = 0;
+ Optional<uint8> Unknown_1000;
};
struct SpellExtraCurrencyCost
@@ -275,8 +274,9 @@ namespace WorldPackets
MissileTrajectoryRequest MissileTrajectory;
Optional<MovementInfo> MoveUpdate;
std::vector<SpellWeight> Weight;
- Array<SpellOptionalReagent, 3> OptionalReagents;
+ Array<SpellCraftingReagent, 3> OptionalReagents;
Array<SpellExtraCurrencyCost, 5 /*MAX_ITEM_EXT_COST_CURRENCIES*/> OptionalCurrencies;
+ Optional<uint64> CraftingOrderID;
ObjectGuid CraftingNPC;
int32 Misc[2] = { };
};
@@ -331,7 +331,7 @@ namespace WorldPackets
SpellHitStatus() { }
SpellHitStatus(uint8 reason) : Reason(reason) { }
- uint8 Reason;
+ uint8 Reason = 0;
};
struct SpellMissStatus
@@ -427,6 +427,15 @@ namespace WorldPackets
SpellCastData Cast;
};
+ struct LearnedSpellInfo
+ {
+ int32 SpellID = 0;
+ bool IsFavorite = false;
+ Optional<int32> field_8;
+ Optional<int32> Superceded;
+ Optional<int32> TraitDefinitionID;
+ };
+
class LearnedSpells final : public ServerPacket
{
public:
@@ -434,8 +443,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- std::vector<int32> SpellID;
- std::vector<int32> FavoriteSpellID;
+ std::vector<LearnedSpellInfo> ClientLearnedSpellData;
uint32 SpecializationID = 0;
bool SuppressMessaging = false;
};
@@ -447,9 +455,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- std::vector<int32> SpellID;
- std::vector<int32> Superceded;
- std::vector<int32> FavoriteSpellID;
+ std::vector<LearnedSpellInfo> ClientLearnedSpellData;
};
class SpellFailure final : public ServerPacket
@@ -551,7 +557,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
bool IsPet = false;
- int32 SpellID;
+ int32 SpellID = 0;
};
class ClearCooldowns final : public ServerPacket
@@ -621,8 +627,8 @@ namespace WorldPackets
int32 CategoryRecoveryTime = 0;
float ModRate = 1.0f;
bool OnHold = false;
- Optional<uint32> unused622_1; ///< This field is not used for anything in the client in 6.2.2.20444
- Optional<uint32> unused622_2; ///< This field is not used for anything in the client in 6.2.2.20444
+ Optional<uint32> unused622_1; ///< This field is not used for anything in the client in 6.2.2.20444
+ Optional<uint32> unused622_2; ///< This field is not used for anything in the client in 6.2.2.20444
};
class SendSpellHistory final : public ServerPacket
@@ -758,7 +764,7 @@ namespace WorldPackets
ObjectGuid Source;
ObjectGuid Target;
- ObjectGuid Transport; // Used when Target = Empty && (SpellVisual::Flags & 0x400) == 0
+ ObjectGuid Transport; // Used when Target = Empty && (SpellVisual::Flags & 0x400) == 0
TaggedPosition<Position::XYZ> TargetPosition; // Overrides missile destination for SpellVisual::SpellVisualMissileSetID
uint32 SpellVisualID = 0;
float TravelSpeed = 0.0f;
@@ -944,6 +950,7 @@ namespace WorldPackets
ObjectGuid SpellClickUnitGuid;
bool TryAutoDismount = false;
+ bool IsSoftInteract = false;
};
class ResyncRunes final : public ServerPacket
@@ -1065,9 +1072,9 @@ namespace WorldPackets
bool Reverse = false;
int32 SpellID = 0;
};
+
+ ByteBuffer& operator>>(ByteBuffer& buffer, SpellCastRequest& request);
}
}
-ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastRequest& request);
-
#endif // SpellPackets_h__
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 5f6304d4bee..18ad36f7cbb 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -18,9 +18,7 @@
#include "SystemPackets.h"
#include "Errors.h"
-namespace WorldPackets
-{
-namespace System
+namespace WorldPackets::System
{
ByteBuffer& operator<<(ByteBuffer& data, SavedThrottleObjectState const& throttleState)
{
@@ -82,6 +80,7 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket << int16(MaxPlayerNameQueriesPerPacket);
_worldPacket << int16(PlayerNameQueryTelemetryInterval);
+ _worldPacket << PlayerNameQueryInterval;
for (GameRuleValuePair const& gameRuleValue : GameRuleValues)
_worldPacket << gameRuleValue;
@@ -94,6 +93,7 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
_worldPacket.WriteBit(ItemRestorationButtonEnabled);
_worldPacket.WriteBit(BrowserEnabled);
+
_worldPacket.WriteBit(SessionAlert.has_value());
_worldPacket.WriteBit(RAFSystem.Enabled);
_worldPacket.WriteBit(RAFSystem.RecruitingEnabled);
@@ -102,6 +102,7 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket.WriteBit(CommerceSystemEnabled);
_worldPacket.WriteBit(TutorialsEnabled);
_worldPacket.WriteBit(TwitterEnabled);
+
_worldPacket.WriteBit(Unk67);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(KioskModeEnabled);
@@ -110,6 +111,7 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket.WriteBit(WarModeFeatureEnabled);
_worldPacket.WriteBit(ClubsEnabled);
_worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed);
+
_worldPacket.WriteBit(ClubsCharacterClubTypeAllowed);
_worldPacket.WriteBit(ClubsPresenceUpdateEnabled);
_worldPacket.WriteBit(VoiceChatDisabledByParentalControl);
@@ -118,10 +120,13 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket.WriteBit(IsMuted);
_worldPacket.WriteBit(ClubFinderEnabled);
_worldPacket.WriteBit(Unknown901CheckoutRelated);
+
_worldPacket.WriteBit(TextToSpeechFeatureEnabled);
_worldPacket.WriteBit(ChatDisabledByDefault);
_worldPacket.WriteBit(ChatDisabledByPlayer);
_worldPacket.WriteBit(LFGListCustomRequiresAuthenticator);
+ _worldPacket.WriteBit(AddonsDisabled);
+ _worldPacket.WriteBit(Unused1000);
_worldPacket.FlushBits();
@@ -180,6 +185,7 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(Unk14);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(IsExpansionPreorderInStore);
+
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
_worldPacket.WriteBit(TrialBoostEnabled);
@@ -188,9 +194,12 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(LiveRegionCharacterCopyEnabled);
_worldPacket.WriteBit(LiveRegionAccountCopyEnabled);
_worldPacket.WriteBit(LiveRegionKeyBindingsCopyEnabled);
+
_worldPacket.WriteBit(Unknown901CheckoutRelated);
_worldPacket.WriteBit(EuropaTicketSystemStatus.has_value());
_worldPacket.WriteBit(LaunchETA.has_value());
+ _worldPacket.WriteBit(AddonsDisabled);
+ _worldPacket.WriteBit(Unused1000);
_worldPacket.FlushBits();
if (EuropaTicketSystemStatus)
@@ -210,6 +219,7 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket << uint32(GameRuleValues.size());
_worldPacket << int16(MaxPlayerNameQueriesPerPacket);
_worldPacket << int16(PlayerNameQueryTelemetryInterval);
+ _worldPacket << PlayerNameQueryInterval;
if (LaunchETA)
_worldPacket << int32(*LaunchETA);
@@ -243,12 +253,13 @@ WorldPacket const* SetTimeZoneInformation::Write()
{
_worldPacket.WriteBits(ServerTimeTZ.length(), 7);
_worldPacket.WriteBits(GameTimeTZ.length(), 7);
+ _worldPacket.WriteBits(ServerRegionalTZ.length(), 7);
_worldPacket.FlushBits();
_worldPacket.WriteString(ServerTimeTZ);
_worldPacket.WriteString(GameTimeTZ);
+ _worldPacket.WriteString(ServerRegionalTZ);
return &_worldPacket;
}
}
-}
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index f6a3d37c133..2091940632f 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -21,6 +21,7 @@
#include "Packet.h"
#include "ObjectGuid.h"
#include "Optional.h"
+#include "PacketUtilities.h"
namespace WorldPackets
{
@@ -131,6 +132,7 @@ namespace WorldPackets
int32 ActiveSeason = 0; ///< Currently active Classic season
int16 MaxPlayerNameQueriesPerPacket = 50;
int16 PlayerNameQueryTelemetryInterval = 600;
+ Duration<Seconds, uint32> PlayerNameQueryInterval = 10s;
bool ItemRestorationButtonEnabled = false;
bool CharUndeleteEnabled = false; ///< Implemented
bool BpayStoreDisabledByParentalControls = false;
@@ -159,6 +161,8 @@ namespace WorldPackets
bool ChatDisabledByDefault = false;
bool ChatDisabledByPlayer = false;
bool LFGListCustomRequiresAuthenticator = false;
+ bool AddonsDisabled = false;
+ bool Unused1000 = false;
SocialQueueConfig QuickJoinConfig;
SquelchInfo Squelch;
@@ -190,6 +194,8 @@ namespace WorldPackets
bool LiveRegionAccountCopyEnabled = false; // NYI
bool LiveRegionKeyBindingsCopyEnabled = false;
bool Unknown901CheckoutRelated = false; // NYI
+ bool AddonsDisabled = false;
+ bool Unused1000 = false;
Optional<EuropaTicketConfig> EuropaTicketSystemStatus;
std::vector<int32> LiveRegionCharacterCopySourceRegions;
uint32 TokenPollTimeSeconds = 0; // NYI
@@ -205,6 +211,7 @@ namespace WorldPackets
std::vector<GameRuleValuePair> GameRuleValues;
int16 MaxPlayerNameQueriesPerPacket = 50;
int16 PlayerNameQueryTelemetryInterval = 600;
+ Duration<Seconds, uint32> PlayerNameQueryInterval = 10s;
Optional<int32> LaunchETA;
};
@@ -227,6 +234,7 @@ namespace WorldPackets
std::string ServerTimeTZ;
std::string GameTimeTZ;
+ std::string ServerRegionalTZ;
};
}
}
diff --git a/src/server/game/Server/Packets/TraitPacketsCommon.cpp b/src/server/game/Server/Packets/TraitPacketsCommon.cpp
new file mode 100644
index 00000000000..482f3b5e91d
--- /dev/null
+++ b/src/server/game/Server/Packets/TraitPacketsCommon.cpp
@@ -0,0 +1,65 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TraitPacketsCommon.h"
+#include "DBCEnums.h"
+
+namespace WorldPackets::Traits
+{
+ByteBuffer& operator<<(ByteBuffer& data, TraitEntry const& traitEntry)
+{
+ data << int32(traitEntry.TraitNodeID);
+ data << int32(traitEntry.TraitNodeEntryID);
+ data << int32(traitEntry.Rank);
+ data << int32(traitEntry.GrantedRanks);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, TraitConfig const& traitConfig)
+{
+ data << int32(traitConfig.ID);
+ data << int32(traitConfig.Type);
+ data << uint32(traitConfig.Entries.size());
+ switch (traitConfig.Type)
+ {
+ case TraitConfigType::Combat:
+ data << int32(traitConfig.ChrSpecializationID);
+ data << int32(traitConfig.CombatConfigFlags);
+ data << int32(traitConfig.LocalIdentifier);
+ break;
+ case TraitConfigType::Profession:
+ data << int32(traitConfig.SkillLineID);
+ break;
+ case TraitConfigType::Generic:
+ data << int32(traitConfig.TraitSystemID);
+ break;
+ default:
+ break;
+ }
+
+ for (TraitEntry const& traitEntry : traitConfig.Entries)
+ data << traitEntry;
+
+ data.WriteBits(traitConfig.Name.length(), 9);
+ data.FlushBits();
+
+ data.WriteString(static_cast<std::string const&>(traitConfig.Name));
+
+ return data;
+}
+}
diff --git a/src/server/game/Server/Packets/TraitPacketsCommon.h b/src/server/game/Server/Packets/TraitPacketsCommon.h
new file mode 100644
index 00000000000..d61e16ed49b
--- /dev/null
+++ b/src/server/game/Server/Packets/TraitPacketsCommon.h
@@ -0,0 +1,53 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef TRINITYCORE_TRAIT_PACKETS_COMMON_H
+#define TRINITYCORE_TRAIT_PACKETS_COMMON_H
+
+#include "PacketUtilities.h"
+
+enum class TraitCombatConfigFlags : int32;
+enum class TraitConfigType : int32;
+
+namespace WorldPackets::Traits
+{
+struct TraitEntry
+{
+ int32 TraitNodeID = 0;
+ int32 TraitNodeEntryID = 0;
+ int32 Rank = 0;
+ int32 GrantedRanks = 0;
+};
+
+struct TraitConfig
+{
+ int32 ID = 0;
+ TraitConfigType Type = {};
+ int32 ChrSpecializationID = 0;
+ TraitCombatConfigFlags CombatConfigFlags = {};
+ int32 LocalIdentifier = 0; // Local to specialization
+ int32 SkillLineID = 0;
+ int32 TraitSystemID = 0;
+ Array<TraitEntry, 100, std::vector<TraitEntry>> Entries;
+ String<259> Name;
+};
+
+ByteBuffer& operator<<(ByteBuffer& data, TraitEntry const& traitEntry);
+ByteBuffer& operator<<(ByteBuffer& data, TraitConfig const& traitConfig);
+}
+
+#endif // TRINITYCORE_TRAIT_PACKETS_COMMON_H
diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
index 3ea86ae6106..5a856fc4805 100644
--- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp
+++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
@@ -51,10 +51,3 @@ WorldPacket const* WorldPackets::Transmogrification::AccountTransmogUpdate::Writ
return &_worldPacket;
}
-
-WorldPacket const* WorldPackets::Transmogrification::TransmogrifyNPC::Write()
-{
- _worldPacket << Guid;
-
- return &_worldPacket;
-}
diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.h b/src/server/game/Server/Packets/TransmogrificationPackets.h
index 2f1e22063fa..4ad6b3adbff 100644
--- a/src/server/game/Server/Packets/TransmogrificationPackets.h
+++ b/src/server/game/Server/Packets/TransmogrificationPackets.h
@@ -63,16 +63,6 @@ namespace WorldPackets
std::vector<uint32> FavoriteAppearances;
std::vector<uint32> NewAppearances;
};
-
- class TransmogrifyNPC final : public ServerPacket
- {
- public:
- TransmogrifyNPC(ObjectGuid const& guid) : ServerPacket(SMSG_TRANSMOGRIFY_NPC, 16), Guid(guid) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid Guid;
- };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 75c8222b069..8e197c8b98b 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -30,7 +30,7 @@ public:
void Call(WorldSession* session, WorldPacket& packet) const override
{
- PacketClass nicePacket(std::move(packet));
+ std::remove_cv_t<PacketClass> nicePacket(std::move(packet));
nicePacket.Read();
(session->*HandlerFunction)(nicePacket);
session->LogUnprocessedTail(nicePacket.GetRawPacket());
@@ -65,27 +65,35 @@ OpcodeTable::~OpcodeTable()
}
}
-template<typename Handler, Handler HandlerFunction>
-void OpcodeTable::ValidateAndSetClientOpcode(OpcodeClient opcode, char const* name, SessionStatus status, PacketProcessing processing)
+bool OpcodeTable::ValidateClientOpcode(OpcodeClient opcode, char const* name) const
{
if (uint32(opcode) == NULL_OPCODE)
{
TC_LOG_ERROR("network", "Opcode %s does not have a value", name);
- return;
+ return false;
}
if (uint32(opcode) >= NUM_OPCODE_HANDLERS)
{
TC_LOG_ERROR("network", "Tried to set handler for an invalid opcode %d", opcode);
- return;
+ return false;
}
if (_internalTableClient[opcode] != nullptr)
{
- TC_LOG_ERROR("network", "Tried to override client handler of %s with %s (opcode %u)", opcodeTable[opcode]->Name, name, opcode);
- return;
+ TC_LOG_ERROR("network", "Tried to override client handler of %s with %s (opcode %u)", _internalTableClient[opcode]->Name, name, opcode);
+ return false;
}
+ return true;
+}
+
+template<typename Handler, Handler HandlerFunction>
+void OpcodeTable::ValidateAndSetClientOpcode(OpcodeClient opcode, char const* name, SessionStatus status, PacketProcessing processing)
+{
+ if (!ValidateClientOpcode(opcode, name))
+ return;
+
_internalTableClient[opcode] = new PacketHandler<typename get_packet_class<Handler>::type, HandlerFunction>(name, status, processing);
}
@@ -132,6 +140,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_ABANDON_NPE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ACCEPT_GUILD_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptInvite);
+ DEFINE_HANDLER(CMSG_ACCEPT_RETURNING_PLAYER_PROMPT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
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);
@@ -198,6 +207,7 @@ void OpcodeTable::Initialize()
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_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);
DEFINE_HANDLER(CMSG_BATTLENET_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlenetRequest);
@@ -319,6 +329,13 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHOICE_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandlePlayerChoiceResponse);
DEFINE_HANDLER(CMSG_CHROMIE_TIME_SELECT_EXPANSION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLAIM_WEEKLY_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLASS_TALENTS_DELETE_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLASS_TALENTS_RENAME_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLEAR_NEW_APPEARANCE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLEAR_RAID_MARKER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearRaidMarker);
DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode);
@@ -326,6 +343,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CLOSE_INTERACTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCloseInteraction);
DEFINE_HANDLER(CMSG_CLOSE_QUEST_CHOICE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLOSE_RUNEFORGE_INTERACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLUB_FINDER_APPLICATION_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLUB_FINDER_GET_APPLICANTS_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLUB_FINDER_POST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -366,6 +384,15 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CONVERSATION_LINE_STARTED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleConversationLineStarted);
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);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_CLAIM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_CREATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_FULFILL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_LIST_MY_ORDERS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_REJECT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_RELEASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCreateOpcode);
DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DB_QUERY_BULK, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleDBQueryBulk);
@@ -560,6 +587,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOUNT_CLEAR_FANFARE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOUNT_SET_FAVORITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSetFavorite);
DEFINE_HANDLER(CMSG_MOUNT_SPECIAL_ANIM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode);
+ DEFINE_HANDLER(CMSG_MOVE_ADD_IMPULSE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_APPLY_INERTIA_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveApplyMovementForceAck);
DEFINE_HANDLER(CMSG_MOVE_CHANGE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
@@ -598,6 +626,21 @@ void OpcodeTable::Initialize()
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);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_SET_CAN_ADV_FLY_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_SET_CAN_FLY_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSetCollisionHeightAck);
@@ -695,6 +738,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_QUEST_COMPLETION_NPCS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryQuestCompletionNPCs);
DEFINE_HANDLER(CMSG_QUERY_QUEST_INFO, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestQueryOpcode);
+ DEFINE_HANDLER(CMSG_QUERY_QUEST_ITEM_USABILITY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_REALM_NAME, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryRealmName);
DEFINE_HANDLER(CMSG_QUERY_SCENARIO_POI, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryScenarioPOI);
DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryTimeOpcode);
@@ -738,6 +782,7 @@ void OpcodeTable::Initialize()
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);
@@ -803,11 +848,11 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetAssistantLeaderOpcode);
DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_SET_CHAT_DISABLED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_CONTACT_NOTES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode);
DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_DIFFICULTY_ID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetDungeonDifficultyOpcode);
+ DEFINE_HANDLER(CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_EVERYONE_IS_ASSISTANT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetEveryoneIsAssistant);
DEFINE_HANDLER(CMSG_SET_FACTION_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionAtWar);
DEFINE_HANDLER(CMSG_SET_FACTION_INACTIVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionInactiveOpcode);
@@ -845,6 +890,8 @@ void OpcodeTable::Initialize()
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);
DEFINE_HANDLER(CMSG_SPELL_CLICK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSpellClick);
+ DEFINE_HANDLER(CMSG_SPELL_EMPOWER_RELEASE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SPELL_EMPOWER_RESTART, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SPIRIT_HEALER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSpiritHealerActivate);
DEFINE_HANDLER(CMSG_SPLIT_GUILD_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSplitGuildBankItem);
DEFINE_HANDLER(CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSplitGuildBankItemToInventory);
@@ -884,6 +931,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_TRADE_SKILL_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TRAINER_BUY_SPELL, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTrainerBuySpellOpcode);
DEFINE_HANDLER(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTrainerListOpcode);
+ DEFINE_HANDLER(CMSG_TRAITS_COMMIT_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS, STATUS_UNHANDLED, PROCESS_INPLACE, &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);
@@ -896,9 +945,11 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUnlearnSkillOpcode);
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_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);
+ DEFINE_HANDLER(CMSG_UPDATE_CRAFTING_NPC_RECIPES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory);
DEFINE_HANDLER(CMSG_UPDATE_RAID_TARGET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateRaidTargetOpcode);
DEFINE_HANDLER(CMSG_UPDATE_SPELL_VISUAL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -958,7 +1009,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVANCED_COMBAT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_MAP_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGETS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGET_ACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AI_REACTION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -994,7 +1044,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_CLOSED_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_DISABLE_POSTING_BEFORE_MAINTENANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_DISABLE_NEW_POSTINGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_FAVORITE_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_HELLO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1012,7 +1062,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AVAILABLE_HOTFIXES, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_RESPEC_NPC, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BAG_CLEANUP_FINISHED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATCH_PRESENCE_SUBSCRIPTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1066,10 +1115,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_REVOKED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_TRAP_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_UPDATES, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BIND_POINT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_OPEN_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_OUTBID, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_WON, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1107,6 +1154,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_ORPHAN_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_PRELOAD_WORLD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SCENE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SPELL_VISUAL_KIT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1154,7 +1202,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_ABANDON_NPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT,STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_WARGAME_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHROMIE_TIME_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLAIM_RAF_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_ALL_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1166,8 +1213,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TREASURE_PICKER_CACHE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLOSE_ARTIFACT_FORGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLOSE_HEART_FORGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLOSE_ITEM_FORGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_ERROR_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1206,8 +1251,18 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_TRANSPORT_QUERY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_PREVIEW_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_RENOWN_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_HOUSE_HELLO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_CANCEL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_CLAIM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFTING_ORDER_CRAFT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ 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_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);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFT_ENCHANT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CREATE_CHAR, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CREATE_SHIPMENT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1251,6 +1306,7 @@ void OpcodeTable::Initialize()
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);
@@ -1276,13 +1332,14 @@ void OpcodeTable::Initialize()
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);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_BASE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_CLOSE_INTERACTION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_CUSTOM_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_DESPAWN, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_INTERACTION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_RESET_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_SET_STATE_LOCAL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_UI_LINK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_SPEED_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1326,11 +1383,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_START_CONDITION_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_ARCHITECT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_CRAFTER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_MISSION_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_RECRUITMENT_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_TALENT_NPC, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLACE_BUILDING_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_PLACED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_REMOVED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1378,6 +1432,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOD_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_OPTION_NPC_INTERACTION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_QUEST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_REFRESH_OPTIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1386,6 +1441,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_NEW_LEADER, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_REQUEST_DECLINE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_UNINVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_EARNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1474,7 +1530,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_CHANGE_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_FIXUP_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_FULL_OVERFLOW, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLANDS_MISSION_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_AZERITE_GAIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_IS_QUEST_COMPLETE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1527,6 +1582,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_EQUIPMENT_SET, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_PARTY_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_SET_TIME_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_VERIFY_WORLD, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGOUT_CANCEL_ACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1560,6 +1616,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOTD, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOUNT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVEMENT_ENFORCEMENT_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ADD_IMPULSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_APPLY_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
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);
@@ -1577,6 +1634,20 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ROOT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ACTIVE_MOVER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_MAX_VEL, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_ADV_FLY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_COLLISION_HEIGHT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1628,11 +1699,13 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_UNSET_HOVER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_TELEPORT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNROOT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_ADV_FLY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_HOVERING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_ADD_IMPULSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_APPLY_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_COLLISION_HEIGHT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1663,16 +1736,13 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MONEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_RECEIVED_MAIL, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_NPC_INTERACTION_OPEN_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OFFER_PETITION_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ON_MONSTER_MOVE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_ANIMA_DIVERSION_UI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_ARTIFACT_FORGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_CONTAINER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_HEART_FORGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_ITEM_FORGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_LFG_DUNGEON_FINDER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OVERRIDE_LIGHT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAGE_TEXT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1736,9 +1806,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SAVE_GUILD_EMBLEM, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SHOW_UI_EVENT_TOAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SKINNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_TABARD_VENDOR_ACTIVATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_MUSIC, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1754,10 +1824,12 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PONG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_POWER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRELOAD_CHILD_MAP, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRELOAD_WORLD, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PREPOPULATE_NAME_CACHE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRE_RESSURECT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRINT_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROC_RESIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROFESSION_GOSSIP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PUSH_SPELL_TO_ACTION_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1794,6 +1866,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_REQUEST_ITEMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS_MULTIPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_ITEM_USABILITY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_LOG_FULL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_NON_LOG_UPDATE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1826,6 +1899,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_LOOKUP_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REATTACH_RESURRECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRAFT_ITEM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRUIT_A_FRIEND_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_COMPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_SPELL_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1852,6 +1926,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_TOKEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESURRECT_REQUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RETURNING_PLAYER_PROMPT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RETURN_APPLICANT_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RETURN_RECRUITING_CLUBS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1919,8 +1994,6 @@ void OpcodeTable::Initialize()
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_BANK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_MAILBOX, STATUS_NEVER, 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);
@@ -1938,6 +2011,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DAMAGE_SHIELD, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DELAYED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DISPELL_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EMPOWER_SET_STAGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EMPOWER_START, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EMPOWER_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ENERGIZE_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EXECUTE_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILED_OTHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1956,7 +2032,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_VISUAL_LOAD_SCREEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPLASH_SCREEN_SHOW_LATEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPIRIT_HEALER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STAND_STATE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMERS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1964,10 +2039,13 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_LOOT_ROLL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_STARTER_BUILD_ACTIVATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STREAMING_MOVIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUGGEST_INVITE_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_REQUEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1992,9 +2070,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_UPDATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_LIST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAIT_CONFIG_COMMIT_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_ABORTED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOGRIFY_NPC, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TREASURE_PICKER_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_CINEMATIC, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2002,7 +2080,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TUTORIAL_FLAGS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TWITTER_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_HEALING_RANGE_MODIFIED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_ITEM_INTERACTION_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2017,6 +2094,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CHARACTER_FLAGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CRAFTING_NPC_RECIPES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_DAILY_MISSION_COUNTER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_EXPANSION_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_GAME_TIME_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -2063,10 +2141,10 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO_IS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_MAP_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_QUEST_UPDATE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_SERVER_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_ENTITLEMENT_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_AWARDED_FROM_CURRENCY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_GAIN_ABORTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_XP_GAIN_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ZONE_UNDER_ATTACK, STATUS_NEVER, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 02507572377..f819789325b 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -44,34 +44,35 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
- CMSG_ABANDON_NPE_RESPONSE = 0x33E1,
+ CMSG_ABANDON_NPE_RESPONSE = 0x33EB,
CMSG_ACCEPT_GUILD_INVITE = 0x35FC,
- CMSG_ACCEPT_SOCIAL_CONTRACT = 0x373B,
+ CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x3395,
+ CMSG_ACCEPT_SOCIAL_CONTRACT = 0x373E,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
- CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3731,
- CMSG_ACTIVATE_SOULBIND = 0x33D0,
+ CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3733,
+ CMSG_ACTIVATE_SOULBIND = 0x33DA,
CMSG_ACTIVATE_TAXI = 0x34B1,
CMSG_ADDON_LIST = 0x35D8,
- CMSG_ADD_ACCOUNT_COSMETIC = 0x32A9,
- CMSG_ADD_BATTLENET_FRIEND = 0x3659,
- CMSG_ADD_FRIEND = 0x36CC,
- CMSG_ADD_IGNORE = 0x36D0,
- CMSG_ADD_TOY = 0x32A8,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3205,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33D3,
- CMSG_ADVENTURE_MAP_START_QUEST = 0x3360,
+ CMSG_ADD_ACCOUNT_COSMETIC = 0x32B1,
+ CMSG_ADD_BATTLENET_FRIEND = 0x365A,
+ CMSG_ADD_FRIEND = 0x36CE,
+ CMSG_ADD_IGNORE = 0x36D2,
+ CMSG_ADD_TOY = 0x32B0,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3204,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DD,
+ CMSG_ADVENTURE_MAP_START_QUEST = 0x3369,
CMSG_ALTER_APPEARANCE = 0x3503,
CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B6,
CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B7,
CMSG_AREA_TRIGGER = 0x31D8,
CMSG_ARTIFACT_ADD_POWER = 0x31AB,
CMSG_ARTIFACT_SET_APPEARANCE = 0x31AD,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3211,
- CMSG_ATTACK_STOP = 0x3260,
- CMSG_ATTACK_SWING = 0x325F,
- CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E2,
- CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E3,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3210,
+ CMSG_ATTACK_STOP = 0x3263,
+ CMSG_ATTACK_SWING = 0x3262,
+ CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E4,
+ CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E5,
CMSG_AUCTION_BROWSE_QUERY = 0x34D6,
CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DE,
CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DD,
@@ -85,10 +86,10 @@ enum OpcodeClient : uint16
CMSG_AUCTION_PLACE_BID = 0x34D5,
CMSG_AUCTION_REMOVE_ITEM = 0x34D3,
CMSG_AUCTION_REPLICATE_ITEMS = 0x34D4,
- CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3733,
+ CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3735,
CMSG_AUCTION_SELL_COMMODITY = 0x34DF,
CMSG_AUCTION_SELL_ITEM = 0x34D2,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3732,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3734,
CMSG_AUTH_CONTINUED_SESSION = 0x3766,
CMSG_AUTH_SESSION = 0x3765,
CMSG_AUTOBANK_ITEM = 0x3997,
@@ -100,32 +101,33 @@ enum OpcodeClient : uint16
CMSG_AUTO_GUILD_BANK_ITEM = 0x34BD,
CMSG_AUTO_STORE_BAG_ITEM = 0x399B,
CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C6,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3388,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x336B,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x338A,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3389,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3391,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3374,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3393,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3392,
CMSG_BANKER_ACTIVATE = 0x34B9,
CMSG_BATTLEFIELD_LEAVE = 0x3173,
CMSG_BATTLEFIELD_LIST = 0x317F,
- CMSG_BATTLEFIELD_PORT = 0x3537,
- CMSG_BATTLEMASTER_HELLO = 0x32C5,
+ CMSG_BATTLEFIELD_PORT = 0x3538,
+ CMSG_BATTLEMASTER_HELLO = 0x32CD,
CMSG_BATTLEMASTER_JOIN = 0x3530,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x3531,
- CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3535,
- CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3532,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36CF,
- CMSG_BATTLENET_REQUEST = 0x36F1,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36C9,
- CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x370F,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C8,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36BF,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3736,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B7,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B8,
- CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3708,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3704,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x36C7,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36EE,
+ CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3536,
+ CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3532,
+ CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3533,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D1,
+ CMSG_BATTLENET_REQUEST = 0x36F3,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CB,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3711,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CA,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C1,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3738,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B9,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BA,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370A,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3706,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x36C9,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F0,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C,
CMSG_BATTLE_PET_DELETE_PET = 0x3625,
CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3626,
@@ -139,59 +141,59 @@ enum OpcodeClient : uint16
CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E1,
CMSG_BEGIN_TRADE = 0x3157,
CMSG_BINDER_ACTIVATE = 0x34B8,
- CMSG_BLACK_MARKET_BID_ON_ITEM = 0x353F,
- CMSG_BLACK_MARKET_OPEN = 0x353D,
- CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353E,
- CMSG_BONUS_ROLL = 0x338B,
- CMSG_BUG_REPORT = 0x3684,
+ CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3540,
+ CMSG_BLACK_MARKET_OPEN = 0x353E,
+ CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353F,
+ CMSG_BONUS_ROLL = 0x3394,
+ CMSG_BUG_REPORT = 0x3685,
CMSG_BUSY_TRADE = 0x3158,
CMSG_BUY_BACK_ITEM = 0x34AA,
CMSG_BUY_BANK_SLOT = 0x34BA,
CMSG_BUY_ITEM = 0x34A9,
CMSG_BUY_REAGENT_BANK = 0x34BB,
CMSG_CAGE_BATTLE_PET = 0x31F4,
- CMSG_CALENDAR_ADD_EVENT = 0x367C,
- CMSG_CALENDAR_COMMUNITY_INVITE = 0x3670,
- CMSG_CALENDAR_COMPLAIN = 0x3678,
- CMSG_CALENDAR_COPY_EVENT = 0x3677,
- CMSG_CALENDAR_EVENT_SIGN_UP = 0x367A,
- CMSG_CALENDAR_GET = 0x366E,
- CMSG_CALENDAR_GET_EVENT = 0x366F,
- CMSG_CALENDAR_GET_NUM_PENDING = 0x3679,
- CMSG_CALENDAR_INVITE = 0x3671,
- CMSG_CALENDAR_MODERATOR_STATUS = 0x3675,
- CMSG_CALENDAR_REMOVE_EVENT = 0x3676,
- CMSG_CALENDAR_REMOVE_INVITE = 0x3672,
- CMSG_CALENDAR_RSVP = 0x3673,
- CMSG_CALENDAR_STATUS = 0x3674,
- CMSG_CALENDAR_UPDATE_EVENT = 0x367D,
+ CMSG_CALENDAR_ADD_EVENT = 0x367D,
+ CMSG_CALENDAR_COMMUNITY_INVITE = 0x3671,
+ CMSG_CALENDAR_COMPLAIN = 0x3679,
+ CMSG_CALENDAR_COPY_EVENT = 0x3678,
+ CMSG_CALENDAR_EVENT_SIGN_UP = 0x367B,
+ CMSG_CALENDAR_GET = 0x366F,
+ CMSG_CALENDAR_GET_EVENT = 0x3670,
+ CMSG_CALENDAR_GET_NUM_PENDING = 0x367A,
+ CMSG_CALENDAR_INVITE = 0x3672,
+ CMSG_CALENDAR_MODERATOR_STATUS = 0x3676,
+ CMSG_CALENDAR_REMOVE_EVENT = 0x3677,
+ CMSG_CALENDAR_REMOVE_INVITE = 0x3673,
+ CMSG_CALENDAR_RSVP = 0x3674,
+ CMSG_CALENDAR_STATUS = 0x3675,
+ CMSG_CALENDAR_UPDATE_EVENT = 0x367E,
CMSG_CANCEL_AURA = 0x31AF,
CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5,
- CMSG_CANCEL_CAST = 0x32AF,
- CMSG_CANCEL_CHANNELLING = 0x3278,
- CMSG_CANCEL_GROWTH_AURA = 0x327D,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3219,
+ CMSG_CANCEL_CAST = 0x32B7,
+ CMSG_CANCEL_CHANNELLING = 0x327B,
+ CMSG_CANCEL_GROWTH_AURA = 0x3283,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321C,
CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AE,
- CMSG_CANCEL_MOUNT_AURA = 0x3290,
+ CMSG_CANCEL_MOUNT_AURA = 0x3296,
CMSG_CANCEL_QUEUED_SPELL = 0x3180,
CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500,
CMSG_CANCEL_TRADE = 0x315C,
- CMSG_CAN_DUEL = 0x3661,
- CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3703,
- CMSG_CAST_SPELL = 0x32AC,
+ CMSG_CAN_DUEL = 0x3662,
+ CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3705,
+ CMSG_CAST_SPELL = 0x32B4,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x3345,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3346,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3326,
- CMSG_CHANGE_REALM_TICKET = 0x36F6,
- CMSG_CHANGE_SUB_GROUP = 0x364B,
- CMSG_CHARACTER_CHECK_UPGRADE = 0x36C2,
- CMSG_CHARACTER_RENAME_REQUEST = 0x36BD,
- CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C0,
- CMSG_CHARACTER_UPGRADE_START = 0x36C1,
- CMSG_CHAR_CUSTOMIZE = 0x368B,
- CMSG_CHAR_DELETE = 0x369A,
- CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3691,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x334E,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x334F,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x332F,
+ CMSG_CHANGE_REALM_TICKET = 0x36F8,
+ CMSG_CHANGE_SUB_GROUP = 0x364C,
+ CMSG_CHARACTER_CHECK_UPGRADE = 0x36C4,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x36BF,
+ CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C2,
+ CMSG_CHARACTER_UPGRADE_START = 0x36C3,
+ CMSG_CHAR_CUSTOMIZE = 0x368C,
+ CMSG_CHAR_DELETE = 0x369C,
+ CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3692,
CMSG_CHAT_ADDON_MESSAGE = 0x37EE,
CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF,
CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3,
@@ -228,29 +230,37 @@ enum OpcodeClient : uint16
CMSG_CHAT_REPORT_FILTERED = 0x37CC,
CMSG_CHAT_REPORT_IGNORED = 0x37CB,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
- CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3644,
- CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3251,
- CMSG_CHOICE_RESPONSE = 0x32B4,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33CF,
- CMSG_CLAIM_WEEKLY_REWARD = 0x33AB,
+ CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3254,
+ CMSG_CHOICE_RESPONSE = 0x32BC,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D9,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x33B5,
+ CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3408,
+ CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3214,
+ CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x340A,
+ CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3407,
+ CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3406,
+ CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x340B,
+ CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3213,
CMSG_CLEAR_NEW_APPEARANCE = 0x312F,
CMSG_CLEAR_RAID_MARKER = 0x31A7,
CMSG_CLEAR_TRADE_ITEM = 0x315E,
- CMSG_CLIENT_PORT_GRAVEYARD = 0x3539,
+ CMSG_CLIENT_PORT_GRAVEYARD = 0x353A,
CMSG_CLOSE_INTERACTION = 0x3499,
- CMSG_CLOSE_QUEST_CHOICE = 0x32B5,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33D7,
- 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 = 0x36F3,
+ CMSG_CLOSE_QUEST_CHOICE = 0x32BD,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E1,
+ CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x340C,
+ 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 = 0x36F5,
CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3633,
CMSG_COMMENTATOR_ENABLE = 0x35F0,
CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4,
@@ -258,38 +268,47 @@ enum OpcodeClient : uint16
CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F1,
CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3,
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2,
- CMSG_COMMENTATOR_SPECTATE = 0x3737,
+ CMSG_COMMENTATOR_SPECTATE = 0x3739,
CMSG_COMMENTATOR_START_WARGAME = 0x35EF,
- CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E0,
- CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EA,
- CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E1,
- CMSG_COMPLAINT = 0x366B,
- CMSG_COMPLETE_CINEMATIC = 0x3557,
+ CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E2,
+ CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EC,
+ CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E3,
+ CMSG_COMPLAINT = 0x366C,
+ CMSG_COMPLETE_CINEMATIC = 0x3558,
CMSG_COMPLETE_MOVIE = 0x34EB,
CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AC,
- CMSG_CONFIRM_RESPEC_WIPE = 0x3213,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3216,
CMSG_CONNECT_TO_FAILED = 0x35D4,
- CMSG_CONSUMABLE_TOKEN_BUY = 0x36E5,
- CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E6,
- CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E4,
- CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E8,
- CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36E9,
- CMSG_CONTRIBUTION_CONTRIBUTE = 0x356B,
- CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356C,
- CMSG_CONVERSATION_CINEMATIC_READY = 0x3559,
- CMSG_CONVERSATION_LINE_STARTED = 0x3558,
- CMSG_CONVERT_RAID = 0x364D,
- CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x357F,
- CMSG_CREATE_CHARACTER = 0x3643,
- CMSG_CREATE_SHIPMENT = 0x3312,
+ CMSG_CONSUMABLE_TOKEN_BUY = 0x36E7,
+ CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E8,
+ CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E6,
+ CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36EA,
+ CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EB,
+ CMSG_CONTRIBUTION_CONTRIBUTE = 0x356C,
+ CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356D,
+ CMSG_CONVERSATION_CINEMATIC_READY = 0x355A,
+ CMSG_CONVERSATION_LINE_STARTED = 0x3559,
+ CMSG_CONVERT_RAID = 0x364E,
+ CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3580,
+ CMSG_CRAFTING_ORDER_CANCEL = 0x358B,
+ CMSG_CRAFTING_ORDER_CLAIM = 0x3588,
+ CMSG_CRAFTING_ORDER_CREATE = 0x3585,
+ CMSG_CRAFTING_ORDER_FULFILL = 0x358A,
+ CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3587,
+ CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3586,
+ CMSG_CRAFTING_ORDER_REJECT = 0x358C,
+ CMSG_CRAFTING_ORDER_RELEASE = 0x3589,
+ CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x358D,
+ CMSG_CREATE_CHARACTER = 0x3644,
+ CMSG_CREATE_SHIPMENT = 0x331A,
CMSG_DB_QUERY_BULK = 0x35E4,
CMSG_DECLINE_GUILD_INVITES = 0x352D,
- CMSG_DECLINE_PETITION = 0x3546,
+ CMSG_DECLINE_PETITION = 0x3547,
CMSG_DELETE_EQUIPMENT_SET = 0x3519,
- CMSG_DEL_FRIEND = 0x36CD,
- CMSG_DEL_IGNORE = 0x36D1,
- CMSG_DEPOSIT_REAGENT_BANK = 0x334E,
- CMSG_DESTROY_ITEM = 0x32A2,
+ CMSG_DEL_FRIEND = 0x36CF,
+ CMSG_DEL_IGNORE = 0x36D3,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x3357,
+ CMSG_DESTROY_ITEM = 0x32AA,
CMSG_DF_BOOT_PLAYER_VOTE = 0x3616,
CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3608,
CMSG_DF_GET_JOIN_STATUS = 0x3614,
@@ -300,70 +319,70 @@ enum OpcodeClient : uint16
CMSG_DF_READY_CHECK_RESPONSE = 0x3619,
CMSG_DF_SET_ROLES = 0x3615,
CMSG_DF_TELEPORT = 0x3617,
- CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A42,
+ CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A41,
CMSG_DISMISS_CRITTER = 0x3507,
- CMSG_DO_COUNTDOWN = 0x3714,
- CMSG_DO_MASTER_LOOT_ROLL = 0x3218,
+ CMSG_DO_COUNTDOWN = 0x3716,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x321B,
CMSG_DO_READY_CHECK = 0x3634,
CMSG_DUEL_RESPONSE = 0x34F0,
- CMSG_EJECT_PASSENGER = 0x3246,
- CMSG_EMOTE = 0x3553,
+ CMSG_EJECT_PASSENGER = 0x3249,
+ CMSG_EMOTE = 0x3554,
CMSG_ENABLE_NAGLE = 0x376B,
CMSG_ENABLE_TAXI_NODE = 0x34AF,
- CMSG_ENGINE_SURVEY = 0x36DF,
+ CMSG_ENGINE_SURVEY = 0x36E1,
CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767,
CMSG_ENUM_CHARACTERS = 0x35E8,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36D9,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DB,
CMSG_FAR_SIGHT = 0x34F6,
CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B3,
CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B2,
CMSG_GAME_OBJ_REPORT_USE = 0x34FD,
CMSG_GAME_OBJ_USE = 0x34FC,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x330D,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32F3,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32E0,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3341,
- CMSG_GARRISON_COMPLETE_MISSION = 0x3333,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x330E,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x32F6,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3305,
- CMSG_GARRISON_GET_MAP_DATA = 0x330C,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x3364,
- CMSG_GARRISON_LEARN_TALENT = 0x3301,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3335,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x32DC,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F8,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x332A,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32F4,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x32F5,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32DB,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3310,
- CMSG_GARRISON_RESEARCH_TALENT = 0x32F9,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32DD,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F1,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E9,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F7,
- CMSG_GARRISON_SOCKET_TALENT = 0x33E4,
- CMSG_GARRISON_START_MISSION = 0x3332,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x32E1,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3315,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32FB,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32E8,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x334A,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x333C,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3316,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x32FE,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x330D,
+ CMSG_GARRISON_GET_MAP_DATA = 0x3314,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x336D,
+ CMSG_GARRISON_LEARN_TALENT = 0x3309,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x333E,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x32E4,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3300,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3333,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32FC,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x32FD,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32E3,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3318,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x3301,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32E5,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F9,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F1,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32FF,
+ CMSG_GARRISON_SOCKET_TALENT = 0x33EE,
+ CMSG_GARRISON_START_MISSION = 0x333B,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x32E9,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
- CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B2,
- CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3730,
- CMSG_GET_GARRISON_INFO = 0x32D6,
- CMSG_GET_ITEM_PURCHASE_DATA = 0x3541,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3311,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x32A6,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B4,
+ CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3732,
+ CMSG_GET_GARRISON_INFO = 0x32DE,
+ CMSG_GET_ITEM_PURCHASE_DATA = 0x3542,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3319,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x32AE,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
- CMSG_GET_RAF_ACCOUNT_INFO = 0x371E,
- CMSG_GET_REMAINING_GAME_TIME = 0x36E7,
- CMSG_GET_TROPHY_LIST = 0x3323,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DB,
- CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36EC,
- CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36ED,
- CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368F,
- CMSG_GM_TICKET_GET_CASE_STATUS = 0x368E,
- CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368D,
- CMSG_GOSSIP_REFRESH_OPTIONS = 0x357E,
+ CMSG_GET_RAF_ACCOUNT_INFO = 0x3720,
+ CMSG_GET_REMAINING_GAME_TIME = 0x36E9,
+ CMSG_GET_TROPHY_LIST = 0x332C,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DD,
+ CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36EE,
+ CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EF,
+ CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3690,
+ CMSG_GM_TICKET_GET_CASE_STATUS = 0x368F,
+ CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368E,
+ CMSG_GOSSIP_REFRESH_OPTIONS = 0x357F,
CMSG_GOSSIP_SELECT_OPTION = 0x349A,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308E,
CMSG_GUILD_ADD_RANK = 0x3065,
@@ -402,31 +421,31 @@ enum OpcodeClient : uint16
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3089,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x3070,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3071,
- CMSG_GUILD_SET_GUILD_MASTER = 0x36C4,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x36C6,
CMSG_GUILD_SET_MEMBER_NOTE = 0x3073,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3068,
CMSG_GUILD_SHIFT_RANK = 0x3067,
CMSG_GUILD_UPDATE_INFO_TEXT = 0x3076,
CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3075,
CMSG_HEARTH_AND_RESURRECT = 0x3515,
- CMSG_HIDE_QUEST_CHOICE = 0x32B6,
+ CMSG_HIDE_QUEST_CHOICE = 0x32BE,
CMSG_HOTFIX_REQUEST = 0x35E5,
CMSG_IGNORE_TRADE = 0x3159,
CMSG_INITIATE_ROLE_POLL = 0x35DA,
CMSG_INITIATE_TRADE = 0x3156,
- CMSG_INSPECT = 0x353B,
+ CMSG_INSPECT = 0x353C,
CMSG_INSTANCE_LOCK_RESPONSE = 0x351A,
- CMSG_ISLAND_QUEUE = 0x33A7,
- CMSG_ITEM_PURCHASE_REFUND = 0x3542,
- CMSG_ITEM_TEXT_QUERY = 0x3342,
+ CMSG_ISLAND_QUEUE = 0x33B1,
+ CMSG_ITEM_PURCHASE_REFUND = 0x3543,
+ CMSG_ITEM_TEXT_QUERY = 0x334B,
CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DF,
CMSG_JOIN_RATED_BATTLEGROUND = 0x3179,
- CMSG_KEEP_ALIVE = 0x367E,
- CMSG_KEYBOUND_OVERRIDE = 0x322B,
+ CMSG_KEEP_ALIVE = 0x367F,
+ CMSG_KEYBOUND_OVERRIDE = 0x322E,
CMSG_LATENCY_REPORT = 0x3771,
- CMSG_LEARN_PVP_TALENTS = 0x356A,
- CMSG_LEARN_TALENTS = 0x3568,
- CMSG_LEAVE_GROUP = 0x3648,
+ CMSG_LEARN_PVP_TALENTS = 0x356B,
+ CMSG_LEARN_TALENTS = 0x3569,
+ CMSG_LEAVE_GROUP = 0x3649,
CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E0,
CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360D,
CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360E,
@@ -434,101 +453,117 @@ enum OpcodeClient : uint16
CMSG_LFG_LIST_GET_STATUS = 0x360B,
CMSG_LFG_LIST_INVITE_APPLICANT = 0x3610,
CMSG_LFG_LIST_INVITE_RESPONSE = 0x3611,
- CMSG_LFG_LIST_JOIN = 0x3386,
+ CMSG_LFG_LIST_JOIN = 0x338F,
CMSG_LFG_LIST_LEAVE = 0x360A,
CMSG_LFG_LIST_SEARCH = 0x360C,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3387,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x3390,
CMSG_LIST_INVENTORY = 0x34A7,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B5,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B4,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B3,
- CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B6,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B7,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B6,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B5,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B8,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
- CMSG_LOAD_SELECTED_TROPHY = 0x3324,
+ CMSG_LOAD_SELECTED_TROPHY = 0x332D,
CMSG_LOGOUT_CANCEL = 0x34E6,
CMSG_LOGOUT_INSTANT = 0x34E7,
CMSG_LOGOUT_REQUEST = 0x34E4,
CMSG_LOG_DISCONNECT = 0x3769,
CMSG_LOG_STREAMING_ERROR = 0x376D,
- CMSG_LOOT_ITEM = 0x3216,
- CMSG_LOOT_MONEY = 0x3215,
- CMSG_LOOT_RELEASE = 0x321A,
- CMSG_LOOT_ROLL = 0x321B,
- CMSG_LOOT_UNIT = 0x3214,
- CMSG_LOW_LEVEL_RAID1 = 0x369E,
+ CMSG_LOOT_ITEM = 0x3219,
+ CMSG_LOOT_MONEY = 0x3218,
+ CMSG_LOOT_RELEASE = 0x321D,
+ CMSG_LOOT_ROLL = 0x321E,
+ CMSG_LOOT_UNIT = 0x3217,
+ CMSG_LOW_LEVEL_RAID1 = 0x36A0,
CMSG_LOW_LEVEL_RAID2 = 0x3521,
- CMSG_MAIL_CREATE_TEXT_ITEM = 0x354D,
- CMSG_MAIL_DELETE = 0x322D,
- CMSG_MAIL_GET_LIST = 0x3548,
- CMSG_MAIL_MARK_AS_READ = 0x354C,
- CMSG_MAIL_RETURN_TO_SENDER = 0x3654,
- CMSG_MAIL_TAKE_ITEM = 0x354A,
- CMSG_MAIL_TAKE_MONEY = 0x3549,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322F,
- CMSG_MASTER_LOOT_ITEM = 0x3217,
+ CMSG_MAIL_CREATE_TEXT_ITEM = 0x354E,
+ CMSG_MAIL_DELETE = 0x3230,
+ CMSG_MAIL_GET_LIST = 0x3549,
+ CMSG_MAIL_MARK_AS_READ = 0x354D,
+ CMSG_MAIL_RETURN_TO_SENDER = 0x3655,
+ CMSG_MAIL_TAKE_ITEM = 0x354B,
+ CMSG_MAIL_TAKE_MONEY = 0x354A,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3232,
+ CMSG_MASTER_LOOT_ITEM = 0x321A,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C7,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C4,
CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C2,
- CMSG_MINIMAP_PING = 0x364A,
+ CMSG_MINIMAP_PING = 0x364B,
CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318B,
CMSG_MOUNT_CLEAR_FANFARE = 0x312D,
CMSG_MOUNT_SET_FAVORITE = 0x3632,
- CMSG_MOUNT_SPECIAL_ANIM = 0x3291,
- CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4F,
- CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A16,
- 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_MOUNT_SPECIAL_ANIM = 0x3297,
+ CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A50,
+ CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4E,
+ 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_DOUBLE_JUMP = 0x39EB,
- CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1F,
- CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A25,
+ CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1E,
+ CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A24,
CMSG_MOVE_FALL_LAND = 0x39FB,
- CMSG_MOVE_FALL_RESET = 0x3A1A,
- CMSG_MOVE_FEATHER_FALL_ACK = 0x3A1D,
- 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 = 0x3A0F,
- CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A0D,
- CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A0C,
- CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A23,
- CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0E,
- CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A24,
- CMSG_MOVE_FORCE_UNROOT_ACK = 0x3A10,
- CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A22,
- CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A36,
- CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A37,
+ 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_ROOT_ACK = 0x3A0E,
+ CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A0C,
+ CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A0B,
+ CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A22,
+ CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0D,
+ 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_GUILD_BANK_ITEM = 0x34C1,
- CMSG_MOVE_HEARTBEAT = 0x3A11,
- CMSG_MOVE_HOVER_ACK = 0x3A14,
- CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3A38,
- CMSG_MOVE_INERTIA_ENABLE_ACK = 0x3A39,
- CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3A47,
+ 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_JUMP = 0x39EA,
- CMSG_MOVE_KNOCK_BACK_ACK = 0x3A13,
- CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3A50,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3A18,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3A17,
- CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE = 0x3A45,
- CMSG_MOVE_SET_CAN_FLY_ACK = 0x3A28,
- CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A26,
- CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A3C,
- CMSG_MOVE_SET_FACING = 0x3A0A,
- CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3A09,
- CMSG_MOVE_SET_FLY = 0x3A29,
- CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A27,
- CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A43,
- CMSG_MOVE_SET_PITCH = 0x3A0B,
+ CMSG_MOVE_KNOCK_BACK_ACK = 0x3A12,
+ CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3A4F,
+ 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_CAN_FLY_ACK = 0x3A27,
+ CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A25,
+ CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A3B,
+ CMSG_MOVE_SET_FACING = 0x3A09,
+ CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3A5F,
+ CMSG_MOVE_SET_FLY = 0x3A28,
+ CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A26,
+ CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A42,
+ 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 = 0x3A15,
+ CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A14,
CMSG_MOVE_SET_WALK_MODE = 0x39F3,
- CMSG_MOVE_SPLINE_DONE = 0x3A19,
- CMSG_MOVE_START_ASCEND = 0x3A2A,
+ CMSG_MOVE_SPLINE_DONE = 0x3A18,
+ CMSG_MOVE_START_ASCEND = 0x3A29,
CMSG_MOVE_START_BACKWARD = 0x39E5,
- CMSG_MOVE_START_DESCEND = 0x3A31,
+ CMSG_MOVE_START_DESCEND = 0x3A30,
CMSG_MOVE_START_FORWARD = 0x39E4,
CMSG_MOVE_START_PITCH_DOWN = 0x39F0,
CMSG_MOVE_START_PITCH_UP = 0x39EF,
@@ -538,51 +573,51 @@ enum OpcodeClient : uint16
CMSG_MOVE_START_TURN_LEFT = 0x39EC,
CMSG_MOVE_START_TURN_RIGHT = 0x39ED,
CMSG_MOVE_STOP = 0x39E6,
- CMSG_MOVE_STOP_ASCEND = 0x3A2B,
+ CMSG_MOVE_STOP_ASCEND = 0x3A2A,
CMSG_MOVE_STOP_PITCH = 0x39F1,
CMSG_MOVE_STOP_STRAFE = 0x39E9,
CMSG_MOVE_STOP_SWIM = 0x39FD,
CMSG_MOVE_STOP_TURN = 0x39EE,
CMSG_MOVE_TELEPORT_ACK = 0x39FA,
- CMSG_MOVE_TIME_SKIPPED = 0x3A1C,
- CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A1B,
- CMSG_MOVE_WATER_WALK_ACK = 0x3A1E,
+ CMSG_MOVE_TIME_SKIPPED = 0x3A1B,
+ CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A1A,
+ CMSG_MOVE_WATER_WALK_ACK = 0x3A1D,
CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308F,
CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D5,
- CMSG_NEXT_CINEMATIC_CAMERA = 0x3556,
+ CMSG_NEXT_CINEMATIC_CAMERA = 0x3557,
CMSG_OBJECT_UPDATE_FAILED = 0x3181,
CMSG_OBJECT_UPDATE_RESCUED = 0x3182,
- CMSG_OFFER_PETITION = 0x33CE,
- CMSG_OPENING_CINEMATIC = 0x3555,
- CMSG_OPEN_ITEM = 0x3343,
- CMSG_OPEN_MISSION_NPC = 0x3307,
- CMSG_OPEN_SHIPMENT_NPC = 0x330F,
- CMSG_OPEN_TRADESKILL_NPC = 0x331A,
+ CMSG_OFFER_PETITION = 0x33D8,
+ CMSG_OPENING_CINEMATIC = 0x3556,
+ CMSG_OPEN_ITEM = 0x334C,
+ CMSG_OPEN_MISSION_NPC = 0x330F,
+ CMSG_OPEN_SHIPMENT_NPC = 0x3317,
+ CMSG_OPEN_TRADESKILL_NPC = 0x3322,
CMSG_OPT_OUT_OF_LOOT = 0x3504,
CMSG_OVERRIDE_SCREEN_FLASH = 0x352E,
CMSG_PARTY_INVITE = 0x3602,
CMSG_PARTY_INVITE_RESPONSE = 0x3604,
- CMSG_PARTY_UNINVITE = 0x3646,
- CMSG_PERFORM_ITEM_INTERACTION = 0x3237,
+ CMSG_PARTY_UNINVITE = 0x3647,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x323A,
CMSG_PETITION_BUY = 0x34CF,
- CMSG_PETITION_RENAME_GUILD = 0x36C5,
+ CMSG_PETITION_RENAME_GUILD = 0x36C7,
CMSG_PETITION_SHOW_LIST = 0x34CE,
CMSG_PETITION_SHOW_SIGNATURES = 0x34D0,
CMSG_PET_ABANDON = 0x3493,
CMSG_PET_ACTION = 0x3491,
CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E4,
- CMSG_PET_BATTLE_INPUT = 0x3640,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322C,
+ CMSG_PET_BATTLE_INPUT = 0x3641,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322F,
CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E3,
- CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641,
+ CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3642,
CMSG_PET_BATTLE_REQUEST_PVP = 0x31DD,
CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DE,
CMSG_PET_BATTLE_REQUEST_WILD = 0x31DB,
CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E5,
CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DC,
CMSG_PET_CANCEL_AURA = 0x3494,
- CMSG_PET_CAST_SPELL = 0x32AB,
- CMSG_PET_RENAME = 0x3683,
+ CMSG_PET_CAST_SPELL = 0x32B3,
+ CMSG_PET_RENAME = 0x3684,
CMSG_PET_SET_ACTION = 0x3490,
CMSG_PET_SPELL_AUTOCAST = 0x3495,
CMSG_PET_STOP_ATTACK = 0x3492,
@@ -590,189 +625,193 @@ enum OpcodeClient : uint16
CMSG_PLAYER_LOGIN = 0x35EA,
CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
CMSG_PVP_LOG_DATA = 0x317C,
- CMSG_QUERY_BATTLE_PET_NAME = 0x3284,
- CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365F,
- CMSG_QUERY_CORPSE_TRANSPORT = 0x3660,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x328A,
+ CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660,
+ CMSG_QUERY_CORPSE_TRANSPORT = 0x3661,
CMSG_QUERY_COUNTDOWN_TIMER = 0x31AA,
- CMSG_QUERY_CREATURE = 0x327E,
- CMSG_QUERY_GAME_OBJECT = 0x327F,
- CMSG_QUERY_GARRISON_PET_NAME = 0x3285,
- CMSG_QUERY_GUILD_INFO = 0x3689,
+ CMSG_QUERY_CREATURE = 0x3284,
+ CMSG_QUERY_GAME_OBJECT = 0x3285,
+ CMSG_QUERY_GARRISON_PET_NAME = 0x328B,
+ CMSG_QUERY_GUILD_INFO = 0x368A,
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E,
- CMSG_QUERY_NEXT_MAIL_TIME = 0x354B,
- CMSG_QUERY_NPC_TEXT = 0x3280,
- CMSG_QUERY_PAGE_TEXT = 0x3282,
- CMSG_QUERY_PETITION = 0x3286,
- CMSG_QUERY_PET_NAME = 0x3283,
+ CMSG_QUERY_NEXT_MAIL_TIME = 0x354C,
+ CMSG_QUERY_NPC_TEXT = 0x3286,
+ CMSG_QUERY_PAGE_TEXT = 0x3288,
+ CMSG_QUERY_PETITION = 0x328C,
+ CMSG_QUERY_PET_NAME = 0x3289,
CMSG_QUERY_PLAYER_NAMES = 0x3772,
CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3770,
CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x376F,
CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175,
- CMSG_QUERY_QUEST_INFO = 0x3281,
- CMSG_QUERY_REALM_NAME = 0x3688,
- CMSG_QUERY_SCENARIO_POI = 0x3655,
+ CMSG_QUERY_QUEST_INFO = 0x3287,
+ CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3176,
+ CMSG_QUERY_REALM_NAME = 0x3689,
+ CMSG_QUERY_SCENARIO_POI = 0x3656,
CMSG_QUERY_TIME = 0x34E3,
- CMSG_QUERY_TREASURE_PICKER = 0x3367,
+ CMSG_QUERY_TREASURE_PICKER = 0x3370,
CMSG_QUERY_VOID_STORAGE = 0x31A3,
CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4,
CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E,
CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x34A0,
- CMSG_QUEST_GIVER_CLOSE_QUEST = 0x355C,
+ CMSG_QUEST_GIVER_CLOSE_QUEST = 0x355D,
CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x349F,
CMSG_QUEST_GIVER_HELLO = 0x349C,
CMSG_QUEST_GIVER_QUERY_QUEST = 0x349D,
CMSG_QUEST_GIVER_REQUEST_REWARD = 0x34A1,
CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A3,
CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A2,
- CMSG_QUEST_LOG_REMOVE_QUEST = 0x3540,
- CMSG_QUEST_POI_QUERY = 0x36AC,
+ CMSG_QUEST_LOG_REMOVE_QUEST = 0x3541,
+ CMSG_QUEST_POI_QUERY = 0x36AE,
CMSG_QUEST_PUSH_RESULT = 0x34A6,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33BF,
- CMSG_QUEST_SESSION_REQUEST_START = 0x33BE,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0x3729,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C9,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x33C8,
+ CMSG_QUEST_SESSION_REQUEST_STOP = 0x372B,
CMSG_QUEUED_MESSAGES_END = 0x376C,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3702,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3701,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x372E,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3700,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36FF,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3704,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3703,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3730,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3702,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3701,
CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3512,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0x371F,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3721,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3720,
- CMSG_RANDOM_ROLL = 0x3653,
+ CMSG_RAF_CLAIM_NEXT_REWARD = 0x3721,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3723,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3722,
+ CMSG_RANDOM_ROLL = 0x3654,
CMSG_READY_CHECK_RESPONSE = 0x3635,
- CMSG_READ_ITEM = 0x3344,
+ CMSG_READ_ITEM = 0x334D,
CMSG_RECLAIM_CORPSE = 0x34E9,
- CMSG_REMOVE_NEW_ITEM = 0x336A,
- CMSG_REMOVE_RAF_RECRUIT = 0x3722,
+ CMSG_REMOVE_NEW_ITEM = 0x3373,
+ CMSG_REMOVE_RAF_RECRUIT = 0x3724,
CMSG_REORDER_CHARACTERS = 0x35E9,
CMSG_REPAIR_ITEM = 0x34FA,
- CMSG_REPLACE_TROPHY = 0x3325,
- CMSG_REPOP_REQUEST = 0x3538,
- CMSG_REPORT_CLIENT_VARIABLES = 0x36FC,
- CMSG_REPORT_ENABLED_ADDONS = 0x36FB,
- CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FD,
+ CMSG_REPLACE_TROPHY = 0x332E,
+ CMSG_REPOP_REQUEST = 0x3539,
+ CMSG_REPORT_CLIENT_VARIABLES = 0x36FE,
+ CMSG_REPORT_ENABLED_ADDONS = 0x36FD,
+ CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A6,
+ CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FF,
CMSG_REPORT_PVP_PLAYER_AFK = 0x3502,
- CMSG_REPORT_SERVER_LAG = 0x33B7,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x33B8,
- CMSG_REQUEST_ACCOUNT_DATA = 0x3693,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x3369,
+ CMSG_REPORT_SERVER_LAG = 0x33C1,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x33C2,
+ CMSG_REQUEST_ACCOUNT_DATA = 0x3694,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x3372,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317E,
CMSG_REQUEST_CEMETERY_LIST = 0x3177,
- CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368A,
- CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C8,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x33A9,
- CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353C,
- CMSG_REQUEST_FORCED_REACTIONS = 0x320F,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33E3,
+ CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368B,
+ CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32D0,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x33B3,
+ CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353D,
+ CMSG_REQUEST_FORCED_REACTIONS = 0x320E,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33ED,
CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A9,
CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A8,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33B9,
- CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32B7,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3209,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320A,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C3,
+ CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32BF,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3208,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3209,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
- CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3652,
+ CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653,
CMSG_REQUEST_PET_INFO = 0x3496,
- CMSG_REQUEST_PLAYED_TIME = 0x3289,
+ CMSG_REQUEST_PLAYED_TIME = 0x328F,
CMSG_REQUEST_PVP_REWARDS = 0x3196,
- CMSG_REQUEST_RAID_INFO = 0x36C6,
+ CMSG_REQUEST_RAID_INFO = 0x36C8,
CMSG_REQUEST_RATED_PVP_INFO = 0x35E3,
CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309B,
CMSG_REQUEST_RESEARCH_HISTORY = 0x3167,
CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3197,
CMSG_REQUEST_STABLED_PETS = 0x3497,
- CMSG_REQUEST_VEHICLE_EXIT = 0x3241,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3243,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3242,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3244,
- CMSG_REQUEST_WEEKLY_REWARDS = 0x33AC,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3368,
- CMSG_RESET_CHALLENGE_MODE = 0x3207,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3208,
- CMSG_RESET_INSTANCES = 0x3667,
- CMSG_RESURRECT_RESPONSE = 0x3682,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x3327,
- CMSG_RIDE_VEHICLE_INTERACT = 0x3245,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x3244,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3246,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3245,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3247,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x33B6,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3371,
+ CMSG_RESET_CHALLENGE_MODE = 0x3206,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3207,
+ CMSG_RESET_INSTANCES = 0x3668,
+ CMSG_RESURRECT_RESPONSE = 0x3683,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3330,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x3248,
CMSG_SAVE_CUF_PROFILES = 0x318C,
CMSG_SAVE_EQUIPMENT_SET = 0x3518,
- CMSG_SAVE_GUILD_EMBLEM = 0x32BB,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x3228,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x3227,
- CMSG_SCENE_TRIGGER_EVENT = 0x3229,
- CMSG_SELF_RES = 0x3543,
+ CMSG_SAVE_GUILD_EMBLEM = 0x32C3,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x322B,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x322A,
+ CMSG_SCENE_TRIGGER_EVENT = 0x322C,
+ CMSG_SELF_RES = 0x3544,
CMSG_SELL_ITEM = 0x34A8,
- CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F5,
- CMSG_SEND_CONTACT_LIST = 0x36CB,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F7,
+ CMSG_SEND_CONTACT_LIST = 0x36CD,
CMSG_SEND_MAIL = 0x35FA,
CMSG_SEND_TEXT_EMOTE = 0x348E,
- CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3699,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322E,
- CMSG_SET_ACTION_BAR_TOGGLES = 0x3544,
+ CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369B,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3231,
+ CMSG_SET_ACTION_BAR_TOGGLES = 0x3545,
CMSG_SET_ACTION_BUTTON = 0x3636,
- CMSG_SET_ACTIVE_MOVER = 0x3A3D,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C9,
- CMSG_SET_ASSISTANT_LEADER = 0x364E,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3347,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3348,
- CMSG_SET_CHAT_DISABLED = 0x3735,
- CMSG_SET_CONTACT_NOTES = 0x36CE,
+ CMSG_SET_ACTIVE_MOVER = 0x3A3C,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D1,
+ CMSG_SET_ASSISTANT_LEADER = 0x364F,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3350,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3351,
+ CMSG_SET_CONTACT_NOTES = 0x36D0,
CMSG_SET_CURRENCY_FLAGS = 0x3169,
- CMSG_SET_DIFFICULTY_ID = 0x322A,
- CMSG_SET_DUNGEON_DIFFICULTY = 0x3681,
+ CMSG_SET_DIFFICULTY_ID = 0x322D,
+ CMSG_SET_DUNGEON_DIFFICULTY = 0x3682,
+ CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x327E,
CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3618,
CMSG_SET_FACTION_AT_WAR = 0x34EC,
CMSG_SET_FACTION_INACTIVE = 0x34EE,
CMSG_SET_FACTION_NOT_AT_WAR = 0x34ED,
CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31BA,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x334A,
- CMSG_SET_LOOT_METHOD = 0x3647,
- CMSG_SET_LOOT_SPECIALIZATION = 0x3551,
- CMSG_SET_PARTY_ASSIGNMENT = 0x3650,
- CMSG_SET_PARTY_LEADER = 0x3649,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3353,
+ CMSG_SET_LOOT_METHOD = 0x3648,
+ CMSG_SET_LOOT_SPECIALIZATION = 0x3552,
+ CMSG_SET_PARTY_ASSIGNMENT = 0x3651,
+ CMSG_SET_PARTY_LEADER = 0x364A,
CMSG_SET_PET_SLOT = 0x3168,
- CMSG_SET_PLAYER_DECLINED_NAMES = 0x3687,
+ CMSG_SET_PLAYER_DECLINED_NAMES = 0x3688,
CMSG_SET_PREFERRED_CEMETERY = 0x3178,
- CMSG_SET_PVP = 0x32BF,
- CMSG_SET_RAID_DIFFICULTY = 0x36D7,
+ CMSG_SET_PVP = 0x32C7,
+ CMSG_SET_RAID_DIFFICULTY = 0x36D9,
CMSG_SET_ROLE = 0x35D9,
- CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3685,
- CMSG_SET_SELECTION = 0x353A,
+ CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3686,
+ CMSG_SET_SELECTION = 0x353B,
CMSG_SET_SHEATHED = 0x348F,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3349,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3352,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x3501,
- CMSG_SET_TITLE = 0x328F,
+ CMSG_SET_TITLE = 0x3295,
CMSG_SET_TRADE_CURRENCY = 0x3160,
CMSG_SET_TRADE_GOLD = 0x315F,
CMSG_SET_TRADE_ITEM = 0x315D,
- CMSG_SET_USING_PARTY_GARRISON = 0x3309,
- CMSG_SET_WAR_MODE = 0x32C0,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3311,
+ CMSG_SET_WAR_MODE = 0x32C8,
CMSG_SET_WATCHED_FACTION = 0x34EF,
- CMSG_SHOW_TRADE_SKILL = 0x36BE,
- CMSG_SIGN_PETITION = 0x3545,
- CMSG_SILENCE_PARTY_TALKER = 0x3651,
- CMSG_SOCIAL_CONTRACT_REQUEST = 0x373A,
+ CMSG_SHOW_TRADE_SKILL = 0x36C0,
+ CMSG_SIGN_PETITION = 0x3546,
+ CMSG_SILENCE_PARTY_TALKER = 0x3652,
+ CMSG_SOCIAL_CONTRACT_REQUEST = 0x373D,
CMSG_SOCKET_GEMS = 0x34F9,
- CMSG_SORT_BAGS = 0x334B,
- CMSG_SORT_BANK_BAGS = 0x334C,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x334D,
+ CMSG_SORT_BAGS = 0x3354,
+ CMSG_SORT_BANK_BAGS = 0x3355,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x3356,
CMSG_SPELL_CLICK = 0x349B,
+ CMSG_SPELL_EMPOWER_RELEASE = 0x327C,
+ CMSG_SPELL_EMPOWER_RESTART = 0x327D,
CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B5,
CMSG_SPLIT_GUILD_BANK_ITEM = 0x34C8,
CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x34C5,
CMSG_SPLIT_ITEM = 0x399E,
CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x34C3,
CMSG_STAND_STATE_CHANGE = 0x318A,
- CMSG_START_CHALLENGE_MODE = 0x355D,
+ CMSG_START_CHALLENGE_MODE = 0x355E,
CMSG_START_SPECTATOR_WAR_GAME = 0x35DF,
CMSG_START_WAR_GAME = 0x35DE,
CMSG_STORE_GUILD_BANK_ITEM = 0x34BE,
- CMSG_SUBMIT_USER_FEEDBACK = 0x3692,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33D8,
- CMSG_SUMMON_RESPONSE = 0x3669,
- CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3645,
+ CMSG_SUBMIT_USER_FEEDBACK = 0x3693,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E2,
+ CMSG_SUMMON_RESPONSE = 0x366A,
+ CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646,
CMSG_SURRENDER_ARENA = 0x3174,
CMSG_SUSPEND_COMMS_ACK = 0x3764,
CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
@@ -780,148 +819,150 @@ enum OpcodeClient : uint16
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x34BF,
- CMSG_SWAP_SUB_GROUPS = 0x364C,
+ CMSG_SWAP_SUB_GROUPS = 0x364D,
CMSG_SWAP_VOID_ITEM = 0x31A5,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x32BC,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x32C4,
CMSG_TALK_TO_GOSSIP = 0x3498,
CMSG_TAXI_NODE_STATUS_QUERY = 0x34AE,
CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B0,
CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34B2,
- 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 = 0x3656,
- CMSG_TOGGLE_PVP = 0x32BE,
+ 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 = 0x3657,
+ CMSG_TOGGLE_PVP = 0x32C6,
CMSG_TOTEM_DESTROYED = 0x3506,
CMSG_TOY_CLEAR_FANFARE = 0x312E,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x3366,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x336F,
CMSG_TRAINER_BUY_SPELL = 0x34B4,
CMSG_TRAINER_LIST = 0x34B3,
+ CMSG_TRAITS_COMMIT_CONFIG = 0x3401,
+ CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x33FF,
CMSG_TRANSMOGRIFY_ITEMS = 0x3198,
- CMSG_TURN_IN_PETITION = 0x3547,
- CMSG_TUTORIAL = 0x36D8,
+ CMSG_TURN_IN_PETITION = 0x3548,
+ CMSG_TUTORIAL = 0x36DA,
CMSG_TWITTER_CHECK_STATUS = 0x312A,
CMSG_TWITTER_CONNECT = 0x3127,
CMSG_TWITTER_DISCONNECT = 0x312B,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33A8,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B2,
CMSG_UNACCEPT_TRADE = 0x315B,
- CMSG_UNDELETE_CHARACTER = 0x36DA,
+ CMSG_UNDELETE_CHARACTER = 0x36DC,
CMSG_UNLEARN_SKILL = 0x34F3,
CMSG_UNLEARN_SPECIALIZATION = 0x31A6,
CMSG_UNLOCK_VOID_STORAGE = 0x31A2,
- CMSG_UPDATE_ACCOUNT_DATA = 0x3694,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AE,
- CMSG_UPDATE_CLIENT_SETTINGS = 0x3663,
- CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A44,
- CMSG_UPDATE_RAID_TARGET = 0x364F,
- CMSG_UPDATE_SPELL_VISUAL = 0x32AD,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36EF,
- CMSG_UPGRADE_GARRISON = 0x32D1,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33D6,
+ CMSG_UPDATE_AADC_STATUS = 0x3737,
+ CMSG_UPDATE_ACCOUNT_DATA = 0x3695,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32B6,
+ CMSG_UPDATE_CLIENT_SETTINGS = 0x3664,
+ CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3323,
+ CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A43,
+ CMSG_UPDATE_RAID_TARGET = 0x3650,
+ CMSG_UPDATE_SPELL_VISUAL = 0x32B5,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F1,
+ CMSG_UPGRADE_GARRISON = 0x32D9,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E0,
CMSG_USED_FOLLOW = 0x3187,
- CMSG_USE_CRITTER_ITEM = 0x324B,
+ CMSG_USE_CRITTER_ITEM = 0x324E,
CMSG_USE_EQUIPMENT_SET = 0x3995,
- CMSG_USE_ITEM = 0x32A7,
- CMSG_USE_TOY = 0x32AA,
- CMSG_VAS_CHECK_TRANSFER_OK = 0x3707,
- CMSG_VAS_GET_QUEUE_MINUTES = 0x3706,
- CMSG_VAS_GET_SERVICE_STATUS = 0x3705,
+ CMSG_USE_ITEM = 0x32AF,
+ CMSG_USE_TOY = 0x32B2,
+ CMSG_VAS_CHECK_TRANSFER_OK = 0x3709,
+ CMSG_VAS_GET_QUEUE_MINUTES = 0x3708,
+ CMSG_VAS_GET_SERVICE_STATUS = 0x3707,
CMSG_VIOLENCE_LEVEL = 0x3185,
- CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370B,
- CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370C,
- CMSG_VOICE_CHAT_LOGIN = 0x370A,
+ CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370D,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370E,
+ CMSG_VOICE_CHAT_LOGIN = 0x370C,
CMSG_VOID_STORAGE_TRANSFER = 0x31A4,
CMSG_WARDEN3_DATA = 0x35EC,
- CMSG_WHO = 0x3680,
- CMSG_WHO_IS = 0x367F,
+ CMSG_WHO = 0x3681,
+ CMSG_WHO_IS = 0x3680,
CMSG_WORLD_PORT_RESPONSE = 0x35F9,
CMSG_WRAP_ITEM = 0x3994,
};
enum OpcodeServer : uint16
{
- SMSG_ABORT_NEW_WORLD = 0x259A,
- SMSG_ACCOUNT_COSMETIC_ADDED = 0x2872,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2858,
- SMSG_ACCOUNT_DATA_TIMES = 0x26FE,
- SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AC,
- SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2871,
- SMSG_ACCOUNT_TOY_UPDATE = 0x25AD,
- SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B0,
- SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25AF,
- SMSG_ACHIEVEMENT_DELETED = 0x26DD,
- SMSG_ACHIEVEMENT_EARNED = 0x263B,
+ SMSG_ABORT_NEW_WORLD = 0x259C,
+ SMSG_ACCOUNT_COSMETIC_ADDED = 0x287B,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2861,
+ SMSG_ACCOUNT_DATA_TIMES = 0x2704,
+ SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AF,
+ SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x287A,
+ SMSG_ACCOUNT_TOY_UPDATE = 0x25B0,
+ SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B3,
+ SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B2,
+ SMSG_ACHIEVEMENT_DELETED = 0x26E2,
+ SMSG_ACHIEVEMENT_EARNED = 0x2640,
SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015,
SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017,
- SMSG_ACTIVATE_TAXI_REPLY = 0x2675,
- SMSG_ACTIVE_GLYPHS = 0x2C54,
- SMSG_ADDON_LIST_REQUEST = 0x263A,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2635,
- SMSG_ADD_ITEM_PASSIVE = 0x25A8,
- SMSG_ADD_LOSS_OF_CONTROL = 0x2669,
- SMSG_ADD_RUNE_POWER = 0x26AF,
- SMSG_ADJUST_SPLINE_DURATION = 0x25CC,
- SMSG_ADVANCED_COMBAT_LOG = 0x286E,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2868,
- SMSG_ADVENTURE_MAP_OPEN_NPC = 0x27E5,
- SMSG_AE_LOOT_TARGETS = 0x2610,
- SMSG_AE_LOOT_TARGET_ACK = 0x2611,
- SMSG_AI_REACTION = 0x26AC,
- SMSG_ALLIED_RACE_DETAILS = 0x27EB,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x267A,
+ SMSG_ACTIVE_GLYPHS = 0x2C57,
+ SMSG_ADDON_LIST_REQUEST = 0x263F,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263A,
+ SMSG_ADD_ITEM_PASSIVE = 0x25AB,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x266E,
+ SMSG_ADD_RUNE_POWER = 0x26B4,
+ SMSG_ADJUST_SPLINE_DURATION = 0x25CF,
+ SMSG_ADVANCED_COMBAT_LOG = 0x2877,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2871,
+ SMSG_AE_LOOT_TARGETS = 0x2615,
+ SMSG_AE_LOOT_TARGET_ACK = 0x2616,
+ SMSG_AI_REACTION = 0x26B1,
+ SMSG_ALLIED_RACE_DETAILS = 0x27F4,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2571,
SMSG_ALL_ACHIEVEMENT_DATA = 0x2570,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2845,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284E,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588,
SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x2733,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x2739,
SMSG_AREA_TRIGGER_DENIED = 0x2902,
SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x28FF,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x270A,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x2710,
SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE,
SMSG_AREA_TRIGGER_RE_PATH = 0x28FD,
SMSG_AREA_TRIGGER_RE_SHAPE = 0x2901,
SMSG_AREA_TRIGGER_UNATTACH = 0x2900,
- SMSG_ARENA_CLEAR_OPPONENTS = 0x2641,
- SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262A,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2640,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x2796,
- SMSG_ARTIFACT_FORGE_ERROR = 0x2794,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x2795,
- SMSG_ARTIFACT_XP_GAIN = 0x27DE,
+ SMSG_ARENA_CLEAR_OPPONENTS = 0x2646,
+ SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262F,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2645,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279E,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x279C,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x279D,
+ SMSG_ARTIFACT_XP_GAIN = 0x27E7,
SMSG_ATTACKER_STATE_UPDATE = 0x294D,
SMSG_ATTACK_START = 0x2938,
SMSG_ATTACK_STOP = 0x2939,
SMSG_ATTACK_SWING_ERROR = 0x2947,
SMSG_ATTACK_SWING_LANDED_LOG = 0x2948,
- SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27C7,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27C6,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27C5,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26E7,
- SMSG_AUCTION_COMMAND_RESULT = 0x26E4,
- SMSG_AUCTION_DISABLE_POSTING_BEFORE_MAINTENANCE = 0x287F,
- SMSG_AUCTION_FAVORITE_LIST = 0x285F,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2856,
- SMSG_AUCTION_HELLO_RESPONSE = 0x26E2,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2855,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2852,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2853,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2854,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26E6,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26E8,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E3,
- SMSG_AUCTION_WON_NOTIFICATION = 0x26E5,
+ SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D0,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CF,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CE,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26ED,
+ SMSG_AUCTION_COMMAND_RESULT = 0x26EA,
+ SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x288D,
+ SMSG_AUCTION_FAVORITE_LIST = 0x2868,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285F,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x26E8,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285E,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x285B,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x285C,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285D,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26EC,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EE,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E9,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x26EB,
SMSG_AURA_POINTS_DEPLETED = 0x2C23,
SMSG_AURA_UPDATE = 0x2C22,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_FAILED = 0x256C,
SMSG_AUTH_RESPONSE = 0x256D,
SMSG_AVAILABLE_HOTFIXES = 0x290F,
- SMSG_AZERITE_RESPEC_NPC = 0x27E8,
SMSG_BAG_CLEANUP_FINISHED = 0x2DA7,
- SMSG_BARBER_SHOP_RESULT = 0x26B4,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2836,
+ SMSG_BARBER_SHOP_RESULT = 0x26B9,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283F,
SMSG_BATTLEFIELD_LIST = 0x2927,
SMSG_BATTLEFIELD_PORT_DENIED = 0x292D,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923,
@@ -937,113 +978,112 @@ enum OpcodeServer : uint16
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928,
SMSG_BATTLEGROUND_POINTS = 0x2949,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x277D,
- SMSG_BATTLENET_CHALLENGE_START = 0x277C,
- SMSG_BATTLENET_NOTIFICATION = 0x27F6,
- SMSG_BATTLENET_RESPONSE = 0x27F5,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27F7,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x2777,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x276C,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x276D,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2776,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x276A,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2769,
- SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2877,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2767,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2768,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2766,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2764,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2765,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x276B,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2775,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x2812,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2773,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2772,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2806,
- SMSG_BATTLE_PETS_HEALED = 0x25EC,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2670,
- SMSG_BATTLE_PET_DELETED = 0x25E9,
- SMSG_BATTLE_PET_ERROR = 0x2630,
- SMSG_BATTLE_PET_JOURNAL = 0x25E8,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25E6,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25E7,
- SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25ED,
- SMSG_BATTLE_PET_RESTORED = 0x25EB,
- SMSG_BATTLE_PET_REVOKED = 0x25EA,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E4,
- SMSG_BATTLE_PET_UPDATES = 0x25E3,
- SMSG_BINDER_CONFIRM = 0x26F1,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x2783,
+ SMSG_BATTLENET_CHALLENGE_START = 0x2782,
+ SMSG_BATTLENET_NOTIFICATION = 0x2800,
+ SMSG_BATTLENET_RESPONSE = 0x27FF,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2801,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x277D,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2772,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2773,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277C,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2770,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x276F,
+ SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2880,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276D,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276E,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276C,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276A,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276B,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2771,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277B,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x281C,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2779,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2778,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2810,
+ SMSG_BATTLE_PETS_HEALED = 0x25F1,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2675,
+ SMSG_BATTLE_PET_DELETED = 0x25EE,
+ SMSG_BATTLE_PET_ERROR = 0x2635,
+ SMSG_BATTLE_PET_JOURNAL = 0x25ED,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EB,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25EC,
+ SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25F2,
+ SMSG_BATTLE_PET_RESTORED = 0x25F0,
+ SMSG_BATTLE_PET_REVOKED = 0x25EF,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E9,
+ SMSG_BATTLE_PET_UPDATES = 0x25E8,
SMSG_BIND_POINT_UPDATE = 0x257D,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2620,
- SMSG_BLACK_MARKET_OPEN_RESULT = 0x261E,
- SMSG_BLACK_MARKET_OUTBID = 0x2621,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x261F,
- SMSG_BLACK_MARKET_WON = 0x2622,
- SMSG_BONUS_ROLL_EMPTY = 0x263D,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2625,
+ SMSG_BLACK_MARKET_OUTBID = 0x2626,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2624,
+ SMSG_BLACK_MARKET_WON = 0x2627,
+ SMSG_BONUS_ROLL_EMPTY = 0x2642,
SMSG_BOSS_KILL = 0x294C,
SMSG_BREAK_TARGET = 0x2937,
SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
- SMSG_BROADCAST_SUMMON_CAST = 0x2838,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x2839,
- SMSG_BUY_FAILED = 0x26BD,
- SMSG_BUY_SUCCEEDED = 0x26BC,
+ SMSG_BROADCAST_SUMMON_CAST = 0x2841,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x2842,
+ SMSG_BUY_FAILED = 0x26C2,
+ SMSG_BUY_SUCCEEDED = 0x26C1,
SMSG_CACHE_INFO = 0x291D,
SMSG_CACHE_VERSION = 0x291C,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x2695,
- SMSG_CALENDAR_COMMAND_RESULT = 0x2696,
- SMSG_CALENDAR_COMMUNITY_INVITE = 0x2685,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x268D,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x268E,
- SMSG_CALENDAR_INVITE_ADDED = 0x2686,
- SMSG_CALENDAR_INVITE_ALERT = 0x268A,
- SMSG_CALENDAR_INVITE_NOTES = 0x268F,
- SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2690,
- SMSG_CALENDAR_INVITE_REMOVED = 0x2687,
- SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x268C,
- SMSG_CALENDAR_INVITE_STATUS = 0x2688,
- SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x268B,
- SMSG_CALENDAR_MODERATOR_STATUS = 0x2689,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2691,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2692,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2693,
- SMSG_CALENDAR_SEND_CALENDAR = 0x2683,
- SMSG_CALENDAR_SEND_EVENT = 0x2684,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x2694,
- SMSG_CAMERA_EFFECT = 0x2719,
- SMSG_CANCEL_AUTO_REPEAT = 0x26D3,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269A,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x269B,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x268A,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2692,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2693,
+ SMSG_CALENDAR_INVITE_ADDED = 0x268B,
+ SMSG_CALENDAR_INVITE_ALERT = 0x268F,
+ SMSG_CALENDAR_INVITE_NOTES = 0x2694,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2695,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x268C,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2691,
+ SMSG_CALENDAR_INVITE_STATUS = 0x268D,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2690,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x268E,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2696,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2697,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2698,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x2688,
+ SMSG_CALENDAR_SEND_EVENT = 0x2689,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x2699,
+ SMSG_CAMERA_EFFECT = 0x271F,
+ SMSG_CANCEL_AUTO_REPEAT = 0x26D8,
SMSG_CANCEL_COMBAT = 0x2946,
- SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46,
- SMSG_CANCEL_SCENE = 0x262F,
- SMSG_CANCEL_SPELL_VISUAL = 0x2C44,
- SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48,
+ SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C49,
+ SMSG_CANCEL_PRELOAD_WORLD = 0x259A,
+ SMSG_CANCEL_SCENE = 0x2634,
+ SMSG_CANCEL_SPELL_VISUAL = 0x2C47,
+ SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C4B,
SMSG_CAN_DUEL_RESULT = 0x2942,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2805,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280F,
SMSG_CAPTURE_POINT_REMOVED = 0x292A,
- SMSG_CAST_FAILED = 0x2C57,
+ SMSG_CAST_FAILED = 0x2C5A,
SMSG_CATEGORY_COOLDOWN = 0x2C16,
- SMSG_CHAIN_MISSILE_BOUNCE = 0x25C4,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x2604,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2608,
- SMSG_CHALLENGE_MODE_RESET = 0x2603,
- SMSG_CHALLENGE_MODE_START = 0x2601,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2602,
+ SMSG_CHAIN_MISSILE_BOUNCE = 0x25C7,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x2609,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260D,
+ SMSG_CHALLENGE_MODE_RESET = 0x2608,
+ SMSG_CHALLENGE_MODE_START = 0x2606,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2607,
SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27F8,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2802,
SMSG_CHANNEL_LIST = 0x2BC3,
SMSG_CHANNEL_NOTIFY = 0x2BC0,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B0,
- SMSG_CHARACTER_LOGIN_FAILED = 0x26F9,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x277B,
- SMSG_CHARACTER_RENAME_RESULT = 0x2756,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x27AF,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27AE,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27B1,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x27AD,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26D7,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26D8,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x279A,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B9,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x26FF,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2781,
+ SMSG_CHARACTER_RENAME_RESULT = 0x275C,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B8,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B7,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BA,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27B6,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DC,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DD,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A3,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_DOWN = 0x2BBD,
@@ -1060,88 +1100,95 @@ enum OpcodeServer : uint16
SMSG_CHECK_ABANDON_NPE = 0x3018,
SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584,
SMSG_CHECK_WARGAME_ENTRY = 0x2592,
- SMSG_CHROMIE_TIME_OPEN_NPC = 0x27ED,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2862,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2849,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x286B,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2852,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27,
- SMSG_CLEAR_BOSS_EMOTES = 0x25B7,
- SMSG_CLEAR_COOLDOWN = 0x26B1,
+ SMSG_CLEAR_BOSS_EMOTES = 0x25BA,
+ SMSG_CLEAR_COOLDOWN = 0x26B6,
SMSG_CLEAR_COOLDOWNS = 0x2C26,
SMSG_CLEAR_RESURRECT = 0x257F,
SMSG_CLEAR_SPELL_CHARGES = 0x2C28,
SMSG_CLEAR_TARGET = 0x2943,
SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x2793,
- SMSG_CLOSE_HEART_FORGE = 0x2818,
- SMSG_CLOSE_ITEM_FORGE = 0x2791,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2841,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2844,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2842,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x283F,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2843,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2840,
- SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x287A,
- SMSG_COIN_REMOVED = 0x260F,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x279B,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x284A,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284D,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x284B,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2848,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x284C,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2849,
+ SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x2887,
+ SMSG_COIN_REMOVED = 0x2614,
SMSG_COMBAT_EVENT_FAILED = 0x293A,
- SMSG_COMMENTATOR_MAP_INFO = 0x26FB,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x26FC,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x26FA,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C2,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27CE,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C4,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x27C3,
- SMSG_COMPLAINT_RESULT = 0x26A3,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x278C,
- SMSG_CONFIRM_PARTY_INVITE = 0x2804,
+ SMSG_COMMENTATOR_MAP_INFO = 0x2701,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x2702,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x2700,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CB,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D7,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CD,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x27CC,
+ SMSG_COMPLAINT_RESULT = 0x26A8,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2794,
+ SMSG_CONFIRM_PARTY_INVITE = 0x280E,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2778,
- SMSG_CONSOLE_WRITE = 0x262D,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27CA,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27C9,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27C8,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27CC,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27CD,
- SMSG_CONTACT_LIST = 0x2779,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x280B,
- SMSG_CONTROL_UPDATE = 0x263F,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x286B,
- SMSG_COOLDOWN_CHEAT = 0x272C,
- SMSG_COOLDOWN_EVENT = 0x26B0,
- SMSG_CORPSE_LOCATION = 0x2647,
- SMSG_CORPSE_RECLAIM_DELAY = 0x273D,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x2706,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277E,
+ SMSG_CONSOLE_WRITE = 0x2632,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D3,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D2,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D1,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D5,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D6,
+ SMSG_CONTACT_LIST = 0x277F,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2815,
+ SMSG_CONTROL_UPDATE = 0x2644,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2874,
+ SMSG_COOLDOWN_CHEAT = 0x2732,
+ SMSG_COOLDOWN_EVENT = 0x26B5,
+ SMSG_CORPSE_LOCATION = 0x264C,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x2743,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x270C,
SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27EE,
- SMSG_COVENANT_RENOWN_OPEN_NPC = 0x286A,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x286C,
- SMSG_CREATE_CHAR = 0x26F5,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x278B,
- SMSG_CRITERIA_DELETED = 0x26DC,
- SMSG_CRITERIA_UPDATE = 0x26D6,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26B8,
- SMSG_CUSTOM_LOAD_SCREEN = 0x25C7,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F7,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2875,
+ SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x289E,
+ SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x289A,
+ SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x2896,
+ SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x2898,
+ SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x2894,
+ SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x2899,
+ SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x2895,
+ SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x289C,
+ SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x2897,
+ SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x289F,
+ SMSG_CRAFT_ENCHANT_RESULT = 0x289D,
+ SMSG_CREATE_CHAR = 0x26FB,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x2793,
+ SMSG_CRITERIA_DELETED = 0x26E1,
+ SMSG_CRITERIA_UPDATE = 0x26DB,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BD,
+ SMSG_CUSTOM_LOAD_SCREEN = 0x25CA,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
- SMSG_DAMAGE_CALC_LOG = 0x27B7,
+ SMSG_DAMAGE_CALC_LOG = 0x27C0,
SMSG_DB_REPLY = 0x290E,
- SMSG_DEATH_RELEASE_LOC = 0x26C9,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x264D,
+ SMSG_DEATH_RELEASE_LOC = 0x26CE,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2652,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x26F6,
+ SMSG_DELETE_CHAR = 0x26FC,
SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980,
- SMSG_DESTROY_ARENA_UNIT = 0x2735,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26ED,
+ SMSG_DESTROY_ARENA_UNIT = 0x273B,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F3,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C,
- SMSG_DISENCHANT_CREDIT = 0x25A5,
+ SMSG_DISENCHANT_CREDIT = 0x25A8,
SMSG_DISMOUNT_RESULT = 0x257C,
SMSG_DISPEL_FAILED = 0x2C30,
- SMSG_DISPLAY_GAME_ERROR = 0x259F,
+ SMSG_DISPLAY_GAME_ERROR = 0x25A1,
SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
- SMSG_DISPLAY_PROMOTION = 0x2644,
+ SMSG_DISPLAY_PROMOTION = 0x2649,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9E,
- SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2870,
- SMSG_DISPLAY_TOAST = 0x261C,
- SMSG_DISPLAY_WORLD_TEXT = 0x27DF,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DA,
+ SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2879,
+ SMSG_DISPLAY_TOAST = 0x2621,
+ SMSG_DISPLAY_WORLD_TEXT = 0x27E8,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DF,
SMSG_DROP_NEW_CONNECTION = 0x304C,
SMSG_DUEL_ARRANGED = 0x293C,
SMSG_DUEL_COMPLETE = 0x2940,
@@ -1150,66 +1197,68 @@ enum OpcodeServer : uint16
SMSG_DUEL_OUT_OF_BOUNDS = 0x293D,
SMSG_DUEL_REQUESTED = 0x293B,
SMSG_DUEL_WINNER = 0x2941,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x2739,
- SMSG_EMOTE = 0x27B8,
- SMSG_ENABLE_BARBER_SHOP = 0x26B3,
- SMSG_ENCHANTMENT_LOG = 0x2707,
- SMSG_ENCOUNTER_END = 0x2771,
- SMSG_ENCOUNTER_START = 0x2770,
- SMSG_END_LIGHTNING_STORM = 0x26A0,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x273F,
+ SMSG_EMOTE = 0x27C1,
+ SMSG_ENABLE_BARBER_SHOP = 0x26B8,
+ SMSG_ENCHANTMENT_LOG = 0x270D,
+ SMSG_ENCOUNTER_END = 0x2777,
+ SMSG_ENCOUNTER_START = 0x2776,
+ SMSG_END_LIGHTNING_STORM = 0x26A5,
+ SMSG_ENSURE_WORLD_LOADED = 0x2881,
SMSG_ENTER_ENCRYPTED_MODE = 0x3049,
SMSG_ENUM_CHARACTERS_RESULT = 0x2583,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E4,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27ED,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21,
- SMSG_EQUIPMENT_SET_ID = 0x26A9,
+ SMSG_EQUIPMENT_SET_ID = 0x26AE,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x2752,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2869,
- SMSG_FACTION_BONUS_INFO = 0x2718,
+ SMSG_EXPLORATION_EXPERIENCE = 0x2758,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2872,
+ SMSG_FACTION_BONUS_INFO = 0x271E,
SMSG_FAILED_PLAYER_CONDITION = 0x2FFA,
- SMSG_FAILED_QUEST_TURN_IN = 0x2801,
- SMSG_FEATURE_SYSTEM_STATUS = 0x25BB,
- SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BC,
- SMSG_FEIGN_DEATH_RESISTED = 0x2738,
- SMSG_FISH_ESCAPED = 0x26C6,
- SMSG_FISH_NOT_HOOKED = 0x26C5,
+ SMSG_FAILED_QUEST_TURN_IN = 0x280B,
+ SMSG_FEATURE_SYSTEM_STATUS = 0x25BE,
+ SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BF,
+ SMSG_FEIGN_DEATH_RESISTED = 0x273E,
+ SMSG_FISH_ESCAPED = 0x26CB,
+ SMSG_FISH_NOT_HOOKED = 0x26CA,
SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B,
- SMSG_FORCED_DEATH_UPDATE = 0x26CA,
- SMSG_FORCE_ANIM = 0x2744,
- SMSG_FORCE_ANIMATIONS = 0x2745,
- SMSG_FORCE_OBJECT_RELINK = 0x2643,
- SMSG_FRIEND_STATUS = 0x277A,
- SMSG_GAIN_MAW_POWER = 0x27D3,
- SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25BF,
- SMSG_GAME_OBJECT_BASE = 0x2819,
- SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C0,
- SMSG_GAME_OBJECT_DESPAWN = 0x25C1,
- SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B,
- SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A,
- SMSG_GAME_OBJECT_RESET_STATE = 0x2712,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27F4,
- SMSG_GAME_OBJECT_UI_LINK = 0x270E,
- SMSG_GAME_SPEED_SET = 0x2679,
- SMSG_GAME_TIME_SET = 0x2700,
- SMSG_GAME_TIME_UPDATE = 0x26FF,
+ SMSG_FORCED_DEATH_UPDATE = 0x26CF,
+ SMSG_FORCE_ANIM = 0x274A,
+ SMSG_FORCE_ANIMATIONS = 0x274B,
+ SMSG_FORCE_OBJECT_RELINK = 0x2648,
+ SMSG_FRIEND_STATUS = 0x2780,
+ SMSG_GAIN_MAW_POWER = 0x27DC,
+ SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C2,
+ SMSG_GAME_OBJECT_BASE = 0x2822,
+ SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2885,
+ SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C3,
+ SMSG_GAME_OBJECT_DESPAWN = 0x25C4,
+ SMSG_GAME_OBJECT_INTERACTION = 0x2884,
+ SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4E,
+ SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4D,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2718,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FE,
+ SMSG_GAME_SPEED_SET = 0x267E,
+ SMSG_GAME_TIME_SET = 0x2706,
+ SMSG_GAME_TIME_UPDATE = 0x2705,
SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982,
- SMSG_GARRISON_ADD_EVENT = 0x29A5,
+ SMSG_GARRISON_ADD_EVENT = 0x29A6,
SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974,
SMSG_GARRISON_ADD_MISSION_RESULT = 0x2978,
- SMSG_GARRISON_ADD_SPEC_GROUPS = 0x29A8,
- SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x29AC,
+ SMSG_GARRISON_ADD_SPEC_GROUPS = 0x29A9,
+ SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x29AD,
SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x298A,
- SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x29AE,
+ SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x29AF,
SMSG_GARRISON_BUILDING_ACTIVATED = 0x2969,
SMSG_GARRISON_BUILDING_REMOVED = 0x2962,
SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x2964,
SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x297B,
- SMSG_GARRISON_CLEAR_COLLECTION = 0x29A4,
- SMSG_GARRISON_CLEAR_EVENT_LIST = 0x29A7,
- SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0x29A9,
- SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x29A3,
- SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x29A2,
- SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x299A,
+ SMSG_GARRISON_CLEAR_COLLECTION = 0x29A5,
+ SMSG_GARRISON_CLEAR_EVENT_LIST = 0x29A8,
+ SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0x29AA,
+ SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x29A4,
+ SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x29A3,
+ SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x299B,
SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x297A,
SMSG_GARRISON_CREATE_RESULT = 0x296A,
SMSG_GARRISON_DELETE_MISSION_RESULT = 0x2981,
@@ -1223,26 +1272,23 @@ enum OpcodeServer : uint16
SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x2991,
SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x2973,
SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x297C,
- SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x299C,
+ SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x299D,
SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x2965,
SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x2963,
- SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x299D,
+ SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x299E,
SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2977,
- SMSG_GARRISON_MAP_DATA_RESPONSE = 0x299F,
+ SMSG_GARRISON_MAP_DATA_RESPONSE = 0x29A0,
SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x297E,
- SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x29A0,
+ SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x29A1,
SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x2983,
- SMSG_GARRISON_OPEN_ARCHITECT = 0x2994,
SMSG_GARRISON_OPEN_CRAFTER = 0x2995,
- SMSG_GARRISON_OPEN_MISSION_NPC = 0x2996,
SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x298E,
- SMSG_GARRISON_OPEN_TALENT_NPC = 0x298F,
SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x2961,
SMSG_GARRISON_PLOT_PLACED = 0x295F,
SMSG_GARRISON_PLOT_REMOVED = 0x2960,
SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x2992,
SMSG_GARRISON_REMOTE_INFO = 0x2968,
- SMSG_GARRISON_REMOVE_EVENT = 0x29A6,
+ SMSG_GARRISON_REMOVE_EVENT = 0x29A7,
SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x298D,
SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x298B,
SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x2975,
@@ -1252,47 +1298,49 @@ enum OpcodeServer : uint16
SMSG_GARRISON_RESET_TALENT_TREE = 0x2971,
SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x2972,
SMSG_GARRISON_START_MISSION_RESULT = 0x2979,
- SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x2999,
- SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x29AA,
+ SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x299A,
+ SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x29AB,
SMSG_GARRISON_TALENT_COMPLETED = 0x296D,
SMSG_GARRISON_TALENT_REMOVED = 0x296E,
SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x2970,
SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x296F,
- SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x29AB,
+ SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x29AC,
SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x2966,
SMSG_GARRISON_UPDATE_FOLLOWER = 0x2976,
- SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x299B,
- SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x29AD,
+ SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x299C,
+ 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 = 0x2585,
- SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x280C,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2754,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2816,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275A,
SMSG_GET_GARRISON_INFO_RESULT = 0x295E,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x278E,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27CB,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27B5,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x278D,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2789,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x27B4,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E0,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E1,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2796,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D4,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BE,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2795,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2791,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BD,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E9,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EA,
SMSG_GM_PLAYER_INFO = 0x3005,
SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB,
- SMSG_GM_TICKET_CASE_STATUS = 0x269B,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x269A,
- SMSG_GOD_MODE = 0x26F0,
+ SMSG_GM_TICKET_CASE_STATUS = 0x26A0,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x269F,
+ SMSG_GOD_MODE = 0x26F6,
SMSG_GOSSIP_COMPLETE = 0x2A97,
SMSG_GOSSIP_MESSAGE = 0x2A98,
- SMSG_GOSSIP_POI = 0x2786,
+ SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7,
+ SMSG_GOSSIP_POI = 0x278E,
SMSG_GOSSIP_QUEST_UPDATE = 0x2A99,
SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6,
SMSG_GROUP_ACTION_THROTTLED = 0x2590,
- SMSG_GROUP_AUTO_KICK = 0x2784,
- SMSG_GROUP_DECLINE = 0x2781,
- SMSG_GROUP_DESTROYED = 0x2783,
- SMSG_GROUP_NEW_LEADER = 0x2625,
- SMSG_GROUP_UNINVITE = 0x2782,
+ SMSG_GROUP_AUTO_KICK = 0x278B,
+ SMSG_GROUP_DECLINE = 0x2787,
+ SMSG_GROUP_DESTROYED = 0x278A,
+ SMSG_GROUP_NEW_LEADER = 0x262A,
+ SMSG_GROUP_REQUEST_DECLINE = 0x2788,
+ SMSG_GROUP_UNINVITE = 0x2789,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1346,60 +1394,59 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26C7,
- SMSG_HIGHEST_THREAT_UPDATE = 0x26CF,
+ SMSG_HEALTH_UPDATE = 0x26CC,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x26D4,
SMSG_HOTFIX_CONNECT = 0x2911,
SMSG_HOTFIX_MESSAGE = 0x2910,
- SMSG_INITIALIZE_FACTIONS = 0x2717,
+ SMSG_INITIALIZE_FACTIONS = 0x271D,
SMSG_INITIAL_SETUP = 0x2580,
- SMSG_INIT_WORLD_STATES = 0x273A,
- SMSG_INSPECT_RESULT = 0x2629,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A0,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x279F,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27A8,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x279E,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27AA,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27A9,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27A3,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27A2,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27A7,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27AB,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27A4,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27A1,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27A6,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27A5,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26EE,
- SMSG_INSTANCE_INFO = 0x262C,
- SMSG_INSTANCE_RESET = 0x267E,
- SMSG_INSTANCE_RESET_FAILED = 0x267F,
- SMSG_INSTANCE_SAVE_CREATED = 0x276F,
- SMSG_INTERRUPT_POWER_REGEN = 0x2C59,
+ SMSG_INIT_WORLD_STATES = 0x2740,
+ SMSG_INSPECT_RESULT = 0x262E,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A9,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A8,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27B1,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A7,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B3,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B2,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AC,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AB,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B0,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B4,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27AD,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AA,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27AF,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AE,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F4,
+ SMSG_INSTANCE_INFO = 0x2631,
+ SMSG_INSTANCE_RESET = 0x2683,
+ SMSG_INSTANCE_RESET_FAILED = 0x2684,
+ SMSG_INSTANCE_SAVE_CREATED = 0x2775,
+ SMSG_INTERRUPT_POWER_REGEN = 0x2C5C,
SMSG_INVALIDATE_PAGE_TEXT = 0x2918,
SMSG_INVALIDATE_PLAYER = 0x2FFF,
- SMSG_INVALID_PROMOTION_CODE = 0x2746,
+ SMSG_INVALID_PROMOTION_CODE = 0x274C,
SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x2803,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x2814,
- SMSG_ISLANDS_MISSION_NPC = 0x27EA,
- SMSG_ISLAND_AZERITE_GAIN = 0x274F,
- SMSG_ISLAND_COMPLETE = 0x2750,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x280D,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x281E,
+ SMSG_ISLAND_AZERITE_GAIN = 0x2755,
+ SMSG_ISLAND_COMPLETE = 0x2756,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84,
- SMSG_ITEM_CHANGED = 0x26DF,
- SMSG_ITEM_COOLDOWN = 0x27B6,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2748,
- SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259E,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x2861,
- SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259C,
- SMSG_ITEM_PUSH_RESULT = 0x261B,
- SMSG_ITEM_TIME_UPDATE = 0x2747,
- SMSG_KICK_REASON = 0x2681,
- SMSG_LATENCY_REPORT_PING = 0x2873,
- SMSG_LEARNED_SPELLS = 0x2C4D,
- SMSG_LEARN_PVP_TALENT_FAILED = 0x25CE,
- SMSG_LEARN_TALENT_FAILED = 0x25CD,
- SMSG_LEGACY_LOOT_RULES = 0x281A,
- SMSG_LEVEL_LINKING_RESULT = 0x2847,
- SMSG_LEVEL_UP_INFO = 0x26DE,
+ SMSG_ITEM_CHANGED = 0x26E5,
+ SMSG_ITEM_COOLDOWN = 0x27BF,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274E,
+ SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25A0,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x286A,
+ SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259E,
+ SMSG_ITEM_PUSH_RESULT = 0x2620,
+ SMSG_ITEM_TIME_UPDATE = 0x274D,
+ SMSG_KICK_REASON = 0x2686,
+ SMSG_LATENCY_REPORT_PING = 0x287C,
+ SMSG_LEARNED_SPELLS = 0x2C50,
+ SMSG_LEARN_PVP_TALENT_FAILED = 0x25D3,
+ SMSG_LEARN_TALENT_FAILED = 0x25D2,
+ SMSG_LEGACY_LOOT_RULES = 0x2823,
+ SMSG_LEVEL_LINKING_RESULT = 0x2850,
+ SMSG_LEVEL_UP_INFO = 0x26E3,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B,
@@ -1427,45 +1474,47 @@ enum OpcodeServer : uint16
SMSG_LFG_SLOT_INVALID = 0x2A30,
SMSG_LFG_TELEPORT_DENIED = 0x2A32,
SMSG_LFG_UPDATE_STATUS = 0x2A24,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2761,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2760,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2755,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2762,
- SMSG_LOAD_CUF_PROFILES = 0x25B8,
- SMSG_LOAD_EQUIPMENT_SET = 0x2702,
- SMSG_LOGIN_SET_TIME_SPEED = 0x2701,
- SMSG_LOGIN_VERIFY_WORLD = 0x2599,
- SMSG_LOGOUT_CANCEL_ACK = 0x267D,
- SMSG_LOGOUT_COMPLETE = 0x267C,
- SMSG_LOGOUT_RESPONSE = 0x267B,
- SMSG_LOG_XP_GAIN = 0x26DA,
- SMSG_LOOT_ALL_PASSED = 0x2619,
- SMSG_LOOT_LIST = 0x2734,
- SMSG_LOOT_MONEY_NOTIFY = 0x2614,
- SMSG_LOOT_RELEASE = 0x2613,
- SMSG_LOOT_RELEASE_ALL = 0x2612,
- SMSG_LOOT_REMOVED = 0x260E,
- SMSG_LOOT_RESPONSE = 0x260D,
- SMSG_LOOT_ROLL = 0x2616,
- SMSG_LOOT_ROLLS_COMPLETE = 0x2618,
- SMSG_LOOT_ROLL_WON = 0x261A,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2668,
- SMSG_MAIL_COMMAND_RESULT = 0x2633,
- SMSG_MAIL_LIST_RESULT = 0x2749,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x274A,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2767,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2766,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2768,
+ SMSG_LOAD_CUF_PROFILES = 0x25BB,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2708,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2889,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x2707,
+ SMSG_LOGIN_VERIFY_WORLD = 0x259B,
+ SMSG_LOGOUT_CANCEL_ACK = 0x2682,
+ SMSG_LOGOUT_COMPLETE = 0x2681,
+ SMSG_LOGOUT_RESPONSE = 0x2680,
+ SMSG_LOG_XP_GAIN = 0x26DF,
+ SMSG_LOOT_ALL_PASSED = 0x261E,
+ SMSG_LOOT_LIST = 0x273A,
+ SMSG_LOOT_MONEY_NOTIFY = 0x2619,
+ SMSG_LOOT_RELEASE = 0x2618,
+ SMSG_LOOT_RELEASE_ALL = 0x2617,
+ SMSG_LOOT_REMOVED = 0x2613,
+ SMSG_LOOT_RESPONSE = 0x2612,
+ SMSG_LOOT_ROLL = 0x261B,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x261D,
+ SMSG_LOOT_ROLL_WON = 0x261F,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266D,
+ SMSG_MAIL_COMMAND_RESULT = 0x2638,
+ SMSG_MAIL_LIST_RESULT = 0x274F,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2750,
SMSG_MAP_OBJECTIVES_INIT = 0x294B,
- SMSG_MAP_OBJ_EVENTS = 0x25C2,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2617,
- SMSG_MEETING_STONE_FAILED = 0x287C,
+ SMSG_MAP_OBJ_EVENTS = 0x25C5,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261C,
+ SMSG_MEETING_STONE_FAILED = 0x288A,
SMSG_MESSAGE_BOX = 0x2576,
- SMSG_MINIMAP_PING = 0x26C4,
+ SMSG_MINIMAP_PING = 0x26C9,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
- SMSG_MISSILE_CANCEL = 0x25C3,
- SMSG_MODIFY_COOLDOWN = 0x2757,
+ SMSG_MISSILE_CANCEL = 0x25C6,
+ SMSG_MODIFY_COOLDOWN = 0x275D,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257B,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2837,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2840,
+ SMSG_MOVE_ADD_IMPULSE = 0x2E32,
SMSG_MOVE_APPLY_INERTIA = 0x2E2E,
SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15,
SMSG_MOVE_DISABLE_COLLISION = 0x2E11,
@@ -1483,6 +1532,20 @@ enum OpcodeServer : uint16
SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x2E16,
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_CAN_FLY = 0x2E05,
SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x2E07,
SMSG_MOVE_SET_COLLISION_HEIGHT = 0x2E13,
@@ -1534,11 +1597,13 @@ enum OpcodeServer : uint16
SMSG_MOVE_SPLINE_UNSET_HOVER = 0x2E22,
SMSG_MOVE_TELEPORT = 0x2E04,
SMSG_MOVE_UNROOT = 0x2DFA,
+ SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x2E35,
SMSG_MOVE_UNSET_CAN_FLY = 0x2E06,
SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x2E08,
SMSG_MOVE_UNSET_HOVERING = 0x2E02,
SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x2E0A,
SMSG_MOVE_UPDATE = 0x2DE0,
+ SMSG_MOVE_UPDATE_ADD_IMPULSE = 0x2E33,
SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x2E30,
SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x2DE4,
SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x2DDF,
@@ -1556,82 +1621,79 @@ 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 = 0x27D0,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27CF,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2605,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x2607,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260A,
- SMSG_MYTHIC_PLUS_SEASON_DATA = 0x2606,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D5,
- SMSG_NEW_TAXI_PATH = 0x2676,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D9,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D8,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260A,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260C,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260F,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260B,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DA,
+ SMSG_NEW_TAXI_PATH = 0x267B,
SMSG_NEW_WORLD = 0x2598,
- SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A2,
- SMSG_NOTIFY_MONEY = 0x259B,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x2634,
- SMSG_OFFER_PETITION_ERROR = 0x26AD,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26DB,
+ SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C46,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A7,
+ SMSG_NOTIFY_MONEY = 0x259D,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x2639,
+ SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2883,
+ SMSG_OFFER_PETITION_ERROR = 0x26B2,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E0,
SMSG_ON_MONSTER_MOVE = 0x2DD4,
- SMSG_OPEN_ANIMA_DIVERSION_UI = 0x270F,
- SMSG_OPEN_ARTIFACT_FORGE = 0x2792,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x279A,
SMSG_OPEN_CONTAINER = 0x2DA6,
- SMSG_OPEN_HEART_FORGE = 0x2817,
- SMSG_OPEN_ITEM_FORGE = 0x2790,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x2788,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x278A,
- SMSG_OVERRIDE_LIGHT = 0x26B2,
- SMSG_PAGE_TEXT = 0x270D,
- SMSG_PARTY_COMMAND_RESULT = 0x2785,
- SMSG_PARTY_INVITE = 0x25B9,
- SMSG_PARTY_KILL_LOG = 0x274D,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x274C,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x274B,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2867,
- SMSG_PARTY_UPDATE = 0x25EE,
- SMSG_PAST_TIME_EVENTS = 0x25BE,
- SMSG_PAUSE_MIRROR_TIMER = 0x2704,
- SMSG_PENDING_RAID_LOCK = 0x26EC,
- SMSG_PETITION_ALREADY_SIGNED = 0x25A1,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2792,
+ SMSG_OVERRIDE_LIGHT = 0x26B7,
+ SMSG_PAGE_TEXT = 0x2713,
+ SMSG_PARTY_COMMAND_RESULT = 0x278C,
+ SMSG_PARTY_INVITE = 0x25BC,
+ SMSG_PARTY_KILL_LOG = 0x2753,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x2752,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2751,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2870,
+ SMSG_PARTY_UPDATE = 0x25F3,
+ SMSG_PAST_TIME_EVENTS = 0x25C1,
+ SMSG_PAUSE_MIRROR_TIMER = 0x270A,
+ SMSG_PENDING_RAID_LOCK = 0x26F2,
+ SMSG_PETITION_ALREADY_SIGNED = 0x25A3,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA,
- SMSG_PETITION_SHOW_LIST = 0x26B5,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26B6,
- SMSG_PETITION_SIGN_RESULTS = 0x273F,
- SMSG_PET_ACTION_FEEDBACK = 0x273C,
- SMSG_PET_ACTION_SOUND = 0x2698,
+ SMSG_PETITION_SHOW_LIST = 0x26BA,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26BB,
+ SMSG_PETITION_SIGN_RESULTS = 0x2745,
+ SMSG_PET_ACTION_FEEDBACK = 0x2742,
+ SMSG_PET_ACTION_SOUND = 0x269D,
SMSG_PET_ADDED = 0x2595,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25FC,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x266D,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F5,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x25FA,
- SMSG_PET_BATTLE_FINISHED = 0x25FB,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x25F7,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F6,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x25FD,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F4,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2631,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x2632,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25F9,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F3,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x25F8,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E5,
- SMSG_PET_CAST_FAILED = 0x2C58,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2601,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2672,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FA,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x25FF,
+ SMSG_PET_BATTLE_FINISHED = 0x2600,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x25FC,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FB,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2602,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F9,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2636,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x2637,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FE,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F8,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x25FD,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EA,
+ SMSG_PET_CAST_FAILED = 0x2C5B,
SMSG_PET_CLEAR_SPELLS = 0x2C24,
- SMSG_PET_DISMISS_SOUND = 0x2699,
- SMSG_PET_GOD_MODE = 0x2673,
- SMSG_PET_GUIDS = 0x26F8,
- SMSG_PET_LEARNED_SPELLS = 0x2C4F,
+ SMSG_PET_DISMISS_SOUND = 0x269E,
+ SMSG_PET_GOD_MODE = 0x2678,
+ SMSG_PET_GUIDS = 0x26FE,
+ SMSG_PET_LEARNED_SPELLS = 0x2C52,
SMSG_PET_MODE = 0x258B,
- SMSG_PET_NAME_INVALID = 0x26BA,
+ SMSG_PET_NAME_INVALID = 0x26BF,
SMSG_PET_NEWLY_TAMED = 0x2589,
SMSG_PET_SLOT_UPDATED = 0x258A,
SMSG_PET_SPELLS_MESSAGE = 0x2C25,
SMSG_PET_STABLE_LIST = 0x2596,
SMSG_PET_STABLE_RESULT = 0x2597,
- SMSG_PET_TAME_FAILURE = 0x26AA,
- SMSG_PET_UNLEARNED_SPELLS = 0x2C50,
+ SMSG_PET_TAME_FAILURE = 0x26AF,
+ SMSG_PET_UNLEARNED_SPELLS = 0x2C53,
SMSG_PHASE_SHIFT_CHANGE = 0x2578,
- SMSG_PLAYED_TIME = 0x26CB,
+ SMSG_PLAYED_TIME = 0x26D0,
SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014,
SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013,
SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3016,
@@ -1642,40 +1704,42 @@ enum OpcodeServer : uint16
SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x3009,
SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x300E,
SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F9,
+ SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x301E,
SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x3019,
SMSG_PLAYER_SKINNED = 0x3006,
- SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x3007,
SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D,
SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C,
- SMSG_PLAY_MUSIC = 0x275C,
- SMSG_PLAY_OBJECT_SOUND = 0x275D,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2724,
- SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47,
- SMSG_PLAY_SCENE = 0x262E,
- SMSG_PLAY_SOUND = 0x275B,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x275E,
- SMSG_PLAY_SPELL_VISUAL = 0x2C45,
- SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49,
- SMSG_PLAY_TIME_WARNING = 0x26F2,
+ SMSG_PLAY_MUSIC = 0x2762,
+ SMSG_PLAY_OBJECT_SOUND = 0x2763,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272A,
+ SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C4A,
+ SMSG_PLAY_SCENE = 0x2633,
+ SMSG_PLAY_SOUND = 0x2761,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x2764,
+ SMSG_PLAY_SPELL_VISUAL = 0x2C48,
+ SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C4C,
+ SMSG_PLAY_TIME_WARNING = 0x26F8,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x26C8,
+ SMSG_POWER_UPDATE = 0x26CD,
SMSG_PRELOAD_CHILD_MAP = 0x2579,
- SMSG_PREPOPULATE_NAME_CACHE = 0x283A,
- SMSG_PRE_RESSURECT = 0x275A,
- SMSG_PRINT_NOTIFICATION = 0x25C6,
- SMSG_PROC_RESIST = 0x274E,
- SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51,
+ SMSG_PRELOAD_WORLD = 0x2599,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x2843,
+ SMSG_PRE_RESSURECT = 0x2760,
+ SMSG_PRINT_NOTIFICATION = 0x25C9,
+ SMSG_PROC_RESIST = 0x2754,
+ SMSG_PROFESSION_GOSSIP = 0x27F9,
+ SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C54,
SMSG_PVP_CREDIT = 0x2945,
SMSG_PVP_MATCH_COMPLETE = 0x294F,
SMSG_PVP_MATCH_INITIALIZE = 0x2950,
SMSG_PVP_MATCH_START = 0x294E,
SMSG_PVP_MATCH_STATISTICS = 0x2932,
SMSG_PVP_OPTIONS_ENABLED = 0x2934,
- SMSG_PVP_TIER_RECORD = 0x2874,
+ SMSG_PVP_TIER_RECORD = 0x287D,
SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A,
SMSG_QUERY_CREATURE_RESPONSE = 0x2914,
SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915,
- SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x299E,
+ SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x299F,
SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = 0x29E7,
SMSG_QUERY_GUILD_INFO_RESPONSE = 0x29E5,
SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x291E,
@@ -1687,7 +1751,7 @@ enum OpcodeServer : uint16
SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96,
SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6,
- SMSG_QUERY_TIME_RESPONSE = 0x26D9,
+ SMSG_QUERY_TIME_RESPONSE = 0x26DE,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F,
SMSG_QUEST_FORCE_REMOVED = 0x2A9C,
@@ -1700,255 +1764,261 @@ enum OpcodeServer : uint16
SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x2A93,
SMSG_QUEST_GIVER_STATUS = 0x2A9B,
SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A91,
+ SMSG_QUEST_ITEM_USABILITY_RESPONSE = 0x2A82,
SMSG_QUEST_LOG_FULL = 0x2A87,
SMSG_QUEST_NON_LOG_UPDATE_COMPLETE = 0x2A88,
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D,
SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F,
SMSG_QUEST_PUSH_RESULT = 0x2A90,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x285D,
- SMSG_QUEST_SESSION_READY_CHECK = 0x284B,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x284C,
- SMSG_QUEST_SESSION_RESULT = 0x284A,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2866,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x2854,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2855,
+ SMSG_QUEST_SESSION_RESULT = 0x2853,
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 = 0x2802,
- SMSG_RAF_ACCOUNT_INFO = 0x2848,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2859,
- SMSG_RAID_DIFFICULTY_SET = 0x279B,
- SMSG_RAID_GROUP_ONLY = 0x279D,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x280C,
+ SMSG_RAF_ACCOUNT_INFO = 0x2851,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2862,
+ SMSG_RAID_DIFFICULTY_SET = 0x27A4,
+ SMSG_RAID_GROUP_ONLY = 0x27A6,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
- SMSG_RAID_MARKERS_CHANGED = 0x25A2,
- SMSG_RANDOM_ROLL = 0x2628,
+ SMSG_RAID_MARKERS_CHANGED = 0x25A4,
+ SMSG_RANDOM_ROLL = 0x262D,
SMSG_RATED_PVP_INFO = 0x2931,
- SMSG_READY_CHECK_COMPLETED = 0x25F2,
- SMSG_READY_CHECK_RESPONSE = 0x25F1,
- SMSG_READY_CHECK_STARTED = 0x25F0,
- SMSG_READ_ITEM_RESULT_FAILED = 0x2797,
- SMSG_READ_ITEM_RESULT_OK = 0x278F,
- SMSG_REALM_LOOKUP_INFO = 0x27BB,
+ SMSG_READY_CHECK_COMPLETED = 0x25F7,
+ SMSG_READY_CHECK_RESPONSE = 0x25F6,
+ SMSG_READY_CHECK_STARTED = 0x25F5,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x27A0,
+ SMSG_READ_ITEM_RESULT_OK = 0x2797,
+ SMSG_REALM_LOOKUP_INFO = 0x27C4,
SMSG_REALM_QUERY_RESPONSE = 0x2913,
- SMSG_REATTACH_RESURRECT = 0x273E,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26B7,
- SMSG_REFRESH_COMPONENT = 0x2649,
+ SMSG_REATTACH_RESURRECT = 0x2744,
+ SMSG_RECRAFT_ITEM_RESULT = 0x289B,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BC,
+ SMSG_REFRESH_COMPONENT = 0x264E,
SMSG_REFRESH_SPELL_HISTORY = 0x2C2C,
- SMSG_REMOVE_ITEM_PASSIVE = 0x25A9,
- SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C52,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x27B3,
+ SMSG_REMOVE_ITEM_PASSIVE = 0x25AC,
+ SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C55,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27BC,
SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591,
SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2935,
SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2936,
SMSG_RESEARCH_COMPLETE = 0x2587,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26AE,
+ SMSG_RESET_FAILED_NOTIFY = 0x26B3,
SMSG_RESET_QUEST_POI = 0x2AA0,
SMSG_RESET_RANGED_COMBAT_TIMER = 0x2944,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
- SMSG_RESPEC_WIPE_CONFIRM = 0x260B,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x2610,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572,
- SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C60,
- SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B5,
- SMSG_RESUME_CAST = 0x2C3B,
- SMSG_RESUME_CAST_BAR = 0x2C3E,
+ SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C64,
+ SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B8,
+ SMSG_RESUME_CAST = 0x2C3E,
+ SMSG_RESUME_CAST_BAR = 0x2C41,
SMSG_RESUME_COMMS = 0x304B,
- SMSG_RESUME_TOKEN = 0x25A7,
+ SMSG_RESUME_TOKEN = 0x25AA,
SMSG_RESURRECT_REQUEST = 0x257E,
- SMSG_RESYNC_RUNES = 0x2C5F,
- SMSG_RETURN_APPLICANT_LIST = 0x283E,
- SMSG_RETURN_RECRUITING_CLUBS = 0x283D,
+ SMSG_RESYNC_RUNES = 0x2C62,
+ SMSG_RETURNING_PLAYER_PROMPT = 0x279F,
+ SMSG_RETURN_APPLICANT_LIST = 0x2847,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x2846,
SMSG_ROLE_CHANGED_INFORM = 0x258D,
SMSG_ROLE_CHOSEN = 0x2A39,
SMSG_ROLE_POLL_INFORM = 0x258E,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27EF,
- SMSG_RUNE_REGEN_DEBUG = 0x25B2,
- SMSG_SCENARIO_COMPLETED = 0x27DD,
- SMSG_SCENARIO_POIS = 0x262B,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x2624,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x27F2,
- SMSG_SCENARIO_STATE = 0x2623,
- SMSG_SCENARIO_UI_UPDATE = 0x27F1,
- SMSG_SCENARIO_VACATE = 0x2798,
- SMSG_SCENE_OBJECT_EVENT = 0x25DB,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E0,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E1,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25DD,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DC,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25DF,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25DE,
- SMSG_SCRIPT_CAST = 0x2C56,
- SMSG_SEASON_INFO = 0x25BD,
- SMSG_SELL_RESPONSE = 0x26BB,
- SMSG_SEND_ITEM_PASSIVES = 0x25AA,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F8,
+ SMSG_RUNE_REGEN_DEBUG = 0x25B5,
+ SMSG_SCENARIO_COMPLETED = 0x27E6,
+ SMSG_SCENARIO_POIS = 0x2630,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x2629,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x27FC,
+ SMSG_SCENARIO_STATE = 0x2628,
+ SMSG_SCENARIO_UI_UPDATE = 0x27FB,
+ SMSG_SCENARIO_VACATE = 0x27A1,
+ SMSG_SCENE_OBJECT_EVENT = 0x25E0,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E5,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E6,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E2,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E1,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E4,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E3,
+ SMSG_SCRIPT_CAST = 0x2C59,
+ SMSG_SEASON_INFO = 0x25C0,
+ SMSG_SELL_RESPONSE = 0x26C0,
+ SMSG_SEND_ITEM_PASSIVES = 0x25AD,
SMSG_SEND_KNOWN_SPELLS = 0x2C2A,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2626,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2627,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262B,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262C,
SMSG_SEND_SPELL_CHARGES = 0x2C2D,
SMSG_SEND_SPELL_HISTORY = 0x2C2B,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2E,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2646,
- SMSG_SERVER_TIME = 0x267A,
- SMSG_SERVER_TIME_OFFSET = 0x2708,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264B,
+ SMSG_SERVER_TIME = 0x267F,
+ SMSG_SERVER_TIME_OFFSET = 0x270E,
SMSG_SETUP_CURRENCY = 0x2573,
SMSG_SETUP_RESEARCH_HISTORY = 0x2586,
- SMSG_SET_AI_ANIM_KIT = 0x2723,
- SMSG_SET_ALL_TASK_PROGRESS = 0x277F,
- SMSG_SET_ANIM_TIER = 0x2727,
- SMSG_SET_CHR_UPGRADE_TIER = 0x25D8,
+ SMSG_SET_AI_ANIM_KIT = 0x2729,
+ SMSG_SET_ALL_TASK_PROGRESS = 0x2785,
+ SMSG_SET_ANIM_TIER = 0x272D,
+ SMSG_SET_CHR_UPGRADE_TIER = 0x25DD,
SMSG_SET_CURRENCY = 0x2574,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x269C,
- SMSG_SET_FACTION_AT_WAR = 0x26F4,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x271E,
- SMSG_SET_FACTION_STANDING = 0x271F,
- SMSG_SET_FACTION_VISIBLE = 0x271D,
- SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
- SMSG_SET_FORCED_REACTIONS = 0x2711,
- SMSG_SET_ITEM_PURCHASE_DATA = 0x259D,
- SMSG_SET_LOOT_METHOD_FAILED = 0x27C1,
- SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A0,
- SMSG_SET_MELEE_ANIM_KIT = 0x2726,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x2725,
- SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
- SMSG_SET_PET_SPECIALIZATION = 0x261D,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x26A1,
+ SMSG_SET_FACTION_AT_WAR = 0x26FA,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x2724,
+ SMSG_SET_FACTION_STANDING = 0x2725,
+ SMSG_SET_FACTION_VISIBLE = 0x2723,
+ SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C39,
+ SMSG_SET_FORCED_REACTIONS = 0x2717,
+ SMSG_SET_ITEM_PURCHASE_DATA = 0x259F,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x27CA,
+ SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A2,
+ SMSG_SET_MELEE_ANIM_KIT = 0x272C,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x272B,
+ SMSG_SET_PCT_SPELL_MODIFIER = 0x2C3A,
+ SMSG_SET_PET_SPECIALIZATION = 0x2622,
SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003,
- SMSG_SET_PLAY_HOVER_ANIM = 0x25B6,
- SMSG_SET_PROFICIENCY = 0x2728,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2851,
- SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2997,
+ SMSG_SET_PLAY_HOVER_ANIM = 0x25B9,
+ SMSG_SET_PROFICIENCY = 0x272E,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x285A,
+ SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998,
SMSG_SET_SPELL_CHARGES = 0x2C29,
- SMSG_SET_TASK_COMPLETE = 0x2780,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x266F,
- SMSG_SET_VEHICLE_REC_ID = 0x26EB,
- SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2878,
- SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2998,
- SMSG_SHOW_BANK = 0x2677,
- SMSG_SHOW_MAILBOX = 0x2799,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D4,
+ SMSG_SET_TASK_COMPLETE = 0x2786,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x2674,
+ SMSG_SET_VEHICLE_REC_ID = 0x26F1,
+ SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2882,
+ SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2999,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D9,
SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95,
- SMSG_SHOW_TAXI_NODES = 0x26C3,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2763,
- SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x287D,
- SMSG_SOCKET_GEMS_FAILURE = 0x271B,
- SMSG_SOCKET_GEMS_SUCCESS = 0x271A,
- SMSG_SPECIAL_MOUNT_ANIM = 0x2697,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x270C,
+ SMSG_SHOW_TAXI_NODES = 0x26C8,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2769,
+ SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x288B,
+ SMSG_SOCKET_GEMS_FAILURE = 0x2721,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x2720,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x269C,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2712,
SMSG_SPELL_ABSORB_LOG = 0x2C1F,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17,
SMSG_SPELL_CHANNEL_START = 0x2C34,
SMSG_SPELL_CHANNEL_UPDATE = 0x2C35,
SMSG_SPELL_COOLDOWN = 0x2C15,
SMSG_SPELL_DAMAGE_SHIELD = 0x2C31,
- SMSG_SPELL_DELAYED = 0x2C3F,
+ SMSG_SPELL_DELAYED = 0x2C42,
SMSG_SPELL_DISPELL_LOG = 0x2C1A,
+ SMSG_SPELL_EMPOWER_SET_STAGE = 0x2C38,
+ SMSG_SPELL_EMPOWER_START = 0x2C36,
+ SMSG_SPELL_EMPOWER_UPDATE = 0x2C37,
SMSG_SPELL_ENERGIZE_LOG = 0x2C1C,
- SMSG_SPELL_EXECUTE_LOG = 0x2C40,
- SMSG_SPELL_FAILED_OTHER = 0x2C55,
- SMSG_SPELL_FAILURE = 0x2C53,
- SMSG_SPELL_FAILURE_MESSAGE = 0x2C5A,
- SMSG_SPELL_GO = 0x2C39,
+ SMSG_SPELL_EXECUTE_LOG = 0x2C43,
+ SMSG_SPELL_FAILED_OTHER = 0x2C58,
+ SMSG_SPELL_FAILURE = 0x2C56,
+ SMSG_SPELL_FAILURE_MESSAGE = 0x2C5D,
+ SMSG_SPELL_GO = 0x2C3C,
SMSG_SPELL_HEAL_ABSORB_LOG = 0x2C1E,
SMSG_SPELL_HEAL_LOG = 0x2C1D,
SMSG_SPELL_INSTAKILL_LOG = 0x2C33,
SMSG_SPELL_INTERRUPT_LOG = 0x2C20,
- SMSG_SPELL_MISS_LOG = 0x2C41,
+ SMSG_SPELL_MISS_LOG = 0x2C44,
SMSG_SPELL_NON_MELEE_DAMAGE_LOG = 0x2C32,
SMSG_SPELL_OR_DAMAGE_IMMUNE = 0x2C2F,
SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B,
- SMSG_SPELL_PREPARE = 0x2C38,
- SMSG_SPELL_START = 0x2C3A,
- SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25C8,
- SMSG_SPIRIT_HEALER_CONFIRM = 0x2709,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2863,
- SMSG_STAND_STATE_UPDATE = 0x2710,
- SMSG_START_ELAPSED_TIMER = 0x25FE,
- SMSG_START_ELAPSED_TIMERS = 0x2600,
- SMSG_START_LIGHTNING_STORM = 0x269F,
- SMSG_START_LOOT_ROLL = 0x2615,
- SMSG_START_MIRROR_TIMER = 0x2703,
- SMSG_START_TIMER = 0x25A4,
- SMSG_STOP_ELAPSED_TIMER = 0x25FF,
- SMSG_STOP_MIRROR_TIMER = 0x2705,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x275F,
- SMSG_STREAMING_MOVIES = 0x25A3,
- SMSG_SUMMON_CANCEL = 0x26A8,
+ SMSG_SPELL_PREPARE = 0x2C3B,
+ SMSG_SPELL_START = 0x2C3D,
+ SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CB,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x286C,
+ SMSG_STAND_STATE_UPDATE = 0x2716,
+ SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D1,
+ SMSG_START_ELAPSED_TIMER = 0x2603,
+ SMSG_START_ELAPSED_TIMERS = 0x2605,
+ SMSG_START_LIGHTNING_STORM = 0x26A4,
+ SMSG_START_LOOT_ROLL = 0x261A,
+ SMSG_START_MIRROR_TIMER = 0x2709,
+ SMSG_START_TIMER = 0x25A6,
+ SMSG_STOP_ELAPSED_TIMER = 0x2604,
+ SMSG_STOP_MIRROR_TIMER = 0x270B,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x2765,
+ SMSG_STOP_TIMER = 0x25A7,
+ SMSG_STREAMING_MOVIES = 0x25A5,
+ SMSG_SUGGEST_INVITE_INFORM = 0x278D,
+ SMSG_SUMMON_CANCEL = 0x26AD,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F,
- SMSG_SUMMON_REQUEST = 0x2715,
- SMSG_SUPERCEDED_SPELLS = 0x2C4C,
+ SMSG_SUMMON_REQUEST = 0x271B,
+ SMSG_SUPERCEDED_SPELLS = 0x2C4F,
SMSG_SUSPEND_COMMS = 0x304A,
- SMSG_SUSPEND_TOKEN = 0x25A6,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x285B,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x270B,
- SMSG_TAXI_NODE_STATUS = 0x2674,
- SMSG_TEXT_EMOTE = 0x2672,
- SMSG_THREAT_CLEAR = 0x26D2,
- SMSG_THREAT_REMOVE = 0x26D1,
- SMSG_THREAT_UPDATE = 0x26D0,
+ SMSG_SUSPEND_TOKEN = 0x25A9,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x2864,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2711,
+ SMSG_TAXI_NODE_STATUS = 0x2679,
+ SMSG_TEXT_EMOTE = 0x2677,
+ SMSG_THREAT_CLEAR = 0x26D7,
+ SMSG_THREAT_REMOVE = 0x26D6,
+ SMSG_THREAT_UPDATE = 0x26D5,
SMSG_TIME_ADJUSTMENT = 0x2DD3,
SMSG_TIME_SYNC_REQUEST = 0x2DD2,
- SMSG_TITLE_EARNED = 0x26CD,
- SMSG_TITLE_LOST = 0x26CE,
- SMSG_TOTEM_CREATED = 0x26BE,
- SMSG_TOTEM_DURATION_CHANGED = 0x26BF,
- SMSG_TOTEM_MOVED = 0x26C0,
+ SMSG_TITLE_EARNED = 0x26D2,
+ SMSG_TITLE_LOST = 0x26D3,
+ SMSG_TOTEM_CREATED = 0x26C3,
+ SMSG_TOTEM_DURATION_CHANGED = 0x26C4,
+ SMSG_TOTEM_MOVED = 0x26C5,
SMSG_TRADE_STATUS = 0x2582,
SMSG_TRADE_UPDATED = 0x2581,
- SMSG_TRAINER_BUY_FAILED = 0x26D5,
- SMSG_TRAINER_LIST = 0x26D4,
- SMSG_TRANSFER_ABORTED = 0x26F7,
- SMSG_TRANSFER_PENDING = 0x25C9,
- SMSG_TRANSMOGRIFY_NPC = 0x27E7,
+ SMSG_TRAINER_BUY_FAILED = 0x26DA,
+ SMSG_TRAINER_LIST = 0x26D9,
+ SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D0,
+ SMSG_TRANSFER_ABORTED = 0x26FD,
+ SMSG_TRANSFER_PENDING = 0x25CC,
SMSG_TREASURE_PICKER_RESPONSE = 0x291F,
- SMSG_TRIGGER_CINEMATIC = 0x27B9,
- SMSG_TRIGGER_MOVIE = 0x26C1,
- SMSG_TURN_IN_PETITION_RESULT = 0x2741,
- SMSG_TUTORIAL_FLAGS = 0x27AC,
+ SMSG_TRIGGER_CINEMATIC = 0x27C2,
+ SMSG_TRIGGER_MOVIE = 0x26C6,
+ SMSG_TURN_IN_PETITION_RESULT = 0x2747,
+ SMSG_TUTORIAL_FLAGS = 0x27B5,
SMSG_TWITTER_STATUS = 0x3043,
- SMSG_UI_HEALING_RANGE_MODIFIED = 0x2737,
- SMSG_UI_ITEM_INTERACTION_NPC = 0x27E9,
+ SMSG_UI_HEALING_RANGE_MODIFIED = 0x273D,
SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27BC,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27BD,
- SMSG_UNLEARNED_SPELLS = 0x2C4E,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C5,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C6,
+ SMSG_UNLEARNED_SPELLS = 0x2C51,
SMSG_UNLOAD_CHILD_MAP = 0x257A,
- SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2875,
- SMSG_UPDATE_ACCOUNT_DATA = 0x26FD,
- SMSG_UPDATE_ACTION_BUTTONS = 0x25D9,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x2813,
+ SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287E,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x2703,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x25DE,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x281D,
SMSG_UPDATE_CAPTURE_POINT = 0x2929,
- SMSG_UPDATE_CELESTIAL_BODY = 0x280F,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x27B2,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2759,
- SMSG_UPDATE_COOLDOWN = 0x2758,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x2819,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27BB,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x275F,
+ SMSG_UPDATE_COOLDOWN = 0x275E,
+ SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996,
SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x263E,
- SMSG_UPDATE_GAME_TIME_STATE = 0x2816,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A1,
- SMSG_UPDATE_LAST_INSTANCE = 0x2680,
- SMSG_UPDATE_OBJECT = 0x27BA,
- SMSG_UPDATE_PRIMARY_SPEC = 0x25D1,
- SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25EF,
- SMSG_UPDATE_TALENT_DATA = 0x25D0,
- SMSG_UPDATE_TASK_PROGRESS = 0x277E,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x2643,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x2820,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A6,
+ SMSG_UPDATE_LAST_INSTANCE = 0x2685,
+ SMSG_UPDATE_OBJECT = 0x27C3,
+ SMSG_UPDATE_PRIMARY_SPEC = 0x25D6,
+ SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F4,
+ SMSG_UPDATE_TALENT_DATA = 0x25D5,
+ SMSG_UPDATE_TASK_PROGRESS = 0x2784,
SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19,
- SMSG_UPDATE_WORLD_STATE = 0x273B,
+ SMSG_UPDATE_WORLD_STATE = 0x2741,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x2742,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x280A,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2808,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2807,
- SMSG_VAS_PURCHASE_COMPLETE = 0x27E3,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E2,
- SMSG_VENDOR_INVENTORY = 0x25B4,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x2748,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2814,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2812,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2811,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x27EC,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27EB,
+ SMSG_VENDOR_INVENTORY = 0x25B7,
SMSG_VIGNETTE_UPDATE = 0x3008,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x280E,
- SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x286F,
- SMSG_VOICE_LOGIN_RESPONSE = 0x280D,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2818,
+ SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2878,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x2817,
SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4,
SMSG_VOID_STORAGE_CONTENTS = 0x2DA1,
SMSG_VOID_STORAGE_FAILED = 0x2DA0,
@@ -1957,28 +2027,28 @@ enum OpcodeServer : uint16
SMSG_WAIT_QUEUE_FINISH = 0x256F,
SMSG_WAIT_QUEUE_UPDATE = 0x256E,
SMSG_WARDEN3_DATA = 0x2577,
- SMSG_WARDEN3_DISABLED = 0x2811,
- SMSG_WARDEN3_ENABLED = 0x2810,
- SMSG_WARFRONT_COMPLETE = 0x2751,
+ SMSG_WARDEN3_DISABLED = 0x281B,
+ SMSG_WARDEN3_ENABLED = 0x281A,
+ SMSG_WARFRONT_COMPLETE = 0x2757,
SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933,
- SMSG_WEATHER = 0x269E,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2866,
- SMSG_WEEKLY_REWARDS_RESULT = 0x2864,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2865,
+ SMSG_WEATHER = 0x26A3,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286F,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x286D,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286E,
SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x269D,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2815,
- SMSG_WORLD_MAP_OPEN_NPC = 0x27E6,
+ SMSG_WHO_IS = 0x26A2,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281F,
SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F,
- SMSG_WORLD_SERVER_INFO = 0x25AB,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x285C,
- SMSG_XP_GAIN_ABORTED = 0x25C5,
- SMSG_XP_GAIN_ENABLED = 0x279C,
+ SMSG_WORLD_SERVER_INFO = 0x25AE,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2865,
+ SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A0,
+ SMSG_XP_GAIN_ABORTED = 0x25C8,
+ SMSG_XP_GAIN_ENABLED = 0x27A5,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
- SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25AE, // no client handler
+ SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25B1, // no client handler
SMSG_COMPRESSED_PACKET = 0x3052,
SMSG_MULTIPLE_PACKETS = 0x3051,
@@ -2080,6 +2150,7 @@ class OpcodeTable
}
private:
+ bool ValidateClientOpcode(OpcodeClient opcode, char const* name) const;
template<typename Handler, Handler HandlerFunction>
void ValidateAndSetClientOpcode(OpcodeClient opcode, char const* name, SessionStatus status, PacketProcessing processing);