aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-12-09 14:45:03 +0100
committerShauren <shauren.trinity@gmail.com>2018-12-09 14:45:03 +0100
commitf94deace764f0b8d99249760d2bc2e85c891c387 (patch)
tree4c7c56f34768fc7aef05268061a12845c5bf67ce /src/server/game/Server
parent8725eec9c1c15f3e76bd9d524d4a5d8d0b3f0a44 (diff)
parenta70030ff252b266d12023ffada2a309409c1ccdb (diff)
Merge branch 'bfa'
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/AchievementPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/AchievementPackets.h6
-rw-r--r--src/server/game/Server/Packets/AreaTriggerPackets.cpp14
-rw-r--r--src/server/game/Server/Packets/AreaTriggerPackets.h13
-rw-r--r--src/server/game/Server/Packets/ArtifactPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/ArtifactPackets.h11
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h3
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h6
-rw-r--r--src/server/game/Server/Packets/CalendarPackets.cpp75
-rw-r--r--src/server/game/Server/Packets/CalendarPackets.h21
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h25
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp48
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h38
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp63
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.h13
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.cpp44
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.h17
-rw-r--r--src/server/game/Server/Packets/CombatPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/CombatPackets.h4
-rw-r--r--src/server/game/Server/Packets/DuelPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/DuelPackets.h1
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.h4
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h2
-rw-r--r--src/server/game/Server/Packets/GuildFinderPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/GuildFinderPackets.h2
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp168
-rw-r--r--src/server/game/Server/Packets/GuildPackets.h15
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp18
-rw-r--r--src/server/game/Server/Packets/InspectPackets.h11
-rw-r--r--src/server/game/Server/Packets/InstancePackets.cpp32
-rw-r--r--src/server/game/Server/Packets/InstancePackets.h8
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/LFGPackets.cpp13
-rw-r--r--src/server/game/Server/Packets/LFGPackets.h26
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp11
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h15
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp44
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h12
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp24
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h7
-rw-r--r--src/server/game/Server/Packets/PacketUtilities.h5
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp27
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h29
-rw-r--r--src/server/game/Server/Packets/PetPackets.cpp13
-rw-r--r--src/server/game/Server/Packets/PetPackets.h2
-rw-r--r--src/server/game/Server/Packets/PetitionPackets.cpp41
-rw-r--r--src/server/game/Server/Packets/PetitionPackets.h2
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp58
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h32
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp26
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h15
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.h2
-rw-r--r--src/server/game/Server/Packets/ScenarioPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/ScenarioPackets.h2
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp25
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h12
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp21
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h21
-rw-r--r--src/server/game/Server/Packets/TalentPackets.cpp30
-rw-r--r--src/server/game/Server/Packets/TalentPackets.h14
-rw-r--r--src/server/game/Server/Packets/TaxiPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/TaxiPackets.h6
-rw-r--r--src/server/game/Server/Packets/TicketPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/TicketPackets.h7
-rw-r--r--src/server/game/Server/Packets/TotemPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/TotemPackets.h2
-rw-r--r--src/server/game/Server/Packets/TransmogrificationPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/WhoPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/WorldStatePackets.cpp8
-rw-r--r--src/server/game/Server/Packets/WorldStatePackets.h10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp81
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h1904
-rw-r--r--src/server/game/Server/WorldSession.cpp13
-rw-r--r--src/server/game/Server/WorldSession.h16
-rw-r--r--src/server/game/Server/WorldSocket.cpp7
80 files changed, 1783 insertions, 1540 deletions
diff --git a/src/server/game/Server/Packets/AchievementPackets.cpp b/src/server/game/Server/Packets/AchievementPackets.cpp
index 87181b3006a..2c746b77ad6 100644
--- a/src/server/game/Server/Packets/AchievementPackets.cpp
+++ b/src/server/game/Server/Packets/AchievementPackets.cpp
@@ -111,7 +111,7 @@ WorldPacket const* WorldPackets::Achievement::AchievementEarned::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Achievement::ServerFirstAchievement::Write()
+WorldPacket const* WorldPackets::Achievement::BroadcastAchievement::Write()
{
_worldPacket.WriteBits(Name.length(), 7);
_worldPacket.WriteBit(GuildAchievement);
diff --git a/src/server/game/Server/Packets/AchievementPackets.h b/src/server/game/Server/Packets/AchievementPackets.h
index 56b027d024d..69262eae72f 100644
--- a/src/server/game/Server/Packets/AchievementPackets.h
+++ b/src/server/game/Server/Packets/AchievementPackets.h
@@ -101,7 +101,7 @@ namespace WorldPackets
class AchievementDeleted final : public ServerPacket
{
public:
- AchievementDeleted() : ServerPacket(SMSG_ACHIEVEMENT_DELETED, 4) { }
+ AchievementDeleted() : ServerPacket(SMSG_ACHIEVEMENT_DELETED, 8) { }
WorldPacket const* Write() override;
@@ -125,10 +125,10 @@ namespace WorldPackets
ObjectGuid Sender;
};
- class ServerFirstAchievement final : public ServerPacket
+ class BroadcastAchievement final : public ServerPacket
{
public:
- ServerFirstAchievement() : ServerPacket(SMSG_SERVER_FIRST_ACHIEVEMENT) { }
+ BroadcastAchievement() : ServerPacket(SMSG_BROADCAST_ACHIEVEMENT) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.cpp b/src/server/game/Server/Packets/AreaTriggerPackets.cpp
index f99d9831f91..6b4047d0995 100644
--- a/src/server/game/Server/Packets/AreaTriggerPackets.cpp
+++ b/src/server/game/Server/Packets/AreaTriggerPackets.cpp
@@ -33,7 +33,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::AreaTrigger::AreaTriggerS
ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerCircularMovementInfo const& areaTriggerCircularMovement)
{
- data.WriteBit(areaTriggerCircularMovement.TargetGUID.is_initialized());
+ data.WriteBit(areaTriggerCircularMovement.PathTarget.is_initialized());
data.WriteBit(areaTriggerCircularMovement.Center.is_initialized());
data.WriteBit(areaTriggerCircularMovement.CounterClockwise);
data.WriteBit(areaTriggerCircularMovement.CanLoop);
@@ -46,8 +46,8 @@ ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerCircularMovementInfo const&
data << float(areaTriggerCircularMovement.InitialAngle);
data << float(areaTriggerCircularMovement.ZOffset);
- if (areaTriggerCircularMovement.TargetGUID)
- data << *areaTriggerCircularMovement.TargetGUID;
+ if (areaTriggerCircularMovement.PathTarget)
+ data << *areaTriggerCircularMovement.PathTarget;
if (areaTriggerCircularMovement.Center)
data << *areaTriggerCircularMovement.Center;
@@ -74,14 +74,6 @@ WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerDenied::Write()
WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerRePath::Write()
{
_worldPacket << TriggerGUID;
- _worldPacket << AreaTriggerSpline;
-
- return &_worldPacket;
-}
-
-WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerReShape::Write()
-{
- _worldPacket << TriggerGUID;
_worldPacket.WriteBit(AreaTriggerSpline.is_initialized());
_worldPacket.WriteBit(AreaTriggerCircularMovement.is_initialized());
diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.h b/src/server/game/Server/Packets/AreaTriggerPackets.h
index e3872493481..b3abf08c5d9 100644
--- a/src/server/game/Server/Packets/AreaTriggerPackets.h
+++ b/src/server/game/Server/Packets/AreaTriggerPackets.h
@@ -68,18 +68,7 @@ namespace WorldPackets
class AreaTriggerRePath final : public ServerPacket
{
public:
- AreaTriggerRePath() : ServerPacket(SMSG_AREA_TRIGGER_RE_PATH, 50) { }
-
- WorldPacket const* Write() override;
-
- AreaTriggerSplineInfo AreaTriggerSpline;
- ObjectGuid TriggerGUID;
- };
-
- class AreaTriggerReShape final : public ServerPacket
- {
- public:
- AreaTriggerReShape() : ServerPacket(SMSG_AREA_TRIGGER_RE_SHAPE, 17) { }
+ AreaTriggerRePath() : ServerPacket(SMSG_AREA_TRIGGER_RE_PATH, 17) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/ArtifactPackets.cpp b/src/server/game/Server/Packets/ArtifactPackets.cpp
index 8666b709cf0..2612b384f8c 100644
--- a/src/server/game/Server/Packets/ArtifactPackets.cpp
+++ b/src/server/game/Server/Packets/ArtifactPackets.cpp
@@ -69,11 +69,3 @@ WorldPacket const* WorldPackets::Artifact::ArtifactXpGain::Write()
return &_worldPacket;
}
-
-WorldPacket const* WorldPackets::Artifact::ArtifactKnowledge::Write()
-{
- _worldPacket << int32(ArtifactCategoryID);
- _worldPacket << int8(KnowledgeLevel);
-
- return &_worldPacket;
-}
diff --git a/src/server/game/Server/Packets/ArtifactPackets.h b/src/server/game/Server/Packets/ArtifactPackets.h
index 25934b75c28..f208a906413 100644
--- a/src/server/game/Server/Packets/ArtifactPackets.h
+++ b/src/server/game/Server/Packets/ArtifactPackets.h
@@ -99,17 +99,6 @@ namespace WorldPackets
ObjectGuid ArtifactGUID;
uint64 Amount = 0;
};
-
- class ArtifactKnowledge final : public ServerPacket
- {
- public:
- ArtifactKnowledge() : ServerPacket(SMSG_ARTIFACT_KNOWLEDGE, 1 + 4) { }
-
- WorldPacket const* Write() override;
-
- int32 ArtifactCategoryID = 0;
- int8 KnowledgeLevel = 0;
- };
}
}
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index c28b8281ede..44e9608bddd 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -84,8 +84,6 @@ void WorldPackets::Auth::AuthSession::Read()
uint32 realmJoinTicketSize;
_worldPacket >> DosResponse;
- _worldPacket >> Build;
- _worldPacket >> BuildType;
_worldPacket >> RegionID;
_worldPacket >> BattlegroupID;
_worldPacket >> RealmID;
@@ -145,6 +143,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket.WriteBit(SuccessInfo->ForceCharacterTemplate);
_worldPacket.WriteBit(SuccessInfo->NumPlayersHorde.is_initialized());
_worldPacket.WriteBit(SuccessInfo->NumPlayersAlliance.is_initialized());
+ _worldPacket.WriteBit(SuccessInfo->ExpansionTrialExpiration.is_initialized());
_worldPacket.FlushBits();
{
@@ -164,6 +163,9 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
if (SuccessInfo->NumPlayersAlliance)
_worldPacket << uint16(*SuccessInfo->NumPlayersAlliance);
+ if (SuccessInfo->ExpansionTrialExpiration)
+ _worldPacket << int32(*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 97662944f09..7b0e50844bb 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -83,8 +83,6 @@ namespace WorldPackets
Digest.fill(0);
}
- uint16 Build = 0;
- int8 BuildType = 0;
uint32 RegionID = 0;
uint32 BattlegroupID = 0;
uint32 RealmID = 0;
@@ -159,6 +157,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
};
AuthResponse();
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index 05851fb1dfd..14ae46e105a 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -67,9 +67,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData:
data << uint32(playerData.HealingDone);
data << uint32(playerData.Stats.size());
data << int32(playerData.PrimaryTalentTree);
- data << int32(playerData.PrimaryTalentTreeNameIndex);
+ data << int32(playerData.Sex);
data << int32(playerData.Race);
- data << uint32(playerData.Prestige);
+ data << int32(playerData.Class);
+ data << int32(playerData.CreatureID);
+ data << int32(playerData.HonorLevel);
if (!playerData.Stats.empty())
data.append(playerData.Stats.data(), playerData.Stats.size());
@@ -89,13 +91,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData:
data << uint32(*playerData.PreMatchRating);
if (playerData.RatingChange)
- data << uint32(*playerData.RatingChange);
+ data << int32(*playerData.RatingChange);
if (playerData.PreMatchMMR)
data << uint32(*playerData.PreMatchMMR);
if (playerData.MmrChange)
- data << uint32(*playerData.MmrChange);
+ data << int32(*playerData.MmrChange);
return data;
}
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index 7340d8d7fc9..14ebc283cb5 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -122,9 +122,11 @@ namespace WorldPackets
Optional<int32> MmrChange;
std::vector<int32> Stats;
int32 PrimaryTalentTree = 0;
- int32 PrimaryTalentTreeNameIndex = 0; // controls which name field from ChrSpecialization.dbc will be sent to lua
+ int32 Sex = 0;
int32 Race = 0;
- uint32 Prestige = 0;
+ int32 Class = 0;
+ int32 CreatureID = 0;
+ int32 HonorLevel = 0;
};
Optional<uint8> Winner;
diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp
index 5292bb69b99..7c82bd9d377 100644
--- a/src/server/game/Server/Packets/CalendarPackets.cpp
+++ b/src/server/game/Server/Packets/CalendarPackets.cpp
@@ -24,7 +24,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCal
data.AppendPackedTime(eventInfo.Date);
data << uint32(eventInfo.Flags);
data << int32(eventInfo.TextureID);
- data << eventInfo.EventGuildID;
+ data << uint64(eventInfo.EventClubID);
data << eventInfo.OwnerGuid;
data.WriteBits(eventInfo.EventName.size(), 8);
@@ -80,8 +80,9 @@ void WorldPackets::Calendar::CalendarGetEvent::Read()
_worldPacket >> EventID;
}
-void WorldPackets::Calendar::CalendarGuildFilter::Read()
+void WorldPackets::Calendar::CalendarCommunityFilter::Read()
{
+ _worldPacket >> ClubID;
_worldPacket >> MinLevel;
_worldPacket >> MaxLevel;
_worldPacket >> MaxRankOrder;
@@ -92,26 +93,45 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarAddEv
buffer >> invite.Guid;
buffer >> invite.Status;
buffer >> invite.Moderator;
+ if (buffer.ReadBit())
+ invite.Unused_801_1 = boost::in_place();
+
+ if (buffer.ReadBit())
+ invite.Unused_801_2 = boost::in_place();
+
+ if (buffer.ReadBit())
+ invite.Unused_801_3 = boost::in_place();
+
+ if (invite.Unused_801_1)
+ buffer >> *invite.Unused_801_1;
+
+ if (invite.Unused_801_2)
+ buffer >> *invite.Unused_801_2;
+
+ if (invite.Unused_801_3)
+ buffer >> *invite.Unused_801_3;
+
return buffer;
}
ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarAddEventInfo& addEventInfo)
{
- uint8 titleLength = buffer.ReadBits(8);
- uint16 descriptionLength = buffer.ReadBits(11);
-
+ buffer >> addEventInfo.ClubID;
buffer >> addEventInfo.EventType;
buffer >> addEventInfo.TextureID;
addEventInfo.Time = buffer.ReadPackedTime();
buffer >> addEventInfo.Flags;
addEventInfo.Invites.resize(buffer.read<uint32>());
- addEventInfo.Title = buffer.ReadString(titleLength);
- addEventInfo.Description = buffer.ReadString(descriptionLength);
+ uint8 titleLength = buffer.ReadBits(8);
+ uint16 descriptionLength = buffer.ReadBits(11);
for (WorldPackets::Calendar::CalendarAddEventInviteInfo& invite : addEventInfo.Invites)
buffer >> invite;
+ addEventInfo.Title = buffer.ReadString(titleLength);
+ addEventInfo.Description = buffer.ReadString(descriptionLength);
+
return buffer;
}
@@ -121,20 +141,28 @@ void WorldPackets::Calendar::CalendarAddEvent::Read()
_worldPacket >> MaxSize;
}
-void WorldPackets::Calendar::CalendarUpdateEvent::Read()
+ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarUpdateEventInfo& updateEventInfo)
{
- _worldPacket >> EventInfo.EventID;
- _worldPacket >> EventInfo.ModeratorID;
- _worldPacket >> EventInfo.EventType;
- _worldPacket >> EventInfo.TextureID;
- EventInfo.Time = _worldPacket.ReadPackedTime();
- _worldPacket >> EventInfo.Flags;
+ buffer >> updateEventInfo.ClubID;
+ buffer >> updateEventInfo.EventID;
+ buffer >> updateEventInfo.ModeratorID;
+ buffer >> updateEventInfo.EventType;
+ buffer >> updateEventInfo.TextureID;
+ updateEventInfo.Time = buffer.ReadPackedTime();
+ buffer >> updateEventInfo.Flags;
- uint8 titleLen = _worldPacket.ReadBits(8);
- uint16 descLen = _worldPacket.ReadBits(11);
+ uint8 titleLen = buffer.ReadBits(8);
+ uint16 descLen = buffer.ReadBits(11);
- EventInfo.Title = _worldPacket.ReadString(titleLen);
- EventInfo.Description = _worldPacket.ReadString(descLen);
+ updateEventInfo.Title = buffer.ReadString(titleLen);
+ updateEventInfo.Description = buffer.ReadString(descLen);
+
+ return buffer;
+}
+
+void WorldPackets::Calendar::CalendarUpdateEvent::Read()
+{
+ _worldPacket >> EventInfo;
_worldPacket >> MaxSize;
}
@@ -142,6 +170,7 @@ void WorldPackets::Calendar::CalendarRemoveEvent::Read()
{
_worldPacket >> EventID;
_worldPacket >> ModeratorID;
+ _worldPacket >> ClubID;
_worldPacket >> Flags;
}
@@ -149,6 +178,7 @@ void WorldPackets::Calendar::CalendarCopyEvent::Read()
{
_worldPacket >> EventID;
_worldPacket >> ModeratorID;
+ _worldPacket >> EventClubID;
Date = _worldPacket.ReadPackedTime();
}
@@ -163,6 +193,7 @@ void WorldPackets::Calendar::CalendarEventInvite::Read()
{
_worldPacket >> EventID;
_worldPacket >> ModeratorID;
+ _worldPacket >> ClubID;
uint16 nameLen = _worldPacket.ReadBits(9);
Creating = _worldPacket.ReadBit();
@@ -174,6 +205,7 @@ void WorldPackets::Calendar::CalendarEventInvite::Read()
void WorldPackets::Calendar::CalendarEventSignUp::Read()
{
_worldPacket >> EventID;
+ _worldPacket >> ClubID;
Tentative = _worldPacket.ReadBit();
}
@@ -255,7 +287,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarSendEvent::Write()
_worldPacket << uint32(Flags);
_worldPacket.AppendPackedTime(Date);
_worldPacket << uint32(LockDate);
- _worldPacket << EventGuildID;
+ _worldPacket << uint64(EventClubID);
_worldPacket << uint32(Invites.size());
_worldPacket.WriteBits(EventName.size(), 8);
_worldPacket.WriteBits(Description.size(), 11);
@@ -277,7 +309,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteAlert::Write()
_worldPacket << uint32(Flags);
_worldPacket << uint8(EventType);
_worldPacket << int32(TextureID);
- _worldPacket << EventGuildID;
+ _worldPacket << uint64(EventClubID);
_worldPacket << uint64(InviteID);
_worldPacket << uint8(Status);
_worldPacket << uint8(ModeratorStatus);
@@ -344,6 +376,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteRemovedAlert::Writ
WorldPacket const* WorldPackets::Calendar::CalendarEventUpdatedAlert::Write()
{
+ _worldPacket << uint64(EventClubID);
_worldPacket << uint64(EventID);
_worldPacket.AppendPackedTime(OriginalDate);
@@ -462,8 +495,8 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteNotes::Write()
_worldPacket << InviteGuid;
_worldPacket << uint64(EventID);
- _worldPacket.WriteBits(Notes.size(), 8);
_worldPacket.WriteBit(ClearPending);
+ _worldPacket.WriteBits(Notes.size(), 8);
_worldPacket.FlushBits();
_worldPacket.WriteString(Notes);
diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h
index f7337386c3c..7757e51144b 100644
--- a/src/server/game/Server/Packets/CalendarPackets.h
+++ b/src/server/game/Server/Packets/CalendarPackets.h
@@ -45,13 +45,14 @@ namespace WorldPackets
uint64 EventID = 0;
};
- class CalendarGuildFilter final : public ClientPacket
+ class CalendarCommunityFilter final : public ClientPacket
{
public:
- CalendarGuildFilter(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_GUILD_FILTER, std::move(packet)) { }
+ CalendarCommunityFilter(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_COMMUNITY_FILTER, std::move(packet)) { }
void Read() override;
+ uint64 ClubID = 0;
uint8 MinLevel = 1;
uint8 MaxLevel = 100;
uint8 MaxRankOrder = 0;
@@ -62,10 +63,14 @@ namespace WorldPackets
ObjectGuid Guid;
uint8 Status = 0;
uint8 Moderator = 0;
+ Optional<ObjectGuid> Unused_801_1;
+ Optional<uint64> Unused_801_2;
+ Optional<uint64> Unused_801_3;
};
struct CalendarAddEventInfo
{
+ uint64 ClubID = 0;
std::string Title;
std::string Description;
uint8 EventType = 0;
@@ -88,6 +93,7 @@ namespace WorldPackets
struct CalendarUpdateEventInfo
{
+ uint64 ClubID = 0;
uint64 EventID = 0;
uint64 ModeratorID = 0;
std::string Title;
@@ -118,6 +124,7 @@ namespace WorldPackets
uint64 ModeratorID = 0;
uint64 EventID = 0;
+ uint64 ClubID = 0;
uint32 Flags = 0;
};
@@ -130,6 +137,7 @@ namespace WorldPackets
uint64 ModeratorID = 0;
uint64 EventID = 0;
+ uint64 EventClubID = 0;
time_t Date = time_t(0);
};
@@ -176,7 +184,7 @@ namespace WorldPackets
time_t Date = time_t(0);
uint32 Flags = 0;
int32 TextureID = 0;
- ObjectGuid EventGuildID;
+ uint64 EventClubID = 0;
ObjectGuid OwnerGuid;
};
@@ -213,7 +221,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid OwnerGuid;
- ObjectGuid EventGuildID;
+ uint64 EventClubID = 0;
uint64 EventID = 0;
time_t Date = time_t(0);
time_t LockDate = time_t(0);
@@ -234,7 +242,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid OwnerGuid;
- ObjectGuid EventGuildID;
+ uint64 EventClubID = 0;
ObjectGuid InvitedByGuid;
uint64 InviteID = 0;
uint64 EventID = 0;
@@ -258,6 +266,7 @@ namespace WorldPackets
bool IsSignUp = false;
bool Creating = true;
uint64 EventID = 0;
+ uint64 ClubID = 0;
std::string Name;
};
@@ -343,6 +352,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
+ uint64 EventClubID = 0;
uint64 EventID = 0;
time_t Date = time_t(0);
uint32 Flags = 0;
@@ -395,6 +405,7 @@ namespace WorldPackets
bool Tentative = false;
uint64 EventID = 0;
+ uint64 ClubID = 0;
};
class CalendarRemoveInvite final : public ClientPacket
diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp
index fe6969d07cf..d5cb727b441 100644
--- a/src/server/game/Server/Packets/ChannelPackets.cpp
+++ b/src/server/game/Server/Packets/ChannelPackets.cpp
@@ -128,7 +128,6 @@ WorldPackets::Channel::ChannelCommand::ChannelCommand(WorldPacket&& packet) : Cl
case CMSG_CHAT_CHANNEL_DECLINE_INVITE:
case CMSG_CHAT_CHANNEL_DISPLAY_LIST:
case CMSG_CHAT_CHANNEL_LIST:
- case CMSG_CHAT_CHANNEL_MODERATE:
case CMSG_CHAT_CHANNEL_OWNER:
break;
default:
@@ -150,12 +149,10 @@ WorldPackets::Channel::ChannelPlayerCommand::ChannelPlayerCommand(WorldPacket&&
case CMSG_CHAT_CHANNEL_INVITE:
case CMSG_CHAT_CHANNEL_KICK:
case CMSG_CHAT_CHANNEL_MODERATOR:
- case CMSG_CHAT_CHANNEL_MUTE:
case CMSG_CHAT_CHANNEL_SET_OWNER:
case CMSG_CHAT_CHANNEL_SILENCE_ALL:
case CMSG_CHAT_CHANNEL_UNBAN:
case CMSG_CHAT_CHANNEL_UNMODERATOR:
- case CMSG_CHAT_CHANNEL_UNMUTE:
case CMSG_CHAT_CHANNEL_UNSILENCE_ALL:
break;
default:
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 538a2c7e1d5..3973c55cf0e 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -140,6 +140,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::CharacterInfo const& charInfo)
{
data << charInfo.Guid;
+ data << uint64(charInfo.GuildClubMemberID);
data << uint8(charInfo.ListPosition);
data << uint8(charInfo.Race);
data << uint8(charInfo.Class);
@@ -201,9 +202,9 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
_worldPacket.WriteBit(Success);
_worldPacket.WriteBit(IsDeletedCharacters);
- _worldPacket.WriteBit(IsDemonHunterCreationAllowed);
+ _worldPacket.WriteBit(IsTestDemonHunterCreationAllowed);
_worldPacket.WriteBit(HasDemonHunterOnRealm);
- _worldPacket.WriteBit(Unknown7x);
+ _worldPacket.WriteBit(IsDemonHunterCreationAllowed);
_worldPacket.WriteBit(DisabledClassesMask.is_initialized());
_worldPacket.WriteBit(IsAlliedRacesCreationAllowed);
_worldPacket << uint32(Characters.size());
@@ -227,6 +228,7 @@ void WorldPackets::Character::CreateCharacter::Read()
CreateInfo.reset(new CharacterCreateInfo());
uint32 nameLength = _worldPacket.ReadBits(6);
bool const hasTemplateSet = _worldPacket.ReadBit();
+ CreateInfo->IsTrialBoost = _worldPacket.ReadBit();
_worldPacket >> CreateInfo->Race;
_worldPacket >> CreateInfo->Class;
@@ -246,6 +248,7 @@ void WorldPackets::Character::CreateCharacter::Read()
WorldPacket const* WorldPackets::Character::CreateChar::Write()
{
_worldPacket << uint8(Code);
+ _worldPacket << Guid;
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 1f4ce11621a..fb5984efc8a 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -56,6 +56,7 @@ namespace WorldPackets
std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay = { };
uint8 OutfitId = 0;
Optional<int32> TemplateSet;
+ bool IsTrialBoost = false;
std::string Name;
/// Server side data
@@ -121,6 +122,7 @@ namespace WorldPackets
CharacterInfo(Field* fields);
ObjectGuid Guid;
+ uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known)
std::string Name;
uint8 ListPosition = 0; ///< Order of the characters in list
uint8 Race = 0;
@@ -170,22 +172,22 @@ namespace WorldPackets
struct RaceUnlock
{
- int32 RaceID;
- bool HasExpansion;
- bool HasAchievement;
- bool HasHeritageArmor;
+ int32 RaceID = 0;
+ bool HasExpansion = false;
+ bool HasAchievement = false;
+ bool HasHeritageArmor = false;
};
EnumCharactersResult() : ServerPacket(SMSG_ENUM_CHARACTERS_RESULT) { }
WorldPacket const* Write() override;
- bool Success = false; ///<
- bool IsDeletedCharacters = false; ///< used for character undelete list
- bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access
- bool HasDemonHunterOnRealm = false;
- bool Unknown7x = false;
- bool IsAlliedRacesCreationAllowed = false;
+ bool Success = false; ///<
+ bool IsDeletedCharacters = false; ///< used for character undelete list
+ bool IsTestDemonHunterCreationAllowed = false; ///< allows client to skip 1 per realm and level 70 requirements
+ bool HasDemonHunterOnRealm = false;
+ bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access
+ bool IsAlliedRacesCreationAllowed = false;
int32 MaxCharacterLevel = 1;
Optional<uint32> DisabledClassesMask;
@@ -225,6 +227,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
uint8 Code = 0; ///< Result code @see enum ResponseCodes
+ ObjectGuid Guid;
};
class CharDelete final : public ClientPacket
@@ -537,7 +540,7 @@ namespace WorldPackets
class InitialSetup final : public ServerPacket
{
public:
- InitialSetup() : ServerPacket(SMSG_INITIAL_SETUP, 1 + 1 + 4 + 4) { }
+ InitialSetup() : ServerPacket(SMSG_INITIAL_SETUP, 1 + 1) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index 26cbd48f7bf..044fe086f48 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -47,32 +47,30 @@ void WorldPackets::Chat::ChatMessageChannel::Read()
Text = _worldPacket.ReadString(textLen);
}
-void WorldPackets::Chat::ChatAddonMessage::Read()
+ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Chat::ChatAddonMessageParams& params)
{
- uint32 prefixLen = _worldPacket.ReadBits(5);
- uint32 textLen = _worldPacket.ReadBits(9);
- Prefix = _worldPacket.ReadString(prefixLen);
- Text = _worldPacket.ReadString(textLen);
+ uint32 prefixLen = data.ReadBits(5);
+ uint32 textLen = data.ReadBits(8);
+ params.IsLogged = data.ReadBit();
+ params.Type = ChatMsg(data.read<int32>());
+ params.Prefix = data.ReadString(prefixLen);
+ params.Text = data.ReadString(textLen);
+
+ return data;
}
-void WorldPackets::Chat::ChatAddonMessageWhisper::Read()
+void WorldPackets::Chat::ChatAddonMessage::Read()
{
- uint32 targetLen = _worldPacket.ReadBits(9);
- uint32 prefixLen = _worldPacket.ReadBits(5);
- uint32 textLen = _worldPacket.ReadBits(9);
- Target = _worldPacket.ReadString(targetLen);
- Prefix = _worldPacket.ReadString(prefixLen);
- Text = _worldPacket.ReadString(textLen);
+ _worldPacket >> Params;
}
-void WorldPackets::Chat::ChatAddonMessageChannel::Read()
+void WorldPackets::Chat::ChatAddonMessageTargeted::Read()
{
uint32 targetLen = _worldPacket.ReadBits(9);
- uint32 prefixLen = _worldPacket.ReadBits(5);
- uint32 textLen = _worldPacket.ReadBits(9);
+ _worldPacket.ResetBitPos();
+
+ _worldPacket >> Params;
Target = _worldPacket.ReadString(targetLen);
- Prefix = _worldPacket.ReadString(prefixLen);
- Text = _worldPacket.ReadString(textLen);
}
void WorldPackets::Chat::ChatMessageDND::Read()
@@ -162,17 +160,17 @@ void WorldPackets::Chat::Chat::SetReceiver(WorldObject const* receiver, LocaleCo
WorldPacket const* WorldPackets::Chat::Chat::Write()
{
- _worldPacket << SlashCmd;
- _worldPacket << _Language;
+ _worldPacket << uint8(SlashCmd);
+ _worldPacket << uint32(_Language);
_worldPacket << SenderGUID;
_worldPacket << SenderGuildGUID;
_worldPacket << SenderAccountGUID;
_worldPacket << TargetGUID;
- _worldPacket << TargetVirtualAddress;
- _worldPacket << SenderVirtualAddress;
+ _worldPacket << uint32(TargetVirtualAddress);
+ _worldPacket << uint32(SenderVirtualAddress);
_worldPacket << PartyGUID;
- _worldPacket << AchievementID;
- _worldPacket << DisplayTime;
+ _worldPacket << uint32(AchievementID);
+ _worldPacket << float(DisplayTime);
_worldPacket.WriteBits(SenderName.length(), 11);
_worldPacket.WriteBits(TargetName.length(), 11);
_worldPacket.WriteBits(Prefix.length(), 5);
@@ -181,6 +179,7 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
_worldPacket.WriteBits(_ChatFlags, 11);
_worldPacket.WriteBit(HideChatLog);
_worldPacket.WriteBit(FakeSenderName);
+ _worldPacket.WriteBit(Unused_801.is_initialized());
_worldPacket.FlushBits();
_worldPacket.WriteString(SenderName);
@@ -189,6 +188,9 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
_worldPacket.WriteString(_Channel);
_worldPacket.WriteString(ChatText);
+ if (Unused_801)
+ _worldPacket << uint32(*Unused_801);
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index 97654aa656e..cbb9da156b0 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -53,7 +53,7 @@ namespace WorldPackets
class ChatMessageWhisper final : public ClientPacket
{
public:
- ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(std::move(packet)) { }
+ ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_MESSAGE_WHISPER, std::move(packet)) { }
void Read() override;
@@ -66,7 +66,7 @@ namespace WorldPackets
class ChatMessageChannel final : public ClientPacket
{
public:
- ChatMessageChannel(WorldPacket&& packet) : ClientPacket(std::move(packet)) { }
+ ChatMessageChannel(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_MESSAGE_CHANNEL, std::move(packet)) { }
void Read() override;
@@ -75,46 +75,35 @@ namespace WorldPackets
std::string Target;
};
- // CMSG_CHAT_ADDON_MESSAGE_GUILD
- // CMSG_CHAT_ADDON_MESSAGE_OFFICER
- // CMSG_CHAT_ADDON_MESSAGE_PARTY
- // CMSG_CHAT_ADDON_MESSAGE_RAID
- // CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT
- class ChatAddonMessage final : public ClientPacket
+ struct ChatAddonMessageParams
{
- public:
- ChatAddonMessage(WorldPacket&& packet) : ClientPacket(std::move(packet)) { }
-
- void Read() override;
-
std::string Prefix;
std::string Text;
+ ChatMsg Type = CHAT_MSG_PARTY;
+ bool IsLogged = false;
};
- // CMSG_CHAT_ADDON_MESSAGE_WHISPER
- class ChatAddonMessageWhisper final : public ClientPacket
+ // CMSG_CHAT_ADDON_MESSAGE
+ class ChatAddonMessage final : public ClientPacket
{
public:
- ChatAddonMessageWhisper(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_WHISPER, std::move(packet)) { }
+ ChatAddonMessage(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE, std::move(packet)) { }
void Read() override;
- std::string Prefix;
- std::string Target;
- std::string Text;
+ ChatAddonMessageParams Params;
};
// CMSG_CHAT_ADDON_MESSAGE_CHANNEL
- class ChatAddonMessageChannel final : public ClientPacket
+ class ChatAddonMessageTargeted final : public ClientPacket
{
public:
- ChatAddonMessageChannel(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_CHANNEL, std::move(packet)) { }
+ ChatAddonMessageTargeted(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_TARGETED, std::move(packet)) { }
void Read() override;
- std::string Text;
std::string Target;
- std::string Prefix;
+ ChatAddonMessageParams Params;
};
class ChatMessageDND final : public ClientPacket
@@ -161,7 +150,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
uint8 SlashCmd = 0; ///< @see enum ChatMsg
- uint8 _Language = LANG_UNIVERSAL;
+ uint32 _Language = LANG_UNIVERSAL;
ObjectGuid SenderGUID;
ObjectGuid SenderGuildGUID;
ObjectGuid SenderAccountGUID;
@@ -177,6 +166,7 @@ namespace WorldPackets
uint32 AchievementID = 0;
uint8 _ChatFlags = 0; ///< @see enum ChatFlags
float DisplayTime = 0.0f;
+ Optional<uint32> Unused_801;
bool HideChatLog = false;
bool FakeSenderName = false;
};
diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp
index 22196336960..243a7fd6e43 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.cpp
+++ b/src/server/game/Server/Packets/CombatLogPackets.cpp
@@ -26,6 +26,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write()
*this << int32(SpellID);
*this << int32(SpellXSpellVisualID);
*this << int32(Damage);
+ *this << int32(OriginalDamage);
*this << int32(Overkill);
*this << uint8(SchoolMask);
*this << int32(Absorbed);
@@ -35,11 +36,11 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write()
WriteBits(Flags, 7);
WriteBit(false); // Debug info
WriteLogDataBit();
- WriteBit(SandboxScaling.is_initialized());
+ WriteBit(ContentTuning.is_initialized());
FlushBits();
WriteLogData();
- if (SandboxScaling)
- *this << *SandboxScaling;
+ if (ContentTuning)
+ *this << *ContentTuning;
return &_worldPacket;
}
@@ -61,12 +62,12 @@ WorldPacket const* WorldPackets::CombatLog::EnvironmentalDamageLog::Write()
WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write()
{
*this << Caster;
- *this << SpellID;
+ *this << int32(SpellID);
*this << uint32(Effects.size());
for (SpellLogEffect const& effect : Effects)
{
- *this << effect.Effect;
+ *this << int32(effect.Effect);
*this << uint32(effect.PowerDrainTargets.size());
*this << uint32(effect.ExtraAttacksTargets.size());
@@ -78,32 +79,32 @@ WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write()
for (SpellLogEffectPowerDrainParams const& powerDrainTarget : effect.PowerDrainTargets)
{
*this << powerDrainTarget.Victim;
- *this << powerDrainTarget.Points;
- *this << powerDrainTarget.PowerType;
- *this << powerDrainTarget.Amplitude;
+ *this << uint32(powerDrainTarget.Points);
+ *this << uint32(powerDrainTarget.PowerType);
+ *this << float(powerDrainTarget.Amplitude);
}
for (SpellLogEffectExtraAttacksParams const& extraAttacksTarget : effect.ExtraAttacksTargets)
{
*this << extraAttacksTarget.Victim;
- *this << extraAttacksTarget.NumAttacks;
+ *this << uint32(extraAttacksTarget.NumAttacks);
}
for (SpellLogEffectDurabilityDamageParams const& durabilityDamageTarget : effect.DurabilityDamageTargets)
{
*this << durabilityDamageTarget.Victim;
- *this << durabilityDamageTarget.ItemID;
- *this << durabilityDamageTarget.Amount;
+ *this << int32(durabilityDamageTarget.ItemID);
+ *this << int32(durabilityDamageTarget.Amount);
}
for (SpellLogEffectGenericVictimParams const& genericVictimTarget : effect.GenericVictimTargets)
*this << genericVictimTarget.Victim;
for (SpellLogEffectTradeSkillItemParams const& tradeSkillTarget : effect.TradeSkillTargets)
- *this << tradeSkillTarget.ItemID;
+ *this << int32(tradeSkillTarget.ItemID);
for (SpellLogEffectFeedPetParams const& feedPetTarget : effect.FeedPetTargets)
- *this << feedPetTarget.ItemID;
+ *this << int32(feedPetTarget.ItemID);
}
WriteLogDataBit();
@@ -119,13 +120,14 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write()
*this << CasterGUID;
*this << int32(SpellID);
*this << int32(Health);
+ *this << int32(OriginalHeal);
*this << int32(OverHeal);
*this << int32(Absorbed);
WriteBit(Crit);
WriteBit(CritRollMade.is_initialized());
WriteBit(CritRollNeeded.is_initialized());
WriteLogDataBit();
- WriteBit(SandboxScaling.is_initialized());
+ WriteBit(ContentTuning.is_initialized());
FlushBits();
WriteLogData();
@@ -136,8 +138,8 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write()
if (CritRollNeeded)
*this << *CritRollNeeded;
- if (SandboxScaling)
- *this << *SandboxScaling;
+ if (ContentTuning)
+ *this << *ContentTuning;
return &_worldPacket;
}
@@ -155,24 +157,24 @@ WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write()
{
*this << int32(effect.Effect);
*this << int32(effect.Amount);
+ *this << int32(effect.OriginalDamage);
*this << int32(effect.OverHealOrKill);
*this << int32(effect.SchoolMaskOrPower);
*this << int32(effect.AbsorbedOrAmplitude);
*this << int32(effect.Resisted);
WriteBit(effect.Crit);
WriteBit(effect.DebugInfo.is_initialized());
- WriteBit(effect.SandboxScaling.is_initialized());
+ WriteBit(effect.ContentTuning.is_initialized());
FlushBits();
- if (effect.SandboxScaling)
- *this << *effect.SandboxScaling;
+ if (effect.ContentTuning)
+ *this << *effect.ContentTuning;
if (effect.DebugInfo)
{
*this << float(effect.DebugInfo->CritRollMade);
*this << float(effect.DebugInfo->CritRollNeeded);
}
-
}
WriteLogData();
@@ -280,6 +282,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellDamageShield::Write()
*this << Defender;
*this << int32(SpellID);
*this << int32(TotalDamage);
+ *this << int32(OriginalDamage);
*this << int32(OverKill);
*this << int32(SchoolMask);
*this << int32(LogAbsorbed);
@@ -297,6 +300,7 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write()
attackRoundInfo << AttackerGUID;
attackRoundInfo << VictimGUID;
attackRoundInfo << int32(Damage);
+ attackRoundInfo << int32(OriginalDamage);
attackRoundInfo << int32(OverDamage);
attackRoundInfo << uint8(SubDmg.is_initialized());
if (SubDmg)
@@ -338,15 +342,16 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write()
if (HitInfo & (HITINFO_BLOCK | HITINFO_UNK12))
attackRoundInfo << float(Unk);
- attackRoundInfo << uint8(SandboxScaling.Type);
- attackRoundInfo << uint8(SandboxScaling.TargetLevel);
- attackRoundInfo << uint8(SandboxScaling.Expansion);
- attackRoundInfo << uint8(SandboxScaling.Class);
- attackRoundInfo << uint8(SandboxScaling.TargetMinScalingLevel);
- attackRoundInfo << uint8(SandboxScaling.TargetMaxScalingLevel);
- attackRoundInfo << int16(SandboxScaling.PlayerLevelDelta);
- attackRoundInfo << int8(SandboxScaling.TargetScalingLevelDelta);
- attackRoundInfo << uint16(SandboxScaling.PlayerItemLevel);
+ attackRoundInfo << uint8(ContentTuning.Type);
+ attackRoundInfo << uint8(ContentTuning.TargetLevel);
+ attackRoundInfo << uint8(ContentTuning.Expansion);
+ attackRoundInfo << uint8(ContentTuning.TargetMinScalingLevel);
+ attackRoundInfo << uint8(ContentTuning.TargetMaxScalingLevel);
+ attackRoundInfo << int16(ContentTuning.PlayerLevelDelta);
+ attackRoundInfo << int8(ContentTuning.TargetScalingLevelDelta);
+ attackRoundInfo << uint16(ContentTuning.PlayerItemLevel);
+ attackRoundInfo << uint16(ContentTuning.ScalingHealthItemLevelCurveID);
+ attackRoundInfo << uint8(ContentTuning.ScalesWithItemLevel ? 1 : 0);
WriteLogDataBit();
FlushBits();
diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h
index 88a427ac962..4f3d1361796 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.h
+++ b/src/server/game/Server/Packets/CombatLogPackets.h
@@ -39,6 +39,7 @@ namespace WorldPackets
int32 SpellID = 0;
int32 SpellXSpellVisualID = 0;
int32 Damage = 0;
+ int32 OriginalDamage = 0;
int32 Overkill = -1;
uint8 SchoolMask = 0;
int32 ShieldBlock = 0;
@@ -47,7 +48,7 @@ namespace WorldPackets
int32 Absorbed = 0;
int32 Flags = 0;
// Optional<SpellNonMeleeDamageLogDebugInfo> DebugInfo;
- Optional<Spells::SandboxScalingData> SandboxScaling;
+ Optional<Spells::ContentTuningParams> ContentTuning;
};
class EnvironmentalDamageLog final : public CombatLogServerPacket
@@ -99,12 +100,13 @@ namespace WorldPackets
ObjectGuid TargetGUID;
int32 SpellID = 0;
int32 Health = 0;
+ int32 OriginalHeal = 0;
int32 OverHeal = 0;
int32 Absorbed = 0;
bool Crit = false;
Optional<float> CritRollMade;
Optional<float> CritRollNeeded;
- Optional<Spells::SandboxScalingData> SandboxScaling;
+ Optional<Spells::ContentTuningParams> ContentTuning;
};
class SpellPeriodicAuraLog final : public CombatLogServerPacket
@@ -120,13 +122,14 @@ namespace WorldPackets
{
int32 Effect = 0;
int32 Amount = 0;
+ int32 OriginalDamage = 0;
int32 OverHealOrKill = 0;
int32 SchoolMaskOrPower = 0;
int32 AbsorbedOrAmplitude = 0;
int32 Resisted = 0;
bool Crit = false;
Optional<PeriodicalAuraLogEffectDebugInfo> DebugInfo;
- Optional<Spells::SandboxScalingData> SandboxScaling;
+ Optional<Spells::ContentTuningParams> ContentTuning;
};
SpellPeriodicAuraLog() : CombatLogServerPacket(SMSG_SPELL_PERIODIC_AURA_LOG, 16 + 16 + 4 + 4 + 1) { }
@@ -267,6 +270,7 @@ namespace WorldPackets
ObjectGuid Defender;
int32 SpellID = 0;
int32 TotalDamage = 0;
+ int32 OriginalDamage = 0;
int32 OverKill = 0;
int32 SchoolMask = 0;
int32 LogAbsorbed = 0;
@@ -308,6 +312,7 @@ namespace WorldPackets
ObjectGuid AttackerGUID;
ObjectGuid VictimGUID;
int32 Damage = 0;
+ int32 OriginalDamage = 0;
int32 OverDamage = -1; // (damage - health) or -1 if unit is still alive
Optional<SubDamage> SubDmg;
uint8 VictimState = 0;
@@ -317,7 +322,7 @@ namespace WorldPackets
int32 RageGained = 0;
UnkAttackerState UnkState;
float Unk = 0.0f;
- Spells::SandboxScalingData SandboxScaling;
+ Spells::ContentTuningParams ContentTuning;
};
}
}
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
index e2f18ace45e..b1e22a3746f 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
@@ -27,6 +27,7 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Unit const* unit)
Health = unit->GetHealth();
AttackPower = unit->GetTotalAttackPowerValue(unit->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK);
SpellPower = unit->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SPELL);
+ Armor = unit->GetArmor();
PowerData.emplace_back(int32(unit->GetPowerType()), unit->GetPower(unit->GetPowerType()), int32(0));
}
@@ -35,6 +36,7 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Spell const* spell)
Health = spell->GetCaster()->GetHealth();
AttackPower = spell->GetCaster()->GetTotalAttackPowerValue(spell->GetCaster()->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK);
SpellPower = spell->GetCaster()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SPELL);
+ Armor = spell->GetCaster()->GetArmor();
Powers primaryPowerType = spell->GetCaster()->GetPowerType();
bool primaryPowerAdded = false;
for (SpellPowerCost const& cost : spell->GetPowerCost())
@@ -53,22 +55,22 @@ namespace WorldPackets
namespace Spells
{
template<class T, class U>
- bool SandboxScalingData::GenerateDataForUnits(T* /*attacker*/, U* /*target*/)
+ bool ContentTuningParams::GenerateDataForUnits(T* /*attacker*/, U* /*target*/)
{
return false;
}
template<>
- bool SandboxScalingData::GenerateDataForUnits<Creature, Player>(Creature* attacker, Player* target)
+ bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* attacker, Player* target)
{
CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate();
Type = TYPE_CREATURE_TO_PLAYER_DAMAGE;
- PlayerLevelDelta = target->GetInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA);
+ PlayerLevelDelta = target->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA);
PlayerItemLevel = target->GetAverageItemLevel();
+ ScalingHealthItemLevelCurveID = target->GetUInt32Value(UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID);
TargetLevel = target->getLevel();
Expansion = creatureTemplate->RequiredExpansion;
- Class = creatureTemplate->unit_class;
TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel);
TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel);
TargetScalingLevelDelta = int8(attacker->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA));
@@ -76,16 +78,16 @@ namespace WorldPackets
}
template<>
- bool SandboxScalingData::GenerateDataForUnits<Player, Creature>(Player* attacker, Creature* target)
+ bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* attacker, Creature* target)
{
CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate();
Type = TYPE_PLAYER_TO_CREATURE_DAMAGE;
- PlayerLevelDelta = attacker->GetInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA);
+ PlayerLevelDelta = attacker->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA);
PlayerItemLevel = attacker->GetAverageItemLevel();
+ ScalingHealthItemLevelCurveID = target->GetUInt32Value(UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID);
TargetLevel = target->getLevel();
Expansion = creatureTemplate->RequiredExpansion;
- Class = creatureTemplate->unit_class;
TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel);
TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel);
TargetScalingLevelDelta = int8(target->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA));
@@ -93,7 +95,7 @@ namespace WorldPackets
}
template<>
- bool SandboxScalingData::GenerateDataForUnits<Creature, Creature>(Creature* attacker, Creature* target)
+ bool ContentTuningParams::GenerateDataForUnits<Creature, Creature>(Creature* attacker, Creature* target)
{
Creature* accessor = target->HasScalableLevels() ? target : attacker;
CreatureTemplate const* creatureTemplate = accessor->GetCreatureTemplate();
@@ -103,7 +105,6 @@ namespace WorldPackets
PlayerItemLevel = 0;
TargetLevel = target->getLevel();
Expansion = creatureTemplate->RequiredExpansion;
- Class = creatureTemplate->unit_class;
TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel);
TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel);
TargetScalingLevelDelta = int8(accessor->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA));
@@ -111,7 +112,7 @@ namespace WorldPackets
}
template<>
- bool SandboxScalingData::GenerateDataForUnits<Unit, Unit>(Unit* attacker, Unit* target)
+ bool ContentTuningParams::GenerateDataForUnits<Unit, Unit>(Unit* attacker, Unit* target)
{
if (Player* playerAttacker = attacker->ToPlayer())
{
@@ -152,6 +153,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData
data << int64(spellCastLogData.Health);
data << int32(spellCastLogData.AttackPower);
data << int32(spellCastLogData.SpellPower);
+ data << int32(spellCastLogData.Armor);
data.WriteBits(spellCastLogData.PowerData.size(), 9);
data.FlushBits();
@@ -165,16 +167,18 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SandboxScalingData const& sandboxScalingData)
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams)
{
- data.WriteBits(sandboxScalingData.Type, 4);
- data << int16(sandboxScalingData.PlayerLevelDelta);
- data << uint16(sandboxScalingData.PlayerItemLevel);
- data << uint8(sandboxScalingData.TargetLevel);
- data << uint8(sandboxScalingData.Expansion);
- data << uint8(sandboxScalingData.Class);
- data << uint8(sandboxScalingData.TargetMinScalingLevel);
- data << uint8(sandboxScalingData.TargetMaxScalingLevel);
- data << int8(sandboxScalingData.TargetScalingLevelDelta);
+ data << int16(contentTuningParams.PlayerLevelDelta);
+ data << uint16(contentTuningParams.PlayerItemLevel);
+ data << uint16(contentTuningParams.ScalingHealthItemLevelCurveID);
+ data << uint8(contentTuningParams.TargetLevel);
+ data << uint8(contentTuningParams.Expansion);
+ data << uint8(contentTuningParams.TargetMinScalingLevel);
+ data << uint8(contentTuningParams.TargetMaxScalingLevel);
+ data << int8(contentTuningParams.TargetScalingLevelDelta);
+ data.WriteBits(contentTuningParams.Type, 4);
+ data.WriteBit(contentTuningParams.ScalesWithItemLevel);
+ data.FlushBits();
return data;
}
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
index 172f94e7031..b30c5fefe34 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
@@ -41,31 +41,34 @@ namespace WorldPackets
int64 Health = 0;
int32 AttackPower = 0;
int32 SpellPower = 0;
+ int32 Armor = 0;
std::vector<SpellLogPowerData> PowerData;
void Initialize(Unit const* unit);
void Initialize(Spell const* spell);
};
- struct SandboxScalingData
+ struct ContentTuningParams
{
- enum SandboxScalingDataType : uint32
+ enum ContentTuningType : uint32
{
- TYPE_PLAYER_TO_PLAYER = 1, // NYI
- TYPE_CREATURE_TO_PLAYER_DAMAGE = 2,
- TYPE_PLAYER_TO_CREATURE_DAMAGE = 3,
+ TYPE_PLAYER_TO_PLAYER = 7, // NYI
+ TYPE_PLAYER_TO_PLAYER_HEALING = 8,
+ TYPE_CREATURE_TO_PLAYER_DAMAGE = 1,
+ TYPE_PLAYER_TO_CREATURE_DAMAGE = 2,
TYPE_CREATURE_TO_CREATURE_DAMAGE = 4
};
uint32 Type = 0;
int16 PlayerLevelDelta = 0;
uint16 PlayerItemLevel = 0;
+ uint16 ScalingHealthItemLevelCurveID = 0;
uint8 TargetLevel = 0;
uint8 Expansion = 0;
- uint8 Class = 0;
uint8 TargetMinScalingLevel = 0;
uint8 TargetMaxScalingLevel = 0;
int8 TargetScalingLevelDelta = 0;
+ bool ScalesWithItemLevel = false;
template<class T, class U>
bool GenerateDataForUnits(T* attacker, U* target);
@@ -126,6 +129,6 @@ namespace WorldPackets
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData const& spellCastLogData);
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SandboxScalingData const& sandboxScalingData);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams);
#endif // CombatLogPacketsCommon_h__
diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp
index 5048595314c..63fc4ac1ed1 100644
--- a/src/server/game/Server/Packets/CombatPackets.cpp
+++ b/src/server/game/Server/Packets/CombatPackets.cpp
@@ -96,7 +96,7 @@ WorldPacket const* WorldPackets::Combat::AIReaction::Write()
WorldPacket const* WorldPackets::Combat::AttackSwingError::Write()
{
- _worldPacket.WriteBits(Reason, 2);
+ _worldPacket.WriteBits(Reason, 3);
_worldPacket.FlushBits();
return &_worldPacket;
}
@@ -107,8 +107,8 @@ WorldPacket const* WorldPackets::Combat::PowerUpdate::Write()
_worldPacket << uint32(Powers.size());
for (PowerUpdatePower const& power : Powers)
{
- _worldPacket << power.Power;
- _worldPacket << power.PowerType;
+ _worldPacket << int32(power.Power);
+ _worldPacket << uint8(power.PowerType);
}
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h
index 446d9f5453b..313d573eae1 100644
--- a/src/server/game/Server/Packets/CombatPackets.h
+++ b/src/server/game/Server/Packets/CombatPackets.h
@@ -41,9 +41,9 @@ namespace WorldPackets
public:
enum AttackSwingErr : uint8
{
- CantAttack = 0,
+ NotInRange = 0,
BadFacing = 1,
- NotInRange = 2,
+ CantAttack = 2,
DeadTarget = 3
};
diff --git a/src/server/game/Server/Packets/DuelPackets.cpp b/src/server/game/Server/Packets/DuelPackets.cpp
index f76ccecaa89..ccee13b731a 100644
--- a/src/server/game/Server/Packets/DuelPackets.cpp
+++ b/src/server/game/Server/Packets/DuelPackets.cpp
@@ -59,6 +59,7 @@ void WorldPackets::Duel::DuelResponse::Read()
{
_worldPacket >> ArbiterGUID;
Accepted = _worldPacket.ReadBit();
+ Forfeited = _worldPacket.ReadBit();
}
WorldPacket const* WorldPackets::Duel::DuelWinner::Write()
diff --git a/src/server/game/Server/Packets/DuelPackets.h b/src/server/game/Server/Packets/DuelPackets.h
index b45a8b42ba7..efa2701741a 100644
--- a/src/server/game/Server/Packets/DuelPackets.h
+++ b/src/server/game/Server/Packets/DuelPackets.h
@@ -103,6 +103,7 @@ namespace WorldPackets
ObjectGuid ArbiterGUID;
bool Accepted = false;
+ bool Forfeited = false;
};
class DuelWinner final : public ServerPacket
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h
index 1dd7040ec32..5c17fdc3cae 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.h
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.h
@@ -28,7 +28,7 @@ namespace WorldPackets
class EquipmentSetID final : public ServerPacket
{
public:
- EquipmentSetID() : ServerPacket(SMSG_EQUIPMENT_SET_ID, 8 + 4) { }
+ EquipmentSetID() : ServerPacket(SMSG_EQUIPMENT_SET_ID, 8 + 4 + 4) { }
WorldPacket const* Write() override;
@@ -89,7 +89,7 @@ namespace WorldPackets
class UseEquipmentSetResult final : public ServerPacket
{
public:
- UseEquipmentSetResult() : ServerPacket(SMSG_USE_EQUIPMENT_SET_RESULT, 1) { }
+ UseEquipmentSetResult() : ServerPacket(SMSG_USE_EQUIPMENT_SET_RESULT, 8 + 1) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h
index a7bd016909c..bf83f006b1e 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.h
+++ b/src/server/game/Server/Packets/GarrisonPackets.h
@@ -249,7 +249,7 @@ namespace WorldPackets
class GarrisonLearnBlueprintResult final : public ServerPacket
{
public:
- GarrisonLearnBlueprintResult() : ServerPacket(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 4 + 4) { }
+ GarrisonLearnBlueprintResult() : ServerPacket(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 4 + 4 + 4) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/GuildFinderPackets.cpp b/src/server/game/Server/Packets/GuildFinderPackets.cpp
index ac8bcfea9df..2ce269fbdcb 100644
--- a/src/server/game/Server/Packets/GuildFinderPackets.cpp
+++ b/src/server/game/Server/Packets/GuildFinderPackets.cpp
@@ -108,7 +108,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::GuildFinder::GuildPostDat
data << int32(post.Availability);
data << int32(post.ClassRoles);
data << int32(post.LevelRange);
- data << uint32(post.SecondsRemaining);
+ data << int32(post.SecondsRemaining);
data.WriteString(post.Comment);
return data;
}
diff --git a/src/server/game/Server/Packets/GuildFinderPackets.h b/src/server/game/Server/Packets/GuildFinderPackets.h
index 1fe3183156a..94084934fc1 100644
--- a/src/server/game/Server/Packets/GuildFinderPackets.h
+++ b/src/server/game/Server/Packets/GuildFinderPackets.h
@@ -157,7 +157,7 @@ namespace WorldPackets
int32 Availability = 0;
int32 ClassRoles = 0;
int32 LevelRange = 0;
- time_t SecondsRemaining = time_t(0);
+ int32 SecondsRemaining = 0;
std::string Comment;
};
diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp
index 777891b3cef..2a3739f2470 100644
--- a/src/server/game/Server/Packets/GuildPackets.cpp
+++ b/src/server/game/Server/Packets/GuildPackets.cpp
@@ -63,9 +63,9 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write()
WorldPacket const* WorldPackets::Guild::GuildRoster::Write()
{
- _worldPacket << NumAccounts;
+ _worldPacket << int32(NumAccounts);
_worldPacket.AppendPackedTime(CreateDate);
- _worldPacket << GuildFlags;
+ _worldPacket << int32(GuildFlags);
_worldPacket << uint32(MemberData.size());
_worldPacket.WriteBits(WelcomeText.length(), 10);
_worldPacket.WriteBits(InfoText.length(), 11);
@@ -98,8 +98,8 @@ void WorldPackets::Guild::GuildUpdateMotdText::Read()
WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write()
{
- _worldPacket << Result;
- _worldPacket << Command;
+ _worldPacket << int32(Result);
+ _worldPacket << int32(Command);
_worldPacket.WriteBits(Name.length(), 8);
_worldPacket.FlushBits();
@@ -127,17 +127,17 @@ WorldPacket const* WorldPackets::Guild::GuildInvite::Write()
_worldPacket.WriteBits(OldGuildName.length(), 7);
_worldPacket.FlushBits();
- _worldPacket << InviterVirtualRealmAddress;
- _worldPacket << GuildVirtualRealmAddress;
+ _worldPacket << uint32(InviterVirtualRealmAddress);
+ _worldPacket << uint32(GuildVirtualRealmAddress);
_worldPacket << GuildGUID;
- _worldPacket << OldGuildVirtualRealmAddress;
+ _worldPacket << uint32(OldGuildVirtualRealmAddress);
_worldPacket << OldGuildGUID;
- _worldPacket << EmblemStyle;
- _worldPacket << EmblemColor;
- _worldPacket << BorderStyle;
- _worldPacket << BorderColor;
- _worldPacket << Background;
- _worldPacket << AchievementPoints;
+ _worldPacket << uint32(EmblemStyle);
+ _worldPacket << uint32(EmblemColor);
+ _worldPacket << uint32(BorderStyle);
+ _worldPacket << uint32(BorderColor);
+ _worldPacket << uint32(Background);
+ _worldPacket << int32(AchievementPoints);
_worldPacket.WriteString(InviterName);
_worldPacket.WriteString(GuildName);
@@ -148,9 +148,9 @@ WorldPacket const* WorldPackets::Guild::GuildInvite::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfessionData const& rosterProfessionData)
{
- data << rosterProfessionData.DbID;
- data << rosterProfessionData.Rank;
- data << rosterProfessionData.Step;
+ data << int32(rosterProfessionData.DbID);
+ data << int32(rosterProfessionData.Rank);
+ data << int32(rosterProfessionData.Step);
return data;
}
@@ -158,20 +158,20 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfess
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberData const& rosterMemberData)
{
data << rosterMemberData.Guid;
- data << rosterMemberData.RankID;
- data << rosterMemberData.AreaID;
- data << rosterMemberData.PersonalAchievementPoints;
- data << rosterMemberData.GuildReputation;
- data << rosterMemberData.LastSave;
+ data << int32(rosterMemberData.RankID);
+ data << int32(rosterMemberData.AreaID);
+ data << int32(rosterMemberData.PersonalAchievementPoints);
+ data << int32(rosterMemberData.GuildReputation);
+ data << float(rosterMemberData.LastSave);
for (uint8 i = 0; i < 2; i++)
data << rosterMemberData.Profession[i];
- data << rosterMemberData.VirtualRealmAddress;
- data << rosterMemberData.Status;
- data << rosterMemberData.Level;
- data << rosterMemberData.ClassID;
- data << rosterMemberData.Gender;
+ data << uint32(rosterMemberData.VirtualRealmAddress);
+ data << uint8(rosterMemberData.Status);
+ data << uint8(rosterMemberData.Level);
+ data << uint8(rosterMemberData.ClassID);
+ data << uint8(rosterMemberData.Gender);
data.WriteBits(rosterMemberData.Name.length(), 6);
data.WriteBits(rosterMemberData.Note.length(), 8);
@@ -190,7 +190,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberD
WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write()
{
_worldPacket << Guid;
- _worldPacket << VirtualRealmAddress;
+ _worldPacket << uint32(VirtualRealmAddress);
_worldPacket.WriteBits(Name.length(), 6);
_worldPacket.WriteBit(LoggedOn);
@@ -215,7 +215,7 @@ WorldPacket const* WorldPackets::Guild::GuildEventMotd::Write()
WorldPacket const* WorldPackets::Guild::GuildEventPlayerJoined::Write()
{
_worldPacket << Guid;
- _worldPacket << VirtualRealmAddress;
+ _worldPacket << uint32(VirtualRealmAddress);
_worldPacket.WriteBits(Name.length(), 6);
_worldPacket.FlushBits();
@@ -249,9 +249,9 @@ WorldPacket const* WorldPackets::Guild::GuildEventLogQueryResults::Write()
{
_worldPacket << entry.PlayerGUID;
_worldPacket << entry.OtherGUID;
- _worldPacket << entry.TransactionType;
- _worldPacket << entry.RankID;
- _worldPacket << entry.TransactionDate;
+ _worldPacket << uint8(entry.TransactionType);
+ _worldPacket << uint8(entry.RankID);
+ _worldPacket << uint32(entry.TransactionDate);
}
return &_worldPacket;
@@ -269,12 +269,12 @@ WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write()
_worldPacket.FlushBits();
_worldPacket << RemoverGUID;
- _worldPacket << RemoverVirtualRealmAddress;
+ _worldPacket << uint32(RemoverVirtualRealmAddress);
_worldPacket.WriteString(RemoverName);
}
_worldPacket << LeaverGUID;
- _worldPacket << LeaverVirtualRealmAddress;
+ _worldPacket << uint32(LeaverVirtualRealmAddress);
_worldPacket.WriteString(LeaverName);
return &_worldPacket;
@@ -282,16 +282,16 @@ WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write()
WorldPacket const* WorldPackets::Guild::GuildPermissionsQueryResults::Write()
{
- _worldPacket << RankID;
- _worldPacket << WithdrawGoldLimit;
- _worldPacket << Flags;
- _worldPacket << NumTabs;
+ _worldPacket << uint32(RankID);
+ _worldPacket << int32(WithdrawGoldLimit);
+ _worldPacket << int32(Flags);
+ _worldPacket << int32(NumTabs);
_worldPacket << uint32(Tab.size());
for (GuildRankTabPermissions const& tab : Tab)
{
- _worldPacket << tab.Flags;
- _worldPacket << tab.WithdrawItemLimit;
+ _worldPacket << int32(tab.Flags);
+ _worldPacket << int32(tab.WithdrawItemLimit);
}
return &_worldPacket;
@@ -325,9 +325,9 @@ WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write()
_worldPacket.FlushBits();
_worldPacket << OldLeaderGUID;
- _worldPacket << OldLeaderVirtualRealmAddress;
+ _worldPacket << uint32(OldLeaderVirtualRealmAddress);
_worldPacket << NewLeaderGUID;
- _worldPacket << NewLeaderVirtualRealmAddress;
+ _worldPacket << uint32(NewLeaderVirtualRealmAddress);
_worldPacket.WriteString(OldLeaderName);
_worldPacket.WriteString(NewLeaderName);
@@ -337,7 +337,7 @@ WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write()
WorldPacket const* WorldPackets::Guild::GuildEventTabModified::Write()
{
- _worldPacket << Tab;
+ _worldPacket << int32(Tab);
_worldPacket.WriteBits(Name.length(), 7);
_worldPacket.WriteBits(Icon.length(), 9);
@@ -358,15 +358,15 @@ WorldPacket const* WorldPackets::Guild::GuildEventTabTextChanged::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRankData const& rankData)
{
- data << rankData.RankID;
- data << rankData.RankOrder;
- data << rankData.Flags;
- data << rankData.WithdrawGoldLimit;
+ data << uint32(rankData.RankID);
+ data << uint32(rankData.RankOrder);
+ data << uint32(rankData.Flags);
+ data << uint32(rankData.WithdrawGoldLimit);
for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++)
{
- data << rankData.TabFlags[i];
- data << rankData.TabWithdrawItemLimit[i];
+ data << uint32(rankData.TabFlags[i]);
+ data << uint32(rankData.TabWithdrawItemLimit[i]);
}
data.WriteBits(rankData.RankName.length(), 7);
@@ -416,7 +416,7 @@ WorldPacket const* WorldPackets::Guild::GuildSendRankChange::Write()
{
_worldPacket << Officer;
_worldPacket << Other;
- _worldPacket << RankID;
+ _worldPacket << uint32(RankID);
_worldPacket.WriteBit(Promote);
_worldPacket.FlushBits();
@@ -499,25 +499,25 @@ WorldPacket const* WorldPackets::Guild::GuildPartyState::Write()
_worldPacket.WriteBit(InGuildParty);
_worldPacket.FlushBits();
- _worldPacket << NumMembers;
- _worldPacket << NumRequired;
- _worldPacket << GuildXPEarnedMult;
+ _worldPacket << int32(NumMembers);
+ _worldPacket << int32(NumRequired);
+ _worldPacket << float(GuildXPEarnedMult);
return &_worldPacket;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem)
{
- data << rewardItem.ItemID;
- data << rewardItem.Unk4;
+ data << uint32(rewardItem.ItemID);
+ data << uint32(rewardItem.Unk4);
data << uint32(rewardItem.AchievementsRequired.size());
data << uint64(rewardItem.RaceMask);
- data << rewardItem.MinGuildLevel;
- data << rewardItem.MinGuildRep;
- data << rewardItem.Cost;
+ data << int32(rewardItem.MinGuildLevel);
+ data << int32(rewardItem.MinGuildRep);
+ data << uint64(rewardItem.Cost);
- for (uint8 i = 0; i < rewardItem.AchievementsRequired.size(); i++)
- data << rewardItem.AchievementsRequired[i];
+ for (std::size_t i = 0; i < rewardItem.AchievementsRequired.size(); i++)
+ data << uint32(rewardItem.AchievementsRequired[i]);
return data;
}
@@ -529,7 +529,7 @@ void WorldPackets::Guild::RequestGuildRewardsList::Read()
WorldPacket const* WorldPackets::Guild::GuildRewardList::Write()
{
- _worldPacket << Version;
+ _worldPacket << int32(Version);
_worldPacket << uint32(RewardItems.size());
for (GuildRewardItem const& item : RewardItems)
@@ -592,9 +592,9 @@ void WorldPackets::Guild::GuildBankWithdrawMoney::Read()
WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write()
{
- _worldPacket << Money;
- _worldPacket << Tab;
- _worldPacket << WithdrawalsRemaining;
+ _worldPacket << uint64(Money);
+ _worldPacket << int32(Tab);
+ _worldPacket << int32(WithdrawalsRemaining);
_worldPacket << uint32(TabInfo.size());
_worldPacket << uint32(ItemInfo.size());
_worldPacket.WriteBit(FullUpdate);
@@ -602,7 +602,7 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write()
for (GuildBankTabInfo const& tab : TabInfo)
{
- _worldPacket << tab.TabIndex;
+ _worldPacket << int32(tab.TabIndex);
_worldPacket.WriteBits(tab.Name.length(), 7);
_worldPacket.WriteBits(tab.Icon.length(), 9);
_worldPacket.FlushBits();
@@ -613,12 +613,12 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write()
for (GuildBankItemInfo const& item : ItemInfo)
{
- _worldPacket << item.Slot;
- _worldPacket << item.Count;
- _worldPacket << item.EnchantmentID;
- _worldPacket << item.Charges;
- _worldPacket << item.OnUseEnchantmentID;
- _worldPacket << item.Flags;
+ _worldPacket << int32(item.Slot);
+ _worldPacket << int32(item.Count);
+ _worldPacket << int32(item.EnchantmentID);
+ _worldPacket << int32(item.Charges);
+ _worldPacket << int32(item.OnUseEnchantmentID);
+ _worldPacket << int32(item.Flags);
_worldPacket << item.Item;
_worldPacket.WriteBits(item.SocketEnchant.size(), 2);
_worldPacket.WriteBit(item.Locked);
@@ -658,7 +658,7 @@ void WorldPackets::Guild::GuildBankLogQuery::Read()
WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write()
{
- _worldPacket << Tab;
+ _worldPacket << int32(Tab);
_worldPacket << uint32(Entry.size());
_worldPacket.WriteBit(WeeklyBonusMoney.is_initialized());
_worldPacket.FlushBits();
@@ -666,8 +666,8 @@ WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write()
for (GuildBankLogEntry const& logEntry : Entry)
{
_worldPacket << logEntry.PlayerGUID;
- _worldPacket << logEntry.TimeOffset;
- _worldPacket << logEntry.EntryType;
+ _worldPacket << uint32(logEntry.TimeOffset);
+ _worldPacket << int8(logEntry.EntryType);
_worldPacket.WriteBit(logEntry.Money.is_initialized());
_worldPacket.WriteBit(logEntry.ItemID.is_initialized());
@@ -676,20 +676,20 @@ WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write()
_worldPacket.FlushBits();
if (logEntry.Money.is_initialized())
- _worldPacket << *logEntry.Money;
+ _worldPacket << uint64(*logEntry.Money);
if (logEntry.ItemID.is_initialized())
- _worldPacket << *logEntry.ItemID;
+ _worldPacket << int32(*logEntry.ItemID);
if (logEntry.Count.is_initialized())
- _worldPacket << *logEntry.Count;
+ _worldPacket << int32(*logEntry.Count);
if (logEntry.OtherTab.is_initialized())
- _worldPacket << *logEntry.OtherTab;
+ _worldPacket << int8(*logEntry.OtherTab);
}
if (WeeklyBonusMoney)
- _worldPacket << *WeeklyBonusMoney;
+ _worldPacket << uint64(*WeeklyBonusMoney);
return &_worldPacket;
}
@@ -701,7 +701,7 @@ void WorldPackets::Guild::GuildBankTextQuery::Read()
WorldPacket const* WorldPackets::Guild::GuildBankTextQueryResult::Write()
{
- _worldPacket << Tab;
+ _worldPacket << int32(Tab);
_worldPacket.WriteBits(Text.length(), 14);
_worldPacket.FlushBits();
@@ -724,13 +724,13 @@ void WorldPackets::Guild::GuildQueryNews::Read()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildNewsEvent const& newsEvent)
{
- data << newsEvent.Id;
+ data << int32(newsEvent.Id);
data.AppendPackedTime(newsEvent.CompletedDate);
- data << newsEvent.Type;
- data << newsEvent.Flags;
+ data << int32(newsEvent.Type);
+ data << int32(newsEvent.Flags);
- for (uint8 i = 0; i < 2; i++)
- data << newsEvent.Data[i];
+ for (std::size_t i = 0; i < newsEvent.Data.size(); ++i)
+ data << int32(newsEvent.Data[i]);
data << newsEvent.MemberGuid;
data << uint32(newsEvent.MemberList.size());
diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h
index 350ff772000..844dba91f5c 100644
--- a/src/server/game/Server/Packets/GuildPackets.h
+++ b/src/server/game/Server/Packets/GuildPackets.h
@@ -432,11 +432,11 @@ namespace WorldPackets
int32 RankID = 0;
int32 RankOrder = 0;
- int32 WithdrawGoldLimit = 0;
+ uint32 WithdrawGoldLimit = 0;
uint32 Flags = 0;
uint32 OldFlags = 0;
- int32 TabFlags[GUILD_BANK_MAX_TABS];
- int32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS];
+ uint32 TabFlags[GUILD_BANK_MAX_TABS];
+ uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS];
std::string RankName;
};
@@ -687,7 +687,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
std::vector<GuildRewardItem> RewardItems;
- uint32 Version = 0;
+ int32 Version = 0;
};
class GuildBankActivate final : public ClientPacket
@@ -813,10 +813,11 @@ namespace WorldPackets
bool FullUpdate = false;
};
+ // TODO: research new guild bank opcodes
class GuildBankSwapItems final : public ClientPacket
{
public:
- GuildBankSwapItems(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_SWAP_ITEMS, std::move(packet)) { }
+ GuildBankSwapItems(WorldPacket&& packet) : ClientPacket(std::move(packet)) { }
void Read() override;
@@ -917,9 +918,9 @@ namespace WorldPackets
uint32 CompletedDate = 0;
int32 Type = 0;
int32 Flags = 0;
- int32 Data[2];
+ std::array<int32, 2> Data;
ObjectGuid MemberGuid;
- GuidList MemberList;
+ std::vector<ObjectGuid> MemberList;
Optional<Item::ItemInstance> Item;
};
diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp
index df9b540e164..04fc01ad669 100644
--- a/src/server/game/Server/Packets/InspectPackets.cpp
+++ b/src/server/game/Server/Packets/InspectPackets.cpp
@@ -35,6 +35,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectItemData
{
data << itemData.CreatorGUID;
data << uint8(itemData.Index);
+ data << uint32(itemData.AzeritePowers.size());
+ if (!itemData.AzeritePowers.empty())
+ data.append(itemData.AzeritePowers.data(), itemData.AzeritePowers.size());
+
data << itemData.Item;
data.WriteBit(itemData.Usable);
data.WriteBits(itemData.Enchants.size(), 4);
@@ -76,10 +80,11 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint
{
if (gemData.ItemId)
{
- WorldPackets::Item::ItemGemData gem;
+ Gems.emplace_back();
+
+ WorldPackets::Item::ItemGemData& gem = Gems.back();
gem.Slot = i;
gem.Item.Initialize(&gemData);
- Gems.push_back(gem);
}
++i;
}
@@ -103,6 +108,7 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write()
_worldPacket.append(PvpTalents.data(), PvpTalents.size());
_worldPacket.WriteBit(GuildData.is_initialized());
+ _worldPacket.WriteBit(AzeriteLevel.is_initialized());
_worldPacket.FlushBits();
for (size_t i = 0; i < Items.size(); ++i)
@@ -111,6 +117,9 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write()
if (GuildData)
_worldPacket << *GuildData;
+ if (AzeriteLevel)
+ _worldPacket << int32(*AzeriteLevel);
+
return &_worldPacket;
}
@@ -138,6 +147,7 @@ void WorldPackets::Inspect::InspectPVPRequest::Read()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData const& bracket)
{
+ data << uint8(bracket.Bracket);
data << int32(bracket.Rating);
data << int32(bracket.Rank);
data << int32(bracket.WeeklyPlayed);
@@ -146,7 +156,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData c
data << int32(bracket.SeasonWon);
data << int32(bracket.WeeklyBestRating);
data << int32(bracket.Unk710);
- data << uint8(bracket.Bracket);
+ data << int32(bracket.Unk801_1);
+ data.WriteBit(bracket.Unk801_2);
+ data.FlushBits();
return data;
}
diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h
index 7bf6b0baa2a..c6437f182f7 100644
--- a/src/server/game/Server/Packets/InspectPackets.h
+++ b/src/server/game/Server/Packets/InspectPackets.h
@@ -56,6 +56,7 @@ namespace WorldPackets
bool Usable = false;
std::vector<InspectEnchantData> Enchants;
std::vector<Item::ItemGemData> Gems;
+ std::vector<int32> AzeritePowers;
};
struct InspectGuildData
@@ -68,7 +69,10 @@ namespace WorldPackets
class InspectResult final : public ServerPacket
{
public:
- InspectResult() : ServerPacket(SMSG_INSPECT_RESULT, 45) { }
+ InspectResult() : ServerPacket(SMSG_INSPECT_RESULT, 45)
+ {
+ PvpTalents.fill(0);
+ }
WorldPacket const* Write() override;
@@ -76,11 +80,12 @@ namespace WorldPackets
std::vector<InspectItemData> Items;
std::vector<uint16> Glyphs;
std::vector<uint16> Talents;
- std::vector<uint16> PvpTalents;
+ std::array<uint16, MAX_PVP_TALENT_SLOTS> PvpTalents;
int32 ClassID = CLASS_NONE;
int32 GenderID = GENDER_NONE;
Optional<InspectGuildData> GuildData;
int32 SpecializationID = 0;
+ Optional<int32> AzeriteLevel;
};
class RequestHonorStats final : public ClientPacket
@@ -128,7 +133,9 @@ namespace WorldPackets
int32 SeasonWon = 0;
int32 WeeklyBestRating = 0;
int32 Unk710 = 0;
+ int32 Unk801_1 = 0;
uint8 Bracket = 0;
+ bool Unk801_2 = false;
};
class InspectPVPResponse final : public ServerPacket
diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp
index 0a6e29e6838..258aa24bd1f 100644
--- a/src/server/game/Server/Packets/InstancePackets.cpp
+++ b/src/server/game/Server/Packets/InstancePackets.cpp
@@ -31,23 +31,13 @@ WorldPacket const* WorldPackets::Instance::UpdateInstanceOwnership::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Instance::InstanceInfo::Write()
-{
- _worldPacket << int32(LockList.size());
-
- for (InstanceLockInfos const& lockInfos : LockList)
- _worldPacket << lockInfos;
-
- return &_worldPacket;
-}
-
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos)
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLock const& lockInfos)
{
- data << lockInfos.MapID;
- data << lockInfos.DifficultyID;
- data << lockInfos.InstanceID;
- data << lockInfos.TimeRemaining;
- data << lockInfos.CompletedMask;
+ data << uint32(lockInfos.MapID);
+ data << uint32(lockInfos.DifficultyID);
+ data << uint64(lockInfos.InstanceID);
+ data << uint32(lockInfos.TimeRemaining);
+ data << uint32(lockInfos.CompletedMask);
data.WriteBit(lockInfos.Locked);
data.WriteBit(lockInfos.Extended);
@@ -57,6 +47,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInf
return data;
}
+WorldPacket const* WorldPackets::Instance::InstanceInfo::Write()
+{
+ _worldPacket << int32(LockList.size());
+
+ for (InstanceLock const& instanceLock : LockList)
+ _worldPacket << instanceLock;
+
+ return &_worldPacket;
+}
+
WorldPacket const* WorldPackets::Instance::InstanceReset::Write()
{
_worldPacket << uint32(MapID);
diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h
index f13e046906e..0869a137926 100644
--- a/src/server/game/Server/Packets/InstancePackets.h
+++ b/src/server/game/Server/Packets/InstancePackets.h
@@ -47,7 +47,7 @@ namespace WorldPackets
// but it has been deperecated in favor of simply checking group leader, being inside an instance or using dungeon finder
};
- struct InstanceLockInfos
+ struct InstanceLock
{
uint64 InstanceID = 0u;
uint32 MapID = 0u;
@@ -66,7 +66,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- std::vector<InstanceLockInfos> LockList;
+ std::vector<InstanceLock> LockList;
};
class ResetInstances final : public ClientPacket
@@ -90,7 +90,7 @@ namespace WorldPackets
class InstanceResetFailed final : public ServerPacket
{
public:
- InstanceResetFailed() : ServerPacket(SMSG_INSTANCE_RESET_FAILED, 4 + 4) { }
+ InstanceResetFailed() : ServerPacket(SMSG_INSTANCE_RESET_FAILED, 4 + 1) { }
WorldPacket const* Write() override;
@@ -248,6 +248,4 @@ namespace WorldPackets
}
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos);
-
#endif // InstancePackets_h__
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index 87599873de5..55f4274eefc 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -280,7 +280,7 @@ WorldPacket const* WorldPackets::Item::ReadItemResultFailed::Write()
{
_worldPacket << Item;
_worldPacket << uint32(Delay);
- _worldPacket.WriteBits(Subcode, 3);
+ _worldPacket.WriteBits(Subcode, 2);
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp
index 5b8d66afd6a..1ec2dec7804 100644
--- a/src/server/game/Server/Packets/LFGPackets.cpp
+++ b/src/server/game/Server/Packets/LFGPackets.cpp
@@ -311,10 +311,15 @@ WorldPacket const* WorldPackets::LFG::LFGQueueStatus::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGPlayerRewards const& lfgPlayerRewards)
{
- data << int32(lfgPlayerRewards.RewardItem);
- data << uint32(lfgPlayerRewards.RewardItemQuantity);
- data << int32(lfgPlayerRewards.BonusCurrency);
- data.WriteBit(lfgPlayerRewards.IsCurrency);
+ data.WriteBit(lfgPlayerRewards.RewardItem.is_initialized());
+ data.WriteBit(lfgPlayerRewards.RewardCurrency.is_initialized());
+ if (lfgPlayerRewards.RewardItem)
+ data << *lfgPlayerRewards.RewardItem;
+
+ data << uint32(lfgPlayerRewards.Quantity);
+ data << int32(lfgPlayerRewards.BonusQuantity);
+ if (lfgPlayerRewards.RewardCurrency)
+ data << int32(*lfgPlayerRewards.RewardCurrency);
return data;
}
diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h
index 9e1c513aece..2b31074094d 100644
--- a/src/server/game/Server/Packets/LFGPackets.h
+++ b/src/server/game/Server/Packets/LFGPackets.h
@@ -20,6 +20,7 @@
#include "Packet.h"
#include "PacketUtilities.h"
+#include "ItemPacketsCommon.h"
#include "LFGPacketsCommon.h"
#include "Optional.h"
@@ -325,13 +326,24 @@ namespace WorldPackets
struct LFGPlayerRewards
{
LFGPlayerRewards() { }
- LFGPlayerRewards(int32 rewardItem, uint32 rewardItemQuantity, int32 bonusCurrency, bool isCurrency)
- : RewardItem(rewardItem), RewardItemQuantity(rewardItemQuantity), BonusCurrency(bonusCurrency), IsCurrency(isCurrency) { }
-
- int32 RewardItem = 0;
- uint32 RewardItemQuantity = 0;
- int32 BonusCurrency = 0;
- bool IsCurrency = false;
+ LFGPlayerRewards(int32 id, uint32 quantity, int32 bonusQuantity, bool isCurrency)
+ : Quantity(quantity), BonusQuantity(bonusQuantity)
+ {
+ if (!isCurrency)
+ {
+ RewardItem = boost::in_place();
+ RewardItem->ItemID = id;
+ }
+ else
+ {
+ RewardCurrency = id;
+ }
+ }
+
+ Optional<Item::ItemInstance> RewardItem;
+ Optional<int32> RewardCurrency;
+ uint32 Quantity = 0;
+ int32 BonusQuantity = 0;
};
class LFGPlayerReward final : public ServerPacket
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index a03f1ff35fc..9f98092d091 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -346,7 +346,8 @@ WorldPacket const* WorldPackets::Misc::LevelUpInfo::Write()
for (int32 stat : StatDelta)
_worldPacket << stat;
- _worldPacket << int32(Cp);
+ _worldPacket << int32(NumNewTalents);
+ _worldPacket << int32(NumNewPvpTalentSlots);
return &_worldPacket;
}
@@ -404,11 +405,11 @@ WorldPacket const* WorldPackets::Misc::PhaseShiftChange::Write()
_worldPacket << uint32(PreloadMapIDs.size() * 2); // size in bytes
for (uint16 preloadMapId : PreloadMapIDs)
- _worldPacket << uint16(preloadMapId); // Inactive terrain swap map id
+ _worldPacket << uint16(preloadMapId); // Inactive terrain swap map id
- _worldPacket << uint32(UiWorldMapAreaIDSwaps.size() * 2); // size in bytes
- for (uint16 uiWorldMapAreaIDSwap : UiWorldMapAreaIDSwaps)
- _worldPacket << uint16(uiWorldMapAreaIDSwap); // UI map id, WorldMapArea.db2, controls map display
+ _worldPacket << uint32(UiMapPhaseIDs.size() * 2); // size in bytes
+ for (uint16 uiMapPhaseId : UiMapPhaseIDs)
+ _worldPacket << uint16(uiMapPhaseId); // phase id, controls only map display (visible on all maps)
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 26affbaf934..df9c99e063b 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -258,7 +258,7 @@ namespace WorldPackets
void Read() override;
- int32 DifficultyID = 0;
+ uint32 DifficultyID = 0;
};
class SetRaidDifficulty final : public ClientPacket
@@ -480,7 +480,8 @@ namespace WorldPackets
int32 HealthDelta = 0;
std::array<int32, 6> PowerDelta = { };
std::array<int32, MAX_STATS> StatDelta = { };
- int32 Cp = 0;
+ int32 NumNewTalents = 0;
+ int32 NumNewPvpTalentSlots = 0;
};
class PlayMusic final : public ServerPacket
@@ -551,7 +552,7 @@ namespace WorldPackets
ObjectGuid Client;
PhaseShiftData Phaseshift;
std::vector<uint16> PreloadMapIDs;
- std::vector<uint16> UiWorldMapAreaIDSwaps;
+ std::vector<uint16> UiMapPhaseIDs;
std::vector<uint16> VisibleMapIDs;
};
@@ -878,14 +879,6 @@ namespace WorldPackets
bool IsFavorite = false;
};
- class PvpPrestigeRankUp final : public ClientPacket
- {
- public:
- PvpPrestigeRankUp(WorldPacket&& packet) : ClientPacket(CMSG_PVP_PRESTIGE_RANK_UP, std::move(packet)) { }
-
- void Read() override { }
- };
-
class CloseInteraction final : public ClientPacket
{
public:
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 38a7f8f68fd..3dd719f46b0 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -213,6 +213,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineSp
data << uint32(spellEffectExtraData.SpellVisualID);
data << uint32(spellEffectExtraData.ProgressCurveID);
data << uint32(spellEffectExtraData.ParabolicCurveID);
+ data << float(spellEffectExtraData.JumpGravity);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineJumpExtraData const& jumpExtraData)
+{
+ data << float(jumpExtraData.JumpGravity);
+ data << uint32(jumpExtraData.StartTime);
+ data << uint32(jumpExtraData.Duration);
return data;
}
@@ -224,8 +234,7 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline
data << uint32(movementSpline.TierTransStartTime);
data << int32(movementSpline.Elapsed);
data << uint32(movementSpline.MoveTime);
- data << float(movementSpline.JumpGravity);
- data << uint32(movementSpline.SpecialTime);
+ data << uint32(movementSpline.FadeObjectTime);
data << uint8(movementSpline.Mode);
data << uint8(movementSpline.VehicleExitVoluntary);
data << movementSpline.TransportGUID;
@@ -235,6 +244,7 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline
data.WriteBits(movementSpline.PackedDeltas.size(), 16);
data.WriteBit(movementSpline.SplineFilter.is_initialized());
data.WriteBit(movementSpline.SpellEffectExtraData.is_initialized());
+ data.WriteBit(movementSpline.JumpExtraData.is_initialized());
data.FlushBits();
if (movementSpline.SplineFilter)
@@ -262,6 +272,9 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline
if (movementSpline.SpellEffectExtraData)
data << *movementSpline.SpellEffectExtraData;
+ if (movementSpline.JumpExtraData)
+ data << *movementSpline.JumpExtraData;
+
return data;
}
@@ -300,12 +313,12 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
data << float(1.0f); // DurationModifier
data << float(1.0f); // NextDurationModifier
data.WriteBits(moveSpline.facing.type, 2); // Face
- bool HasJumpGravity = data.WriteBit(moveSpline.splineflags.parabolic || moveSpline.splineflags.animation); // HasJumpGravity
- bool HasSpecialTime = data.WriteBit(moveSpline.splineflags.parabolic && moveSpline.effect_start_time < moveSpline.Duration()); // HasSpecialTime
+ bool hasFadeObjectTime = data.WriteBit(moveSpline.splineflags.fadeObject && moveSpline.effect_start_time < moveSpline.Duration());
data.WriteBits(moveSpline.getPath().size(), 16);
data.WriteBits(uint8(moveSpline.spline.mode()), 2); // Mode
data.WriteBit(0); // HasSplineFilter
data.WriteBit(moveSpline.spell_effect_extra.is_initialized()); // HasSpellEffectExtraData
+ data.WriteBit(moveSpline.splineflags.parabolic); // HasJumpExtraData
data.FlushBits();
//if (HasSplineFilterKey)
@@ -341,11 +354,8 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
break;
}
- if (HasJumpGravity)
- data << float(moveSpline.vertical_acceleration); // JumpGravity
-
- if (HasSpecialTime)
- data << uint32(moveSpline.effect_start_time); // SpecialTime
+ if (hasFadeObjectTime)
+ data << uint32(moveSpline.effect_start_time); // FadeObjectTime
data.append(moveSpline.getPath().data(), moveSpline.getPath().size());
@@ -355,6 +365,14 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
data << uint32(moveSpline.spell_effect_extra->SpellVisualId);
data << uint32(moveSpline.spell_effect_extra->ProgressCurveId);
data << uint32(moveSpline.spell_effect_extra->ParabolicCurveId);
+ data << float(moveSpline.vertical_acceleration);
+ }
+
+ if (moveSpline.splineflags.parabolic)
+ {
+ data << float(moveSpline.vertical_acceleration);
+ data << uint32(moveSpline.effect_start_time);
+ data << uint32(0); // Duration (override)
}
}
}
@@ -388,12 +406,13 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS
if (splineFlags.parabolic)
{
- movementSpline.JumpGravity = moveSpline.vertical_acceleration;
- movementSpline.SpecialTime = moveSpline.effect_start_time;
+ movementSpline.JumpExtraData = boost::in_place();
+ movementSpline.JumpExtraData->JumpGravity = moveSpline.vertical_acceleration;
+ movementSpline.JumpExtraData->StartTime = moveSpline.effect_start_time;
}
if (splineFlags.fadeObject)
- movementSpline.SpecialTime = moveSpline.effect_start_time;
+ movementSpline.FadeObjectTime = moveSpline.effect_start_time;
if (moveSpline.spell_effect_extra)
{
@@ -402,6 +421,7 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS
movementSpline.SpellEffectExtraData->SpellVisualID = moveSpline.spell_effect_extra->SpellVisualId;
movementSpline.SpellEffectExtraData->ProgressCurveID = moveSpline.spell_effect_extra->ProgressCurveId;
movementSpline.SpellEffectExtraData->ParabolicCurveID = moveSpline.spell_effect_extra->ParabolicCurveId;
+ movementSpline.SpellEffectExtraData->JumpGravity = moveSpline.vertical_acceleration;
}
::Movement::Spline<int32> const& spline = moveSpline.spline;
diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h
index aaa5f770535..e50a8cf6a71 100644
--- a/src/server/game/Server/Packets/MovementPackets.h
+++ b/src/server/game/Server/Packets/MovementPackets.h
@@ -75,6 +75,14 @@ namespace WorldPackets
uint32 SpellVisualID = 0;
uint32 ProgressCurveID = 0;
uint32 ParabolicCurveID = 0;
+ float JumpGravity = 0.0f;
+ };
+
+ struct MonsterSplineJumpExtraData
+ {
+ float JumpGravity = 0.0f;
+ uint32 StartTime = 0;
+ uint32 Duration = 0;
};
struct MovementSpline
@@ -85,8 +93,7 @@ namespace WorldPackets
uint32 TierTransStartTime = 0;
int32 Elapsed = 0;
uint32 MoveTime = 0;
- float JumpGravity = 0.0f;
- uint32 SpecialTime = 0;
+ uint32 FadeObjectTime = 0;
std::vector<TaggedPosition<Position::XYZ>> Points; // Spline path
uint8 Mode = 0; // Spline mode - actually always 0 in this packet - Catmullrom mode appears only in SMSG_UPDATE_OBJECT. In this packet it is determined by flags
uint8 VehicleExitVoluntary = 0;
@@ -95,6 +102,7 @@ namespace WorldPackets
std::vector<TaggedPosition<Position::PackedXYZ>> PackedDeltas;
Optional<MonsterSplineFilter> SplineFilter;
Optional<MonsterSplineSpellEffectExtraData> SpellEffectExtraData;
+ Optional<MonsterSplineJumpExtraData> JumpExtraData;
float FaceDirection = 0.0f;
ObjectGuid FaceGUID;
TaggedPosition<Position::XYZ> FaceSpot;
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 2b7f9ab7d18..749b4b9a330 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -96,19 +96,19 @@ WorldPacket const* WorldPackets::NPC::VendorInventory::Write()
WorldPacket const* WorldPackets::NPC::TrainerList::Write()
{
_worldPacket << TrainerGUID;
- _worldPacket << TrainerType;
- _worldPacket << TrainerID;
+ _worldPacket << uint32(TrainerType);
+ _worldPacket << uint32(TrainerID);
- _worldPacket << int32(Spells.size());
+ _worldPacket << uint32(Spells.size());
for (TrainerListSpell const& spell : Spells)
{
- _worldPacket << spell.SpellID;
- _worldPacket << spell.MoneyCost;
- _worldPacket << spell.ReqSkillLine;
- _worldPacket << spell.ReqSkillRank;
+ _worldPacket << int32(spell.SpellID);
+ _worldPacket << uint32(spell.MoneyCost);
+ _worldPacket << uint32(spell.ReqSkillLine);
+ _worldPacket << uint32(spell.ReqSkillRank);
_worldPacket.append(spell.ReqAbility.data(), spell.ReqAbility.size());
- _worldPacket << spell.Usable;
- _worldPacket << spell.ReqLevel;
+ _worldPacket << uint8(spell.Usable);
+ _worldPacket << uint8(spell.ReqLevel);
}
_worldPacket.WriteBits(Greeting.length(), 11);
@@ -144,11 +144,13 @@ WorldPacket const* WorldPackets::NPC::PlayerTabardVendorActivate::Write()
WorldPacket const* WorldPackets::NPC::GossipPOI::Write()
{
- _worldPacket.WriteBits(Flags, 14);
- _worldPacket.WriteBits(Name.length(), 6);
+ _worldPacket << int32(ID);
_worldPacket << Pos;
_worldPacket << int32(Icon);
_worldPacket << int32(Importance);
+ _worldPacket.WriteBits(Flags, 14);
+ _worldPacket.WriteBits(Name.length(), 6);
+ _worldPacket.FlushBits();
_worldPacket.WriteString(Name);
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index a094f25dc22..8148e3aff60 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -131,9 +131,9 @@ namespace WorldPackets
struct TrainerListSpell
{
int32 SpellID = 0;
- int32 MoneyCost = 0;
- int32 ReqSkillLine = 0;
- int32 ReqSkillRank = 0;
+ uint32 MoneyCost = 0;
+ uint32 ReqSkillLine = 0;
+ uint32 ReqSkillRank = 0;
std::array<int32, 3> ReqAbility = { };
uint8 Usable = 0;
uint8 ReqLevel = 0;
@@ -180,6 +180,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
+ int32 ID = 0;
uint32 Flags = 0;
TaggedPosition<Position::XY> Pos;
int32 Icon = 0;
diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h
index f7913b9c51d..99b214aab36 100644
--- a/src/server/game/Server/Packets/PacketUtilities.h
+++ b/src/server/game/Server/Packets/PacketUtilities.h
@@ -42,6 +42,8 @@ namespace WorldPackets
typedef typename storage_type::value_type value_type;
typedef typename storage_type::size_type size_type;
+ typedef typename storage_type::pointer pointer;
+ typedef typename storage_type::const_pointer const_pointer;
typedef typename storage_type::reference reference;
typedef typename storage_type::const_reference const_reference;
typedef typename storage_type::iterator iterator;
@@ -55,6 +57,9 @@ namespace WorldPackets
iterator end() { return _storage.end(); }
const_iterator end() const { return _storage.end(); }
+ pointer data() { return _storage.data(); }
+ const_pointer data() const { return _storage.data(); }
+
size_type size() const { return _storage.size(); }
bool empty() const { return _storage.empty(); }
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 939f0a65db1..9251addde38 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -33,7 +33,7 @@ WorldPacket const* WorldPackets::Party::PartyCommandResult::Write()
_worldPacket.WriteBits(Command, 4);
_worldPacket.WriteBits(Result, 6);
- _worldPacket << ResultData;
+ _worldPacket << uint32(ResultData);
_worldPacket << ResultGUID;
_worldPacket.WriteString(Name);
@@ -78,12 +78,12 @@ WorldPacket const* WorldPackets::Party::PartyInvite::Write()
_worldPacket << InviterBNetAccountId;
_worldPacket << uint16(Unk1);
_worldPacket << uint32(ProposedRoles);
- _worldPacket << int32(LfgSlots.size());
- _worldPacket << LfgCompletedMask;
+ _worldPacket << uint32(LfgSlots.size());
+ _worldPacket << uint32(LfgCompletedMask);
_worldPacket.WriteString(InviterName);
- for (int32 LfgSlot : LfgSlots)
+ for (uint32 LfgSlot : LfgSlots)
_worldPacket << LfgSlot;
return &_worldPacket;
@@ -212,7 +212,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberStats c
data << int16(memberStats.PositionY);
data << int16(memberStats.PositionZ);
data << int32(memberStats.VehicleSeat);
- data << int32(memberStats.Auras.size());
+ data << uint32(memberStats.Auras.size());
data << memberStats.Phases;
for (WorldPackets::Party::PartyMemberAuraStates const& aura : memberStats.Auras)
@@ -318,15 +318,13 @@ WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateSingle::Write()
WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateAll::Write()
{
- _worldPacket << PartyIndex;
-
- _worldPacket << int32(TargetIcons.size());
+ _worldPacket << uint8(PartyIndex);
+ _worldPacket << uint32(TargetIcons.size());
- std::map<uint8, ObjectGuid>::const_iterator itr;
- for (itr = TargetIcons.begin(); itr != TargetIcons.end(); itr++)
+ for (auto itr = TargetIcons.begin(); itr != TargetIcons.end(); ++itr)
{
_worldPacket << itr->second;
- _worldPacket << itr->first;
+ _worldPacket << uint8(itr->first);
}
return &_worldPacket;
@@ -420,7 +418,9 @@ WorldPacket const* WorldPackets::Party::GroupNewLeader::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo const& playerInfo)
{
data.WriteBits(playerInfo.Name.size(), 6);
+ data.WriteBits(playerInfo.VoiceStateID.size(), 6);
data.WriteBit(playerInfo.FromSocialQueue);
+ data.WriteBit(playerInfo.VoiceChatSilenced);
data << playerInfo.GUID;
data << uint8(playerInfo.Status);
data << uint8(playerInfo.Subgroup);
@@ -428,6 +428,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo co
data << uint8(playerInfo.RolesAssigned);
data << uint8(playerInfo.Class);
data.WriteString(playerInfo.Name);
+ data.WriteString(playerInfo.VoiceStateID);
return data;
}
@@ -524,8 +525,8 @@ void WorldPackets::Party::ClearRaidMarker::Read()
WorldPacket const* WorldPackets::Party::RaidMarkersChanged::Write()
{
- _worldPacket << PartyIndex;
- _worldPacket << ActiveMarkers;
+ _worldPacket << uint8(PartyIndex);
+ _worldPacket << uint32(ActiveMarkers);
_worldPacket.WriteBits(RaidMarkers.size(), 4);
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
index f62e61d0990..d0b689ffb04 100644
--- a/src/server/game/Server/Packets/PartyPackets.h
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -48,8 +48,8 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
- int32 ProposedRoles = 0;
+ uint8 PartyIndex = 0;
+ uint32 ProposedRoles = 0;
std::string TargetName;
std::string TargetRealm;
ObjectGuid TargetGUID;
@@ -85,9 +85,9 @@ namespace WorldPackets
std::string InviterRealmNameNormalized;
// Lfg
- int32 ProposedRoles = 0;
- int32 LfgCompletedMask = 0;
- std::vector<int32> LfgSlots;
+ uint32 ProposedRoles = 0;
+ uint32 LfgCompletedMask = 0;
+ std::vector<uint32> LfgSlots;
};
class PartyInviteResponse final : public ClientPacket
@@ -97,9 +97,9 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
bool Accept = false;
- Optional<int32> RolesDesired;
+ Optional<uint32> RolesDesired;
};
class PartyUninvite final : public ClientPacket
@@ -109,7 +109,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
ObjectGuid TargetGUID;
std::string Reason;
};
@@ -327,7 +327,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
std::map<uint8, ObjectGuid> TargetIcons;
};
@@ -359,7 +359,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid Target;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
bool Apply = false;
};
@@ -405,7 +405,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
bool IsReady = false;
};
@@ -486,13 +486,14 @@ namespace WorldPackets
{
ObjectGuid GUID;
std::string Name;
+ std::string VoiceStateID; // same as bgs.protocol.club.v1.MemberVoiceState.id
uint8 Class = 0;
-
uint8 Status = 0u;
uint8 Subgroup = 0u;
uint8 Flags = 0u;
uint8 RolesAssigned = 0u;
bool FromSocialQueue = false;
+ bool VoiceChatSilenced = false;
};
struct PartyLFGInfo
@@ -554,7 +555,7 @@ namespace WorldPackets
void Read() override;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
bool EveryoneIsAssistant = false;
};
@@ -599,7 +600,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- int8 PartyIndex = 0;
+ uint8 PartyIndex = 0;
uint32 ActiveMarkers = 0u;
std::vector<RaidMarker*> RaidMarkers;
diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp
index 06182856bb4..d62ce6840cb 100644
--- a/src/server/game/Server/Packets/PetPackets.cpp
+++ b/src/server/game/Server/Packets/PetPackets.cpp
@@ -65,9 +65,8 @@ WorldPacket const* WorldPackets::Pet::PetStableList::Write()
_worldPacket << int32(pet.CreatureID);
_worldPacket << int32(pet.DisplayID);
_worldPacket << int32(pet.ExperienceLevel);
- _worldPacket << int32(pet.PetFlags);
-
- _worldPacket << int8(pet.PetName.length());
+ _worldPacket << uint8(pet.PetFlags);
+ _worldPacket.WriteBits(pet.PetName.length(), 8);
_worldPacket.WriteString(pet.PetName);
}
@@ -92,21 +91,18 @@ WorldPacket const* WorldPackets::Pet::PetUnlearnedSpells::Write()
WorldPacket const* WorldPackets::Pet::PetNameInvalid::Write()
{
+ _worldPacket << uint8(Result);
_worldPacket << RenameData.PetGUID;
_worldPacket << int32(RenameData.PetNumber);
_worldPacket << uint8(RenameData.NewName.length());
_worldPacket.WriteBit(RenameData.DeclinedNames.is_initialized());
- _worldPacket.FlushBits();
if (RenameData.DeclinedNames)
{
for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++)
- {
_worldPacket.WriteBits(RenameData.DeclinedNames->name[i].length(), 7);
- _worldPacket.FlushBits();
- }
for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++)
_worldPacket << RenameData.DeclinedNames->name[i];
@@ -121,8 +117,7 @@ void WorldPackets::Pet::PetRename::Read()
_worldPacket >> RenameData.PetGUID;
_worldPacket >> RenameData.PetNumber;
- int8 nameLen = 0;
- _worldPacket >> nameLen;
+ uint8 nameLen = _worldPacket.ReadBits(8);
if (_worldPacket.ReadBit())
{
diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h
index 965dc0b60c4..3f57f0360c9 100644
--- a/src/server/game/Server/Packets/PetPackets.h
+++ b/src/server/game/Server/Packets/PetPackets.h
@@ -125,7 +125,7 @@ namespace WorldPackets
uint32 CreatureID = 0;
uint32 DisplayID = 0;
uint32 ExperienceLevel = 0;
- uint32 PetFlags = 0;
+ uint8 PetFlags = 0;
std::string PetName;
};
diff --git a/src/server/game/Server/Packets/PetitionPackets.cpp b/src/server/game/Server/Packets/PetitionPackets.cpp
index 132494aed46..06823e15204 100644
--- a/src/server/game/Server/Packets/PetitionPackets.cpp
+++ b/src/server/game/Server/Packets/PetitionPackets.cpp
@@ -25,32 +25,31 @@ void WorldPackets::Petition::QueryPetition::Read()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo const& petitionInfo)
{
- data << petitionInfo.PetitionID;
+ data << int32(petitionInfo.PetitionID);
data << petitionInfo.Petitioner;
-
- data << petitionInfo.MinSignatures;
- data << petitionInfo.MaxSignatures;
- data << petitionInfo.DeadLine;
- data << petitionInfo.IssueDate;
- data << petitionInfo.AllowedGuildID;
- data << petitionInfo.AllowedClasses;
- data << petitionInfo.AllowedRaces;
- data << petitionInfo.AllowedGender;
- data << petitionInfo.AllowedMinLevel;
- data << petitionInfo.AllowedMaxLevel;
- data << petitionInfo.NumChoices;
- data << petitionInfo.StaticType;
- data << petitionInfo.Muid;
+ data << int32(petitionInfo.MinSignatures);
+ data << int32(petitionInfo.MaxSignatures);
+ data << int32(petitionInfo.DeadLine);
+ data << int32(petitionInfo.IssueDate);
+ data << int32(petitionInfo.AllowedGuildID);
+ data << int32(petitionInfo.AllowedClasses);
+ data << int32(petitionInfo.AllowedRaces);
+ data << int16(petitionInfo.AllowedGender);
+ data << int32(petitionInfo.AllowedMinLevel);
+ data << int32(petitionInfo.AllowedMaxLevel);
+ data << int32(petitionInfo.NumChoices);
+ data << int32(petitionInfo.StaticType);
+ data << uint32(petitionInfo.Muid);
data.WriteBits(petitionInfo.Title.length(), 7);
data.WriteBits(petitionInfo.BodyText.length(), 12);
- for (uint8 i = 0; i < 10; i++)
+ for (std::size_t i = 0; i < petitionInfo.Choicetext.size(); ++i)
data.WriteBits(petitionInfo.Choicetext[i].length(), 6);
data.FlushBits();
- for (uint8 i = 0; i < 10; i++)
+ for (std::size_t i = 0; i < petitionInfo.Choicetext.size(); ++i)
data.WriteString(petitionInfo.Choicetext[i]);
data.WriteString(petitionInfo.Title);
@@ -61,7 +60,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo co
WorldPacket const* WorldPackets::Petition::QueryPetitionResponse::Write()
{
- _worldPacket << PetitionID;
+ _worldPacket << uint32(PetitionID);
_worldPacket.WriteBit(Allow);
_worldPacket.FlushBits();
@@ -102,13 +101,13 @@ WorldPacket const* WorldPackets::Petition::ServerPetitionShowSignatures::Write()
_worldPacket << Item;
_worldPacket << Owner;
_worldPacket << OwnerAccountID;
- _worldPacket << PetitionID;
+ _worldPacket << int32(PetitionID);
_worldPacket << uint32(Signatures.size());
- for (PetitionSignature signature : Signatures)
+ for (PetitionSignature const& signature : Signatures)
{
_worldPacket << signature.Signer;
- _worldPacket << signature.Choice;
+ _worldPacket << int32(signature.Choice);
}
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/PetitionPackets.h b/src/server/game/Server/Packets/PetitionPackets.h
index a5b4e8dca6f..c378c053d84 100644
--- a/src/server/game/Server/Packets/PetitionPackets.h
+++ b/src/server/game/Server/Packets/PetitionPackets.h
@@ -56,7 +56,7 @@ namespace WorldPackets
int32 NumChoices = 0;
int32 StaticType = 0;
uint32 Muid = 0;
- std::string Choicetext[10];
+ std::array<std::string, 10> Choicetext;
};
class QueryPetitionResponse final : public ServerPacket
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index c640394be93..f941c895722 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -29,7 +29,7 @@ void WorldPackets::Query::QueryCreature::Read()
WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write()
{
- _worldPacket << CreatureID;
+ _worldPacket << uint32(CreatureID);
_worldPacket.WriteBit(Allow);
_worldPacket.FlushBits();
@@ -61,7 +61,16 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write()
_worldPacket << int32(Stats.CreatureFamily);
_worldPacket << int32(Stats.Classification);
_worldPacket.append(Stats.ProxyCreatureID.data(), Stats.ProxyCreatureID.size());
- _worldPacket.append(Stats.CreatureDisplayID.data(), Stats.CreatureDisplayID.size());
+ _worldPacket << uint32(Stats.Display.CreatureDisplay.size());
+ _worldPacket << float(Stats.Display.TotalProbability);
+
+ for (CreatureXDisplay const& display : Stats.Display.CreatureDisplay)
+ {
+ _worldPacket << uint32(display.CreatureDisplayID);
+ _worldPacket << float(display.Scale);
+ _worldPacket << float(display.Probability);
+ }
+
_worldPacket << float(Stats.HpMulti);
_worldPacket << float(Stats.EnergyMulti);
_worldPacket << uint32(Stats.QuestItems.size());
@@ -69,6 +78,7 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write()
_worldPacket << int32(Stats.HealthScalingExpansion);
_worldPacket << int32(Stats.RequiredExpansion);
_worldPacket << int32(Stats.VignetteID);
+ _worldPacket << int32(Stats.Class);
if (!Stats.Title.empty())
_worldPacket << Stats.Title;
@@ -79,8 +89,8 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write()
if (!Stats.CursorName.empty())
_worldPacket << Stats.CursorName;
- for (int32 questItem : Stats.QuestItems)
- _worldPacket << questItem;
+ if (!Stats.QuestItems.empty())
+ _worldPacket.append(Stats.QuestItems.data(), Stats.QuestItems.size());
}
return &_worldPacket;
@@ -162,6 +172,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa
data << lookupData.AccountID;
data << lookupData.BnetAccountID;
data << lookupData.GuidActual;
+ data << uint64(lookupData.GuildClubMemberID);
data << uint32(lookupData.VirtualRealmAddress);
data << uint8(lookupData.Race);
data << uint8(lookupData.Sex);
@@ -174,7 +185,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa
WorldPacket const* WorldPackets::Query::QueryPlayerNameResponse::Write()
{
- _worldPacket << Result;
+ _worldPacket << uint8(Result);
_worldPacket << Player;
if (Result == RESPONSE_SUCCESS)
@@ -206,7 +217,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::QueryPageTextRespo
WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write()
{
- _worldPacket << PageTextID;
+ _worldPacket << uint32(PageTextID);
_worldPacket.WriteBit(Allow);
_worldPacket.FlushBits();
@@ -229,7 +240,7 @@ void WorldPackets::Query::QueryNPCText::Read()
WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write()
{
- _worldPacket << TextID;
+ _worldPacket << uint32(TextID);
_worldPacket.WriteBit(Allow);
_worldPacket.FlushBits();
@@ -238,10 +249,8 @@ WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write()
if (Allow)
{
- for (uint32 i = 0; i < MAX_NPC_TEXT_OPTIONS; ++i)
- _worldPacket << Probabilities[i];
- for (uint32 i = 0; i < MAX_NPC_TEXT_OPTIONS; ++i)
- _worldPacket << BroadcastTextID[i];
+ _worldPacket.append(Probabilities.data(), Probabilities.size());
+ _worldPacket.append(BroadcastTextID.data(), BroadcastTextID.size());
}
return &_worldPacket;
@@ -276,8 +285,8 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write()
statsData << float(Stats.Size);
statsData << uint8(Stats.QuestItems.size());
- for (int32 questItem : Stats.QuestItems)
- statsData << int32(questItem);
+ if (!Stats.QuestItems.empty())
+ statsData.append(Stats.QuestItems.data(), Stats.QuestItems.size());
statsData << int32(Stats.RequiredLevel);
}
@@ -334,7 +343,7 @@ void WorldPackets::Query::QuestPOIQuery::Read()
{
_worldPacket >> MissingQuestCount;
- for (uint8 i = 0; i < 50; ++i)
+ for (std::size_t i = 0; i < MissingQuestPOIs.size(); ++i)
_worldPacket >> MissingQuestPOIs[i];
}
@@ -356,13 +365,12 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write()
_worldPacket << int32(questPOIBlobData.QuestObjectiveID);
_worldPacket << int32(questPOIBlobData.QuestObjectID);
_worldPacket << int32(questPOIBlobData.MapID);
- _worldPacket << int32(questPOIBlobData.WorldMapAreaID);
- _worldPacket << int32(questPOIBlobData.Floor);
+ _worldPacket << int32(questPOIBlobData.UiMapID);
_worldPacket << int32(questPOIBlobData.Priority);
_worldPacket << int32(questPOIBlobData.Flags);
_worldPacket << int32(questPOIBlobData.WorldEffectID);
_worldPacket << int32(questPOIBlobData.PlayerConditionID);
- _worldPacket << int32(questPOIBlobData.UnkWoD1);
+ _worldPacket << int32(questPOIBlobData.SpawnTrackingID);
_worldPacket << int32(questPOIBlobData.QuestPOIBlobPointStats.size());
for (QuestPOIBlobPoint const& questPOIBlobPoint : questPOIBlobData.QuestPOIBlobPointStats)
@@ -381,13 +389,9 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write()
void WorldPackets::Query::QueryQuestCompletionNPCs::Read()
{
- uint32 questCount = 0;
-
- _worldPacket >> questCount;
- QuestCompletionNPCs.resize(questCount);
-
- for (int32& QuestID : QuestCompletionNPCs)
- _worldPacket >> QuestID;
+ QuestCompletionNPCs.resize(_worldPacket.read<uint32>());
+ if (!QuestCompletionNPCs.empty())
+ _worldPacket.read(QuestCompletionNPCs.data(), QuestCompletionNPCs.size());
}
WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write()
@@ -396,10 +400,9 @@ WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write()
for (auto& quest : QuestCompletionNPCs)
{
_worldPacket << int32(quest.QuestID);
-
_worldPacket << uint32(quest.NPCs.size());
- for (int32 const& npc : quest.NPCs)
- _worldPacket << int32(npc);
+ if (!quest.NPCs.empty())
+ _worldPacket.append(quest.NPCs.data(), quest.NPCs.size());
}
return &_worldPacket;
@@ -453,6 +456,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::ItemTextCache cons
WorldPacket const* WorldPackets::Query::QueryItemTextResponse::Write()
{
_worldPacket.WriteBit(Valid);
+ _worldPacket.FlushBits();
_worldPacket << Item;
_worldPacket << Id;
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index 7639f165dae..dfdf3d437a0 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -23,6 +23,7 @@
#include "NPCHandler.h"
#include "ObjectGuid.h"
#include "Position.h"
+#include "QuestDef.h"
#include "SharedDefines.h"
#include "UnitDefines.h"
#include <array>
@@ -43,13 +44,25 @@ namespace WorldPackets
uint32 CreatureID = 0;
};
+ struct CreatureXDisplay
+ {
+ uint32 CreatureDisplayID = 0;
+ float Scale = 1.0f;
+ float Probability = 1.0f;
+ };
+
+ struct CreatureDisplayStats
+ {
+ float TotalProbability = 0.0f;
+ std::vector<CreatureXDisplay> CreatureDisplay;
+ };
+
struct CreatureStats
{
CreatureStats()
{
Flags.fill(0);
ProxyCreatureID.fill(0);
- CreatureDisplayID.fill(0);
}
std::string Title;
@@ -58,6 +71,7 @@ namespace WorldPackets
int32 CreatureType = 0;
int32 CreatureFamily = 0;
int32 Classification = 0;
+ CreatureDisplayStats Display;
float HpMulti = 0.0f;
float EnergyMulti = 0.0f;
bool Leader = false;
@@ -66,9 +80,9 @@ namespace WorldPackets
int32 HealthScalingExpansion = 0;
uint32 RequiredExpansion = 0;
uint32 VignetteID = 0;
+ int32 Class = 0;
std::array<uint32, 2> Flags;
std::array<uint32, 2> ProxyCreatureID;
- std::array<uint32, 4> CreatureDisplayID;
std::array<std::string, 4> Name;
std::array<std::string, 4> NameAlt;
};
@@ -110,6 +124,7 @@ namespace WorldPackets
ObjectGuid BnetAccountID;
ObjectGuid GuidActual;
std::string Name;
+ uint64 GuildClubMemberID = 0; // same as bgs.protocol.club.v1.MemberId.unique_id
uint32 VirtualRealmAddress = 0;
uint8 Race = RACE_NONE;
uint8 Sex = GENDER_NONE;
@@ -182,8 +197,8 @@ namespace WorldPackets
uint32 TextID = 0;
bool Allow = false;
- float Probabilities[MAX_NPC_TEXT_OPTIONS];
- uint32 BroadcastTextID[MAX_NPC_TEXT_OPTIONS];
+ std::array<float, MAX_NPC_TEXT_OPTIONS> Probabilities;
+ std::array<uint32, MAX_NPC_TEXT_OPTIONS> BroadcastTextID;
};
class QueryGameObject final : public ClientPacket
@@ -297,7 +312,7 @@ namespace WorldPackets
void Read() override;
int32 MissingQuestCount = 0;
- int32 MissingQuestPOIs[50];
+ std::array<int32, 100> MissingQuestPOIs;
};
struct QuestPOIBlobPoint
@@ -313,13 +328,12 @@ namespace WorldPackets
int32 QuestObjectiveID = 0;
int32 QuestObjectID = 0;
int32 MapID = 0;
- int32 WorldMapAreaID = 0;
- int32 Floor = 0;
+ int32 UiMapID = 0;
int32 Priority = 0;
int32 Flags = 0;
int32 WorldEffectID = 0;
int32 PlayerConditionID = 0;
- int32 UnkWoD1 = 0;
+ int32 SpawnTrackingID = 0;
std::vector<QuestPOIBlobPoint> QuestPOIBlobPointStats;
bool AlwaysAllowMergingBlobs = false;
};
@@ -347,7 +361,7 @@ namespace WorldPackets
void Read() override;
- std::vector<int32> QuestCompletionNPCs;
+ Array<int32, 100> QuestCompletionNPCs;
};
struct QuestCompletionNPC
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 20a6539ae1d..0468e170d7c 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -65,6 +65,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.QuestID);
_worldPacket << int32(Info.QuestType);
_worldPacket << int32(Info.QuestLevel);
+ _worldPacket << int32(Info.QuestScalingFactionGroup);
_worldPacket << int32(Info.QuestMaxScalingLevel);
_worldPacket << int32(Info.QuestPackageID);
_worldPacket << int32(Info.QuestMinLevel);
@@ -88,6 +89,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.StartItem);
_worldPacket << uint32(Info.Flags);
_worldPacket << uint32(Info.FlagsEx);
+ _worldPacket << uint32(Info.FlagsEx2);
for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i)
{
@@ -115,6 +117,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.RewardNumSkillUps);
_worldPacket << int32(Info.PortraitGiver);
+ _worldPacket << int32(Info.PortraitGiverMount);
_worldPacket << int32(Info.PortraitTurnIn);
for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i)
@@ -141,7 +144,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << uint32(Info.Objectives.size());
_worldPacket << uint64(Info.AllowableRaces);
- _worldPacket << int32(Info.QuestRewardID);
+ _worldPacket << int32(Info.TreasurePickerID);
_worldPacket << int32(Info.Expansion);
_worldPacket.WriteBits(Info.LogTitle.size(), 9);
@@ -222,13 +225,6 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddPvPCredit::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const& questRewards)
{
data << int32(questRewards.ChoiceItemCount);
-
- for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i)
- {
- data << int32(questRewards.ChoiceItems[i].ItemID);
- data << int32(questRewards.ChoiceItems[i].Quantity);
- }
-
data << int32(questRewards.ItemCount);
for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i)
@@ -266,7 +262,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const
data << int32(questRewards.SkillLineID);
data << int32(questRewards.NumSkillUps);
- data << int32(questRewards.RewardID);
+ data << int32(questRewards.TreasurePickerID);
+
+ for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i)
+ {
+ data << questRewards.ChoiceItems[i].Item;
+ data << int32(questRewards.ChoiceItems[i].Quantity);
+ }
data.WriteBit(questRewards.IsBoostSpell);
data.FlushBits();
@@ -302,6 +304,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write()
_worldPacket << QuestData; // WorldPackets::Quest::QuestGiverOfferReward
_worldPacket << int32(QuestPackageID);
_worldPacket << int32(PortraitGiver);
+ _worldPacket << int32(PortraitGiverMount);
_worldPacket << int32(PortraitTurnIn);
_worldPacket.WriteBits(QuestTitle.size(), 9);
@@ -360,6 +363,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
_worldPacket << int32(QuestID);
_worldPacket << int32(QuestPackageID);
_worldPacket << int32(PortraitGiver);
+ _worldPacket << int32(PortraitGiverMount);
_worldPacket << int32(PortraitTurnIn);
_worldPacket << uint32(QuestFlags[0]); // Flags
_worldPacket << uint32(QuestFlags[1]); // FlagsEx
@@ -643,6 +647,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceRespon
{
data << int32(playerChoiceResponse.ResponseID);
data << int32(playerChoiceResponse.ChoiceArtFileID);
+ data << int32(playerChoiceResponse.Flags);
+ data << uint32(playerChoiceResponse.WidgetSetID);
+ data << uint8(playerChoiceResponse.GroupID);
data.WriteBits(playerChoiceResponse.Answer.length(), 9);
data.WriteBits(playerChoiceResponse.Header.length(), 9);
@@ -670,6 +677,7 @@ WorldPacket const* WorldPackets::Quest::DisplayPlayerChoice::Write()
_worldPacket.WriteBits(Question.length(), 8);
_worldPacket.WriteBit(CloseChoiceFrame);
_worldPacket.WriteBit(HideWarboardHeader);
+ _worldPacket.WriteBit(KeepOpenAfterChoice);
_worldPacket.FlushBits();
for (PlayerChoiceResponse const& response : Responses)
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 1dd40e1ccc2..1315a57949c 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -109,6 +109,7 @@ namespace WorldPackets
int32 QuestID = 0;
int32 QuestType = 0; // Accepted values: 0, 1 or 2. 0 == IsAutoComplete() (skip objectives/details)
int32 QuestLevel = 0; // may be -1, static data, in other cases must be used dynamic level: Player::GetQuestLevel (0 is not known, but assuming this is no longer valid for quest intended for client)
+ int32 QuestScalingFactionGroup = 0;
int32 QuestMaxScalingLevel = 255;
int32 QuestPackageID = 0;
int32 QuestMinLevel = 0;
@@ -132,6 +133,7 @@ namespace WorldPackets
int32 StartItem = 0;
uint32 Flags = 0;
uint32 FlagsEx = 0;
+ uint32 FlagsEx2 = 0;
int32 POIContinent = 0;
float POIx = 0.0f;
float POIy = 0.0f;
@@ -146,6 +148,7 @@ namespace WorldPackets
int32 RewardSkillLineID = 0; // reward skill id
int32 RewardNumSkillUps = 0; // reward skill points
int32 PortraitGiver = 0; // quest giver entry ?
+ int32 PortraitGiverMount = 0;
int32 PortraitTurnIn = 0; // quest turn in entry ?
std::string PortraitGiverText;
std::string PortraitGiverName;
@@ -157,7 +160,7 @@ namespace WorldPackets
int32 CompleteSoundKitID = 0;
int32 AreaGroupID = 0;
int32 TimeAllowed = 0;
- int32 QuestRewardID = 0;
+ int32 TreasurePickerID = 0;
int32 Expansion = 0;
std::vector<QuestObjective> Objectives;
int32 RewardItems[QUEST_REWARD_ITEM_COUNT] = { };
@@ -225,7 +228,7 @@ namespace WorldPackets
struct QuestChoiceItem
{
- int32 ItemID = 0;
+ Item::ItemInstance Item;
int32 Quantity = 0;
};
@@ -244,7 +247,7 @@ namespace WorldPackets
int32 SpellCompletionID = 0;
int32 SkillLineID = 0;
int32 NumSkillUps = 0;
- int32 RewardID = 0;
+ int32 TreasurePickerID = 0;
QuestChoiceItem ChoiceItems[QUEST_REWARD_CHOICES_COUNT];
int32 ItemID[QUEST_REWARD_ITEM_COUNT] = { };
int32 ItemQty[QUEST_REWARD_ITEM_COUNT] = { };
@@ -285,6 +288,7 @@ namespace WorldPackets
int32 PortraitTurnIn = 0;
int32 PortraitGiver = 0;
+ int32 PortraitGiverMount = 0;
std::string QuestTitle;
std::string RewardText;
std::string PortraitGiverText;
@@ -365,6 +369,7 @@ namespace WorldPackets
std::vector<int32> LearnSpells;
int32 PortraitTurnIn = 0;
int32 PortraitGiver = 0;
+ int32 PortraitGiverMount = 0;
int32 QuestStartItemID = 0;
std::string PortraitGiverText;
std::string PortraitGiverName;
@@ -663,6 +668,9 @@ namespace WorldPackets
{
int32 ResponseID = 0;
int32 ChoiceArtFileID = 0;
+ int32 Flags = 0;
+ uint32 WidgetSetID = 0;
+ uint8 GroupID = 0;
std::string Answer;
std::string Header;
std::string Description;
@@ -684,6 +692,7 @@ namespace WorldPackets
std::vector<PlayerChoiceResponse> Responses;
bool CloseChoiceFrame = false;
bool HideWarboardHeader = false;
+ bool KeepOpenAfterChoice = false;
};
class ChoiceResponse final : public ClientPacket
diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp
index 314dac85c5e..5e4eb54a918 100644
--- a/src/server/game/Server/Packets/ReputationPackets.cpp
+++ b/src/server/game/Server/Packets/ReputationPackets.cpp
@@ -46,8 +46,6 @@ WorldPacket const* WorldPackets::Reputation::SetForcedReactions::Write()
for (ForcedReaction const& reaction : Reactions)
_worldPacket << reaction;
- _worldPacket.FlushBits();
-
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ReputationPackets.h b/src/server/game/Server/Packets/ReputationPackets.h
index 0156d504491..2046e169ab5 100644
--- a/src/server/game/Server/Packets/ReputationPackets.h
+++ b/src/server/game/Server/Packets/ReputationPackets.h
@@ -30,7 +30,7 @@ namespace WorldPackets
class InitializeFactions final : public ServerPacket
{
public:
- InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, 1312)
+ InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, FactionCount * (4 + 1) + FactionCount / 8)
{
FactionStandings.fill(0);
FactionHasBonus.fill(false);
diff --git a/src/server/game/Server/Packets/ScenarioPackets.cpp b/src/server/game/Server/Packets/ScenarioPackets.cpp
index 38a667980a1..73f5120ee8d 100644
--- a/src/server/game/Server/Packets/ScenarioPackets.cpp
+++ b/src/server/game/Server/Packets/ScenarioPackets.cpp
@@ -109,8 +109,7 @@ WorldPacket const* WorldPackets::Scenario::ScenarioPOIs::Write()
{
_worldPacket << int32(scenarioPOI.BlobIndex);
_worldPacket << int32(scenarioPOI.MapID);
- _worldPacket << int32(scenarioPOI.WorldMapAreaID);
- _worldPacket << int32(scenarioPOI.Floor);
+ _worldPacket << int32(scenarioPOI.UiMapID);
_worldPacket << int32(scenarioPOI.Priority);
_worldPacket << int32(scenarioPOI.Flags);
_worldPacket << int32(scenarioPOI.WorldEffectID);
diff --git a/src/server/game/Server/Packets/ScenarioPackets.h b/src/server/game/Server/Packets/ScenarioPackets.h
index c9e1004d51a..71bcbd12d65 100644
--- a/src/server/game/Server/Packets/ScenarioPackets.h
+++ b/src/server/game/Server/Packets/ScenarioPackets.h
@@ -22,7 +22,7 @@
#include "PacketUtilities.h"
#include "AchievementPackets.h"
-#define MAX_ALLOWED_SCENARIO_POI_QUERY_SIZE 40
+#define MAX_ALLOWED_SCENARIO_POI_QUERY_SIZE 42
struct ScenarioPOI;
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index ec6d57f2748..7b3117156fc 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -33,6 +33,7 @@ void WorldPackets::Spells::PetCancelAura::Read()
void WorldPackets::Spells::CancelChannelling::Read()
{
_worldPacket >> ChannelSpell;
+ _worldPacket >> Reason;
}
WorldPacket const* WorldPackets::Spells::CategoryCooldown::Write()
@@ -99,16 +100,17 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraDataInfo cons
data << uint32(auraData.ActiveFlags);
data << uint16(auraData.CastLevel);
data << uint8(auraData.Applications);
+ data << int32(auraData.ContentTuningID);
data.WriteBit(auraData.CastUnit.is_initialized());
data.WriteBit(auraData.Duration.is_initialized());
data.WriteBit(auraData.Remaining.is_initialized());
data.WriteBit(auraData.TimeMod.is_initialized());
data.WriteBits(auraData.Points.size(), 6);
data.WriteBits(auraData.EstimatedPoints.size(), 6);
- data.WriteBit(auraData.SandboxScaling.is_initialized());
+ data.WriteBit(auraData.ContentTuning.is_initialized());
- if (auraData.SandboxScaling)
- data << *auraData.SandboxScaling;
+ if (auraData.ContentTuning)
+ data << *auraData.ContentTuning;
if (auraData.CastUnit)
data << *auraData.CastUnit;
@@ -211,7 +213,7 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastReques
buffer >> request.SpellID;
buffer >> request.SpellXSpellVisualID;
buffer >> request.MissileTrajectory;
- buffer >> request.Charmer;
+ buffer >> request.CraftingNPC;
request.SendCastFlags = buffer.ReadBits(5);
bool hasMoveUpdate = buffer.ReadBit();
request.Weight.resize(buffer.ReadBits(2));
@@ -366,13 +368,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con
data << int32(spellCastData.SpellID);
data << uint32(spellCastData.SpellXSpellVisualID);
data << uint32(spellCastData.CastFlags);
+ data << uint32(spellCastData.CastFlagsEx);
data << uint32(spellCastData.CastTime);
data << spellCastData.MissileTrajectory;
data << int32(spellCastData.Ammo.DisplayID);
data << uint8(spellCastData.DestLocSpellCastIndex);
data << spellCastData.Immunities;
data << spellCastData.Predict;
- data.WriteBits(spellCastData.CastFlagsEx, 23);
data.WriteBits(spellCastData.HitTargets.size(), 16);
data.WriteBits(spellCastData.MissTargets.size(), 16);
data.WriteBits(spellCastData.MissStatus.size(), 16);
@@ -716,6 +718,7 @@ WorldPacket const* WorldPackets::Spells::PlayOrphanSpellVisual::Write()
_worldPacket << int32(SpellVisualID);
_worldPacket << float(TravelSpeed);
_worldPacket << float(UnkZero);
+ _worldPacket << float(Unk801);
_worldPacket.WriteBit(SpeedAsTime);
_worldPacket.FlushBits();
@@ -726,12 +729,14 @@ WorldPacket const* WorldPackets::Spells::PlaySpellVisual::Write()
{
_worldPacket << Source;
_worldPacket << Target;
+ _worldPacket << Unk801_1;
_worldPacket << TargetPosition;
- _worldPacket << SpellVisualID;
- _worldPacket << TravelSpeed;
- _worldPacket << MissReason;
- _worldPacket << ReflectStatus;
- _worldPacket << Orientation;
+ _worldPacket << uint32(SpellVisualID);
+ _worldPacket << float(TravelSpeed);
+ _worldPacket << uint16(MissReason);
+ _worldPacket << uint16(ReflectStatus);
+ _worldPacket << float(Orientation);
+ _worldPacket << float(Unk801_2);
_worldPacket.WriteBit(SpeedAsTime);
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index b1230459627..1df8e8772c0 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -57,6 +57,8 @@ namespace WorldPackets
void Read() override;
int32 ChannelSpell = 0;
+ int32 Reason = 0; // 40 = /run SpellStopCasting(), 16 = movement/AURA_INTERRUPT_FLAG_MOVE, 41 = turning/AURA_INTERRUPT_FLAG_TURNING
+ // does not match SpellCastResult enum
};
class CancelGrowthAura final : public ClientPacket
@@ -177,7 +179,8 @@ namespace WorldPackets
uint32 ActiveFlags = 0;
uint16 CastLevel = 1;
uint8 Applications = 1;
- Optional<SandboxScalingData> SandboxScaling;
+ int32 ContentTuningID = 0;
+ Optional<ContentTuningParams> ContentTuning;
Optional<ObjectGuid> CastUnit;
Optional<int32> Duration;
Optional<int32> Remaining;
@@ -245,7 +248,7 @@ namespace WorldPackets
MissileTrajectoryRequest MissileTrajectory;
Optional<MovementInfo> MoveUpdate;
std::vector<SpellWeight> Weight;
- ObjectGuid Charmer;
+ ObjectGuid CraftingNPC;
int32 Misc[2] = { };
};
@@ -613,7 +616,7 @@ namespace WorldPackets
class SetSpellCharges final : public ServerPacket
{
public:
- SetSpellCharges() : ServerPacket(SMSG_SET_SPELL_CHARGES, 1 + 4 + 4) { }
+ SetSpellCharges() : ServerPacket(SMSG_SET_SPELL_CHARGES, 4 + 4 + 1 + 4 + 1) { }
WorldPacket const* Write() override;
@@ -697,6 +700,7 @@ namespace WorldPackets
bool SpeedAsTime = false;
float TravelSpeed = 0.0f;
float UnkZero = 0.0f; // Always zero
+ float Unk801 = 0.0f;
TaggedPosition<Position::XYZ> SourceRotation; // Vector of rotations, Orientation is z
TaggedPosition<Position::XYZ> TargetLocation; // Exclusive with Target
};
@@ -710,6 +714,7 @@ namespace WorldPackets
ObjectGuid Source;
ObjectGuid Target; // Exclusive with TargetPosition
+ ObjectGuid Unk801_1;
uint16 MissReason = 0;
uint32 SpellVisualID = 0;
bool SpeedAsTime = false;
@@ -717,6 +722,7 @@ namespace WorldPackets
float TravelSpeed = 0.0f;
TaggedPosition<Position::XYZ> TargetPosition; // Exclusive with Target
float Orientation = 0.0f;
+ float Unk801_2 = 0.0f;
};
class PlaySpellVisualKit final : public ServerPacket
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index da674178456..853e35fce5c 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -37,6 +37,8 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket << uint32(BpayStoreProductDeliveryDelay);
+ _worldPacket << uint32(ClubsPresenceUpdateTimer);
+
_worldPacket.WriteBit(VoiceEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus.is_initialized());
_worldPacket.WriteBit(ScrollOfResurrectionEnabled);
@@ -49,16 +51,22 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.WriteBit(RecruitAFriendSendingEnabled);
_worldPacket.WriteBit(CharUndeleteEnabled);
_worldPacket.WriteBit(RestrictedAccount);
+ _worldPacket.WriteBit(CommerceSystemEnabled);
_worldPacket.WriteBit(TutorialsEnabled);
_worldPacket.WriteBit(NPETutorialsEnabled);
_worldPacket.WriteBit(TwitterEnabled);
- _worldPacket.WriteBit(CommerceSystemEnabled);
_worldPacket.WriteBit(Unk67);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
_worldPacket.WriteBit(RaceClassExpansionLevels.is_initialized());
_worldPacket.WriteBit(TokenBalanceEnabled);
+ _worldPacket.WriteBit(WarModeFeatureEnabled);
+ _worldPacket.WriteBit(ClubsEnabled);
+ _worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed);
+ _worldPacket.WriteBit(ClubsCharacterClubTypeAllowed);
+ _worldPacket.WriteBit(VoiceChatDisabledByParentalControl);
+ _worldPacket.WriteBit(VoiceChatMutedByParentalControl);
_worldPacket.FlushBits();
@@ -102,6 +110,12 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.append(RaceClassExpansionLevels->data(), RaceClassExpansionLevels->size());
}
+ {
+ _worldPacket.WriteBit(VoiceChatManagerSettings.Enabled);
+ _worldPacket << VoiceChatManagerSettings.BnetAccountGuid;
+ _worldPacket << VoiceChatManagerSettings.GuildGuid;
+ }
+
if (EuropaTicketSystemStatus)
{
_worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled);
@@ -141,7 +155,12 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
_worldPacket << int32(TokenPollTimeSeconds);
_worldPacket << int32(TokenRedeemIndex);
_worldPacket << int64(TokenBalanceAmount);
+ _worldPacket << int32(MaxCharactersPerRealm);
_worldPacket << uint32(BpayStoreProductDeliveryDelay);
+ _worldPacket << int32(ActiveCharacterUpgradeBoostType);
+ _worldPacket << int32(ActiveClassTrialBoostType);
+ _worldPacket << int32(MinimumExpansionLevel);
+ _worldPacket << int32(MaximumExpansionLevel);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index 74d40bf4e05..4d0812e7e67 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -80,6 +80,13 @@ namespace WorldPackets
float ThrottleDfBestPriority = 0.0f;
};
+ struct VoiceChatProxySettings
+ {
+ bool Enabled = false;
+ ObjectGuid BnetAccountGuid;
+ ObjectGuid GuildGuid;
+ };
+
FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { }
WorldPacket const* Write() override;
@@ -103,6 +110,7 @@ namespace WorldPackets
uint32 TokenRedeemIndex = 0;
int64 TokenBalanceAmount = 0;
uint32 BpayStoreProductDeliveryDelay = 0;
+ uint32 ClubsPresenceUpdateTimer = 0;
bool ItemRestorationButtonEnabled = false;
bool CharUndeleteEnabled = false; ///< Implemented
bool BpayStoreDisabledByParentalControls = false;
@@ -110,16 +118,22 @@ namespace WorldPackets
bool CommerceSystemEnabled = false;
bool Unk67 = false;
bool WillKickFromWorld = false;
-
bool RestrictedAccount = false;
bool TutorialsEnabled = false;
bool NPETutorialsEnabled = false;
bool KioskModeEnabled = false;
bool CompetitiveModeEnabled = false;
bool TokenBalanceEnabled = false;
+ bool WarModeFeatureEnabled = false;
+ bool ClubsEnabled = false;
+ bool ClubsBattleNetClubTypeAllowed = false;
+ bool ClubsCharacterClubTypeAllowed = false;
+ bool VoiceChatDisabledByParentalControl = false;
+ bool VoiceChatMutedByParentalControl = false;
Optional<std::vector<uint8>> RaceClassExpansionLevels;
SocialQueueConfig QuickJoinConfig;
+ VoiceChatProxySettings VoiceChatManagerSettings;
};
class FeatureSystemStatusGlueScreen final : public ServerPacket
@@ -147,7 +161,12 @@ namespace WorldPackets
int32 TokenPollTimeSeconds = 0; // NYI
int32 TokenRedeemIndex = 0; // NYI
int64 TokenBalanceAmount = 0; // NYI
+ int32 MaxCharactersPerRealm = 0;
uint32 BpayStoreProductDeliveryDelay = 0; // NYI
+ int32 ActiveCharacterUpgradeBoostType = 0; // NYI
+ int32 ActiveClassTrialBoostType = 0; // NYI
+ int32 MinimumExpansionLevel = 0;
+ int32 MaximumExpansionLevel = 0;
};
class MOTD final : public ServerPacket
diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp
index c5cbb0769a5..3344ef292fc 100644
--- a/src/server/game/Server/Packets/TalentPackets.cpp
+++ b/src/server/game/Server/Packets/TalentPackets.cpp
@@ -17,6 +17,20 @@
#include "TalentPackets.h"
+ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Talent::PvPTalent& pvpTalent)
+{
+ data >> pvpTalent.PvPTalentID;
+ data >> pvpTalent.Slot;
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::PvPTalent const& pvpTalent)
+{
+ data << uint16(pvpTalent.PvPTalentID);
+ data << uint8(pvpTalent.Slot);
+ return data;
+}
+
WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write()
{
_worldPacket << uint8(Info.ActiveGroup);
@@ -27,13 +41,13 @@ WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write()
{
_worldPacket << uint32(talentGroupInfo.SpecID);
_worldPacket << uint32(talentGroupInfo.TalentIDs.size());
- _worldPacket << uint32(talentGroupInfo.PvPTalentIDs.size());
+ _worldPacket << uint32(talentGroupInfo.PvPTalents.size());
- for (uint16 talentID : talentGroupInfo.TalentIDs)
- _worldPacket << uint16(talentID);
+ for (uint16 talent : talentGroupInfo.TalentIDs)
+ _worldPacket << uint16(talent);
- for (uint16 talentID : talentGroupInfo.PvPTalentIDs)
- _worldPacket << uint16(talentID);
+ for (PvPTalent talent : talentGroupInfo.PvPTalents)
+ _worldPacket << talent;
}
return &_worldPacket;
@@ -92,7 +106,7 @@ WorldPacket const* WorldPackets::Talent::ActiveGlyphs::Write()
void WorldPackets::Talent::LearnPvpTalents::Read()
{
- Talents.resize(_worldPacket.ReadBits(6));
+ Talents.resize(_worldPacket.read<uint32>());
for (uint32 i = 0; i < Talents.size(); ++i)
_worldPacket >> Talents[i];
}
@@ -102,8 +116,8 @@ WorldPacket const* WorldPackets::Talent::LearnPvpTalentsFailed::Write()
_worldPacket.WriteBits(Reason, 4);
_worldPacket << int32(SpellID);
_worldPacket << uint32(Talents.size());
- if (!Talents.empty())
- _worldPacket.append(Talents.data(), Talents.size());
+ for (PvPTalent pvpTalent : Talents)
+ _worldPacket << pvpTalent;
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h
index 920f724095e..6cbc8aca057 100644
--- a/src/server/game/Server/Packets/TalentPackets.h
+++ b/src/server/game/Server/Packets/TalentPackets.h
@@ -27,11 +27,17 @@ namespace WorldPackets
{
namespace Talent
{
+ struct PvPTalent
+ {
+ uint16 PvPTalentID = 0;
+ uint8 Slot = 0;
+ };
+
struct TalentGroupInfo
{
uint32 SpecID = 0;
std::vector<uint16> TalentIDs;
- std::vector<uint16> PvPTalentIDs;
+ std::vector<PvPTalent> PvPTalents;
};
struct TalentInfoUpdate
@@ -121,19 +127,19 @@ namespace WorldPackets
void Read() override;
- Array<uint16, 6> Talents;
+ Array<PvPTalent, 4> Talents;
};
class LearnPvpTalentsFailed final : public ServerPacket
{
public:
- LearnPvpTalentsFailed() : ServerPacket(SMSG_LEARN_PVP_TALENTS_FAILED, 1 + 4 + 4 + 2 * MAX_PVP_TALENT_TIERS) { }
+ LearnPvpTalentsFailed() : ServerPacket(SMSG_LEARN_PVP_TALENTS_FAILED, 1 + 4 + 4 + (2 + 1) * MAX_PVP_TALENT_SLOTS) { }
WorldPacket const* Write() override;
uint32 Reason = 0;
int32 SpellID = 0;
- std::vector<uint16> Talents;
+ std::vector<PvPTalent> Talents;
};
}
}
diff --git a/src/server/game/Server/Packets/TaxiPackets.cpp b/src/server/game/Server/Packets/TaxiPackets.cpp
index 9e8e552f363..a39e37425f7 100644
--- a/src/server/game/Server/Packets/TaxiPackets.cpp
+++ b/src/server/game/Server/Packets/TaxiPackets.cpp
@@ -36,8 +36,8 @@ WorldPacket const* WorldPackets::Taxi::ShowTaxiNodes::Write()
_worldPacket.WriteBit(WindowInfo.is_initialized());
_worldPacket.FlushBits();
- _worldPacket << uint32(CanLandNodes->size());
- _worldPacket << uint32(CanUseNodes->size());
+ _worldPacket << uint32(CanLandNodes.size());
+ _worldPacket << uint32(CanUseNodes.size());
if (WindowInfo.is_initialized())
{
@@ -45,8 +45,8 @@ WorldPacket const* WorldPackets::Taxi::ShowTaxiNodes::Write()
_worldPacket << uint32(WindowInfo->CurrentNode);
}
- _worldPacket.append(CanLandNodes->data(), CanLandNodes->size());
- _worldPacket.append(CanUseNodes->data(), CanUseNodes->size());
+ _worldPacket.append(CanLandNodes.data(), CanLandNodes.size());
+ _worldPacket.append(CanUseNodes.data(), CanUseNodes.size());
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/TaxiPackets.h b/src/server/game/Server/Packets/TaxiPackets.h
index 098ed293fbb..dbf730a8bd9 100644
--- a/src/server/game/Server/Packets/TaxiPackets.h
+++ b/src/server/game/Server/Packets/TaxiPackets.h
@@ -62,8 +62,8 @@ namespace WorldPackets
WorldPacket const* Write() override;
Optional<ShowTaxiNodesWindowInfo> WindowInfo;
- TaxiMask const* CanLandNodes = nullptr; // Nodes known by player
- TaxiMask const* CanUseNodes = nullptr; // Nodes available for use - this can temporarily disable a known node
+ TaxiMask CanLandNodes; // Nodes known by player
+ TaxiMask CanUseNodes; // Nodes available for use - this can temporarily disable a known node
};
class EnableTaxiNode final : public ClientPacket
@@ -110,7 +110,7 @@ namespace WorldPackets
class ActivateTaxiReply final : public ServerPacket
{
public:
- ActivateTaxiReply() : ServerPacket(SMSG_ACTIVATE_TAXI_REPLY, 4) { }
+ ActivateTaxiReply() : ServerPacket(SMSG_ACTIVATE_TAXI_REPLY, 1) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp
index cafb723c062..fe74550c77f 100644
--- a/src/server/game/Server/Packets/TicketPackets.cpp
+++ b/src/server/game/Server/Packets/TicketPackets.cpp
@@ -201,9 +201,17 @@ void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read()
bool hasGuildInfo = _worldPacket.ReadBit();
bool hasLFGListSearchResult = _worldPacket.ReadBit();
bool hasLFGListApplicant = _worldPacket.ReadBit();
+ bool hasClubMessage = _worldPacket.ReadBit();
_worldPacket.ResetBitPos();
+ if (hasClubMessage)
+ {
+ CommunityMessage = boost::in_place();
+ CommunityMessage->IsPlayerUsingVoice = _worldPacket.ReadBit();
+ _worldPacket.ResetBitPos();
+ }
+
if (hasMailInfo)
_worldPacket >> MailInfo;
diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h
index 6e25f3da4a9..5e7fc20f2eb 100644
--- a/src/server/game/Server/Packets/TicketPackets.h
+++ b/src/server/game/Server/Packets/TicketPackets.h
@@ -178,6 +178,11 @@ namespace WorldPackets
std::string Comment;
};
+ struct SupportTicketCommunityMessage
+ {
+ bool IsPlayerUsingVoice = false;
+ };
+
SupportTicketSubmitComplaint(WorldPacket&& packet) : ClientPacket(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, std::move(packet)) { }
void Read() override;
@@ -193,7 +198,7 @@ namespace WorldPackets
Optional<SupportTicketGuildInfo> GuildInfo;
Optional<SupportTicketLFGListSearchResult> LFGListSearchResult;
Optional<SupportTicketLFGListApplicant> LFGListApplicant;
-
+ Optional<SupportTicketCommunityMessage> CommunityMessage;
};
class Complaint final : public ClientPacket
diff --git a/src/server/game/Server/Packets/TotemPackets.cpp b/src/server/game/Server/Packets/TotemPackets.cpp
index 1bd8f1c915e..a7b042ca19a 100644
--- a/src/server/game/Server/Packets/TotemPackets.cpp
+++ b/src/server/game/Server/Packets/TotemPackets.cpp
@@ -25,7 +25,7 @@ void WorldPackets::Totem::TotemDestroyed::Read()
WorldPacket const* WorldPackets::Totem::TotemCreated::Write()
{
- _worldPacket << Slot;
+ _worldPacket << uint8(Slot);
_worldPacket << Totem;
_worldPacket << int32(Duration);
_worldPacket << int32(SpellID);
diff --git a/src/server/game/Server/Packets/TotemPackets.h b/src/server/game/Server/Packets/TotemPackets.h
index b438109825c..232b26f1cbb 100644
--- a/src/server/game/Server/Packets/TotemPackets.h
+++ b/src/server/game/Server/Packets/TotemPackets.h
@@ -46,7 +46,7 @@ namespace WorldPackets
ObjectGuid Totem;
int32 SpellID = 0;
int32 Duration = 0;
- int8 Slot = 0;
+ uint8 Slot = 0;
float TimeMod = 1.0f;
bool CannotDismiss = false;
};
diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
index 7d50891bc3e..da2c3972b12 100644
--- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp
+++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
@@ -41,8 +41,8 @@ WorldPacket const* WorldPackets::Transmogrification::TransmogCollectionUpdate::W
_worldPacket.WriteBit(IsFullUpdate);
_worldPacket.WriteBit(IsSetFavorite);
_worldPacket << uint32(FavoriteAppearances.size());
- for (uint32 itemModifiedAppearanceId : FavoriteAppearances)
- _worldPacket << uint32(itemModifiedAppearanceId);
+ if (!FavoriteAppearances.empty())
+ _worldPacket.append(FavoriteAppearances.data(), FavoriteAppearances.size());
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp
index afc6c3bdd28..9cfbc04e488 100644
--- a/src/server/game/Server/Packets/WhoPackets.cpp
+++ b/src/server/game/Server/Packets/WhoPackets.cpp
@@ -117,8 +117,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Who::WhoResponse const& r
data.WriteBits(response.Entries.size(), 6);
data.FlushBits();
- for (size_t i = 0; i < response.Entries.size(); ++i)
- data << response.Entries[i];
+ for (WorldPackets::Who::WhoEntry const& whoEntry : response.Entries)
+ data << whoEntry;
return data;
}
diff --git a/src/server/game/Server/Packets/WorldStatePackets.cpp b/src/server/game/Server/Packets/WorldStatePackets.cpp
index 0c202978de8..8129e2e8af0 100644
--- a/src/server/game/Server/Packets/WorldStatePackets.cpp
+++ b/src/server/game/Server/Packets/WorldStatePackets.cpp
@@ -24,14 +24,14 @@ WorldPacket const* WorldPackets::WorldState::InitWorldStates::Write()
{
_worldPacket.reserve(16 + Worldstates.size() * 8);
- _worldPacket << uint32(MapID);
- _worldPacket << uint32(AreaID);
- _worldPacket << uint32(SubareaID);
+ _worldPacket << int32(MapID);
+ _worldPacket << int32(AreaID);
+ _worldPacket << int32(SubareaID);
_worldPacket << uint32(Worldstates.size());
for (WorldStateInfo const& wsi : Worldstates)
{
- _worldPacket << uint32(wsi.VariableID);
+ _worldPacket << int32(wsi.VariableID);
_worldPacket << int32(wsi.Value);
}
diff --git a/src/server/game/Server/Packets/WorldStatePackets.h b/src/server/game/Server/Packets/WorldStatePackets.h
index ba7aa8fe282..766725fcf66 100644
--- a/src/server/game/Server/Packets/WorldStatePackets.h
+++ b/src/server/game/Server/Packets/WorldStatePackets.h
@@ -29,10 +29,10 @@ namespace WorldPackets
public:
struct WorldStateInfo
{
- WorldStateInfo(uint32 variableID, int32 value)
+ WorldStateInfo(int32 variableID, int32 value)
: VariableID(variableID), Value(value) { }
- uint32 VariableID;
+ int32 VariableID;
int32 Value;
};
@@ -40,9 +40,9 @@ namespace WorldPackets
WorldPacket const* Write() override;
- uint32 AreaID = 0; ///< ZoneId
- uint32 SubareaID = 0; ///< AreaId
- uint32 MapID = 0; ///< MapId
+ int32 AreaID = 0; ///< ZoneId
+ int32 SubareaID = 0; ///< AreaId
+ int32 MapID = 0; ///< MapId
std::vector<WorldStateInfo> Worldstates;
};
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 448b277aa16..2f75b82ec74 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -156,14 +156,12 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_ADD_TOY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddToy);
DEFINE_HANDLER(CMSG_ADVENTURE_JOURNAL_OPEN_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ADVENTURE_JOURNAL_START_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_ADVENTURE_MAP_POI_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ALTER_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAlterAppearance);
DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueryOpcode);
DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUEUE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueueOpcode);
DEFINE_HANDLER(CMSG_AREA_TRIGGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaTriggerOpcode);
DEFINE_HANDLER(CMSG_ARTIFACT_ADD_POWER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArtifactAddPower);
- DEFINE_HANDLER(CMSG_ARTIFACT_ADD_RELIC_TALENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_ARTIFACT_ATTUNE_PREVIEW_RELIC, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_ARTIFACT_ATTUNE_SOCKETED_RELIC, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ARTIFACT_SET_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArtifactSetAppearance);
DEFINE_HANDLER(CMSG_ATTACK_STOP, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackStopOpcode);
DEFINE_HANDLER(CMSG_ATTACK_SWING, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackSwingOpcode);
@@ -185,6 +183,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoEquipItemOpcode);
DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM_SLOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoEquipItemSlotOpcode);
DEFINE_HANDLER(CMSG_AUTO_STORE_BAG_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoStoreBagItemOpcode);
+ DEFINE_HANDLER(CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_AZERITE_EMPOWERED_ITEM_VIEWED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BANKER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBankerActivateOpcode);
DEFINE_HANDLER(CMSG_BATTLEFIELD_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldLeaveOpcode);
DEFINE_HANDLER(CMSG_BATTLEFIELD_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldListOpcode);
@@ -198,10 +198,12 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BATTLENET_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlenetRequest);
DEFINE_HANDLER(CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlenetRequestRealmListTicket);
DEFINE_HANDLER(CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_GET_PRODUCT_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_GET_PURCHASE_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_BATTLE_PAY_OPEN_CHECKOUT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -211,6 +213,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BATTLE_PAY_START_VAS_PURCHASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PET_CLEAR_FANFARE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PET_DELETE_PET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlePetDeletePet);
DEFINE_HANDLER(CMSG_BATTLE_PET_DELETE_PET_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -230,6 +233,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BLACK_MARKET_BID_ON_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketBidOnItem);
DEFINE_HANDLER(CMSG_BLACK_MARKET_OPEN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketOpen);
DEFINE_HANDLER(CMSG_BLACK_MARKET_REQUEST_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketRequestItems);
+ DEFINE_HANDLER(CMSG_BONUS_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BUG_REPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBugReportOpcode);
DEFINE_HANDLER(CMSG_BUSY_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBusyTradeOpcode);
DEFINE_HANDLER(CMSG_BUY_BACK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBuybackItem);
@@ -240,6 +244,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BUY_WOW_TOKEN_START, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CAGE_BATTLE_PET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCageBattlePet);
DEFINE_HANDLER(CMSG_CALENDAR_ADD_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarAddEvent);
+ DEFINE_HANDLER(CMSG_CALENDAR_COMMUNITY_FILTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCommunityFilter);
DEFINE_HANDLER(CMSG_CALENDAR_COMPLAIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarComplain);
DEFINE_HANDLER(CMSG_CALENDAR_COPY_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCopyEvent);
DEFINE_HANDLER(CMSG_CALENDAR_EVENT_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventInvite);
@@ -250,7 +255,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CALENDAR_GET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetCalendar);
DEFINE_HANDLER(CMSG_CALENDAR_GET_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetEvent);
DEFINE_HANDLER(CMSG_CALENDAR_GET_NUM_PENDING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetNumPending);
- DEFINE_HANDLER(CMSG_CALENDAR_GUILD_FILTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGuildFilter);
DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarRemoveEvent);
DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventRemoveInvite);
DEFINE_HANDLER(CMSG_CALENDAR_UPDATE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarUpdateEvent);
@@ -271,19 +275,15 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_LEADERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CHANGE_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSubGroupOpcode);
DEFINE_HANDLER(CMSG_CHARACTER_RENAME_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRenameOpcode);
DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCustomizeOpcode);
DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharDeleteOpcode);
DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRaceOrFactionChangeOpcode);
- DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageChannelOpcode);
- DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode);
- DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode);
- DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_OFFICER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode);
- DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_PARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode);
- DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_RAID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode);
- DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_WHISPER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageWhisperOpcode);
+ DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode);
+ DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_TARGETED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageTargetedOpcode);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_ANNOUNCEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_BAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_DECLINE_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand);
@@ -291,16 +291,13 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_KICK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand);
- DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
- DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MUTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_OWNER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_PASSWORD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPassword);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_SET_OWNER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_SILENCE_ALL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNBAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNMODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
- DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNMUTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNSILENCE_ALL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand);
DEFINE_HANDLER(CMSG_CHAT_JOIN_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleJoinChannel);
DEFINE_HANDLER(CMSG_CHAT_LEAVE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveChannel);
@@ -328,6 +325,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode);
DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePortGraveyard);
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_CLUB_INVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COLLECTION_ITEM_SET_FAVORITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCollectionItemSetFavorite);
DEFINE_HANDLER(CMSG_COMMENTATOR_ENABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COMMENTATOR_ENTER_INSTANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -380,6 +379,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_ENUM_CHARACTERS, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharEnumOpcode);
DEFINE_HANDLER(CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteEnumOpcode);
DEFINE_HANDLER(CMSG_FAR_SIGHT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleFarSightOpcode);
+ DEFINE_HANDLER(CMSG_GAME_EVENT_DEBUG_DISABLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GAME_EVENT_DEBUG_ENABLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GAME_OBJ_REPORT_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGameobjectReportUse);
DEFINE_HANDLER(CMSG_GAME_OBJ_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGameObjectUseOpcode);
DEFINE_HANDLER(CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -407,6 +408,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_GARRISON_START_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_SWAP_BUILDINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GENERATE_RANDOM_CHARACTER_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomizeCharNameOpcode);
+ DEFINE_HANDLER(CMSG_GET_ACCOUNT_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GET_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GET_GARRISON_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetGarrisonInfo);
DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetItemPurchaseData);
@@ -431,7 +433,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_GUILD_BANK_QUERY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankQueryTab);
DEFINE_HANDLER(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankMoneyWithdrawn);
DEFINE_HANDLER(CMSG_GUILD_BANK_SET_TAB_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSetTabText);
- DEFINE_HANDLER(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSwapItems);
DEFINE_HANDLER(CMSG_GUILD_BANK_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankTextQuery);
DEFINE_HANDLER(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankUpdateTab);
DEFINE_HANDLER(CMSG_GUILD_BANK_WITHDRAW_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankWithdrawMoney);
@@ -473,6 +474,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_INSPECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectOpcode);
DEFINE_HANDLER(CMSG_INSPECT_PVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectPVP);
DEFINE_HANDLER(CMSG_INSTANCE_LOCK_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInstanceLockResponse);
+ DEFINE_HANDLER(CMSG_ISLAND_QUEUE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ITEM_PURCHASE_REFUND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleItemRefund);
DEFINE_HANDLER(CMSG_ITEM_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleItemTextQuery);
DEFINE_HANDLER(CMSG_JOIN_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -544,6 +546,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOVE_FEATHER_FALL_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
+ DEFINE_HANDLER(CMSG_MOVE_FORCE_MOVEMENT_FORCE_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
DEFINE_HANDLER(CMSG_MOVE_FORCE_ROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
@@ -634,8 +637,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_PROTOCOL_MISMATCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PUSH_QUEST_TO_PARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty);
DEFINE_HANDLER(CMSG_PVP_LOG_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePVPLogDataOpcode);
- DEFINE_HANDLER(CMSG_PVP_PRESTIGE_RANK_UP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePvpPrestigeRankUp);
DEFINE_HANDLER(CMSG_QUERY_BATTLE_PET_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_QUERY_COMMUNITY_NAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryCorpseLocation);
DEFINE_HANDLER(CMSG_QUERY_CORPSE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryCorpseTransport);
DEFINE_HANDLER(CMSG_QUERY_COUNTDOWN_TIMER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -652,10 +655,10 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUERY_PLAYER_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleNameQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_QUEST_COMPLETION_NPCS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryQuestCompletionNPCs);
DEFINE_HANDLER(CMSG_QUERY_QUEST_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestQueryOpcode);
- DEFINE_HANDLER(CMSG_QUERY_QUEST_REWARDS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_REALM_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryRealmName);
DEFINE_HANDLER(CMSG_QUERY_SCENARIO_POI, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryScenarioPOI);
DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryTimeOpcode);
+ DEFINE_HANDLER(CMSG_QUERY_TREASURE_PICKER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleVoidStorageQuery);
DEFINE_HANDLER(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept);
DEFINE_HANDLER(CMSG_QUEST_GIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverAcceptQuestOpcode);
@@ -696,6 +699,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestBattlefieldStatusOpcode);
DEFINE_HANDLER(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCategoryCooldowns);
DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCemeteryList);
+ DEFINE_HANDLER(CMSG_REQUEST_CHALLENGE_MODE_AFFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_CONSUMPTION_CONVERSION_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_CROWD_CONTROL_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -748,7 +752,6 @@ 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_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_CONTACT_NOTES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode);
DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_DIFFICULTY_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -757,6 +760,7 @@ void OpcodeTable::Initialize()
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);
DEFINE_HANDLER(CMSG_SET_FACTION_NOT_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionNotAtWar);
+ DEFINE_HANDLER(CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_LFG_BONUS_FACTION_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_LOOT_METHOD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetLootMethodOpcode);
@@ -779,6 +783,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_TRADE_GOLD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeGoldOpcode);
DEFINE_HANDLER(CMSG_SET_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeItemOpcode);
DEFINE_HANDLER(CMSG_SET_USING_PARTY_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SET_WAR_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_WATCHED_FACTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetWatchedFactionOpcode);
DEFINE_HANDLER(CMSG_SHOW_TRADE_SKILL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SIGN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSignPetition);
@@ -850,6 +855,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_USE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUseItemOpcode);
DEFINE_HANDLER(CMSG_USE_TOY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUseToy);
DEFINE_HANDLER(CMSG_VIOLENCE_LEVEL, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleViolenceLevel);
+ DEFINE_HANDLER(CMSG_VOICE_CHAT_JOIN_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_VOICE_CHAT_LOGIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VOID_STORAGE_TRANSFER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleVoidStorageTransfer);
DEFINE_HANDLER(CMSG_WARDEN_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleWardenData);
DEFINE_HANDLER(CMSG_WHO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWhoOpcode);
@@ -878,6 +885,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE, 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);
@@ -890,12 +898,11 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_DENIED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_NO_CORPSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_CROWD_CONTROL_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_FORGE_OPENED, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_KNOWLEDGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_RESPEC_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_TRAITS_REFUNDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_XP_GAIN, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -920,6 +927,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_CHALLENGE, STATUS_NEVER, 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_EMPOWERED_ITEM_RESPEC_OPEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_XP_GAIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BAN_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -942,6 +951,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_REALM_LIST_TICKET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_SET_SESSION_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_UPDATE_SESSION_KEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_ACK_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_CONFIRM_PURCHASE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -952,6 +962,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_MOUNT_DELIVERED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_OPEN_CHECKOUT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_PURCHASE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -991,11 +1002,13 @@ void OpcodeTable::Initialize()
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);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BONUS_ROLL_EMPTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BONUS_ROLL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BOSS_KILL_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BREAK_TARGET, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BROADCAST_ACHIEVEMENT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_SUCCEEDED, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_VERSION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_CLEAR_PENDING_ACTION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1027,10 +1040,11 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAN_DUEL_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CATEGORY_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_AFFIXES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_ALL_MAP_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_MAP_STATS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_NEW_PLAYER_SEASON_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1085,6 +1099,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONNECT_TO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTRIBUTION_COLLECTOR_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1121,6 +1136,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_COUNTDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_IN_BOUNDS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_OPPONENT_SELECTED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_OUT_OF_BOUNDS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_REQUESTED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_WINNER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1148,9 +1164,11 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_OBJECT_RELINK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FRIEND_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_EVENT_DEBUG_INITIALIZE, 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_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_MULTI_TRANSITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, STATUS_UNHANDLED, 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);
@@ -1170,6 +1188,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CREATE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_DELETE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CATEGORIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ABILITIES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_DURABILITY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1218,6 +1237,7 @@ void OpcodeTable::Initialize()
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_POI, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_TEXT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_ACTION_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1306,6 +1326,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_CHANGE_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_AZERITE_XP_GAIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_OPEN_QUEUE_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_IS_QUEST_COMPLETE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1349,6 +1372,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_POST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_RECRUITS, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIGHTNING_STORM_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIGHTNING_STORM_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1362,6 +1387,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGOUT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOG_XP_GAIN, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_ALL_PASSED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_LEGACY_RULES_IN_EFFECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_LIST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_MONEY_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_RELEASE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1412,6 +1438,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_HOVERING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_LAND_WALK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_MOVEMENT_FORCE_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_NORMAL_FALL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1462,6 +1489,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_KNOCK_BACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_MOVEMENT_FORCE_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1493,7 +1521,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1552,7 +1580,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_TIME_WARNING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
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_PRESTIGE_AND_HONOR_INVOLUNTARILY_CHANGED, 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);
@@ -1563,6 +1590,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_SEASON, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_COMMUNITY_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_CREATURE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GAME_OBJECT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1574,8 +1602,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TREASURE_PICKER_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_FORCE_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1629,7 +1657,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_BRAWL_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_REWARDS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_AREA_TRIGGER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1668,7 +1695,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_HISTORY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_UNLEARN_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_FIRST_ACHIEVEMENT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_FIRST_ACHIEVEMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SETUP_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1809,6 +1835,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_FINISH, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARFRONT_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEATHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index c39cd5ca314..9164e453ad7 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -46,38 +46,36 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
CMSG_ACCEPT_GUILD_INVITE = 0x35FC,
- CMSG_ACCEPT_LEVEL_GRANT = 0x34FD,
+ CMSG_ACCEPT_LEVEL_GRANT = 0x34FA,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
- CMSG_ACTIVATE_TAXI = 0x34AE,
+ CMSG_ACTIVATE_TAXI = 0x34AB,
CMSG_ADDON_LIST = 0x35D8,
CMSG_ADD_BATTLENET_FRIEND = 0x365A,
- CMSG_ADD_FRIEND = 0x36CF,
- CMSG_ADD_IGNORE = 0x36D3,
- CMSG_ADD_TOY = 0x328B,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x31F9,
- CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x332E,
- CMSG_ALTER_APPEARANCE = 0x34F9,
- CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B3,
- CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B4,
- CMSG_AREA_TRIGGER = 0x31CD,
- CMSG_ARTIFACT_ADD_POWER = 0x31A5,
- CMSG_ARTIFACT_ADD_RELIC_TALENT = 0x31A8,
- CMSG_ARTIFACT_ATTUNE_PREVIEW_RELIC = 0x31A9,
- CMSG_ARTIFACT_ATTUNE_SOCKETED_RELIC = 0x31AA,
- CMSG_ARTIFACT_SET_APPEARANCE = 0x31A7,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3200,
- CMSG_ATTACK_STOP = 0x324D,
- CMSG_ATTACK_SWING = 0x324C,
- CMSG_AUCTION_HELLO_REQUEST = 0x34CF,
- CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x34D5,
- CMSG_AUCTION_LIST_ITEMS = 0x34D2,
- CMSG_AUCTION_LIST_OWNER_ITEMS = 0x34D4,
- CMSG_AUCTION_LIST_PENDING_SALES = 0x34D7,
- CMSG_AUCTION_PLACE_BID = 0x34D6,
- CMSG_AUCTION_REMOVE_ITEM = 0x34D1,
- CMSG_AUCTION_REPLICATE_ITEMS = 0x34D3,
- CMSG_AUCTION_SELL_ITEM = 0x34D0,
+ CMSG_ADD_FRIEND = 0x36D0,
+ CMSG_ADD_IGNORE = 0x36D4,
+ CMSG_ADD_TOY = 0x3298,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3201,
+ CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x333D,
+ CMSG_ADVENTURE_MAP_POI_QUERY = 0x3244,
+ CMSG_ALTER_APPEARANCE = 0x34F6,
+ CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B0,
+ CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B1,
+ CMSG_AREA_TRIGGER = 0x31D5,
+ CMSG_ARTIFACT_ADD_POWER = 0x31A9,
+ CMSG_ARTIFACT_SET_APPEARANCE = 0x31AB,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3209,
+ CMSG_ATTACK_STOP = 0x3256,
+ CMSG_ATTACK_SWING = 0x3255,
+ CMSG_AUCTION_HELLO_REQUEST = 0x34CB,
+ CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x34D1,
+ CMSG_AUCTION_LIST_ITEMS = 0x34CE,
+ CMSG_AUCTION_LIST_OWNER_ITEMS = 0x34D0,
+ CMSG_AUCTION_LIST_PENDING_SALES = 0x34D3,
+ CMSG_AUCTION_PLACE_BID = 0x34D2,
+ CMSG_AUCTION_REMOVE_ITEM = 0x34CD,
+ CMSG_AUCTION_REPLICATE_ITEMS = 0x34CF,
+ CMSG_AUCTION_SELL_ITEM = 0x34CC,
CMSG_AUTH_CONTINUED_SESSION = 0x3766,
CMSG_AUTH_SESSION = 0x3765,
CMSG_AUTOBANK_ITEM = 0x3996,
@@ -87,32 +85,37 @@ enum OpcodeClient : uint16
CMSG_AUTO_EQUIP_ITEM = 0x399A,
CMSG_AUTO_EQUIP_ITEM_SLOT = 0x399F,
CMSG_AUTO_STORE_BAG_ITEM = 0x399B,
- CMSG_BANKER_ACTIVATE = 0x34B6,
- CMSG_BATTLEFIELD_LEAVE = 0x3171,
- CMSG_BATTLEFIELD_LIST = 0x317D,
- CMSG_BATTLEFIELD_PORT = 0x3529,
- CMSG_BATTLEMASTER_HELLO = 0x32A1,
- CMSG_BATTLEMASTER_JOIN = 0x3524,
- CMSG_BATTLEMASTER_JOIN_ARENA = 0x3525,
- CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3527,
- CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3526,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D2,
- CMSG_BATTLENET_REQUEST = 0x36F6,
- CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36F7,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CA,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C9,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C0,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BA,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BB,
- CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C3,
- CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C1,
- CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x3708,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3707,
- CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x3709,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x36F2,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F3,
- CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C2,
- CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x370A,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x335B,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3347,
+ CMSG_BANKER_ACTIVATE = 0x34B3,
+ CMSG_BATTLEFIELD_LEAVE = 0x3172,
+ CMSG_BATTLEFIELD_LIST = 0x317E,
+ CMSG_BATTLEFIELD_PORT = 0x3527,
+ CMSG_BATTLEMASTER_HELLO = 0x32B0,
+ CMSG_BATTLEMASTER_JOIN = 0x3522,
+ CMSG_BATTLEMASTER_JOIN_ARENA = 0x3523,
+ CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3525,
+ CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3524,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D3,
+ CMSG_BATTLENET_REQUEST = 0x36F7,
+ CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36FB,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CB,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3716,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CA,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C1,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BB,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BC,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370F,
+ CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C4,
+ CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C2,
+ CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x370C,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x370B,
+ CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x370D,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x36F3,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F4,
+ CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C3,
+ CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x370E,
+ CMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x36F2,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C,
CMSG_BATTLE_PET_DELETE_PET = 0x3624,
CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3625,
@@ -122,23 +125,25 @@ enum OpcodeClient : uint16
CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362B,
CMSG_BATTLE_PET_SET_FLAGS = 0x362F,
CMSG_BATTLE_PET_SUMMON = 0x3628,
- CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31D7,
- CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31D6,
+ CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31DF,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31DE,
CMSG_BEGIN_TRADE = 0x3157,
- CMSG_BINDER_ACTIVATE = 0x34B5,
- CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3531,
- CMSG_BLACK_MARKET_OPEN = 0x352F,
- CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3530,
+ CMSG_BINDER_ACTIVATE = 0x34B2,
+ CMSG_BLACK_MARKET_BID_ON_ITEM = 0x352F,
+ CMSG_BLACK_MARKET_OPEN = 0x352D,
+ CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x352E,
+ CMSG_BONUS_ROLL = 0x335C,
CMSG_BUG_REPORT = 0x3686,
CMSG_BUSY_TRADE = 0x3158,
- CMSG_BUY_BACK_ITEM = 0x34A7,
- CMSG_BUY_BANK_SLOT = 0x34B7,
- CMSG_BUY_ITEM = 0x34A6,
- CMSG_BUY_REAGENT_BANK = 0x34B8,
- CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36EB,
- CMSG_BUY_WOW_TOKEN_START = 0x36EA,
- CMSG_CAGE_BATTLE_PET = 0x31E8,
+ CMSG_BUY_BACK_ITEM = 0x34A4,
+ CMSG_BUY_BANK_SLOT = 0x34B4,
+ CMSG_BUY_ITEM = 0x34A3,
+ CMSG_BUY_REAGENT_BANK = 0x34B5,
+ CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36EC,
+ CMSG_BUY_WOW_TOKEN_START = 0x36EB,
+ CMSG_CAGE_BATTLE_PET = 0x31F0,
CMSG_CALENDAR_ADD_EVENT = 0x367D,
+ CMSG_CALENDAR_COMMUNITY_FILTER = 0x3671,
CMSG_CALENDAR_COMPLAIN = 0x3679,
CMSG_CALENDAR_COPY_EVENT = 0x3678,
CMSG_CALENDAR_EVENT_INVITE = 0x3672,
@@ -149,84 +154,78 @@ enum OpcodeClient : uint16
CMSG_CALENDAR_GET = 0x366F,
CMSG_CALENDAR_GET_EVENT = 0x3670,
CMSG_CALENDAR_GET_NUM_PENDING = 0x367A,
- CMSG_CALENDAR_GUILD_FILTER = 0x3671,
CMSG_CALENDAR_REMOVE_EVENT = 0x3677,
CMSG_CALENDAR_REMOVE_INVITE = 0x3673,
CMSG_CALENDAR_UPDATE_EVENT = 0x367E,
- CMSG_CANCEL_AURA = 0x31AC,
- CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34EB,
- CMSG_CANCEL_CAST = 0x3291,
- CMSG_CANCEL_CHANNELLING = 0x325C,
- CMSG_CANCEL_GROWTH_AURA = 0x3261,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3208,
- CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AB,
- CMSG_CANCEL_MOUNT_AURA = 0x3272,
- CMSG_CANCEL_QUEUED_SPELL = 0x317E,
- CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34F6,
+ CMSG_CANCEL_AURA = 0x31AD,
+ CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34E8,
+ CMSG_CANCEL_CAST = 0x329E,
+ CMSG_CANCEL_CHANNELLING = 0x326A,
+ CMSG_CANCEL_GROWTH_AURA = 0x326F,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3211,
+ CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AC,
+ CMSG_CANCEL_MOUNT_AURA = 0x3280,
+ CMSG_CANCEL_QUEUED_SPELL = 0x317F,
+ CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34F3,
CMSG_CANCEL_TRADE = 0x315C,
CMSG_CAN_DUEL = 0x3662,
- CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x3706,
- CMSG_CAST_SPELL = 0x328E,
+ CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x370A,
+ CMSG_CAST_SPELL = 0x329B,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F,
CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS = 0x308E,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x3312,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x32F4,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x3321,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3322,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3303,
CMSG_CHANGE_SUB_GROUP = 0x364C,
- CMSG_CHARACTER_RENAME_REQUEST = 0x36BE,
- CMSG_CHAR_CUSTOMIZE = 0x368E,
- CMSG_CHAR_DELETE = 0x369B,
- CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3694,
- CMSG_CHAT_ADDON_MESSAGE_CHANNEL = 0x37D0,
- CMSG_CHAT_ADDON_MESSAGE_GUILD = 0x37D4,
- CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT = 0x37F3,
- CMSG_CHAT_ADDON_MESSAGE_OFFICER = 0x37D6,
- CMSG_CHAT_ADDON_MESSAGE_PARTY = 0x37EF,
- CMSG_CHAT_ADDON_MESSAGE_RAID = 0x37F1,
- CMSG_CHAT_ADDON_MESSAGE_WHISPER = 0x37D2,
- CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E7,
- CMSG_CHAT_CHANNEL_BAN = 0x37E5,
- CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37EA,
- CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x37DA,
- CMSG_CHAT_CHANNEL_INVITE = 0x37E3,
- CMSG_CHAT_CHANNEL_KICK = 0x37E4,
- CMSG_CHAT_CHANNEL_LIST = 0x37D9,
- CMSG_CHAT_CHANNEL_MODERATE = 0x37DE,
- CMSG_CHAT_CHANNEL_MODERATOR = 0x37DF,
- CMSG_CHAT_CHANNEL_MUTE = 0x37E1,
- CMSG_CHAT_CHANNEL_OWNER = 0x37DD,
- CMSG_CHAT_CHANNEL_PASSWORD = 0x37DB,
- CMSG_CHAT_CHANNEL_SET_OWNER = 0x37DC,
- CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x37E8,
- CMSG_CHAT_CHANNEL_UNBAN = 0x37E6,
- CMSG_CHAT_CHANNEL_UNMODERATOR = 0x37E0,
- CMSG_CHAT_CHANNEL_UNMUTE = 0x37E2,
- CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x37E9,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x36BF,
+ CMSG_CHAR_CUSTOMIZE = 0x368F,
+ CMSG_CHAR_DELETE = 0x369C,
+ CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3695,
+ CMSG_CHAT_ADDON_MESSAGE = 0x37EE,
+ CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF,
+ CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3,
+ CMSG_CHAT_CHANNEL_BAN = 0x37E1,
+ CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37E6,
+ CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x37D6,
+ CMSG_CHAT_CHANNEL_INVITE = 0x37DF,
+ CMSG_CHAT_CHANNEL_KICK = 0x37E0,
+ CMSG_CHAT_CHANNEL_LIST = 0x37D5,
+ CMSG_CHAT_CHANNEL_MODERATOR = 0x37DB,
+ CMSG_CHAT_CHANNEL_OWNER = 0x37D9,
+ CMSG_CHAT_CHANNEL_PASSWORD = 0x37D7,
+ CMSG_CHAT_CHANNEL_SET_OWNER = 0x37D8,
+ CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x37E4,
+ CMSG_CHAT_CHANNEL_UNBAN = 0x37E2,
+ CMSG_CHAT_CHANNEL_UNMODERATOR = 0x37DC,
+ CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x37E5,
CMSG_CHAT_JOIN_CHANNEL = 0x37C8,
CMSG_CHAT_LEAVE_CHANNEL = 0x37C9,
- CMSG_CHAT_MESSAGE_AFK = 0x37D7,
+ CMSG_CHAT_MESSAGE_AFK = 0x37D3,
CMSG_CHAT_MESSAGE_CHANNEL = 0x37CF,
- CMSG_CHAT_MESSAGE_DND = 0x37D8,
- CMSG_CHAT_MESSAGE_EMOTE = 0x37EC,
- CMSG_CHAT_MESSAGE_GUILD = 0x37D3,
- CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x37F2,
- CMSG_CHAT_MESSAGE_OFFICER = 0x37D5,
- CMSG_CHAT_MESSAGE_PARTY = 0x37EE,
- CMSG_CHAT_MESSAGE_RAID = 0x37F0,
- CMSG_CHAT_MESSAGE_RAID_WARNING = 0x37F4,
- CMSG_CHAT_MESSAGE_SAY = 0x37EB,
- CMSG_CHAT_MESSAGE_WHISPER = 0x37D1,
- CMSG_CHAT_MESSAGE_YELL = 0x37ED,
+ CMSG_CHAT_MESSAGE_DND = 0x37D4,
+ CMSG_CHAT_MESSAGE_EMOTE = 0x37E8,
+ CMSG_CHAT_MESSAGE_GUILD = 0x37D1,
+ CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x37EC,
+ CMSG_CHAT_MESSAGE_OFFICER = 0x37D2,
+ CMSG_CHAT_MESSAGE_PARTY = 0x37EA,
+ CMSG_CHAT_MESSAGE_RAID = 0x37EB,
+ CMSG_CHAT_MESSAGE_RAID_WARNING = 0x37ED,
+ CMSG_CHAT_MESSAGE_SAY = 0x37E7,
+ CMSG_CHAT_MESSAGE_WHISPER = 0x37D0,
+ CMSG_CHAT_MESSAGE_YELL = 0x37E9,
CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x37CD,
CMSG_CHAT_REPORT_FILTERED = 0x37CC,
CMSG_CHAT_REPORT_IGNORED = 0x37CB,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
- CMSG_CHECK_RAF_EMAIL_ENABLED = 0x36CB,
- CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36E9,
- CMSG_CHOICE_RESPONSE = 0x3293,
- CMSG_CLEAR_RAID_MARKER = 0x31A1,
+ CMSG_CHECK_RAF_EMAIL_ENABLED = 0x36CC,
+ CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36EA,
+ CMSG_CHOICE_RESPONSE = 0x32A0,
+ CMSG_CLEAR_RAID_MARKER = 0x31A5,
CMSG_CLEAR_TRADE_ITEM = 0x315E,
- CMSG_CLIENT_PORT_GRAVEYARD = 0x352B,
- CMSG_CLOSE_INTERACTION = 0x3496,
+ CMSG_CLIENT_PORT_GRAVEYARD = 0x3529,
+ CMSG_CLOSE_INTERACTION = 0x3493,
+ CMSG_CLOSE_QUEST_CHOICE = 0x32A1,
+ CMSG_CLUB_INVITE = 0x36FA,
CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3632,
CMSG_COMMENTATOR_ENABLE = 0x35F0,
CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4,
@@ -236,26 +235,26 @@ enum OpcodeClient : uint16
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2,
CMSG_COMMENTATOR_START_WARGAME = 0x35EF,
CMSG_COMPLAINT = 0x366C,
- CMSG_COMPLETE_CINEMATIC = 0x3549,
- CMSG_COMPLETE_MOVIE = 0x34E1,
- CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31A6,
- CMSG_CONFIRM_RESPEC_WIPE = 0x3202,
+ CMSG_COMPLETE_CINEMATIC = 0x3547,
+ CMSG_COMPLETE_MOVIE = 0x34DE,
+ CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AA,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x320B,
CMSG_CONNECT_TO_FAILED = 0x35D4,
- CMSG_CONTRIBUTION_CONTRIBUTE = 0x3558,
- CMSG_CONTRIBUTION_GET_STATE = 0x3559,
- CMSG_CONVERSATION_LINE_STARTED = 0x354A,
- CMSG_CONVERT_CONSUMPTION_TIME = 0x36F9,
+ CMSG_CONTRIBUTION_CONTRIBUTE = 0x3557,
+ CMSG_CONTRIBUTION_GET_STATE = 0x3558,
+ CMSG_CONVERSATION_LINE_STARTED = 0x3548,
+ CMSG_CONVERT_CONSUMPTION_TIME = 0x36FD,
CMSG_CONVERT_RAID = 0x364E,
CMSG_CREATE_CHARACTER = 0x3643,
- CMSG_CREATE_SHIPMENT = 0x32E0,
+ CMSG_CREATE_SHIPMENT = 0x32EF,
CMSG_DB_QUERY_BULK = 0x35E4,
- CMSG_DECLINE_GUILD_INVITES = 0x3522,
- CMSG_DECLINE_PETITION = 0x3538,
- CMSG_DELETE_EQUIPMENT_SET = 0x3510,
- CMSG_DEL_FRIEND = 0x36D0,
- CMSG_DEL_IGNORE = 0x36D4,
- CMSG_DEPOSIT_REAGENT_BANK = 0x331B,
- CMSG_DESTROY_ITEM = 0x3285,
+ CMSG_DECLINE_GUILD_INVITES = 0x3520,
+ CMSG_DECLINE_PETITION = 0x3536,
+ CMSG_DELETE_EQUIPMENT_SET = 0x350D,
+ CMSG_DEL_FRIEND = 0x36D1,
+ CMSG_DEL_IGNORE = 0x36D5,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x332A,
+ CMSG_DESTROY_ITEM = 0x3292,
CMSG_DF_BOOT_PLAYER_VOTE = 0x3615,
CMSG_DF_GET_JOIN_STATUS = 0x3613,
CMSG_DF_GET_SYSTEM_INFO = 0x3612,
@@ -266,74 +265,76 @@ enum OpcodeClient : uint16
CMSG_DF_SET_ROLES = 0x3614,
CMSG_DF_TELEPORT = 0x3616,
CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3C,
- CMSG_DISMISS_CRITTER = 0x34FF,
- CMSG_DO_MASTER_LOOT_ROLL = 0x3207,
+ CMSG_DISMISS_CRITTER = 0x34FC,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x3210,
CMSG_DO_READY_CHECK = 0x3633,
- CMSG_DUEL_RESPONSE = 0x34E6,
- CMSG_EJECT_PASSENGER = 0x3230,
- CMSG_EMOTE = 0x3545,
+ CMSG_DUEL_RESPONSE = 0x34E3,
+ CMSG_EJECT_PASSENGER = 0x3239,
+ CMSG_EMOTE = 0x3543,
CMSG_ENABLE_ENCRYPTION_ACK = 0x3767,
CMSG_ENABLE_NAGLE = 0x376B,
- CMSG_ENABLE_TAXI_NODE = 0x34AC,
- CMSG_ENGINE_SURVEY = 0x36E3,
+ CMSG_ENABLE_TAXI_NODE = 0x34A9,
+ CMSG_ENGINE_SURVEY = 0x36E4,
CMSG_ENUM_CHARACTERS = 0x35E8,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DD,
- CMSG_FAR_SIGHT = 0x34EC,
- CMSG_GAME_OBJ_REPORT_USE = 0x34F3,
- CMSG_GAME_OBJ_USE = 0x34F2,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32CB,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32BC,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x330E,
- CMSG_GARRISON_COMPLETE_MISSION = 0x3301,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x32CE,
- CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32DC,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x3334,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3303,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x32B8,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32D0,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x32F8,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32CC,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x32CD,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32B7,
- CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32D5,
- CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32DF,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32DE,
- CMSG_GARRISON_RESEARCH_TALENT = 0x32D1,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32B9,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32C9,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32C5,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32CF,
- CMSG_GARRISON_START_MISSION = 0x3300,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x32BD,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DE,
+ CMSG_FAR_SIGHT = 0x34E9,
+ CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B0,
+ CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31AF,
+ CMSG_GAME_OBJ_REPORT_USE = 0x34F0,
+ CMSG_GAME_OBJ_USE = 0x34EF,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32DA,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32CB,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x331D,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x3310,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x32DD,
+ CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32EB,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x3341,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3312,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x32C7,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32DF,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3307,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32DB,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x32DC,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32C6,
+ CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32E4,
+ CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32EE,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32ED,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x32E0,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32C8,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32D8,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32D4,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32DE,
+ CMSG_GARRISON_START_MISSION = 0x330F,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x32CC,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B7,
CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3683,
- CMSG_GET_GARRISON_INFO = 0x32B2,
- CMSG_GET_ITEM_PURCHASE_DATA = 0x3533,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x3289,
+ CMSG_GET_GARRISON_INFO = 0x32C1,
+ CMSG_GET_ITEM_PURCHASE_DATA = 0x3531,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x3296,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
- CMSG_GET_REMAINING_GAME_TIME = 0x36EC,
- CMSG_GET_TROPHY_LIST = 0x32F1,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DF,
- CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3692,
- CMSG_GM_TICKET_GET_CASE_STATUS = 0x3691,
- CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3690,
- CMSG_GOSSIP_SELECT_OPTION = 0x3497,
- CMSG_GRANT_LEVEL = 0x34FB,
+ CMSG_GET_REMAINING_GAME_TIME = 0x36ED,
+ CMSG_GET_TROPHY_LIST = 0x3300,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E0,
+ CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3693,
+ CMSG_GM_TICKET_GET_CASE_STATUS = 0x3692,
+ CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3691,
+ CMSG_GOSSIP_SELECT_OPTION = 0x3494,
+ CMSG_GRANT_LEVEL = 0x34F8,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308D,
CMSG_GUILD_ADD_RANK = 0x3064,
CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x305F,
CMSG_GUILD_AUTO_DECLINE_INVITATION = 0x3061,
- CMSG_GUILD_BANK_ACTIVATE = 0x34B9,
- CMSG_GUILD_BANK_BUY_TAB = 0x34C8,
- CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34CA,
+ CMSG_GUILD_BANK_ACTIVATE = 0x34B6,
+ CMSG_GUILD_BANK_BUY_TAB = 0x34C4,
+ CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34C6,
CMSG_GUILD_BANK_LOG_QUERY = 0x3082,
- CMSG_GUILD_BANK_QUERY_TAB = 0x34C7,
+ CMSG_GUILD_BANK_QUERY_TAB = 0x34C3,
CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x3083,
CMSG_GUILD_BANK_SET_TAB_TEXT = 0x3086,
- CMSG_GUILD_BANK_SWAP_ITEMS = 0x34BA,
CMSG_GUILD_BANK_TEXT_QUERY = 0x3087,
- CMSG_GUILD_BANK_UPDATE_TAB = 0x34C9,
- CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34CB,
+ CMSG_GUILD_BANK_UPDATE_TAB = 0x34C5,
+ CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34C7,
CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x307B,
CMSG_GUILD_CHANGE_NAME_REQUEST = 0x307E,
CMSG_GUILD_DECLINE_INVITATION = 0x3060,
@@ -358,40 +359,41 @@ enum OpcodeClient : uint16
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3088,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x306F,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3070,
- CMSG_GUILD_SET_GUILD_MASTER = 0x36C5,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x36C6,
CMSG_GUILD_SET_MEMBER_NOTE = 0x3072,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3067,
CMSG_GUILD_SHIFT_RANK = 0x3066,
CMSG_GUILD_UPDATE_INFO_TEXT = 0x3075,
CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3074,
- CMSG_HEARTH_AND_RESURRECT = 0x350C,
+ CMSG_HEARTH_AND_RESURRECT = 0x3509,
CMSG_HOTFIX_REQUEST = 0x35E5,
CMSG_IGNORE_TRADE = 0x3159,
CMSG_INITIATE_ROLE_POLL = 0x35DA,
CMSG_INITIATE_TRADE = 0x3156,
- CMSG_INSPECT = 0x352D,
- CMSG_INSPECT_PVP = 0x36A1,
- CMSG_INSTANCE_LOCK_RESPONSE = 0x3511,
- CMSG_ITEM_PURCHASE_REFUND = 0x3534,
- CMSG_ITEM_TEXT_QUERY = 0x330F,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x31D4,
- CMSG_JOIN_RATED_BATTLEGROUND = 0x3176,
+ CMSG_INSPECT = 0x352B,
+ CMSG_INSPECT_PVP = 0x36A2,
+ CMSG_INSTANCE_LOCK_RESPONSE = 0x350E,
+ CMSG_ISLAND_QUEUE = 0x3387,
+ CMSG_ITEM_PURCHASE_REFUND = 0x3532,
+ CMSG_ITEM_TEXT_QUERY = 0x331E,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DC,
+ CMSG_JOIN_RATED_BATTLEGROUND = 0x3177,
CMSG_KEEP_ALIVE = 0x367F,
- CMSG_KEYBOUND_OVERRIDE = 0x3219,
- CMSG_LEARN_PVP_TALENTS = 0x3557,
- CMSG_LEARN_TALENTS = 0x3556,
+ CMSG_KEYBOUND_OVERRIDE = 0x3222,
+ CMSG_LEARN_PVP_TALENTS = 0x3556,
+ CMSG_LEARN_TALENTS = 0x3554,
CMSG_LEAVE_GROUP = 0x3649,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31D5,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DD,
CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360C,
CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360D,
CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360E,
CMSG_LFG_LIST_GET_STATUS = 0x360A,
CMSG_LFG_LIST_INVITE_APPLICANT = 0x360F,
CMSG_LFG_LIST_INVITE_RESPONSE = 0x3610,
- CMSG_LFG_LIST_JOIN = 0x3345,
+ CMSG_LFG_LIST_JOIN = 0x3359,
CMSG_LFG_LIST_LEAVE = 0x3609,
CMSG_LFG_LIST_SEARCH = 0x360B,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3346,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x335A,
CMSG_LF_GUILD_ADD_RECRUIT = 0x361B,
CMSG_LF_GUILD_BROWSE = 0x361D,
CMSG_LF_GUILD_DECLINE_RECRUIT = 0x3078,
@@ -400,37 +402,38 @@ enum OpcodeClient : uint16
CMSG_LF_GUILD_GET_RECRUITS = 0x3077,
CMSG_LF_GUILD_REMOVE_RECRUIT = 0x307A,
CMSG_LF_GUILD_SET_GUILD_POST = 0x361C,
- CMSG_LIST_INVENTORY = 0x34A4,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B9,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B8,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B7,
+ CMSG_LIST_INVENTORY = 0x34A1,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36BA,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B9,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B8,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
- CMSG_LOAD_SELECTED_TROPHY = 0x32F2,
- CMSG_LOGOUT_CANCEL = 0x34DC,
- CMSG_LOGOUT_INSTANT = 0x34DD,
- CMSG_LOGOUT_REQUEST = 0x34DB,
+ CMSG_LOAD_SELECTED_TROPHY = 0x3301,
+ CMSG_LOGOUT_CANCEL = 0x34D9,
+ CMSG_LOGOUT_INSTANT = 0x34DA,
+ CMSG_LOGOUT_REQUEST = 0x34D7,
CMSG_LOG_DISCONNECT = 0x3769,
CMSG_LOG_STREAMING_ERROR = 0x376D,
- CMSG_LOOT_ITEM = 0x3205,
- CMSG_LOOT_MONEY = 0x3204,
- CMSG_LOOT_RELEASE = 0x3209,
- CMSG_LOOT_ROLL = 0x320A,
- CMSG_LOOT_UNIT = 0x3203,
- CMSG_LOW_LEVEL_RAID1 = 0x369F,
- CMSG_LOW_LEVEL_RAID2 = 0x3518,
- CMSG_MAIL_CREATE_TEXT_ITEM = 0x353F,
- CMSG_MAIL_DELETE = 0x321B,
- CMSG_MAIL_GET_LIST = 0x353A,
- CMSG_MAIL_MARK_AS_READ = 0x353E,
+ CMSG_LOOT_ITEM = 0x320E,
+ CMSG_LOOT_MONEY = 0x320D,
+ CMSG_LOOT_RELEASE = 0x3212,
+ CMSG_LOOT_ROLL = 0x3213,
+ CMSG_LOOT_UNIT = 0x320C,
+ CMSG_LOW_LEVEL_RAID1 = 0x36A0,
+ CMSG_LOW_LEVEL_RAID2 = 0x3515,
+ CMSG_MAIL_CREATE_TEXT_ITEM = 0x353D,
+ CMSG_MAIL_DELETE = 0x3224,
+ CMSG_MAIL_GET_LIST = 0x3538,
+ CMSG_MAIL_MARK_AS_READ = 0x353C,
CMSG_MAIL_RETURN_TO_SENDER = 0x3655,
- CMSG_MAIL_TAKE_ITEM = 0x353C,
- CMSG_MAIL_TAKE_MONEY = 0x353B,
- CMSG_MASTER_LOOT_ITEM = 0x3206,
+ CMSG_MAIL_TAKE_ITEM = 0x353A,
+ CMSG_MAIL_TAKE_MONEY = 0x3539,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3227,
+ CMSG_MASTER_LOOT_ITEM = 0x320F,
CMSG_MINIMAP_PING = 0x364B,
- CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3189,
+ CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A,
CMSG_MOUNT_CLEAR_FANFARE = 0x312D,
CMSG_MOUNT_SET_FAVORITE = 0x3631,
- CMSG_MOUNT_SPECIAL_ANIM = 0x3273,
+ CMSG_MOUNT_SPECIAL_ANIM = 0x3281,
CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A12,
CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2C,
CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A31,
@@ -443,6 +446,7 @@ enum OpcodeClient : uint16
CMSG_MOVE_FEATHER_FALL_ACK = 0x3A19,
CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2B,
CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2A,
+ CMSG_MOVE_FORCE_MOVEMENT_FORCE_SPEED_CHANGE_ACK = 0x3A3D,
CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A2F,
CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0B,
CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A09,
@@ -492,264 +496,268 @@ enum OpcodeClient : uint16
CMSG_MOVE_TIME_SKIPPED = 0x3A18,
CMSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x3A05,
CMSG_MOVE_WATER_WALK_ACK = 0x3A1A,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31CA,
- CMSG_NEXT_CINEMATIC_CAMERA = 0x3548,
- CMSG_OBJECT_UPDATE_FAILED = 0x317F,
- CMSG_OBJECT_UPDATE_RESCUED = 0x3180,
- CMSG_OFFER_PETITION = 0x36AF,
- CMSG_OPENING_CINEMATIC = 0x3547,
- CMSG_OPEN_ITEM = 0x3310,
- CMSG_OPEN_MISSION_NPC = 0x32D7,
- CMSG_OPEN_SHIPMENT_NPC = 0x32DD,
- CMSG_OPEN_TRADESKILL_NPC = 0x32E8,
- CMSG_OPT_OUT_OF_LOOT = 0x34FA,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D2,
+ CMSG_NEXT_CINEMATIC_CAMERA = 0x3546,
+ CMSG_OBJECT_UPDATE_FAILED = 0x3180,
+ CMSG_OBJECT_UPDATE_RESCUED = 0x3181,
+ CMSG_OFFER_PETITION = 0x36B0,
+ CMSG_OPENING_CINEMATIC = 0x3545,
+ CMSG_OPEN_ITEM = 0x331F,
+ CMSG_OPEN_MISSION_NPC = 0x32E6,
+ CMSG_OPEN_SHIPMENT_NPC = 0x32EC,
+ CMSG_OPEN_TRADESKILL_NPC = 0x32F7,
+ CMSG_OPT_OUT_OF_LOOT = 0x34F7,
CMSG_PARTY_INVITE = 0x3602,
CMSG_PARTY_INVITE_RESPONSE = 0x3603,
CMSG_PARTY_UNINVITE = 0x3647,
- CMSG_PETITION_BUY = 0x34CD,
- CMSG_PETITION_RENAME_GUILD = 0x36C6,
- CMSG_PETITION_SHOW_LIST = 0x34CC,
- CMSG_PETITION_SHOW_SIGNATURES = 0x34CE,
- CMSG_PET_ABANDON = 0x3490,
- CMSG_PET_ACTION = 0x348E,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31D9,
+ CMSG_PETITION_BUY = 0x34C9,
+ CMSG_PETITION_RENAME_GUILD = 0x36C7,
+ CMSG_PETITION_SHOW_LIST = 0x34C8,
+ CMSG_PETITION_SHOW_SIGNATURES = 0x34CA,
+ CMSG_PET_ABANDON = 0x348D,
+ CMSG_PET_ACTION = 0x348B,
+ CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E1,
CMSG_PET_BATTLE_INPUT = 0x3640,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x321A,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31D8,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3223,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E0,
CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x31D2,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31D3,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x31D0,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31DA,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31D1,
- CMSG_PET_CANCEL_AURA = 0x3491,
- CMSG_PET_CAST_SPELL = 0x328D,
+ CMSG_PET_BATTLE_REQUEST_PVP = 0x31DA,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DB,
+ CMSG_PET_BATTLE_REQUEST_WILD = 0x31D8,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E2,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31D9,
+ CMSG_PET_CANCEL_AURA = 0x348E,
+ CMSG_PET_CAST_SPELL = 0x329A,
CMSG_PET_RENAME = 0x3685,
- CMSG_PET_SET_ACTION = 0x348D,
- CMSG_PET_SPELL_AUTOCAST = 0x3492,
- CMSG_PET_STOP_ATTACK = 0x348F,
+ CMSG_PET_SET_ACTION = 0x348A,
+ CMSG_PET_SPELL_AUTOCAST = 0x348F,
+ CMSG_PET_STOP_ATTACK = 0x348C,
CMSG_PING = 0x3768,
CMSG_PLAYER_LOGIN = 0x35EA,
CMSG_PROTOCOL_MISMATCH = 0x376E,
- CMSG_PUSH_QUEST_TO_PARTY = 0x34A2,
- CMSG_PVP_LOG_DATA = 0x317A,
- CMSG_PVP_PRESTIGE_RANK_UP = 0x3332,
- CMSG_QUERY_BATTLE_PET_NAME = 0x3268,
+ CMSG_PUSH_QUEST_TO_PARTY = 0x349F,
+ CMSG_PVP_LOG_DATA = 0x317B,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x3276,
+ CMSG_QUERY_COMMUNITY_NAME = 0x368C,
CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660,
CMSG_QUERY_CORPSE_TRANSPORT = 0x3661,
- CMSG_QUERY_COUNTDOWN_TIMER = 0x31A4,
- CMSG_QUERY_CREATURE = 0x3262,
- CMSG_QUERY_GAME_OBJECT = 0x3263,
- CMSG_QUERY_GARRISON_CREATURE_NAME = 0x3269,
- CMSG_QUERY_GUILD_INFO = 0x368D,
- CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3506,
- CMSG_QUERY_NEXT_MAIL_TIME = 0x353D,
- CMSG_QUERY_NPC_TEXT = 0x3264,
- CMSG_QUERY_PAGE_TEXT = 0x3266,
- CMSG_QUERY_PETITION = 0x326A,
- CMSG_QUERY_PET_NAME = 0x3267,
+ CMSG_QUERY_COUNTDOWN_TIMER = 0x31A8,
+ CMSG_QUERY_CREATURE = 0x3270,
+ CMSG_QUERY_GAME_OBJECT = 0x3271,
+ CMSG_QUERY_GARRISON_CREATURE_NAME = 0x3277,
+ CMSG_QUERY_GUILD_INFO = 0x368E,
+ CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3503,
+ CMSG_QUERY_NEXT_MAIL_TIME = 0x353B,
+ CMSG_QUERY_NPC_TEXT = 0x3272,
+ CMSG_QUERY_PAGE_TEXT = 0x3274,
+ CMSG_QUERY_PETITION = 0x3278,
+ CMSG_QUERY_PET_NAME = 0x3275,
CMSG_QUERY_PLAYER_NAME = 0x368B,
- CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3173,
- CMSG_QUERY_QUEST_INFO = 0x3265,
- CMSG_QUERY_QUEST_REWARDS = 0x3336,
- CMSG_QUERY_REALM_NAME = 0x368C,
+ CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3174,
+ CMSG_QUERY_QUEST_INFO = 0x3273,
+ CMSG_QUERY_REALM_NAME = 0x368D,
CMSG_QUERY_SCENARIO_POI = 0x3656,
- CMSG_QUERY_TIME = 0x34DA,
- CMSG_QUERY_VOID_STORAGE = 0x319D,
- CMSG_QUEST_CONFIRM_ACCEPT = 0x34A1,
- CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349B,
- CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x349D,
- CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x349C,
- CMSG_QUEST_GIVER_HELLO = 0x3499,
- CMSG_QUEST_GIVER_QUERY_QUEST = 0x349A,
- CMSG_QUEST_GIVER_REQUEST_REWARD = 0x349E,
- CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A0,
- CMSG_QUEST_GIVER_STATUS_QUERY = 0x349F,
- CMSG_QUEST_LOG_REMOVE_QUEST = 0x3532,
- CMSG_QUEST_POI_QUERY = 0x36B0,
- CMSG_QUEST_PUSH_RESULT = 0x34A3,
+ CMSG_QUERY_TIME = 0x34D6,
+ CMSG_QUERY_TREASURE_PICKER = 0x3343,
+ CMSG_QUERY_VOID_STORAGE = 0x31A1,
+ CMSG_QUEST_CONFIRM_ACCEPT = 0x349E,
+ CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3498,
+ CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x349A,
+ CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3499,
+ CMSG_QUEST_GIVER_HELLO = 0x3496,
+ CMSG_QUEST_GIVER_QUERY_QUEST = 0x3497,
+ CMSG_QUEST_GIVER_REQUEST_REWARD = 0x349B,
+ CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x349D,
+ CMSG_QUEST_GIVER_STATUS_QUERY = 0x349C,
+ CMSG_QUEST_LOG_REMOVE_QUEST = 0x3530,
+ CMSG_QUEST_POI_QUERY = 0x36B1,
+ CMSG_QUEST_PUSH_RESULT = 0x34A0,
CMSG_QUEUED_MESSAGES_END = 0x376C,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3705,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3704,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3703,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3702,
- CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E4,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3709,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3708,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3707,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3706,
+ CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E5,
CMSG_RANDOM_ROLL = 0x3654,
CMSG_READY_CHECK_RESPONSE = 0x3634,
- CMSG_READ_ITEM = 0x3311,
- CMSG_RECLAIM_CORPSE = 0x34DF,
- CMSG_RECRUIT_A_FRIEND = 0x36CC,
- CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36EE,
- CMSG_REDEEM_WOW_TOKEN_START = 0x36ED,
- CMSG_REMOVE_NEW_ITEM = 0x3339,
+ CMSG_READ_ITEM = 0x3320,
+ CMSG_RECLAIM_CORPSE = 0x34DC,
+ CMSG_RECRUIT_A_FRIEND = 0x36CD,
+ CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36EF,
+ CMSG_REDEEM_WOW_TOKEN_START = 0x36EE,
+ CMSG_REMOVE_NEW_ITEM = 0x3346,
CMSG_REORDER_CHARACTERS = 0x35E9,
- CMSG_REPAIR_ITEM = 0x34F0,
- CMSG_REPLACE_TROPHY = 0x32F3,
- CMSG_REPOP_REQUEST = 0x352A,
- CMSG_REPORT_CLIENT_VARIABLES = 0x36FF,
- CMSG_REPORT_ENABLED_ADDONS = 0x36FE,
- CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3700,
- CMSG_REPORT_PVP_PLAYER_AFK = 0x34F8,
- CMSG_REQUEST_ACCOUNT_DATA = 0x3695,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x3338,
+ CMSG_REPAIR_ITEM = 0x34ED,
+ CMSG_REPLACE_TROPHY = 0x3302,
+ CMSG_REPOP_REQUEST = 0x3528,
+ CMSG_REPORT_CLIENT_VARIABLES = 0x3703,
+ CMSG_REPORT_ENABLED_ADDONS = 0x3702,
+ CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3704,
+ CMSG_REPORT_PVP_PLAYER_AFK = 0x34F5,
+ CMSG_REQUEST_ACCOUNT_DATA = 0x3696,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x3345,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
- CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317C,
- CMSG_REQUEST_CEMETERY_LIST = 0x3174,
- CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32A4,
- CMSG_REQUEST_CONSUMPTION_CONVERSION_INFO = 0x36F8,
- CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x352E,
- CMSG_REQUEST_FORCED_REACTIONS = 0x31FE,
- CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A3,
- CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A2,
- CMSG_REQUEST_HONOR_STATS = 0x3179,
- CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x3295,
+ CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317D,
+ CMSG_REQUEST_CEMETERY_LIST = 0x3175,
+ CMSG_REQUEST_CHALLENGE_MODE_AFFIXES = 0x3205,
+ CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32B3,
+ CMSG_REQUEST_CONSUMPTION_CONVERSION_INFO = 0x36FC,
+ CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x352C,
+ CMSG_REQUEST_FORCED_REACTIONS = 0x3207,
+ CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A7,
+ CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A6,
+ CMSG_REQUEST_HONOR_STATS = 0x317A,
+ CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32A3,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653,
- CMSG_REQUEST_PET_INFO = 0x3493,
- CMSG_REQUEST_PLAYED_TIME = 0x326D,
- CMSG_REQUEST_PVP_BRAWL_INFO = 0x3191,
- CMSG_REQUEST_PVP_REWARDS = 0x3190,
- CMSG_REQUEST_RAID_INFO = 0x36C7,
+ CMSG_REQUEST_PET_INFO = 0x3490,
+ CMSG_REQUEST_PLAYED_TIME = 0x327B,
+ CMSG_REQUEST_PVP_BRAWL_INFO = 0x3195,
+ CMSG_REQUEST_PVP_REWARDS = 0x3194,
+ CMSG_REQUEST_RAID_INFO = 0x36C8,
CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x35E3,
CMSG_REQUEST_RESEARCH_HISTORY = 0x3167,
- CMSG_REQUEST_STABLED_PETS = 0x3494,
- CMSG_REQUEST_VEHICLE_EXIT = 0x322B,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x322D,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x322C,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x322E,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3337,
- CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36E6,
- CMSG_RESET_CHALLENGE_MODE = 0x31FB,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x31FC,
+ CMSG_REQUEST_STABLED_PETS = 0x3491,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x3234,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3236,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3235,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3237,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3344,
+ CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36E7,
+ CMSG_RESET_CHALLENGE_MODE = 0x3203,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3204,
CMSG_RESET_INSTANCES = 0x3668,
CMSG_RESURRECT_RESPONSE = 0x3684,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x32F5,
- CMSG_RIDE_VEHICLE_INTERACT = 0x322F,
- CMSG_SAVE_CUF_PROFILES = 0x318A,
- CMSG_SAVE_EQUIPMENT_SET = 0x350F,
- CMSG_SAVE_GUILD_EMBLEM = 0x3299,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x3216,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x3215,
- CMSG_SCENE_TRIGGER_EVENT = 0x3217,
- CMSG_SELF_RES = 0x3535,
- CMSG_SELL_ITEM = 0x34A5,
- CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36E8,
- CMSG_SELL_WOW_TOKEN_START = 0x36E7,
- CMSG_SEND_CONTACT_LIST = 0x36CE,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3304,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x3238,
+ CMSG_SAVE_CUF_PROFILES = 0x318B,
+ CMSG_SAVE_EQUIPMENT_SET = 0x350C,
+ CMSG_SAVE_GUILD_EMBLEM = 0x32A7,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x321F,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x321E,
+ CMSG_SCENE_TRIGGER_EVENT = 0x3220,
+ CMSG_SELF_RES = 0x3533,
+ CMSG_SELL_ITEM = 0x34A2,
+ CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36E9,
+ CMSG_SELL_WOW_TOKEN_START = 0x36E8,
+ CMSG_SEND_CONTACT_LIST = 0x36CF,
CMSG_SEND_MAIL = 0x35FA,
CMSG_SEND_SOR_REQUEST_VIA_ADDRESS = 0x3620,
- CMSG_SEND_TEXT_EMOTE = 0x348A,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x321C,
- CMSG_SET_ACTION_BAR_TOGGLES = 0x3536,
+ CMSG_SEND_TEXT_EMOTE = 0x3488,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3225,
+ CMSG_SET_ACTION_BAR_TOGGLES = 0x3534,
CMSG_SET_ACTION_BUTTON = 0x3635,
CMSG_SET_ACTIVE_MOVER = 0x3A37,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32A5,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32B4,
CMSG_SET_ASSISTANT_LEADER = 0x364F,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3314,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3315,
- CMSG_SET_BANK_BAG_SLOT_FLAG = 0x3313,
- CMSG_SET_CONTACT_NOTES = 0x36D1,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3323,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3324,
+ CMSG_SET_CONTACT_NOTES = 0x36D2,
CMSG_SET_CURRENCY_FLAGS = 0x3169,
- CMSG_SET_DIFFICULTY_ID = 0x3218,
+ CMSG_SET_DIFFICULTY_ID = 0x3221,
CMSG_SET_DUNGEON_DIFFICULTY = 0x3682,
CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3617,
- CMSG_SET_FACTION_AT_WAR = 0x34E2,
- CMSG_SET_FACTION_INACTIVE = 0x34E4,
- CMSG_SET_FACTION_NOT_AT_WAR = 0x34E3,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3317,
- CMSG_SET_LFG_BONUS_FACTION_ID = 0x3294,
+ CMSG_SET_FACTION_AT_WAR = 0x34DF,
+ CMSG_SET_FACTION_INACTIVE = 0x34E1,
+ CMSG_SET_FACTION_NOT_AT_WAR = 0x34E0,
+ CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B8,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3326,
+ CMSG_SET_LFG_BONUS_FACTION_ID = 0x32A2,
CMSG_SET_LOOT_METHOD = 0x3648,
- CMSG_SET_LOOT_SPECIALIZATION = 0x3543,
+ CMSG_SET_LOOT_SPECIALIZATION = 0x3541,
CMSG_SET_PARTY_ASSIGNMENT = 0x3651,
CMSG_SET_PARTY_LEADER = 0x364A,
CMSG_SET_PET_SLOT = 0x3168,
CMSG_SET_PLAYER_DECLINED_NAMES = 0x368A,
- CMSG_SET_PREFERRED_CEMETERY = 0x3175,
- CMSG_SET_PVP = 0x329D,
- CMSG_SET_RAID_DIFFICULTY = 0x36DB,
+ CMSG_SET_PREFERRED_CEMETERY = 0x3176,
+ CMSG_SET_PVP = 0x32AB,
+ CMSG_SET_RAID_DIFFICULTY = 0x36DC,
CMSG_SET_ROLE = 0x35D9,
CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3688,
- CMSG_SET_SELECTION = 0x352C,
- CMSG_SET_SHEATHED = 0x348B,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3316,
- CMSG_SET_TAXI_BENCHMARK_MODE = 0x34F7,
- CMSG_SET_TITLE = 0x3271,
+ CMSG_SET_SELECTION = 0x352A,
+ CMSG_SET_SHEATHED = 0x3489,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3325,
+ CMSG_SET_TAXI_BENCHMARK_MODE = 0x34F4,
+ CMSG_SET_TITLE = 0x327F,
CMSG_SET_TRADE_CURRENCY = 0x3160,
CMSG_SET_TRADE_GOLD = 0x315F,
CMSG_SET_TRADE_ITEM = 0x315D,
- CMSG_SET_USING_PARTY_GARRISON = 0x32D9,
- CMSG_SET_WATCHED_FACTION = 0x34E5,
- CMSG_SHOW_TRADE_SKILL = 0x36BF,
- CMSG_SIGN_PETITION = 0x3537,
+ CMSG_SET_USING_PARTY_GARRISON = 0x32E8,
+ CMSG_SET_WAR_MODE = 0x32AC,
+ CMSG_SET_WATCHED_FACTION = 0x34E2,
+ CMSG_SHOW_TRADE_SKILL = 0x36C0,
+ CMSG_SIGN_PETITION = 0x3535,
CMSG_SILENCE_PARTY_TALKER = 0x3652,
- CMSG_SOCKET_GEMS = 0x34EF,
- CMSG_SORT_BAGS = 0x3318,
- CMSG_SORT_BANK_BAGS = 0x3319,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x331A,
- CMSG_SPELL_CLICK = 0x3498,
- CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B2,
+ CMSG_SOCKET_GEMS = 0x34EC,
+ CMSG_SORT_BAGS = 0x3327,
+ CMSG_SORT_BANK_BAGS = 0x3328,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x3329,
+ CMSG_SPELL_CLICK = 0x3495,
+ CMSG_SPIRIT_HEALER_ACTIVATE = 0x34AF,
CMSG_SPLIT_ITEM = 0x399E,
- CMSG_STAND_STATE_CHANGE = 0x3188,
- CMSG_START_CHALLENGE_MODE = 0x354E,
+ CMSG_STAND_STATE_CHANGE = 0x3189,
+ CMSG_START_CHALLENGE_MODE = 0x354C,
CMSG_START_SPECTATOR_WAR_GAME = 0x35DF,
CMSG_START_WAR_GAME = 0x35DE,
CMSG_SUMMON_RESPONSE = 0x366A,
CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x3645,
CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644,
CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3646,
- CMSG_SURRENDER_ARENA = 0x3172,
+ CMSG_SURRENDER_ARENA = 0x3173,
CMSG_SUSPEND_COMMS_ACK = 0x3764,
CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
CMSG_SWAP_SUB_GROUPS = 0x364D,
- CMSG_SWAP_VOID_ITEM = 0x319F,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x329A,
- CMSG_TALK_TO_GOSSIP = 0x3495,
- CMSG_TAXI_NODE_STATUS_QUERY = 0x34AB,
- CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34AD,
- CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34AF,
+ CMSG_SWAP_VOID_ITEM = 0x31A3,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x32A8,
+ CMSG_TALK_TO_GOSSIP = 0x3492,
+ CMSG_TAXI_NODE_STATUS_QUERY = 0x34A8,
+ CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34AA,
+ CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34AC,
CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3B,
CMSG_TIME_SYNC_RESPONSE = 0x3A38,
CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3A,
CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A39,
CMSG_TOGGLE_DIFFICULTY = 0x3657,
- CMSG_TOGGLE_PVP = 0x329C,
- CMSG_TOTEM_DESTROYED = 0x34FE,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x3335,
- CMSG_TRAINER_BUY_SPELL = 0x34B1,
- CMSG_TRAINER_LIST = 0x34B0,
- CMSG_TRANSMOGRIFY_ITEMS = 0x3192,
- CMSG_TURN_IN_PETITION = 0x3539,
- CMSG_TUTORIAL = 0x36DC,
+ CMSG_TOGGLE_PVP = 0x32AA,
+ CMSG_TOTEM_DESTROYED = 0x34FB,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x3342,
+ CMSG_TRAINER_BUY_SPELL = 0x34AE,
+ CMSG_TRAINER_LIST = 0x34AD,
+ CMSG_TRANSMOGRIFY_ITEMS = 0x3196,
+ CMSG_TURN_IN_PETITION = 0x3537,
+ CMSG_TUTORIAL = 0x36DD,
CMSG_TWITTER_CHECK_STATUS = 0x312A,
CMSG_TWITTER_CONNECT = 0x3127,
CMSG_TWITTER_DISCONNECT = 0x312B,
- CMSG_TWITTER_POST = 0x331C,
- CMSG_UI_TIME_REQUEST = 0x369A,
+ CMSG_TWITTER_POST = 0x332B,
+ CMSG_UI_TIME_REQUEST = 0x369B,
CMSG_UNACCEPT_TRADE = 0x315B,
- CMSG_UNDELETE_CHARACTER = 0x36DE,
- CMSG_UNLEARN_SKILL = 0x34E9,
- CMSG_UNLEARN_SPECIALIZATION = 0x31A0,
- CMSG_UNLOCK_VOID_STORAGE = 0x319C,
- CMSG_UPDATE_ACCOUNT_DATA = 0x3696,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x3290,
+ CMSG_UNDELETE_CHARACTER = 0x36DF,
+ CMSG_UNLEARN_SKILL = 0x34E6,
+ CMSG_UNLEARN_SPECIALIZATION = 0x31A4,
+ CMSG_UNLOCK_VOID_STORAGE = 0x31A0,
+ CMSG_UPDATE_ACCOUNT_DATA = 0x3697,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x329D,
CMSG_UPDATE_CLIENT_SETTINGS = 0x3664,
CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A3E,
CMSG_UPDATE_RAID_TARGET = 0x3650,
- CMSG_UPDATE_SPELL_VISUAL = 0x328F,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F4,
- CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36EF,
- CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36E5,
- CMSG_UPGRADE_GARRISON = 0x32AD,
- CMSG_UPGRADE_ITEM = 0x321D,
- CMSG_USED_FOLLOW = 0x3185,
- CMSG_USE_CRITTER_ITEM = 0x3235,
+ CMSG_UPDATE_SPELL_VISUAL = 0x329C,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F5,
+ CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36F0,
+ CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36E6,
+ CMSG_UPGRADE_GARRISON = 0x32BC,
+ CMSG_UPGRADE_ITEM = 0x3226,
+ CMSG_USED_FOLLOW = 0x3186,
+ CMSG_USE_CRITTER_ITEM = 0x323E,
CMSG_USE_EQUIPMENT_SET = 0x3995,
- CMSG_USE_ITEM = 0x328A,
- CMSG_USE_TOY = 0x328C,
- CMSG_VIOLENCE_LEVEL = 0x3183,
- CMSG_VOID_STORAGE_TRANSFER = 0x319E,
+ CMSG_USE_ITEM = 0x3297,
+ CMSG_USE_TOY = 0x3299,
+ CMSG_VIOLENCE_LEVEL = 0x3184,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3712,
+ CMSG_VOICE_CHAT_LOGIN = 0x3711,
+ CMSG_VOID_STORAGE_TRANSFER = 0x31A2,
CMSG_WARDEN_DATA = 0x35EC,
CMSG_WHO = 0x3681,
CMSG_WHO_IS = 0x3680,
@@ -764,63 +772,65 @@ enum OpcodeClient : uint16
enum OpcodeServer : uint16
{
SMSG_ABORT_NEW_WORLD = 0x25AD,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2652,
- SMSG_ACCOUNT_DATA_TIMES = 0x2749,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2654,
+ SMSG_ACCOUNT_DATA_TIMES = 0x2752,
SMSG_ACCOUNT_MOUNT_UPDATE = 0x25C3,
SMSG_ACCOUNT_TOYS_UPDATE = 0x25C4,
- SMSG_ACHIEVEMENT_DELETED = 0x271E,
- SMSG_ACHIEVEMENT_EARNED = 0x2660,
- SMSG_ACTIVATE_TAXI_REPLY = 0x26A6,
+ SMSG_ACHIEVEMENT_DELETED = 0x2727,
+ SMSG_ACHIEVEMENT_EARNED = 0x2662,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x26AB,
SMSG_ACTIVE_GLYPHS = 0x2C53,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x265A,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x265C,
SMSG_ADD_ITEM_PASSIVE = 0x25BF,
- SMSG_ADD_LOSS_OF_CONTROL = 0x2696,
- SMSG_ADD_RUNE_POWER = 0x26E2,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x269B,
+ SMSG_ADD_RUNE_POWER = 0x26EA,
SMSG_ADJUST_SPLINE_DURATION = 0x25E8,
- SMSG_AE_LOOT_TARGETS = 0x262C,
- SMSG_AE_LOOT_TARGET_ACK = 0x262D,
- SMSG_AI_REACTION = 0x26DF,
+ SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE = 0x2845,
+ SMSG_AE_LOOT_TARGETS = 0x262E,
+ SMSG_AE_LOOT_TARGET_ACK = 0x262F,
+ SMSG_AI_REACTION = 0x26E7,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2570,
SMSG_ALL_ACHIEVEMENT_DATA = 0x256F,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2586,
- SMSG_AREA_POI_UPDATE = 0x2848,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x2782,
- SMSG_AREA_TRIGGER_DENIED = 0x269D,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x2755,
- SMSG_AREA_TRIGGER_RE_PATH = 0x263F,
- SMSG_AREA_TRIGGER_RE_SHAPE = 0x263C,
- SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x264E,
- SMSG_ARENA_ERROR = 0x2711,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2665,
- SMSG_ARTIFACT_FORGE_OPENED = 0x27E2,
- SMSG_ARTIFACT_KNOWLEDGE = 0x27EA,
- SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27E5,
- SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27E6,
- SMSG_ARTIFACT_XP_GAIN = 0x282D,
- SMSG_ATTACKER_STATE_UPDATE = 0x27CF,
- SMSG_ATTACK_START = 0x266D,
- SMSG_ATTACK_STOP = 0x266E,
- SMSG_ATTACK_SWING_ERROR = 0x2733,
- SMSG_ATTACK_SWING_LANDED_LOG = 0x2734,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2728,
- SMSG_AUCTION_COMMAND_RESULT = 0x2725,
- SMSG_AUCTION_HELLO_RESPONSE = 0x2723,
- SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x272C,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x272A,
- SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x272B,
- SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x272D,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2727,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2729,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x2724,
- SMSG_AUCTION_WON_NOTIFICATION = 0x2726,
+ SMSG_AREA_POI_UPDATE = 0x2852,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x278A,
+ SMSG_AREA_TRIGGER_DENIED = 0x26A2,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x275E,
+ SMSG_AREA_TRIGGER_RE_PATH = 0x263E,
+ SMSG_AREA_TRIGGER_RE_SHAPE = 0x2642,
+ SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x2650,
+ SMSG_ARENA_ERROR = 0x271A,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2667,
+ SMSG_ARTIFACT_FORGE_OPENED = 0x27EE,
+ SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27F1,
+ SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27F2,
+ SMSG_ARTIFACT_XP_GAIN = 0x2835,
+ SMSG_ATTACKER_STATE_UPDATE = 0x27DB,
+ SMSG_ATTACK_START = 0x266F,
+ SMSG_ATTACK_STOP = 0x2670,
+ SMSG_ATTACK_SWING_ERROR = 0x273C,
+ SMSG_ATTACK_SWING_LANDED_LOG = 0x273D,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2731,
+ SMSG_AUCTION_COMMAND_RESULT = 0x272E,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x272C,
+ SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x2735,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2733,
+ SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x2734,
+ SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x2736,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2730,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2732,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x272D,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x272F,
SMSG_AURA_POINTS_DEPLETED = 0x2C23,
SMSG_AURA_UPDATE = 0x2C22,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_RESPONSE = 0x256C,
SMSG_AVAILABLE_HOTFIXES = 0x25A1,
- SMSG_BAN_REASON = 0x26B2,
- SMSG_BARBER_SHOP_RESULT = 0x26E8,
+ SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN = 0x283F,
+ SMSG_AZERITE_XP_GAIN = 0x2878,
+ SMSG_BAN_REASON = 0x26B7,
+ SMSG_BARBER_SHOP_RESULT = 0x26F0,
SMSG_BATTLEFIELD_LIST = 0x2594,
SMSG_BATTLEFIELD_PORT_DENIED = 0x259A,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2590,
@@ -830,125 +840,130 @@ enum OpcodeServer : uint16
SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2591,
SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x25A5,
SMSG_BATTLEGROUND_INFO_THROTTLED = 0x259B,
- SMSG_BATTLEGROUND_INIT = 0x27A0,
+ SMSG_BATTLEGROUND_INIT = 0x27A9,
SMSG_BATTLEGROUND_PLAYER_JOINED = 0x2598,
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x2599,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2595,
- SMSG_BATTLEGROUND_POINTS = 0x279F,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x27CE,
- SMSG_BATTLENET_CHALLENGE_START = 0x27CD,
- SMSG_BATTLENET_NOTIFICATION = 0x2843,
- SMSG_BATTLENET_REALM_LIST_TICKET = 0x2845,
- SMSG_BATTLENET_RESPONSE = 0x2842,
- SMSG_BATTLENET_SET_SESSION_STATE = 0x2844,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x27C6,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27BB,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27C5,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27B9,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27B8,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27B7,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27B5,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27B3,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27B4,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27BA,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27C4,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27C2,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27C1,
- SMSG_BATTLE_PAY_SUBSCRIPTION_CHANGED = 0x2864,
- SMSG_BATTLE_PAY_VAS_BNET_TRANSFER_VALIDATION_RESULT = 0x285B,
- SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27B6,
- SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2830,
- SMSG_BATTLE_PAY_VAS_CHARACTER_QUEUE_STATUS = 0x2859,
- SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x2833,
- SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x2834,
- SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x2832,
- SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x2831,
- SMSG_BATTLE_PAY_VAS_TRANSFER_QUEUE_STATUS = 0x2858,
- SMSG_BATTLE_PETS_HEALED = 0x2609,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x26A0,
- SMSG_BATTLE_PET_DELETED = 0x2606,
- SMSG_BATTLE_PET_ERROR = 0x2655,
- SMSG_BATTLE_PET_JOURNAL = 0x2605,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x2603,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x2604,
- SMSG_BATTLE_PET_LICENSE_CHANGED = 0x260A,
- SMSG_BATTLE_PET_MAX_COUNT_CHANGED = 0x2601,
- SMSG_BATTLE_PET_RESTORED = 0x2608,
- SMSG_BATTLE_PET_REVOKED = 0x2607,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x2600,
- SMSG_BATTLE_PET_UPDATES = 0x25FF,
- SMSG_BINDER_CONFIRM = 0x2739,
+ SMSG_BATTLEGROUND_POINTS = 0x27A8,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x27DA,
+ SMSG_BATTLENET_CHALLENGE_START = 0x27D9,
+ SMSG_BATTLENET_NOTIFICATION = 0x284D,
+ SMSG_BATTLENET_REALM_LIST_TICKET = 0x284F,
+ SMSG_BATTLENET_RESPONSE = 0x284C,
+ SMSG_BATTLENET_SET_SESSION_STATE = 0x284E,
+ SMSG_BATTLENET_UPDATE_SESSION_KEY = 0x2872,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x27D2,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27C7,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27D1,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27C5,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27C4,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27C3,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27C1,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27BF,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27C0,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27C6,
+ SMSG_BATTLE_PAY_OPEN_CHECKOUT_RESULT = 0x286B,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27D0,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27CE,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27CD,
+ SMSG_BATTLE_PAY_SUBSCRIPTION_CHANGED = 0x2874,
+ SMSG_BATTLE_PAY_VAS_BNET_TRANSFER_VALIDATION_RESULT = 0x2869,
+ SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27C2,
+ SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2838,
+ SMSG_BATTLE_PAY_VAS_CHARACTER_QUEUE_STATUS = 0x2864,
+ SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x283B,
+ SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x283C,
+ SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x283A,
+ SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x2839,
+ SMSG_BATTLE_PAY_VAS_TRANSFER_QUEUE_STATUS = 0x2863,
+ SMSG_BATTLE_PETS_HEALED = 0x260A,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x26A5,
+ SMSG_BATTLE_PET_DELETED = 0x2607,
+ SMSG_BATTLE_PET_ERROR = 0x2657,
+ SMSG_BATTLE_PET_JOURNAL = 0x2606,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x2604,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x2605,
+ SMSG_BATTLE_PET_LICENSE_CHANGED = 0x260B,
+ SMSG_BATTLE_PET_MAX_COUNT_CHANGED = 0x2602,
+ SMSG_BATTLE_PET_RESTORED = 0x2609,
+ SMSG_BATTLE_PET_REVOKED = 0x2608,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x2601,
+ SMSG_BATTLE_PET_UPDATES = 0x2600,
+ SMSG_BINDER_CONFIRM = 0x2742,
SMSG_BIND_POINT_UPDATE = 0x257C,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2644,
- SMSG_BLACK_MARKET_OPEN_RESULT = 0x2642,
- SMSG_BLACK_MARKET_OUTBID = 0x2645,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2643,
- SMSG_BLACK_MARKET_WON = 0x2646,
- SMSG_BONUS_ROLL_EMPTY = 0x2662,
- SMSG_BOSS_KILL_CREDIT = 0x27C0,
- SMSG_BREAK_TARGET = 0x266C,
- SMSG_BUY_FAILED = 0x26F1,
- SMSG_BUY_SUCCEEDED = 0x26F0,
- SMSG_CACHE_INFO = 0x2743,
- SMSG_CACHE_VERSION = 0x2742,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26C6,
- SMSG_CALENDAR_COMMAND_RESULT = 0x26C7,
- SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26B6,
- SMSG_CALENDAR_EVENT_INVITE = 0x26B7,
- SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x26B8,
- SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS = 0x26BB,
- SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x26C0,
- SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x26C1,
- SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x26BC,
- SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x26BD,
- SMSG_CALENDAR_EVENT_INVITE_STATUS = 0x26B9,
- SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x26BA,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x26BE,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x26BF,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x26C2,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x26C3,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x26C4,
- SMSG_CALENDAR_SEND_CALENDAR = 0x26B4,
- SMSG_CALENDAR_SEND_EVENT = 0x26B5,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x26C5,
- SMSG_CAMERA_EFFECT = 0x2767,
- SMSG_CANCEL_AUTO_REPEAT = 0x2712,
- SMSG_CANCEL_COMBAT = 0x2731,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2646,
+ SMSG_BLACK_MARKET_OPEN_RESULT = 0x2644,
+ SMSG_BLACK_MARKET_OUTBID = 0x2647,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2645,
+ SMSG_BLACK_MARKET_WON = 0x2648,
+ SMSG_BONUS_ROLL_EMPTY = 0x2664,
+ SMSG_BONUS_ROLL_FAILED = 0x287B,
+ SMSG_BOSS_KILL_CREDIT = 0x27CC,
+ SMSG_BREAK_TARGET = 0x266E,
+ SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
+ SMSG_BUY_FAILED = 0x26F9,
+ SMSG_BUY_SUCCEEDED = 0x26F8,
+ SMSG_CACHE_INFO = 0x274C,
+ SMSG_CACHE_VERSION = 0x274B,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26CB,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x26CC,
+ SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26BB,
+ SMSG_CALENDAR_EVENT_INVITE = 0x26BC,
+ SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x26C0,
+ SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS = 0x26BF,
+ SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x26C5,
+ SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x26C6,
+ SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x26BD,
+ SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x26C2,
+ SMSG_CALENDAR_EVENT_INVITE_STATUS = 0x26BE,
+ SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x26C1,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x26C3,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x26C4,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x26C7,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x26C8,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x26C9,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x26B9,
+ SMSG_CALENDAR_SEND_EVENT = 0x26BA,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x26CA,
+ SMSG_CAMERA_EFFECT = 0x276F,
+ SMSG_CANCEL_AUTO_REPEAT = 0x271B,
+ SMSG_CANCEL_COMBAT = 0x273A,
SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46,
- SMSG_CANCEL_SCENE = 0x2654,
+ SMSG_CANCEL_SCENE = 0x2656,
SMSG_CANCEL_SPELL_VISUAL = 0x2C44,
SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48,
- SMSG_CAN_DUEL_RESULT = 0x2676,
+ SMSG_CAN_DUEL_RESULT = 0x2679,
SMSG_CAST_FAILED = 0x2C56,
SMSG_CATEGORY_COOLDOWN = 0x2C16,
- SMSG_CHALLENGE_MODE_ALL_MAP_STATS = 0x2622,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x2620,
- SMSG_CHALLENGE_MODE_MAP_STATS_UPDATE = 0x2623,
- SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x2625,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2624,
- SMSG_CHALLENGE_MODE_RESET = 0x261F,
- SMSG_CHALLENGE_MODE_REWARDS = 0x2621,
- SMSG_CHALLENGE_MODE_START = 0x261D,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x261E,
- SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x2735,
+ SMSG_CHALLENGE_MODE_AFFIXES = 0x2624,
+ SMSG_CHALLENGE_MODE_ALL_MAP_STATS = 0x2623,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x2621,
+ SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x2626,
+ SMSG_CHALLENGE_MODE_NEW_PLAYER_SEASON_RECORD = 0x2627,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2625,
+ SMSG_CHALLENGE_MODE_RESET = 0x2620,
+ SMSG_CHALLENGE_MODE_REWARDS = 0x2622,
+ SMSG_CHALLENGE_MODE_START = 0x261E,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x261F,
+ SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x273E,
SMSG_CHANNEL_LIST = 0x2BC3,
SMSG_CHANNEL_NOTIFY = 0x2BC0,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2,
- SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x2804,
- SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING = 0x2863,
- SMSG_CHARACTER_ITEM_FIXUP = 0x2854,
- SMSG_CHARACTER_LOGIN_FAILED = 0x2744,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27CC,
- SMSG_CHARACTER_RENAME_RESULT = 0x27A5,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x2803,
- SMSG_CHARACTER_UPGRADE_QUEUED = 0x2802,
- SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F4,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x2801,
- SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x2805,
- SMSG_CHAR_CUSTOMIZE = 0x2719,
- SMSG_CHAR_CUSTOMIZE_FAILED = 0x2718,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27EE,
+ SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x280C,
+ SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING = 0x2873,
+ SMSG_CHARACTER_ITEM_FIXUP = 0x285F,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x274D,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27D8,
+ SMSG_CHARACTER_RENAME_RESULT = 0x27B1,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x280B,
+ SMSG_CHARACTER_UPGRADE_QUEUED = 0x280A,
+ SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F5,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x2809,
+ SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x280D,
+ SMSG_CHAR_CUSTOMIZE = 0x2722,
+ SMSG_CHAR_CUSTOMIZE_FAILED = 0x2721,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27F6,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_DOWN = 0x2BBD,
@@ -964,97 +979,101 @@ enum OpcodeServer : uint16
SMSG_CHECK_WARGAME_ENTRY = 0x259E,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27,
SMSG_CLEAR_BOSS_EMOTES = 0x25CD,
- SMSG_CLEAR_COOLDOWN = 0x26E4,
+ SMSG_CLEAR_COOLDOWN = 0x26EC,
SMSG_CLEAR_COOLDOWNS = 0x2C26,
- SMSG_CLEAR_LOSS_OF_CONTROL = 0x2698,
+ SMSG_CLEAR_LOSS_OF_CONTROL = 0x269D,
SMSG_CLEAR_SPELL_CHARGES = 0x2C28,
- SMSG_CLEAR_TARGET = 0x26DB,
- SMSG_COIN_REMOVED = 0x262B,
- SMSG_COMBAT_EVENT_FAILED = 0x266F,
- SMSG_COMMENTATOR_MAP_INFO = 0x2746,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x2747,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x2745,
- SMSG_COMPLAINT_RESULT = 0x26D3,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27DE,
+ SMSG_CLEAR_TARGET = 0x26E3,
+ SMSG_COIN_REMOVED = 0x262D,
+ SMSG_COMBAT_EVENT_FAILED = 0x2671,
+ SMSG_COMMENTATOR_MAP_INFO = 0x274F,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x2750,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x274E,
+ SMSG_COMPLAINT_RESULT = 0x26DA,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27EA,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27C7,
- SMSG_CONSOLE_WRITE = 0x2651,
- SMSG_CONSUMPTION_CONVERSION_INFO_RESPONSE = 0x2849,
- SMSG_CONSUMPTION_CONVERSION_RESULT = 0x284A,
- SMSG_CONTACT_LIST = 0x27CA,
- SMSG_CONTROL_UPDATE = 0x2664,
- SMSG_COOLDOWN_CHEAT = 0x277B,
- SMSG_COOLDOWN_EVENT = 0x26E3,
- SMSG_CORPSE_LOCATION = 0x266B,
- SMSG_CORPSE_RECLAIM_DELAY = 0x278E,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x2751,
- SMSG_CREATE_CHAR = 0x273E,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x27DD,
- SMSG_CRITERIA_DELETED = 0x271D,
- SMSG_CRITERIA_UPDATE = 0x2717,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26EC,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27D3,
+ SMSG_CONSOLE_WRITE = 0x2653,
+ SMSG_CONSUMPTION_CONVERSION_INFO_RESPONSE = 0x2853,
+ SMSG_CONSUMPTION_CONVERSION_RESULT = 0x2854,
+ SMSG_CONTACT_LIST = 0x27D6,
+ SMSG_CONTRIBUTION_COLLECTOR_STATE = 0x286A,
+ SMSG_CONTROL_UPDATE = 0x2666,
+ SMSG_COOLDOWN_CHEAT = 0x2783,
+ SMSG_COOLDOWN_EVENT = 0x26EB,
+ SMSG_CORPSE_LOCATION = 0x266D,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x2796,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x275A,
+ SMSG_CREATE_CHAR = 0x2747,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x27E9,
+ SMSG_CRITERIA_DELETED = 0x2726,
+ SMSG_CRITERIA_UPDATE = 0x2720,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26F4,
SMSG_CUSTOM_LOAD_SCREEN = 0x25E3,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
- SMSG_DAMAGE_CALC_LOG = 0x280C,
+ SMSG_DAMAGE_CALC_LOG = 0x2814,
SMSG_DB_REPLY = 0x25A0,
- SMSG_DEATH_RELEASE_LOC = 0x2705,
+ SMSG_DEATH_RELEASE_LOC = 0x270E,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x273F,
- SMSG_DESTROY_ARENA_UNIT = 0x2784,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x2732,
+ SMSG_DELETE_CHAR = 0x2748,
+ SMSG_DESTROY_ARENA_UNIT = 0x278C,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x273B,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258A,
SMSG_DISENCHANT_CREDIT = 0x25BC,
- SMSG_DISMOUNT = 0x26DA,
+ SMSG_DISMOUNT = 0x26E2,
SMSG_DISMOUNT_RESULT = 0x257B,
SMSG_DISPEL_FAILED = 0x2C30,
SMSG_DISPLAY_GAME_ERROR = 0x25B5,
- SMSG_DISPLAY_PLAYER_CHOICE = 0x26A1,
- SMSG_DISPLAY_PROMOTION = 0x2668,
+ SMSG_DISPLAY_PLAYER_CHOICE = 0x26A6,
+ SMSG_DISPLAY_PROMOTION = 0x266A,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9D,
- SMSG_DISPLAY_TOAST = 0x2638,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25F6,
+ SMSG_DISPLAY_TOAST = 0x263A,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25F7,
SMSG_DROP_NEW_CONNECTION = 0x304C,
- SMSG_DUEL_COMPLETE = 0x2674,
- SMSG_DUEL_COUNTDOWN = 0x2673,
- SMSG_DUEL_IN_BOUNDS = 0x2672,
- SMSG_DUEL_OUT_OF_BOUNDS = 0x2671,
- SMSG_DUEL_REQUESTED = 0x2670,
- SMSG_DUEL_WINNER = 0x2675,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x278A,
- SMSG_EMOTE = 0x280D,
- SMSG_ENABLE_BARBER_SHOP = 0x26E7,
+ SMSG_DUEL_COMPLETE = 0x2677,
+ SMSG_DUEL_COUNTDOWN = 0x2676,
+ SMSG_DUEL_IN_BOUNDS = 0x2675,
+ SMSG_DUEL_OPPONENT_SELECTED = 0x2673,
+ SMSG_DUEL_OUT_OF_BOUNDS = 0x2674,
+ SMSG_DUEL_REQUESTED = 0x2672,
+ SMSG_DUEL_WINNER = 0x2678,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x2792,
+ SMSG_EMOTE = 0x2815,
+ SMSG_ENABLE_BARBER_SHOP = 0x26EF,
SMSG_ENABLE_ENCRYPTION = 0x3049,
- SMSG_ENCHANTMENT_LOG = 0x2752,
- SMSG_ENCOUNTER_END = 0x27BF,
- SMSG_ENCOUNTER_START = 0x27BE,
+ SMSG_ENCHANTMENT_LOG = 0x275B,
+ SMSG_ENCOUNTER_END = 0x27CB,
+ SMSG_ENCOUNTER_START = 0x27CA,
SMSG_ENUM_CHARACTERS_RESULT = 0x2582,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21,
- SMSG_EQUIPMENT_SET_ID = 0x26DC,
+ SMSG_EQUIPMENT_SET_ID = 0x26E4,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x27A2,
- SMSG_FACTION_BONUS_INFO = 0x2766,
+ SMSG_EXPLORATION_EXPERIENCE = 0x27AE,
+ SMSG_FACTION_BONUS_INFO = 0x276E,
SMSG_FAILED_PLAYER_CONDITION = 0x25E2,
SMSG_FEATURE_SYSTEM_STATUS = 0x25D1,
SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25D2,
- SMSG_FEIGN_DEATH_RESISTED = 0x2787,
- SMSG_FISH_ESCAPED = 0x26F9,
- SMSG_FISH_NOT_HOOKED = 0x26F8,
+ SMSG_FEIGN_DEATH_RESISTED = 0x278F,
+ SMSG_FISH_ESCAPED = 0x2701,
+ SMSG_FISH_NOT_HOOKED = 0x2700,
SMSG_FLIGHT_SPLINE_SYNC = 0x2DF7,
- SMSG_FORCED_DEATH_UPDATE = 0x2706,
- SMSG_FORCE_ANIM = 0x2794,
- SMSG_FORCE_OBJECT_RELINK = 0x2667,
- SMSG_FRIEND_STATUS = 0x27CB,
+ SMSG_FORCED_DEATH_UPDATE = 0x270F,
+ SMSG_FORCE_ANIM = 0x279D,
+ SMSG_FORCE_OBJECT_RELINK = 0x2669,
+ SMSG_FRIEND_STATUS = 0x27D7,
+ SMSG_GAME_EVENT_DEBUG_INITIALIZE = 0x267F,
SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25D6,
SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25D7,
SMSG_GAME_OBJECT_DESPAWN = 0x25D8,
+ SMSG_GAME_OBJECT_MULTI_TRANSITION = 0x2879,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A,
- SMSG_GAME_OBJECT_RESET_STATE = 0x275D,
- SMSG_GAME_OBJECT_SET_STATE = 0x2841,
- SMSG_GAME_OBJECT_UI_ACTION = 0x275A,
- SMSG_GAME_SPEED_SET = 0x26AA,
- SMSG_GAME_TIME_SET = 0x274B,
- SMSG_GAME_TIME_UPDATE = 0x274A,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2765,
+ SMSG_GAME_OBJECT_SET_STATE = 0x284B,
+ SMSG_GAME_OBJECT_UI_ACTION = 0x2762,
+ SMSG_GAME_SPEED_SET = 0x26AF,
+ SMSG_GAME_TIME_SET = 0x2754,
+ SMSG_GAME_TIME_UPDATE = 0x2753,
SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2902,
SMSG_GARRISON_ADD_MISSION_RESULT = 0x2906,
SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2918,
@@ -1063,16 +1082,17 @@ enum OpcodeServer : uint16
SMSG_GARRISON_BUILDING_REMOVED = 0x28F4,
SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x28F6,
SMSG_GARRISON_CLEAR_ALL_FOLLOWERS_EXHAUSTION = 0x2916,
- SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x2909,
+ SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x2908,
SMSG_GARRISON_CREATE_RESULT = 0x28FC,
SMSG_GARRISON_DELETE_RESULT = 0x2920,
+ SMSG_GARRISON_FOLLOWER_CATEGORIES = 0x2901,
SMSG_GARRISON_FOLLOWER_CHANGED_ABILITIES = 0x2914,
SMSG_GARRISON_FOLLOWER_CHANGED_DURABILITY = 0x2904,
SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x2913,
SMSG_GARRISON_FOLLOWER_CHANGED_STATUS = 0x2915,
SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x2912,
SMSG_GARRISON_IS_UPGRADEABLE_RESULT = 0x2929,
- SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27E0,
+ SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27EC,
SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x28F7,
SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x28F5,
SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2905,
@@ -1102,26 +1122,27 @@ enum OpcodeServer : uint16
SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x28F8,
SMSG_GARRISON_UPGRADE_RESULT = 0x28FD,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2583,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A3,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AF,
SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE = 0x2928,
SMSG_GET_GARRISON_INFO_RESULT = 0x28F0,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27DF,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27DB,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x2808,
- SMSG_GM_PLAYER_INFO = 0x277A,
- SMSG_GM_REQUEST_PLAYER_INFO = 0x25ED,
- SMSG_GM_TICKET_CASE_STATUS = 0x26CC,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x26CB,
- SMSG_GOD_MODE = 0x2738,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27EB,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27E7,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x2810,
+ SMSG_GM_PLAYER_INFO = 0x2782,
+ SMSG_GM_REQUEST_PLAYER_INFO = 0x25EE,
+ SMSG_GM_TICKET_CASE_STATUS = 0x26D1,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x26D0,
+ SMSG_GOD_MODE = 0x2741,
SMSG_GOSSIP_COMPLETE = 0x2A96,
SMSG_GOSSIP_MESSAGE = 0x2A97,
- SMSG_GOSSIP_POI = 0x27D8,
+ SMSG_GOSSIP_POI = 0x27E4,
+ SMSG_GOSSIP_TEXT_UPDATE = 0x2A98,
SMSG_GROUP_ACTION_THROTTLED = 0x259C,
- SMSG_GROUP_DECLINE = 0x27D3,
- SMSG_GROUP_DESTROYED = 0x27D5,
- SMSG_GROUP_INVITE_CONFIRMATION = 0x2855,
- SMSG_GROUP_NEW_LEADER = 0x2649,
- SMSG_GROUP_UNINVITE = 0x27D4,
+ SMSG_GROUP_DECLINE = 0x27DF,
+ SMSG_GROUP_DESTROYED = 0x27E1,
+ SMSG_GROUP_INVITE_CONFIRMATION = 0x2860,
+ SMSG_GROUP_NEW_LEADER = 0x264B,
+ SMSG_GROUP_UNINVITE = 0x27E0,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1174,53 +1195,56 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26FC,
- SMSG_HIGHEST_THREAT_UPDATE = 0x270C,
+ SMSG_HEALTH_UPDATE = 0x2704,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x2715,
SMSG_HOTFIX_MESSAGE = 0x25A2,
SMSG_HOTFIX_RESPONSE = 0x25A3,
- SMSG_INITIALIZE_FACTIONS = 0x2765,
+ SMSG_INITIALIZE_FACTIONS = 0x276D,
SMSG_INITIAL_SETUP = 0x257F,
- SMSG_INIT_WORLD_STATES = 0x278B,
+ SMSG_INIT_WORLD_STATES = 0x2793,
SMSG_INSPECT_HONOR_STATS = 0x25B2,
- SMSG_INSPECT_PVP = 0x2761,
- SMSG_INSPECT_RESULT = 0x264D,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27F4,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27F3,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27FC,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27F2,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27FE,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27FD,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27F7,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27F6,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27FB,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27FF,
- SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x27FA,
- SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x27F9,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27F8,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27F5,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x2736,
- SMSG_INSTANCE_INFO = 0x2650,
- SMSG_INSTANCE_RESET = 0x26AF,
- SMSG_INSTANCE_RESET_FAILED = 0x26B0,
- SMSG_INSTANCE_SAVE_CREATED = 0x27BD,
- SMSG_INVALIDATE_PAGE_TEXT = 0x2701,
- SMSG_INVALIDATE_PLAYER = 0x26D2,
- SMSG_INVALID_PROMOTION_CODE = 0x2795,
- SMSG_INVENTORY_CHANGE_FAILURE = 0x2763,
+ SMSG_INSPECT_PVP = 0x2769,
+ SMSG_INSPECT_RESULT = 0x264F,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27FC,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27FB,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x2804,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27FA,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x2806,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x2805,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27FF,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27FE,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x2803,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x2807,
+ SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x2802,
+ SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x2801,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x2800,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27FD,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x273F,
+ SMSG_INSTANCE_INFO = 0x2652,
+ SMSG_INSTANCE_RESET = 0x26B4,
+ SMSG_INSTANCE_RESET_FAILED = 0x26B5,
+ SMSG_INSTANCE_SAVE_CREATED = 0x27C9,
+ SMSG_INVALIDATE_PAGE_TEXT = 0x270A,
+ SMSG_INVALIDATE_PLAYER = 0x26D9,
+ SMSG_INVALID_PROMOTION_CODE = 0x279E,
+ SMSG_INVENTORY_CHANGE_FAILURE = 0x276B,
+ SMSG_ISLAND_AZERITE_XP_GAIN = 0x27AB,
+ SMSG_ISLAND_COMPLETED = 0x27AC,
+ SMSG_ISLAND_OPEN_QUEUE_NPC = 0x2840,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A83,
- SMSG_ITEM_CHANGED = 0x2720,
- SMSG_ITEM_COOLDOWN = 0x280B,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2797,
+ SMSG_ITEM_CHANGED = 0x2729,
+ SMSG_ITEM_COOLDOWN = 0x2813,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x27A0,
SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25B1,
SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25AF,
- SMSG_ITEM_PUSH_RESULT = 0x2637,
- SMSG_ITEM_TIME_UPDATE = 0x2796,
- SMSG_KICK_REASON = 0x282F,
+ SMSG_ITEM_PUSH_RESULT = 0x2639,
+ SMSG_ITEM_TIME_UPDATE = 0x279F,
+ SMSG_KICK_REASON = 0x2837,
SMSG_LEARNED_SPELLS = 0x2C4D,
SMSG_LEARN_PVP_TALENTS_FAILED = 0x25EA,
SMSG_LEARN_TALENTS_FAILED = 0x25E9,
SMSG_LEVEL_UPDATE = 0x2587,
- SMSG_LEVEL_UP_INFO = 0x271F,
+ SMSG_LEVEL_UP_INFO = 0x2728,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x2A25,
@@ -1249,44 +1273,47 @@ enum OpcodeServer : uint16
SMSG_LF_GUILD_COMMAND_RESULT = 0x29D0,
SMSG_LF_GUILD_POST = 0x29CD,
SMSG_LF_GUILD_RECRUITS = 0x29CF,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27B1,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27AF,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A4,
+ SMSG_LIGHTNING_STORM_END = 0x26D6,
+ SMSG_LIGHTNING_STORM_START = 0x26D5,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27BD,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27BB,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27B0,
SMSG_LOAD_CUF_PROFILES = 0x25CE,
- SMSG_LOAD_EQUIPMENT_SET = 0x274D,
- SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x2809,
- SMSG_LOGIN_SET_TIME_SPEED = 0x274C,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2756,
+ SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x2811,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x2755,
SMSG_LOGIN_VERIFY_WORLD = 0x25AC,
- SMSG_LOGOUT_CANCEL_ACK = 0x26AE,
- SMSG_LOGOUT_COMPLETE = 0x26AD,
- SMSG_LOGOUT_RESPONSE = 0x26AC,
- SMSG_LOG_XP_GAIN = 0x271B,
- SMSG_LOOT_ALL_PASSED = 0x2635,
- SMSG_LOOT_LIST = 0x2783,
- SMSG_LOOT_MONEY_NOTIFY = 0x2630,
- SMSG_LOOT_RELEASE = 0x262F,
- SMSG_LOOT_RELEASE_ALL = 0x262E,
- SMSG_LOOT_REMOVED = 0x2629,
- SMSG_LOOT_RESPONSE = 0x2628,
- SMSG_LOOT_ROLL = 0x2632,
- SMSG_LOOT_ROLLS_COMPLETE = 0x2634,
- SMSG_LOOT_ROLL_WON = 0x2636,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2695,
- SMSG_MAIL_COMMAND_RESULT = 0x2658,
- SMSG_MAIL_LIST_RESULT = 0x2798,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2799,
- SMSG_MAP_OBJECTIVES_INIT = 0x27A1,
+ SMSG_LOGOUT_CANCEL_ACK = 0x26B3,
+ SMSG_LOGOUT_COMPLETE = 0x26B2,
+ SMSG_LOGOUT_RESPONSE = 0x26B1,
+ SMSG_LOG_XP_GAIN = 0x2724,
+ SMSG_LOOT_ALL_PASSED = 0x2637,
+ SMSG_LOOT_LEGACY_RULES_IN_EFFECT = 0x287A,
+ SMSG_LOOT_LIST = 0x278B,
+ SMSG_LOOT_MONEY_NOTIFY = 0x2632,
+ SMSG_LOOT_RELEASE = 0x2631,
+ SMSG_LOOT_RELEASE_ALL = 0x2630,
+ SMSG_LOOT_REMOVED = 0x262B,
+ SMSG_LOOT_RESPONSE = 0x262A,
+ SMSG_LOOT_ROLL = 0x2634,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x2636,
+ SMSG_LOOT_ROLL_WON = 0x2638,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x269A,
+ SMSG_MAIL_COMMAND_RESULT = 0x265A,
+ SMSG_MAIL_LIST_RESULT = 0x27A1,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x27A2,
+ SMSG_MAP_OBJECTIVES_INIT = 0x27AA,
SMSG_MAP_OBJ_EVENTS = 0x25D9,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2633,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2635,
SMSG_MESSAGE_BOX = 0x2575,
- SMSG_MINIMAP_PING = 0x26F7,
+ SMSG_MINIMAP_PING = 0x26FF,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
SMSG_MISSILE_CANCEL = 0x25DA,
- SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27A8,
- SMSG_MODIFY_COOLDOWN = 0x27A6,
- SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27A7,
- SMSG_MODIFY_PARTY_RANGE = 0x2786,
+ SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27B4,
+ SMSG_MODIFY_COOLDOWN = 0x27B2,
+ SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27B3,
+ SMSG_MODIFY_PARTY_RANGE = 0x278E,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257A,
SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2DE1,
@@ -1312,6 +1339,7 @@ enum OpcodeServer : uint16
SMSG_MOVE_SET_HOVERING = 0x2DCF,
SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x2DD7,
SMSG_MOVE_SET_LAND_WALK = 0x2DCC,
+ SMSG_MOVE_SET_MOVEMENT_FORCE_SPEED = 0x2DB4,
SMSG_MOVE_SET_NORMAL_FALL = 0x2DCE,
SMSG_MOVE_SET_PITCH_RATE = 0x2DC6,
SMSG_MOVE_SET_RUN_BACK_SPEED = 0x2DBF,
@@ -1362,6 +1390,7 @@ enum OpcodeServer : uint16
SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x2DAA,
SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x2DA9,
SMSG_MOVE_UPDATE_KNOCK_BACK = 0x2DB0,
+ SMSG_MOVE_UPDATE_MOVEMENT_FORCE_SPEED = 0x2DB1,
SMSG_MOVE_UPDATE_PITCH_RATE = 0x2DAC,
SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x2DB3,
SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x2DA5,
@@ -1371,111 +1400,111 @@ enum OpcodeServer : uint16
SMSG_MOVE_UPDATE_TELEPORT = 0x2DAF,
SMSG_MOVE_UPDATE_TURN_RATE = 0x2DAB,
SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DA6,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25F1,
- SMSG_NEW_TAXI_PATH = 0x26A7,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25F2,
+ SMSG_NEW_TAXI_PATH = 0x26AC,
SMSG_NEW_WORLD = 0x25AB,
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26D1,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26D8,
SMSG_NOTIFY_MONEY = 0x25AE,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x2659,
- SMSG_OFFER_PETITION_ERROR = 0x26E0,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x271C,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x265B,
+ SMSG_OFFER_PETITION_ERROR = 0x26E8,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2725,
SMSG_ON_MONSTER_MOVE = 0x2DA2,
- SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x2837,
- SMSG_OPEN_CONTAINER = 0x2764,
+ SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x2841,
+ SMSG_OPEN_CONTAINER = 0x276C,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27DA,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27DC,
- SMSG_OPEN_TRANSMOGRIFIER = 0x2836,
- SMSG_OVERRIDE_LIGHT = 0x26E6,
- SMSG_PAGE_TEXT = 0x2759,
- SMSG_PARTY_COMMAND_RESULT = 0x27D7,
+ SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27E6,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27E8,
+ SMSG_OPEN_TRANSMOGRIFIER = 0x283E,
+ SMSG_OVERRIDE_LIGHT = 0x26EE,
+ SMSG_PAGE_TEXT = 0x2761,
+ SMSG_PARTY_COMMAND_RESULT = 0x27E3,
SMSG_PARTY_INVITE = 0x25CF,
- SMSG_PARTY_KILL_LOG = 0x279D,
- SMSG_PARTY_MEMBER_STATE = 0x279B,
- SMSG_PARTY_MEMBER_STATE_UPDATE = 0x279A,
- SMSG_PARTY_UPDATE = 0x260B,
- SMSG_PAUSE_MIRROR_TIMER = 0x274F,
- SMSG_PENDING_RAID_LOCK = 0x2730,
+ SMSG_PARTY_KILL_LOG = 0x27A6,
+ SMSG_PARTY_MEMBER_STATE = 0x27A4,
+ SMSG_PARTY_MEMBER_STATE_UPDATE = 0x27A3,
+ SMSG_PARTY_UPDATE = 0x260C,
+ SMSG_PAUSE_MIRROR_TIMER = 0x2758,
+ SMSG_PENDING_RAID_LOCK = 0x2739,
SMSG_PETITION_ALREADY_SIGNED = 0x25B8,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29F7,
- SMSG_PETITION_SHOW_LIST = 0x26E9,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26EA,
- SMSG_PETITION_SIGN_RESULTS = 0x278F,
- SMSG_PET_ACTION_FEEDBACK = 0x278D,
- SMSG_PET_ACTION_SOUND = 0x26C9,
+ SMSG_PETITION_SHOW_LIST = 0x26F1,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26F2,
+ SMSG_PETITION_SIGN_RESULTS = 0x2798,
+ SMSG_PET_ACTION_FEEDBACK = 0x2795,
+ SMSG_PET_ACTION_SOUND = 0x26CE,
SMSG_PET_ADDED = 0x25A8,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2618,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x269C,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x2611,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x2616,
- SMSG_PET_BATTLE_FINISHED = 0x2617,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x2613,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x2612,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2619,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x2610,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2656,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x2657,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2615,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x260F,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x2614,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x2602,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2619,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x26A1,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x2612,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x2617,
+ SMSG_PET_BATTLE_FINISHED = 0x2618,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x2614,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x2613,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x261A,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x2611,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2658,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x2659,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2616,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x2610,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x2615,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x2603,
SMSG_PET_CAST_FAILED = 0x2C57,
SMSG_PET_CLEAR_SPELLS = 0x2C24,
- SMSG_PET_DISMISS_SOUND = 0x26CA,
- SMSG_PET_GOD_MODE = 0x26A4,
- SMSG_PET_GUIDS = 0x2741,
+ SMSG_PET_DISMISS_SOUND = 0x26CF,
+ SMSG_PET_GOD_MODE = 0x26A9,
+ SMSG_PET_GUIDS = 0x274A,
SMSG_PET_LEARNED_SPELLS = 0x2C4F,
SMSG_PET_MODE = 0x2589,
- SMSG_PET_NAME_INVALID = 0x26EE,
+ SMSG_PET_NAME_INVALID = 0x26F6,
SMSG_PET_SLOT_UPDATED = 0x2588,
SMSG_PET_SPELLS_MESSAGE = 0x2C25,
SMSG_PET_STABLE_LIST = 0x25A9,
SMSG_PET_STABLE_RESULT = 0x25AA,
- SMSG_PET_TAME_FAILURE = 0x26DD,
+ SMSG_PET_TAME_FAILURE = 0x26E5,
SMSG_PET_UNLEARNED_SPELLS = 0x2C50,
SMSG_PHASE_SHIFT_CHANGE = 0x2577,
- SMSG_PLAYED_TIME = 0x2708,
+ SMSG_PLAYED_TIME = 0x2711,
SMSG_PLAYER_BOUND = 0x257D,
SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F6,
- SMSG_PLAYER_SKINNED = 0x2788,
- SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x279C,
- SMSG_PLAY_MUSIC = 0x27AB,
- SMSG_PLAY_OBJECT_SOUND = 0x27AC,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2772,
+ SMSG_PLAYER_SKINNED = 0x2790,
+ SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x27A5,
+ SMSG_PLAY_MUSIC = 0x27B7,
+ SMSG_PLAY_OBJECT_SOUND = 0x27B8,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x277A,
SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47,
- SMSG_PLAY_SCENE = 0x2653,
- SMSG_PLAY_SOUND = 0x27AA,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x27AD,
+ SMSG_PLAY_SCENE = 0x2655,
+ SMSG_PLAY_SOUND = 0x27B6,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x27B9,
SMSG_PLAY_SPELL_VISUAL = 0x2C45,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49,
- SMSG_PLAY_TIME_WARNING = 0x273A,
+ SMSG_PLAY_TIME_WARNING = 0x2743,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x26FD,
- SMSG_PRESTIGE_AND_HONOR_INVOLUNTARILY_CHANGED = 0x2758,
- SMSG_PRE_RESSURECT = 0x27A9,
+ SMSG_POWER_UPDATE = 0x2705,
+ SMSG_PRE_RESSURECT = 0x27B5,
SMSG_PRINT_NOTIFICATION = 0x25E1,
- SMSG_PROC_RESIST = 0x279E,
- SMSG_PROPOSE_LEVEL_GRANT = 0x2710,
+ SMSG_PROC_RESIST = 0x27A7,
+ SMSG_PROPOSE_LEVEL_GRANT = 0x2719,
SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51,
- SMSG_PVP_CREDIT = 0x2716,
+ SMSG_PVP_CREDIT = 0x271F,
SMSG_PVP_LOG_DATA = 0x25B3,
SMSG_PVP_OPTIONS_ENABLED = 0x25B6,
SMSG_PVP_SEASON = 0x25D3,
- SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x2703,
- SMSG_QUERY_CREATURE_RESPONSE = 0x26FA,
- SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x26FB,
+ SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x270C,
+ SMSG_QUERY_COMMUNITY_NAME_RESPONSE = 0x2708,
+ SMSG_QUERY_CREATURE_RESPONSE = 0x2702,
+ SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2703,
SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE = 0x292B,
SMSG_QUERY_GUILD_INFO_RESPONSE = 0x29E5,
- SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x280A,
- SMSG_QUERY_NPC_TEXT_RESPONSE = 0x26FE,
- SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x2700,
- SMSG_QUERY_PETITION_RESPONSE = 0x2704,
- SMSG_QUERY_PET_NAME_RESPONSE = 0x2702,
- SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x26FF,
+ SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x2812,
+ SMSG_QUERY_NPC_TEXT_RESPONSE = 0x2706,
+ SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x2709,
+ SMSG_QUERY_PETITION_RESPONSE = 0x270D,
+ SMSG_QUERY_PET_NAME_RESPONSE = 0x270B,
+ SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x2707,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A95,
- SMSG_QUERY_QUEST_REWARD_RESPONSE = 0x2846,
- SMSG_QUERY_TIME_RESPONSE = 0x271A,
+ SMSG_QUERY_TIME_RESPONSE = 0x2723,
+ SMSG_QUERY_TREASURE_PICKER_RESPONSE = 0x2850,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8E,
SMSG_QUEST_FORCE_REMOVED = 0x2A9B,
@@ -1485,7 +1514,7 @@ enum OpcodeServer : uint16
SMSG_QUEST_GIVER_QUEST_DETAILS = 0x2A91,
SMSG_QUEST_GIVER_QUEST_FAILED = 0x2A85,
SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x2A99,
- SMSG_QUEST_GIVER_QUEST_TURN_IN_FAILURE = 0x2852,
+ SMSG_QUEST_GIVER_QUEST_TURN_IN_FAILURE = 0x285D,
SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x2A92,
SMSG_QUEST_GIVER_STATUS = 0x2A9A,
SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A90,
@@ -1501,117 +1530,115 @@ enum OpcodeServer : uint16
SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A87,
SMSG_QUEST_UPDATE_FAILED = 0x2A89,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8A,
- SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27C8,
- SMSG_RAID_DIFFICULTY_SET = 0x27EF,
- SMSG_RAID_GROUP_ONLY = 0x27F1,
+ SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27D4,
+ SMSG_RAID_DIFFICULTY_SET = 0x27F7,
+ SMSG_RAID_GROUP_ONLY = 0x27F9,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
SMSG_RAID_MARKERS_CHANGED = 0x25B9,
- SMSG_RANDOM_ROLL = 0x264C,
+ SMSG_RANDOM_ROLL = 0x264E,
SMSG_RATED_BATTLEFIELD_INFO = 0x25A6,
- SMSG_READY_CHECK_COMPLETED = 0x260E,
- SMSG_READY_CHECK_RESPONSE = 0x260D,
- SMSG_READY_CHECK_STARTED = 0x260C,
- SMSG_READ_ITEM_RESULT_FAILED = 0x27EB,
- SMSG_READ_ITEM_RESULT_OK = 0x27E1,
- SMSG_REALM_LOOKUP_INFORMATION = 0x2810,
- SMSG_REALM_QUERY_RESPONSE = 0x26E5,
- SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27C9,
- SMSG_REFER_A_FRIEND_EXPIRED = 0x2762,
- SMSG_REFER_A_FRIEND_FAILURE = 0x26EB,
- SMSG_REFRESH_COMPONENT = 0x2678,
+ SMSG_READY_CHECK_COMPLETED = 0x260F,
+ SMSG_READY_CHECK_RESPONSE = 0x260E,
+ SMSG_READY_CHECK_STARTED = 0x260D,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x27F3,
+ SMSG_READ_ITEM_RESULT_OK = 0x27ED,
+ SMSG_REALM_LOOKUP_INFORMATION = 0x2818,
+ SMSG_REALM_QUERY_RESPONSE = 0x26ED,
+ SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27D5,
+ SMSG_REFER_A_FRIEND_EXPIRED = 0x276A,
+ SMSG_REFER_A_FRIEND_FAILURE = 0x26F3,
+ SMSG_REFRESH_COMPONENT = 0x267B,
SMSG_REFRESH_SPELL_HISTORY = 0x2C2C,
SMSG_REMOVE_ITEM_PASSIVE = 0x25C0,
- SMSG_REMOVE_LOSS_OF_CONTROL = 0x2697,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x2807,
- SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26D9,
- SMSG_REQUEST_ADDON_LIST = 0x265F,
+ SMSG_REMOVE_LOSS_OF_CONTROL = 0x269C,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x280F,
+ SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26E1,
+ SMSG_REQUEST_ADDON_LIST = 0x2661,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x259D,
SMSG_REQUEST_PVP_BRAWL_INFO_RESPONSE = 0x25D5,
SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x25D4,
SMSG_RESEARCH_COMPLETE = 0x2585,
- SMSG_RESET_AREA_TRIGGER = 0x2640,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26E1,
- SMSG_RESET_RANGED_COMBAT_TIMER = 0x2713,
+ SMSG_RESET_FAILED_NOTIFY = 0x26E9,
+ SMSG_RESET_RANGED_COMBAT_TIMER = 0x271C,
SMSG_RESET_WEEKLY_CURRENCY = 0x2574,
- SMSG_RESPEC_WIPE_CONFIRM = 0x2626,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x2628,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2571,
SMSG_RESUME_CAST_BAR = 0x2C3E,
SMSG_RESUME_COMMS = 0x304B,
SMSG_RESUME_TOKEN = 0x25BE,
SMSG_RESURRECT_REQUEST = 0x257E,
- SMSG_RESYNC_RUNES = 0x273D,
+ SMSG_RESYNC_RUNES = 0x2746,
SMSG_ROLE_CHANGED_INFORM = 0x258C,
SMSG_ROLE_CHOSEN = 0x2A39,
SMSG_ROLE_POLL_INFORM = 0x258D,
SMSG_RUNE_REGEN_DEBUG = 0x25C8,
- SMSG_SCENARIO_BOOT = 0x27EC,
- SMSG_SCENARIO_COMPLETED = 0x282C,
- SMSG_SCENARIO_POIS = 0x264F,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x2648,
- SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x283A,
- SMSG_SCENARIO_SPELL_UPDATE = 0x2839,
- SMSG_SCENARIO_STATE = 0x2647,
- SMSG_SCENE_OBJECT_EVENT = 0x25F7,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FC,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25FD,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25F9,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25F8,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25FB,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25FA,
+ SMSG_SCENARIO_BOOT = 0x27F4,
+ SMSG_SCENARIO_COMPLETED = 0x2834,
+ SMSG_SCENARIO_POIS = 0x2651,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x264A,
+ SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x2844,
+ SMSG_SCENARIO_SPELL_UPDATE = 0x2843,
+ SMSG_SCENARIO_STATE = 0x2649,
+ SMSG_SCENE_OBJECT_EVENT = 0x25F8,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FD,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25FE,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25FA,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25F9,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25FC,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25FB,
SMSG_SCRIPT_CAST = 0x2C55,
- SMSG_SELL_RESPONSE = 0x26EF,
+ SMSG_SELL_RESPONSE = 0x26F7,
SMSG_SEND_ITEM_PASSIVES = 0x25C1,
SMSG_SEND_KNOWN_SPELLS = 0x2C2A,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x264A,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x264B,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x264C,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x264D,
SMSG_SEND_SPELL_CHARGES = 0x2C2D,
SMSG_SEND_SPELL_HISTORY = 0x2C2B,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2E,
- SMSG_SERVER_FIRST_ACHIEVEMENT = 0x2BBC,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x266A,
- SMSG_SERVER_TIME = 0x26AB,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x266C,
+ SMSG_SERVER_TIME = 0x26B0,
SMSG_SETUP_CURRENCY = 0x2572,
SMSG_SETUP_RESEARCH_HISTORY = 0x2584,
- SMSG_SET_AI_ANIM_KIT = 0x2771,
- SMSG_SET_ALL_TASK_PROGRESS = 0x27D1,
- SMSG_SET_ANIM_TIER = 0x2775,
+ SMSG_SET_AI_ANIM_KIT = 0x2779,
+ SMSG_SET_ALL_TASK_PROGRESS = 0x27DD,
+ SMSG_SET_ANIM_TIER = 0x277D,
SMSG_SET_CURRENCY = 0x2573,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x26CD,
- SMSG_SET_FACTION_AT_WAR = 0x273C,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x276C,
- SMSG_SET_FACTION_STANDING = 0x276D,
- SMSG_SET_FACTION_VISIBLE = 0x276B,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x26D2,
+ SMSG_SET_FACTION_AT_WAR = 0x2745,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x2774,
+ SMSG_SET_FACTION_STANDING = 0x2775,
+ SMSG_SET_FACTION_VISIBLE = 0x2773,
SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
- SMSG_SET_FORCED_REACTIONS = 0x275C,
+ SMSG_SET_FORCED_REACTIONS = 0x2764,
SMSG_SET_ITEM_PURCHASE_DATA = 0x25B0,
- SMSG_SET_LOOT_METHOD_FAILED = 0x2816,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x281E,
SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25B7,
- SMSG_SET_MELEE_ANIM_KIT = 0x2774,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x2773,
+ SMSG_SET_MELEE_ANIM_KIT = 0x277C,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x277B,
SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
- SMSG_SET_PET_SPECIALIZATION = 0x2641,
- SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2707,
+ SMSG_SET_PET_SPECIALIZATION = 0x2643,
+ SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2710,
SMSG_SET_PLAY_HOVER_ANIM = 0x25CC,
- SMSG_SET_PROFICIENCY = 0x2776,
+ SMSG_SET_PROFICIENCY = 0x277E,
SMSG_SET_SPELL_CHARGES = 0x2C29,
- SMSG_SET_TASK_COMPLETE = 0x27D2,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x269F,
- SMSG_SET_VEHICLE_REC_ID = 0x272F,
- SMSG_SHOW_ADVENTURE_MAP = 0x2835,
- SMSG_SHOW_BANK = 0x26A8,
- SMSG_SHOW_MAILBOX = 0x27ED,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25F0,
- SMSG_SHOW_TAXI_NODES = 0x26F6,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27B2,
- SMSG_SOCKET_GEMS = 0x2768,
- SMSG_SOCKET_GEMS_FAILURE = 0x2769,
- SMSG_SORT_BAGS_RESULT = 0x2824,
- SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25F2,
- SMSG_SPECIALIZATION_CHANGED = 0x25EC,
- SMSG_SPECIAL_MOUNT_ANIM = 0x26C8,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2757,
+ SMSG_SET_TASK_COMPLETE = 0x27DE,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x26A4,
+ SMSG_SET_VEHICLE_REC_ID = 0x2738,
+ SMSG_SHOW_ADVENTURE_MAP = 0x283D,
+ SMSG_SHOW_BANK = 0x26AD,
+ SMSG_SHOW_MAILBOX = 0x27F5,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25F1,
+ SMSG_SHOW_TAXI_NODES = 0x26FE,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27BE,
+ SMSG_SOCKET_GEMS = 0x2770,
+ SMSG_SOCKET_GEMS_FAILURE = 0x2771,
+ SMSG_SORT_BAGS_RESULT = 0x282C,
+ SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25F3,
+ SMSG_SPECIALIZATION_CHANGED = 0x25ED,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x26CD,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2760,
SMSG_SPELL_ABSORB_LOG = 0x2C1F,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17,
SMSG_SPELL_CHANNEL_START = 0x2C34,
@@ -1636,73 +1663,73 @@ enum OpcodeServer : uint16
SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B,
SMSG_SPELL_PREPARE = 0x2C38,
SMSG_SPELL_START = 0x2C3A,
- SMSG_SPIRIT_HEALER_CONFIRM = 0x2754,
- SMSG_STAND_STATE_UPDATE = 0x275B,
- SMSG_START_ELAPSED_TIMER = 0x261A,
- SMSG_START_ELAPSED_TIMERS = 0x261C,
- SMSG_START_LOOT_ROLL = 0x2631,
- SMSG_START_MIRROR_TIMER = 0x274E,
+ SMSG_SPIRIT_HEALER_CONFIRM = 0x275D,
+ SMSG_STAND_STATE_UPDATE = 0x2763,
+ SMSG_START_ELAPSED_TIMER = 0x261B,
+ SMSG_START_ELAPSED_TIMERS = 0x261D,
+ SMSG_START_LOOT_ROLL = 0x2633,
+ SMSG_START_MIRROR_TIMER = 0x2757,
SMSG_START_TIMER = 0x25BB,
- SMSG_STOP_ELAPSED_TIMER = 0x261B,
- SMSG_STOP_MIRROR_TIMER = 0x2750,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x27AE,
+ SMSG_STOP_ELAPSED_TIMER = 0x261C,
+ SMSG_STOP_MIRROR_TIMER = 0x2759,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x27BA,
SMSG_STREAMING_MOVIES = 0x25BA,
- SMSG_SUMMON_CANCEL = 0x26D8,
+ SMSG_SUMMON_CANCEL = 0x26E0,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258E,
- SMSG_SUMMON_REQUEST = 0x2760,
+ SMSG_SUMMON_REQUEST = 0x2768,
SMSG_SUPERCEDED_SPELLS = 0x2C4C,
SMSG_SUSPEND_COMMS = 0x304A,
SMSG_SUSPEND_TOKEN = 0x25BD,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2756,
- SMSG_TAXI_NODE_STATUS = 0x26A5,
- SMSG_TEXT_EMOTE = 0x26A3,
- SMSG_THREAT_CLEAR = 0x270F,
- SMSG_THREAT_REMOVE = 0x270E,
- SMSG_THREAT_UPDATE = 0x270D,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x275F,
+ SMSG_TAXI_NODE_STATUS = 0x26AA,
+ SMSG_TEXT_EMOTE = 0x26A8,
+ SMSG_THREAT_CLEAR = 0x2718,
+ SMSG_THREAT_REMOVE = 0x2717,
+ SMSG_THREAT_UPDATE = 0x2716,
SMSG_TIME_ADJUSTMENT = 0x2DA1,
SMSG_TIME_SYNC_REQUEST = 0x2DA0,
- SMSG_TITLE_EARNED = 0x270A,
- SMSG_TITLE_LOST = 0x270B,
- SMSG_TOTEM_CREATED = 0x26F2,
- SMSG_TOTEM_MOVED = 0x26F3,
+ SMSG_TITLE_EARNED = 0x2713,
+ SMSG_TITLE_LOST = 0x2714,
+ SMSG_TOTEM_CREATED = 0x26FA,
+ SMSG_TOTEM_MOVED = 0x26FB,
SMSG_TRADE_STATUS = 0x2581,
SMSG_TRADE_UPDATED = 0x2580,
- SMSG_TRAINER_BUY_FAILED = 0x2715,
- SMSG_TRAINER_LIST = 0x2714,
- SMSG_TRANSFER_ABORTED = 0x2740,
+ SMSG_TRAINER_BUY_FAILED = 0x271E,
+ SMSG_TRAINER_LIST = 0x271D,
+ SMSG_TRANSFER_ABORTED = 0x2749,
SMSG_TRANSFER_PENDING = 0x25E5,
SMSG_TRANSMOG_COLLECTION_UPDATE = 0x25C6,
SMSG_TRANSMOG_SET_COLLECTION_UPDATE = 0x25C7,
- SMSG_TRIGGER_CINEMATIC = 0x280E,
- SMSG_TRIGGER_MOVIE = 0x26F4,
- SMSG_TURN_IN_PETITION_RESULT = 0x2791,
- SMSG_TUTORIAL_FLAGS = 0x2800,
- SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x2840,
- SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x283F,
+ SMSG_TRIGGER_CINEMATIC = 0x2816,
+ SMSG_TRIGGER_MOVIE = 0x26FC,
+ SMSG_TURN_IN_PETITION_RESULT = 0x279A,
+ SMSG_TUTORIAL_FLAGS = 0x2808,
+ SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x284A,
+ SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x2849,
SMSG_TWITTER_STATUS = 0x2FFD,
- SMSG_UI_TIME = 0x2753,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2811,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x2812,
+ SMSG_UI_TIME = 0x275C,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2819,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x281A,
SMSG_UNLEARNED_SPELLS = 0x2C4E,
- SMSG_UPDATE_ACCOUNT_DATA = 0x2748,
- SMSG_UPDATE_ACTION_BUTTONS = 0x25F5,
- SMSG_UPDATE_CELESTIAL_BODY = 0x285E,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x2806,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x2663,
- SMSG_UPDATE_GAME_TIME_STATE = 0x2865,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26D0,
- SMSG_UPDATE_LAST_INSTANCE = 0x26B1,
- SMSG_UPDATE_OBJECT = 0x280F,
- SMSG_UPDATE_TALENT_DATA = 0x25EB,
- SMSG_UPDATE_TASK_PROGRESS = 0x27D0,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x2751,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x25F6,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x286E,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x280E,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x2665,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x2875,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26D7,
+ SMSG_UPDATE_LAST_INSTANCE = 0x26B6,
+ SMSG_UPDATE_OBJECT = 0x2817,
+ SMSG_UPDATE_TALENT_DATA = 0x25EC,
+ SMSG_UPDATE_TASK_PROGRESS = 0x27DC,
SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19,
- SMSG_UPDATE_WORLD_STATE = 0x278C,
+ SMSG_UPDATE_WORLD_STATE = 0x2794,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x2792,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x279B,
SMSG_VENDOR_INVENTORY = 0x25CA,
- SMSG_VIGNETTE_UPDATE = 0x27B0,
+ SMSG_VIGNETTE_UPDATE = 0x27BC,
SMSG_VOID_ITEM_SWAP_RESPONSE = 0x25DF,
SMSG_VOID_STORAGE_CONTENTS = 0x25DC,
SMSG_VOID_STORAGE_FAILED = 0x25DB,
@@ -1711,30 +1738,31 @@ enum OpcodeServer : uint16
SMSG_WAIT_QUEUE_FINISH = 0x256E,
SMSG_WAIT_QUEUE_UPDATE = 0x256D,
SMSG_WARDEN_DATA = 0x2576,
+ SMSG_WARFRONT_COMPLETED = 0x27AD,
SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x25B4,
- SMSG_WEATHER = 0x26CF,
+ SMSG_WEATHER = 0x26D4,
SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x26CE,
- SMSG_WORLD_QUEST_UPDATE = 0x2847,
+ SMSG_WHO_IS = 0x26D3,
+ SMSG_WORLD_QUEST_UPDATE = 0x2851,
SMSG_WORLD_SERVER_INFO = 0x25C2,
- SMSG_WORLD_TEXT = 0x282E,
- SMSG_WOW_TOKEN_AUCTION_SOLD = 0x281C,
- SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x281E,
- SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x281F,
- SMSG_WOW_TOKEN_CAN_REDEEM_FOR_BALANCE_RESULT = 0x2856,
- SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x281D,
- SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x2817,
- SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x2818,
- SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x2819,
- SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2820,
- SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2821,
- SMSG_WOW_TOKEN_REDEEM_RESULT = 0x2822,
- SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x281A,
- SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x281B,
- SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x2823,
+ SMSG_WORLD_TEXT = 0x2836,
+ SMSG_WOW_TOKEN_AUCTION_SOLD = 0x2824,
+ SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2826,
+ SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2827,
+ SMSG_WOW_TOKEN_CAN_REDEEM_FOR_BALANCE_RESULT = 0x2861,
+ SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x2825,
+ SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x281F,
+ SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x2820,
+ SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x2821,
+ SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2828,
+ SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2829,
+ SMSG_WOW_TOKEN_REDEEM_RESULT = 0x282A,
+ SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x2822,
+ SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x2823,
+ SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x282B,
SMSG_XP_GAIN_ABORTED = 0x25E0,
- SMSG_XP_GAIN_ENABLED = 0x27F0,
+ SMSG_XP_GAIN_ENABLED = 0x27F8,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index acadaf0d64a..b7994e19bf6 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -572,9 +572,9 @@ void WorldSession::LogoutPlayer(bool save)
for (int j = BUYBACK_SLOT_START; j < BUYBACK_SLOT_END; ++j)
{
eslot = j - BUYBACK_SLOT_START;
- _player->SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (j * 4), ObjectGuid::Empty);
- _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0);
- _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, 0);
+ _player->SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (j * 4), ObjectGuid::Empty);
+ _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, 0);
+ _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + eslot, 0);
}
_player->SaveToDB();
}
@@ -1228,11 +1228,8 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co
case CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY: // 0 2.5
case CMSG_BEGIN_TRADE: // 0 2.5
case CMSG_INITIATE_TRADE: // 0 3
- case CMSG_CHAT_ADDON_MESSAGE_GUILD: // 0 3.5
- case CMSG_CHAT_ADDON_MESSAGE_OFFICER: // 0 3.5
- case CMSG_CHAT_ADDON_MESSAGE_PARTY: // 0 3.5
- case CMSG_CHAT_ADDON_MESSAGE_RAID: // 0 3.5
- case CMSG_CHAT_ADDON_MESSAGE_WHISPER: // 0 3.5
+ case CMSG_CHAT_ADDON_MESSAGE: // 0 3.5
+ case CMSG_CHAT_ADDON_MESSAGE_TARGETED: // 0 3.5
case CMSG_CHAT_MESSAGE_AFK: // 0 3.5
case CMSG_CHAT_MESSAGE_CHANNEL: // 0 3.5
case CMSG_CHAT_MESSAGE_DND: // 0 3.5
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index bba6b5ce039..ecf3dcf5819 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -178,7 +178,7 @@ namespace WorldPackets
class CalendarGetCalendar;
class CalendarGetEvent;
class CalendarGetNumPending;
- class CalendarGuildFilter;
+ class CalendarCommunityFilter;
class CalendarRemoveEvent;
class CalendarRemoveInvite;
class CalendarUpdateEvent;
@@ -243,8 +243,7 @@ namespace WorldPackets
class ChatMessageWhisper;
class ChatMessageChannel;
class ChatAddonMessage;
- class ChatAddonMessageWhisper;
- class ChatAddonMessageChannel;
+ class ChatAddonMessageTargeted;
class ChatMessageAFK;
class ChatMessageDND;
class ChatMessageEmote;
@@ -466,7 +465,6 @@ namespace WorldPackets
class MountSpecial;
class SetTaxiBenchmarkMode;
class MountSetFavorite;
- class PvpPrestigeRankUp;
class CloseInteraction;
}
@@ -1129,7 +1127,7 @@ class TC_GAME_API WorldSession
void HandleUndeleteCooldownStatusCallback(PreparedQueryResult result);
void HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCharacter& undeleteInfo);
- void SendCharCreate(ResponseCodes result);
+ void SendCharCreate(ResponseCodes result, ObjectGuid const& guid = ObjectGuid::Empty);
void SendCharDelete(ResponseCodes result);
void SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const* renameInfo);
void SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo);
@@ -1454,8 +1452,7 @@ class TC_GAME_API WorldSession
void HandleChatMessageChannelOpcode(WorldPackets::Chat::ChatMessageChannel& chatMessageChannel);
void HandleChatMessage(ChatMsg type, uint32 lang, std::string msg, std::string target = "");
void HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage);
- void HandleChatAddonMessageWhisperOpcode(WorldPackets::Chat::ChatAddonMessageWhisper& chatAddonMessageWhisper);
- void HandleChatAddonMessageChannelOpcode(WorldPackets::Chat::ChatAddonMessageChannel& chatAddonMessageChannel);
+ void HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted);
void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, std::string target = "");
void HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK& chatMessageAFK);
void HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND& chatMessageDND);
@@ -1608,7 +1605,7 @@ class TC_GAME_API WorldSession
// Calendar
void HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& calendarGetCalendar);
void HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent& calendarGetEvent);
- void HandleCalendarGuildFilter(WorldPackets::Calendar::CalendarGuildFilter& calendarGuildFilter);
+ void HandleCalendarCommunityFilter(WorldPackets::Calendar::CalendarCommunityFilter& calendarCommunityFilter);
void HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent);
void HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent);
void HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent);
@@ -1717,9 +1714,6 @@ class TC_GAME_API WorldSession
// Scenario
void HandleQueryScenarioPOI(WorldPackets::Scenario::QueryScenarioPOI& queryScenarioPOI);
- // Honor
- void HandlePvpPrestigeRankUp(WorldPackets::Misc::PvpPrestigeRankUp& /*pvpPrestigeRankUp*/);
-
union ConnectToKey
{
struct
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 974fb7879dc..dd4a75865ac 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -70,8 +70,7 @@ uint8 const WorldSocket::AuthCheckSeed[16] = { 0xC5, 0xC6, 0x98, 0x95, 0x76, 0x3
uint8 const WorldSocket::SessionKeySeed[16] = { 0x58, 0xCB, 0xCF, 0x40, 0xFE, 0x2E, 0xCE, 0xA6, 0x5A, 0x90, 0xB8, 0x01, 0x68, 0x6C, 0x28, 0x0B };
uint8 const WorldSocket::ContinuedSessionSeed[16] = { 0x16, 0xAD, 0x0C, 0xD4, 0x46, 0xF9, 0x4F, 0xB2, 0xEF, 0x7D, 0xEA, 0x2A, 0x17, 0x66, 0x4D, 0x2F };
-uint8 const ClientTypeSeed_Win[16] = { 0x79, 0x7E, 0xCC, 0x19, 0x66, 0x2D, 0xCB, 0xD5, 0x09, 0x0A, 0x44, 0x81, 0x17, 0x3F, 0x1D, 0x26 };
-uint8 const ClientTypeSeed_Wn64[16] = { 0x6E, 0x21, 0x2D, 0xEF, 0x6A, 0x01, 0x24, 0xA3, 0xD9, 0xAD, 0x07, 0xF5, 0xE3, 0x22, 0xF7, 0xAE };
+uint8 const ClientTypeSeed_Wn64[16] = { 0xDD, 0x62, 0x65, 0x17, 0xCC, 0x6D, 0x31, 0x93, 0x2B, 0x47, 0x99, 0x34, 0xCC, 0xDC, 0x0A, 0xBF };
uint8 const ClientTypeSeed_Mc64[16] = { 0x34, 0x1C, 0xFE, 0xFE, 0x3D, 0x72, 0xAC, 0xA9, 0xA4, 0x40, 0x7D, 0xC5, 0x35, 0xDE, 0xD6, 0x6A };
WorldSocket::WorldSocket(tcp::socket&& socket) : Socket(std::move(socket)),
@@ -670,9 +669,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<WorldPackets::Auth::
SHA256Hash digestKeyHash;
digestKeyHash.UpdateData(account.Game.KeyData.data(), account.Game.KeyData.size());
- if (account.Game.OS == "Win")
- digestKeyHash.UpdateData(ClientTypeSeed_Win, 16);
- else if (account.Game.OS == "Wn64")
+ if (account.Game.OS == "Wn64")
digestKeyHash.UpdateData(ClientTypeSeed_Wn64, 16);
else if (account.Game.OS == "Mc64")
digestKeyHash.UpdateData(ClientTypeSeed_Mc64, 16);