diff options
author | Shauren <shauren.trinity@gmail.com> | 2019-07-12 20:41:33 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-07-14 19:20:44 +0200 |
commit | 0e4c5697704359f648be4eab52eeb739528eb9d2 (patch) | |
tree | bc7377eb7ab1f5a3b5f2620bda06b665a764e05d /src | |
parent | 901d36b0a73fa0e181771e97b1848532a778d2e9 (diff) |
Core/PacketIO: Updated packet structures to 8.2
Diffstat (limited to 'src')
36 files changed, 964 insertions, 863 deletions
diff --git a/src/server/game/Battlegrounds/ArenaScore.cpp b/src/server/game/Battlegrounds/ArenaScore.cpp index 84419bafa6b..2ae9f5c6aba 100644 --- a/src/server/game/Battlegrounds/ArenaScore.cpp +++ b/src/server/game/Battlegrounds/ArenaScore.cpp @@ -22,7 +22,7 @@ ArenaScore::ArenaScore(ObjectGuid playerGuid, uint32 team) : BattlegroundScore(p { } -void ArenaScore::BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const +void ArenaScore::BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/ArenaScore.h b/src/server/game/Battlegrounds/ArenaScore.h index 1a17973e3f5..f0f17953779 100644 --- a/src/server/game/Battlegrounds/ArenaScore.h +++ b/src/server/game/Battlegrounds/ArenaScore.h @@ -27,7 +27,7 @@ struct TC_GAME_API ArenaScore : public BattlegroundScore protected: ArenaScore(ObjectGuid playerGuid, uint32 team); - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override; + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override; // For Logging purpose std::string ToString() const override; diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 20613f3f840..ee1cf3349c7 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1276,13 +1276,10 @@ bool Battleground::HasFreeSlots() const void Battleground::BuildPvPLogDataPacket(WorldPackets::Battleground::PVPLogData& pvpLogData) const { - if (GetStatus() == STATUS_WAIT_LEAVE) - pvpLogData.Winner = GetWinner(); - - pvpLogData.Players.reserve(GetPlayerScoresSize()); + pvpLogData.Statistics.reserve(GetPlayerScoresSize()); for (auto const& score : PlayerScores) { - WorldPackets::Battleground::PVPLogData::PlayerData playerData; + WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics playerData; score.second->BuildPvPLogPlayerDataPacket(playerData); if (Player* player = ObjectAccessor::GetPlayer(GetBgMap(), playerData.PlayerGUID)) @@ -1295,7 +1292,7 @@ void Battleground::BuildPvPLogDataPacket(WorldPackets::Battleground::PVPLogData& playerData.HonorLevel = player->GetHonorLevel(); } - pvpLogData.Players.push_back(playerData); + pvpLogData.Statistics.push_back(playerData); } pvpLogData.PlayerCount[BG_TEAM_HORDE] = int8(GetPlayersCountByTeam(HORDE)); diff --git a/src/server/game/Battlegrounds/BattlegroundScore.cpp b/src/server/game/Battlegrounds/BattlegroundScore.cpp index 6ec15fd011d..2e47232a104 100644 --- a/src/server/game/Battlegrounds/BattlegroundScore.cpp +++ b/src/server/game/Battlegrounds/BattlegroundScore.cpp @@ -56,7 +56,7 @@ void BattlegroundScore::UpdateScore(uint32 type, uint32 value) } } -void BattlegroundScore::BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const +void BattlegroundScore::BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const { playerData.PlayerGUID = PlayerGuid; playerData.Kills = KillingBlows; diff --git a/src/server/game/Battlegrounds/BattlegroundScore.h b/src/server/game/Battlegrounds/BattlegroundScore.h index a873051953f..11efeea94a4 100644 --- a/src/server/game/Battlegrounds/BattlegroundScore.h +++ b/src/server/game/Battlegrounds/BattlegroundScore.h @@ -63,7 +63,7 @@ struct BattlegroundScore virtual void UpdateScore(uint32 type, uint32 value); - virtual void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const; + virtual void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const; // For Logging purpose virtual std::string ToString() const { return ""; } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h index eb6c3a4c83e..0d02b1672db 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h @@ -294,7 +294,7 @@ struct BattlegroundABScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h index 3791751506b..0a81545b3b4 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h @@ -1597,7 +1597,7 @@ struct BattlegroundAVScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h b/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h index 940c65e418e..fd99cb55d82 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h @@ -42,7 +42,7 @@ class BattlegroundBFGScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h index 509f6129c22..e1a046be401 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h @@ -377,7 +377,7 @@ struct BattlegroundEYScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h index 8a4b2953f4b..7622f22d67b 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h @@ -937,7 +937,7 @@ struct BattlegroundICScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h index 21bbca88329..f5578d57028 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h @@ -540,7 +540,7 @@ struct BattlegroundSAScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundTP.h b/src/server/game/Battlegrounds/Zones/BattlegroundTP.h index 2f6ac05443c..33fc27d3647 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundTP.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundTP.h @@ -42,7 +42,7 @@ class BattlegroundTPScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h index 18e0d5e8050..4e8bcf47833 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h @@ -193,7 +193,7 @@ struct BattlegroundWGScore final : public BattlegroundScore } } - void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PlayerData& playerData) const override + void BuildPvPLogPlayerDataPacket(WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics& playerData) const override { BattlegroundScore::BuildPvPLogPlayerDataPacket(playerData); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 010ef856bd7..6419627bc27 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -505,56 +505,152 @@ void AzeriteEmpoweredItemData::ClearChangesMask() _changesMask.ResetAll(); } +void UnlockedAzeriteEssence::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const +{ + data << uint32(AzeriteEssenceID); + data << uint32(Rank); +} + +void UnlockedAzeriteEssence::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const +{ + data.FlushBits(); + data << uint32(AzeriteEssenceID); + data << uint32(Rank); +} + +void SelectedAzeriteEssences::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const +{ + for (std::size_t i = 0; i < 3; ++i) + { + data << uint32(AzeriteEssenceID[i]); + } + data << uint32(Field_0); + data.WriteBits(Enabled, 1); + data.FlushBits(); +} + +void SelectedAzeriteEssences::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const +{ + data.FlushBits(); + data << uint32(Field_0); + data.WriteBits(Enabled, 1); + for (std::size_t i = 0; i < 3; ++i) + { + data << uint32(AzeriteEssenceID[i]); + } + data.FlushBits(); +} + void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const { - data << uint64(Xp); - data << uint32(Level); - data << uint32(AuraLevel); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) { + data << uint64(Xp); + data << uint32(Level); + data << uint32(AuraLevel); data << uint32(KnowledgeLevel); data << uint32(DEBUGknowledgeWeek); } + data << uint32(UnlockedEssences.size()); + data << uint32(SelectedEssences.size()); + data << uint32(UnlockedEssenceMilestones.size()); + for (std::size_t i = 0; i < UnlockedEssences.size(); ++i) + { + UnlockedEssences[i].WriteCreate(data, fieldVisibilityFlags, owner, receiver); + } + for (std::size_t i = 0; i < UnlockedEssenceMilestones.size(); ++i) + { + data << uint32(UnlockedEssenceMilestones[i]); + } + for (std::size_t i = 0; i < SelectedEssences.size(); ++i) + { + SelectedEssences[i].WriteCreate(data, fieldVisibilityFlags, owner, receiver); + } } void AzeriteItemData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const { - UpdateMask<6> allowedMaskForTarget({ 0x0000000Fu }); + UpdateMask<9> allowedMaskForTarget({ 0x0000000Fu }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, fieldVisibilityFlags, owner, receiver); } -void AzeriteItemData::AppendAllowedFieldsMaskForFlag(UpdateMask<6>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const +void AzeriteItemData::AppendAllowedFieldsMaskForFlag(UpdateMask<9>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= { 0x00000030u }; + allowedMaskForTarget |= { 0x000001F0u }; } -void AzeriteItemData::WriteUpdate(ByteBuffer& data, UpdateMask<6> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const +void AzeriteItemData::WriteUpdate(ByteBuffer& data, UpdateMask<9> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const { - data.WriteBits(changesMask.GetBlock(0), 6); + data.WriteBits(changesMask.GetBlock(0), 9); + if (changesMask[0]) + { + if (changesMask[1]) + { + UnlockedEssences.WriteUpdateMask(data); + } + if (changesMask[2]) + { + UnlockedEssenceMilestones.WriteUpdateMask(data); + } + if (changesMask[3]) + { + SelectedEssences.WriteUpdateMask(data); + } + } data.FlushBits(); if (changesMask[0]) { if (changesMask[1]) { - data << uint64(Xp); + for (std::size_t i = 0; i < UnlockedEssences.size(); ++i) + { + if (UnlockedEssences.HasChanged(i)) + { + UnlockedEssences[i].WriteUpdate(data, fieldVisibilityFlags, owner, receiver); + } + } } if (changesMask[2]) { - data << uint32(Level); + for (std::size_t i = 0; i < UnlockedEssenceMilestones.size(); ++i) + { + if (UnlockedEssenceMilestones.HasChanged(i)) + { + data << uint32(UnlockedEssenceMilestones[i]); + } + } } if (changesMask[3]) { - data << uint32(AuraLevel); + for (std::size_t i = 0; i < SelectedEssences.size(); ++i) + { + if (SelectedEssences.HasChanged(i)) + { + SelectedEssences[i].WriteUpdate(data, fieldVisibilityFlags, owner, receiver); + } + } } if (changesMask[4]) { - data << uint32(KnowledgeLevel); + data << uint64(Xp); } if (changesMask[5]) { + data << uint32(Level); + } + if (changesMask[6]) + { + data << uint32(AuraLevel); + } + if (changesMask[7]) + { + data << uint32(KnowledgeLevel); + } + if (changesMask[8]) + { data << uint32(DEBUGknowledgeWeek); } } @@ -562,6 +658,9 @@ void AzeriteItemData::WriteUpdate(ByteBuffer& data, UpdateMask<6> const& changes void AzeriteItemData::ClearChangesMask() { + Base::ClearChangesMask(UnlockedEssences); + Base::ClearChangesMask(UnlockedEssenceMilestones); + Base::ClearChangesMask(SelectedEssences); Base::ClearChangesMask(Xp); Base::ClearChangesMask(Level); Base::ClearChangesMask(AuraLevel); @@ -2273,7 +2372,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl data << float(VersatilityBonus); data << float(PvpPowerDamage); data << float(PvpPowerHealing); - for (std::size_t i = 0; i < 160; ++i) + for (std::size_t i = 0; i < 192; ++i) { data << uint64(ExploredZones[i]); } @@ -2442,6 +2541,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl { SpellFlatModByLabel[i].WriteCreate(data, fieldVisibilityFlags, owner, receiver); } + for (std::size_t i = 0; i < 6; ++i) + { + PvpInfo[i].WriteCreate(data, fieldVisibilityFlags, owner, receiver); + } data.WriteBit(BackpackAutoSortDisabled); data.WriteBit(BankAutoSortDisabled); data.WriteBit(SortBagsRightToLeft); @@ -2450,20 +2553,16 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl { CharacterRestrictions[i].WriteCreate(data, fieldVisibilityFlags, owner, receiver); } - for (std::size_t i = 0; i < 6; ++i) - { - PvpInfo[i].WriteCreate(data, fieldVisibilityFlags, owner, receiver); - } data.FlushBits(); } void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { - UpdateMask<1455> const& changesMask = _changesMask; + UpdateMask<1487> const& changesMask = _changesMask; for (std::size_t i = 0; i < 1; ++i) data << uint32(changesMask.GetBlocksMask(i)); - data.WriteBits(changesMask.GetBlocksMask(1), 14); - for (std::size_t i = 0; i < 46; ++i) + data.WriteBits(changesMask.GetBlocksMask(1), 15); + for (std::size_t i = 0; i < 47; ++i) if (changesMask.GetBlock(i)) data.WriteBits(changesMask.GetBlock(i), 32); @@ -3061,7 +3160,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl } if (changesMask[300]) { - for (std::size_t i = 0; i < 160; ++i) + for (std::size_t i = 0; i < 192; ++i) { if (changesMask[301 + i]) { @@ -3069,127 +3168,127 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl } } } - if (changesMask[461]) + if (changesMask[493]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[462 + i]) + if (changesMask[494 + i]) { RestInfo[i].WriteUpdate(data, fieldVisibilityFlags, owner, receiver); } } } - if (changesMask[464]) + if (changesMask[496]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[465 + i]) + if (changesMask[497 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[472 + i]) + if (changesMask[504 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[479 + i]) + if (changesMask[511 + i]) { data << float(ModDamageDonePercent[i]); } } } - if (changesMask[486]) + if (changesMask[518]) { for (std::size_t i = 0; i < 3; ++i) { - if (changesMask[487 + i]) + if (changesMask[519 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[490 + i]) + if (changesMask[522 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[493]) + if (changesMask[525]) { for (std::size_t i = 0; i < 12; ++i) { - if (changesMask[494 + i]) + if (changesMask[526 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[506 + i]) + if (changesMask[538 + i]) { data << uint32(BuybackTimestamp[i]); } } } - if (changesMask[518]) + if (changesMask[550]) { for (std::size_t i = 0; i < 32; ++i) { - if (changesMask[519 + i]) + if (changesMask[551 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[558]) + if (changesMask[590]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[559 + i]) + if (changesMask[591 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[563]) + if (changesMask[595]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[564 + i]) + if (changesMask[596 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[566]) + if (changesMask[598]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[567 + i]) + if (changesMask[599 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[571]) + if (changesMask[603]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[572 + i]) + if (changesMask[604 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[579]) + if (changesMask[611]) { for (std::size_t i = 0; i < 875; ++i) { - if (changesMask[580 + i]) + if (changesMask[612 + i]) { data << uint64(QuestCompleted[i]); } } } - if (changesMask[551]) + if (changesMask[583]) { for (std::size_t i = 0; i < 6; ++i) { - if (changesMask[552 + i]) + if (changesMask[584 + i]) { PvpInfo[i].WriteUpdate(data, fieldVisibilityFlags, owner, receiver); } @@ -3341,8 +3440,8 @@ void GameObjectData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag data << int32(ViewerDependentValue<LevelTag>::GetValue(Level, owner, receiver)); data << int8(ViewerDependentValue<StateTag>::GetValue(State, owner, receiver)); data << int8(TypeID); - data << uint8(ArtKit); data << uint8(PercentHealth); + data << uint32(ArtKit); data << uint32(EnableDoodadSets.size()); data << uint32(CustomParam); for (std::size_t i = 0; i < EnableDoodadSets.size(); ++i) @@ -3449,11 +3548,11 @@ void GameObjectData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag } if (changesMask[17]) { - data << uint8(ArtKit); + data << uint8(PercentHealth); } if (changesMask[18]) { - data << uint8(PercentHealth); + data << uint32(ArtKit); } if (changesMask[19]) { @@ -3480,8 +3579,8 @@ void GameObjectData::ClearChangesMask() Base::ClearChangesMask(Level); Base::ClearChangesMask(State); Base::ClearChangesMask(TypeID); - Base::ClearChangesMask(ArtKit); Base::ClearChangesMask(PercentHealth); + Base::ClearChangesMask(ArtKit); Base::ClearChangesMask(CustomParam); _changesMask.ResetAll(); } @@ -3895,11 +3994,12 @@ void ConversationActor::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldF void ConversationData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const { data << uint32(Lines->size()); + data << int32(LastLineEndTime); + data << uint32(Field_1C); for (std::size_t i = 0; i < Lines->size(); ++i) { (*Lines)[i].WriteCreate(data, fieldVisibilityFlags, owner, receiver); } - data << int32(LastLineEndTime); data << uint32(Actors.size()); for (std::size_t i = 0; i < Actors.size(); ++i) { @@ -3909,8 +4009,8 @@ void ConversationData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl void ConversationData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const { - UpdateMask<4> const& changesMask = _changesMask; - data.WriteBits(changesMask.GetBlock(0), 4); + UpdateMask<5> const& changesMask = _changesMask; + data.WriteBits(changesMask.GetBlock(0), 5); if (changesMask[0]) { @@ -3948,6 +4048,10 @@ void ConversationData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl { data << int32(LastLineEndTime); } + if (changesMask[4]) + { + data << uint32(Field_1C); + } } } @@ -3956,6 +4060,7 @@ void ConversationData::ClearChangesMask() Base::ClearChangesMask(Lines); Base::ClearChangesMask(Actors); Base::ClearChangesMask(LastLineEndTime); + Base::ClearChangesMask(Field_1C); _changesMask.ResetAll(); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 2a120d0a729..bb658b36356 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -134,18 +134,40 @@ struct AzeriteEmpoweredItemData : public IsUpdateFieldStructureTag, public HasCh void ClearChangesMask(); }; -struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask<6> +struct UnlockedAzeriteEssence : public IsUpdateFieldStructureTag { - UpdateField<uint64, 0, 1> Xp; - UpdateField<uint32, 0, 2> Level; - UpdateField<uint32, 0, 3> AuraLevel; - UpdateField<uint32, 0, 4> KnowledgeLevel; - UpdateField<uint32, 0, 5> DEBUGknowledgeWeek; + uint32 AzeriteEssenceID; + uint32 Rank; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; - void AppendAllowedFieldsMaskForFlag(UpdateMask<6>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const; - void WriteUpdate(ByteBuffer& data, UpdateMask<6> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; +}; + +struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag +{ + uint32 Field_0; + uint32 Enabled; + uint32 AzeriteEssenceID[3]; + + void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; +}; + +struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask<9> +{ + DynamicUpdateField<UnlockedAzeriteEssence, 0, 1> UnlockedEssences; + DynamicUpdateField<uint32, 0, 2> UnlockedEssenceMilestones; + DynamicUpdateField<SelectedAzeriteEssences, 0, 3> SelectedEssences; + UpdateField<uint64, 0, 4> Xp; + UpdateField<uint32, 0, 5> Level; + UpdateField<uint32, 0, 6> AuraLevel; + UpdateField<uint32, 0, 7> KnowledgeLevel; + UpdateField<uint32, 0, 8> DEBUGknowledgeWeek; + + void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; + void AppendAllowedFieldsMaskForFlag(UpdateMask<9>& allowedMaskForTarget, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags) const; + void WriteUpdate(ByteBuffer& data, UpdateMask<9> const& changesMask, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -471,7 +493,7 @@ struct Research : public IsUpdateFieldStructureTag void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1455> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1487> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BankAutoSortDisabled; @@ -571,22 +593,22 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<uint8, 98, 100> NumBankSlots; UpdateFieldArray<ObjectGuid, 195, 101, 102> InvSlots; UpdateFieldArray<uint32, 2, 297, 298> TrackResourceMask; - UpdateFieldArray<uint64, 160, 300, 301> ExploredZones; - UpdateFieldArray<RestInfo, 2, 461, 462> RestInfo; - UpdateFieldArray<int32, 7, 464, 465> ModDamageDonePos; - UpdateFieldArray<int32, 7, 464, 472> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 464, 479> ModDamageDonePercent; - UpdateFieldArray<float, 3, 486, 487> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 486, 490> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 493, 494> BuybackPrice; - UpdateFieldArray<uint32, 12, 493, 506> BuybackTimestamp; - UpdateFieldArray<int32, 32, 518, 519> CombatRatings; - UpdateFieldArray<PVPInfo, 6, 551, 552> PvpInfo; - UpdateFieldArray<uint32, 4, 558, 559> NoReagentCostMask; - UpdateFieldArray<int32, 2, 563, 564> ProfessionSkillLine; - UpdateFieldArray<uint32, 4, 566, 567> BagSlotFlags; - UpdateFieldArray<uint32, 7, 571, 572> BankBagSlotFlags; - UpdateFieldArray<uint64, 875, 579, 580> QuestCompleted; + UpdateFieldArray<uint64, 192, 300, 301> ExploredZones; + UpdateFieldArray<RestInfo, 2, 493, 494> RestInfo; + UpdateFieldArray<int32, 7, 496, 497> ModDamageDonePos; + UpdateFieldArray<int32, 7, 496, 504> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 496, 511> ModDamageDonePercent; + UpdateFieldArray<float, 3, 518, 519> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 518, 522> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 525, 526> BuybackPrice; + UpdateFieldArray<uint32, 12, 525, 538> BuybackTimestamp; + UpdateFieldArray<int32, 32, 550, 551> CombatRatings; + UpdateFieldArray<PVPInfo, 6, 583, 584> PvpInfo; + UpdateFieldArray<uint32, 4, 590, 591> NoReagentCostMask; + UpdateFieldArray<int32, 2, 595, 596> ProfessionSkillLine; + UpdateFieldArray<uint32, 4, 598, 599> BagSlotFlags; + UpdateFieldArray<uint32, 7, 603, 604> BankBagSlotFlags; + UpdateFieldArray<uint64, 875, 611, 612> QuestCompleted; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; @@ -614,8 +636,8 @@ struct GameObjectData : public IsUpdateFieldStructureTag, public HasChangesMask< UpdateField<int8, 0, 15> State; struct StateTag : ViewerDependentValueTag<int8> {}; UpdateField<int8, 0, 16> TypeID; - UpdateField<uint8, 0, 17> ArtKit; - UpdateField<uint8, 0, 18> PercentHealth; + UpdateField<uint8, 0, 17> PercentHealth; + UpdateField<uint32, 0, 18> ArtKit; UpdateField<uint32, 0, 19> CustomParam; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const; @@ -730,11 +752,12 @@ struct ConversationActor : public IsUpdateFieldStructureTag void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; }; -struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMask<4> +struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMask<5> { UpdateField<std::vector<ConversationLine>, 0, 1> Lines; DynamicUpdateField<ConversationActor, 0, 2> Actors; UpdateField<int32, 0, 3> LastLineEndTime; + UpdateField<uint32, 0, 4> Field_1C; void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 3cb5512d493..b23ed7f7fae 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -122,7 +122,7 @@ enum SkillFieldOffset : uint16 SKILL_PERM_BONUS_OFFSET = SKILL_TEMP_BONUS_OFFSET + CalculateSkillFieldArraySize<uint16>() }; -#define PLAYER_EXPLORED_ZONES_SIZE 160 +#define PLAYER_EXPLORED_ZONES_SIZE 192 // Note: SPELLMOD_* values is aura types in fact enum SpellModType : uint8 diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp index 99eef1b6e49..0db71b633e8 100644 --- a/src/server/game/Handlers/InspectHandler.cpp +++ b/src/server/game/Handlers/InspectHandler.cpp @@ -43,25 +43,14 @@ void WorldSession::HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect) return; WorldPackets::Inspect::InspectResult inspectResult; - inspectResult.InspecteeGUID = inspect.Target; - - for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i) - { - if (Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i)) - inspectResult.Items.emplace_back(item, i); - } - - inspectResult.ClassID = player->getClass(); - inspectResult.GenderID = player->m_playerData->NativeSex; + inspectResult.DisplayInfo.Initialize(player); if (GetPlayer()->CanBeGameMaster() || sWorld->getIntConfig(CONFIG_TALENTS_INSPECTING) + (GetPlayer()->GetTeamId() == player->GetTeamId()) > 1) { PlayerTalentMap const* talents = player->GetTalentMap(player->GetActiveTalentGroup()); for (PlayerTalentMap::value_type const& v : *talents) - { if (v.second != PLAYERSPELL_REMOVED) inspectResult.Talents.push_back(v.first); - } PlayerPvpTalentMap const& pvpTalents = player->GetPvpTalentMap(player->GetActiveTalentGroup()); for (std::size_t i = 0; i < pvpTalents.size(); ++i) @@ -76,8 +65,7 @@ void WorldSession::HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect) inspectResult.GuildData->AchievementPoints = guild->GetAchievementMgr().GetAchievementPoints(); } - inspectResult.InspecteeGUID = inspect.Target; - inspectResult.SpecializationID = player->GetPrimarySpecialization(); + inspectResult.ItemLevel = int32(player->GetAverageItemLevel()); inspectResult.LifetimeMaxRank = player->m_activePlayerData->LifetimeMaxRank; inspectResult.TodayHK = player->m_activePlayerData->TodayHonorableKills; inspectResult.YesterdayHK = player->m_activePlayerData->YesterdayHonorableKills; diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 5eed12a2172..e6a4f35e040 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1207,68 +1207,6 @@ void WorldSession::HandleUseCritterItem(WorldPackets::Item::UseCritterItem& useC _player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); } -void WorldSession::HandleUpgradeItem(WorldPackets::Item::UpgradeItem& upgradeItem) -{ - WorldPackets::Item::ItemUpgradeResult itemUpgradeResult; - if (!_player->GetNPCIfCanInteractWith(upgradeItem.ItemMaster, UNIT_NPC_FLAG_NONE, UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER)) - { - TC_LOG_DEBUG("network", "WORLD: HandleUpgradeItems - %s not found or player can't interact with it.", upgradeItem.ItemMaster.ToString().c_str()); - itemUpgradeResult.Success = false; - SendPacket(itemUpgradeResult.Write()); - return; - } - - Item* item = _player->GetItemByGuid(upgradeItem.ItemGUID); - if (!item) - { - TC_LOG_DEBUG("network", "WORLD: HandleUpgradeItems: Item %s not found!", upgradeItem.ItemGUID.ToString().c_str()); - itemUpgradeResult.Success = false; - SendPacket(itemUpgradeResult.Write()); - return; - } - - ItemUpgradeEntry const* itemUpgradeEntry = sItemUpgradeStore.LookupEntry(upgradeItem.UpgradeID); - if (!itemUpgradeEntry) - { - TC_LOG_DEBUG("network", "WORLD: HandleUpgradeItems - ItemUpgradeEntry (%u) not found.", upgradeItem.UpgradeID); - itemUpgradeResult.Success = false; - SendPacket(itemUpgradeResult.Write()); - return; - } - - // Check if player has enough currency - if (!_player->HasCurrency(itemUpgradeEntry->CurrencyType, itemUpgradeEntry->CurrencyAmount)) - { - TC_LOG_DEBUG("network", "WORLD: HandleUpgradeItems - Player has not enougth currency (ID: %u, Cost: %u) not found.", itemUpgradeEntry->CurrencyType, itemUpgradeEntry->CurrencyAmount); - itemUpgradeResult.Success = false; - SendPacket(itemUpgradeResult.Write()); - return; - } - - uint32 currentUpgradeId = item->GetModifier(ITEM_MODIFIER_UPGRADE_ID); - if (currentUpgradeId != itemUpgradeEntry->PrerequisiteID) - { - TC_LOG_DEBUG("network", "WORLD: HandleUpgradeItems - ItemUpgradeEntry (%u) is not related to this ItemUpgradePath (%u).", itemUpgradeEntry->ID, currentUpgradeId); - itemUpgradeResult.Success = false; - SendPacket(itemUpgradeResult.Write()); - return; - } - - itemUpgradeResult.Success = true; - SendPacket(itemUpgradeResult.Write()); - - if (item->IsEquipped()) - _player->_ApplyItemBonuses(item, item->GetSlot(), false); - - item->SetModifier(ITEM_MODIFIER_UPGRADE_ID, itemUpgradeEntry->ID); - - if (item->IsEquipped()) - _player->_ApplyItemBonuses(item, item->GetSlot(), true); - - item->SetState(ITEM_CHANGED, _player); - _player->ModifyCurrency(itemUpgradeEntry->CurrencyType, -int32(itemUpgradeEntry->CurrencyAmount)); -} - void WorldSession::HandleSortBags(WorldPackets::Item::SortBags& /*sortBags*/) { // TODO: Implement sorting diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 88edeed4698..76cafe75ee2 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -21,6 +21,7 @@ #include "HmacHash.h" #include "ObjectMgr.h" #include "RSA.h" +#include "SHA256.h" #include "Util.h" ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::VirtualRealmNameInfo const& virtualRealmInfo) @@ -73,7 +74,7 @@ const WorldPacket* WorldPackets::Auth::Pong::Write() WorldPacket const* WorldPackets::Auth::AuthChallenge::Write() { - _worldPacket.append(DosChallenge, 8); + _worldPacket.append(DosChallenge.data(), DosChallenge.size()); _worldPacket.append(Challenge.data(), Challenge.size()); _worldPacket << uint8(DosZeroBits); return &_worldPacket; @@ -201,25 +202,6 @@ WorldPacket const* WorldPackets::Auth::WaitQueueUpdate::Write() return &_worldPacket; } -std::string const WorldPackets::Auth::ConnectTo::Haiku("An island of peace\nCorruption is brought ashore\nPandarens will rise\n\0\0", 71); - -uint8 const WorldPackets::Auth::ConnectTo::PiDigits[130] = -{ - 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 0x23, 0x84, - 0x62, 0x64, 0x33, 0x83, 0x27, 0x95, 0x02, 0x88, 0x41, 0x97, - 0x16, 0x93, 0x99, 0x37, 0x51, 0x05, 0x82, 0x09, 0x74, 0x94, - 0x45, 0x92, 0x30, 0x78, 0x16, 0x40, 0x62, 0x86, 0x20, 0x89, - 0x98, 0x62, 0x80, 0x34, 0x82, 0x53, 0x42, 0x11, 0x70, 0x67, - 0x98, 0x21, 0x48, 0x08, 0x65, 0x13, 0x28, 0x23, 0x06, 0x64, - 0x70, 0x93, 0x84, 0x46, 0x09, 0x55, 0x05, 0x82, 0x23, 0x17, - 0x25, 0x35, 0x94, 0x08, 0x12, 0x84, 0x81, 0x11, 0x74, 0x50, - 0x28, 0x41, 0x02, 0x70, 0x19, 0x38, 0x52, 0x11, 0x05, 0x55, - 0x96, 0x44, 0x62, 0x29, 0x48, 0x95, 0x49, 0x30, 0x38, 0x19, - 0x64, 0x42, 0x88, 0x10, 0x97, 0x56, 0x65, 0x93, 0x34, 0x46, - 0x12, 0x84, 0x75, 0x64, 0x82, 0x33, 0x78, 0x67, 0x83, 0x16, - 0x52, 0x71, 0x20, 0x19, 0x09, 0x14, 0x56, 0x48, 0x56, 0x69, -}; - namespace { std::string RSAPrivateKey = R"(-----BEGIN RSA PRIVATE KEY----- @@ -252,14 +234,6 @@ OHYtKG3GK3GEcFDwZU2LPHq21EroUAdtRfbrJ4KW2yc8igtXKxTBYw== )"; std::unique_ptr<Trinity::Crypto::RSA> ConnectToRSA; - -uint8 const WherePacketHmac[] = -{ - 0x2C, 0x1F, 0x1D, 0x80, 0xC3, 0x8C, 0x23, 0x64, 0xDA, 0x90, 0xCA, 0x8E, 0x2C, 0xFC, 0x0C, 0xCE, - 0x09, 0xD3, 0x62, 0xF9, 0xF3, 0x8B, 0xBE, 0x9F, 0x19, 0xEF, 0x58, 0xA1, 0x1C, 0x34, 0x14, 0x41, - 0x3F, 0x23, 0xFD, 0xD3, 0xE8, 0x14, 0xEC, 0x2A, 0xFD, 0x4F, 0x95, 0xBA, 0x30, 0x7E, 0x56, 0x5D, - 0x83, 0x95, 0x81, 0x69, 0xB0, 0x5A, 0xB4, 0x9D, 0xA8, 0x55, 0xFF, 0xFC, 0xEE, 0x58, 0x0A, 0x2F -}; } bool WorldPackets::Auth::ConnectTo::InitializeEncryption() @@ -272,50 +246,44 @@ bool WorldPackets::Auth::ConnectTo::InitializeEncryption() return true; } -WorldPackets::Auth::ConnectTo::ConnectTo() : ServerPacket(SMSG_CONNECT_TO, 8 + 4 + 256 + 1) +WorldPackets::Auth::ConnectTo::ConnectTo() : ServerPacket(SMSG_CONNECT_TO, 256 + 1 + 16 + 2 + 4 + 1 + 8) { - Payload.Where.fill(0); - HexStrToByteArray("F41DCB2D728CF3337A4FF338FA89DB01BBBE9C3B65E9DA96268687353E48B94C", Payload.PanamaKey); - Payload.Adler32 = 0xA0A66C10; } WorldPacket const* WorldPackets::Auth::ConnectTo::Write() { - HmacSha1 hmacHash(64, WherePacketHmac); - hmacHash.UpdateData(Payload.Where.data(), 16); - hmacHash.UpdateData((uint8* const)&Payload.Type, 1); - hmacHash.UpdateData((uint8* const)&Payload.Port, 2); - hmacHash.UpdateData((uint8* const)Haiku.c_str(), 71); - hmacHash.UpdateData(Payload.PanamaKey, 32); - hmacHash.UpdateData(PiDigits, 108); - hmacHash.UpdateData(&Payload.XorMagic, 1); - hmacHash.Finalize(); - - ByteBuffer payload; - payload << uint32(Payload.Adler32); - payload << uint8(Payload.Type); - payload.append(Payload.Where.data(), 16); - payload << uint16(Payload.Port); - payload.append(Haiku.data(), 71); - payload.append(Payload.PanamaKey, 32); - payload.append(PiDigits, 108); - payload << uint8(Payload.XorMagic); - payload.append(hmacHash.GetDigest(), hmacHash.GetLength()); - - uint32 rsaSize = ConnectToRSA->GetOutputSize(); - if (payload.size() < rsaSize) - payload.resize(rsaSize); + ByteBuffer whereBuffer; + whereBuffer << uint8(Payload.Where.Type); + switch (Payload.Where.Type) + { + case IPv4: + whereBuffer.append(Payload.Where.Address.V4.data(), Payload.Where.Address.V4.size()); + break; + case IPv6: + whereBuffer.append(Payload.Where.Address.V6.data(), Payload.Where.Address.V6.size()); + break; + case NamedSocket: + whereBuffer << Payload.Where.Address.Name.data(); + break; + default: + break; + } - _worldPacket << uint64(Key); + uint32 type = Payload.Where.Type; + SHA256Hash hash; + hash.UpdateData(whereBuffer.contents(), whereBuffer.size()); + hash.UpdateData(reinterpret_cast<uint8 const*>(&type), 4); + hash.UpdateData(reinterpret_cast<uint8 const*>(&Payload.Port), 2); + hash.Finalize(); + + ConnectToRSA->Sign(hash.GetDigest(), hash.GetLength(), Payload.Signature.data(), Trinity::Crypto::RSA::SHA256{}); + + _worldPacket.append(Payload.Signature.data(), Payload.Signature.size()); + _worldPacket.append(whereBuffer); + _worldPacket << uint16(Payload.Port); _worldPacket << uint32(Serial); - size_t encryptedPayloadPos = _worldPacket.wpos(); - _worldPacket.resize(_worldPacket.size() + rsaSize); _worldPacket << uint8(Con); - - ConnectToRSA->Encrypt(payload.contents(), payload.size(), - _worldPacket.contents() + encryptedPayloadPos, - Trinity::Crypto::RSA::PrivateKey{}, - Trinity::Crypto::RSA::NoPadding{}); + _worldPacket << uint64(Key); return &_worldPacket; } @@ -333,3 +301,22 @@ void WorldPackets::Auth::ConnectToFailed::Read() Serial = _worldPacket.read<ConnectToSerial>(); _worldPacket >> Con; } + +uint8 constexpr EnableEncryptionSeed[16] = { 0x90, 0x9C, 0xD0, 0x50, 0x5A, 0x2C, 0x14, 0xDD, 0x5C, 0x2C, 0xC0, 0x64, 0x14, 0xF3, 0xFE, 0xC9 }; + +WorldPacket const* WorldPackets::Auth::EnableEncryption::Write() +{ + HmacSha256 hash(16, EncryptionKey); + hash.UpdateData(reinterpret_cast<uint8 const*>(&Enabled), 1); + hash.UpdateData(EnableEncryptionSeed, 16); + hash.Finalize(); + + _worldPacket.resize(_worldPacket.size() + ConnectToRSA->GetOutputSize()); + + ConnectToRSA->Sign(hash.GetDigest(), hash.GetLength(), _worldPacket.contents(), Trinity::Crypto::RSA::SHA256{}); + + _worldPacket.WriteBit(Enabled); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 556a4db0594..661676ed6af 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -63,12 +63,12 @@ namespace WorldPackets class AuthChallenge final : public ServerPacket { public: - AuthChallenge() : ServerPacket(SMSG_AUTH_CHALLENGE, 4 + 32 + 1) { } + AuthChallenge() : ServerPacket(SMSG_AUTH_CHALLENGE, 16 + 4 * 8 + 1) { } WorldPacket const* Write() override; std::array<uint8, 16> Challenge = { }; - uint32 DosChallenge[8] = { }; ///< Encryption seeds + std::array<uint32, 8> DosChallenge = { }; uint8 DosZeroBits = 0; }; @@ -200,26 +200,32 @@ namespace WorldPackets class ConnectTo final : public ServerPacket { - static std::string const Haiku; - static uint8 const PiDigits[130]; - public: static bool InitializeEncryption(); enum AddressType : uint8 { IPv4 = 1, - IPv6 = 2 + IPv6 = 2, + NamedSocket = 3 // not supported by windows client + }; + + struct SocketAddress + { + AddressType Type; + union + { + std::array<uint8, 4> V4; + std::array<uint8, 16> V6; + std::array<char, 128> Name; + } Address; }; struct ConnectPayload { - std::array<uint8, 16> Where; + SocketAddress Where; uint16 Port; - AddressType Type; - uint32 Adler32 = 0; - uint8 XorMagic = 0x2A; - uint8 PanamaKey[32]; + std::array<uint8, 256> Signature; }; ConnectTo(); @@ -275,9 +281,15 @@ namespace WorldPackets class EnableEncryption final : public ServerPacket { public: - EnableEncryption() : ServerPacket(SMSG_ENABLE_ENCRYPTION, 0) { } + EnableEncryption(uint8 const* encryptionKey, bool enabled) : ServerPacket(SMSG_ENABLE_ENCRYPTION, 256 + 1), + EncryptionKey(encryptionKey), Enabled(enabled) + { + } - WorldPacket const* Write() override { return &_worldPacket; } + WorldPacket const* Write() override; + + uint8 const* EncryptionKey; + bool Enabled = false; }; } } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index f4cd72123db..3c66cbc4853 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -19,9 +19,10 @@ WorldPacket const* WorldPackets::Battleground::PVPSeason::Write() { - _worldPacket << uint32(CurrentSeason); - _worldPacket << uint32(PreviousSeason); - _worldPacket << uint32(PvpSeasonID); + _worldPacket << int32(MythicPlusSeasonID); + _worldPacket << int32(CurrentSeason); + _worldPacket << int32(PreviousSeason); + _worldPacket << int32(PvpSeasonID); return &_worldPacket; } @@ -46,9 +47,12 @@ WorldPacket const* WorldPackets::Battleground::AreaSpiritHealerTime::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData::RatingData const& ratingData) { - data.append(ratingData.Prematch, 2); - data.append(ratingData.Postmatch, 2); - data.append(ratingData.PrematchMMR, 2); + for (std::size_t i = 0; i < 2; ++i) + { + data << int32(ratingData.Prematch[i]); + data << int32(ratingData.Postmatch[i]); + data << int32(ratingData.PrematchMMR[i]); + } return data; } @@ -60,7 +64,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData: return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData::PlayerData const& playerData) +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData::PVPMatchPlayerStatistics const& playerData) { data << playerData.PlayerGUID; data << uint32(playerData.Kills); @@ -105,20 +109,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData: WorldPacket const* WorldPackets::Battleground::PVPLogData::Write() { - _worldPacket.reserve(Players.size() * sizeof(PlayerData) + sizeof(PVPLogData)); + _worldPacket.reserve(Statistics.size() * sizeof(PVPMatchPlayerStatistics) + sizeof(PVPLogData)); _worldPacket.WriteBit(Ratings.is_initialized()); - _worldPacket.WriteBit(Winner.is_initialized()); - _worldPacket << uint32(Players.size()); - _worldPacket.append(PlayerCount, 2); + _worldPacket << uint32(Statistics.size()); + _worldPacket.append(PlayerCount.data(), PlayerCount.size()); if (Ratings.is_initialized()) _worldPacket << *Ratings; - if (Winner) - _worldPacket << uint8(*Winner); - - for (PlayerData const& player : Players) + for (PVPMatchPlayerStatistics const& player : Statistics) _worldPacket << player; return &_worldPacket; diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index c470ad7bbf6..d7084704b41 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -32,13 +32,14 @@ namespace WorldPackets class PVPSeason final : public ServerPacket { public: - PVPSeason() : ServerPacket(SMSG_PVP_SEASON, 8) { } + PVPSeason() : ServerPacket(SMSG_PVP_SEASON, 4 + 4 + 4 + 4) { } WorldPacket const* Write() override; - uint32 PreviousSeason = 0; - uint32 CurrentSeason = 0; - uint32 PvpSeasonID = 0; + int32 MythicPlusSeasonID = 0; + int32 PreviousSeason = 0; + int32 CurrentSeason = 0; + int32 PvpSeasonID = 0; }; class AreaSpiritHealerQuery final : public ClientPacket @@ -109,7 +110,7 @@ namespace WorldPackets uint32 ContributionPoints = 0; }; - struct PlayerData + struct PVPMatchPlayerStatistics { ObjectGuid PlayerGUID; uint32 Kills = 0; @@ -131,10 +132,9 @@ namespace WorldPackets int32 HonorLevel = 0; }; - Optional<uint8> Winner; - std::vector<PlayerData> Players; + std::vector<PVPMatchPlayerStatistics> Statistics; Optional<RatingData> Ratings; - int8 PlayerCount[2] = { }; + std::array<int8, 2> PlayerCount = { }; }; struct BattlefieldStatusHeader diff --git a/src/server/game/Server/Packets/BattlenetPackets.cpp b/src/server/game/Server/Packets/BattlenetPackets.cpp index ea0ba7f9052..5fc6b6d3767 100644 --- a/src/server/game/Server/Packets/BattlenetPackets.cpp +++ b/src/server/game/Server/Packets/BattlenetPackets.cpp @@ -55,6 +55,7 @@ WorldPacket const* WorldPackets::Battlenet::Response::Write() WorldPacket const* WorldPackets::Battlenet::SetSessionState::Write() { _worldPacket.WriteBits(State, 2); + _worldPacket.WriteBit(SuppressNotification); _worldPacket.FlushBits(); return &_worldPacket; diff --git a/src/server/game/Server/Packets/BattlenetPackets.h b/src/server/game/Server/Packets/BattlenetPackets.h index 797c53ee6df..d10646e23d2 100644 --- a/src/server/game/Server/Packets/BattlenetPackets.h +++ b/src/server/game/Server/Packets/BattlenetPackets.h @@ -68,6 +68,7 @@ namespace WorldPackets WorldPacket const* Write() override; uint8 State = 0; + bool SuppressNotification = true; }; class RealmListTicket final : public ServerPacket diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index 4ad4331f5d5..e9ce0b17b4a 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -65,7 +65,7 @@ WorldPacket const* WorldPackets::Channel::ChannelNotify::Write() WorldPacket const* WorldPackets::Channel::ChannelNotifyJoined::Write() { _worldPacket.WriteBits(_Channel.length(), 7); - _worldPacket.WriteBits(ChannelWelcomeMsg.length(), 10); + _worldPacket.WriteBits(ChannelWelcomeMsg.length(), 11); _worldPacket << uint32(_ChannelFlags); _worldPacket << int32(ChatChannelID); _worldPacket << uint64(InstanceID); diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index 7eddbb46cf9..444f022d3ae 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -236,7 +236,7 @@ namespace WorldPackets class GarrisonBuildingRemoved final : public ServerPacket { public: - GarrisonBuildingRemoved() : ServerPacket(SMSG_GARRISON_BUILDING_REMOVED, 4 + 4 + 4) { } + GarrisonBuildingRemoved() : ServerPacket(SMSG_GARRISON_BUILDING_REMOVED, 4 + 4 + 4 + 4) { } WorldPacket const* Write() override; @@ -353,7 +353,7 @@ namespace WorldPackets class GarrisonRemoveFollowerResult final : public ServerPacket { public: - GarrisonRemoveFollowerResult() : ServerPacket(SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, 8 + 4 + 4) { } + GarrisonRemoveFollowerResult() : ServerPacket(SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, 8 + 4 + 4 + 4) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 56768fafe8f..1e074cb3025 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -68,7 +68,7 @@ WorldPacket const* WorldPackets::Guild::GuildRoster::Write() _worldPacket.AppendPackedTime(CreateDate); _worldPacket << int32(GuildFlags); _worldPacket << uint32(MemberData.size()); - _worldPacket.WriteBits(WelcomeText.length(), 10); + _worldPacket.WriteBits(WelcomeText.length(), 11); _worldPacket.WriteBits(InfoText.length(), 11); _worldPacket.FlushBits(); @@ -93,7 +93,7 @@ WorldPacket const* WorldPackets::Guild::GuildRosterUpdate::Write() void WorldPackets::Guild::GuildUpdateMotdText::Read() { - uint32 textLen = _worldPacket.ReadBits(10); + uint32 textLen = _worldPacket.ReadBits(11); MotdText = _worldPacket.ReadString(textLen); } @@ -205,7 +205,7 @@ WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write() WorldPacket const* WorldPackets::Guild::GuildEventMotd::Write() { - _worldPacket.WriteBits(MotdText.length(), 10); + _worldPacket.WriteBits(MotdText.length(), 11); _worldPacket.FlushBits(); _worldPacket.WriteString(MotdText); diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp index b4be28ae025..e65279b1d4a 100644 --- a/src/server/game/Server/Packets/InspectPackets.cpp +++ b/src/server/game/Server/Packets/InspectPackets.cpp @@ -54,6 +54,49 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectItemData return data; } +void WorldPackets::Inspect::PlayerModelDisplayInfo::Initialize(Player const* player) +{ + GUID = player->GetGUID(); + 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 (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i) + if (::Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i)) + Items.emplace_back(item, i); +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PlayerModelDisplayInfo const& displayInfo) +{ + data << displayInfo.GUID; + data << int32(displayInfo.SpecializationID); + 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.WriteString(displayInfo.Name); + + for (WorldPackets::Inspect::InspectItemData const& item : displayInfo.Items) + data << item; + + return data; +} + ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectGuildData const& guildData) { data << guildData.GuildGUID; @@ -110,14 +153,11 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint WorldPacket const* WorldPackets::Inspect::InspectResult::Write() { - _worldPacket << InspecteeGUID; - _worldPacket << uint32(Items.size()); + _worldPacket << DisplayInfo; _worldPacket << uint32(Glyphs.size()); _worldPacket << uint32(Talents.size()); _worldPacket << uint32(PvpTalents.size()); - _worldPacket << int32(ClassID); - _worldPacket << int32(SpecializationID); - _worldPacket << int32(GenderID); + _worldPacket << int32(ItemLevel); _worldPacket << uint8(LifetimeMaxRank); _worldPacket << uint16(TodayHK); _worldPacket << uint16(YesterdayHK); @@ -143,9 +183,6 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write() if (AzeriteLevel) _worldPacket << int32(*AzeriteLevel); - for (InspectItemData const& item : Items) - _worldPacket << item; - return &_worldPacket; } diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h index 51b1248e286..86ac8f286c4 100644 --- a/src/server/game/Server/Packets/InspectPackets.h +++ b/src/server/game/Server/Packets/InspectPackets.h @@ -24,6 +24,7 @@ #include "SharedDefines.h" class Item; +class Player; namespace WorldPackets { @@ -60,6 +61,25 @@ namespace WorldPackets std::vector<int32> AzeritePowers; }; + struct PlayerModelDisplayInfo + { + ObjectGuid GUID; + std::vector<InspectItemData> Items; + 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; + + void Initialize(Player const* player); + }; + struct InspectGuildData { ObjectGuid GuildGUID; @@ -92,17 +112,14 @@ namespace WorldPackets WorldPacket const* Write() override; - ObjectGuid InspecteeGUID; - std::vector<InspectItemData> Items; + PlayerModelDisplayInfo DisplayInfo; std::vector<uint16> Glyphs; std::vector<uint16> Talents; std::array<uint16, MAX_PVP_TALENT_SLOTS> PvpTalents; - int32 ClassID = CLASS_NONE; - int32 GenderID = GENDER_NONE; Optional<InspectGuildData> GuildData; std::array<PVPBracketData, 6> Bracket; - int32 SpecializationID = 0; Optional<int32> AzeriteLevel; + int32 ItemLevel = 0; uint32 LifetimeHK = 0; uint32 HonorLevel = 0; uint16 TodayHK = 0; diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 653a49ea748..b45dcb290c1 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -328,15 +328,6 @@ void WorldPackets::Item::UseCritterItem::Read() _worldPacket >> ItemGuid; } -void WorldPackets::Item::UpgradeItem::Read() -{ - _worldPacket >> ItemMaster; - _worldPacket >> ItemGUID; - _worldPacket >> UpgradeID; - _worldPacket >> ContainerSlot; - _worldPacket >> Slot; -} - void WorldPackets::Item::SocketGems::Read() { _worldPacket >> ItemGuid; @@ -351,14 +342,6 @@ WorldPacket const* WorldPackets::Item::SocketGemsResult::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::Item::ItemUpgradeResult::Write() -{ - _worldPacket.WriteBit(Success); - _worldPacket.FlushBits(); - - return &_worldPacket; -} - void WorldPackets::Item::RemoveNewItem::Read() { _worldPacket >> ItemGuid; diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index 695f589612f..105fbfeae44 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -447,30 +447,6 @@ namespace WorldPackets ObjectGuid ItemGuid; }; - class UpgradeItem final : public ClientPacket - { - public: - UpgradeItem(WorldPacket&& packet) : ClientPacket(CMSG_UPGRADE_ITEM, std::move(packet)) { } - - void Read() override; - - ObjectGuid ItemMaster; - ObjectGuid ItemGUID; - int32 ContainerSlot = 0; - int32 UpgradeID = 0; - int32 Slot = 0; - }; - - class ItemUpgradeResult final : public ServerPacket - { - public: - ItemUpgradeResult() : ServerPacket(SMSG_ITEM_UPGRADE_RESULT, 1) { } - - WorldPacket const* Write() override; - - bool Success = false; - }; - class SocketGems final : public ClientPacket { public: diff --git a/src/server/game/Server/Packets/SocialPackets.cpp b/src/server/game/Server/Packets/SocialPackets.cpp index ba0bcff90bb..0854f33fc5e 100644 --- a/src/server/game/Server/Packets/SocialPackets.cpp +++ b/src/server/game/Server/Packets/SocialPackets.cpp @@ -51,6 +51,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Social::ContactInfo const data << uint32(contact.Level); data << uint32(contact.ClassID); data.WriteBits(contact.Notes.length(), 10); + data.WriteBit(contact.Mobile); data.FlushBits(); data.WriteString(contact.Notes); @@ -93,6 +94,7 @@ WorldPacket const* WorldPackets::Social::FriendStatus::Write() _worldPacket << uint32(Level); _worldPacket << uint32(ClassID); _worldPacket.WriteBits(Notes.length(), 10); + _worldPacket.WriteBit(Mobile); _worldPacket.FlushBits(); _worldPacket.WriteString(Notes); diff --git a/src/server/game/Server/Packets/SocialPackets.h b/src/server/game/Server/Packets/SocialPackets.h index 2d870b29de1..70cb6101465 100644 --- a/src/server/game/Server/Packets/SocialPackets.h +++ b/src/server/game/Server/Packets/SocialPackets.h @@ -53,6 +53,7 @@ namespace WorldPackets uint32 AreaID = 0; uint32 Level = 0; uint32 ClassID = CLASS_NONE; + bool Mobile = false; }; class ContactList final : public ServerPacket @@ -84,6 +85,7 @@ namespace WorldPackets uint32 Level = 0; uint32 AreaID = 0; uint8 FriendResult = 0; ///< @see enum FriendsResult + bool Mobile = false; }; struct QualifiedGUID diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 6287fc3c67a..d5b2be6428b 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -185,6 +185,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_AUTO_STORE_BAG_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoStoreBagItemOpcode); DEFINE_HANDLER(CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_AZERITE_EMPOWERED_ITEM_VIEWED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BANKER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBankerActivateOpcode); DEFINE_HANDLER(CMSG_BATTLEFIELD_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldLeaveOpcode); DEFINE_HANDLER(CMSG_BATTLEFIELD_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldListOpcode); @@ -326,6 +328,14 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePortGraveyard); DEFINE_HANDLER(CMSG_CLOSE_INTERACTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCloseInteraction); DEFINE_HANDLER(CMSG_CLOSE_QUEST_CHOICE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_FINDER_APPLICATION_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_FINDER_GET_APPLICANTS_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_FINDER_POST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST, 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_COLLECTION_ITEM_SET_FAVORITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCollectionItemSetFavorite); DEFINE_HANDLER(CMSG_COMMENTATOR_ENABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -344,7 +354,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CONTRIBUTION_CONTRIBUTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONTRIBUTION_GET_STATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONVERSATION_LINE_STARTED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_CONVERT_CONSUMPTION_TIME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONVERT_RAID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleConvertRaidOpcode); DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCreateOpcode); DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -549,7 +558,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_MOVE_FORCE_ROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); DEFINE_HANDLER(CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); - DEFINE_HANDLER(CMSG_MOVE_FORCE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); DEFINE_HANDLER(CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); DEFINE_HANDLER(CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); @@ -570,6 +578,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_MOVE_SET_FACING, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes); DEFINE_HANDLER(CMSG_MOVE_SET_FLY, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes); DEFINE_HANDLER(CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); + DEFINE_HANDLER(CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); 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_VEHICLE_REC_ID_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetVehicleRecAck); @@ -635,7 +644,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_PET_STOP_ATTACK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetStopAttack); DEFINE_HANDLER(CMSG_PING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess); DEFINE_HANDLER(CMSG_PLAYER_LOGIN, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandlePlayerLoginOpcode); - DEFINE_HANDLER(CMSG_PROTOCOL_MISMATCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PUSH_QUEST_TO_PARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty); DEFINE_HANDLER(CMSG_PVP_LOG_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePVPLogDataOpcode); DEFINE_HANDLER(CMSG_QUERY_BATTLE_PET_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -704,7 +712,6 @@ void OpcodeTable::Initialize() 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_CONSUMPTION_CONVERSION_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &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); @@ -853,7 +860,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateListedAuctionableTokens); DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_COUNT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_UPGRADE_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_UPGRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpgradeItem); 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); @@ -936,6 +942,9 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_AVAILABLE_HOTFIXES, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_EMPOWERED_ITEM_EQUIPPED_STATUS_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_ESSENCE_FORGE_CLOSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_ESSENCE_FORGE_OPENED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_ESSENCE_SELECTION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_XP_GAIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BAN_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -962,6 +971,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_UPDATE_SESSION_KEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_ACK_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_BUNDLE_PRICE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_CONFIRM_PURCHASE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_DELIVERY_ENDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_DELIVERY_STARTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1100,6 +1110,11 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_LOSS_OF_CONTROL, 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_CLUB_FINDER_APPLICANTS_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_APPLICATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_APPLICATIONS_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_CLUBS_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_CLUBS_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COIN_REMOVED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMBAT_EVENT_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_MAP_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1154,7 +1169,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_DURABILITY_DAMAGE_DEATH, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EMOTE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_BARBER_SHOP, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_ENCRYPTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_ENCRYPTION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCHANTMENT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1267,6 +1282,7 @@ 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_UNHANDLED, 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); @@ -1348,7 +1364,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_UPGRADE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_KICK_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARN_PVP_TALENTS_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1427,6 +1442,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MODIFY_PARTY_RANGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOTD, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOUNT_EQUIPMENT_APPLY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOUNT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_APPLY_MOVEMENT_FORCE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_COLLISION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1451,7 +1467,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_HOVERING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_LAND_WALK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_MOVEMENT_FORCE_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_NORMAL_FALL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1502,7 +1518,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_KNOCK_BACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_MOVEMENT_FORCE_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE,STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1600,6 +1616,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PUSH_SPELL_TO_ACTION_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_START, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_SEASON, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1802,6 +1819,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_TITLE_EARNED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TITLE_LOST, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_CREATED, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_DURATION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_MOVED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_UPDATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 5effe3ccd36..4b6015d4934 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -54,19 +54,19 @@ enum OpcodeClient : uint16 CMSG_ADD_BATTLENET_FRIEND = 0x365C, CMSG_ADD_FRIEND = 0x36D5, CMSG_ADD_IGNORE = 0x36D9, - CMSG_ADD_TOY = 0x3297, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3201, - CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x333E, - CMSG_ADVENTURE_MAP_POI_QUERY = 0x3245, + CMSG_ADD_TOY = 0x329A, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3204, + CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x3341, + CMSG_ADVENTURE_MAP_POI_QUERY = 0x3248, CMSG_ALTER_APPEARANCE = 0x34F6, CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B0, CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B1, - CMSG_AREA_TRIGGER = 0x31D5, - CMSG_ARTIFACT_ADD_POWER = 0x31A8, - CMSG_ARTIFACT_SET_APPEARANCE = 0x31AA, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3209, - CMSG_ATTACK_STOP = 0x3254, - CMSG_ATTACK_SWING = 0x3253, + CMSG_AREA_TRIGGER = 0x31D8, + CMSG_ARTIFACT_ADD_POWER = 0x31A9, + CMSG_ARTIFACT_SET_APPEARANCE = 0x31AB, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320C, + CMSG_ATTACK_STOP = 0x3257, + CMSG_ATTACK_SWING = 0x3256, CMSG_AUCTION_HELLO_REQUEST = 0x34CB, CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x34D1, CMSG_AUCTION_LIST_ITEMS = 0x34CE, @@ -85,13 +85,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 = 0x335C, - CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3348, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x335F, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x334B, + CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3361, + CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3360, CMSG_BANKER_ACTIVATE = 0x34B3, - CMSG_BATTLEFIELD_LEAVE = 0x3172, - CMSG_BATTLEFIELD_LIST = 0x317D, + CMSG_BATTLEFIELD_LEAVE = 0x3173, + CMSG_BATTLEFIELD_LIST = 0x317E, CMSG_BATTLEFIELD_PORT = 0x3527, - CMSG_BATTLEMASTER_HELLO = 0x32AF, + CMSG_BATTLEMASTER_HELLO = 0x32B2, CMSG_BATTLEMASTER_JOIN = 0x3522, CMSG_BATTLEMASTER_JOIN_ARENA = 0x3523, CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3525, @@ -100,21 +102,21 @@ enum OpcodeClient : uint16 CMSG_BATTLENET_REQUEST = 0x36FC, CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x3700, CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36D0, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x371B, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3719, CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CF, CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C6, CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BE, CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BF, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3714, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3712, CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C9, CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C7, - CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x3711, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3710, - CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x3712, + CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x370F, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x370E, + CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x3710, CMSG_BATTLE_PAY_START_PURCHASE = 0x36F8, CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F9, CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C8, - CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x3713, + CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x3711, CMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x36F7, CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C, CMSG_BATTLE_PET_DELETE_PET = 0x3625, @@ -125,14 +127,14 @@ enum OpcodeClient : uint16 CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362D, CMSG_BATTLE_PET_SET_FLAGS = 0x3631, CMSG_BATTLE_PET_SUMMON = 0x3629, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31DF, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31DE, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E2, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E1, CMSG_BEGIN_TRADE = 0x3157, CMSG_BINDER_ACTIVATE = 0x34B2, CMSG_BLACK_MARKET_BID_ON_ITEM = 0x352F, CMSG_BLACK_MARKET_OPEN = 0x352D, CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x352E, - CMSG_BONUS_ROLL = 0x335D, + CMSG_BONUS_ROLL = 0x3362, CMSG_BUG_REPORT = 0x3688, CMSG_BUSY_TRADE = 0x3158, CMSG_BUY_BACK_ITEM = 0x34A4, @@ -141,7 +143,7 @@ enum OpcodeClient : uint16 CMSG_BUY_REAGENT_BANK = 0x34B5, CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36F1, CMSG_BUY_WOW_TOKEN_START = 0x36F0, - CMSG_CAGE_BATTLE_PET = 0x31F0, + CMSG_CAGE_BATTLE_PET = 0x31F3, CMSG_CALENDAR_ADD_EVENT = 0x367F, CMSG_CALENDAR_COMMUNITY_FILTER = 0x3673, CMSG_CALENDAR_COMPLAIN = 0x367B, @@ -157,25 +159,25 @@ enum OpcodeClient : uint16 CMSG_CALENDAR_REMOVE_EVENT = 0x3679, CMSG_CALENDAR_REMOVE_INVITE = 0x3675, CMSG_CALENDAR_UPDATE_EVENT = 0x3680, - CMSG_CANCEL_AURA = 0x31AC, + CMSG_CANCEL_AURA = 0x31AD, CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34E8, - CMSG_CANCEL_CAST = 0x329D, - CMSG_CANCEL_CHANNELLING = 0x3269, - CMSG_CANCEL_GROWTH_AURA = 0x326E, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3211, - CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AB, - CMSG_CANCEL_MOUNT_AURA = 0x327F, - CMSG_CANCEL_QUEUED_SPELL = 0x317E, + CMSG_CANCEL_CAST = 0x32A0, + CMSG_CANCEL_CHANNELLING = 0x326C, + CMSG_CANCEL_GROWTH_AURA = 0x3271, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3214, + CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AC, + CMSG_CANCEL_MOUNT_AURA = 0x3282, + CMSG_CANCEL_QUEUED_SPELL = 0x317F, CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34F3, CMSG_CANCEL_TRADE = 0x315C, CMSG_CAN_DUEL = 0x3664, - CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x370F, - CMSG_CAST_SPELL = 0x329A, + CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x370D, + CMSG_CAST_SPELL = 0x329D, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090, CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS = 0x308F, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x3320, - CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3321, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3302, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x3323, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3324, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3305, CMSG_CHANGE_SUB_GROUP = 0x364E, CMSG_CHARACTER_RENAME_REQUEST = 0x36C4, CMSG_CHAR_CUSTOMIZE = 0x3693, @@ -219,12 +221,20 @@ enum OpcodeClient : uint16 CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE, CMSG_CHECK_RAF_EMAIL_ENABLED = 0x36D1, CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36EF, - CMSG_CHOICE_RESPONSE = 0x329F, - CMSG_CLEAR_RAID_MARKER = 0x31A4, + CMSG_CHOICE_RESPONSE = 0x32A2, + CMSG_CLEAR_RAID_MARKER = 0x31A5, CMSG_CLEAR_TRADE_ITEM = 0x315E, CMSG_CLIENT_PORT_GRAVEYARD = 0x3529, CMSG_CLOSE_INTERACTION = 0x3493, - CMSG_CLOSE_QUEST_CHOICE = 0x32A0, + CMSG_CLOSE_QUEST_CHOICE = 0x32A3, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x3723, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3721, + CMSG_CLUB_FINDER_POST = 0x371E, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x3727, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x371F, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3720, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x3726, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x3722, CMSG_CLUB_INVITE = 0x36FF, CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3634, CMSG_COMMENTATOR_ENABLE = 0x35F1, @@ -237,24 +247,23 @@ enum OpcodeClient : uint16 CMSG_COMPLAINT = 0x366E, CMSG_COMPLETE_CINEMATIC = 0x3547, CMSG_COMPLETE_MOVIE = 0x34DE, - CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31A9, - CMSG_CONFIRM_RESPEC_WIPE = 0x320B, + CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AA, + CMSG_CONFIRM_RESPEC_WIPE = 0x320E, CMSG_CONNECT_TO_FAILED = 0x35D4, CMSG_CONTRIBUTION_CONTRIBUTE = 0x3557, CMSG_CONTRIBUTION_GET_STATE = 0x3558, CMSG_CONVERSATION_LINE_STARTED = 0x3548, - CMSG_CONVERT_CONSUMPTION_TIME = 0x3702, CMSG_CONVERT_RAID = 0x3650, CMSG_CREATE_CHARACTER = 0x3645, - CMSG_CREATE_SHIPMENT = 0x32EE, + CMSG_CREATE_SHIPMENT = 0x32F1, CMSG_DB_QUERY_BULK = 0x35E5, CMSG_DECLINE_GUILD_INVITES = 0x3520, CMSG_DECLINE_PETITION = 0x3536, CMSG_DELETE_EQUIPMENT_SET = 0x350D, CMSG_DEL_FRIEND = 0x36D6, CMSG_DEL_IGNORE = 0x36DA, - CMSG_DEPOSIT_REAGENT_BANK = 0x3329, - CMSG_DESTROY_ITEM = 0x3291, + CMSG_DEPOSIT_REAGENT_BANK = 0x332C, + CMSG_DESTROY_ITEM = 0x3294, CMSG_DF_BOOT_PLAYER_VOTE = 0x3616, CMSG_DF_GET_JOIN_STATUS = 0x3614, CMSG_DF_GET_SYSTEM_INFO = 0x3613, @@ -266,10 +275,10 @@ enum OpcodeClient : uint16 CMSG_DF_TELEPORT = 0x3617, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3C, CMSG_DISMISS_CRITTER = 0x34FC, - CMSG_DO_MASTER_LOOT_ROLL = 0x3210, + CMSG_DO_MASTER_LOOT_ROLL = 0x3213, CMSG_DO_READY_CHECK = 0x3635, CMSG_DUEL_RESPONSE = 0x34E3, - CMSG_EJECT_PASSENGER = 0x323A, + CMSG_EJECT_PASSENGER = 0x323D, CMSG_EMOTE = 0x3543, CMSG_ENABLE_ENCRYPTION_ACK = 0x3767, CMSG_ENABLE_NAGLE = 0x376B, @@ -278,43 +287,43 @@ enum OpcodeClient : uint16 CMSG_ENUM_CHARACTERS = 0x35E9, CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36E3, CMSG_FAR_SIGHT = 0x34E9, - CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B0, - CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31AF, + CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B1, + CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B0, CMSG_GAME_OBJ_REPORT_USE = 0x34F0, CMSG_GAME_OBJ_USE = 0x34EF, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32D9, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32CA, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x331C, - CMSG_GARRISON_COMPLETE_MISSION = 0x330F, - CMSG_GARRISON_GENERATE_RECRUITS = 0x32DC, - CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32EA, - CMSG_GARRISON_GET_MISSION_REWARD = 0x3342, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3311, - CMSG_GARRISON_PURCHASE_BUILDING = 0x32C6, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32DE, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x3306, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32DA, - CMSG_GARRISON_RENAME_FOLLOWER = 0x32DB, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32C5, - CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32E3, - CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32ED, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32EC, - CMSG_GARRISON_RESEARCH_TALENT = 0x32DF, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32C7, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32D7, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32D3, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32DD, - CMSG_GARRISON_START_MISSION = 0x330E, - CMSG_GARRISON_SWAP_BUILDINGS = 0x32CB, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32DC, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32CD, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x331F, + CMSG_GARRISON_COMPLETE_MISSION = 0x3312, + CMSG_GARRISON_GENERATE_RECRUITS = 0x32DF, + CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32ED, + CMSG_GARRISON_GET_MISSION_REWARD = 0x3345, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3314, + CMSG_GARRISON_PURCHASE_BUILDING = 0x32C9, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32E1, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x3309, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32DD, + CMSG_GARRISON_RENAME_FOLLOWER = 0x32DE, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32C8, + CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32E6, + CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32F0, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32EF, + CMSG_GARRISON_RESEARCH_TALENT = 0x32E2, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32CA, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32DA, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32D6, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32E0, + CMSG_GARRISON_START_MISSION = 0x3311, + CMSG_GARRISON_SWAP_BUILDINGS = 0x32CE, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E8, CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36BA, CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3685, - CMSG_GET_GARRISON_INFO = 0x32C0, + CMSG_GET_GARRISON_INFO = 0x32C3, CMSG_GET_ITEM_PURCHASE_DATA = 0x3531, - CMSG_GET_MIRROR_IMAGE_DATA = 0x3295, + CMSG_GET_MIRROR_IMAGE_DATA = 0x3298, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EF, CMSG_GET_REMAINING_GAME_TIME = 0x36F2, - CMSG_GET_TROPHY_LIST = 0x32FF, + CMSG_GET_TROPHY_LIST = 0x3302, CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E5, CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3697, CMSG_GM_TICKET_GET_CASE_STATUS = 0x3696, @@ -372,27 +381,27 @@ enum OpcodeClient : uint16 CMSG_INITIATE_TRADE = 0x3156, CMSG_INSPECT = 0x352B, CMSG_INSTANCE_LOCK_RESPONSE = 0x350E, - CMSG_ISLAND_QUEUE = 0x3388, + CMSG_ISLAND_QUEUE = 0x338E, CMSG_ITEM_PURCHASE_REFUND = 0x3532, - CMSG_ITEM_TEXT_QUERY = 0x331D, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DC, - CMSG_JOIN_RATED_BATTLEGROUND = 0x3177, + CMSG_ITEM_TEXT_QUERY = 0x3320, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DF, + CMSG_JOIN_RATED_BATTLEGROUND = 0x3178, CMSG_KEEP_ALIVE = 0x3681, - CMSG_KEYBOUND_OVERRIDE = 0x3222, + CMSG_KEYBOUND_OVERRIDE = 0x3225, CMSG_LEARN_PVP_TALENTS = 0x3556, CMSG_LEARN_TALENTS = 0x3554, CMSG_LEAVE_GROUP = 0x364B, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DD, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E0, CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360D, CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360E, CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360F, CMSG_LFG_LIST_GET_STATUS = 0x360B, CMSG_LFG_LIST_INVITE_APPLICANT = 0x3610, CMSG_LFG_LIST_INVITE_RESPONSE = 0x3611, - CMSG_LFG_LIST_JOIN = 0x335A, + CMSG_LFG_LIST_JOIN = 0x335D, CMSG_LFG_LIST_LEAVE = 0x360A, CMSG_LFG_LIST_SEARCH = 0x360C, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x335B, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x335E, CMSG_LF_GUILD_ADD_RECRUIT = 0x361C, CMSG_LF_GUILD_BROWSE = 0x361E, CMSG_LF_GUILD_DECLINE_RECRUIT = 0x3079, @@ -406,33 +415,33 @@ enum OpcodeClient : uint16 CMSG_LIVE_REGION_CHARACTER_COPY = 0x36BC, CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36BB, CMSG_LOADING_SCREEN_NOTIFY = 0x35F9, - CMSG_LOAD_SELECTED_TROPHY = 0x3300, + CMSG_LOAD_SELECTED_TROPHY = 0x3303, CMSG_LOGOUT_CANCEL = 0x34D9, CMSG_LOGOUT_INSTANT = 0x34DA, CMSG_LOGOUT_REQUEST = 0x34D7, CMSG_LOG_DISCONNECT = 0x3769, CMSG_LOG_STREAMING_ERROR = 0x376D, - CMSG_LOOT_ITEM = 0x320E, - CMSG_LOOT_MONEY = 0x320D, - CMSG_LOOT_RELEASE = 0x3212, - CMSG_LOOT_ROLL = 0x3213, - CMSG_LOOT_UNIT = 0x320C, + CMSG_LOOT_ITEM = 0x3211, + CMSG_LOOT_MONEY = 0x3210, + CMSG_LOOT_RELEASE = 0x3215, + CMSG_LOOT_ROLL = 0x3216, + CMSG_LOOT_UNIT = 0x320F, CMSG_LOW_LEVEL_RAID1 = 0x36A4, CMSG_LOW_LEVEL_RAID2 = 0x3515, CMSG_MAIL_CREATE_TEXT_ITEM = 0x353D, - CMSG_MAIL_DELETE = 0x3224, + CMSG_MAIL_DELETE = 0x3227, CMSG_MAIL_GET_LIST = 0x3538, CMSG_MAIL_MARK_AS_READ = 0x353C, CMSG_MAIL_RETURN_TO_SENDER = 0x3657, CMSG_MAIL_TAKE_ITEM = 0x353A, CMSG_MAIL_TAKE_MONEY = 0x3539, - CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3227, - CMSG_MASTER_LOOT_ITEM = 0x320F, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322A, + CMSG_MASTER_LOOT_ITEM = 0x3212, CMSG_MINIMAP_PING = 0x364D, - CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3189, + CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A, CMSG_MOUNT_CLEAR_FANFARE = 0x312D, CMSG_MOUNT_SET_FAVORITE = 0x3633, - CMSG_MOUNT_SPECIAL_ANIM = 0x3280, + CMSG_MOUNT_SPECIAL_ANIM = 0x3283, CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A12, CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2C, CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A31, @@ -449,7 +458,6 @@ enum OpcodeClient : uint16 CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0B, CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A09, CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x3A08, - CMSG_MOVE_FORCE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A3D, CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0x3A1F, CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x3A0A, CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0x3A20, @@ -470,6 +478,7 @@ enum OpcodeClient : uint16 CMSG_MOVE_SET_FACING = 0x3A06, CMSG_MOVE_SET_FLY = 0x3A25, CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3A23, + CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3A3D, CMSG_MOVE_SET_PITCH = 0x3A07, CMSG_MOVE_SET_RUN_MODE = 0x39F2, CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0x3A11, @@ -497,16 +506,16 @@ enum OpcodeClient : uint16 CMSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x3A05, CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A17, CMSG_MOVE_WATER_WALK_ACK = 0x3A1A, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D2, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D5, CMSG_NEXT_CINEMATIC_CAMERA = 0x3546, - CMSG_OBJECT_UPDATE_FAILED = 0x317F, - CMSG_OBJECT_UPDATE_RESCUED = 0x3180, + CMSG_OBJECT_UPDATE_FAILED = 0x3180, + CMSG_OBJECT_UPDATE_RESCUED = 0x3181, CMSG_OFFER_PETITION = 0x36B3, CMSG_OPENING_CINEMATIC = 0x3545, - CMSG_OPEN_ITEM = 0x331E, - CMSG_OPEN_MISSION_NPC = 0x32E5, - CMSG_OPEN_SHIPMENT_NPC = 0x32EB, - CMSG_OPEN_TRADESKILL_NPC = 0x32F6, + CMSG_OPEN_ITEM = 0x3321, + CMSG_OPEN_MISSION_NPC = 0x32E8, + CMSG_OPEN_SHIPMENT_NPC = 0x32EE, + CMSG_OPEN_TRADESKILL_NPC = 0x32F9, CMSG_OPT_OUT_OF_LOOT = 0x34F7, CMSG_PARTY_INVITE = 0x3603, CMSG_PARTY_INVITE_RESPONSE = 0x3604, @@ -517,50 +526,49 @@ enum OpcodeClient : uint16 CMSG_PETITION_SHOW_SIGNATURES = 0x34CA, CMSG_PET_ABANDON = 0x348D, CMSG_PET_ACTION = 0x348B, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E1, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E4, CMSG_PET_BATTLE_INPUT = 0x3642, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3223, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E0, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3226, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E3, CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3643, - CMSG_PET_BATTLE_REQUEST_PVP = 0x31DA, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DB, - CMSG_PET_BATTLE_REQUEST_WILD = 0x31D8, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E2, - CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31D9, + CMSG_PET_BATTLE_REQUEST_PVP = 0x31DD, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DE, + CMSG_PET_BATTLE_REQUEST_WILD = 0x31DB, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E5, + CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DC, CMSG_PET_CANCEL_AURA = 0x348E, - CMSG_PET_CAST_SPELL = 0x3299, + CMSG_PET_CAST_SPELL = 0x329C, CMSG_PET_RENAME = 0x3687, CMSG_PET_SET_ACTION = 0x348A, CMSG_PET_SPELL_AUTOCAST = 0x348F, CMSG_PET_STOP_ATTACK = 0x348C, CMSG_PING = 0x3768, CMSG_PLAYER_LOGIN = 0x35EB, - CMSG_PROTOCOL_MISMATCH = 0x376E, CMSG_PUSH_QUEST_TO_PARTY = 0x349F, - CMSG_PVP_LOG_DATA = 0x317A, - CMSG_QUERY_BATTLE_PET_NAME = 0x3275, + CMSG_PVP_LOG_DATA = 0x317B, + CMSG_QUERY_BATTLE_PET_NAME = 0x3278, CMSG_QUERY_COMMUNITY_NAME = 0x368E, CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3662, CMSG_QUERY_CORPSE_TRANSPORT = 0x3663, - CMSG_QUERY_COUNTDOWN_TIMER = 0x31A7, - CMSG_QUERY_CREATURE = 0x326F, - CMSG_QUERY_GAME_OBJECT = 0x3270, - CMSG_QUERY_GARRISON_CREATURE_NAME = 0x3276, + CMSG_QUERY_COUNTDOWN_TIMER = 0x31A8, + CMSG_QUERY_CREATURE = 0x3272, + CMSG_QUERY_GAME_OBJECT = 0x3273, + CMSG_QUERY_GARRISON_CREATURE_NAME = 0x3279, CMSG_QUERY_GUILD_INFO = 0x3691, CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3503, CMSG_QUERY_NEXT_MAIL_TIME = 0x353B, - CMSG_QUERY_NPC_TEXT = 0x3271, - CMSG_QUERY_PAGE_TEXT = 0x3273, - CMSG_QUERY_PETITION = 0x3277, - CMSG_QUERY_PET_NAME = 0x3274, + CMSG_QUERY_NPC_TEXT = 0x3274, + CMSG_QUERY_PAGE_TEXT = 0x3276, + CMSG_QUERY_PETITION = 0x327A, + CMSG_QUERY_PET_NAME = 0x3277, CMSG_QUERY_PLAYER_NAME = 0x368D, - CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3174, - CMSG_QUERY_QUEST_INFO = 0x3272, + CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175, + CMSG_QUERY_QUEST_INFO = 0x3275, CMSG_QUERY_REALM_NAME = 0x3690, CMSG_QUERY_SCENARIO_POI = 0x3658, CMSG_QUERY_TIME = 0x34D6, - CMSG_QUERY_TREASURE_PICKER = 0x3344, - CMSG_QUERY_VOID_STORAGE = 0x31A0, + CMSG_QUERY_TREASURE_PICKER = 0x3347, + CMSG_QUERY_VOID_STORAGE = 0x31A1, CMSG_QUEST_CONFIRM_ACCEPT = 0x349E, CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3498, CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x349A, @@ -574,72 +582,71 @@ enum OpcodeClient : uint16 CMSG_QUEST_POI_QUERY = 0x36B4, CMSG_QUEST_PUSH_RESULT = 0x34A0, CMSG_QUEUED_MESSAGES_END = 0x376C, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x370E, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x370D, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x370C, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x370B, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x370C, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x370B, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x370A, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3709, CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36EA, CMSG_RANDOM_ROLL = 0x3656, CMSG_READY_CHECK_RESPONSE = 0x3636, - CMSG_READ_ITEM = 0x331F, + CMSG_READ_ITEM = 0x3322, CMSG_RECLAIM_CORPSE = 0x34DC, CMSG_RECRUIT_A_FRIEND = 0x36D2, CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36F4, CMSG_REDEEM_WOW_TOKEN_START = 0x36F3, - CMSG_REMOVE_NEW_ITEM = 0x3347, + CMSG_REMOVE_NEW_ITEM = 0x334A, CMSG_REORDER_CHARACTERS = 0x35EA, CMSG_REPAIR_ITEM = 0x34ED, - CMSG_REPLACE_TROPHY = 0x3301, + CMSG_REPLACE_TROPHY = 0x3304, CMSG_REPOP_REQUEST = 0x3528, - CMSG_REPORT_CLIENT_VARIABLES = 0x3708, - CMSG_REPORT_ENABLED_ADDONS = 0x3707, - CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3709, + CMSG_REPORT_CLIENT_VARIABLES = 0x3706, + CMSG_REPORT_ENABLED_ADDONS = 0x3705, + CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3707, CMSG_REPORT_PVP_PLAYER_AFK = 0x34F5, - CMSG_REPORT_SERVER_LAG = 0x338D, + CMSG_REPORT_SERVER_LAG = 0x3394, CMSG_REQUEST_ACCOUNT_DATA = 0x369A, - CMSG_REQUEST_AREA_POI_UPDATE = 0x3346, + CMSG_REQUEST_AREA_POI_UPDATE = 0x3349, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DD, - CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317C, - CMSG_REQUEST_CEMETERY_LIST = 0x3175, - CMSG_REQUEST_CHALLENGE_MODE_AFFIXES = 0x3205, + CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317D, + CMSG_REQUEST_CEMETERY_LIST = 0x3176, + CMSG_REQUEST_CHALLENGE_MODE_AFFIXES = 0x3208, CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3692, - CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32B2, - CMSG_REQUEST_CONSUMPTION_CONVERSION_INFO = 0x3701, + CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32B5, CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x352C, - CMSG_REQUEST_FORCED_REACTIONS = 0x3207, - CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A6, - CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A5, - CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32A2, + CMSG_REQUEST_FORCED_REACTIONS = 0x320A, + CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A7, + CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A6, + CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32A5, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F8, CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3655, CMSG_REQUEST_PET_INFO = 0x3490, - CMSG_REQUEST_PLAYED_TIME = 0x327A, - CMSG_REQUEST_PVP_BRAWL_INFO = 0x3194, - CMSG_REQUEST_PVP_REWARDS = 0x3193, - CMSG_REQUEST_QUEST_LINES_FOR_MAP = 0x3389, + CMSG_REQUEST_PLAYED_TIME = 0x327D, + CMSG_REQUEST_PVP_BRAWL_INFO = 0x3195, + CMSG_REQUEST_PVP_REWARDS = 0x3194, + CMSG_REQUEST_QUEST_LINES_FOR_MAP = 0x338F, CMSG_REQUEST_RAID_INFO = 0x36CD, CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x35E4, CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309B, CMSG_REQUEST_RESEARCH_HISTORY = 0x3167, CMSG_REQUEST_STABLED_PETS = 0x3491, - CMSG_REQUEST_VEHICLE_EXIT = 0x3235, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3237, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3236, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3238, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3345, + CMSG_REQUEST_VEHICLE_EXIT = 0x3238, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x323A, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3239, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x323B, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3348, CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36EC, - CMSG_RESET_CHALLENGE_MODE = 0x3203, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3204, + CMSG_RESET_CHALLENGE_MODE = 0x3206, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3207, CMSG_RESET_INSTANCES = 0x366A, CMSG_RESURRECT_RESPONSE = 0x3686, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x3303, - CMSG_RIDE_VEHICLE_INTERACT = 0x3239, - CMSG_SAVE_CUF_PROFILES = 0x318A, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x3306, + CMSG_RIDE_VEHICLE_INTERACT = 0x323C, + CMSG_SAVE_CUF_PROFILES = 0x318B, CMSG_SAVE_EQUIPMENT_SET = 0x350C, - CMSG_SAVE_GUILD_EMBLEM = 0x32A6, - CMSG_SCENE_PLAYBACK_CANCELED = 0x321F, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x321E, - CMSG_SCENE_TRIGGER_EVENT = 0x3220, + CMSG_SAVE_GUILD_EMBLEM = 0x32A9, + CMSG_SCENE_PLAYBACK_CANCELED = 0x3222, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x3221, + CMSG_SCENE_TRIGGER_EVENT = 0x3223, CMSG_SELF_RES = 0x3533, CMSG_SELL_ITEM = 0x34A2, CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36EE, @@ -648,58 +655,58 @@ enum OpcodeClient : uint16 CMSG_SEND_MAIL = 0x35FB, CMSG_SEND_SOR_REQUEST_VIA_ADDRESS = 0x3621, CMSG_SEND_TEXT_EMOTE = 0x3488, - CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3225, + CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3228, CMSG_SET_ACTION_BAR_TOGGLES = 0x3534, CMSG_SET_ACTION_BUTTON = 0x3637, CMSG_SET_ACTIVE_MOVER = 0x3A37, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32B3, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32B6, CMSG_SET_ASSISTANT_LEADER = 0x3651, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3322, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3323, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3325, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3326, CMSG_SET_CONTACT_NOTES = 0x36D7, CMSG_SET_CURRENCY_FLAGS = 0x3169, - CMSG_SET_DIFFICULTY_ID = 0x3221, + CMSG_SET_DIFFICULTY_ID = 0x3224, CMSG_SET_DUNGEON_DIFFICULTY = 0x3684, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3618, CMSG_SET_FACTION_AT_WAR = 0x34DF, CMSG_SET_FACTION_INACTIVE = 0x34E1, CMSG_SET_FACTION_NOT_AT_WAR = 0x34E0, - CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B8, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3325, - CMSG_SET_LFG_BONUS_FACTION_ID = 0x32A1, + CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B9, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3328, + CMSG_SET_LFG_BONUS_FACTION_ID = 0x32A4, CMSG_SET_LOOT_METHOD = 0x364A, CMSG_SET_LOOT_SPECIALIZATION = 0x3541, CMSG_SET_PARTY_ASSIGNMENT = 0x3653, CMSG_SET_PARTY_LEADER = 0x364C, CMSG_SET_PET_SLOT = 0x3168, CMSG_SET_PLAYER_DECLINED_NAMES = 0x368C, - CMSG_SET_PREFERRED_CEMETERY = 0x3176, - CMSG_SET_PVP = 0x32AA, + CMSG_SET_PREFERRED_CEMETERY = 0x3177, + CMSG_SET_PVP = 0x32AD, CMSG_SET_RAID_DIFFICULTY = 0x36E1, CMSG_SET_ROLE = 0x35D9, CMSG_SET_SAVED_INSTANCE_EXTEND = 0x368A, CMSG_SET_SELECTION = 0x352A, CMSG_SET_SHEATHED = 0x3489, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3324, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3327, CMSG_SET_TAXI_BENCHMARK_MODE = 0x34F4, - CMSG_SET_TITLE = 0x327E, + CMSG_SET_TITLE = 0x3281, CMSG_SET_TRADE_CURRENCY = 0x3160, CMSG_SET_TRADE_GOLD = 0x315F, CMSG_SET_TRADE_ITEM = 0x315D, - CMSG_SET_USING_PARTY_GARRISON = 0x32E7, - CMSG_SET_WAR_MODE = 0x32AB, + CMSG_SET_USING_PARTY_GARRISON = 0x32EA, + CMSG_SET_WAR_MODE = 0x32AE, CMSG_SET_WATCHED_FACTION = 0x34E2, CMSG_SHOW_TRADE_SKILL = 0x36C5, CMSG_SIGN_PETITION = 0x3535, CMSG_SILENCE_PARTY_TALKER = 0x3654, CMSG_SOCKET_GEMS = 0x34EC, - CMSG_SORT_BAGS = 0x3326, - CMSG_SORT_BANK_BAGS = 0x3327, - CMSG_SORT_REAGENT_BANK_BAGS = 0x3328, + CMSG_SORT_BAGS = 0x3329, + CMSG_SORT_BANK_BAGS = 0x332A, + CMSG_SORT_REAGENT_BANK_BAGS = 0x332B, CMSG_SPELL_CLICK = 0x3495, CMSG_SPIRIT_HEALER_ACTIVATE = 0x34AF, CMSG_SPLIT_ITEM = 0x399E, - CMSG_STAND_STATE_CHANGE = 0x3188, + CMSG_STAND_STATE_CHANGE = 0x3189, CMSG_START_CHALLENGE_MODE = 0x354C, CMSG_START_SPECTATOR_WAR_GAME = 0x35E0, CMSG_START_WAR_GAME = 0x35DF, @@ -707,14 +714,14 @@ enum OpcodeClient : uint16 CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x3647, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646, CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3648, - CMSG_SURRENDER_ARENA = 0x3173, + 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 = 0x364F, - CMSG_SWAP_VOID_ITEM = 0x31A2, - CMSG_TABARD_VENDOR_ACTIVATE = 0x32A7, + CMSG_SWAP_VOID_ITEM = 0x31A3, + CMSG_TABARD_VENDOR_ACTIVATE = 0x32AA, CMSG_TALK_TO_GOSSIP = 0x3492, CMSG_TAXI_NODE_STATUS_QUERY = 0x34A8, CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34AA, @@ -724,45 +731,44 @@ enum OpcodeClient : uint16 CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3A, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A39, CMSG_TOGGLE_DIFFICULTY = 0x3659, - CMSG_TOGGLE_PVP = 0x32A9, + CMSG_TOGGLE_PVP = 0x32AC, CMSG_TOTEM_DESTROYED = 0x34FB, CMSG_TOY_CLEAR_FANFARE = 0x312E, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x3343, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x3346, CMSG_TRAINER_BUY_SPELL = 0x34AE, CMSG_TRAINER_LIST = 0x34AD, - CMSG_TRANSMOGRIFY_ITEMS = 0x3195, + CMSG_TRANSMOGRIFY_ITEMS = 0x3196, CMSG_TURN_IN_PETITION = 0x3537, CMSG_TUTORIAL = 0x36E2, CMSG_TWITTER_CHECK_STATUS = 0x312A, CMSG_TWITTER_CONNECT = 0x3127, CMSG_TWITTER_DISCONNECT = 0x312B, - CMSG_TWITTER_POST = 0x332A, + CMSG_TWITTER_POST = 0x332D, CMSG_UI_TIME_REQUEST = 0x369F, CMSG_UNACCEPT_TRADE = 0x315B, CMSG_UNDELETE_CHARACTER = 0x36E4, CMSG_UNLEARN_SKILL = 0x34E6, - CMSG_UNLEARN_SPECIALIZATION = 0x31A3, - CMSG_UNLOCK_VOID_STORAGE = 0x319F, + CMSG_UNLEARN_SPECIALIZATION = 0x31A4, + CMSG_UNLOCK_VOID_STORAGE = 0x31A0, CMSG_UPDATE_ACCOUNT_DATA = 0x369B, - CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x329C, + CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x329F, CMSG_UPDATE_CLIENT_SETTINGS = 0x3666, CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A3E, CMSG_UPDATE_RAID_TARGET = 0x3652, - CMSG_UPDATE_SPELL_VISUAL = 0x329B, + CMSG_UPDATE_SPELL_VISUAL = 0x329E, CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36FA, CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36F5, CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36EB, - CMSG_UPGRADE_GARRISON = 0x32BB, - CMSG_UPGRADE_ITEM = 0x3226, - CMSG_USED_FOLLOW = 0x3185, - CMSG_USE_CRITTER_ITEM = 0x323F, + CMSG_UPGRADE_GARRISON = 0x32BE, + CMSG_USED_FOLLOW = 0x3186, + CMSG_USE_CRITTER_ITEM = 0x3242, CMSG_USE_EQUIPMENT_SET = 0x3995, - CMSG_USE_ITEM = 0x3296, - CMSG_USE_TOY = 0x3298, - CMSG_VIOLENCE_LEVEL = 0x3183, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3717, - CMSG_VOICE_CHAT_LOGIN = 0x3716, - CMSG_VOID_STORAGE_TRANSFER = 0x31A1, + CMSG_USE_ITEM = 0x3299, + CMSG_USE_TOY = 0x329B, + CMSG_VIOLENCE_LEVEL = 0x3184, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3715, + CMSG_VOICE_CHAT_LOGIN = 0x3714, + CMSG_VOID_STORAGE_TRANSFER = 0x31A2, CMSG_WARDEN_DATA = 0x35ED, CMSG_WHO = 0x3683, CMSG_WHO_IS = 0x3682, @@ -778,10 +784,10 @@ enum OpcodeServer : uint16 { SMSG_ABORT_NEW_WORLD = 0x25AE, SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2655, - SMSG_ACCOUNT_DATA_TIMES = 0x2752, + SMSG_ACCOUNT_DATA_TIMES = 0x2753, SMSG_ACCOUNT_MOUNT_UPDATE = 0x25C3, SMSG_ACCOUNT_TOYS_UPDATE = 0x25C4, - SMSG_ACHIEVEMENT_DELETED = 0x2727, + SMSG_ACHIEVEMENT_DELETED = 0x2728, SMSG_ACHIEVEMENT_EARNED = 0x2663, SMSG_ACTIVATE_TAXI_REPLY = 0x26AC, SMSG_ACTIVE_GLYPHS = 0x2C53, @@ -790,7 +796,7 @@ enum OpcodeServer : uint16 SMSG_ADD_LOSS_OF_CONTROL = 0x269C, SMSG_ADD_RUNE_POWER = 0x26EB, SMSG_ADJUST_SPLINE_DURATION = 0x25E8, - SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE = 0x2845, + SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE = 0x2847, SMSG_AE_LOOT_TARGETS = 0x262E, SMSG_AE_LOOT_TARGET_ACK = 0x262F, SMSG_AI_REACTION = 0x26E8, @@ -798,44 +804,47 @@ enum OpcodeServer : uint16 SMSG_ALL_ACHIEVEMENT_DATA = 0x256F, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8, SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2587, - SMSG_AREA_POI_UPDATE = 0x2852, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x278A, + SMSG_AREA_POI_UPDATE = 0x2854, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x278B, SMSG_AREA_TRIGGER_DENIED = 0x26A3, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x275E, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x275F, SMSG_AREA_TRIGGER_PLAY_VISUAL_EVENT = 0x2640, SMSG_AREA_TRIGGER_RE_PATH = 0x263E, SMSG_AREA_TRIGGER_RE_SHAPE = 0x2643, SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x2651, - SMSG_ARENA_MATCH_END = 0x28A9, - SMSG_ARENA_MATCH_START = 0x28A8, + SMSG_ARENA_MATCH_END = 0x28AC, + SMSG_ARENA_MATCH_START = 0x28AB, SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2668, - SMSG_ARTIFACT_FORGE_OPENED = 0x27EE, - SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27F1, - SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27F2, - SMSG_ARTIFACT_XP_GAIN = 0x2835, - SMSG_ATTACKER_STATE_UPDATE = 0x27DB, + SMSG_ARTIFACT_FORGE_OPENED = 0x27EF, + SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27F2, + SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27F3, + SMSG_ARTIFACT_XP_GAIN = 0x2837, + SMSG_ATTACKER_STATE_UPDATE = 0x27DC, SMSG_ATTACK_START = 0x2670, SMSG_ATTACK_STOP = 0x2671, - SMSG_ATTACK_SWING_ERROR = 0x273C, - SMSG_ATTACK_SWING_LANDED_LOG = 0x273D, - SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2731, - SMSG_AUCTION_COMMAND_RESULT = 0x272E, - SMSG_AUCTION_HELLO_RESPONSE = 0x272C, - SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x2735, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2733, - SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x2734, - SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x2736, - SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2730, - SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2732, - SMSG_AUCTION_REPLICATE_RESPONSE = 0x272D, - SMSG_AUCTION_WON_NOTIFICATION = 0x272F, + SMSG_ATTACK_SWING_ERROR = 0x273D, + SMSG_ATTACK_SWING_LANDED_LOG = 0x273E, + SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2732, + SMSG_AUCTION_COMMAND_RESULT = 0x272F, + SMSG_AUCTION_HELLO_RESPONSE = 0x272D, + SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x2736, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2734, + SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x2735, + SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x2737, + SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2731, + SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2733, + SMSG_AUCTION_REPLICATE_RESPONSE = 0x272E, + SMSG_AUCTION_WON_NOTIFICATION = 0x2730, SMSG_AURA_POINTS_DEPLETED = 0x2C23, SMSG_AURA_UPDATE = 0x2C22, SMSG_AUTH_CHALLENGE = 0x3048, SMSG_AUTH_RESPONSE = 0x256C, SMSG_AVAILABLE_HOTFIXES = 0x25A2, SMSG_AZERITE_EMPOWERED_ITEM_EQUIPPED_STATUS_CHANGED = 0x2876, - SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN = 0x283F, + SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN = 0x2841, + SMSG_AZERITE_ESSENCE_FORGE_CLOSE = 0x2879, + SMSG_AZERITE_ESSENCE_FORGE_OPENED = 0x2878, + SMSG_AZERITE_ESSENCE_SELECTION_RESULT = 0x2877, SMSG_AZERITE_XP_GAIN = 0x2875, SMSG_BAN_REASON = 0x26B8, SMSG_BARBER_SHOP_RESULT = 0x26F1, @@ -848,44 +857,45 @@ enum OpcodeServer : uint16 SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2592, SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x25A6, SMSG_BATTLEGROUND_INFO_THROTTLED = 0x259C, - SMSG_BATTLEGROUND_INIT = 0x27A9, + SMSG_BATTLEGROUND_INIT = 0x27AA, SMSG_BATTLEGROUND_PLAYER_JOINED = 0x2599, SMSG_BATTLEGROUND_PLAYER_LEFT = 0x259A, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2596, - SMSG_BATTLEGROUND_POINTS = 0x27A8, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x27DA, - SMSG_BATTLENET_CHALLENGE_START = 0x27D9, - SMSG_BATTLENET_NOTIFICATION = 0x284D, - SMSG_BATTLENET_REALM_LIST_TICKET = 0x284F, - SMSG_BATTLENET_RESPONSE = 0x284C, - SMSG_BATTLENET_SET_SESSION_STATE = 0x284E, + SMSG_BATTLEGROUND_POINTS = 0x27A9, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x27DB, + SMSG_BATTLENET_CHALLENGE_START = 0x27DA, + SMSG_BATTLENET_NOTIFICATION = 0x284F, + SMSG_BATTLENET_REALM_LIST_TICKET = 0x2851, + SMSG_BATTLENET_RESPONSE = 0x284E, + SMSG_BATTLENET_SET_SESSION_STATE = 0x2850, SMSG_BATTLENET_UPDATE_SESSION_KEY = 0x286F, - SMSG_BATTLE_PAY_ACK_FAILED = 0x27D2, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27C7, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27D1, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27C5, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27C4, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27C3, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27C1, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27BF, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27C0, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27C6, + SMSG_BATTLE_PAY_ACK_FAILED = 0x27D3, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27C8, + SMSG_BATTLE_PAY_BUNDLE_PRICE_UPDATE = 0x2862, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27D2, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27C6, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27C5, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27C4, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27C2, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27C0, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27C1, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27C7, SMSG_BATTLE_PAY_OPEN_CHECKOUT_RESULT = 0x2868, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27D0, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27CE, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27CD, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27D1, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27CF, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27CE, SMSG_BATTLE_PAY_SUBSCRIPTION_CHANGED = 0x2871, - SMSG_BATTLE_PAY_TOY_DELIVERED = 0x27C8, + SMSG_BATTLE_PAY_TOY_DELIVERED = 0x27C9, SMSG_BATTLE_PAY_VAS_BNET_TRANSFER_VALIDATION_RESULT = 0x2866, - SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27C2, - SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2838, + SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27C3, + SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x283A, SMSG_BATTLE_PAY_VAS_CHARACTER_QUEUE_STATUS = 0x2864, SMSG_BATTLE_PAY_VAS_GUILD_FOLLOW_INFO = 0x29E7, SMSG_BATTLE_PAY_VAS_GUILD_MASTER_LIST = 0x29E6, - SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x283B, - SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x283C, - SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x283A, - SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x2839, + SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x283D, + SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x283E, + SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x283C, + SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x283B, SMSG_BATTLE_PAY_VAS_TRANSFER_QUEUE_STATUS = 0x2863, SMSG_BATTLE_PETS_HEALED = 0x260A, SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x26A6, @@ -900,7 +910,7 @@ enum OpcodeServer : uint16 SMSG_BATTLE_PET_REVOKED = 0x2608, SMSG_BATTLE_PET_TRAP_LEVEL = 0x2601, SMSG_BATTLE_PET_UPDATES = 0x2600, - SMSG_BINDER_CONFIRM = 0x2742, + SMSG_BINDER_CONFIRM = 0x2743, SMSG_BIND_POINT_UPDATE = 0x257C, SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2647, SMSG_BLACK_MARKET_OPEN_RESULT = 0x2645, @@ -908,14 +918,14 @@ enum OpcodeServer : uint16 SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2646, SMSG_BLACK_MARKET_WON = 0x2649, SMSG_BONUS_ROLL_EMPTY = 0x2665, - SMSG_BONUS_ROLL_FAILED = 0x2879, - SMSG_BOSS_KILL_CREDIT = 0x27CC, + SMSG_BONUS_ROLL_FAILED = 0x287C, + SMSG_BOSS_KILL_CREDIT = 0x27CD, SMSG_BREAK_TARGET = 0x266F, SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC, SMSG_BUY_FAILED = 0x26FA, SMSG_BUY_SUCCEEDED = 0x26F9, - SMSG_CACHE_INFO = 0x274C, - SMSG_CACHE_VERSION = 0x274B, + SMSG_CACHE_INFO = 0x274D, + SMSG_CACHE_VERSION = 0x274C, SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26CC, SMSG_CALENDAR_COMMAND_RESULT = 0x26CD, SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26BC, @@ -936,9 +946,9 @@ enum OpcodeServer : uint16 SMSG_CALENDAR_SEND_CALENDAR = 0x26BA, SMSG_CALENDAR_SEND_EVENT = 0x26BB, SMSG_CALENDAR_SEND_NUM_PENDING = 0x26CB, - SMSG_CAMERA_EFFECT = 0x276F, - SMSG_CANCEL_AUTO_REPEAT = 0x271B, - SMSG_CANCEL_COMBAT = 0x273A, + SMSG_CAMERA_EFFECT = 0x2770, + SMSG_CANCEL_AUTO_REPEAT = 0x271C, + SMSG_CANCEL_COMBAT = 0x273B, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46, SMSG_CANCEL_SCENE = 0x2657, SMSG_CANCEL_SPELL_VISUAL = 0x2C44, @@ -956,25 +966,25 @@ enum OpcodeServer : uint16 SMSG_CHALLENGE_MODE_REWARDS = 0x2622, SMSG_CHALLENGE_MODE_START = 0x261E, SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x261F, - SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x273E, + SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x273F, SMSG_CHANNEL_LIST = 0x2BC3, SMSG_CHANNEL_NOTIFY = 0x2BC0, SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1, SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2, - SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x280C, + SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x280D, SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING = 0x2870, SMSG_CHARACTER_ITEM_FIXUP = 0x285F, - SMSG_CHARACTER_LOGIN_FAILED = 0x274D, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27D8, - SMSG_CHARACTER_RENAME_RESULT = 0x27B1, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x280B, - SMSG_CHARACTER_UPGRADE_QUEUED = 0x280A, + SMSG_CHARACTER_LOGIN_FAILED = 0x274E, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27D9, + SMSG_CHARACTER_RENAME_RESULT = 0x27B2, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x280C, + SMSG_CHARACTER_UPGRADE_QUEUED = 0x280B, SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F5, - SMSG_CHARACTER_UPGRADE_STARTED = 0x2809, - SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x280D, - SMSG_CHAR_CUSTOMIZE = 0x2722, - SMSG_CHAR_CUSTOMIZE_FAILED = 0x2721, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27F6, + SMSG_CHARACTER_UPGRADE_STARTED = 0x280A, + SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x280E, + SMSG_CHAR_CUSTOMIZE = 0x2723, + SMSG_CHAR_CUSTOMIZE_FAILED = 0x2722, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27F7, SMSG_CHAT = 0x2BAD, SMSG_CHAT_AUTO_RESPONDED = 0x2BB8, SMSG_CHAT_DOWN = 0x2BBD, @@ -995,40 +1005,43 @@ enum OpcodeServer : uint16 SMSG_CLEAR_LOSS_OF_CONTROL = 0x269E, SMSG_CLEAR_SPELL_CHARGES = 0x2C28, SMSG_CLEAR_TARGET = 0x26E4, + SMSG_CLUB_FINDER_APPLICANTS_LIST = 0x28B3, + SMSG_CLUB_FINDER_APPLICATIONS = 0x28B4, + SMSG_CLUB_FINDER_APPLICATIONS_CHANGED = 0x28B5, + SMSG_CLUB_FINDER_CLUBS_DATA = 0x28B6, + SMSG_CLUB_FINDER_CLUBS_LIST = 0x28B2, SMSG_COIN_REMOVED = 0x262D, SMSG_COMBAT_EVENT_FAILED = 0x2672, - SMSG_COMMENTATOR_MAP_INFO = 0x274F, - SMSG_COMMENTATOR_PLAYER_INFO = 0x2750, - SMSG_COMMENTATOR_STATE_CHANGED = 0x274E, + SMSG_COMMENTATOR_MAP_INFO = 0x2750, + SMSG_COMMENTATOR_PLAYER_INFO = 0x2751, + SMSG_COMMENTATOR_STATE_CHANGED = 0x274F, SMSG_COMPLAINT_RESULT = 0x26DB, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27EA, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27EB, SMSG_CONNECT_TO = 0x304D, - SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27D3, + SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27D4, SMSG_CONSOLE_WRITE = 0x2654, - SMSG_CONSUMPTION_CONVERSION_INFO_RESPONSE = 0x2853, - SMSG_CONSUMPTION_CONVERSION_RESULT = 0x2854, - SMSG_CONTACT_LIST = 0x27D6, + SMSG_CONTACT_LIST = 0x27D7, SMSG_CONTRIBUTION_COLLECTOR_STATE = 0x2867, SMSG_CONTROL_UPDATE = 0x2667, - SMSG_COOLDOWN_CHEAT = 0x2783, + SMSG_COOLDOWN_CHEAT = 0x2784, SMSG_COOLDOWN_EVENT = 0x26EC, SMSG_CORPSE_LOCATION = 0x266E, - SMSG_CORPSE_RECLAIM_DELAY = 0x2796, - SMSG_CORPSE_TRANSPORT_QUERY = 0x275A, - SMSG_CREATE_CHAR = 0x2747, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x27E9, - SMSG_CRITERIA_DELETED = 0x2726, - SMSG_CRITERIA_UPDATE = 0x2720, + SMSG_CORPSE_RECLAIM_DELAY = 0x2797, + SMSG_CORPSE_TRANSPORT_QUERY = 0x275B, + SMSG_CREATE_CHAR = 0x2748, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x27EA, + SMSG_CRITERIA_DELETED = 0x2727, + SMSG_CRITERIA_UPDATE = 0x2721, SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26F5, SMSG_CUSTOM_LOAD_SCREEN = 0x25E3, SMSG_DAILY_QUESTS_RESET = 0x2A80, - SMSG_DAMAGE_CALC_LOG = 0x2814, + SMSG_DAMAGE_CALC_LOG = 0x2815, SMSG_DB_REPLY = 0x25A1, - SMSG_DEATH_RELEASE_LOC = 0x270F, + SMSG_DEATH_RELEASE_LOC = 0x2710, SMSG_DEFENSE_MESSAGE = 0x2BB6, - SMSG_DELETE_CHAR = 0x2748, - SMSG_DESTROY_ARENA_UNIT = 0x278C, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x273B, + SMSG_DELETE_CHAR = 0x2749, + SMSG_DESTROY_ARENA_UNIT = 0x278D, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x273C, SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258B, SMSG_DISENCHANT_CREDIT = 0x25BC, SMSG_DISMOUNT = 0x26E3, @@ -1048,43 +1061,43 @@ enum OpcodeServer : uint16 SMSG_DUEL_OUT_OF_BOUNDS = 0x2675, SMSG_DUEL_REQUESTED = 0x2673, SMSG_DUEL_WINNER = 0x2679, - SMSG_DURABILITY_DAMAGE_DEATH = 0x2792, - SMSG_EMOTE = 0x2815, + SMSG_DURABILITY_DAMAGE_DEATH = 0x2793, + SMSG_EMOTE = 0x2816, SMSG_ENABLE_BARBER_SHOP = 0x26F0, SMSG_ENABLE_ENCRYPTION = 0x3049, - SMSG_ENCHANTMENT_LOG = 0x275B, - SMSG_ENCOUNTER_END = 0x27CB, - SMSG_ENCOUNTER_START = 0x27CA, + SMSG_ENCHANTMENT_LOG = 0x275C, + SMSG_ENCOUNTER_END = 0x27CC, + SMSG_ENCOUNTER_START = 0x27CB, SMSG_ENUM_CHARACTERS_RESULT = 0x2583, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21, SMSG_EQUIPMENT_SET_ID = 0x26E5, SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1, - SMSG_EXPLORATION_EXPERIENCE = 0x27AE, - SMSG_FACTION_BONUS_INFO = 0x276E, + SMSG_EXPLORATION_EXPERIENCE = 0x27AF, + SMSG_FACTION_BONUS_INFO = 0x276F, SMSG_FAILED_PLAYER_CONDITION = 0x25E2, SMSG_FEATURE_SYSTEM_STATUS = 0x25D1, SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25D2, - SMSG_FEIGN_DEATH_RESISTED = 0x278F, - SMSG_FISH_ESCAPED = 0x2702, - SMSG_FISH_NOT_HOOKED = 0x2701, + SMSG_FEIGN_DEATH_RESISTED = 0x2790, + SMSG_FISH_ESCAPED = 0x2703, + SMSG_FISH_NOT_HOOKED = 0x2702, SMSG_FLIGHT_SPLINE_SYNC = 0x2DF7, - SMSG_FORCED_DEATH_UPDATE = 0x2710, - SMSG_FORCE_ANIM = 0x279D, + SMSG_FORCED_DEATH_UPDATE = 0x2711, + SMSG_FORCE_ANIM = 0x279E, SMSG_FORCE_OBJECT_RELINK = 0x266A, - SMSG_FRIEND_STATUS = 0x27D7, + SMSG_FRIEND_STATUS = 0x27D8, SMSG_GAME_EVENT_DEBUG_INITIALIZE = 0x2680, SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25D6, SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25D7, SMSG_GAME_OBJECT_DESPAWN = 0x25D8, - SMSG_GAME_OBJECT_MULTI_TRANSITION = 0x2877, + SMSG_GAME_OBJECT_MULTI_TRANSITION = 0x287A, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A, - SMSG_GAME_OBJECT_RESET_STATE = 0x2765, - SMSG_GAME_OBJECT_SET_STATE = 0x284B, - SMSG_GAME_OBJECT_UI_ACTION = 0x2762, + SMSG_GAME_OBJECT_RESET_STATE = 0x2766, + SMSG_GAME_OBJECT_SET_STATE = 0x284D, + SMSG_GAME_OBJECT_UI_ACTION = 0x2763, SMSG_GAME_SPEED_SET = 0x26B0, - SMSG_GAME_TIME_SET = 0x2754, - SMSG_GAME_TIME_UPDATE = 0x2753, + SMSG_GAME_TIME_SET = 0x2755, + SMSG_GAME_TIME_UPDATE = 0x2754, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2902, SMSG_GARRISON_ADD_MISSION_RESULT = 0x2906, SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2918, @@ -1103,7 +1116,7 @@ enum OpcodeServer : uint16 SMSG_GARRISON_FOLLOWER_CHANGED_STATUS = 0x2915, SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x2912, SMSG_GARRISON_IS_UPGRADEABLE_RESULT = 0x2929, - SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27EC, + SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27ED, SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x28F7, SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x28F5, SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2905, @@ -1134,27 +1147,27 @@ enum OpcodeServer : uint16 SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x28F8, SMSG_GARRISON_UPGRADE_RESULT = 0x28FD, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2584, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AF, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27B0, SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE = 0x2928, SMSG_GET_GARRISON_INFO_RESULT = 0x28F0, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27EB, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27E7, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x2810, - SMSG_GM_PLAYER_INFO = 0x2782, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27EC, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27E8, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x2811, + SMSG_GM_PLAYER_INFO = 0x2783, SMSG_GM_REQUEST_PLAYER_INFO = 0x25EE, SMSG_GM_TICKET_CASE_STATUS = 0x26D2, SMSG_GM_TICKET_SYSTEM_STATUS = 0x26D1, - SMSG_GOD_MODE = 0x2741, + SMSG_GOD_MODE = 0x2742, SMSG_GOSSIP_COMPLETE = 0x2A96, SMSG_GOSSIP_MESSAGE = 0x2A97, - SMSG_GOSSIP_POI = 0x27E4, + SMSG_GOSSIP_POI = 0x27E5, SMSG_GOSSIP_TEXT_UPDATE = 0x2A98, SMSG_GROUP_ACTION_THROTTLED = 0x259D, - SMSG_GROUP_DECLINE = 0x27DF, - SMSG_GROUP_DESTROYED = 0x27E1, + SMSG_GROUP_DECLINE = 0x27E0, + SMSG_GROUP_DESTROYED = 0x27E2, SMSG_GROUP_INVITE_CONFIRMATION = 0x2860, SMSG_GROUP_NEW_LEADER = 0x264C, - SMSG_GROUP_UNINVITE = 0x27E0, + SMSG_GROUP_UNINVITE = 0x27E1, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7, @@ -1168,6 +1181,7 @@ 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, @@ -1207,56 +1221,56 @@ enum OpcodeServer : uint16 SMSG_GUILD_ROSTER = 0x29BB, SMSG_GUILD_ROSTER_UPDATE = 0x29BC, SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9, - SMSG_HEALTH_UPDATE = 0x2705, - SMSG_HIGHEST_THREAT_UPDATE = 0x2716, + SMSG_HEALTH_UPDATE = 0x2706, + SMSG_HIGHEST_THREAT_UPDATE = 0x2717, SMSG_HOTFIX_MESSAGE = 0x25A3, SMSG_HOTFIX_RESPONSE = 0x25A4, - SMSG_INCOMING_SUMMON_COMPLETED = 0x28AB, - SMSG_INCOMING_SUMMON_PENDING = 0x28AA, - SMSG_INITIALIZE_FACTIONS = 0x276D, + SMSG_INCOMING_SUMMON_COMPLETED = 0x28AE, + SMSG_INCOMING_SUMMON_PENDING = 0x28AD, + SMSG_INITIALIZE_FACTIONS = 0x276E, SMSG_INITIAL_SETUP = 0x2580, - SMSG_INIT_WORLD_STATES = 0x2793, + SMSG_INIT_WORLD_STATES = 0x2794, SMSG_INSPECT_RESULT = 0x2650, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27FC, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27FB, - SMSG_INSTANCE_ENCOUNTER_END = 0x2804, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27FA, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x2806, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x2805, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27FF, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27FE, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x2803, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x2807, - SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x2802, - SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x2801, - SMSG_INSTANCE_ENCOUNTER_START = 0x2800, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27FD, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x273F, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27FD, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27FC, + SMSG_INSTANCE_ENCOUNTER_END = 0x2805, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27FB, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x2807, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x2806, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x2800, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27FF, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x2804, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x2808, + SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x2803, + SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x2802, + SMSG_INSTANCE_ENCOUNTER_START = 0x2801, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27FE, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x2740, SMSG_INSTANCE_INFO = 0x2653, SMSG_INSTANCE_RESET = 0x26B5, SMSG_INSTANCE_RESET_FAILED = 0x26B6, - SMSG_INSTANCE_SAVE_CREATED = 0x27C9, - SMSG_INVALIDATE_PAGE_TEXT = 0x270B, + SMSG_INSTANCE_SAVE_CREATED = 0x27CA, + SMSG_INVALIDATE_PAGE_TEXT = 0x270C, SMSG_INVALIDATE_PLAYER = 0x26DA, - SMSG_INVALID_PROMOTION_CODE = 0x279E, - SMSG_INVENTORY_CHANGE_FAILURE = 0x276B, - SMSG_ISLAND_AZERITE_XP_GAIN = 0x27AB, - SMSG_ISLAND_COMPLETED = 0x27AC, - SMSG_ISLAND_OPEN_QUEUE_NPC = 0x2840, + SMSG_INVALID_PROMOTION_CODE = 0x279F, + SMSG_INVENTORY_CHANGE_FAILURE = 0x276C, + SMSG_ISLAND_AZERITE_XP_GAIN = 0x27AC, + SMSG_ISLAND_COMPLETED = 0x27AD, + SMSG_ISLAND_OPEN_QUEUE_NPC = 0x2842, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A83, - SMSG_ITEM_CHANGED = 0x2729, - SMSG_ITEM_COOLDOWN = 0x2813, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x27A0, + SMSG_ITEM_CHANGED = 0x272A, + SMSG_ITEM_COOLDOWN = 0x2814, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x27A1, SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25B2, SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25B0, SMSG_ITEM_PUSH_RESULT = 0x2639, - SMSG_ITEM_TIME_UPDATE = 0x279F, - SMSG_KICK_REASON = 0x2837, + SMSG_ITEM_TIME_UPDATE = 0x27A0, + SMSG_KICK_REASON = 0x2839, SMSG_LEARNED_SPELLS = 0x2C4D, SMSG_LEARN_PVP_TALENTS_FAILED = 0x25EA, SMSG_LEARN_TALENTS_FAILED = 0x25E9, SMSG_LEVEL_UPDATE = 0x2588, - SMSG_LEVEL_UP_INFO = 0x2728, + SMSG_LEVEL_UP_INFO = 0x2729, SMSG_LFG_BOOT_PLAYER = 0x2A35, SMSG_LFG_DISABLED = 0x2A33, SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x2A25, @@ -1287,21 +1301,21 @@ enum OpcodeServer : uint16 SMSG_LF_GUILD_RECRUITS = 0x29CF, SMSG_LIGHTNING_STORM_END = 0x26D7, SMSG_LIGHTNING_STORM_START = 0x26D6, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27BD, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27BB, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27B0, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27BE, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27BC, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27B1, SMSG_LOAD_CUF_PROFILES = 0x25CE, - SMSG_LOAD_EQUIPMENT_SET = 0x2756, - SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x2811, - SMSG_LOGIN_SET_TIME_SPEED = 0x2755, + SMSG_LOAD_EQUIPMENT_SET = 0x2757, + SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x2812, + SMSG_LOGIN_SET_TIME_SPEED = 0x2756, SMSG_LOGIN_VERIFY_WORLD = 0x25AD, SMSG_LOGOUT_CANCEL_ACK = 0x26B4, SMSG_LOGOUT_COMPLETE = 0x26B3, SMSG_LOGOUT_RESPONSE = 0x26B2, - SMSG_LOG_XP_GAIN = 0x2724, + SMSG_LOG_XP_GAIN = 0x2725, SMSG_LOOT_ALL_PASSED = 0x2637, - SMSG_LOOT_LEGACY_RULES_IN_EFFECT = 0x2878, - SMSG_LOOT_LIST = 0x278B, + SMSG_LOOT_LEGACY_RULES_IN_EFFECT = 0x287B, + SMSG_LOOT_LIST = 0x278C, SMSG_LOOT_MONEY_NOTIFY = 0x2632, SMSG_LOOT_RELEASE = 0x2631, SMSG_LOOT_RELEASE_ALL = 0x2630, @@ -1312,23 +1326,24 @@ enum OpcodeServer : uint16 SMSG_LOOT_ROLL_WON = 0x2638, SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x269B, SMSG_MAIL_COMMAND_RESULT = 0x265B, - SMSG_MAIL_LIST_RESULT = 0x27A1, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x27A2, - SMSG_MAP_OBJECTIVES_INIT = 0x27AA, + SMSG_MAIL_LIST_RESULT = 0x27A2, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x27A3, + SMSG_MAP_OBJECTIVES_INIT = 0x27AB, SMSG_MAP_OBJECTIVE_ADD = 0x2597, SMSG_MAP_OBJECTIVE_REMOVE = 0x2598, SMSG_MAP_OBJ_EVENTS = 0x25D9, SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2635, SMSG_MESSAGE_BOX = 0x2575, - SMSG_MINIMAP_PING = 0x2700, + SMSG_MINIMAP_PING = 0x2701, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13, SMSG_MISSILE_CANCEL = 0x25DA, - SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27B4, - SMSG_MODIFY_COOLDOWN = 0x27B2, - SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27B3, - SMSG_MODIFY_PARTY_RANGE = 0x278E, + SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27B5, + SMSG_MODIFY_COOLDOWN = 0x27B3, + SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27B4, + SMSG_MODIFY_PARTY_RANGE = 0x278F, SMSG_MOTD = 0x2BAF, + SMSG_MOUNT_EQUIPMENT_APPLY_RESULT = 0x28B7, SMSG_MOUNT_RESULT = 0x257A, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2DE1, SMSG_MOVE_DISABLE_COLLISION = 0x2DDD, @@ -1353,7 +1368,7 @@ enum OpcodeServer : uint16 SMSG_MOVE_SET_HOVERING = 0x2DCF, SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x2DD7, SMSG_MOVE_SET_LAND_WALK = 0x2DCC, - SMSG_MOVE_SET_MOVEMENT_FORCE_SPEED = 0x2DB4, + SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE = 0x2DB4, SMSG_MOVE_SET_NORMAL_FALL = 0x2DCE, SMSG_MOVE_SET_PITCH_RATE = 0x2DC6, SMSG_MOVE_SET_RUN_BACK_SPEED = 0x2DBF, @@ -1404,7 +1419,7 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x2DAA, SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x2DA9, SMSG_MOVE_UPDATE_KNOCK_BACK = 0x2DB0, - SMSG_MOVE_UPDATE_MOVEMENT_FORCE_SPEED = 0x2DB1, + SMSG_MOVE_UPDATE_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, @@ -1422,30 +1437,30 @@ enum OpcodeServer : uint16 SMSG_NOTIFY_MONEY = 0x25AF, SMSG_NOTIFY_RECEIVED_MAIL = 0x265C, SMSG_OFFER_PETITION_ERROR = 0x26E9, - SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2725, + SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2726, SMSG_ON_MONSTER_MOVE = 0x2DA2, - SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x2841, - SMSG_OPEN_CONTAINER = 0x276C, + SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x2843, + SMSG_OPEN_CONTAINER = 0x276D, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31, - SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27E6, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27E8, - SMSG_OPEN_TRANSMOGRIFIER = 0x283E, + SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27E7, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27E9, + SMSG_OPEN_TRANSMOGRIFIER = 0x2840, SMSG_OVERRIDE_LIGHT = 0x26EF, - SMSG_PAGE_TEXT = 0x2761, - SMSG_PARTY_COMMAND_RESULT = 0x27E3, + SMSG_PAGE_TEXT = 0x2762, + SMSG_PARTY_COMMAND_RESULT = 0x27E4, SMSG_PARTY_INVITE = 0x25CF, - SMSG_PARTY_KILL_LOG = 0x27A6, - SMSG_PARTY_MEMBER_STATE = 0x27A4, - SMSG_PARTY_MEMBER_STATE_UPDATE = 0x27A3, + SMSG_PARTY_KILL_LOG = 0x27A7, + SMSG_PARTY_MEMBER_STATE = 0x27A5, + SMSG_PARTY_MEMBER_STATE_UPDATE = 0x27A4, SMSG_PARTY_UPDATE = 0x260C, - SMSG_PAUSE_MIRROR_TIMER = 0x2758, - SMSG_PENDING_RAID_LOCK = 0x2739, + SMSG_PAUSE_MIRROR_TIMER = 0x2759, + SMSG_PENDING_RAID_LOCK = 0x273A, SMSG_PETITION_ALREADY_SIGNED = 0x25B8, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA, SMSG_PETITION_SHOW_LIST = 0x26F2, SMSG_PETITION_SHOW_SIGNATURES = 0x26F3, - SMSG_PETITION_SIGN_RESULTS = 0x2798, - SMSG_PET_ACTION_FEEDBACK = 0x2795, + SMSG_PETITION_SIGN_RESULTS = 0x2799, + SMSG_PET_ACTION_FEEDBACK = 0x2796, SMSG_PET_ACTION_SOUND = 0x26CF, SMSG_PET_ADDED = 0x25A9, SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2619, @@ -1467,7 +1482,7 @@ enum OpcodeServer : uint16 SMSG_PET_CLEAR_SPELLS = 0x2C24, SMSG_PET_DISMISS_SOUND = 0x26D0, SMSG_PET_GOD_MODE = 0x26AA, - SMSG_PET_GUIDS = 0x274A, + SMSG_PET_GUIDS = 0x274B, SMSG_PET_LEARNED_SPELLS = 0x2C4F, SMSG_PET_MODE = 0x258A, SMSG_PET_NAME_INVALID = 0x26F7, @@ -1478,47 +1493,48 @@ enum OpcodeServer : uint16 SMSG_PET_TAME_FAILURE = 0x26E6, SMSG_PET_UNLEARNED_SPELLS = 0x2C50, SMSG_PHASE_SHIFT_CHANGE = 0x2577, - SMSG_PLAYED_TIME = 0x2712, + SMSG_PLAYED_TIME = 0x2713, SMSG_PLAYER_BOUND = 0x257D, SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F9, - SMSG_PLAYER_SKINNED = 0x2790, - SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x27A5, - SMSG_PLAY_MUSIC = 0x27B7, - SMSG_PLAY_OBJECT_SOUND = 0x27B8, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x277A, + SMSG_PLAYER_SKINNED = 0x2791, + SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x27A6, + SMSG_PLAY_MUSIC = 0x27B8, + SMSG_PLAY_OBJECT_SOUND = 0x27B9, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x277B, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47, SMSG_PLAY_SCENE = 0x2656, - SMSG_PLAY_SOUND = 0x27B6, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x27B9, + SMSG_PLAY_SOUND = 0x27B7, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x27BA, SMSG_PLAY_SPELL_VISUAL = 0x2C45, SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49, - SMSG_PLAY_TIME_WARNING = 0x2743, + SMSG_PLAY_TIME_WARNING = 0x2744, SMSG_PONG = 0x304E, - SMSG_POWER_UPDATE = 0x2706, - SMSG_PRE_RESSURECT = 0x27B5, + SMSG_POWER_UPDATE = 0x2707, + SMSG_PRE_RESSURECT = 0x27B6, SMSG_PRINT_NOTIFICATION = 0x25E1, - SMSG_PROC_RESIST = 0x27A7, - SMSG_PROPOSE_LEVEL_GRANT = 0x271A, + SMSG_PROC_RESIST = 0x27A8, + SMSG_PROPOSE_LEVEL_GRANT = 0x271B, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51, - SMSG_PVP_CREDIT = 0x271F, + SMSG_PVP_CREDIT = 0x2720, SMSG_PVP_LOG_DATA = 0x25B3, + SMSG_PVP_MATCH_START = 0x28B1, SMSG_PVP_OPTIONS_ENABLED = 0x25B6, SMSG_PVP_SEASON = 0x25D3, - SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x270D, - SMSG_QUERY_COMMUNITY_NAME_RESPONSE = 0x2709, - SMSG_QUERY_CREATURE_RESPONSE = 0x2703, - SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2704, + 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_QUERY_GUILD_INFO_RESPONSE = 0x29E5, - SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x2812, - SMSG_QUERY_NPC_TEXT_RESPONSE = 0x2707, - SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x270A, - SMSG_QUERY_PETITION_RESPONSE = 0x270E, - SMSG_QUERY_PET_NAME_RESPONSE = 0x270C, - SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x2708, + SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x2813, + 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_QUEST_INFO_RESPONSE = 0x2A95, - SMSG_QUERY_TIME_RESPONSE = 0x2723, - SMSG_QUERY_TREASURE_PICKER_RESPONSE = 0x2850, + SMSG_QUERY_TIME_RESPONSE = 0x2724, + SMSG_QUERY_TREASURE_PICKER_RESPONSE = 0x2852, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81, SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8E, SMSG_QUEST_FORCE_REMOVED = 0x2A9B, @@ -1544,9 +1560,9 @@ enum OpcodeServer : uint16 SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A87, SMSG_QUEST_UPDATE_FAILED = 0x2A89, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8A, - SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27D4, - SMSG_RAID_DIFFICULTY_SET = 0x27F7, - SMSG_RAID_GROUP_ONLY = 0x27F9, + SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27D5, + SMSG_RAID_DIFFICULTY_SET = 0x27F8, + SMSG_RAID_GROUP_ONLY = 0x27FA, SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4, SMSG_RAID_MARKERS_CHANGED = 0x25B9, SMSG_RANDOM_ROLL = 0x264F, @@ -1554,18 +1570,18 @@ enum OpcodeServer : uint16 SMSG_READY_CHECK_COMPLETED = 0x260F, SMSG_READY_CHECK_RESPONSE = 0x260E, SMSG_READY_CHECK_STARTED = 0x260D, - SMSG_READ_ITEM_RESULT_FAILED = 0x27F3, - SMSG_READ_ITEM_RESULT_OK = 0x27ED, - SMSG_REALM_LOOKUP_INFORMATION = 0x2818, + SMSG_READ_ITEM_RESULT_FAILED = 0x27F4, + SMSG_READ_ITEM_RESULT_OK = 0x27EE, + SMSG_REALM_LOOKUP_INFORMATION = 0x2819, SMSG_REALM_QUERY_RESPONSE = 0x26EE, - SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27D5, - SMSG_REFER_A_FRIEND_EXPIRED = 0x276A, + SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27D6, + SMSG_REFER_A_FRIEND_EXPIRED = 0x276B, SMSG_REFER_A_FRIEND_FAILURE = 0x26F4, SMSG_REFRESH_COMPONENT = 0x267C, SMSG_REFRESH_SPELL_HISTORY = 0x2C2C, SMSG_REMOVE_ITEM_PASSIVE = 0x25C0, SMSG_REMOVE_LOSS_OF_CONTROL = 0x269D, - SMSG_REPLACE_TROPHY_RESPONSE = 0x280F, + SMSG_REPLACE_TROPHY_RESPONSE = 0x2810, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26E2, SMSG_REQUEST_ADDON_LIST = 0x2662, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x259E, @@ -1574,7 +1590,7 @@ enum OpcodeServer : uint16 SMSG_RESEARCH_COMPLETE = 0x2586, SMSG_RESET_COMPRESSION_CONTEXT = 0x304F, SMSG_RESET_FAILED_NOTIFY = 0x26EA, - SMSG_RESET_RANGED_COMBAT_TIMER = 0x271C, + SMSG_RESET_RANGED_COMBAT_TIMER = 0x271D, SMSG_RESET_WEEKLY_CURRENCY = 0x2574, SMSG_RESPEC_WIPE_CONFIRM = 0x2629, SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2571, @@ -1583,17 +1599,17 @@ enum OpcodeServer : uint16 SMSG_RESUME_TOKEN = 0x25BE, SMSG_RESURRECT_CLEAR_DATA = 0x257F, SMSG_RESURRECT_REQUEST = 0x257E, - SMSG_RESYNC_RUNES = 0x2746, + SMSG_RESYNC_RUNES = 0x2747, SMSG_ROLE_CHANGED_INFORM = 0x258D, SMSG_ROLE_CHOSEN = 0x2A39, SMSG_ROLE_POLL_INFORM = 0x258E, SMSG_RUNE_REGEN_DEBUG = 0x25C8, - SMSG_SCENARIO_BOOT = 0x27F4, - SMSG_SCENARIO_COMPLETED = 0x2834, + SMSG_SCENARIO_BOOT = 0x27F5, + SMSG_SCENARIO_COMPLETED = 0x2836, SMSG_SCENARIO_POIS = 0x2652, SMSG_SCENARIO_PROGRESS_UPDATE = 0x264B, - SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x2844, - SMSG_SCENARIO_SPELL_UPDATE = 0x2843, + SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x2846, + SMSG_SCENARIO_SPELL_UPDATE = 0x2845, SMSG_SCENARIO_STATE = 0x264A, SMSG_SCENE_OBJECT_EVENT = 0x25F8, SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FD, @@ -1615,45 +1631,45 @@ enum OpcodeServer : uint16 SMSG_SERVER_TIME = 0x26B1, SMSG_SETUP_CURRENCY = 0x2572, SMSG_SETUP_RESEARCH_HISTORY = 0x2585, - SMSG_SET_AI_ANIM_KIT = 0x2779, - SMSG_SET_ALL_TASK_PROGRESS = 0x27DD, - SMSG_SET_ANIM_TIER = 0x277D, + SMSG_SET_AI_ANIM_KIT = 0x277A, + SMSG_SET_ALL_TASK_PROGRESS = 0x27DE, + SMSG_SET_ANIM_TIER = 0x277E, SMSG_SET_CURRENCY = 0x2573, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E, SMSG_SET_DUNGEON_DIFFICULTY = 0x26D3, - SMSG_SET_FACTION_AT_WAR = 0x2745, - SMSG_SET_FACTION_NOT_VISIBLE = 0x2774, - SMSG_SET_FACTION_STANDING = 0x2775, - SMSG_SET_FACTION_VISIBLE = 0x2773, + SMSG_SET_FACTION_AT_WAR = 0x2746, + SMSG_SET_FACTION_NOT_VISIBLE = 0x2775, + SMSG_SET_FACTION_STANDING = 0x2776, + SMSG_SET_FACTION_VISIBLE = 0x2774, SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36, - SMSG_SET_FORCED_REACTIONS = 0x2764, + SMSG_SET_FORCED_REACTIONS = 0x2765, SMSG_SET_ITEM_PURCHASE_DATA = 0x25B1, - SMSG_SET_LOOT_METHOD_FAILED = 0x281E, + SMSG_SET_LOOT_METHOD_FAILED = 0x281F, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25B7, - SMSG_SET_MELEE_ANIM_KIT = 0x277C, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x277B, + SMSG_SET_MELEE_ANIM_KIT = 0x277D, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x277C, SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37, SMSG_SET_PET_SPECIALIZATION = 0x2644, - SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2711, + SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2712, SMSG_SET_PLAY_HOVER_ANIM = 0x25CC, - SMSG_SET_PROFICIENCY = 0x277E, + SMSG_SET_PROFICIENCY = 0x277F, SMSG_SET_SPELL_CHARGES = 0x2C29, - SMSG_SET_TASK_COMPLETE = 0x27DE, + SMSG_SET_TASK_COMPLETE = 0x27DF, SMSG_SET_TIME_ZONE_INFORMATION = 0x26A5, - SMSG_SET_VEHICLE_REC_ID = 0x2738, - SMSG_SHOW_ADVENTURE_MAP = 0x283D, + SMSG_SET_VEHICLE_REC_ID = 0x2739, + SMSG_SHOW_ADVENTURE_MAP = 0x283F, SMSG_SHOW_BANK = 0x26AE, - SMSG_SHOW_MAILBOX = 0x27F5, + SMSG_SHOW_MAILBOX = 0x27F6, SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25F1, - SMSG_SHOW_TAXI_NODES = 0x26FF, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27BE, - SMSG_SOCKET_GEMS = 0x2770, - SMSG_SOCKET_GEMS_FAILURE = 0x2771, - SMSG_SORT_BAGS_RESULT = 0x282C, + SMSG_SHOW_TAXI_NODES = 0x2700, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27BF, + SMSG_SOCKET_GEMS = 0x2771, + SMSG_SOCKET_GEMS_FAILURE = 0x2772, + SMSG_SORT_BAGS_RESULT = 0x282D, SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25F3, SMSG_SPECIALIZATION_CHANGED = 0x25ED, SMSG_SPECIAL_MOUNT_ANIM = 0x26CE, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2760, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2761, SMSG_SPELL_ABSORB_LOG = 0x2C1F, SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17, SMSG_SPELL_CHANNEL_START = 0x2C34, @@ -1678,73 +1694,74 @@ enum OpcodeServer : uint16 SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B, SMSG_SPELL_PREPARE = 0x2C38, SMSG_SPELL_START = 0x2C3A, - SMSG_SPIRIT_HEALER_CONFIRM = 0x275D, - SMSG_STAND_STATE_UPDATE = 0x2763, + SMSG_SPIRIT_HEALER_CONFIRM = 0x275E, + SMSG_STAND_STATE_UPDATE = 0x2764, SMSG_START_ELAPSED_TIMER = 0x261B, SMSG_START_ELAPSED_TIMERS = 0x261D, SMSG_START_LOOT_ROLL = 0x2633, - SMSG_START_MIRROR_TIMER = 0x2757, + SMSG_START_MIRROR_TIMER = 0x2758, SMSG_START_TIMER = 0x25BB, SMSG_STOP_ELAPSED_TIMER = 0x261C, - SMSG_STOP_MIRROR_TIMER = 0x2759, - SMSG_STOP_SPEAKERBOT_SOUND = 0x27BA, + SMSG_STOP_MIRROR_TIMER = 0x275A, + SMSG_STOP_SPEAKERBOT_SOUND = 0x27BB, SMSG_STREAMING_MOVIES = 0x25BA, SMSG_SUMMON_CANCEL = 0x26E1, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F, - SMSG_SUMMON_REQUEST = 0x2768, + SMSG_SUMMON_REQUEST = 0x2769, SMSG_SUPERCEDED_SPELLS = 0x2C4C, SMSG_SUSPEND_COMMS = 0x304A, SMSG_SUSPEND_TOKEN = 0x25BD, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x275F, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2760, SMSG_TAXI_NODE_STATUS = 0x26AB, SMSG_TEXT_EMOTE = 0x26A9, - SMSG_THREAT_CLEAR = 0x2719, - SMSG_THREAT_REMOVE = 0x2718, - SMSG_THREAT_UPDATE = 0x2717, + SMSG_THREAT_CLEAR = 0x271A, + SMSG_THREAT_REMOVE = 0x2719, + SMSG_THREAT_UPDATE = 0x2718, SMSG_TIME_ADJUSTMENT = 0x2DA1, SMSG_TIME_SYNC_REQUEST = 0x2DA0, - SMSG_TITLE_EARNED = 0x2714, - SMSG_TITLE_LOST = 0x2715, + SMSG_TITLE_EARNED = 0x2715, + SMSG_TITLE_LOST = 0x2716, SMSG_TOTEM_CREATED = 0x26FB, - SMSG_TOTEM_MOVED = 0x26FC, + SMSG_TOTEM_DURATION_CHANGED = 0x26FC, + SMSG_TOTEM_MOVED = 0x26FD, SMSG_TRADE_STATUS = 0x2582, SMSG_TRADE_UPDATED = 0x2581, - SMSG_TRAINER_BUY_FAILED = 0x271E, - SMSG_TRAINER_LIST = 0x271D, - SMSG_TRANSFER_ABORTED = 0x2749, + SMSG_TRAINER_BUY_FAILED = 0x271F, + SMSG_TRAINER_LIST = 0x271E, + SMSG_TRANSFER_ABORTED = 0x274A, SMSG_TRANSFER_PENDING = 0x25E5, SMSG_TRANSMOG_COLLECTION_UPDATE = 0x25C6, SMSG_TRANSMOG_SET_COLLECTION_UPDATE = 0x25C7, - SMSG_TRIGGER_CINEMATIC = 0x2816, - SMSG_TRIGGER_MOVIE = 0x26FD, - SMSG_TURN_IN_PETITION_RESULT = 0x279A, - SMSG_TUTORIAL_FLAGS = 0x2808, - SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x284A, - SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x2849, + SMSG_TRIGGER_CINEMATIC = 0x2817, + SMSG_TRIGGER_MOVIE = 0x26FE, + SMSG_TURN_IN_PETITION_RESULT = 0x279B, + SMSG_TUTORIAL_FLAGS = 0x2809, + SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x284C, + SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x284B, SMSG_TWITTER_STATUS = 0x2FFD, - SMSG_UI_TIME = 0x275C, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2819, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x281A, + SMSG_UI_TIME = 0x275D, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x281A, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x281B, SMSG_UNLEARNED_SPELLS = 0x2C4E, - SMSG_UPDATE_ACCOUNT_DATA = 0x2751, + SMSG_UPDATE_ACCOUNT_DATA = 0x2752, SMSG_UPDATE_ACTION_BUTTONS = 0x25F6, SMSG_UPDATE_CELESTIAL_BODY = 0x286B, - SMSG_UPDATE_CHARACTER_FLAGS = 0x280E, + SMSG_UPDATE_CHARACTER_FLAGS = 0x280F, SMSG_UPDATE_EXPANSION_LEVEL = 0x2666, SMSG_UPDATE_GAME_TIME_STATE = 0x2872, SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26D8, SMSG_UPDATE_LAST_INSTANCE = 0x26B7, - SMSG_UPDATE_OBJECT = 0x2817, + SMSG_UPDATE_OBJECT = 0x2818, SMSG_UPDATE_TALENT_DATA = 0x25EC, - SMSG_UPDATE_TASK_PROGRESS = 0x27DC, + SMSG_UPDATE_TASK_PROGRESS = 0x27DD, SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19, - SMSG_UPDATE_WORLD_STATE = 0x2794, + SMSG_UPDATE_WORLD_STATE = 0x2795, SMSG_USERLIST_ADD = 0x2BB9, SMSG_USERLIST_REMOVE = 0x2BBA, SMSG_USERLIST_UPDATE = 0x2BBB, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x279B, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x279C, SMSG_VENDOR_INVENTORY = 0x25CA, - SMSG_VIGNETTE_UPDATE = 0x27BC, + SMSG_VIGNETTE_UPDATE = 0x27BD, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x25DF, SMSG_VOID_STORAGE_CONTENTS = 0x25DC, SMSG_VOID_STORAGE_FAILED = 0x25DB, @@ -1753,36 +1770,35 @@ enum OpcodeServer : uint16 SMSG_WAIT_QUEUE_FINISH = 0x256E, SMSG_WAIT_QUEUE_UPDATE = 0x256D, SMSG_WARDEN_DATA = 0x2576, - SMSG_WARFRONT_COMPLETED = 0x27AD, + SMSG_WARFRONT_COMPLETED = 0x27AE, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x25B4, SMSG_WEATHER = 0x26D5, SMSG_WEEKLY_SPELL_USAGE = 0x2C18, SMSG_WHO = 0x2BAE, SMSG_WHO_IS = 0x26D4, - SMSG_WORLD_QUEST_UPDATE = 0x2851, + SMSG_WORLD_QUEST_UPDATE = 0x2853, SMSG_WORLD_SERVER_INFO = 0x25C2, - SMSG_WORLD_TEXT = 0x2836, - SMSG_WOW_TOKEN_AUCTION_SOLD = 0x2824, - SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2826, - SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2827, + SMSG_WORLD_TEXT = 0x2838, + SMSG_WOW_TOKEN_AUCTION_SOLD = 0x2825, + SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2827, + SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2828, SMSG_WOW_TOKEN_CAN_REDEEM_FOR_BALANCE_RESULT = 0x2861, - SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x2825, - SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x281F, - SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x2820, - SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x2821, - SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2828, - SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2829, - SMSG_WOW_TOKEN_REDEEM_RESULT = 0x282A, - SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x2822, - SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x2823, - SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x282B, + SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x2826, + SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x2820, + SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x2821, + SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x2822, + SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2829, + SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x282A, + SMSG_WOW_TOKEN_REDEEM_RESULT = 0x282B, + SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x2823, + SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x2824, + SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x282C, SMSG_XP_GAIN_ABORTED = 0x25E0, - SMSG_XP_GAIN_ENABLED = 0x27F8, + SMSG_XP_GAIN_ENABLED = 0x27F9, SMSG_ZONE_UNDER_ATTACK = 0x2BB5, // Opcodes that are not generated automatically SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0xBADD, // no client handler - SMSG_ITEM_UPGRADE_RESULT = 0xBADD, // no client handler SMSG_COMPRESSED_PACKET = 0x3052, SMSG_MULTIPLE_PACKETS = 0x3051, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index b7003370326..9c492dbaace 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -389,7 +389,6 @@ namespace WorldPackets class WrapItem; class CancelTempEnchantment; class UseCritterItem; - class UpgradeItem; class SocketGems; class SortBags; class SortBankBags; @@ -1405,7 +1404,6 @@ class TC_GAME_API WorldSession void HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet); void HandleWrapItem(WorldPackets::Item::WrapItem& packet); void HandleUseCritterItem(WorldPackets::Item::UseCritterItem& packet); - void HandleUpgradeItem(WorldPackets::Item::UpgradeItem& packet); void HandleAttackSwingOpcode(WorldPackets::Combat::AttackSwing& packet); void HandleAttackStopOpcode(WorldPackets::Combat::AttackStop& packet); |