aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp4
-rw-r--r--src/server/game/DataStores/DB2Stores.h2
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp1
-rw-r--r--src/server/game/Entities/Object/Object.cpp1
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp116
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h67
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp7
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp5
-rw-r--r--src/server/game/Globals/ObjectMgr.h1
-rw-r--r--src/server/game/Handlers/BattleGroundHandler.cpp12
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp2
-rw-r--r--src/server/game/Handlers/HotfixHandler.cpp52
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp5
-rw-r--r--src/server/game/Server/Packets/AchievementPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h4
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h3
-rw-r--r--src/server/game/Server/Packets/HotfixPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/HotfixPackets.h7
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp11
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h5
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h1
-rw-r--r--src/server/game/Server/Packets/PacketUtilities.h4
-rw-r--r--src/server/game/Server/Packets/TokenPackets.cpp2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp5
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h487
29 files changed, 446 insertions, 387 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index cf7cc0ca5dc..584070d1dac 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -1514,7 +1514,7 @@ void DB2Manager::LoadHotfixData()
hotfixRecord.RecordID = recordId;
hotfixRecord.HotfixID = id;
hotfixRecord.HotfixStatus = status;
- _hotfixData.insert(hotfixRecord);
+ _hotfixData[id].push_back(hotfixRecord);
deletedRecords[std::make_pair(tableHash, recordId)] = status == HotfixRecord::Status::RecordRemoved;
++count;
} while (result->NextRow());
@@ -1691,7 +1691,7 @@ void DB2Manager::InsertNewHotfix(uint32 tableHash, uint32 recordId)
hotfixRecord.TableHash = tableHash;
hotfixRecord.RecordID = recordId;
hotfixRecord.HotfixID = ++_maxHotfixId;
- _hotfixData.insert(hotfixRecord);
+ _hotfixData[hotfixRecord.HotfixID].push_back(hotfixRecord);
}
std::vector<uint32> DB2Manager::GetAreasForGroup(uint32 areaGroupId) const
diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h
index 0b44f539cac..9563257b501 100644
--- a/src/server/game/DataStores/DB2Stores.h
+++ b/src/server/game/DataStores/DB2Stores.h
@@ -303,7 +303,7 @@ public:
std::vector<uint8> Data;
};
- using HotfixContainer = std::set<HotfixRecord>;
+ using HotfixContainer = std::unordered_map<int32, std::vector<HotfixRecord>>;
using ItemBonusList = std::vector<ItemBonusEntry const*>;
using MapDifficultyContainer = std::unordered_map<uint32, std::unordered_map<uint32, MapDifficultyEntry const*>>;
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index 12926a2dbc1..e9e407d64d9 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -293,6 +293,7 @@ void PlayerMenu::SendPointOfInterest(uint32 id) const
packet.Pos = pointOfInterest->Pos;
packet.Icon = pointOfInterest->Icon;
packet.Importance = pointOfInterest->Importance;
+ packet.Unknown905 = pointOfInterest->Unknown905;
_session->SendPacket(packet.Write());
}
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 01ade19f1d4..55be0ac8e52 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -609,6 +609,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
//if (flags.SmoothPhasing)
//{
// data->WriteBit(ReplaceActive);
+ // data->WriteBit(StopAnimKits);
// data->WriteBit(HasReplaceObject);
// data->FlushBits();
// if (HasReplaceObject)
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index e350de8d24e..2d210afde5b 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -298,7 +298,7 @@ void ItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
}
data << uint32(CreatePlayedTime);
data << int32(Context);
- data << int32(CreateTime);
+ data << int64(CreateTime);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
{
data << uint64(ArtifactXP);
@@ -446,7 +446,7 @@ void ItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[15])
{
- data << int32(CreateTime);
+ data << int64(CreateTime);
}
if (changesMask[16])
{
@@ -2555,7 +2555,7 @@ void PVPInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* r
data << uint32(Field_14);
data << uint32(Field_18);
data << uint32(PvpTierID);
- data.WriteBits(Field_20, 1);
+ data.WriteBit(Field_20);
data.FlushBits();
}
@@ -2567,44 +2567,47 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const
data.WriteBits(changesMask.GetBlock(0), 10);
- data.FlushBits();
if (changesMask[0])
{
if (changesMask[1])
{
- data << uint32(Field_0);
+ data.WriteBit(Field_20);
}
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
if (changesMask[2])
{
- data << uint32(Field_4);
+ data << uint32(Field_0);
}
if (changesMask[3])
{
- data << uint32(Field_8);
+ data << uint32(Field_4);
}
if (changesMask[4])
{
- data << uint32(Field_C);
+ data << uint32(Field_8);
}
if (changesMask[5])
{
- data << uint32(Rating);
+ data << uint32(Field_C);
}
if (changesMask[6])
{
- data << uint32(Field_14);
+ data << uint32(Rating);
}
if (changesMask[7])
{
- data << uint32(Field_18);
+ data << uint32(Field_14);
}
if (changesMask[8])
{
- data << uint32(PvpTierID);
+ data << uint32(Field_18);
}
if (changesMask[9])
{
- data.WriteBits(Field_20, 1);
+ data << uint32(PvpTierID);
}
}
data.FlushBits();
@@ -2612,6 +2615,7 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const
void PVPInfo::ClearChangesMask()
{
+ Base::ClearChangesMask(Field_20);
Base::ClearChangesMask(Field_0);
Base::ClearChangesMask(Field_4);
Base::ClearChangesMask(Field_8);
@@ -2620,7 +2624,6 @@ void PVPInfo::ClearChangesMask()
Base::ClearChangesMask(Field_14);
Base::ClearChangesMask(Field_18);
Base::ClearChangesMask(PvpTierID);
- Base::ClearChangesMask(Field_20);
_changesMask.ResetAll();
}
@@ -3019,11 +3022,11 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
}
data << int32(Honor);
data << int32(HonorNextLevel);
- data << int32(PvpRewardAchieved);
+ data << int64(PvpRewardAchieved);
data << int32(PvpTierMaxFromWins);
- data << int32(PvpLastWeeksRewardAchieved);
+ data << int64(PvpLastWeeksRewardAchieved);
data << int32(PvpLastWeeksTierMaxFromWins);
- data << int32(PvpLastWeeksRewardClaimed);
+ data << int64(PvpLastWeeksRewardClaimed);
data << uint8(NumBankSlots);
data << uint32(ResearchSites.size());
data << uint32(ResearchSiteProgress.size());
@@ -3056,6 +3059,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << uint32(DisabledSpells.size());
data << int32(UiChromieTimeExpansionID);
data << int32(TransportServerTime);
+ data << uint32(WeeklyRewardsPeriodSinceOrigin);
for (std::size_t i = 0; i < KnownTitles.size(); ++i)
{
data << uint64(KnownTitles[i]);
@@ -3334,6 +3338,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
+ data.FlushBits();
if (changesMask[0])
{
if (changesMask[22])
@@ -3894,7 +3899,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[104])
{
- data << int32(PvpRewardAchieved);
+ data << int64(PvpRewardAchieved);
}
if (changesMask[105])
{
@@ -3902,7 +3907,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[106])
{
- data << int32(PvpLastWeeksRewardAchieved);
+ data << int64(PvpLastWeeksRewardAchieved);
}
if (changesMask[107])
{
@@ -3910,7 +3915,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[108])
{
- data << int32(PvpLastWeeksRewardClaimed);
+ data << int64(PvpLastWeeksRewardClaimed);
}
if (changesMask[109])
{
@@ -3924,6 +3929,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
{
data << int32(TransportServerTime);
}
+ if (changesMask[114])
+ {
+ data << uint32(WeeklyRewardsPeriodSinceOrigin);
+ }
}
if (changesMask[98])
{
@@ -3940,161 +3949,161 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[114])
+ if (changesMask[115])
{
for (std::size_t i = 0; i < 199; ++i)
{
- if (changesMask[115 + i])
+ if (changesMask[116 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[314])
+ if (changesMask[315])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[315 + i])
+ if (changesMask[316 + i])
{
data << uint32(TrackResourceMask[i]);
}
}
}
- if (changesMask[317])
+ if (changesMask[318])
{
for (std::size_t i = 0; i < 192; ++i)
{
- if (changesMask[318 + i])
+ if (changesMask[319 + i])
{
data << uint64(ExploredZones[i]);
}
}
}
- if (changesMask[510])
+ if (changesMask[511])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[511 + i])
+ if (changesMask[512 + i])
{
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[513])
+ if (changesMask[514])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[514 + i])
+ if (changesMask[515 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[521 + i])
+ if (changesMask[522 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[528 + i])
+ if (changesMask[529 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[535 + i])
+ if (changesMask[536 + i])
{
data << float(ModHealingDonePercent[i]);
}
}
}
- if (changesMask[542])
+ if (changesMask[543])
{
for (std::size_t i = 0; i < 3; ++i)
{
- if (changesMask[543 + i])
+ if (changesMask[544 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[546 + i])
+ if (changesMask[547 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[549])
+ if (changesMask[550])
{
for (std::size_t i = 0; i < 12; ++i)
{
- if (changesMask[550 + i])
+ if (changesMask[551 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[562 + i])
+ if (changesMask[563 + i])
{
data << uint32(BuybackTimestamp[i]);
}
}
}
- if (changesMask[574])
+ if (changesMask[575])
{
for (std::size_t i = 0; i < 32; ++i)
{
- if (changesMask[575 + i])
+ if (changesMask[576 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[614])
+ if (changesMask[615])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[615 + i])
+ if (changesMask[616 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[619])
+ if (changesMask[620])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[620 + i])
+ if (changesMask[621 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[622])
+ if (changesMask[623])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[623 + i])
+ if (changesMask[624 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[627])
+ if (changesMask[628])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[628 + i])
+ if (changesMask[629 + i])
{
data << uint32(BankBagSlotFlags[i]);
}
}
}
- if (changesMask[635])
+ if (changesMask[636])
{
for (std::size_t i = 0; i < 875; ++i)
{
- if (changesMask[636 + i])
+ if (changesMask[637 + i])
{
data << uint64(QuestCompleted[i]);
}
}
}
- if (changesMask[607])
+ if (changesMask[608])
{
for (std::size_t i = 0; i < 6; ++i)
{
- if (changesMask[608 + i])
+ if (changesMask[609 + i])
{
PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
@@ -4214,6 +4223,7 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(QuestSession);
Base::ClearChangesMask(UiChromieTimeExpansionID);
Base::ClearChangesMask(TransportServerTime);
+ Base::ClearChangesMask(WeeklyRewardsPeriodSinceOrigin);
Base::ClearChangesMask(InvSlots);
Base::ClearChangesMask(TrackResourceMask);
Base::ClearChangesMask(ExploredZones);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 78bdccfa0e6..7b450dac5fe 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -127,7 +127,7 @@ struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<40>
UpdateField<uint32, 0, 12> MaxDurability;
UpdateField<uint32, 0, 13> CreatePlayedTime;
UpdateField<int32, 0, 14> Context;
- UpdateField<int32, 0, 15> CreateTime;
+ UpdateField<int64, 0, 15> CreateTime;
UpdateField<uint64, 0, 16> ArtifactXP;
UpdateField<uint8, 0, 17> ItemAppearanceModID;
UpdateField<UF::ItemModList, 0, 18> Modifiers;
@@ -522,15 +522,15 @@ struct RestInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3>
struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<10>
{
- UpdateField<uint32, 0, 1> Field_0;
- UpdateField<uint32, 0, 2> Field_4;
- UpdateField<uint32, 0, 3> Field_8;
- UpdateField<uint32, 0, 4> Field_C;
- UpdateField<uint32, 0, 5> Rating;
- UpdateField<uint32, 0, 6> Field_14;
- UpdateField<uint32, 0, 7> Field_18;
- UpdateField<uint32, 0, 8> PvpTierID;
- UpdateField<uint32, 0, 9> Field_20;
+ UpdateField<bool, 0, 1> Field_20;
+ UpdateField<uint32, 0, 2> Field_0;
+ UpdateField<uint32, 0, 3> Field_4;
+ UpdateField<uint32, 0, 4> Field_8;
+ UpdateField<uint32, 0, 5> Field_C;
+ UpdateField<uint32, 0, 6> Rating;
+ UpdateField<uint32, 0, 7> Field_14;
+ UpdateField<uint32, 0, 8> Field_18;
+ UpdateField<uint32, 0, 9> PvpTierID;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
@@ -647,7 +647,7 @@ struct ReplayedQuest : public IsUpdateFieldStructureTag, public HasChangesMask<3
void ClearChangesMask();
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1511>
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1512>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
UpdateField<bool, 0, 2> BankAutoSortDisabled;
@@ -748,35 +748,36 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateField<uint64, 98, 101> GuildClubMemberID;
UpdateField<int32, 98, 102> Honor;
UpdateField<int32, 98, 103> HonorNextLevel;
- UpdateField<int32, 98, 104> PvpRewardAchieved;
+ UpdateField<int64, 98, 104> PvpRewardAchieved;
UpdateField<int32, 98, 105> PvpTierMaxFromWins;
- UpdateField<int32, 98, 106> PvpLastWeeksRewardAchieved;
+ UpdateField<int64, 98, 106> PvpLastWeeksRewardAchieved;
UpdateField<int32, 98, 107> PvpLastWeeksTierMaxFromWins;
- UpdateField<int32, 98, 108> PvpLastWeeksRewardClaimed;
+ UpdateField<int64, 98, 108> PvpLastWeeksRewardClaimed;
UpdateField<uint8, 98, 109> NumBankSlots;
UpdateField<UF::ActivePlayerUnk901, 98, 111> Field_1410;
OptionalUpdateField<UF::QuestSession, 98, 110> QuestSession;
UpdateField<int32, 98, 112> UiChromieTimeExpansionID;
UpdateField<int32, 98, 113> TransportServerTime;
- UpdateFieldArray<ObjectGuid, 199, 114, 115> InvSlots;
- UpdateFieldArray<uint32, 2, 314, 315> TrackResourceMask;
- UpdateFieldArray<uint64, 192, 317, 318> ExploredZones;
- UpdateFieldArray<UF::RestInfo, 2, 510, 511> RestInfo;
- UpdateFieldArray<int32, 7, 513, 514> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 513, 521> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 513, 528> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 513, 535> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 542, 543> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 542, 546> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 549, 550> BuybackPrice;
- UpdateFieldArray<uint32, 12, 549, 562> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 574, 575> CombatRatings;
- UpdateFieldArray<UF::PVPInfo, 6, 607, 608> PvpInfo;
- UpdateFieldArray<uint32, 4, 614, 615> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 619, 620> ProfessionSkillLine;
- UpdateFieldArray<uint32, 4, 622, 623> BagSlotFlags;
- UpdateFieldArray<uint32, 7, 627, 628> BankBagSlotFlags;
- UpdateFieldArray<uint64, 875, 635, 636> QuestCompleted;
+ UpdateField<uint32, 98, 114> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
+ UpdateFieldArray<ObjectGuid, 199, 115, 116> InvSlots;
+ UpdateFieldArray<uint32, 2, 315, 316> TrackResourceMask;
+ UpdateFieldArray<uint64, 192, 318, 319> ExploredZones;
+ UpdateFieldArray<UF::RestInfo, 2, 511, 512> RestInfo;
+ UpdateFieldArray<int32, 7, 514, 515> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 514, 522> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 514, 529> ModDamageDonePercent;
+ UpdateFieldArray<float, 7, 514, 536> ModHealingDonePercent;
+ UpdateFieldArray<float, 3, 543, 544> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 543, 547> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 550, 551> BuybackPrice;
+ UpdateFieldArray<uint32, 12, 550, 563> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 575, 576> CombatRatings;
+ UpdateFieldArray<UF::PVPInfo, 6, 608, 609> PvpInfo;
+ UpdateFieldArray<uint32, 4, 615, 616> NoReagentCostMask;
+ UpdateFieldArray<int32, 2, 620, 621> ProfessionSkillLine;
+ UpdateFieldArray<uint32, 4, 623, 624> BagSlotFlags;
+ UpdateFieldArray<uint32, 7, 628, 629> BankBagSlotFlags;
+ UpdateFieldArray<uint64, 875, 636, 637> QuestCompleted;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 65ba0695496..ffa959fedc5 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1591,11 +1591,16 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
}
}
-void Unit::HandleEmoteCommand(uint32 anim_id)
+void Unit::HandleEmoteCommand(uint32 anim_id, Trinity::IteratorPair<int32 const*> spellVisualKitIds /*= {}*/)
{
WorldPackets::Chat::Emote packet;
packet.Guid = GetGUID();
packet.EmoteID = anim_id;
+
+ if (EmotesEntry const* emotesEntry = sEmotesStore.LookupEntry(anim_id))
+ if (emotesEntry->AnimID == ANIM_MOUNT_SPECIAL || emotesEntry->AnimID == ANIM_MOUNT_SELF_SPECIAL)
+ std::copy(spellVisualKitIds.begin(), spellVisualKitIds.end(), std::back_inserter(packet.SpellVisualKitIDs));
+
SendMessageToSet(packet.Write(), true);
}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 300de29c078..36f5f01bc41 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1207,7 +1207,7 @@ class TC_GAME_API Unit : public WorldObject
DamageInfo* damageInfo, HealInfo* healInfo);
void TriggerAurasProcOnEvent(ProcEventInfo& eventInfo, AuraApplicationProcContainer& procAuras);
- void HandleEmoteCommand(uint32 anim_id);
+ void HandleEmoteCommand(uint32 anim_id, Trinity::IteratorPair<int32 const*> spellVisualKitIds = {});
void AttackerStateUpdate (Unit* victim, WeaponAttackType attType = BASE_ATTACK, bool extra = false);
void FakeAttackerStateUpdate(Unit* victim, WeaponAttackType attType = BASE_ATTACK);
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index c56bc2dbebc..54e3b96a02d 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -7930,8 +7930,8 @@ void ObjectMgr::LoadPointsOfInterest()
uint32 count = 0;
- // 0 1 2 3 4 5 6
- QueryResult result = WorldDatabase.Query("SELECT ID, PositionX, PositionY, Icon, Flags, Importance, Name FROM points_of_interest");
+ // 0 1 2 3 4 5 6 7
+ QueryResult result = WorldDatabase.Query("SELECT ID, PositionX, PositionY, Icon, Flags, Importance, Name, Unknown905 FROM points_of_interest");
if (!result)
{
@@ -7952,6 +7952,7 @@ void ObjectMgr::LoadPointsOfInterest()
pointOfInterest.Flags = fields[4].GetUInt32();
pointOfInterest.Importance = fields[5].GetUInt32();
pointOfInterest.Name = fields[6].GetString();
+ pointOfInterest.Unknown905 = fields[7].GetInt32();
if (!Trinity::IsValidMapCoord(pointOfInterest.Pos.GetPositionX(), pointOfInterest.Pos.GetPositionY()))
{
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index e2011eaf227..2ab408eb9d9 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -680,6 +680,7 @@ struct PointOfInterest
uint32 Icon;
uint32 Flags;
uint32 Importance;
+ uint32 Unknown905;
std::string Name;
};
diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp
index 18be1fbf290..5ca9467872e 100644
--- a/src/server/game/Handlers/BattleGroundHandler.cpp
+++ b/src/server/game/Handlers/BattleGroundHandler.cpp
@@ -260,7 +260,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPackets::Battleground::Battl
{
if (!_player->InBattlegroundQueue())
{
- TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: %u, AcceptedInvite: %u. Player not in queue!",
+ TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: " SI64FMTD ", AcceptedInvite: %u. Player not in queue!",
GetPlayerInfo().c_str(), battlefieldPort.Ticket.Id, uint32(battlefieldPort.Ticket.Type), battlefieldPort.Ticket.Time.AsUnderlyingType(), uint32(battlefieldPort.AcceptedInvite));
return;
}
@@ -268,7 +268,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPackets::Battleground::Battl
BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(battlefieldPort.Ticket.Id);
if (bgQueueTypeId == BATTLEGROUND_QUEUE_NONE)
{
- TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: %u, AcceptedInvite: %u. Invalid queueSlot!",
+ TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: " SI64FMTD ", AcceptedInvite: %u. Invalid queueSlot!",
GetPlayerInfo().c_str(), battlefieldPort.Ticket.Id, uint32(battlefieldPort.Ticket.Type), battlefieldPort.Ticket.Time.AsUnderlyingType(), uint32(battlefieldPort.AcceptedInvite));
return;
}
@@ -279,14 +279,14 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPackets::Battleground::Battl
GroupQueueInfo ginfo;
if (!bgQueue.GetPlayerGroupInfoData(_player->GetGUID(), &ginfo))
{
- TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: %u, AcceptedInvite: %u. Player not in queue (No player Group Info)!",
+ TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: " SI64FMTD ", AcceptedInvite: %u. Player not in queue (No player Group Info)!",
GetPlayerInfo().c_str(), battlefieldPort.Ticket.Id, uint32(battlefieldPort.Ticket.Type), battlefieldPort.Ticket.Time.AsUnderlyingType(), uint32(battlefieldPort.AcceptedInvite));
return;
}
// if action == 1, then player must have been invited to join
if (!ginfo.IsInvitedToBGInstanceGUID && battlefieldPort.AcceptedInvite)
{
- TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: %u, AcceptedInvite: %u. Player is not invited to any bg!",
+ TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: " SI64FMTD ", AcceptedInvite: %u. Player is not invited to any bg!",
GetPlayerInfo().c_str(), battlefieldPort.Ticket.Id, uint32(battlefieldPort.Ticket.Type), battlefieldPort.Ticket.Time.AsUnderlyingType(), uint32(battlefieldPort.AcceptedInvite));
return;
}
@@ -299,7 +299,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPackets::Battleground::Battl
{
if (battlefieldPort.AcceptedInvite)
{
- TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: %u, AcceptedInvite: %u. Cant find BG with id %u!",
+ TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: " SI64FMTD ", AcceptedInvite: %u. Cant find BG with id %u!",
GetPlayerInfo().c_str(), battlefieldPort.Ticket.Id, uint32(battlefieldPort.Ticket.Type), battlefieldPort.Ticket.Time.AsUnderlyingType(), uint32(battlefieldPort.AcceptedInvite), ginfo.IsInvitedToBGInstanceGUID);
return;
}
@@ -312,7 +312,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPackets::Battleground::Battl
}
}
- TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: %u, AcceptedInvite: %u.",
+ TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT %s Slot: %u, Unk: %u, Time: " SI64FMTD ", AcceptedInvite: %u.",
GetPlayerInfo().c_str(), battlefieldPort.Ticket.Id, uint32(battlefieldPort.Ticket.Type), battlefieldPort.Ticket.Time.AsUnderlyingType(), uint32(battlefieldPort.AcceptedInvite));
// get real bg type
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index f685cfb2c1e..1bdf5d1140b 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -616,7 +616,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet)
// Only allow text-emotes for "dead" entities (feign death included)
if (_player->HasUnitState(UNIT_STATE_DIED))
break;
- _player->HandleEmoteCommand(emoteAnim);
+ _player->HandleEmoteCommand(emoteAnim, { packet.SpellVisualKitIDs.data(), packet.SpellVisualKitIDs.data() + packet.SpellVisualKitIDs.size() });
break;
}
diff --git a/src/server/game/Handlers/HotfixHandler.cpp b/src/server/game/Handlers/HotfixHandler.cpp
index 25eb13fa3f0..d1786bb6088 100644
--- a/src/server/game/Handlers/HotfixHandler.cpp
+++ b/src/server/game/Handlers/HotfixHandler.cpp
@@ -61,7 +61,7 @@ void WorldSession::HandleDBQueryBulk(WorldPackets::Hotfix::DBQueryBulk& dbQuery)
void WorldSession::SendAvailableHotfixes()
{
- SendPacket(WorldPackets::Hotfix::AvailableHotfixes(realm.Id.GetAddress(), sDB2Manager.GetHotfixCount(), sDB2Manager.GetHotfixData()).Write());
+ SendPacket(WorldPackets::Hotfix::AvailableHotfixes(realm.Id.GetAddress(), sDB2Manager.GetHotfixData()).Write());
}
void WorldSession::HandleHotfixRequest(WorldPackets::Hotfix::HotfixRequest& hotfixQuery)
@@ -69,38 +69,40 @@ void WorldSession::HandleHotfixRequest(WorldPackets::Hotfix::HotfixRequest& hotf
DB2Manager::HotfixContainer const& hotfixes = sDB2Manager.GetHotfixData();
WorldPackets::Hotfix::HotfixConnect hotfixQueryResponse;
hotfixQueryResponse.Hotfixes.reserve(hotfixQuery.Hotfixes.size());
- for (DB2Manager::HotfixRecord const& hotfixRecord : hotfixQuery.Hotfixes)
+ for (int32 hotfixId : hotfixQuery.Hotfixes)
{
- auto serverHotfixInfo = hotfixes.find(hotfixRecord);
- if (serverHotfixInfo != hotfixes.end())
+ if (std::vector<DB2Manager::HotfixRecord> const* hotfixRecords = Trinity::Containers::MapGetValuePtr(hotfixes, hotfixId))
{
- hotfixQueryResponse.Hotfixes.emplace_back();
-
- WorldPackets::Hotfix::HotfixConnect::HotfixData& hotfixData = hotfixQueryResponse.Hotfixes.back();
- hotfixData.Record = *serverHotfixInfo;
- if (serverHotfixInfo->HotfixStatus == DB2Manager::HotfixRecord::Status::Valid)
+ for (DB2Manager::HotfixRecord const& hotfixRecord : *hotfixRecords)
{
- DB2StorageBase const* storage = sDB2Manager.GetStorage(hotfixRecord.TableHash);
- if (storage && storage->HasRecord(uint32(hotfixRecord.RecordID)))
- {
- std::size_t pos = hotfixQueryResponse.HotfixContent.size();
- storage->WriteRecord(uint32(hotfixRecord.RecordID), GetSessionDbcLocale(), hotfixQueryResponse.HotfixContent);
+ hotfixQueryResponse.Hotfixes.emplace_back();
- if (std::vector<DB2Manager::HotfixOptionalData> const* optionalDataEntries = sDB2Manager.GetHotfixOptionalData(hotfixRecord.TableHash, hotfixRecord.RecordID, GetSessionDbcLocale()))
+ WorldPackets::Hotfix::HotfixConnect::HotfixData& hotfixData = hotfixQueryResponse.Hotfixes.back();
+ hotfixData.Record = hotfixRecord;
+ if (hotfixRecord.HotfixStatus == DB2Manager::HotfixRecord::Status::Valid)
+ {
+ DB2StorageBase const* storage = sDB2Manager.GetStorage(hotfixRecord.TableHash);
+ if (storage && storage->HasRecord(uint32(hotfixRecord.RecordID)))
{
- for (DB2Manager::HotfixOptionalData const& optionalData : *optionalDataEntries)
+ std::size_t pos = hotfixQueryResponse.HotfixContent.size();
+ storage->WriteRecord(uint32(hotfixRecord.RecordID), GetSessionDbcLocale(), hotfixQueryResponse.HotfixContent);
+
+ if (std::vector<DB2Manager::HotfixOptionalData> const* optionalDataEntries = sDB2Manager.GetHotfixOptionalData(hotfixRecord.TableHash, hotfixRecord.RecordID, GetSessionDbcLocale()))
{
- hotfixQueryResponse.HotfixContent << uint32(optionalData.Key);
- hotfixQueryResponse.HotfixContent.append(optionalData.Data.data(), optionalData.Data.size());
+ for (DB2Manager::HotfixOptionalData const& optionalData : *optionalDataEntries)
+ {
+ hotfixQueryResponse.HotfixContent << uint32(optionalData.Key);
+ hotfixQueryResponse.HotfixContent.append(optionalData.Data.data(), optionalData.Data.size());
+ }
}
- }
- hotfixData.Size = hotfixQueryResponse.HotfixContent.size() - pos;
- }
- else if (std::vector<uint8> const* blobData = sDB2Manager.GetHotfixBlobData(hotfixRecord.TableHash, hotfixRecord.RecordID, GetSessionDbcLocale()))
- {
- hotfixData.Size = blobData->size();
- hotfixQueryResponse.HotfixContent.append(blobData->data(), blobData->size());
+ hotfixData.Size = hotfixQueryResponse.HotfixContent.size() - pos;
+ }
+ else if (std::vector<uint8> const* blobData = sDB2Manager.GetHotfixBlobData(hotfixRecord.TableHash, hotfixRecord.RecordID, GetSessionDbcLocale()))
+ {
+ hotfixData.Size = blobData->size();
+ hotfixQueryResponse.HotfixContent.append(blobData->data(), blobData->size());
+ }
}
}
}
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 5fc0f8468a5..858b88f540d 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -633,7 +633,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge
void WorldSession::HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData& packet)
{
- TC_LOG_DEBUG("network", "WORLD: Received CMSG_UPDATE_ACCOUNT_DATA: type %u, time %u, decompressedSize %u",
+ TC_LOG_DEBUG("network", "WORLD: Received CMSG_UPDATE_ACCOUNT_DATA: type %u, time " SI64FMTD ", decompressedSize %u",
packet.DataType, packet.Time.AsUnderlyingType(), packet.Size);
if (packet.DataType > NUM_ACCOUNT_DATA_TYPES)
@@ -1127,10 +1127,11 @@ void WorldSession::HandleSetAdvancedCombatLogging(WorldPackets::ClientConfig::Se
_player->SetAdvancedCombatLogging(setAdvancedCombatLogging.Enable);
}
-void WorldSession::HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial& /*mountSpecial*/)
+void WorldSession::HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial& mountSpecial)
{
WorldPackets::Misc::SpecialMountAnim specialMountAnim;
specialMountAnim.UnitGUID = _player->GetGUID();
+ std::copy(mountSpecial.SpellVisualKitIDs.begin(), mountSpecial.SpellVisualKitIDs.end(), std::back_inserter(specialMountAnim.SpellVisualKitIDs));
GetPlayer()->SendMessageToSet(specialMountAnim.Write(), false);
}
diff --git a/src/server/game/Server/Packets/AchievementPackets.cpp b/src/server/game/Server/Packets/AchievementPackets.cpp
index 945ad376645..0ff94bd5bc2 100644
--- a/src/server/game/Server/Packets/AchievementPackets.cpp
+++ b/src/server/game/Server/Packets/AchievementPackets.cpp
@@ -158,6 +158,7 @@ WorldPacket const* WorldPackets::Achievement::GuildCriteriaUpdate::Write()
_worldPacket << progress.DateCreated;
_worldPacket << progress.DateStarted;
_worldPacket.AppendPackedTime(progress.DateUpdated);
+ _worldPacket << uint32(0); // this is a hack. this is a packed time written as int64 (progress.DateUpdated)
_worldPacket << uint64(progress.Quantity);
_worldPacket << progress.PlayerGUID;
_worldPacket << int32(progress.Flags);
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index 9b96753af8b..752b6b144c4 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -197,7 +197,10 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
WorldPacket const* WorldPackets::Chat::Emote::Write()
{
_worldPacket << Guid;
- _worldPacket << EmoteID;
+ _worldPacket << uint32(EmoteID);
+ _worldPacket << uint32(SpellVisualKitIDs.size());
+ if (!SpellVisualKitIDs.empty())
+ _worldPacket.append(SpellVisualKitIDs.data(), SpellVisualKitIDs.size());
return &_worldPacket;
}
@@ -207,6 +210,9 @@ void WorldPackets::Chat::CTextEmote::Read()
_worldPacket >> Target;
_worldPacket >> EmoteID;
_worldPacket >> SoundIndex;
+ SpellVisualKitIDs.resize(_worldPacket.read<uint32>());
+ for (int32& spellVisualKitId : SpellVisualKitIDs)
+ _worldPacket >> spellVisualKitId;
}
WorldPacket const* WorldPackets::Chat::STextEmote::Write()
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index bd93a72a75d..ad6fc825bf7 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -180,7 +180,8 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid Guid;
- int32 EmoteID = 0;
+ uint32 EmoteID = 0;
+ std::vector<int32> SpellVisualKitIDs;
};
class CTextEmote final : public ClientPacket
@@ -193,6 +194,7 @@ namespace WorldPackets
ObjectGuid Target;
int32 EmoteID = 0;
int32 SoundIndex = -1;
+ Array<int32, 2> SpellVisualKitIDs;
};
class STextEmote final : public ServerPacket
diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp
index 6129538fc3f..87e4cf56fa3 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.cpp
+++ b/src/server/game/Server/Packets/GarrisonPackets.cpp
@@ -91,12 +91,12 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonFollower const& follower)
ByteBuffer& operator<<(ByteBuffer& data, GarrisonMission const& mission)
{
data << uint64(mission.DbID);
- data << uint32(mission.MissionRecID);
data << mission.OfferTime;
data << mission.OfferDuration;
data << mission.StartTime;
data << mission.TravelDuration;
data << mission.MissionDuration;
+ data << uint32(mission.MissionRecID);
data << uint32(mission.MissionState);
data << uint32(mission.SuccessChance);
data << uint32(mission.Flags);
@@ -125,8 +125,8 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonMissionReward const& missionRew
ByteBuffer& operator<<(ByteBuffer& data, GarrisonMissionBonusAbility const& areaBonus)
{
- data << uint32(areaBonus.GarrMssnBonusAbilityID);
data << areaBonus.StartTime;
+ data << uint32(areaBonus.GarrMssnBonusAbilityID);
return data;
}
@@ -174,8 +174,8 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonCollection const& collection)
ByteBuffer& operator<<(ByteBuffer& data, GarrisonEventEntry const& event)
{
+ data << int64(event.EventValue);
data << int32(event.EntryID);
- data << int32(event.EventValue);
return data;
}
@@ -214,6 +214,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison)
data << uint32(garrison.ArchivedMissions.size());
data << int32(garrison.NumFollowerActivationsRemaining);
data << uint32(garrison.NumMissionsStartedToday);
+ data << int32(garrison.MinAutoTroopLevel);
for (GarrisonPlotInfo* plot : garrison.Plots)
data << *plot;
diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h
index dbddb791ea2..27dc258aaf0 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.h
+++ b/src/server/game/Server/Packets/GarrisonPackets.h
@@ -165,7 +165,7 @@ namespace WorldPackets
struct GarrisonEventEntry
{
int32 EntryID = 0;
- int32 EventValue = 0;
+ int64 EventValue = 0;
};
struct GarrisonEventList
@@ -181,6 +181,7 @@ namespace WorldPackets
uint32 GarrSiteLevelID = 0;
uint32 NumFollowerActivationsRemaining = 0;
uint32 NumMissionsStartedToday = 0; // might mean something else, but sending 0 here enables follower abilities "Increase success chance of the first mission of the day by %."
+ int32 MinAutoTroopLevel = 0;
std::vector<GarrisonPlotInfo*> Plots;
std::vector<GarrisonBuildingInfo const*> Buildings;
std::vector<GarrisonFollower const*> Followers;
diff --git a/src/server/game/Server/Packets/HotfixPackets.cpp b/src/server/game/Server/Packets/HotfixPackets.cpp
index 6a6a42ade75..4c7a9009b5c 100644
--- a/src/server/game/Server/Packets/HotfixPackets.cpp
+++ b/src/server/game/Server/Packets/HotfixPackets.cpp
@@ -65,9 +65,9 @@ WorldPacket const* DBReply::Write()
WorldPacket const* AvailableHotfixes::Write()
{
_worldPacket << int32(VirtualRealmAddress);
- _worldPacket << uint32(HotfixCount);
- for (DB2Manager::HotfixRecord const& hotfixRecord : Hotfixes)
- _worldPacket << hotfixRecord;
+ _worldPacket << uint32(Hotfixes.size());
+ for (DB2Manager::HotfixContainer::value_type const& hotfixRecord : Hotfixes)
+ _worldPacket << int32(hotfixRecord.first);
return &_worldPacket;
}
@@ -82,8 +82,8 @@ void HotfixRequest::Read()
throw PacketArrayMaxCapacityException(hotfixCount, sDB2Manager.GetHotfixCount());
Hotfixes.resize(hotfixCount);
- for (DB2Manager::HotfixRecord& hotfixRecord : Hotfixes)
- _worldPacket >> hotfixRecord;
+ for (int32& hotfixId : Hotfixes)
+ _worldPacket >> hotfixId;
}
ByteBuffer& operator<<(ByteBuffer& data, HotfixConnect::HotfixData const& hotfixData)
diff --git a/src/server/game/Server/Packets/HotfixPackets.h b/src/server/game/Server/Packets/HotfixPackets.h
index 9c6bf084e67..385afb32de4 100644
--- a/src/server/game/Server/Packets/HotfixPackets.h
+++ b/src/server/game/Server/Packets/HotfixPackets.h
@@ -61,13 +61,12 @@ namespace WorldPackets
class AvailableHotfixes final : public ServerPacket
{
public:
- AvailableHotfixes(int32 virtualRealmAddress, uint32 hotfixCount, DB2Manager::HotfixContainer const& hotfixes)
- : ServerPacket(SMSG_AVAILABLE_HOTFIXES), VirtualRealmAddress(virtualRealmAddress), HotfixCount(hotfixCount), Hotfixes(hotfixes) { }
+ AvailableHotfixes(int32 virtualRealmAddress, DB2Manager::HotfixContainer const& hotfixes)
+ : ServerPacket(SMSG_AVAILABLE_HOTFIXES), VirtualRealmAddress(virtualRealmAddress), Hotfixes(hotfixes) { }
WorldPacket const* Write() override;
int32 VirtualRealmAddress;
- uint32 HotfixCount;
DB2Manager::HotfixContainer const& Hotfixes;
};
@@ -80,7 +79,7 @@ namespace WorldPackets
uint32 ClientBuild = 0;
uint32 DataBuild = 0;
- std::vector<DB2Manager::HotfixRecord> Hotfixes;
+ std::vector<int32> Hotfixes;
};
class HotfixConnect final : public ServerPacket
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index 85d2d2823cd..dec97e556ab 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -631,9 +631,20 @@ WorldPacket const* WorldPackets::Misc::AccountHeirloomUpdate::Write()
return &_worldPacket;
}
+void WorldPackets::Misc::MountSpecial::Read()
+{
+ SpellVisualKitIDs.resize(_worldPacket.read<uint32>());
+ for (int32& spellVisualKitId : SpellVisualKitIDs)
+ _worldPacket >> spellVisualKitId;
+}
+
WorldPacket const* WorldPackets::Misc::SpecialMountAnim::Write()
{
_worldPacket << UnitGUID;
+ _worldPacket << uint32(SpellVisualKitIDs.size());
+ if (!SpellVisualKitIDs.empty())
+ _worldPacket.append(SpellVisualKitIDs.data(), SpellVisualKitIDs.size());
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 1f04b8d09ba..7b0e25514ae 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -815,7 +815,9 @@ namespace WorldPackets
public:
MountSpecial(WorldPacket&& packet) : ClientPacket(CMSG_MOUNT_SPECIAL_ANIM, std::move(packet)) { }
- void Read() override { }
+ void Read() override;
+
+ Array<int32, 2> SpellVisualKitIDs;
};
class SpecialMountAnim final : public ServerPacket
@@ -826,6 +828,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid UnitGUID;
+ std::vector<int32> SpellVisualKitIDs;
};
class CrossedInebriationThreshold final : public ServerPacket
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 951a5f152b8..1f8d2dcec60 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -183,6 +183,7 @@ WorldPacket const* GossipPOI::Write()
_worldPacket << Pos;
_worldPacket << int32(Icon);
_worldPacket << int32(Importance);
+ _worldPacket << int32(Unknown905);
_worldPacket.WriteBits(Flags, 14);
_worldPacket.WriteBits(Name.length(), 6);
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index b3f85e218ed..3bfa84438b3 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -206,6 +206,7 @@ namespace WorldPackets
TaggedPosition<Position::XY> Pos;
int32 Icon = 0;
int32 Importance = 0;
+ int32 Unknown905 = 0;
std::string Name;
};
diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h
index 522e91c43d6..8b119cf1f61 100644
--- a/src/server/game/Server/Packets/PacketUtilities.h
+++ b/src/server/game/Server/Packets/PacketUtilities.h
@@ -103,7 +103,7 @@ namespace WorldPackets
storage_type _storage;
};
- template<typename Underlying = uint32>
+ template<typename Underlying = int64>
class Timestamp
{
public:
@@ -149,7 +149,7 @@ namespace WorldPackets
time_t _value = time_t(0);
};
- template<typename ChronoDuration, typename Underlying = uint32>
+ template<typename ChronoDuration, typename Underlying = int64>
class Duration
{
public:
diff --git a/src/server/game/Server/Packets/TokenPackets.cpp b/src/server/game/Server/Packets/TokenPackets.cpp
index dc1b6376b48..5b9182d0c27 100644
--- a/src/server/game/Server/Packets/TokenPackets.cpp
+++ b/src/server/game/Server/Packets/TokenPackets.cpp
@@ -31,8 +31,8 @@ WorldPacket const* WorldPackets::Token::CommerceTokenGetLogResponse::Write()
{
_worldPacket << auctionableTokenAuctionable.UnkInt1;
_worldPacket << auctionableTokenAuctionable.UnkInt2;
- _worldPacket << auctionableTokenAuctionable.Owner;
_worldPacket << auctionableTokenAuctionable.BuyoutPrice;
+ _worldPacket << auctionableTokenAuctionable.Owner;
_worldPacket << auctionableTokenAuctionable.DurationLeft;
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index da33ce85f02..ad9ce55fd19 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -355,6 +355,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CONVERSATION_LINE_STARTED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CONVERT_RAID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleConvertRaidOpcode);
+ DEFINE_HANDLER(CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCreateOpcode);
DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DB_QUERY_BULK, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleDBQueryBulk);
@@ -934,6 +935,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_ADVANCED_COMBAT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_MAP_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGETS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1183,6 +1185,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_PREVIEW_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_RENOWN_OPEN_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_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);
@@ -1267,6 +1270,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES, 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_AUTO_TROOP_MIN_LEVEL_UPDATE_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_REMOVED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1328,6 +1332,7 @@ void OpcodeTable::Initialize()
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_UPDATE_MISSION_CHEAT_RESULT, 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);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 9ef346da4e7..ead391e7832 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -44,29 +44,29 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
- CMSG_ABANDON_NPE_RESPONSE = 0x33EF,
+ CMSG_ABANDON_NPE_RESPONSE = 0x33F1,
CMSG_ACCEPT_GUILD_INVITE = 0x35FC,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
- CMSG_ACTIVATE_SOULBIND = 0x33DF,
+ CMSG_ACTIVATE_SOULBIND = 0x33E1,
CMSG_ACTIVATE_TAXI = 0x34B1,
CMSG_ADDON_LIST = 0x35D8,
CMSG_ADD_BATTLENET_FRIEND = 0x365A,
CMSG_ADD_FRIEND = 0x36D0,
CMSG_ADD_IGNORE = 0x36D4,
- CMSG_ADD_TOY = 0x32A6,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3206,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E2,
- CMSG_ADVENTURE_MAP_START_QUEST = 0x335B,
+ CMSG_ADD_TOY = 0x32A7,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3207,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E4,
+ CMSG_ADVENTURE_MAP_START_QUEST = 0x335D,
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_AREA_TRIGGER = 0x31DA,
+ CMSG_ARTIFACT_ADD_POWER = 0x31AC,
+ CMSG_ARTIFACT_SET_APPEARANCE = 0x31AE,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3210,
+ CMSG_ATTACK_STOP = 0x325F,
+ CMSG_ATTACK_SWING = 0x325E,
CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E8,
CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E9,
CMSG_AUCTION_BROWSE_QUERY = 0x34D6,
@@ -94,15 +94,15 @@ 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 = 0x3384,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3366,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3386,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3385,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3386,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3368,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3388,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3387,
CMSG_BANKER_ACTIVATE = 0x34B9,
CMSG_BATTLEFIELD_LEAVE = 0x3173,
- CMSG_BATTLEFIELD_LIST = 0x317E,
+ CMSG_BATTLEFIELD_LIST = 0x317F,
CMSG_BATTLEFIELD_PORT = 0x3537,
- CMSG_BATTLEMASTER_HELLO = 0x32C0,
+ CMSG_BATTLEMASTER_HELLO = 0x32C1,
CMSG_BATTLEMASTER_JOIN = 0x3530,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x3531,
CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3535,
@@ -128,21 +128,21 @@ enum OpcodeClient : uint16
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_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E4,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E3,
CMSG_BEGIN_TRADE = 0x3157,
CMSG_BINDER_ACTIVATE = 0x34B8,
CMSG_BLACK_MARKET_BID_ON_ITEM = 0x353F,
CMSG_BLACK_MARKET_OPEN = 0x353D,
CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353E,
- CMSG_BONUS_ROLL = 0x3387,
+ CMSG_BONUS_ROLL = 0x3389,
CMSG_BUG_REPORT = 0x3686,
CMSG_BUSY_TRADE = 0x3158,
CMSG_BUY_BACK_ITEM = 0x34AA,
CMSG_BUY_BANK_SLOT = 0x34BA,
CMSG_BUY_ITEM = 0x34A9,
CMSG_BUY_REAGENT_BANK = 0x34BB,
- CMSG_CAGE_BATTLE_PET = 0x31F5,
+ CMSG_CAGE_BATTLE_PET = 0x31F6,
CMSG_CALENDAR_ADD_EVENT = 0x367D,
CMSG_CALENDAR_COMMUNITY_INVITE = 0x3671,
CMSG_CALENDAR_COMPLAIN = 0x3679,
@@ -158,24 +158,24 @@ enum OpcodeClient : uint16
CMSG_CALENDAR_RSVP = 0x3674,
CMSG_CALENDAR_STATUS = 0x3675,
CMSG_CALENDAR_UPDATE_EVENT = 0x367E,
- CMSG_CANCEL_AURA = 0x31AF,
+ CMSG_CANCEL_AURA = 0x31B0,
CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5,
- CMSG_CANCEL_CAST = 0x32AC,
- 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 = 0x328E,
- CMSG_CANCEL_QUEUED_SPELL = 0x317F,
+ CMSG_CANCEL_CAST = 0x32AD,
+ CMSG_CANCEL_CHANNELLING = 0x3277,
+ CMSG_CANCEL_GROWTH_AURA = 0x327C,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3218,
+ CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AF,
+ CMSG_CANCEL_MOUNT_AURA = 0x328F,
+ CMSG_CANCEL_QUEUED_SPELL = 0x3180,
CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500,
CMSG_CANCEL_TRADE = 0x315C,
CMSG_CAN_DUEL = 0x3662,
CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3709,
- CMSG_CAST_SPELL = 0x32A9,
+ CMSG_CAST_SPELL = 0x32AA,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x333F,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3340,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3321,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x3341,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3342,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3322,
CMSG_CHANGE_REALM_TICKET = 0x36FC,
CMSG_CHANGE_SUB_GROUP = 0x364C,
CMSG_CHARACTER_CHECK_UPGRADE = 0x36C6,
@@ -222,17 +222,17 @@ enum OpcodeClient : uint16
CMSG_CHAT_REPORT_IGNORED = 0x37CB,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645,
- CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x324F,
- CMSG_CHOICE_RESPONSE = 0x32B0,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33DE,
- CMSG_CLAIM_WEEKLY_REWARD = 0x33B9,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3250,
+ CMSG_CHOICE_RESPONSE = 0x32B1,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33E0,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x33BB,
CMSG_CLEAR_NEW_APPEARANCE = 0x312F,
- CMSG_CLEAR_RAID_MARKER = 0x31A7,
+ CMSG_CLEAR_RAID_MARKER = 0x31A8,
CMSG_CLEAR_TRADE_ITEM = 0x315E,
CMSG_CLIENT_PORT_GRAVEYARD = 0x3539,
CMSG_CLOSE_INTERACTION = 0x3499,
- CMSG_CLOSE_QUEST_CHOICE = 0x32B1,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E6,
+ CMSG_CLOSE_QUEST_CHOICE = 0x32B2,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E8,
CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371F,
CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371D,
CMSG_CLUB_FINDER_POST = 0x371A,
@@ -257,8 +257,8 @@ enum OpcodeClient : uint16
CMSG_COMPLAINT = 0x366C,
CMSG_COMPLETE_CINEMATIC = 0x3557,
CMSG_COMPLETE_MOVIE = 0x34EB,
- CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AC,
- CMSG_CONFIRM_RESPEC_WIPE = 0x3211,
+ CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AD,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3212,
CMSG_CONNECT_TO_FAILED = 0x35D4,
CMSG_CONSUMABLE_TOKEN_BUY = 0x36EB,
CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36EC,
@@ -269,16 +269,17 @@ enum OpcodeClient : uint16
CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356A,
CMSG_CONVERSATION_LINE_STARTED = 0x3558,
CMSG_CONVERT_RAID = 0x364E,
+ CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x357D,
CMSG_CREATE_CHARACTER = 0x3644,
- CMSG_CREATE_SHIPMENT = 0x330D,
+ CMSG_CREATE_SHIPMENT = 0x330E,
CMSG_DB_QUERY_BULK = 0x35E4,
CMSG_DECLINE_GUILD_INVITES = 0x352D,
CMSG_DECLINE_PETITION = 0x3546,
CMSG_DELETE_EQUIPMENT_SET = 0x3519,
CMSG_DEL_FRIEND = 0x36D1,
CMSG_DEL_IGNORE = 0x36D5,
- CMSG_DEPOSIT_REAGENT_BANK = 0x3348,
- CMSG_DESTROY_ITEM = 0x32A0,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x334A,
+ CMSG_DESTROY_ITEM = 0x32A1,
CMSG_DF_BOOT_PLAYER_VOTE = 0x3615,
CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3607,
CMSG_DF_GET_JOIN_STATUS = 0x3613,
@@ -292,10 +293,10 @@ enum OpcodeClient : uint16
CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3E,
CMSG_DISMISS_CRITTER = 0x3507,
CMSG_DO_COUNTDOWN = 0x3719,
- CMSG_DO_MASTER_LOOT_ROLL = 0x3216,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x3217,
CMSG_DO_READY_CHECK = 0x3634,
CMSG_DUEL_RESPONSE = 0x34F0,
- CMSG_EJECT_PASSENGER = 0x3244,
+ CMSG_EJECT_PASSENGER = 0x3245,
CMSG_EMOTE = 0x3553,
CMSG_ENABLE_NAGLE = 0x376B,
CMSG_ENABLE_TAXI_NODE = 0x34AF,
@@ -304,47 +305,47 @@ enum OpcodeClient : uint16
CMSG_ENUM_CHARACTERS = 0x35E8,
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_EVENT_DEBUG_DISABLE = 0x31B4,
+ CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B3,
CMSG_GAME_OBJ_REPORT_USE = 0x34FD,
CMSG_GAME_OBJ_USE = 0x34FC,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3308,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32EE,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32DB,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x333B,
- CMSG_GARRISON_COMPLETE_MISSION = 0x332E,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3309,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x32F1,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3300,
- CMSG_GARRISON_GET_MAP_DATA = 0x3307,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x335F,
- CMSG_GARRISON_LEARN_TALENT = 0x32FC,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3330,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x32D7,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F3,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x3325,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32EF,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x32F0,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32D6,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x330B,
- CMSG_GARRISON_RESEARCH_TALENT = 0x32F4,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32D8,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32EC,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E4,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F2,
- CMSG_GARRISON_SOCKET_TALENT = 0x33F2,
- CMSG_GARRISON_START_MISSION = 0x332D,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x32DC,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3309,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32EF,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32DC,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x333D,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x332F,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x330A,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x32F2,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3301,
+ CMSG_GARRISON_GET_MAP_DATA = 0x3308,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x3361,
+ CMSG_GARRISON_LEARN_TALENT = 0x32FD,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3331,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x32D8,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F4,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3326,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32F0,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x32F1,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32D7,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x330C,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x32F5,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32D9,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32ED,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E5,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F3,
+ CMSG_GARRISON_SOCKET_TALENT = 0x33F4,
+ CMSG_GARRISON_START_MISSION = 0x332E,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x32DD,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B6,
- CMSG_GET_GARRISON_INFO = 0x32D1,
+ CMSG_GET_GARRISON_INFO = 0x32D2,
CMSG_GET_ITEM_PURCHASE_DATA = 0x3541,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x330C,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x32A4,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x330D,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x32A5,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
CMSG_GET_RAF_ACCOUNT_INFO = 0x3723,
CMSG_GET_REMAINING_GAME_TIME = 0x36ED,
- CMSG_GET_TROPHY_LIST = 0x331E,
+ CMSG_GET_TROPHY_LIST = 0x331F,
CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E0,
CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36F2,
CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36F3,
@@ -397,34 +398,34 @@ enum OpcodeClient : uint16
CMSG_GUILD_UPDATE_INFO_TEXT = 0x3076,
CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3075,
CMSG_HEARTH_AND_RESURRECT = 0x3515,
- CMSG_HIDE_QUEST_CHOICE = 0x32B2,
+ CMSG_HIDE_QUEST_CHOICE = 0x32B3,
CMSG_HOTFIX_REQUEST = 0x35E5,
CMSG_IGNORE_TRADE = 0x3159,
CMSG_INITIATE_ROLE_POLL = 0x35DA,
CMSG_INITIATE_TRADE = 0x3156,
CMSG_INSPECT = 0x353B,
CMSG_INSTANCE_LOCK_RESPONSE = 0x351A,
- CMSG_ISLAND_QUEUE = 0x33B5,
+ CMSG_ISLAND_QUEUE = 0x33B7,
CMSG_ITEM_PURCHASE_REFUND = 0x3542,
- CMSG_ITEM_TEXT_QUERY = 0x333C,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x31E0,
- CMSG_JOIN_RATED_BATTLEGROUND = 0x3178,
+ CMSG_ITEM_TEXT_QUERY = 0x333E,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x31E1,
+ CMSG_JOIN_RATED_BATTLEGROUND = 0x3179,
CMSG_KEEP_ALIVE = 0x367F,
- CMSG_KEYBOUND_OVERRIDE = 0x3229,
+ CMSG_KEYBOUND_OVERRIDE = 0x322A,
CMSG_LEARN_PVP_TALENTS = 0x3568,
CMSG_LEARN_TALENTS = 0x3566,
CMSG_LEAVE_GROUP = 0x3649,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E1,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E2,
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 = 0x3382,
+ CMSG_LFG_LIST_JOIN = 0x3384,
CMSG_LFG_LIST_LEAVE = 0x3609,
CMSG_LFG_LIST_SEARCH = 0x360B,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3383,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x3385,
CMSG_LF_GUILD_ADD_RECRUIT = 0x361B,
CMSG_LF_GUILD_BROWSE = 0x361D,
CMSG_LF_GUILD_DECLINE_RECRUIT = 0x3079,
@@ -439,33 +440,33 @@ enum OpcodeClient : uint16
CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B7,
CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36BA,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
- CMSG_LOAD_SELECTED_TROPHY = 0x331F,
+ CMSG_LOAD_SELECTED_TROPHY = 0x3320,
CMSG_LOGOUT_CANCEL = 0x34E6,
CMSG_LOGOUT_INSTANT = 0x34E7,
CMSG_LOGOUT_REQUEST = 0x34E4,
CMSG_LOG_DISCONNECT = 0x3769,
CMSG_LOG_STREAMING_ERROR = 0x376D,
- CMSG_LOOT_ITEM = 0x3214,
- CMSG_LOOT_MONEY = 0x3213,
- CMSG_LOOT_RELEASE = 0x3218,
- CMSG_LOOT_ROLL = 0x3219,
- CMSG_LOOT_UNIT = 0x3212,
+ CMSG_LOOT_ITEM = 0x3215,
+ CMSG_LOOT_MONEY = 0x3214,
+ CMSG_LOOT_RELEASE = 0x3219,
+ CMSG_LOOT_ROLL = 0x321A,
+ CMSG_LOOT_UNIT = 0x3213,
CMSG_LOW_LEVEL_RAID1 = 0x36A2,
CMSG_LOW_LEVEL_RAID2 = 0x3521,
CMSG_MAIL_CREATE_TEXT_ITEM = 0x354D,
- CMSG_MAIL_DELETE = 0x322B,
+ CMSG_MAIL_DELETE = 0x322C,
CMSG_MAIL_GET_LIST = 0x3548,
CMSG_MAIL_MARK_AS_READ = 0x354C,
CMSG_MAIL_RETURN_TO_SENDER = 0x3655,
CMSG_MAIL_TAKE_ITEM = 0x354A,
CMSG_MAIL_TAKE_MONEY = 0x3549,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322D,
- CMSG_MASTER_LOOT_ITEM = 0x3215,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322E,
+ CMSG_MASTER_LOOT_ITEM = 0x3216,
CMSG_MINIMAP_PING = 0x364B,
- CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A,
+ CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318B,
CMSG_MOUNT_CLEAR_FANFARE = 0x312D,
CMSG_MOUNT_SET_FAVORITE = 0x3632,
- CMSG_MOUNT_SPECIAL_ANIM = 0x328F,
+ CMSG_MOUNT_SPECIAL_ANIM = 0x3290,
CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A14,
CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2E,
CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A33,
@@ -535,40 +536,40 @@ enum OpcodeClient : uint16
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_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D7,
CMSG_NEXT_CINEMATIC_CAMERA = 0x3556,
- CMSG_OBJECT_UPDATE_FAILED = 0x3180,
- CMSG_OBJECT_UPDATE_RESCUED = 0x3181,
- CMSG_OFFER_PETITION = 0x33DD,
+ CMSG_OBJECT_UPDATE_FAILED = 0x3181,
+ CMSG_OBJECT_UPDATE_RESCUED = 0x3182,
+ CMSG_OFFER_PETITION = 0x33DF,
CMSG_OPENING_CINEMATIC = 0x3555,
- CMSG_OPEN_ITEM = 0x333D,
- CMSG_OPEN_MISSION_NPC = 0x3302,
- CMSG_OPEN_SHIPMENT_NPC = 0x330A,
- CMSG_OPEN_TRADESKILL_NPC = 0x3315,
+ CMSG_OPEN_ITEM = 0x333F,
+ CMSG_OPEN_MISSION_NPC = 0x3303,
+ CMSG_OPEN_SHIPMENT_NPC = 0x330B,
+ CMSG_OPEN_TRADESKILL_NPC = 0x3316,
CMSG_OPT_OUT_OF_LOOT = 0x3504,
CMSG_OVERRIDE_SCREEN_FLASH = 0x352E,
CMSG_PARTY_INVITE = 0x3602,
CMSG_PARTY_INVITE_RESPONSE = 0x3603,
CMSG_PARTY_UNINVITE = 0x3647,
- CMSG_PERFORM_ITEM_INTERACTION = 0x3235,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x3236,
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_FINAL_NOTIFY = 0x31E6,
CMSG_PET_BATTLE_INPUT = 0x3641,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322A,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E4,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322B,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E5,
CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3642,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x31DE,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DF,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x31DC,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E6,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DD,
+ CMSG_PET_BATTLE_REQUEST_PVP = 0x31DF,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31E0,
+ CMSG_PET_BATTLE_REQUEST_WILD = 0x31DD,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E7,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DE,
CMSG_PET_CANCEL_AURA = 0x3494,
- CMSG_PET_CAST_SPELL = 0x32A8,
+ CMSG_PET_CAST_SPELL = 0x32A9,
CMSG_PET_RENAME = 0x3685,
CMSG_PET_SET_ACTION = 0x3490,
CMSG_PET_SPELL_AUTOCAST = 0x3495,
@@ -576,31 +577,31 @@ enum OpcodeClient : uint16
CMSG_PING = 0x3768,
CMSG_PLAYER_LOGIN = 0x35EA,
CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
- CMSG_PVP_LOG_DATA = 0x317B,
- CMSG_QUERY_BATTLE_PET_NAME = 0x3282,
+ CMSG_PVP_LOG_DATA = 0x317C,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x3283,
CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660,
CMSG_QUERY_CORPSE_TRANSPORT = 0x3661,
- CMSG_QUERY_COUNTDOWN_TIMER = 0x31AA,
- CMSG_QUERY_CREATURE = 0x327C,
- CMSG_QUERY_GAME_OBJECT = 0x327D,
- CMSG_QUERY_GARRISON_PET_NAME = 0x3283,
+ CMSG_QUERY_COUNTDOWN_TIMER = 0x31AB,
+ CMSG_QUERY_CREATURE = 0x327D,
+ CMSG_QUERY_GAME_OBJECT = 0x327E,
+ CMSG_QUERY_GARRISON_PET_NAME = 0x3284,
CMSG_QUERY_GUILD_INFO = 0x368E,
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E,
CMSG_QUERY_NEXT_MAIL_TIME = 0x354B,
- CMSG_QUERY_NPC_TEXT = 0x327E,
- CMSG_QUERY_PAGE_TEXT = 0x3280,
- CMSG_QUERY_PETITION = 0x3284,
- CMSG_QUERY_PET_NAME = 0x3281,
+ CMSG_QUERY_NPC_TEXT = 0x327F,
+ CMSG_QUERY_PAGE_TEXT = 0x3281,
+ CMSG_QUERY_PETITION = 0x3285,
+ CMSG_QUERY_PET_NAME = 0x3282,
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 = 0x327F,
+ CMSG_QUERY_QUEST_INFO = 0x3280,
CMSG_QUERY_REALM_NAME = 0x368D,
CMSG_QUERY_SCENARIO_POI = 0x3656,
CMSG_QUERY_TIME = 0x34E3,
- CMSG_QUERY_TREASURE_PICKER = 0x3362,
- CMSG_QUERY_VOID_STORAGE = 0x31A3,
+ CMSG_QUERY_TREASURE_PICKER = 0x3364,
+ CMSG_QUERY_VOID_STORAGE = 0x31A4,
CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4,
CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E,
CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x34A0,
@@ -614,8 +615,8 @@ enum OpcodeClient : uint16
CMSG_QUEST_LOG_REMOVE_QUEST = 0x3540,
CMSG_QUEST_POI_QUERY = 0x36B0,
CMSG_QUEST_PUSH_RESULT = 0x34A6,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33CE,
- CMSG_QUEST_SESSION_REQUEST_START = 0x33CD,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33D0,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x33CF,
CMSG_QUEST_SESSION_REQUEST_STOP = 0x372E,
CMSG_QUEUED_MESSAGES_END = 0x376C,
CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3708,
@@ -630,66 +631,66 @@ enum OpcodeClient : uint16
CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E5,
CMSG_RANDOM_ROLL = 0x3654,
CMSG_READY_CHECK_RESPONSE = 0x3635,
- CMSG_READ_ITEM = 0x333E,
+ CMSG_READ_ITEM = 0x3340,
CMSG_RECLAIM_CORPSE = 0x34E9,
- CMSG_REMOVE_NEW_ITEM = 0x3365,
+ CMSG_REMOVE_NEW_ITEM = 0x3367,
CMSG_REMOVE_RAF_RECRUIT = 0x3727,
CMSG_REORDER_CHARACTERS = 0x35E9,
CMSG_REPAIR_ITEM = 0x34FA,
- CMSG_REPLACE_TROPHY = 0x3320,
+ CMSG_REPLACE_TROPHY = 0x3321,
CMSG_REPOP_REQUEST = 0x3538,
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 = 0x33C4,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x33C5,
+ CMSG_REPORT_SERVER_LAG = 0x33C6,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x33C7,
CMSG_REQUEST_ACCOUNT_DATA = 0x3698,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x3364,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x3366,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
- CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317D,
- CMSG_REQUEST_CEMETERY_LIST = 0x3176,
+ CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317E,
+ CMSG_REQUEST_CEMETERY_LIST = 0x3177,
CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368F,
- CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C3,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x33B7,
+ CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C4,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x33B9,
CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353C,
- CMSG_REQUEST_FORCED_REACTIONS = 0x320D,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F1,
- CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A9,
- CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A8,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C6,
- CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32B3,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x320A,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320B,
+ CMSG_REQUEST_FORCED_REACTIONS = 0x320E,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F3,
+ CMSG_REQUEST_GUILD_PARTY_STATE = 0x31AA,
+ CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A9,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C8,
+ CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32B4,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x320B,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320C,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653,
CMSG_REQUEST_PET_INFO = 0x3496,
- CMSG_REQUEST_PLAYED_TIME = 0x3287,
- CMSG_REQUEST_PVP_REWARDS = 0x3196,
+ CMSG_REQUEST_PLAYED_TIME = 0x3288,
+ CMSG_REQUEST_PVP_REWARDS = 0x3197,
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_SCHEDULED_PVP_INFO = 0x3197,
+ CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3198,
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 = 0x33BA,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3363,
- CMSG_RESET_CHALLENGE_MODE = 0x3208,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3209,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x3240,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3242,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3241,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3243,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x33BC,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3365,
+ CMSG_RESET_CHALLENGE_MODE = 0x3209,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x320A,
CMSG_RESET_INSTANCES = 0x3668,
CMSG_RESURRECT_RESPONSE = 0x3684,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x3322,
- CMSG_RIDE_VEHICLE_INTERACT = 0x3243,
- CMSG_SAVE_CUF_PROFILES = 0x318B,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3323,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x3244,
+ CMSG_SAVE_CUF_PROFILES = 0x318C,
CMSG_SAVE_EQUIPMENT_SET = 0x3518,
- CMSG_SAVE_GUILD_EMBLEM = 0x32B7,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x3226,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x3225,
- CMSG_SCENE_TRIGGER_EVENT = 0x3227,
+ CMSG_SAVE_GUILD_EMBLEM = 0x32B8,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x3227,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x3226,
+ CMSG_SCENE_TRIGGER_EVENT = 0x3228,
CMSG_SELF_RES = 0x3543,
CMSG_SELL_ITEM = 0x34A8,
CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36FB,
@@ -697,62 +698,62 @@ enum OpcodeClient : uint16
CMSG_SEND_MAIL = 0x35FA,
CMSG_SEND_TEXT_EMOTE = 0x348E,
CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369D,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322C,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322D,
CMSG_SET_ACTION_BAR_TOGGLES = 0x3544,
CMSG_SET_ACTION_BUTTON = 0x3636,
CMSG_SET_ACTIVE_MOVER = 0x3A39,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C4,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C5,
CMSG_SET_ASSISTANT_LEADER = 0x364F,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3341,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3342,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3343,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3344,
CMSG_SET_CONTACT_NOTES = 0x36D2,
CMSG_SET_CURRENCY_FLAGS = 0x3169,
- CMSG_SET_DIFFICULTY_ID = 0x3228,
+ CMSG_SET_DIFFICULTY_ID = 0x3229,
CMSG_SET_DUNGEON_DIFFICULTY = 0x3682,
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 = 0x3344,
+ CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31BB,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3346,
CMSG_SET_LOOT_METHOD = 0x3648,
CMSG_SET_LOOT_SPECIALIZATION = 0x3551,
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 = 0x32BB,
+ CMSG_SET_PREFERRED_CEMETERY = 0x3178,
+ CMSG_SET_PVP = 0x32BC,
CMSG_SET_RAID_DIFFICULTY = 0x36DC,
CMSG_SET_ROLE = 0x35D9,
CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3687,
CMSG_SET_SELECTION = 0x353A,
CMSG_SET_SHEATHED = 0x348F,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3343,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3345,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x3501,
- CMSG_SET_TITLE = 0x328D,
+ CMSG_SET_TITLE = 0x328E,
CMSG_SET_TRADE_CURRENCY = 0x3160,
CMSG_SET_TRADE_GOLD = 0x315F,
CMSG_SET_TRADE_ITEM = 0x315D,
- CMSG_SET_USING_PARTY_GARRISON = 0x3304,
- CMSG_SET_WAR_MODE = 0x32BC,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3305,
+ CMSG_SET_WAR_MODE = 0x32BD,
CMSG_SET_WATCHED_FACTION = 0x34EF,
CMSG_SHOW_TRADE_SKILL = 0x36C2,
CMSG_SIGN_PETITION = 0x3545,
CMSG_SILENCE_PARTY_TALKER = 0x3652,
CMSG_SOCKET_GEMS = 0x34F9,
- CMSG_SORT_BAGS = 0x3345,
- CMSG_SORT_BANK_BAGS = 0x3346,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x3347,
+ CMSG_SORT_BAGS = 0x3347,
+ CMSG_SORT_BANK_BAGS = 0x3348,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x3349,
CMSG_SPELL_CLICK = 0x349B,
CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B5,
CMSG_SPLIT_ITEM = 0x399E,
- CMSG_STAND_STATE_CHANGE = 0x3189,
+ CMSG_STAND_STATE_CHANGE = 0x318A,
CMSG_START_CHALLENGE_MODE = 0x355C,
CMSG_START_SPECTATOR_WAR_GAME = 0x35DF,
CMSG_START_WAR_GAME = 0x35DE,
CMSG_SUBMIT_USER_FEEDBACK = 0x3697,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E7,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E9,
CMSG_SUMMON_RESPONSE = 0x366A,
CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646,
CMSG_SURRENDER_ARENA = 0x3174,
@@ -761,8 +762,8 @@ enum OpcodeClient : uint16
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
CMSG_SWAP_SUB_GROUPS = 0x364D,
- CMSG_SWAP_VOID_ITEM = 0x31A5,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x32B8,
+ CMSG_SWAP_VOID_ITEM = 0x31A6,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x32B9,
CMSG_TALK_TO_GOSSIP = 0x3498,
CMSG_TAXI_NODE_STATUS_QUERY = 0x34AE,
CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B0,
@@ -772,46 +773,46 @@ enum OpcodeClient : uint16
CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3C,
CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3B,
CMSG_TOGGLE_DIFFICULTY = 0x3657,
- CMSG_TOGGLE_PVP = 0x32BA,
+ CMSG_TOGGLE_PVP = 0x32BB,
CMSG_TOTEM_DESTROYED = 0x3506,
CMSG_TOY_CLEAR_FANFARE = 0x312E,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x3361,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x3363,
CMSG_TRAINER_BUY_SPELL = 0x34B4,
CMSG_TRAINER_LIST = 0x34B3,
- CMSG_TRANSMOGRIFY_ITEMS = 0x3198,
+ CMSG_TRANSMOGRIFY_ITEMS = 0x3199,
CMSG_TURN_IN_PETITION = 0x3547,
CMSG_TUTORIAL = 0x36DD,
CMSG_TWITTER_CHECK_STATUS = 0x312A,
CMSG_TWITTER_CONNECT = 0x3127,
CMSG_TWITTER_DISCONNECT = 0x312B,
- CMSG_TWITTER_POST = 0x3349,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B6,
+ CMSG_TWITTER_POST = 0x334B,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B8,
CMSG_UNACCEPT_TRADE = 0x315B,
CMSG_UNDELETE_CHARACTER = 0x36DF,
CMSG_UNLEARN_SKILL = 0x34F3,
- CMSG_UNLEARN_SPECIALIZATION = 0x31A6,
- CMSG_UNLOCK_VOID_STORAGE = 0x31A2,
+ CMSG_UNLEARN_SPECIALIZATION = 0x31A7,
+ CMSG_UNLOCK_VOID_STORAGE = 0x31A3,
CMSG_UPDATE_ACCOUNT_DATA = 0x3699,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AB,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AC,
CMSG_UPDATE_CLIENT_SETTINGS = 0x3664,
CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A40,
CMSG_UPDATE_RAID_TARGET = 0x3650,
- CMSG_UPDATE_SPELL_VISUAL = 0x32AA,
+ CMSG_UPDATE_SPELL_VISUAL = 0x32AB,
CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F5,
- CMSG_UPGRADE_GARRISON = 0x32CC,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E5,
- CMSG_USED_FOLLOW = 0x3186,
- CMSG_USE_CRITTER_ITEM = 0x3249,
+ CMSG_UPGRADE_GARRISON = 0x32CD,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E7,
+ CMSG_USED_FOLLOW = 0x3187,
+ CMSG_USE_CRITTER_ITEM = 0x324A,
CMSG_USE_EQUIPMENT_SET = 0x3995,
- CMSG_USE_ITEM = 0x32A5,
- CMSG_USE_TOY = 0x32A7,
+ CMSG_USE_ITEM = 0x32A6,
+ CMSG_USE_TOY = 0x32A8,
CMSG_VAS_CHECK_TRANSFER_OK = 0x370D,
CMSG_VAS_GET_QUEUE_MINUTES = 0x370C,
CMSG_VAS_GET_SERVICE_STATUS = 0x370B,
- CMSG_VIOLENCE_LEVEL = 0x3184,
+ CMSG_VIOLENCE_LEVEL = 0x3185,
CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3711,
CMSG_VOICE_CHAT_LOGIN = 0x3710,
- CMSG_VOID_STORAGE_TRANSFER = 0x31A4,
+ CMSG_VOID_STORAGE_TRANSFER = 0x31A5,
CMSG_WARDEN3_DATA = 0x35EC,
CMSG_WHO = 0x3681,
CMSG_WHO_IS = 0x3680,
@@ -844,6 +845,7 @@ enum OpcodeServer : uint16
SMSG_ADD_LOSS_OF_CONTROL = 0x266D,
SMSG_ADD_RUNE_POWER = 0x26B5,
SMSG_ADJUST_SPLINE_DURATION = 0x25CF,
+ SMSG_ADVANCED_COMBAT_LOG = 0x2893,
SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x288D,
SMSG_ADVENTURE_MAP_OPEN_NPC = 0x27F7,
SMSG_AE_LOOT_TARGETS = 0x2615,
@@ -1051,7 +1053,7 @@ enum OpcodeServer : uint16
SMSG_CLEAR_RESURRECT = 0x257F,
SMSG_CLEAR_SPELL_CHARGES = 0x2C28,
SMSG_CLEAR_TARGET = 0x2942,
- SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA0,
+ SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1,
SMSG_CLOSE_ARTIFACT_FORGE = 0x27A3,
SMSG_CLOSE_HEART_FORGE = 0x282B,
SMSG_CLOSE_ITEM_FORGE = 0x27A1,
@@ -1090,9 +1092,10 @@ enum OpcodeServer : uint16
SMSG_CORPSE_LOCATION = 0x264B,
SMSG_CORPSE_RECLAIM_DELAY = 0x274E,
SMSG_CORPSE_TRANSPORT_QUERY = 0x2717,
- SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA2,
+ SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3,
SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x2800,
SMSG_COVENANT_RENOWN_OPEN_NPC = 0x288F,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2891,
SMSG_CREATE_CHAR = 0x2704,
SMSG_CREATE_SHIPMENT_RESPONSE = 0x279B,
SMSG_CRITERIA_DELETED = 0x26EB,
@@ -1117,7 +1120,7 @@ enum OpcodeServer : uint16
SMSG_DISPLAY_GAME_ERROR = 0x25A4,
SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
SMSG_DISPLAY_PROMOTION = 0x2648,
- SMSG_DISPLAY_QUEST_POPUP = 0x2A9D,
+ SMSG_DISPLAY_QUEST_POPUP = 0x2A9E,
SMSG_DISPLAY_TOAST = 0x2621,
SMSG_DISPLAY_WORLD_TEXT = 0x27F0,
SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DD,
@@ -1177,6 +1180,7 @@ enum OpcodeServer : uint16
SMSG_GARRISON_ADD_MISSION_RESULT = 0x296E,
SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x29A0,
SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2980,
+ SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x29A2,
SMSG_GARRISON_BUILDING_ACTIVATED = 0x295F,
SMSG_GARRISON_BUILDING_REMOVED = 0x2958,
SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x295A,
@@ -1238,6 +1242,7 @@ enum OpcodeServer : uint16
SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x295C,
SMSG_GARRISON_UPDATE_FOLLOWER = 0x296C,
SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x2991,
+ SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x29A1,
SMSG_GARRISON_UPGRADE_RESULT = 0x2961,
SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x2973,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585,
@@ -1257,11 +1262,11 @@ enum OpcodeServer : uint16
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_COMPLETE = 0x2A97,
+ SMSG_GOSSIP_MESSAGE = 0x2A98,
SMSG_GOSSIP_POI = 0x2796,
- SMSG_GOSSIP_QUEST_UPDATE = 0x2A98,
- SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA5,
+ SMSG_GOSSIP_QUEST_UPDATE = 0x2A99,
+ SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6,
SMSG_GROUP_ACTION_THROTTLED = 0x2590,
SMSG_GROUP_AUTO_KICK = 0x2794,
SMSG_GROUP_DECLINE = 0x2791,
@@ -1358,7 +1363,7 @@ enum OpcodeServer : uint16
SMSG_ISLANDS_MISSION_NPC = 0x27FC,
SMSG_ISLAND_AZERITE_GAIN = 0x2760,
SMSG_ISLAND_COMPLETE = 0x2761,
- SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A83,
+ SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84,
SMSG_ITEM_CHANGED = 0x26EE,
SMSG_ITEM_COOLDOWN = 0x27C7,
SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2759,
@@ -1657,35 +1662,35 @@ enum OpcodeServer : uint16
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_QUEST_INFO_RESPONSE = 0x2A96,
SMSG_QUERY_TIME_RESPONSE = 0x26E8,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
- SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8E,
- SMSG_QUEST_FORCE_REMOVED = 0x2A9B,
- SMSG_QUEST_GIVER_INVALID_QUEST = 0x2A84,
- SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x2A93,
- SMSG_QUEST_GIVER_QUEST_COMPLETE = 0x2A82,
- SMSG_QUEST_GIVER_QUEST_DETAILS = 0x2A91,
- SMSG_QUEST_GIVER_QUEST_FAILED = 0x2A85,
- SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x2A99,
- SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x2A92,
- SMSG_QUEST_GIVER_STATUS = 0x2A9A,
- SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A90,
- SMSG_QUEST_LOG_FULL = 0x2A86,
- SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9C,
- SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9E,
- SMSG_QUEST_PUSH_RESULT = 0x2A8F,
+ SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F,
+ SMSG_QUEST_FORCE_REMOVED = 0x2A9C,
+ SMSG_QUEST_GIVER_INVALID_QUEST = 0x2A85,
+ SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x2A94,
+ SMSG_QUEST_GIVER_QUEST_COMPLETE = 0x2A83,
+ SMSG_QUEST_GIVER_QUEST_DETAILS = 0x2A92,
+ SMSG_QUEST_GIVER_QUEST_FAILED = 0x2A86,
+ SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x2A9A,
+ SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x2A93,
+ SMSG_QUEST_GIVER_STATUS = 0x2A9B,
+ SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A91,
+ SMSG_QUEST_LOG_FULL = 0x2A87,
+ SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D,
+ SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F,
+ SMSG_QUEST_PUSH_RESULT = 0x2A90,
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,
- SMSG_QUEST_UPDATE_COMPLETE = 0x2A88,
- SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A87,
- SMSG_QUEST_UPDATE_FAILED = 0x2A89,
- SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8A,
+ SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C,
+ SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D,
+ SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E,
+ SMSG_QUEST_UPDATE_COMPLETE = 0x2A89,
+ SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A88,
+ SMSG_QUEST_UPDATE_FAILED = 0x2A8A,
+ SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B,
SMSG_QUEUE_SUMMARY_UPDATE = 0x2815,
SMSG_RAF_ACCOUNT_INFO = 0x286D,
SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x287E,
@@ -1717,7 +1722,7 @@ enum OpcodeServer : uint16
SMSG_RESEARCH_COMPLETE = 0x2587,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
SMSG_RESET_FAILED_NOTIFY = 0x26B4,
- SMSG_RESET_QUEST_POI = 0x2A9F,
+ SMSG_RESET_QUEST_POI = 0x2AA0,
SMSG_RESET_RANGED_COMBAT_TIMER = 0x2943,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
SMSG_RESPEC_WIPE_CONFIRM = 0x2610,
@@ -1798,7 +1803,7 @@ enum OpcodeServer : uint16
SMSG_SHOW_BANK = 0x267D,
SMSG_SHOW_MAILBOX = 0x27A9,
SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D7,
- SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A94,
+ SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95,
SMSG_SHOW_TAXI_NODES = 0x26CA,
SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2773,
SMSG_SOCKET_GEMS_FAILURE = 0x272C,
@@ -1878,7 +1883,7 @@ enum OpcodeServer : uint16
SMSG_TWITTER_STATUS = 0x3043,
SMSG_UI_HEALING_RANGE_MODIFIED = 0x2748,
SMSG_UI_ITEM_INTERACTION_NPC = 0x27FB,
- SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA1,
+ SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2,
SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27CD,
SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27CE,
SMSG_UNLEARNED_SPELLS = 0x2C4E,