aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-06-13 19:54:06 +0200
committerShauren <shauren.trinity@gmail.com>2016-06-13 19:54:06 +0200
commit3903482eb810625fce64c616a4edca3f06975e94 (patch)
tree4de2f8e3cb79527d1737af5ea716ca12caa27b5d
parentf9a411b3352c67d6544d7a99df7d1acd1ad0f666 (diff)
Core: Updated to 7.0.3.21916
-rw-r--r--sql/updates/hotfixes/2016_xx_xx_xx_hotfixes_legion_07.sql10
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp10
-rw-r--r--src/server/game/DataStores/DB2Metadata.h28
-rw-r--r--src/server/game/DataStores/DB2Structure.h6
-rw-r--r--src/server/game/Entities/Object/Object.cpp2
-rw-r--r--src/server/game/Entities/Player/Player.cpp1
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h12
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h8
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h5
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h11
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp20
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h1048
-rw-r--r--src/server/game/Server/Protocol/ServerPktHeader.h41
-rw-r--r--src/server/game/Server/WorldSocket.cpp149
-rw-r--r--src/server/game/Server/WorldSocket.h26
-rw-r--r--src/server/game/Spells/Spell.cpp2
22 files changed, 676 insertions, 737 deletions
diff --git a/sql/updates/hotfixes/2016_xx_xx_xx_hotfixes_legion_07.sql b/sql/updates/hotfixes/2016_xx_xx_xx_hotfixes_legion_07.sql
new file mode 100644
index 00000000000..4d76e75fbf3
--- /dev/null
+++ b/sql/updates/hotfixes/2016_xx_xx_xx_hotfixes_legion_07.sql
@@ -0,0 +1,10 @@
+ALTER TABLE `char_sections` CHANGE `Id` `ID` int(10) unsigned NOT NULL DEFAULT 0 FIRST;
+
+ALTER TABLE `chr_races`
+ CHANGE `Unk` `Unk1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `HighResFemaleDisplayID`,
+ ADD `Unk2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Unk1`,
+ ADD `Unk3` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Unk2`;
+
+ALTER TABLE `spell_scaling`
+ CHANGE `MinScalingLevel` `MinScalingLevel` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ScalingClass`,
+ CHANGE `MaxScalingLevel` `MaxScalingLevel` int(10) unsigned NOT NULL DEFAULT 0 AFTER `MinScalingLevel`;
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index 344b3bd5004..cf5ab499a6a 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -96,7 +96,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_LOCALE_STMT(HOTFIX_SEL_BROADCAST_TEXT, "SELECT ID, MaleText_lang, FemaleText_lang FROM broadcast_text_locale WHERE locale = ?", CONNECTION_SYNCH);
// CharSections.db2
- PrepareStatement(HOTFIX_SEL_CHAR_SECTIONS, "SELECT Id, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3, Flags, Race, Gender, GenType, "
+ PrepareStatement(HOTFIX_SEL_CHAR_SECTIONS, "SELECT ID, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3, Flags, Race, Gender, GenType, "
"Type, Color FROM char_sections ORDER BY ID DESC", CONNECTION_SYNCH);
// CharStartOutfit.db2
@@ -126,9 +126,9 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"FacialHairCustomization2, HairCustomization, CreateScreenFileDataID, SelectScreenFileDataID, MaleCustomizeOffset1, MaleCustomizeOffset2, "
"MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, LowResScreenFileDataID, FactionID, "
"ExplorationSoundID, MaleDisplayID, FemaleDisplayID, ResSicknessSpellID, SplashSoundID, CinematicSequenceID, UAMaleCreatureSoundDataID, "
- "UAFemaleCreatureSoundDataID, Unk, BaseLanguage, CreatureType, TeamID, RaceRelated, UnalteredVisualRaceID, CharComponentTextureLayoutID, "
- "DefaultClassID, NeutralRaceID, ItemAppearanceFrameRaceID, CharComponentTexLayoutHiResID, HighResMaleDisplayID, HighResFemaleDisplayID"
- " FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH);
+ "UAFemaleCreatureSoundDataID, BaseLanguage, CreatureType, TeamID, RaceRelated, UnalteredVisualRaceID, CharComponentTextureLayoutID, "
+ "DefaultClassID, NeutralRaceID, ItemAppearanceFrameRaceID, CharComponentTexLayoutHiResID, HighResMaleDisplayID, HighResFemaleDisplayID, Unk1, "
+ "Unk2, Unk3 FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_RACES, "SELECT ID, Name_lang, NameFemale_lang, NameMale_lang FROM chr_races_locale WHERE locale = ?", CONNECTION_SYNCH);
// ChrSpecialization.db2
@@ -766,7 +766,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
" ORDER BY ID DESC", CONNECTION_SYNCH);
// SpellScaling.db2
- PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, ScalesFromItemLevel, MinScalingLevel, MaxScalingLevel, ScalingClass"
+ PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, ScalesFromItemLevel, ScalingClass, MinScalingLevel, MaxScalingLevel"
" FROM spell_scaling ORDER BY ID DESC", CONNECTION_SYNCH);
// SpellShapeshift.db2
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index 7bc32ba286e..21dadfc3793 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -970,9 +970,9 @@ struct ChrRacesMeta
{
static DB2Meta const* Instance()
{
- static char const* types = "iSSsssSSiiffihhhhhhhhhhbbbbbbbbbbii";
- static uint8 const arraySizes[35] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
- static DB2Meta instance(-1, 35, 0x26E7581C, types, arraySizes);
+ static char const* types = "iSSsssSSiiffihhhhhhhhhbbbbbbbbbbiii";
+ static uint8 const arraySizes[35] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3 };
+ static DB2Meta instance(-1, 35, 0x6B0D0422, types, arraySizes);
return &instance;
}
};
@@ -1047,9 +1047,9 @@ struct CloakDampeningMeta
{
static DB2Meta const* Instance()
{
- static char const* types = "fffff";
- static uint8 const arraySizes[5] = { 5, 5, 2, 2, 1 };
- static DB2Meta instance(-1, 5, 0x01CB22C0, types, arraySizes);
+ static char const* types = "fffffff";
+ static uint8 const arraySizes[7] = { 5, 5, 2, 2, 1, 1, 1 };
+ static DB2Meta instance(-1, 7, 0x4BEFEBC2, types, arraySizes);
return &instance;
}
};
@@ -1960,9 +1960,9 @@ struct GarrFollowerUICreatureMeta
{
static DB2Meta const* Instance()
{
- static char const* types = "ifhbb";
- static uint8 const arraySizes[5] = { 1, 1, 1, 1, 1 };
- static DB2Meta instance(-1, 5, 0x25A4DCAF, types, arraySizes);
+ static char const* types = "ifhbbb";
+ static uint8 const arraySizes[6] = { 1, 1, 1, 1, 1, 1 };
+ static DB2Meta instance(-1, 6, 0xE375F0A0, types, arraySizes);
return &instance;
}
};
@@ -2510,9 +2510,9 @@ struct InvasionClientDataMeta
{
static DB2Meta const* Instance()
{
- static char const* types = "sfiiiiiii";
- static uint8 const arraySizes[9] = { 1, 2, 1, 1, 1, 1, 1, 1, 1 };
- static DB2Meta instance(2, 9, 0x12F82601, types, arraySizes);
+ static char const* types = "sfiiiiiiii";
+ static uint8 const arraySizes[10] = { 1, 2, 1, 1, 1, 1, 1, 1, 1, 1 };
+ static DB2Meta instance(2, 10, 0x0C8EFD74, types, arraySizes);
return &instance;
}
};
@@ -5282,9 +5282,9 @@ struct SpellScalingMeta
{
static DB2Meta const* Instance()
{
- static char const* types = "ihbbi";
+ static char const* types = "ihiii";
static uint8 const arraySizes[5] = { 1, 1, 1, 1, 1 };
- static DB2Meta instance(-1, 5, 0xB0DB56A9, types, arraySizes);
+ static DB2Meta instance(-1, 5, 0x47D87C91, types, arraySizes);
return &instance;
}
};
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 9f2fbb55d64..e5359fb4907 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -326,7 +326,6 @@ struct ChrRacesEntry
uint16 CinematicSequenceID;
uint16 UAMaleCreatureSoundDataID;
uint16 UAFemaleCreatureSoundDataID;
- uint16 Unk;
uint8 BaseLanguage;
uint8 CreatureType;
uint8 TeamID;
@@ -339,6 +338,7 @@ struct ChrRacesEntry
uint8 CharComponentTexLayoutHiResID;
uint32 HighResMaleDisplayID;
uint32 HighResFemaleDisplayID;
+ uint32 Unk[3];
};
#define MAX_MASTERY_SPELLS 2
@@ -2294,9 +2294,9 @@ struct SpellScalingEntry
uint32 ID;
uint32 SpellID;
uint16 ScalesFromItemLevel;
- uint8 MinScalingLevel;
- uint8 MaxScalingLevel;
int32 ScalingClass;
+ uint32 MinScalingLevel;
+ uint32 MaxScalingLevel;
};
struct SpellShapeshiftEntry
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 0a1a0739616..47751548922 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -340,7 +340,6 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const
bool NoBirthAnim = false;
bool EnablePortals = false;
bool PlayHoverAnim = false;
- bool IsSuppressingGreetings = false;
bool HasMovementUpdate = (flags & UPDATEFLAG_LIVING) != 0;
bool HasMovementTransport = (flags & UPDATEFLAG_TRANSPORT_POSITION) != 0;
bool Stationary = (flags & UPDATEFLAG_STATIONARY_POSITION) != 0;
@@ -363,7 +362,6 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const
data->WriteBit(NoBirthAnim);
data->WriteBit(EnablePortals);
data->WriteBit(PlayHoverAnim);
- data->WriteBit(IsSuppressingGreetings);
data->WriteBit(HasMovementUpdate);
data->WriteBit(HasMovementTransport);
data->WriteBit(Stationary);
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 5775441d781..e119c1d8199 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2548,6 +2548,7 @@ void Player::InitStatsForLevel(bool reapplyMods)
SetFloatValue(UNIT_FIELD_MOD_HASTE, 1.0f);
SetFloatValue(UNIT_FIELD_MOD_RANGED_HASTE, 1.0f);
SetFloatValue(UNIT_FIELD_MOD_HASTE_REGEN, 1.0f);
+ SetFloatValue(UNIT_FIELD_MOD_TIME_RATE, 1.0f);
// reset size before reapply auras
SetObjectScale(1.0f);
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 00c926acbb0..a1114c0e28c 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -935,6 +935,18 @@ enum CharacterCustomizeFlags
CHAR_CUSTOMIZE_FLAG_RACE = 0x00100000 // name, gender, race, etc...
};
+enum CharacterFlags3 : uint32
+{
+ CHARACTER_FLAG_3_LOCKED_BY_REVOKED_VAS_TRANSACTION = 0x00100000,
+ CHARACTER_FLAG_3_LOCKED_BY_REVOKED_CHARACTER_UPGRADE = 0x80000000,
+};
+
+enum CharacterFlags4 : uint32
+{
+ CHARACTER_FLAG_4_TRIAL_BOOST = 0x00000080,
+ CHARACTER_FLAG_4_TRIAL_BOOST_LOCKED = 0x00040000,
+};
+
enum CharacterSlot
{
SLOT_HEAD = 0,
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h
index 0912c85dcb4..f17e079f0fb 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -209,6 +209,14 @@ namespace WorldPackets
ConnectToSerial Serial = ConnectToSerial::None;
uint8 Con = 0;
};
+
+ class EnableEncryption final : public ServerPacket
+ {
+ public:
+ EnableEncryption() : ServerPacket(SMSG_ENABLE_ENCRYPTION, 0) { }
+
+ WorldPacket const* Write() override { return &_worldPacket; }
+ };
}
}
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 4907e42f808..5e7efd257f7 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -88,6 +88,7 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel
CustomizationFlag = CHAR_CUSTOMIZE_FLAG_RACE;
Flags3 = 0;
+ Flags4 = 0;
FirstLogin = (atLoginFlags & AT_LOGIN_FIRST) != 0;
// show pet at selection character in character list only for non-ghost character
@@ -177,8 +178,9 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
}
_worldPacket << uint32(charInfo.LastPlayedTime);
- _worldPacket << uint16(charInfo.UnkLegion);
- _worldPacket << uint32(charInfo.ClassTrialFlags);
+ _worldPacket << uint16(charInfo.SpecID);
+ _worldPacket << uint32(charInfo.Unknown703);
+ _worldPacket << uint32(charInfo.Flags4);
_worldPacket.WriteBits(charInfo.Name.length(), 6);
_worldPacket.WriteBit(charInfo.FirstLogin);
_worldPacket.WriteBit(charInfo.BoostInProgress);
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index e61b7535cca..ec3ac9dc172 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -135,10 +135,12 @@ namespace WorldPackets
uint32 Flags = 0; ///< Character flag @see enum CharacterFlags
uint32 CustomizationFlag = 0; ///< Character customization flags @see enum CharacterCustomizeFlags
uint32 Flags3 = 0; ///< Character flags 3 @todo research
+ uint32 Flags4 = 0;
bool FirstLogin = false;
uint8 unkWod61x = 0;
uint32 LastPlayedTime = 0;
- uint16 UnkLegion = 0; // may be spec id
+ uint16 SpecID = 0;
+ uint32 Unknown703;
struct PetInfo
{
@@ -149,7 +151,6 @@ namespace WorldPackets
bool BoostInProgress = false; ///< @todo
int32 ProfessionIds[2]; ///< @todo
- uint32 ClassTrialFlags = 0;
struct VisualItemInfo
{
diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp
index 21626fd8640..8cc97ca2557 100644
--- a/src/server/game/Server/Packets/GuildPackets.cpp
+++ b/src/server/game/Server/Packets/GuildPackets.cpp
@@ -69,14 +69,13 @@ WorldPacket const* WorldPackets::Guild::GuildRoster::Write()
_worldPacket.AppendPackedTime(CreateDate);
_worldPacket << GuildFlags;
_worldPacket << uint32(MemberData.size());
+ _worldPacket.WriteBits(WelcomeText.length(), 10);
+ _worldPacket.WriteBits(InfoText.length(), 11);
+ _worldPacket.FlushBits();
for (GuildRosterMemberData const& member : MemberData)
_worldPacket << member;
- _worldPacket.WriteBits(WelcomeText.length(), 10);
- _worldPacket.WriteBits(InfoText.length(), 10);
- _worldPacket.FlushBits();
-
_worldPacket.WriteString(WelcomeText);
_worldPacket.WriteString(InfoText);
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 9e8090b03b2..33721e23d5b 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -142,15 +142,6 @@ WorldPacket const* WorldPackets::NPC::PlayerTabardVendorActivate::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::NPC::SuppressNPCGreetings::Write()
-{
- _worldPacket << UnitGUID;
- _worldPacket.WriteBit(SuppressNPCGreeting);
- _worldPacket.FlushBits();
-
- return &_worldPacket;
-}
-
WorldPacket const* WorldPackets::NPC::GossipPOI::Write()
{
_worldPacket.WriteBits(Flags, 14);
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index 98fa079afaa..b18ce340ae0 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -172,17 +172,6 @@ namespace WorldPackets
ObjectGuid Vendor;
};
- class SuppressNPCGreetings final : public ServerPacket
- {
- public:
- SuppressNPCGreetings() : ServerPacket(SMSG_SUPPRESS_NPC_GREETINGS, 16 + 1) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid UnitGUID;
- bool SuppressNPCGreeting = false;
- };
-
class GossipPOI final : public ServerPacket
{
public:
diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp
index b3d4572f550..524ab132c80 100644
--- a/src/server/game/Server/Packets/ReputationPackets.cpp
+++ b/src/server/game/Server/Packets/ReputationPackets.cpp
@@ -42,7 +42,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Reputation::ForcedReactio
WorldPacket const* WorldPackets::Reputation::SetForcedReactions::Write()
{
- _worldPacket.WriteBits(Reactions.size(), 6);
+ _worldPacket << uint32(Reactions.size());
for (ForcedReaction const& reaction : Reactions)
_worldPacket << reaction;
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 395a7c66fe6..e39182b280f 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -49,6 +49,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.WriteBit(Unk67);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(KioskModeEnabled);
+ _worldPacket.WriteBit(RaceClassExpansionLevels.is_initialized());
_worldPacket.FlushBits();
@@ -72,6 +73,13 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket << int32(SessionAlert->DisplayTime);
}
+ if (RaceClassExpansionLevels)
+ {
+ _worldPacket << uint32(RaceClassExpansionLevels->size());
+ if (!RaceClassExpansionLevels->empty())
+ _worldPacket.append(RaceClassExpansionLevels->data(), RaceClassExpansionLevels->size());
+ }
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index 1ae7d73d28e..7a420df6859 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -85,6 +85,8 @@ namespace WorldPackets
bool TutorialsEnabled = false;
bool NPETutorialsEnabled = false;
bool KioskModeEnabled = false;
+
+ Optional<std::vector<uint8>> RaceClassExpansionLevels;
};
class FeatureSystemStatusGlueScreen final : public ServerPacket
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 1d6be511871..8efd98c19f9 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -282,7 +282,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_SAY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessage, &WorldSession::HandleChatMessageOpcode);
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_WHISPER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessageWhisper, &WorldSession::HandleChatMessageWhisperOpcode);
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_YELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessage, &WorldSession::HandleChatMessageOpcode);
- DEFINE_HANDLER(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatRegisterAddonPrefixes, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
+ DEFINE_HANDLER(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatRegisterAddonPrefixes, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
DEFINE_HANDLER(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_REPORT_IGNORED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatReportIgnored, &WorldSession::HandleChatIgnoredOpcode);
DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatUnregisterAllAddonPrefixes, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode);
@@ -335,6 +335,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_DUEL_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Duel::DuelResponse, &WorldSession::HandleDuelResponseOpcode);
DEFINE_HANDLER(CMSG_EJECT_PASSENGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::EjectPassenger, &WorldSession::HandleEjectPassenger);
DEFINE_HANDLER(CMSG_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::EmoteClient, &WorldSession::HandleEmoteOpcode);
+ DEFINE_HANDLER(CMSG_ENABLE_ENCRYPTION_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_ENABLE_NAGLE, STATUS_NEVER, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_ENABLE_TAXI_NODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Taxi::EnableTaxiNode, &WorldSession::HandleEnableTaxiNodeOpcode);
DEFINE_HANDLER(CMSG_ENGINE_SURVEY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -627,6 +628,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUEST_GIVER_REQUEST_REWARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverRequestReward, &WorldSession::HandleQuestgiverRequestRewardOpcode);
DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverStatusMultipleQuery, &WorldSession::HandleQuestgiverStatusMultipleQuery);
DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Quest::QuestGiverStatusQuery, &WorldSession::HandleQuestgiverStatusQueryOpcode);
+ DEFINE_HANDLER(CMSG_QUEST_GIVER_UNIGNORE_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUEST_LOG_REMOVE_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestLogRemoveQuest, &WorldSession::HandleQuestLogRemoveQuest);
DEFINE_HANDLER(CMSG_QUEST_POI_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QuestPOIQuery, &WorldSession::HandleQuestPOIQuery);
DEFINE_HANDLER(CMSG_QUEST_PUSH_RESULT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestPushResult, &WorldSession::HandleQuestPushResult);
@@ -824,7 +826,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_TOYS_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_EARNED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_EARNED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_TAXI_REPLY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVE_GLYPHS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_BATTLENET_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -837,7 +839,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AI_REACTION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_ACCOUNT_CRITERIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_ACHIEVEMENT_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_GUILD_ACHIEVEMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_GUILD_ACHIEVEMENTS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARCHAEOLOGY_SURVERY_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_SPIRIT_HEALER_TIME, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_DENIED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -985,6 +987,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_JOINED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_LEFT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_CLASS_TRIAL_CREATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_ITEM_FIXUP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_LOGIN_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_OBJECT_TEST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_RENAME_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1068,6 +1071,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DURABILITY_DAMAGE_DEATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EMOTE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_BARBER_SHOP, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_ENCRYPTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCHANTMENT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1163,8 +1167,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_NEW_LEADER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_UNINVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DELETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_EARNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_EARNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_MEMBERS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_LOG_QUERY_RESULTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_QUERY_RESULTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1204,7 +1208,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MOVE_STARTING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NAME_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS_DELETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PARTY_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1212,7 +1216,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_REACTION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REWARD_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_SEND_RANK_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1529,6 +1533,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UNIGNORED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1681,7 +1686,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_REQUEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPERCEDED_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPPRESS_NPC_GREETINGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_COMMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_TOKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_INVOLUNTARILY_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 40e469acea6..a3346f5e6cb 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -258,7 +258,8 @@ enum OpcodeClient : uint32
CMSG_DUEL_RESPONSE = 0x34D2,
CMSG_EJECT_PASSENGER = 0x321E,
CMSG_EMOTE = 0x352E,
- CMSG_ENABLE_NAGLE = 0x376A,
+ CMSG_ENABLE_ENCRYPTION_ACK = 0x3767,
+ CMSG_ENABLE_NAGLE = 0x376B,
CMSG_ENABLE_TAXI_NODE = 0x34A4,
CMSG_ENGINE_SURVEY = 0x36E9,
CMSG_ENUM_CHARACTERS = 0x35E6,
@@ -392,8 +393,8 @@ enum OpcodeClient : uint32
CMSG_LOGOUT_CANCEL = 0x34C8,
CMSG_LOGOUT_INSTANT = 0x34C9,
CMSG_LOGOUT_REQUEST = 0x34C7,
- CMSG_LOG_DISCONNECT = 0x3768,
- CMSG_LOG_STREAMING_ERROR = 0x376C,
+ CMSG_LOG_DISCONNECT = 0x3769,
+ CMSG_LOG_STREAMING_ERROR = 0x376D,
CMSG_LOOT_ITEM = 0x31F3,
CMSG_LOOT_MONEY = 0x31F2,
CMSG_LOOT_RELEASE = 0x31F7,
@@ -512,9 +513,9 @@ enum OpcodeClient : uint32
CMSG_PET_SET_ACTION = 0x3481,
CMSG_PET_SPELL_AUTOCAST = 0x3486,
CMSG_PET_STOP_ATTACK = 0x3483,
- CMSG_PING = 0x3767,
+ CMSG_PING = 0x3768,
CMSG_PLAYER_LOGIN = 0x35E8,
- CMSG_PROTOCOL_MISMATCH = 0x376D,
+ CMSG_PROTOCOL_MISMATCH = 0x376E,
CMSG_PUSH_QUEST_TO_PARTY = 0x349A,
CMSG_PVP_LOG_DATA = 0x3179,
CMSG_PVP_PRESTIGE_RANK_UP = 0x331E,
@@ -545,15 +546,16 @@ enum OpcodeClient : uint32
CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x3495,
CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3493,
CMSG_QUEST_GIVER_HELLO = 0x348D,
- CMSG_QUEST_GIVER_INGORE_QUEST = 0x3491,
+ CMSG_QUEST_GIVER_IGNORE_QUEST = 0x3491,
CMSG_QUEST_GIVER_QUERY_QUEST = 0x348E,
CMSG_QUEST_GIVER_REQUEST_REWARD = 0x3496,
CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x3498,
CMSG_QUEST_GIVER_STATUS_QUERY = 0x3497,
+ CMSG_QUEST_GIVER_UNIGNORE_QUEST = 0x3492,
CMSG_QUEST_LOG_REMOVE_QUEST = 0x351B,
CMSG_QUEST_POI_QUERY = 0x36B6,
CMSG_QUEST_PUSH_RESULT = 0x349B,
- CMSG_QUEUED_MESSAGES_END = 0x376B,
+ CMSG_QUEUED_MESSAGES_END = 0x376C,
CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36EA,
CMSG_RANDOM_ROLL = 0x3654,
CMSG_READY_CHECK_RESPONSE = 0x3634,
@@ -670,7 +672,7 @@ enum OpcodeClient : uint32
CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644,
CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3646,
CMSG_SUSPEND_COMMS_ACK = 0x3764,
- CMSG_SUSPEND_TOKEN_RESPONSE = 0x3769,
+ CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
CMSG_SWAP_SUB_GROUPS = 0x364D,
@@ -730,7 +732,7 @@ enum OpcodeClient : uint32
CMSG_WHO = 0x3686,
CMSG_WHO_IS = 0x3685,
CMSG_WORLD_PORT_RESPONSE = 0x35F6,
- CMSG_WORLD_TELEPORT = 0x3324,
+ CMSG_WORLD_TELEPORT = 0x3326,
CMSG_WRAP_ITEM = 0x3994,
CMSG_BF_MGR_ENTRY_INVITE_RESPONSE = 0xBADD,
@@ -741,60 +743,60 @@ enum OpcodeClient : uint32
enum OpcodeServer : uint32
{
SMSG_ABORT_NEW_WORLD = 0x25AB,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x264E,
- SMSG_ACCOUNT_DATA_TIMES = 0x2745,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x264D,
+ SMSG_ACCOUNT_DATA_TIMES = 0x2744,
SMSG_ACCOUNT_MOUNT_UPDATE = 0x25C1,
SMSG_ACCOUNT_TOYS_UPDATE = 0x25C2,
- SMSG_ACHIEVEMENT_DELETED = 0x271B,
- SMSG_ACHIEVEMENT_EARNED = 0x265C,
- SMSG_ACTIVATE_TAXI_REPLY = 0x26A2,
+ SMSG_ACHIEVEMENT_DELETED = 0x271A,
+ SMSG_ACHIEVEMENT_EARNED = 0x265B,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x26A1,
SMSG_ACTIVE_GLYPHS = 0x2C52,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2656,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2655,
SMSG_ADD_ITEM_PASSIVE = 0x25BD,
- SMSG_ADD_LOSS_OF_CONTROL = 0x2692,
- SMSG_ADD_RUNE_POWER = 0x26DF,
- SMSG_ADJUST_SPLINE_DURATION = 0x25E5,
- SMSG_AE_LOOT_TARGETS = 0x2629,
- SMSG_AE_LOOT_TARGET_ACK = 0x262A,
- SMSG_AI_REACTION = 0x26DC,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x2691,
+ SMSG_ADD_RUNE_POWER = 0x26DE,
+ SMSG_ADJUST_SPLINE_DURATION = 0x25E4,
+ SMSG_AE_LOOT_TARGETS = 0x2628,
+ SMSG_AE_LOOT_TARGET_ACK = 0x2629,
+ SMSG_AI_REACTION = 0x26DB,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2570,
SMSG_ALL_ACHIEVEMENT_DATA = 0x256F,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2586,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x277F,
- SMSG_AREA_TRIGGER_DENIED = 0x2699,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x2751,
- SMSG_AREA_TRIGGER_RE_PATH = 0x263C,
- SMSG_AREA_TRIGGER_RE_SHAPE = 0x263A,
- SMSG_ARENA_ERROR = 0x270E,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2661,
- SMSG_ARTIFACT_APPEARANCE_CHANGED = 0x27DF,
- SMSG_ARTIFACT_FORGE_OPENED = 0x27DD,
- SMSG_ARTIFACT_POWERS_UPDATED = 0x27DE,
- SMSG_ARTIFACT_XP_GAIN = 0x281E,
- SMSG_ATTACKER_STATE_UPDATE = 0x27CA,
- SMSG_ATTACK_START = 0x2669,
- SMSG_ATTACK_STOP = 0x266A,
- SMSG_ATTACK_SWING_ERROR = 0x2730,
- SMSG_ATTACK_SWING_LANDED_LOG = 0x2731,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2725,
- SMSG_AUCTION_COMMAND_RESULT = 0x2722,
- SMSG_AUCTION_HELLO_RESPONSE = 0x2720,
- SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x2729,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2727,
- SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x2728,
- SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x272A,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2724,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2726,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x2721,
- SMSG_AUCTION_WON_NOTIFICATION = 0x2723,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x277E,
+ SMSG_AREA_TRIGGER_DENIED = 0x2698,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x2750,
+ SMSG_AREA_TRIGGER_RE_PATH = 0x263B,
+ SMSG_AREA_TRIGGER_RE_SHAPE = 0x2639,
+ SMSG_ARENA_ERROR = 0x270D,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2660,
+ SMSG_ARTIFACT_APPEARANCE_CHANGED = 0x27DE,
+ SMSG_ARTIFACT_FORGE_OPENED = 0x27DC,
+ SMSG_ARTIFACT_POWERS_UPDATED = 0x27DD,
+ SMSG_ARTIFACT_XP_GAIN = 0x281D,
+ SMSG_ATTACKER_STATE_UPDATE = 0x27C9,
+ SMSG_ATTACK_START = 0x2668,
+ SMSG_ATTACK_STOP = 0x2669,
+ SMSG_ATTACK_SWING_ERROR = 0x272F,
+ SMSG_ATTACK_SWING_LANDED_LOG = 0x2730,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2724,
+ SMSG_AUCTION_COMMAND_RESULT = 0x2721,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x271F,
+ SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x2728,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2726,
+ SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x2727,
+ SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x2729,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2723,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2725,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x2720,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x2722,
SMSG_AURA_POINTS_DEPLETED = 0x2C22,
SMSG_AURA_UPDATE = 0x2C21,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_RESPONSE = 0x256C,
SMSG_AVAILABLE_VOICE_CHANNEL = 0x2BB2,
- SMSG_BAN_REASON = 0x26AE,
- SMSG_BARBER_SHOP_RESULT = 0x26E5,
+ SMSG_BAN_REASON = 0x26AD,
+ SMSG_BARBER_SHOP_RESULT = 0x26E4,
SMSG_BATTLEFIELD_LIST = 0x2594,
SMSG_BATTLEFIELD_PORT_DENIED = 0x259A,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2590,
@@ -804,114 +806,115 @@ enum OpcodeServer : uint32
SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2591,
SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x25A3,
SMSG_BATTLEGROUND_INFO_THROTTLED = 0x259B,
- SMSG_BATTLEGROUND_INIT = 0x279D,
+ SMSG_BATTLEGROUND_INIT = 0x279C,
SMSG_BATTLEGROUND_PLAYER_JOINED = 0x2598,
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x2599,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2595,
- SMSG_BATTLEGROUND_POINTS = 0x279C,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x27C9,
- SMSG_BATTLENET_CHALLENGE_START = 0x27C8,
- SMSG_BATTLENET_NOTIFICATION = 0x2833,
- SMSG_BATTLENET_REALM_LIST_TICKET = 0x2835,
- SMSG_BATTLENET_RESPONSE = 0x2832,
- SMSG_BATTLENET_SET_SESSION_STATE = 0x2834,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x27C1,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27C0,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27B7,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27B6,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27B5,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27B3,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27B1,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27B2,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27BF,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27BD,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27BC,
- SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27B4,
- SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2822,
- SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x2825,
- SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x2826,
- SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x2824,
- SMSG_BATTLE_PETS_HEALED = 0x2607,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x269C,
- SMSG_BATTLE_PET_DELETED = 0x2604,
- SMSG_BATTLE_PET_ERROR = 0x2651,
- SMSG_BATTLE_PET_JOURNAL = 0x2603,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x2601,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x2602,
- SMSG_BATTLE_PET_LICENSE_CHANGED = 0x2608,
- SMSG_BATTLE_PET_MAX_COUNT_CHANGED = 0x25FF,
- SMSG_BATTLE_PET_RESTORED = 0x2606,
- SMSG_BATTLE_PET_REVOKED = 0x2605,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x25FE,
- SMSG_BATTLE_PET_UPDATES = 0x25FD,
- SMSG_BINDER_CONFIRM = 0x2736,
+ SMSG_BATTLEGROUND_POINTS = 0x279B,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x27C8,
+ SMSG_BATTLENET_CHALLENGE_START = 0x27C7,
+ SMSG_BATTLENET_NOTIFICATION = 0x2832,
+ SMSG_BATTLENET_REALM_LIST_TICKET = 0x2834,
+ SMSG_BATTLENET_RESPONSE = 0x2831,
+ SMSG_BATTLENET_SET_SESSION_STATE = 0x2833,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x27C0,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27BF,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27B6,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27B5,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27B4,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27B2,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27B0,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27B1,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27BE,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27BC,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27BB,
+ SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27B3,
+ SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2821,
+ SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x2824,
+ SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x2825,
+ SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x2823,
+ SMSG_BATTLE_PETS_HEALED = 0x2606,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x269B,
+ SMSG_BATTLE_PET_DELETED = 0x2603,
+ SMSG_BATTLE_PET_ERROR = 0x2650,
+ SMSG_BATTLE_PET_JOURNAL = 0x2602,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x2600,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x2601,
+ SMSG_BATTLE_PET_LICENSE_CHANGED = 0x2607,
+ SMSG_BATTLE_PET_MAX_COUNT_CHANGED = 0x25FE,
+ SMSG_BATTLE_PET_RESTORED = 0x2605,
+ SMSG_BATTLE_PET_REVOKED = 0x2604,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x25FD,
+ SMSG_BATTLE_PET_UPDATES = 0x25FC,
+ SMSG_BINDER_CONFIRM = 0x2735,
SMSG_BIND_POINT_UPDATE = 0x257C,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2641,
- SMSG_BLACK_MARKET_OPEN_RESULT = 0x263F,
- SMSG_BLACK_MARKET_OUTBID = 0x2642,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2640,
- SMSG_BLACK_MARKET_WON = 0x2643,
- SMSG_BONUS_ROLL_EMPTY = 0x265E,
- SMSG_BOSS_KILL_CREDIT = 0x27BB,
- SMSG_BREAK_TARGET = 0x2668,
- SMSG_BUY_FAILED = 0x26EE,
- SMSG_BUY_SUCCEEDED = 0x26ED,
- SMSG_CACHE_VERSION = 0x273F,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26C2,
- SMSG_CALENDAR_COMMAND_RESULT = 0x26C3,
- SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26B2,
- SMSG_CALENDAR_EVENT_INVITE = 0x26B3,
- SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x26B4,
- SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS = 0x26B7,
- SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x26BC,
- SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x26BD,
- SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x26B8,
- SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x26B9,
- SMSG_CALENDAR_EVENT_INVITE_STATUS = 0x26B5,
- SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x26B6,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x26BA,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x26BB,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x26BE,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x26BF,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x26C0,
- SMSG_CALENDAR_SEND_CALENDAR = 0x26B0,
- SMSG_CALENDAR_SEND_EVENT = 0x26B1,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x26C1,
- SMSG_CAMERA_EFFECT = 0x2763,
- SMSG_CAMERA_SHAKE = 0x2764,
- SMSG_CANCEL_AUTO_REPEAT = 0x270F,
- SMSG_CANCEL_COMBAT = 0x272E,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2640,
+ SMSG_BLACK_MARKET_OPEN_RESULT = 0x263E,
+ SMSG_BLACK_MARKET_OUTBID = 0x2641,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x263F,
+ SMSG_BLACK_MARKET_WON = 0x2642,
+ SMSG_BONUS_ROLL_EMPTY = 0x265D,
+ SMSG_BOSS_KILL_CREDIT = 0x27BA,
+ SMSG_BREAK_TARGET = 0x2667,
+ SMSG_BUY_FAILED = 0x26ED,
+ SMSG_BUY_SUCCEEDED = 0x26EC,
+ SMSG_CACHE_VERSION = 0x273E,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26C1,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x26C2,
+ SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26B1,
+ SMSG_CALENDAR_EVENT_INVITE = 0x26B2,
+ SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x26B3,
+ SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS = 0x26B6,
+ SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x26BB,
+ SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x26BC,
+ SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x26B7,
+ SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x26B8,
+ SMSG_CALENDAR_EVENT_INVITE_STATUS = 0x26B4,
+ SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x26B5,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x26B9,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x26BA,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x26BD,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x26BE,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x26BF,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x26AF,
+ SMSG_CALENDAR_SEND_EVENT = 0x26B0,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x26C0,
+ SMSG_CAMERA_EFFECT = 0x2762,
+ SMSG_CAMERA_SHAKE = 0x2763,
+ SMSG_CANCEL_AUTO_REPEAT = 0x270E,
+ SMSG_CANCEL_COMBAT = 0x272D,
SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C45,
- SMSG_CANCEL_SCENE = 0x2650,
+ SMSG_CANCEL_SCENE = 0x264F,
SMSG_CANCEL_SPELL_VISUAL = 0x2C43,
SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C47,
- SMSG_CAN_DUEL_RESULT = 0x2672,
+ SMSG_CAN_DUEL_RESULT = 0x2671,
SMSG_CAST_FAILED = 0x2C55,
SMSG_CATEGORY_COOLDOWN = 0x2C16,
- SMSG_CHALLEGE_MODE_REWARDS = 0x261E,
- SMSG_CHALLENGE_MODE_ALL_MAP_STATS = 0x261F,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x261D,
- SMSG_CHALLENGE_MODE_MAP_STATS_UPDATE = 0x2620,
- SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x2622,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2621,
- SMSG_CHALLENGE_MODE_RESET = 0x261C,
- SMSG_CHALLENGE_MODE_START = 0x261B,
- SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x2732,
+ SMSG_CHALLEGE_MODE_REWARDS = 0x261D,
+ SMSG_CHALLENGE_MODE_ALL_MAP_STATS = 0x261E,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x261C,
+ SMSG_CHALLENGE_MODE_MAP_STATS_UPDATE = 0x261F,
+ SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x2621,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2620,
+ SMSG_CHALLENGE_MODE_RESET = 0x261B,
+ SMSG_CHALLENGE_MODE_START = 0x261A,
+ SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x2731,
SMSG_CHANNEL_LIST = 0x2BC8,
SMSG_CHANNEL_NOTIFY = 0x2BC5,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC6,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC7,
- SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x27F8,
- SMSG_CHARACTER_LOGIN_FAILED = 0x2740,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27C7,
- SMSG_CHARACTER_RENAME_RESULT = 0x27A3,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27F7,
- SMSG_CHARACTER_UPGRADE_QUEUED = 0x27F6,
- SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F2,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x27F5,
- SMSG_CHAR_CUSTOMIZE = 0x2716,
- SMSG_CHAR_CUSTOMIZE_FAILED = 0x2715,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27E4,
+ SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x27F7,
+ SMSG_CHARACTER_ITEM_FIXUP = 0x283C,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x273F,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27C6,
+ SMSG_CHARACTER_RENAME_RESULT = 0x27A2,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27F6,
+ SMSG_CHARACTER_UPGRADE_QUEUED = 0x27F5,
+ SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F1,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27F4,
+ SMSG_CHAR_CUSTOMIZE = 0x2715,
+ SMSG_CHAR_CUSTOMIZE_FAILED = 0x2714,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27E3,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BBD,
SMSG_CHAT_DOWN = 0x2BC2,
@@ -927,95 +930,96 @@ enum OpcodeServer : uint32
SMSG_CHECK_WARGAME_ENTRY = 0x259E,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C26,
SMSG_CLEAR_BOSS_EMOTES = 0x25CA,
- SMSG_CLEAR_COOLDOWN = 0x26E1,
+ SMSG_CLEAR_COOLDOWN = 0x26E0,
SMSG_CLEAR_COOLDOWNS = 0x2C25,
- SMSG_CLEAR_LOSS_OF_CONTROL = 0x2694,
+ SMSG_CLEAR_LOSS_OF_CONTROL = 0x2693,
SMSG_CLEAR_SPELL_CHARGES = 0x2C27,
- SMSG_CLEAR_TARGET = 0x26D8,
- SMSG_COIN_REMOVED = 0x2628,
- SMSG_COMBAT_EVENT_FAILED = 0x266B,
- SMSG_COMMENTATOR_MAP_INFO = 0x2742,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x2743,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x2741,
- SMSG_COMPLAINT_RESULT = 0x26D0,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27D9,
- SMSG_CONNECT_TO = 0x304C,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27C2,
- SMSG_CONSOLE_WRITE = 0x264D,
- SMSG_CONTACT_LIST = 0x27C5,
- SMSG_CONTROL_UPDATE = 0x2660,
- SMSG_COOLDOWN_CHEAT = 0x2778,
- SMSG_COOLDOWN_EVENT = 0x26E0,
- SMSG_CORPSE_LOCATION = 0x2667,
- SMSG_CORPSE_RECLAIM_DELAY = 0x278B,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x274D,
- SMSG_CREATE_CHAR = 0x273B,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x27D8,
- SMSG_CRITERIA_DELETED = 0x271A,
- SMSG_CRITERIA_UPDATE = 0x2714,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26E9,
- SMSG_CUSTOM_LOAD_SCREEN = 0x25E0,
+ SMSG_CLEAR_TARGET = 0x26D7,
+ SMSG_COIN_REMOVED = 0x2627,
+ SMSG_COMBAT_EVENT_FAILED = 0x266A,
+ SMSG_COMMENTATOR_MAP_INFO = 0x2741,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x2742,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x2740,
+ SMSG_COMPLAINT_RESULT = 0x26CF,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27D8,
+ SMSG_CONNECT_TO = 0x304D,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27C1,
+ SMSG_CONSOLE_WRITE = 0x264C,
+ SMSG_CONTACT_LIST = 0x27C4,
+ SMSG_CONTROL_UPDATE = 0x265F,
+ SMSG_COOLDOWN_CHEAT = 0x2777,
+ SMSG_COOLDOWN_EVENT = 0x26DF,
+ SMSG_CORPSE_LOCATION = 0x2666,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x278A,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x274C,
+ SMSG_CREATE_CHAR = 0x273A,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x27D7,
+ SMSG_CRITERIA_DELETED = 0x2719,
+ SMSG_CRITERIA_UPDATE = 0x2713,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26E8,
+ SMSG_CUSTOM_LOAD_SCREEN = 0x25DF,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
- SMSG_DAMAGE_CALC_LOG = 0x27FF,
- SMSG_DANCE_STUDIO_CREATE_RESULT = 0x27A0,
+ SMSG_DAMAGE_CALC_LOG = 0x27FE,
+ SMSG_DANCE_STUDIO_CREATE_RESULT = 0x279F,
SMSG_DB_REPLY = 0x25A0,
- SMSG_DEATH_RELEASE_LOC = 0x2702,
+ SMSG_DEATH_RELEASE_LOC = 0x2701,
SMSG_DEFENSE_MESSAGE = 0x2BBB,
- SMSG_DELETE_CHAR = 0x273C,
- SMSG_DESTROY_ARENA_UNIT = 0x2781,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x272F,
+ SMSG_DELETE_CHAR = 0x273B,
+ SMSG_DESTROY_ARENA_UNIT = 0x2780,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x272E,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258A,
SMSG_DISENCHANT_CREDIT = 0x25BA,
- SMSG_DISMOUNT = 0x26D7,
+ SMSG_DISMOUNT = 0x26D6,
SMSG_DISMOUNT_RESULT = 0x257B,
SMSG_DISPEL_FAILED = 0x2C2F,
SMSG_DISPLAY_GAME_ERROR = 0x25B3,
- SMSG_DISPLAY_PLAYER_CHOICE = 0x269D,
- SMSG_DISPLAY_PROMOTION = 0x2664,
+ SMSG_DISPLAY_PLAYER_CHOICE = 0x269C,
+ SMSG_DISPLAY_PROMOTION = 0x2663,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9C,
- SMSG_DISPLAY_TOAST = 0x2636,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25F4,
- SMSG_DROP_NEW_CONNECTION = 0x304B,
- SMSG_DUEL_COMPLETE = 0x2670,
- SMSG_DUEL_COUNTDOWN = 0x266F,
- SMSG_DUEL_IN_BOUNDS = 0x266E,
- SMSG_DUEL_OUT_OF_BOUNDS = 0x266D,
- SMSG_DUEL_REQUESTED = 0x266C,
- SMSG_DUEL_WINNER = 0x2671,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x2787,
- SMSG_EMOTE = 0x2800,
- SMSG_ENABLE_BARBER_SHOP = 0x26E4,
- SMSG_ENCHANTMENT_LOG = 0x274E,
- SMSG_ENCOUNTER_END = 0x27BA,
- SMSG_ENCOUNTER_START = 0x27B9,
+ SMSG_DISPLAY_TOAST = 0x2635,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25F3,
+ SMSG_DROP_NEW_CONNECTION = 0x304C,
+ SMSG_DUEL_COMPLETE = 0x266F,
+ SMSG_DUEL_COUNTDOWN = 0x266E,
+ SMSG_DUEL_IN_BOUNDS = 0x266D,
+ SMSG_DUEL_OUT_OF_BOUNDS = 0x266C,
+ SMSG_DUEL_REQUESTED = 0x266B,
+ SMSG_DUEL_WINNER = 0x2670,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x2786,
+ SMSG_EMOTE = 0x27FF,
+ SMSG_ENABLE_BARBER_SHOP = 0x26E3,
+ SMSG_ENABLE_ENCRYPTION = 0x3049,
+ SMSG_ENCHANTMENT_LOG = 0x274D,
+ SMSG_ENCOUNTER_END = 0x27B9,
+ SMSG_ENCOUNTER_START = 0x27B8,
SMSG_ENUM_CHARACTERS_RESULT = 0x2582,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C20,
- SMSG_EQUIPMENT_SET_ID = 0x26D9,
+ SMSG_EQUIPMENT_SET_ID = 0x26D8,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x279F,
- SMSG_FACTION_BONUS_INFO = 0x2762,
- SMSG_FAILED_PLAYER_CONDITION = 0x25DF,
- SMSG_FEATURE_SYSTEM_STATUS = 0x25CF,
- SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25D0,
- SMSG_FEIGN_DEATH_RESISTED = 0x2784,
- SMSG_FISH_ESCAPED = 0x26F6,
- SMSG_FISH_NOT_HOOKED = 0x26F5,
+ SMSG_EXPLORATION_EXPERIENCE = 0x279E,
+ SMSG_FACTION_BONUS_INFO = 0x2761,
+ SMSG_FAILED_PLAYER_CONDITION = 0x25DE,
+ SMSG_FEATURE_SYSTEM_STATUS = 0x25CE,
+ SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25CF,
+ SMSG_FEIGN_DEATH_RESISTED = 0x2783,
+ SMSG_FISH_ESCAPED = 0x26F5,
+ SMSG_FISH_NOT_HOOKED = 0x26F4,
SMSG_FLIGHT_SPLINE_SYNC = 0x2DF7,
- SMSG_FORCED_DEATH_UPDATE = 0x2703,
- SMSG_FORCE_ANIM = 0x2791,
- SMSG_FORCE_OBJECT_RELINK = 0x2663,
- SMSG_FRIEND_STATUS = 0x27C6,
- SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25D3,
- SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25D4,
- SMSG_GAME_OBJECT_DESPAWN = 0x25D5,
+ SMSG_FORCED_DEATH_UPDATE = 0x2702,
+ SMSG_FORCE_ANIM = 0x2790,
+ SMSG_FORCE_OBJECT_RELINK = 0x2662,
+ SMSG_FRIEND_STATUS = 0x27C5,
+ SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25D2,
+ SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25D3,
+ SMSG_GAME_OBJECT_DESPAWN = 0x25D4,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4A,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C49,
- SMSG_GAME_OBJECT_RESET_STATE = 0x2759,
- SMSG_GAME_OBJECT_SET_STATE = 0x2831,
- SMSG_GAME_OBJECT_UI_ACTION = 0x2756,
- SMSG_GAME_SPEED_SET = 0x26A6,
- SMSG_GAME_TIME_SET = 0x2747,
- SMSG_GAME_TIME_UPDATE = 0x2746,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2758,
+ SMSG_GAME_OBJECT_SET_STATE = 0x2830,
+ SMSG_GAME_OBJECT_UI_ACTION = 0x2755,
+ SMSG_GAME_SPEED_SET = 0x26A5,
+ SMSG_GAME_TIME_SET = 0x2746,
+ SMSG_GAME_TIME_UPDATE = 0x2745,
SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2902,
SMSG_GARRISON_ADD_MISSION_RESULT = 0x2906,
SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2918,
@@ -1033,7 +1037,7 @@ enum OpcodeServer : uint32
SMSG_GARRISON_FOLLOWER_CHANGED_STATUS = 0x2915,
SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x2912,
SMSG_GARRISON_IS_UPGRADEABLE_RESULT = 0x2929,
- SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27DB,
+ SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27DA,
SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x28F7,
SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x28F5,
SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2905,
@@ -1061,25 +1065,25 @@ enum OpcodeServer : uint32
SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x28F8,
SMSG_GARRISON_UPGRADE_RESULT = 0x28FD,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2583,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A1,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A0,
SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE = 0x2928,
SMSG_GET_GARRISON_INFO_RESULT = 0x28F0,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27DA,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27D6,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x27FB,
- SMSG_GM_PLAYER_INFO = 0x2777,
- SMSG_GM_REQUEST_PLAYER_INFO = 0x25EA,
- SMSG_GM_TICKET_CASE_STATUS = 0x26C9,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x26C8,
- SMSG_GOD_MODE = 0x2735,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27D9,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27D5,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27FA,
+ SMSG_GM_PLAYER_INFO = 0x2776,
+ SMSG_GM_REQUEST_PLAYER_INFO = 0x25E9,
+ SMSG_GM_TICKET_CASE_STATUS = 0x26C8,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x26C7,
+ SMSG_GOD_MODE = 0x2734,
SMSG_GOSSIP_COMPLETE = 0x2A96,
SMSG_GOSSIP_MESSAGE = 0x2A97,
- SMSG_GOSSIP_POI = 0x27D3,
+ SMSG_GOSSIP_POI = 0x27D2,
SMSG_GROUP_ACTION_THROTTLED = 0x259C,
- SMSG_GROUP_DECLINE = 0x27CE,
- SMSG_GROUP_DESTROYED = 0x27D0,
- SMSG_GROUP_NEW_LEADER = 0x2646,
- SMSG_GROUP_UNINVITE = 0x27CF,
+ SMSG_GROUP_DECLINE = 0x27CD,
+ SMSG_GROUP_DESTROYED = 0x27CF,
+ SMSG_GROUP_NEW_LEADER = 0x2645,
+ SMSG_GROUP_UNINVITE = 0x27CE,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1132,51 +1136,51 @@ enum OpcodeServer : uint32
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26F9,
- SMSG_HIGHEST_THREAT_UPDATE = 0x2709,
+ SMSG_HEALTH_UPDATE = 0x26F8,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x2708,
SMSG_HOTFIX_NOTIFY = 0x25A1,
SMSG_HOTFIX_NOTIFY_BLOB = 0x25A2,
- SMSG_INITIALIZE_FACTIONS = 0x2761,
+ SMSG_INITIALIZE_FACTIONS = 0x2760,
SMSG_INITIAL_SETUP = 0x257F,
- SMSG_INIT_WORLD_STATES = 0x2788,
+ SMSG_INIT_WORLD_STATES = 0x2787,
SMSG_INSPECT_HONOR_STATS = 0x25B0,
- SMSG_INSPECT_PVP = 0x275D,
- SMSG_INSPECT_RESULT = 0x264A,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27EA,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27E9,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27F0,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27E8,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27F2,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27F1,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27ED,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27EC,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27EF,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27F3,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27EE,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27EB,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x2733,
- SMSG_INSTANCE_INFO = 0x264C,
- SMSG_INSTANCE_RESET = 0x26AB,
- SMSG_INSTANCE_RESET_FAILED = 0x26AC,
- SMSG_INSTANCE_SAVE_CREATED = 0x27B8,
- SMSG_INVALIDATE_PAGE_TEXT = 0x26FE,
- SMSG_INVALIDATE_PLAYER = 0x26CF,
- SMSG_INVALID_PROMOTION_CODE = 0x2792,
- SMSG_INVENTORY_CHANGE_FAILURE = 0x275F,
+ SMSG_INSPECT_PVP = 0x275C,
+ SMSG_INSPECT_RESULT = 0x2649,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27E9,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27E8,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27EF,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27E7,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27F1,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27F0,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27EC,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27EB,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27EE,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27F2,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27ED,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27EA,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x2732,
+ SMSG_INSTANCE_INFO = 0x264B,
+ SMSG_INSTANCE_RESET = 0x26AA,
+ SMSG_INSTANCE_RESET_FAILED = 0x26AB,
+ SMSG_INSTANCE_SAVE_CREATED = 0x27B7,
+ SMSG_INVALIDATE_PAGE_TEXT = 0x26FD,
+ SMSG_INVALIDATE_PLAYER = 0x26CE,
+ SMSG_INVALID_PROMOTION_CODE = 0x2791,
+ SMSG_INVENTORY_CHANGE_FAILURE = 0x275E,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A83,
- SMSG_ITEM_CHANGED = 0x271D,
- SMSG_ITEM_COOLDOWN = 0x27FE,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2794,
+ SMSG_ITEM_CHANGED = 0x271C,
+ SMSG_ITEM_COOLDOWN = 0x27FD,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2793,
SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25AF,
SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25AD,
- SMSG_ITEM_PUSH_RESULT = 0x2635,
- SMSG_ITEM_TIME_UPDATE = 0x2793,
- SMSG_KICK_REASON = 0x2821,
+ SMSG_ITEM_PUSH_RESULT = 0x2634,
+ SMSG_ITEM_TIME_UPDATE = 0x2792,
+ SMSG_KICK_REASON = 0x2820,
SMSG_LEARNED_SPELLS = 0x2C4C,
- SMSG_LEARN_PVP_TALENTS_FAILED = 0x25E7,
- SMSG_LEARN_TALENTS_FAILED = 0x25E6,
+ SMSG_LEARN_PVP_TALENTS_FAILED = 0x25E6,
+ SMSG_LEARN_TALENTS_FAILED = 0x25E5,
SMSG_LEVEL_UPDATE = 0x2587,
- SMSG_LEVEL_UP_INFO = 0x271C,
+ SMSG_LEVEL_UP_INFO = 0x271B,
SMSG_LFG_BOOT_PLAYER = 0x2A36,
SMSG_LFG_DISABLED = 0x2A34,
SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x2A25,
@@ -1205,45 +1209,45 @@ enum OpcodeServer : uint32
SMSG_LF_GUILD_COMMAND_RESULT = 0x29D0,
SMSG_LF_GUILD_POST = 0x29CD,
SMSG_LF_GUILD_RECRUITS = 0x29CF,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27AF,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27AD,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A2,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27AE,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27AC,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A1,
SMSG_LOAD_CUF_PROFILES = 0x25CB,
- SMSG_LOAD_EQUIPMENT_SET = 0x2749,
- SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x27FC,
- SMSG_LOGIN_SET_TIME_SPEED = 0x2748,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2748,
+ SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x27FB,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x2747,
SMSG_LOGIN_VERIFY_WORLD = 0x25AA,
- SMSG_LOGOUT_CANCEL_ACK = 0x26AA,
- SMSG_LOGOUT_COMPLETE = 0x26A9,
- SMSG_LOGOUT_RESPONSE = 0x26A8,
- SMSG_LOG_XP_GAIN = 0x2718,
- SMSG_LOOT_ALL_PASSED = 0x2633,
- SMSG_LOOT_ITEM_LIST = 0x2631,
- SMSG_LOOT_LIST = 0x2780,
- SMSG_LOOT_MONEY_NOTIFY = 0x262D,
- SMSG_LOOT_RELEASE = 0x262C,
- SMSG_LOOT_RELEASE_ALL = 0x262B,
- SMSG_LOOT_REMOVED = 0x2626,
- SMSG_LOOT_RESPONSE = 0x2625,
- SMSG_LOOT_ROLL = 0x262F,
- SMSG_LOOT_ROLLS_COMPLETE = 0x2632,
- SMSG_LOOT_ROLL_WON = 0x2634,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2691,
- SMSG_MAIL_COMMAND_RESULT = 0x2654,
- SMSG_MAIL_LIST_RESULT = 0x2795,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2796,
- SMSG_MAP_OBJECTIVES_INIT = 0x279E,
- SMSG_MAP_OBJ_EVENTS = 0x25D6,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2630,
+ SMSG_LOGOUT_CANCEL_ACK = 0x26A9,
+ SMSG_LOGOUT_COMPLETE = 0x26A8,
+ SMSG_LOGOUT_RESPONSE = 0x26A7,
+ SMSG_LOG_XP_GAIN = 0x2717,
+ SMSG_LOOT_ALL_PASSED = 0x2632,
+ SMSG_LOOT_ITEM_LIST = 0x2630,
+ SMSG_LOOT_LIST = 0x277F,
+ SMSG_LOOT_MONEY_NOTIFY = 0x262C,
+ SMSG_LOOT_RELEASE = 0x262B,
+ SMSG_LOOT_RELEASE_ALL = 0x262A,
+ SMSG_LOOT_REMOVED = 0x2625,
+ SMSG_LOOT_RESPONSE = 0x2624,
+ SMSG_LOOT_ROLL = 0x262E,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x2631,
+ SMSG_LOOT_ROLL_WON = 0x2633,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2690,
+ SMSG_MAIL_COMMAND_RESULT = 0x2653,
+ SMSG_MAIL_LIST_RESULT = 0x2794,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2795,
+ SMSG_MAP_OBJECTIVES_INIT = 0x279D,
+ SMSG_MAP_OBJ_EVENTS = 0x25D5,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x262F,
SMSG_MESSAGE_BOX = 0x2575,
- SMSG_MINIMAP_PING = 0x26F4,
+ SMSG_MINIMAP_PING = 0x26F3,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
- SMSG_MISSILE_CANCEL = 0x25D7,
- SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27A6,
- SMSG_MODIFY_COOLDOWN = 0x27A4,
- SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27A5,
- SMSG_MODIFY_PARTY_RANGE = 0x2783,
+ SMSG_MISSILE_CANCEL = 0x25D6,
+ SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27A5,
+ SMSG_MODIFY_COOLDOWN = 0x27A3,
+ SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27A4,
+ SMSG_MODIFY_PARTY_RANGE = 0x2782,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257A,
SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2DE1,
@@ -1326,108 +1330,108 @@ enum OpcodeServer : uint32
SMSG_MOVE_UPDATE_TELEPORT = 0x2DAF,
SMSG_MOVE_UPDATE_TURN_RATE = 0x2DAB,
SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DA6,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25EF,
- SMSG_NEW_TAXI_PATH = 0x26A3,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25EE,
+ SMSG_NEW_TAXI_PATH = 0x26A2,
SMSG_NEW_WORLD = 0x25A9,
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C42,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26CE,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26CD,
SMSG_NOTIFY_MONEY = 0x25AC,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x2655,
- SMSG_OFFER_PETITION_ERROR = 0x26DD,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2719,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x2654,
+ SMSG_OFFER_PETITION_ERROR = 0x26DC,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2718,
SMSG_ON_MONSTER_MOVE = 0x2DA2,
- SMSG_OPEN_CONTAINER = 0x2760,
+ SMSG_OPEN_CONTAINER = 0x275F,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A32,
- SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27D5,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27D7,
- SMSG_OVERRIDE_LIGHT = 0x26E3,
- SMSG_PAGE_TEXT = 0x2755,
- SMSG_PARTY_COMMAND_RESULT = 0x27D2,
- SMSG_PARTY_INVITE = 0x25CD,
- SMSG_PARTY_KILL_LOG = 0x279A,
- SMSG_PARTY_MEMBER_STATE = 0x2798,
- SMSG_PARTY_UPDATE = 0x2609,
- SMSG_PAUSE_MIRROR_TIMER = 0x274B,
- SMSG_PENDING_RAID_LOCK = 0x272D,
+ SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27D4,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27D6,
+ SMSG_OVERRIDE_LIGHT = 0x26E2,
+ SMSG_PAGE_TEXT = 0x2754,
+ SMSG_PARTY_COMMAND_RESULT = 0x27D1,
+ SMSG_PARTY_INVITE = 0x25CC,
+ SMSG_PARTY_KILL_LOG = 0x2799,
+ SMSG_PARTY_MEMBER_STATE = 0x2797,
+ SMSG_PARTY_UPDATE = 0x2608,
+ SMSG_PAUSE_MIRROR_TIMER = 0x274A,
+ SMSG_PENDING_RAID_LOCK = 0x272C,
SMSG_PETITION_ALREADY_SIGNED = 0x25B6,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29F7,
- SMSG_PETITION_SHOW_LIST = 0x26E6,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26E7,
- SMSG_PETITION_SIGN_RESULTS = 0x278C,
- SMSG_PET_ACTION_FEEDBACK = 0x278A,
- SMSG_PET_ACTION_SOUND = 0x26C5,
+ SMSG_PETITION_SHOW_LIST = 0x26E5,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26E6,
+ SMSG_PETITION_SIGN_RESULTS = 0x278B,
+ SMSG_PET_ACTION_FEEDBACK = 0x2789,
+ SMSG_PET_ACTION_SOUND = 0x26C4,
SMSG_PET_ADDED = 0x25A6,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2616,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2698,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x260F,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x2614,
- SMSG_PET_BATTLE_FINISHED = 0x2615,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x2611,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x2610,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2617,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x260E,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2652,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x2653,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2613,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x260D,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x2612,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x2600,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2615,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2697,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x260E,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x2613,
+ SMSG_PET_BATTLE_FINISHED = 0x2614,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x2610,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x260F,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2616,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x260D,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2651,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x2652,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2612,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x260C,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x2611,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x25FF,
SMSG_PET_CAST_FAILED = 0x2C56,
SMSG_PET_CLEAR_SPELLS = 0x2C23,
- SMSG_PET_DISMISS_SOUND = 0x26C6,
- SMSG_PET_GOD_MODE = 0x26A0,
- SMSG_PET_GUIDS = 0x273E,
+ SMSG_PET_DISMISS_SOUND = 0x26C5,
+ SMSG_PET_GOD_MODE = 0x269F,
+ SMSG_PET_GUIDS = 0x273D,
SMSG_PET_LEARNED_SPELLS = 0x2C4E,
SMSG_PET_MODE = 0x2589,
- SMSG_PET_NAME_INVALID = 0x26EB,
+ SMSG_PET_NAME_INVALID = 0x26EA,
SMSG_PET_SLOT_UPDATED = 0x2588,
SMSG_PET_SPELLS_MESSAGE = 0x2C24,
SMSG_PET_STABLE_LIST = 0x25A7,
SMSG_PET_STABLE_RESULT = 0x25A8,
- SMSG_PET_TAME_FAILURE = 0x26DA,
+ SMSG_PET_TAME_FAILURE = 0x26D9,
SMSG_PET_UNLEARNED_SPELLS = 0x2C4F,
SMSG_PHASE_SHIFT_CHANGE = 0x2577,
- SMSG_PLAYED_TIME = 0x2705,
+ SMSG_PLAYED_TIME = 0x2704,
SMSG_PLAYER_BOUND = 0x257D,
SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F6,
- SMSG_PLAYER_SKINNED = 0x2785,
- SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x2799,
- SMSG_PLAY_MUSIC = 0x27A9,
- SMSG_PLAY_OBJECT_SOUND = 0x27AA,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x276F,
+ SMSG_PLAYER_SKINNED = 0x2784,
+ SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x2798,
+ SMSG_PLAY_MUSIC = 0x27A8,
+ SMSG_PLAY_OBJECT_SOUND = 0x27A9,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x276E,
SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C46,
- SMSG_PLAY_SCENE = 0x264F,
- SMSG_PLAY_SOUND = 0x27A8,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x27AB,
+ SMSG_PLAY_SCENE = 0x264E,
+ SMSG_PLAY_SOUND = 0x27A7,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x27AA,
SMSG_PLAY_SPELL_VISUAL = 0x2C44,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C48,
- SMSG_PLAY_TIME_WARNING = 0x2737,
- SMSG_PONG = 0x304D,
- SMSG_POWER_UPDATE = 0x26FA,
- SMSG_PRESTIGE_AND_HONOR_INVOLUNTARILY_CHANGED = 0x2754,
- SMSG_PRE_RESSURECT = 0x27A7,
- SMSG_PRINT_NOTIFICATION = 0x25DE,
- SMSG_PROC_RESIST = 0x279B,
- SMSG_PROPOSE_LEVEL_GRANT = 0x270D,
+ SMSG_PLAY_TIME_WARNING = 0x2736,
+ SMSG_PONG = 0x304E,
+ SMSG_POWER_UPDATE = 0x26F9,
+ SMSG_PRESTIGE_AND_HONOR_INVOLUNTARILY_CHANGED = 0x2753,
+ SMSG_PRE_RESSURECT = 0x27A6,
+ SMSG_PRINT_NOTIFICATION = 0x25DD,
+ SMSG_PROC_RESIST = 0x279A,
+ SMSG_PROPOSE_LEVEL_GRANT = 0x270C,
SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C50,
- SMSG_PVP_CREDIT = 0x2713,
+ SMSG_PVP_CREDIT = 0x2712,
SMSG_PVP_LOG_DATA = 0x25B1,
SMSG_PVP_OPTIONS_ENABLED = 0x25B4,
- SMSG_PVP_SEASON = 0x25D1,
- SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x2700,
- SMSG_QUERY_CREATURE_RESPONSE = 0x26F7,
- SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x26F8,
+ SMSG_PVP_SEASON = 0x25D0,
+ SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x26FF,
+ SMSG_QUERY_CREATURE_RESPONSE = 0x26F6,
+ SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x26F7,
SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE = 0x292B,
SMSG_QUERY_GUILD_INFO_RESPONSE = 0x29E5,
- SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x27FD,
- SMSG_QUERY_NPC_TEXT_RESPONSE = 0x26FB,
- SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x26FD,
- SMSG_QUERY_PETITION_RESPONSE = 0x2701,
- SMSG_QUERY_PET_NAME_RESPONSE = 0x26FF,
- SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x26FC,
+ SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x27FC,
+ SMSG_QUERY_NPC_TEXT_RESPONSE = 0x26FA,
+ SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x26FC,
+ SMSG_QUERY_PETITION_RESPONSE = 0x2700,
+ SMSG_QUERY_PET_NAME_RESPONSE = 0x26FE,
+ SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x26FB,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A95,
- SMSG_QUERY_QUEST_REWARD_RESPONSE = 0x2836,
- SMSG_QUERY_TIME_RESPONSE = 0x2717,
+ SMSG_QUERY_QUEST_REWARD_RESPONSE = 0x2835,
+ SMSG_QUERY_TIME_RESPONSE = 0x2716,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8E,
SMSG_QUEST_FORCE_REMOVED = 0x2A9A,
@@ -1445,6 +1449,7 @@ enum OpcodeServer : uint32
SMSG_QUEST_POI_CHANGED = 0x2A9E,
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9B,
SMSG_QUEST_PUSH_RESULT = 0x2A8F,
+ SMSG_QUEST_UNIGNORED = 0x2AA0,
SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8B,
SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8C,
SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8D,
@@ -1452,113 +1457,113 @@ enum OpcodeServer : uint32
SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A87,
SMSG_QUEST_UPDATE_FAILED = 0x2A89,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8A,
- SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27C3,
- SMSG_RAID_DIFFICULTY_SET = 0x27E5,
- SMSG_RAID_GROUP_ONLY = 0x27E7,
+ SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27C2,
+ SMSG_RAID_DIFFICULTY_SET = 0x27E4,
+ SMSG_RAID_GROUP_ONLY = 0x27E6,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB9,
SMSG_RAID_MARKERS_CHANGED = 0x25B7,
- SMSG_RANDOM_ROLL = 0x2649,
+ SMSG_RANDOM_ROLL = 0x2648,
SMSG_RATED_BATTLEFIELD_INFO = 0x25A4,
- SMSG_READY_CHECK_COMPLETED = 0x260C,
- SMSG_READY_CHECK_RESPONSE = 0x260B,
- SMSG_READY_CHECK_STARTED = 0x260A,
- SMSG_READ_ITEM_RESULT_FAILED = 0x27E1,
- SMSG_READ_ITEM_RESULT_OK = 0x27DC,
- SMSG_REALM_QUERY_RESPONSE = 0x26E2,
- SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27C4,
- SMSG_REFER_A_FRIEND_EXPIRED = 0x275E,
- SMSG_REFER_A_FRIEND_FAILURE = 0x26E8,
- SMSG_REFRESH_COMPONENT = 0x2674,
+ SMSG_READY_CHECK_COMPLETED = 0x260B,
+ SMSG_READY_CHECK_RESPONSE = 0x260A,
+ SMSG_READY_CHECK_STARTED = 0x2609,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x27E0,
+ SMSG_READ_ITEM_RESULT_OK = 0x27DB,
+ SMSG_REALM_QUERY_RESPONSE = 0x26E1,
+ SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27C3,
+ SMSG_REFER_A_FRIEND_EXPIRED = 0x275D,
+ SMSG_REFER_A_FRIEND_FAILURE = 0x26E7,
+ SMSG_REFRESH_COMPONENT = 0x2673,
SMSG_REFRESH_SPELL_HISTORY = 0x2C2B,
SMSG_REMOVE_ITEM_PASSIVE = 0x25BE,
- SMSG_REMOVE_LOSS_OF_CONTROL = 0x2693,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x27FA,
- SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26D6,
- SMSG_REQUEST_ADDON_LIST = 0x265B,
+ SMSG_REMOVE_LOSS_OF_CONTROL = 0x2692,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27F9,
+ SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26D5,
+ SMSG_REQUEST_ADDON_LIST = 0x265A,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x259D,
- SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x25D2,
+ SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x25D1,
SMSG_RESEARCH_COMPLETE = 0x2585,
- SMSG_RESET_AREA_TRIGGER = 0x263D,
- SMSG_RESET_COMPRESSION_CONTEXT = 0x304E,
- SMSG_RESET_FAILED_NOTIFY = 0x26DE,
- SMSG_RESET_RANGED_COMBAT_TIMER = 0x2710,
+ SMSG_RESET_AREA_TRIGGER = 0x263C,
+ SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
+ SMSG_RESET_FAILED_NOTIFY = 0x26DD,
+ SMSG_RESET_RANGED_COMBAT_TIMER = 0x270F,
SMSG_RESET_WEEKLY_CURRENCY = 0x2574,
- SMSG_RESPEC_WIPE_CONFIRM = 0x2623,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x2622,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2571,
SMSG_RESUME_CAST_BAR = 0x2C3D,
- SMSG_RESUME_COMMS = 0x304A,
+ SMSG_RESUME_COMMS = 0x304B,
SMSG_RESUME_TOKEN = 0x25BC,
SMSG_RESURRECT_REQUEST = 0x257E,
- SMSG_RESYNC_RUNES = 0x273A,
+ SMSG_RESYNC_RUNES = 0x2739,
SMSG_ROLE_CHANGED_INFORM = 0x258C,
SMSG_ROLE_CHOSEN = 0x2A3A,
SMSG_ROLE_POLL_INFORM = 0x258D,
SMSG_RUNE_REGEN_DEBUG = 0x25C5,
- SMSG_SCENARIO_BOOT = 0x27E2,
- SMSG_SCENARIO_COMPLETED = 0x281D,
- SMSG_SCENARIO_POIS = 0x264B,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x2645,
- SMSG_SCENARIO_SPELL_UPDATE = 0x2829,
- SMSG_SCENARIO_STATE = 0x2644,
- SMSG_SCENE_OBJECT_EVENT = 0x25F5,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FA,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25FB,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25F7,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25F6,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25F9,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25F8,
+ SMSG_SCENARIO_BOOT = 0x27E1,
+ SMSG_SCENARIO_COMPLETED = 0x281C,
+ SMSG_SCENARIO_POIS = 0x264A,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x2644,
+ SMSG_SCENARIO_SPELL_UPDATE = 0x2828,
+ SMSG_SCENARIO_STATE = 0x2643,
+ SMSG_SCENE_OBJECT_EVENT = 0x25F4,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25F9,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25FA,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25F6,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25F5,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25F8,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25F7,
SMSG_SCRIPT_CAST = 0x2C54,
- SMSG_SELL_RESPONSE = 0x26EC,
+ SMSG_SELL_RESPONSE = 0x26EB,
SMSG_SEND_ITEM_PASSIVES = 0x25BF,
SMSG_SEND_KNOWN_SPELLS = 0x2C29,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2647,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2648,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2646,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2647,
SMSG_SEND_SPELL_CHARGES = 0x2C2C,
SMSG_SEND_SPELL_HISTORY = 0x2C2A,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2D,
SMSG_SERVER_FIRST_ACHIEVEMENT = 0x2BC1,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2666,
- SMSG_SERVER_TIME = 0x26A7,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2665,
+ SMSG_SERVER_TIME = 0x26A6,
SMSG_SETUP_CURRENCY = 0x2572,
SMSG_SETUP_RESEARCH_HISTORY = 0x2584,
- SMSG_SET_AI_ANIM_KIT = 0x276E,
- SMSG_SET_ALL_TASK_PROGRESS = 0x27CC,
- SMSG_SET_ANIM_TIER = 0x2772,
+ SMSG_SET_AI_ANIM_KIT = 0x276D,
+ SMSG_SET_ALL_TASK_PROGRESS = 0x27CB,
+ SMSG_SET_ANIM_TIER = 0x2771,
SMSG_SET_CURRENCY = 0x2573,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x26CA,
- SMSG_SET_FACTION_AT_WAR = 0x2739,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x2769,
- SMSG_SET_FACTION_STANDING = 0x276A,
- SMSG_SET_FACTION_VISIBLE = 0x2768,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x26C9,
+ SMSG_SET_FACTION_AT_WAR = 0x2738,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x2768,
+ SMSG_SET_FACTION_STANDING = 0x2769,
+ SMSG_SET_FACTION_VISIBLE = 0x2767,
SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
- SMSG_SET_FORCED_REACTIONS = 0x2758,
+ SMSG_SET_FORCED_REACTIONS = 0x2757,
SMSG_SET_ITEM_PURCHASE_DATA = 0x25AE,
- SMSG_SET_LOOT_METHOD_FAILED = 0x2809,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x2808,
SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25B5,
- SMSG_SET_MELEE_ANIM_KIT = 0x2771,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x2770,
+ SMSG_SET_MELEE_ANIM_KIT = 0x2770,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x276F,
SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
- SMSG_SET_PET_SPECIALIZATION = 0x263E,
- SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2704,
+ SMSG_SET_PET_SPECIALIZATION = 0x263D,
+ SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2703,
SMSG_SET_PLAY_HOVER_ANIM = 0x25C9,
- SMSG_SET_PROFICIENCY = 0x2773,
+ SMSG_SET_PROFICIENCY = 0x2772,
SMSG_SET_SPELL_CHARGES = 0x2C28,
- SMSG_SET_TASK_COMPLETE = 0x27CD,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x269B,
- SMSG_SET_VEHICLE_REC_ID = 0x272C,
- SMSG_SHOW_ADVENTURE_MAP = 0x2827,
- SMSG_SHOW_BANK = 0x26A4,
- SMSG_SHOW_MAILBOX = 0x27E3,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25EE,
- SMSG_SHOW_TAXI_NODES = 0x26F3,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27B0,
- SMSG_SOCKET_GEMS = 0x2765,
- SMSG_SOCKET_GEMS_FAILURE = 0x2766,
- SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25F0,
- SMSG_SPECIALIZATION_CHANGED = 0x25E9,
- SMSG_SPECIAL_MOUNT_ANIM = 0x26C4,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2753,
+ SMSG_SET_TASK_COMPLETE = 0x27CC,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x269A,
+ SMSG_SET_VEHICLE_REC_ID = 0x272B,
+ SMSG_SHOW_ADVENTURE_MAP = 0x2826,
+ SMSG_SHOW_BANK = 0x26A3,
+ SMSG_SHOW_MAILBOX = 0x27E2,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25ED,
+ SMSG_SHOW_TAXI_NODES = 0x26F2,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27AF,
+ SMSG_SOCKET_GEMS = 0x2764,
+ SMSG_SOCKET_GEMS_FAILURE = 0x2765,
+ SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25EF,
+ SMSG_SPECIALIZATION_CHANGED = 0x25E8,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x26C3,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2752,
SMSG_SPELL_ABSORB_LOG = 0x2C1E,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17,
SMSG_SPELL_CHANNEL_START = 0x2C34,
@@ -1582,112 +1587,111 @@ enum OpcodeServer : uint32
SMSG_SPELL_PREPARE = 0x2C38,
SMSG_SPELL_START = 0x2C3A,
SMSG_SPELL_UPDATE_CHAIN_TARGETS = 0x2C33,
- SMSG_SPIRIT_HEALER_CONFIRM = 0x2750,
- SMSG_STAND_STATE_UPDATE = 0x2757,
- SMSG_START_ELAPSED_TIMER = 0x2618,
- SMSG_START_ELAPSED_TIMERS = 0x261A,
- SMSG_START_LOOT_ROLL = 0x262E,
- SMSG_START_MIRROR_TIMER = 0x274A,
+ SMSG_SPIRIT_HEALER_CONFIRM = 0x274F,
+ SMSG_STAND_STATE_UPDATE = 0x2756,
+ SMSG_START_ELAPSED_TIMER = 0x2617,
+ SMSG_START_ELAPSED_TIMERS = 0x2619,
+ SMSG_START_LOOT_ROLL = 0x262D,
+ SMSG_START_MIRROR_TIMER = 0x2749,
SMSG_START_TIMER = 0x25B9,
- SMSG_STOP_ELAPSED_TIMER = 0x2619,
- SMSG_STOP_MIRROR_TIMER = 0x274C,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x27AC,
+ SMSG_STOP_ELAPSED_TIMER = 0x2618,
+ SMSG_STOP_MIRROR_TIMER = 0x274B,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x27AB,
SMSG_STREAMING_MOVIES = 0x25B8,
- SMSG_SUMMON_CANCEL = 0x26D5,
+ SMSG_SUMMON_CANCEL = 0x26D4,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258E,
- SMSG_SUMMON_REQUEST = 0x275C,
+ SMSG_SUMMON_REQUEST = 0x275B,
SMSG_SUPERCEDED_SPELLS = 0x2C4B,
- SMSG_SUPPRESS_NPC_GREETINGS = 0x25CC,
- SMSG_SUSPEND_COMMS = 0x3049,
+ SMSG_SUSPEND_COMMS = 0x304A,
SMSG_SUSPEND_TOKEN = 0x25BB,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2752,
- SMSG_TAXI_NODE_STATUS = 0x26A1,
- SMSG_TEXT_EMOTE = 0x269F,
- SMSG_THREAT_CLEAR = 0x270C,
- SMSG_THREAT_REMOVE = 0x270B,
- SMSG_THREAT_UPDATE = 0x270A,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2751,
+ SMSG_TAXI_NODE_STATUS = 0x26A0,
+ SMSG_TEXT_EMOTE = 0x269E,
+ SMSG_THREAT_CLEAR = 0x270B,
+ SMSG_THREAT_REMOVE = 0x270A,
+ SMSG_THREAT_UPDATE = 0x2709,
SMSG_TIME_ADJUSTMENT = 0x2DA1,
SMSG_TIME_SYNC_REQUEST = 0x2DA0,
- SMSG_TITLE_EARNED = 0x2707,
- SMSG_TITLE_LOST = 0x2708,
- SMSG_TOTEM_CREATED = 0x26EF,
- SMSG_TOTEM_MOVED = 0x26F0,
+ SMSG_TITLE_EARNED = 0x2706,
+ SMSG_TITLE_LOST = 0x2707,
+ SMSG_TOTEM_CREATED = 0x26EE,
+ SMSG_TOTEM_MOVED = 0x26EF,
SMSG_TRADE_STATUS = 0x2581,
SMSG_TRADE_UPDATED = 0x2580,
- SMSG_TRAINER_BUY_FAILED = 0x2712,
- SMSG_TRAINER_LIST = 0x2711,
- SMSG_TRANSFER_ABORTED = 0x273D,
- SMSG_TRANSFER_PENDING = 0x25E2,
+ SMSG_TRAINER_BUY_FAILED = 0x2711,
+ SMSG_TRAINER_LIST = 0x2710,
+ SMSG_TRANSFER_ABORTED = 0x273C,
+ SMSG_TRANSFER_PENDING = 0x25E1,
SMSG_TRANSMOG_COLLECTION_UPDATE = 0x25C4,
- SMSG_TRIGGER_CINEMATIC = 0x2801,
- SMSG_TRIGGER_MOVIE = 0x26F1,
- SMSG_TURN_IN_PETITION_RESULT = 0x278E,
- SMSG_TUTORIAL_FLAGS = 0x27F4,
- SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x2830,
- SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x282F,
+ SMSG_TRIGGER_CINEMATIC = 0x2800,
+ SMSG_TRIGGER_MOVIE = 0x26F0,
+ SMSG_TURN_IN_PETITION_RESULT = 0x278D,
+ SMSG_TUTORIAL_FLAGS = 0x27F3,
+ SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x282F,
+ SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x282E,
SMSG_TWITTER_STATUS = 0x2FFD,
- SMSG_UI_TIME = 0x274F,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2804,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x2805,
+ SMSG_UI_TIME = 0x274E,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2803,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x2804,
SMSG_UNLEARNED_SPELLS = 0x2C4D,
- SMSG_UPDATE_ACCOUNT_DATA = 0x2744,
- SMSG_UPDATE_ACTION_BUTTONS = 0x25F3,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x27F9,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x2743,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x25F2,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27F8,
SMSG_UPDATE_DUNGEON_ENCOUNTER_FOR_LOOT = 0x2A31,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x265F,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26CD,
- SMSG_UPDATE_LAST_INSTANCE = 0x26AD,
- SMSG_UPDATE_OBJECT = 0x2802,
- SMSG_UPDATE_TALENT_DATA = 0x25E8,
- SMSG_UPDATE_TASK_PROGRESS = 0x27CB,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x265E,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26CC,
+ SMSG_UPDATE_LAST_INSTANCE = 0x26AC,
+ SMSG_UPDATE_OBJECT = 0x2801,
+ SMSG_UPDATE_TALENT_DATA = 0x25E7,
+ SMSG_UPDATE_TASK_PROGRESS = 0x27CA,
SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19,
- SMSG_UPDATE_WORLD_STATE = 0x2789,
+ SMSG_UPDATE_WORLD_STATE = 0x2788,
SMSG_USERLIST_ADD = 0x2BBE,
SMSG_USERLIST_REMOVE = 0x2BBF,
SMSG_USERLIST_UPDATE = 0x2BC0,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x278F,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x278E,
SMSG_VENDOR_INVENTORY = 0x25C7,
- SMSG_VIGNETTE_UPDATE = 0x27AE,
+ SMSG_VIGNETTE_UPDATE = 0x27AD,
SMSG_VOICE_CHAT_STATUS = 0x2BB3,
SMSG_VOICE_PARENTAL_CONTROLS = 0x2BB4,
SMSG_VOICE_SESSION_LEAVE = 0x2BB6,
SMSG_VOICE_SESSION_ROSTER_UPDATE = 0x2BB5,
- SMSG_VOID_ITEM_SWAP_RESPONSE = 0x25DC,
- SMSG_VOID_STORAGE_CONTENTS = 0x25D9,
- SMSG_VOID_STORAGE_FAILED = 0x25D8,
- SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x25DA,
- SMSG_VOID_TRANSFER_RESULT = 0x25DB,
+ SMSG_VOID_ITEM_SWAP_RESPONSE = 0x25DB,
+ SMSG_VOID_STORAGE_CONTENTS = 0x25D8,
+ SMSG_VOID_STORAGE_FAILED = 0x25D7,
+ SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x25D9,
+ SMSG_VOID_TRANSFER_RESULT = 0x25DA,
SMSG_WAIT_QUEUE_FINISH = 0x256E,
SMSG_WAIT_QUEUE_UPDATE = 0x256D,
SMSG_WARDEN_DATA = 0x2576,
SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x25B2,
- SMSG_WEATHER = 0x26CC,
+ SMSG_WEATHER = 0x26CB,
SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x26CB,
+ SMSG_WHO_IS = 0x26CA,
SMSG_WORLD_SERVER_INFO = 0x25C0,
- SMSG_WORLD_TEXT = 0x281F,
- SMSG_WOW_TOKEN_AUCTION_SOLD = 0x280F,
- SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2811,
- SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2812,
- SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x2810,
- SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x280A,
- SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x280B,
- SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x280C,
- SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2813,
- SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2814,
- SMSG_WOW_TOKEN_REDEEM_RESULT = 0x2815,
- SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x280D,
- SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x280E,
- SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x2816,
- SMSG_XP_GAIN_ABORTED = 0x25DD,
- SMSG_XP_GAIN_ENABLED = 0x27E6,
+ SMSG_WORLD_TEXT = 0x281E,
+ SMSG_WOW_TOKEN_AUCTION_SOLD = 0x280E,
+ SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2810,
+ SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2811,
+ SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x280F,
+ SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x2809,
+ SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x280A,
+ SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x280B,
+ SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2812,
+ SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2813,
+ SMSG_WOW_TOKEN_REDEEM_RESULT = 0x2814,
+ SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x280C,
+ SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x280D,
+ SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x2815,
+ SMSG_XP_GAIN_ABORTED = 0x25DC,
+ SMSG_XP_GAIN_ENABLED = 0x27E5,
SMSG_ZONE_UNDER_ATTACK = 0x2BBA,
// Opcodes that are not generated automatically
SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0xBADD, // no client handler
- SMSG_COMPRESSED_PACKET = 0x3051,
- SMSG_MULTIPLE_PACKETS = 0x3050,
+ SMSG_COMPRESSED_PACKET = 0x3052,
+ SMSG_MULTIPLE_PACKETS = 0x3051,
// Deleted opcodes, here only to allow compile
SMSG_ARENA_TEAM_STATS = 0xBADD,
diff --git a/src/server/game/Server/Protocol/ServerPktHeader.h b/src/server/game/Server/Protocol/ServerPktHeader.h
deleted file mode 100644
index d3fe37de94a..00000000000
--- a/src/server/game/Server/Protocol/ServerPktHeader.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __SERVERPKTHDR_H__
-#define __SERVERPKTHDR_H__
-
-#pragma pack(push, 1)
-
-union ServerPktHeader
-{
- struct
- {
- uint16 Size;
- uint16 Command;
- } Setup;
-
- struct
- {
- uint32 Size;
- uint16 Command;
- } Normal;
-};
-
-#pragma pack(pop)
-
-#endif
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 25b7116aa99..12a62619798 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -56,24 +56,23 @@ private:
using boost::asio::ip::tcp;
-uint32 const WorldSocket::ConnectionInitializeMagic = 0xF5EB1CE;
std::string const WorldSocket::ServerConnectionInitialize("WORLD OF WARCRAFT CONNECTION - SERVER TO CLIENT");
-std::string const WorldSocket::ClientConnectionInitialize("WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER", 48);
+std::string const WorldSocket::ClientConnectionInitialize("WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER");
uint32 const WorldSocket::MinSizeForCompression = 0x400;
-uint32 const SizeOfClientHeader[2] = { sizeof(uint16) + sizeof(uint16), sizeof(uint32) + sizeof(uint16) };
-uint32 const SizeOfServerHeader[2] = { sizeof(uint16) + sizeof(uint16), sizeof(uint32) + sizeof(uint16) };
+uint32 const SizeOfClientHeader = sizeof(uint32) + sizeof(uint16);
+uint32 const SizeOfServerHeader = sizeof(uint32) + sizeof(uint16);
uint8 const WorldSocket::AuthCheckSeed[16] = { 0xC5, 0xC6, 0x98, 0x95, 0x76, 0x3F, 0x1D, 0xCD, 0xB6, 0xA1, 0x37, 0x28, 0xB3, 0x12, 0xFF, 0x8A };
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 };
WorldSocket::WorldSocket(tcp::socket&& socket) : Socket(std::move(socket)),
- _type(CONNECTION_TYPE_REALM), _OverSpeedPings(0),
+ _type(CONNECTION_TYPE_REALM), _key(0), _OverSpeedPings(0),
_worldSession(nullptr), _authed(false), _compressionStream(nullptr)
{
_serverChallenge.SetRand(8 * 16);
- _headerBuffer.Resize(SizeOfClientHeader[0]);
+ _headerBuffer.Resize(SizeOfClientHeader);
}
WorldSocket::~WorldSocket()
@@ -120,16 +119,13 @@ void WorldSocket::CheckIpCallback(PreparedQueryResult result)
}
}
- _packetBuffer.Resize(4 + 2 + ClientConnectionInitialize.length());
+ _packetBuffer.Resize(ClientConnectionInitialize.length() + 1);
AsyncReadWithCallback(&WorldSocket::InitializeHandler);
MessageBuffer initializer;
- ServerPktHeader header;
- header.Setup.Size = ServerConnectionInitialize.size();
- initializer.Write(&ConnectionInitializeMagic, sizeof(ConnectionInitializeMagic));
- initializer.Write(&header, sizeof(header.Setup.Size));
initializer.Write(ServerConnectionInitialize.c_str(), ServerConnectionInitialize.length());
+ initializer.Write("\n", 1);
// - io_service.run thread, safe.
QueuePacket(std::move(initializer));
@@ -163,26 +159,17 @@ void WorldSocket::InitializeHandler(boost::system::error_code error, std::size_t
return;
}
- uint32 magic;
- uint16 length;
ByteBuffer buffer(std::move(_packetBuffer));
-
- buffer >> magic;
- if (magic != ConnectionInitializeMagic)
- {
- CloseSocket();
- return;
- }
-
- buffer >> length;
- if (length > ClientConnectionInitialize.length())
+ std::string initializer = buffer.ReadString(ClientConnectionInitialize.length());
+ if (initializer != ClientConnectionInitialize)
{
CloseSocket();
return;
}
- std::string initializer = buffer.ReadString(length);
- if (initializer != ClientConnectionInitialize)
+ uint8 terminator;
+ buffer >> terminator;
+ if (terminator != '\n')
{
CloseSocket();
return;
@@ -218,22 +205,21 @@ bool WorldSocket::Update()
MessageBuffer buffer;
while (_bufferQueue.Dequeue(queued))
{
- uint32 sizeOfHeader = SizeOfServerHeader[queued->NeedsEncryption()];
uint32 packetSize = queued->size();
if (packetSize > MinSizeForCompression && queued->NeedsEncryption())
packetSize = compressBound(packetSize) + sizeof(CompressedWorldPacket);
- if (buffer.GetRemainingSpace() < packetSize + sizeOfHeader)
+ if (buffer.GetRemainingSpace() < packetSize + SizeOfServerHeader)
{
QueuePacket(std::move(buffer));
buffer.Resize(4096);
}
- if (buffer.GetRemainingSpace() >= packetSize + sizeOfHeader)
+ if (buffer.GetRemainingSpace() >= packetSize + SizeOfServerHeader)
WritePacketToBuffer(*queued, buffer);
else // single packet larger than 4096 bytes
{
- MessageBuffer packetBuffer(packetSize + sizeOfHeader);
+ MessageBuffer packetBuffer(packetSize + SizeOfServerHeader);
WritePacketToBuffer(*queued, packetBuffer);
QueuePacket(std::move(packetBuffer));
}
@@ -340,20 +326,6 @@ void WorldSocket::ReadHandler()
AsyncRead();
}
-void WorldSocket::ExtractOpcodeAndSize(ClientPktHeader const* header, uint32& opcode, uint32& size) const
-{
- if (_authCrypt.IsInitialized())
- {
- opcode = header->Normal.Command;
- size = header->Normal.Size - 2;
- }
- else
- {
- opcode = header->Setup.Command;
- size = header->Setup.Size - 2;
- }
-}
-
void WorldSocket::SetWorldSession(WorldSession* session)
{
std::lock_guard<std::mutex> sessionGuard(_worldSessionLock);
@@ -363,36 +335,28 @@ void WorldSocket::SetWorldSession(WorldSession* session)
bool WorldSocket::ReadHeaderHandler()
{
- ASSERT(_headerBuffer.GetActiveSize() == SizeOfClientHeader[_authCrypt.IsInitialized()], "Header size " SZFMTD " different than expected %u", _headerBuffer.GetActiveSize(), SizeOfClientHeader[_authCrypt.IsInitialized()]);
+ ASSERT(_headerBuffer.GetActiveSize() == SizeOfClientHeader, "Header size " SZFMTD " different than expected %u", _headerBuffer.GetActiveSize(), SizeOfClientHeader);
_authCrypt.DecryptRecv(_headerBuffer.GetReadPointer(), 4);
- ClientPktHeader* header = reinterpret_cast<ClientPktHeader*>(_headerBuffer.GetReadPointer());
- uint32 opcode;
- uint32 size;
-
- ExtractOpcodeAndSize(header, opcode, size);
+ PacketHeader* header = reinterpret_cast<PacketHeader*>(_headerBuffer.GetReadPointer());
+ header->Size -= 2;
- if (!ClientPktHeader::IsValidSize(size) || !ClientPktHeader::IsValidOpcode(opcode))
+ if (!header->IsValidSize() || !header->IsValidOpcode())
{
TC_LOG_ERROR("network", "WorldSocket::ReadHeaderHandler(): client %s sent malformed packet (size: %u, cmd: %u)",
- GetRemoteIpAddress().to_string().c_str(), size, opcode);
+ GetRemoteIpAddress().to_string().c_str(), header->Size, header->Command);
return false;
}
- _packetBuffer.Resize(size);
+ _packetBuffer.Resize(header->Size);
return true;
}
WorldSocket::ReadDataHandlerResult WorldSocket::ReadDataHandler()
{
- ClientPktHeader* header = reinterpret_cast<ClientPktHeader*>(_headerBuffer.GetReadPointer());
- uint32 cmd;
- uint32 size;
-
- ExtractOpcodeAndSize(header, cmd, size);
-
- OpcodeClient opcode = static_cast<OpcodeClient>(cmd);
+ PacketHeader* header = reinterpret_cast<PacketHeader*>(_headerBuffer.GetReadPointer());
+ OpcodeClient opcode = static_cast<OpcodeClient>(header->Command);
WorldPacket packet(opcode, std::move(_packetBuffer), GetConnectionType());
@@ -459,6 +423,10 @@ WorldSocket::ReadDataHandlerResult WorldSocket::ReadDataHandler()
HandleConnectToFailed(connectToFailed);
break;
}
+ case CMSG_ENABLE_ENCRYPTION_ACK:
+ LogOpcodeText(opcode, sessionGuard);
+ HandleEnableEncryptionAck();
+ break;
default:
{
sessionGuard.lock();
@@ -523,14 +491,12 @@ void WorldSocket::SendPacket(WorldPacket const& packet)
void WorldSocket::WritePacketToBuffer(EncryptablePacket const& packet, MessageBuffer& buffer)
{
- ServerPktHeader header;
- uint32 sizeOfHeader = SizeOfServerHeader[packet.NeedsEncryption()];
uint32 opcode = packet.GetOpcode();
uint32 packetSize = packet.size();
// Reserve space for buffer
uint8* headerPos = buffer.GetWritePointer();
- buffer.WriteCompleted(sizeOfHeader);
+ buffer.WriteCompleted(SizeOfServerHeader);
if (packetSize > MinSizeForCompression && packet.NeedsEncryption())
{
@@ -557,19 +523,12 @@ void WorldSocket::WritePacketToBuffer(EncryptablePacket const& packet, MessageBu
packetSize += 2 /*opcode*/;
- if (packet.NeedsEncryption())
- {
- header.Normal.Size = packetSize;
- header.Normal.Command = opcode;
- _authCrypt.EncryptSend((uint8*)&header, 4);
- }
- else
- {
- header.Setup.Size = packetSize;
- header.Setup.Command = opcode;
- }
+ PacketHeader header;
+ header.Size = packetSize;
+ header.Command = opcode;
+ _authCrypt.EncryptSend((uint8*)&header, 4);
- memcpy(headerPos, &header, sizeOfHeader);
+ memcpy(headerPos, &header, SizeOfServerHeader);
}
uint32 WorldSocket::CompressPacket(uint8* buffer, WorldPacket const& packet)
@@ -666,9 +625,6 @@ struct AccountInfo
void WorldSocket::HandleAuthSession(std::shared_ptr<WorldPackets::Auth::AuthSession> authSession)
{
- // Client switches packet headers after sending CMSG_AUTH_SESSION
- _headerBuffer.Resize(SizeOfClientHeader[1]);
-
// Get the account information from the auth database
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO_BY_NAME);
stmt->setInt32(0, int32(realm.Id.Realm));
@@ -718,10 +674,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<WorldPackets::Auth::
SessionKeyGenerator<SHA256Hash> sessionKeyGenerator(sessionKeyHmac.GetDigest(), sessionKeyHmac.GetLength());
sessionKeyGenerator.Generate(sessionKey, 40);
- BigNumber K;
- K.SetBinary(sessionKey, 40);
-
- _authCrypt.Init(&K);
+ _sessionKey.SetBinary(sessionKey, 40);
// As we don't know if attempted login process by ip works, we update last_attempt_ip right away
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LAST_ATTEMPT_IP);
@@ -731,7 +684,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<WorldPackets::Auth::
// This also allows to check for possible "hack" attempts on account
stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_INFO_CONTINUED_SESSION);
- stmt->setString(0, K.AsHexStr());
+ stmt->setString(0, _sessionKey.AsHexStr());
stmt->setUInt32(1, account.Game.Id);
LoginDatabase.Execute(stmt);
@@ -841,7 +794,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<WorldPackets::Auth::
// Initialize Warden system only if it is enabled by config
if (wardenActive)
- _worldSession->InitWarden(&account.Game.SessionKey);
+ _worldSession->InitWarden(&_sessionKey);
_queryCallback = std::bind(&WorldSocket::LoadSessionPermissionsCallback, this, std::placeholders::_1);
_queryFuture = _worldSession->LoadPermissionsAsync();
@@ -853,7 +806,7 @@ void WorldSocket::LoadSessionPermissionsCallback(PreparedQueryResult result)
// RBAC must be loaded before adding session to check for skip queue permission
_worldSession->GetRBACData()->LoadFromDBCallback(result);
- sWorld->AddSession(_worldSession);
+ SendPacketAndLogOpcode(*WorldPackets::Auth::EnableEncryption().Write());
}
void WorldSocket::HandleAuthContinuedSession(std::shared_ptr<WorldPackets::Auth::AuthContinuedSession> authSession)
@@ -869,9 +822,6 @@ void WorldSocket::HandleAuthContinuedSession(std::shared_ptr<WorldPackets::Auth:
return;
}
- // Client switches packet headers after sending CMSG_AUTH_CONTINUED_SESSION
- _headerBuffer.Resize(SizeOfClientHeader[1]);
-
uint32 accountId = uint32(key.Fields.AccountId);
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO_CONTINUED_SESSION);
stmt->setUInt32(0, accountId);
@@ -890,17 +840,14 @@ void WorldSocket::HandleAuthContinuedSessionCallback(std::shared_ptr<WorldPacket
}
WorldSession::ConnectToKey key;
- key.Raw = authSession->Key;
+ _key = key.Raw = authSession->Key;
uint32 accountId = uint32(key.Fields.AccountId);
Field* fields = result->Fetch();
std::string login = fields[0].GetString();
- BigNumber k;
- k.SetHexStr(fields[1].GetCString());
+ _sessionKey.SetHexStr(fields[1].GetCString());
- _authCrypt.Init(&k, _encryptSeed.AsByteArray().get(), _decryptSeed.AsByteArray().get());
-
- HmacSha256 hmac(40, k.AsByteArray(40).get());
+ HmacSha256 hmac(40, _sessionKey.AsByteArray(40).get());
hmac.UpdateData(reinterpret_cast<uint8 const*>(&authSession->Key), sizeof(authSession->Key));
hmac.UpdateData(authSession->LocalChallenge.data(), authSession->LocalChallenge.size());
hmac.UpdateData(_serverChallenge.AsByteArray(16).get(), 16);
@@ -914,7 +861,7 @@ void WorldSocket::HandleAuthContinuedSessionCallback(std::shared_ptr<WorldPacket
return;
}
- sWorld->AddInstanceSocket(shared_from_this(), authSession->Key);
+ SendPacketAndLogOpcode(*WorldPackets::Auth::EnableEncryption().Write());
AsyncRead();
}
@@ -956,6 +903,20 @@ void WorldSocket::HandleConnectToFailed(WorldPackets::Auth::ConnectToFailed& con
}
}
+void WorldSocket::HandleEnableEncryptionAck()
+{
+ if (_type == CONNECTION_TYPE_REALM)
+ {
+ _authCrypt.Init(&_sessionKey);
+ sWorld->AddSession(_worldSession);
+ }
+ else
+ {
+ _authCrypt.Init(&_sessionKey, _encryptSeed.AsByteArray().get(), _decryptSeed.AsByteArray().get());
+ sWorld->AddInstanceSocket(shared_from_this(), _key);
+ }
+}
+
void WorldSocket::SendAuthResponseError(uint32 code)
{
WorldPackets::Auth::AuthResponse response;
diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h
index 5aed861e613..44f253d0864 100644
--- a/src/server/game/Server/WorldSocket.h
+++ b/src/server/game/Server/WorldSocket.h
@@ -21,7 +21,6 @@
#include "Common.h"
#include "WorldPacketCrypt.h"
-#include "ServerPktHeader.h"
#include "Socket.h"
#include "Util.h"
#include "WorldPacket.h"
@@ -47,29 +46,19 @@ namespace WorldPackets
#pragma pack(push, 1)
-union ClientPktHeader
+struct PacketHeader
{
- struct
- {
- uint16 Size;
- uint16 Command;
- } Setup;
-
- struct
- {
- uint32 Size;
- uint16 Command;
- } Normal;
+ uint32 Size;
+ uint16 Command;
- static bool IsValidSize(uint32 size) { return size < 10240; }
- static bool IsValidOpcode(uint32 opcode) { return opcode < NUM_OPCODE_HANDLERS; }
+ bool IsValidSize() { return Size < 10240; }
+ bool IsValidOpcode() { return Command < NUM_OPCODE_HANDLERS; }
};
#pragma pack(pop)
class TC_GAME_API WorldSocket : public Socket<WorldSocket>
{
- static uint32 const ConnectionInitializeMagic;
static std::string const ServerConnectionInitialize;
static std::string const ClientConnectionInitialize;
static uint32 const MinSizeForCompression;
@@ -129,17 +118,18 @@ private:
void HandleAuthContinuedSessionCallback(std::shared_ptr<WorldPackets::Auth::AuthContinuedSession> authSession, PreparedQueryResult result);
void LoadSessionPermissionsCallback(PreparedQueryResult result);
void HandleConnectToFailed(WorldPackets::Auth::ConnectToFailed& connectToFailed);
+ void HandleEnableEncryptionAck();
bool HandlePing(WorldPacket& recvPacket);
- void ExtractOpcodeAndSize(ClientPktHeader const* header, uint32& opcode, uint32& size) const;
-
ConnectionType _type;
+ uint64 _key;
BigNumber _serverChallenge;
WorldPacketCrypt _authCrypt;
BigNumber _encryptSeed;
BigNumber _decryptSeed;
+ BigNumber _sessionKey;
std::chrono::steady_clock::time_point _LastPingTime;
uint32 _OverSpeedPings;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 8aa8bfc404d..005d15d8291 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -7330,7 +7330,7 @@ void Spell::PrepareTriggersExecutedOnHit()
// Global cooldowns management
enum GCDLimits
{
- MIN_GCD = 1000,
+ MIN_GCD = 750,
MAX_GCD = 1500
};