aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2022_02_22_00_world.sql14
-rw-r--r--src/server/game/Chat/Hyperlinks.cpp2
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.cpp9
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.cpp18
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.h1
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp4
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h19
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp1
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h1
-rw-r--r--src/server/game/Entities/Object/MovementInfo.h21
-rw-r--r--src/server/game/Entities/Object/Object.cpp29
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateField.h2
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp106
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h67
-rw-r--r--src/server/game/Entities/Player/Player.cpp10
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
-rw-r--r--src/server/game/Entities/Unit/Unit.h9
-rw-r--r--src/server/game/Entities/Unit/UnitDefines.h6
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp41
-rw-r--r--src/server/game/Globals/ObjectMgr.h18
-rw-r--r--src/server/game/Guilds/Guild.cpp5
-rw-r--r--src/server/game/Guilds/Guild.h2
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp4
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp2
-rw-r--r--src/server/game/Handlers/GuildHandler.cpp10
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp1
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp20
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h10
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h2
-rw-r--r--src/server/game/Server/Packets/ClientConfigPackets.h2
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.h1
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/GuildPackets.h1
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h2
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp63
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h2
-rw-r--r--src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp8
-rw-r--r--src/server/game/Server/Packets/MythicPlusPacketsCommon.h17
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h5
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp41
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h21
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp15
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h21
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp21
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp19
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h1719
-rw-r--r--src/server/game/Server/WorldSession.h34
-rw-r--r--src/server/shared/Packets/ByteBuffer.h6
54 files changed, 1406 insertions, 1067 deletions
diff --git a/sql/updates/world/master/2022_02_22_00_world.sql b/sql/updates/world/master/2022_02_22_00_world.sql
new file mode 100644
index 00000000000..91036b68b79
--- /dev/null
+++ b/sql/updates/world/master/2022_02_22_00_world.sql
@@ -0,0 +1,14 @@
+ALTER TABLE `areatrigger_create_properties`
+ ADD `ShapeData6` float NOT NULL DEFAULT 0 AFTER `ShapeData5`,
+ ADD `ShapeData7` float NOT NULL DEFAULT 0 AFTER `ShapeData6`;
+
+ALTER TABLE `areatrigger_template`
+ ADD `Data6` float NOT NULL DEFAULT 0 AFTER `Data5`,
+ ADD `Data7` float NOT NULL DEFAULT 0 AFTER `Data6`;
+
+ALTER TABLE `gossip_menu_option` ADD `Language` int unsigned NOT NULL DEFAULT 0 AFTER `OptionNpcFlag`;
+
+ALTER TABLE `playerchoice`
+ ADD `CloseSoundKitId` int unsigned NOT NULL DEFAULT 0 AFTER `SoundKitId`,
+ ADD `Duration` bigint NOT NULL DEFAULT 0 AFTER `CloseSoundKitId`,
+ ADD `PendingChoiceText` VARCHAR(255) NOT NULL DEFAULT '' AFTER `Duration`;
diff --git a/src/server/game/Chat/Hyperlinks.cpp b/src/server/game/Chat/Hyperlinks.cpp
index bb628a3224f..6426d165c71 100644
--- a/src/server/game/Chat/Hyperlinks.cpp
+++ b/src/server/game/Chat/Hyperlinks.cpp
@@ -463,7 +463,7 @@ struct LinkValidator<LinkTags::quest>
if (i == DEFAULT_LOCALE)
continue;
- std::string_view name = ObjectMgr::GetLocaleString(locale->LogTitle, i);
+ std::string_view name = ObjectMgr::GetLocaleString(locale->LogTitle, LocaleConstant(i));
if (!name.empty() && (text == name))
return true;
}
diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp
index 401cf6598ac..e1ccf312e74 100644
--- a/src/server/game/DungeonFinding/LFGScripts.cpp
+++ b/src/server/game/DungeonFinding/LFGScripts.cpp
@@ -27,6 +27,7 @@
#include "Map.h"
#include "ObjectAccessor.h"
#include "Player.h"
+#include "QueryPackets.h"
#include "ScriptMgr.h"
#include "SharedDefines.h"
#include "WorldSession.h"
@@ -92,9 +93,11 @@ void LFGPlayerScript::OnMapChanged(Player* player)
return;
}
- for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
- if (Player* member = itr->GetSource())
- player->GetSession()->SendNameQueryOpcode(member->GetGUID());
+ WorldPackets::Query::QueryPlayerNameResponse response;
+ for (Group::MemberSlot const& memberSlot : group->GetMemberSlots())
+ player->GetSession()->BuildNameQueryData(memberSlot.guid, response.Players.emplace_back());
+
+ player->SendDirectMessage(response.Write());
if (sLFGMgr->selectedRandomLfgDungeon(player->GetGUID()))
player->CastSpell(player, LFG_SPELL_LUCK_OF_THE_DRAW, true);
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
index cd39c461f29..84d0a97af0b 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
@@ -374,6 +374,9 @@ void AreaTrigger::UpdateTargetList()
case AREATRIGGER_TYPE_CYLINDER:
SearchUnitInCylinder(targetList);
break;
+ case AREATRIGGER_TYPE_DISK:
+ SearchUnitInDisk(targetList);
+ break;
default:
break;
}
@@ -469,6 +472,21 @@ void AreaTrigger::SearchUnitInCylinder(std::vector<Unit*>& targetList)
}), targetList.end());
}
+void AreaTrigger::SearchUnitInDisk(std::vector<Unit*>& targetList)
+{
+ SearchUnits(targetList, GetMaxSearchRadius(), false);
+
+ float innerRadius = _shape.DiskDatas.InnerRadius;
+ float height = _shape.DiskDatas.Height;
+ float minZ = GetPositionZ() - height;
+ float maxZ = GetPositionZ() + height;
+
+ targetList.erase(std::remove_if(targetList.begin(), targetList.end(), [this, innerRadius, minZ, maxZ](Unit const* unit) -> bool
+ {
+ return unit->IsInDist2d(this, innerRadius) || unit->GetPositionZ() < minZ || unit->GetPositionZ() > maxZ;
+ }), targetList.end());
+}
+
void AreaTrigger::HandleUnitEnterExit(std::vector<Unit*> const& newTargetList)
{
GuidUnorderedSet exitUnits(std::move(_insideUnits));
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.h b/src/server/game/Entities/AreaTrigger/AreaTrigger.h
index 3ba82809ec3..ba5aaf7f69f 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.h
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.h
@@ -128,6 +128,7 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
void SearchUnitInBox(std::vector<Unit*>& targetList);
void SearchUnitInPolygon(std::vector<Unit*>& targetList);
void SearchUnitInCylinder(std::vector<Unit*>& targetList);
+ void SearchUnitInDisk(std::vector<Unit*>& targetList);
bool CheckIsInPolygon2D(Position const* pos) const;
void HandleUnitEnterExit(std::vector<Unit*> const& targetList);
diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp
index c0a623a4b52..322a0bf44d6 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp
+++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp
@@ -41,7 +41,9 @@ float AreaTriggerShapeInfo::GetMaxSearchRadius() const
case AREATRIGGER_TYPE_BOX:
return std::sqrt(BoxDatas.Extents[0] * BoxDatas.Extents[0] / 4 + BoxDatas.Extents[1] * BoxDatas.Extents[1] / 4);
case AREATRIGGER_TYPE_CYLINDER:
- return CylinderDatas.Radius;
+ return std::max(CylinderDatas.Radius, CylinderDatas.RadiusTarget);
+ case AREATRIGGER_TYPE_DISK:
+ return std::max(DiskDatas.OuterRadius, DiskDatas.OuterRadiusTarget);
default:
break;
}
diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h
index 0eb87f833d1..46e79be387f 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h
+++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h
@@ -24,7 +24,7 @@
#include "SpawnData.h"
#include <vector>
-#define MAX_AREATRIGGER_ENTITY_DATA 6
+#define MAX_AREATRIGGER_ENTITY_DATA 8
#define MAX_AREATRIGGER_SCALE 7
enum AreaTriggerFlags
@@ -50,7 +50,8 @@ enum AreaTriggerTypes
AREATRIGGER_TYPE_UNK = 2,
AREATRIGGER_TYPE_POLYGON = 3,
AREATRIGGER_TYPE_CYLINDER = 4,
- AREATRIGGER_TYPE_MAX = 5
+ AREATRIGGER_TYPE_DISK = 5,
+ AREATRIGGER_TYPE_MAX
};
enum AreaTriggerActionTypes
@@ -123,6 +124,7 @@ struct AreaTriggerShapeInfo
bool IsBox() const { return Type == AREATRIGGER_TYPE_BOX; }
bool IsPolygon() const { return Type == AREATRIGGER_TYPE_POLYGON; }
bool IsCylinder() const { return Type == AREATRIGGER_TYPE_CYLINDER; }
+ bool IsDisk() const { return Type == AREATRIGGER_TYPE_DISK; }
float GetMaxSearchRadius() const;
AreaTriggerTypes Type;
@@ -165,6 +167,19 @@ struct AreaTriggerShapeInfo
float LocationZOffset;
float LocationZOffsetTarget;
} CylinderDatas;
+
+ // AREATRIGGER_TYPE_DISK
+ struct
+ {
+ float InnerRadius;
+ float InnerRadiusTarget;
+ float OuterRadius;
+ float OuterRadiusTarget;
+ float Height;
+ float HeightTarget;
+ float LocationZOffset;
+ float LocationZOffsetTarget;
+ } DiskDatas;
};
};
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index ca8d013999f..784de37b4cf 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -225,6 +225,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID)
opt.OptionNPC = item.MenuItemIcon;
opt.OptionFlags = item.IsCoded; // makes pop up box password
opt.OptionCost = item.BoxMoney; // money required to open menu, 2.0.3
+ opt.OptionLanguage = item.Language;
opt.Text = item.Message; // text for gossip item
opt.Confirm = item.BoxMessage; // accept text (related to money) pop up box, 2.0.3
opt.Status = GossipOptionStatus::Available;
diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h
index 6c5391ae352..6d12a85f94a 100644
--- a/src/server/game/Entities/Creature/GossipDef.h
+++ b/src/server/game/Entities/Creature/GossipDef.h
@@ -131,6 +131,7 @@ struct GossipMenuItem
uint32 OptionType;
std::string BoxMessage;
uint32 BoxMoney;
+ uint32 Language;
};
// need an ordered container
diff --git a/src/server/game/Entities/Object/MovementInfo.h b/src/server/game/Entities/Object/MovementInfo.h
index 97d10d86105..f587d71e710 100644
--- a/src/server/game/Entities/Object/MovementInfo.h
+++ b/src/server/game/Entities/Object/MovementInfo.h
@@ -19,6 +19,7 @@
#define MovementInfo_h__
#include "ObjectGuid.h"
+#include "Optional.h"
#include "Position.h"
#include <algorithm>
#include <vector>
@@ -29,6 +30,7 @@ struct MovementInfo
ObjectGuid guid;
uint32 flags;
uint32 flags2;
+ uint32 flags3;
Position pos;
uint32 time;
@@ -56,6 +58,17 @@ struct MovementInfo
// swimming/flying
float pitch;
+ struct Inertia
+ {
+ Inertia() : lifetime(0) { }
+
+ ObjectGuid guid;
+ Position force;
+ uint32 lifetime;
+ };
+
+ Optional<Inertia> inertia;
+
// jumping
struct JumpInfo
{
@@ -75,7 +88,7 @@ struct MovementInfo
float splineElevation;
MovementInfo() :
- flags(0), flags2(0), time(0), pitch(0.0f), splineElevation(0.0f)
+ flags(0), flags2(0), flags3(0), time(0), pitch(0.0f), splineElevation(0.0f)
{
pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f);
transport.Reset();
@@ -94,6 +107,12 @@ struct MovementInfo
void RemoveExtraMovementFlag(uint32 flag) { flags2 &= ~flag; }
bool HasExtraMovementFlag(uint32 flag) const { return (flags2 & flag) != 0; }
+ uint32 GetExtraMovementFlags2() const { return flags3; }
+ void SetExtraMovementFlags2(uint32 flag) { flags3 = flag; }
+ void AddExtraMovementFlag2(uint32 flag) { flags3 |= flag; }
+ void RemoveExtraMovementFlag2(uint32 flag) { flags3 &= ~flag; }
+ bool HasExtraMovementFlag2(uint32 flag) const { return (flags3 & flag) != 0; }
+
uint32 GetFallTime() const { return jump.fallTime; }
void SetFallTime(uint32 fallTime) { jump.fallTime = fallTime; }
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index e2df959e8d7..995f1b7b29c 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -299,9 +299,14 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
bool HasFallDirection = unit->HasUnitMovementFlag(MOVEMENTFLAG_FALLING);
bool HasFall = HasFallDirection || unit->m_movementInfo.jump.fallTime != 0;
bool HasSpline = unit->IsSplineEnabled();
+ bool HasInertia = unit->m_movementInfo.inertia.has_value();
*data << GetGUID(); // MoverGUID
+ *data << uint32(unit->GetUnitMovementFlags());
+ *data << uint32(unit->GetExtraUnitMovementFlags());
+ *data << uint32(unit->GetExtraUnitMovementFlags2());
+
*data << uint32(unit->m_movementInfo.time); // MoveTime
*data << float(unit->GetPositionX());
*data << float(unit->GetPositionY());
@@ -317,17 +322,23 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
//for (std::size_t i = 0; i < RemoveForcesIDs.size(); ++i)
// *data << ObjectGuid(RemoveForcesIDs);
- data->WriteBits(unit->GetUnitMovementFlags(), 30);
- data->WriteBits(unit->GetExtraUnitMovementFlags(), 18);
data->WriteBit(!unit->m_movementInfo.transport.guid.IsEmpty()); // HasTransport
data->WriteBit(HasFall); // HasFall
data->WriteBit(HasSpline); // HasSpline - marks that the unit uses spline movement
data->WriteBit(false); // HeightChangeFailed
data->WriteBit(false); // RemoteTimeValid
+ data->WriteBit(HasInertia); // HasInertia
if (!unit->m_movementInfo.transport.guid.IsEmpty())
*data << unit->m_movementInfo.transport;
+ if (HasInertia)
+ {
+ *data << unit->m_movementInfo.inertia->guid;
+ *data << unit->m_movementInfo.inertia->force.PositionXYZStream();
+ *data << uint32(unit->m_movementInfo.inertia->lifetime);
+ }
+
if (HasFall)
{
*data << uint32(unit->m_movementInfo.jump.fallTime); // Time
@@ -454,6 +465,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
bool hasAreaTriggerBox = shape.IsBox();
bool hasAreaTriggerPolygon = createProperties && shape.IsPolygon();
bool hasAreaTriggerCylinder = shape.IsCylinder();
+ bool hasDisk = shape.IsDisk();
bool hasAreaTriggerSpline = areaTrigger->HasSplines();
bool hasOrbit = areaTrigger->HasOrbit();
bool hasMovementScript = false;
@@ -473,6 +485,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
data->WriteBit(hasAreaTriggerBox);
data->WriteBit(hasAreaTriggerPolygon);
data->WriteBit(hasAreaTriggerCylinder);
+ data->WriteBit(hasDisk);
data->WriteBit(hasAreaTriggerSpline);
data->WriteBit(hasOrbit);
data->WriteBit(hasMovementScript);
@@ -542,6 +555,18 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
*data << float(shape.CylinderDatas.LocationZOffsetTarget);
}
+ if (hasDisk)
+ {
+ *data << float(shape.DiskDatas.InnerRadius);
+ *data << float(shape.DiskDatas.InnerRadiusTarget);
+ *data << float(shape.DiskDatas.OuterRadius);
+ *data << float(shape.DiskDatas.OuterRadiusTarget);
+ *data << float(shape.DiskDatas.Height);
+ *data << float(shape.DiskDatas.HeightTarget);
+ *data << float(shape.DiskDatas.LocationZOffset);
+ *data << float(shape.DiskDatas.LocationZOffsetTarget);
+ }
+
//if (hasMovementScript)
// *data << *areaTrigger->GetMovementScript(); // AreaTriggerMovementScriptInfo
diff --git a/src/server/game/Entities/Object/Updates/UpdateField.h b/src/server/game/Entities/Object/Updates/UpdateField.h
index edb07858d30..877c2b72ec8 100644
--- a/src/server/game/Entities/Object/Updates/UpdateField.h
+++ b/src/server/game/Entities/Object/Updates/UpdateField.h
@@ -756,7 +756,7 @@ namespace UF
return Size;
}
- T const& operator[](uint32 index) const
+ T const& operator[](std::size_t index) const
{
return _values[index];
}
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 230216889ad..dae7ea5e396 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -328,13 +328,13 @@ void ItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
-void ItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void ItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
allowedMaskForTarget |= { 0x03FB1B00u, 0x00000000u };
}
-void ItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void ItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
Mask allowedMaskForTarget({ 0xFC04E4FFu, 0x000000FFu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
@@ -713,13 +713,13 @@ void AzeriteItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
-void AzeriteItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void AzeriteItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
allowedMaskForTarget |= { 0x000003E2u };
}
-void AzeriteItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void AzeriteItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
Mask allowedMaskForTarget({ 0x0000001Du });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
@@ -1114,7 +1114,6 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << uint32(PassiveSpells.size());
data << uint32(WorldEffects.size());
data << uint32(ChannelObjects.size());
- data << SkinningOwnerGUID;
data << uint32(SilencedSchoolMask);
data << NameplateAttachToGUID;
for (std::size_t i = 0; i < PassiveSpells.size(); ++i)
@@ -1133,24 +1132,24 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0xFE0007FFu, 0x00000000u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x7F0003FFu, 0x00000000u, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
-void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- allowedMaskForTarget |= { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x1000007Eu, 0x01FFF800u, 0xFFFFFFFFu, 0x00000007u };
+ allowedMaskForTarget |= { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0800007Eu, 0x80FFFC00u, 0xFFFFFFFFu, 0x00000003u };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll))
- allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x10000000u, 0x01FFF800u, 0x00000000u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x08000000u, 0x00FFFC00u, 0x00000000u, 0x00000000u };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath))
- allowedMaskForTarget |= { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x001FE000u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000FF000u, 0x00000000u };
}
-void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0xFE0007FFu, 0x00000000u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x7F0003FFu, 0x00000000u, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -1682,100 +1681,96 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[118])
{
- data << SkinningOwnerGUID;
- }
- if (changesMask[119])
- {
data << uint32(SilencedSchoolMask);
}
- if (changesMask[120])
+ if (changesMask[119])
{
data << NameplateAttachToGUID;
}
}
- if (changesMask[121])
+ if (changesMask[120])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[122 + i])
+ if (changesMask[121 + i])
{
data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(this, i, owner, receiver));
}
}
}
- if (changesMask[124])
+ if (changesMask[123])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[125 + i])
+ if (changesMask[124 + i])
{
data << int32(Power[i]);
}
- if (changesMask[132 + i])
+ if (changesMask[131 + i])
{
data << int32(MaxPower[i]);
}
- if (changesMask[139 + i])
+ if (changesMask[138 + i])
{
data << float(PowerRegenFlatModifier[i]);
}
- if (changesMask[146 + i])
+ if (changesMask[145 + i])
{
data << float(PowerRegenInterruptedFlatModifier[i]);
}
}
}
- if (changesMask[153])
+ if (changesMask[152])
{
for (std::size_t i = 0; i < 3; ++i)
{
- if (changesMask[154 + i])
+ if (changesMask[153 + i])
{
VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[157])
+ if (changesMask[156])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[158 + i])
+ if (changesMask[157 + i])
{
data << uint32(AttackRoundBaseTime[i]);
}
}
}
- if (changesMask[160])
+ if (changesMask[159])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[161 + i])
+ if (changesMask[160 + i])
{
data << int32(Stats[i]);
}
- if (changesMask[165 + i])
+ if (changesMask[164 + i])
{
data << int32(StatPosBuff[i]);
}
- if (changesMask[169 + i])
+ if (changesMask[168 + i])
{
data << int32(StatNegBuff[i]);
}
}
}
- if (changesMask[173])
+ if (changesMask[172])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[174 + i])
+ if (changesMask[173 + i])
{
data << int32(Resistances[i]);
}
- if (changesMask[181 + i])
+ if (changesMask[180 + i])
{
data << int32(BonusResistanceMods[i]);
}
- if (changesMask[188 + i])
+ if (changesMask[187 + i])
{
data << int32(ManaCostModifier[i]);
}
@@ -1899,7 +1894,6 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(LookAtControllerID);
Base::ClearChangesMask(TaxiNodesID);
Base::ClearChangesMask(GuildGUID);
- Base::ClearChangesMask(SkinningOwnerGUID);
Base::ClearChangesMask(SilencedSchoolMask);
Base::ClearChangesMask(NameplateAttachToGUID);
Base::ClearChangesMask(NpcFlags);
@@ -2170,13 +2164,13 @@ void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
-void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFF8u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000001u };
}
-void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
+void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x00000007u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0FFFFFFEu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
@@ -4434,11 +4428,11 @@ void GameObjectData::ClearChangesMask()
void DynamicObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const
{
data << Caster;
+ data << uint8(Type);
SpellVisual->WriteCreate(data, owner, receiver);
data << int32(SpellID);
data << float(Radius);
data << uint32(CastTime);
- data << uint8(Type);
}
void DynamicObjectData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const
@@ -4459,23 +4453,23 @@ void DynamicObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, b
}
if (changesMask[2])
{
- SpellVisual->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << uint8(Type);
}
if (changesMask[3])
{
- data << int32(SpellID);
+ SpellVisual->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
if (changesMask[4])
{
- data << float(Radius);
+ data << int32(SpellID);
}
if (changesMask[5])
{
- data << uint32(CastTime);
+ data << float(Radius);
}
if (changesMask[6])
{
- data << uint8(Type);
+ data << uint32(CastTime);
}
}
}
@@ -4483,11 +4477,11 @@ void DynamicObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, b
void DynamicObjectData::ClearChangesMask()
{
Base::ClearChangesMask(Caster);
+ Base::ClearChangesMask(Type);
Base::ClearChangesMask(SpellVisual);
Base::ClearChangesMask(SpellID);
Base::ClearChangesMask(Radius);
Base::ClearChangesMask(CastTime);
- Base::ClearChangesMask(Type);
_changesMask.ResetAll();
}
@@ -4752,7 +4746,9 @@ void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi
data << float(BoundsRadius2D);
data << uint32(DecalPropertiesID);
data << CreatingEffectGUID;
- data << Field_80;
+ data << uint32(Field_80);
+ data << uint32(Field_84);
+ data << Field_88;
ExtraScaleCurve->WriteCreate(data, owner, receiver);
VisualAnim->WriteCreate(data, owner, receiver);
}
@@ -4764,7 +4760,7 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi
void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlock(0), 16);
+ data.WriteBits(changesMask.GetBlock(0), 18);
data.FlushBits();
if (changesMask[0])
@@ -4819,13 +4815,21 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, boo
}
if (changesMask[14])
{
- data << Field_80;
+ data << uint32(Field_80);
+ }
+ if (changesMask[15])
+ {
+ data << uint32(Field_84);
+ }
+ if (changesMask[16])
+ {
+ data << Field_88;
}
if (changesMask[2])
{
ExtraScaleCurve->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[15])
+ if (changesMask[17])
{
VisualAnim->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
@@ -4848,6 +4852,8 @@ void AreaTriggerData::ClearChangesMask()
Base::ClearChangesMask(DecalPropertiesID);
Base::ClearChangesMask(CreatingEffectGUID);
Base::ClearChangesMask(Field_80);
+ Base::ClearChangesMask(Field_84);
+ Base::ClearChangesMask(Field_88);
Base::ClearChangesMask(VisualAnim);
_changesMask.ResetAll();
}
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 01afa7941cb..a9967827f7a 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -139,8 +139,8 @@ struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<40>
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Item const* owner, Player const* receiver) const;
- void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
- void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
+ static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
+ static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
void ClearChangesMask();
};
@@ -202,8 +202,8 @@ struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteItem const* owner, Player const* receiver) const;
- void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
- void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
+ static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
+ static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
void ClearChangesMask();
};
@@ -252,7 +252,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag
bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); }
};
-struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<195>
+struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<194>
{
UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs;
DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells;
@@ -373,29 +373,28 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<195>
UpdateField<int32, 96, 115> LookAtControllerID;
UpdateField<int32, 96, 116> TaxiNodesID;
UpdateField<ObjectGuid, 96, 117> GuildGUID;
- UpdateField<ObjectGuid, 96, 118> SkinningOwnerGUID;
- UpdateField<uint32, 96, 119> SilencedSchoolMask;
- UpdateField<ObjectGuid, 96, 120> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
- UpdateFieldArray<uint32, 2, 121, 122> NpcFlags;
+ UpdateField<uint32, 96, 118> SilencedSchoolMask;
+ UpdateField<ObjectGuid, 96, 119> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
+ UpdateFieldArray<uint32, 2, 120, 121> NpcFlags;
struct NpcFlagsTag : ViewerDependentValueTag<uint32> {};
- UpdateFieldArray<int32, 7, 124, 125> Power;
- UpdateFieldArray<int32, 7, 124, 132> MaxPower;
- UpdateFieldArray<float, 7, 124, 139> PowerRegenFlatModifier;
- UpdateFieldArray<float, 7, 124, 146> PowerRegenInterruptedFlatModifier;
- UpdateFieldArray<UF::VisibleItem, 3, 153, 154> VirtualItems;
- UpdateFieldArray<uint32, 2, 157, 158> AttackRoundBaseTime;
- UpdateFieldArray<int32, 4, 160, 161> Stats;
- UpdateFieldArray<int32, 4, 160, 165> StatPosBuff;
- UpdateFieldArray<int32, 4, 160, 169> StatNegBuff;
- UpdateFieldArray<int32, 7, 173, 174> Resistances;
- UpdateFieldArray<int32, 7, 173, 181> BonusResistanceMods;
- UpdateFieldArray<int32, 7, 173, 188> ManaCostModifier;
+ UpdateFieldArray<int32, 7, 123, 124> Power;
+ UpdateFieldArray<int32, 7, 123, 131> MaxPower;
+ UpdateFieldArray<float, 7, 123, 138> PowerRegenFlatModifier;
+ UpdateFieldArray<float, 7, 123, 145> PowerRegenInterruptedFlatModifier;
+ UpdateFieldArray<UF::VisibleItem, 3, 152, 153> VirtualItems;
+ UpdateFieldArray<uint32, 2, 156, 157> AttackRoundBaseTime;
+ UpdateFieldArray<int32, 4, 159, 160> Stats;
+ UpdateFieldArray<int32, 4, 159, 164> StatPosBuff;
+ UpdateFieldArray<int32, 4, 159, 168> StatNegBuff;
+ UpdateFieldArray<int32, 7, 172, 173> Resistances;
+ UpdateFieldArray<int32, 7, 172, 180> BonusResistanceMods;
+ UpdateFieldArray<int32, 7, 172, 187> ManaCostModifier;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Unit const* owner, Player const* receiver) const;
- void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
- void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
+ static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
+ static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
void ClearChangesMask();
};
@@ -493,8 +492,8 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<188>
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const;
- void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
- void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const;
+ static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
+ static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags);
void ClearChangesMask();
bool IsQuestLogChangesMaskSkipped() const { return false; } // bandwidth savings aren't worth the cpu time
};
@@ -823,11 +822,11 @@ struct GameObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<
struct DynamicObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<7>
{
UpdateField<ObjectGuid, 0, 1> Caster;
- UpdateField<UF::SpellCastVisual, 0, 2> SpellVisual;
- UpdateField<int32, 0, 3> SpellID;
- UpdateField<float, 0, 4> Radius;
- UpdateField<uint32, 0, 5> CastTime;
- UpdateField<uint8, 0, 6> Type;
+ UpdateField<uint8, 0, 2> Type;
+ UpdateField<UF::SpellCastVisual, 0, 3> SpellVisual;
+ UpdateField<int32, 0, 4> SpellID;
+ UpdateField<float, 0, 5> Radius;
+ UpdateField<uint32, 0, 6> CastTime;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const;
@@ -881,7 +880,7 @@ struct VisualAnim : public IsUpdateFieldStructureTag, public HasChangesMask<5>
void ClearChangesMask();
};
-struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<16>
+struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<18>
{
UpdateField<UF::ScaleCurve, 0, 1> OverrideScaleCurve;
UpdateField<UF::ScaleCurve, 0, 2> ExtraScaleCurve;
@@ -896,8 +895,10 @@ struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask
UpdateField<float, 0, 11> BoundsRadius2D;
UpdateField<uint32, 0, 12> DecalPropertiesID;
UpdateField<ObjectGuid, 0, 13> CreatingEffectGUID;
- UpdateField<ObjectGuid, 0, 14> Field_80;
- UpdateField<UF::VisualAnim, 0, 15> VisualAnim;
+ UpdateField<uint32, 0, 14> Field_80;
+ UpdateField<uint32, 0, 15> Field_84;
+ UpdateField<ObjectGuid, 0, 16> Field_88;
+ UpdateField<UF::VisualAnim, 0, 17> VisualAnim;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index da41e6bfa72..a5c11f6e736 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -28528,11 +28528,11 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId)
if (playerChoiceResponseTemplate.MawPower)
{
WorldPackets::Quest::PlayerChoiceResponseMawPower& mawPower = playerChoiceResponse.MawPower.emplace();
- mawPower.TypeArtFileID = playerChoiceResponse.MawPower->TypeArtFileID;
- mawPower.Rarity = playerChoiceResponse.MawPower->Rarity;
- mawPower.RarityColor = playerChoiceResponse.MawPower->RarityColor;
- mawPower.SpellID = playerChoiceResponse.MawPower->SpellID;
- mawPower.MaxStacks = playerChoiceResponse.MawPower->MaxStacks;
+ mawPower.TypeArtFileID = playerChoiceResponseTemplate.MawPower->TypeArtFileID;
+ mawPower.Rarity = playerChoiceResponseTemplate.MawPower->Rarity;
+ mawPower.RarityColor = playerChoiceResponseTemplate.MawPower->RarityColor;
+ mawPower.SpellID = playerChoiceResponseTemplate.MawPower->SpellID;
+ mawPower.MaxStacks = playerChoiceResponseTemplate.MawPower->MaxStacks;
}
}
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 36b257543c3..1301968399b 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1519,7 +1519,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
}
}
-void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinity::IteratorPair<int32 const*> spellVisualKitIds /*= {}*/)
+void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinity::IteratorPair<int32 const*> spellVisualKitIds /*= {}*/, int32 sequenceVariation /*= 0*/)
{
WorldPackets::Chat::Emote packet;
packet.Guid = GetGUID();
@@ -1529,6 +1529,8 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit
if (emotesEntry->AnimID == ANIM_MOUNT_SPECIAL || emotesEntry->AnimID == ANIM_MOUNT_SELF_SPECIAL)
std::copy(spellVisualKitIds.begin(), spellVisualKitIds.end(), std::back_inserter(packet.SpellVisualKitIDs));
+ packet.SequenceVariation = sequenceVariation;
+
if (target)
target->SendDirectMessage(packet.Write());
else
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 50acbb61055..11f5b856aee 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1041,7 +1041,7 @@ class TC_GAME_API Unit : public WorldObject
DamageInfo* damageInfo, HealInfo* healInfo);
void TriggerAurasProcOnEvent(ProcEventInfo& eventInfo, AuraApplicationProcContainer& procAuras);
- void HandleEmoteCommand(Emote emoteId, Player* target = nullptr, Trinity::IteratorPair<int32 const*> spellVisualKitIds = {});
+ void HandleEmoteCommand(Emote emoteId, Player* target = nullptr, Trinity::IteratorPair<int32 const*> spellVisualKitIds = {}, int32 sequenceVariation = 0);
void AttackerStateUpdate (Unit* victim, WeaponAttackType attType = BASE_ATTACK, bool extra = false);
void CalculateMeleeDamage(Unit* victim, CalcDamageInfo* damageInfo, WeaponAttackType attackType = BASE_ATTACK);
@@ -1738,6 +1738,13 @@ class TC_GAME_API Unit : public WorldObject
bool HasExtraUnitMovementFlag(uint32 f) const { return m_movementInfo.HasExtraMovementFlag(f); }
uint32 GetExtraUnitMovementFlags() const { return m_movementInfo.GetExtraMovementFlags(); }
void SetExtraUnitMovementFlags(uint32 f) { m_movementInfo.SetExtraMovementFlags(f); }
+
+ void AddExtraUnitMovementFlag2(uint32 f) { m_movementInfo.AddExtraMovementFlag2(f); }
+ void RemoveExtraUnitMovementFlag2(uint32 f) { m_movementInfo.RemoveExtraMovementFlag2(f); }
+ bool HasExtraUnitMovementFlag2(uint32 f) const { return m_movementInfo.HasExtraMovementFlag2(f); }
+ uint32 GetExtraUnitMovementFlags2() const { return m_movementInfo.GetExtraMovementFlags2(); }
+ void SetExtraUnitMovementFlags2(uint32 f) { m_movementInfo.SetExtraMovementFlags2(f); }
+
bool IsSplineEnabled() const;
void SetControlled(bool apply, UnitState state);
diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h
index 3e3d124dc28..2377fac002b 100644
--- a/src/server/game/Entities/Unit/UnitDefines.h
+++ b/src/server/game/Entities/Unit/UnitDefines.h
@@ -333,6 +333,12 @@ enum MovementFlags2 : uint32
MOVEMENTFLAG2_INTERPOLATED_PITCHING = 0x00080000
};
+enum MovementFlags3 : uint32
+{
+ MOVEMENTFLAG3_NONE = 0x00000000,
+ MOVEMENTFLAG3_DISABLE_INERTIA = 0x00000001,
+};
+
enum HitInfo
{
HITINFO_NORMALSWING = 0x00000000,
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 7c91d048869..ad8dd328747 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -9557,8 +9557,8 @@ void ObjectMgr::LoadGossipMenuItems()
_gossipMenuItemsStore.clear();
QueryResult result = WorldDatabase.Query(
- // 0 1 2 3 4 5 6 7 8 9 10 11 12
- "SELECT MenuID, OptionID, OptionIcon, OptionText, OptionBroadcastTextID, OptionType, OptionNpcFlag, ActionMenuID, ActionPoiID, BoxCoded, BoxMoney, BoxText, BoxBroadcastTextID "
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13
+ "SELECT MenuID, OptionID, OptionIcon, OptionText, OptionBroadcastTextID, OptionType, OptionNpcFlag, Language, ActionMenuID, ActionPoiID, BoxCoded, BoxMoney, BoxText, BoxBroadcastTextID "
"FROM gossip_menu_option ORDER BY MenuID, OptionID");
if (!result)
@@ -9580,12 +9580,13 @@ void ObjectMgr::LoadGossipMenuItems()
gMenuItem.OptionBroadcastTextID = fields[4].GetUInt32();
gMenuItem.OptionType = fields[5].GetUInt32();
gMenuItem.OptionNpcFlag = fields[6].GetUInt64();
- gMenuItem.ActionMenuID = fields[7].GetUInt32();
- gMenuItem.ActionPoiID = fields[8].GetUInt32();
- gMenuItem.BoxCoded = fields[9].GetBool();
- gMenuItem.BoxMoney = fields[10].GetUInt32();
- gMenuItem.BoxText = fields[11].GetString();
- gMenuItem.BoxBroadcastTextID = fields[12].GetUInt32();
+ gMenuItem.Language = fields[7].GetUInt32();
+ gMenuItem.ActionMenuID = fields[8].GetUInt32();
+ gMenuItem.ActionPoiID = fields[9].GetUInt32();
+ gMenuItem.BoxCoded = fields[10].GetBool();
+ gMenuItem.BoxMoney = fields[11].GetUInt32();
+ gMenuItem.BoxText = fields[12].GetString();
+ gMenuItem.BoxBroadcastTextID = fields[13].GetUInt32();
if (gMenuItem.OptionIcon >= GossipOptionIcon::Count)
{
@@ -9605,6 +9606,12 @@ void ObjectMgr::LoadGossipMenuItems()
if (gMenuItem.OptionType >= GOSSIP_OPTION_MAX)
TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u has unknown option id %u. Option will not be used", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.OptionType);
+ if (gMenuItem.Language && !sLanguagesStore.LookupEntry(gMenuItem.Language))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u use non-existing Language %u, ignoring", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.Language);
+ gMenuItem.Language = 0;
+ }
+
if (gMenuItem.ActionPoiID && !GetPointOfInterest(gMenuItem.ActionPoiID))
{
TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u use non-existing ActionPoiID %u, ignoring", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.ActionPoiID);
@@ -10814,7 +10821,8 @@ void ObjectMgr::LoadPlayerChoices()
uint32 oldMSTime = getMSTime();
_playerChoices.clear();
- QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, SoundKitId, Question, HideWarboardHeader, KeepOpenAfterChoice FROM playerchoice");
+ // 0 1 2 3 4 5 6 7 8
+ QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, SoundKitId, CloseSoundKitId, Duration, Question, PendingChoiceText, HideWarboardHeader, KeepOpenAfterChoice FROM playerchoice");
if (!choices)
{
@@ -10840,9 +10848,12 @@ void ObjectMgr::LoadPlayerChoices()
choice.ChoiceId = choiceId;
choice.UiTextureKitId = fields[1].GetInt32();
choice.SoundKitId = fields[2].GetUInt32();
- choice.Question = fields[3].GetString();
- choice.HideWarboardHeader = fields[4].GetBool();
- choice.KeepOpenAfterChoice = fields[5].GetBool();
+ choice.CloseSoundKitId = fields[3].GetUInt32();
+ choice.Duration = fields[4].GetInt64();
+ choice.Question = fields[5].GetString();
+ choice.PendingChoiceText = fields[6].GetString();
+ choice.HideWarboardHeader = fields[7].GetBool();
+ choice.KeepOpenAfterChoice = fields[8].GetBool();
} while (choices->NextRow());
@@ -11172,8 +11183,10 @@ void ObjectMgr::LoadPlayerChoices()
PlayerChoiceResponseMawPower& mawPower = responseItr->MawPower.emplace();
mawPower.TypeArtFileID = fields[2].GetInt32();
- mawPower.Rarity = fields[3].GetInt32();
- mawPower.RarityColor = fields[4].GetUInt32();
+ if (!fields[3].IsNull())
+ mawPower.Rarity = fields[3].GetInt32();
+ if (!fields[4].IsNull())
+ mawPower.RarityColor = fields[4].GetUInt32();
mawPower.SpellID = fields[5].GetInt32();
mawPower.MaxStacks = fields[6].GetInt32();
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index f145129b234..5aa7bed0eda 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -753,6 +753,7 @@ struct GossipMenuItems
uint32 OptionBroadcastTextID;
uint32 OptionType;
uint32 OptionNpcFlag;
+ uint32 Language;
uint32 ActionMenuID;
uint32 ActionPoiID;
bool BoxCoded;
@@ -898,8 +899,8 @@ struct PlayerChoiceResponseReward
struct PlayerChoiceResponseMawPower
{
int32 TypeArtFileID = 0;
- int32 Rarity = 0;
- uint32 RarityColor = 0;
+ Optional<int32> Rarity;
+ Optional<uint32> RarityColor;
int32 SpellID = 0;
int32 MaxStacks = 0;
};
@@ -931,7 +932,10 @@ struct PlayerChoice
int32 ChoiceId;
int32 UiTextureKitId;
uint32 SoundKitId;
+ uint32 CloseSoundKitId;
+ int64 Duration;
std::string Question;
+ std::string PendingChoiceText;
std::vector<PlayerChoiceResponse> Responses;
bool HideWarboardHeader;
bool KeepOpenAfterChoice;
@@ -1684,7 +1688,7 @@ class TC_GAME_API ObjectMgr
GraveyardContainer GraveyardStore;
static void AddLocaleString(std::string&& value, LocaleConstant localeConstant, std::vector<std::string>& data);
- static std::string_view GetLocaleString(std::vector<std::string> const& data, size_t locale)
+ static std::string_view GetLocaleString(std::vector<std::string> const& data, LocaleConstant locale)
{
if (locale < data.size())
return data[locale];
@@ -1693,10 +1697,16 @@ class TC_GAME_API ObjectMgr
}
static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string& value)
{
- if (std::string_view str = GetLocaleString(data, static_cast<size_t>(localeConstant)); !str.empty())
+ if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
value.assign(str);
}
+ static void GetLocaleString(std::vector<std::string> const& data, LocaleConstant localeConstant, std::string_view& value)
+ {
+ if (std::string_view str = GetLocaleString(data, localeConstant); !str.empty())
+ value = str;
+ }
+
CharacterConversionMap FactionChangeAchievements;
CharacterConversionMap FactionChangeItemsAllianceToHorde;
CharacterConversionMap FactionChangeItemsHordeToAlliance;
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 10dc3e31c5b..bbbb639d33c 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -1339,11 +1339,10 @@ void Guild::HandleRoster(WorldSession* session)
session->SendPacket(roster.Write());
}
-void Guild::SendQueryResponse(WorldSession* session, ObjectGuid const& playerGuid)
+void Guild::SendQueryResponse(WorldSession* session)
{
WorldPackets::Guild::QueryGuildInfoResponse response;
response.GuildGuid = GetGUID();
- response.PlayerGuid = playerGuid;
response.Info.emplace();
response.Info->GuildGUID = GetGUID();
@@ -1488,7 +1487,7 @@ void Guild::HandleSetEmblem(WorldSession* session, EmblemInfo const& emblemInfo)
SendSaveEmblemResult(session, ERR_GUILDEMBLEM_SUCCESS); // "Guild Emblem saved."
- SendQueryResponse(session, ObjectGuid::Empty);
+ SendQueryResponse(session);
}
}
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index 794d5aad8c1..d02feb29fed 100644
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -737,7 +737,7 @@ class TC_GAME_API Guild
// Handle client commands
void HandleRoster(WorldSession* session);
- void SendQueryResponse(WorldSession* session, ObjectGuid const& playerGuid);
+ void SendQueryResponse(WorldSession* session);
void HandleSetAchievementTracking(WorldSession* session, uint32 const* achievementIdsBegin, uint32 const* achievementIdsEnd);
void HandleGetAchievementMembers(WorldSession* session, uint32 achievementId) const;
void HandleSetMOTD(WorldSession* session, std::string_view motd);
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index a23952b1431..f13a3e6e33e 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1112,10 +1112,10 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
// Send PVPSeason
{
WorldPackets::Battleground::SeasonInfo seasonInfo;
- seasonInfo.PreviousSeason = sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID) - sWorld->getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS);
+ seasonInfo.PreviousArenaSeason = sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID) - sWorld->getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS);
if (sWorld->getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS))
- seasonInfo.CurrentSeason = sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID);
+ seasonInfo.CurrentArenaSeason = sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID);
SendPacket(seasonInfo.Write());
}
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index b050c179f93..8d3cca11b69 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -686,7 +686,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet)
// Only allow text-emotes for "dead" entities (feign death included)
if (_player->HasUnitState(UNIT_STATE_DIED))
break;
- _player->HandleEmoteCommand(emote, nullptr, { packet.SpellVisualKitIDs.data(), packet.SpellVisualKitIDs.data() + packet.SpellVisualKitIDs.size() });
+ _player->HandleEmoteCommand(emote, nullptr, { packet.SpellVisualKitIDs.data(), packet.SpellVisualKitIDs.data() + packet.SpellVisualKitIDs.size() }, packet.SequenceVariation);
break;
}
diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp
index e40d773b768..ce0e4b0681d 100644
--- a/src/server/game/Handlers/GuildHandler.cpp
+++ b/src/server/game/Handlers/GuildHandler.cpp
@@ -32,15 +32,13 @@ void WorldSession::HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo& q
GetPlayerInfo().c_str(), query.GuildGuid.ToString().c_str(), query.PlayerGuid.ToString().c_str());
if (Guild* guild = sGuildMgr->GetGuildByGuid(query.GuildGuid))
- if (guild->IsMember(query.PlayerGuid))
- {
- guild->SendQueryResponse(this, query.PlayerGuid);
- return;
- }
+ {
+ guild->SendQueryResponse(this);
+ return;
+ }
WorldPackets::Guild::QueryGuildInfoResponse response;
response.GuildGuid = query.GuildGuid;
- response.PlayerGuid = query.PlayerGuid;
SendPacket(response.Write());
TC_LOG_DEBUG("guild", "SMSG_GUILD_QUERY_RESPONSE [%s]", GetPlayerInfo().c_str());
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index facc120c789..519f98aaf31 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1142,6 +1142,7 @@ void WorldSession::HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial
WorldPackets::Misc::SpecialMountAnim specialMountAnim;
specialMountAnim.UnitGUID = _player->GetGUID();
std::copy(mountSpecial.SpellVisualKitIDs.begin(), mountSpecial.SpellVisualKitIDs.end(), std::back_inserter(specialMountAnim.SpellVisualKitIDs));
+ specialMountAnim.SequenceVariation = mountSpecial.SequenceVariation;
GetPlayer()->SendMessageToSet(specialMountAnim.Write(), false);
}
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index 4bfb1962c89..5627305c2f3 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -32,24 +32,26 @@
#include "Realm.h"
#include "World.h"
-void WorldSession::SendNameQueryOpcode(ObjectGuid guid)
+void WorldSession::BuildNameQueryData(ObjectGuid guid, WorldPackets::Query::NameCacheLookupResult& lookupData)
{
Player* player = ObjectAccessor::FindConnectedPlayer(guid);
- WorldPackets::Query::QueryPlayerNameResponse response;
- response.Player = guid;
+ lookupData.Player = guid;
- if (response.Data.Initialize(guid, player))
- response.Result = RESPONSE_SUCCESS; // name known
+ lookupData.Data.emplace();
+ if (lookupData.Data->Initialize(guid, player))
+ lookupData.Result = RESPONSE_SUCCESS; // name known
else
- response.Result = RESPONSE_FAILURE; // name unknown
-
- SendPacket(response.Write());
+ lookupData.Result = RESPONSE_FAILURE; // name unknown
}
void WorldSession::HandleNameQueryOpcode(WorldPackets::Query::QueryPlayerName& packet)
{
- SendNameQueryOpcode(packet.Player);
+ WorldPackets::Query::QueryPlayerNameResponse response;
+ for (ObjectGuid guid : packet.Players)
+ BuildNameQueryData(guid, response.Players.emplace_back());
+
+ SendPacket(response.Write());
}
void WorldSession::HandleQueryTimeOpcode(WorldPackets::Query::QueryTime& /*queryTime*/)
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index c8c46eaf2a3..08ac3bd490d 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -19,9 +19,10 @@
WorldPacket const* WorldPackets::Battleground::SeasonInfo::Write()
{
- _worldPacket << int32(MythicPlusSeasonID);
- _worldPacket << int32(CurrentSeason);
- _worldPacket << int32(PreviousSeason);
+ _worldPacket << int32(MythicPlusDisplaySeasonID);
+ _worldPacket << int32(MythicPlusMilestoneSeasonID);
+ _worldPacket << int32(CurrentArenaSeason);
+ _worldPacket << int32(PreviousArenaSeason);
_worldPacket << int32(ConquestWeeklyProgressCurrencyID);
_worldPacket << int32(PvpSeasonID);
_worldPacket.WriteBit(WeeklyRewardChestsEnabled);
@@ -87,6 +88,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPMatchSta
data << int32(playerData.Class);
data << int32(playerData.CreatureID);
data << int32(playerData.HonorLevel);
+ data << int32(playerData.Role);
for (WorldPackets::Battleground::PVPMatchStatistics::PVPMatchPlayerPVPStat const& pvpStat : playerData.Stats)
data << pvpStat;
@@ -205,6 +207,7 @@ WorldPacket const* WorldPackets::Battleground::BattlefieldStatusQueued::Write()
_worldPacket << Hdr;
_worldPacket << uint32(AverageWaitTime);
_worldPacket << uint32(WaitTime);
+ _worldPacket << int32(Unused920);
_worldPacket.WriteBit(AsGroup);
_worldPacket.WriteBit(EligibleForMatchmaking);
_worldPacket.WriteBit(SuspendedQueue);
@@ -362,6 +365,7 @@ WorldPacket const* WorldPackets::Battleground::PVPMatchComplete::Write()
_worldPacket << uint8(Winner);
_worldPacket << Duration;
_worldPacket.WriteBit(LogData.has_value());
+ _worldPacket.WriteBits(SoloShuffleStatus, 2);
_worldPacket.FlushBits();
if (LogData)
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index 8fb18dd241f..f5af61fe805 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -37,9 +37,10 @@ namespace WorldPackets
WorldPacket const* Write() override;
- int32 MythicPlusSeasonID = 0;
- int32 PreviousSeason = 0;
- int32 CurrentSeason = 0;
+ int32 MythicPlusDisplaySeasonID = 0;
+ int32 MythicPlusMilestoneSeasonID = 0;
+ int32 PreviousArenaSeason = 0;
+ int32 CurrentArenaSeason = 0;
int32 PvpSeasonID = 0;
int32 ConquestWeeklyProgressCurrencyID = 0;
bool WeeklyRewardChestsEnabled = false;
@@ -141,6 +142,7 @@ namespace WorldPackets
int32 Class = 0;
int32 CreatureID = 0;
int32 HonorLevel = 0;
+ int32 Role = 0;
};
std::vector<PVPMatchPlayerStatistics> Statistics;
@@ -221,6 +223,7 @@ namespace WorldPackets
bool SuspendedQueue = false;
bool EligibleForMatchmaking = false;
uint32 WaitTime = 0;
+ int32 Unused920 = 0;
};
class BattlefieldStatusFailed final : public ServerPacket
@@ -493,6 +496,7 @@ namespace WorldPackets
uint8 Winner = 0;
WorldPackets::Duration<Seconds> Duration;
Optional<PVPMatchStatistics> LogData;
+ uint32 SoloShuffleStatus = 0;
};
}
}
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index efb1eb4809e..2cf1eec9701 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -205,6 +205,7 @@ WorldPacket const* WorldPackets::Chat::Emote::Write()
_worldPacket << Guid;
_worldPacket << uint32(EmoteID);
_worldPacket << uint32(SpellVisualKitIDs.size());
+ _worldPacket << int32(SequenceVariation);
if (!SpellVisualKitIDs.empty())
_worldPacket.append(SpellVisualKitIDs.data(), SpellVisualKitIDs.size());
@@ -217,6 +218,7 @@ void WorldPackets::Chat::CTextEmote::Read()
_worldPacket >> EmoteID;
_worldPacket >> SoundIndex;
SpellVisualKitIDs.resize(_worldPacket.read<uint32>());
+ _worldPacket >> SequenceVariation;
for (int32& spellVisualKitId : SpellVisualKitIDs)
_worldPacket >> spellVisualKitId;
}
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index 2b23f2f2562..6c6515a6848 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -189,6 +189,7 @@ namespace WorldPackets
ObjectGuid Guid;
uint32 EmoteID = 0;
std::vector<int32> SpellVisualKitIDs;
+ int32 SequenceVariation = 0;
};
class CTextEmote final : public ClientPacket
@@ -202,6 +203,7 @@ namespace WorldPackets
int32 EmoteID = 0;
int32 SoundIndex = -1;
Array<int32, 2> SpellVisualKitIDs;
+ int32 SequenceVariation = 0;
};
class STextEmote final : public ServerPacket
diff --git a/src/server/game/Server/Packets/ClientConfigPackets.h b/src/server/game/Server/Packets/ClientConfigPackets.h
index c5b6762330d..5d6ffcccec6 100644
--- a/src/server/game/Server/Packets/ClientConfigPackets.h
+++ b/src/server/game/Server/Packets/ClientConfigPackets.h
@@ -29,7 +29,7 @@ namespace WorldPackets
class AccountDataTimes final : public ServerPacket
{
public:
- AccountDataTimes() : ServerPacket(SMSG_ACCOUNT_DATA_TIMES, 4 + 4 * NUM_ACCOUNT_DATA_TYPES) { }
+ AccountDataTimes() : ServerPacket(SMSG_ACCOUNT_DATA_TIMES, 16 + 8 + 8 * NUM_ACCOUNT_DATA_TYPES) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/GameObjectPackets.cpp b/src/server/game/Server/Packets/GameObjectPackets.cpp
index 2baf6ec206d..4e6cc5d7324 100644
--- a/src/server/game/Server/Packets/GameObjectPackets.cpp
+++ b/src/server/game/Server/Packets/GameObjectPackets.cpp
@@ -74,6 +74,7 @@ WorldPacket const* WorldPackets::GameObject::GameObjectUILink::Write()
{
_worldPacket << ObjectGUID;
_worldPacket << int32(UILink);
+ _worldPacket << int32(UIItemInteractionID);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/GameObjectPackets.h b/src/server/game/Server/Packets/GameObjectPackets.h
index 234cf0dee6c..91d795a15ae 100644
--- a/src/server/game/Server/Packets/GameObjectPackets.h
+++ b/src/server/game/Server/Packets/GameObjectPackets.h
@@ -128,6 +128,7 @@ namespace WorldPackets
ObjectGuid ObjectGUID;
int32 UILink = 0;
+ int32 UIItemInteractionID = 0;
};
class GameObjectPlaySpellVisual final : public ServerPacket
diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp
index 86cba613250..b37b438046c 100644
--- a/src/server/game/Server/Packets/GuildPackets.cpp
+++ b/src/server/game/Server/Packets/GuildPackets.cpp
@@ -29,7 +29,6 @@ WorldPackets::Guild::QueryGuildInfoResponse::QueryGuildInfoResponse()
WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write()
{
_worldPacket << GuildGuid;
- _worldPacket << PlayerGuid;
_worldPacket.WriteBit(Info.has_value());
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h
index e195e185904..abba85cf2e5 100644
--- a/src/server/game/Server/Packets/GuildPackets.h
+++ b/src/server/game/Server/Packets/GuildPackets.h
@@ -75,7 +75,6 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid GuildGuid;
- ObjectGuid PlayerGuid;
Optional<GuildInfo> Info;
};
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index b32a182d916..efb9da38cc6 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -640,6 +640,7 @@ WorldPacket const* WorldPackets::Misc::AccountHeirloomUpdate::Write()
void WorldPackets::Misc::MountSpecial::Read()
{
SpellVisualKitIDs.resize(_worldPacket.read<uint32>());
+ _worldPacket >> SequenceVariation;
for (int32& spellVisualKitId : SpellVisualKitIDs)
_worldPacket >> spellVisualKitId;
}
@@ -648,6 +649,7 @@ WorldPacket const* WorldPackets::Misc::SpecialMountAnim::Write()
{
_worldPacket << UnitGUID;
_worldPacket << uint32(SpellVisualKitIDs.size());
+ _worldPacket << int32(SequenceVariation);
if (!SpellVisualKitIDs.empty())
_worldPacket.append(SpellVisualKitIDs.data(), SpellVisualKitIDs.size());
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index fe552a4df20..5bf83f35970 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -833,6 +833,7 @@ namespace WorldPackets
void Read() override;
Array<int32, 2> SpellVisualKitIDs;
+ int32 SequenceVariation = 0;
};
class SpecialMountAnim final : public ServerPacket
@@ -844,6 +845,7 @@ namespace WorldPackets
ObjectGuid UnitGUID;
std::vector<int32> SpellVisualKitIDs;
+ int32 SequenceVariation = 0;
};
class CrossedInebriationThreshold final : public ServerPacket
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 5aac9eaffca..91bc6753d4c 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -28,51 +28,60 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
bool hasFallDirection = movementInfo.HasMovementFlag(MOVEMENTFLAG_FALLING | MOVEMENTFLAG_FALLING_FAR);
bool hasFallData = hasFallDirection || movementInfo.jump.fallTime != 0;
bool hasSpline = false; // todo 6.x send this infos
+ bool hasInertia = movementInfo.inertia.has_value();
data << movementInfo.guid;
- data << movementInfo.time;
+ data << uint32(movementInfo.flags);
+ data << uint32(movementInfo.flags2);
+ data << uint32(movementInfo.flags3);
+ data << uint32(movementInfo.time);
data << movementInfo.pos.PositionXYZOStream();
- data << movementInfo.pitch;
- data << movementInfo.splineElevation;
+ data << float(movementInfo.pitch);
+ data << float(movementInfo.splineElevation);
uint32 removeMovementForcesCount = 0;
data << removeMovementForcesCount;
- uint32 int168 = 0;
- data << int168;
+ uint32 moveIndex = 0;
+ data << moveIndex;
/*for (uint32 i = 0; i < removeMovementForcesCount; ++i)
{
data << ObjectGuid;
}*/
- data.WriteBits(movementInfo.flags, 30);
- data.WriteBits(movementInfo.flags2, 18);
-
data.WriteBit(hasTransportData);
data.WriteBit(hasFallData);
data.WriteBit(hasSpline);
data.WriteBit(false); // HeightChangeFailed
data.WriteBit(false); // RemoteTimeValid
+ data.WriteBit(hasInertia);
data.FlushBits();
if (hasTransportData)
data << movementInfo.transport;
+ if (hasInertia)
+ {
+ data << movementInfo.inertia->guid;
+ data << movementInfo.inertia->force.PositionXYZStream();
+ data << uint32(movementInfo.inertia->lifetime);
+ }
+
if (hasFallData)
{
- data << movementInfo.jump.fallTime;
- data << movementInfo.jump.zspeed;
+ data << uint32(movementInfo.jump.fallTime);
+ data << float(movementInfo.jump.zspeed);
data.WriteBit(hasFallDirection);
data.FlushBits();
if (hasFallDirection)
{
- data << movementInfo.jump.sinAngle;
- data << movementInfo.jump.cosAngle;
- data << movementInfo.jump.xyspeed;
+ data << float(movementInfo.jump.sinAngle);
+ data << float(movementInfo.jump.cosAngle);
+ data << float(movementInfo.jump.xyspeed);
}
}
@@ -84,6 +93,9 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo)
//bool hasSpline = false;
data >> movementInfo.guid;
+ data >> movementInfo.flags;
+ data >> movementInfo.flags2;
+ data >> movementInfo.flags3;
data >> movementInfo.time;
data >> movementInfo.pos.PositionXYZOStream();
data >> movementInfo.pitch;
@@ -101,19 +113,26 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo)
data >> guid;
}
- movementInfo.flags = data.ReadBits(30);
- movementInfo.flags2 = data.ReadBits(18);
-
bool hasTransport = data.ReadBit();
bool hasFall = data.ReadBit();
/*hasSpline = */data.ReadBit(); // todo 6.x read this infos
data.ReadBit(); // HeightChangeFailed
data.ReadBit(); // RemoteTimeValid
+ bool hasInertia = data.ReadBit();
if (hasTransport)
data >> movementInfo.transport;
+ if (hasInertia)
+ {
+ movementInfo.inertia.emplace();
+
+ data >> movementInfo.inertia->guid;
+ data >> movementInfo.inertia->force.PositionXYZStream();
+ data >> movementInfo.inertia->lifetime;
+ }
+
if (hasFall)
{
data >> movementInfo.jump.fallTime;
@@ -347,9 +366,9 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
bool hasFadeObjectTime = data.WriteBit(moveSpline.splineflags.fadeObject && moveSpline.effect_start_time < moveSpline.Duration());
data.WriteBits(moveSpline.getPath().size(), 16);
data.WriteBit(false); // HasSplineFilter
- data.WriteBit(moveSpline.spell_effect_extra.has_value()); // HasSpellEffectExtraData
+ data.WriteBit(moveSpline.spell_effect_extra.has_value()); // HasSpellEffectExtraData
bool hasJumpExtraData = data.WriteBit(moveSpline.splineflags.parabolic && (!moveSpline.spell_effect_extra || moveSpline.effect_start_time));
- data.WriteBit(moveSpline.anim_tier.has_value()); // HasAnimationTierTransition
+ data.WriteBit(moveSpline.anim_tier.has_value()); // HasAnimationTierTransition
data.WriteBit(false); // HasUnknown901
data.FlushBits();
@@ -1000,6 +1019,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound
data.WriteBit(stateChange.CollisionHeight.has_value());
data.WriteBit(stateChange.MovementForce_.has_value());
data.WriteBit(stateChange.MovementForceGUID.has_value());
+ data.WriteBit(stateChange.MovementInertiaGUID.has_value());
+ data.WriteBit(stateChange.MovementInertiaLifetimeMs.has_value());
data.FlushBits();
if (stateChange.MovementForce_)
@@ -1028,6 +1049,12 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound
if (stateChange.MovementForceGUID)
data << *stateChange.MovementForceGUID;
+ if (stateChange.MovementInertiaGUID)
+ data << *stateChange.MovementInertiaGUID;
+
+ if (stateChange.MovementInertiaLifetimeMs)
+ data << uint32(*stateChange.MovementInertiaLifetimeMs);
+
return data;
}
diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h
index 25a7cbd85b0..a44b9bf2871 100644
--- a/src/server/game/Server/Packets/MovementPackets.h
+++ b/src/server/game/Server/Packets/MovementPackets.h
@@ -682,6 +682,8 @@ namespace WorldPackets
Optional<CollisionHeightInfo> CollisionHeight;
Optional<MovementForce> MovementForce_;
Optional<ObjectGuid> MovementForceGUID;
+ Optional<ObjectGuid> MovementInertiaGUID;
+ Optional<uint32> MovementInertiaLifetimeMs;
};
MoveSetCompoundState() : ServerPacket(SMSG_MOVE_SET_COMPOUND_STATE, 4 + 1) { }
diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp
index fd20e6fd25c..296e62bd3f0 100644
--- a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp
@@ -36,6 +36,7 @@ ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreMapSummary const& dungeonSc
ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreSummary const& dungeonScoreSummary)
{
data << float(dungeonScoreSummary.CurrentSeasonScore);
+ data << float(dungeonScoreSummary.LifetimeBestSeasonScore);
data << uint32(dungeonScoreSummary.Runs.size());
for (DungeonScoreMapSummary const& dungeonScoreMapSummary : dungeonScoreSummary.Runs)
data << dungeonScoreMapSummary;
@@ -51,7 +52,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MythicPlusMember const& mythicPlusMembe
data << mythicPlusMember.GuildGUID;
data << uint32(mythicPlusMember.NativeRealmAddress);
data << uint32(mythicPlusMember.VirtualRealmAddress);
- data << int16(mythicPlusMember.ChrSpecializationID);
+ data << int32(mythicPlusMember.ChrSpecializationID);
data << int16(mythicPlusMember.RaceID);
data << int32(mythicPlusMember.ItemLevel);
data << int32(mythicPlusMember.CovenantID);
@@ -104,7 +105,12 @@ ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreSeasonData const& dungeonSc
{
data << int32(dungeonScoreSeasonData.Season);
data << uint32(dungeonScoreSeasonData.Maps.size());
+ data << uint32(0);
data << float(dungeonScoreSeasonData.SeasonScore);
+ data << float(0);
+ for (DungeonScoreMapData const& map : dungeonScoreSeasonData.Maps)
+ data << map;
+
for (DungeonScoreMapData const& map : dungeonScoreSeasonData.Maps)
data << map;
diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.h b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
index c78c07fa3ad..2e938f8b5c7 100644
--- a/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
+++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
@@ -28,7 +28,7 @@ namespace WorldPackets
struct DungeonScoreMapSummary
{
int32 ChallengeModeID = 0;
- float MapScore = 0;
+ float MapScore = 0.0f;
int32 BestRunLevel = 0;
int32 BestRunDurationMS = 0;
bool FinishedSuccess = false;
@@ -36,7 +36,8 @@ namespace WorldPackets
struct DungeonScoreSummary
{
- float CurrentSeasonScore = 0;
+ float CurrentSeasonScore = 0.0f;
+ float LifetimeBestSeasonScore = 0.0f;
std::vector<DungeonScoreMapSummary> Runs;
};
@@ -48,7 +49,7 @@ namespace WorldPackets
ObjectGuid GuildGUID;
uint32 NativeRealmAddress = 0;
uint32 VirtualRealmAddress = 0;
- int16 ChrSpecializationID = 0;
+ int32 ChrSpecializationID = 0;
int16 RaceID = 0;
int32 ItemLevel = 0;
int32 CovenantID = 0;
@@ -63,9 +64,9 @@ namespace WorldPackets
int32 DurationMs = 0;
Timestamp<> StartDate;
Timestamp<> CompletionDate;
- int32 Season;
+ int32 Season = 0;
std::vector<MythicPlusMember> Members;
- float RunScore;
+ float RunScore = 0.0f;
std::array<int32, 4> KeystoneAffixIDs;
};
@@ -73,14 +74,14 @@ namespace WorldPackets
{
int32 KeystoneAffixID = 0;
MythicPlusRun Run;
- float Score = 0;
+ float Score = 0.0f;
};
struct DungeonScoreMapData
{
int32 MapChallengeModeID = 0;
std::vector<DungeonScoreBestRunForAffix> BestRuns;
- float OverAllScore = 0;
+ float OverAllScore = 0.0f;
};
@@ -88,7 +89,7 @@ namespace WorldPackets
{
int32 Season = 0;
std::vector<DungeonScoreMapData> Maps;
- float SeasonScore = 0;
+ float SeasonScore = 0.0f;
};
struct DungeonScoreData
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 1ddf5378c4e..a15163200ed 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -77,6 +77,7 @@ WorldPacket const* GossipMessage::Write()
_worldPacket << uint8(options.OptionNPC);
_worldPacket << int8(options.OptionFlags);
_worldPacket << int32(options.OptionCost);
+ _worldPacket << uint32(options.OptionLanguage);
_worldPacket.WriteBits(options.Text.size(), 12);
_worldPacket.WriteBits(options.Confirm.size(), 12);
_worldPacket.WriteBits(AsUnderlyingType(options.Status), 2);
@@ -170,6 +171,14 @@ void GossipSelectOption::Read()
PromotionCode = _worldPacket.ReadString(length);
}
+WorldPacket const* GossipComplete::Write()
+{
+ _worldPacket.WriteBit(SuppressSound);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
WorldPacket const* PlayerTabardVendorActivate::Write()
{
_worldPacket << Vendor;
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index 320594ffd2f..f6740feb703 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -67,6 +67,7 @@ namespace WorldPackets
GossipOptionIcon OptionNPC = GossipOptionIcon(0);
uint8 OptionFlags = 0;
int32 OptionCost = 0;
+ uint32 OptionLanguage = 0;
GossipOptionStatus Status = GossipOptionStatus(0);
std::string Text;
std::string Confirm;
@@ -119,7 +120,9 @@ namespace WorldPackets
public:
GossipComplete() : ServerPacket(SMSG_GOSSIP_COMPLETE, 0) { }
- WorldPacket const* Write() override { return &_worldPacket; }
+ WorldPacket const* Write() override;
+
+ bool SuppressSound = false;
};
struct VendorItem
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 8cb66be37f3..360fa5d1bf6 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -102,7 +102,9 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write()
void WorldPackets::Query::QueryPlayerName::Read()
{
- _worldPacket >> Player;
+ Players.resize(_worldPacket.read<uint32>());
+ for (ObjectGuid& player : Players)
+ _worldPacket >> player;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupHint const& lookupHint)
@@ -188,13 +190,40 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa
return data;
}
-WorldPacket const* WorldPackets::Query::QueryPlayerNameResponse::Write()
+ByteBuffer operator<<(ByteBuffer& data, WorldPackets::Query::NameCacheUnused920 const& thing)
{
- _worldPacket << uint8(Result);
- _worldPacket << Player;
+ data << uint32(thing.Unused1);
+ data << thing.Unused2;
+ data.WriteBits(thing.Unused3.length(), 7);
+ data.FlushBits();
+
+ data.WriteString(thing.Unused3);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::NameCacheLookupResult const& result)
+{
+ data << uint8(result.Result);
+ data << result.Player;
+ data.WriteBit(result.Data.has_value());
+ data.WriteBit(result.Unused920.has_value());
+ data.FlushBits();
+
+ if (result.Data)
+ data << *result.Data;
- if (Result == RESPONSE_SUCCESS)
- _worldPacket << Data;
+ if (result.Unused920)
+ data << *result.Unused920;
+
+ return data;
+}
+
+WorldPacket const* WorldPackets::Query::QueryPlayerNameResponse::Write()
+{
+ _worldPacket << uint32(Players.size());
+ for (NameCacheLookupResult const& lookupResult : Players)
+ _worldPacket << lookupResult;
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index 90c467fb372..b429c9f1052 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -111,7 +111,7 @@ namespace WorldPackets
void Read() override;
- ObjectGuid Player;
+ Array<ObjectGuid, 500> Players;
};
struct PlayerGuidLookupData
@@ -133,6 +133,21 @@ namespace WorldPackets
DeclinedName DeclinedNames;
};
+ struct NameCacheUnused920
+ {
+ uint32 Unused1 = 0;
+ ObjectGuid Unused2;
+ std::string_view Unused3;
+ };
+
+ struct NameCacheLookupResult
+ {
+ ObjectGuid Player;
+ uint8 Result = 0; // 0 - full packet, != 0 - only guid
+ Optional<PlayerGuidLookupData> Data;
+ Optional<NameCacheUnused920> Unused920;
+ };
+
class QueryPlayerNameResponse final : public ServerPacket
{
public:
@@ -140,9 +155,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- ObjectGuid Player;
- uint8 Result = 0; // 0 - full packet, != 0 - only guid
- PlayerGuidLookupData Data;
+ std::vector<NameCacheLookupResult> Players;
};
class QueryPageText final : public ClientPacket
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 4fa60c84f52..955c792faff 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -683,11 +683,18 @@ ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseMawPower const& pla
{
data << int32(playerChoiceResponseMawPower.Unused901_1);
data << int32(playerChoiceResponseMawPower.TypeArtFileID);
- data << int32(playerChoiceResponseMawPower.Rarity);
- data << uint32(playerChoiceResponseMawPower.RarityColor);
data << int32(playerChoiceResponseMawPower.Unused901_2);
data << int32(playerChoiceResponseMawPower.SpellID);
data << int32(playerChoiceResponseMawPower.MaxStacks);
+ data.WriteBit(playerChoiceResponseMawPower.Rarity.has_value());
+ data.WriteBit(playerChoiceResponseMawPower.RarityColor.has_value());
+ data.FlushBits();
+
+ if (playerChoiceResponseMawPower.Rarity)
+ data << int32(*playerChoiceResponseMawPower.Rarity);
+
+ if (playerChoiceResponseMawPower.RarityColor)
+ data << uint32(*playerChoiceResponseMawPower.RarityColor);
return data;
}
@@ -741,8 +748,11 @@ WorldPacket const* DisplayPlayerChoice::Write()
_worldPacket << SenderGUID;
_worldPacket << int32(UiTextureKitID);
_worldPacket << uint32(SoundKitID);
+ _worldPacket << uint32(CloseUISoundKitID);
_worldPacket << uint8(NumRerolls);
+ _worldPacket << Duration;
_worldPacket.WriteBits(Question.length(), 8);
+ _worldPacket.WriteBits(PendingChoiceText.length(), 8);
_worldPacket.WriteBit(CloseChoiceFrame);
_worldPacket.WriteBit(HideWarboardHeader);
_worldPacket.WriteBit(KeepOpenAfterChoice);
@@ -752,6 +762,7 @@ WorldPacket const* DisplayPlayerChoice::Write()
_worldPacket << response;
_worldPacket.WriteString(Question);
+ _worldPacket.WriteString(PendingChoiceText);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 22d5d79acc7..69580d036b8 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -678,8 +678,8 @@ namespace WorldPackets
{
int32 Unused901_1 = 0;
int32 TypeArtFileID = 0;
- int32 Rarity = 0;
- uint32 RarityColor = 0;
+ Optional<int32> Rarity;
+ Optional<uint32> RarityColor;
int32 Unused901_2 = 0;
int32 SpellID = 0;
int32 MaxStacks = 0;
@@ -696,12 +696,12 @@ namespace WorldPackets
uint32 SoundKitID = 0;
uint8 GroupID = 0;
int32 UiTextureKitID = 0;
- std::string Answer;
- std::string Header;
- std::string SubHeader;
- std::string ButtonTooltip;
- std::string Description;
- std::string Confirmation;
+ std::string_view Answer;
+ std::string_view Header;
+ std::string_view SubHeader;
+ std::string_view ButtonTooltip;
+ std::string_view Description;
+ std::string_view Confirmation;
Optional<PlayerChoiceResponseReward> Reward;
Optional<uint32> RewardQuestID;
Optional<PlayerChoiceResponseMawPower> MawPower;
@@ -718,8 +718,11 @@ namespace WorldPackets
int32 ChoiceID = 0;
int32 UiTextureKitID = 0;
uint32 SoundKitID = 0;
+ uint32 CloseUISoundKitID = 0;
uint8 NumRerolls = 0;
- std::string Question;
+ WorldPackets::Duration<Seconds> Duration;
+ std::string_view Question;
+ std::string_view PendingChoiceText;
std::vector<PlayerChoiceResponse> Responses;
bool CloseChoiceFrame = false;
bool HideWarboardHeader = false;
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index fbb59fea3a8..00df82c311f 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -43,6 +43,13 @@ ByteBuffer& operator<<(ByteBuffer& data, EuropaTicketConfig const& europaTicketS
return data;
}
+WorldPacket operator<<(WorldPacket& data, GameRuleValuePair const& gameRuleValue)
+{
+ data << int32(gameRuleValue.Rule);
+ data << int32(gameRuleValue.Value);
+ return data;
+}
+
WorldPacket const* FeatureSystemStatus::Write()
{
_worldPacket << uint8(ComplaintStatus);
@@ -70,6 +77,14 @@ WorldPacket const* FeatureSystemStatus::Write()
_worldPacket << uint32(ClubsPresenceUpdateTimer);
_worldPacket << uint32(HiddenUIClubsPresenceUpdateTimer);
+ _worldPacket << int32(GameRuleUnknown1);
+ _worldPacket << uint32(GameRuleValues.size());
+
+ _worldPacket << int16(MaxPlayerNameQueriesPerPacket);
+
+ for (GameRuleValuePair const& gameRuleValue : GameRuleValues)
+ _worldPacket << gameRuleValue;
+
_worldPacket.WriteBit(VoiceEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus.has_value());
_worldPacket.WriteBit(ScrollOfResurrectionEnabled);
@@ -189,10 +204,16 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write()
_worldPacket << int32(ActiveClassTrialBoostType);
_worldPacket << int32(MinimumExpansionLevel);
_worldPacket << int32(MaximumExpansionLevel);
+ _worldPacket << int32(GameRuleUnknown1);
+ _worldPacket << uint32(GameRuleValues.size());
+ _worldPacket << int16(MaxPlayerNameQueriesPerPacket);
if (!LiveRegionCharacterCopySourceRegions.empty())
_worldPacket.append(LiveRegionCharacterCopySourceRegions.data(), LiveRegionCharacterCopySourceRegions.size());
+ for (GameRuleValuePair const& gameRuleValue : GameRuleValues)
+ _worldPacket << gameRuleValue;
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index 6fe675f18eb..adbd9886088 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -44,6 +44,12 @@ namespace WorldPackets
SavedThrottleObjectState ThrottleState;
};
+ struct GameRuleValuePair
+ {
+ int32 Rule = 0;
+ int32 Value = 0;
+ };
+
class FeatureSystemStatus final : public ServerPacket
{
public:
@@ -122,6 +128,8 @@ namespace WorldPackets
uint32 ClubsPresenceUpdateTimer = 0;
uint32 HiddenUIClubsPresenceUpdateTimer = 0; ///< Timer for updating club presence when communities ui frame is hidden
uint32 KioskSessionMinutes = 0;
+ int32 GameRuleUnknown1 = 0;
+ int16 MaxPlayerNameQueriesPerPacket = 50;
bool ItemRestorationButtonEnabled = false;
bool CharUndeleteEnabled = false; ///< Implemented
bool BpayStoreDisabledByParentalControls = false;
@@ -154,6 +162,7 @@ namespace WorldPackets
SocialQueueConfig QuickJoinConfig;
SquelchInfo Squelch;
RafSystemFeatureInfo RAFSystem;
+ std::vector<GameRuleValuePair> GameRuleValues;
};
class FeatureSystemStatusGlueScreen final : public ServerPacket
@@ -191,6 +200,9 @@ namespace WorldPackets
int32 MinimumExpansionLevel = 0;
int32 MaximumExpansionLevel = 0;
uint32 KioskSessionMinutes = 0;
+ int32 GameRuleUnknown1 = 0;
+ std::vector<GameRuleValuePair> GameRuleValues;
+ int16 MaxPlayerNameQueriesPerPacket = 50;
};
class MOTD final : public ServerPacket
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 8b72d1e3bd0..928aa56fd54 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -334,6 +334,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLUB_PRESENCE_SUBSCRIBE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COLLECTION_ITEM_SET_FAVORITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCollectionItemSetFavorite);
+ DEFINE_HANDLER(CMSG_COMMENTATOR_SPECTATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COMMENTATOR_ENABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COMMENTATOR_ENTER_INSTANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COMMENTATOR_EXIT_INSTANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -555,6 +556,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOUNT_CLEAR_FANFARE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOUNT_SET_FAVORITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSetFavorite);
DEFINE_HANDLER(CMSG_MOUNT_SPECIAL_ANIM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode);
+ DEFINE_HANDLER(CMSG_MOVE_APPLY_INERTIA_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveApplyMovementForceAck);
DEFINE_HANDLER(CMSG_MOVE_CHANGE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_CHANGE_VEHICLE_SEATS, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveChangeVehicleSeats);
@@ -583,9 +585,12 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOVE_GUILD_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveGuildBankItem);
DEFINE_HANDLER(CMSG_MOVE_HEARTBEAT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_HOVER_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
+ DEFINE_HANDLER(CMSG_MOVE_INERTIA_DISABLE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MOVE_INERTIA_ENABLE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_JUMP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_KNOCK_BACK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveKnockBackAck);
+ DEFINE_HANDLER(CMSG_MOVE_REMOVE_INERTIA_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_REMOVE_MOVEMENT_FORCES, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveRemoveMovementForceAck);
DEFINE_HANDLER(CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL);
@@ -593,6 +598,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSetCollisionHeightAck);
DEFINE_HANDLER(CMSG_MOVE_SET_FACING, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
+ DEFINE_HANDLER(CMSG_MOVE_SET_FACING_HEARTBEAT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_SET_FLY, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetModMovementForceMagnitudeAck);
@@ -899,6 +905,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_USE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUseEquipmentSet);
DEFINE_HANDLER(CMSG_USE_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUseItemOpcode);
DEFINE_HANDLER(CMSG_USE_TOY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUseToy);
+ DEFINE_HANDLER(CMSG_VAS_ASSIGN_DISTRIBUTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VAS_CHECK_TRANSFER_OK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VAS_GET_QUEUE_MINUTES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VAS_GET_SERVICE_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -1007,6 +1014,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_PORT_DENIED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_ACTIVE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_NONE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_QUEUED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1143,6 +1151,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLAIM_RAF_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_ALL_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_ARENA_UNIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_BOSS_EMOTES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWNS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1209,7 +1218,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTROY_ARENA_UNIT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DIFFERENT_INSTANCE_FROM_PARTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISCONNECT_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISENCHANT_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPEL_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1467,6 +1475,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_INTERACTION_CHARGE_INFO_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_INTERACTION_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1544,16 +1553,20 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOTD, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOUNT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVEMENT_ENFORCEMENT_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_APPLY_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_APPLY_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_COLLISION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_DOUBLE_JUMP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_COLLISION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_DOUBLE_JUMP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_KNOCK_BACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_REMOVE_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ROOT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ACTIVE_MOVER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1613,6 +1626,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_HOVERING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_APPLY_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_COLLISION_HEIGHT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1620,6 +1634,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_KNOCK_BACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE,STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_INERTIA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1661,6 +1676,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_PARTIAL_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PASSED_TIME_EVENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2007,6 +2023,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_REMOVE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_USE_EQUIPMENT_SET_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_VAS_ASSIGN_DISTRIBUTION_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VAS_GET_SERVICE_STATUS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 61cb9c1460b..9ea2c9fa15e 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -44,31 +44,31 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
- CMSG_ABANDON_NPE_RESPONSE = 0x33F0,
+ CMSG_ABANDON_NPE_RESPONSE = 0x33F2,
CMSG_ACCEPT_GUILD_INVITE = 0x35FC,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3732,
- CMSG_ACTIVATE_SOULBIND = 0x33DF,
+ CMSG_ACTIVATE_SOULBIND = 0x33E1,
CMSG_ACTIVATE_TAXI = 0x34B1,
CMSG_ADDON_LIST = 0x35D8,
- CMSG_ADD_ACCOUNT_COSMETIC = 0x32AA,
+ CMSG_ADD_ACCOUNT_COSMETIC = 0x32A9,
CMSG_ADD_BATTLENET_FRIEND = 0x365A,
CMSG_ADD_FRIEND = 0x36CD,
CMSG_ADD_IGNORE = 0x36D1,
- CMSG_ADD_TOY = 0x32A9,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3206,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E2,
- CMSG_ADVENTURE_MAP_START_QUEST = 0x335F,
+ CMSG_ADD_TOY = 0x32A8,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3205,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E4,
+ CMSG_ADVENTURE_MAP_START_QUEST = 0x3360,
CMSG_ALTER_APPEARANCE = 0x3503,
CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B6,
CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B7,
- CMSG_AREA_TRIGGER = 0x31D9,
+ CMSG_AREA_TRIGGER = 0x31D8,
CMSG_ARTIFACT_ADD_POWER = 0x31AB,
CMSG_ARTIFACT_SET_APPEARANCE = 0x31AD,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3212,
- CMSG_ATTACK_STOP = 0x3261,
- CMSG_ATTACK_SWING = 0x3260,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3211,
+ CMSG_ATTACK_STOP = 0x3260,
+ CMSG_ATTACK_SWING = 0x325F,
CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E3,
CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E4,
CMSG_AUCTION_BROWSE_QUERY = 0x34D6,
@@ -98,15 +98,15 @@ enum OpcodeClient : uint16
CMSG_AUTO_GUILD_BANK_ITEM = 0x34BD,
CMSG_AUTO_STORE_BAG_ITEM = 0x399B,
CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C6,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3387,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x336A,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3389,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3388,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3388,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x336B,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x338A,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3389,
CMSG_BANKER_ACTIVATE = 0x34B9,
CMSG_BATTLEFIELD_LEAVE = 0x3173,
CMSG_BATTLEFIELD_LIST = 0x317F,
CMSG_BATTLEFIELD_PORT = 0x3537,
- CMSG_BATTLEMASTER_HELLO = 0x32C4,
+ CMSG_BATTLEMASTER_HELLO = 0x32C5,
CMSG_BATTLEMASTER_JOIN = 0x3530,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x3531,
CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3535,
@@ -132,21 +132,21 @@ enum OpcodeClient : uint16
CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362D,
CMSG_BATTLE_PET_SET_FLAGS = 0x3630,
CMSG_BATTLE_PET_SUMMON = 0x3629,
- CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E3,
- CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E2,
+ CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E2,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E1,
CMSG_BEGIN_TRADE = 0x3157,
CMSG_BINDER_ACTIVATE = 0x34B8,
CMSG_BLACK_MARKET_BID_ON_ITEM = 0x353F,
CMSG_BLACK_MARKET_OPEN = 0x353D,
CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353E,
- CMSG_BONUS_ROLL = 0x338A,
+ CMSG_BONUS_ROLL = 0x338B,
CMSG_BUG_REPORT = 0x3685,
CMSG_BUSY_TRADE = 0x3158,
CMSG_BUY_BACK_ITEM = 0x34AA,
CMSG_BUY_BANK_SLOT = 0x34BA,
CMSG_BUY_ITEM = 0x34A9,
CMSG_BUY_REAGENT_BANK = 0x34BB,
- CMSG_CAGE_BATTLE_PET = 0x31F5,
+ CMSG_CAGE_BATTLE_PET = 0x31F4,
CMSG_CALENDAR_ADD_EVENT = 0x367D,
CMSG_CALENDAR_COMMUNITY_INVITE = 0x3671,
CMSG_CALENDAR_COMPLAIN = 0x3679,
@@ -164,22 +164,22 @@ enum OpcodeClient : uint16
CMSG_CALENDAR_UPDATE_EVENT = 0x367E,
CMSG_CANCEL_AURA = 0x31AF,
CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5,
- CMSG_CANCEL_CAST = 0x32B0,
- CMSG_CANCEL_CHANNELLING = 0x3279,
- CMSG_CANCEL_GROWTH_AURA = 0x327E,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321A,
+ CMSG_CANCEL_CAST = 0x32AF,
+ CMSG_CANCEL_CHANNELLING = 0x3278,
+ CMSG_CANCEL_GROWTH_AURA = 0x327D,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3219,
CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AE,
- CMSG_CANCEL_MOUNT_AURA = 0x3291,
+ CMSG_CANCEL_MOUNT_AURA = 0x3290,
CMSG_CANCEL_QUEUED_SPELL = 0x3180,
CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500,
CMSG_CANCEL_TRADE = 0x315C,
CMSG_CAN_DUEL = 0x3662,
CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3704,
- CMSG_CAST_SPELL = 0x32AD,
+ CMSG_CAST_SPELL = 0x32AC,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x3344,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3345,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3325,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x3345,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3346,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3326,
CMSG_CHANGE_REALM_TICKET = 0x36F7,
CMSG_CHANGE_SUB_GROUP = 0x364C,
CMSG_CHARACTER_CHECK_UPGRADE = 0x36C3,
@@ -226,17 +226,17 @@ enum OpcodeClient : uint16
CMSG_CHAT_REPORT_IGNORED = 0x37CB,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645,
- CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3252,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3251,
CMSG_CHOICE_RESPONSE = 0x32B4,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33DE,
- CMSG_CLAIM_WEEKLY_REWARD = 0x33BB,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33E0,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x33BC,
CMSG_CLEAR_NEW_APPEARANCE = 0x312F,
CMSG_CLEAR_RAID_MARKER = 0x31A7,
CMSG_CLEAR_TRADE_ITEM = 0x315E,
CMSG_CLIENT_PORT_GRAVEYARD = 0x3539,
CMSG_CLOSE_INTERACTION = 0x3499,
CMSG_CLOSE_QUEST_CHOICE = 0x32B5,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E6,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E8,
CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371B,
CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3719,
CMSG_CLUB_FINDER_POST = 0x3716,
@@ -254,6 +254,7 @@ enum OpcodeClient : uint16
CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F1,
CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3,
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2,
+ CMSG_COMMENTATOR_SPECTATE = 0x3737,
CMSG_COMMENTATOR_START_WARGAME = 0x35EF,
CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E1,
CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EB,
@@ -262,29 +263,29 @@ enum OpcodeClient : uint16
CMSG_COMPLETE_CINEMATIC = 0x3557,
CMSG_COMPLETE_MOVIE = 0x34EB,
CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AC,
- CMSG_CONFIRM_RESPEC_WIPE = 0x3214,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3213,
CMSG_CONNECT_TO_FAILED = 0x35D4,
CMSG_CONSUMABLE_TOKEN_BUY = 0x36E6,
CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E7,
CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E5,
CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E9,
CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EA,
- CMSG_CONTRIBUTION_CONTRIBUTE = 0x356A,
- CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356B,
+ CMSG_CONTRIBUTION_CONTRIBUTE = 0x356B,
+ CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356C,
CMSG_CONVERSATION_CINEMATIC_READY = 0x3559,
CMSG_CONVERSATION_LINE_STARTED = 0x3558,
CMSG_CONVERT_RAID = 0x364E,
- CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x357E,
+ CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x357F,
CMSG_CREATE_CHARACTER = 0x3644,
- CMSG_CREATE_SHIPMENT = 0x3311,
+ CMSG_CREATE_SHIPMENT = 0x3312,
CMSG_DB_QUERY_BULK = 0x35E4,
CMSG_DECLINE_GUILD_INVITES = 0x352D,
CMSG_DECLINE_PETITION = 0x3546,
CMSG_DELETE_EQUIPMENT_SET = 0x3519,
CMSG_DEL_FRIEND = 0x36CE,
CMSG_DEL_IGNORE = 0x36D2,
- CMSG_DEPOSIT_REAGENT_BANK = 0x334D,
- CMSG_DESTROY_ITEM = 0x32A3,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x334E,
+ CMSG_DESTROY_ITEM = 0x32A2,
CMSG_DF_BOOT_PLAYER_VOTE = 0x3616,
CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3608,
CMSG_DF_GET_JOIN_STATUS = 0x3614,
@@ -295,13 +296,13 @@ enum OpcodeClient : uint16
CMSG_DF_READY_CHECK_RESPONSE = 0x3619,
CMSG_DF_SET_ROLES = 0x3615,
CMSG_DF_TELEPORT = 0x3617,
- CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3E,
+ CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A42,
CMSG_DISMISS_CRITTER = 0x3507,
CMSG_DO_COUNTDOWN = 0x3715,
- CMSG_DO_MASTER_LOOT_ROLL = 0x3219,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x3218,
CMSG_DO_READY_CHECK = 0x3634,
CMSG_DUEL_RESPONSE = 0x34F0,
- CMSG_EJECT_PASSENGER = 0x3247,
+ CMSG_EJECT_PASSENGER = 0x3246,
CMSG_EMOTE = 0x3553,
CMSG_ENABLE_NAGLE = 0x376B,
CMSG_ENABLE_TAXI_NODE = 0x34AF,
@@ -314,51 +315,51 @@ enum OpcodeClient : uint16
CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B2,
CMSG_GAME_OBJ_REPORT_USE = 0x34FD,
CMSG_GAME_OBJ_USE = 0x34FC,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x330C,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32F2,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32DF,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3340,
- CMSG_GARRISON_COMPLETE_MISSION = 0x3332,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x330D,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x32F5,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3304,
- CMSG_GARRISON_GET_MAP_DATA = 0x330B,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x3363,
- CMSG_GARRISON_LEARN_TALENT = 0x3300,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3334,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x32DB,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F7,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x3329,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32F3,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x32F4,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32DA,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x330F,
- CMSG_GARRISON_RESEARCH_TALENT = 0x32F8,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32DC,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F0,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E8,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F6,
- CMSG_GARRISON_SOCKET_TALENT = 0x33F3,
- CMSG_GARRISON_START_MISSION = 0x3331,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x32E0,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x330D,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32F3,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32E0,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3341,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x3333,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x330E,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x32F6,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3305,
+ CMSG_GARRISON_GET_MAP_DATA = 0x330C,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x3364,
+ CMSG_GARRISON_LEARN_TALENT = 0x3301,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3335,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x32DC,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F8,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x332A,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32F4,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x32F5,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32DB,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3310,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x32F9,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32DD,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F1,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E9,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F7,
+ CMSG_GARRISON_SOCKET_TALENT = 0x33F5,
+ CMSG_GARRISON_START_MISSION = 0x3332,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x32E1,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B3,
CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3731,
- CMSG_GET_GARRISON_INFO = 0x32D5,
+ CMSG_GET_GARRISON_INFO = 0x32D6,
CMSG_GET_ITEM_PURCHASE_DATA = 0x3541,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3310,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x32A7,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3311,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x32A6,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
CMSG_GET_RAF_ACCOUNT_INFO = 0x371F,
CMSG_GET_REMAINING_GAME_TIME = 0x36E8,
- CMSG_GET_TROPHY_LIST = 0x3322,
+ CMSG_GET_TROPHY_LIST = 0x3323,
CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DC,
CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36ED,
CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EE,
CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3690,
CMSG_GM_TICKET_GET_CASE_STATUS = 0x368F,
CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368E,
- CMSG_GOSSIP_REFRESH_OPTIONS = 0x357D,
+ CMSG_GOSSIP_REFRESH_OPTIONS = 0x357E,
CMSG_GOSSIP_SELECT_OPTION = 0x349A,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308E,
CMSG_GUILD_ADD_RANK = 0x3065,
@@ -411,56 +412,56 @@ enum OpcodeClient : uint16
CMSG_INITIATE_TRADE = 0x3156,
CMSG_INSPECT = 0x353B,
CMSG_INSTANCE_LOCK_RESPONSE = 0x351A,
- CMSG_ISLAND_QUEUE = 0x33B7,
+ CMSG_ISLAND_QUEUE = 0x33B8,
CMSG_ITEM_PURCHASE_REFUND = 0x3542,
- CMSG_ITEM_TEXT_QUERY = 0x3341,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x31E0,
+ CMSG_ITEM_TEXT_QUERY = 0x3342,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DF,
CMSG_JOIN_RATED_BATTLEGROUND = 0x3179,
CMSG_KEEP_ALIVE = 0x367F,
- CMSG_KEYBOUND_OVERRIDE = 0x322C,
- CMSG_LATENCY_REPORT = 0x3772,
- CMSG_LEARN_PVP_TALENTS = 0x3569,
- CMSG_LEARN_TALENTS = 0x3567,
+ CMSG_KEYBOUND_OVERRIDE = 0x322B,
+ CMSG_LATENCY_REPORT = 0x3771,
+ CMSG_LEARN_PVP_TALENTS = 0x356A,
+ CMSG_LEARN_TALENTS = 0x3568,
CMSG_LEAVE_GROUP = 0x3649,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E1,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E0,
CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360D,
CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360E,
CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360F,
CMSG_LFG_LIST_GET_STATUS = 0x360B,
CMSG_LFG_LIST_INVITE_APPLICANT = 0x3610,
CMSG_LFG_LIST_INVITE_RESPONSE = 0x3611,
- CMSG_LFG_LIST_JOIN = 0x3385,
+ CMSG_LFG_LIST_JOIN = 0x3386,
CMSG_LFG_LIST_LEAVE = 0x360A,
CMSG_LFG_LIST_SEARCH = 0x360C,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3386,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x3387,
CMSG_LIST_INVENTORY = 0x34A7,
CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B6,
CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B5,
CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B4,
CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B7,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
- CMSG_LOAD_SELECTED_TROPHY = 0x3323,
+ CMSG_LOAD_SELECTED_TROPHY = 0x3324,
CMSG_LOGOUT_CANCEL = 0x34E6,
CMSG_LOGOUT_INSTANT = 0x34E7,
CMSG_LOGOUT_REQUEST = 0x34E4,
CMSG_LOG_DISCONNECT = 0x3769,
CMSG_LOG_STREAMING_ERROR = 0x376D,
- CMSG_LOOT_ITEM = 0x3217,
- CMSG_LOOT_MONEY = 0x3216,
- CMSG_LOOT_RELEASE = 0x321B,
- CMSG_LOOT_ROLL = 0x321C,
- CMSG_LOOT_UNIT = 0x3215,
+ CMSG_LOOT_ITEM = 0x3216,
+ CMSG_LOOT_MONEY = 0x3215,
+ CMSG_LOOT_RELEASE = 0x321A,
+ CMSG_LOOT_ROLL = 0x321B,
+ CMSG_LOOT_UNIT = 0x3214,
CMSG_LOW_LEVEL_RAID1 = 0x369F,
CMSG_LOW_LEVEL_RAID2 = 0x3521,
CMSG_MAIL_CREATE_TEXT_ITEM = 0x354D,
- CMSG_MAIL_DELETE = 0x322E,
+ CMSG_MAIL_DELETE = 0x322D,
CMSG_MAIL_GET_LIST = 0x3548,
CMSG_MAIL_MARK_AS_READ = 0x354C,
CMSG_MAIL_RETURN_TO_SENDER = 0x3655,
CMSG_MAIL_TAKE_ITEM = 0x354A,
CMSG_MAIL_TAKE_MONEY = 0x3549,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3230,
- CMSG_MASTER_LOOT_ITEM = 0x3218,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322F,
+ CMSG_MASTER_LOOT_ITEM = 0x3217,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C7,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C4,
CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C2,
@@ -468,110 +469,115 @@ enum OpcodeClient : uint16
CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318B,
CMSG_MOUNT_CLEAR_FANFARE = 0x312D,
CMSG_MOUNT_SET_FAVORITE = 0x3632,
- CMSG_MOUNT_SPECIAL_ANIM = 0x3292,
- CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A14,
- CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2E,
- CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A33,
- CMSG_MOVE_COLLISION_DISABLE_ACK = 0x3A36,
- CMSG_MOVE_COLLISION_ENABLE_ACK = 0x3A37,
- CMSG_MOVE_DISMISS_VEHICLE = 0x3A32,
+ CMSG_MOUNT_SPECIAL_ANIM = 0x3291,
+ CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4F,
+ CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A16,
+ CMSG_MOVE_CHANGE_TRANSPORT = 0x3A30,
+ CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A35,
+ CMSG_MOVE_COLLISION_DISABLE_ACK = 0x3A3A,
+ CMSG_MOVE_COLLISION_ENABLE_ACK = 0x3A3B,
+ CMSG_MOVE_DISMISS_VEHICLE = 0x3A34,
CMSG_MOVE_DOUBLE_JUMP = 0x39EB,
- CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1D,
- CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A23,
- CMSG_MOVE_FALL_LAND = 0x39FA,
- CMSG_MOVE_FALL_RESET = 0x3A18,
- CMSG_MOVE_FEATHER_FALL_ACK = 0x3A1B,
- CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2D,
- CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2C,
- CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A31,
- CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0D,
- CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A0B,
- CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A0A,
- CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A21,
- CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0C,
- CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A22,
- CMSG_MOVE_FORCE_UNROOT_ACK = 0x3A0E,
- CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A20,
- CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A34,
- CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A35,
+ CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1F,
+ CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A25,
+ CMSG_MOVE_FALL_LAND = 0x39FB,
+ CMSG_MOVE_FALL_RESET = 0x3A1A,
+ CMSG_MOVE_FEATHER_FALL_ACK = 0x3A1D,
+ CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2F,
+ CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2E,
+ CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A33,
+ CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0F,
+ CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A0D,
+ CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A0C,
+ CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A23,
+ CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0E,
+ CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A24,
+ CMSG_MOVE_FORCE_UNROOT_ACK = 0x3A10,
+ CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A22,
+ CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A36,
+ CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A37,
CMSG_MOVE_GUILD_BANK_ITEM = 0x34C1,
- CMSG_MOVE_HEARTBEAT = 0x3A0F,
- CMSG_MOVE_HOVER_ACK = 0x3A12,
- CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3A43,
+ CMSG_MOVE_HEARTBEAT = 0x3A11,
+ CMSG_MOVE_HOVER_ACK = 0x3A14,
+ CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3A38,
+ CMSG_MOVE_INERTIA_ENABLE_ACK = 0x3A39,
+ CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3A47,
CMSG_MOVE_JUMP = 0x39EA,
- CMSG_MOVE_KNOCK_BACK_ACK = 0x3A11,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3A16,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3A15,
- CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE = 0x3A41,
- CMSG_MOVE_SET_CAN_FLY_ACK = 0x3A26,
- CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A24,
- CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A38,
- CMSG_MOVE_SET_FACING = 0x3A08,
- CMSG_MOVE_SET_FLY = 0x3A27,
- CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A25,
- CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A3F,
- CMSG_MOVE_SET_PITCH = 0x3A09,
+ CMSG_MOVE_KNOCK_BACK_ACK = 0x3A13,
+ CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3A50,
+ CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3A18,
+ CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3A17,
+ CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE = 0x3A45,
+ CMSG_MOVE_SET_CAN_FLY_ACK = 0x3A28,
+ CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A26,
+ CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A3C,
+ CMSG_MOVE_SET_FACING = 0x3A09,
+ CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3A0A,
+ CMSG_MOVE_SET_FLY = 0x3A29,
+ CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A27,
+ CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A43,
+ CMSG_MOVE_SET_PITCH = 0x3A0B,
CMSG_MOVE_SET_RUN_MODE = 0x39F2,
- CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x3A05,
- CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A13,
+ CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x3A06,
+ CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A15,
CMSG_MOVE_SET_WALK_MODE = 0x39F3,
- CMSG_MOVE_SPLINE_DONE = 0x3A17,
- CMSG_MOVE_START_ASCEND = 0x3A28,
+ CMSG_MOVE_SPLINE_DONE = 0x3A19,
+ CMSG_MOVE_START_ASCEND = 0x3A2A,
CMSG_MOVE_START_BACKWARD = 0x39E5,
- CMSG_MOVE_START_DESCEND = 0x3A2F,
+ CMSG_MOVE_START_DESCEND = 0x3A31,
CMSG_MOVE_START_FORWARD = 0x39E4,
CMSG_MOVE_START_PITCH_DOWN = 0x39F0,
CMSG_MOVE_START_PITCH_UP = 0x39EF,
CMSG_MOVE_START_STRAFE_LEFT = 0x39E7,
CMSG_MOVE_START_STRAFE_RIGHT = 0x39E8,
- CMSG_MOVE_START_SWIM = 0x39FB,
+ CMSG_MOVE_START_SWIM = 0x39FC,
CMSG_MOVE_START_TURN_LEFT = 0x39EC,
CMSG_MOVE_START_TURN_RIGHT = 0x39ED,
CMSG_MOVE_STOP = 0x39E6,
- CMSG_MOVE_STOP_ASCEND = 0x3A29,
+ CMSG_MOVE_STOP_ASCEND = 0x3A2B,
CMSG_MOVE_STOP_PITCH = 0x39F1,
CMSG_MOVE_STOP_STRAFE = 0x39E9,
- CMSG_MOVE_STOP_SWIM = 0x39FC,
+ CMSG_MOVE_STOP_SWIM = 0x39FD,
CMSG_MOVE_STOP_TURN = 0x39EE,
- CMSG_MOVE_TELEPORT_ACK = 0x39F9,
- CMSG_MOVE_TIME_SKIPPED = 0x3A1A,
- CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A19,
- CMSG_MOVE_WATER_WALK_ACK = 0x3A1C,
+ CMSG_MOVE_TELEPORT_ACK = 0x39FA,
+ CMSG_MOVE_TIME_SKIPPED = 0x3A1C,
+ CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A1B,
+ CMSG_MOVE_WATER_WALK_ACK = 0x3A1E,
CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308F,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D6,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D5,
CMSG_NEXT_CINEMATIC_CAMERA = 0x3556,
CMSG_OBJECT_UPDATE_FAILED = 0x3181,
CMSG_OBJECT_UPDATE_RESCUED = 0x3182,
- CMSG_OFFER_PETITION = 0x33DD,
+ CMSG_OFFER_PETITION = 0x33DF,
CMSG_OPENING_CINEMATIC = 0x3555,
- CMSG_OPEN_ITEM = 0x3342,
- CMSG_OPEN_MISSION_NPC = 0x3306,
- CMSG_OPEN_SHIPMENT_NPC = 0x330E,
- CMSG_OPEN_TRADESKILL_NPC = 0x3319,
+ CMSG_OPEN_ITEM = 0x3343,
+ CMSG_OPEN_MISSION_NPC = 0x3307,
+ CMSG_OPEN_SHIPMENT_NPC = 0x330F,
+ CMSG_OPEN_TRADESKILL_NPC = 0x331A,
CMSG_OPT_OUT_OF_LOOT = 0x3504,
CMSG_OVERRIDE_SCREEN_FLASH = 0x352E,
CMSG_PARTY_INVITE = 0x3602,
CMSG_PARTY_INVITE_RESPONSE = 0x3604,
CMSG_PARTY_UNINVITE = 0x3647,
- CMSG_PERFORM_ITEM_INTERACTION = 0x3238,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x3237,
CMSG_PETITION_BUY = 0x34CF,
CMSG_PETITION_RENAME_GUILD = 0x36C6,
CMSG_PETITION_SHOW_LIST = 0x34CE,
CMSG_PETITION_SHOW_SIGNATURES = 0x34D0,
CMSG_PET_ABANDON = 0x3493,
CMSG_PET_ACTION = 0x3491,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E5,
+ CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E4,
CMSG_PET_BATTLE_INPUT = 0x3641,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322D,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E4,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322C,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E3,
CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3642,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x31DE,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DF,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x31DC,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E6,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DD,
+ CMSG_PET_BATTLE_REQUEST_PVP = 0x31DD,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DE,
+ CMSG_PET_BATTLE_REQUEST_WILD = 0x31DB,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E5,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DC,
CMSG_PET_CANCEL_AURA = 0x3494,
- CMSG_PET_CAST_SPELL = 0x32AC,
+ CMSG_PET_CAST_SPELL = 0x32AB,
CMSG_PET_RENAME = 0x3684,
CMSG_PET_SET_ACTION = 0x3490,
CMSG_PET_SPELL_AUTOCAST = 0x3495,
@@ -580,29 +586,29 @@ enum OpcodeClient : uint16
CMSG_PLAYER_LOGIN = 0x35EA,
CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
CMSG_PVP_LOG_DATA = 0x317C,
- CMSG_QUERY_BATTLE_PET_NAME = 0x3285,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x3284,
CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660,
CMSG_QUERY_CORPSE_TRANSPORT = 0x3661,
CMSG_QUERY_COUNTDOWN_TIMER = 0x31AA,
- CMSG_QUERY_CREATURE = 0x327F,
- CMSG_QUERY_GAME_OBJECT = 0x3280,
- CMSG_QUERY_GARRISON_PET_NAME = 0x3286,
+ CMSG_QUERY_CREATURE = 0x327E,
+ CMSG_QUERY_GAME_OBJECT = 0x327F,
+ CMSG_QUERY_GARRISON_PET_NAME = 0x3285,
CMSG_QUERY_GUILD_INFO = 0x368A,
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E,
CMSG_QUERY_NEXT_MAIL_TIME = 0x354B,
- CMSG_QUERY_NPC_TEXT = 0x3281,
- CMSG_QUERY_PAGE_TEXT = 0x3283,
- CMSG_QUERY_PETITION = 0x3287,
- CMSG_QUERY_PET_NAME = 0x3284,
- CMSG_QUERY_PLAYER_NAME = 0x376F,
- CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3771,
- CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x3770,
+ CMSG_QUERY_NPC_TEXT = 0x3280,
+ CMSG_QUERY_PAGE_TEXT = 0x3282,
+ CMSG_QUERY_PETITION = 0x3286,
+ CMSG_QUERY_PET_NAME = 0x3283,
+ CMSG_QUERY_PLAYER_NAME = 0x3772,
+ CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3770,
+ CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x376F,
CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175,
- CMSG_QUERY_QUEST_INFO = 0x3282,
+ CMSG_QUERY_QUEST_INFO = 0x3281,
CMSG_QUERY_REALM_NAME = 0x3689,
CMSG_QUERY_SCENARIO_POI = 0x3656,
CMSG_QUERY_TIME = 0x34E3,
- CMSG_QUERY_TREASURE_PICKER = 0x3366,
+ CMSG_QUERY_TREASURE_PICKER = 0x3367,
CMSG_QUERY_VOID_STORAGE = 0x31A3,
CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4,
CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E,
@@ -617,8 +623,8 @@ enum OpcodeClient : uint16
CMSG_QUEST_LOG_REMOVE_QUEST = 0x3540,
CMSG_QUEST_POI_QUERY = 0x36AD,
CMSG_QUEST_PUSH_RESULT = 0x34A6,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33CE,
- CMSG_QUEST_SESSION_REQUEST_START = 0x33CD,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33D0,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x33CF,
CMSG_QUEST_SESSION_REQUEST_STOP = 0x372A,
CMSG_QUEUED_MESSAGES_END = 0x376C,
CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3703,
@@ -632,41 +638,41 @@ enum OpcodeClient : uint16
CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3721,
CMSG_RANDOM_ROLL = 0x3654,
CMSG_READY_CHECK_RESPONSE = 0x3635,
- CMSG_READ_ITEM = 0x3343,
+ CMSG_READ_ITEM = 0x3344,
CMSG_RECLAIM_CORPSE = 0x34E9,
- CMSG_REMOVE_NEW_ITEM = 0x3369,
+ CMSG_REMOVE_NEW_ITEM = 0x336A,
CMSG_REMOVE_RAF_RECRUIT = 0x3723,
CMSG_REORDER_CHARACTERS = 0x35E9,
CMSG_REPAIR_ITEM = 0x34FA,
- CMSG_REPLACE_TROPHY = 0x3324,
+ CMSG_REPLACE_TROPHY = 0x3325,
CMSG_REPOP_REQUEST = 0x3538,
CMSG_REPORT_CLIENT_VARIABLES = 0x36FD,
CMSG_REPORT_ENABLED_ADDONS = 0x36FC,
CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FE,
CMSG_REPORT_PVP_PLAYER_AFK = 0x3502,
- CMSG_REPORT_SERVER_LAG = 0x33C6,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x33C7,
+ CMSG_REPORT_SERVER_LAG = 0x33C8,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x33C9,
CMSG_REQUEST_ACCOUNT_DATA = 0x3694,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x3368,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x3369,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317E,
CMSG_REQUEST_CEMETERY_LIST = 0x3177,
CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368B,
- CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C7,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x33B9,
+ CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C8,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x33BA,
CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353C,
- CMSG_REQUEST_FORCED_REACTIONS = 0x3210,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F2,
+ CMSG_REQUEST_FORCED_REACTIONS = 0x320F,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F4,
CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A9,
CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A8,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C8,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33CA,
CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32B7,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x320A,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320B,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3209,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320A,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653,
CMSG_REQUEST_PET_INFO = 0x3496,
- CMSG_REQUEST_PLAYED_TIME = 0x328A,
+ CMSG_REQUEST_PLAYED_TIME = 0x3289,
CMSG_REQUEST_PVP_REWARDS = 0x3196,
CMSG_REQUEST_RAID_INFO = 0x36C7,
CMSG_REQUEST_RATED_PVP_INFO = 0x35E3,
@@ -674,24 +680,24 @@ enum OpcodeClient : uint16
CMSG_REQUEST_RESEARCH_HISTORY = 0x3167,
CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3197,
CMSG_REQUEST_STABLED_PETS = 0x3497,
- CMSG_REQUEST_VEHICLE_EXIT = 0x3242,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3244,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3243,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3245,
- CMSG_REQUEST_WEEKLY_REWARDS = 0x33BC,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3367,
- CMSG_RESET_CHALLENGE_MODE = 0x3208,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3209,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x3241,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3243,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3242,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3244,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x33BD,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3368,
+ CMSG_RESET_CHALLENGE_MODE = 0x3207,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3208,
CMSG_RESET_INSTANCES = 0x3668,
CMSG_RESURRECT_RESPONSE = 0x3683,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x3326,
- CMSG_RIDE_VEHICLE_INTERACT = 0x3246,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3327,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x3245,
CMSG_SAVE_CUF_PROFILES = 0x318C,
CMSG_SAVE_EQUIPMENT_SET = 0x3518,
CMSG_SAVE_GUILD_EMBLEM = 0x32BB,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x3229,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x3228,
- CMSG_SCENE_TRIGGER_EVENT = 0x322A,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x3228,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x3227,
+ CMSG_SCENE_TRIGGER_EVENT = 0x3229,
CMSG_SELF_RES = 0x3543,
CMSG_SELL_ITEM = 0x34A8,
CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F6,
@@ -699,25 +705,25 @@ enum OpcodeClient : uint16
CMSG_SEND_MAIL = 0x35FA,
CMSG_SEND_TEXT_EMOTE = 0x348E,
CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369A,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322F,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322E,
CMSG_SET_ACTION_BAR_TOGGLES = 0x3544,
CMSG_SET_ACTION_BUTTON = 0x3636,
- CMSG_SET_ACTIVE_MOVER = 0x3A39,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C8,
+ CMSG_SET_ACTIVE_MOVER = 0x3A3D,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C9,
CMSG_SET_ASSISTANT_LEADER = 0x364F,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3346,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3347,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3347,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3348,
CMSG_SET_CHAT_DISABLED = 0x3735,
CMSG_SET_CONTACT_NOTES = 0x36CF,
CMSG_SET_CURRENCY_FLAGS = 0x3169,
- CMSG_SET_DIFFICULTY_ID = 0x322B,
+ CMSG_SET_DIFFICULTY_ID = 0x322A,
CMSG_SET_DUNGEON_DIFFICULTY = 0x3682,
CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3618,
CMSG_SET_FACTION_AT_WAR = 0x34EC,
CMSG_SET_FACTION_INACTIVE = 0x34EE,
CMSG_SET_FACTION_NOT_AT_WAR = 0x34ED,
CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31BA,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3349,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x334A,
CMSG_SET_LOOT_METHOD = 0x3648,
CMSG_SET_LOOT_SPECIALIZATION = 0x3551,
CMSG_SET_PARTY_ASSIGNMENT = 0x3651,
@@ -731,22 +737,22 @@ enum OpcodeClient : uint16
CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3686,
CMSG_SET_SELECTION = 0x353A,
CMSG_SET_SHEATHED = 0x348F,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3348,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3349,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x3501,
- CMSG_SET_TITLE = 0x3290,
+ CMSG_SET_TITLE = 0x328F,
CMSG_SET_TRADE_CURRENCY = 0x3160,
CMSG_SET_TRADE_GOLD = 0x315F,
CMSG_SET_TRADE_ITEM = 0x315D,
- CMSG_SET_USING_PARTY_GARRISON = 0x3308,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3309,
CMSG_SET_WAR_MODE = 0x32C0,
CMSG_SET_WATCHED_FACTION = 0x34EF,
CMSG_SHOW_TRADE_SKILL = 0x36BF,
CMSG_SIGN_PETITION = 0x3545,
CMSG_SILENCE_PARTY_TALKER = 0x3652,
CMSG_SOCKET_GEMS = 0x34F9,
- CMSG_SORT_BAGS = 0x334A,
- CMSG_SORT_BANK_BAGS = 0x334B,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x334C,
+ CMSG_SORT_BAGS = 0x334B,
+ CMSG_SORT_BANK_BAGS = 0x334C,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x334D,
CMSG_SPELL_CLICK = 0x349B,
CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B5,
CMSG_SPLIT_GUILD_BANK_ITEM = 0x34C8,
@@ -759,7 +765,7 @@ enum OpcodeClient : uint16
CMSG_START_WAR_GAME = 0x35DE,
CMSG_STORE_GUILD_BANK_ITEM = 0x34BE,
CMSG_SUBMIT_USER_FEEDBACK = 0x3693,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E7,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E9,
CMSG_SUMMON_RESPONSE = 0x366A,
CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646,
CMSG_SURRENDER_ARENA = 0x3174,
@@ -776,15 +782,15 @@ enum OpcodeClient : uint16
CMSG_TAXI_NODE_STATUS_QUERY = 0x34AE,
CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B0,
CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34B2,
- CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3D,
- CMSG_TIME_SYNC_RESPONSE = 0x3A3A,
- CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3C,
- CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3B,
+ CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A41,
+ CMSG_TIME_SYNC_RESPONSE = 0x3A3E,
+ CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A40,
+ CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3F,
CMSG_TOGGLE_DIFFICULTY = 0x3657,
CMSG_TOGGLE_PVP = 0x32BE,
CMSG_TOTEM_DESTROYED = 0x3506,
CMSG_TOY_CLEAR_FANFARE = 0x312E,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x3365,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x3366,
CMSG_TRAINER_BUY_SPELL = 0x34B4,
CMSG_TRAINER_LIST = 0x34B3,
CMSG_TRANSMOGRIFY_ITEMS = 0x3198,
@@ -793,26 +799,27 @@ enum OpcodeClient : uint16
CMSG_TWITTER_CHECK_STATUS = 0x312A,
CMSG_TWITTER_CONNECT = 0x3127,
CMSG_TWITTER_DISCONNECT = 0x312B,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B8,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B9,
CMSG_UNACCEPT_TRADE = 0x315B,
CMSG_UNDELETE_CHARACTER = 0x36DB,
CMSG_UNLEARN_SKILL = 0x34F3,
CMSG_UNLEARN_SPECIALIZATION = 0x31A6,
CMSG_UNLOCK_VOID_STORAGE = 0x31A2,
CMSG_UPDATE_ACCOUNT_DATA = 0x3695,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AF,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AE,
CMSG_UPDATE_CLIENT_SETTINGS = 0x3664,
- CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A40,
+ CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A44,
CMSG_UPDATE_RAID_TARGET = 0x3650,
- CMSG_UPDATE_SPELL_VISUAL = 0x32AE,
+ CMSG_UPDATE_SPELL_VISUAL = 0x32AD,
CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F0,
- CMSG_UPGRADE_GARRISON = 0x32D0,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E5,
+ CMSG_UPGRADE_GARRISON = 0x32D1,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E7,
CMSG_USED_FOLLOW = 0x3187,
- CMSG_USE_CRITTER_ITEM = 0x324C,
+ CMSG_USE_CRITTER_ITEM = 0x324B,
CMSG_USE_EQUIPMENT_SET = 0x3995,
- CMSG_USE_ITEM = 0x32A8,
- CMSG_USE_TOY = 0x32AB,
+ CMSG_USE_ITEM = 0x32A7,
+ CMSG_USE_TOY = 0x32AA,
+ CMSG_VAS_ASSIGN_DISTRIBUTION = 0x3736,
CMSG_VAS_CHECK_TRANSFER_OK = 0x3708,
CMSG_VAS_GET_QUEUE_MINUTES = 0x3707,
CMSG_VAS_GET_SERVICE_STATUS = 0x3706,
@@ -835,204 +842,205 @@ enum OpcodeClient : uint16
enum OpcodeServer : uint16
{
SMSG_ABORT_NEW_WORLD = 0x259A,
- SMSG_ACCOUNT_COSMETIC_ADDED = 0x2884,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x286A,
- SMSG_ACCOUNT_DATA_TIMES = 0x26FB,
+ SMSG_ACCOUNT_COSMETIC_ADDED = 0x2885,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x286B,
+ SMSG_ACCOUNT_DATA_TIMES = 0x26FD,
SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AC,
- SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2883,
+ SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2884,
SMSG_ACCOUNT_TOY_UPDATE = 0x25AD,
SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B0,
SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25AF,
- SMSG_ACHIEVEMENT_DELETED = 0x26DA,
- SMSG_ACHIEVEMENT_EARNED = 0x2639,
- SMSG_ACTIVATE_ESSENCE_FAILED = 0x3016,
- SMSG_ACTIVATE_SOULBIND_FAILED = 0x3018,
- SMSG_ACTIVATE_TAXI_REPLY = 0x2672,
+ SMSG_ACHIEVEMENT_DELETED = 0x26DC,
+ SMSG_ACHIEVEMENT_EARNED = 0x263A,
+ SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015,
+ SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x2674,
SMSG_ACTIVE_GLYPHS = 0x2C54,
- SMSG_ADDON_LIST_REQUEST = 0x2638,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2633,
+ SMSG_ADDON_LIST_REQUEST = 0x2639,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2634,
SMSG_ADD_ITEM_PASSIVE = 0x25A8,
- SMSG_ADD_LOSS_OF_CONTROL = 0x2666,
- SMSG_ADD_RUNE_POWER = 0x26AC,
- SMSG_ADJUST_SPLINE_DURATION = 0x25CB,
- SMSG_ADVANCED_COMBAT_LOG = 0x2880,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x287A,
- SMSG_ADVENTURE_MAP_OPEN_NPC = 0x27E3,
- SMSG_AE_LOOT_TARGETS = 0x260E,
- SMSG_AE_LOOT_TARGET_ACK = 0x260F,
- SMSG_AI_REACTION = 0x26A9,
- SMSG_ALLIED_RACE_DETAILS = 0x27E9,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x2668,
+ SMSG_ADD_RUNE_POWER = 0x26AE,
+ SMSG_ADJUST_SPLINE_DURATION = 0x25CC,
+ SMSG_ADVANCED_COMBAT_LOG = 0x2881,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x287B,
+ SMSG_ADVENTURE_MAP_OPEN_NPC = 0x27E4,
+ SMSG_AE_LOOT_TARGETS = 0x260F,
+ SMSG_AE_LOOT_TARGET_ACK = 0x2610,
+ SMSG_AI_REACTION = 0x26AB,
+ SMSG_ALLIED_RACE_DETAILS = 0x27EA,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2571,
SMSG_ALL_ACHIEVEMENT_DATA = 0x2570,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2857,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2858,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588,
- SMSG_AREA_POI_UPDATE_RESPONSE = 0x3011,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x2730,
+ SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x2732,
SMSG_AREA_TRIGGER_DENIED = 0x2902,
SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x28FF,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x2707,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x2709,
SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE,
SMSG_AREA_TRIGGER_RE_PATH = 0x28FD,
SMSG_AREA_TRIGGER_RE_SHAPE = 0x2901,
SMSG_AREA_TRIGGER_UNATTACH = 0x2900,
- SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2628,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x263E,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x2793,
- SMSG_ARTIFACT_FORGE_ERROR = 0x2791,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x2792,
- SMSG_ARTIFACT_XP_GAIN = 0x27DB,
- SMSG_ATTACKER_STATE_UPDATE = 0x294C,
- SMSG_ATTACK_START = 0x2937,
- SMSG_ATTACK_STOP = 0x2938,
- SMSG_ATTACK_SWING_ERROR = 0x2946,
- SMSG_ATTACK_SWING_LANDED_LOG = 0x2947,
- SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27C4,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27C3,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27C2,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26E4,
- SMSG_AUCTION_COMMAND_RESULT = 0x26E1,
- SMSG_AUCTION_FAVORITE_LIST = 0x2871,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2868,
- SMSG_AUCTION_HELLO_RESPONSE = 0x26DF,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2867,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2864,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2865,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2866,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26E3,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26E5,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E0,
- SMSG_AUCTION_WON_NOTIFICATION = 0x26E2,
+ SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2629,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x263F,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x2795,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x2793,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x2794,
+ SMSG_ARTIFACT_XP_GAIN = 0x27DD,
+ SMSG_ATTACKER_STATE_UPDATE = 0x294D,
+ SMSG_ATTACK_START = 0x2938,
+ SMSG_ATTACK_STOP = 0x2939,
+ SMSG_ATTACK_SWING_ERROR = 0x2947,
+ SMSG_ATTACK_SWING_LANDED_LOG = 0x2948,
+ SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27C6,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27C5,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27C4,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26E6,
+ SMSG_AUCTION_COMMAND_RESULT = 0x26E3,
+ SMSG_AUCTION_FAVORITE_LIST = 0x2872,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2869,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x26E1,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2868,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2865,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2866,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2867,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26E5,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26E7,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E2,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x26E4,
SMSG_AURA_POINTS_DEPLETED = 0x2C23,
SMSG_AURA_UPDATE = 0x2C22,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_FAILED = 0x256C,
SMSG_AUTH_RESPONSE = 0x256D,
SMSG_AVAILABLE_HOTFIXES = 0x290F,
- SMSG_AZERITE_RESPEC_NPC = 0x27E6,
+ SMSG_AZERITE_RESPEC_NPC = 0x27E7,
SMSG_BAG_CLEANUP_FINISHED = 0x2DA7,
- SMSG_BARBER_SHOP_RESULT = 0x26B1,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2848,
+ SMSG_BARBER_SHOP_RESULT = 0x26B3,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2849,
SMSG_BATTLEFIELD_LIST = 0x2927,
SMSG_BATTLEFIELD_PORT_DENIED = 0x292D,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923,
SMSG_BATTLEFIELD_STATUS_FAILED = 0x2926,
+ SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED = 0x2930,
SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION = 0x2922,
SMSG_BATTLEFIELD_STATUS_NONE = 0x2925,
SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2924,
SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x292F,
SMSG_BATTLEGROUND_INFO_THROTTLED = 0x292E,
- SMSG_BATTLEGROUND_INIT = 0x2949,
+ SMSG_BATTLEGROUND_INIT = 0x294A,
SMSG_BATTLEGROUND_PLAYER_JOINED = 0x292B,
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928,
- SMSG_BATTLEGROUND_POINTS = 0x2948,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x277A,
- SMSG_BATTLENET_CHALLENGE_START = 0x2779,
- SMSG_BATTLENET_NOTIFICATION = 0x27F4,
- SMSG_BATTLENET_RESPONSE = 0x27F3,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27F5,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x2774,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2769,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x276A,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2773,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2767,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2766,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2764,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2765,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2763,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2761,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2762,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2768,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2772,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x2810,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2770,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x276F,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2804,
- SMSG_BATTLE_PETS_HEALED = 0x25EB,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x266D,
- SMSG_BATTLE_PET_DELETED = 0x25E8,
- SMSG_BATTLE_PET_ERROR = 0x262E,
- SMSG_BATTLE_PET_JOURNAL = 0x25E7,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25E5,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25E6,
- SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25EC,
- SMSG_BATTLE_PET_RESTORED = 0x25EA,
- SMSG_BATTLE_PET_REVOKED = 0x25E9,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E3,
- SMSG_BATTLE_PET_UPDATES = 0x25E2,
- SMSG_BINDER_CONFIRM = 0x26EE,
+ SMSG_BATTLEGROUND_POINTS = 0x2949,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x277C,
+ SMSG_BATTLENET_CHALLENGE_START = 0x277B,
+ SMSG_BATTLENET_NOTIFICATION = 0x27F5,
+ SMSG_BATTLENET_RESPONSE = 0x27F4,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27F6,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x2776,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x276B,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x276C,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2775,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2769,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2768,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2766,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2767,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2765,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2763,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2764,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x276A,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2774,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x2811,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2772,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2771,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2805,
+ SMSG_BATTLE_PETS_HEALED = 0x25EC,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x266F,
+ SMSG_BATTLE_PET_DELETED = 0x25E9,
+ SMSG_BATTLE_PET_ERROR = 0x262F,
+ SMSG_BATTLE_PET_JOURNAL = 0x25E8,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25E6,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25E7,
+ SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25ED,
+ SMSG_BATTLE_PET_RESTORED = 0x25EB,
+ SMSG_BATTLE_PET_REVOKED = 0x25EA,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E4,
+ SMSG_BATTLE_PET_UPDATES = 0x25E3,
+ SMSG_BINDER_CONFIRM = 0x26F0,
SMSG_BIND_POINT_UPDATE = 0x257D,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x261E,
- SMSG_BLACK_MARKET_OPEN_RESULT = 0x261C,
- SMSG_BLACK_MARKET_OUTBID = 0x261F,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x261D,
- SMSG_BLACK_MARKET_WON = 0x2620,
- SMSG_BONUS_ROLL_EMPTY = 0x263B,
- SMSG_BOSS_KILL = 0x294B,
- SMSG_BREAK_TARGET = 0x2936,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x261F,
+ SMSG_BLACK_MARKET_OPEN_RESULT = 0x261D,
+ SMSG_BLACK_MARKET_OUTBID = 0x2620,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x261E,
+ SMSG_BLACK_MARKET_WON = 0x2621,
+ SMSG_BONUS_ROLL_EMPTY = 0x263C,
+ SMSG_BOSS_KILL = 0x294C,
+ SMSG_BREAK_TARGET = 0x2937,
SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
- SMSG_BROADCAST_SUMMON_CAST = 0x284A,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x284B,
- SMSG_BUY_FAILED = 0x26BA,
- SMSG_BUY_SUCCEEDED = 0x26B9,
+ SMSG_BROADCAST_SUMMON_CAST = 0x284B,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x284C,
+ SMSG_BUY_FAILED = 0x26BC,
+ SMSG_BUY_SUCCEEDED = 0x26BB,
SMSG_CACHE_INFO = 0x291D,
SMSG_CACHE_VERSION = 0x291C,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x2692,
- SMSG_CALENDAR_COMMAND_RESULT = 0x2693,
- SMSG_CALENDAR_COMMUNITY_INVITE = 0x2682,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x268A,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x268B,
- SMSG_CALENDAR_INVITE_ADDED = 0x2683,
- SMSG_CALENDAR_INVITE_ALERT = 0x2687,
- SMSG_CALENDAR_INVITE_NOTES = 0x268C,
- SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x268D,
- SMSG_CALENDAR_INVITE_REMOVED = 0x2684,
- SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2689,
- SMSG_CALENDAR_INVITE_STATUS = 0x2685,
- SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2688,
- SMSG_CALENDAR_MODERATOR_STATUS = 0x2686,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x268E,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x268F,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2690,
- SMSG_CALENDAR_SEND_CALENDAR = 0x2680,
- SMSG_CALENDAR_SEND_EVENT = 0x2681,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x2691,
- SMSG_CAMERA_EFFECT = 0x2716,
- SMSG_CANCEL_AUTO_REPEAT = 0x26D0,
- SMSG_CANCEL_COMBAT = 0x2945,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x2694,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x2695,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x2684,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x268C,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x268D,
+ SMSG_CALENDAR_INVITE_ADDED = 0x2685,
+ SMSG_CALENDAR_INVITE_ALERT = 0x2689,
+ SMSG_CALENDAR_INVITE_NOTES = 0x268E,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x268F,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x2686,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x268B,
+ SMSG_CALENDAR_INVITE_STATUS = 0x2687,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x268A,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x2688,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2690,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2691,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2692,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x2682,
+ SMSG_CALENDAR_SEND_EVENT = 0x2683,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x2693,
+ SMSG_CAMERA_EFFECT = 0x2718,
+ SMSG_CANCEL_AUTO_REPEAT = 0x26D2,
+ SMSG_CANCEL_COMBAT = 0x2946,
SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46,
- SMSG_CANCEL_SCENE = 0x262D,
+ SMSG_CANCEL_SCENE = 0x262E,
SMSG_CANCEL_SPELL_VISUAL = 0x2C44,
SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48,
- SMSG_CAN_DUEL_RESULT = 0x2941,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2803,
+ SMSG_CAN_DUEL_RESULT = 0x2942,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2804,
SMSG_CAPTURE_POINT_REMOVED = 0x292A,
SMSG_CAST_FAILED = 0x2C57,
SMSG_CATEGORY_COOLDOWN = 0x2C16,
- SMSG_CHAIN_MISSILE_BOUNCE = 0x25C3,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x2602,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2606,
- SMSG_CHALLENGE_MODE_RESET = 0x2601,
- SMSG_CHALLENGE_MODE_START = 0x25FF,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2600,
- SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3005,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27F6,
+ SMSG_CHAIN_MISSILE_BOUNCE = 0x25C4,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x2603,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2607,
+ SMSG_CHALLENGE_MODE_RESET = 0x2602,
+ SMSG_CHALLENGE_MODE_START = 0x2600,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2601,
+ SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27F7,
SMSG_CHANNEL_LIST = 0x2BC3,
SMSG_CHANNEL_NOTIFY = 0x2BC0,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27AD,
- SMSG_CHARACTER_LOGIN_FAILED = 0x26F6,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2778,
- SMSG_CHARACTER_RENAME_RESULT = 0x2753,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x27AC,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27AB,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27AE,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x27AA,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26D4,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26D5,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x2797,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27AF,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x26F8,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x277A,
+ SMSG_CHARACTER_RENAME_RESULT = 0x2755,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x27AE,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27AD,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27B0,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27AC,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26D6,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26D7,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x2799,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_DOWN = 0x2BBD,
@@ -1046,141 +1054,141 @@ enum OpcodeServer : uint16
SMSG_CHAT_RESTRICTED = 0x2BB3,
SMSG_CHAT_SERVER_MESSAGE = 0x2BC4,
SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x2C12,
- SMSG_CHECK_ABANDON_NPE = 0x3019,
+ SMSG_CHECK_ABANDON_NPE = 0x3018,
SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584,
SMSG_CHECK_WARGAME_ENTRY = 0x2592,
- SMSG_CHROMIE_TIME_OPEN_NPC = 0x27EB,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2874,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x285B,
+ SMSG_CHROMIE_TIME_OPEN_NPC = 0x27EC,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2875,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x285C,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27,
+ SMSG_CLEAR_ARENA_UNIT = 0x2640,
SMSG_CLEAR_BOSS_EMOTES = 0x25B7,
- SMSG_CLEAR_COOLDOWN = 0x26AE,
+ SMSG_CLEAR_COOLDOWN = 0x26B0,
SMSG_CLEAR_COOLDOWNS = 0x2C26,
SMSG_CLEAR_RESURRECT = 0x257F,
SMSG_CLEAR_SPELL_CHARGES = 0x2C28,
- SMSG_CLEAR_TARGET = 0x2942,
+ SMSG_CLEAR_TARGET = 0x2943,
SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x2790,
- SMSG_CLOSE_HEART_FORGE = 0x2816,
- SMSG_CLOSE_ITEM_FORGE = 0x278E,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2853,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2856,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2854,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2851,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2855,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2852,
- SMSG_COIN_REMOVED = 0x260D,
- SMSG_COMBAT_EVENT_FAILED = 0x2939,
- SMSG_COMMENTATOR_MAP_INFO = 0x26F8,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x26F9,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x26F7,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27BF,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27CB,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C1,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x27C0,
- SMSG_COMPLAINT_RESULT = 0x26A0,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2789,
- SMSG_CONFIRM_PARTY_INVITE = 0x2802,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x2792,
+ SMSG_CLOSE_HEART_FORGE = 0x2817,
+ SMSG_CLOSE_ITEM_FORGE = 0x2790,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2854,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2857,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2855,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2852,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2856,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2853,
+ SMSG_COIN_REMOVED = 0x260E,
+ SMSG_COMBAT_EVENT_FAILED = 0x293A,
+ SMSG_COMMENTATOR_MAP_INFO = 0x26FA,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x26FB,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x26F9,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C1,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27CD,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C3,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x27C2,
+ SMSG_COMPLAINT_RESULT = 0x26A2,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x278B,
+ SMSG_CONFIRM_PARTY_INVITE = 0x2803,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2775,
- SMSG_CONSOLE_WRITE = 0x262B,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27C7,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27C6,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27C5,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27C9,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27CA,
- SMSG_CONTACT_LIST = 0x2776,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2809,
- SMSG_CONTROL_UPDATE = 0x263D,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x287D,
- SMSG_COOLDOWN_CHEAT = 0x2729,
- SMSG_COOLDOWN_EVENT = 0x26AD,
- SMSG_CORPSE_LOCATION = 0x2644,
- SMSG_CORPSE_RECLAIM_DELAY = 0x273A,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x2703,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2777,
+ SMSG_CONSOLE_WRITE = 0x262C,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27C9,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27C8,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27C7,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27CB,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27CC,
+ SMSG_CONTACT_LIST = 0x2778,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x280A,
+ SMSG_CONTROL_UPDATE = 0x263E,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x287E,
+ SMSG_COOLDOWN_CHEAT = 0x272B,
+ SMSG_COOLDOWN_EVENT = 0x26AF,
+ SMSG_CORPSE_LOCATION = 0x2646,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x273C,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x2705,
SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27EC,
- SMSG_COVENANT_RENOWN_OPEN_NPC = 0x287C,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x287E,
- SMSG_CREATE_CHAR = 0x26F2,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x2788,
- SMSG_CRITERIA_DELETED = 0x26D9,
- SMSG_CRITERIA_UPDATE = 0x26D3,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26B5,
- SMSG_CUSTOM_LOAD_SCREEN = 0x25C6,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27ED,
+ SMSG_COVENANT_RENOWN_OPEN_NPC = 0x287D,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x287F,
+ SMSG_CREATE_CHAR = 0x26F4,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x278A,
+ SMSG_CRITERIA_DELETED = 0x26DB,
+ SMSG_CRITERIA_UPDATE = 0x26D5,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26B7,
+ SMSG_CUSTOM_LOAD_SCREEN = 0x25C7,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
- SMSG_DAMAGE_CALC_LOG = 0x27B4,
+ SMSG_DAMAGE_CALC_LOG = 0x27B6,
SMSG_DB_REPLY = 0x290E,
- SMSG_DEATH_RELEASE_LOC = 0x26C6,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x264A,
+ SMSG_DEATH_RELEASE_LOC = 0x26C8,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x264C,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x26F3,
+ SMSG_DELETE_CHAR = 0x26F5,
SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980,
- SMSG_DESTROY_ARENA_UNIT = 0x2732,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26EA,
+ SMSG_DESTROY_ARENA_UNIT = 0x2734,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26EC,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C,
- SMSG_DISCONNECT_REASON = 0x27DD,
SMSG_DISENCHANT_CREDIT = 0x25A5,
SMSG_DISMOUNT_RESULT = 0x257C,
SMSG_DISPEL_FAILED = 0x2C30,
SMSG_DISPLAY_GAME_ERROR = 0x259F,
SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
- SMSG_DISPLAY_PROMOTION = 0x2641,
+ SMSG_DISPLAY_PROMOTION = 0x2643,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9E,
- SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2882,
- SMSG_DISPLAY_TOAST = 0x261A,
- SMSG_DISPLAY_WORLD_TEXT = 0x27DC,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25D9,
+ SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2883,
+ SMSG_DISPLAY_TOAST = 0x261B,
+ SMSG_DISPLAY_WORLD_TEXT = 0x27DE,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DA,
SMSG_DROP_NEW_CONNECTION = 0x304C,
- SMSG_DUEL_ARRANGED = 0x293B,
- SMSG_DUEL_COMPLETE = 0x293F,
- SMSG_DUEL_COUNTDOWN = 0x293E,
- SMSG_DUEL_IN_BOUNDS = 0x293D,
- SMSG_DUEL_OUT_OF_BOUNDS = 0x293C,
- SMSG_DUEL_REQUESTED = 0x293A,
- SMSG_DUEL_WINNER = 0x2940,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x2736,
- SMSG_EMOTE = 0x27B5,
- SMSG_ENABLE_BARBER_SHOP = 0x26B0,
- SMSG_ENCHANTMENT_LOG = 0x2704,
- SMSG_ENCOUNTER_END = 0x276E,
- SMSG_ENCOUNTER_START = 0x276D,
- SMSG_END_LIGHTNING_STORM = 0x269D,
+ SMSG_DUEL_ARRANGED = 0x293C,
+ SMSG_DUEL_COMPLETE = 0x2940,
+ SMSG_DUEL_COUNTDOWN = 0x293F,
+ SMSG_DUEL_IN_BOUNDS = 0x293E,
+ SMSG_DUEL_OUT_OF_BOUNDS = 0x293D,
+ SMSG_DUEL_REQUESTED = 0x293B,
+ SMSG_DUEL_WINNER = 0x2941,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x2738,
+ SMSG_EMOTE = 0x27B7,
+ SMSG_ENABLE_BARBER_SHOP = 0x26B2,
+ SMSG_ENCHANTMENT_LOG = 0x2706,
+ SMSG_ENCOUNTER_END = 0x2770,
+ SMSG_ENCOUNTER_START = 0x276F,
+ SMSG_END_LIGHTNING_STORM = 0x269F,
SMSG_ENTER_ENCRYPTED_MODE = 0x3049,
SMSG_ENUM_CHARACTERS_RESULT = 0x2583,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E2,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E3,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21,
- SMSG_EQUIPMENT_SET_ID = 0x26A6,
+ SMSG_EQUIPMENT_SET_ID = 0x26A8,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x274F,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x287B,
- SMSG_FACTION_BONUS_INFO = 0x2715,
+ SMSG_EXPLORATION_EXPERIENCE = 0x2751,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x287C,
+ SMSG_FACTION_BONUS_INFO = 0x2717,
SMSG_FAILED_PLAYER_CONDITION = 0x2FFA,
- SMSG_FAILED_QUEST_TURN_IN = 0x27FF,
+ SMSG_FAILED_QUEST_TURN_IN = 0x2800,
SMSG_FEATURE_SYSTEM_STATUS = 0x25BB,
SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BC,
- SMSG_FEIGN_DEATH_RESISTED = 0x2735,
- SMSG_FISH_ESCAPED = 0x26C3,
- SMSG_FISH_NOT_HOOKED = 0x26C2,
- SMSG_FLIGHT_SPLINE_SYNC = 0x2E29,
- SMSG_FORCED_DEATH_UPDATE = 0x26C7,
- SMSG_FORCE_ANIM = 0x2741,
- SMSG_FORCE_ANIMATIONS = 0x2742,
- SMSG_FORCE_OBJECT_RELINK = 0x2640,
- SMSG_FRIEND_STATUS = 0x2777,
- SMSG_GAIN_MAW_POWER = 0x27D0,
- SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25BE,
- SMSG_GAME_OBJECT_BASE = 0x2817,
- SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25BF,
- SMSG_GAME_OBJECT_DESPAWN = 0x25C0,
+ SMSG_FEIGN_DEATH_RESISTED = 0x2737,
+ SMSG_FISH_ESCAPED = 0x26C5,
+ SMSG_FISH_NOT_HOOKED = 0x26C4,
+ SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B,
+ SMSG_FORCED_DEATH_UPDATE = 0x26C9,
+ SMSG_FORCE_ANIM = 0x2743,
+ SMSG_FORCE_ANIMATIONS = 0x2744,
+ SMSG_FORCE_OBJECT_RELINK = 0x2642,
+ SMSG_FRIEND_STATUS = 0x2779,
+ SMSG_GAIN_MAW_POWER = 0x27D2,
+ SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25BF,
+ SMSG_GAME_OBJECT_BASE = 0x2818,
+ SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C0,
+ SMSG_GAME_OBJECT_DESPAWN = 0x25C1,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A,
- SMSG_GAME_OBJECT_RESET_STATE = 0x270F,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27F2,
- SMSG_GAME_OBJECT_UI_LINK = 0x270B,
- SMSG_GAME_SPEED_SET = 0x2676,
- SMSG_GAME_TIME_SET = 0x26FD,
- SMSG_GAME_TIME_UPDATE = 0x26FC,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2711,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27F3,
+ SMSG_GAME_OBJECT_UI_LINK = 0x270D,
+ SMSG_GAME_SPEED_SET = 0x2678,
+ SMSG_GAME_TIME_SET = 0x26FF,
+ SMSG_GAME_TIME_UPDATE = 0x26FE,
SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982,
SMSG_GARRISON_ADD_EVENT = 0x29A5,
SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974,
@@ -1255,33 +1263,33 @@ enum OpcodeServer : uint16
SMSG_GARRISON_UPGRADE_RESULT = 0x296B,
SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585,
- SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x280A,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2751,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x280B,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2753,
SMSG_GET_GARRISON_INFO_RESULT = 0x295E,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x278B,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27C8,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27B2,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x278A,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2786,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x27B1,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27DE,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27DF,
- SMSG_GM_PLAYER_INFO = 0x3006,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x278D,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27CA,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27B4,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x278C,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2788,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27B3,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27DF,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E0,
+ SMSG_GM_PLAYER_INFO = 0x3005,
SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB,
- SMSG_GM_TICKET_CASE_STATUS = 0x2698,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x2697,
- SMSG_GOD_MODE = 0x26ED,
+ SMSG_GM_TICKET_CASE_STATUS = 0x269A,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x2699,
+ SMSG_GOD_MODE = 0x26EF,
SMSG_GOSSIP_COMPLETE = 0x2A97,
SMSG_GOSSIP_MESSAGE = 0x2A98,
- SMSG_GOSSIP_POI = 0x2783,
+ SMSG_GOSSIP_POI = 0x2785,
SMSG_GOSSIP_QUEST_UPDATE = 0x2A99,
SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6,
SMSG_GROUP_ACTION_THROTTLED = 0x2590,
- SMSG_GROUP_AUTO_KICK = 0x2781,
- SMSG_GROUP_DECLINE = 0x277E,
- SMSG_GROUP_DESTROYED = 0x2780,
- SMSG_GROUP_NEW_LEADER = 0x2623,
- SMSG_GROUP_UNINVITE = 0x277F,
+ SMSG_GROUP_AUTO_KICK = 0x2783,
+ SMSG_GROUP_DECLINE = 0x2780,
+ SMSG_GROUP_DESTROYED = 0x2782,
+ SMSG_GROUP_NEW_LEADER = 0x2624,
+ SMSG_GROUP_UNINVITE = 0x2781,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1335,60 +1343,61 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26C4,
- SMSG_HIGHEST_THREAT_UPDATE = 0x26CC,
+ SMSG_HEALTH_UPDATE = 0x26C6,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x26CE,
SMSG_HOTFIX_CONNECT = 0x2911,
SMSG_HOTFIX_MESSAGE = 0x2910,
- SMSG_INITIALIZE_FACTIONS = 0x2714,
+ SMSG_INITIALIZE_FACTIONS = 0x2716,
SMSG_INITIAL_SETUP = 0x2580,
- SMSG_INIT_WORLD_STATES = 0x2737,
- SMSG_INSPECT_RESULT = 0x2627,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x279D,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x279C,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27A5,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x279B,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27A7,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27A6,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27A0,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x279F,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27A4,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27A8,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27A1,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x279E,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27A3,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27A2,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26EB,
- SMSG_INSTANCE_INFO = 0x262A,
- SMSG_INSTANCE_RESET = 0x267B,
- SMSG_INSTANCE_RESET_FAILED = 0x267C,
- SMSG_INSTANCE_SAVE_CREATED = 0x276C,
+ SMSG_INIT_WORLD_STATES = 0x2739,
+ SMSG_INSPECT_RESULT = 0x2628,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x279F,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x279E,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27A7,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x279D,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27A9,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27A8,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27A2,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27A1,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27A6,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27AA,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27A3,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27A0,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27A5,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27A4,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26ED,
+ SMSG_INSTANCE_INFO = 0x262B,
+ SMSG_INSTANCE_RESET = 0x267D,
+ SMSG_INSTANCE_RESET_FAILED = 0x267E,
+ SMSG_INSTANCE_SAVE_CREATED = 0x276E,
SMSG_INTERRUPT_POWER_REGEN = 0x2C59,
SMSG_INVALIDATE_PAGE_TEXT = 0x2918,
SMSG_INVALIDATE_PLAYER = 0x2FFF,
- SMSG_INVALID_PROMOTION_CODE = 0x2743,
+ SMSG_INVALID_PROMOTION_CODE = 0x2745,
SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x2801,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x2812,
- SMSG_ISLANDS_MISSION_NPC = 0x27E8,
- SMSG_ISLAND_AZERITE_GAIN = 0x274C,
- SMSG_ISLAND_COMPLETE = 0x274D,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x2802,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x2813,
+ SMSG_ISLANDS_MISSION_NPC = 0x27E9,
+ SMSG_ISLAND_AZERITE_GAIN = 0x274E,
+ SMSG_ISLAND_COMPLETE = 0x274F,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84,
- SMSG_ITEM_CHANGED = 0x26DC,
- SMSG_ITEM_COOLDOWN = 0x27B3,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2745,
+ SMSG_ITEM_CHANGED = 0x26DE,
+ SMSG_ITEM_COOLDOWN = 0x27B5,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2747,
SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259E,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x2873,
+ SMSG_ITEM_INTERACTION_CHARGE_INFO_UPDATED = 0x288B,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x2874,
SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259C,
- SMSG_ITEM_PUSH_RESULT = 0x2619,
- SMSG_ITEM_TIME_UPDATE = 0x2744,
- SMSG_KICK_REASON = 0x267E,
- SMSG_LATENCY_REPORT_PING = 0x2885,
+ SMSG_ITEM_PUSH_RESULT = 0x261A,
+ SMSG_ITEM_TIME_UPDATE = 0x2746,
+ SMSG_KICK_REASON = 0x2680,
+ SMSG_LATENCY_REPORT_PING = 0x2886,
SMSG_LEARNED_SPELLS = 0x2C4D,
- SMSG_LEARN_PVP_TALENT_FAILED = 0x25CD,
- SMSG_LEARN_TALENT_FAILED = 0x25CC,
- SMSG_LEGACY_LOOT_RULES = 0x2818,
- SMSG_LEVEL_LINKING_RESULT = 0x2859,
- SMSG_LEVEL_UP_INFO = 0x26DB,
+ SMSG_LEARN_PVP_TALENT_FAILED = 0x25CE,
+ SMSG_LEARN_TALENT_FAILED = 0x25CD,
+ SMSG_LEGACY_LOOT_RULES = 0x2819,
+ SMSG_LEVEL_LINKING_RESULT = 0x285A,
+ SMSG_LEVEL_UP_INFO = 0x26DD,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B,
@@ -1416,61 +1425,65 @@ enum OpcodeServer : uint16
SMSG_LFG_SLOT_INVALID = 0x2A30,
SMSG_LFG_TELEPORT_DENIED = 0x2A32,
SMSG_LFG_UPDATE_STATUS = 0x2A24,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x275E,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x275D,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2752,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x275F,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2760,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x275F,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2754,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2761,
SMSG_LOAD_CUF_PROFILES = 0x25B8,
- SMSG_LOAD_EQUIPMENT_SET = 0x26FF,
- SMSG_LOGIN_SET_TIME_SPEED = 0x26FE,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2701,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x2700,
SMSG_LOGIN_VERIFY_WORLD = 0x2599,
- SMSG_LOGOUT_CANCEL_ACK = 0x267A,
- SMSG_LOGOUT_COMPLETE = 0x2679,
- SMSG_LOGOUT_RESPONSE = 0x2678,
- SMSG_LOG_XP_GAIN = 0x26D7,
- SMSG_LOOT_ALL_PASSED = 0x2617,
- SMSG_LOOT_LIST = 0x2731,
- SMSG_LOOT_MONEY_NOTIFY = 0x2612,
- SMSG_LOOT_RELEASE = 0x2611,
- SMSG_LOOT_RELEASE_ALL = 0x2610,
- SMSG_LOOT_REMOVED = 0x260C,
- SMSG_LOOT_RESPONSE = 0x260B,
- SMSG_LOOT_ROLL = 0x2614,
- SMSG_LOOT_ROLLS_COMPLETE = 0x2616,
- SMSG_LOOT_ROLL_WON = 0x2618,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2665,
- SMSG_MAIL_COMMAND_RESULT = 0x2631,
- SMSG_MAIL_LIST_RESULT = 0x2746,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2747,
- SMSG_MAP_OBJECTIVES_INIT = 0x294A,
- SMSG_MAP_OBJ_EVENTS = 0x25C1,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2615,
+ SMSG_LOGOUT_CANCEL_ACK = 0x267C,
+ SMSG_LOGOUT_COMPLETE = 0x267B,
+ SMSG_LOGOUT_RESPONSE = 0x267A,
+ SMSG_LOG_XP_GAIN = 0x26D9,
+ SMSG_LOOT_ALL_PASSED = 0x2618,
+ SMSG_LOOT_LIST = 0x2733,
+ SMSG_LOOT_MONEY_NOTIFY = 0x2613,
+ SMSG_LOOT_RELEASE = 0x2612,
+ SMSG_LOOT_RELEASE_ALL = 0x2611,
+ SMSG_LOOT_REMOVED = 0x260D,
+ SMSG_LOOT_RESPONSE = 0x260C,
+ SMSG_LOOT_ROLL = 0x2615,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x2617,
+ SMSG_LOOT_ROLL_WON = 0x2619,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2667,
+ SMSG_MAIL_COMMAND_RESULT = 0x2632,
+ SMSG_MAIL_LIST_RESULT = 0x2748,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2749,
+ SMSG_MAP_OBJECTIVES_INIT = 0x294B,
+ SMSG_MAP_OBJ_EVENTS = 0x25C2,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2616,
SMSG_MESSAGE_BOX = 0x2576,
- SMSG_MINIMAP_PING = 0x26C1,
+ SMSG_MINIMAP_PING = 0x26C3,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
- SMSG_MISSILE_CANCEL = 0x25C2,
- SMSG_MODIFY_COOLDOWN = 0x2754,
+ SMSG_MISSILE_CANCEL = 0x25C3,
+ SMSG_MODIFY_COOLDOWN = 0x2756,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257B,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2849,
- SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E13,
- SMSG_MOVE_DISABLE_COLLISION = 0x2E0F,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x284A,
+ SMSG_MOVE_APPLY_INERTIA = 0x2E2E,
+ SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15,
+ SMSG_MOVE_DISABLE_COLLISION = 0x2E11,
SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x2DFD,
SMSG_MOVE_DISABLE_GRAVITY = 0x2E0D,
+ SMSG_MOVE_DISABLE_INERTIA = 0x2E0F,
SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0C,
- SMSG_MOVE_ENABLE_COLLISION = 0x2E10,
+ SMSG_MOVE_ENABLE_COLLISION = 0x2E12,
SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x2DFC,
SMSG_MOVE_ENABLE_GRAVITY = 0x2E0E,
+ SMSG_MOVE_ENABLE_INERTIA = 0x2E10,
SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0B,
SMSG_MOVE_KNOCK_BACK = 0x2E03,
- SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x2E14,
+ SMSG_MOVE_REMOVE_INERTIA = 0x2E2F,
+ SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x2E16,
SMSG_MOVE_ROOT = 0x2DF9,
SMSG_MOVE_SET_ACTIVE_MOVER = 0x2DD5,
SMSG_MOVE_SET_CAN_FLY = 0x2E05,
SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x2E07,
- SMSG_MOVE_SET_COLLISION_HEIGHT = 0x2E11,
- SMSG_MOVE_SET_COMPOUND_STATE = 0x2E15,
+ SMSG_MOVE_SET_COLLISION_HEIGHT = 0x2E13,
+ SMSG_MOVE_SET_COMPOUND_STATE = 0x2E17,
SMSG_MOVE_SET_FEATHER_FALL = 0x2DFF,
SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x2DF5,
SMSG_MOVE_SET_FLIGHT_SPEED = 0x2DF4,
@@ -1485,37 +1498,37 @@ enum OpcodeServer : uint16
SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x2DF3,
SMSG_MOVE_SET_SWIM_SPEED = 0x2DF2,
SMSG_MOVE_SET_TURN_RATE = 0x2DF7,
- SMSG_MOVE_SET_VEHICLE_REC_ID = 0x2E12,
+ SMSG_MOVE_SET_VEHICLE_REC_ID = 0x2E14,
SMSG_MOVE_SET_WALK_SPEED = 0x2DF6,
SMSG_MOVE_SET_WATER_WALK = 0x2DFB,
- SMSG_MOVE_SKIP_TIME = 0x2E16,
- SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x2E1B,
- SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x2E19,
- SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x2E1C,
- SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x2E1A,
- SMSG_MOVE_SPLINE_ROOT = 0x2E17,
- SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x2E1D,
+ SMSG_MOVE_SKIP_TIME = 0x2E18,
+ SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x2E1D,
+ SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x2E1B,
+ SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x2E1E,
+ SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x2E1C,
+ SMSG_MOVE_SPLINE_ROOT = 0x2E19,
+ SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x2E1F,
SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0x2DEC,
SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x2DEB,
- SMSG_MOVE_SPLINE_SET_FLYING = 0x2E27,
- SMSG_MOVE_SPLINE_SET_HOVER = 0x2E1F,
- SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x2E22,
- SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x2E1E,
+ SMSG_MOVE_SPLINE_SET_FLYING = 0x2E29,
+ SMSG_MOVE_SPLINE_SET_HOVER = 0x2E21,
+ SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x2E24,
+ SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x2E20,
SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0x2DEF,
SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x2DE8,
- SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x2E25,
+ SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x2E27,
SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x2DE7,
SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0x2DEA,
SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0x2DE9,
SMSG_MOVE_SPLINE_SET_TURN_RATE = 0x2DEE,
- SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x2E26,
+ SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x2E28,
SMSG_MOVE_SPLINE_SET_WALK_SPEED = 0x2DED,
- SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x2E21,
- SMSG_MOVE_SPLINE_START_SWIM = 0x2E23,
- SMSG_MOVE_SPLINE_STOP_SWIM = 0x2E24,
- SMSG_MOVE_SPLINE_UNROOT = 0x2E18,
- SMSG_MOVE_SPLINE_UNSET_FLYING = 0x2E28,
- SMSG_MOVE_SPLINE_UNSET_HOVER = 0x2E20,
+ SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x2E23,
+ SMSG_MOVE_SPLINE_START_SWIM = 0x2E25,
+ SMSG_MOVE_SPLINE_STOP_SWIM = 0x2E26,
+ SMSG_MOVE_SPLINE_UNROOT = 0x2E1A,
+ SMSG_MOVE_SPLINE_UNSET_FLYING = 0x2E2A,
+ SMSG_MOVE_SPLINE_UNSET_HOVER = 0x2E22,
SMSG_MOVE_TELEPORT = 0x2E04,
SMSG_MOVE_UNROOT = 0x2DFA,
SMSG_MOVE_UNSET_CAN_FLY = 0x2E06,
@@ -1523,6 +1536,7 @@ enum OpcodeServer : uint16
SMSG_MOVE_UNSET_HOVERING = 0x2E02,
SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x2E0A,
SMSG_MOVE_UPDATE = 0x2DE0,
+ SMSG_MOVE_UPDATE_APPLY_INERTIA = 0x2E30,
SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x2DE4,
SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x2DDF,
SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x2DDC,
@@ -1530,6 +1544,7 @@ enum OpcodeServer : uint16
SMSG_MOVE_UPDATE_KNOCK_BACK = 0x2DE2,
SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DE3,
SMSG_MOVE_UPDATE_PITCH_RATE = 0x2DDE,
+ SMSG_MOVE_UPDATE_REMOVE_INERTIA = 0x2E31,
SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x2DE5,
SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x2DD7,
SMSG_MOVE_UPDATE_RUN_SPEED = 0x2DD6,
@@ -1538,121 +1553,122 @@ enum OpcodeServer : uint16
SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1,
SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD,
SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8,
- SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27CD,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27CC,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2603,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x2605,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2608,
- SMSG_MYTHIC_PLUS_SEASON_DATA = 0x2604,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D4,
- SMSG_NEW_TAXI_PATH = 0x2673,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27CF,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27CE,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2604,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x2606,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2609,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = 0x2605,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D5,
+ SMSG_NEW_TAXI_PATH = 0x2675,
SMSG_NEW_WORLD = 0x2598,
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x269F,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A1,
SMSG_NOTIFY_MONEY = 0x259B,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x2632,
- SMSG_OFFER_PETITION_ERROR = 0x26AA,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26D8,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x2633,
+ SMSG_OFFER_PETITION_ERROR = 0x26AC,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26DA,
SMSG_ON_MONSTER_MOVE = 0x2DD4,
- SMSG_OPEN_ANIMA_DIVERSION_UI = 0x270C,
- SMSG_OPEN_ARTIFACT_FORGE = 0x278F,
+ SMSG_OPEN_ANIMA_DIVERSION_UI = 0x270E,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x2791,
SMSG_OPEN_CONTAINER = 0x2DA6,
- SMSG_OPEN_HEART_FORGE = 0x2815,
- SMSG_OPEN_ITEM_FORGE = 0x278D,
+ SMSG_OPEN_HEART_FORGE = 0x2816,
+ SMSG_OPEN_ITEM_FORGE = 0x278F,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x2785,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2787,
- SMSG_OVERRIDE_LIGHT = 0x26AF,
- SMSG_PAGE_TEXT = 0x270A,
- SMSG_PARTY_COMMAND_RESULT = 0x2782,
+ SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x2787,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2789,
+ SMSG_OVERRIDE_LIGHT = 0x26B1,
+ SMSG_PAGE_TEXT = 0x270C,
+ SMSG_PARTY_COMMAND_RESULT = 0x2784,
SMSG_PARTY_INVITE = 0x25B9,
- SMSG_PARTY_KILL_LOG = 0x274A,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x2749,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2748,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2879,
- SMSG_PARTY_UPDATE = 0x25ED,
- SMSG_PAUSE_MIRROR_TIMER = 0x2701,
- SMSG_PENDING_RAID_LOCK = 0x26E9,
+ SMSG_PARTY_KILL_LOG = 0x274C,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x274B,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x274A,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x287A,
+ SMSG_PARTY_UPDATE = 0x25EE,
+ SMSG_PASSED_TIME_EVENTS = 0x25BE,
+ SMSG_PAUSE_MIRROR_TIMER = 0x2703,
+ SMSG_PENDING_RAID_LOCK = 0x26EB,
SMSG_PETITION_ALREADY_SIGNED = 0x25A1,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA,
- SMSG_PETITION_SHOW_LIST = 0x26B2,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26B3,
- SMSG_PETITION_SIGN_RESULTS = 0x273C,
- SMSG_PET_ACTION_FEEDBACK = 0x2739,
- SMSG_PET_ACTION_SOUND = 0x2695,
+ SMSG_PETITION_SHOW_LIST = 0x26B4,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26B5,
+ SMSG_PETITION_SIGN_RESULTS = 0x273E,
+ SMSG_PET_ACTION_FEEDBACK = 0x273B,
+ SMSG_PET_ACTION_SOUND = 0x2697,
SMSG_PET_ADDED = 0x2595,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25FA,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x266A,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F3,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x25F8,
- SMSG_PET_BATTLE_FINISHED = 0x25F9,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x25F5,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F4,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x25FB,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F2,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x262F,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x2630,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25F7,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F1,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x25F6,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E4,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25FB,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x266C,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F4,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x25F9,
+ SMSG_PET_BATTLE_FINISHED = 0x25FA,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x25F6,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F5,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x25FC,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F3,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2630,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x2631,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25F8,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F2,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x25F7,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E5,
SMSG_PET_CAST_FAILED = 0x2C58,
SMSG_PET_CLEAR_SPELLS = 0x2C24,
- SMSG_PET_DISMISS_SOUND = 0x2696,
- SMSG_PET_GOD_MODE = 0x2670,
- SMSG_PET_GUIDS = 0x26F5,
+ SMSG_PET_DISMISS_SOUND = 0x2698,
+ SMSG_PET_GOD_MODE = 0x2672,
+ SMSG_PET_GUIDS = 0x26F7,
SMSG_PET_LEARNED_SPELLS = 0x2C4F,
SMSG_PET_MODE = 0x258B,
- SMSG_PET_NAME_INVALID = 0x26B7,
+ SMSG_PET_NAME_INVALID = 0x26B9,
SMSG_PET_NEWLY_TAMED = 0x2589,
SMSG_PET_SLOT_UPDATED = 0x258A,
SMSG_PET_SPELLS_MESSAGE = 0x2C25,
SMSG_PET_STABLE_LIST = 0x2596,
SMSG_PET_STABLE_RESULT = 0x2597,
- SMSG_PET_TAME_FAILURE = 0x26A7,
+ SMSG_PET_TAME_FAILURE = 0x26A9,
SMSG_PET_UNLEARNED_SPELLS = 0x2C50,
SMSG_PHASE_SHIFT_CHANGE = 0x2578,
- SMSG_PLAYED_TIME = 0x26C8,
- SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3015,
- SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3014,
- SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3017,
+ SMSG_PLAYED_TIME = 0x26CA,
+ SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014,
+ SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013,
+ SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3016,
SMSG_PLAYER_BOUND = 0x2FF8,
SMSG_PLAYER_CHOICE_CLEAR = 0x2FFE,
SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x2FFD,
- SMSG_PLAYER_CONDITION_RESULT = 0x300B,
- SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x300A,
- SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x300F,
+ SMSG_PLAYER_CONDITION_RESULT = 0x300A,
+ SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x3009,
+ SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x300E,
SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F9,
- SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x301A,
- SMSG_PLAYER_SKINNED = 0x3007,
- SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x3008,
- SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300E,
- SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300D,
- SMSG_PLAY_MUSIC = 0x2759,
- SMSG_PLAY_OBJECT_SOUND = 0x275A,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2721,
+ SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x3019,
+ SMSG_PLAYER_SKINNED = 0x3006,
+ SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x3007,
+ SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D,
+ SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C,
+ SMSG_PLAY_MUSIC = 0x275B,
+ SMSG_PLAY_OBJECT_SOUND = 0x275C,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2723,
SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47,
- SMSG_PLAY_SCENE = 0x262C,
- SMSG_PLAY_SOUND = 0x2758,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x275B,
+ SMSG_PLAY_SCENE = 0x262D,
+ SMSG_PLAY_SOUND = 0x275A,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x275D,
SMSG_PLAY_SPELL_VISUAL = 0x2C45,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49,
- SMSG_PLAY_TIME_WARNING = 0x26EF,
+ SMSG_PLAY_TIME_WARNING = 0x26F1,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x26C5,
+ SMSG_POWER_UPDATE = 0x26C7,
SMSG_PRELOAD_CHILD_MAP = 0x2579,
- SMSG_PREPOPULATE_NAME_CACHE = 0x284C,
- SMSG_PRE_RESSURECT = 0x2757,
- SMSG_PRINT_NOTIFICATION = 0x25C5,
- SMSG_PROC_RESIST = 0x274B,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x284D,
+ SMSG_PRE_RESSURECT = 0x2759,
+ SMSG_PRINT_NOTIFICATION = 0x25C6,
+ SMSG_PROC_RESIST = 0x274D,
SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51,
- SMSG_PVP_CREDIT = 0x2944,
- SMSG_PVP_MATCH_COMPLETE = 0x294E,
- SMSG_PVP_MATCH_INITIALIZE = 0x294F,
- SMSG_PVP_MATCH_START = 0x294D,
- SMSG_PVP_MATCH_STATISTICS = 0x2931,
- SMSG_PVP_OPTIONS_ENABLED = 0x2933,
- SMSG_PVP_TIER_RECORD = 0x2886,
+ SMSG_PVP_CREDIT = 0x2945,
+ SMSG_PVP_MATCH_COMPLETE = 0x294F,
+ SMSG_PVP_MATCH_INITIALIZE = 0x2950,
+ SMSG_PVP_MATCH_START = 0x294E,
+ SMSG_PVP_MATCH_STATISTICS = 0x2932,
+ SMSG_PVP_OPTIONS_ENABLED = 0x2934,
+ SMSG_PVP_TIER_RECORD = 0x2887,
SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A,
SMSG_QUERY_CREATURE_RESPONSE = 0x2914,
SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915,
@@ -1664,11 +1680,11 @@ enum OpcodeServer : uint16
SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x2917,
SMSG_QUERY_PETITION_RESPONSE = 0x291B,
SMSG_QUERY_PET_NAME_RESPONSE = 0x2919,
- SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3003,
- SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x3002,
+ SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002,
+ SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x301B,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96,
SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6,
- SMSG_QUERY_TIME_RESPONSE = 0x26D6,
+ SMSG_QUERY_TIME_RESPONSE = 0x26D8,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F,
SMSG_QUEST_FORCE_REMOVED = 0x2A9C,
@@ -1686,50 +1702,50 @@ enum OpcodeServer : uint16
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D,
SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F,
SMSG_QUEST_PUSH_RESULT = 0x2A90,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x286F,
- SMSG_QUEST_SESSION_READY_CHECK = 0x285D,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x285E,
- SMSG_QUEST_SESSION_RESULT = 0x285C,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2870,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x285E,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x285F,
+ SMSG_QUEST_SESSION_RESULT = 0x285D,
SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C,
SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D,
SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E,
SMSG_QUEST_UPDATE_COMPLETE = 0x2A89,
SMSG_QUEST_UPDATE_FAILED = 0x2A8A,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B,
- SMSG_QUEUE_SUMMARY_UPDATE = 0x2800,
- SMSG_RAF_ACCOUNT_INFO = 0x285A,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x286B,
- SMSG_RAID_DIFFICULTY_SET = 0x2798,
- SMSG_RAID_GROUP_ONLY = 0x279A,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x2801,
+ SMSG_RAF_ACCOUNT_INFO = 0x285B,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x286C,
+ SMSG_RAID_DIFFICULTY_SET = 0x279A,
+ SMSG_RAID_GROUP_ONLY = 0x279C,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
SMSG_RAID_MARKERS_CHANGED = 0x25A2,
- SMSG_RANDOM_ROLL = 0x2626,
- SMSG_RATED_PVP_INFO = 0x2930,
- SMSG_READY_CHECK_COMPLETED = 0x25F0,
- SMSG_READY_CHECK_RESPONSE = 0x25EF,
- SMSG_READY_CHECK_STARTED = 0x25EE,
- SMSG_READ_ITEM_RESULT_FAILED = 0x2794,
- SMSG_READ_ITEM_RESULT_OK = 0x278C,
- SMSG_REALM_LOOKUP_INFO = 0x27B8,
+ SMSG_RANDOM_ROLL = 0x2627,
+ SMSG_RATED_PVP_INFO = 0x2931,
+ SMSG_READY_CHECK_COMPLETED = 0x25F1,
+ SMSG_READY_CHECK_RESPONSE = 0x25F0,
+ SMSG_READY_CHECK_STARTED = 0x25EF,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x2796,
+ SMSG_READ_ITEM_RESULT_OK = 0x278E,
+ SMSG_REALM_LOOKUP_INFO = 0x27BA,
SMSG_REALM_QUERY_RESPONSE = 0x2913,
- SMSG_REATTACH_RESURRECT = 0x273B,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26B4,
- SMSG_REFRESH_COMPONENT = 0x2646,
+ SMSG_REATTACH_RESURRECT = 0x273D,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26B6,
+ SMSG_REFRESH_COMPONENT = 0x2648,
SMSG_REFRESH_SPELL_HISTORY = 0x2C2C,
SMSG_REMOVE_ITEM_PASSIVE = 0x25A9,
SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C52,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x27B0,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27B2,
SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591,
- SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2934,
- SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2935,
+ SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2935,
+ SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2936,
SMSG_RESEARCH_COMPLETE = 0x2587,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26AB,
+ SMSG_RESET_FAILED_NOTIFY = 0x26AD,
SMSG_RESET_QUEST_POI = 0x2AA0,
- SMSG_RESET_RANGED_COMBAT_TIMER = 0x2943,
+ SMSG_RESET_RANGED_COMBAT_TIMER = 0x2944,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
- SMSG_RESPEC_WIPE_CONFIRM = 0x2609,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x260A,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572,
SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C60,
SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B5,
@@ -1739,82 +1755,82 @@ enum OpcodeServer : uint16
SMSG_RESUME_TOKEN = 0x25A7,
SMSG_RESURRECT_REQUEST = 0x257E,
SMSG_RESYNC_RUNES = 0x2C5F,
- SMSG_RETURN_APPLICANT_LIST = 0x2850,
- SMSG_RETURN_RECRUITING_CLUBS = 0x284F,
+ SMSG_RETURN_APPLICANT_LIST = 0x2851,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x2850,
SMSG_ROLE_CHANGED_INFORM = 0x258D,
SMSG_ROLE_CHOSEN = 0x2A39,
SMSG_ROLE_POLL_INFORM = 0x258E,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27ED,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27EE,
SMSG_RUNE_REGEN_DEBUG = 0x25B2,
- SMSG_SCENARIO_COMPLETED = 0x27DA,
- SMSG_SCENARIO_POIS = 0x2629,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x2622,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x27F0,
- SMSG_SCENARIO_STATE = 0x2621,
- SMSG_SCENARIO_UI_UPDATE = 0x27EF,
- SMSG_SCENARIO_VACATE = 0x2795,
- SMSG_SCENE_OBJECT_EVENT = 0x25DA,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25DF,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E0,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25DC,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DB,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25DE,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25DD,
+ SMSG_SCENARIO_COMPLETED = 0x27DC,
+ SMSG_SCENARIO_POIS = 0x262A,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x2623,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x27F1,
+ SMSG_SCENARIO_STATE = 0x2622,
+ SMSG_SCENARIO_UI_UPDATE = 0x27F0,
+ SMSG_SCENARIO_VACATE = 0x2797,
+ SMSG_SCENE_OBJECT_EVENT = 0x25DB,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E0,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E1,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25DD,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DC,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25DF,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25DE,
SMSG_SCRIPT_CAST = 0x2C56,
SMSG_SEASON_INFO = 0x25BD,
- SMSG_SELL_RESPONSE = 0x26B8,
+ SMSG_SELL_RESPONSE = 0x26BA,
SMSG_SEND_ITEM_PASSIVES = 0x25AA,
SMSG_SEND_KNOWN_SPELLS = 0x2C2A,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2624,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2625,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2625,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2626,
SMSG_SEND_SPELL_CHARGES = 0x2C2D,
SMSG_SEND_SPELL_HISTORY = 0x2C2B,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2E,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2643,
- SMSG_SERVER_TIME = 0x2677,
- SMSG_SERVER_TIME_OFFSET = 0x2705,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2645,
+ SMSG_SERVER_TIME = 0x2679,
+ SMSG_SERVER_TIME_OFFSET = 0x2707,
SMSG_SETUP_CURRENCY = 0x2573,
SMSG_SETUP_RESEARCH_HISTORY = 0x2586,
- SMSG_SET_AI_ANIM_KIT = 0x2720,
- SMSG_SET_ALL_TASK_PROGRESS = 0x277C,
- SMSG_SET_ANIM_TIER = 0x2724,
- SMSG_SET_CHR_UPGRADE_TIER = 0x25D7,
+ SMSG_SET_AI_ANIM_KIT = 0x2722,
+ SMSG_SET_ALL_TASK_PROGRESS = 0x277E,
+ SMSG_SET_ANIM_TIER = 0x2726,
+ SMSG_SET_CHR_UPGRADE_TIER = 0x25D8,
SMSG_SET_CURRENCY = 0x2574,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x2699,
- SMSG_SET_FACTION_AT_WAR = 0x26F1,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x271B,
- SMSG_SET_FACTION_STANDING = 0x271C,
- SMSG_SET_FACTION_VISIBLE = 0x271A,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x269B,
+ SMSG_SET_FACTION_AT_WAR = 0x26F3,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x271D,
+ SMSG_SET_FACTION_STANDING = 0x271E,
+ SMSG_SET_FACTION_VISIBLE = 0x271C,
SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
- SMSG_SET_FORCED_REACTIONS = 0x270E,
+ SMSG_SET_FORCED_REACTIONS = 0x2710,
SMSG_SET_ITEM_PURCHASE_DATA = 0x259D,
- SMSG_SET_LOOT_METHOD_FAILED = 0x27BE,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x27C0,
SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A0,
- SMSG_SET_MELEE_ANIM_KIT = 0x2723,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x2722,
+ SMSG_SET_MELEE_ANIM_KIT = 0x2725,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x2724,
SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
- SMSG_SET_PET_SPECIALIZATION = 0x261B,
- SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3004,
+ SMSG_SET_PET_SPECIALIZATION = 0x261C,
+ SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003,
SMSG_SET_PLAY_HOVER_ANIM = 0x25B6,
- SMSG_SET_PROFICIENCY = 0x2725,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2863,
+ SMSG_SET_PROFICIENCY = 0x2727,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2864,
SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2997,
SMSG_SET_SPELL_CHARGES = 0x2C29,
- SMSG_SET_TASK_COMPLETE = 0x277D,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x266C,
- SMSG_SET_VEHICLE_REC_ID = 0x26E8,
+ SMSG_SET_TASK_COMPLETE = 0x277F,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x266E,
+ SMSG_SET_VEHICLE_REC_ID = 0x26EA,
SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2998,
- SMSG_SHOW_BANK = 0x2674,
- SMSG_SHOW_MAILBOX = 0x2796,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D3,
+ SMSG_SHOW_BANK = 0x2676,
+ SMSG_SHOW_MAILBOX = 0x2798,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D4,
SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95,
- SMSG_SHOW_TAXI_NODES = 0x26C0,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2760,
- SMSG_SOCKET_GEMS_FAILURE = 0x2718,
- SMSG_SOCKET_GEMS_SUCCESS = 0x2717,
- SMSG_SPECIAL_MOUNT_ANIM = 0x2694,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2709,
+ SMSG_SHOW_TAXI_NODES = 0x26C2,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2762,
+ SMSG_SOCKET_GEMS_FAILURE = 0x271A,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x2719,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x2696,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x270B,
SMSG_SPELL_ABSORB_LOG = 0x2C1F,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17,
SMSG_SPELL_CHANNEL_START = 0x2C34,
@@ -1839,94 +1855,95 @@ enum OpcodeServer : uint16
SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B,
SMSG_SPELL_PREPARE = 0x2C38,
SMSG_SPELL_START = 0x2C3A,
- SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25C7,
- SMSG_SPIRIT_HEALER_CONFIRM = 0x2706,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2875,
- SMSG_STAND_STATE_UPDATE = 0x270D,
- SMSG_START_ELAPSED_TIMER = 0x25FC,
- SMSG_START_ELAPSED_TIMERS = 0x25FE,
- SMSG_START_LIGHTNING_STORM = 0x269C,
- SMSG_START_LOOT_ROLL = 0x2613,
- SMSG_START_MIRROR_TIMER = 0x2700,
+ SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25C8,
+ SMSG_SPIRIT_HEALER_CONFIRM = 0x2708,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2876,
+ SMSG_STAND_STATE_UPDATE = 0x270F,
+ SMSG_START_ELAPSED_TIMER = 0x25FD,
+ SMSG_START_ELAPSED_TIMERS = 0x25FF,
+ SMSG_START_LIGHTNING_STORM = 0x269E,
+ SMSG_START_LOOT_ROLL = 0x2614,
+ SMSG_START_MIRROR_TIMER = 0x2702,
SMSG_START_TIMER = 0x25A4,
- SMSG_STOP_ELAPSED_TIMER = 0x25FD,
- SMSG_STOP_MIRROR_TIMER = 0x2702,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x275C,
+ SMSG_STOP_ELAPSED_TIMER = 0x25FE,
+ SMSG_STOP_MIRROR_TIMER = 0x2704,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x275E,
SMSG_STREAMING_MOVIES = 0x25A3,
- SMSG_SUMMON_CANCEL = 0x26A5,
+ SMSG_SUMMON_CANCEL = 0x26A7,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F,
- SMSG_SUMMON_REQUEST = 0x2712,
+ SMSG_SUMMON_REQUEST = 0x2714,
SMSG_SUPERCEDED_SPELLS = 0x2C4C,
SMSG_SUSPEND_COMMS = 0x304A,
SMSG_SUSPEND_TOKEN = 0x25A6,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x286D,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2708,
- SMSG_TAXI_NODE_STATUS = 0x2671,
- SMSG_TEXT_EMOTE = 0x266F,
- SMSG_THREAT_CLEAR = 0x26CF,
- SMSG_THREAT_REMOVE = 0x26CE,
- SMSG_THREAT_UPDATE = 0x26CD,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x286E,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x270A,
+ SMSG_TAXI_NODE_STATUS = 0x2673,
+ SMSG_TEXT_EMOTE = 0x2671,
+ SMSG_THREAT_CLEAR = 0x26D1,
+ SMSG_THREAT_REMOVE = 0x26D0,
+ SMSG_THREAT_UPDATE = 0x26CF,
SMSG_TIME_ADJUSTMENT = 0x2DD3,
SMSG_TIME_SYNC_REQUEST = 0x2DD2,
- SMSG_TITLE_EARNED = 0x26CA,
- SMSG_TITLE_LOST = 0x26CB,
- SMSG_TOTEM_CREATED = 0x26BB,
- SMSG_TOTEM_DURATION_CHANGED = 0x26BC,
- SMSG_TOTEM_MOVED = 0x26BD,
+ SMSG_TITLE_EARNED = 0x26CC,
+ SMSG_TITLE_LOST = 0x26CD,
+ SMSG_TOTEM_CREATED = 0x26BD,
+ SMSG_TOTEM_DURATION_CHANGED = 0x26BE,
+ SMSG_TOTEM_MOVED = 0x26BF,
SMSG_TRADE_STATUS = 0x2582,
SMSG_TRADE_UPDATED = 0x2581,
- SMSG_TRAINER_BUY_FAILED = 0x26D2,
- SMSG_TRAINER_LIST = 0x26D1,
- SMSG_TRANSFER_ABORTED = 0x26F4,
- SMSG_TRANSFER_PENDING = 0x25C8,
- SMSG_TRANSMOGRIFY_NPC = 0x27E5,
+ SMSG_TRAINER_BUY_FAILED = 0x26D4,
+ SMSG_TRAINER_LIST = 0x26D3,
+ SMSG_TRANSFER_ABORTED = 0x26F6,
+ SMSG_TRANSFER_PENDING = 0x25C9,
+ SMSG_TRANSMOGRIFY_NPC = 0x27E6,
SMSG_TREASURE_PICKER_RESPONSE = 0x291F,
- SMSG_TRIGGER_CINEMATIC = 0x27B6,
- SMSG_TRIGGER_MOVIE = 0x26BE,
- SMSG_TURN_IN_PETITION_RESULT = 0x273E,
- SMSG_TUTORIAL_FLAGS = 0x27A9,
+ SMSG_TRIGGER_CINEMATIC = 0x27B8,
+ SMSG_TRIGGER_MOVIE = 0x26C0,
+ SMSG_TURN_IN_PETITION_RESULT = 0x2740,
+ SMSG_TUTORIAL_FLAGS = 0x27AB,
SMSG_TWITTER_STATUS = 0x3043,
- SMSG_UI_HEALING_RANGE_MODIFIED = 0x2734,
- SMSG_UI_ITEM_INTERACTION_NPC = 0x27E7,
+ SMSG_UI_HEALING_RANGE_MODIFIED = 0x2736,
+ SMSG_UI_ITEM_INTERACTION_NPC = 0x27E8,
SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27B9,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27BA,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27BB,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27BC,
SMSG_UNLEARNED_SPELLS = 0x2C4E,
SMSG_UNLOAD_CHILD_MAP = 0x257A,
- SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2887,
- SMSG_UPDATE_ACCOUNT_DATA = 0x26FA,
- SMSG_UPDATE_ACTION_BUTTONS = 0x25D8,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x2811,
+ SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2888,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x26FC,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x25D9,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x2812,
SMSG_UPDATE_CAPTURE_POINT = 0x2929,
- SMSG_UPDATE_CELESTIAL_BODY = 0x280D,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x27AF,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2756,
- SMSG_UPDATE_COOLDOWN = 0x2755,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x280E,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27B1,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2758,
+ SMSG_UPDATE_COOLDOWN = 0x2757,
SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x263C,
- SMSG_UPDATE_GAME_TIME_STATE = 0x2814,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x269E,
- SMSG_UPDATE_LAST_INSTANCE = 0x267D,
- SMSG_UPDATE_OBJECT = 0x27B7,
- SMSG_UPDATE_PRIMARY_SPEC = 0x25D0,
- SMSG_UPDATE_TALENT_DATA = 0x25CF,
- SMSG_UPDATE_TASK_PROGRESS = 0x277B,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x263D,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x2815,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A0,
+ SMSG_UPDATE_LAST_INSTANCE = 0x267F,
+ SMSG_UPDATE_OBJECT = 0x27B9,
+ SMSG_UPDATE_PRIMARY_SPEC = 0x25D1,
+ SMSG_UPDATE_TALENT_DATA = 0x25D0,
+ SMSG_UPDATE_TASK_PROGRESS = 0x277D,
SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19,
- SMSG_UPDATE_WORLD_STATE = 0x2738,
+ SMSG_UPDATE_WORLD_STATE = 0x273A,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x273F,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2808,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2806,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2805,
- SMSG_VAS_PURCHASE_COMPLETE = 0x27E1,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E0,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x2741,
+ SMSG_VAS_ASSIGN_DISTRIBUTION_RESPONSE = 0x288A,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2809,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2807,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2806,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x27E2,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E1,
SMSG_VENDOR_INVENTORY = 0x25B4,
- SMSG_VIGNETTE_UPDATE = 0x3009,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x280C,
- SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2881,
- SMSG_VOICE_LOGIN_RESPONSE = 0x280B,
+ SMSG_VIGNETTE_UPDATE = 0x3008,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x280D,
+ SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2882,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x280C,
SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4,
SMSG_VOID_STORAGE_CONTENTS = 0x2DA1,
SMSG_VOID_STORAGE_FAILED = 0x2DA0,
@@ -1935,24 +1952,24 @@ enum OpcodeServer : uint16
SMSG_WAIT_QUEUE_FINISH = 0x256F,
SMSG_WAIT_QUEUE_UPDATE = 0x256E,
SMSG_WARDEN3_DATA = 0x2577,
- SMSG_WARDEN3_DISABLED = 0x280F,
- SMSG_WARDEN3_ENABLED = 0x280E,
- SMSG_WARFRONT_COMPLETE = 0x274E,
- SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2932,
- SMSG_WEATHER = 0x269B,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2878,
- SMSG_WEEKLY_REWARDS_RESULT = 0x2876,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2877,
+ SMSG_WARDEN3_DISABLED = 0x2810,
+ SMSG_WARDEN3_ENABLED = 0x280F,
+ SMSG_WARFRONT_COMPLETE = 0x2750,
+ SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933,
+ SMSG_WEATHER = 0x269D,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2879,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x2877,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2878,
SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x269A,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2813,
- SMSG_WORLD_MAP_OPEN_NPC = 0x27E4,
- SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x3010,
+ SMSG_WHO_IS = 0x269C,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2814,
+ SMSG_WORLD_MAP_OPEN_NPC = 0x27E5,
+ SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F,
SMSG_WORLD_SERVER_INFO = 0x25AB,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x286E,
- SMSG_XP_GAIN_ABORTED = 0x25C4,
- SMSG_XP_GAIN_ENABLED = 0x2799,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x286F,
+ SMSG_XP_GAIN_ABORTED = 0x25C5,
+ SMSG_XP_GAIN_ENABLED = 0x279B,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index ed50b2d1b95..0c97b79ed05 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -622,6 +622,7 @@ namespace WorldPackets
namespace Query
{
class QueryCreature;
+ struct NameCacheLookupResult;
class QueryPlayerName;
class QueryPageText;
class QueryNPCText;
@@ -832,25 +833,26 @@ namespace pb = google::protobuf;
enum AccountDataType
{
- GLOBAL_CONFIG_CACHE = 0, // 0x01 g
- PER_CHARACTER_CONFIG_CACHE = 1, // 0x02 p
- GLOBAL_BINDINGS_CACHE = 2, // 0x04 g
- PER_CHARACTER_BINDINGS_CACHE = 3, // 0x08 p
- GLOBAL_MACROS_CACHE = 4, // 0x10 g
- PER_CHARACTER_MACROS_CACHE = 5, // 0x20 p
- PER_CHARACTER_LAYOUT_CACHE = 6, // 0x40 p
- PER_CHARACTER_CHAT_CACHE = 7, // 0x80 p
- GLOBAL_TTS_CACHE = 8,
- PER_CHARACTER_TTS_CACHE = 9,
- GLOBAL_FLAGGED_CACHE = 10,
- PER_CHARACTER_FLAGGED_CACHE = 11
+ GLOBAL_CONFIG_CACHE = 0, // 0x01 g
+ PER_CHARACTER_CONFIG_CACHE = 1, // 0x02 p
+ GLOBAL_BINDINGS_CACHE = 2, // 0x04 g
+ PER_CHARACTER_BINDINGS_CACHE = 3, // 0x08 p
+ GLOBAL_MACROS_CACHE = 4, // 0x10 g
+ PER_CHARACTER_MACROS_CACHE = 5, // 0x20 p
+ PER_CHARACTER_LAYOUT_CACHE = 6, // 0x40 p
+ PER_CHARACTER_CHAT_CACHE = 7, // 0x80 p
+ GLOBAL_TTS_CACHE = 8,
+ PER_CHARACTER_TTS_CACHE = 9,
+ GLOBAL_FLAGGED_CACHE = 10,
+ PER_CHARACTER_FLAGGED_CACHE = 11,
+ PER_CHARACTER_CLICK_BINDINGS_CACHE = 12,
};
-#define NUM_ACCOUNT_DATA_TYPES 12
+#define NUM_ACCOUNT_DATA_TYPES 13
-#define ALL_ACCOUNT_DATA_CACHE_MASK 0xFFF
+#define ALL_ACCOUNT_DATA_CACHE_MASK 0x1FFF
#define GLOBAL_CACHE_MASK 0x515
-#define PER_CHARACTER_CACHE_MASK 0xAEA
+#define PER_CHARACTER_CACHE_MASK 0x1AEA
struct AccountData
{
@@ -1046,7 +1048,7 @@ class TC_GAME_API WorldSession
void SendFeatureSystemStatus();
void SendFeatureSystemStatusGlueScreen();
- void SendNameQueryOpcode(ObjectGuid guid);
+ void BuildNameQueryData(ObjectGuid guid, WorldPackets::Query::NameCacheLookupResult& lookupData);
void SendTrainerList(Creature* npc, uint32 trainerId);
void SendListInventory(ObjectGuid guid);
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index 40c3782806d..76b521b9358 100644
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -503,6 +503,12 @@ class TC_SHARED_API ByteBuffer
append(str.c_str(), len);
}
+ void WriteString(std::string_view str)
+ {
+ if (size_t len = str.length())
+ append(str.data(), len);
+ }
+
void WriteString(char const* str, size_t len)
{
if (len)