aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-11-04 21:39:21 +0100
committerShauren <shauren.trinity@gmail.com>2020-12-08 18:16:41 +0100
commitcab4c87d2d7f6d734ef067d6bf50f4b1d338a7bc (patch)
tree2eaf0fd8bc9e937a4c9611e18dd04d5001189036 /src
parent16b39a448acbe8ace88550a367be8e6bf565b00d (diff)
Core/PacketIO: Updated most packet structures to 9.0.1
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/CoreAI/GameObjectAI.cpp6
-rw-r--r--src/server/game/AI/CoreAI/GameObjectAI.h4
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.cpp6
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.h4
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp26
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h14
-rw-r--r--src/server/game/Entities/Object/Object.cpp5
-rw-r--r--src/server/game/Entities/Player/EquipmentSet.h4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
-rw-r--r--src/server/game/Garrison/Garrison.cpp10
-rw-r--r--src/server/game/Garrison/Garrison.h2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp2
-rw-r--r--src/server/game/Globals/ObjectMgr.h16
-rw-r--r--src/server/game/Guilds/Guild.cpp10
-rw-r--r--src/server/game/Handlers/BattleGroundHandler.cpp2
-rw-r--r--src/server/game/Handlers/CalendarHandler.cpp42
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp69
-rw-r--r--src/server/game/Handlers/GarrisonHandler.cpp4
-rw-r--r--src/server/game/Handlers/HotfixHandler.cpp2
-rw-r--r--src/server/game/Handlers/LFGHandler.cpp10
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp2
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp33
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp9
-rw-r--r--src/server/game/Handlers/TicketHandler.cpp48
-rw-r--r--src/server/game/Loot/LootMgr.h6
-rw-r--r--src/server/game/Movement/Spline/MoveSpline.cpp3
-rw-r--r--src/server/game/Movement/Spline/MoveSpline.h1
-rw-r--r--src/server/game/Movement/Spline/MoveSplineFlag.h58
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.h4
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInitArgs.h7
-rw-r--r--src/server/game/Movement/Spline/MovementUtil.cpp68
-rw-r--r--src/server/game/Quests/QuestDef.h1
-rw-r--r--src/server/game/Scenarios/ScenarioMgr.h14
-rw-r--r--src/server/game/Server/Packets/AreaTriggerPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/AreaTriggerPackets.h7
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp8
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h2
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h6
-rw-r--r--src/server/game/Server/Packets/BattlePetPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h8
-rw-r--r--src/server/game/Server/Packets/CalendarPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/CalendarPackets.h20
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.h2
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp236
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h99
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/ClientConfigPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/ClientConfigPackets.h2
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.h4
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.cpp208
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.h18
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.cpp169
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h59
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/GuildPackets.h4
-rw-r--r--src/server/game/Server/Packets/HotfixPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/HotfixPackets.h4
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp19
-rw-r--r--src/server/game/Server/Packets/InspectPackets.h8
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/ItemPacketsCommon.cpp136
-rw-r--r--src/server/game/Server/Packets/ItemPacketsCommon.h53
-rw-r--r--src/server/game/Server/Packets/LFGPackets.cpp24
-rw-r--r--src/server/game/Server/Packets/LFGPackets.h35
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp18
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h16
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp109
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h41
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp89
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h23
-rw-r--r--src/server/game/Server/Packets/PacketUtilities.cpp5
-rw-r--r--src/server/game/Server/Packets/PacketUtilities.h95
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp26
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h19
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp15
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h1
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp188
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h75
-rw-r--r--src/server/game/Server/Packets/ReputationPackets.h2
-rw-r--r--src/server/game/Server/Packets/ScenarioPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/SocialPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp57
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h49
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp67
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h45
-rw-r--r--src/server/game/Server/Packets/TicketPackets.cpp16
-rw-r--r--src/server/game/Server/Packets/TicketPackets.h16
-rw-r--r--src/server/game/Server/Packets/TransmogrificationPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/TransmogrificationPackets.h1
-rw-r--r--src/server/game/Server/Packets/WardenPackets.h2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp219
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2720
-rw-r--r--src/server/game/Server/WorldSession.cpp9
-rw-r--r--src/server/game/Server/WorldSession.h36
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp2
-rw-r--r--src/server/game/Spells/Spell.cpp13
-rw-r--r--src/server/scripts/Commands/cs_go.cpp6
101 files changed, 3142 insertions, 2541 deletions
diff --git a/src/server/game/AI/CoreAI/GameObjectAI.cpp b/src/server/game/AI/CoreAI/GameObjectAI.cpp
index 94fe71f449d..e9ac3f67e6b 100644
--- a/src/server/game/AI/CoreAI/GameObjectAI.cpp
+++ b/src/server/game/AI/CoreAI/GameObjectAI.cpp
@@ -18,6 +18,7 @@
#include "GameObjectAI.h"
#include "CreatureAI.h"
#include "GameObject.h"
+#include "LootMgr.h"
#include "QuestDef.h"
int32 GameObjectAI::Permissible(GameObject const* /*go*/)
@@ -25,6 +26,11 @@ int32 GameObjectAI::Permissible(GameObject const* /*go*/)
return PERMIT_BASE_NO;
}
+void GameObjectAI::QuestReward(Player* player, Quest const* quest, uint32 opt)
+{
+ QuestReward(player, quest, LootItemType::Item, opt);
+}
+
uint32 GameObjectAI::GetDialogStatus(Player* /*player*/)
{
return DIALOG_STATUS_SCRIPTED_NO_STATUS;
diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h
index 1e15325eefb..3299e0d66d7 100644
--- a/src/server/game/AI/CoreAI/GameObjectAI.h
+++ b/src/server/game/AI/CoreAI/GameObjectAI.h
@@ -26,6 +26,7 @@ class Player;
class Quest;
class SpellInfo;
class Unit;
+enum class LootItemType : uint8;
class TC_GAME_API GameObjectAI
{
@@ -61,7 +62,8 @@ class TC_GAME_API GameObjectAI
virtual void QuestAccept(Player* /*player*/, Quest const* /*quest*/) { }
// Called when a player completes a quest and is rewarded, opt is the selected item's index or 0
- virtual void QuestReward(Player* /*player*/, Quest const* /*quest*/, uint32 /*opt*/) { }
+ virtual void QuestReward(Player* player, Quest const* quest, uint32 opt);
+ virtual void QuestReward(Player* /*player*/, Quest const* /*quest*/, LootItemType /*type*/, uint32 /*opt*/) { }
// Called when the dialog status between a player and the gameobject is requested.
virtual uint32 GetDialogStatus(Player* player);
diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp
index 55c4f780285..a7204104e9f 100644
--- a/src/server/game/AI/CoreAI/UnitAI.cpp
+++ b/src/server/game/AI/CoreAI/UnitAI.cpp
@@ -18,6 +18,7 @@
#include "UnitAI.h"
#include "Creature.h"
#include "CreatureAIImpl.h"
+#include "LootMgr.h"
#include "Map.h"
#include "MotionMaster.h"
#include "Player.h"
@@ -312,6 +313,11 @@ void UnitAI::FillAISpellInfo()
});
}
+void UnitAI::QuestReward(Player* player, Quest const* quest, uint32 opt)
+{
+ QuestReward(player, quest, LootItemType::Item, opt);
+}
+
uint32 UnitAI::GetDialogStatus(Player* /*player*/)
{
return DIALOG_STATUS_SCRIPTED_NO_STATUS;
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h
index cec43d12698..41405a11b24 100644
--- a/src/server/game/AI/CoreAI/UnitAI.h
+++ b/src/server/game/AI/CoreAI/UnitAI.h
@@ -43,6 +43,7 @@ struct AISpellInfoType;
enum DamageEffectType : uint8;
enum Difficulty : uint8;
enum SpellEffIndex : uint8;
+enum class LootItemType : uint8;
//Selection method used by SelectTarget
enum SelectAggroTarget
@@ -321,7 +322,8 @@ class TC_GAME_API UnitAI
virtual void QuestAccept(Player* /*player*/, Quest const* /*quest*/) { }
// Called when a player completes a quest and is rewarded, opt is the selected item's index or 0
- virtual void QuestReward(Player* /*player*/, Quest const* /*quest*/, uint32 /*opt*/) { }
+ virtual void QuestReward(Player* player, Quest const* quest, uint32 opt);
+ virtual void QuestReward(Player* /*player*/, Quest const* /*quest*/, LootItemType /*type*/, uint32 /*opt*/) { }
// Called when a game event starts or ends
virtual void OnGameEvent(bool /*start*/, uint16 /*eventId*/) { }
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index aad55cd5c30..d1747b784ba 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -242,9 +242,8 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID)
{
WorldPackets::NPC::ClientGossipText& text = packet.GossipText[count];
text.QuestID = questID;
+ text.ContentTuningID = quest->GetContentTuningId();
text.QuestType = item.QuestIcon;
- text.QuestLevel = quest->GetQuestLevel();
- text.QuestMaxScalingLevel = quest->GetQuestMaxScalingLevel();
text.QuestFlags[0] = quest->GetFlags();
text.QuestFlags[1] = quest->GetFlagsEx();
text.Repeatable = quest->IsRepeatable();
@@ -375,19 +374,20 @@ void PlayerMenu::SendQuestGiverQuestListMessage(Object* questgiver)
if (Quest const* quest = sObjectMgr->GetQuestTemplate(questID))
{
- std::string title = quest->GetLogTitle();
+ questList.QuestDataText.emplace_back();
+ WorldPackets::NPC::ClientGossipText& text = questList.QuestDataText.back();
+ text.QuestID = questID;
+ text.ContentTuningID = quest->GetContentTuningId();
+ text.QuestType = questMenuItem.QuestIcon;
+ text.QuestFlags[0] = quest->GetFlags();
+ text.QuestFlags[1] = quest->GetFlagsEx();
+ text.Repeatable = quest->IsRepeatable();
+ text.QuestTitle = quest->GetLogTitle();
+ LocaleConstant localeConstant = _session->GetSessionDbLocaleIndex();
if (localeConstant != LOCALE_enUS)
- if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(questID))
- ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, localeConstant, title);
-
- if (questLevelInTitle)
- Quest::AddQuestLevelToTitle(title, quest->GetQuestLevel());
-
- bool repeatable = false; // NYI
-
- questList.QuestDataText.emplace_back(questID, questMenuItem.QuestIcon, quest->GetQuestLevel(), quest->GetQuestMaxScalingLevel(),
- quest->GetFlags(), quest->GetFlagsEx(), repeatable, std::move(title));
+ if (QuestTemplateLocale const* localeData = sObjectMgr->GetQuestLocale(questID))
+ ObjectMgr::GetLocaleString(localeData->LogTitle, localeConstant, text.QuestTitle);
}
}
diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h
index ca36c9e024e..cd4ec97ae76 100644
--- a/src/server/game/Entities/Creature/GossipDef.h
+++ b/src/server/game/Entities/Creature/GossipDef.h
@@ -129,6 +129,20 @@ enum Poi_Icon
ICON_POI_REDHORSE = 40 // Red Horse
};
+enum class GossipOptionStatus : uint8
+{
+ Available = 0,
+ Unavailable = 1,
+ Locked = 2,
+ AlreadyComplete = 3
+};
+
+enum class GossipOptionRewardType : uint8
+{
+ Item = 0,
+ Currency = 1
+};
+
struct GossipMenuItem
{
uint8 MenuItemIcon;
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index d52e93b7e18..0661811d60d 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -481,6 +481,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
bool hasAreaTriggerCylinder = areaTriggerTemplate->IsCylinder();
bool hasAreaTriggerSpline = areaTrigger->HasSplines();
bool hasOrbit = areaTrigger->HasOrbit();
+ bool hasMovementScript = false;
data->WriteBit(hasAbsoluteOrientation);
data->WriteBit(hasDynamicShape);
@@ -503,6 +504,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
data->WriteBit(hasAreaTriggerCylinder);
data->WriteBit(hasAreaTriggerSpline);
data->WriteBit(hasOrbit);
+ data->WriteBit(hasMovementScript);
if (hasUnk3)
data->WriteBit(false);
@@ -581,6 +583,9 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
*data << float(areaTriggerTemplate->CylinderDatas.LocationZOffsetTarget);
}
+ //if (hasMovementScript)
+ // *data << *areaTrigger->GetMovementScript(); // AreaTriggerMovementScriptInfo
+
if (hasOrbit)
*data << *areaTrigger->GetCircularMovementInfo();
}
diff --git a/src/server/game/Entities/Player/EquipmentSet.h b/src/server/game/Entities/Player/EquipmentSet.h
index ce9d0952e21..7181b7d89ee 100644
--- a/src/server/game/Entities/Player/EquipmentSet.h
+++ b/src/server/game/Entities/Player/EquipmentSet.h
@@ -52,8 +52,10 @@ struct EquipmentSetInfo
std::string SetName;
std::string SetIcon;
std::array<ObjectGuid, EQUIPMENT_SET_SLOTS> Pieces;
- std::array<int32, EQUIPMENT_SET_SLOTS> Appearances; ///< ItemModifiedAppearanceID
+ std::array<int32, EQUIPMENT_SET_SLOTS> Appearances; ///< ItemModifiedAppearanceID
std::array<int32, 2> Enchants; ///< SpellItemEnchantmentID
+ int32 Unknown901_1 = 0;
+ int32 Unknown901_2 = 0;
} Data;
/// Server-side data
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index c1c3f5bfa23..f71064390d6 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -7846,10 +7846,6 @@ void Unit::Dismount()
if (Player* thisPlayer = ToPlayer())
thisPlayer->SendMovementSetCollisionHeight(thisPlayer->GetCollisionHeight(false));
- WorldPackets::Misc::Dismount data;
- data.Guid = GetGUID();
- SendMessageToSet(data.Write(), true);
-
// dismount as a vehicle
if (GetTypeId() == TYPEID_PLAYER && GetVehicleKit())
{
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp
index 0a16ac42e36..9c84f6a712b 100644
--- a/src/server/game/Garrison/Garrison.cpp
+++ b/src/server/game/Garrison/Garrison.cpp
@@ -590,20 +590,20 @@ void Garrison::SendBlueprintAndSpecializationData()
_owner->SendDirectMessage(data.Write());
}
-void Garrison::SendBuildingLandmarks(Player* receiver) const
+void Garrison::SendMapData(Player* receiver) const
{
- WorldPackets::Garrison::GarrisonBuildingLandmarks buildingLandmarks;
- buildingLandmarks.Landmarks.reserve(_plots.size());
+ WorldPackets::Garrison::GarrisonMapDataResponse mapData;
+ mapData.Buildings.reserve(_plots.size());
for (auto const& p : _plots)
{
Plot const& plot = p.second;
if (plot.BuildingInfo.PacketInfo)
if (uint32 garrBuildingPlotInstId = sGarrisonMgr.GetGarrBuildingPlotInst(plot.BuildingInfo.PacketInfo->GarrBuildingID, plot.GarrSiteLevelPlotInstId))
- buildingLandmarks.Landmarks.emplace_back(garrBuildingPlotInstId, plot.PacketInfo.PlotPos.Pos);
+ mapData.Buildings.emplace_back(garrBuildingPlotInstId, plot.PacketInfo.PlotPos.Pos);
}
- receiver->SendDirectMessage(buildingLandmarks.Write());
+ receiver->SendDirectMessage(mapData.Write());
}
Map* Garrison::FindMap() const
diff --git a/src/server/game/Garrison/Garrison.h b/src/server/game/Garrison/Garrison.h
index 5d76eae3e64..8a4551521be 100644
--- a/src/server/game/Garrison/Garrison.h
+++ b/src/server/game/Garrison/Garrison.h
@@ -257,7 +257,7 @@ public:
void SendInfo();
void SendRemoteInfo() const;
void SendBlueprintAndSpecializationData();
- void SendBuildingLandmarks(Player* receiver) const;
+ void SendMapData(Player* receiver) const;
void ResetFollowerActivationLimit() { _followerActivationsRemainingToday = 1; }
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 2e4e837c10e..52884fd4110 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -7955,7 +7955,7 @@ void ObjectMgr::LoadQuestPOI()
{
QuestPOIData& poiData = _questPOIStore[questID];
poiData.QuestID = questID;
- poiData.QuestPOIBlobDataStats.emplace_back(blobIndex, objectiveIndex, questObjectiveID, questObjectID, mapID, uiMapID, priority, flags,
+ poiData.Blobs.emplace_back(blobIndex, objectiveIndex, questObjectiveID, questObjectID, mapID, uiMapID, priority, flags,
worldEffectID, playerConditionID, spawnTrackingID, std::move(POIs[questID][idx1]), alwaysAllowMergingBlobs);
}
else
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index ce1cd5d6ea0..0a113095374 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -719,9 +719,10 @@ struct QuestPOIBlobPoint
{
int32 X;
int32 Y;
+ int32 Z;
- QuestPOIBlobPoint() : X(0), Y(0) { }
- QuestPOIBlobPoint(int32 _X, int32 _Y) : X(_X), Y(_Y) { }
+ QuestPOIBlobPoint() : X(0), Y(0), Z(0) { }
+ QuestPOIBlobPoint(int32 x, int32 y) : X(x), Y(y), Z(0) { }
};
struct QuestPOIBlobData
@@ -736,24 +737,25 @@ struct QuestPOIBlobData
int32 Flags;
int32 WorldEffectID;
int32 PlayerConditionID;
+ int32 NavigationPlayerConditionID;
int32 SpawnTrackingID;
- std::vector<QuestPOIBlobPoint> QuestPOIBlobPointStats;
+ std::vector<QuestPOIBlobPoint> Points;
bool AlwaysAllowMergingBlobs;
QuestPOIBlobData() : BlobIndex(0), ObjectiveIndex(0), QuestObjectiveID(0), QuestObjectID(0), MapID(0), UiMapID(0), Priority(0), Flags(0), WorldEffectID(0),
- PlayerConditionID(0), SpawnTrackingID(0), AlwaysAllowMergingBlobs(false) { }
+ PlayerConditionID(0), NavigationPlayerConditionID(0), SpawnTrackingID(0), AlwaysAllowMergingBlobs(false) { }
QuestPOIBlobData(int32 blobIndex, int32 objectiveIndex, int32 questObjectiveID, int32 questObjectID, int32 mapID, int32 uiMapID, int32 priority,
- int32 flags, int32 worldEffectID, int32 playerConditionID, int32 spawnTrackingID, std::vector<QuestPOIBlobPoint> questPOIBlobPointStats,
+ int32 flags, int32 worldEffectID, int32 playerConditionID, int32 spawnTrackingID, std::vector<QuestPOIBlobPoint> points,
bool alwaysAllowMergingBlobs) : BlobIndex(blobIndex), ObjectiveIndex(objectiveIndex), QuestObjectiveID(questObjectiveID),
QuestObjectID(questObjectID), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID),
- PlayerConditionID(playerConditionID), SpawnTrackingID(spawnTrackingID), QuestPOIBlobPointStats(std::move(questPOIBlobPointStats)),
+ PlayerConditionID(playerConditionID), NavigationPlayerConditionID(0), SpawnTrackingID(spawnTrackingID), Points(std::move(points)),
AlwaysAllowMergingBlobs(alwaysAllowMergingBlobs) { }
};
struct QuestPOIData
{
int32 QuestID = 0;
- std::vector<QuestPOIBlobData> QuestPOIBlobDataStats;
+ std::vector<QuestPOIBlobData> Blobs;
void InitializeQueryData();
ByteBuffer QueryDataBuffer;
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 9554f7dc869..56d2e458474 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -2264,11 +2264,11 @@ void Guild::SendEventAwayChanged(ObjectGuid const& memberGuid, bool afk, bool dn
else
member->RemFlag(GUILDMEMBER_STATUS_DND);
- WorldPackets::Guild::GuildEventAwayChange awayChange;
- awayChange.Guid = memberGuid;
- awayChange.AFK = afk;
- awayChange.DND = dnd;
- BroadcastPacket(awayChange.Write());
+ WorldPackets::Guild::GuildEventStatusChange statusChange;
+ statusChange.Guid = memberGuid;
+ statusChange.AFK = afk;
+ statusChange.DND = dnd;
+ BroadcastPacket(statusChange.Write());
}
void Guild::SendEventBankMoneyChanged() const
diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp
index 56eca9b75b1..6e94c89917d 100644
--- a/src/server/game/Handlers/BattleGroundHandler.cpp
+++ b/src/server/game/Handlers/BattleGroundHandler.cpp
@@ -600,7 +600,7 @@ void WorldSession::HandleReportPvPAFK(WorldPackets::Battleground::ReportPvPPlaye
reportedPlayer->ReportedAfkBy(_player);
}
-void WorldSession::HandleRequestRatedBattlefieldInfo(WorldPackets::Battleground::RequestRatedBattlefieldInfo& /*packet*/)
+void WorldSession::HandleRequestRatedPvpInfo(WorldPackets::Battleground::RequestRatedPvpInfo& /*packet*/)
{
WorldPackets::Battleground::RatedPvpInfo ratedPvpInfo;
SendPacket(ratedPvpInfo.Write());
diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp
index 0470e6f77e2..e80a8b3add6 100644
--- a/src/server/game/Handlers/CalendarHandler.cpp
+++ b/src/server/game/Handlers/CalendarHandler.cpp
@@ -124,10 +124,10 @@ void WorldSession::HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEve
sCalendarMgr->SendCalendarCommandResult(_player->GetGUID(), CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarCommunityFilter(WorldPackets::Calendar::CalendarCommunityFilter& calendarCommunityFilter)
+void WorldSession::HandleCalendarCommunityInvite(WorldPackets::Calendar::CalendarCommunityInviteRequest& calendarCommunityInvite)
{
if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId()))
- guild->MassInviteToEvent(this, calendarCommunityFilter.MinLevel, calendarCommunityFilter.MaxLevel, calendarCommunityFilter.MaxRankOrder);
+ guild->MassInviteToEvent(this, calendarCommunityInvite.MinLevel, calendarCommunityInvite.MaxLevel, calendarCommunityInvite.MaxRankOrder);
}
void WorldSession::HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent)
@@ -239,7 +239,7 @@ void WorldSession::HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyE
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarEventInvite(WorldPackets::Calendar::CalendarEventInvite& calendarEventInvite)
+void WorldSession::HandleCalendarInvite(WorldPackets::Calendar::CalendarInvite& calendarEventInvite)
{
ObjectGuid playerGuid = _player->GetGUID();
@@ -347,22 +347,22 @@ void WorldSession::HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEve
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarEventRsvp(WorldPackets::Calendar::CalendarEventRSVP& calendarEventRSVP)
+void WorldSession::HandleCalendarRsvp(WorldPackets::Calendar::CalendarRSVP& calendarRSVP)
{
ObjectGuid guid = _player->GetGUID();
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventRSVP.EventID))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarRSVP.EventID))
{
// I think we still should be able to remove self from locked events
- if (calendarEventRSVP.Status != CALENDAR_STATUS_REMOVED && calendarEvent->IsLocked())
+ if (calendarRSVP.Status != CALENDAR_STATUS_REMOVED && calendarEvent->IsLocked())
{
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_LOCKED);
return;
}
- if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarEventRSVP.InviteID))
+ if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarRSVP.InviteID))
{
- invite->SetStatus(CalendarInviteStatus(calendarEventRSVP.Status));
+ invite->SetStatus(CalendarInviteStatus(calendarRSVP.Status));
invite->SetResponseTime(time(nullptr));
sCalendarMgr->UpdateInvite(invite);
@@ -398,23 +398,23 @@ void WorldSession::HandleCalendarEventRemoveInvite(WorldPackets::Calendar::Calen
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_NO_INVITE);
}
-void WorldSession::HandleCalendarEventStatus(WorldPackets::Calendar::CalendarEventStatus& calendarEventStatus)
+void WorldSession::HandleCalendarStatus(WorldPackets::Calendar::CalendarStatus& calendarStatus)
{
ObjectGuid guid = _player->GetGUID();
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_STATUS [%s] EventId ["
+ TC_LOG_DEBUG("network", "CMSG_CALENDAR_STATUS [%s] EventId ["
UI64FMTD "] ownerInviteId [" UI64FMTD "], Invitee ([%s] id: ["
- UI64FMTD "], status %u", guid.ToString().c_str(), calendarEventStatus.EventID, calendarEventStatus.ModeratorID, calendarEventStatus.Guid.ToString().c_str(), calendarEventStatus.InviteID, calendarEventStatus.Status);
+ UI64FMTD "], status %u", guid.ToString().c_str(), calendarStatus.EventID, calendarStatus.ModeratorID, calendarStatus.Guid.ToString().c_str(), calendarStatus.InviteID, calendarStatus.Status);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventStatus.EventID))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarStatus.EventID))
{
- if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarEventStatus.InviteID))
+ if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarStatus.InviteID))
{
- invite->SetStatus((CalendarInviteStatus)calendarEventStatus.Status);
+ invite->SetStatus((CalendarInviteStatus)calendarStatus.Status);
sCalendarMgr->UpdateInvite(invite);
sCalendarMgr->SendCalendarEventStatus(*calendarEvent, *invite);
- sCalendarMgr->SendCalendarClearPendingAction(calendarEventStatus.Guid);
+ sCalendarMgr->SendCalendarClearPendingAction(calendarStatus.Guid);
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_NO_INVITE); // correct?
@@ -423,19 +423,19 @@ void WorldSession::HandleCalendarEventStatus(WorldPackets::Calendar::CalendarEve
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarEventModeratorStatus(WorldPackets::Calendar::CalendarEventModeratorStatus& calendarEventModeratorStatus)
+void WorldSession::HandleCalendarModeratorStatus(WorldPackets::Calendar::CalendarModeratorStatusQuery& calendarModeratorStatus)
{
ObjectGuid guid = _player->GetGUID();
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_MODERATOR_STATUS [%s] EventID ["
+ TC_LOG_DEBUG("network", "CMSG_CALENDAR_MODERATOR_STATUS [%s] EventID ["
UI64FMTD "] ModeratorID [" UI64FMTD "], Invitee ([%s] InviteID: ["
- UI64FMTD "], Status %u", guid.ToString().c_str(), calendarEventModeratorStatus.EventID, calendarEventModeratorStatus.ModeratorID, calendarEventModeratorStatus.Guid.ToString().c_str(), calendarEventModeratorStatus.InviteID, calendarEventModeratorStatus.Status);
+ UI64FMTD "], Status %u", guid.ToString().c_str(), calendarModeratorStatus.EventID, calendarModeratorStatus.ModeratorID, calendarModeratorStatus.Guid.ToString().c_str(), calendarModeratorStatus.InviteID, calendarModeratorStatus.Status);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventModeratorStatus.EventID))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarModeratorStatus.EventID))
{
- if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarEventModeratorStatus.InviteID))
+ if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarModeratorStatus.InviteID))
{
- invite->SetRank(CalendarModerationRank(calendarEventModeratorStatus.Status));
+ invite->SetRank(CalendarModerationRank(calendarModeratorStatus.Status));
sCalendarMgr->UpdateInvite(invite);
sCalendarMgr->SendCalendarEventModeratorStatusAlert(*calendarEvent, *invite);
}
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 9461ebdb276..49283ac0c26 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -309,10 +309,6 @@ bool LoginQueryHolder::Initialize()
void WorldSession::HandleCharEnum(PreparedQueryResult result)
{
- uint8 demonHunterCount = 0; // We use this counter to allow multiple demon hunter creations when allowed in config
- bool canAlwaysCreateDemonHunter = HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_DEMON_HUNTER);
- if (sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_DEMON_HUNTER) == 0) // char level = 0 means this check is disabled, so always true
- canAlwaysCreateDemonHunter = true;
WorldPackets::Character::EnumCharactersResult charEnum;
charEnum.Success = true;
charEnum.IsDeletedCharacters = false;
@@ -358,21 +354,11 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result)
if (!sCharacterCache->HasCharacterCacheEntry(charInfo.Guid)) // This can happen if characters are inserted into the database manually. Core hasn't loaded name data yet.
sCharacterCache->AddCharacterCacheEntry(charInfo.Guid, GetAccountId(), charInfo.Name, charInfo.SexID, charInfo.RaceID, charInfo.ClassID, charInfo.ExperienceLevel, false);
- if (charInfo.ClassID == CLASS_DEMON_HUNTER)
- demonHunterCount++;
-
- if (demonHunterCount >= sWorld->getIntConfig(CONFIG_DEMON_HUNTERS_PER_REALM) && !canAlwaysCreateDemonHunter)
- charEnum.HasDemonHunterOnRealm = true;
- else
- charEnum.HasDemonHunterOnRealm = false;
-
charEnum.MaxCharacterLevel = std::max<int32>(charEnum.MaxCharacterLevel, charInfo.ExperienceLevel);
}
while (result->NextRow());
}
- charEnum.IsTestDemonHunterCreationAllowed = canAlwaysCreateDemonHunter;
- charEnum.IsDemonHunterCreationAllowed = GetAccountExpansion() >= EXPANSION_LEGION || canAlwaysCreateDemonHunter;
charEnum.IsAlliedRacesCreationAllowed = GetAccountExpansion() >= EXPANSION_BATTLE_FOR_AZEROTH;
for (std::pair<uint8 const, RaceUnlockRequirement> const& requirement : sObjectMgr->GetRaceUnlockRequirements())
@@ -643,26 +629,12 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
if (result)
{
uint32 team = Player::TeamForRace(createInfo->Race);
- uint32 freeDemonHunterSlots = sWorld->getIntConfig(CONFIG_DEMON_HUNTERS_PER_REALM);
Field* field = result->Fetch();
uint8 accRace = field[1].GetUInt8();
if (checkDemonHunterReqs)
{
- uint8 accClass = field[2].GetUInt8();
- if (accClass == CLASS_DEMON_HUNTER)
- {
- if (freeDemonHunterSlots > 0)
- --freeDemonHunterSlots;
-
- if (freeDemonHunterSlots == 0)
- {
- SendCharCreate(CHAR_CREATE_FAILED);
- return;
- }
- }
-
if (!hasDemonHunterReqLevel)
{
uint8 accLevel = field[0].GetUInt8();
@@ -1376,6 +1348,40 @@ void WorldSession::HandleRequestForcedReactionsOpcode(WorldPackets::Reputation::
_player->GetReputationMgr().SendForceReactions();
}
+void WorldSession::HandleCheckCharacterNameAvailability(WorldPackets::Character::CheckCharacterNameAvailability& checkCharacterNameAvailability)
+{
+ // prevent character rename to invalid name
+ if (!normalizePlayerName(checkCharacterNameAvailability.Name))
+ {
+ SendPacket(WorldPackets::Character::CheckCharacterNameAvailabilityResult(checkCharacterNameAvailability.SequenceIndex, CHAR_NAME_NO_NAME).Write());
+ return;
+ }
+
+ ResponseCodes res = ObjectMgr::CheckPlayerName(checkCharacterNameAvailability.Name, GetSessionDbcLocale(), true);
+ if (res != CHAR_NAME_SUCCESS)
+ {
+ SendPacket(WorldPackets::Character::CheckCharacterNameAvailabilityResult(checkCharacterNameAvailability.SequenceIndex, res).Write());
+ return;
+ }
+
+ // check name limitations
+ if (!HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_RESERVEDNAME) && sObjectMgr->IsReservedName(checkCharacterNameAvailability.Name))
+ {
+ SendPacket(WorldPackets::Character::CheckCharacterNameAvailabilityResult(checkCharacterNameAvailability.SequenceIndex, CHAR_NAME_RESERVED).Write());
+ return;
+ }
+
+ // Ensure that there is no character with the desired new name
+ CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME);
+ stmt->setString(0, checkCharacterNameAvailability.Name);
+
+ _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt)
+ .WithPreparedCallback([this, sequenceIndex = checkCharacterNameAvailability.SequenceIndex](PreparedQueryResult result)
+ {
+ SendPacket(WorldPackets::Character::CheckCharacterNameAvailabilityResult(sequenceIndex, result ? CHAR_CREATE_NAME_IN_USE : RESPONSE_SUCCESS).Write());
+ }));
+}
+
void WorldSession::HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request)
{
if (!IsLegitCharacterForAccount(request.RenameInfo->Guid))
@@ -2670,13 +2676,8 @@ void WorldSession::SendCharFactionChange(ResponseCodes result, WorldPackets::Cha
packet.Display = boost::in_place();
packet.Display->Name = factionChangeInfo->Name;
packet.Display->SexID = factionChangeInfo->SexID;
- packet.Display->SkinID = factionChangeInfo->SkinID;
- packet.Display->HairColorID = factionChangeInfo->HairColorID;
- packet.Display->HairStyleID = factionChangeInfo->HairStyleID;
- packet.Display->FacialHairStyleID = factionChangeInfo->FacialHairStyleID;
- packet.Display->FaceID = factionChangeInfo->FaceID;
+ packet.Display->Customizations = &factionChangeInfo->Customizations;
packet.Display->RaceID = factionChangeInfo->RaceID;
- packet.Display->CustomDisplay = factionChangeInfo->CustomDisplay;
}
SendPacket(packet.Write());
diff --git a/src/server/game/Handlers/GarrisonHandler.cpp b/src/server/game/Handlers/GarrisonHandler.cpp
index 22f42084aa1..ef725a3cd39 100644
--- a/src/server/game/Handlers/GarrisonHandler.cpp
+++ b/src/server/game/Handlers/GarrisonHandler.cpp
@@ -50,8 +50,8 @@ void WorldSession::HandleGarrisonRequestBlueprintAndSpecializationData(WorldPack
garrison->SendBlueprintAndSpecializationData();
}
-void WorldSession::HandleGarrisonGetBuildingLandmarks(WorldPackets::Garrison::GarrisonGetBuildingLandmarks& /*garrisonGetBuildingLandmarks*/)
+void WorldSession::HandleGarrisonGetMapData(WorldPackets::Garrison::GarrisonGetMapData& /*garrisonGetMapData*/)
{
if (Garrison* garrison = _player->GetGarrison())
- garrison->SendBuildingLandmarks(_player);
+ garrison->SendMapData(_player);
}
diff --git a/src/server/game/Handlers/HotfixHandler.cpp b/src/server/game/Handlers/HotfixHandler.cpp
index 798b7060f2d..85880fd0786 100644
--- a/src/server/game/Handlers/HotfixHandler.cpp
+++ b/src/server/game/Handlers/HotfixHandler.cpp
@@ -42,7 +42,7 @@ void WorldSession::HandleDBQueryBulk(WorldPackets::Hotfix::DBQueryBulk& dbQuery)
if (store->HasRecord(record.RecordID))
{
- dbReply.Allow = true;
+ dbReply.Status = 1;
dbReply.Timestamp = GameTime::GetGameTime();
store->WriteRecord(record.RecordID, GetSessionDbcLocale(), dbReply.Data);
}
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index dd15b7e7590..b2982d5c36d 100644
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -151,7 +151,7 @@ void WorldSession::SendLfgPlayerLockInfo()
// Get player locked Dungeons
for (auto const& lock : sLFGMgr->GetLockedDungeons(_player->GetGUID()))
- lfgPlayerInfo.BlackList.Slot.emplace_back(lock.first, lock.second.lockStatus, lock.second.requiredItemLevel, lock.second.currentItemLevel);
+ lfgPlayerInfo.BlackList.Slot.emplace_back(lock.first, lock.second.lockStatus, lock.second.requiredItemLevel, lock.second.currentItemLevel, 0);
for (uint32 slot : randomDungeons)
{
@@ -224,7 +224,7 @@ void WorldSession::SendLfgPartyLockInfo()
WorldPackets::LFG::LFGBlackList& lfgBlackList = lfgPartyInfo.Player.back();
lfgBlackList.PlayerGuid = pguid;
for (auto const& lock : sLFGMgr->GetLockedDungeons(pguid))
- lfgBlackList.Slot.emplace_back(lock.first, lock.second.lockStatus, lock.second.requiredItemLevel, lock.second.currentItemLevel);
+ lfgBlackList.Slot.emplace_back(lock.first, lock.second.lockStatus, lock.second.requiredItemLevel, lock.second.currentItemLevel, 0);
}
TC_LOG_DEBUG("lfg", "SMSG_LFG_PARTY_INFO %s", GetPlayerInfo().c_str());
@@ -347,15 +347,15 @@ void WorldSession::SendLfgJoinResult(lfg::LfgJoinResultData const& joinData)
for (lfg::LfgLockPartyMap::const_iterator it = joinData.lockmap.begin(); it != joinData.lockmap.end(); ++it)
{
lfgJoinResult.BlackList.emplace_back();
- WorldPackets::LFG::LFGJoinBlackList& blackList = lfgJoinResult.BlackList.back();
- blackList.Guid = it->first;
+ WorldPackets::LFG::LFGBlackList& blackList = lfgJoinResult.BlackList.back();
+ blackList.PlayerGuid = it->first;
for (lfg::LfgLockMap::const_iterator itr = it->second.begin(); itr != it->second.end(); ++itr)
{
TC_LOG_TRACE("lfg", "SendLfgJoinResult:: %s DungeonID: %u Lock status: %u Required itemLevel: %u Current itemLevel: %f",
it->first.ToString().c_str(), (itr->first & 0x00FFFFFF), itr->second.lockStatus, itr->second.requiredItemLevel, itr->second.currentItemLevel);
- blackList.Slots.emplace_back(itr->first, itr->second.lockStatus, itr->second.requiredItemLevel, itr->second.currentItemLevel);
+ blackList.Slot.emplace_back(itr->first, itr->second.lockStatus, itr->second.requiredItemLevel, itr->second.currentItemLevel, 0);
}
}
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 66e891fe3ee..9f7c2532005 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -240,7 +240,7 @@ void WorldSession::HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTok
WorldPackets::Movement::NewWorld packet;
packet.MapID = loc.GetMapId();
- packet.Pos = loc;
+ packet.Loc.Pos = loc;
packet.Reason = !_player->IsBeingTeleportedSeamlessly() ? NEW_WORLD_NORMAL : NEW_WORLD_SEAMLESS;
SendPacket(packet.Write());
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 6bcb4f29a0b..9590356f3dd 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -26,6 +26,7 @@
#include "GossipDef.h"
#include "Group.h"
#include "Log.h"
+#include "LootMgr.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
#include "Player.h"
@@ -252,26 +253,31 @@ void WorldSession::HandleQuestQueryOpcode(WorldPackets::Quest::QueryQuestInfo& p
void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::QuestGiverChooseReward& packet)
{
- TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_CHOOSE_REWARD npc = %s, quest = %u, reward = %u", packet.QuestGiverGUID.ToString().c_str(), packet.QuestID, packet.ItemChoiceID);
+ TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_CHOOSE_REWARD npc = %s, quest = %u, reward = %u",
+ packet.QuestGiverGUID.ToString().c_str(), packet.QuestID, packet.Choice.Item.ItemID);
Quest const* quest = sObjectMgr->GetQuestTemplate(packet.QuestID);
if (!quest)
return;
- // This is Real Item Entry, not slot id as pre 5.x
- if (packet.ItemChoiceID)
+ // TODO: currency choice items
+ if (packet.Choice.LootItemType != LootItemType::Item)
+ return;
+
+ if (packet.Choice.Item.ItemID)
{
- ItemTemplate const* rewardProto = sObjectMgr->GetItemTemplate(packet.ItemChoiceID);
+ ItemTemplate const* rewardProto = sObjectMgr->GetItemTemplate(packet.Choice.Item.ItemID);
if (!rewardProto)
{
- TC_LOG_ERROR("entities.player.cheat", "Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (%s) tried to get invalid reward item (Item Entry: %u) for quest %u (possible packet-hacking detected)", _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), packet.ItemChoiceID, packet.QuestID);
+ TC_LOG_ERROR("entities.player.cheat", "Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (%s) tried to get invalid reward item (Item Entry: %u) for quest %u (possible packet-hacking detected)",
+ _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), packet.Choice.Item.ItemID, packet.QuestID);
return;
}
bool itemValid = false;
for (uint32 i = 0; i < quest->GetRewChoiceItemsCount(); ++i)
{
- if (quest->RewardChoiceItemId[i] && quest->RewardChoiceItemId[i] == uint32(packet.ItemChoiceID))
+ if (quest->RewardChoiceItemId[i] && quest->RewardChoiceItemId[i] == packet.Choice.Item.ItemID)
{
itemValid = true;
break;
@@ -284,7 +290,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
{
for (QuestPackageItemEntry const* questPackageItem : *questPackageItems)
{
- if (questPackageItem->ItemID != packet.ItemChoiceID)
+ if (questPackageItem->ItemID != packet.Choice.Item.ItemID)
continue;
if (_player->CanSelectQuestPackageItem(questPackageItem))
@@ -301,7 +307,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
{
for (QuestPackageItemEntry const* questPackageItem : *questPackageItems)
{
- if (questPackageItem->ItemID != packet.ItemChoiceID)
+ if (questPackageItem->ItemID != packet.Choice.Item.ItemID)
continue;
itemValid = true;
@@ -313,7 +319,8 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
if (!itemValid)
{
- TC_LOG_ERROR("entities.player.cheat", "Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (%s) tried to get reward item (Item Entry: %u) wich is not a reward for quest %u (possible packet-hacking detected)", _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), packet.ItemChoiceID, packet.QuestID);
+ TC_LOG_ERROR("entities.player.cheat", "Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (%s) tried to get reward item (Item Entry: %u) wich is not a reward for quest %u (possible packet-hacking detected)",
+ _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), packet.Choice.Item.ItemID, packet.QuestID);
return;
}
}
@@ -339,9 +346,9 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
return;
}
- if (_player->CanRewardQuest(quest, packet.ItemChoiceID, true))
+ if (_player->CanRewardQuest(quest, packet.Choice.Item.ItemID, true))
{
- _player->RewardQuest(quest, packet.ItemChoiceID, object);
+ _player->RewardQuest(quest, packet.Choice.Item.ItemID, object);
switch (object->GetTypeId())
{
@@ -364,7 +371,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
}
_player->PlayerTalkClass->ClearMenus();
- creatureQGiver->GetAI()->QuestReward(_player, quest, packet.ItemChoiceID);
+ creatureQGiver->GetAI()->QuestReward(_player, quest, packet.Choice.LootItemType, packet.Choice.Item.ItemID);
break;
}
case TYPEID_GAMEOBJECT:
@@ -384,7 +391,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::Quest
}
_player->PlayerTalkClass->ClearMenus();
- questGiver->AI()->QuestReward(_player, quest, packet.ItemChoiceID);
+ questGiver->AI()->QuestReward(_player, quest, packet.Choice.LootItemType, packet.Choice.Item.ItemID);
break;
}
default:
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 5ff33e97bf3..8ccfd1c29c3 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -541,13 +541,8 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorI
Guild* guild = player->GetGuild();
- mirrorImageComponentedData.SkinColor = player->m_playerData->SkinID;
- mirrorImageComponentedData.FaceVariation = player->m_playerData->FaceID;
- mirrorImageComponentedData.HairVariation = player->m_playerData->HairStyleID;
- mirrorImageComponentedData.HairColor = player->m_playerData->HairColorID;
- mirrorImageComponentedData.BeardVariation = player->m_playerData->FacialHairStyleID;
- for (uint32 i = 0; i < PLAYER_CUSTOM_DISPLAY_SIZE; ++i)
- mirrorImageComponentedData.CustomDisplay[i] = player->m_playerData->CustomDisplayOption[i];
+ for (UF::ChrCustomizationChoice customization : player->m_playerData->Customizations)
+ mirrorImageComponentedData.Customizations.push_back({ customization.ChrCustomizationOptionID, customization.ChrCustomizationChoiceID });
mirrorImageComponentedData.GuildGUID = (guild ? guild->GetGUID() : ObjectGuid::Empty);
mirrorImageComponentedData.ItemDisplayID.reserve(11);
diff --git a/src/server/game/Handlers/TicketHandler.cpp b/src/server/game/Handlers/TicketHandler.cpp
index ef1332dc4a2..af1b54218cd 100644
--- a/src/server/game/Handlers/TicketHandler.cpp
+++ b/src/server/game/Handlers/TicketHandler.cpp
@@ -40,30 +40,32 @@ void WorldSession::HandleGMTicketSystemStatusOpcode(WorldPackets::Ticket::GMTick
SendPacket(response.Write());
}
-void WorldSession::HandleSupportTicketSubmitBug(WorldPackets::Ticket::SupportTicketSubmitBug& packet)
+void WorldSession::HandleSubmitUserFeedback(WorldPackets::Ticket::SubmitUserFeedback& userFeedback)
{
- if (!sSupportMgr->GetBugSystemStatus())
- return;
-
- BugTicket* ticket = new BugTicket(GetPlayer());
- ticket->SetPosition(packet.Header.MapID, packet.Header.Position);
- ticket->SetFacing(packet.Header.Facing);
- ticket->SetNote(packet.Note);
-
- sSupportMgr->AddTicket(ticket);
-}
-
-void WorldSession::HandleSupportTicketSubmitSuggestion(WorldPackets::Ticket::SupportTicketSubmitSuggestion& packet)
-{
- if (!sSupportMgr->GetSuggestionSystemStatus())
- return;
-
- SuggestionTicket* ticket = new SuggestionTicket(GetPlayer());
- ticket->SetPosition(packet.Header.MapID, packet.Header.Position);
- ticket->SetFacing(packet.Header.Facing);
- ticket->SetNote(packet.Note);
-
- sSupportMgr->AddTicket(ticket);
+ if (userFeedback.IsSuggestion)
+ {
+ if (!sSupportMgr->GetSuggestionSystemStatus())
+ return;
+
+ SuggestionTicket* ticket = new SuggestionTicket(GetPlayer());
+ ticket->SetPosition(userFeedback.Header.MapID, userFeedback.Header.Position);
+ ticket->SetFacing(userFeedback.Header.Facing);
+ ticket->SetNote(userFeedback.Note);
+
+ sSupportMgr->AddTicket(ticket);
+ }
+ else
+ {
+ if (!sSupportMgr->GetBugSystemStatus())
+ return;
+
+ BugTicket* ticket = new BugTicket(GetPlayer());
+ ticket->SetPosition(userFeedback.Header.MapID, userFeedback.Header.Position);
+ ticket->SetFacing(userFeedback.Header.Facing);
+ ticket->SetNote(userFeedback.Note);
+
+ sSupportMgr->AddTicket(ticket);
+ }
}
void WorldSession::HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::SupportTicketSubmitComplaint& packet)
diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h
index c531d085b37..23915fec051 100644
--- a/src/server/game/Loot/LootMgr.h
+++ b/src/server/game/Loot/LootMgr.h
@@ -33,6 +33,12 @@ class Player;
struct Loot;
struct LootItem;
+enum class LootItemType : uint8
+{
+ Item = 0,
+ Currency = 1
+};
+
struct TC_GAME_API LootStoreItem
{
uint32 itemid; // id of the item
diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp
index 4d72d506549..336a6918dbe 100644
--- a/src/server/game/Movement/Spline/MoveSpline.cpp
+++ b/src/server/game/Movement/Spline/MoveSpline.cpp
@@ -54,7 +54,7 @@ Location MoveSpline::computePosition(int32 time_point, int32 point_index) const
}
else
{
- if (!splineflags.hasFlag(MoveSplineFlag::OrientationFixed | MoveSplineFlag::Falling | MoveSplineFlag::Unknown0))
+ if (!splineflags.hasFlag(MoveSplineFlag::OrientationFixed | MoveSplineFlag::Falling | MoveSplineFlag::Unknown0x8))
{
Vector3 hermite;
spline.evaluate_derivative(point_Idx, u, hermite);
@@ -191,6 +191,7 @@ void MoveSpline::Initialize(MoveSplineInitArgs const& args)
vertical_acceleration = 0.f;
effect_start_time = 0;
spell_effect_extra = args.spellEffectExtra;
+ anim_tier = args.animTier;
splineIsFacingOnly = args.path.size() == 2 && args.facing.type != MONSTER_MOVE_NORMAL && ((args.path[1] - args.path[0]).length() < 0.1f);
// Check if its a stop spline
diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h
index 0bc025fc5f0..c9d4745e036 100644
--- a/src/server/game/Movement/Spline/MoveSpline.h
+++ b/src/server/game/Movement/Spline/MoveSpline.h
@@ -81,6 +81,7 @@ namespace Movement
int32 point_Idx;
int32 point_Idx_offset;
Optional<SpellEffectExtraData> spell_effect_extra;
+ Optional<AnimTierTransition> anim_tier;
void init_spline(MoveSplineInitArgs const& args);
diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h
index 2f80d1d509c..a6396184a2e 100644
--- a/src/server/game/Movement/Spline/MoveSplineFlag.h
+++ b/src/server/game/Movement/Spline/MoveSplineFlag.h
@@ -30,13 +30,15 @@ namespace Movement
enum eFlags
{
None = 0x00000000,
- // x00-x07 used as animation Ids storage in pair with Animation flag
- Unknown0 = 0x00000008, // NOT VERIFIED - does someting related to falling/fixed orientation
+ Unknown_0x1 = 0x00000001, // NOT VERIFIED
+ Unknown_0x2 = 0x00000002, // NOT VERIFIED
+ Unknown_0x4 = 0x00000004, // NOT VERIFIED
+ Unknown_0x8 = 0x00000008, // NOT VERIFIED - does someting related to falling/fixed orientation
FallingSlow = 0x00000010,
Done = 0x00000020,
Falling = 0x00000040, // Affects elevation computation, can't be combined with Parabolic flag
No_Spline = 0x00000080,
- Unknown1 = 0x00000100, // NOT VERIFIED
+ Unknown_0x100 = 0x00000100, // NOT VERIFIED
Flying = 0x00000200, // Smooth movement(Catmullrom interpolation mode), flying animation
OrientationFixed = 0x00000400, // Model orientation fixed
Catmullrom = 0x00000800, // Used Catmullrom interpolation mode
@@ -45,29 +47,28 @@ namespace Movement
Frozen = 0x00004000, // Will never arrive
TransportEnter = 0x00008000,
TransportExit = 0x00010000,
- Unknown2 = 0x00020000, // NOT VERIFIED
- Unknown3 = 0x00040000, // NOT VERIFIED
+ Unknown_0x20000 = 0x00020000, // NOT VERIFIED
+ Unknown_0x40000 = 0x00040000, // NOT VERIFIED
Backward = 0x00080000,
SmoothGroundPath = 0x00100000,
CanSwim = 0x00200000,
UncompressedPath = 0x00400000,
- Unknown4 = 0x00800000, // NOT VERIFIED
- Unknown5 = 0x01000000, // NOT VERIFIED
+ Unknown_0x800000 = 0x00800000, // NOT VERIFIED
+ Unknown_0x1000000 = 0x01000000, // NOT VERIFIED
Animation = 0x02000000, // Plays animation after some time passed
Parabolic = 0x04000000, // Affects elevation computation, can't be combined with Falling flag
FadeObject = 0x08000000,
Steering = 0x10000000,
- Unknown8 = 0x20000000, // NOT VERIFIED
- Unknown9 = 0x40000000, // NOT VERIFIED
- Unknown10 = 0x80000000, // NOT VERIFIED
+ Unknown_0x20000000 = 0x20000000, // NOT VERIFIED
+ Unknown_0x40000000 = 0x40000000, // NOT VERIFIED
+ Unknown_0x80000000 = 0x80000000, // NOT VERIFIED
// Masks
- // animation ids stored here, see AnimType enum, used with Animation flag
- Mask_Animations = 0x7,
// flags that shouldn't be appended into SMSG_MONSTER_MOVE\SMSG_MONSTER_MOVE_TRANSPORT packet, should be more probably
- Mask_No_Monster_Move = Mask_Animations | Done,
+ Mask_No_Monster_Move = Done,
// Unused, not suported flags
- Mask_Unused = No_Spline|Enter_Cycle|Frozen|Unknown0|Unknown1|Unknown2|Unknown3|Unknown4|Unknown5|FadeObject|Steering|Unknown8|Unknown9|Unknown10
+ Mask_Unused = No_Spline | Enter_Cycle | Frozen | Unknown_0x8 | Unknown_0x100 | Unknown_0x20000 | Unknown_0x40000
+ | Unknown_0x800000 | Unknown_0x1000000 | FadeObject | Steering | Unknown_0x20000000 | Unknown_0x40000000 | Unknown_0x80000000
};
inline uint32& raw() { return (uint32&)*this; }
@@ -81,7 +82,6 @@ namespace Movement
bool isSmooth() const { return (raw() & Catmullrom) != 0; }
bool isLinear() const { return !isSmooth(); }
- uint8 getAnimTier() const { return animTier; }
bool hasAllFlags(uint32 f) const { return (raw() & f) == f; }
bool hasFlag(uint32 f) const { return (raw() & f) != 0; }
uint32 operator & (uint32 f) const { return (raw() & f); }
@@ -93,21 +93,23 @@ namespace Movement
void operator &= (uint32 f) { raw() &= f; }
void operator |= (uint32 f) { raw() |= f; }
- void EnableAnimation(uint8 anim) { raw() = (raw() & ~(Mask_Animations | Falling | Parabolic | FallingSlow | FadeObject)) | Animation | (anim & Mask_Animations); }
- void EnableParabolic() { raw() = (raw() & ~(Mask_Animations | Falling | Animation | FallingSlow | FadeObject)) | Parabolic; }
+ void EnableAnimation() { raw() = (raw() & ~(Falling | Parabolic | FallingSlow | FadeObject)) | Animation; }
+ void EnableParabolic() { raw() = (raw() & ~(Falling | Animation | FallingSlow | FadeObject)) | Parabolic; }
void EnableFlying() { raw() = (raw() & ~(Falling)) | Flying; }
- void EnableFalling() { raw() = (raw() & ~(Mask_Animations | Parabolic | Animation | Flying)) | Falling; }
+ void EnableFalling() { raw() = (raw() & ~(Parabolic | Animation | Flying)) | Falling; }
void EnableCatmullRom() { raw() = (raw() & ~SmoothGroundPath) | Catmullrom; }
void EnableTransportEnter() { raw() = (raw() & ~TransportExit) | TransportEnter; }
void EnableTransportExit() { raw() = (raw() & ~TransportEnter) | TransportExit; }
- uint8 animTier : 3;
- bool unknown0 : 1;
+ bool unknown0x1 : 1;
+ bool unknown0x2 : 1;
+ bool unknown0x4 : 1;
+ bool unknown0x8 : 1;
bool fallingSlow : 1;
bool done : 1;
bool falling : 1;
bool no_spline : 1;
- bool unknown1 : 1;
+ bool unknown0x100 : 1;
bool flying : 1;
bool orientationFixed : 1;
bool catmullrom : 1;
@@ -116,21 +118,21 @@ namespace Movement
bool frozen : 1;
bool transportEnter : 1;
bool transportExit : 1;
- bool unknown2 : 1;
- bool unknown3 : 1;
+ bool unknown0x20000 : 1;
+ bool unknown0x40000 : 1;
bool backward : 1;
bool smoothGroundPath : 1;
bool canSwim : 1;
bool uncompressedPath : 1;
- bool unknown4 : 1;
- bool unknown5 : 1;
+ bool unknown0x800000 : 1;
+ bool unknown0x1000000 : 1;
bool animation : 1;
bool parabolic : 1;
bool fadeObject : 1;
bool steering : 1;
- bool unknown8 : 1;
- bool unknown9 : 1;
- bool unknown10 : 1;
+ bool unknown0x20000000 : 1;
+ bool unknown0x40000000 : 1;
+ bool unknown0x80000000 : 1;
};
#pragma pack(pop)
}
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h
index 62678e2be91..fa33851475d 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.h
+++ b/src/server/game/Movement/Spline/MoveSplineInit.h
@@ -181,7 +181,9 @@ namespace Movement
inline void MoveSplineInit::SetAnimation(AnimType anim)
{
args.time_perc = 0.f;
- args.flags.EnableAnimation((uint8)anim);
+ args.animTier.emplace();
+ args.animTier->AnimTier = anim;
+ args.flags.EnableAnimation();
}
inline void MoveSplineInit::DisableTransportPathTransformations() { args.TransformForTransport = false; }
diff --git a/src/server/game/Movement/Spline/MoveSplineInitArgs.h b/src/server/game/Movement/Spline/MoveSplineInitArgs.h
index 6ae25b48de0..61d2b951c94 100644
--- a/src/server/game/Movement/Spline/MoveSplineInitArgs.h
+++ b/src/server/game/Movement/Spline/MoveSplineInitArgs.h
@@ -50,6 +50,12 @@ namespace Movement
uint32 ParabolicCurveId = 0;
};
+ struct AnimTierTransition
+ {
+ uint32 TierTransitionId = 0;
+ uint8 AnimTier = 0;
+ };
+
struct MoveSplineInitArgs
{
explicit MoveSplineInitArgs(size_t path_capacity = 16);
@@ -65,6 +71,7 @@ namespace Movement
uint32 splineId;
float initialOrientation;
Optional<SpellEffectExtraData> spellEffectExtra;
+ Optional<AnimTierTransition> animTier;
bool walk;
bool HasVelocity;
bool TransformForTransport;
diff --git a/src/server/game/Movement/Spline/MovementUtil.cpp b/src/server/game/Movement/Spline/MovementUtil.cpp
index 95ceb3752a5..f8e9ba0d8a6 100644
--- a/src/server/game/Movement/Spline/MovementUtil.cpp
+++ b/src/server/game/Movement/Spline/MovementUtil.cpp
@@ -133,13 +133,13 @@ namespace Movement
STRINGIZE(CanSwimToFlyTrans ), // 0x00000400
STRINGIZE(Unk11 ), // 0x00000800
STRINGIZE(CanTurnWhileFalling ), // 0x00001000
- STRINGIZE(Unkt13 ), // 0x00002000
+ STRINGIZE(Unk13 ), // 0x00002000
STRINGIZE(IgnoreMovementForces ), // 0x00004000
STRINGIZE(Unk15 ), // 0x00008000
STRINGIZE(CanDoubleJump ), // 0x00010000
STRINGIZE(DoubleJump ), // 0x00020000
STRINGIZE(Unk18 ), // 0x00040000
- STRINGIZE(Unk19 ), // 0x00080000
+ STRINGIZE(AwaitingLoad ), // 0x00080000
STRINGIZE(InterpolatedMovement ), // 0x00100000
STRINGIZE(InterpolatedTurning ), // 0x00200000
STRINGIZE(InterpolatedPitching ), // 0x00400000
@@ -147,38 +147,38 @@ namespace Movement
char const* SplineFlagNames[32] =
{
- STRINGIZE(AnimBit1 ), // 0x00000001
- STRINGIZE(AnimBit2 ), // 0x00000002
- STRINGIZE(AnimBit3 ), // 0x00000004
- STRINGIZE(Unknown0 ), // 0x00000008
- STRINGIZE(FallingSlow ), // 0x00000010
- STRINGIZE(Done ), // 0x00000020
- STRINGIZE(Falling ), // 0x00000040 // Not Compartible With Trajectory Movement
- STRINGIZE(No_Spline ), // 0x00000080
- STRINGIZE(Unknown1 ), // 0x00000100
- STRINGIZE(Flying ), // 0x00000200 // Smooth Movement(Catmullrom Interpolation Mode), Flying Animation
- STRINGIZE(OrientationFixed ), // 0x00000400 // Model Orientation Fixed
- STRINGIZE(Catmullrom ), // 0x00000800 // Used Catmullrom Interpolation Mode
- STRINGIZE(Cyclic ), // 0x00001000 // Movement By Cycled Spline
- STRINGIZE(Enter_Cycle ), // 0x00002000 // Everytime Appears With Cyclic Flag In Monster Move Packet
- STRINGIZE(Frozen ), // 0x00004000
- STRINGIZE(TransportEnter ), // 0x00008000
- STRINGIZE(TransportExit ), // 0x00010000
- STRINGIZE(Unknown2 ), // 0x00020000
- STRINGIZE(Unknown3 ), // 0x00040000
- STRINGIZE(Backward ), // 0x00080000 // Appears With Runmode Flag, Nodes ), // 1, Handles Orientation
- STRINGIZE(SmoothGroundPath ), // 0x00100000
- STRINGIZE(CanSwim ), // 0x00200000
- STRINGIZE(UncompressedPath ), // 0x00400000
- STRINGIZE(Unknown4 ), // 0x00800000
- STRINGIZE(Unknown5 ), // 0x01000000
- STRINGIZE(Animation ), // 0x02000000 // Animationid (0...3), Uint32 Time, Not Compartible With Trajectory And Fall Movement
- STRINGIZE(Parabolic ), // 0x04000000 // Not Compartible With Fall Movement
- STRINGIZE(FadeObject ), // 0x08000000
- STRINGIZE(Steering ), // 0x10000000
- STRINGIZE(Unknown8 ), // 0x20000000
- STRINGIZE(Unknown9 ), // 0x40000000
- STRINGIZE(Unknown10 ), // 0x80000000
+ STRINGIZE(Unknown_0x1 ), // 0x00000001
+ STRINGIZE(Unknown_0x2 ), // 0x00000002
+ STRINGIZE(Unknown_0x4 ), // 0x00000004
+ STRINGIZE(Unknown_0x8 ), // 0x00000008
+ STRINGIZE(FallingSlow ), // 0x00000010
+ STRINGIZE(Done ), // 0x00000020
+ STRINGIZE(Falling ), // 0x00000040 // Not Compartible With Trajectory Movement
+ STRINGIZE(No_Spline ), // 0x00000080
+ STRINGIZE(Unknown_0x100 ), // 0x00000100
+ STRINGIZE(Flying ), // 0x00000200 // Smooth Movement(Catmullrom Interpolation Mode), Flying Animation
+ STRINGIZE(OrientationFixed ), // 0x00000400 // Model Orientation Fixed
+ STRINGIZE(Catmullrom ), // 0x00000800 // Used Catmullrom Interpolation Mode
+ STRINGIZE(Cyclic ), // 0x00001000 // Movement By Cycled Spline
+ STRINGIZE(Enter_Cycle ), // 0x00002000 // Everytime Appears With Cyclic Flag In Monster Move Packet
+ STRINGIZE(Frozen ), // 0x00004000
+ STRINGIZE(TransportEnter ), // 0x00008000
+ STRINGIZE(TransportExit ), // 0x00010000
+ STRINGIZE(Unknown_0x20000 ), // 0x00020000
+ STRINGIZE(Unknown_0x40000 ), // 0x00040000
+ STRINGIZE(Backward ), // 0x00080000 // Appears With Runmode Flag, Nodes ), // 1, Handles Orientation
+ STRINGIZE(SmoothGroundPath ), // 0x00100000
+ STRINGIZE(CanSwim ), // 0x00200000
+ STRINGIZE(UncompressedPath ), // 0x00400000
+ STRINGIZE(Unknown_0x800000 ), // 0x00800000
+ STRINGIZE(Unknown_0x1000000 ), // 0x01000000
+ STRINGIZE(Animation ), // 0x02000000 // Animationid (0...3), Uint32 Time, Not Compartible With Trajectory And Fall Movement
+ STRINGIZE(Parabolic ), // 0x04000000 // Not Compartible With Fall Movement
+ STRINGIZE(FadeObject ), // 0x08000000
+ STRINGIZE(Steering ), // 0x10000000
+ STRINGIZE(Unknown_0x20000000), // 0x20000000
+ STRINGIZE(Unknown_0x40000000), // 0x40000000
+ STRINGIZE(Unknown_0x80000000), // 0x80000000
};
template<class Flags, int N>
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index da9d80dad63..4826cebe06d 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -376,6 +376,7 @@ class TC_GAME_API Quest
int32 GetQuestLevel() const { return _level; }
int32 GetQuestScalingFactionGroup() const { return _scalingFactionGroup; }
int32 GetQuestMaxScalingLevel() const { return _maxScalingLevel; }
+ int32 GetContentTuningId() const { return 0; }
uint32 GetQuestInfoID() const { return _questInfoID; }
uint32 GetAllowableClasses() const { return _allowableClasses; }
Trinity::RaceMask<uint64> GetAllowableRaces() const { return _allowableRaces; }
diff --git a/src/server/game/Scenarios/ScenarioMgr.h b/src/server/game/Scenarios/ScenarioMgr.h
index 3a56fca7a1b..62b51871754 100644
--- a/src/server/game/Scenarios/ScenarioMgr.h
+++ b/src/server/game/Scenarios/ScenarioMgr.h
@@ -65,9 +65,10 @@ struct ScenarioPOIPoint
{
int32 X;
int32 Y;
+ int32 Z;
- ScenarioPOIPoint() : X(0), Y(0) { }
- ScenarioPOIPoint(int32 _X, int32 _Y) : X(_X), Y(_Y) { }
+ ScenarioPOIPoint() : X(0), Y(0), Z(0) { }
+ ScenarioPOIPoint(int32 x, int32 y) : X(x), Y(y), Z(0) { }
};
struct ScenarioPOI
@@ -79,18 +80,17 @@ struct ScenarioPOI
int32 Flags;
int32 WorldEffectID;
int32 PlayerConditionID;
+ int32 NavigationPlayerConditionID;
std::vector<ScenarioPOIPoint> Points;
- ScenarioPOI() : BlobIndex(0), MapID(0), UiMapID(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0) { }
+ ScenarioPOI() : BlobIndex(0), MapID(0), UiMapID(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0), NavigationPlayerConditionID(0) { }
ScenarioPOI(int32 blobIndex, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID,
int32 playerConditionID, std::vector<ScenarioPOIPoint> points) :
BlobIndex(blobIndex), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID),
- PlayerConditionID(playerConditionID), Points(std::move(points)) { }
+ PlayerConditionID(playerConditionID), NavigationPlayerConditionID(0), Points(std::move(points)) { }
- ScenarioPOI(ScenarioPOI&& scenarioPOI) :
- BlobIndex(scenarioPOI.BlobIndex), MapID(scenarioPOI.MapID), UiMapID(scenarioPOI.UiMapID), Priority(scenarioPOI.Priority),
- Flags(scenarioPOI.Flags), WorldEffectID(scenarioPOI.WorldEffectID), PlayerConditionID(scenarioPOI.PlayerConditionID), Points(std::move(scenarioPOI.Points)) { }
+ ScenarioPOI(ScenarioPOI&& scenarioPOI) = default;
};
typedef std::vector<ScenarioPOI> ScenarioPOIVector;
diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.cpp b/src/server/game/Server/Packets/AreaTriggerPackets.cpp
index eb4b454b028..d293c2beaba 100644
--- a/src/server/game/Server/Packets/AreaTriggerPackets.cpp
+++ b/src/server/game/Server/Packets/AreaTriggerPackets.cpp
@@ -55,6 +55,14 @@ ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerOrbitInfo const& areaTrigger
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::AreaTrigger::AreaTriggerMovementScriptInfo const& areaTriggerMovementScript)
+{
+ data << int32(areaTriggerMovementScript.SpellScriptID);
+ data << areaTriggerMovementScript.Center;
+
+ return data;
+}
+
void WorldPackets::AreaTrigger::AreaTrigger::Read()
{
_worldPacket >> AreaTriggerID;
@@ -77,11 +85,15 @@ WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerRePath::Write()
_worldPacket.WriteBit(AreaTriggerSpline.is_initialized());
_worldPacket.WriteBit(AreaTriggerOrbit.is_initialized());
+ _worldPacket.WriteBit(AreaTriggerMovementScript.is_initialized());
_worldPacket.FlushBits();
if (AreaTriggerSpline)
_worldPacket << *AreaTriggerSpline;
+ if (AreaTriggerMovementScript)
+ _worldPacket << *AreaTriggerMovementScript;
+
if (AreaTriggerOrbit)
_worldPacket << *AreaTriggerOrbit;
diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.h b/src/server/game/Server/Packets/AreaTriggerPackets.h
index 7bb4ec70594..bb7caed140c 100644
--- a/src/server/game/Server/Packets/AreaTriggerPackets.h
+++ b/src/server/game/Server/Packets/AreaTriggerPackets.h
@@ -34,6 +34,12 @@ namespace WorldPackets
std::vector<TaggedPosition<Position::XYZ>> Points;
};
+ struct AreaTriggerMovementScriptInfo
+ {
+ uint32 SpellScriptID = 0;
+ TaggedPosition<Position::XYZ> Center;
+ };
+
class AreaTrigger final : public ClientPacket
{
public:
@@ -74,6 +80,7 @@ namespace WorldPackets
Optional<AreaTriggerSplineInfo> AreaTriggerSpline;
Optional<AreaTriggerOrbitInfo> AreaTriggerOrbit;
+ Optional<AreaTriggerMovementScriptInfo> AreaTriggerMovementScript;
ObjectGuid TriggerGUID;
};
}
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index 51b36df9bf4..68154c8572a 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -154,6 +154,7 @@ ByteBuffer& operator<<(ByteBuffer& data, BucketInfo const& bucketInfo)
{
data << bucketInfo.Key;
data << int32(bucketInfo.TotalQuantity);
+ data << int32(bucketInfo.RequiredLevel);
data << uint64(bucketInfo.MinPrice);
data << uint32(bucketInfo.ItemModifiedAppearanceIDs.size());
if (!bucketInfo.ItemModifiedAppearanceIDs.empty())
@@ -162,6 +163,7 @@ ByteBuffer& operator<<(ByteBuffer& data, BucketInfo const& bucketInfo)
data.WriteBit(bucketInfo.MaxBattlePetQuality.is_initialized());
data.WriteBit(bucketInfo.MaxBattlePetLevel.is_initialized());
data.WriteBit(bucketInfo.BattlePetBreedID.is_initialized());
+ data.WriteBit(bucketInfo.Unk901_1.is_initialized());
data.WriteBit(bucketInfo.ContainsOwnerItem);
data.WriteBit(bucketInfo.ContainsOnlyCollectedAppearances);
data.FlushBits();
@@ -175,6 +177,9 @@ ByteBuffer& operator<<(ByteBuffer& data, BucketInfo const& bucketInfo)
if (bucketInfo.BattlePetBreedID)
data << uint8(*bucketInfo.BattlePetBreedID);
+ if (bucketInfo.Unk901_1)
+ data << uint32(*bucketInfo.Unk901_1);
+
return data;
}
@@ -633,6 +638,9 @@ WorldPacket const* AuctionListOwnedItemsResult::Write()
for (AuctionItem const& item : Items)
_worldPacket << item;
+ for (AuctionItem const& item : SoldItems)
+ _worldPacket << item;
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h
index 15016ecd2e8..59dd8dbcff3 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.h
+++ b/src/server/game/Server/Packets/AuctionHousePackets.h
@@ -95,11 +95,13 @@ namespace WorldPackets
{
AuctionBucketKey Key;
int32 TotalQuantity = 0;
+ int32 RequiredLevel = 0;
uint64 MinPrice = 0;
std::vector<int32> ItemModifiedAppearanceIDs;
Optional<uint8> MaxBattlePetQuality;
Optional<uint8> MaxBattlePetLevel;
Optional<uint8> BattlePetBreedID;
+ Optional<uint32> Unk901_1;
bool ContainsOwnerItem = false;
bool ContainsOnlyCollectedAppearances = false;
};
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index 1215296a877..f7b58ae0659 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -150,13 +150,13 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket.FlushBits();
{
- _worldPacket << uint32(SuccessInfo->Billing.BillingPlan);
- _worldPacket << uint32(SuccessInfo->Billing.TimeRemain);
- _worldPacket << uint32(SuccessInfo->Billing.Unknown735);
+ _worldPacket << uint32(SuccessInfo->GameTimeInfo.BillingPlan);
+ _worldPacket << uint32(SuccessInfo->GameTimeInfo.TimeRemain);
+ _worldPacket << uint32(SuccessInfo->GameTimeInfo.Unknown735);
// 3x same bit is not a mistake - preserves legacy client behavior of BillingPlanFlags::SESSION_IGR
- _worldPacket.WriteBit(SuccessInfo->Billing.InGameRoom); // inGameRoom check in function checking which lua event to fire when remaining time is near end - BILLING_NAG_DIALOG vs IGR_BILLING_NAG_DIALOG
- _worldPacket.WriteBit(SuccessInfo->Billing.InGameRoom); // inGameRoom lua return from Script_GetBillingPlan
- _worldPacket.WriteBit(SuccessInfo->Billing.InGameRoom); // not used anywhere in the client
+ _worldPacket.WriteBit(SuccessInfo->GameTimeInfo.InGameRoom); // inGameRoom check in function checking which lua event to fire when remaining time is near end - BILLING_NAG_DIALOG vs IGR_BILLING_NAG_DIALOG
+ _worldPacket.WriteBit(SuccessInfo->GameTimeInfo.InGameRoom); // inGameRoom lua return from Script_GetBillingPlan
+ _worldPacket.WriteBit(SuccessInfo->GameTimeInfo.InGameRoom); // not used anywhere in the client
_worldPacket.FlushBits();
}
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h
index 75b61acda5a..dc4eab9e310 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -118,6 +118,7 @@ namespace WorldPackets
struct VirtualRealmInfo
{
+ VirtualRealmInfo() : RealmAddress(0) { }
VirtualRealmInfo(uint32 realmAddress, bool isHomeRealm, bool isInternalRealm, std::string const& realmNameActual, std::string const& realmNameNormalized) :
RealmAddress(realmAddress), RealmNameInfo(isHomeRealm, isInternalRealm, realmNameActual, realmNameNormalized) { }
@@ -130,7 +131,7 @@ namespace WorldPackets
public:
struct AuthSuccessInfo
{
- struct BillingInfo
+ struct GameTime
{
uint32 BillingPlan = 0;
uint32 TimeRemain = 0;
@@ -147,7 +148,7 @@ namespace WorldPackets
uint32 CurrencyID = 0; ///< this is probably used for the ingame shop. @todo implement
int32 Time = 0;
- BillingInfo Billing;
+ GameTime GameTimeInfo;
std::vector<VirtualRealmInfo> VirtualRealms; ///< list of realms connected to this one (inclusive) @todo implement
std::vector<CharacterTemplate const*> Templates; ///< list of pre-made character templates.
@@ -295,6 +296,7 @@ namespace WorldPackets
}
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::VirtualRealmInfo const& realmInfo);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::VirtualRealmNameInfo const& realmInfo);
#endif // AuthenticationPacketsWorld_h__
diff --git a/src/server/game/Server/Packets/BattlePetPackets.cpp b/src/server/game/Server/Packets/BattlePetPackets.cpp
index d939ee026ba..4568103d7de 100644
--- a/src/server/game/Server/Packets/BattlePetPackets.cpp
+++ b/src/server/game/Server/Packets/BattlePetPackets.cpp
@@ -84,7 +84,7 @@ WorldPacket const* WorldPackets::BattlePet::BattlePetUpdates::Write()
_worldPacket.WriteBit(PetAdded);
_worldPacket.FlushBits();
- for (auto const& pet : Pets)
+ for (BattlePet const& pet : Pets)
_worldPacket << pet;
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index bc925b0ae93..ecf37c02761 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -22,7 +22,10 @@ WorldPacket const* WorldPackets::Battleground::SeasonInfo::Write()
_worldPacket << int32(MythicPlusSeasonID);
_worldPacket << int32(CurrentSeason);
_worldPacket << int32(PreviousSeason);
+ _worldPacket << int32(ConquestWeeklyProgressCurrencyID);
_worldPacket << int32(PvpSeasonID);
+ _worldPacket.WriteBit(WeeklyRewardChestsEnabled);
+ _worldPacket.FlushBits();
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index dfb19be4108..f5389ae22f1 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -33,7 +33,7 @@ namespace WorldPackets
class SeasonInfo final : public ServerPacket
{
public:
- SeasonInfo() : ServerPacket(SMSG_SEASON_INFO, 4 + 4 + 4 + 4) { }
+ SeasonInfo() : ServerPacket(SMSG_SEASON_INFO, 4 + 4 + 4 + 4 + 4 + 1) { }
WorldPacket const* Write() override;
@@ -41,6 +41,8 @@ namespace WorldPackets
int32 PreviousSeason = 0;
int32 CurrentSeason = 0;
int32 PvpSeasonID = 0;
+ int32 ConquestWeeklyProgressCurrencyID = 0;
+ bool WeeklyRewardChestsEnabled = false;
};
class AreaSpiritHealerQuery final : public ClientPacket
@@ -416,10 +418,10 @@ namespace WorldPackets
void Read() override { }
};
- class RequestRatedBattlefieldInfo final : public ClientPacket
+ class RequestRatedPvpInfo final : public ClientPacket
{
public:
- RequestRatedBattlefieldInfo(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_RATED_BATTLEFIELD_INFO, std::move(packet)) { }
+ RequestRatedPvpInfo(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_RATED_PVP_INFO, std::move(packet)) { }
void Read() override { }
};
diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp
index 436a820c020..d12d73831e6 100644
--- a/src/server/game/Server/Packets/CalendarPackets.cpp
+++ b/src/server/game/Server/Packets/CalendarPackets.cpp
@@ -80,7 +80,7 @@ void WorldPackets::Calendar::CalendarGetEvent::Read()
_worldPacket >> EventID;
}
-void WorldPackets::Calendar::CalendarCommunityFilter::Read()
+void WorldPackets::Calendar::CalendarCommunityInviteRequest::Read()
{
_worldPacket >> ClubID;
_worldPacket >> MinLevel;
@@ -182,14 +182,14 @@ void WorldPackets::Calendar::CalendarCopyEvent::Read()
Date = _worldPacket.ReadPackedTime();
}
-void WorldPackets::Calendar::CalendarEventRSVP::Read()
+void WorldPackets::Calendar::CalendarRSVP::Read()
{
_worldPacket >> EventID;
_worldPacket >> InviteID;
_worldPacket >> Status;
}
-void WorldPackets::Calendar::CalendarEventInvite::Read()
+void WorldPackets::Calendar::CalendarInvite::Read()
{
_worldPacket >> EventID;
_worldPacket >> ModeratorID;
@@ -217,7 +217,7 @@ void WorldPackets::Calendar::CalendarRemoveInvite::Read()
_worldPacket >> EventID;
}
-void WorldPackets::Calendar::CalendarEventStatus::Read()
+void WorldPackets::Calendar::CalendarStatus::Read()
{
_worldPacket >> Guid;
_worldPacket >> EventID;
@@ -233,7 +233,7 @@ void WorldPackets::Calendar::SetSavedInstanceExtend::Read()
Extend = _worldPacket.ReadBit();
}
-void WorldPackets::Calendar::CalendarEventModeratorStatus::Read()
+void WorldPackets::Calendar::CalendarModeratorStatusQuery::Read()
{
_worldPacket >> Guid;
_worldPacket >> EventID;
diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h
index 0010dc71c72..1f292ca1468 100644
--- a/src/server/game/Server/Packets/CalendarPackets.h
+++ b/src/server/game/Server/Packets/CalendarPackets.h
@@ -46,10 +46,10 @@ namespace WorldPackets
uint64 EventID = 0;
};
- class CalendarCommunityFilter final : public ClientPacket
+ class CalendarCommunityInviteRequest final : public ClientPacket
{
public:
- CalendarCommunityFilter(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_COMMUNITY_FILTER, std::move(packet)) { }
+ CalendarCommunityInviteRequest(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_COMMUNITY_INVITE, std::move(packet)) { }
void Read() override;
@@ -256,10 +256,10 @@ namespace WorldPackets
std::string EventName;
};
- class CalendarEventInvite final : public ClientPacket
+ class CalendarInvite final : public ClientPacket
{
public:
- CalendarEventInvite(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_INVITE, std::move(packet)) { }
+ CalendarInvite(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_INVITE, std::move(packet)) { }
void Read() override;
@@ -271,10 +271,10 @@ namespace WorldPackets
std::string Name;
};
- class CalendarEventRSVP final : public ClientPacket
+ class CalendarRSVP final : public ClientPacket
{
public:
- CalendarEventRSVP(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_RSVP, std::move(packet)) { }
+ CalendarRSVP(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_RSVP, std::move(packet)) { }
void Read() override;
@@ -422,10 +422,10 @@ namespace WorldPackets
uint64 InviteID = 0;
};
- class CalendarEventStatus final : public ClientPacket
+ class CalendarStatus final : public ClientPacket
{
public:
- CalendarEventStatus(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_STATUS, std::move(packet)) { }
+ CalendarStatus(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_STATUS, std::move(packet)) { }
void Read() override;
@@ -448,10 +448,10 @@ namespace WorldPackets
uint32 DifficultyID = 0;
};
- class CalendarEventModeratorStatus final : public ClientPacket
+ class CalendarModeratorStatusQuery final : public ClientPacket
{
public:
- CalendarEventModeratorStatus(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_MODERATOR_STATUS, std::move(packet)) { }
+ CalendarModeratorStatusQuery(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_MODERATOR_STATUS, std::move(packet)) { }
void Read() override;
diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h
index 15a86fed6ca..2e7f834cf27 100644
--- a/src/server/game/Server/Packets/ChannelPackets.h
+++ b/src/server/game/Server/Packets/ChannelPackets.h
@@ -77,7 +77,7 @@ namespace WorldPackets
std::string ChannelWelcomeMsg;
int32 ChatChannelID = 0;
- int32 InstanceID = 0;
+ uint64 InstanceID = 0;
uint32 _ChannelFlags = 0; ///< @see enum ChannelFlags
std::string _Channel; ///< Channel Name
ObjectGuid ChannelGUID;
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 42d3893ff12..86ebe42cb7f 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -22,12 +22,32 @@
#include "Player.h"
#include "World.h"
-WorldPackets::Character::EnumCharacters::EnumCharacters(WorldPacket&& packet) : ClientPacket(std::move(packet))
+namespace WorldPackets
+{
+namespace Character
+{
+ByteBuffer& operator<<(ByteBuffer& data, ChrCustomizationChoice const& customizationChoice)
+{
+ data << uint32(customizationChoice.ChrCustomizationOptionID);
+ data << uint32(customizationChoice.ChrCustomizationChoiceID);
+
+ return data;
+}
+
+ByteBuffer& operator>>(ByteBuffer& data, ChrCustomizationChoice& customizationChoice)
+{
+ data >> customizationChoice.ChrCustomizationOptionID;
+ data >> customizationChoice.ChrCustomizationChoiceID;
+
+ return data;
+}
+
+EnumCharacters::EnumCharacters(WorldPacket&& packet) : ClientPacket(std::move(packet))
{
ASSERT(GetOpcode() == CMSG_ENUM_CHARACTERS || GetOpcode() == CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT);
}
-WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields)
+EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields)
{
// 0 1 2 3 4 5 6 7
// "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.skin, characters.face, characters.hairStyle, "
@@ -123,17 +143,18 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel
}
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem)
+ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem)
{
data << uint32(visualItem.DisplayID);
data << uint32(visualItem.DisplayEnchantID);
+ data << int32(visualItem.ItemModifiedAppearanceID);
data << uint8(visualItem.InvType);
data << uint8(visualItem.Subclass);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::CharacterInfo const& charInfo)
+ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo const& charInfo)
{
data << charInfo.Guid;
data << uint64(charInfo.GuildClubMemberID);
@@ -141,12 +162,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters
data << uint8(charInfo.RaceID);
data << uint8(charInfo.ClassID);
data << uint8(charInfo.SexID);
- data << uint8(charInfo.SkinID);
- data << uint8(charInfo.FaceID);
- data << uint8(charInfo.HairStyle);
- data << uint8(charInfo.HairColor);
- data << uint8(charInfo.FacialHair);
- data.append(charInfo.CustomDisplay.data(), charInfo.CustomDisplay.size());
+ data << uint32(charInfo.Customizations.size());
data << uint8(charInfo.ExperienceLevel);
data << int32(charInfo.ZoneID);
data << int32(charInfo.MapID);
@@ -162,7 +178,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters
data << uint32(charInfo.ProfessionIds[0]);
data << uint32(charInfo.ProfessionIds[1]);
- for (WorldPackets::Character::EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem : charInfo.VisualItems)
+ for (EnumCharactersResult::CharacterInfo::VisualItemInfo const& visualItem : charInfo.VisualItems)
data << visualItem;
data << uint32(charInfo.LastPlayedTime);
@@ -170,18 +186,23 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters
data << uint32(charInfo.Unknown703);
data << uint32(charInfo.LastLoginVersion);
data << uint32(charInfo.Flags4);
- data << uint32(charInfo.Unknown830.size());
+ data << uint32(charInfo.MailSenders.size());
+ data << uint32(charInfo.OverrideSelectScreenFileDataID);
+
+ for (ChrCustomizationChoice customization : charInfo.Customizations)
+ data << customization;
+
data.WriteBits(charInfo.Name.length(), 6);
data.WriteBit(charInfo.FirstLogin);
data.WriteBit(charInfo.BoostInProgress);
data.WriteBits(charInfo.unkWod61x, 5);
- for (std::string const& str : charInfo.Unknown830)
+ for (std::string const& str : charInfo.MailSenders)
data.WriteBits(str.length() + 1, 6);
data.FlushBits();
- for (std::string const& str : charInfo.Unknown830)
+ for (std::string const& str : charInfo.MailSenders)
if (!str.empty())
data << str;
@@ -190,7 +211,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::RaceUnlock const& raceUnlock)
+ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceUnlock const& raceUnlock)
{
data << int32(raceUnlock.RaceID);
data.WriteBit(raceUnlock.HasExpansion);
@@ -201,7 +222,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::UnlockedConditionalAppearance const& unlockedConditionalAppearance)
+ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::UnlockedConditionalAppearance const& unlockedConditionalAppearance)
{
data << int32(unlockedConditionalAppearance.AchievementID);
data << int32(unlockedConditionalAppearance.Unused);
@@ -209,15 +230,14 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters
return data;
}
-WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
+WorldPacket const* EnumCharactersResult::Write()
{
_worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + RaceUnlockData.size() * sizeof(RaceUnlock));
_worldPacket.WriteBit(Success);
_worldPacket.WriteBit(IsDeletedCharacters);
- _worldPacket.WriteBit(IsTestDemonHunterCreationAllowed);
- _worldPacket.WriteBit(HasDemonHunterOnRealm);
- _worldPacket.WriteBit(IsDemonHunterCreationAllowed);
+ _worldPacket.WriteBit(IsNewPlayerRestrictionSkipped);
+ _worldPacket.WriteBit(IsNewPlayer);
_worldPacket.WriteBit(DisabledClassesMask.is_initialized());
_worldPacket.WriteBit(IsAlliedRacesCreationAllowed);
_worldPacket << uint32(Characters.size());
@@ -240,54 +260,66 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
return &_worldPacket;
}
-void WorldPackets::Character::CreateCharacter::Read()
+void CheckCharacterNameAvailability::Read()
{
- CreateInfo.reset(new CharacterCreateInfo());
+ _worldPacket >> SequenceIndex;
+ Name = _worldPacket.ReadString(_worldPacket.ReadBits(6));
+}
+
+WorldPacket const* CheckCharacterNameAvailabilityResult::Write()
+{
+ _worldPacket << uint32(SequenceIndex);
+ _worldPacket << uint32(Result);
+
+ return &_worldPacket;
+}
+
+void CreateCharacter::Read()
+{
+ CreateInfo = std::make_shared<CharacterCreateInfo>();
uint32 nameLength = _worldPacket.ReadBits(6);
bool const hasTemplateSet = _worldPacket.ReadBit();
CreateInfo->IsTrialBoost = _worldPacket.ReadBit();
+ CreateInfo->UseNPE = _worldPacket.ReadBit();
_worldPacket >> CreateInfo->Race;
_worldPacket >> CreateInfo->Class;
_worldPacket >> CreateInfo->Sex;
- _worldPacket >> CreateInfo->Skin;
- _worldPacket >> CreateInfo->Face;
- _worldPacket >> CreateInfo->HairStyle;
- _worldPacket >> CreateInfo->HairColor;
- _worldPacket >> CreateInfo->FacialHairStyle;
- _worldPacket >> CreateInfo->OutfitId;
- _worldPacket.read(CreateInfo->CustomDisplay.data(), CreateInfo->CustomDisplay.size());
+ CreateInfo->Customizations.resize(_worldPacket.read<uint32>());
CreateInfo->Name = _worldPacket.ReadString(nameLength);
if (hasTemplateSet)
CreateInfo->TemplateSet = _worldPacket.read<int32>();
+
+ for (ChrCustomizationChoice& customization : CreateInfo->Customizations)
+ _worldPacket >> customization;
}
-WorldPacket const* WorldPackets::Character::CreateChar::Write()
+WorldPacket const* CreateChar::Write()
{
_worldPacket << uint8(Code);
_worldPacket << Guid;
return &_worldPacket;
}
-void WorldPackets::Character::CharDelete::Read()
+void CharDelete::Read()
{
_worldPacket >> Guid;
}
-WorldPacket const* WorldPackets::Character::DeleteChar::Write()
+WorldPacket const* DeleteChar::Write()
{
_worldPacket << uint8(Code);
return &_worldPacket;
}
-void WorldPackets::Character::CharacterRenameRequest::Read()
+void CharacterRenameRequest::Read()
{
- RenameInfo.reset(new CharacterRenameInfo());
+ RenameInfo = std::make_shared<CharacterRenameInfo>();
_worldPacket >> RenameInfo->Guid;
RenameInfo->NewName = _worldPacket.ReadString(_worldPacket.ReadBits(6));
}
-WorldPacket const* WorldPackets::Character::CharacterRenameResult::Write()
+WorldPacket const* CharacterRenameResult::Write()
{
_worldPacket << uint8(Result);
_worldPacket.WriteBit(Guid.is_initialized());
@@ -302,23 +334,21 @@ WorldPacket const* WorldPackets::Character::CharacterRenameResult::Write()
return &_worldPacket;
}
-void WorldPackets::Character::CharCustomize::Read()
+void CharCustomize::Read()
{
- CustomizeInfo.reset(new CharCustomizeInfo());
+ CustomizeInfo = std::make_shared<CharCustomizeInfo>();
_worldPacket >> CustomizeInfo->CharGUID;
_worldPacket >> CustomizeInfo->SexID;
- _worldPacket >> CustomizeInfo->SkinID;
- _worldPacket >> CustomizeInfo->HairColorID;
- _worldPacket >> CustomizeInfo->HairStyleID;
- _worldPacket >> CustomizeInfo->FacialHairStyleID;
- _worldPacket >> CustomizeInfo->FaceID;
- _worldPacket.read(CustomizeInfo->CustomDisplay.data(), CustomizeInfo->CustomDisplay.size());
+ CustomizeInfo->Customizations.resize(_worldPacket.read<uint32>());
+ for (ChrCustomizationChoice& customization : CustomizeInfo->Customizations)
+ _worldPacket >> customization;
+
CustomizeInfo->CharName = _worldPacket.ReadString(_worldPacket.ReadBits(6));
}
-void WorldPackets::Character::CharRaceOrFactionChange::Read()
+void CharRaceOrFactionChange::Read()
{
- RaceOrFactionChangeInfo.reset(new CharRaceOrFactionChangeInfo());
+ RaceOrFactionChangeInfo = std::make_shared<CharRaceOrFactionChangeInfo>();
RaceOrFactionChangeInfo->FactionChange = _worldPacket.ReadBit();
@@ -327,16 +357,13 @@ void WorldPackets::Character::CharRaceOrFactionChange::Read()
_worldPacket >> RaceOrFactionChangeInfo->Guid;
_worldPacket >> RaceOrFactionChangeInfo->SexID;
_worldPacket >> RaceOrFactionChangeInfo->RaceID;
- _worldPacket >> RaceOrFactionChangeInfo->SkinID;
- _worldPacket >> RaceOrFactionChangeInfo->HairColorID;
- _worldPacket >> RaceOrFactionChangeInfo->HairStyleID;
- _worldPacket >> RaceOrFactionChangeInfo->FacialHairStyleID;
- _worldPacket >> RaceOrFactionChangeInfo->FaceID;
- _worldPacket.read(RaceOrFactionChangeInfo->CustomDisplay.data(), RaceOrFactionChangeInfo->CustomDisplay.size());
+ RaceOrFactionChangeInfo->Customizations.resize(_worldPacket.read<uint32>());
RaceOrFactionChangeInfo->Name = _worldPacket.ReadString(nameLength);
+ for (ChrCustomizationChoice& customization : RaceOrFactionChangeInfo->Customizations)
+ _worldPacket >> customization;
}
-WorldPacket const* WorldPackets::Character::CharFactionChangeResult::Write()
+WorldPacket const* CharFactionChangeResult::Write()
{
_worldPacket << uint8(Result);
_worldPacket << Guid;
@@ -347,26 +374,22 @@ WorldPacket const* WorldPackets::Character::CharFactionChangeResult::Write()
{
_worldPacket.WriteBits(Display->Name.length(), 6);
_worldPacket << uint8(Display->SexID);
- _worldPacket << uint8(Display->SkinID);
- _worldPacket << uint8(Display->HairColorID);
- _worldPacket << uint8(Display->HairStyleID);
- _worldPacket << uint8(Display->FacialHairStyleID);
- _worldPacket << uint8(Display->FaceID);
_worldPacket << uint8(Display->RaceID);
- _worldPacket.append(Display->CustomDisplay.data(), Display->CustomDisplay.size());
_worldPacket.WriteString(Display->Name);
+ for (ChrCustomizationChoice customization : *Display->Customizations)
+ _worldPacket << customization;
}
return &_worldPacket;
}
-void WorldPackets::Character::GenerateRandomCharacterName::Read()
+void GenerateRandomCharacterName::Read()
{
_worldPacket >> Race;
_worldPacket >> Sex;
}
-WorldPacket const* WorldPackets::Character::GenerateRandomCharacterNameResult::Write()
+WorldPacket const* GenerateRandomCharacterNameResult::Write()
{
_worldPacket.WriteBit(Success);
_worldPacket.WriteBits(Name.length(), 6);
@@ -377,11 +400,11 @@ WorldPacket const* WorldPackets::Character::GenerateRandomCharacterNameResult::W
return &_worldPacket;
}
-WorldPackets::Character::ReorderCharacters::ReorderCharacters(WorldPacket&& packet) : ClientPacket(CMSG_REORDER_CHARACTERS, std::move(packet))
+ReorderCharacters::ReorderCharacters(WorldPacket&& packet) : ClientPacket(CMSG_REORDER_CHARACTERS, std::move(packet))
{
}
-void WorldPackets::Character::ReorderCharacters::Read()
+void ReorderCharacters::Read()
{
Entries.resize(_worldPacket.ReadBits(9));
for (ReorderInfo& reorderInfo : Entries)
@@ -391,14 +414,14 @@ void WorldPackets::Character::ReorderCharacters::Read()
}
}
-void WorldPackets::Character::UndeleteCharacter::Read()
+void UndeleteCharacter::Read()
{
- UndeleteInfo.reset(new CharacterUndeleteInfo());
+ UndeleteInfo = std::make_shared<CharacterUndeleteInfo>();
_worldPacket >> UndeleteInfo->ClientToken;
_worldPacket >> UndeleteInfo->CharacterGuid;
}
-WorldPacket const* WorldPackets::Character::UndeleteCharacterResponse::Write()
+WorldPacket const* UndeleteCharacterResponse::Write()
{
ASSERT(UndeleteInfo);
_worldPacket << int32(UndeleteInfo->ClientToken);
@@ -407,7 +430,7 @@ WorldPacket const* WorldPackets::Character::UndeleteCharacterResponse::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Character::UndeleteCooldownStatusResponse::Write()
+WorldPacket const* UndeleteCooldownStatusResponse::Write()
{
_worldPacket.WriteBit(OnCooldown);
_worldPacket << uint32(MaxCooldown);
@@ -415,13 +438,13 @@ WorldPacket const* WorldPackets::Character::UndeleteCooldownStatusResponse::Writ
return &_worldPacket;
}
-void WorldPackets::Character::PlayerLogin::Read()
+void PlayerLogin::Read()
{
_worldPacket >> Guid;
_worldPacket >> FarClip;
}
-WorldPacket const* WorldPackets::Character::LoginVerifyWorld::Write()
+WorldPacket const* LoginVerifyWorld::Write()
{
_worldPacket << int32(MapID);
_worldPacket << Pos;
@@ -429,18 +452,18 @@ WorldPacket const* WorldPackets::Character::LoginVerifyWorld::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Character::CharacterLoginFailed::Write()
+WorldPacket const* CharacterLoginFailed::Write()
{
_worldPacket << uint8(Code);
return &_worldPacket;
}
-void WorldPackets::Character::LogoutRequest::Read()
+void LogoutRequest::Read()
{
IdleLogout = _worldPacket.ReadBit();
}
-WorldPacket const* WorldPackets::Character::LogoutResponse::Write()
+WorldPacket const* LogoutResponse::Write()
{
_worldPacket << int32(LogoutResult);
_worldPacket.WriteBit(Instant);
@@ -448,13 +471,13 @@ WorldPacket const* WorldPackets::Character::LogoutResponse::Write()
return &_worldPacket;
}
-void WorldPackets::Character::LoadingScreenNotify::Read()
+void LoadingScreenNotify::Read()
{
_worldPacket >> MapID;
Showing = _worldPacket.ReadBit();
}
-WorldPacket const* WorldPackets::Character::InitialSetup::Write()
+WorldPacket const* InitialSetup::Write()
{
_worldPacket << uint8(ServerExpansionLevel);
_worldPacket << uint8(ServerExpansionTier);
@@ -462,17 +485,17 @@ WorldPacket const* WorldPackets::Character::InitialSetup::Write()
return &_worldPacket;
}
-void WorldPackets::Character::SetActionBarToggles::Read()
+void SetActionBarToggles::Read()
{
_worldPacket >> Mask;
}
-void WorldPackets::Character::RequestPlayedTime::Read()
+void RequestPlayedTime::Read()
{
TriggerScriptEvent = _worldPacket.ReadBit();
}
-WorldPacket const* WorldPackets::Character::PlayedTime::Write()
+WorldPacket const* PlayedTime::Write()
{
_worldPacket << int32(TotalTime);
_worldPacket << int32(LevelTime);
@@ -482,29 +505,26 @@ WorldPacket const* WorldPackets::Character::PlayedTime::Write()
return &_worldPacket;
}
-void WorldPackets::Character::SetTitle::Read()
+void SetTitle::Read()
{
_worldPacket >> TitleID;
}
-void WorldPackets::Character::AlterApperance::Read()
+void AlterApperance::Read()
{
- _worldPacket >> NewHairStyle;
- _worldPacket >> NewHairColor;
- _worldPacket >> NewFacialHair;
- _worldPacket >> NewSkinColor;
- _worldPacket >> NewFace;
- for (std::size_t i = 0; i < NewCustomDisplay.size(); ++i)
- _worldPacket >> NewCustomDisplay[i];
+ Customizations.resize(_worldPacket.read<uint32>());
+ _worldPacket >> NewSex;
+ for (ChrCustomizationChoice& customization : Customizations)
+ _worldPacket >> customization;
}
-WorldPacket const* WorldPackets::Character::BarberShopResult::Write()
+WorldPacket const* BarberShopResult::Write()
{
_worldPacket << int32(Result);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Character::LogXPGain::Write()
+WorldPacket const* LogXPGain::Write()
{
_worldPacket << Victim;
_worldPacket << int32(Original);
@@ -516,64 +536,56 @@ WorldPacket const* WorldPackets::Character::LogXPGain::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Character::TitleEarned::Write()
+WorldPacket const* TitleEarned::Write()
{
_worldPacket << uint32(Index);
return &_worldPacket;
}
-void WorldPackets::Character::SetFactionAtWar::Read()
+void SetFactionAtWar::Read()
{
_worldPacket >> FactionIndex;
}
-void WorldPackets::Character::SetFactionNotAtWar::Read()
+void SetFactionNotAtWar::Read()
{
_worldPacket >> FactionIndex;
}
-void WorldPackets::Character::SetFactionInactive::Read()
+void SetFactionInactive::Read()
{
_worldPacket >> Index;
State = _worldPacket.ReadBit();
}
-void WorldPackets::Character::SetWatchedFaction::Read()
+void SetWatchedFaction::Read()
{
_worldPacket >> FactionIndex;
}
-WorldPacket const* WorldPackets::Character::SetFactionVisible::Write()
+WorldPacket const* SetFactionVisible::Write()
{
_worldPacket << FactionIndex;
return &_worldPacket;
}
-WorldPackets::Character::CharCustomizeSuccess::CharCustomizeSuccess(WorldPackets::Character::CharCustomizeInfo const* info)
- : ServerPacket(SMSG_CHAR_CUSTOMIZE_SUCCESS, 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1)
+CharCustomizeSuccess::CharCustomizeSuccess(CharCustomizeInfo const* info)
+ : ServerPacket(SMSG_CHAR_CUSTOMIZE_SUCCESS, 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1), Customizations(info->Customizations)
{
CharGUID = info->CharGUID;
SexID = info->SexID;
- SkinID = info->SkinID;
- HairColorID = info->HairColorID;
- HairStyleID = info->HairStyleID;
- FacialHairStyleID = info->FacialHairStyleID;
- FaceID = info->FaceID;
CharName = info->CharName;
- CustomDisplay = info->CustomDisplay;
}
-WorldPacket const* WorldPackets::Character::CharCustomizeSuccess::Write()
+WorldPacket const* CharCustomizeSuccess::Write()
{
_worldPacket << CharGUID;
_worldPacket << uint8(SexID);
- _worldPacket << uint8(SkinID);
- _worldPacket << uint8(HairColorID);
- _worldPacket << uint8(HairStyleID);
- _worldPacket << uint8(FacialHairStyleID);
- _worldPacket << uint8(FaceID);
- _worldPacket.append(CustomDisplay.data(), CustomDisplay.size());
+ _worldPacket << uint32(Customizations.size());
+ for (ChrCustomizationChoice customization : Customizations)
+ _worldPacket << customization;
+
_worldPacket.WriteBits(CharName.length(), 6);
_worldPacket.FlushBits();
_worldPacket.WriteString(CharName);
@@ -581,7 +593,7 @@ WorldPacket const* WorldPackets::Character::CharCustomizeSuccess::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Character::CharCustomizeFailure::Write()
+WorldPacket const* CharCustomizeFailure::Write()
{
_worldPacket << uint8(Result);
_worldPacket << CharGUID;
@@ -589,7 +601,7 @@ WorldPacket const* WorldPackets::Character::CharCustomizeFailure::Write()
return &_worldPacket;
}
-void WorldPackets::Character::SetPlayerDeclinedNames::Read()
+void SetPlayerDeclinedNames::Read()
{
_worldPacket >> Player;
@@ -602,10 +614,12 @@ void WorldPackets::Character::SetPlayerDeclinedNames::Read()
DeclinedNames.name[i] = _worldPacket.ReadString(stringLengths[i]);
}
-WorldPacket const * WorldPackets::Character::SetPlayerDeclinedNamesResult::Write()
+WorldPacket const * SetPlayerDeclinedNamesResult::Write()
{
_worldPacket << int32(ResultCode);
_worldPacket << Player;
return &_worldPacket;
}
+}
+}
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 5880cb43119..d34e5d7e301 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -35,6 +35,15 @@ namespace WorldPackets
{
namespace Character
{
+ struct ChrCustomizationChoice
+ {
+ uint32 ChrCustomizationOptionID = 0;
+ uint32 ChrCustomizationChoiceID = 0;
+ };
+
+ ByteBuffer& operator<<(ByteBuffer& data, ChrCustomizationChoice const& customizationChoice);
+ ByteBuffer& operator>>(ByteBuffer& data, ChrCustomizationChoice& customizationChoice);
+
class EnumCharacters final : public ClientPacket
{
public:
@@ -49,15 +58,10 @@ namespace WorldPackets
uint8 Race = RACE_NONE;
uint8 Class = CLASS_NONE;
uint8 Sex = GENDER_NONE;
- uint8 Skin = 0;
- uint8 Face = 0;
- uint8 HairStyle = 0;
- uint8 HairColor = 0;
- uint8 FacialHairStyle = 0;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay = { };
- uint8 OutfitId = 0;
+ Array<ChrCustomizationChoice, 50> Customizations;
Optional<int32> TemplateSet;
bool IsTrialBoost = false;
+ bool UseNPE = false;
std::string Name;
/// Server side data
@@ -72,30 +76,20 @@ namespace WorldPackets
struct CharCustomizeInfo
{
- uint8 HairStyleID = 0;
- uint8 FaceID = 0;
ObjectGuid CharGUID;
uint8 SexID = GENDER_NONE;
std::string CharName;
- uint8 HairColorID = 0;
- uint8 FacialHairStyleID = 0;
- uint8 SkinID = 0;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay = { };
+ Array<ChrCustomizationChoice, 50> Customizations;
};
struct CharRaceOrFactionChangeInfo
{
- uint8 HairColorID = 0;
uint8 RaceID = RACE_NONE;
uint8 SexID = GENDER_NONE;
- uint8 SkinID = 0;
- uint8 FacialHairStyleID = 0;
ObjectGuid Guid;
bool FactionChange = false;
std::string Name;
- uint8 FaceID = 0;
- uint8 HairStyleID = 0;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay = { };
+ Array<ChrCustomizationChoice, 50> Customizations;
};
struct CharacterUndeleteInfo
@@ -129,12 +123,7 @@ namespace WorldPackets
uint8 RaceID = 0;
uint8 ClassID = 0;
uint8 SexID = 0;
- uint8 SkinID = 0;
- uint8 FaceID = 0;
- uint8 HairStyle = 0;
- uint8 HairColor = 0;
- uint8 FacialHair = 0;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay = { };
+ std::vector<ChrCustomizationChoice> Customizations;
uint8 ExperienceLevel = 0;
int32 ZoneID = 0;
int32 MapID = 0;
@@ -150,6 +139,7 @@ namespace WorldPackets
uint16 SpecID = 0;
uint32 Unknown703 = 0;
uint32 LastLoginVersion = 0;
+ uint32 OverrideSelectScreenFileDataID = 0;
uint32 PetCreatureDisplayID = 0;
uint32 PetExperienceLevel = 0;
@@ -162,13 +152,13 @@ namespace WorldPackets
{
uint32 DisplayID = 0;
uint32 DisplayEnchantID = 0;
+ int32 ItemModifiedAppearanceID = 0; // also -1 is some special value
uint8 InvType = 0;
uint8 Subclass = 0;
};
std::array<VisualItemInfo, 23> VisualItems = { };
- std::vector<std::string> Unknown830; // Something with character names, same length limit as name,
- // client accepts unlimited number of these in packet but only uses first 3
+ std::vector<std::string> MailSenders;
};
struct RaceUnlock
@@ -191,9 +181,8 @@ namespace WorldPackets
bool Success = false; ///<
bool IsDeletedCharacters = false; ///< used for character undelete list
- bool IsTestDemonHunterCreationAllowed = false; ///< allows client to skip 1 per realm and level 70 requirements
- bool HasDemonHunterOnRealm = false;
- bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access
+ bool IsNewPlayerRestrictionSkipped = false; ///< allows client to skip new player restrictions
+ bool IsNewPlayer = false; ///< forbids hero classes and allied races
bool IsAlliedRacesCreationAllowed = false;
int32 MaxCharacterLevel = 1;
@@ -204,6 +193,31 @@ namespace WorldPackets
std::vector<UnlockedConditionalAppearance> UnlockedConditionalAppearances;
};
+ class CheckCharacterNameAvailability final : public ClientPacket
+ {
+ public:
+ CheckCharacterNameAvailability(WorldPacket&& packet) : ClientPacket(CMSG_CHECK_CHARACTER_NAME_AVAILABILITY, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 SequenceIndex = 0;
+ std::string Name;
+ };
+
+ class CheckCharacterNameAvailabilityResult final : public ServerPacket
+ {
+ public:
+ CheckCharacterNameAvailabilityResult(uint32 sequenceIndex, uint32 result) : ServerPacket(SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT, 4 + 4),
+ SequenceIndex(sequenceIndex), Result(result)
+ {
+ }
+
+ WorldPacket const* Write() override;
+
+ uint32 SequenceIndex;
+ uint32 Result;
+ };
+
class CreateCharacter final : public ClientPacket
{
public:
@@ -335,13 +349,8 @@ namespace WorldPackets
{
std::string Name;
uint8 SexID = 0;
- uint8 SkinID = 0;
- uint8 HairColorID = 0;
- uint8 HairStyleID = 0;
- uint8 FacialHairStyleID = 0;
- uint8 FaceID = 0;
uint8 RaceID = RACE_NONE;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay = { };
+ Array<ChrCustomizationChoice, 50> const* Customizations = nullptr;
};
CharFactionChangeResult() : ServerPacket(SMSG_CHAR_FACTION_CHANGE_RESULT, 20 + sizeof(CharFactionChangeDisplayInfo)) { }
@@ -388,7 +397,7 @@ namespace WorldPackets
void Read() override;
- Array<ReorderInfo, MAX_CHARACTERS_PER_REALM> Entries;
+ Array<ReorderInfo, 200> Entries;
};
class UndeleteCharacter final : public ClientPacket
@@ -605,12 +614,8 @@ namespace WorldPackets
void Read() override;
- uint32 NewHairStyle = 0;
- uint32 NewHairColor = 0;
- uint32 NewFacialHair = 0;
- uint32 NewSkinColor = 0;
- uint32 NewFace = 0;
- std::array<uint32, PLAYER_CUSTOM_DISPLAY_SIZE> NewCustomDisplay = { };
+ uint8 NewSex = 0;
+ Array<ChrCustomizationChoice, 50> Customizations;
};
class BarberShopResult final : public ServerPacket
@@ -710,7 +715,6 @@ namespace WorldPackets
class CharCustomizeSuccess final : public ServerPacket
{
public:
- CharCustomizeSuccess() : ServerPacket(SMSG_CHAR_CUSTOMIZE_SUCCESS, 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1) { }
CharCustomizeSuccess(CharCustomizeInfo const* customizeInfo);
WorldPacket const* Write() override;
@@ -718,12 +722,7 @@ namespace WorldPackets
ObjectGuid CharGUID;
std::string CharName;
uint8 SexID = 0;
- uint8 SkinID = 0;
- uint8 HairColorID = 0;
- uint8 HairStyleID = 0;
- uint8 FacialHairStyleID = 0;
- uint8 FaceID = 0;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay = { };
+ Array<ChrCustomizationChoice, 50> const& Customizations;
};
class CharCustomizeFailure final : public ServerPacket
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index d52b9045983..9b96753af8b 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -176,7 +176,7 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
_worldPacket.WriteBits(Prefix.length(), 5);
_worldPacket.WriteBits(_Channel.length(), 7);
_worldPacket.WriteBits(ChatText.length(), 12);
- _worldPacket.WriteBits(_ChatFlags, 11);
+ _worldPacket.WriteBits(_ChatFlags, 14);
_worldPacket.WriteBit(HideChatLog);
_worldPacket.WriteBit(FakeSenderName);
_worldPacket.WriteBit(Unused_801.is_initialized());
diff --git a/src/server/game/Server/Packets/ClientConfigPackets.cpp b/src/server/game/Server/Packets/ClientConfigPackets.cpp
index 150c229788c..8ddc8c998ab 100644
--- a/src/server/game/Server/Packets/ClientConfigPackets.cpp
+++ b/src/server/game/Server/Packets/ClientConfigPackets.cpp
@@ -21,7 +21,7 @@ WorldPacket const* WorldPackets::ClientConfig::AccountDataTimes::Write()
{
_worldPacket << PlayerGuid;
_worldPacket << uint32(ServerTime);
- _worldPacket.append(AccountTimes, NUM_ACCOUNT_DATA_TYPES);
+ _worldPacket.append(AccountTimes.data(), AccountTimes.size());
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ClientConfigPackets.h b/src/server/game/Server/Packets/ClientConfigPackets.h
index 810d2b8dffe..230df93da77 100644
--- a/src/server/game/Server/Packets/ClientConfigPackets.h
+++ b/src/server/game/Server/Packets/ClientConfigPackets.h
@@ -34,7 +34,7 @@ namespace WorldPackets
ObjectGuid PlayerGuid;
uint32 ServerTime = 0;
- uint32 AccountTimes[NUM_ACCOUNT_DATA_TYPES];
+ std::array<uint32, NUM_ACCOUNT_DATA_TYPES> AccountTimes = { };
};
class ClientCacheVersion final : public ServerPacket
diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp
index e0253371a2e..cfdb4b39f40 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.cpp
+++ b/src/server/game/Server/Packets/CombatLogPackets.cpp
@@ -24,7 +24,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write()
*this << CasterGUID;
*this << CastID;
*this << int32(SpellID);
- *this << int32(SpellXSpellVisualID);
+ *this << Visual;
*this << int32(Damage);
*this << int32(OriginalDamage);
*this << int32(Overkill);
@@ -349,8 +349,8 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write()
attackRoundInfo << uint8(ContentTuning.TargetMaxScalingLevel);
attackRoundInfo << int16(ContentTuning.PlayerLevelDelta);
attackRoundInfo << int8(ContentTuning.TargetScalingLevelDelta);
- attackRoundInfo << uint16(ContentTuning.PlayerItemLevel);
- attackRoundInfo << uint16(ContentTuning.TargetItemLevel);
+ attackRoundInfo << float(ContentTuning.PlayerItemLevel);
+ attackRoundInfo << float(ContentTuning.TargetItemLevel);
attackRoundInfo << uint16(ContentTuning.ScalingHealthItemLevelCurveID);
attackRoundInfo << uint8(ContentTuning.ScalesWithItemLevel ? 1 : 0);
diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h
index 9227977652e..0d06623746f 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.h
+++ b/src/server/game/Server/Packets/CombatLogPackets.h
@@ -37,7 +37,7 @@ namespace WorldPackets
ObjectGuid CasterGUID;
ObjectGuid CastID;
int32 SpellID = 0;
- int32 SpellXSpellVisualID = 0;
+ Spells::SpellCastVisual Visual;
int32 Damage = 0;
int32 OriginalDamage = 0;
int32 Overkill = -1;
@@ -92,7 +92,7 @@ namespace WorldPackets
class SpellHealLog final : public CombatLogServerPacket
{
public:
- SpellHealLog() : CombatLogServerPacket(SMSG_SPELL_HEAL_LOG, 16 + 16 + 4 * 4 + 1) { }
+ SpellHealLog() : CombatLogServerPacket(SMSG_SPELL_HEAL_LOG, 16 + 16 + 4 * 5 + 1) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
index 8b6654e79dc..7a48a3ed2da 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
@@ -23,7 +23,11 @@
#include "SpellInfo.h"
#include "Unit.h"
-void WorldPackets::Spells::SpellCastLogData::Initialize(Unit const* unit)
+namespace WorldPackets
+{
+namespace Spells
+{
+void SpellCastLogData::Initialize(Unit const* unit)
{
Health = unit->GetHealth();
AttackPower = unit->GetTotalAttackPowerValue(unit->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK);
@@ -32,7 +36,7 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Unit const* unit)
PowerData.emplace_back(int32(unit->GetPowerType()), unit->GetPower(unit->GetPowerType()), int32(0));
}
-void WorldPackets::Spells::SpellCastLogData::Initialize(Spell const* spell)
+void SpellCastLogData::Initialize(Spell const* spell)
{
Health = spell->GetCaster()->GetHealth();
AttackPower = spell->GetCaster()->GetTotalAttackPowerValue(spell->GetCaster()->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK);
@@ -51,110 +55,99 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Spell const* spell)
PowerData.insert(PowerData.begin(), SpellLogPowerData(int32(primaryPowerType), spell->GetCaster()->GetPower(primaryPowerType), 0));
}
-namespace WorldPackets
+template<class T, class U>
+bool ContentTuningParams::GenerateDataForUnits(T* /*attacker*/, U* /*target*/)
{
- namespace Spells
- {
- template<class T, class U>
- bool ContentTuningParams::GenerateDataForUnits(T* /*attacker*/, U* /*target*/)
- {
- return false;
- }
+ return false;
+}
- template<>
- bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* attacker, Player* target)
- {
- CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate();
- CreatureLevelScaling const* creatureScaling = creatureTemplate->GetLevelScaling(attacker->GetMap()->GetDifficultyID());
-
- Type = TYPE_CREATURE_TO_PLAYER_DAMAGE;
- PlayerLevelDelta = target->m_activePlayerData->ScalingPlayerLevelDelta;
- PlayerItemLevel = target->GetAverageItemLevel();
- TargetItemLevel = 0;
- ScalingHealthItemLevelCurveID = target->m_unitData->ScalingHealthItemLevelCurveID;
- TargetLevel = target->getLevel();
- Expansion = creatureTemplate->HealthScalingExpansion;
- TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
- TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
- TargetScalingLevelDelta = int8(attacker->m_unitData->ScalingLevelDelta);
- return true;
- }
+template<>
+bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* attacker, Player* target)
+{
+ CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate();
+ CreatureLevelScaling const* creatureScaling = creatureTemplate->GetLevelScaling(attacker->GetMap()->GetDifficultyID());
+
+ Type = TYPE_CREATURE_TO_PLAYER_DAMAGE;
+ PlayerLevelDelta = target->m_activePlayerData->ScalingPlayerLevelDelta;
+ PlayerItemLevel = target->GetAverageItemLevel();
+ TargetItemLevel = 0;
+ ScalingHealthItemLevelCurveID = target->m_unitData->ScalingHealthItemLevelCurveID;
+ TargetLevel = target->getLevel();
+ Expansion = creatureTemplate->HealthScalingExpansion;
+ TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
+ TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
+ TargetScalingLevelDelta = int8(attacker->m_unitData->ScalingLevelDelta);
+ return true;
+}
- template<>
- bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* attacker, Creature* target)
+template<>
+bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* attacker, Creature* target)
+{
+ CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate();
+ CreatureLevelScaling const* creatureScaling = creatureTemplate->GetLevelScaling(target->GetMap()->GetDifficultyID());
+
+ Type = TYPE_PLAYER_TO_CREATURE_DAMAGE;
+ PlayerLevelDelta = attacker->m_activePlayerData->ScalingPlayerLevelDelta;
+ PlayerItemLevel = attacker->GetAverageItemLevel();
+ TargetItemLevel = 0;
+ ScalingHealthItemLevelCurveID = target->m_unitData->ScalingHealthItemLevelCurveID;
+ TargetLevel = target->getLevel();
+ Expansion = creatureTemplate->HealthScalingExpansion;
+ TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
+ TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
+ TargetScalingLevelDelta = int8(target->m_unitData->ScalingLevelDelta);
+ return true;
+}
+
+template<>
+bool ContentTuningParams::GenerateDataForUnits<Creature, Creature>(Creature* attacker, Creature* target)
+{
+ Creature* accessor = target->HasScalableLevels() ? target : attacker;
+ CreatureTemplate const* creatureTemplate = accessor->GetCreatureTemplate();
+ CreatureLevelScaling const* creatureScaling = creatureTemplate->GetLevelScaling(accessor->GetMap()->GetDifficultyID());
+
+ Type = TYPE_CREATURE_TO_CREATURE_DAMAGE;
+ PlayerLevelDelta = 0;
+ PlayerItemLevel = 0;
+ TargetLevel = target->getLevel();
+ Expansion = creatureTemplate->HealthScalingExpansion;
+ TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
+ TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
+ TargetScalingLevelDelta = int8(accessor->m_unitData->ScalingLevelDelta);
+ return true;
+}
+
+template<>
+bool ContentTuningParams::GenerateDataForUnits<Unit, Unit>(Unit* attacker, Unit* target)
+{
+ if (Player* playerAttacker = attacker->ToPlayer())
+ {
+ if (Player* playerTarget = target->ToPlayer())
+ return GenerateDataForUnits(playerAttacker, playerTarget);
+ else if (Creature* creatureTarget = target->ToCreature())
{
- CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate();
- CreatureLevelScaling const* creatureScaling = creatureTemplate->GetLevelScaling(target->GetMap()->GetDifficultyID());
-
- Type = TYPE_PLAYER_TO_CREATURE_DAMAGE;
- PlayerLevelDelta = attacker->m_activePlayerData->ScalingPlayerLevelDelta;
- PlayerItemLevel = attacker->GetAverageItemLevel();
- TargetItemLevel = 0;
- ScalingHealthItemLevelCurveID = target->m_unitData->ScalingHealthItemLevelCurveID;
- TargetLevel = target->getLevel();
- Expansion = creatureTemplate->HealthScalingExpansion;
- TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
- TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
- TargetScalingLevelDelta = int8(target->m_unitData->ScalingLevelDelta);
- return true;
+ if (creatureTarget->HasScalableLevels())
+ return GenerateDataForUnits(playerAttacker, creatureTarget);
}
-
- template<>
- bool ContentTuningParams::GenerateDataForUnits<Creature, Creature>(Creature* attacker, Creature* target)
+ }
+ else if (Creature* creatureAttacker = attacker->ToCreature())
+ {
+ if (Player* playerTarget = target->ToPlayer())
{
- Creature* accessor = target->HasScalableLevels() ? target : attacker;
- CreatureTemplate const* creatureTemplate = accessor->GetCreatureTemplate();
- CreatureLevelScaling const* creatureScaling = creatureTemplate->GetLevelScaling(accessor->GetMap()->GetDifficultyID());
-
- Type = TYPE_CREATURE_TO_CREATURE_DAMAGE;
- PlayerLevelDelta = 0;
- PlayerItemLevel = 0;
- TargetLevel = target->getLevel();
- Expansion = creatureTemplate->HealthScalingExpansion;
- TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
- TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
- TargetScalingLevelDelta = int8(accessor->m_unitData->ScalingLevelDelta);
- return true;
+ if (creatureAttacker->HasScalableLevels())
+ return GenerateDataForUnits(creatureAttacker, playerTarget);
}
-
- template<>
- bool ContentTuningParams::GenerateDataForUnits<Unit, Unit>(Unit* attacker, Unit* target)
+ else if (Creature* creatureTarget = target->ToCreature())
{
- if (Player* playerAttacker = attacker->ToPlayer())
- {
- if (Player* playerTarget = target->ToPlayer())
- return GenerateDataForUnits(playerAttacker, playerTarget);
- else if (Creature* creatureTarget = target->ToCreature())
- {
- if (creatureTarget->HasScalableLevels())
- return GenerateDataForUnits(playerAttacker, creatureTarget);
- }
- }
- else if (Creature* creatureAttacker = attacker->ToCreature())
- {
- if (Player* playerTarget = target->ToPlayer())
- {
- if (creatureAttacker->HasScalableLevels())
- return GenerateDataForUnits(creatureAttacker, playerTarget);
- }
- else if (Creature* creatureTarget = target->ToCreature())
- {
- if (creatureAttacker->HasScalableLevels() || creatureTarget->HasScalableLevels())
- return GenerateDataForUnits(creatureAttacker, creatureTarget);
- }
- }
-
- return false;
+ if (creatureAttacker->HasScalableLevels() || creatureTarget->HasScalableLevels())
+ return GenerateDataForUnits(creatureAttacker, creatureTarget);
}
}
-}
-ByteBuffer& WorldPackets::CombatLog::CombatLogServerPacket::WriteLogData()
-{
- return _fullLogPacket << LogData;
+ return false;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData const& spellCastLogData)
+ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogData)
{
data << int64(spellCastLogData.Health);
data << int32(spellCastLogData.AttackPower);
@@ -173,11 +166,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams)
+ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTuningParams)
{
+ data << float(contentTuningParams.PlayerItemLevel);
+ data << float(contentTuningParams.TargetItemLevel);
data << int16(contentTuningParams.PlayerLevelDelta);
- data << uint16(contentTuningParams.PlayerItemLevel);
- data << uint16(contentTuningParams.TargetItemLevel);
data << uint16(contentTuningParams.ScalingHealthItemLevelCurveID);
data << uint8(contentTuningParams.TargetLevel);
data << uint8(contentTuningParams.Expansion);
@@ -189,3 +182,26 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningPara
data.FlushBits();
return data;
}
+
+ByteBuffer& operator>>(ByteBuffer& data, SpellCastVisual& visual)
+{
+ data >> visual.SpellXSpellVisualID;
+ data >> visual.ScriptVisualID;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, SpellCastVisual const& visual)
+{
+ data << int32(visual.SpellXSpellVisualID);
+ data << int32(visual.ScriptVisualID);
+
+ return data;
+}
+}
+}
+
+ByteBuffer& WorldPackets::CombatLog::CombatLogServerPacket::WriteLogData()
+{
+ return _fullLogPacket << LogData;
+}
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
index 249e8430721..298d478cc94 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
@@ -61,8 +61,8 @@ namespace WorldPackets
uint32 Type = 0;
int16 PlayerLevelDelta = 0;
- uint16 PlayerItemLevel = 0;
- uint16 TargetItemLevel = 0;
+ float PlayerItemLevel = 0;
+ float TargetItemLevel = 0;
uint16 ScalingHealthItemLevelCurveID = 0;
uint8 TargetLevel = 0;
uint8 Expansion = 0;
@@ -74,6 +74,17 @@ namespace WorldPackets
template<class T, class U>
bool GenerateDataForUnits(T* attacker, U* target);
};
+
+ struct SpellCastVisual
+ {
+ int32 SpellXSpellVisualID = 0;
+ int32 ScriptVisualID = 0;
+ };
+
+ ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogData);
+ ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTuningParams);
+ ByteBuffer& operator>>(ByteBuffer& data, SpellCastVisual& visual);
+ ByteBuffer& operator<<(ByteBuffer& data, SpellCastVisual const& visual);
}
namespace CombatLog
@@ -129,7 +140,4 @@ namespace WorldPackets
}
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData const& spellCastLogData);
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams);
-
#endif // CombatLogPacketsCommon_h__
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
index 3ef50d4d525..ff47852e429 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
@@ -45,6 +45,9 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
_worldPacket.append(equipSet->Enchants.data(), equipSet->Enchants.size());
+ _worldPacket << int32(equipSet->Unknown901_1);
+ _worldPacket << int32(equipSet->Unknown901_2);
+
_worldPacket.WriteBit(equipSet->AssignedSpecIndex != -1);
_worldPacket.WriteBits(equipSet->SetName.length(), 8);
_worldPacket.WriteBits(equipSet->SetIcon.length(), 9);
@@ -62,7 +65,7 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
void WorldPackets::EquipmentSet::SaveEquipmentSet::Read()
{
- Set.Type = EquipmentSetInfo::EquipmentSetType(_worldPacket.read<int32>());
+ Set.Type = _worldPacket.read<EquipmentSetInfo::EquipmentSetType, int32>();
_worldPacket >> Set.Guid;
_worldPacket >> Set.SetID;
_worldPacket >> Set.IgnoreMask;
@@ -76,6 +79,9 @@ void WorldPackets::EquipmentSet::SaveEquipmentSet::Read()
_worldPacket >> Set.Enchants[0];
_worldPacket >> Set.Enchants[1];
+ _worldPacket >> Set.Unknown901_1;
+ _worldPacket >> Set.Unknown901_2;
+
bool hasSpecIndex = _worldPacket.ReadBit();
uint32 setNameLength = _worldPacket.ReadBits(8);
diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp
index 68678dc7a9f..55f778b39b6 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.cpp
+++ b/src/server/game/Server/Packets/GarrisonPackets.cpp
@@ -18,7 +18,11 @@
#include "GarrisonPackets.h"
#include "DB2Structure.h"
-WorldPacket const* WorldPackets::Garrison::GarrisonCreateResult::Write()
+namespace WorldPackets
+{
+namespace Garrison
+{
+WorldPacket const* GarrisonCreateResult::Write()
{
_worldPacket << uint32(Result);
_worldPacket << uint32(GarrSiteLevelID);
@@ -26,7 +30,7 @@ WorldPacket const* WorldPackets::Garrison::GarrisonCreateResult::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonDeleteResult::Write()
+WorldPacket const* GarrisonDeleteResult::Write()
{
_worldPacket << uint32(Result);
_worldPacket << uint32(GarrSiteID);
@@ -34,7 +38,7 @@ WorldPacket const* WorldPackets::Garrison::GarrisonDeleteResult::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonPlotInfo& plotInfo)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonPlotInfo& plotInfo)
{
data << uint32(plotInfo.GarrPlotInstanceID);
data << plotInfo.PlotPos;
@@ -43,7 +47,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonPlotInf
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonBuildingInfo const& buildingInfo)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonBuildingInfo const& buildingInfo)
{
data << uint32(buildingInfo.GarrPlotInstanceID);
data << uint32(buildingInfo.GarrBuildingID);
@@ -56,7 +60,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonBuildin
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonFollower const& follower)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonFollower const& follower)
{
data << uint64(follower.DbID);
data << uint32(follower.GarrFollowerID);
@@ -71,6 +75,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonFollowe
data << uint32(follower.AbilityID.size());
data << uint32(follower.ZoneSupportSpellID);
data << uint32(follower.FollowerStatus);
+ data << int32(follower.Health);
+ data << int8(follower.BoardIndex);
+ data << int32(follower.HealingTimestamp);
for (GarrAbilityEntry const* ability : follower.AbilityID)
data << uint32(ability->ID);
@@ -81,7 +88,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonFollowe
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMission const& mission)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonMission const& mission)
{
data << uint64(mission.DbID);
data << uint32(mission.MissionRecID);
@@ -91,13 +98,14 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMission
data << uint32(mission.TravelDuration);
data << uint32(mission.MissionDuration);
data << uint32(mission.MissionState);
- data << uint32(mission.Unknown1);
- data << uint32(mission.Unknown2);
+ data << uint32(mission.SuccessChance);
+ data << uint32(mission.Flags);
+ data << float(mission.MissionScalar);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMissionReward const& missionRewardItem)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonMissionReward const& missionRewardItem)
{
data << int32(missionRewardItem.ItemID);
data << uint32(missionRewardItem.Quantity);
@@ -110,7 +118,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMission
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMissionBonusAbility const& areaBonus)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonMissionBonusAbility const& areaBonus)
{
data << uint32(areaBonus.GarrMssnBonusAbilityID);
data << uint32(areaBonus.StartTime);
@@ -118,17 +126,66 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMission
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonTalent const& talent)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonTalentSocketData const& talentSocketData)
+{
+ data << int32(talentSocketData.SoulbindConduitID);
+ data << int32(talentSocketData.SoulbindConduitRank);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonTalent const& talent)
{
data << int32(talent.GarrTalentID);
data << int32(talent.Rank);
data << int32(talent.ResearchStartTime);
data << int32(talent.Flags);
+ data.WriteBit(talent.Socket.is_initialized());
+ data.FlushBits();
+
+ if (talent.Socket)
+ data << *talent.Socket;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonCollectionEntry const& collectionEntry)
+{
+ data << int32(collectionEntry.EntryID);
+ data << int32(collectionEntry.Rank);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonCollection const& collection)
+{
+ data << int32(collection.Type);
+ data << uint32(collection.Entries.size());
+ for (GarrisonCollectionEntry const& collectionEntry : collection.Entries)
+ data << collectionEntry;
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonInfo const& garrison)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonEventEntry const& event)
+{
+ data << int32(event.EntryID);
+ data << int32(event.EventValue);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonEventList const& eventList)
+{
+ data << int32(eventList.Type);
+ data << uint32(eventList.Events.size());
+ for (GarrisonEventEntry const& event : eventList.Events)
+ data << event;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison)
{
ASSERT(garrison.Missions.size() == garrison.MissionRewards.size());
ASSERT(garrison.Missions.size() == garrison.MissionOvermaxRewards.size());
@@ -140,46 +197,52 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonInfo co
data << uint32(garrison.Buildings.size());
data << uint32(garrison.Plots.size());
data << uint32(garrison.Followers.size());
+ data << uint32(garrison.AutoTroops.size());
data << uint32(garrison.Missions.size());
data << uint32(garrison.MissionRewards.size());
data << uint32(garrison.MissionOvermaxRewards.size());
data << uint32(garrison.MissionAreaBonuses.size());
data << uint32(garrison.Talents.size());
+ data << uint32(garrison.Collections.size());
+ data << uint32(garrison.EventLists.size());
data << uint32(garrison.CanStartMission.size());
data << uint32(garrison.ArchivedMissions.size());
data << int32(garrison.NumFollowerActivationsRemaining);
data << uint32(garrison.NumMissionsStartedToday);
- for (WorldPackets::Garrison::GarrisonPlotInfo* plot : garrison.Plots)
+ for (GarrisonPlotInfo* plot : garrison.Plots)
data << *plot;
- for (WorldPackets::Garrison::GarrisonMission const* mission : garrison.Missions)
+ for (GarrisonMission const* mission : garrison.Missions)
data << *mission;
- for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionRewards)
+ for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionRewards)
data << uint32(missionReward.size());
- for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionRewards)
- for (WorldPackets::Garrison::GarrisonMissionReward const& missionRewardItem : missionReward)
+ for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionRewards)
+ for (GarrisonMissionReward const& missionRewardItem : missionReward)
data << missionRewardItem;
- for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards)
+ for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards)
data << uint32(missionReward.size());
- for (std::vector<WorldPackets::Garrison::GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards)
- for (WorldPackets::Garrison::GarrisonMissionReward const& missionRewardItem : missionReward)
+ for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionOvermaxRewards)
+ for (GarrisonMissionReward const& missionRewardItem : missionReward)
data << missionRewardItem;
- for (WorldPackets::Garrison::GarrisonMissionBonusAbility const* areaBonus : garrison.MissionAreaBonuses)
+ for (GarrisonMissionBonusAbility const* areaBonus : garrison.MissionAreaBonuses)
data << *areaBonus;
- for (WorldPackets::Garrison::GarrisonTalent const& talent : garrison.Talents)
- data << talent;
+ for (GarrisonCollection const& collection : garrison.Collections)
+ data << collection;
+
+ for (GarrisonEventList const& eventList : garrison.EventLists)
+ data << eventList;
if (!garrison.ArchivedMissions.empty())
data.append(garrison.ArchivedMissions.data(), garrison.ArchivedMissions.size());
- for (WorldPackets::Garrison::GarrisonBuildingInfo const* building : garrison.Buildings)
+ for (GarrisonBuildingInfo const* building : garrison.Buildings)
data << *building;
for (bool canStartMission : garrison.CanStartMission)
@@ -187,20 +250,26 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonInfo co
data.FlushBits();
- for (WorldPackets::Garrison::GarrisonFollower const* follower : garrison.Followers)
+ for (GarrisonFollower const* follower : garrison.Followers)
+ data << *follower;
+
+ for (GarrisonFollower const* follower : garrison.AutoTroops)
data << *follower;
+ for (GarrisonTalent const& talent : garrison.Talents)
+ data << talent;
+
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::FollowerSoftCapInfo const& followerSoftCapInfo)
+ByteBuffer& operator<<(ByteBuffer& data, FollowerSoftCapInfo const& followerSoftCapInfo)
{
data << int32(followerSoftCapInfo.GarrFollowerTypeID);
data << uint32(followerSoftCapInfo.Count);
return data;
}
-WorldPacket const* WorldPackets::Garrison::GetGarrisonInfoResult::Write()
+WorldPacket const* GetGarrisonInfoResult::Write()
{
_worldPacket << int32(FactionIndex);
_worldPacket << uint32(Garrisons.size());
@@ -214,7 +283,7 @@ WorldPacket const* WorldPackets::Garrison::GetGarrisonInfoResult::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonRemoteBuildingInfo const& building)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonRemoteBuildingInfo const& building)
{
data << uint32(building.GarrPlotInstanceID);
data << uint32(building.GarrBuildingID);
@@ -222,17 +291,17 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonRemoteB
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonRemoteSiteInfo const& site)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonRemoteSiteInfo const& site)
{
data << uint32(site.GarrSiteLevelID);
data << uint32(site.Buildings.size());
- for (WorldPackets::Garrison::GarrisonRemoteBuildingInfo const& building : site.Buildings)
+ for (GarrisonRemoteBuildingInfo const& building : site.Buildings)
data << building;
return data;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonRemoteInfo::Write()
+WorldPacket const* GarrisonRemoteInfo::Write()
{
_worldPacket << uint32(Sites.size());
for (GarrisonRemoteSiteInfo const& site : Sites)
@@ -241,14 +310,14 @@ WorldPacket const* WorldPackets::Garrison::GarrisonRemoteInfo::Write()
return &_worldPacket;
}
-void WorldPackets::Garrison::GarrisonPurchaseBuilding::Read()
+void GarrisonPurchaseBuilding::Read()
{
_worldPacket >> NpcGUID;
_worldPacket >> PlotInstanceID;
_worldPacket >> BuildingID;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonPlaceBuildingResult::Write()
+WorldPacket const* GarrisonPlaceBuildingResult::Write()
{
_worldPacket << int32(GarrTypeID);
_worldPacket << uint32(Result);
@@ -259,13 +328,13 @@ WorldPacket const* WorldPackets::Garrison::GarrisonPlaceBuildingResult::Write()
return &_worldPacket;
}
-void WorldPackets::Garrison::GarrisonCancelConstruction::Read()
+void GarrisonCancelConstruction::Read()
{
_worldPacket >> NpcGUID;
_worldPacket >> PlotInstanceID;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonBuildingRemoved::Write()
+WorldPacket const* GarrisonBuildingRemoved::Write()
{
_worldPacket << int32(GarrTypeID);
_worldPacket << uint32(Result);
@@ -275,7 +344,7 @@ WorldPacket const* WorldPackets::Garrison::GarrisonBuildingRemoved::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonLearnBlueprintResult::Write()
+WorldPacket const* GarrisonLearnBlueprintResult::Write()
{
_worldPacket << int32(GarrTypeID);
_worldPacket << uint32(Result);
@@ -284,7 +353,7 @@ WorldPacket const* WorldPackets::Garrison::GarrisonLearnBlueprintResult::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonUnlearnBlueprintResult::Write()
+WorldPacket const* GarrisonUnlearnBlueprintResult::Write()
{
_worldPacket << int32(GarrTypeID);
_worldPacket << uint32(Result);
@@ -293,7 +362,7 @@ WorldPacket const* WorldPackets::Garrison::GarrisonUnlearnBlueprintResult::Write
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationDataResult::Write()
+WorldPacket const* GarrisonRequestBlueprintAndSpecializationDataResult::Write()
{
_worldPacket << int32(GarrTypeID);
_worldPacket << uint32(BlueprintsKnown ? BlueprintsKnown->size() : 0);
@@ -309,24 +378,24 @@ WorldPacket const* WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializa
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonBuildingLandmark& landmark)
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonBuildingMapData& building)
{
- data << uint32(landmark.GarrBuildingPlotInstID);
- data << landmark.Pos;
+ data << uint32(building.GarrBuildingPlotInstID);
+ data << building.Pos;
return data;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonBuildingLandmarks::Write()
+WorldPacket const* GarrisonMapDataResponse::Write()
{
- _worldPacket << uint32(Landmarks.size());
- for (GarrisonBuildingLandmark& landmark : Landmarks)
+ _worldPacket << uint32(Buildings.size());
+ for (GarrisonBuildingMapData& landmark : Buildings)
_worldPacket << landmark;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonPlotPlaced::Write()
+WorldPacket const* GarrisonPlotPlaced::Write()
{
_worldPacket << int32(GarrTypeID);
_worldPacket << *PlotInfo;
@@ -334,14 +403,14 @@ WorldPacket const* WorldPackets::Garrison::GarrisonPlotPlaced::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonPlotRemoved::Write()
+WorldPacket const* GarrisonPlotRemoved::Write()
{
_worldPacket << uint32(GarrPlotInstanceID);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonAddFollowerResult::Write()
+WorldPacket const* GarrisonAddFollowerResult::Write()
{
_worldPacket << int32(GarrTypeID);
_worldPacket << uint32(Result);
@@ -350,7 +419,7 @@ WorldPacket const* WorldPackets::Garrison::GarrisonAddFollowerResult::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonRemoveFollowerResult::Write()
+WorldPacket const* GarrisonRemoveFollowerResult::Write()
{
_worldPacket << uint64(FollowerDBID);
_worldPacket << int32(GarrTypeID);
@@ -360,9 +429,11 @@ WorldPacket const* WorldPackets::Garrison::GarrisonRemoveFollowerResult::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Garrison::GarrisonBuildingActivated::Write()
+WorldPacket const* GarrisonBuildingActivated::Write()
{
_worldPacket << uint32(GarrPlotInstanceID);
return &_worldPacket;
}
+}
+}
diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h
index 6e929d08245..cb33d51ff42 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.h
+++ b/src/server/game/Server/Packets/GarrisonPackets.h
@@ -20,6 +20,7 @@
#include "Packet.h"
#include "ObjectGuid.h"
+#include "Optional.h"
#include "Position.h"
#include "PacketUtilities.h"
#include <list>
@@ -94,6 +95,9 @@ namespace WorldPackets
std::list<GarrAbilityEntry const*> AbilityID;
uint32 ZoneSupportSpellID = 0;
uint32 FollowerStatus = 0;
+ int32 Health = 0;
+ int32 HealingTimestamp = 0;
+ int8 BoardIndex = 0;
std::string CustomName;
};
@@ -107,8 +111,9 @@ namespace WorldPackets
uint32 TravelDuration = 0;
uint32 MissionDuration = 0;
uint32 MissionState = 0;
- uint32 Unknown1 = 0;
- uint32 Unknown2 = 0;
+ uint32 SuccessChance = 0;
+ uint32 Flags = 0;
+ float MissionScalar = 1.0f;
};
struct GarrisonMissionReward
@@ -128,12 +133,43 @@ namespace WorldPackets
time_t StartTime = time_t(0);
};
+ struct GarrisonTalentSocketData
+ {
+ int32 SoulbindConduitID = 0;
+ int32 SoulbindConduitRank = 0;
+ };
+
struct GarrisonTalent
{
int32 GarrTalentID = 0;
int32 Rank = 0;
time_t ResearchStartTime = time_t(0);
int32 Flags = 0;
+ Optional<GarrisonTalentSocketData> Socket;
+ };
+
+ struct GarrisonCollectionEntry
+ {
+ int32 EntryID = 0;
+ int32 Rank = 0;
+ };
+
+ struct GarrisonCollection
+ {
+ int32 Type = 0;
+ std::vector<GarrisonCollectionEntry> Entries;
+ };
+
+ struct GarrisonEventEntry
+ {
+ int32 EntryID = 0;
+ int32 EventValue = 0;
+ };
+
+ struct GarrisonEventList
+ {
+ int32 Type = 0;
+ std::vector<GarrisonEventEntry> Events;
};
struct GarrisonInfo
@@ -146,11 +182,14 @@ namespace WorldPackets
std::vector<GarrisonPlotInfo*> Plots;
std::vector<GarrisonBuildingInfo const*> Buildings;
std::vector<GarrisonFollower const*> Followers;
+ std::vector<GarrisonFollower const*> AutoTroops;
std::vector<GarrisonMission const*> Missions;
std::vector<std::vector<GarrisonMissionReward>> MissionRewards;
std::vector<std::vector<GarrisonMissionReward>> MissionOvermaxRewards;
std::vector<GarrisonMissionBonusAbility const*> MissionAreaBonuses;
std::vector<GarrisonTalent> Talents;
+ std::vector<GarrisonCollection> Collections;
+ std::vector<GarrisonEventList> EventLists;
std::vector<bool> CanStartMission;
std::vector<int32> ArchivedMissions;
};
@@ -291,31 +330,31 @@ namespace WorldPackets
std::unordered_set<uint32> const* BlueprintsKnown = nullptr;
};
- class GarrisonGetBuildingLandmarks final : public ClientPacket
+ class GarrisonGetMapData final : public ClientPacket
{
public:
- GarrisonGetBuildingLandmarks(WorldPacket&& packet) : ClientPacket(CMSG_GARRISON_GET_BUILDING_LANDMARKS, std::move(packet)) { }
+ GarrisonGetMapData(WorldPacket&& packet) : ClientPacket(CMSG_GARRISON_GET_MAP_DATA, std::move(packet)) { }
void Read() override { }
};
- struct GarrisonBuildingLandmark
+ struct GarrisonBuildingMapData
{
- GarrisonBuildingLandmark() : GarrBuildingPlotInstID(0), Pos() { }
- GarrisonBuildingLandmark(uint32 buildingPlotInstId, Position const& pos) : GarrBuildingPlotInstID(buildingPlotInstId), Pos(pos) { }
+ GarrisonBuildingMapData() : GarrBuildingPlotInstID(0), Pos() { }
+ GarrisonBuildingMapData(uint32 buildingPlotInstId, Position const& pos) : GarrBuildingPlotInstID(buildingPlotInstId), Pos(pos) { }
uint32 GarrBuildingPlotInstID;
TaggedPosition<Position::XYZ> Pos;
};
- class GarrisonBuildingLandmarks final : public ServerPacket
+ class GarrisonMapDataResponse final : public ServerPacket
{
public:
- GarrisonBuildingLandmarks() : ServerPacket(SMSG_GARRISON_BUILDING_LANDMARKS) { }
+ GarrisonMapDataResponse() : ServerPacket(SMSG_GARRISON_MAP_DATA_RESPONSE) { }
WorldPacket const* Write() override;
- std::vector<GarrisonBuildingLandmark> Landmarks;
+ std::vector<GarrisonBuildingMapData> Buildings;
};
class GarrisonPlotPlaced final : public ServerPacket
diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp
index aae54fca389..d0d91e6ab32 100644
--- a/src/server/game/Server/Packets/GuildPackets.cpp
+++ b/src/server/game/Server/Packets/GuildPackets.cpp
@@ -188,7 +188,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberD
return data;
}
-WorldPacket const* WorldPackets::Guild::GuildEventAwayChange::Write()
+WorldPacket const* WorldPackets::Guild::GuildEventStatusChange::Write()
{
_worldPacket << Guid;
_worldPacket.WriteBit(AFK);
@@ -272,12 +272,10 @@ WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write()
{
_worldPacket.WriteBit(Removed);
_worldPacket.WriteBits(LeaverName.length(), 6);
- _worldPacket.FlushBits();
if (Removed)
{
_worldPacket.WriteBits(RemoverName.length(), 6);
- _worldPacket.FlushBits();
_worldPacket << RemoverGUID;
_worldPacket << uint32(RemoverVirtualRealmAddress);
diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h
index 5762f2b7971..a64595465ac 100644
--- a/src/server/game/Server/Packets/GuildPackets.h
+++ b/src/server/game/Server/Packets/GuildPackets.h
@@ -227,10 +227,10 @@ namespace WorldPackets
std::string OldGuildName;
};
- class GuildEventAwayChange final : public ServerPacket
+ class GuildEventStatusChange final : public ServerPacket
{
public:
- GuildEventAwayChange() : ServerPacket(SMSG_GUILD_EVENT_AWAY_CHANGE, 16 + 1) { }
+ GuildEventStatusChange() : ServerPacket(SMSG_GUILD_EVENT_STATUS_CHANGE, 16 + 1) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/HotfixPackets.cpp b/src/server/game/Server/Packets/HotfixPackets.cpp
index 175dee3d600..629627ff852 100644
--- a/src/server/game/Server/Packets/HotfixPackets.cpp
+++ b/src/server/game/Server/Packets/HotfixPackets.cpp
@@ -54,7 +54,7 @@ WorldPacket const* DBReply::Write()
_worldPacket << uint32(TableHash);
_worldPacket << uint32(RecordID);
_worldPacket << uint32(Timestamp);
- _worldPacket.WriteBit(Allow);
+ _worldPacket.WriteBits(Status, 2);
_worldPacket << uint32(Data.size());
_worldPacket.append(Data);
@@ -91,12 +91,12 @@ ByteBuffer& operator<<(ByteBuffer& data, HotfixConnect::HotfixData const& hotfix
if (hotfixData.Size)
{
data << uint32(*hotfixData.Size);
- data.WriteBit(true);
+ data.WriteBits(1, 2);
}
else
{
data << uint32(0);
- data.WriteBit(false);
+ data.WriteBits(3, 2);
}
data.FlushBits();
diff --git a/src/server/game/Server/Packets/HotfixPackets.h b/src/server/game/Server/Packets/HotfixPackets.h
index e4e0e2b193f..ecd48021203 100644
--- a/src/server/game/Server/Packets/HotfixPackets.h
+++ b/src/server/game/Server/Packets/HotfixPackets.h
@@ -47,14 +47,14 @@ namespace WorldPackets
class DBReply final : public ServerPacket
{
public:
- DBReply() : ServerPacket(SMSG_DB_REPLY, 12) { }
+ DBReply() : ServerPacket(SMSG_DB_REPLY, 4 + 4 + 4 + 1 + 4) { }
WorldPacket const* Write() override;
uint32 TableHash = 0;
uint32 Timestamp = 0;
uint32 RecordID = 0;
- bool Allow = false;
+ uint8 Status = 3;
ByteBuffer Data;
};
diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp
index 7ae472302b3..0abe35115fe 100644
--- a/src/server/game/Server/Packets/InspectPackets.cpp
+++ b/src/server/game/Server/Packets/InspectPackets.cpp
@@ -78,14 +78,11 @@ void WorldPackets::Inspect::PlayerModelDisplayInfo::Initialize(Player const* pla
SpecializationID = player->GetPrimarySpecialization();
Name = player->GetName();
GenderID = player->m_playerData->NativeSex;
- Skin = player->m_playerData->SkinID;
- HairColor = player->m_playerData->HairColorID;
- HairStyle = player->m_playerData->HairStyleID;
- FacialHairStyle = player->m_playerData->FacialHairStyleID;
- Face = player->m_playerData->FaceID;
Race = player->getRace();
ClassID = player->getClass();
- std::copy(player->m_playerData->CustomDisplayOption.begin(), player->m_playerData->CustomDisplayOption.end(), CustomDisplay.begin());
+
+ for (UF::ChrCustomizationChoice customization : player->m_playerData->Customizations)
+ Customizations.push_back({ customization.ChrCustomizationOptionID, customization.ChrCustomizationChoiceID });
for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i)
if (::Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i))
@@ -99,16 +96,14 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PlayerModelDispl
data << uint32(displayInfo.Items.size());
data.WriteBits(displayInfo.Name.length(), 6);
data << uint8(displayInfo.GenderID);
- data << uint8(displayInfo.Skin);
- data << uint8(displayInfo.HairColor);
- data << uint8(displayInfo.HairStyle);
- data << uint8(displayInfo.FacialHairStyle);
- data << uint8(displayInfo.Face);
data << uint8(displayInfo.Race);
data << uint8(displayInfo.ClassID);
- data.append(displayInfo.CustomDisplay.data(), displayInfo.CustomDisplay.size());
+ data << uint32(displayInfo.Customizations.size());
data.WriteString(displayInfo.Name);
+ for (WorldPackets::Character::ChrCustomizationChoice const& customization : displayInfo.Customizations)
+ data << customization;
+
for (WorldPackets::Inspect::InspectItemData const& item : displayInfo.Items)
data << item;
diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h
index eb62955cfb7..91e8e69afc9 100644
--- a/src/server/game/Server/Packets/InspectPackets.h
+++ b/src/server/game/Server/Packets/InspectPackets.h
@@ -18,6 +18,7 @@
#pragma once
#include "Packet.h"
+#include "CharacterPackets.h"
#include "DBCEnums.h"
#include "ItemPacketsCommon.h"
#include "ObjectGuid.h"
@@ -78,14 +79,9 @@ namespace WorldPackets
std::string Name;
int32 SpecializationID = 0;
uint8 GenderID = GENDER_NONE;
- uint8 Skin = 0;
- uint8 HairColor = 0;
- uint8 HairStyle = 0;
- uint8 FacialHairStyle = 0;
- uint8 Face = 0;
uint8 Race = RACE_NONE;
uint8 ClassID = CLASS_NONE;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
+ std::vector<Character::ChrCustomizationChoice> Customizations;
void Initialize(Player const* player);
};
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index 1952ed9242e..12284f1e483 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -32,7 +32,7 @@ void WorldPackets::Item::BuyItem::Read()
_worldPacket >> Muid;
_worldPacket >> Slot;
_worldPacket >> Item;
- ItemType = static_cast<ItemVendorType>(_worldPacket.ReadBits(2));
+ ItemType = static_cast<ItemVendorType>(_worldPacket.ReadBits(3));
}
WorldPacket const* WorldPackets::Item::BuySucceeded::Write()
diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.cpp b/src/server/game/Server/Packets/ItemPacketsCommon.cpp
index 6e694cf1873..79f7a4a61b0 100644
--- a/src/server/game/Server/Packets/ItemPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/ItemPacketsCommon.cpp
@@ -19,7 +19,11 @@
#include "Item.h"
#include "Player.h"
-bool WorldPackets::Item::ItemBonusInstanceData::operator==(ItemBonusInstanceData const& r) const
+namespace WorldPackets
+{
+namespace Item
+{
+bool ItemBonuses::operator==(ItemBonuses const& r) const
{
if (Context != r.Context)
return false;
@@ -30,9 +34,22 @@ bool WorldPackets::Item::ItemBonusInstanceData::operator==(ItemBonusInstanceData
return std::is_permutation(BonusListIDs.begin(), BonusListIDs.end(), r.BonusListIDs.begin());
}
-void WorldPackets::Item::ItemInstance::Initialize(::Item const* item)
+bool ItemMod::operator==(ItemMod const& r) const
+{
+ return Value == r.Value && Type == r.Type;
+}
+
+bool ItemModList::operator==(ItemModList const& r) const
+{
+ if (Values.size() != r.Values.size())
+ return false;
+
+ return std::is_permutation(Values.begin(), Values.end(), r.Values.begin());
+}
+
+void ItemInstance::Initialize(::Item const* item)
{
- ItemID = item->GetEntry();
+ ItemID = item->GetEntry();
std::vector<int32> const& bonusListIds = item->m_itemData->BonusListIDs;
if (!bonusListIds.empty())
{
@@ -41,21 +58,15 @@ void WorldPackets::Item::ItemInstance::Initialize(::Item const* item)
ItemBonus->Context = item->GetContext();
}
- if (uint32 mask = item->m_itemData->ModifiersMask)
- {
- Modifications = boost::in_place();
-
- for (size_t i = 0; mask != 0; mask >>= 1, ++i)
- if ((mask & 1) != 0)
- Modifications->Insert(i, item->GetModifier(ItemModifier(i)));
- }
+ for (UF::ItemMod mod : item->m_itemData->Modifiers->Values)
+ Modifications.Values.emplace_back(mod.Value, ItemModifier(mod.Type));
}
-void WorldPackets::Item::ItemInstance::Initialize(UF::SocketedGem const* gem)
+void ItemInstance::Initialize(UF::SocketedGem const* gem)
{
ItemID = gem->ItemID;
- ItemBonusInstanceData bonus;
+ ItemBonuses bonus;
bonus.Context = ItemContext(*gem->Context);
for (uint16 bonusListId : gem->BonusListIDs)
if (bonusListId)
@@ -65,7 +76,7 @@ void WorldPackets::Item::ItemInstance::Initialize(UF::SocketedGem const* gem)
ItemBonus = bonus;
}
-void WorldPackets::Item::ItemInstance::Initialize(::LootItem const& lootItem)
+void ItemInstance::Initialize(::LootItem const& lootItem)
{
ItemID = lootItem.itemid;
@@ -79,18 +90,15 @@ void WorldPackets::Item::ItemInstance::Initialize(::LootItem const& lootItem)
}
}
-void WorldPackets::Item::ItemInstance::Initialize(::VoidStorageItem const* voidItem)
+void ItemInstance::Initialize(::VoidStorageItem const* voidItem)
{
ItemID = voidItem->ItemEntry;
- if (voidItem->FixedScalingLevel || voidItem->ArtifactKnowledgeLevel)
- {
- Modifications = boost::in_place();
- if (voidItem->FixedScalingLevel)
- Modifications->Insert(ITEM_MODIFIER_TIMEWALKER_LEVEL, voidItem->FixedScalingLevel);
- if (voidItem->ArtifactKnowledgeLevel)
- Modifications->Insert(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL, voidItem->ArtifactKnowledgeLevel);
- }
+ if (voidItem->FixedScalingLevel)
+ Modifications.Values.emplace_back(voidItem->FixedScalingLevel, ITEM_MODIFIER_TIMEWALKER_LEVEL);
+
+ if (voidItem->ArtifactKnowledgeLevel)
+ Modifications.Values.emplace_back(voidItem->ArtifactKnowledgeLevel, ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL);
if (!voidItem->BonusListIDs.empty())
{
@@ -100,15 +108,15 @@ void WorldPackets::Item::ItemInstance::Initialize(::VoidStorageItem const* voidI
}
}
-bool WorldPackets::Item::ItemInstance::operator==(ItemInstance const& r) const
+bool ItemInstance::operator==(ItemInstance const& r) const
{
if (ItemID != r.ItemID)
return false;
- if (ItemBonus.is_initialized() != r.ItemBonus.is_initialized() || Modifications.is_initialized() != r.Modifications.is_initialized())
+ if (ItemBonus.is_initialized() != r.ItemBonus.is_initialized())
return false;
- if (Modifications.is_initialized() && *Modifications != *r.Modifications)
+ if (Modifications != r.Modifications)
return false;
if (ItemBonus.is_initialized() && *ItemBonus != *r.ItemBonus)
@@ -117,7 +125,7 @@ bool WorldPackets::Item::ItemInstance::operator==(ItemInstance const& r) const
return true;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceData const& itemBonusInstanceData)
+ByteBuffer& operator<<(ByteBuffer& data, ItemBonuses const& itemBonusInstanceData)
{
data << uint8(itemBonusInstanceData.Context);
data << uint32(itemBonusInstanceData.BonusListIDs.size());
@@ -127,7 +135,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceDa
return data;
}
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceData& itemBonusInstanceData)
+ByteBuffer& operator>>(ByteBuffer& data, ItemBonuses& itemBonusInstanceData)
{
uint32 bonusListIdSize;
@@ -144,47 +152,77 @@ ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceDa
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemInstance const& itemInstance)
+ByteBuffer& operator<<(ByteBuffer& data, ItemMod const& itemMod)
+{
+ data << int32(itemMod.Value);
+ data << uint8(itemMod.Type);
+
+ return data;
+}
+
+ByteBuffer& operator>>(ByteBuffer& data, ItemMod& itemMod)
+{
+ data >> itemMod.Value;
+ itemMod.Type = data.read<ItemModifier, uint8>();
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, ItemModList const& itemModList)
+{
+ data.WriteBits(itemModList.Values.size(), 6);
+ data.FlushBits();
+
+ for (ItemMod const& itemMod : itemModList.Values)
+ data << itemMod;
+
+ return data;
+}
+
+ByteBuffer& operator>>(ByteBuffer& data, ItemModList& itemModList)
+{
+ itemModList.Values.resize(data.ReadBits(6));
+
+ for (ItemMod& itemMod : itemModList.Values)
+ data >> itemMod;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, ItemInstance const& itemInstance)
{
data << int32(itemInstance.ItemID);
data.WriteBit(itemInstance.ItemBonus.is_initialized());
- data.WriteBit(itemInstance.Modifications.is_initialized());
data.FlushBits();
+ data << itemInstance.Modifications;
+
if (itemInstance.ItemBonus)
data << *itemInstance.ItemBonus;
- if (itemInstance.Modifications)
- data << *itemInstance.Modifications;
-
return data;
}
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemInstance& itemInstance)
+ByteBuffer& operator>>(ByteBuffer& data, ItemInstance& itemInstance)
{
data >> itemInstance.ItemID;
bool hasItemBonus = data.ReadBit();
- bool hasModifications = data.ReadBit();
data.ResetBitPos();
+ data >> itemInstance.Modifications;
+
if (hasItemBonus)
{
itemInstance.ItemBonus = boost::in_place();
data >> *itemInstance.ItemBonus;
}
- if (hasModifications)
- {
- itemInstance.Modifications = boost::in_place();
- data >> *itemInstance.Modifications;
- }
-
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemEnchantData const& itemEnchantData)
+ByteBuffer& operator<<(ByteBuffer& data, ItemEnchantData const& itemEnchantData)
{
data << int32(itemEnchantData.ID);
data << uint32(itemEnchantData.Expiration);
@@ -193,28 +231,30 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemEnchantData con
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemData const& itemGemData)
+ByteBuffer& operator<<(ByteBuffer& data, ItemGemData const& itemGemData)
{
data << uint8(itemGemData.Slot);
data << itemGemData.Item;
return data;
}
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemData& itemGemData)
+ByteBuffer& operator>>(ByteBuffer& data, ItemGemData& itemGemData)
{
data >> itemGemData.Slot;
data >> itemGemData.Item;
return data;
}
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::InvUpdate& invUpdate)
+ByteBuffer& operator>>(ByteBuffer& data, InvUpdate& invUpdate)
{
invUpdate.Items.resize(data.ReadBits(2));
- for (size_t i = 0; i < invUpdate.Items.size(); ++i)
+ for (InvUpdate::InvItem& item : invUpdate.Items)
{
- data >> invUpdate.Items[i].ContainerSlot;
- data >> invUpdate.Items[i].Slot;
+ data >> item.ContainerSlot;
+ data >> item.Slot;
}
return data;
}
+}
+}
diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.h b/src/server/game/Server/Packets/ItemPacketsCommon.h
index 147672997b3..2131d8ae7a5 100644
--- a/src/server/game/Server/Packets/ItemPacketsCommon.h
+++ b/src/server/game/Server/Packets/ItemPacketsCommon.h
@@ -18,7 +18,7 @@
#ifndef ItemPacketsCommon_h__
#define ItemPacketsCommon_h__
-#include "Define.h"
+#include "ItemDefines.h"
#include "PacketUtilities.h"
#include "Optional.h"
#include <vector>
@@ -38,13 +38,33 @@ namespace WorldPackets
{
namespace Item
{
- struct ItemBonusInstanceData
+ struct ItemBonuses
{
ItemContext Context = ItemContext(0);
std::vector<int32> BonusListIDs;
- bool operator==(ItemBonusInstanceData const& r) const;
- bool operator!=(ItemBonusInstanceData const& r) const { return !(*this == r); }
+ bool operator==(ItemBonuses const& r) const;
+ bool operator!=(ItemBonuses const& r) const { return !(*this == r); }
+ };
+
+ struct ItemMod
+ {
+ ItemMod() = default;
+ ItemMod(int32 value, ItemModifier type) : Value(value), Type(type) { }
+
+ int32 Value = 0;
+ ItemModifier Type = MAX_ITEM_MODIFIERS;
+
+ bool operator==(ItemMod const& r) const;
+ bool operator!=(ItemMod const& r) const { return !(*this == r); }
+ };
+
+ struct ItemModList
+ {
+ Array<ItemMod, MAX_ITEM_MODIFIERS> Values;
+
+ bool operator==(ItemModList const& r) const;
+ bool operator!=(ItemModList const& r) const { return !(*this == r); }
};
struct ItemInstance
@@ -55,8 +75,8 @@ namespace WorldPackets
void Initialize(::VoidStorageItem const* voidItem);
uint32 ItemID = 0;
- Optional<ItemBonusInstanceData> ItemBonus;
- Optional<CompactArray<int32>> Modifications;
+ Optional<ItemBonuses> ItemBonus;
+ ItemModList Modifications;
bool operator==(ItemInstance const& r) const;
bool operator!=(ItemInstance const& r) const { return !(*this == r); }
@@ -90,17 +110,20 @@ namespace WorldPackets
}
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceData const& itemBonusInstanceData);
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceData& itemBonusInstanceData);
-
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemInstance const& itemInstance);
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemInstance& itemInstance);
+namespace WorldPackets
+{
+namespace Item
+{
+ByteBuffer& operator<<(ByteBuffer& data, ItemInstance const& itemInstance);
+ByteBuffer& operator>>(ByteBuffer& data, ItemInstance& itemInstance);
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemEnchantData const& itemEnchantData);
+ByteBuffer& operator<<(ByteBuffer& data, ItemEnchantData const& itemEnchantData);
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemData const& itemGemInstanceData);
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemData& itemGemInstanceData);
+ByteBuffer& operator<<(ByteBuffer& data, ItemGemData const& itemGemInstanceData);
+ByteBuffer& operator>>(ByteBuffer& data, ItemGemData& itemGemInstanceData);
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::InvUpdate& invUpdate);
+ByteBuffer& operator>>(ByteBuffer& data, InvUpdate& invUpdate);
+}
+}
#endif // ItemPacketsCommon_h__
diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp
index dee02bba7a2..7452384c7d4 100644
--- a/src/server/game/Server/Packets/LFGPackets.cpp
+++ b/src/server/game/Server/Packets/LFGPackets.cpp
@@ -69,6 +69,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGBlackListSlot con
data << uint32(lfgBlackListSlot.Reason);
data << int32(lfgBlackListSlot.SubReason1);
data << int32(lfgBlackListSlot.SubReason2);
+ data << uint32(lfgBlackListSlot.SoftLock);
return data;
}
@@ -262,27 +263,6 @@ WorldPacket const* WorldPackets::LFG::LFGRoleCheckUpdate::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGJoinBlackListSlot const& lfgBlackListSlot)
-{
- data << int32(lfgBlackListSlot.Slot);
- data << int32(lfgBlackListSlot.Reason);
- data << int32(lfgBlackListSlot.SubReason1);
- data << int32(lfgBlackListSlot.SubReason2);
-
- return data;
-}
-
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGJoinBlackList const& blackList)
-{
- data << blackList.Guid;
- data << uint32(blackList.Slots.size());
-
- for (WorldPackets::LFG::LFGJoinBlackListSlot const& slot : blackList.Slots)
- data << slot;
-
- return data;
-}
-
WorldPacket const* WorldPackets::LFG::LFGJoinResult::Write()
{
_worldPacket << Ticket;
@@ -291,7 +271,7 @@ WorldPacket const* WorldPackets::LFG::LFGJoinResult::Write()
_worldPacket << uint32(BlackList.size());
_worldPacket << uint32(BlackListNames.size());
- for (LFGJoinBlackList const& blackList : BlackList)
+ for (LFGBlackList const& blackList : BlackList)
_worldPacket << blackList;
for (std::string const* str : BlackListNames)
diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h
index f3580464129..7dd0fbccc2e 100644
--- a/src/server/game/Server/Packets/LFGPackets.h
+++ b/src/server/game/Server/Packets/LFGPackets.h
@@ -122,14 +122,15 @@ namespace WorldPackets
struct LFGBlackListSlot
{
- LFGBlackListSlot() { }
- LFGBlackListSlot(uint32 slot, uint32 reason, int32 subReason1, int32 subReason2)
- : Slot(slot), Reason(reason), SubReason1(subReason1), SubReason2(subReason2) { }
+ LFGBlackListSlot() = default;
+ LFGBlackListSlot(uint32 slot, uint32 reason, int32 subReason1, int32 subReason2, uint32 softLock)
+ : Slot(slot), Reason(reason), SubReason1(subReason1), SubReason2(subReason2), SoftLock(softLock) { }
uint32 Slot = 0;
uint32 Reason = 0;
int32 SubReason1 = 0;
int32 SubReason2 = 0;
+ uint32 SoftLock = 0;
};
struct LFGBlackList
@@ -140,7 +141,7 @@ namespace WorldPackets
struct LfgPlayerQuestRewardItem
{
- LfgPlayerQuestRewardItem() { }
+ LfgPlayerQuestRewardItem() = default;
LfgPlayerQuestRewardItem(int32 itemId, int32 quantity) : ItemID(itemId), Quantity(quantity) { }
int32 ItemID = 0;
@@ -149,7 +150,7 @@ namespace WorldPackets
struct LfgPlayerQuestRewardCurrency
{
- LfgPlayerQuestRewardCurrency() { }
+ LfgPlayerQuestRewardCurrency() = default;
LfgPlayerQuestRewardCurrency(int32 currencyID, int32 quantity) : CurrencyID(currencyID), Quantity(quantity) { }
int32 CurrencyID = 0;
@@ -250,7 +251,7 @@ namespace WorldPackets
struct LFGRoleCheckUpdateMember
{
- LFGRoleCheckUpdateMember() { }
+ LFGRoleCheckUpdateMember() = default;
LFGRoleCheckUpdateMember(ObjectGuid guid, uint32 rolesDesired, uint8 level, bool roleCheckComplete)
: Guid(guid), RolesDesired(rolesDesired), Level(level), RoleCheckComplete(roleCheckComplete) { }
@@ -277,24 +278,6 @@ namespace WorldPackets
bool IsRequeue = false;
};
- struct LFGJoinBlackListSlot
- {
- LFGJoinBlackListSlot() { }
- LFGJoinBlackListSlot(int32 slot, int32 reason, int32 subReason1, int32 subReason2)
- : Slot(slot), Reason(reason), SubReason1(subReason1), SubReason2(subReason2) { }
-
- int32 Slot = 0;
- int32 Reason = 0;
- int32 SubReason1 = 0;
- int32 SubReason2 = 0;
- };
-
- struct LFGJoinBlackList
- {
- ObjectGuid Guid;
- std::vector<LFGJoinBlackListSlot> Slots;
- };
-
class LFGJoinResult final : public ServerPacket
{
public:
@@ -305,7 +288,7 @@ namespace WorldPackets
RideTicket Ticket;
uint8 Result = 0;
uint8 ResultDetail = 0;
- std::vector<LFGJoinBlackList> BlackList;
+ std::vector<LFGBlackList> BlackList;
std::vector<std::string const*> BlackListNames;
};
@@ -327,7 +310,7 @@ namespace WorldPackets
struct LFGPlayerRewards
{
- LFGPlayerRewards() { }
+ LFGPlayerRewards() = default;
LFGPlayerRewards(int32 id, uint32 quantity, int32 bonusQuantity, bool isCurrency)
: Quantity(quantity), BonusQuantity(bonusQuantity)
{
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index ba96fcd366f..127a040b032 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -53,6 +53,7 @@ WorldPacket const* WorldPackets::Misc::SetCurrency::Write()
_worldPacket.WriteBit(WeeklyQuantity.is_initialized());
_worldPacket.WriteBit(TrackedQuantity.is_initialized());
_worldPacket.WriteBit(MaxQuantity.is_initialized());
+ _worldPacket.WriteBit(Unused901.is_initialized());
_worldPacket.WriteBit(SuppressChatLog);
_worldPacket.WriteBit(QuantityChange.is_initialized());
_worldPacket.WriteBit(QuantityGainSource.is_initialized());
@@ -68,6 +69,9 @@ WorldPacket const* WorldPackets::Misc::SetCurrency::Write()
if (MaxQuantity)
_worldPacket << int32(*MaxQuantity);
+ if (Unused901)
+ _worldPacket << int32(*Unused901);
+
if (QuantityChange)
_worldPacket << int32(*QuantityChange);
@@ -98,6 +102,7 @@ WorldPacket const* WorldPackets::Misc::SetupCurrency::Write()
_worldPacket.WriteBit(data.MaxWeeklyQuantity.is_initialized());
_worldPacket.WriteBit(data.TrackedQuantity.is_initialized());
_worldPacket.WriteBit(data.MaxQuantity.is_initialized());
+ _worldPacket.WriteBit(data.Unused901.is_initialized());
_worldPacket.WriteBits(data.Flags, 5);
_worldPacket.FlushBits();
@@ -109,6 +114,8 @@ WorldPacket const* WorldPackets::Misc::SetupCurrency::Write()
_worldPacket << uint32(*data.TrackedQuantity);
if (data.MaxQuantity)
_worldPacket << int32(*data.MaxQuantity);
+ if (data.Unused901)
+ _worldPacket << int32(*data.Unused901);
}
return &_worldPacket;
@@ -181,7 +188,7 @@ WorldPacket const* WorldPackets::Misc::WorldServerInfo::Write()
_worldPacket << uint32(*RestrictedAccountMaxLevel);
if (RestrictedAccountMaxMoney)
- _worldPacket << uint32(*RestrictedAccountMaxMoney);
+ _worldPacket << uint64(*RestrictedAccountMaxMoney);
if (InstanceGroupSize)
_worldPacket << uint32(*InstanceGroupSize);
@@ -466,6 +473,7 @@ WorldPacket const* WorldPackets::Misc::PlayObjectSound::Write()
_worldPacket << SourceObjectGUID;
_worldPacket << TargetObjectGUID;
_worldPacket << Position;
+ _worldPacket << int32(BroadcastTextID);
return &_worldPacket;
}
@@ -474,6 +482,7 @@ WorldPacket const* WorldPackets::Misc::PlaySound::Write()
{
_worldPacket << int32(SoundKitID);
_worldPacket << SourceObjectGuid;
+ _worldPacket << int32(BroadcastTextID);
return &_worldPacket;
}
@@ -491,13 +500,6 @@ void WorldPackets::Misc::FarSight::Read()
Enable = _worldPacket.ReadBit();
}
-WorldPacket const* WorldPackets::Misc::Dismount::Write()
-{
- _worldPacket << Guid;
-
- return &_worldPacket;
-}
-
void WorldPackets::Misc::SaveCUFProfiles::Read()
{
CUFProfiles.resize(_worldPacket.read<uint32>());
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index cc91c0bf49e..78ea4fb997e 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -117,6 +117,7 @@ namespace WorldPackets
Optional<int32> WeeklyQuantity;
Optional<int32> TrackedQuantity;
Optional<int32> MaxQuantity;
+ Optional<int32> Unused901;
Optional<int32> QuantityChange;
Optional<int32> QuantityGainSource;
Optional<int32> QuantityLostSource;
@@ -144,6 +145,7 @@ namespace WorldPackets
Optional<int32> MaxWeeklyQuantity; // Weekly Currency cap.
Optional<int32> TrackedQuantity;
Optional<int32> MaxQuantity;
+ Optional<int32> Unused901;
uint8 Flags = 0; // 0 = none,
};
@@ -260,7 +262,7 @@ namespace WorldPackets
bool BlockExitingLoadingScreen = false; // when set to true, sending SMSG_UPDATE_OBJECT with CreateObject Self bit = true will not hide loading screen
// instead it will be done after this packet is sent again with false in this bit and SMSG_UPDATE_OBJECT Values for player
Optional<uint32> RestrictedAccountMaxLevel;
- Optional<uint32> RestrictedAccountMaxMoney;
+ Optional<uint64> RestrictedAccountMaxMoney;
Optional<uint32> InstanceGroupSize;
};
@@ -631,6 +633,7 @@ namespace WorldPackets
ObjectGuid SourceObjectGUID;
int32 SoundKitID = 0;
TaggedPosition<::Position::XYZ> Position;
+ int32 BroadcastTextID = 0;
};
class TC_GAME_API PlaySound final : public ServerPacket
@@ -643,6 +646,7 @@ namespace WorldPackets
ObjectGuid SourceObjectGuid;
int32 SoundKitID = 0;
+ int32 BroadcastTextID = 0;
};
class TC_GAME_API PlaySpeakerbotSound final : public ServerPacket
@@ -692,16 +696,6 @@ namespace WorldPackets
bool Enable = false;
};
- class Dismount final : public ServerPacket
- {
- public:
- Dismount() : ServerPacket(SMSG_DISMOUNT, 16) { }
-
- WorldPacket const* Write() override;
-
- ObjectGuid Guid;
- };
-
class SaveCUFProfiles final : public ClientPacket
{
public:
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index f05c3cf1b14..2c44b01bb7c 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -53,8 +53,8 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
data.WriteBit(hasFallData);
data.WriteBit(hasSpline);
- data.WriteBit(0); // HeightChangeFailed
- data.WriteBit(0); // RemoteTimeValid
+ data.WriteBit(false); // HeightChangeFailed
+ data.WriteBit(false); // RemoteTimeValid
data.FlushBits();
@@ -227,24 +227,48 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineJu
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineAnimTierTransition const& animTierTransition)
+{
+ data << int32(animTierTransition.TierTransitionID);
+ data << uint32(animTierTransition.StartTime);
+ data << uint32(animTierTransition.EndTime);
+ data << uint8(animTierTransition.AnimTier);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineUnknown901 const& unk)
+{
+ for (WorldPackets::Movement::MonsterSplineUnknown901::Inner const& unkInner : unk.Data)
+ {
+ data << int32(unkInner.Unknown_1);
+ data << int32(unkInner.Unknown_2);
+ data << int32(unkInner.Unknown_3);
+ data << uint32(unkInner.Unknown_4);
+ }
+
+ return data;
+}
+
ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline const& movementSpline)
{
data << uint32(movementSpline.Flags);
- data << uint8(movementSpline.AnimTier);
- data << uint32(movementSpline.TierTransStartTime);
data << int32(movementSpline.Elapsed);
data << uint32(movementSpline.MoveTime);
data << uint32(movementSpline.FadeObjectTime);
data << uint8(movementSpline.Mode);
- data << uint8(movementSpline.VehicleExitVoluntary);
data << movementSpline.TransportGUID;
data << int8(movementSpline.VehicleSeat);
data.WriteBits(movementSpline.Face, 2);
data.WriteBits(movementSpline.Points.size(), 16);
+ data.WriteBit(movementSpline.VehicleExitVoluntary);
+ data.WriteBit(movementSpline.Interpolate);
data.WriteBits(movementSpline.PackedDeltas.size(), 16);
data.WriteBit(movementSpline.SplineFilter.is_initialized());
data.WriteBit(movementSpline.SpellEffectExtraData.is_initialized());
data.WriteBit(movementSpline.JumpExtraData.is_initialized());
+ data.WriteBit(movementSpline.AnimTierTransition.is_initialized());
+ data.WriteBit(movementSpline.Unknown901.is_initialized());
data.FlushBits();
if (movementSpline.SplineFilter)
@@ -266,6 +290,7 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline
for (TaggedPosition<Position::XYZ> const& pos : movementSpline.Points)
data << pos;
+
for (TaggedPosition<Position::PackedXYZ> const& pos : movementSpline.PackedDeltas)
data << pos;
@@ -275,6 +300,12 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline
if (movementSpline.JumpExtraData)
data << *movementSpline.JumpExtraData;
+ if (movementSpline.AnimTierTransition)
+ data << *movementSpline.AnimTierTransition;
+
+ if (movementSpline.Unknown901)
+ data << *movementSpline.Unknown901;
+
return data;
}
@@ -315,10 +346,11 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
data.WriteBits(moveSpline.facing.type, 2); // Face
bool hasFadeObjectTime = data.WriteBit(moveSpline.splineflags.fadeObject && moveSpline.effect_start_time < moveSpline.Duration());
data.WriteBits(moveSpline.getPath().size(), 16);
- data.WriteBits(uint8(moveSpline.spline.mode()), 2); // Mode
- data.WriteBit(0); // HasSplineFilter
+ data.WriteBit(false); // HasSplineFilter
data.WriteBit(moveSpline.spell_effect_extra.is_initialized()); // HasSpellEffectExtraData
data.WriteBit(moveSpline.splineflags.parabolic); // HasJumpExtraData
+ data.WriteBit(moveSpline.anim_tier.is_initialized()); // HasAnimationTierTransition
+ data.WriteBit(false); // HasUnknown901
data.FlushBits();
//if (HasSplineFilterKey)
@@ -374,6 +406,25 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
data << uint32(moveSpline.effect_start_time);
data << uint32(0); // Duration (override)
}
+
+ if (moveSpline.anim_tier)
+ {
+ data << int32(moveSpline.anim_tier->TierTransitionId);
+ data << uint32(moveSpline.effect_start_time);
+ data << uint32(0);
+ data << uint8(moveSpline.anim_tier->AnimTier);
+ }
+
+ //if (HasUnknown901)
+ //{
+ // for (WorldPackets::Movement::MonsterSplineUnknown901::Inner const& unkInner : unk.Data) size = 16
+ // {
+ // data << int32(unkInner.Unknown_1);
+ // data << int32(unkInner.Unknown_2);
+ // data << int32(unkInner.Unknown_3);
+ // data << uint32(unkInner.Unknown_4);
+ // }
+ //}
}
}
@@ -436,15 +487,17 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS
if (splineFlags.animation)
{
- movementSpline.AnimTier = splineFlags.getAnimTier();
- movementSpline.TierTransStartTime = moveSpline.effect_start_time;
+ movementSpline.AnimTierTransition.emplace();
+ movementSpline.AnimTierTransition->TierTransitionID = moveSpline.anim_tier->TierTransitionId;
+ movementSpline.AnimTierTransition->StartTime = moveSpline.effect_start_time;
+ movementSpline.AnimTierTransition->AnimTier = moveSpline.anim_tier->AnimTier;
}
movementSpline.MoveTime = moveSpline.Duration();
if (splineFlags.parabolic)
{
- movementSpline.JumpExtraData = boost::in_place();
+ movementSpline.JumpExtraData.emplace();
movementSpline.JumpExtraData->JumpGravity = moveSpline.vertical_acceleration;
movementSpline.JumpExtraData->StartTime = moveSpline.effect_start_time;
}
@@ -454,7 +507,7 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS
if (moveSpline.spell_effect_extra)
{
- movementSpline.SpellEffectExtraData = boost::in_place();
+ movementSpline.SpellEffectExtraData.emplace();
movementSpline.SpellEffectExtraData->TargetGUID = moveSpline.spell_effect_extra->Target;
movementSpline.SpellEffectExtraData->SpellVisualID = moveSpline.spell_effect_extra->SpellVisualId;
movementSpline.SpellEffectExtraData->ProgressCurveID = moveSpline.spell_effect_extra->ProgressCurveId;
@@ -582,10 +635,19 @@ WorldPacket const* WorldPackets::Movement::TransferAborted::Write()
return &_worldPacket;
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::TeleportLocation const& teleportLocation)
+{
+ data << teleportLocation.Pos;
+ data << int32(teleportLocation.Unused901_1);
+ data << int32(teleportLocation.Unused901_2);
+
+ return data;
+}
+
WorldPacket const* WorldPackets::Movement::NewWorld::Write()
{
_worldPacket << int32(MapID);
- _worldPacket << Pos;
+ _worldPacket << Loc;
_worldPacket << uint32(Reason);
_worldPacket << MovementOffset;
return &_worldPacket;
@@ -772,9 +834,9 @@ WorldPacket const* WorldPackets::Movement::MoveSetCollisionHeight::Write()
_worldPacket << uint32(SequenceIndex);
_worldPacket << float(Height);
_worldPacket << float(Scale);
+ _worldPacket << uint8(Reason);
_worldPacket << uint32(MountDisplayID);
_worldPacket << int32(ScaleDuration);
- _worldPacket.WriteBits(Reason, 2);
_worldPacket.FlushBits();
return &_worldPacket;
@@ -840,7 +902,7 @@ void WorldPackets::Movement::MoveSetCollisionHeightAck::Read()
_worldPacket >> Data;
_worldPacket >> Height;
_worldPacket >> MountDisplayID;
- Reason = UpdateCollisionHeightReason(_worldPacket.ReadBits(2));
+ Reason = _worldPacket.read<UpdateCollisionHeightReason, uint8>();
}
void WorldPackets::Movement::MoveTimeSkipped::Read()
@@ -917,13 +979,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound
data.WriteBit(stateChange.MovementForceGUID.is_initialized());
data.FlushBits();
- if (stateChange.CollisionHeight)
- {
- data << float(stateChange.CollisionHeight->Height);
- data << float(stateChange.CollisionHeight->Scale);
- data.WriteBits(stateChange.CollisionHeight->Reason, 2);
- data.FlushBits();
- }
+ if (stateChange.MovementForce_)
+ data << *stateChange.MovementForce_;
if (stateChange.Speed)
data << float(*stateChange.Speed);
@@ -938,12 +995,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveSetCompound
if (stateChange.VehicleRecID)
data << int32(*stateChange.VehicleRecID);
+ if (stateChange.CollisionHeight)
+ {
+ data << float(stateChange.CollisionHeight->Height);
+ data << float(stateChange.CollisionHeight->Scale);
+ data << uint8(stateChange.CollisionHeight->Reason);
+ }
+
if (stateChange.MovementForceGUID)
data << *stateChange.MovementForceGUID;
- if (stateChange.MovementForce_)
- data << *stateChange.MovementForce_;
-
return data;
}
diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h
index e8bb4ac7ae9..ae8c7a07c6c 100644
--- a/src/server/game/Server/Packets/MovementPackets.h
+++ b/src/server/game/Server/Packets/MovementPackets.h
@@ -91,24 +91,46 @@ namespace WorldPackets
uint32 Duration = 0;
};
+ struct MonsterSplineAnimTierTransition
+ {
+ int32 TierTransitionID = 0;
+ uint32 StartTime = 0;
+ uint32 EndTime = 0;
+ uint8 AnimTier = 0;
+ };
+
+ struct MonsterSplineUnknown901
+ {
+ struct Inner
+ {
+ int32 Unknown_1 = 0;
+ int32 Unknown_2 = 0;
+ int32 Unknown_3 = 0;
+ uint32 Unknown_4 = 0;
+ };
+
+ std::array<Inner, 16> Data;
+ };
+
struct MovementSpline
{
uint32 Flags = 0; // Spline flags
uint8 Face = 0; // Movement direction (see MonsterMoveType enum)
- uint8 AnimTier = 0;
- uint32 TierTransStartTime = 0;
int32 Elapsed = 0;
uint32 MoveTime = 0;
uint32 FadeObjectTime = 0;
std::vector<TaggedPosition<Position::XYZ>> Points; // Spline path
uint8 Mode = 0; // Spline mode - actually always 0 in this packet - Catmullrom mode appears only in SMSG_UPDATE_OBJECT. In this packet it is determined by flags
- uint8 VehicleExitVoluntary = 0;
+ bool VehicleExitVoluntary = false;
+ bool Interpolate = false;
ObjectGuid TransportGUID;
int8 VehicleSeat = -1;
std::vector<TaggedPosition<Position::PackedXYZ>> PackedDeltas;
Optional<MonsterSplineFilter> SplineFilter;
Optional<MonsterSplineSpellEffectExtraData> SpellEffectExtraData;
Optional<MonsterSplineJumpExtraData> JumpExtraData;
+ Optional<MonsterSplineAnimTierTransition> AnimTierTransition;
+ Optional<MonsterSplineUnknown901> Unknown901;
float FaceDirection = 0.0f;
ObjectGuid FaceGUID;
TaggedPosition<Position::XYZ> FaceSpot;
@@ -233,16 +255,23 @@ namespace WorldPackets
uint32 TransfertAbort = 0;
};
+ struct TeleportLocation
+ {
+ TaggedPosition<Position::XYZO> Pos;
+ int32 Unused901_1 = -1;
+ int32 Unused901_2 = -1;
+ };
+
class NewWorld final : public ServerPacket
{
public:
- NewWorld() : ServerPacket(SMSG_NEW_WORLD, 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4) { }
+ NewWorld() : ServerPacket(SMSG_NEW_WORLD, 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4) { }
WorldPacket const* Write() override;
int32 MapID = 0;
uint32 Reason = 0;
- TaggedPosition<Position::XYZO> Pos;
+ TeleportLocation Loc;
TaggedPosition<Position::XYZ> MovementOffset; // Adjusts all pending movement events by this offset
};
@@ -609,7 +638,7 @@ namespace WorldPackets
{
float Height = 0.0f;
float Scale = 0.0f;
- UpdateCollisionHeightReason Reason;
+ UpdateCollisionHeightReason Reason = UPDATE_COLLISION_HEIGHT_MOUNT;
};
struct KnockBackInfo
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index acaa5f64cbf..770a7bb7ea3 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -16,13 +16,53 @@
*/
#include "NPCPackets.h"
+#include "Util.h"
-void WorldPackets::NPC::Hello::Read()
+namespace WorldPackets
+{
+namespace NPC
+{
+ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText)
+{
+ data << int32(gossipText.QuestID);
+ data << int32(gossipText.ContentTuningID);
+ data << int32(gossipText.QuestType);
+ data << int32(gossipText.QuestFlags[0]);
+ data << int32(gossipText.QuestFlags[1]);
+
+ data.WriteBit(gossipText.Repeatable);
+ data.WriteBits(gossipText.QuestTitle.size(), 9);
+ data.FlushBits();
+
+ data.WriteString(gossipText.QuestTitle);
+
+ return data;
+}
+
+void Hello::Read()
{
_worldPacket >> Unit;
}
-WorldPacket const* WorldPackets::NPC::GossipMessage::Write()
+ByteBuffer& operator<<(ByteBuffer& data, TreasureItem const& treasureItem)
+{
+ data.WriteBits(AsUnderlyingType(treasureItem.Type), 1);
+ data << int32(treasureItem.ID);
+ data << int32(treasureItem.Quantity);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, TreasureLootList const& treasureLootList)
+{
+ data << uint32(treasureLootList.Items.size());
+ for (TreasureItem const& treasureItem : treasureLootList.Items)
+ data << treasureItem;
+
+ return data;
+}
+
+WorldPacket const* GossipMessage::Write()
{
_worldPacket << GossipGUID;
_worldPacket << int32(GossipID);
@@ -39,32 +79,22 @@ WorldPacket const* WorldPackets::NPC::GossipMessage::Write()
_worldPacket << int32(options.OptionCost);
_worldPacket.WriteBits(options.Text.size(), 12);
_worldPacket.WriteBits(options.Confirm.size(), 12);
+ _worldPacket.WriteBits(AsUnderlyingType(options.Status), 2);
_worldPacket.FlushBits();
+ _worldPacket << options.Treasure;
+
_worldPacket.WriteString(options.Text);
_worldPacket.WriteString(options.Confirm);
}
for (ClientGossipText const& text : GossipText)
- {
- _worldPacket << int32(text.QuestID);
- _worldPacket << int32(text.QuestType);
- _worldPacket << int32(text.QuestLevel);
- _worldPacket << int32(text.QuestMaxScalingLevel);
- _worldPacket << int32(text.QuestFlags[0]);
- _worldPacket << int32(text.QuestFlags[1]);
-
- _worldPacket.WriteBit(text.Repeatable);
- _worldPacket.WriteBits(text.QuestTitle.size(), 9);
- _worldPacket.FlushBits();
-
- _worldPacket.WriteString(text.QuestTitle);
- }
+ _worldPacket << text;
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::NPC::VendorItem const &item)
+ByteBuffer& operator<<(ByteBuffer& data, VendorItem const& item)
{
data << uint32(item.MuID);
data << int32(item.Type);
@@ -75,6 +105,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::NPC::VendorItem const &it
data << int32(item.ExtendedCostID);
data << int32(item.PlayerConditionFailed);
data << item.Item;
+ data.WriteBit(item.Locked);
data.WriteBit(item.DoNotFilterOnVendor);
data.WriteBit(item.Refundable);
data.FlushBits();
@@ -82,7 +113,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::NPC::VendorItem const &it
return data;
}
-WorldPacket const* WorldPackets::NPC::VendorInventory::Write()
+WorldPacket const* VendorInventory::Write()
{
_worldPacket << Vendor;
_worldPacket << uint8(Reason);
@@ -93,7 +124,7 @@ WorldPacket const* WorldPackets::NPC::VendorInventory::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::NPC::TrainerList::Write()
+WorldPacket const* TrainerList::Write()
{
_worldPacket << TrainerGUID;
_worldPacket << uint32(TrainerType);
@@ -118,14 +149,14 @@ WorldPacket const* WorldPackets::NPC::TrainerList::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::NPC::ShowBank::Write()
+WorldPacket const* ShowBank::Write()
{
_worldPacket << Guid;
return &_worldPacket;
}
-void WorldPackets::NPC::GossipSelectOption::Read()
+void GossipSelectOption::Read()
{
_worldPacket >> GossipUnit;
_worldPacket >> GossipID;
@@ -135,14 +166,14 @@ void WorldPackets::NPC::GossipSelectOption::Read()
PromotionCode = _worldPacket.ReadString(length);
}
-WorldPacket const* WorldPackets::NPC::PlayerTabardVendorActivate::Write()
+WorldPacket const* PlayerTabardVendorActivate::Write()
{
_worldPacket << Vendor;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::NPC::GossipPOI::Write()
+WorldPacket const* GossipPOI::Write()
{
_worldPacket << int32(ID);
_worldPacket << Pos;
@@ -156,26 +187,26 @@ WorldPacket const* WorldPackets::NPC::GossipPOI::Write()
return &_worldPacket;
}
-void WorldPackets::NPC::SpiritHealerActivate::Read()
+void SpiritHealerActivate::Read()
{
_worldPacket >> Healer;
}
-WorldPacket const* WorldPackets::NPC::SpiritHealerConfirm::Write()
+WorldPacket const* SpiritHealerConfirm::Write()
{
_worldPacket << Unit;
return &_worldPacket;
}
-void WorldPackets::NPC::TrainerBuySpell::Read()
+void TrainerBuySpell::Read()
{
_worldPacket >> TrainerGUID;
_worldPacket >> TrainerID;
_worldPacket >> SpellID;
}
-WorldPacket const* WorldPackets::NPC::TrainerBuyFailed::Write()
+WorldPacket const* TrainerBuyFailed::Write()
{
_worldPacket << TrainerGUID;
_worldPacket << SpellID;
@@ -184,7 +215,9 @@ WorldPacket const* WorldPackets::NPC::TrainerBuyFailed::Write()
return &_worldPacket;
}
-void WorldPackets::NPC::RequestStabledPets::Read()
+void RequestStabledPets::Read()
{
_worldPacket >> StableMaster;
}
+}
+}
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index 9cc3cad1c7b..c5d57b31efc 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -24,6 +24,9 @@
#include "Position.h"
#include <array>
+enum class GossipOptionStatus : uint8;
+enum class GossipOptionRewardType : uint8;
+
namespace WorldPackets
{
namespace NPC
@@ -45,27 +48,42 @@ namespace WorldPackets
ObjectGuid Unit;
};
+ struct TreasureItem
+ {
+ GossipOptionRewardType Type = GossipOptionRewardType(0);
+ int32 ID = 0;
+ int32 Quantity = 0;
+ };
+
+ struct TreasureLootList
+ {
+ std::vector<TreasureItem> Items;
+ };
+
struct ClientGossipOptions
{
int32 ClientOption = 0;
uint8 OptionNPC = 0;
uint8 OptionFlags = 0;
int32 OptionCost = 0;
+ GossipOptionStatus Status = GossipOptionStatus(0);
std::string Text;
std::string Confirm;
+ TreasureLootList Treasure;
};
struct ClientGossipText
{
int32 QuestID = 0;
+ int32 ContentTuningID = 0;
int32 QuestType = 0;
- int32 QuestLevel = 0;
- int32 QuestMaxScalingLevel = 0;
bool Repeatable = false;
std::string QuestTitle;
int32 QuestFlags[2] = { };
};
+ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText);
+
class GossipMessage final : public ServerPacket
{
public:
@@ -113,6 +131,7 @@ namespace WorldPackets
int32 StackCount = 0;
int32 ExtendedCostID = 0;
int32 PlayerConditionFailed = 0;
+ bool Locked = false;
bool DoNotFilterOnVendor = false;
bool Refundable = false;
};
diff --git a/src/server/game/Server/Packets/PacketUtilities.cpp b/src/server/game/Server/Packets/PacketUtilities.cpp
index 510f9bbcbf8..99f3decd0e1 100644
--- a/src/server/game/Server/Packets/PacketUtilities.cpp
+++ b/src/server/game/Server/Packets/PacketUtilities.cpp
@@ -25,8 +25,3 @@ WorldPackets::PacketArrayMaxCapacityException::PacketArrayMaxCapacityException(s
builder << "Attempted to read more array elements from packet " << requestedSize << " than allowed " << sizeLimit;
message().assign(builder.str());
}
-
-void WorldPackets::CheckCompactArrayMaskOverflow(std::size_t index, std::size_t limit)
-{
- ASSERT(index < limit, "Attempted to insert " SZFMTD " values into CompactArray but it can only hold " SZFMTD, index, limit);
-}
diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h
index c40858d0088..327c42923a2 100644
--- a/src/server/game/Server/Packets/PacketUtilities.h
+++ b/src/server/game/Server/Packets/PacketUtilities.h
@@ -90,101 +90,16 @@ namespace WorldPackets
_storage.push_back(std::forward<value_type>(value));
}
- private:
- storage_type _storage;
- };
-
- void CheckCompactArrayMaskOverflow(std::size_t index, std::size_t limit);
-
- template <typename T>
- class CompactArray
- {
- public:
- CompactArray() : _mask(0) { }
-
- CompactArray(CompactArray const& right)
- : _mask(right._mask), _contents(right._contents) { }
-
- CompactArray(CompactArray&& right)
- : _mask(right._mask), _contents(std::move(right._contents))
- {
- right._mask = 0;
- }
-
- CompactArray& operator=(CompactArray const& right)
- {
- _mask = right._mask;
- _contents = right._contents;
- return *this;
- }
-
- CompactArray& operator=(CompactArray&& right)
- {
- _mask = right._mask;
- right._mask = 0;
- _contents = std::move(right._contents);
- return *this;
- }
-
- uint32 GetMask() const { return _mask; }
- T const& operator[](std::size_t index) const { return _contents[index]; }
- std::size_t GetSize() const { return _contents.size(); }
-
- void Insert(std::size_t index, T const& value)
- {
- CheckCompactArrayMaskOverflow(index, sizeof(_mask) * 8);
-
- _mask |= 1 << index;
- if (_contents.size() <= index)
- _contents.resize(index + 1);
- _contents[index] = value;
- }
-
- void Clear()
+ template<typename... Args>
+ T& emplace_back(Args&&... args)
{
- _mask = 0;
- _contents.clear();
- }
-
- bool operator==(CompactArray const& r) const
- {
- if (_mask != r._mask)
- return false;
-
- return _contents == r._contents;
+ _storage.emplace_back(std::forward<Args>(args)...);
+ return _storage.back();
}
- bool operator!=(CompactArray const& r) const { return !(*this == r); }
-
private:
- uint32 _mask;
- std::vector<T> _contents;
+ storage_type _storage;
};
-
- template <typename T>
- ByteBuffer& operator<<(ByteBuffer& data, CompactArray<T> const& v)
- {
- uint32 mask = v.GetMask();
- data << uint32(mask);
- for (std::size_t i = 0; i < v.GetSize(); ++i)
- if (mask & (1 << i))
- data << v[i];
-
- return data;
- }
-
- template <typename T>
- ByteBuffer& operator>>(ByteBuffer& data, CompactArray<T>& v)
- {
- uint32 mask;
- data >> mask;
-
- for (std::size_t index = 0; mask != 0; mask >>= 1, ++index)
- if ((mask & 1) != 0)
- v.Insert(index, data.read<T>());
-
- return data;
- }
}
#endif // PacketUtilities_h__
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 1c58bf9edc3..72388d1b98c 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -64,16 +64,10 @@ WorldPacket const* WorldPackets::Party::PartyInvite::Write()
_worldPacket.WriteBit(IsXRealm);
_worldPacket.WriteBit(MustBeBNetFriend);
_worldPacket.WriteBit(AllowMultipleRoles);
+ _worldPacket.WriteBit(QuestSessionActive);
_worldPacket.WriteBits(InviterName.length(), 6);
- _worldPacket << InviterVirtualRealmAddress;
- _worldPacket.WriteBit(IsLocal);
- _worldPacket.WriteBit(Unk2);
- _worldPacket.WriteBits(InviterRealmNameActual.size(), 8);
- _worldPacket.WriteBits(InviterRealmNameNormalized.size(), 8);
- _worldPacket.WriteString(InviterRealmNameActual);
- _worldPacket.WriteString(InviterRealmNameNormalized);
-
+ _worldPacket << InviterRealm;
_worldPacket << InviterGUID;
_worldPacket << InviterBNetAccountId;
_worldPacket << uint16(Unk1);
@@ -99,9 +93,7 @@ void WorldPackets::Party::PartyInvite::Initialize(Player* const inviter, int32 p
ProposedRoles = proposedRoles;
- InviterVirtualRealmAddress = realm.Id.GetAddress();
- InviterRealmNameActual = realm.Name;
- InviterRealmNameNormalized = realm.NormalizedName;
+ InviterRealm = Auth::VirtualRealmInfo(realm.Id.GetAddress(), true, false, realm.Name, realm.NormalizedName);
}
void WorldPackets::Party::PartyInviteResponse::Read()
@@ -165,7 +157,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberPhaseSt
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberAuraStates const& aura)
{
data << int32(aura.SpellID);
- data << uint8(aura.Flags);
+ data << uint16(aura.Flags);
data << uint32(aura.ActiveFlags);
data << int32(aura.Points.size());
for (float points : aura.Points)
@@ -174,6 +166,15 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberAuraSta
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::CTROptions const& ctrOptions)
+{
+ data << uint32(ctrOptions.ContentTuningConditionMask);
+ data << int32(ctrOptions.Unused901);
+ data << uint32(ctrOptions.ExpansionLevelMask);
+
+ return data;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberPetStats const& petStats)
{
data << petStats.GUID;
@@ -214,6 +215,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberStats c
data << int32(memberStats.VehicleSeat);
data << uint32(memberStats.Auras.size());
data << memberStats.Phases;
+ data << memberStats.ChromieTime;
for (WorldPackets::Party::PartyMemberAuraStates const& aura : memberStats.Auras)
data << aura;
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
index 3dde1e61399..769ffae245d 100644
--- a/src/server/game/Server/Packets/PartyPackets.h
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -19,6 +19,7 @@
#define PartyPackets_h__
#include "Packet.h"
+#include "AuthenticationPackets.h"
#include "ObjectGuid.h"
#include "Group.h"
#include "Optional.h"
@@ -67,22 +68,19 @@ namespace WorldPackets
bool MightCRZYou = false;
bool MustBeBNetFriend = false;
bool AllowMultipleRoles = false;
- bool Unk2 = false;
+ bool QuestSessionActive = false;
uint16 Unk1 = 0;
bool CanAccept = false;
// Inviter
+ Auth::VirtualRealmInfo InviterRealm;
ObjectGuid InviterGUID;
ObjectGuid InviterBNetAccountId;
std::string InviterName;
// Realm
bool IsXRealm = false;
- bool IsLocal = true;
- uint32 InviterVirtualRealmAddress = 0u;
- std::string InviterRealmNameActual;
- std::string InviterRealmNameNormalized;
// Lfg
uint32 ProposedRoles = 0;
@@ -159,7 +157,7 @@ namespace WorldPackets
struct PartyMemberAuraStates
{
int32 SpellID = 0;
- uint8 Flags = 0;
+ uint16 Flags = 0;
uint32 ActiveFlags = 0u;
std::vector<float> Points;
};
@@ -176,6 +174,13 @@ namespace WorldPackets
std::vector<PartyMemberAuraStates> Auras;
};
+ struct CTROptions
+ {
+ uint32 ContentTuningConditionMask = 0;
+ int32 Unused901 = 0;
+ uint32 ExpansionLevelMask = 0;
+ };
+
struct PartyMemberStats
{
uint16 Level = 0;
@@ -204,6 +209,8 @@ namespace WorldPackets
uint16 WmoGroupID = 0;
uint32 WmoDoodadPlacementID = 0;
int8 PartyType[2];
+
+ CTROptions ChromieTime;
};
class PartyMemberFullState final : public ServerPacket
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index c1de4be8960..e6cdb28ee60 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -80,7 +80,6 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write()
_worldPacket << int32(Stats.RequiredExpansion);
_worldPacket << int32(Stats.VignetteID);
_worldPacket << int32(Stats.Class);
- _worldPacket << float(Stats.FadeRegionRadius);
_worldPacket << int32(Stats.WidgetSetID);
_worldPacket << int32(Stats.WidgetSetUnitConditionID);
@@ -355,9 +354,9 @@ void WorldPackets::Query::QuestPOIQuery::Read()
ByteBuffer& operator<<(ByteBuffer& data, QuestPOIData const& questPOIData)
{
data << int32(questPOIData.QuestID);
- data << int32(questPOIData.QuestPOIBlobDataStats.size());
+ data << int32(questPOIData.Blobs.size());
- for (QuestPOIBlobData const& questPOIBlobData : questPOIData.QuestPOIBlobDataStats)
+ for (QuestPOIBlobData const& questPOIBlobData : questPOIData.Blobs)
{
data << int32(questPOIBlobData.BlobIndex);
data << int32(questPOIBlobData.ObjectiveIndex);
@@ -369,13 +368,15 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestPOIData const& questPOIData)
data << int32(questPOIBlobData.Flags);
data << int32(questPOIBlobData.WorldEffectID);
data << int32(questPOIBlobData.PlayerConditionID);
+ data << int32(questPOIBlobData.NavigationPlayerConditionID);
data << int32(questPOIBlobData.SpawnTrackingID);
- data << int32(questPOIBlobData.QuestPOIBlobPointStats.size());
+ data << int32(questPOIBlobData.Points.size());
- for (QuestPOIBlobPoint const& questPOIBlobPoint : questPOIBlobData.QuestPOIBlobPointStats)
+ for (QuestPOIBlobPoint const& questPOIBlobPoint : questPOIBlobData.Points)
{
- data << int32(questPOIBlobPoint.X);
- data << int32(questPOIBlobPoint.Y);
+ data << int16(questPOIBlobPoint.X);
+ data << int16(questPOIBlobPoint.Y);
+ data << int16(questPOIBlobPoint.Z);
}
data.WriteBit(questPOIBlobData.AlwaysAllowMergingBlobs);
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index 6c8d2b6c648..b7279d18964 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -83,7 +83,6 @@ namespace WorldPackets
uint32 RequiredExpansion = 0;
uint32 VignetteID = 0;
int32 Class = 0;
- float FadeRegionRadius = 0.0f;
int32 WidgetSetID = 0;
int32 WidgetSetUnitConditionID = 0;
std::array<uint32, 2> Flags;
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 36bb9c3aa17..3fcd20bb1fe 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -16,13 +16,26 @@
*/
#include "QuestPackets.h"
+#include "Util.h"
-void WorldPackets::Quest::QuestGiverStatusQuery::Read()
+namespace WorldPackets
+{
+namespace Quest
+{
+ByteBuffer& operator<<(ByteBuffer& data, QuestCompleteDisplaySpell const& questDisplaySpell)
+{
+ data << int32(questDisplaySpell.SpellID);
+ data << int32(questDisplaySpell.PlayerConditionID);
+
+ return data;
+}
+
+void QuestGiverStatusQuery::Read()
{
_worldPacket >> QuestGiverGUID;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverStatus::Write()
+WorldPacket const* QuestGiverStatus::Write()
{
_worldPacket << QuestGiver.Guid;
_worldPacket << uint32(QuestGiver.Status);
@@ -30,7 +43,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverStatus::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverStatusMultiple::Write()
+WorldPacket const* QuestGiverStatusMultiple::Write()
{
_worldPacket << int32(QuestGiver.size());
for (QuestGiverInfo const& questGiver : QuestGiver)
@@ -42,18 +55,18 @@ WorldPacket const* WorldPackets::Quest::QuestGiverStatusMultiple::Write()
return &_worldPacket;
}
-void WorldPackets::Quest::QuestGiverHello::Read()
+void QuestGiverHello::Read()
{
_worldPacket >> QuestGiverGUID;
}
-void WorldPackets::Quest::QueryQuestInfo::Read()
+void QueryQuestInfo::Read()
{
_worldPacket >> QuestID;
_worldPacket >> QuestGiver;
}
-WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
+WorldPacket const* QueryQuestInfoResponse::Write()
{
_worldPacket << uint32(QuestID);
@@ -64,11 +77,8 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
{
_worldPacket << int32(Info.QuestID);
_worldPacket << int32(Info.QuestType);
- _worldPacket << int32(Info.QuestLevel);
- _worldPacket << int32(Info.QuestScalingFactionGroup);
- _worldPacket << int32(Info.QuestMaxScalingLevel);
_worldPacket << int32(Info.QuestPackageID);
- _worldPacket << int32(Info.QuestMinLevel);
+ _worldPacket << int32(Info.ContentTuningID);
_worldPacket << int32(Info.QuestSortID);
_worldPacket << int32(Info.QuestInfoID);
_worldPacket << int32(Info.SuggestedGroupNum);
@@ -79,7 +89,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.RewardMoneyDifficulty);
_worldPacket << float(Info.RewardMoneyMultiplier);
_worldPacket << int32(Info.RewardBonusMoney);
- _worldPacket.append(Info.RewardDisplaySpell, QUEST_REWARD_DISPLAY_SPELL_COUNT);
+ _worldPacket << uint32(Info.RewardDisplaySpell.size());
_worldPacket << int32(Info.RewardSpell);
_worldPacket << int32(Info.RewardHonor);
_worldPacket << float(Info.RewardKillHonor);
@@ -149,6 +159,9 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.ManagedWorldStateID);
_worldPacket << int32(Info.QuestSessionBonus);
+ for (QuestCompleteDisplaySpell const& rewardDisplaySpell : Info.RewardDisplaySpell)
+ _worldPacket << rewardDisplaySpell;
+
_worldPacket.WriteBits(Info.LogTitle.size(), 9);
_worldPacket.WriteBits(Info.LogDescription.size(), 12);
_worldPacket.WriteBits(Info.QuestDescription.size(), 12);
@@ -158,6 +171,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket.WriteBits(Info.PortraitTurnInText.size(), 10);
_worldPacket.WriteBits(Info.PortraitTurnInName.size(), 8);
_worldPacket.WriteBits(Info.QuestCompletionLog.size(), 11);
+ _worldPacket.WriteBit(Info.ReadyForTranslation);
_worldPacket.FlushBits();
for (QuestObjective const& questObjective : Info.Objectives)
@@ -195,7 +209,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestUpdateAddCredit::Write()
+WorldPacket const* QuestUpdateAddCredit::Write()
{
_worldPacket << VictimGUID;
_worldPacket << int32(QuestID);
@@ -207,7 +221,7 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddCredit::Write()
return &_worldPacket;
};
-WorldPacket const* WorldPackets::Quest::QuestUpdateAddCreditSimple::Write()
+WorldPacket const* QuestUpdateAddCreditSimple::Write()
{
_worldPacket << int32(QuestID);
_worldPacket << int32(ObjectID);
@@ -216,7 +230,7 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddCreditSimple::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestUpdateAddPvPCredit::Write()
+WorldPacket const* QuestUpdateAddPvPCredit::Write()
{
_worldPacket << int32(QuestID);
_worldPacket << uint16(Count);
@@ -224,7 +238,26 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddPvPCredit::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const& questRewards)
+ByteBuffer& operator<<(ByteBuffer& data, QuestChoiceItem const& questChoiceItem)
+{
+ data.WriteBits(AsUnderlyingType(questChoiceItem.LootItemType), 2);
+ data << questChoiceItem.Item;
+ data << int32(questChoiceItem.Quantity);
+
+ return data;
+}
+
+ByteBuffer& operator>>(ByteBuffer& data, QuestChoiceItem& questChoiceItem)
+{
+ data.ResetBitPos();
+ questChoiceItem.LootItemType = LootItemType(data.ReadBits(2));
+ data >> questChoiceItem.Item;
+ data >> questChoiceItem.Quantity;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards)
{
data << int32(questRewards.ChoiceItemCount);
data << int32(questRewards.ItemCount);
@@ -251,8 +284,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const
data << int32(questRewards.FactionCapIn[i]);
}
- for (uint32 i = 0; i < QUEST_REWARD_DISPLAY_SPELL_COUNT; ++i)
- data << int32(questRewards.SpellCompletionDisplayID[i]);
+ data.append(questRewards.SpellCompletionDisplayID.data(), questRewards.SpellCompletionDisplayID.size());
data << int32(questRewards.SpellCompletionID);
@@ -266,11 +298,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const
data << int32(questRewards.NumSkillUps);
data << int32(questRewards.TreasurePickerID);
- for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i)
- {
- data << questRewards.ChoiceItems[i].Item;
- data << int32(questRewards.ChoiceItems[i].Quantity);
- }
+ for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems)
+ data << choiceItem;
data.WriteBit(questRewards.IsBoostSpell);
data.FlushBits();
@@ -278,7 +307,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestGiverOfferReward const& offer)
+ByteBuffer& operator<<(ByteBuffer& data, QuestGiverOfferReward const& offer)
{
data << offer.QuestGiverGUID;
data << int32(offer.QuestGiverCreatureID);
@@ -287,23 +316,24 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestGiverOfferRew
data << int32(offer.QuestFlags[1]); // FlagsEx
data << int32(offer.SuggestedPartyMembers);
data << int32(offer.Emotes.size());
- for (WorldPackets::Quest::QuestDescEmote const& emote : offer.Emotes)
+ for (QuestDescEmote const& emote : offer.Emotes)
{
data << int32(emote.Type);
data << uint32(emote.Delay);
}
data.WriteBit(offer.AutoLaunched);
+ data.WriteBit(false); // Unused
data.FlushBits();
- data << offer.Rewards; // WorldPackets::Quest::QuestRewards
+ data << offer.Rewards; // QuestRewards
return data;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write()
+WorldPacket const* QuestGiverOfferRewardMessage::Write()
{
- _worldPacket << QuestData; // WorldPackets::Quest::QuestGiverOfferReward
+ _worldPacket << QuestData; // QuestGiverOfferReward
_worldPacket << int32(QuestPackageID);
_worldPacket << int32(PortraitGiver);
_worldPacket << int32(PortraitGiverMount);
@@ -327,14 +357,14 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write()
return &_worldPacket;
};
-void WorldPackets::Quest::QuestGiverChooseReward::Read()
+void QuestGiverChooseReward::Read()
{
_worldPacket >> QuestGiverGUID;
_worldPacket >> QuestID;
- _worldPacket >> ItemChoiceID;
+ _worldPacket >> Choice;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverQuestComplete::Write()
+WorldPacket const* QuestGiverQuestComplete::Write()
{
_worldPacket << int32(QuestID);
_worldPacket << int32(XPReward);
@@ -351,14 +381,14 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestComplete::Write()
return &_worldPacket;
}
-void WorldPackets::Quest::QuestGiverCompleteQuest::Read()
+void QuestGiverCompleteQuest::Read()
{
_worldPacket >> QuestGiverGUID;
_worldPacket >> QuestID;
FromScript = _worldPacket.ReadBit();
}
-WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
+WorldPacket const* QuestGiverQuestDetails::Write()
{
_worldPacket << QuestGiverGUID;
_worldPacket << InformUnit;
@@ -379,13 +409,13 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
for (int32 spell : LearnSpells)
_worldPacket << int32(spell);
- for (WorldPackets::Quest::QuestDescEmote const& emote : DescEmotes)
+ for (QuestDescEmote const& emote : DescEmotes)
{
_worldPacket << int32(emote.Type);
_worldPacket << uint32(emote.Delay);
}
- for (WorldPackets::Quest::QuestObjectiveSimple const& obj : Objectives)
+ for (QuestObjectiveSimple const& obj : Objectives)
{
_worldPacket << int32(obj.ID);
_worldPacket << int32(obj.ObjectID);
@@ -406,7 +436,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
_worldPacket.WriteBit(DisplayPopup);
_worldPacket.FlushBits();
- _worldPacket << Rewards; // WorldPackets::Quest::QuestRewards
+ _worldPacket << Rewards; // QuestRewards
_worldPacket.WriteString(QuestTitle);
_worldPacket.WriteString(DescriptionText);
_worldPacket.WriteString(LogDescription);
@@ -418,7 +448,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write()
+WorldPacket const* QuestGiverRequestItems::Write()
{
_worldPacket << QuestGiverGUID;
_worldPacket << int32(QuestGiverCreatureID);
@@ -459,32 +489,32 @@ WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write()
return &_worldPacket;
}
-void WorldPackets::Quest::QuestGiverRequestReward::Read()
+void QuestGiverRequestReward::Read()
{
_worldPacket >> QuestGiverGUID;
_worldPacket >> QuestID;
}
-void WorldPackets::Quest::QuestGiverQueryQuest::Read()
+void QuestGiverQueryQuest::Read()
{
_worldPacket >> QuestGiverGUID;
_worldPacket >> QuestID;
RespondToGiver = _worldPacket.ReadBit();
}
-void WorldPackets::Quest::QuestGiverAcceptQuest::Read()
+void QuestGiverAcceptQuest::Read()
{
_worldPacket >> QuestGiverGUID;
_worldPacket >> QuestID;
StartCheat = _worldPacket.ReadBit();
}
-void WorldPackets::Quest::QuestLogRemoveQuest::Read()
+void QuestLogRemoveQuest::Read()
{
_worldPacket >> Entry;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverQuestListMessage::Write()
+WorldPacket const* QuestGiverQuestListMessage::Write()
{
_worldPacket << QuestGiverGUID;
_worldPacket << uint32(GreetEmoteDelay);
@@ -493,33 +523,22 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestListMessage::Write()
_worldPacket.WriteBits(Greeting.size(), 11);
_worldPacket.FlushBits();
- for (GossipText const& gossip : QuestDataText)
- {
- _worldPacket << uint32(gossip.QuestID);
- _worldPacket << uint32(gossip.QuestType);
- _worldPacket << int32(gossip.QuestLevel);
- _worldPacket << int32(gossip.QuestMaxScalingLevel);
- _worldPacket << uint32(gossip.QuestFlags);
- _worldPacket << uint32(gossip.QuestFlagsEx);
- _worldPacket.WriteBit(gossip.Repeatable);
- _worldPacket.WriteBits(gossip.QuestTitle.size(), 9);
- _worldPacket.FlushBits();
- _worldPacket.WriteString(gossip.QuestTitle);
- }
+ for (NPC::ClientGossipText const& gossip : QuestDataText)
+ _worldPacket << gossip;
_worldPacket.WriteString(Greeting);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestUpdateComplete::Write()
+WorldPacket const* QuestUpdateComplete::Write()
{
_worldPacket << int32(QuestID);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestConfirmAcceptResponse::Write()
+WorldPacket const* QuestConfirmAcceptResponse::Write()
{
_worldPacket << uint32(QuestID);
_worldPacket << InitiatedBy;
@@ -532,12 +551,12 @@ WorldPacket const* WorldPackets::Quest::QuestConfirmAcceptResponse::Write()
return &_worldPacket;
}
-void WorldPackets::Quest::QuestConfirmAccept::Read()
+void QuestConfirmAccept::Read()
{
_worldPacket >> QuestID;
}
-WorldPacket const* WorldPackets::Quest::QuestPushResultResponse::Write()
+WorldPacket const* QuestPushResultResponse::Write()
{
_worldPacket << SenderGUID;
_worldPacket << uint8(Result);
@@ -545,14 +564,14 @@ WorldPacket const* WorldPackets::Quest::QuestPushResultResponse::Write()
return &_worldPacket;
}
-void WorldPackets::Quest::QuestPushResult::Read()
+void QuestPushResult::Read()
{
_worldPacket >> SenderGUID;
_worldPacket >> QuestID;
_worldPacket >> Result;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverInvalidQuest::Write()
+WorldPacket const* QuestGiverInvalidQuest::Write()
{
_worldPacket << uint32(Reason);
_worldPacket << int32(ContributionRewardID);
@@ -567,14 +586,14 @@ WorldPacket const* WorldPackets::Quest::QuestGiverInvalidQuest::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestUpdateFailedTimer::Write()
+WorldPacket const* QuestUpdateFailedTimer::Write()
{
_worldPacket << uint32(QuestID);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::QuestGiverQuestFailed::Write()
+WorldPacket const* QuestGiverQuestFailed::Write()
{
_worldPacket << uint32(QuestID);
_worldPacket << uint32(Reason);
@@ -582,19 +601,19 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestFailed::Write()
return &_worldPacket;
}
-void WorldPackets::Quest::PushQuestToParty::Read()
+void PushQuestToParty::Read()
{
_worldPacket >> QuestID;
}
-WorldPacket const* WorldPackets::Quest::DailyQuestsReset::Write()
+WorldPacket const* DailyQuestsReset::Write()
{
_worldPacket << int32(Count);
return &_worldPacket;
}
-WorldPacket const* WorldPackets::Quest::WorldQuestUpdateResponse::Write()
+WorldPacket const* WorldQuestUpdateResponse::Write()
{
_worldPacket << uint32(WorldQuestUpdates.size());
@@ -610,14 +629,14 @@ WorldPacket const* WorldPackets::Quest::WorldQuestUpdateResponse::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceResponseRewardEntry const& playerChoiceResponseRewardEntry)
+ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseRewardEntry const& playerChoiceResponseRewardEntry)
{
data << playerChoiceResponseRewardEntry.Item;
data << int32(playerChoiceResponseRewardEntry.Quantity);
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceResponseReward const& playerChoiceResponseReward)
+ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseReward const& playerChoiceResponseReward)
{
data << int32(playerChoiceResponseReward.TitleID);
data << int32(playerChoiceResponseReward.PackageID);
@@ -632,30 +651,45 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceRespon
data << uint32(playerChoiceResponseReward.Factions.size());
data << uint32(playerChoiceResponseReward.ItemChoices.size());
- for (WorldPackets::Quest::PlayerChoiceResponseRewardEntry const& item : playerChoiceResponseReward.Items)
+ for (PlayerChoiceResponseRewardEntry const& item : playerChoiceResponseReward.Items)
data << item;
- for (WorldPackets::Quest::PlayerChoiceResponseRewardEntry const& currency : playerChoiceResponseReward.Currencies)
+ for (PlayerChoiceResponseRewardEntry const& currency : playerChoiceResponseReward.Currencies)
data << currency;
- for (WorldPackets::Quest::PlayerChoiceResponseRewardEntry const& faction : playerChoiceResponseReward.Factions)
+ for (PlayerChoiceResponseRewardEntry const& faction : playerChoiceResponseReward.Factions)
data << faction;
- for (WorldPackets::Quest::PlayerChoiceResponseRewardEntry const& itemChoice : playerChoiceResponseReward.ItemChoices)
+ for (PlayerChoiceResponseRewardEntry const& itemChoice : playerChoiceResponseReward.ItemChoices)
data << itemChoice;
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceResponse const& playerChoiceResponse)
+ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseMawPower const& playerChoiceResponseMawPower)
+{
+ 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);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponse const& playerChoiceResponse)
{
data << int32(playerChoiceResponse.ResponseID);
+ data << uint16(playerChoiceResponse.ResponseIdentifier);
data << int32(playerChoiceResponse.ChoiceArtFileID);
data << int32(playerChoiceResponse.Flags);
data << uint32(playerChoiceResponse.WidgetSetID);
data << uint32(playerChoiceResponse.UiTextureAtlasElementID);
data << uint32(playerChoiceResponse.SoundKitID);
data << uint8(playerChoiceResponse.GroupID);
+ data << int32(playerChoiceResponse.UiTextureKitID);
data.WriteBits(playerChoiceResponse.Answer.length(), 9);
data.WriteBits(playerChoiceResponse.Header.length(), 9);
@@ -665,6 +699,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceRespon
data.WriteBits(playerChoiceResponse.Confirmation.length(), 7);
data.WriteBit(playerChoiceResponse.RewardQuestID.is_initialized());
data.WriteBit(playerChoiceResponse.Reward.is_initialized());
+ data.WriteBit(playerChoiceResponse.MawPower.is_initialized());
data.FlushBits();
if (playerChoiceResponse.Reward)
@@ -680,10 +715,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceRespon
if (playerChoiceResponse.RewardQuestID)
data << uint32(*playerChoiceResponse.RewardQuestID);
+ if (playerChoiceResponse.MawPower)
+ data << *playerChoiceResponse.MawPower;
+
return data;
}
-WorldPacket const* WorldPackets::Quest::DisplayPlayerChoice::Write()
+WorldPacket const* DisplayPlayerChoice::Write()
{
_worldPacket << int32(ChoiceID);
_worldPacket << uint32(Responses.size());
@@ -703,8 +741,10 @@ WorldPacket const* WorldPackets::Quest::DisplayPlayerChoice::Write()
return &_worldPacket;
}
-void WorldPackets::Quest::ChoiceResponse::Read()
+void ChoiceResponse::Read()
{
_worldPacket >> ChoiceID;
_worldPacket >> ResponseID;
}
+}
+}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 096c77c28cc..8c738fdcebe 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -20,8 +20,12 @@
#include "Packet.h"
#include "ItemPacketsCommon.h"
+#include "NPCPackets.h"
#include "ObjectGuid.h"
#include "QuestDef.h"
+#include <array>
+
+enum class LootItemType : uint8;
namespace WorldPackets
{
@@ -104,15 +108,18 @@ namespace WorldPackets
int32 DisplayID = 0;
};
+ struct QuestCompleteDisplaySpell
+ {
+ int32 SpellID = 0;
+ int32 PlayerConditionID = 0;
+ };
+
struct QuestInfo
{
int32 QuestID = 0;
int32 QuestType = 0; // Accepted values: 0, 1 or 2. 0 == IsAutoComplete() (skip objectives/details)
- int32 QuestLevel = 0; // may be -1, static data, in other cases must be used dynamic level: Player::GetQuestLevel (0 is not known, but assuming this is no longer valid for quest intended for client)
- int32 QuestScalingFactionGroup = 0;
- int32 QuestMaxScalingLevel = 255;
+ int32 ContentTuningID = 0;
int32 QuestPackageID = 0;
- int32 QuestMinLevel = 0;
int32 QuestSortID = 0; // zone or sort to display in quest log
int32 QuestInfoID = 0;
int32 SuggestedGroupNum = 0;
@@ -123,7 +130,7 @@ namespace WorldPackets
int32 RewardMoneyDifficulty = 0;
float RewardMoneyMultiplier = 1.0f;
int32 RewardBonusMoney = 0;
- int32 RewardDisplaySpell[QUEST_REWARD_DISPLAY_SPELL_COUNT] = { }; // reward spell, this spell will be displayed (icon)
+ std::vector<QuestCompleteDisplaySpell> RewardDisplaySpell; // reward spell, this spell will be displayed (icon)
int32 RewardSpell = 0;
int32 RewardHonor = 0;
float RewardKillHonor = 0.0f;
@@ -176,6 +183,7 @@ namespace WorldPackets
int32 RewardFactionCapIn[QUEST_REWARD_REPUTATIONS_COUNT] = { };
int32 RewardCurrencyID[QUEST_REWARD_CURRENCY_COUNT] = { };
int32 RewardCurrencyQty[QUEST_REWARD_CURRENCY_COUNT] = { };
+ bool ReadyForTranslation = false;
};
class QueryQuestInfoResponse final : public ServerPacket
@@ -230,6 +238,7 @@ namespace WorldPackets
struct QuestChoiceItem
{
+ ::LootItemType LootItemType = ::LootItemType(0);
Item::ItemInstance Item;
int32 Quantity = 0;
};
@@ -245,20 +254,20 @@ namespace WorldPackets
int32 Honor = 0;
int32 Title = 0;
int32 FactionFlags = 0;
- int32 SpellCompletionDisplayID[QUEST_REWARD_DISPLAY_SPELL_COUNT] = { };
+ std::array<int32, QUEST_REWARD_DISPLAY_SPELL_COUNT> SpellCompletionDisplayID = { };
int32 SpellCompletionID = 0;
int32 SkillLineID = 0;
int32 NumSkillUps = 0;
int32 TreasurePickerID = 0;
- QuestChoiceItem ChoiceItems[QUEST_REWARD_CHOICES_COUNT];
- int32 ItemID[QUEST_REWARD_ITEM_COUNT] = { };
- int32 ItemQty[QUEST_REWARD_ITEM_COUNT] = { };
- int32 FactionID[QUEST_REWARD_REPUTATIONS_COUNT] = { };
- int32 FactionValue[QUEST_REWARD_REPUTATIONS_COUNT] = { };
- int32 FactionOverride[QUEST_REWARD_REPUTATIONS_COUNT] = { };
- int32 FactionCapIn[QUEST_REWARD_REPUTATIONS_COUNT] = { };
- int32 CurrencyID[QUEST_REWARD_CURRENCY_COUNT] = { };
- int32 CurrencyQty[QUEST_REWARD_CURRENCY_COUNT] = { };
+ std::array<QuestChoiceItem, QUEST_REWARD_CHOICES_COUNT> ChoiceItems;
+ std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemID = { };
+ std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemQty = { };
+ std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionID = { };
+ std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionValue = { };
+ std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionOverride = { };
+ std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionCapIn = { };
+ std::array<int32, QUEST_REWARD_CURRENCY_COUNT> CurrencyID = { };
+ std::array<int32, QUEST_REWARD_CURRENCY_COUNT> CurrencyQty = { };
bool IsBoostSpell = false;
};
@@ -310,7 +319,7 @@ namespace WorldPackets
ObjectGuid QuestGiverGUID;
int32 QuestID = 0;
- int32 ItemChoiceID = 0;
+ QuestChoiceItem Choice;
};
class QuestGiverQuestComplete final : public ServerPacket
@@ -469,21 +478,6 @@ namespace WorldPackets
uint8 Entry = 0;
};
- struct GossipText
- {
- GossipText(uint32 questID, uint32 questType, int32 questLevel, int32 questMaxScalingLevel, uint32 questFlags, uint32 questFlagsEx, bool repeatable, std::string questTitle) :
- QuestID(questID), QuestType(questType), QuestLevel(questLevel), QuestMaxScalingLevel(questMaxScalingLevel), QuestFlags(questFlags),
- QuestFlagsEx(questFlagsEx), Repeatable(repeatable), QuestTitle(std::move(questTitle)) { }
- uint32 QuestID;
- uint32 QuestType;
- int32 QuestLevel;
- int32 QuestMaxScalingLevel;
- uint32 QuestFlags;
- uint32 QuestFlagsEx;
- bool Repeatable;
- std::string QuestTitle;
- };
-
class QuestGiverQuestListMessage final : public ServerPacket
{
public:
@@ -494,7 +488,7 @@ namespace WorldPackets
ObjectGuid QuestGiverGUID;
uint32 GreetEmoteDelay = 0;
uint32 GreetEmoteType = 0;
- std::vector<GossipText> QuestDataText;
+ std::vector<NPC::ClientGossipText> QuestDataText;
std::string Greeting;
};
@@ -667,15 +661,28 @@ namespace WorldPackets
std::vector<PlayerChoiceResponseRewardEntry> ItemChoices;
};
+ struct PlayerChoiceResponseMawPower
+ {
+ int32 Unused901_1 = 0;
+ int32 TypeArtFileID = 0;
+ int32 Rarity = 0;
+ uint32 RarityColor = 0;
+ int32 Unused901_2 = 0;
+ int32 SpellID = 0;
+ int32 MaxStacks = 0;
+ };
+
struct PlayerChoiceResponse
{
int32 ResponseID = 0;
+ uint16 ResponseIdentifier = 0;
int32 ChoiceArtFileID = 0;
int32 Flags = 0;
uint32 WidgetSetID = 0;
uint32 UiTextureAtlasElementID = 0;
uint32 SoundKitID = 0;
uint8 GroupID = 0;
+ int32 UiTextureKitID = 0;
std::string Answer;
std::string Header;
std::string SubHeader;
@@ -684,6 +691,7 @@ namespace WorldPackets
std::string Confirmation;
Optional<PlayerChoiceResponseReward> Reward;
Optional<uint32> RewardQuestID;
+ Optional<PlayerChoiceResponseMawPower> MawPower;
};
class DisplayPlayerChoice final : public ServerPacket
@@ -717,7 +725,4 @@ namespace WorldPackets
}
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const& questRewards);
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestGiverOfferReward const& offer);
-
#endif // QuestPackets_h__
diff --git a/src/server/game/Server/Packets/ReputationPackets.h b/src/server/game/Server/Packets/ReputationPackets.h
index b6406fe95cb..b3eecced951 100644
--- a/src/server/game/Server/Packets/ReputationPackets.h
+++ b/src/server/game/Server/Packets/ReputationPackets.h
@@ -25,7 +25,7 @@ namespace WorldPackets
{
namespace Reputation
{
- static uint16 const FactionCount = 350;
+ static uint16 const FactionCount = 400;
class InitializeFactions final : public ServerPacket
{
diff --git a/src/server/game/Server/Packets/ScenarioPackets.cpp b/src/server/game/Server/Packets/ScenarioPackets.cpp
index cc40dca1135..c833e6a2104 100644
--- a/src/server/game/Server/Packets/ScenarioPackets.cpp
+++ b/src/server/game/Server/Packets/ScenarioPackets.cpp
@@ -114,12 +114,14 @@ WorldPacket const* WorldPackets::Scenario::ScenarioPOIs::Write()
_worldPacket << int32(scenarioPOI.Flags);
_worldPacket << int32(scenarioPOI.WorldEffectID);
_worldPacket << int32(scenarioPOI.PlayerConditionID);
+ _worldPacket << int32(scenarioPOI.NavigationPlayerConditionID);
_worldPacket << uint32(scenarioPOI.Points.size());
for (ScenarioPOIPoint const& scenarioPOIBlobPoint : scenarioPOI.Points)
{
_worldPacket << int32(scenarioPOIBlobPoint.X);
_worldPacket << int32(scenarioPOIBlobPoint.Y);
+ _worldPacket << int32(scenarioPOIBlobPoint.Z);
}
}
}
diff --git a/src/server/game/Server/Packets/SocialPackets.cpp b/src/server/game/Server/Packets/SocialPackets.cpp
index 0ab58ca7bb7..a86a8f4c706 100644
--- a/src/server/game/Server/Packets/SocialPackets.cpp
+++ b/src/server/game/Server/Packets/SocialPackets.cpp
@@ -64,8 +64,8 @@ WorldPacket const* WorldPackets::Social::ContactList::Write()
_worldPacket.WriteBits(Contacts.size(), 8);
_worldPacket.FlushBits();
- for (size_t i = 0; i < Contacts.size(); ++i)
- _worldPacket << Contacts[i];
+ for (ContactInfo const& contact : Contacts)
+ _worldPacket << contact;
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 9efe37d956d..d31647bb122 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -95,8 +95,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraDataInfo cons
{
data << auraData.CastID;
data << int32(auraData.SpellID);
- data << int32(auraData.SpellXSpellVisualID);
- data << uint8(auraData.Flags);
+ data << auraData.Visual;
+ data << uint16(auraData.Flags);
data << uint32(auraData.ActiveFlags);
data << uint16(auraData.CastLevel);
data << uint8(auraData.Applications);
@@ -205,15 +205,39 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::MissileTrajecto
return buffer;
}
+ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Spells::SpellOptionalReagent& optionalReagent)
+{
+ data >> optionalReagent.ItemID;
+ data >> optionalReagent.Slot;
+ data >> optionalReagent.Count;
+ return data;
+}
+
+ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Spells::SpellExtraCurrencyCost& extraCurrencyCost)
+{
+ data >> extraCurrencyCost.CurrencyID;
+ data >> extraCurrencyCost.Count;
+ return data;
+}
+
ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastRequest& request)
{
buffer >> request.CastID;
buffer >> request.Misc[0];
buffer >> request.Misc[1];
buffer >> request.SpellID;
- buffer >> request.SpellXSpellVisualID;
+ buffer >> request.Visual;
buffer >> request.MissileTrajectory;
buffer >> request.CraftingNPC;
+ request.OptionalReagents.resize(buffer.read<uint32>());
+ request.OptionalCurrencies.resize(buffer.read<uint32>());
+
+ for (WorldPackets::Spells::SpellOptionalReagent& optionalReagent : request.OptionalReagents)
+ buffer >> optionalReagent;
+
+ for (WorldPackets::Spells::SpellExtraCurrencyCost& optionalCurrency : request.OptionalCurrencies)
+ buffer >> optionalCurrency;
+
request.SendCastFlags = buffer.ReadBits(5);
bool hasMoveUpdate = buffer.ReadBit();
request.Weight.resize(buffer.ReadBits(2));
@@ -372,7 +396,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con
data << spellCastData.CastID;
data << spellCastData.OriginalCastID;
data << int32(spellCastData.SpellID);
- data << uint32(spellCastData.SpellXSpellVisualID);
+ data << spellCastData.Visual;
data << uint32(spellCastData.CastFlags);
data << uint32(spellCastData.CastFlagsEx);
data << uint32(spellCastData.CastTime);
@@ -439,6 +463,7 @@ WorldPacket const* WorldPackets::Spells::LearnedSpells::Write()
{
_worldPacket << uint32(SpellID.size());
_worldPacket << uint32(FavoriteSpellID.size());
+ _worldPacket << uint32(SpecializationID);
for (int32 spell : SpellID)
_worldPacket << spell;
@@ -474,7 +499,7 @@ WorldPacket const* WorldPackets::Spells::SpellFailure::Write()
_worldPacket << CasterUnit;
_worldPacket << CastID;
_worldPacket << int32(SpellID);
- _worldPacket << uint32(SpellXSpellVisualID);
+ _worldPacket << Visual;
_worldPacket << uint16(Reason);
return &_worldPacket;
@@ -485,7 +510,7 @@ WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write()
_worldPacket << CasterUnit;
_worldPacket << CastID;
_worldPacket << uint32(SpellID);
- _worldPacket << uint32(SpellXSpellVisualID);
+ _worldPacket << Visual;
_worldPacket << uint8(Reason);
return &_worldPacket;
@@ -495,7 +520,7 @@ WorldPacket const* WorldPackets::Spells::CastFailed::Write()
{
_worldPacket << CastID;
_worldPacket << int32(SpellID);
- _worldPacket << int32(SpellXSpellVisualID);
+ _worldPacket << Visual;
_worldPacket << int32(Reason);
_worldPacket << int32(FailedArg1);
_worldPacket << int32(FailedArg2);
@@ -715,6 +740,8 @@ WorldPacket const* WorldPackets::Spells::CancelSpellVisualKit::Write()
{
_worldPacket << Source;
_worldPacket << int32(SpellVisualKitID);
+ _worldPacket.WriteBit(MountedVisual);
+ _worldPacket.FlushBits();
return &_worldPacket;
}
@@ -760,6 +787,8 @@ WorldPacket const* WorldPackets::Spells::PlaySpellVisualKit::Write()
_worldPacket << int32(KitRecID);
_worldPacket << int32(KitType);
_worldPacket << uint32(Duration);
+ _worldPacket.WriteBit(MountedVisual);
+ _worldPacket.FlushBits();
return &_worldPacket;
}
@@ -794,7 +823,7 @@ WorldPacket const* WorldPackets::Spells::SpellChannelStart::Write()
{
_worldPacket << CasterGUID;
_worldPacket << int32(SpellID);
- _worldPacket << int32(SpellXSpellVisualID);
+ _worldPacket << Visual;
_worldPacket << uint32(ChannelDuration);
_worldPacket.WriteBit(InterruptImmunities.is_initialized());
_worldPacket.WriteBit(HealPrediction.is_initialized());
@@ -852,18 +881,17 @@ WorldPacket const* WorldPackets::Spells::MirrorImageComponentedData::Write()
{
_worldPacket << UnitGUID;
_worldPacket << int32(DisplayID);
+ _worldPacket << int32(SpellVisualKitID);
_worldPacket << uint8(RaceID);
_worldPacket << uint8(Gender);
_worldPacket << uint8(ClassID);
- _worldPacket << uint8(SkinColor);
- _worldPacket << uint8(FaceVariation);
- _worldPacket << uint8(HairVariation);
- _worldPacket << uint8(HairColor);
- _worldPacket << uint8(BeardVariation);
- _worldPacket.append(CustomDisplay.data(), CustomDisplay.size());
+ _worldPacket << uint32(Customizations.size());
_worldPacket << GuildGUID;
_worldPacket << uint32(ItemDisplayID.size());
+ for (Character::ChrCustomizationChoice const& customization : Customizations)
+ _worldPacket << customization;
+
for (int32 itemDisplayId : ItemDisplayID)
_worldPacket << int32(itemDisplayId);
@@ -874,6 +902,7 @@ WorldPacket const* WorldPackets::Spells::MirrorImageCreatureData::Write()
{
_worldPacket << UnitGUID;
_worldPacket << int32(DisplayID);
+ _worldPacket << int32(SpellVisualKitID);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 65f1484322d..fa043ec305f 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -18,10 +18,12 @@
#ifndef SpellPackets_h__
#define SpellPackets_h__
+#include "CharacterPackets.h"
#include "CombatLogPacketsCommon.h"
#include "MovementInfo.h"
#include "ObjectGuid.h"
#include "Optional.h"
+#include "PacketUtilities.h"
#include "Position.h"
#include "SharedDefines.h"
#include <array>
@@ -174,8 +176,8 @@ namespace WorldPackets
{
ObjectGuid CastID;
int32 SpellID = 0;
- int32 SpellXSpellVisualID = 0;
- uint8 Flags = 0;
+ SpellCastVisual Visual;
+ uint16 Flags = 0;
uint32 ActiveFlags = 0;
uint16 CastLevel = 1;
uint8 Applications = 1;
@@ -238,16 +240,31 @@ namespace WorldPackets
uint32 Quantity = 0;
};
+ struct SpellOptionalReagent
+ {
+ int32 ItemID = 0;
+ int32 Slot = 0;
+ int32 Count = 0;
+ };
+
+ struct SpellExtraCurrencyCost
+ {
+ int32 CurrencyID = 0;
+ int32 Count = 0;
+ };
+
struct SpellCastRequest
{
ObjectGuid CastID;
int32 SpellID = 0;
- uint32 SpellXSpellVisualID = 0;
+ SpellCastVisual Visual;
uint8 SendCastFlags = 0;
SpellTargetData Target;
MissileTrajectoryRequest MissileTrajectory;
Optional<MovementInfo> MoveUpdate;
std::vector<SpellWeight> Weight;
+ Array<SpellOptionalReagent, 3> OptionalReagents;
+ Array<SpellExtraCurrencyCost, 5 /*MAX_ITEM_EXT_COST_CURRENCIES*/> OptionalCurrencies;
ObjectGuid CraftingNPC;
int32 Misc[2] = { };
};
@@ -359,7 +376,7 @@ namespace WorldPackets
ObjectGuid CastID;
ObjectGuid OriginalCastID;
int32 SpellID = 0;
- uint32 SpellXSpellVisualID = 0;
+ SpellCastVisual Visual;
uint32 CastFlags = 0;
uint32 CastFlagsEx = 0;
uint32 CastTime = 0;
@@ -407,6 +424,7 @@ namespace WorldPackets
std::vector<int32> SpellID;
std::vector<int32> FavoriteSpellID;
+ uint32 SpecializationID = 0;
bool SuppressMessaging = false;
};
@@ -425,13 +443,13 @@ namespace WorldPackets
class SpellFailure final : public ServerPacket
{
public:
- SpellFailure() : ServerPacket(SMSG_SPELL_FAILURE, 16+4+2+1) { }
+ SpellFailure() : ServerPacket(SMSG_SPELL_FAILURE, 16 + 4 + 8 + 2 + 16) { }
WorldPacket const* Write() override;
ObjectGuid CasterUnit;
uint32 SpellID = 0;
- uint32 SpellXSpellVisualID = 0;
+ SpellCastVisual Visual;
uint16 Reason = 0;
ObjectGuid CastID;
};
@@ -439,13 +457,13 @@ namespace WorldPackets
class SpellFailedOther final : public ServerPacket
{
public:
- SpellFailedOther() : ServerPacket(SMSG_SPELL_FAILED_OTHER, 16+4+1+1) { }
+ SpellFailedOther() : ServerPacket(SMSG_SPELL_FAILED_OTHER, 16 + 4 + 8 + 1 + 16) { }
WorldPacket const* Write() override;
ObjectGuid CasterUnit;
uint32 SpellID = 0;
- uint32 SpellXSpellVisualID = 0;
+ SpellCastVisual Visual;
uint8 Reason = 0;
ObjectGuid CastID;
};
@@ -459,7 +477,7 @@ namespace WorldPackets
ObjectGuid CastID;
int32 SpellID = 0;
- int32 SpellXSpellVisualID = 0;
+ SpellCastVisual Visual;
int32 Reason = 0;
int32 FailedArg1 = -1;
int32 FailedArg2 = -1;
@@ -697,6 +715,7 @@ namespace WorldPackets
ObjectGuid Source;
int32 SpellVisualKitID = 0;
+ bool MountedVisual = false;
};
class PlayOrphanSpellVisual final : public ServerPacket
@@ -749,6 +768,7 @@ namespace WorldPackets
int32 KitRecID = 0;
int32 KitType = 0;
uint32 Duration = 0;
+ bool MountedVisual = false;
};
class CancelCast final : public ClientPacket
@@ -793,7 +813,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
int32 SpellID = 0;
- int32 SpellXSpellVisualID = 0;
+ SpellCastVisual Visual;
Optional<SpellChannelStartInterruptImmunities> InterruptImmunities;
ObjectGuid CasterGUID;
Optional<SpellTargetedHealPrediction> HealPrediction;
@@ -867,15 +887,11 @@ namespace WorldPackets
ObjectGuid UnitGUID;
int32 DisplayID = 0;
+ int32 SpellVisualKitID = 0;
uint8 RaceID = 0;
uint8 Gender = 0;
uint8 ClassID = 0;
- uint8 SkinColor = 0;
- uint8 FaceVariation = 0;
- uint8 HairVariation = 0;
- uint8 HairColor = 0;
- uint8 BeardVariation = 0;
- std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
+ std::vector<Character::ChrCustomizationChoice> Customizations;
ObjectGuid GuildGUID;
std::vector<int32> ItemDisplayID;
@@ -890,6 +906,7 @@ namespace WorldPackets
ObjectGuid UnitGUID;
int32 DisplayID = 0;
+ int32 SpellVisualKitID = 0;
};
class SpellClick final : public ClientPacket
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index cd7501cd52a..ca8be7045e7 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -18,7 +18,32 @@
#include "SystemPackets.h"
#include "Errors.h"
-WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
+namespace WorldPackets
+{
+namespace System
+{
+ByteBuffer& operator<<(ByteBuffer& data, SavedThrottleObjectState const& throttleState)
+{
+ data << uint32(throttleState.MaxTries);
+ data << uint32(throttleState.PerMilliseconds);
+ data << uint32(throttleState.TryCount);
+ data << uint32(throttleState.LastResetTimeBeforeNow);
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, EuropaTicketConfig const& europaTicketSystemStatus)
+{
+ data.WriteBit(europaTicketSystemStatus.TicketsEnabled);
+ data.WriteBit(europaTicketSystemStatus.BugsEnabled);
+ data.WriteBit(europaTicketSystemStatus.ComplaintsEnabled);
+ data.WriteBit(europaTicketSystemStatus.SuggestionsEnabled);
+
+ data << europaTicketSystemStatus.ThrottleState;
+
+ return data;
+}
+
+WorldPacket const* FeatureSystemStatus::Write()
{
_worldPacket << uint8(ComplaintStatus);
@@ -37,6 +62,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket << uint32(TwitterPostThrottleCooldown);
_worldPacket << uint32(TokenPollTimeSeconds);
+ _worldPacket << uint32(KioskSessionMinutes);
_worldPacket << int64(TokenBalanceAmount);
_worldPacket << uint32(BpayStoreProductDeliveryDelay);
@@ -59,7 +85,6 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.WriteBit(RestrictedAccount);
_worldPacket.WriteBit(CommerceSystemEnabled);
_worldPacket.WriteBit(TutorialsEnabled);
- _worldPacket.WriteBit(NPETutorialsEnabled);
_worldPacket.WriteBit(TwitterEnabled);
_worldPacket.WriteBit(Unk67);
_worldPacket.WriteBit(WillKickFromWorld);
@@ -76,6 +101,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.WriteBit(QuestSessionEnabled);
_worldPacket.WriteBit(IsMuted);
_worldPacket.WriteBit(ClubFinderEnabled);
+ _worldPacket.WriteBit(Unknown901CheckoutRelated);
_worldPacket.FlushBits();
@@ -113,28 +139,18 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
}
{
- _worldPacket.WriteBit(VoiceChatManagerSettings.IsSquelched);
- _worldPacket << VoiceChatManagerSettings.BnetAccountGuid;
- _worldPacket << VoiceChatManagerSettings.GuildGuid;
+ _worldPacket.WriteBit(Squelch.IsSquelched);
+ _worldPacket << Squelch.BnetAccountGuid;
+ _worldPacket << Squelch.GuildGuid;
}
if (EuropaTicketSystemStatus)
- {
- _worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled);
- _worldPacket.WriteBit(EuropaTicketSystemStatus->BugsEnabled);
- _worldPacket.WriteBit(EuropaTicketSystemStatus->ComplaintsEnabled);
- _worldPacket.WriteBit(EuropaTicketSystemStatus->SuggestionsEnabled);
-
- _worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.MaxTries);
- _worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.PerMilliseconds);
- _worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.TryCount);
- _worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.LastResetTimeBeforeNow);
- }
+ _worldPacket << *EuropaTicketSystemStatus;
return &_worldPacket;
}
-WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
+WorldPacket const* FeatureSystemStatusGlueScreen::Write()
{
_worldPacket.WriteBit(BpayStoreEnabled);
_worldPacket.WriteBit(BpayStoreAvailable);
@@ -151,21 +167,32 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(LiveRegionCharacterListEnabled);
_worldPacket.WriteBit(LiveRegionCharacterCopyEnabled);
_worldPacket.WriteBit(LiveRegionAccountCopyEnabled);
+ _worldPacket.WriteBit(LiveRegionKeyBindingsCopyEnabled);
+ _worldPacket.WriteBit(Unknown901CheckoutRelated);
+ _worldPacket.WriteBit(EuropaTicketSystemStatus.is_initialized());
_worldPacket.FlushBits();
+ if (EuropaTicketSystemStatus)
+ _worldPacket << *EuropaTicketSystemStatus;
+
_worldPacket << uint32(TokenPollTimeSeconds);
+ _worldPacket << uint32(KioskSessionMinutes);
_worldPacket << int64(TokenBalanceAmount);
_worldPacket << int32(MaxCharactersPerRealm);
+ _worldPacket << uint32(LiveRegionCharacterCopySourceRegions.size());
_worldPacket << uint32(BpayStoreProductDeliveryDelay);
_worldPacket << int32(ActiveCharacterUpgradeBoostType);
_worldPacket << int32(ActiveClassTrialBoostType);
_worldPacket << int32(MinimumExpansionLevel);
_worldPacket << int32(MaximumExpansionLevel);
+ if (!LiveRegionCharacterCopySourceRegions.empty())
+ _worldPacket.append(LiveRegionCharacterCopySourceRegions.data(), LiveRegionCharacterCopySourceRegions.size());
+
return &_worldPacket;
}
-WorldPacket const* WorldPackets::System::MOTD::Write()
+WorldPacket const* MOTD::Write()
{
ASSERT(Text);
_worldPacket.WriteBits(Text->size(), 4);
@@ -181,7 +208,7 @@ WorldPacket const* WorldPackets::System::MOTD::Write()
return &_worldPacket;
}
-WorldPacket const* WorldPackets::System::SetTimeZoneInformation::Write()
+WorldPacket const* SetTimeZoneInformation::Write()
{
_worldPacket.WriteBits(ServerTimeTZ.length(), 7);
_worldPacket.WriteBits(GameTimeTZ.length(), 7);
@@ -192,3 +219,5 @@ WorldPacket const* WorldPackets::System::SetTimeZoneInformation::Write()
return &_worldPacket;
}
+}
+}
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index 4f87ab34edc..34d9aabfda0 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -26,27 +26,27 @@ namespace WorldPackets
{
namespace System
{
- class FeatureSystemStatus final : public ServerPacket
+ struct SavedThrottleObjectState
{
- public:
- struct SavedThrottleObjectState
- {
- uint32 MaxTries = 0;
- uint32 PerMilliseconds = 0;
- uint32 TryCount = 0;
- uint32 LastResetTimeBeforeNow = 0;
- };
+ uint32 MaxTries = 0;
+ uint32 PerMilliseconds = 0;
+ uint32 TryCount = 0;
+ uint32 LastResetTimeBeforeNow = 0;
+ };
- struct EuropaTicketConfig
- {
- bool TicketsEnabled = false;
- bool BugsEnabled = false;
- bool ComplaintsEnabled = false;
- bool SuggestionsEnabled = false;
+ struct EuropaTicketConfig
+ {
+ bool TicketsEnabled = false;
+ bool BugsEnabled = false;
+ bool ComplaintsEnabled = false;
+ bool SuggestionsEnabled = false;
- SavedThrottleObjectState ThrottleState;
- };
+ SavedThrottleObjectState ThrottleState;
+ };
+ class FeatureSystemStatus final : public ServerPacket
+ {
+ public:
struct SessionAlertConfig
{
int32 Delay = 0;
@@ -81,7 +81,7 @@ namespace WorldPackets
float ThrottleDfBestPriority = 0.0f;
};
- struct VoiceChatProxySettings
+ struct SquelchInfo
{
bool IsSquelched = false;
ObjectGuid BnetAccountGuid;
@@ -121,6 +121,7 @@ namespace WorldPackets
uint32 BpayStoreProductDeliveryDelay = 0;
uint32 ClubsPresenceUpdateTimer = 0;
uint32 HiddenUIClubsPresenceUpdateTimer = 0; ///< Timer for updating club presence when communities ui frame is hidden
+ uint32 KioskSessionMinutes = 0;
bool ItemRestorationButtonEnabled = false;
bool CharUndeleteEnabled = false; ///< Implemented
bool BpayStoreDisabledByParentalControls = false;
@@ -144,9 +145,10 @@ namespace WorldPackets
bool QuestSessionEnabled = false;
bool IsMuted = false;
bool ClubFinderEnabled = false;
+ bool Unknown901CheckoutRelated = false;
SocialQueueConfig QuickJoinConfig;
- VoiceChatProxySettings VoiceChatManagerSettings;
+ SquelchInfo Squelch;
RafSystemFeatureInfo RAFSystem;
};
@@ -172,6 +174,10 @@ namespace WorldPackets
bool LiveRegionCharacterListEnabled = false; // NYI
bool LiveRegionCharacterCopyEnabled = false; // NYI
bool LiveRegionAccountCopyEnabled = false; // NYI
+ bool LiveRegionKeyBindingsCopyEnabled = false;
+ bool Unknown901CheckoutRelated = false; // NYI
+ Optional<EuropaTicketConfig> EuropaTicketSystemStatus;
+ std::vector<int32> LiveRegionCharacterCopySourceRegions;
uint32 TokenPollTimeSeconds = 0; // NYI
int64 TokenBalanceAmount = 0; // NYI
int32 MaxCharactersPerRealm = 0;
@@ -180,6 +186,7 @@ namespace WorldPackets
int32 ActiveClassTrialBoostType = 0; // NYI
int32 MinimumExpansionLevel = 0;
int32 MaximumExpansionLevel = 0;
+ uint32 KioskSessionMinutes = 0;
};
class MOTD final : public ServerPacket
diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp
index 0b38d9e2df7..30c2f8a06a9 100644
--- a/src/server/game/Server/Packets/TicketPackets.cpp
+++ b/src/server/game/Server/Packets/TicketPackets.cpp
@@ -64,16 +64,16 @@ void WorldPackets::Ticket::GMTicketAcknowledgeSurvey::Read()
_worldPacket >> CaseID;
}
-void WorldPackets::Ticket::SupportTicketSubmitBug::Read()
+void WorldPackets::Ticket::SubmitUserFeedback::Read()
{
_worldPacket >> Header;
- Note = _worldPacket.ReadString(_worldPacket.ReadBits(10));
-}
-
-void WorldPackets::Ticket::SupportTicketSubmitSuggestion::Read()
-{
- _worldPacket >> Header;
- Note = _worldPacket.ReadString(_worldPacket.ReadBits(10));
+ uint32 noteLength = _worldPacket.ReadBits(24);
+ IsSuggestion = _worldPacket.ReadBit();
+ if (noteLength)
+ {
+ Note = _worldPacket.ReadString(noteLength - 1);
+ _worldPacket.read_skip<char>(); // null terminator
+ }
}
WorldPackets::Ticket::SupportTicketSubmitComplaint::SupportTicketChatLine::SupportTicketChatLine(uint32 timestamp, std::string const& text) :
diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h
index 344deabd972..4e7026c6c6e 100644
--- a/src/server/game/Server/Packets/TicketPackets.h
+++ b/src/server/game/Server/Packets/TicketPackets.h
@@ -92,26 +92,16 @@ namespace WorldPackets
int32 CaseID;
};
- class SupportTicketSubmitBug final : public ClientPacket
+ class SubmitUserFeedback final : public ClientPacket
{
public:
- SupportTicketSubmitBug(WorldPacket&& packet) : ClientPacket(CMSG_SUPPORT_TICKET_SUBMIT_BUG, std::move(packet)) { }
-
- void Read() override;
-
- SupportTicketHeader Header;
- std::string Note;
- };
-
- class SupportTicketSubmitSuggestion final : public ClientPacket
- {
- public:
- SupportTicketSubmitSuggestion(WorldPacket&& packet) : ClientPacket(CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION, std::move(packet)) { }
+ SubmitUserFeedback(WorldPacket&& packet) : ClientPacket(CMSG_SUBMIT_USER_FEEDBACK, std::move(packet)) { }
void Read() override;
SupportTicketHeader Header;
std::string Note;
+ bool IsSuggestion = false;
};
class SupportTicketSubmitComplaint final : public ClientPacket
diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
index a36dac184a6..3ea86ae6106 100644
--- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp
+++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
@@ -22,6 +22,7 @@ ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Transmogrification::Trans
data >> transmogItem.ItemModifiedAppearanceID;
data >> transmogItem.Slot;
data >> transmogItem.SpellItemEnchantmentID;
+ data >> transmogItem.SecondaryItemModifiedAppearanceID;
return data;
}
diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.h b/src/server/game/Server/Packets/TransmogrificationPackets.h
index 09926a52e4f..2f1e22063fa 100644
--- a/src/server/game/Server/Packets/TransmogrificationPackets.h
+++ b/src/server/game/Server/Packets/TransmogrificationPackets.h
@@ -31,6 +31,7 @@ namespace WorldPackets
int32 ItemModifiedAppearanceID = 0;
uint32 Slot = 0;
int32 SpellItemEnchantmentID = 0;
+ int32 SecondaryItemModifiedAppearanceID = 0;
};
class TransmogrifyItems final : public ClientPacket
diff --git a/src/server/game/Server/Packets/WardenPackets.h b/src/server/game/Server/Packets/WardenPackets.h
index a8a13bea65e..d3160e33ab4 100644
--- a/src/server/game/Server/Packets/WardenPackets.h
+++ b/src/server/game/Server/Packets/WardenPackets.h
@@ -27,7 +27,7 @@ namespace WorldPackets
class WardenData final : public ClientPacket
{
public:
- WardenData(WorldPacket&& packet) : ClientPacket(CMSG_WARDEN_DATA, std::move(packet)) { }
+ WardenData(WorldPacket&& packet) : ClientPacket(CMSG_WARDEN3_DATA, std::move(packet)) { }
void Read() override;
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index b8a2bfdc9cc..397a627051d 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -130,9 +130,11 @@ void OpcodeTable::Initialize()
#define DEFINE_HANDLER(opcode, status, processing, handler) \
ValidateAndSetClientOpcode<decltype(handler), handler>(opcode, #opcode, status, processing)
+ DEFINE_HANDLER(CMSG_ABANDON_NPE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ACCEPT_GUILD_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptInvite);
DEFINE_HANDLER(CMSG_ACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode);
DEFINE_HANDLER(CMSG_ACCEPT_WARGAME_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_ACTIVATE_SOULBIND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ACTIVATE_TAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode);
DEFINE_HANDLER(CMSG_ADDON_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ADD_BATTLENET_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -141,13 +143,14 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_ADD_TOY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddToy);
DEFINE_HANDLER(CMSG_ADVENTURE_JOURNAL_OPEN_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ADVENTURE_JOURNAL_START_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_ADVENTURE_MAP_POI_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ALTER_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAlterAppearance);
DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueryOpcode);
DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUEUE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueueOpcode);
DEFINE_HANDLER(CMSG_AREA_TRIGGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaTriggerOpcode);
DEFINE_HANDLER(CMSG_ARTIFACT_ADD_POWER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArtifactAddPower);
DEFINE_HANDLER(CMSG_ARTIFACT_SET_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArtifactSetAppearance);
+ DEFINE_HANDLER(CMSG_ASSIGN_EQUIPMENT_SET_SPEC, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ATTACK_STOP, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackStopOpcode);
DEFINE_HANDLER(CMSG_ATTACK_SWING, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackSwingOpcode);
DEFINE_HANDLER(CMSG_AUCTIONABLE_TOKEN_SELL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -199,12 +202,9 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BATTLE_PAY_GET_PRODUCT_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_GET_PURCHASE_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_OPEN_CHECKOUT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_REQUEST_PRICE_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_START_PURCHASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PAY_START_VAS_PURCHASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PET_CLEAR_FANFARE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PET_DELETE_PET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlePetDeletePet);
DEFINE_HANDLER(CMSG_BATTLE_PET_DELETE_PET_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -217,9 +217,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BATTLE_PET_UPDATE_NOTIFY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BEGIN_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBeginTradeOpcode);
- //DEFINE_HANDLER(CMSG_BF_MGR_ENTRY_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfEntryInviteResponse);
- //DEFINE_HANDLER(CMSG_BF_MGR_QUEUE_EXIT_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfQueueExitRequest);
- //DEFINE_HANDLER(CMSG_BF_MGR_QUEUE_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfQueueInviteResponse);
DEFINE_HANDLER(CMSG_BINDER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBinderActivateOpcode);
DEFINE_HANDLER(CMSG_BLACK_MARKET_BID_ON_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketBidOnItem);
DEFINE_HANDLER(CMSG_BLACK_MARKET_OPEN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketOpen);
@@ -233,19 +230,19 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BUY_REAGENT_BANK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CAGE_BATTLE_PET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCageBattlePet);
DEFINE_HANDLER(CMSG_CALENDAR_ADD_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarAddEvent);
- DEFINE_HANDLER(CMSG_CALENDAR_COMMUNITY_FILTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCommunityFilter);
+ DEFINE_HANDLER(CMSG_CALENDAR_COMMUNITY_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCommunityInvite);
DEFINE_HANDLER(CMSG_CALENDAR_COMPLAIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarComplain);
DEFINE_HANDLER(CMSG_CALENDAR_COPY_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCopyEvent);
- DEFINE_HANDLER(CMSG_CALENDAR_EVENT_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventInvite);
- DEFINE_HANDLER(CMSG_CALENDAR_EVENT_MODERATOR_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventModeratorStatus);
- DEFINE_HANDLER(CMSG_CALENDAR_EVENT_RSVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventRsvp);
DEFINE_HANDLER(CMSG_CALENDAR_EVENT_SIGN_UP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventSignup);
- DEFINE_HANDLER(CMSG_CALENDAR_EVENT_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventStatus);
DEFINE_HANDLER(CMSG_CALENDAR_GET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetCalendar);
DEFINE_HANDLER(CMSG_CALENDAR_GET_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetEvent);
DEFINE_HANDLER(CMSG_CALENDAR_GET_NUM_PENDING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetNumPending);
+ DEFINE_HANDLER(CMSG_CALENDAR_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarInvite);
+ DEFINE_HANDLER(CMSG_CALENDAR_MODERATOR_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarModeratorStatus);
DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarRemoveEvent);
DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventRemoveInvite);
+ DEFINE_HANDLER(CMSG_CALENDAR_RSVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarRsvp);
+ DEFINE_HANDLER(CMSG_CALENDAR_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarStatus);
DEFINE_HANDLER(CMSG_CALENDAR_UPDATE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarUpdateEvent);
DEFINE_HANDLER(CMSG_CANCEL_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAuraOpcode);
DEFINE_HANDLER(CMSG_CANCEL_AUTO_REPEAT_SPELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAutoRepeatSpellOpcode);
@@ -262,13 +259,15 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CAST_SPELL, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleCastSpellOpcode);
DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_LEADERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_REALM_TICKET, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlenetChangeRealmTicket);
DEFINE_HANDLER(CMSG_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSubGroupOpcode);
+ DEFINE_HANDLER(CMSG_CHARACTER_CHECK_UPGRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHARACTER_RENAME_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRenameOpcode);
+ DEFINE_HANDLER(CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CHARACTER_UPGRADE_START, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCustomizeOpcode);
DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharDeleteOpcode);
DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRaceOrFactionChangeOpcode);
@@ -308,7 +307,11 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHAT_REPORT_IGNORED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode);
DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode);
+ DEFINE_HANDLER(CMSG_CHECK_CHARACTER_NAME_AVAILABILITY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCheckCharacterNameAvailability);
+ DEFINE_HANDLER(CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHOICE_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandlePlayerChoiceResponse);
+ DEFINE_HANDLER(CMSG_CHROMIE_TIME_SELECT_EXPANSION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLAIM_WEEKLY_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLEAR_NEW_APPEARANCE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLEAR_RAID_MARKER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearRaidMarker);
DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode);
@@ -324,7 +327,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_CLUB_INVITE, 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_ENABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COMMENTATOR_ENTER_INSTANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -359,10 +362,12 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_DELETE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDeleteEquipmentSet);
DEFINE_HANDLER(CMSG_DEL_FRIEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDelFriendOpcode);
DEFINE_HANDLER(CMSG_DEL_IGNORE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDelIgnoreOpcode);
+ DEFINE_HANDLER(CMSG_DEPOSIT_ANIMA, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DEPOSIT_REAGENT_BANK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DESTROY_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDestroyItemOpcode);
DEFINE_HANDLER(CMSG_DF_BOOT_PLAYER_VOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgSetBootVoteOpcode);
- DEFINE_HANDLER(CMSG_DF_GET_JOIN_STATUS, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleDFGetJoinStatus);
+ DEFINE_HANDLER(CMSG_DF_CONFIRM_EXPAND_SEARCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_DF_GET_JOIN_STATUS, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleDFGetJoinStatus);
DEFINE_HANDLER(CMSG_DF_GET_SYSTEM_INFO, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleDFGetSystemInfo);
DEFINE_HANDLER(CMSG_DF_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgJoinOpcode);
DEFINE_HANDLER(CMSG_DF_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgLeaveOpcode);
@@ -370,8 +375,10 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_DF_READY_CHECK_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DF_SET_ROLES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgSetRolesOpcode);
DEFINE_HANDLER(CMSG_DF_TELEPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgTeleportOpcode);
+ DEFINE_HANDLER(CMSG_DISABLE_AE_LOOTING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DISCARDED_TIME_SYNC_ACKS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DISMISS_CRITTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDismissCritter);
+ DEFINE_HANDLER(CMSG_DO_COUNTDOWN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DO_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DO_READY_CHECK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDoReadyCheckOpcode);
DEFINE_HANDLER(CMSG_DUEL_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDuelResponseOpcode);
@@ -388,13 +395,16 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_GAME_EVENT_DEBUG_ENABLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GAME_OBJ_REPORT_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGameobjectReportUse);
DEFINE_HANDLER(CMSG_GAME_OBJ_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGameObjectUseOpcode);
+ DEFINE_HANDLER(CMSG_GARRISON_ADD_FOLLOWER_HEALTH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_CANCEL_CONSTRUCTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGarrisonCancelConstruction);
DEFINE_HANDLER(CMSG_GARRISON_CHECK_UPGRADEABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_COMPLETE_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_GENERATE_RECRUITS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GARRISON_GET_BUILDING_LANDMARKS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGarrisonGetBuildingLandmarks);
+ DEFINE_HANDLER(CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_GET_MAP_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGarrisonGetMapData);
DEFINE_HANDLER(CMSG_GARRISON_GET_MISSION_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_LEARN_TALENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_MISSION_BONUS_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_PURCHASE_BUILDING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGarrisonPurchaseBuilding);
DEFINE_HANDLER(CMSG_GARRISON_RECRUIT_FOLLOWER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -402,21 +412,21 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_RENAME_FOLLOWER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGarrisonRequestBlueprintAndSpecializationData);
- DEFINE_HANDLER(CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_REQUEST_SHIPMENT_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_RESEARCH_TALENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_RESET_TALENT_TREE_SOCKETS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_SET_BUILDING_ACTIVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_SET_FOLLOWER_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_SET_FOLLOWER_INACTIVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_SOCKET_TALENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_START_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_SWAP_BUILDINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GENERATE_RANDOM_CHARACTER_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomizeCharNameOpcode);
DEFINE_HANDLER(CMSG_GET_ACCOUNT_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GET_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GET_GARRISON_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetGarrisonInfo);
DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetItemPurchaseData);
+ DEFINE_HANDLER(CMSG_GET_LANDING_PAGE_SHIPMENTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GET_MIRROR_IMAGE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMirrorImageDataRequest);
DEFINE_HANDLER(CMSG_GET_PVP_OPTIONS_ENABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGetPVPOptionsEnabled);
DEFINE_HANDLER(CMSG_GET_RAF_ACCOUNT_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -473,6 +483,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_GUILD_UPDATE_INFO_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildUpdateInfoText);
DEFINE_HANDLER(CMSG_GUILD_UPDATE_MOTD_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildUpdateMotdText);
DEFINE_HANDLER(CMSG_HEARTH_AND_RESURRECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleHearthAndResurrect);
+ DEFINE_HANDLER(CMSG_HIDE_QUEST_CHOICE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_HOTFIX_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleHotfixRequest);
DEFINE_HANDLER(CMSG_IGNORE_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleIgnoreTradeOpcode);
DEFINE_HANDLER(CMSG_INITIATE_ROLE_POLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInitiateRolePoll);
@@ -512,6 +523,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_LIVE_REGION_ACCOUNT_RESTORE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LIVE_REGION_CHARACTER_COPY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_LIVE_REGION_KEY_BINDINGS_COPY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LOADING_SCREEN_NOTIFY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleLoadScreenOpcode);
DEFINE_HANDLER(CMSG_LOAD_SELECTED_TROPHY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LOGOUT_CANCEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLogoutCancelOpcode);
@@ -533,6 +545,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MAIL_RETURN_TO_SENDER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMailReturnToSender);
DEFINE_HANDLER(CMSG_MAIL_TAKE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMailTakeItem);
DEFINE_HANDLER(CMSG_MAIL_TAKE_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMailTakeMoney);
+ DEFINE_HANDLER(CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MASTER_LOOT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLootMasterGiveOpcode);
DEFINE_HANDLER(CMSG_MINIMAP_PING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode);
DEFINE_HANDLER(CMSG_MISSILE_TRAJECTORY_COLLISION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMissileTrajectoryCollision);
@@ -542,6 +555,8 @@ void OpcodeTable::Initialize()
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_THREADUNSAFE, &WorldSession::HandleMoveChangeVehicleSeats);
+ DEFINE_HANDLER(CMSG_MOVE_COLLISION_DISABLE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
+ DEFINE_HANDLER(CMSG_MOVE_COLLISION_ENABLE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MOVE_DISMISS_VEHICLE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveDismissVehicle);
DEFINE_HANDLER(CMSG_MOVE_DOUBLE_JUMP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
@@ -578,6 +593,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetModMovementForceMagnitudeAck);
DEFINE_HANDLER(CMSG_MOVE_SET_PITCH, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_SET_RUN_MODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
+ DEFINE_HANDLER(CMSG_MOVE_SET_TURN_RATE_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_SET_VEHICLE_REC_ID_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetVehicleRecAck);
DEFINE_HANDLER(CMSG_MOVE_SET_WALK_MODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_SPLINE_DONE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSplineDoneOpcode);
@@ -600,9 +616,10 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOVE_STOP_TURN, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_TELEPORT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveTeleportAck);
DEFINE_HANDLER(CMSG_MOVE_TIME_SKIPPED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleMoveTimeSkippedOpcode);
- DEFINE_HANDLER(CMSG_MOVE_TOGGLE_COLLISION_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_MOVE_UPDATE_FALL_SPEED, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
+ DEFINE_HANDLER(CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_MYTHIC_PLUS_WEEKLY_REWARD_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_NEUTRAL_PLAYER_SELECT_FACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_NEXT_CINEMATIC_CAMERA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera);
DEFINE_HANDLER(CMSG_OBJECT_UPDATE_FAILED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleObjectUpdateFailedOpcode);
@@ -645,13 +662,12 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_PUSH_QUEST_TO_PARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty);
DEFINE_HANDLER(CMSG_PVP_LOG_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePVPLogDataOpcode);
DEFINE_HANDLER(CMSG_QUERY_BATTLE_PET_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_QUERY_COMMUNITY_NAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryCorpseLocation);
DEFINE_HANDLER(CMSG_QUERY_CORPSE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryCorpseTransport);
DEFINE_HANDLER(CMSG_QUERY_COUNTDOWN_TIMER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_CREATURE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCreatureQuery);
DEFINE_HANDLER(CMSG_QUERY_GAME_OBJECT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGameObjectQueryOpcode);
- DEFINE_HANDLER(CMSG_QUERY_GARRISON_CREATURE_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_QUERY_GARRISON_PET_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_GUILD_INFO, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryInspectAchievements);
DEFINE_HANDLER(CMSG_QUERY_NEXT_MAIL_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryNextMailTime);
@@ -660,6 +676,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUERY_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryPetition);
DEFINE_HANDLER(CMSG_QUERY_PET_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryPetName);
DEFINE_HANDLER(CMSG_QUERY_PLAYER_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleNameQueryOpcode);
+ DEFINE_HANDLER(CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUERY_QUEST_COMPLETION_NPCS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryQuestCompletionNPCs);
DEFINE_HANDLER(CMSG_QUERY_QUEST_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_REALM_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryRealmName);
@@ -670,6 +688,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept);
DEFINE_HANDLER(CMSG_QUEST_GIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverAcceptQuestOpcode);
DEFINE_HANDLER(CMSG_QUEST_GIVER_CHOOSE_REWARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverChooseRewardOpcode);
+ DEFINE_HANDLER(CMSG_QUEST_GIVER_CLOSE_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_QUEST_GIVER_COMPLETE_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverCompleteQuest);
DEFINE_HANDLER(CMSG_QUEST_GIVER_HELLO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverHelloOpcode);
DEFINE_HANDLER(CMSG_QUEST_GIVER_QUERY_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverQueryQuestOpcode);
@@ -708,35 +727,39 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REPORT_PVP_PLAYER_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleReportPvPAFK);
DEFINE_HANDLER(CMSG_REPORT_SERVER_LAG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_REPORT_STUCK_IN_COMBAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestAccountData);
DEFINE_HANDLER(CMSG_REQUEST_AREA_POI_UPDATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestBattlefieldStatusOpcode);
DEFINE_HANDLER(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCategoryCooldowns);
DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCemeteryList);
- DEFINE_HANDLER(CMSG_REQUEST_CHALLENGE_MODE_AFFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_REQUEST_COVENANT_CALLINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_CROWD_CONTROL_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_FORCED_REACTIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestForcedReactionsOpcode);
DEFINE_HANDLER(CMSG_REQUEST_GUILD_PARTY_STATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestPartyState);
DEFINE_HANDLER(CMSG_REQUEST_GUILD_REWARDS_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestGuildRewardsList);
+ DEFINE_HANDLER(CMSG_REQUEST_LATEST_SPLASH_SCREEN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_LFG_LIST_BLACKLIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_REQUEST_MYTHIC_PLUS_AFFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_PARTY_JOIN_UPDATES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyJoinUpdates);
DEFINE_HANDLER(CMSG_REQUEST_PARTY_MEMBER_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyMemberStatsOpcode);
DEFINE_HANDLER(CMSG_REQUEST_PET_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPetInfo);
DEFINE_HANDLER(CMSG_REQUEST_PLAYED_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePlayedTime);
- DEFINE_HANDLER(CMSG_REQUEST_PVP_BRAWL_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_PVP_REWARDS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPvpReward);
- DEFINE_HANDLER(CMSG_REQUEST_QUEST_LINES_FOR_MAP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode);
- DEFINE_HANDLER(CMSG_REQUEST_RATED_BATTLEFIELD_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedBattlefieldInfo);
+ DEFINE_HANDLER(CMSG_REQUEST_RATED_PVP_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedPvpInfo);
DEFINE_HANDLER(CMSG_REQUEST_REALM_GUILD_MASTER_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_RESEARCH_HISTORY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_REQUEST_SCHEDULED_PVP_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_STABLED_PETS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestStabledPets);
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleExit);
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleNextSeat);
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehiclePrevSeat);
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleSwitchSeat);
+ DEFINE_HANDLER(CMSG_REQUEST_WEEKLY_REWARDS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_WORLD_QUEST_UPDATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestWorldQuestUpdate);
DEFINE_HANDLER(CMSG_RESET_CHALLENGE_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_RESET_CHALLENGE_MODE_CHEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -752,6 +775,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SCENE_TRIGGER_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSceneTriggerEvent);
DEFINE_HANDLER(CMSG_SELF_RES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode);
DEFINE_HANDLER(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSellItemOpcode);
+ DEFINE_HANDLER(CMSG_SEND_CHARACTER_CLUB_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SEND_CONTACT_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleContactListOpcode);
DEFINE_HANDLER(CMSG_SEND_MAIL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendMail);
DEFINE_HANDLER(CMSG_SEND_TEXT_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTextEmoteOpcode);
@@ -774,7 +798,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_FACTION_NOT_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionNotAtWar);
DEFINE_HANDLER(CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_SET_LFG_BONUS_FACTION_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_LOOT_METHOD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetLootMethodOpcode);
DEFINE_HANDLER(CMSG_SET_LOOT_SPECIALIZATION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetLootSpecialization);
DEFINE_HANDLER(CMSG_SET_PARTY_ASSIGNMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPartyAssignment);
@@ -811,10 +834,10 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_START_CHALLENGE_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_START_SPECTATOR_WAR_GAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_START_WAR_GAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SUBMIT_USER_FEEDBACK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSubmitUserFeedback);
+ DEFINE_HANDLER(CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SUMMON_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSummonResponseOpcode);
- DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_BUG, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSupportTicketSubmitBug);
DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSupportTicketSubmitComplaint);
- DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSupportTicketSubmitSuggestion);
DEFINE_HANDLER(CMSG_SURRENDER_ARENA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SUSPEND_COMMS_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SUSPEND_TOKEN_RESPONSE, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleSuspendTokenResponse);
@@ -845,6 +868,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_TWITTER_CONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TWITTER_DISCONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TWITTER_POST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_UI_MAP_QUEST_LINES_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode);
DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteOpcode);
DEFINE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode);
@@ -858,6 +882,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_UPDATE_SPELL_VISUAL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UPDATE_VAS_PURCHASE_STATES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UPGRADE_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_UPGRADE_RUNEFORGE_LEGENDARY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_USED_FOLLOW, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_USE_CRITTER_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUseCritterItem);
DEFINE_HANDLER(CMSG_USE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUseEquipmentSet);
@@ -870,12 +895,16 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_VOICE_CHAT_JOIN_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VOICE_CHAT_LOGIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VOID_STORAGE_TRANSFER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleVoidStorageTransfer);
- DEFINE_HANDLER(CMSG_WARDEN_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleWardenData);
- DEFINE_HANDLER(CMSG_WHO, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleWhoOpcode);
+ DEFINE_HANDLER(CMSG_WARDEN3_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleWardenData);
+ DEFINE_HANDLER(CMSG_WHO, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleWhoOpcode);
DEFINE_HANDLER(CMSG_WHO_IS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWhoIsOpcode);
DEFINE_HANDLER(CMSG_WORLD_PORT_RESPONSE, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode);
DEFINE_HANDLER(CMSG_WRAP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWrapItem);
+ //DEFINE_HANDLER(CMSG_BF_MGR_ENTRY_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfEntryInviteResponse);
+ //DEFINE_HANDLER(CMSG_BF_MGR_QUEUE_EXIT_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfQueueExitRequest);
+ //DEFINE_HANDLER(CMSG_BF_MGR_QUEUE_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfQueueInviteResponse);
+
#undef DEFINE_HANDLER
#define DEFINE_SERVER_OPCODE_HANDLER(opcode, status, con) \
@@ -893,6 +922,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_EARNED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_ESSENCE_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_SOULBIND_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_TAXI_REPLY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVE_GLYPHS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADDON_LIST_REQUEST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -901,6 +931,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_MAP_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGETS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGET_ACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -991,7 +1022,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_MOUNT_DELIVERED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_PURCHASE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_CHECKOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_VAS_GUILD_FOLLOW_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1089,10 +1120,15 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_AMBIGUOUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_NOTFOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RECONNECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_REGIONAL_SERVICE_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RESTRICTED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_ABANDON_NPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT,STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_WARGAME_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHROMIE_TIME_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLAIM_RAF_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_ALL_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_BOSS_EMOTES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1102,8 +1138,10 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_RESURRECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TREASURE_PICKER_CACHE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLOSE_ARTIFACT_FORGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLOSE_HEART_FORGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLOSE_ITEM_FORGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_ERROR_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1125,19 +1163,20 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONNECT_TO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED,STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_LOCATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_RECLAIM_DELAY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_TRANSPORT_QUERY, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_PREVIEW_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CREATE_CHAR, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CREATE_SHIPMENT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1151,12 +1190,12 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEFENSE_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DELETE_CHAR, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_DELETE_EXPIRED_MISSIONS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
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, STATUS_NEVER, 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);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_GAME_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1188,6 +1227,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXTERNAL_TRANSACTION_ID_GENERATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_PLAYER_CONDITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_QUEST_TURN_IN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1199,8 +1239,10 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FLIGHT_SPLINE_SYNC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCED_DEATH_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIMATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_OBJECT_RELINK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FRIEND_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAIN_MAW_POWER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_BASE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_CUSTOM_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1213,57 +1255,76 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_SPEED_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_FOLLOWER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_ACTIVATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_LANDMARKS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_REMOVED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CLEAR_ALL_FOLLOWERS_EXHAUSTION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT,STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CLEAR_COLLECTION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CLEAR_EVENT_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COLLECTION_REMOVE_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COLLECTION_UPDATE_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CREATE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_DELETE_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_DELETE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CATEGORIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ABILITIES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_DURABILITY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_XP, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_IS_UPGRADEABLE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LIST_MISSIONS_CHEAT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_AREA_BONUS_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MAP_DATA_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_LIST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_UPDATE_CAN_START, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_NUM_FOLLOWER_ACTIVATIONS_REMAINING, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_START_CONDITION_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_ARCHITECT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_CRAFTER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_MISSION_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_RECRUITMENT_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_TALENT_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_TRADESKILL_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLACE_BUILDING_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_PLACED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_REMOVED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECALL_PORTAL_LAST_USED_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECALL_PORTAL_USED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECRUITMENT_FOLLOWERS_GENERATED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOTE_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RENAME_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RESEARCH_TALENT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RESET_TALENT_TREE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_START_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_TALENT_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_TALENT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPDATE_FOLLOWER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPGRADE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_USE_RECALL_PORTAL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GENERATE_SSO_TOKEN_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_GARRISON_INFO_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_REMAINING_GAME_TIME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1272,7 +1333,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SHIPMENT_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_TROPHY_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_PLAYER_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_REQUEST_PLAYER_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_CASE_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1281,7 +1342,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_TEXT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_QUEST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_ACTION_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_AUTO_KICK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1301,7 +1362,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_AWAY_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_DISBANDED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1313,6 +1373,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_PRESENCE_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_RANKS_UPDATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_RANK_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_STATUS_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_ADDED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_DELETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_MODIFIED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1321,7 +1382,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE_DECLINED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE_EXPIRED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ITEM_LOOTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ITEM_LOOTED_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_KNOWN_RECIPES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBERS_WITH_RECIPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBER_DAILY_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1366,9 +1427,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_GROUP_SIZE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_INTERRUPT_POWER_REGEN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_SAVE_CREATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INTERRUPT_POWER_REGEN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PAGE_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1396,6 +1457,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEVEL_UP_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_BOOT_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_DISABLED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_EXPAND_SEARCH_PROMPT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_JOIN_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_LIST_APPLICANT_LIST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1429,7 +1491,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_RECRUITS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_EQUIPMENT_SET, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_SET_TIME_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1548,10 +1611,13 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TELEPORT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TURN_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_WALK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTI_FLOOR_LEAVE_FLOOR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTI_FLOOR_NEW_FLOOR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_ALL_MAP_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_CURRENT_AFFIXES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_NEW_SEASON_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_SEASON_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_WEEKLY_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1563,9 +1629,11 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OFFER_PETITION_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ON_MONSTER_MOVE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_ANIMA_DIVERSION_UI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_ARTIFACT_FORGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_CONTAINER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_HEART_FORGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_ITEM_FORGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_LFG_DUNGEON_FINDER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1620,12 +1688,15 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PHASE_SHIFT_CHANGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_AZERITE_ITEM_GAINS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BONUS_ROLL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_CLEAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_DISPLAY_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CONDITION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SAVE_GUILD_EMBLEM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SKINNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_TABARD_VENDOR_ACTIVATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1656,16 +1727,16 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_STATISTICS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_COMMUNITY_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_CREATURE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GAME_OBJECT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GARRISON_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_ITEM_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NPC_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PAGE_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1681,16 +1752,14 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_REQUEST_ITEMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS_MULTIPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_LINES_FOR_MAP_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_LOG_FULL, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_UPDATE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_SESSION_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_SESSION_READY_CHECK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_SESSION_READY_CHECK_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_SESSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_SPAWN_TRACKING_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1720,6 +1789,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_SPELL_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_SPELL_FROM_ACTION_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REPLACE_TROPHY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REPORT_PVP_PLAYER_AFK_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_CEMETERY_LIST_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1728,6 +1798,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_QUEST_POI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_WEEKLY_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPEC_WIPE_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1744,6 +1815,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHOSEN, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_INFORM, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RUNE_REGEN_DEBUG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_COMPLETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_POIS, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1757,7 +1829,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCRIPT_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEASON_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1798,13 +1870,16 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PLAY_HOVER_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PROFICIENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_SHIPMENT_READY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_TASK_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_TIME_ZONE_INFORMATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_VEHICLE_REC_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHIPMENT_FACTION_UPDATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_BANK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_MAILBOX, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_QUEST_COMPLETION_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_TAXI_NODES, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_TRADE_SKILL_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1836,6 +1911,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_PREPARE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_VISUAL_LOAD_SCREEN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPLASH_SCREEN_SHOW_LATEST, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPIRIT_HEALER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STAND_STATE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1883,6 +1959,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TWITTER_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_HEALING_RANGE_MODIFIED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_ITEM_INTERACTION_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1895,6 +1972,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CHARACTER_FLAGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_DAILY_MISSION_COUNTER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_EXPANSION_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_GAME_TIME_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_OWNERSHIP, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1909,7 +1987,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_CHECK_TRANSFER_OK_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);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VAS_PURCHASE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1931,10 +2009,13 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARFRONT_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEATHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_REWARDS_PROGRESS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_REWARDS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_REWARD_CLAIM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO_IS, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_MAP_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_QUEST_UPDATE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_SERVER_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index a01713616c3..8e492926c39 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -44,45 +44,47 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
+ CMSG_ABANDON_NPE_RESPONSE = 0x33ED,
CMSG_ACCEPT_GUILD_INVITE = 0x35FC,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
- CMSG_ACTIVATE_TAXI = 0x34AB,
+ CMSG_ACTIVATE_SOULBIND = 0x33DE,
+ CMSG_ACTIVATE_TAXI = 0x34B1,
CMSG_ADDON_LIST = 0x35D8,
CMSG_ADD_BATTLENET_FRIEND = 0x365A,
- CMSG_ADD_FRIEND = 0x36CE,
- CMSG_ADD_IGNORE = 0x36D2,
- CMSG_ADD_TOY = 0x329C,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3203,
- CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x3346,
- CMSG_ADVENTURE_MAP_POI_QUERY = 0x324A,
- CMSG_ALTER_APPEARANCE = 0x34FD,
- CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B0,
- CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B1,
- CMSG_AREA_TRIGGER = 0x31D7,
- CMSG_ARTIFACT_ADD_POWER = 0x31A9,
- CMSG_ARTIFACT_SET_APPEARANCE = 0x31AB,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320B,
- CMSG_ATTACK_STOP = 0x3259,
- CMSG_ATTACK_SWING = 0x3258,
- CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E6,
- CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E7,
- CMSG_AUCTION_BROWSE_QUERY = 0x34D0,
- CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34D8,
- CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34D7,
- CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x34D6,
- CMSG_AUCTION_HELLO_REQUEST = 0x34CB,
- CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x34D4,
- CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x34D5,
- CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x34D1,
- CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x34D2,
- CMSG_AUCTION_LIST_OWNED_ITEMS = 0x34D3,
- CMSG_AUCTION_PLACE_BID = 0x34CF,
- CMSG_AUCTION_REMOVE_ITEM = 0x34CD,
- CMSG_AUCTION_REPLICATE_ITEMS = 0x34CE,
- CMSG_AUCTION_SELL_COMMODITY = 0x34D9,
- CMSG_AUCTION_SELL_ITEM = 0x34CC,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3732,
+ CMSG_ADD_FRIEND = 0x36D0,
+ CMSG_ADD_IGNORE = 0x36D4,
+ CMSG_ADD_TOY = 0x32A5,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3206,
+ CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x335A,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E1,
+ CMSG_ALTER_APPEARANCE = 0x3503,
+ CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B6,
+ CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B7,
+ CMSG_AREA_TRIGGER = 0x31D9,
+ CMSG_ARTIFACT_ADD_POWER = 0x31AB,
+ CMSG_ARTIFACT_SET_APPEARANCE = 0x31AD,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320F,
+ CMSG_ATTACK_STOP = 0x325E,
+ CMSG_ATTACK_SWING = 0x325D,
+ CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E8,
+ CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E9,
+ CMSG_AUCTION_BROWSE_QUERY = 0x34D6,
+ CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DE,
+ CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DD,
+ CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x34DC,
+ CMSG_AUCTION_HELLO_REQUEST = 0x34D1,
+ CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x34DA,
+ CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x34DB,
+ CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x34D7,
+ CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x34D8,
+ CMSG_AUCTION_LIST_OWNED_ITEMS = 0x34D9,
+ CMSG_AUCTION_PLACE_BID = 0x34D5,
+ CMSG_AUCTION_REMOVE_ITEM = 0x34D3,
+ CMSG_AUCTION_REPLICATE_ITEMS = 0x34D4,
+ CMSG_AUCTION_SELL_COMMODITY = 0x34DF,
+ CMSG_AUCTION_SELL_ITEM = 0x34D2,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3735,
CMSG_AUTH_CONTINUED_SESSION = 0x3766,
CMSG_AUTH_SESSION = 0x3765,
CMSG_AUTOBANK_ITEM = 0x3996,
@@ -92,97 +94,96 @@ enum OpcodeClient : uint16
CMSG_AUTO_EQUIP_ITEM = 0x399A,
CMSG_AUTO_EQUIP_ITEM_SLOT = 0x399F,
CMSG_AUTO_STORE_BAG_ITEM = 0x399B,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3366,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3350,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3368,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3367,
- CMSG_BANKER_ACTIVATE = 0x34B3,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3383,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3365,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3385,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3384,
+ CMSG_BANKER_ACTIVATE = 0x34B9,
CMSG_BATTLEFIELD_LEAVE = 0x3173,
CMSG_BATTLEFIELD_LIST = 0x317E,
- CMSG_BATTLEFIELD_PORT = 0x352F,
- CMSG_BATTLEMASTER_HELLO = 0x32B4,
- CMSG_BATTLEMASTER_JOIN = 0x3528,
- CMSG_BATTLEMASTER_JOIN_ARENA = 0x3529,
- CMSG_BATTLEMASTER_JOIN_BRAWL = 0x352D,
- CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x352A,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D1,
- CMSG_BATTLENET_REQUEST = 0x36F5,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CB,
- CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3712,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CA,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C1,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B9,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BA,
- CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370C,
- CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C4,
- CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C2,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3708,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x36C9,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F2,
- CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C3,
+ CMSG_BATTLEFIELD_PORT = 0x3536,
+ CMSG_BATTLEMASTER_HELLO = 0x32BF,
+ CMSG_BATTLEMASTER_JOIN = 0x352F,
+ CMSG_BATTLEMASTER_JOIN_ARENA = 0x3530,
+ CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3534,
+ CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3531,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D3,
+ CMSG_BATTLENET_REQUEST = 0x36F7,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CD,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3714,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CC,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C3,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BB,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BC,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370E,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x370A,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x36CB,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F4,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C,
- CMSG_BATTLE_PET_DELETE_PET = 0x3623,
- CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3624,
- CMSG_BATTLE_PET_MODIFY_NAME = 0x3626,
- CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3622,
- CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3621,
- CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362B,
- CMSG_BATTLE_PET_SET_FLAGS = 0x362F,
- CMSG_BATTLE_PET_SUMMON = 0x3627,
- CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E1,
- CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E0,
+ CMSG_BATTLE_PET_DELETE_PET = 0x3624,
+ CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3625,
+ CMSG_BATTLE_PET_MODIFY_NAME = 0x3627,
+ CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3623,
+ CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3622,
+ CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362C,
+ CMSG_BATTLE_PET_SET_FLAGS = 0x3630,
+ CMSG_BATTLE_PET_SUMMON = 0x3628,
+ CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E3,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E2,
CMSG_BEGIN_TRADE = 0x3157,
- CMSG_BINDER_ACTIVATE = 0x34B2,
- CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3537,
- CMSG_BLACK_MARKET_OPEN = 0x3535,
- CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3536,
- CMSG_BONUS_ROLL = 0x3369,
+ CMSG_BINDER_ACTIVATE = 0x34B8,
+ CMSG_BLACK_MARKET_BID_ON_ITEM = 0x353E,
+ CMSG_BLACK_MARKET_OPEN = 0x353C,
+ CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353D,
+ CMSG_BONUS_ROLL = 0x3386,
CMSG_BUG_REPORT = 0x3686,
CMSG_BUSY_TRADE = 0x3158,
- CMSG_BUY_BACK_ITEM = 0x34A4,
- CMSG_BUY_BANK_SLOT = 0x34B4,
- CMSG_BUY_ITEM = 0x34A3,
- CMSG_BUY_REAGENT_BANK = 0x34B5,
- CMSG_CAGE_BATTLE_PET = 0x31F2,
+ 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_CALENDAR_ADD_EVENT = 0x367D,
- CMSG_CALENDAR_COMMUNITY_FILTER = 0x3671,
+ CMSG_CALENDAR_COMMUNITY_INVITE = 0x3671,
CMSG_CALENDAR_COMPLAIN = 0x3679,
CMSG_CALENDAR_COPY_EVENT = 0x3678,
- CMSG_CALENDAR_EVENT_INVITE = 0x3672,
- CMSG_CALENDAR_EVENT_MODERATOR_STATUS = 0x3676,
- CMSG_CALENDAR_EVENT_RSVP = 0x3674,
CMSG_CALENDAR_EVENT_SIGN_UP = 0x367B,
- CMSG_CALENDAR_EVENT_STATUS = 0x3675,
CMSG_CALENDAR_GET = 0x366F,
CMSG_CALENDAR_GET_EVENT = 0x3670,
CMSG_CALENDAR_GET_NUM_PENDING = 0x367A,
+ CMSG_CALENDAR_INVITE = 0x3672,
+ CMSG_CALENDAR_MODERATOR_STATUS = 0x3676,
CMSG_CALENDAR_REMOVE_EVENT = 0x3677,
CMSG_CALENDAR_REMOVE_INVITE = 0x3673,
+ CMSG_CALENDAR_RSVP = 0x3674,
+ CMSG_CALENDAR_STATUS = 0x3675,
CMSG_CALENDAR_UPDATE_EVENT = 0x367E,
- CMSG_CANCEL_AURA = 0x31AD,
- CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34EF,
- CMSG_CANCEL_CAST = 0x32A2,
- CMSG_CANCEL_CHANNELLING = 0x326E,
- CMSG_CANCEL_GROWTH_AURA = 0x3273,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3213,
- CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AC,
- CMSG_CANCEL_MOUNT_AURA = 0x3284,
+ CMSG_CANCEL_AURA = 0x31AF,
+ CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5,
+ CMSG_CANCEL_CAST = 0x32AB,
+ CMSG_CANCEL_CHANNELLING = 0x3276,
+ CMSG_CANCEL_GROWTH_AURA = 0x327B,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3217,
+ CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AE,
+ CMSG_CANCEL_MOUNT_AURA = 0x328D,
CMSG_CANCEL_QUEUED_SPELL = 0x317F,
- CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34FA,
+ CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500,
CMSG_CANCEL_TRADE = 0x315C,
CMSG_CAN_DUEL = 0x3662,
- CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3707,
- CMSG_CAST_SPELL = 0x329F,
+ CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3709,
+ CMSG_CAST_SPELL = 0x32A8,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090,
- CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS = 0x308F,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x3328,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3329,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x330A,
- CMSG_CHANGE_REALM_TICKET = 0x36FA,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x333E,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x333F,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3320,
+ CMSG_CHANGE_REALM_TICKET = 0x36FC,
CMSG_CHANGE_SUB_GROUP = 0x364C,
- CMSG_CHARACTER_RENAME_REQUEST = 0x36BF,
+ CMSG_CHARACTER_CHECK_UPGRADE = 0x36C6,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x36C1,
+ CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C4,
+ CMSG_CHARACTER_UPGRADE_START = 0x36C5,
CMSG_CHAR_CUSTOMIZE = 0x3690,
- CMSG_CHAR_DELETE = 0x369D,
+ CMSG_CHAR_DELETE = 0x369E,
CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3696,
CMSG_CHAT_ADDON_MESSAGE = 0x37EE,
CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF,
@@ -220,24 +221,28 @@ enum OpcodeClient : uint16
CMSG_CHAT_REPORT_FILTERED = 0x37CC,
CMSG_CHAT_REPORT_IGNORED = 0x37CB,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
- CMSG_CHOICE_RESPONSE = 0x32A4,
+ CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x324F,
+ CMSG_CHOICE_RESPONSE = 0x32AF,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33DD,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x33B8,
CMSG_CLEAR_NEW_APPEARANCE = 0x312F,
- CMSG_CLEAR_RAID_MARKER = 0x31A5,
+ CMSG_CLEAR_RAID_MARKER = 0x31A7,
CMSG_CLEAR_TRADE_ITEM = 0x315E,
- CMSG_CLIENT_PORT_GRAVEYARD = 0x3531,
- CMSG_CLOSE_INTERACTION = 0x3493,
- CMSG_CLOSE_QUEST_CHOICE = 0x32A5,
- CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371C,
- CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371A,
- CMSG_CLUB_FINDER_POST = 0x3717,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371E,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3718,
- CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3719,
- CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371D,
- CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371F,
- CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371B,
- CMSG_CLUB_INVITE = 0x36F9,
- CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3632,
+ CMSG_CLIENT_PORT_GRAVEYARD = 0x3538,
+ CMSG_CLOSE_INTERACTION = 0x3499,
+ CMSG_CLOSE_QUEST_CHOICE = 0x32B0,
+ CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371F,
+ CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371D,
+ CMSG_CLUB_FINDER_POST = 0x371A,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x3721,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x371B,
+ CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x371C,
+ CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x3720,
+ CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x3722,
+ CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371E,
+ CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F9,
+ CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3633,
CMSG_COMMENTATOR_ENABLE = 0x35F0,
CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4,
CMSG_COMMENTATOR_EXIT_INSTANCE = 0x35F5,
@@ -245,116 +250,123 @@ enum OpcodeClient : uint16
CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3,
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2,
CMSG_COMMENTATOR_START_WARGAME = 0x35EF,
- CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E4,
- CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EE,
- CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E5,
+ CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E6,
+ CMSG_COMMERCE_TOKEN_GET_LOG = 0x36F0,
+ CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E7,
CMSG_COMPLAINT = 0x366C,
- CMSG_COMPLETE_CINEMATIC = 0x354F,
- CMSG_COMPLETE_MOVIE = 0x34E5,
- CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AA,
- CMSG_CONFIRM_RESPEC_WIPE = 0x320D,
+ CMSG_COMPLETE_CINEMATIC = 0x3556,
+ CMSG_COMPLETE_MOVIE = 0x34EB,
+ CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AC,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3211,
CMSG_CONNECT_TO_FAILED = 0x35D4,
- CMSG_CONSUMABLE_TOKEN_BUY = 0x36E9,
- CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36EA,
- CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E8,
- CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36EC,
- CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36ED,
- CMSG_CONTRIBUTION_CONTRIBUTE = 0x355F,
- CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3560,
- CMSG_CONVERSATION_LINE_STARTED = 0x3550,
+ CMSG_CONSUMABLE_TOKEN_BUY = 0x36EB,
+ CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36EC,
+ CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36EA,
+ CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36EE,
+ CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EF,
+ CMSG_CONTRIBUTION_CONTRIBUTE = 0x3568,
+ CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3569,
+ CMSG_CONVERSATION_LINE_STARTED = 0x3557,
CMSG_CONVERT_RAID = 0x364E,
- CMSG_CREATE_CHARACTER = 0x3643,
- CMSG_CREATE_SHIPMENT = 0x32F6,
+ CMSG_CREATE_CHARACTER = 0x3644,
+ CMSG_CREATE_SHIPMENT = 0x330C,
CMSG_DB_QUERY_BULK = 0x35E4,
- CMSG_DECLINE_GUILD_INVITES = 0x3526,
- CMSG_DECLINE_PETITION = 0x353E,
- CMSG_DELETE_EQUIPMENT_SET = 0x3513,
- CMSG_DEL_FRIEND = 0x36CF,
- CMSG_DEL_IGNORE = 0x36D3,
- CMSG_DEPOSIT_REAGENT_BANK = 0x3331,
- CMSG_DESTROY_ITEM = 0x3296,
- CMSG_DF_BOOT_PLAYER_VOTE = 0x3614,
- CMSG_DF_GET_JOIN_STATUS = 0x3612,
- CMSG_DF_GET_SYSTEM_INFO = 0x3611,
- CMSG_DF_JOIN = 0x3607,
- CMSG_DF_LEAVE = 0x3610,
+ CMSG_DECLINE_GUILD_INVITES = 0x352D,
+ CMSG_DECLINE_PETITION = 0x3545,
+ CMSG_DELETE_EQUIPMENT_SET = 0x3519,
+ CMSG_DEL_FRIEND = 0x36D1,
+ CMSG_DEL_IGNORE = 0x36D5,
+ CMSG_DEPOSIT_ANIMA = 0x33E0,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x3347,
+ CMSG_DESTROY_ITEM = 0x329F,
+ CMSG_DF_BOOT_PLAYER_VOTE = 0x3615,
+ CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3607,
+ CMSG_DF_GET_JOIN_STATUS = 0x3613,
+ CMSG_DF_GET_SYSTEM_INFO = 0x3612,
+ CMSG_DF_JOIN = 0x3608,
+ CMSG_DF_LEAVE = 0x3611,
CMSG_DF_PROPOSAL_RESPONSE = 0x3606,
- CMSG_DF_READY_CHECK_RESPONSE = 0x3617,
- CMSG_DF_SET_ROLES = 0x3613,
- CMSG_DF_TELEPORT = 0x3615,
- CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3D,
- CMSG_DISMISS_CRITTER = 0x3501,
- CMSG_DO_MASTER_LOOT_ROLL = 0x3212,
- CMSG_DO_READY_CHECK = 0x3633,
- CMSG_DUEL_RESPONSE = 0x34EA,
- CMSG_EJECT_PASSENGER = 0x323F,
- CMSG_EMOTE = 0x354B,
+ CMSG_DF_READY_CHECK_RESPONSE = 0x3618,
+ CMSG_DF_SET_ROLES = 0x3614,
+ CMSG_DF_TELEPORT = 0x3616,
+ CMSG_DISABLE_AE_LOOTING = 0x321D,
+ CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3E,
+ CMSG_DISMISS_CRITTER = 0x3507,
+ CMSG_DO_COUNTDOWN = 0x3719,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x3216,
+ CMSG_DO_READY_CHECK = 0x3634,
+ CMSG_DUEL_RESPONSE = 0x34F0,
+ CMSG_EJECT_PASSENGER = 0x3244,
+ CMSG_EMOTE = 0x3552,
CMSG_ENABLE_NAGLE = 0x376B,
- CMSG_ENABLE_TAXI_NODE = 0x34A9,
- CMSG_ENGINE_SURVEY = 0x36E2,
+ CMSG_ENABLE_TAXI_NODE = 0x34AF,
+ CMSG_ENGINE_SURVEY = 0x36E4,
CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767,
CMSG_ENUM_CHARACTERS = 0x35E8,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DC,
- CMSG_FAR_SIGHT = 0x34F0,
- CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B1,
- CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B0,
- CMSG_GAME_OBJ_REPORT_USE = 0x34F7,
- CMSG_GAME_OBJ_USE = 0x34F6,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32E1,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32CF,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3324,
- CMSG_GARRISON_COMPLETE_MISSION = 0x3317,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x32E4,
- CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32F2,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x334A,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3319,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x32CB,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32E6,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x330E,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32E2,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x32E3,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32CA,
- CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32EB,
- CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32F5,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32F4,
- CMSG_GARRISON_RESEARCH_TALENT = 0x32E7,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32CC,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32DF,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32D8,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32E5,
- CMSG_GARRISON_START_MISSION = 0x3316,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x32D0,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DE,
+ CMSG_FAR_SIGHT = 0x34F6,
+ CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B3,
+ CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B2,
+ CMSG_GAME_OBJ_REPORT_USE = 0x34FD,
+ CMSG_GAME_OBJ_USE = 0x34FC,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3307,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32ED,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32DA,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x333A,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x332D,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x32F0,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x32FF,
+ CMSG_GARRISON_GET_MAP_DATA = 0x3306,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x335E,
+ CMSG_GARRISON_LEARN_TALENT = 0x32FB,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x332F,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x32D6,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F2,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3324,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32EE,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x32EF,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32D5,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x330A,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x32F3,
+ CMSG_GARRISON_RESET_TALENT_TREE_SOCKETS = 0x32FD,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32D7,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32EB,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E3,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F1,
+ CMSG_GARRISON_SOCKET_TALENT = 0x32F9,
+ CMSG_GARRISON_START_MISSION = 0x332C,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x32DB,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
- CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B5,
- CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3683,
- CMSG_GET_GARRISON_INFO = 0x32C5,
- CMSG_GET_ITEM_PURCHASE_DATA = 0x3539,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x329A,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B6,
+ CMSG_GET_GARRISON_INFO = 0x32D0,
+ CMSG_GET_ITEM_PURCHASE_DATA = 0x3540,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x330B,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x32A3,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
- CMSG_GET_RAF_ACCOUNT_INFO = 0x3720,
- CMSG_GET_REMAINING_GAME_TIME = 0x36EB,
- CMSG_GET_TROPHY_LIST = 0x3307,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DE,
- CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36F0,
- CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36F1,
+ CMSG_GET_RAF_ACCOUNT_INFO = 0x3723,
+ CMSG_GET_REMAINING_GAME_TIME = 0x36ED,
+ CMSG_GET_TROPHY_LIST = 0x331D,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E0,
+ CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36F2,
+ CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36F3,
CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3694,
CMSG_GM_TICKET_GET_CASE_STATUS = 0x3693,
CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3692,
- CMSG_GOSSIP_SELECT_OPTION = 0x3494,
+ CMSG_GOSSIP_SELECT_OPTION = 0x349A,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308E,
CMSG_GUILD_ADD_RANK = 0x3065,
CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x3060,
CMSG_GUILD_AUTO_DECLINE_INVITATION = 0x3062,
- CMSG_GUILD_BANK_ACTIVATE = 0x34B6,
- CMSG_GUILD_BANK_BUY_TAB = 0x34C4,
- CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34C6,
+ CMSG_GUILD_BANK_ACTIVATE = 0x34BC,
+ CMSG_GUILD_BANK_BUY_TAB = 0x34CA,
+ CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34CC,
CMSG_GUILD_BANK_LOG_QUERY = 0x3083,
- CMSG_GUILD_BANK_QUERY_TAB = 0x34C3,
+ CMSG_GUILD_BANK_QUERY_TAB = 0x34C9,
CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x3084,
CMSG_GUILD_BANK_SET_TAB_TEXT = 0x3087,
CMSG_GUILD_BANK_TEXT_QUERY = 0x3088,
- CMSG_GUILD_BANK_UPDATE_TAB = 0x34C5,
- CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34C7,
+ CMSG_GUILD_BANK_UPDATE_TAB = 0x34CB,
+ CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34CD,
CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x307C,
CMSG_GUILD_CHANGE_NAME_REQUEST = 0x307F,
CMSG_GUILD_DECLINE_INVITATION = 0x3061,
@@ -378,125 +390,130 @@ enum OpcodeClient : uint16
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3089,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x3070,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3071,
- CMSG_GUILD_SET_GUILD_MASTER = 0x36C6,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x36C8,
CMSG_GUILD_SET_MEMBER_NOTE = 0x3073,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3068,
CMSG_GUILD_SHIFT_RANK = 0x3067,
CMSG_GUILD_UPDATE_INFO_TEXT = 0x3076,
CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3075,
- CMSG_HEARTH_AND_RESURRECT = 0x350F,
+ CMSG_HEARTH_AND_RESURRECT = 0x3515,
+ CMSG_HIDE_QUEST_CHOICE = 0x32B1,
CMSG_HOTFIX_REQUEST = 0x35E5,
CMSG_IGNORE_TRADE = 0x3159,
CMSG_INITIATE_ROLE_POLL = 0x35DA,
CMSG_INITIATE_TRADE = 0x3156,
- CMSG_INSPECT = 0x3533,
- CMSG_INSTANCE_LOCK_RESPONSE = 0x3514,
- CMSG_ISLAND_QUEUE = 0x3396,
- CMSG_ITEM_PURCHASE_REFUND = 0x353A,
- CMSG_ITEM_TEXT_QUERY = 0x3325,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DE,
+ CMSG_INSPECT = 0x353A,
+ CMSG_INSTANCE_LOCK_RESPONSE = 0x351A,
+ CMSG_ISLAND_QUEUE = 0x33B4,
+ CMSG_ITEM_PURCHASE_REFUND = 0x3541,
+ CMSG_ITEM_TEXT_QUERY = 0x333B,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x31E0,
CMSG_JOIN_RATED_BATTLEGROUND = 0x3178,
CMSG_KEEP_ALIVE = 0x367F,
- CMSG_KEYBOUND_OVERRIDE = 0x3225,
- CMSG_LEARN_PVP_TALENTS = 0x355E,
- CMSG_LEARN_TALENTS = 0x355C,
+ CMSG_KEYBOUND_OVERRIDE = 0x3229,
+ CMSG_LEARN_PVP_TALENTS = 0x3567,
+ CMSG_LEARN_TALENTS = 0x3565,
CMSG_LEAVE_GROUP = 0x3649,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DF,
- CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360B,
- CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360C,
- CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360D,
- CMSG_LFG_LIST_GET_STATUS = 0x3609,
- CMSG_LFG_LIST_INVITE_APPLICANT = 0x360E,
- CMSG_LFG_LIST_INVITE_RESPONSE = 0x360F,
- CMSG_LFG_LIST_JOIN = 0x3364,
- CMSG_LFG_LIST_LEAVE = 0x3608,
- CMSG_LFG_LIST_SEARCH = 0x360A,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3365,
- CMSG_LF_GUILD_ADD_RECRUIT = 0x361A,
- CMSG_LF_GUILD_BROWSE = 0x361C,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E1,
+ CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360C,
+ CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360D,
+ CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360E,
+ CMSG_LFG_LIST_GET_STATUS = 0x360A,
+ CMSG_LFG_LIST_INVITE_APPLICANT = 0x360F,
+ CMSG_LFG_LIST_INVITE_RESPONSE = 0x3610,
+ CMSG_LFG_LIST_JOIN = 0x3381,
+ CMSG_LFG_LIST_LEAVE = 0x3609,
+ CMSG_LFG_LIST_SEARCH = 0x360B,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x3382,
+ CMSG_LF_GUILD_ADD_RECRUIT = 0x361B,
+ CMSG_LF_GUILD_BROWSE = 0x361D,
CMSG_LF_GUILD_DECLINE_RECRUIT = 0x3079,
CMSG_LF_GUILD_GET_APPLICATIONS = 0x307A,
CMSG_LF_GUILD_GET_GUILD_POST = 0x3077,
CMSG_LF_GUILD_GET_RECRUITS = 0x3078,
CMSG_LF_GUILD_REMOVE_RECRUIT = 0x307B,
- CMSG_LF_GUILD_SET_GUILD_POST = 0x361B,
- CMSG_LIST_INVENTORY = 0x34A1,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B8,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B7,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B6,
+ CMSG_LF_GUILD_SET_GUILD_POST = 0x361C,
+ CMSG_LIST_INVENTORY = 0x34A7,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B9,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B8,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B7,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36BA,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
- CMSG_LOAD_SELECTED_TROPHY = 0x3308,
- CMSG_LOGOUT_CANCEL = 0x34E0,
- CMSG_LOGOUT_INSTANT = 0x34E1,
- CMSG_LOGOUT_REQUEST = 0x34DE,
+ CMSG_LOAD_SELECTED_TROPHY = 0x331E,
+ CMSG_LOGOUT_CANCEL = 0x34E6,
+ CMSG_LOGOUT_INSTANT = 0x34E7,
+ CMSG_LOGOUT_REQUEST = 0x34E4,
CMSG_LOG_DISCONNECT = 0x3769,
CMSG_LOG_STREAMING_ERROR = 0x376D,
- CMSG_LOOT_ITEM = 0x3210,
- CMSG_LOOT_MONEY = 0x320F,
- CMSG_LOOT_RELEASE = 0x3214,
- CMSG_LOOT_ROLL = 0x3215,
- CMSG_LOOT_UNIT = 0x320E,
- CMSG_LOW_LEVEL_RAID1 = 0x36A1,
- CMSG_LOW_LEVEL_RAID2 = 0x351B,
- CMSG_MAIL_CREATE_TEXT_ITEM = 0x3545,
- CMSG_MAIL_DELETE = 0x3227,
- CMSG_MAIL_GET_LIST = 0x3540,
- CMSG_MAIL_MARK_AS_READ = 0x3544,
+ CMSG_LOOT_ITEM = 0x3214,
+ CMSG_LOOT_MONEY = 0x3213,
+ CMSG_LOOT_RELEASE = 0x3218,
+ CMSG_LOOT_ROLL = 0x3219,
+ CMSG_LOOT_UNIT = 0x3212,
+ CMSG_LOW_LEVEL_RAID1 = 0x36A2,
+ CMSG_LOW_LEVEL_RAID2 = 0x3521,
+ CMSG_MAIL_CREATE_TEXT_ITEM = 0x354C,
+ CMSG_MAIL_DELETE = 0x322B,
+ CMSG_MAIL_GET_LIST = 0x3547,
+ CMSG_MAIL_MARK_AS_READ = 0x354B,
CMSG_MAIL_RETURN_TO_SENDER = 0x3655,
- CMSG_MAIL_TAKE_ITEM = 0x3542,
- CMSG_MAIL_TAKE_MONEY = 0x3541,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3229,
- CMSG_MASTER_LOOT_ITEM = 0x3211,
+ CMSG_MAIL_TAKE_ITEM = 0x3549,
+ CMSG_MAIL_TAKE_MONEY = 0x3548,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322D,
+ CMSG_MASTER_LOOT_ITEM = 0x3215,
CMSG_MINIMAP_PING = 0x364B,
CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A,
CMSG_MOUNT_CLEAR_FANFARE = 0x312D,
- CMSG_MOUNT_SET_FAVORITE = 0x3631,
- CMSG_MOUNT_SPECIAL_ANIM = 0x3285,
- CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A13,
- CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2D,
- CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A32,
- CMSG_MOVE_DISMISS_VEHICLE = 0x3A31,
+ CMSG_MOUNT_SET_FAVORITE = 0x3632,
+ CMSG_MOUNT_SPECIAL_ANIM = 0x328E,
+ 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_MOVE_DOUBLE_JUMP = 0x39EB,
- CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3A1C,
- CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3A22,
+ 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 = 0x3A17,
- CMSG_MOVE_FEATHER_FALL_ACK = 0x3A1A,
- CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2C,
- CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2B,
- CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A30,
- CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0C,
- CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A0A,
- CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A09,
- CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A20,
- CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0B,
- CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A21,
- CMSG_MOVE_FORCE_UNROOT_ACK = 0x3A0D,
- CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A1F,
- CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A33,
- CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A34,
- CMSG_MOVE_HEARTBEAT = 0x3A0E,
- CMSG_MOVE_HOVER_ACK = 0x3A11,
+ 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_HEARTBEAT = 0x3A0F,
+ CMSG_MOVE_HOVER_ACK = 0x3A12,
CMSG_MOVE_JUMP = 0x39EA,
- CMSG_MOVE_KNOCK_BACK_ACK = 0x3A10,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3A15,
- CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3A14,
- CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE = 0x3A40,
- CMSG_MOVE_SET_CAN_FLY_ACK = 0x3A25,
- CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3A23,
- CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3A37,
- CMSG_MOVE_SET_FACING = 0x3A07,
- CMSG_MOVE_SET_FLY = 0x3A26,
- CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A24,
- CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A3E,
- CMSG_MOVE_SET_PITCH = 0x3A08,
+ 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_SET_RUN_MODE = 0x39F2,
- CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A12,
+ CMSG_MOVE_SET_TURN_RATE_CHEAT = 0x3A05,
+ CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A13,
CMSG_MOVE_SET_WALK_MODE = 0x39F3,
- CMSG_MOVE_SPLINE_DONE = 0x3A16,
- CMSG_MOVE_START_ASCEND = 0x3A27,
+ CMSG_MOVE_SPLINE_DONE = 0x3A17,
+ CMSG_MOVE_START_ASCEND = 0x3A28,
CMSG_MOVE_START_BACKWARD = 0x39E5,
- CMSG_MOVE_START_DESCEND = 0x3A2E,
+ CMSG_MOVE_START_DESCEND = 0x3A2F,
CMSG_MOVE_START_FORWARD = 0x39E4,
CMSG_MOVE_START_PITCH_DOWN = 0x39F0,
CMSG_MOVE_START_PITCH_UP = 0x39EF,
@@ -506,284 +523,293 @@ enum OpcodeClient : uint16
CMSG_MOVE_START_TURN_LEFT = 0x39EC,
CMSG_MOVE_START_TURN_RIGHT = 0x39ED,
CMSG_MOVE_STOP = 0x39E6,
- CMSG_MOVE_STOP_ASCEND = 0x3A28,
+ CMSG_MOVE_STOP_ASCEND = 0x3A29,
CMSG_MOVE_STOP_PITCH = 0x39F1,
CMSG_MOVE_STOP_STRAFE = 0x39E9,
CMSG_MOVE_STOP_SWIM = 0x39FC,
CMSG_MOVE_STOP_TURN = 0x39EE,
CMSG_MOVE_TELEPORT_ACK = 0x39F9,
- CMSG_MOVE_TIME_SKIPPED = 0x3A19,
- CMSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x3A06,
- CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A18,
- CMSG_MOVE_WATER_WALK_ACK = 0x3A1B,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D4,
- CMSG_NEXT_CINEMATIC_CAMERA = 0x354E,
+ CMSG_MOVE_TIME_SKIPPED = 0x3A1A,
+ CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A19,
+ CMSG_MOVE_WATER_WALK_ACK = 0x3A1C,
+ CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308F,
+ CMSG_MYTHIC_PLUS_WEEKLY_REWARD_REQUEST = 0x3683,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D6,
+ CMSG_NEXT_CINEMATIC_CAMERA = 0x3555,
CMSG_OBJECT_UPDATE_FAILED = 0x3180,
CMSG_OBJECT_UPDATE_RESCUED = 0x3181,
- CMSG_OFFER_PETITION = 0x33B1,
- CMSG_OPENING_CINEMATIC = 0x354D,
- CMSG_OPEN_ITEM = 0x3326,
- CMSG_OPEN_MISSION_NPC = 0x32ED,
- CMSG_OPEN_SHIPMENT_NPC = 0x32F3,
- CMSG_OPEN_TRADESKILL_NPC = 0x32FE,
- CMSG_OPT_OUT_OF_LOOT = 0x34FE,
+ CMSG_OFFER_PETITION = 0x33DC,
+ CMSG_OPENING_CINEMATIC = 0x3554,
+ CMSG_OPEN_ITEM = 0x333C,
+ CMSG_OPEN_MISSION_NPC = 0x3301,
+ CMSG_OPEN_SHIPMENT_NPC = 0x3309,
+ CMSG_OPEN_TRADESKILL_NPC = 0x3314,
+ CMSG_OPT_OUT_OF_LOOT = 0x3504,
CMSG_PARTY_INVITE = 0x3602,
CMSG_PARTY_INVITE_RESPONSE = 0x3603,
CMSG_PARTY_UNINVITE = 0x3647,
- CMSG_PERFORM_ITEM_INTERACTION = 0x3231,
- CMSG_PETITION_BUY = 0x34C9,
- CMSG_PETITION_RENAME_GUILD = 0x36C7,
- CMSG_PETITION_SHOW_LIST = 0x34C8,
- CMSG_PETITION_SHOW_SIGNATURES = 0x34CA,
- CMSG_PET_ABANDON = 0x348D,
- CMSG_PET_ACTION = 0x348B,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E3,
- CMSG_PET_BATTLE_INPUT = 0x3640,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3226,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E2,
- CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x31DC,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DD,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x31DA,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E4,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DB,
- CMSG_PET_CANCEL_AURA = 0x348E,
- CMSG_PET_CAST_SPELL = 0x329E,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x3235,
+ CMSG_PETITION_BUY = 0x34CF,
+ CMSG_PETITION_RENAME_GUILD = 0x36C9,
+ 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_INPUT = 0x3641,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322A,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E4,
+ 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_CANCEL_AURA = 0x3494,
+ CMSG_PET_CAST_SPELL = 0x32A7,
CMSG_PET_RENAME = 0x3685,
- CMSG_PET_SET_ACTION = 0x348A,
- CMSG_PET_SPELL_AUTOCAST = 0x348F,
- CMSG_PET_STOP_ATTACK = 0x348C,
+ CMSG_PET_SET_ACTION = 0x3490,
+ CMSG_PET_SPELL_AUTOCAST = 0x3495,
+ CMSG_PET_STOP_ATTACK = 0x3492,
CMSG_PING = 0x3768,
CMSG_PLAYER_LOGIN = 0x35EA,
- CMSG_PUSH_QUEST_TO_PARTY = 0x349F,
+ CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
CMSG_PVP_LOG_DATA = 0x317B,
- CMSG_QUERY_BATTLE_PET_NAME = 0x327A,
- CMSG_QUERY_COMMUNITY_NAME = 0x368B,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x3282,
CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660,
CMSG_QUERY_CORPSE_TRANSPORT = 0x3661,
- CMSG_QUERY_COUNTDOWN_TIMER = 0x31A8,
- CMSG_QUERY_CREATURE = 0x3274,
- CMSG_QUERY_GAME_OBJECT = 0x3275,
- CMSG_QUERY_GARRISON_CREATURE_NAME = 0x327B,
+ CMSG_QUERY_COUNTDOWN_TIMER = 0x31AA,
+ CMSG_QUERY_CREATURE = 0x327C,
+ CMSG_QUERY_GAME_OBJECT = 0x327D,
+ CMSG_QUERY_GARRISON_PET_NAME = 0x3283,
CMSG_QUERY_GUILD_INFO = 0x368E,
- CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3508,
- CMSG_QUERY_NEXT_MAIL_TIME = 0x3543,
- CMSG_QUERY_NPC_TEXT = 0x3276,
- CMSG_QUERY_PAGE_TEXT = 0x3278,
- CMSG_QUERY_PETITION = 0x327C,
- CMSG_QUERY_PET_NAME = 0x3279,
+ CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E,
+ CMSG_QUERY_NEXT_MAIL_TIME = 0x354A,
+ CMSG_QUERY_NPC_TEXT = 0x327E,
+ CMSG_QUERY_PAGE_TEXT = 0x3280,
+ CMSG_QUERY_PETITION = 0x3284,
+ CMSG_QUERY_PET_NAME = 0x3281,
CMSG_QUERY_PLAYER_NAME = 0x368A,
+ CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x368C,
+ CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x368B,
CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175,
- CMSG_QUERY_QUEST_INFO = 0x3277,
+ CMSG_QUERY_QUEST_INFO = 0x327F,
CMSG_QUERY_REALM_NAME = 0x368D,
CMSG_QUERY_SCENARIO_POI = 0x3656,
- CMSG_QUERY_TIME = 0x34DD,
- CMSG_QUERY_TREASURE_PICKER = 0x334C,
- CMSG_QUERY_VOID_STORAGE = 0x31A1,
- CMSG_QUEST_CONFIRM_ACCEPT = 0x349E,
- CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3498,
- CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x349A,
- CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3499,
- CMSG_QUEST_GIVER_HELLO = 0x3496,
- CMSG_QUEST_GIVER_QUERY_QUEST = 0x3497,
- CMSG_QUEST_GIVER_REQUEST_REWARD = 0x349B,
- CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x349D,
- CMSG_QUEST_GIVER_STATUS_QUERY = 0x349C,
- CMSG_QUEST_LOG_REMOVE_QUEST = 0x3538,
- CMSG_QUEST_POI_QUERY = 0x36AF,
- CMSG_QUEST_PUSH_RESULT = 0x34A0,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33A5,
- CMSG_QUEST_SESSION_REQUEST_START = 0x33A4,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0x372B,
+ CMSG_QUERY_TIME = 0x34E3,
+ CMSG_QUERY_TREASURE_PICKER = 0x3361,
+ CMSG_QUERY_VOID_STORAGE = 0x31A3,
+ CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4,
+ CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E,
+ CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x34A0,
+ CMSG_QUEST_GIVER_CLOSE_QUEST = 0x355A,
+ CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x349F,
+ CMSG_QUEST_GIVER_HELLO = 0x349C,
+ CMSG_QUEST_GIVER_QUERY_QUEST = 0x349D,
+ CMSG_QUEST_GIVER_REQUEST_REWARD = 0x34A1,
+ CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A3,
+ CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A2,
+ CMSG_QUEST_LOG_REMOVE_QUEST = 0x353F,
+ CMSG_QUEST_POI_QUERY = 0x36B0,
+ CMSG_QUEST_PUSH_RESULT = 0x34A6,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33CD,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x33CC,
+ CMSG_QUEST_SESSION_REQUEST_STOP = 0x372E,
CMSG_QUEUED_MESSAGES_END = 0x376C,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3706,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3705,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3730,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3704,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3703,
- CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x350C,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0x3721,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3723,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3722,
- CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E3,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3708,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3707,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3733,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3706,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3705,
+ CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3512,
+ CMSG_RAF_CLAIM_NEXT_REWARD = 0x3724,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3726,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3725,
+ CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E5,
CMSG_RANDOM_ROLL = 0x3654,
- CMSG_READY_CHECK_RESPONSE = 0x3634,
- CMSG_READ_ITEM = 0x3327,
- CMSG_RECLAIM_CORPSE = 0x34E3,
- CMSG_REMOVE_NEW_ITEM = 0x334F,
- CMSG_REMOVE_RAF_RECRUIT = 0x3724,
+ CMSG_READY_CHECK_RESPONSE = 0x3635,
+ CMSG_READ_ITEM = 0x333D,
+ CMSG_RECLAIM_CORPSE = 0x34E9,
+ CMSG_REMOVE_NEW_ITEM = 0x3364,
+ CMSG_REMOVE_RAF_RECRUIT = 0x3727,
CMSG_REORDER_CHARACTERS = 0x35E9,
- CMSG_REPAIR_ITEM = 0x34F4,
- CMSG_REPLACE_TROPHY = 0x3309,
- CMSG_REPOP_REQUEST = 0x3530,
- CMSG_REPORT_CLIENT_VARIABLES = 0x3700,
- CMSG_REPORT_ENABLED_ADDONS = 0x36FF,
- CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3701,
- CMSG_REPORT_PVP_PLAYER_AFK = 0x34FC,
- CMSG_REPORT_SERVER_LAG = 0x339C,
- CMSG_REQUEST_ACCOUNT_DATA = 0x3697,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x334E,
+ CMSG_REPAIR_ITEM = 0x34FA,
+ CMSG_REPLACE_TROPHY = 0x331F,
+ CMSG_REPOP_REQUEST = 0x3537,
+ CMSG_REPORT_CLIENT_VARIABLES = 0x3702,
+ CMSG_REPORT_ENABLED_ADDONS = 0x3701,
+ CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3703,
+ CMSG_REPORT_PVP_PLAYER_AFK = 0x3502,
+ CMSG_REPORT_SERVER_LAG = 0x33C3,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x33C4,
+ CMSG_REQUEST_ACCOUNT_DATA = 0x3698,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x3363,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317D,
CMSG_REQUEST_CEMETERY_LIST = 0x3176,
- CMSG_REQUEST_CHALLENGE_MODE_AFFIXES = 0x3207,
CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368F,
- CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32B7,
- CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3534,
- CMSG_REQUEST_FORCED_REACTIONS = 0x3209,
- CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A7,
- CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A6,
- CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32A7,
+ CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C2,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x33B6,
+ CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353B,
+ CMSG_REQUEST_FORCED_REACTIONS = 0x320D,
+ CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A9,
+ CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A8,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C5,
+ CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32B2,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x320A,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320B,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653,
- CMSG_REQUEST_PET_INFO = 0x3490,
- CMSG_REQUEST_PLAYED_TIME = 0x327F,
- CMSG_REQUEST_PVP_BRAWL_INFO = 0x3195,
- CMSG_REQUEST_PVP_REWARDS = 0x3194,
- CMSG_REQUEST_QUEST_LINES_FOR_MAP = 0x3397,
- CMSG_REQUEST_RAID_INFO = 0x36C8,
- CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x35E3,
+ CMSG_REQUEST_PET_INFO = 0x3496,
+ CMSG_REQUEST_PLAYED_TIME = 0x3287,
+ CMSG_REQUEST_PVP_REWARDS = 0x3196,
+ CMSG_REQUEST_RAID_INFO = 0x36CA,
+ CMSG_REQUEST_RATED_PVP_INFO = 0x35E3,
CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309B,
CMSG_REQUEST_RESEARCH_HISTORY = 0x3167,
- CMSG_REQUEST_STABLED_PETS = 0x3491,
- CMSG_REQUEST_VEHICLE_EXIT = 0x323A,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x323C,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x323B,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x323D,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x334D,
- CMSG_RESET_CHALLENGE_MODE = 0x3205,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3206,
+ CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3197,
+ CMSG_REQUEST_STABLED_PETS = 0x3497,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x323F,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3241,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3240,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3242,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x33B9,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3362,
+ CMSG_RESET_CHALLENGE_MODE = 0x3208,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3209,
CMSG_RESET_INSTANCES = 0x3668,
CMSG_RESURRECT_RESPONSE = 0x3684,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x330B,
- CMSG_RIDE_VEHICLE_INTERACT = 0x323E,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3321,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x3243,
CMSG_SAVE_CUF_PROFILES = 0x318B,
- CMSG_SAVE_EQUIPMENT_SET = 0x3512,
- CMSG_SAVE_GUILD_EMBLEM = 0x32AB,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x3222,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x3221,
- CMSG_SCENE_TRIGGER_EVENT = 0x3223,
- CMSG_SELF_RES = 0x353B,
- CMSG_SELL_ITEM = 0x34A2,
- CMSG_SEND_CONTACT_LIST = 0x36CD,
+ CMSG_SAVE_EQUIPMENT_SET = 0x3518,
+ CMSG_SAVE_GUILD_EMBLEM = 0x32B6,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x3226,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x3225,
+ CMSG_SCENE_TRIGGER_EVENT = 0x3227,
+ CMSG_SELF_RES = 0x3542,
+ CMSG_SELL_ITEM = 0x34A8,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36FB,
+ CMSG_SEND_CONTACT_LIST = 0x36CF,
CMSG_SEND_MAIL = 0x35FA,
- CMSG_SEND_TEXT_EMOTE = 0x3488,
- CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369C,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3228,
- CMSG_SET_ACTION_BAR_TOGGLES = 0x353C,
- CMSG_SET_ACTION_BUTTON = 0x3635,
- CMSG_SET_ACTIVE_MOVER = 0x3A38,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32B8,
+ CMSG_SEND_TEXT_EMOTE = 0x348E,
+ CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369D,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322C,
+ CMSG_SET_ACTION_BAR_TOGGLES = 0x3543,
+ CMSG_SET_ACTION_BUTTON = 0x3636,
+ CMSG_SET_ACTIVE_MOVER = 0x3A39,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C3,
CMSG_SET_ASSISTANT_LEADER = 0x364F,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x332A,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x332B,
- CMSG_SET_CONTACT_NOTES = 0x36D0,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3340,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3341,
+ CMSG_SET_CONTACT_NOTES = 0x36D2,
CMSG_SET_CURRENCY_FLAGS = 0x3169,
- CMSG_SET_DIFFICULTY_ID = 0x3224,
+ CMSG_SET_DIFFICULTY_ID = 0x3228,
CMSG_SET_DUNGEON_DIFFICULTY = 0x3682,
- CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3616,
- CMSG_SET_FACTION_AT_WAR = 0x34E6,
- CMSG_SET_FACTION_INACTIVE = 0x34E8,
- CMSG_SET_FACTION_NOT_AT_WAR = 0x34E7,
- CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B8,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x332D,
- CMSG_SET_LFG_BONUS_FACTION_ID = 0x32A6,
+ CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3617,
+ 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 = 0x3343,
CMSG_SET_LOOT_METHOD = 0x3648,
- CMSG_SET_LOOT_SPECIALIZATION = 0x3549,
+ CMSG_SET_LOOT_SPECIALIZATION = 0x3550,
CMSG_SET_PARTY_ASSIGNMENT = 0x3651,
CMSG_SET_PARTY_LEADER = 0x364A,
CMSG_SET_PET_SLOT = 0x3168,
CMSG_SET_PLAYER_DECLINED_NAMES = 0x3689,
CMSG_SET_PREFERRED_CEMETERY = 0x3177,
- CMSG_SET_PVP = 0x32AF,
- CMSG_SET_RAID_DIFFICULTY = 0x36DA,
+ CMSG_SET_PVP = 0x32BA,
+ CMSG_SET_RAID_DIFFICULTY = 0x36DC,
CMSG_SET_ROLE = 0x35D9,
CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3687,
- CMSG_SET_SELECTION = 0x3532,
- CMSG_SET_SHEATHED = 0x3489,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x332C,
- CMSG_SET_TAXI_BENCHMARK_MODE = 0x34FB,
- CMSG_SET_TITLE = 0x3283,
+ CMSG_SET_SELECTION = 0x3539,
+ CMSG_SET_SHEATHED = 0x348F,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3342,
+ CMSG_SET_TAXI_BENCHMARK_MODE = 0x3501,
+ CMSG_SET_TITLE = 0x328C,
CMSG_SET_TRADE_CURRENCY = 0x3160,
CMSG_SET_TRADE_GOLD = 0x315F,
CMSG_SET_TRADE_ITEM = 0x315D,
- CMSG_SET_USING_PARTY_GARRISON = 0x32EF,
- CMSG_SET_WAR_MODE = 0x32B0,
- CMSG_SET_WATCHED_FACTION = 0x34E9,
- CMSG_SHOW_TRADE_SKILL = 0x36C0,
- CMSG_SIGN_PETITION = 0x353D,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3303,
+ CMSG_SET_WAR_MODE = 0x32BB,
+ CMSG_SET_WATCHED_FACTION = 0x34EF,
+ CMSG_SHOW_TRADE_SKILL = 0x36C2,
+ CMSG_SIGN_PETITION = 0x3544,
CMSG_SILENCE_PARTY_TALKER = 0x3652,
- CMSG_SOCKET_GEMS = 0x34F3,
- CMSG_SORT_BAGS = 0x332E,
- CMSG_SORT_BANK_BAGS = 0x332F,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x3330,
- CMSG_SPELL_CLICK = 0x3495,
- CMSG_SPIRIT_HEALER_ACTIVATE = 0x34AF,
+ CMSG_SOCKET_GEMS = 0x34F9,
+ CMSG_SORT_BAGS = 0x3344,
+ CMSG_SORT_BANK_BAGS = 0x3345,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x3346,
+ CMSG_SPELL_CLICK = 0x349B,
+ CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B5,
CMSG_SPLIT_ITEM = 0x399E,
CMSG_STAND_STATE_CHANGE = 0x3189,
- CMSG_START_CHALLENGE_MODE = 0x3554,
+ CMSG_START_CHALLENGE_MODE = 0x355B,
CMSG_START_SPECTATOR_WAR_GAME = 0x35DF,
CMSG_START_WAR_GAME = 0x35DE,
+ CMSG_SUBMIT_USER_FEEDBACK = 0x3697,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E5,
CMSG_SUMMON_RESPONSE = 0x366A,
- CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x3645,
- CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644,
- CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3646,
+ CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646,
CMSG_SURRENDER_ARENA = 0x3174,
CMSG_SUSPEND_COMMS_ACK = 0x3764,
CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
CMSG_SWAP_SUB_GROUPS = 0x364D,
- CMSG_SWAP_VOID_ITEM = 0x31A3,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x32AC,
- CMSG_TALK_TO_GOSSIP = 0x3492,
- CMSG_TAXI_NODE_STATUS_QUERY = 0x34A8,
- CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34AA,
- CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34AC,
- CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3C,
- CMSG_TIME_SYNC_RESPONSE = 0x3A39,
- CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3B,
- CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3A,
+ CMSG_SWAP_VOID_ITEM = 0x31A5,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x32B7,
+ CMSG_TALK_TO_GOSSIP = 0x3498,
+ CMSG_TAXI_NODE_STATUS_QUERY = 0x34AE,
+ CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B0,
+ CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34B2,
+ CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3D,
+ CMSG_TIME_SYNC_RESPONSE = 0x3A3A,
+ CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3C,
+ CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3B,
CMSG_TOGGLE_DIFFICULTY = 0x3657,
- CMSG_TOGGLE_PVP = 0x32AE,
- CMSG_TOTEM_DESTROYED = 0x3500,
+ CMSG_TOGGLE_PVP = 0x32B9,
+ CMSG_TOTEM_DESTROYED = 0x3506,
CMSG_TOY_CLEAR_FANFARE = 0x312E,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x334B,
- CMSG_TRAINER_BUY_SPELL = 0x34AE,
- CMSG_TRAINER_LIST = 0x34AD,
- CMSG_TRANSMOGRIFY_ITEMS = 0x3196,
- CMSG_TURN_IN_PETITION = 0x353F,
- CMSG_TUTORIAL = 0x36DB,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x3360,
+ CMSG_TRAINER_BUY_SPELL = 0x34B4,
+ CMSG_TRAINER_LIST = 0x34B3,
+ CMSG_TRANSMOGRIFY_ITEMS = 0x3198,
+ CMSG_TURN_IN_PETITION = 0x3546,
+ CMSG_TUTORIAL = 0x36DD,
CMSG_TWITTER_CHECK_STATUS = 0x312A,
CMSG_TWITTER_CONNECT = 0x3127,
CMSG_TWITTER_DISCONNECT = 0x312B,
- CMSG_TWITTER_POST = 0x3332,
+ CMSG_TWITTER_POST = 0x3348,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B5,
CMSG_UNACCEPT_TRADE = 0x315B,
- CMSG_UNDELETE_CHARACTER = 0x36DD,
- CMSG_UNLEARN_SKILL = 0x34ED,
- CMSG_UNLEARN_SPECIALIZATION = 0x31A4,
- CMSG_UNLOCK_VOID_STORAGE = 0x31A0,
- CMSG_UPDATE_ACCOUNT_DATA = 0x3698,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32A1,
+ CMSG_UNDELETE_CHARACTER = 0x36DF,
+ CMSG_UNLEARN_SKILL = 0x34F3,
+ CMSG_UNLEARN_SPECIALIZATION = 0x31A6,
+ CMSG_UNLOCK_VOID_STORAGE = 0x31A2,
+ CMSG_UPDATE_ACCOUNT_DATA = 0x3699,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AA,
CMSG_UPDATE_CLIENT_SETTINGS = 0x3664,
- CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A3F,
+ CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A40,
CMSG_UPDATE_RAID_TARGET = 0x3650,
- CMSG_UPDATE_SPELL_VISUAL = 0x32A0,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F3,
- CMSG_UPGRADE_GARRISON = 0x32C0,
+ CMSG_UPDATE_SPELL_VISUAL = 0x32A9,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F5,
+ CMSG_UPGRADE_GARRISON = 0x32CB,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E4,
CMSG_USED_FOLLOW = 0x3186,
- CMSG_USE_CRITTER_ITEM = 0x3244,
+ CMSG_USE_CRITTER_ITEM = 0x3249,
CMSG_USE_EQUIPMENT_SET = 0x3995,
- CMSG_USE_ITEM = 0x329B,
- CMSG_USE_TOY = 0x329D,
- CMSG_VAS_CHECK_TRANSFER_OK = 0x370B,
- CMSG_VAS_GET_QUEUE_MINUTES = 0x370A,
- CMSG_VAS_GET_SERVICE_STATUS = 0x3709,
+ CMSG_USE_ITEM = 0x32A4,
+ CMSG_USE_TOY = 0x32A6,
+ CMSG_VAS_CHECK_TRANSFER_OK = 0x370D,
+ CMSG_VAS_GET_QUEUE_MINUTES = 0x370C,
+ CMSG_VAS_GET_SERVICE_STATUS = 0x370B,
CMSG_VIOLENCE_LEVEL = 0x3184,
- CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370F,
- CMSG_VOICE_CHAT_LOGIN = 0x370E,
- CMSG_VOID_STORAGE_TRANSFER = 0x31A2,
- CMSG_WARDEN_DATA = 0x35EC,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3711,
+ CMSG_VOICE_CHAT_LOGIN = 0x3710,
+ CMSG_VOID_STORAGE_TRANSFER = 0x31A4,
+ CMSG_WARDEN3_DATA = 0x35EC,
CMSG_WHO = 0x3681,
CMSG_WHO_IS = 0x3680,
CMSG_WORLD_PORT_RESPONSE = 0x35F9,
@@ -796,203 +822,205 @@ enum OpcodeClient : uint16
enum OpcodeServer : uint16
{
- SMSG_ABORT_NEW_WORLD = 0x25AF,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x28C5,
- SMSG_ACCOUNT_DATA_TIMES = 0x274F,
- SMSG_ACCOUNT_MOUNT_UPDATE = 0x25C4,
- SMSG_ACCOUNT_TOY_UPDATE = 0x25C5,
- SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25C8,
- SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25C7,
- SMSG_ACHIEVEMENT_DELETED = 0x2727,
- SMSG_ACHIEVEMENT_EARNED = 0x2663,
- SMSG_ACTIVATE_ESSENCE_FAILED = 0x2872,
- SMSG_ACTIVATE_TAXI_REPLY = 0x26AC,
- SMSG_ACTIVE_GLYPHS = 0x2C53,
- SMSG_ADDON_LIST_REQUEST = 0x2662,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x265D,
- SMSG_ADD_ITEM_PASSIVE = 0x25C0,
- SMSG_ADD_LOSS_OF_CONTROL = 0x269C,
- SMSG_ADD_RUNE_POWER = 0x26EB,
- SMSG_ADJUST_SPLINE_DURATION = 0x25E9,
- SMSG_ADVENTURE_MAP_OPEN_NPC = 0x2838,
- SMSG_AE_LOOT_TARGETS = 0x262F,
- SMSG_AE_LOOT_TARGET_ACK = 0x2630,
- SMSG_AI_REACTION = 0x26E8,
- SMSG_ALLIED_RACE_DETAILS = 0x283E,
+ SMSG_ABORT_NEW_WORLD = 0x259F,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x287D,
+ SMSG_ACCOUNT_DATA_TIMES = 0x270F,
+ SMSG_ACCOUNT_MOUNT_UPDATE = 0x25B1,
+ SMSG_ACCOUNT_TOY_UPDATE = 0x25B2,
+ SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B5,
+ SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B4,
+ SMSG_ACHIEVEMENT_DELETED = 0x26EC,
+ SMSG_ACHIEVEMENT_EARNED = 0x2640,
+ SMSG_ACTIVATE_ESSENCE_FAILED = 0x3016,
+ SMSG_ACTIVATE_SOULBIND_FAILED = 0x3018,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x267B,
+ SMSG_ACTIVE_GLYPHS = 0x2C54,
+ SMSG_ADDON_LIST_REQUEST = 0x263F,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263A,
+ SMSG_ADD_ITEM_PASSIVE = 0x25AD,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x266D,
+ SMSG_ADD_RUNE_POWER = 0x26B5,
+ SMSG_ADJUST_SPLINE_DURATION = 0x25CF,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x288D,
+ SMSG_ADVENTURE_MAP_OPEN_NPC = 0x27F7,
+ SMSG_AE_LOOT_TARGETS = 0x2615,
+ SMSG_AE_LOOT_TARGET_ACK = 0x2616,
+ SMSG_AI_REACTION = 0x26B2,
+ SMSG_ALLIED_RACE_DETAILS = 0x27FD,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2571,
SMSG_ALL_ACHIEVEMENT_DATA = 0x2570,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x28B5,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x286A,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588,
- SMSG_AREA_POI_UPDATE_RESPONSE = 0x284F,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x2786,
- SMSG_AREA_TRIGGER_DENIED = 0x26A3,
- SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2642,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x275B,
- SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x2641,
- SMSG_AREA_TRIGGER_RE_PATH = 0x263F,
- SMSG_AREA_TRIGGER_RE_SHAPE = 0x2644,
- SMSG_AREA_TRIGGER_SET_VISUAL_ANIM = 0x2640,
- SMSG_AREA_TRIGGER_UNATTACH = 0x2643,
- SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2652,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2668,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x27EC,
- SMSG_ARTIFACT_FORGE_ERROR = 0x27EA,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x27EB,
- SMSG_ARTIFACT_XP_GAIN = 0x2830,
- SMSG_ATTACKER_STATE_UPDATE = 0x27D5,
- SMSG_ATTACK_START = 0x2670,
- SMSG_ATTACK_STOP = 0x2671,
- SMSG_ATTACK_SWING_ERROR = 0x2739,
- SMSG_ATTACK_SWING_LANDED_LOG = 0x273A,
- SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x281E,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x281D,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x281C,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2731,
- SMSG_AUCTION_COMMAND_RESULT = 0x272E,
- SMSG_AUCTION_FAVORITE_LIST = 0x28CC,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x28C3,
- SMSG_AUCTION_HELLO_RESPONSE = 0x272C,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x28C2,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x28BF,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x28C0,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x28C1,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2730,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2732,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x272D,
- SMSG_AUCTION_WON_NOTIFICATION = 0x272F,
+ SMSG_AREA_POI_UPDATE_RESPONSE = 0x3011,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x2744,
+ SMSG_AREA_TRIGGER_DENIED = 0x2917,
+ SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2914,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x271B,
+ SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x2913,
+ SMSG_AREA_TRIGGER_RE_PATH = 0x2911,
+ SMSG_AREA_TRIGGER_RE_SHAPE = 0x2916,
+ SMSG_AREA_TRIGGER_SET_VISUAL_ANIM = 0x2912,
+ SMSG_AREA_TRIGGER_UNATTACH = 0x2915,
+ SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262F,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2645,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x27A6,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x27A4,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x27A5,
+ SMSG_ARTIFACT_XP_GAIN = 0x27EF,
+ 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 = 0x27D8,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27D7,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27D6,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26F6,
+ SMSG_AUCTION_COMMAND_RESULT = 0x26F3,
+ SMSG_AUCTION_FAVORITE_LIST = 0x2884,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x287B,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x26F1,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x287A,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2877,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2878,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2879,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26F5,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26F7,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x26F2,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x26F4,
SMSG_AURA_POINTS_DEPLETED = 0x2C23,
SMSG_AURA_UPDATE = 0x2C22,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_FAILED = 0x256C,
SMSG_AUTH_RESPONSE = 0x256D,
- SMSG_AVAILABLE_HOTFIXES = 0x25A3,
- SMSG_AZERITE_RESPEC_NPC = 0x283B,
- SMSG_BAG_CLEANUP_FINISHED = 0x2826,
- SMSG_BARBER_SHOP_RESULT = 0x26F1,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x28A4,
- SMSG_BATTLEFIELD_LIST = 0x2596,
- SMSG_BATTLEFIELD_PORT_DENIED = 0x259C,
- SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2592,
- SMSG_BATTLEFIELD_STATUS_FAILED = 0x2595,
- SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION = 0x2591,
- SMSG_BATTLEFIELD_STATUS_NONE = 0x2594,
- SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2593,
- SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x25A7,
- SMSG_BATTLEGROUND_INFO_THROTTLED = 0x259D,
- SMSG_BATTLEGROUND_INIT = 0x27A4,
- SMSG_BATTLEGROUND_PLAYER_JOINED = 0x259A,
- SMSG_BATTLEGROUND_PLAYER_LEFT = 0x259B,
- SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2597,
- SMSG_BATTLEGROUND_POINTS = 0x27A3,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x27D4,
- SMSG_BATTLENET_CHALLENGE_START = 0x27D3,
- SMSG_BATTLENET_NOTIFICATION = 0x284A,
- SMSG_BATTLENET_RESPONSE = 0x2849,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x284B,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x27CE,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27C2,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x27C3,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27CD,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27C0,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27BF,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x27BD,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27BE,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27BC,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27BA,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27BB,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27C1,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27CC,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x2869,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27CA,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27C9,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x285D,
+ SMSG_AVAILABLE_HOTFIXES = 0x2595,
+ SMSG_AZERITE_RESPEC_NPC = 0x27FA,
+ SMSG_BAG_CLEANUP_FINISHED = 0x2DA7,
+ SMSG_BARBER_SHOP_RESULT = 0x26BB,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x285B,
+ SMSG_BATTLEFIELD_LIST = 0x2927,
+ SMSG_BATTLEFIELD_PORT_DENIED = 0x292D,
+ SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923,
+ SMSG_BATTLEFIELD_STATUS_FAILED = 0x2926,
+ 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_PLAYER_JOINED = 0x292B,
+ SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C,
+ SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928,
+ SMSG_BATTLEGROUND_POINTS = 0x2948,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x278D,
+ SMSG_BATTLENET_CHALLENGE_START = 0x278C,
+ SMSG_BATTLENET_NOTIFICATION = 0x2808,
+ SMSG_BATTLENET_RESPONSE = 0x2807,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2809,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x2787,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x277C,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x277D,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2786,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x277A,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2779,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2777,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2778,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2776,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2774,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2775,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x277B,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2785,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x2825,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2783,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2782,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2819,
SMSG_BATTLE_PAY_VAS_GUILD_FOLLOW_INFO = 0x29E7,
SMSG_BATTLE_PAY_VAS_GUILD_MASTER_LIST = 0x29E6,
- SMSG_BATTLE_PETS_HEALED = 0x260B,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x26A6,
- SMSG_BATTLE_PET_DELETED = 0x2608,
- SMSG_BATTLE_PET_ERROR = 0x2658,
- SMSG_BATTLE_PET_JOURNAL = 0x2607,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x2605,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x2606,
- SMSG_BATTLE_PET_LICENSE_CHANGED = 0x260C,
- SMSG_BATTLE_PET_RESTORED = 0x260A,
- SMSG_BATTLE_PET_REVOKED = 0x2609,
- SMSG_BATTLE_PET_SET_MAX_PETS = 0x2603,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x2602,
- SMSG_BATTLE_PET_UPDATES = 0x2601,
- SMSG_BINDER_CONFIRM = 0x273F,
+ SMSG_BATTLE_PETS_HEALED = 0x25F0,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2676,
+ SMSG_BATTLE_PET_DELETED = 0x25ED,
+ SMSG_BATTLE_PET_ERROR = 0x2635,
+ SMSG_BATTLE_PET_JOURNAL = 0x25EC,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EA,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25EB,
+ SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25F1,
+ SMSG_BATTLE_PET_RESTORED = 0x25EF,
+ SMSG_BATTLE_PET_REVOKED = 0x25EE,
+ SMSG_BATTLE_PET_SET_MAX_PETS = 0x25E8,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E7,
+ SMSG_BATTLE_PET_UPDATES = 0x25E6,
+ SMSG_BINDER_CONFIRM = 0x2700,
SMSG_BIND_POINT_UPDATE = 0x257D,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2648,
- SMSG_BLACK_MARKET_OPEN_RESULT = 0x2646,
- SMSG_BLACK_MARKET_OUTBID = 0x2649,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2647,
- SMSG_BLACK_MARKET_WON = 0x264A,
- SMSG_BONUS_ROLL_EMPTY = 0x2665,
- SMSG_BOSS_KILL = 0x27C8,
- SMSG_BREAK_TARGET = 0x266F,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2625,
+ SMSG_BLACK_MARKET_OPEN_RESULT = 0x2623,
+ SMSG_BLACK_MARKET_OUTBID = 0x2626,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2624,
+ SMSG_BLACK_MARKET_WON = 0x2627,
+ SMSG_BONUS_ROLL_EMPTY = 0x2642,
+ SMSG_BOSS_KILL = 0x294B,
+ SMSG_BREAK_TARGET = 0x2936,
SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
- SMSG_BROADCAST_SUMMON_CAST = 0x28A8,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x28A9,
- SMSG_BUY_FAILED = 0x26FA,
- SMSG_BUY_SUCCEEDED = 0x26F9,
- SMSG_CACHE_INFO = 0x2749,
- SMSG_CACHE_VERSION = 0x2748,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26CC,
- SMSG_CALENDAR_COMMAND_RESULT = 0x26CD,
- SMSG_CALENDAR_COMMUNITY_INVITE = 0x26BC,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x26C4,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x26C5,
- SMSG_CALENDAR_INVITE_ADDED = 0x26BD,
- SMSG_CALENDAR_INVITE_ALERT = 0x26C1,
- SMSG_CALENDAR_INVITE_NOTES = 0x26C6,
- SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x26C7,
- SMSG_CALENDAR_INVITE_REMOVED = 0x26BE,
- SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x26C3,
- SMSG_CALENDAR_INVITE_STATUS = 0x26BF,
- SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x26C2,
- SMSG_CALENDAR_MODERATOR_STATUS = 0x26C0,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x26C8,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x26C9,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x26CA,
- SMSG_CALENDAR_SEND_CALENDAR = 0x26BA,
- SMSG_CALENDAR_SEND_EVENT = 0x26BB,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x26CB,
- SMSG_CAMERA_EFFECT = 0x276B,
- SMSG_CANCEL_AUTO_REPEAT = 0x271B,
- SMSG_CANCEL_COMBAT = 0x2737,
+ SMSG_BROADCAST_SUMMON_CAST = 0x285D,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x285E,
+ SMSG_BUY_FAILED = 0x26C4,
+ SMSG_BUY_SUCCEEDED = 0x26C3,
+ SMSG_CACHE_INFO = 0x2709,
+ SMSG_CACHE_VERSION = 0x2708,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269B,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x269C,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x268B,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2693,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2694,
+ SMSG_CALENDAR_INVITE_ADDED = 0x268C,
+ SMSG_CALENDAR_INVITE_ALERT = 0x2690,
+ SMSG_CALENDAR_INVITE_NOTES = 0x2695,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2696,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x268D,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2692,
+ SMSG_CALENDAR_INVITE_STATUS = 0x268E,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2691,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x268F,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2697,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2698,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2699,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x2689,
+ SMSG_CALENDAR_SEND_EVENT = 0x268A,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x269A,
+ SMSG_CAMERA_EFFECT = 0x272A,
+ SMSG_CANCEL_AUTO_REPEAT = 0x26E2,
+ SMSG_CANCEL_COMBAT = 0x2945,
SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46,
- SMSG_CANCEL_SCENE = 0x2657,
+ SMSG_CANCEL_SCENE = 0x2634,
SMSG_CANCEL_SPELL_VISUAL = 0x2C44,
SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48,
- SMSG_CAN_DUEL_RESULT = 0x267A,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x285C,
- SMSG_CAPTURE_POINT_REMOVED = 0x2599,
- SMSG_CAST_FAILED = 0x2C56,
+ SMSG_CAN_DUEL_RESULT = 0x2941,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2818,
+ SMSG_CAPTURE_POINT_REMOVED = 0x292A,
+ SMSG_CAST_FAILED = 0x2C57,
SMSG_CATEGORY_COOLDOWN = 0x2C16,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x2622,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2626,
- SMSG_CHALLENGE_MODE_RESET = 0x2621,
- SMSG_CHALLENGE_MODE_START = 0x261F,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2620,
- SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x273B,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x284C,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x2607,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260C,
+ SMSG_CHALLENGE_MODE_RESET = 0x2606,
+ SMSG_CHALLENGE_MODE_START = 0x2604,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2605,
+ SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3005,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x280A,
SMSG_CHANNEL_LIST = 0x2BC3,
SMSG_CHANNEL_NOTIFY = 0x2BC0,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x2806,
- SMSG_CHARACTER_LOGIN_FAILED = 0x274A,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27D2,
- SMSG_CHARACTER_RENAME_RESULT = 0x27AC,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x2805,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x2804,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x2807,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x2803,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x2721,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x2722,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27F0,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27C0,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x270A,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x278B,
+ SMSG_CHARACTER_RENAME_RESULT = 0x2766,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x27BF,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27BE,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27C1,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27BD,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26E6,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26E7,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27AA,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_DOWN = 0x2BBD,
@@ -1002,205 +1030,235 @@ enum OpcodeServer : uint16
SMSG_CHAT_PLAYER_AMBIGUOUS = 0x2BB0,
SMSG_CHAT_PLAYER_NOTFOUND = 0x2BB7,
SMSG_CHAT_RECONNECT = 0x2BBF,
+ SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x2BC5,
SMSG_CHAT_RESTRICTED = 0x2BB3,
SMSG_CHAT_SERVER_MESSAGE = 0x2BC4,
SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x2C12,
- SMSG_CHECK_WARGAME_ENTRY = 0x25A0,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x28B9,
+ SMSG_CHECK_ABANDON_NPE = 0x3019,
+ SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584,
+ SMSG_CHECK_WARGAME_ENTRY = 0x2592,
+ SMSG_CHROMIE_TIME_OPEN_NPC = 0x27FF,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2887,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x286E,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27,
- SMSG_CLEAR_BOSS_EMOTES = 0x25CE,
- SMSG_CLEAR_COOLDOWN = 0x26ED,
+ SMSG_CLEAR_BOSS_EMOTES = 0x25BC,
+ SMSG_CLEAR_COOLDOWN = 0x26B7,
SMSG_CLEAR_COOLDOWNS = 0x2C26,
- SMSG_CLEAR_LOSS_OF_CONTROL = 0x269E,
- SMSG_CLEAR_RESURRECT = 0x2580,
+ SMSG_CLEAR_LOSS_OF_CONTROL = 0x266F,
+ SMSG_CLEAR_RESURRECT = 0x257F,
SMSG_CLEAR_SPELL_CHARGES = 0x2C28,
- SMSG_CLEAR_TARGET = 0x26E4,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x27E9,
- SMSG_CLOSE_HEART_FORGE = 0x2874,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x28B1,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x28B4,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x28B2,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x28AF,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x28B3,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x28B0,
- SMSG_COIN_REMOVED = 0x262E,
- SMSG_COMBAT_EVENT_FAILED = 0x2672,
- SMSG_COMMENTATOR_MAP_INFO = 0x274C,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x274D,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x274B,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x2819,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x2825,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x281B,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x281A,
- SMSG_COMPLAINT_RESULT = 0x26DB,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27E4,
- SMSG_CONFIRM_PARTY_INVITE = 0x285B,
+ SMSG_CLEAR_TARGET = 0x2942,
+ SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA0,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x27A3,
+ SMSG_CLOSE_HEART_FORGE = 0x282B,
+ SMSG_CLOSE_ITEM_FORGE = 0x27A1,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2866,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2869,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2867,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2864,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2868,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2865,
+ SMSG_COIN_REMOVED = 0x2614,
+ SMSG_COMBAT_EVENT_FAILED = 0x2939,
+ SMSG_COMMENTATOR_MAP_INFO = 0x270C,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x270D,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x270B,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27D3,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27DF,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27D5,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x27D4,
+ SMSG_COMPLAINT_RESULT = 0x26A9,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x279C,
+ SMSG_CONFIRM_PARTY_INVITE = 0x2817,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27CF,
- SMSG_CONSOLE_WRITE = 0x2655,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x2821,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x2820,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x281F,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x2823,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x2824,
- SMSG_CONTACT_LIST = 0x27D0,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2862,
- SMSG_CONTROL_UPDATE = 0x2667,
- SMSG_COOLDOWN_CHEAT = 0x277F,
- SMSG_COOLDOWN_EVENT = 0x26EC,
- SMSG_CORPSE_LOCATION = 0x266E,
- SMSG_CORPSE_RECLAIM_DELAY = 0x2791,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x2757,
- SMSG_CREATE_CHAR = 0x2744,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x27E3,
- SMSG_CRITERIA_DELETED = 0x2726,
- SMSG_CRITERIA_UPDATE = 0x2720,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26F5,
- SMSG_CUSTOM_LOAD_SCREEN = 0x25E4,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2788,
+ SMSG_CONSOLE_WRITE = 0x2632,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27DB,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27DA,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D9,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27DD,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27DE,
+ SMSG_CONTACT_LIST = 0x2789,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x281E,
+ SMSG_CONTROL_UPDATE = 0x2644,
+ SMSG_COOLDOWN_CHEAT = 0x273D,
+ SMSG_COOLDOWN_EVENT = 0x26B6,
+ SMSG_CORPSE_LOCATION = 0x264B,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x274E,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x2717,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x2800,
+ SMSG_CREATE_CHAR = 0x2704,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x279B,
+ SMSG_CRITERIA_DELETED = 0x26EB,
+ SMSG_CRITERIA_UPDATE = 0x26E5,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BF,
+ SMSG_CUSTOM_LOAD_SCREEN = 0x25CA,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
- SMSG_DAMAGE_CALC_LOG = 0x280E,
- SMSG_DB_REPLY = 0x25A2,
- SMSG_DEATH_RELEASE_LOC = 0x2710,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2680,
+ SMSG_DAMAGE_CALC_LOG = 0x27C8,
+ SMSG_DB_REPLY = 0x2594,
+ SMSG_DEATH_RELEASE_LOC = 0x26D8,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2651,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x2745,
- SMSG_DESTROY_ARENA_UNIT = 0x2788,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x2738,
+ SMSG_DELETE_CHAR = 0x2705,
+ SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2976,
+ SMSG_DESTROY_ARENA_UNIT = 0x2746,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26FC,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C,
- SMSG_DISCONNECT_REASON = 0x2832,
- SMSG_DISENCHANT_CREDIT = 0x25BD,
- SMSG_DISMOUNT = 0x26E3,
+ SMSG_DISCONNECT_REASON = 0x27F1,
+ SMSG_DISENCHANT_CREDIT = 0x25AA,
SMSG_DISMOUNT_RESULT = 0x257C,
SMSG_DISPEL_FAILED = 0x2C30,
- SMSG_DISPLAY_GAME_ERROR = 0x25B6,
- SMSG_DISPLAY_PLAYER_CHOICE = 0x26A7,
- SMSG_DISPLAY_PROMOTION = 0x266B,
+ SMSG_DISPLAY_GAME_ERROR = 0x25A4,
+ SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
+ SMSG_DISPLAY_PROMOTION = 0x2648,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9D,
- SMSG_DISPLAY_TOAST = 0x263B,
- SMSG_DISPLAY_WORLD_TEXT = 0x2831,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25F8,
+ SMSG_DISPLAY_TOAST = 0x2621,
+ SMSG_DISPLAY_WORLD_TEXT = 0x27F0,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DD,
SMSG_DROP_NEW_CONNECTION = 0x304C,
- SMSG_DUEL_ARRANGED = 0x2674,
- SMSG_DUEL_COMPLETE = 0x2678,
- SMSG_DUEL_COUNTDOWN = 0x2677,
- SMSG_DUEL_IN_BOUNDS = 0x2676,
- SMSG_DUEL_OUT_OF_BOUNDS = 0x2675,
- SMSG_DUEL_REQUESTED = 0x2673,
- SMSG_DUEL_WINNER = 0x2679,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x278D,
- SMSG_EMOTE = 0x280F,
- SMSG_ENABLE_BARBER_SHOP = 0x26F0,
- SMSG_ENCHANTMENT_LOG = 0x2758,
- SMSG_ENCOUNTER_END = 0x27C7,
- SMSG_ENCOUNTER_START = 0x27C6,
- SMSG_END_LIGHTNING_STORM = 0x26D7,
+ 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 = 0x274A,
+ SMSG_EMOTE = 0x27C9,
+ SMSG_ENABLE_BARBER_SHOP = 0x26BA,
+ SMSG_ENCHANTMENT_LOG = 0x2718,
+ SMSG_ENCOUNTER_END = 0x2781,
+ SMSG_ENCOUNTER_START = 0x2780,
+ SMSG_END_LIGHTNING_STORM = 0x26A6,
SMSG_ENTER_ENCRYPTED_MODE = 0x3049,
- SMSG_ENUM_CHARACTERS_RESULT = 0x2584,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x2837,
+ SMSG_ENUM_CHARACTERS_RESULT = 0x2583,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27F6,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21,
- SMSG_EQUIPMENT_SET_ID = 0x26E5,
+ SMSG_EQUIPMENT_SET_ID = 0x26AF,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x27A9,
- SMSG_FACTION_BONUS_INFO = 0x276A,
- SMSG_FAILED_PLAYER_CONDITION = 0x25E3,
- SMSG_FAILED_QUEST_TURN_IN = 0x2858,
- SMSG_FEATURE_SYSTEM_STATUS = 0x25D2,
- SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25D3,
- SMSG_FEIGN_DEATH_RESISTED = 0x278B,
- SMSG_FISH_ESCAPED = 0x2703,
- SMSG_FISH_NOT_HOOKED = 0x2702,
- SMSG_FLIGHT_SPLINE_SYNC = 0x2DF7,
- SMSG_FORCED_DEATH_UPDATE = 0x2711,
- SMSG_FORCE_ANIM = 0x2798,
- SMSG_FORCE_OBJECT_RELINK = 0x266A,
- SMSG_FRIEND_STATUS = 0x27D1,
- SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25D7,
- SMSG_GAME_OBJECT_BASE = 0x2875,
- SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25D8,
- SMSG_GAME_OBJECT_DESPAWN = 0x25D9,
+ SMSG_EXPLORATION_EXPERIENCE = 0x2763,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x288E,
+ SMSG_FACTION_BONUS_INFO = 0x2729,
+ SMSG_FAILED_PLAYER_CONDITION = 0x2FFA,
+ SMSG_FAILED_QUEST_TURN_IN = 0x2814,
+ SMSG_FEATURE_SYSTEM_STATUS = 0x25C0,
+ SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C1,
+ SMSG_FEIGN_DEATH_RESISTED = 0x2749,
+ SMSG_FISH_ESCAPED = 0x26CD,
+ SMSG_FISH_NOT_HOOKED = 0x26CC,
+ SMSG_FLIGHT_SPLINE_SYNC = 0x2E29,
+ SMSG_FORCED_DEATH_UPDATE = 0x26D9,
+ SMSG_FORCE_ANIM = 0x2755,
+ SMSG_FORCE_ANIMATIONS = 0x2756,
+ SMSG_FORCE_OBJECT_RELINK = 0x2647,
+ SMSG_FRIEND_STATUS = 0x278A,
+ SMSG_GAIN_MAW_POWER = 0x27E4,
+ SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C3,
+ SMSG_GAME_OBJECT_BASE = 0x282C,
+ SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C4,
+ SMSG_GAME_OBJECT_DESPAWN = 0x25C5,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A,
- SMSG_GAME_OBJECT_RESET_STATE = 0x2762,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x2848,
- SMSG_GAME_OBJECT_UI_LINK = 0x275F,
- SMSG_GAME_SPEED_SET = 0x26B0,
- SMSG_GAME_TIME_SET = 0x2751,
- SMSG_GAME_TIME_UPDATE = 0x2750,
- SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2902,
- SMSG_GARRISON_ADD_MISSION_RESULT = 0x2906,
- SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2918,
- SMSG_GARRISON_BUILDING_ACTIVATED = 0x28FB,
- SMSG_GARRISON_BUILDING_LANDMARKS = 0x292C,
- SMSG_GARRISON_BUILDING_REMOVED = 0x28F4,
- SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x28F6,
- SMSG_GARRISON_CLEAR_ALL_FOLLOWERS_EXHAUSTION = 0x2916,
- SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x2908,
- SMSG_GARRISON_CREATE_RESULT = 0x28FC,
- SMSG_GARRISON_DELETE_RESULT = 0x2920,
- SMSG_GARRISON_FOLLOWER_CATEGORIES = 0x2901,
- SMSG_GARRISON_FOLLOWER_CHANGED_ABILITIES = 0x2914,
- SMSG_GARRISON_FOLLOWER_CHANGED_DURABILITY = 0x2904,
- SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x2913,
- SMSG_GARRISON_FOLLOWER_CHANGED_STATUS = 0x2915,
- SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x2912,
- SMSG_GARRISON_IS_UPGRADEABLE_RESULT = 0x2929,
- SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x28F7,
- SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x28F5,
- SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2905,
- SMSG_GARRISON_LIST_MISSIONS_CHEAT_RESULT = 0x292A,
- SMSG_GARRISON_MISSION_AREA_BONUS_ADDED = 0x2910,
- SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x290C,
- SMSG_GARRISON_MISSION_LIST_UPDATE = 0x290E,
- SMSG_GARRISON_MISSION_REWARD_RESPONSE = 0x292D,
- SMSG_GARRISON_MISSION_UPDATE_CAN_START = 0x2911,
- SMSG_GARRISON_NUM_FOLLOWER_ACTIVATIONS_REMAINING = 0x2917,
- SMSG_GARRISON_OPEN_ARCHITECT = 0x2921,
- SMSG_GARRISON_OPEN_MISSION_NPC = 0x2923,
- SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x291C,
- SMSG_GARRISON_OPEN_TALENT_NPC = 0x291D,
- SMSG_GARRISON_OPEN_TRADESKILL_NPC = 0x2922,
- SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x28F3,
- SMSG_GARRISON_PLOT_PLACED = 0x28F1,
- SMSG_GARRISON_PLOT_REMOVED = 0x28F2,
- SMSG_GARRISON_RECALL_PORTAL_LAST_USED_TIME = 0x290A,
- SMSG_GARRISON_RECALL_PORTAL_USED = 0x290B,
- SMSG_GARRISON_RECRUITMENT_FOLLOWERS_GENERATED = 0x291E,
- SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x291F,
- SMSG_GARRISON_REMOTE_INFO = 0x28FA,
- SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x2919,
- SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x2903,
- SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x28F9,
- SMSG_GARRISON_START_MISSION_RESULT = 0x2907,
- SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x28F8,
- SMSG_GARRISON_UPGRADE_RESULT = 0x28FD,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2723,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x2806,
+ SMSG_GAME_OBJECT_UI_LINK = 0x271F,
+ SMSG_GAME_SPEED_SET = 0x267F,
+ SMSG_GAME_TIME_SET = 0x2711,
+ SMSG_GAME_TIME_UPDATE = 0x2710,
+ SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2978,
+ SMSG_GARRISON_ADD_EVENT = 0x299B,
+ SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x296A,
+ SMSG_GARRISON_ADD_MISSION_RESULT = 0x296E,
+ SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2980,
+ SMSG_GARRISON_BUILDING_ACTIVATED = 0x295F,
+ SMSG_GARRISON_BUILDING_REMOVED = 0x2958,
+ SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x295A,
+ SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x2971,
+ SMSG_GARRISON_CLEAR_COLLECTION = 0x299A,
+ SMSG_GARRISON_CLEAR_EVENT_LIST = 0x299D,
+ SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x2999,
+ SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x2998,
+ SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x2990,
+ SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x2970,
+ SMSG_GARRISON_CREATE_RESULT = 0x2960,
+ SMSG_GARRISON_DELETE_MISSION_RESULT = 0x2977,
+ SMSG_GARRISON_DELETE_RESULT = 0x2989,
+ SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0x297F,
+ SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0x297D,
+ SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x297B,
+ SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0x297C,
+ SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x297A,
+ SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0x297E,
+ SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x2987,
+ SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x2969,
+ SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x2972,
+ SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x2992,
+ SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x295B,
+ SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x2959,
+ SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x2993,
+ SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x296D,
+ SMSG_GARRISON_MAP_DATA_RESPONSE = 0x2995,
+ SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x2974,
+ SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x2996,
+ SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x2979,
+ SMSG_GARRISON_OPEN_ARCHITECT = 0x298A,
+ SMSG_GARRISON_OPEN_CRAFTER = 0x298B,
+ SMSG_GARRISON_OPEN_MISSION_NPC = 0x298C,
+ SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x2984,
+ SMSG_GARRISON_OPEN_TALENT_NPC = 0x2985,
+ SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x2957,
+ SMSG_GARRISON_PLOT_PLACED = 0x2955,
+ SMSG_GARRISON_PLOT_REMOVED = 0x2956,
+ SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x2988,
+ SMSG_GARRISON_REMOTE_INFO = 0x295E,
+ SMSG_GARRISON_REMOVE_EVENT = 0x299C,
+ SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x2983,
+ SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x2981,
+ SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x296B,
+ SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0x2982,
+ SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x295D,
+ SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0x2962,
+ SMSG_GARRISON_RESET_TALENT_TREE = 0x2967,
+ SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x2968,
+ SMSG_GARRISON_START_MISSION_RESULT = 0x296F,
+ SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x298F,
+ SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x299E,
+ SMSG_GARRISON_TALENT_COMPLETED = 0x2963,
+ SMSG_GARRISON_TALENT_REMOVED = 0x2964,
+ SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x2966,
+ SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x2965,
+ SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x295C,
+ SMSG_GARRISON_UPDATE_FOLLOWER = 0x296C,
+ SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x2991,
+ SMSG_GARRISON_UPGRADE_RESULT = 0x2961,
+ SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x2973,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585,
- SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2863,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AA,
- SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE = 0x2928,
- SMSG_GET_GARRISON_INFO_RESULT = 0x28F0,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x27E6,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x2822,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x280B,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27E5,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27E1,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x280A,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x2833,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x2834,
- SMSG_GM_PLAYER_INFO = 0x277E,
- SMSG_GM_REQUEST_PLAYER_INFO = 0x25EF,
- SMSG_GM_TICKET_CASE_STATUS = 0x26D2,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x26D1,
- SMSG_GOD_MODE = 0x273E,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x281F,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2764,
+ SMSG_GET_GARRISON_INFO_RESULT = 0x2954,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x279E,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27DC,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27C5,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x279D,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2799,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27C4,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27F2,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27F3,
+ SMSG_GM_PLAYER_INFO = 0x3006,
+ SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB,
+ SMSG_GM_TICKET_CASE_STATUS = 0x26A1,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x26A0,
+ SMSG_GOD_MODE = 0x26FF,
SMSG_GOSSIP_COMPLETE = 0x2A96,
SMSG_GOSSIP_MESSAGE = 0x2A97,
- SMSG_GOSSIP_POI = 0x27DE,
- SMSG_GOSSIP_TEXT_UPDATE = 0x2A98,
- SMSG_GROUP_ACTION_THROTTLED = 0x259E,
- SMSG_GROUP_AUTO_KICK = 0x27DC,
- SMSG_GROUP_DECLINE = 0x27D9,
- SMSG_GROUP_DESTROYED = 0x27DB,
- SMSG_GROUP_NEW_LEADER = 0x264D,
- SMSG_GROUP_UNINVITE = 0x27DA,
+ SMSG_GOSSIP_POI = 0x2796,
+ SMSG_GOSSIP_QUEST_UPDATE = 0x2A98,
+ SMSG_GROUP_ACTION_THROTTLED = 0x2590,
+ SMSG_GROUP_AUTO_KICK = 0x2794,
+ SMSG_GROUP_DECLINE = 0x2791,
+ SMSG_GROUP_DESTROYED = 0x2793,
+ SMSG_GROUP_NEW_LEADER = 0x262A,
+ SMSG_GROUP_UNINVITE = 0x2792,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1214,7 +1272,6 @@ enum OpcodeServer : uint16
SMSG_GUILD_COMMAND_RESULT = 0x29BA,
SMSG_GUILD_CRITERIA_DELETED = 0x29C6,
SMSG_GUILD_CRITERIA_UPDATE = 0x29C3,
- SMSG_GUILD_EVENT_AWAY_CHANGE = 0x29F0,
SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x29F8,
SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x29F7,
SMSG_GUILD_EVENT_DISBANDED = 0x29ED,
@@ -1226,6 +1283,7 @@ enum OpcodeServer : uint16
SMSG_GUILD_EVENT_PRESENCE_CHANGE = 0x29EF,
SMSG_GUILD_EVENT_RANKS_UPDATED = 0x29F1,
SMSG_GUILD_EVENT_RANK_CHANGED = 0x29F2,
+ SMSG_GUILD_EVENT_STATUS_CHANGE = 0x29F0,
SMSG_GUILD_EVENT_TAB_ADDED = 0x29F3,
SMSG_GUILD_EVENT_TAB_DELETED = 0x29F4,
SMSG_GUILD_EVENT_TAB_MODIFIED = 0x29F5,
@@ -1234,7 +1292,7 @@ enum OpcodeServer : uint16
SMSG_GUILD_INVITE = 0x29CA,
SMSG_GUILD_INVITE_DECLINED = 0x29E8,
SMSG_GUILD_INVITE_EXPIRED = 0x29E9,
- SMSG_GUILD_ITEM_LOOTED = 0x29D4,
+ SMSG_GUILD_ITEM_LOOTED_NOTIFY = 0x29D4,
SMSG_GUILD_KNOWN_RECIPES = 0x29BE,
SMSG_GUILD_MEMBERS_WITH_RECIPE = 0x29BF,
SMSG_GUILD_MEMBER_DAILY_RESET = 0x29E4,
@@ -1254,61 +1312,62 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x2706,
- SMSG_HIGHEST_THREAT_UPDATE = 0x2717,
- SMSG_HOTFIX_CONNECT = 0x25A5,
- SMSG_HOTFIX_MESSAGE = 0x25A4,
- SMSG_INITIALIZE_FACTIONS = 0x2769,
- SMSG_INITIAL_SETUP = 0x2581,
- SMSG_INIT_WORLD_STATES = 0x278E,
- SMSG_INSPECT_RESULT = 0x2651,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27F6,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27F5,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27FE,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27F4,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x2800,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27FF,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27F9,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27F8,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27FD,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x2801,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27FA,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27F7,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27FC,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27FB,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x273C,
- SMSG_INSTANCE_INFO = 0x2654,
- SMSG_INSTANCE_RESET = 0x26B5,
- SMSG_INSTANCE_RESET_FAILED = 0x26B6,
- SMSG_INSTANCE_SAVE_CREATED = 0x27C5,
- SMSG_INTERRUPT_POWER_REGEN = 0x2C58,
- SMSG_INVALIDATE_PAGE_TEXT = 0x270C,
- SMSG_INVALIDATE_PLAYER = 0x26DA,
- SMSG_INVALID_PROMOTION_CODE = 0x2799,
- SMSG_INVENTORY_CHANGE_FAILURE = 0x2767,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x285A,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x286B,
- SMSG_ISLANDS_MISSION_NPC = 0x283D,
- SMSG_ISLAND_AZERITE_GAIN = 0x27A6,
- SMSG_ISLAND_COMPLETE = 0x27A7,
+ SMSG_HEALTH_UPDATE = 0x26D0,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x26DE,
+ SMSG_HOTFIX_CONNECT = 0x2597,
+ SMSG_HOTFIX_MESSAGE = 0x2596,
+ SMSG_INITIALIZE_FACTIONS = 0x2728,
+ SMSG_INITIAL_SETUP = 0x2580,
+ SMSG_INIT_WORLD_STATES = 0x274B,
+ SMSG_INSPECT_RESULT = 0x262E,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27B0,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27AF,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27B8,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27AE,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27BA,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B9,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27B3,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27B2,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B7,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27BB,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27B4,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27B1,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B6,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27B5,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26FD,
+ SMSG_INSTANCE_INFO = 0x2631,
+ SMSG_INSTANCE_RESET = 0x2684,
+ SMSG_INSTANCE_RESET_FAILED = 0x2685,
+ SMSG_INSTANCE_SAVE_CREATED = 0x277F,
+ SMSG_INTERRUPT_POWER_REGEN = 0x2C59,
+ SMSG_INVALIDATE_PAGE_TEXT = 0x26D4,
+ SMSG_INVALIDATE_PLAYER = 0x2FFF,
+ SMSG_INVALID_PROMOTION_CODE = 0x2757,
+ SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x2816,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x2827,
+ SMSG_ISLANDS_MISSION_NPC = 0x27FC,
+ SMSG_ISLAND_AZERITE_GAIN = 0x2760,
+ SMSG_ISLAND_COMPLETE = 0x2761,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A83,
- SMSG_ITEM_CHANGED = 0x2729,
- SMSG_ITEM_COOLDOWN = 0x280D,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x279B,
- SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25B3,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x28CE,
- SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25B1,
- SMSG_ITEM_PUSH_RESULT = 0x263A,
- SMSG_ITEM_TIME_UPDATE = 0x279A,
- SMSG_KICK_REASON = 0x26B8,
+ SMSG_ITEM_CHANGED = 0x26EE,
+ SMSG_ITEM_COOLDOWN = 0x27C7,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2759,
+ SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25A3,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x2886,
+ SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25A1,
+ SMSG_ITEM_PUSH_RESULT = 0x2620,
+ SMSG_ITEM_TIME_UPDATE = 0x2758,
+ SMSG_KICK_REASON = 0x2687,
SMSG_LEARNED_SPELLS = 0x2C4D,
- SMSG_LEARN_PVP_TALENT_FAILED = 0x25EB,
- SMSG_LEARN_TALENT_FAILED = 0x25EA,
- SMSG_LEGACY_LOOT_RULES = 0x2876,
- SMSG_LEVEL_LINKING_RESULT = 0x28B7,
- SMSG_LEVEL_UP_INFO = 0x2728,
+ SMSG_LEARN_PVP_TALENT_FAILED = 0x25D1,
+ SMSG_LEARN_TALENT_FAILED = 0x25D0,
+ SMSG_LEGACY_LOOT_RULES = 0x282D,
+ SMSG_LEVEL_LINKING_RESULT = 0x286C,
+ SMSG_LEVEL_UP_INFO = 0x26ED,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
+ SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B,
SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x2A25,
SMSG_LFG_JOIN_RESULT = 0x2A1C,
SMSG_LFG_LIST_APPLICANT_LIST_UPDATE = 0x2A2B,
@@ -1340,248 +1399,257 @@ enum OpcodeServer : uint16
SMSG_LF_GUILD_COMMAND_RESULT = 0x29D0,
SMSG_LF_GUILD_POST = 0x29CD,
SMSG_LF_GUILD_RECRUITS = 0x29CF,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27B8,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27B6,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AB,
- SMSG_LOAD_CUF_PROFILES = 0x25CF,
- SMSG_LOAD_EQUIPMENT_SET = 0x2753,
- SMSG_LOGIN_SET_TIME_SPEED = 0x2752,
- SMSG_LOGIN_VERIFY_WORLD = 0x25AE,
- SMSG_LOGOUT_CANCEL_ACK = 0x26B4,
- SMSG_LOGOUT_COMPLETE = 0x26B3,
- SMSG_LOGOUT_RESPONSE = 0x26B2,
- SMSG_LOG_XP_GAIN = 0x2724,
- SMSG_LOOT_ALL_PASSED = 0x2638,
- SMSG_LOOT_LIST = 0x2787,
- SMSG_LOOT_MONEY_NOTIFY = 0x2633,
- SMSG_LOOT_RELEASE = 0x2632,
- SMSG_LOOT_RELEASE_ALL = 0x2631,
- SMSG_LOOT_REMOVED = 0x262D,
- SMSG_LOOT_RESPONSE = 0x262C,
- SMSG_LOOT_ROLL = 0x2635,
- SMSG_LOOT_ROLLS_COMPLETE = 0x2637,
- SMSG_LOOT_ROLL_WON = 0x2639,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x269B,
- SMSG_MAIL_COMMAND_RESULT = 0x265B,
- SMSG_MAIL_LIST_RESULT = 0x279C,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x279D,
- SMSG_MAP_OBJECTIVES_INIT = 0x27A5,
- SMSG_MAP_OBJ_EVENTS = 0x25DA,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2636,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2771,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2770,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2765,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2772,
+ SMSG_LOAD_CUF_PROFILES = 0x25BD,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2713,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x2712,
+ SMSG_LOGIN_VERIFY_WORLD = 0x259E,
+ SMSG_LOGOUT_CANCEL_ACK = 0x2683,
+ SMSG_LOGOUT_COMPLETE = 0x2682,
+ SMSG_LOGOUT_RESPONSE = 0x2681,
+ SMSG_LOG_XP_GAIN = 0x26E9,
+ SMSG_LOOT_ALL_PASSED = 0x261E,
+ SMSG_LOOT_LIST = 0x2745,
+ SMSG_LOOT_MONEY_NOTIFY = 0x2619,
+ SMSG_LOOT_RELEASE = 0x2618,
+ SMSG_LOOT_RELEASE_ALL = 0x2617,
+ SMSG_LOOT_REMOVED = 0x2613,
+ SMSG_LOOT_RESPONSE = 0x2612,
+ SMSG_LOOT_ROLL = 0x261B,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x261D,
+ SMSG_LOOT_ROLL_WON = 0x261F,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266C,
+ SMSG_MAIL_COMMAND_RESULT = 0x2638,
+ SMSG_MAIL_LIST_RESULT = 0x275A,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x275B,
+ SMSG_MAP_OBJECTIVES_INIT = 0x294A,
+ SMSG_MAP_OBJ_EVENTS = 0x25C6,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261C,
SMSG_MESSAGE_BOX = 0x2576,
- SMSG_MINIMAP_PING = 0x2701,
+ SMSG_MINIMAP_PING = 0x26CB,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
- SMSG_MISSILE_CANCEL = 0x25DB,
- SMSG_MODIFY_COOLDOWN = 0x27AD,
+ SMSG_MISSILE_CANCEL = 0x25C7,
+ SMSG_MODIFY_COOLDOWN = 0x2767,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257B,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x28A5,
- SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2DE1,
- SMSG_MOVE_DISABLE_COLLISION = 0x2DDD,
- SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x2DCB,
- SMSG_MOVE_DISABLE_GRAVITY = 0x2DDB,
- SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2DDA,
- SMSG_MOVE_ENABLE_COLLISION = 0x2DDE,
- SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x2DCA,
- SMSG_MOVE_ENABLE_GRAVITY = 0x2DDC,
- SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2DD9,
- SMSG_MOVE_KNOCK_BACK = 0x2DD1,
- SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x2DE2,
- SMSG_MOVE_ROOT = 0x2DC7,
- SMSG_MOVE_SET_ACTIVE_MOVER = 0x2DA3,
- SMSG_MOVE_SET_CAN_FLY = 0x2DD3,
- SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x2DD5,
- SMSG_MOVE_SET_COLLISION_HEIGHT = 0x2DDF,
- SMSG_MOVE_SET_COMPOUND_STATE = 0x2DE3,
- SMSG_MOVE_SET_FEATHER_FALL = 0x2DCD,
- SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x2DC3,
- SMSG_MOVE_SET_FLIGHT_SPEED = 0x2DC2,
- SMSG_MOVE_SET_HOVERING = 0x2DCF,
- SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x2DD7,
- SMSG_MOVE_SET_LAND_WALK = 0x2DCC,
- SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DB4,
- SMSG_MOVE_SET_NORMAL_FALL = 0x2DCE,
- SMSG_MOVE_SET_PITCH_RATE = 0x2DC6,
- SMSG_MOVE_SET_RUN_BACK_SPEED = 0x2DBF,
- SMSG_MOVE_SET_RUN_SPEED = 0x2DBE,
- SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x2DC1,
- SMSG_MOVE_SET_SWIM_SPEED = 0x2DC0,
- SMSG_MOVE_SET_TURN_RATE = 0x2DC5,
- SMSG_MOVE_SET_VEHICLE_REC_ID = 0x2DE0,
- SMSG_MOVE_SET_WALK_SPEED = 0x2DC4,
- SMSG_MOVE_SET_WATER_WALK = 0x2DC9,
- SMSG_MOVE_SKIP_TIME = 0x2DE4,
- SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0x2DE9,
- SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x2DE7,
- SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0x2DEA,
- SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x2DE8,
- SMSG_MOVE_SPLINE_ROOT = 0x2DE5,
- SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0x2DEB,
- SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0x2DBA,
- SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x2DB9,
- SMSG_MOVE_SPLINE_SET_FLYING = 0x2DF5,
- SMSG_MOVE_SPLINE_SET_HOVER = 0x2DED,
- SMSG_MOVE_SPLINE_SET_LAND_WALK = 0x2DF0,
- SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0x2DEC,
- SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0x2DBD,
- SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x2DB6,
- SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x2DF3,
- SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x2DB5,
- SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0x2DB8,
- SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0x2DB7,
- SMSG_MOVE_SPLINE_SET_TURN_RATE = 0x2DBC,
- SMSG_MOVE_SPLINE_SET_WALK_MODE = 0x2DF4,
- SMSG_MOVE_SPLINE_SET_WALK_SPEED = 0x2DBB,
- SMSG_MOVE_SPLINE_SET_WATER_WALK = 0x2DEF,
- SMSG_MOVE_SPLINE_START_SWIM = 0x2DF1,
- SMSG_MOVE_SPLINE_STOP_SWIM = 0x2DF2,
- SMSG_MOVE_SPLINE_UNROOT = 0x2DE6,
- SMSG_MOVE_SPLINE_UNSET_FLYING = 0x2DF6,
- SMSG_MOVE_SPLINE_UNSET_HOVER = 0x2DEE,
- SMSG_MOVE_TELEPORT = 0x2DD2,
- SMSG_MOVE_UNROOT = 0x2DC8,
- SMSG_MOVE_UNSET_CAN_FLY = 0x2DD4,
- SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x2DD6,
- SMSG_MOVE_UNSET_HOVERING = 0x2DD0,
- SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x2DD8,
- SMSG_MOVE_UPDATE = 0x2DAE,
- SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x2DB2,
- SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x2DAD,
- SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x2DAA,
- SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x2DA9,
- SMSG_MOVE_UPDATE_KNOCK_BACK = 0x2DB0,
- SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DB1,
- SMSG_MOVE_UPDATE_PITCH_RATE = 0x2DAC,
- SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x2DB3,
- SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x2DA5,
- SMSG_MOVE_UPDATE_RUN_SPEED = 0x2DA4,
- SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x2DA8,
- SMSG_MOVE_UPDATE_SWIM_SPEED = 0x2DA7,
- SMSG_MOVE_UPDATE_TELEPORT = 0x2DAF,
- SMSG_MOVE_UPDATE_TURN_RATE = 0x2DAB,
- SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DA6,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2624,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x2625,
- SMSG_MYTHIC_PLUS_NEW_SEASON_RECORD = 0x2629,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2628,
- SMSG_MYTHIC_PLUS_WEEKLY_REWARD_RESPONSE = 0x2623,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25F3,
- SMSG_NEW_TAXI_PATH = 0x26AD,
- SMSG_NEW_WORLD = 0x25AD,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x285C,
+ SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E13,
+ SMSG_MOVE_DISABLE_COLLISION = 0x2E0F,
+ SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x2DFD,
+ SMSG_MOVE_DISABLE_GRAVITY = 0x2E0D,
+ SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0C,
+ SMSG_MOVE_ENABLE_COLLISION = 0x2E10,
+ SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x2DFC,
+ SMSG_MOVE_ENABLE_GRAVITY = 0x2E0E,
+ SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x2E0B,
+ SMSG_MOVE_KNOCK_BACK = 0x2E03,
+ SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x2E14,
+ 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_FEATHER_FALL = 0x2DFF,
+ SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x2DF5,
+ SMSG_MOVE_SET_FLIGHT_SPEED = 0x2DF4,
+ SMSG_MOVE_SET_HOVERING = 0x2E01,
+ SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x2E09,
+ SMSG_MOVE_SET_LAND_WALK = 0x2DFE,
+ SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DE6,
+ SMSG_MOVE_SET_NORMAL_FALL = 0x2E00,
+ SMSG_MOVE_SET_PITCH_RATE = 0x2DF8,
+ SMSG_MOVE_SET_RUN_BACK_SPEED = 0x2DF1,
+ SMSG_MOVE_SET_RUN_SPEED = 0x2DF0,
+ 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_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_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_PITCH_RATE = 0x2DEF,
+ SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0x2DE8,
+ SMSG_MOVE_SPLINE_SET_RUN_MODE = 0x2E25,
+ 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_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_TELEPORT = 0x2E04,
+ SMSG_MOVE_UNROOT = 0x2DFA,
+ SMSG_MOVE_UNSET_CAN_FLY = 0x2E06,
+ SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x2E08,
+ SMSG_MOVE_UNSET_HOVERING = 0x2E02,
+ SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x2E0A,
+ SMSG_MOVE_UPDATE = 0x2DE0,
+ SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0x2DE4,
+ SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x2DDF,
+ SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x2DDC,
+ SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x2DDB,
+ SMSG_MOVE_UPDATE_KNOCK_BACK = 0x2DE2,
+ SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DE3,
+ SMSG_MOVE_UPDATE_PITCH_RATE = 0x2DDE,
+ SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x2DE5,
+ SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x2DD7,
+ SMSG_MOVE_UPDATE_RUN_SPEED = 0x2DD6,
+ SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x2DDA,
+ SMSG_MOVE_UPDATE_SWIM_SPEED = 0x2DD9,
+ SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1,
+ SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD,
+ SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27E1,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27E0,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2609,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260B,
+ SMSG_MYTHIC_PLUS_NEW_SEASON_RECORD = 0x260F,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260E,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260A,
+ SMSG_MYTHIC_PLUS_WEEKLY_REWARD_RESPONSE = 0x2608,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D8,
+ SMSG_NEW_TAXI_PATH = 0x267C,
+ SMSG_NEW_WORLD = 0x259D,
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26D9,
- SMSG_NOTIFY_MONEY = 0x25B0,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x265C,
- SMSG_OFFER_PETITION_ERROR = 0x26E9,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2725,
- SMSG_ON_MONSTER_MOVE = 0x2DA2,
- SMSG_OPEN_ARTIFACT_FORGE = 0x27E8,
- SMSG_OPEN_CONTAINER = 0x2768,
- SMSG_OPEN_HEART_FORGE = 0x2873,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A8,
+ SMSG_NOTIFY_MONEY = 0x25A0,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x2639,
+ SMSG_OFFER_PETITION_ERROR = 0x26B3,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26EA,
+ SMSG_ON_MONSTER_MOVE = 0x2DD4,
+ SMSG_OPEN_ANIMA_DIVERSION_UI = 0x2720,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x27A2,
+ SMSG_OPEN_CONTAINER = 0x2DA6,
+ SMSG_OPEN_HEART_FORGE = 0x282A,
+ SMSG_OPEN_ITEM_FORGE = 0x27A0,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27E0,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27E2,
- SMSG_OVERRIDE_LIGHT = 0x26EF,
- SMSG_PAGE_TEXT = 0x275E,
- SMSG_PARTY_COMMAND_RESULT = 0x27DD,
- SMSG_PARTY_INVITE = 0x25D0,
- SMSG_PARTY_KILL_LOG = 0x27A1,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x279F,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x279E,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x28CF,
- SMSG_PARTY_UPDATE = 0x260D,
- SMSG_PAUSE_MIRROR_TIMER = 0x2755,
- SMSG_PENDING_RAID_LOCK = 0x2736,
- SMSG_PETITION_ALREADY_SIGNED = 0x25B9,
+ SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x2798,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x279A,
+ SMSG_OVERRIDE_LIGHT = 0x26B9,
+ SMSG_PAGE_TEXT = 0x271E,
+ SMSG_PARTY_COMMAND_RESULT = 0x2795,
+ SMSG_PARTY_INVITE = 0x25BE,
+ SMSG_PARTY_KILL_LOG = 0x275E,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x275D,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x275C,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x288C,
+ SMSG_PARTY_UPDATE = 0x25F2,
+ SMSG_PAUSE_MIRROR_TIMER = 0x2715,
+ SMSG_PENDING_RAID_LOCK = 0x26FB,
+ SMSG_PETITION_ALREADY_SIGNED = 0x25A6,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA,
- SMSG_PETITION_SHOW_LIST = 0x26F2,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26F3,
- SMSG_PETITION_SIGN_RESULTS = 0x2793,
- SMSG_PET_ACTION_FEEDBACK = 0x2790,
- SMSG_PET_ACTION_SOUND = 0x26CF,
- SMSG_PET_ADDED = 0x25AA,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x261A,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x26A2,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x2613,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x2618,
- SMSG_PET_BATTLE_FINISHED = 0x2619,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x2615,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x2614,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x261B,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x2612,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2659,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x265A,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2617,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x2611,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x2616,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x2604,
- SMSG_PET_CAST_FAILED = 0x2C57,
+ SMSG_PETITION_SHOW_LIST = 0x26BC,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26BD,
+ SMSG_PETITION_SIGN_RESULTS = 0x2750,
+ SMSG_PET_ACTION_FEEDBACK = 0x274D,
+ SMSG_PET_ACTION_SOUND = 0x269E,
+ SMSG_PET_ADDED = 0x259A,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25FF,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2673,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F8,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x25FD,
+ SMSG_PET_BATTLE_FINISHED = 0x25FE,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x25FA,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F9,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2600,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F7,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2636,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x2637,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FC,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F6,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x25FB,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E9,
+ SMSG_PET_CAST_FAILED = 0x2C58,
SMSG_PET_CLEAR_SPELLS = 0x2C24,
- SMSG_PET_DISMISS_SOUND = 0x26D0,
- SMSG_PET_GOD_MODE = 0x26AA,
- SMSG_PET_GUIDS = 0x2747,
+ SMSG_PET_DISMISS_SOUND = 0x269F,
+ SMSG_PET_GOD_MODE = 0x2679,
+ SMSG_PET_GUIDS = 0x2707,
SMSG_PET_LEARNED_SPELLS = 0x2C4F,
SMSG_PET_MODE = 0x258B,
- SMSG_PET_NAME_INVALID = 0x26F7,
+ SMSG_PET_NAME_INVALID = 0x26C1,
SMSG_PET_NEWLY_TAMED = 0x2589,
SMSG_PET_SLOT_UPDATED = 0x258A,
SMSG_PET_SPELLS_MESSAGE = 0x2C25,
- SMSG_PET_STABLE_LIST = 0x25AB,
- SMSG_PET_STABLE_RESULT = 0x25AC,
- SMSG_PET_TAME_FAILURE = 0x26E6,
+ SMSG_PET_STABLE_LIST = 0x259B,
+ SMSG_PET_STABLE_RESULT = 0x259C,
+ SMSG_PET_TAME_FAILURE = 0x26B0,
SMSG_PET_UNLEARNED_SPELLS = 0x2C50,
SMSG_PHASE_SHIFT_CHANGE = 0x2578,
- SMSG_PLAYED_TIME = 0x2713,
- SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x2871,
- SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x2870,
- SMSG_PLAYER_BONUS_ROLL_FAILED = 0x2877,
- SMSG_PLAYER_BOUND = 0x257E,
- SMSG_PLAYER_CONDITION_RESULT = 0x2843,
- SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x2842,
+ SMSG_PLAYED_TIME = 0x26DA,
+ SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3015,
+ SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3014,
+ SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3017,
+ 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_SAVE_GUILD_EMBLEM = 0x29F9,
- SMSG_PLAYER_SKINNED = 0x278C,
- SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x27A0,
- SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x2847,
- SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x2846,
- SMSG_PLAY_MUSIC = 0x27B2,
- SMSG_PLAY_OBJECT_SOUND = 0x27B3,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2776,
+ 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 = 0x276C,
+ SMSG_PLAY_OBJECT_SOUND = 0x276D,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2735,
SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47,
- SMSG_PLAY_SCENE = 0x2656,
- SMSG_PLAY_SOUND = 0x27B1,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x27B4,
+ SMSG_PLAY_SCENE = 0x2633,
+ SMSG_PLAY_SOUND = 0x276B,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x276E,
SMSG_PLAY_SPELL_VISUAL = 0x2C45,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49,
- SMSG_PLAY_TIME_WARNING = 0x2740,
+ SMSG_PLAY_TIME_WARNING = 0x2701,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x2707,
+ SMSG_POWER_UPDATE = 0x26D1,
SMSG_PRELOAD_CHILD_MAP = 0x2579,
- SMSG_PREPOPULATE_NAME_CACHE = 0x28AA,
- SMSG_PRE_RESSURECT = 0x27B0,
- SMSG_PRINT_NOTIFICATION = 0x25E2,
- SMSG_PROC_RESIST = 0x27A2,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x285F,
+ SMSG_PRE_RESSURECT = 0x276A,
+ SMSG_PRINT_NOTIFICATION = 0x25C9,
+ SMSG_PROC_RESIST = 0x275F,
SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51,
- SMSG_PVP_CREDIT = 0x271F,
- SMSG_PVP_MATCH_COMPLETE = 0x28A7,
- SMSG_PVP_MATCH_INITIALIZE = 0x28AC,
- SMSG_PVP_MATCH_START = 0x28A6,
- SMSG_PVP_MATCH_STATISTICS = 0x25B4,
- SMSG_PVP_OPTIONS_ENABLED = 0x25B7,
- SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x270E,
- SMSG_QUERY_COMMUNITY_NAME_RESPONSE = 0x270A,
- SMSG_QUERY_CREATURE_RESPONSE = 0x2704,
- SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2705,
- SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE = 0x292B,
+ 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_QUERY_BATTLE_PET_NAME_RESPONSE = 0x26D6,
+ SMSG_QUERY_CREATURE_RESPONSE = 0x26CE,
+ SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x26CF,
+ SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x2994,
SMSG_QUERY_GUILD_INFO_RESPONSE = 0x29E5,
- SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x280C,
- SMSG_QUERY_NPC_TEXT_RESPONSE = 0x2708,
- SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x270B,
- SMSG_QUERY_PETITION_RESPONSE = 0x270F,
- SMSG_QUERY_PET_NAME_RESPONSE = 0x270D,
- SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x2709,
+ SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x27C6,
+ SMSG_QUERY_NPC_TEXT_RESPONSE = 0x26D2,
+ SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x26D3,
+ SMSG_QUERY_PETITION_RESPONSE = 0x26D7,
+ SMSG_QUERY_PET_NAME_RESPONSE = 0x26D5,
+ SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3003,
+ SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x3002,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A95,
- SMSG_QUERY_TIME_RESPONSE = 0x2723,
+ SMSG_QUERY_TIME_RESPONSE = 0x26E8,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8E,
SMSG_QUEST_FORCE_REMOVED = 0x2A9B,
@@ -1594,16 +1662,14 @@ enum OpcodeServer : uint16
SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x2A92,
SMSG_QUEST_GIVER_STATUS = 0x2A9A,
SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A90,
- SMSG_QUEST_LINES_FOR_MAP_RESPONSE = 0x2AA1,
SMSG_QUEST_LOG_FULL = 0x2A86,
- SMSG_QUEST_POI_CHANGED = 0x2A9F,
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9C,
+ SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9E,
SMSG_QUEST_PUSH_RESULT = 0x2A8F,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x28CA,
- SMSG_QUEST_SESSION_READY_CHECK = 0x28BB,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x28BC,
- SMSG_QUEST_SESSION_RESULT = 0x28BA,
- SMSG_QUEST_SPAWN_TRACKING_UPDATE = 0x2A9E,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2882,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x2870,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2871,
+ SMSG_QUEST_SESSION_RESULT = 0x286F,
SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8B,
SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8C,
SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8D,
@@ -1611,119 +1677,125 @@ enum OpcodeServer : uint16
SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A87,
SMSG_QUEST_UPDATE_FAILED = 0x2A89,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8A,
- SMSG_QUEUE_SUMMARY_UPDATE = 0x2859,
- SMSG_RAF_ACCOUNT_INFO = 0x28B8,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x28C6,
- SMSG_RAID_DIFFICULTY_SET = 0x27F1,
- SMSG_RAID_GROUP_ONLY = 0x27F3,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x2815,
+ SMSG_RAF_ACCOUNT_INFO = 0x286D,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x287E,
+ SMSG_RAID_DIFFICULTY_SET = 0x27AB,
+ SMSG_RAID_GROUP_ONLY = 0x27AD,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
- SMSG_RAID_MARKERS_CHANGED = 0x25BA,
- SMSG_RANDOM_ROLL = 0x2650,
- SMSG_RATED_PVP_INFO = 0x25A8,
- SMSG_READY_CHECK_COMPLETED = 0x2610,
- SMSG_READY_CHECK_RESPONSE = 0x260F,
- SMSG_READY_CHECK_STARTED = 0x260E,
- SMSG_READ_ITEM_RESULT_FAILED = 0x27ED,
- SMSG_READ_ITEM_RESULT_OK = 0x27E7,
- SMSG_REALM_LOOKUP_INFO = 0x2812,
- SMSG_REALM_QUERY_RESPONSE = 0x26EE,
- SMSG_REATTACH_RESURRECT = 0x2792,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26F4,
- SMSG_REFRESH_COMPONENT = 0x267C,
+ SMSG_RAID_MARKERS_CHANGED = 0x25A7,
+ SMSG_RANDOM_ROLL = 0x262D,
+ SMSG_RATED_PVP_INFO = 0x2930,
+ SMSG_READY_CHECK_COMPLETED = 0x25F5,
+ SMSG_READY_CHECK_RESPONSE = 0x25F4,
+ SMSG_READY_CHECK_STARTED = 0x25F3,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x27A7,
+ SMSG_READ_ITEM_RESULT_OK = 0x279F,
+ SMSG_REALM_LOOKUP_INFO = 0x27CC,
+ SMSG_REALM_QUERY_RESPONSE = 0x26B8,
+ SMSG_REATTACH_RESURRECT = 0x274F,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BE,
+ SMSG_REFRESH_COMPONENT = 0x264D,
SMSG_REFRESH_SPELL_HISTORY = 0x2C2C,
- SMSG_REMOVE_ITEM_PASSIVE = 0x25C1,
- SMSG_REMOVE_LOSS_OF_CONTROL = 0x269D,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x2809,
- SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26E2,
- SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x259F,
- SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x25D5,
- SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x25D6,
+ SMSG_REMOVE_ITEM_PASSIVE = 0x25AE,
+ SMSG_REMOVE_LOSS_OF_CONTROL = 0x266E,
+ SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C52,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27C3,
+ 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_RESEARCH_COMPLETE = 0x2587,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26EA,
- SMSG_RESET_RANGED_COMBAT_TIMER = 0x271C,
+ SMSG_RESET_FAILED_NOTIFY = 0x26B4,
+ SMSG_RESET_QUEST_POI = 0x2A9F,
+ SMSG_RESET_RANGED_COMBAT_TIMER = 0x2943,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
- SMSG_RESPEC_WIPE_CONFIRM = 0x262A,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x2610,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572,
- SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25CC,
+ SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25BA,
SMSG_RESUME_CAST = 0x2C3B,
SMSG_RESUME_CAST_BAR = 0x2C3E,
SMSG_RESUME_COMMS = 0x304B,
- SMSG_RESUME_TOKEN = 0x25BF,
- SMSG_RESURRECT_REQUEST = 0x257F,
- SMSG_RESYNC_RUNES = 0x2743,
- SMSG_RETURN_APPLICANT_LIST = 0x28AE,
- SMSG_RETURN_RECRUITING_CLUBS = 0x28AD,
- SMSG_ROLE_CHANGED_INFORM = 0x258E,
+ SMSG_RESUME_TOKEN = 0x25AC,
+ SMSG_RESURRECT_REQUEST = 0x257E,
+ SMSG_RESYNC_RUNES = 0x2C5F,
+ SMSG_RETURN_APPLICANT_LIST = 0x2863,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x2862,
+ SMSG_ROLE_CHANGED_INFORM = 0x258D,
SMSG_ROLE_CHOSEN = 0x2A39,
- SMSG_ROLE_POLL_INFORM = 0x258F,
- SMSG_RUNE_REGEN_DEBUG = 0x25C9,
- SMSG_SCENARIO_COMPLETED = 0x282F,
- SMSG_SCENARIO_POIS = 0x2653,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x264C,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x2841,
- SMSG_SCENARIO_STATE = 0x264B,
- SMSG_SCENARIO_UI_UPDATE = 0x2840,
- SMSG_SCENARIO_VACATE = 0x27EE,
- SMSG_SCENE_OBJECT_EVENT = 0x25F9,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FE,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25FF,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25FB,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25FA,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25FD,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25FC,
- SMSG_SCRIPT_CAST = 0x2C55,
- SMSG_SEASON_INFO = 0x25D4,
- SMSG_SELL_RESPONSE = 0x26F8,
- SMSG_SEND_ITEM_PASSIVES = 0x25C2,
+ SMSG_ROLE_POLL_INFORM = 0x258E,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x2801,
+ SMSG_RUNE_REGEN_DEBUG = 0x25B7,
+ SMSG_SCENARIO_COMPLETED = 0x27EE,
+ SMSG_SCENARIO_POIS = 0x2630,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x2629,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x2804,
+ SMSG_SCENARIO_STATE = 0x2628,
+ SMSG_SCENARIO_UI_UPDATE = 0x2803,
+ SMSG_SCENARIO_VACATE = 0x27A8,
+ SMSG_SCENE_OBJECT_EVENT = 0x25DE,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E3,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E4,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E0,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DF,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E2,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E1,
+ SMSG_SCRIPT_CAST = 0x2C56,
+ SMSG_SEASON_INFO = 0x25C2,
+ SMSG_SELL_RESPONSE = 0x26C2,
+ SMSG_SEND_ITEM_PASSIVES = 0x25AF,
SMSG_SEND_KNOWN_SPELLS = 0x2C2A,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x264E,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x264F,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262B,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262C,
SMSG_SEND_SPELL_CHARGES = 0x2C2D,
SMSG_SEND_SPELL_HISTORY = 0x2C2B,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2E,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x266D,
- SMSG_SERVER_TIME = 0x26B1,
- SMSG_SERVER_TIME_OFFSET = 0x2759,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264A,
+ SMSG_SERVER_TIME = 0x2680,
+ SMSG_SERVER_TIME_OFFSET = 0x2719,
SMSG_SETUP_CURRENCY = 0x2573,
SMSG_SETUP_RESEARCH_HISTORY = 0x2586,
- SMSG_SET_AI_ANIM_KIT = 0x2775,
- SMSG_SET_ALL_TASK_PROGRESS = 0x27D7,
- SMSG_SET_ANIM_TIER = 0x2779,
- SMSG_SET_CHR_UPGRADE_TIER = 0x25F6,
+ SMSG_SET_AI_ANIM_KIT = 0x2734,
+ SMSG_SET_ALL_TASK_PROGRESS = 0x278F,
+ SMSG_SET_ANIM_TIER = 0x2738,
+ SMSG_SET_CHR_UPGRADE_TIER = 0x25DB,
SMSG_SET_CURRENCY = 0x2574,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x26D3,
- SMSG_SET_FACTION_AT_WAR = 0x2742,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x2770,
- SMSG_SET_FACTION_STANDING = 0x2771,
- SMSG_SET_FACTION_VISIBLE = 0x276F,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x26A2,
+ SMSG_SET_FACTION_AT_WAR = 0x2703,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x272F,
+ SMSG_SET_FACTION_STANDING = 0x2730,
+ SMSG_SET_FACTION_VISIBLE = 0x272E,
SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
- SMSG_SET_FORCED_REACTIONS = 0x2761,
- SMSG_SET_ITEM_PURCHASE_DATA = 0x25B2,
- SMSG_SET_LOOT_METHOD_FAILED = 0x2818,
- SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25B8,
- SMSG_SET_MELEE_ANIM_KIT = 0x2778,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x2777,
+ SMSG_SET_FORCED_REACTIONS = 0x2722,
+ SMSG_SET_ITEM_PURCHASE_DATA = 0x25A2,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x27D2,
+ SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A5,
+ SMSG_SET_MELEE_ANIM_KIT = 0x2737,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x2736,
SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
- SMSG_SET_PET_SPECIALIZATION = 0x2645,
- SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2712,
- SMSG_SET_PLAY_HOVER_ANIM = 0x25CD,
- SMSG_SET_PROFICIENCY = 0x277A,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x28BE,
+ SMSG_SET_PET_SPECIALIZATION = 0x2622,
+ SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3004,
+ SMSG_SET_PLAY_HOVER_ANIM = 0x25BB,
+ SMSG_SET_PROFICIENCY = 0x2739,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2876,
+ SMSG_SET_SHIPMENT_READY_RESPONSE = 0x298D,
SMSG_SET_SPELL_CHARGES = 0x2C29,
- SMSG_SET_TASK_COMPLETE = 0x27D8,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x26A5,
- SMSG_SET_VEHICLE_REC_ID = 0x2735,
- SMSG_SHOW_BANK = 0x26AE,
- SMSG_SHOW_MAILBOX = 0x27EF,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25F2,
- SMSG_SHOW_TAXI_NODES = 0x2700,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27B9,
- SMSG_SOCKET_GEMS_FAILURE = 0x276D,
- SMSG_SOCKET_GEMS_SUCCESS = 0x276C,
- SMSG_SPECIAL_MOUNT_ANIM = 0x26CE,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x275D,
+ SMSG_SET_TASK_COMPLETE = 0x2790,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x2675,
+ SMSG_SET_VEHICLE_REC_ID = 0x26FA,
+ SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x298E,
+ SMSG_SHOW_BANK = 0x267D,
+ SMSG_SHOW_MAILBOX = 0x27A9,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D7,
+ SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A94,
+ SMSG_SHOW_TAXI_NODES = 0x26CA,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2773,
+ SMSG_SOCKET_GEMS_FAILURE = 0x272C,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x272B,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x269D,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x271D,
SMSG_SPELL_ABSORB_LOG = 0x2C1F,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17,
SMSG_SPELL_CHANNEL_START = 0x2C34,
@@ -1734,9 +1806,9 @@ enum OpcodeServer : uint16
SMSG_SPELL_DISPELL_LOG = 0x2C1A,
SMSG_SPELL_ENERGIZE_LOG = 0x2C1C,
SMSG_SPELL_EXECUTE_LOG = 0x2C40,
- SMSG_SPELL_FAILED_OTHER = 0x2C54,
- SMSG_SPELL_FAILURE = 0x2C52,
- SMSG_SPELL_FAILURE_MESSAGE = 0x2C59,
+ SMSG_SPELL_FAILED_OTHER = 0x2C55,
+ SMSG_SPELL_FAILURE = 0x2C53,
+ SMSG_SPELL_FAILURE_MESSAGE = 0x2C5A,
SMSG_SPELL_GO = 0x2C39,
SMSG_SPELL_HEAL_ABSORB_LOG = 0x2C1E,
SMSG_SPELL_HEAL_LOG = 0x2C1D,
@@ -1748,116 +1820,122 @@ enum OpcodeServer : uint16
SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B,
SMSG_SPELL_PREPARE = 0x2C38,
SMSG_SPELL_START = 0x2C3A,
- SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25E5,
- SMSG_SPIRIT_HEALER_CONFIRM = 0x275A,
- SMSG_STAND_STATE_UPDATE = 0x2760,
- SMSG_START_ELAPSED_TIMER = 0x261C,
- SMSG_START_ELAPSED_TIMERS = 0x261E,
- SMSG_START_LIGHTNING_STORM = 0x26D6,
- SMSG_START_LOOT_ROLL = 0x2634,
- SMSG_START_MIRROR_TIMER = 0x2754,
- SMSG_START_TIMER = 0x25BC,
- SMSG_STOP_ELAPSED_TIMER = 0x261D,
- SMSG_STOP_MIRROR_TIMER = 0x2756,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x27B5,
- SMSG_STREAMING_MOVIES = 0x25BB,
- SMSG_SUMMON_CANCEL = 0x26E1,
- SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x2590,
- SMSG_SUMMON_REQUEST = 0x2765,
+ SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CB,
+ SMSG_SPIRIT_HEALER_CONFIRM = 0x271A,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2888,
+ SMSG_STAND_STATE_UPDATE = 0x2721,
+ SMSG_START_ELAPSED_TIMER = 0x2601,
+ SMSG_START_ELAPSED_TIMERS = 0x2603,
+ SMSG_START_LIGHTNING_STORM = 0x26A5,
+ SMSG_START_LOOT_ROLL = 0x261A,
+ SMSG_START_MIRROR_TIMER = 0x2714,
+ SMSG_START_TIMER = 0x25A9,
+ SMSG_STOP_ELAPSED_TIMER = 0x2602,
+ SMSG_STOP_MIRROR_TIMER = 0x2716,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x276F,
+ SMSG_STREAMING_MOVIES = 0x25A8,
+ SMSG_SUMMON_CANCEL = 0x26AE,
+ SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F,
+ SMSG_SUMMON_REQUEST = 0x2726,
SMSG_SUPERCEDED_SPELLS = 0x2C4C,
SMSG_SUSPEND_COMMS = 0x304A,
- SMSG_SUSPEND_TOKEN = 0x25BE,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x28C8,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x275C,
- SMSG_TAXI_NODE_STATUS = 0x26AB,
- SMSG_TEXT_EMOTE = 0x26A9,
- SMSG_THREAT_CLEAR = 0x271A,
- SMSG_THREAT_REMOVE = 0x2719,
- SMSG_THREAT_UPDATE = 0x2718,
- SMSG_TIME_ADJUSTMENT = 0x2DA1,
- SMSG_TIME_SYNC_REQUEST = 0x2DA0,
- SMSG_TITLE_EARNED = 0x2715,
- SMSG_TITLE_LOST = 0x2716,
- SMSG_TOTEM_CREATED = 0x26FB,
- SMSG_TOTEM_DURATION_CHANGED = 0x26FC,
- SMSG_TOTEM_MOVED = 0x26FD,
- SMSG_TRADE_STATUS = 0x2583,
- SMSG_TRADE_UPDATED = 0x2582,
- SMSG_TRAINER_BUY_FAILED = 0x271E,
- SMSG_TRAINER_LIST = 0x271D,
- SMSG_TRANSFER_ABORTED = 0x2746,
- SMSG_TRANSFER_PENDING = 0x25E6,
- SMSG_TRANSMOGRIFY_NPC = 0x283A,
- SMSG_TREASURE_PICKER_RESPONSE = 0x284D,
- SMSG_TRIGGER_CINEMATIC = 0x2810,
- SMSG_TRIGGER_MOVIE = 0x26FE,
- SMSG_TURN_IN_PETITION_RESULT = 0x2795,
- SMSG_TUTORIAL_FLAGS = 0x2802,
- SMSG_TWITTER_STATUS = 0x2FFD,
- SMSG_UI_HEALING_RANGE_MODIFIED = 0x278A,
- SMSG_UI_ITEM_INTERACTION_NPC = 0x283C,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2813,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x2814,
+ SMSG_SUSPEND_TOKEN = 0x25AB,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x2880,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x271C,
+ SMSG_TAXI_NODE_STATUS = 0x267A,
+ SMSG_TEXT_EMOTE = 0x2678,
+ SMSG_THREAT_CLEAR = 0x26E1,
+ SMSG_THREAT_REMOVE = 0x26E0,
+ SMSG_THREAT_UPDATE = 0x26DF,
+ SMSG_TIME_ADJUSTMENT = 0x2DD3,
+ SMSG_TIME_SYNC_REQUEST = 0x2DD2,
+ SMSG_TITLE_EARNED = 0x26DC,
+ SMSG_TITLE_LOST = 0x26DD,
+ SMSG_TOTEM_CREATED = 0x26C5,
+ SMSG_TOTEM_DURATION_CHANGED = 0x26C6,
+ SMSG_TOTEM_MOVED = 0x26C7,
+ SMSG_TRADE_STATUS = 0x2582,
+ SMSG_TRADE_UPDATED = 0x2581,
+ SMSG_TRAINER_BUY_FAILED = 0x26E4,
+ SMSG_TRAINER_LIST = 0x26E3,
+ SMSG_TRANSFER_ABORTED = 0x2706,
+ SMSG_TRANSFER_PENDING = 0x25CC,
+ SMSG_TRANSMOGRIFY_NPC = 0x27F9,
+ SMSG_TREASURE_PICKER_RESPONSE = 0x280B,
+ SMSG_TRIGGER_CINEMATIC = 0x27CA,
+ SMSG_TRIGGER_MOVIE = 0x26C8,
+ SMSG_TURN_IN_PETITION_RESULT = 0x2752,
+ SMSG_TUTORIAL_FLAGS = 0x27BC,
+ SMSG_TWITTER_STATUS = 0x3043,
+ SMSG_UI_HEALING_RANGE_MODIFIED = 0x2748,
+ SMSG_UI_ITEM_INTERACTION_NPC = 0x27FB,
+ SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA1,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27CD,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27CE,
SMSG_UNLEARNED_SPELLS = 0x2C4E,
SMSG_UNLOAD_CHILD_MAP = 0x257A,
- SMSG_UPDATE_ACCOUNT_DATA = 0x274E,
- SMSG_UPDATE_ACTION_BUTTONS = 0x25F7,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x286A,
- SMSG_UPDATE_CAPTURE_POINT = 0x2598,
- SMSG_UPDATE_CELESTIAL_BODY = 0x2866,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x2808,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x27AF,
- SMSG_UPDATE_COOLDOWN = 0x27AE,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x2666,
- SMSG_UPDATE_GAME_TIME_STATE = 0x286D,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26D8,
- SMSG_UPDATE_LAST_INSTANCE = 0x26B7,
- SMSG_UPDATE_OBJECT = 0x2811,
- SMSG_UPDATE_PRIMARY_SPEC = 0x25EE,
- SMSG_UPDATE_TALENT_DATA = 0x25ED,
- SMSG_UPDATE_TASK_PROGRESS = 0x27D6,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x270E,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x25DC,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x2826,
+ SMSG_UPDATE_CAPTURE_POINT = 0x2929,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x2822,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27C2,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2769,
+ SMSG_UPDATE_COOLDOWN = 0x2768,
+ SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x2975,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x2643,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x2829,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A7,
+ SMSG_UPDATE_LAST_INSTANCE = 0x2686,
+ SMSG_UPDATE_OBJECT = 0x27CB,
+ SMSG_UPDATE_PRIMARY_SPEC = 0x25D4,
+ SMSG_UPDATE_TALENT_DATA = 0x25D3,
+ SMSG_UPDATE_TASK_PROGRESS = 0x278E,
SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19,
- SMSG_UPDATE_WORLD_STATE = 0x278F,
+ SMSG_UPDATE_WORLD_STATE = 0x274C,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x2796,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2861,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x285F,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x285E,
- SMSG_VAS_PURCHASE_COMPLETE = 0x2836,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x2835,
- SMSG_VENDOR_INVENTORY = 0x25CB,
- SMSG_VIGNETTE_UPDATE = 0x27B7,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2865,
- SMSG_VOICE_LOGIN_RESPONSE = 0x2864,
- SMSG_VOID_ITEM_SWAP_RESPONSE = 0x25E0,
- SMSG_VOID_STORAGE_CONTENTS = 0x25DD,
- SMSG_VOID_STORAGE_FAILED = 0x25DC,
- SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x25DE,
- SMSG_VOID_TRANSFER_RESULT = 0x25DF,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x2753,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x281D,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x281B,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x281A,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x27F5,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27F4,
+ SMSG_VENDOR_INVENTORY = 0x25B9,
+ SMSG_VIGNETTE_UPDATE = 0x3009,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2821,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x2820,
+ SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4,
+ SMSG_VOID_STORAGE_CONTENTS = 0x2DA1,
+ SMSG_VOID_STORAGE_FAILED = 0x2DA0,
+ SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0x2DA2,
+ SMSG_VOID_TRANSFER_RESULT = 0x2DA3,
SMSG_WAIT_QUEUE_FINISH = 0x256F,
SMSG_WAIT_QUEUE_UPDATE = 0x256E,
SMSG_WARDEN3_DATA = 0x2577,
- SMSG_WARDEN3_DISABLED = 0x2868,
- SMSG_WARDEN3_ENABLED = 0x2867,
- SMSG_WARFRONT_COMPLETE = 0x27A8,
- SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x25B5,
- SMSG_WEATHER = 0x26D5,
+ SMSG_WARDEN3_DISABLED = 0x2824,
+ SMSG_WARDEN3_ENABLED = 0x2823,
+ SMSG_WARFRONT_COMPLETE = 0x2762,
+ SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2932,
+ SMSG_WEATHER = 0x26A4,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x288B,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x2889,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x288A,
SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x26D4,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x286C,
- SMSG_WORLD_MAP_OPEN_NPC = 0x2839,
- SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x284E,
- SMSG_WORLD_SERVER_INFO = 0x25C3,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x28C9,
- SMSG_XP_GAIN_ABORTED = 0x25E1,
- SMSG_XP_GAIN_ENABLED = 0x27F2,
+ SMSG_WHO_IS = 0x26A3,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2828,
+ SMSG_WORLD_MAP_OPEN_NPC = 0x27F8,
+ SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x3010,
+ SMSG_WORLD_SERVER_INFO = 0x25B0,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2881,
+ SMSG_XP_GAIN_ABORTED = 0x25C8,
+ SMSG_XP_GAIN_ENABLED = 0x27AC,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
- SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25C6, // no client handler
+ SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25B3, // no client handler
SMSG_COMPRESSED_PACKET = 0x3052,
SMSG_MULTIPLE_PACKETS = 0x3051,
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index d909511a100..74119b46016 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -1350,16 +1350,15 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co
case CMSG_CREATE_CHARACTER: // 7 5 3 async db queries
case CMSG_ENUM_CHARACTERS: // 22 3 2 async db queries
case CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT: // 22 3 2 async db queries
- case CMSG_SUPPORT_TICKET_SUBMIT_BUG: // not profiled 1 async db query
- case CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION: // not profiled 1 async db query
+ case CMSG_SUBMIT_USER_FEEDBACK: // not profiled 1 async db query
case CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT: // not profiled 1 async db query
case CMSG_CALENDAR_UPDATE_EVENT: // not profiled
case CMSG_CALENDAR_REMOVE_EVENT: // not profiled
case CMSG_CALENDAR_COPY_EVENT: // not profiled
- case CMSG_CALENDAR_EVENT_INVITE: // not profiled
+ case CMSG_CALENDAR_INVITE: // not profiled
case CMSG_CALENDAR_EVENT_SIGN_UP: // not profiled
- case CMSG_CALENDAR_EVENT_RSVP: // not profiled
- case CMSG_CALENDAR_EVENT_MODERATOR_STATUS: // not profiled
+ case CMSG_CALENDAR_RSVP: // not profiled
+ case CMSG_CALENDAR_MODERATOR_STATUS: // not profiled
case CMSG_CALENDAR_REMOVE_INVITE: // not profiled
case CMSG_SET_LOOT_METHOD: // not profiled
case CMSG_GUILD_INVITE_BY_NAME: // not profiled
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 2e08b3b77fd..5f990c35e52 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -158,7 +158,7 @@ namespace WorldPackets
class RequestBattlefieldStatus;
class ReportPvPPlayerAFK;
class RequestPVPRewards;
- class RequestRatedBattlefieldInfo;
+ class RequestRatedPvpInfo;
}
namespace Battlenet
@@ -190,15 +190,15 @@ namespace WorldPackets
{
class CalendarAddEvent;
class CalendarCopyEvent;
- class CalendarEventInvite;
- class CalendarEventModeratorStatus;
- class CalendarEventRSVP;
+ class CalendarInvite;
+ class CalendarModeratorStatusQuery;
+ class CalendarRSVP;
class CalendarEventSignUp;
- class CalendarEventStatus;
+ class CalendarStatus;
class CalendarGetCalendar;
class CalendarGetEvent;
class CalendarGetNumPending;
- class CalendarCommunityFilter;
+ class CalendarCommunityInviteRequest;
class CalendarRemoveEvent;
class CalendarRemoveInvite;
class CalendarUpdateEvent;
@@ -221,6 +221,7 @@ namespace WorldPackets
class CharacterRenameRequest;
class CharCustomize;
class CharRaceOrFactionChange;
+ class CheckCharacterNameAvailability;
class GenerateRandomCharacterName;
class GetUndeleteCharacterCooldownStatus;
class ReorderCharacters;
@@ -311,7 +312,7 @@ namespace WorldPackets
class GarrisonPurchaseBuilding;
class GarrisonCancelConstruction;
class GarrisonRequestBlueprintAndSpecializationData;
- class GarrisonGetBuildingLandmarks;
+ class GarrisonGetMapData;
}
namespace Guild
@@ -702,8 +703,7 @@ namespace WorldPackets
{
class GMTicketGetSystemStatus;
class GMTicketGetCaseStatus;
- class SupportTicketSubmitBug;
- class SupportTicketSubmitSuggestion;
+ class SubmitUserFeedback;
class SupportTicketSubmitComplaint;
class BugReport;
class Complaint;
@@ -1130,6 +1130,7 @@ class TC_GAME_API WorldSession
void AbortLogin(WorldPackets::Character::LoginFailureReason reason);
void HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& loadingScreenNotify);
void HandlePlayerLogin(LoginQueryHolder* holder);
+ void HandleCheckCharacterNameAvailability(WorldPackets::Character::CheckCharacterNameAvailability& checkCharacterNameAvailability);
void HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request);
void HandleCharRenameCallBack(std::shared_ptr<WorldPackets::Character::CharacterRenameInfo> renameInfo, PreparedQueryResult result);
void HandleSetPlayerDeclinedNames(WorldPackets::Character::SetPlayerDeclinedNames& packet);
@@ -1197,8 +1198,7 @@ class TC_GAME_API WorldSession
// GM Ticket opcodes
void HandleGMTicketGetCaseStatusOpcode(WorldPackets::Ticket::GMTicketGetCaseStatus& packet);
void HandleGMTicketSystemStatusOpcode(WorldPackets::Ticket::GMTicketGetSystemStatus& packet);
- void HandleSupportTicketSubmitBug(WorldPackets::Ticket::SupportTicketSubmitBug& packet);
- void HandleSupportTicketSubmitSuggestion(WorldPackets::Ticket::SupportTicketSubmitSuggestion& packet);
+ void HandleSubmitUserFeedback(WorldPackets::Ticket::SubmitUserFeedback& userFeedback);
void HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::SupportTicketSubmitComplaint& packet);
void HandleBugReportOpcode(WorldPackets::Ticket::BugReport& bugReport);
void HandleComplaint(WorldPackets::Ticket::Complaint& packet);
@@ -1539,7 +1539,7 @@ class TC_GAME_API WorldSession
void HandleBattlefieldLeaveOpcode(WorldPackets::Battleground::BattlefieldLeave& battlefieldLeave);
void HandleBattlemasterJoinArena(WorldPackets::Battleground::BattlemasterJoinArena& packet);
void HandleReportPvPAFK(WorldPackets::Battleground::ReportPvPPlayerAFK& reportPvPPlayerAFK);
- void HandleRequestRatedBattlefieldInfo(WorldPackets::Battleground::RequestRatedBattlefieldInfo& packet);
+ void HandleRequestRatedPvpInfo(WorldPackets::Battleground::RequestRatedPvpInfo& packet);
void HandleGetPVPOptionsEnabled(WorldPackets::Battleground::GetPVPOptionsEnabled& getPvPOptionsEnabled);
void HandleRequestPvpReward(WorldPackets::Battleground::RequestPVPRewards& packet);
void HandleAreaSpiritHealerQueryOpcode(WorldPackets::Battleground::AreaSpiritHealerQuery& areaSpiritHealerQuery);
@@ -1628,16 +1628,16 @@ class TC_GAME_API WorldSession
// Calendar
void HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& calendarGetCalendar);
void HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent& calendarGetEvent);
- void HandleCalendarCommunityFilter(WorldPackets::Calendar::CalendarCommunityFilter& calendarCommunityFilter);
+ void HandleCalendarCommunityInvite(WorldPackets::Calendar::CalendarCommunityInviteRequest& calendarCommunityInvite);
void HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent);
void HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent);
void HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent);
void HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyEvent& calendarCopyEvent);
- void HandleCalendarEventInvite(WorldPackets::Calendar::CalendarEventInvite& calendarEventInvite);
- void HandleCalendarEventRsvp(WorldPackets::Calendar::CalendarEventRSVP& calendarEventRSVP);
+ void HandleCalendarInvite(WorldPackets::Calendar::CalendarInvite& calendarEventInvite);
+ void HandleCalendarRsvp(WorldPackets::Calendar::CalendarRSVP& calendarRSVP);
void HandleCalendarEventRemoveInvite(WorldPackets::Calendar::CalendarRemoveInvite& calendarRemoveInvite);
- void HandleCalendarEventStatus(WorldPackets::Calendar::CalendarEventStatus& calendarEventStatus);
- void HandleCalendarEventModeratorStatus(WorldPackets::Calendar::CalendarEventModeratorStatus& calendarEventModeratorStatus);
+ void HandleCalendarStatus(WorldPackets::Calendar::CalendarStatus& calendarStatus);
+ void HandleCalendarModeratorStatus(WorldPackets::Calendar::CalendarModeratorStatusQuery& calendarModeratorStatus);
void HandleCalendarComplain(WorldPackets::Calendar::CalendarComplain& calendarComplain);
void HandleCalendarGetNumPending(WorldPackets::Calendar::CalendarGetNumPending& calendarGetNumPending);
void HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEventSignUp& calendarEventSignUp);
@@ -1700,7 +1700,7 @@ class TC_GAME_API WorldSession
void HandleGarrisonPurchaseBuilding(WorldPackets::Garrison::GarrisonPurchaseBuilding& garrisonPurchaseBuilding);
void HandleGarrisonCancelConstruction(WorldPackets::Garrison::GarrisonCancelConstruction& garrisonCancelConstruction);
void HandleGarrisonRequestBlueprintAndSpecializationData(WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationData& garrisonRequestBlueprintAndSpecializationData);
- void HandleGarrisonGetBuildingLandmarks(WorldPackets::Garrison::GarrisonGetBuildingLandmarks& garrisonGetBuildingLandmarks);
+ void HandleGarrisonGetMapData(WorldPackets::Garrison::GarrisonGetMapData& garrisonGetMapData);
// Battle Pets
void HandleBattlePetRequestJournal(WorldPackets::BattlePet::BattlePetRequestJournal& battlePetRequestJournal);
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index 6e9a88887c9..469ac69186e 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -178,7 +178,7 @@ void AuraApplication::BuildUpdatePacket(WorldPackets::Spells::AuraInfo& auraInfo
WorldPackets::Spells::AuraDataInfo& auraData = auraInfo.AuraData.get();
auraData.CastID = aura->GetCastGUID();
auraData.SpellID = aura->GetId();
- auraData.SpellXSpellVisualID = aura->GetSpellXSpellVisualId();
+ auraData.Visual.SpellXSpellVisualID = aura->GetSpellXSpellVisualId();
auraData.Flags = GetFlags();
if (aura->GetMaxDuration() > 0 && !aura->GetSpellInfo()->HasAttribute(SPELL_ATTR5_HIDE_DURATION))
auraData.Flags |= AFLAG_DURATION;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index c7678330cec..818307d47cd 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3994,7 +3994,7 @@ void Spell::SendCastResult(SpellCastResult result, uint32* param1 /*= nullptr*/,
result = SPELL_FAILED_DONT_REPORT;
WorldPackets::Spells::CastFailed castFailed;
- castFailed.SpellXSpellVisualID = m_SpellVisual;
+ castFailed.Visual.SpellXSpellVisualID = m_SpellVisual;
FillSpellCastFailedArgs(castFailed, m_castId, m_spellInfo, result, m_customError, param1, param2, m_caster->ToPlayer());
m_caster->ToPlayer()->SendDirectMessage(castFailed.Write());
}
@@ -4022,7 +4022,7 @@ void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, uint32 sp
return;
WorldPackets::Spells::CastFailed packet;
- packet.SpellXSpellVisualID = spellVisual;
+ packet.Visual.SpellXSpellVisualID = spellVisual;
FillSpellCastFailedArgs(packet, cast_count, spellInfo, result, customError, param1, param2, caster);
caster->SendDirectMessage(packet.Write());
}
@@ -4083,7 +4083,7 @@ void Spell::SendSpellStart()
castData.CastID = m_castId;
castData.OriginalCastID = m_originalCastId;
castData.SpellID = m_spellInfo->Id;
- castData.SpellXSpellVisualID = m_SpellVisual;
+ castData.Visual.SpellXSpellVisualID = m_SpellVisual;
castData.CastFlags = castFlags;
castData.CastFlagsEx = m_castFlagsEx;
castData.CastTime = m_casttime;
@@ -4199,7 +4199,7 @@ void Spell::SendSpellGo()
castData.CastID = m_castId;
castData.OriginalCastID = m_originalCastId;
castData.SpellID = m_spellInfo->Id;
- castData.SpellXSpellVisualID = m_SpellVisual;
+ castData.Visual.SpellXSpellVisualID = m_SpellVisual;
castData.CastFlags = castFlags;
castData.CastFlagsEx = m_castFlagsEx;
castData.CastTime = getMSTime();
@@ -4476,7 +4476,7 @@ void Spell::SendInterrupted(uint8 result)
failurePacket.CasterUnit = m_caster->GetGUID();
failurePacket.CastID = m_castId;
failurePacket.SpellID = m_spellInfo->Id;
- failurePacket.SpellXSpellVisualID = m_SpellVisual;
+ failurePacket.Visual.SpellXSpellVisualID = m_SpellVisual;
failurePacket.Reason = result;
m_caster->SendMessageToSet(failurePacket.Write(), true);
@@ -4484,6 +4484,7 @@ void Spell::SendInterrupted(uint8 result)
failedPacket.CasterUnit = m_caster->GetGUID();
failedPacket.CastID = m_castId;
failedPacket.SpellID = m_spellInfo->Id;
+ failedPacket.Visual.SpellXSpellVisualID = m_SpellVisual;
failedPacket.Reason = result;
m_caster->SendMessageToSet(failedPacket.Write(), true);
}
@@ -4508,7 +4509,7 @@ void Spell::SendChannelStart(uint32 duration)
WorldPackets::Spells::SpellChannelStart spellChannelStart;
spellChannelStart.CasterGUID = m_caster->GetGUID();
spellChannelStart.SpellID = m_spellInfo->Id;
- spellChannelStart.SpellXSpellVisualID = m_SpellVisual;
+ spellChannelStart.Visual.SpellXSpellVisualID = m_SpellVisual;
spellChannelStart.ChannelDuration = duration;
m_caster->SendMessageToSet(spellChannelStart.Write(), true);
diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp
index bb18e09b6cb..40df5986092 100644
--- a/src/server/scripts/Commands/cs_go.cpp
+++ b/src/server/scripts/Commands/cs_go.cpp
@@ -328,12 +328,12 @@ public:
if (QuestPOIData const* poiData = sObjectMgr->GetQuestPOIData(questID))
{
- auto data = poiData->QuestPOIBlobDataStats.front();
+ QuestPOIBlobData const& data = poiData->Blobs.front();
mapId = data.MapID;
- x = data.QuestPOIBlobPointStats.front().X;
- y = data.QuestPOIBlobPointStats.front().Y;
+ x = data.Points.front().X;
+ y = data.Points.front().Y;
}
else
{