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