diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-01-28 01:53:26 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-01-28 01:53:26 +0100 |
commit | 4bec7233badf9d3ab71dbdde8b24f66f7c4eedfb (patch) | |
tree | b0d28e475ba99293fd0ca531a82a3446a027078f /src/server/game | |
parent | 1bb9ba457418889d848998ccf6d412b1b369a5d3 (diff) |
Core: Updated to 10.0.5
Diffstat (limited to 'src/server/game')
36 files changed, 1924 insertions, 1500 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 992b4e72393..812cddfe1d9 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -3858,6 +3858,10 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 if (GameTime::GetGameTime() - referencePlayer->m_playerData->LogoutTime < int64(reqValue) * DAY) return false; break; + case ModifierTreeType::PlayerHasPerksProgramPendingReward: // 350 + if (!referencePlayer->m_activePlayerData->HasPerksProgramPendingReward) + return false; + break; case ModifierTreeType::PlayerCanUseItem: // 351 { ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(reqValue); @@ -3865,6 +3869,29 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 return false; break; } + case ModifierTreeType::PlayerHasAtLeastProfPathRanks: // 355 + { + auto traitNodeEntryRankCount = [referencePlayer, secondaryAsset]() + { + uint32 ranks = 0; + for (UF::TraitConfig const& traitConfig : referencePlayer->m_activePlayerData->TraitConfigs) + { + if (TraitConfigType(*traitConfig.Type) != TraitConfigType::Profession) + continue; + + if (*traitConfig.SkillLineID != int32(secondaryAsset)) + continue; + + for (UF::TraitEntry const& traitEntry : traitConfig.Entries) + if (sTraitNodeEntryStore.AssertEntry(traitEntry.TraitNodeEntryID)->GetNodeEntryType() == TraitNodeEntryType::ProfPath) + ranks += traitEntry.Rank + traitEntry.GrantedRanks; + } + return ranks; + }(); + if (traitNodeEntryRankCount < reqValue) + return false; + break; + } default: return false; } diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index 94edeac3806..3713c5c6b1d 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -2581,15 +2581,17 @@ struct CommentatorStartLocationMeta struct CommentatorTrackedCooldownMeta { - static constexpr DB2MetaField Fields[4] = + static constexpr DB2MetaField Fields[6] = { { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1661584, -1, 4, 3, 0xDF3511FC, Fields, 3 }; + static constexpr DB2Meta Instance{ 1661584, -1, 6, 5, 0x43CD7801, Fields, 5 }; }; struct CommunityIconMeta @@ -5323,7 +5325,7 @@ struct GossipXUIDisplayInfoMeta struct GradientEffectMeta { - static constexpr DB2MetaField Fields[16] = + static constexpr DB2MetaField Fields[18] = { { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, @@ -5341,9 +5343,11 @@ struct GradientEffectMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, }; - static constexpr DB2Meta Instance{ 2433582, -1, 16, 16, 0x1E246107, Fields, -1 }; + static constexpr DB2Meta Instance{ 2433582, -1, 18, 18, 0xA5B6854E, Fields, -1 }; }; struct GroundEffectDoodadMeta @@ -6109,10 +6113,11 @@ struct ItemDisenchantLootMeta struct ItemDisplayInfoMeta { - static constexpr DB2MetaField Fields[15] = + static constexpr DB2MetaField Fields[16] = { { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, false }, { FT_INT, 1, true }, @@ -6128,7 +6133,7 @@ struct ItemDisplayInfoMeta { FT_INT, 2, true }, }; - static constexpr DB2Meta Instance{ 1266429, -1, 15, 15, 0xF2D99687, Fields, -1 }; + static constexpr DB2Meta Instance{ 1266429, -1, 16, 16, 0xD922B51F, Fields, -1 }; }; struct ItemDisplayInfoMaterialResMeta @@ -8403,6 +8408,134 @@ struct PathPropertyMeta static constexpr DB2Meta Instance{ 801735, -1, 3, 3, 0x635DCADD, Fields, -1 }; }; +struct PerksActivityMeta +{ + static constexpr DB2MetaField Fields[5] = + { + { FT_STRING, 1, true }, + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4519766, 2, 5, 5, 0x6FD48C11, Fields, -1 }; +}; + +struct PerksActivityTagMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + }; + + static constexpr DB2Meta Instance{ 4694317, 1, 2, 2, 0x0FBA68B8, Fields, -1 }; +}; + +struct PerksActivityThresholdMeta +{ + static constexpr DB2MetaField Fields[5] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4519767, 0, 5, 4, 0xF25916E9, Fields, 4 }; +}; + +struct PerksActivityThresholdGroupMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4519768, 1, 3, 3, 0x780A31D9, Fields, -1 }; +}; + +struct PerksActivityXIntervalMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4519781, 0, 3, 2, 0xA0A40503, Fields, 2 }; +}; + +struct PerksActivityXTagMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4694318, 0, 3, 2, 0x5254EC49, Fields, 2 }; +}; + +struct PerksVendorCategoryMeta +{ + static constexpr DB2MetaField Fields[4] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4281310, 1, 4, 4, 0x94980739, Fields, -1 }; +}; + +struct PerksVendorItemMeta +{ + static constexpr DB2MetaField Fields[8] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4281311, 0, 8, 8, 0x451B856E, Fields, -1 }; +}; + +struct PerksVendorItemUIInfoMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4281312, 0, 3, 3, 0xD787F0DD, Fields, -1 }; +}; + +struct PerksVendorItemXIntervalMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 4872513, -1, 2, 2, 0xD8D92220, Fields, -1 }; +}; + struct PhaseMeta { static constexpr DB2MetaField Fields[1] = @@ -12808,14 +12941,15 @@ struct UiMapXMapArtMeta struct UiModelSceneMeta { - static constexpr DB2MetaField Fields[3] = + static constexpr DB2MetaField Fields[4] = { { FT_INT, 1, false }, { FT_BYTE, 1, true }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1548215, 0, 3, 3, 0x97CD29E5, Fields, -1 }; + static constexpr DB2Meta Instance{ 1548215, 0, 4, 4, 0xD6CFDD08, Fields, -1 }; }; struct UiModelSceneActorMeta @@ -12825,16 +12959,16 @@ struct UiModelSceneActorMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_FLOAT, 3, true }, { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, - { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1548214, 2, 10, 9, 0xA3270DEE, Fields, 9 }; + static constexpr DB2Meta Instance{ 1548214, 2, 10, 10, 0x6B7EE2AC, Fields, 3 }; }; struct UiModelSceneActorDisplayMeta @@ -12861,6 +12995,7 @@ struct UiModelSceneCameraMeta { FT_FLOAT, 3, true }, { FT_FLOAT, 3, true }, { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_FLOAT, 1, true }, @@ -12872,10 +13007,9 @@ struct UiModelSceneCameraMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, - { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1548213, 3, 16, 15, 0x10F8A956, Fields, 15 }; + static constexpr DB2Meta Instance{ 1548213, 3, 16, 16, 0x1C131B80, Fields, 4 }; }; struct UiPartyPoseMeta diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 47b91ff31f0..9511f1e0596 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -3966,6 +3966,8 @@ struct TraitNodeEntryEntry int32 TraitDefinitionID; int32 MaxRanks; uint8 NodeEntryType; + + TraitNodeEntryType GetNodeEntryType() const { return static_cast<TraitNodeEntryType>(NodeEntryType); } }; struct TraitNodeEntryXTraitCondEntry diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index a73502f9780..d211af84e69 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -616,6 +616,8 @@ enum class CriteriaType : uint8 FulfillAnyCraftingOrder = 245, /*NYI*/ FulfillCraftingOrderType = 246, /*NYI*/ // {CraftingOrderType} + + PerksProgramMonthComplete = 249, /*NYI*/ Count }; @@ -1466,7 +1468,11 @@ enum class ModifierTreeType : int32 CraftingOrderSkillLineAbility = 347, /*NYI*/ CraftingOrderProfession = 348, /*NYI*/ // ProfessionEnum + PlayerHasPerksProgramPendingReward = 350, PlayerCanUseItem = 351, // Player can use item {#Item} + + PlayerHasAtLeastProfPathRanks = 355, // Player has purchased or granted at least {#Count} ranks in {SkillLine} config + PlayerHasAtLeastMissingProfPathRanks = 356, /*NYI*/ // Player is missing least {#Count} ranks in {SkillLine} config }; enum class ModifierTreeOperator : int8 diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index 1012000322c..91b95eb0888 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -40,7 +40,7 @@ struct GameObjectTemplate int32 ContentTuningId; union { - // 0 GAMEOBJECT_TYPE_DOOR + // 0 GAMEOBJECT_TYPE_DOOR struct { uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false @@ -512,6 +512,7 @@ struct GameObjectTemplate uint32 SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0 uint32 InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 CustomizationScope; // 4 Customization Scope, int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 Preventteleportingtheplayeroutofthebarbershopchair;// 5 Prevent teleporting the player out of the barbershop chair, enum { false, true, }; Default: false } barberChair; // 33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING struct @@ -818,6 +819,12 @@ struct GameObjectTemplate { uint32 Profession; // 0 Profession, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing } craftingTable; + // 62 GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST + struct + { + uint32 Script; // 0 Script, References: SpellScript, NoValue = 0 + uint32 autoClose; // 1 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 + } PerksProgramChest; struct { uint32 data[MAX_GAMEOBJECT_DATA]; @@ -1052,13 +1059,14 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_DOOR: return door.autoClose; - case GAMEOBJECT_TYPE_BUTTON: return button.autoClose; - case GAMEOBJECT_TYPE_TRAP: return trap.autoClose; - case GAMEOBJECT_TYPE_GOOBER: return goober.autoClose; - case GAMEOBJECT_TYPE_TRANSPORT: return transport.autoClose; - case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.autoClose; - case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.autoClose; + case GAMEOBJECT_TYPE_DOOR: return door.autoClose; + case GAMEOBJECT_TYPE_BUTTON: return button.autoClose; + case GAMEOBJECT_TYPE_TRAP: return trap.autoClose; + case GAMEOBJECT_TYPE_GOOBER: return goober.autoClose; + case GAMEOBJECT_TYPE_TRANSPORT: return transport.autoClose; + case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.autoClose; + case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.autoClose; + case GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST: return PerksProgramChest.autoClose; default: return 0; } } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 1b7632da868..1cb77b9afe2 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -1107,6 +1107,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi data << int32(LooksLikeMountID); data << int32(LooksLikeCreatureID); data << int32(LookAtControllerID); + data << int32(PerksVendorItemID); data << int32(TaxiNodesID); data << GuildGUID; data << uint32(PassiveSpells.size()); @@ -1131,7 +1132,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { - Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xFC000FFFu, 0x00000001u, 0x00000000u }); + Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xF8001FFFu, 0x00000003u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } @@ -1139,16 +1140,16 @@ void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x200000FEu, 0x03FFF000u, 0xFFFFFFFEu, 0x0000000Fu }; + allowedMaskForTarget |= { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x400000FEu, 0x07FFE000u, 0xFFFFFFFCu, 0x0000001Fu }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll)) - allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x20000000u, 0x03FFF000u, 0x00000000u, 0x00000000u }; + allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x40000000u, 0x07FFE000u, 0x00000000u, 0x00000000u }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath)) - allowedMaskForTarget |= { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x003FC000u, 0x00000000u }; + allowedMaskForTarget |= { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x007F8000u, 0x00000000u }; } void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) { - Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xFC000FFFu, 0x00000001u, 0x00000000u }); + Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xF8001FFFu, 0x00000003u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask &= allowedMaskForTarget; } @@ -1676,108 +1677,112 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor } if (changesMask[117]) { - data << int32(TaxiNodesID); + data << int32(PerksVendorItemID); } if (changesMask[118]) { - data << GuildGUID; + data << int32(TaxiNodesID); } if (changesMask[119]) { - data << int32(FlightCapabilityID); + data << GuildGUID; } if (changesMask[120]) { - data << uint32(SilencedSchoolMask); + data << int32(FlightCapabilityID); } if (changesMask[121]) { + data << uint32(SilencedSchoolMask); + } + if (changesMask[122]) + { data << NameplateAttachToGUID; } } - if (changesMask[122]) + if (changesMask[123]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[123 + i]) + if (changesMask[124 + i]) { data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(this, i, owner, receiver)); } } } - if (changesMask[125]) + if (changesMask[126]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[126 + i]) + if (changesMask[127 + i]) { data << int32(Power[i]); } - if (changesMask[133 + i]) + if (changesMask[134 + i]) { data << int32(MaxPower[i]); } - if (changesMask[140 + i]) + if (changesMask[141 + i]) { data << float(PowerRegenFlatModifier[i]); } - if (changesMask[147 + i]) + if (changesMask[148 + i]) { data << float(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[154]) + if (changesMask[155]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[155 + i]) + if (changesMask[156 + i]) { VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[158]) + if (changesMask[159]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[159 + i]) + if (changesMask[160 + i]) { data << uint32(AttackRoundBaseTime[i]); } } } - if (changesMask[161]) + if (changesMask[162]) { for (uint32 i = 0; i < 4; ++i) { - if (changesMask[162 + i]) + if (changesMask[163 + i]) { data << int32(Stats[i]); } - if (changesMask[166 + i]) + if (changesMask[167 + i]) { data << int32(StatPosBuff[i]); } - if (changesMask[170 + i]) + if (changesMask[171 + i]) { data << int32(StatNegBuff[i]); } } } - if (changesMask[174]) + if (changesMask[175]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[175 + i]) + if (changesMask[176 + i]) { data << int32(Resistances[i]); } - if (changesMask[182 + i]) + if (changesMask[183 + i]) { data << int32(BonusResistanceMods[i]); } - if (changesMask[189 + i]) + if (changesMask[190 + i]) { data << int32(ManaCostModifier[i]); } @@ -1900,6 +1905,7 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(LooksLikeMountID); Base::ClearChangesMask(LooksLikeCreatureID); Base::ClearChangesMask(LookAtControllerID); + Base::ClearChangesMask(PerksVendorItemID); Base::ClearChangesMask(TaxiNodesID); Base::ClearChangesMask(GuildGUID); Base::ClearChangesMask(FlightCapabilityID); @@ -3499,6 +3505,24 @@ void CraftingOrder::ClearChangesMask() _changesMask.ResetAll(); } +void PersonalCraftingOrderCount::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const +{ + data << int32(ProfessionID); + data << uint32(Count); +} + +void PersonalCraftingOrderCount::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const +{ + data << int32(ProfessionID); + data << uint32(Count); +} + +bool PersonalCraftingOrderCount::operator==(PersonalCraftingOrderCount const& right) const +{ + return ProfessionID == right.ProfessionID + && Count == right.Count; +} + void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { for (uint32 i = 0; i < 218; ++i) @@ -3628,6 +3652,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f } data << int32(Honor); data << int32(HonorNextLevel); + data << int32(PerksProgramCurrency); data << uint8(NumBankSlots); data << uint32(ResearchSites.size()); data << uint32(ResearchSiteProgress.size()); @@ -3665,6 +3690,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data << uint32(TraitConfigs.size()); data << uint32(ActiveCombatTraitConfigID); data << uint32(CraftingOrders.size()); + data << uint32(PersonalCraftingOrderCounts.size()); for (uint32 i = 0; i < KnownTitles.size(); ++i) { data << uint64(KnownTitles[i]); @@ -3749,17 +3775,23 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { data << int32(DisabledSpells[i]); } + for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i) + { + PersonalCraftingOrderCounts[i].WriteCreate(data, owner, receiver); + } data.FlushBits(); data.WriteBit(BackpackAutoSortDisabled); data.WriteBit(BankAutoSortDisabled); data.WriteBit(SortBagsRightToLeft); data.WriteBit(InsertItemsLeftToRight); + data.WriteBit(HasPerksProgramPendingReward); data.WriteBits(QuestSession.has_value(), 1); - Field_1410->WriteCreate(data, owner, receiver); + data << FrozenPerksVendorItem; if (QuestSession.has_value()) { QuestSession->WriteCreate(data, owner, receiver); } + Field_1410->WriteCreate(data, owner, receiver); data << DungeonScore; for (uint32 i = 0; i < PvpInfo.size(); ++i) { @@ -3814,124 +3846,128 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[5]) { + data.WriteBit(HasPerksProgramPendingReward); + } + if (changesMask[6]) + { if (!ignoreNestedChangesMask) KnownTitles.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(KnownTitles.size(), data); } - if (changesMask[6]) + if (changesMask[7]) { if (!ignoreNestedChangesMask) PvpInfo.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data); } - if (changesMask[7]) + if (changesMask[8]) { if (!ignoreNestedChangesMask) ResearchSites.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ResearchSites.size(), data); } - if (changesMask[8]) + if (changesMask[9]) { if (!ignoreNestedChangesMask) ResearchSiteProgress.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ResearchSiteProgress.size(), data); } - if (changesMask[9]) + if (changesMask[10]) { if (!ignoreNestedChangesMask) DailyQuestsCompleted.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(DailyQuestsCompleted.size(), data); } - if (changesMask[10]) + if (changesMask[11]) { if (!ignoreNestedChangesMask) AvailableQuestLineXQuestIDs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(AvailableQuestLineXQuestIDs.size(), data); } - if (changesMask[11]) + if (changesMask[12]) { if (!ignoreNestedChangesMask) Heirlooms.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Heirlooms.size(), data); } - if (changesMask[12]) + if (changesMask[13]) { if (!ignoreNestedChangesMask) HeirloomFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(HeirloomFlags.size(), data); } - if (changesMask[13]) + if (changesMask[14]) { if (!ignoreNestedChangesMask) Toys.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Toys.size(), data); } - if (changesMask[14]) + if (changesMask[15]) { if (!ignoreNestedChangesMask) ToyFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ToyFlags.size(), data); } - if (changesMask[15]) + if (changesMask[16]) { if (!ignoreNestedChangesMask) Transmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Transmog.size(), data); } - if (changesMask[16]) + if (changesMask[17]) { if (!ignoreNestedChangesMask) ConditionalTransmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ConditionalTransmog.size(), data); } - if (changesMask[17]) + if (changesMask[18]) { if (!ignoreNestedChangesMask) SelfResSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SelfResSpells.size(), data); } - if (changesMask[18]) + if (changesMask[19]) { if (!ignoreNestedChangesMask) RuneforgePowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RuneforgePowers.size(), data); } - if (changesMask[19]) + if (changesMask[20]) { if (!ignoreNestedChangesMask) TransmogIllusions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TransmogIllusions.size(), data); } - if (changesMask[20]) + if (changesMask[21]) { if (!ignoreNestedChangesMask) CharacterRestrictions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CharacterRestrictions.size(), data); } - if (changesMask[21]) + if (changesMask[22]) { if (!ignoreNestedChangesMask) SpellPctModByLabel.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SpellPctModByLabel.size(), data); } - if (changesMask[22]) + if (changesMask[23]) { if (!ignoreNestedChangesMask) SpellFlatModByLabel.WriteUpdateMask(data); @@ -3939,11 +3975,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data); } } - if (changesMask[30]) + if (changesMask[32]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[31 + i]) + if (changesMask[33 + i]) { if (!ignoreNestedChangesMask) Research[i].WriteUpdateMask(data); @@ -3962,60 +3998,67 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo data.FlushBits(); if (changesMask[0]) { - if (changesMask[23]) + if (changesMask[24]) { if (!ignoreNestedChangesMask) MawPowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MawPowers.size(), data); } - if (changesMask[24]) + if (changesMask[25]) { if (!ignoreNestedChangesMask) MultiFloorExploration.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MultiFloorExploration.size(), data); } - if (changesMask[25]) + if (changesMask[26]) { if (!ignoreNestedChangesMask) RecipeProgression.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RecipeProgression.size(), data); } - if (changesMask[26]) + if (changesMask[27]) { if (!ignoreNestedChangesMask) ReplayedQuests.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ReplayedQuests.size(), data); } - if (changesMask[27]) + if (changesMask[28]) { if (!ignoreNestedChangesMask) DisabledSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(DisabledSpells.size(), data); } - if (changesMask[28]) + if (changesMask[29]) { if (!ignoreNestedChangesMask) TraitConfigs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TraitConfigs.size(), data); } - if (changesMask[29]) + if (changesMask[30]) { if (!ignoreNestedChangesMask) CraftingOrders.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CraftingOrders.size(), data); } + if (changesMask[31]) + { + if (!ignoreNestedChangesMask) + PersonalCraftingOrderCounts.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data); + } } data.FlushBits(); if (changesMask[0]) { - if (changesMask[5]) + if (changesMask[6]) { for (uint32 i = 0; i < KnownTitles.size(); ++i) { @@ -4025,7 +4068,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[7]) + if (changesMask[8]) { for (uint32 i = 0; i < ResearchSites.size(); ++i) { @@ -4035,7 +4078,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[8]) + if (changesMask[9]) { for (uint32 i = 0; i < ResearchSiteProgress.size(); ++i) { @@ -4045,7 +4088,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[9]) + if (changesMask[10]) { for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i) { @@ -4055,7 +4098,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[10]) + if (changesMask[11]) { for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i) { @@ -4065,7 +4108,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[11]) + if (changesMask[12]) { for (uint32 i = 0; i < Heirlooms.size(); ++i) { @@ -4075,7 +4118,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[12]) + if (changesMask[13]) { for (uint32 i = 0; i < HeirloomFlags.size(); ++i) { @@ -4085,7 +4128,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[13]) + if (changesMask[14]) { for (uint32 i = 0; i < Toys.size(); ++i) { @@ -4095,7 +4138,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[14]) + if (changesMask[15]) { for (uint32 i = 0; i < ToyFlags.size(); ++i) { @@ -4105,7 +4148,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[15]) + if (changesMask[16]) { for (uint32 i = 0; i < Transmog.size(); ++i) { @@ -4115,7 +4158,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[16]) + if (changesMask[17]) { for (uint32 i = 0; i < ConditionalTransmog.size(); ++i) { @@ -4125,7 +4168,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[17]) + if (changesMask[18]) { for (uint32 i = 0; i < SelfResSpells.size(); ++i) { @@ -4135,7 +4178,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[18]) + if (changesMask[19]) { for (uint32 i = 0; i < RuneforgePowers.size(); ++i) { @@ -4145,7 +4188,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[19]) + if (changesMask[20]) { for (uint32 i = 0; i < TransmogIllusions.size(); ++i) { @@ -4155,7 +4198,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[21]) + if (changesMask[22]) { for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i) { @@ -4165,7 +4208,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[22]) + if (changesMask[23]) { for (uint32 i = 0; i < SpellFlatModByLabel.size(); ++i) { @@ -4175,7 +4218,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[23]) + if (changesMask[24]) { for (uint32 i = 0; i < MawPowers.size(); ++i) { @@ -4185,7 +4228,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[24]) + if (changesMask[25]) { for (uint32 i = 0; i < MultiFloorExploration.size(); ++i) { @@ -4195,7 +4238,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[25]) + if (changesMask[26]) { for (uint32 i = 0; i < RecipeProgression.size(); ++i) { @@ -4205,7 +4248,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[26]) + if (changesMask[27]) { for (uint32 i = 0; i < ReplayedQuests.size(); ++i) { @@ -4215,7 +4258,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[27]) + if (changesMask[28]) { for (uint32 i = 0; i < DisabledSpells.size(); ++i) { @@ -4225,7 +4268,17 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[6]) + if (changesMask[31]) + { + for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i) + { + if (PersonalCraftingOrderCounts.HasChanged(i) || ignoreNestedChangesMask) + { + PersonalCraftingOrderCounts[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } + if (changesMask[7]) { for (uint32 i = 0; i < PvpInfo.size(); ++i) { @@ -4235,7 +4288,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[20]) + if (changesMask[21]) { for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) { @@ -4245,7 +4298,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[28]) + if (changesMask[29]) { for (uint32 i = 0; i < TraitConfigs.size(); ++i) { @@ -4255,7 +4308,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[29]) + if (changesMask[30]) { for (uint32 i = 0; i < CraftingOrders.size(); ++i) { @@ -4265,324 +4318,328 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[32]) - { - data << FarsightObject; - } - if (changesMask[33]) - { - data << SummonedBattlePetGUID; - } } if (changesMask[34]) { if (changesMask[35]) { - data << uint64(Coinage); + data << FarsightObject; } if (changesMask[36]) { - data << int32(XP); + data << SummonedBattlePetGUID; } if (changesMask[37]) { - data << int32(NextLevelXP); + data << uint64(Coinage); } if (changesMask[38]) { - data << int32(TrialXP); + data << int32(XP); } if (changesMask[39]) { - Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data << int32(NextLevelXP); } if (changesMask[40]) { - data << int32(CharacterPoints); + data << int32(TrialXP); } if (changesMask[41]) { - data << int32(MaxTalentTiers); + Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[42]) { - data << uint32(TrackCreatureMask); + data << int32(CharacterPoints); } if (changesMask[43]) { - data << float(MainhandExpertise); + data << int32(MaxTalentTiers); } if (changesMask[44]) { - data << float(OffhandExpertise); + data << uint32(TrackCreatureMask); } if (changesMask[45]) { - data << float(RangedExpertise); + data << float(MainhandExpertise); } if (changesMask[46]) { - data << float(CombatRatingExpertise); + data << float(OffhandExpertise); } if (changesMask[47]) { - data << float(BlockPercentage); + data << float(RangedExpertise); } if (changesMask[48]) { - data << float(DodgePercentage); + data << float(CombatRatingExpertise); } if (changesMask[49]) { - data << float(DodgePercentageFromAttribute); + data << float(BlockPercentage); } if (changesMask[50]) { - data << float(ParryPercentage); + data << float(DodgePercentage); } if (changesMask[51]) { - data << float(ParryPercentageFromAttribute); + data << float(DodgePercentageFromAttribute); } if (changesMask[52]) { - data << float(CritPercentage); + data << float(ParryPercentage); } if (changesMask[53]) { - data << float(RangedCritPercentage); + data << float(ParryPercentageFromAttribute); } if (changesMask[54]) { - data << float(OffhandCritPercentage); + data << float(CritPercentage); } if (changesMask[55]) { - data << float(SpellCritPercentage); + data << float(RangedCritPercentage); } if (changesMask[56]) { - data << int32(ShieldBlock); + data << float(OffhandCritPercentage); } if (changesMask[57]) { - data << float(ShieldBlockCritPercentage); + data << float(SpellCritPercentage); } if (changesMask[58]) { - data << float(Mastery); + data << int32(ShieldBlock); } if (changesMask[59]) { - data << float(Speed); + data << float(ShieldBlockCritPercentage); } if (changesMask[60]) { - data << float(Avoidance); + data << float(Mastery); } if (changesMask[61]) { - data << float(Sturdiness); + data << float(Speed); } if (changesMask[62]) { - data << int32(Versatility); + data << float(Avoidance); } if (changesMask[63]) { - data << float(VersatilityBonus); + data << float(Sturdiness); } if (changesMask[64]) { - data << float(PvpPowerDamage); + data << int32(Versatility); } if (changesMask[65]) { - data << float(PvpPowerHealing); + data << float(VersatilityBonus); } } if (changesMask[66]) { if (changesMask[67]) { - data << int32(ModHealingDonePos); + data << float(PvpPowerDamage); } if (changesMask[68]) { - data << float(ModHealingPercent); + data << float(PvpPowerHealing); } if (changesMask[69]) { - data << float(ModPeriodicHealingDonePercent); + data << int32(ModHealingDonePos); } if (changesMask[70]) { - data << float(ModSpellPowerPercent); + data << float(ModHealingPercent); } if (changesMask[71]) { - data << float(ModResiliencePercent); + data << float(ModPeriodicHealingDonePercent); } if (changesMask[72]) { - data << float(OverrideSpellPowerByAPPercent); + data << float(ModSpellPowerPercent); } if (changesMask[73]) { - data << float(OverrideAPBySpellPowerPercent); + data << float(ModResiliencePercent); } if (changesMask[74]) { - data << int32(ModTargetResistance); + data << float(OverrideSpellPowerByAPPercent); } if (changesMask[75]) { - data << int32(ModTargetPhysicalResistance); + data << float(OverrideAPBySpellPowerPercent); } if (changesMask[76]) { - data << uint32(LocalFlags); + data << int32(ModTargetResistance); } if (changesMask[77]) { - data << uint8(GrantableLevels); + data << int32(ModTargetPhysicalResistance); } if (changesMask[78]) { - data << uint8(MultiActionBars); + data << uint32(LocalFlags); } if (changesMask[79]) { - data << uint8(LifetimeMaxRank); + data << uint8(GrantableLevels); } if (changesMask[80]) { - data << uint8(NumRespecs); + data << uint8(MultiActionBars); } if (changesMask[81]) { - data << uint32(PvpMedals); + data << uint8(LifetimeMaxRank); } if (changesMask[82]) { - data << uint16(TodayHonorableKills); + data << uint8(NumRespecs); } if (changesMask[83]) { - data << uint16(YesterdayHonorableKills); + data << uint32(PvpMedals); } if (changesMask[84]) { - data << uint32(LifetimeHonorableKills); + data << uint16(TodayHonorableKills); } if (changesMask[85]) { - data << int32(WatchedFactionIndex); + data << uint16(YesterdayHonorableKills); } if (changesMask[86]) { - data << int32(MaxLevel); + data << uint32(LifetimeHonorableKills); } if (changesMask[87]) { - data << int32(ScalingPlayerLevelDelta); + data << int32(WatchedFactionIndex); } if (changesMask[88]) { - data << int32(MaxCreatureScalingLevel); + data << int32(MaxLevel); } if (changesMask[89]) { - data << int32(PetSpellPower); + data << int32(ScalingPlayerLevelDelta); } if (changesMask[90]) { - data << float(UiHitModifier); + data << int32(MaxCreatureScalingLevel); } if (changesMask[91]) { - data << float(UiSpellHitModifier); + data << int32(PetSpellPower); } if (changesMask[92]) { - data << int32(HomeRealmTimeOffset); + data << float(UiHitModifier); } if (changesMask[93]) { - data << float(ModPetHaste); + data << float(UiSpellHitModifier); } if (changesMask[94]) { - data << int8(JailersTowerLevelMax); + data << int32(HomeRealmTimeOffset); } if (changesMask[95]) { - data << int8(JailersTowerLevel); + data << float(ModPetHaste); } if (changesMask[96]) { - data << uint8(LocalRegenFlags); + data << int8(JailersTowerLevelMax); } if (changesMask[97]) { - data << uint8(AuraVision); + data << int8(JailersTowerLevel); } } if (changesMask[98]) { if (changesMask[99]) { - data << uint8(NumBackpackSlots); + data << uint8(LocalRegenFlags); } if (changesMask[100]) { - data << int32(OverrideSpellsID); + data << uint8(AuraVision); } if (changesMask[101]) { - data << uint16(LootSpecID); + data << uint8(NumBackpackSlots); } if (changesMask[102]) { - data << uint32(OverrideZonePVPType); + data << int32(OverrideSpellsID); } if (changesMask[103]) { - data << BnetAccount; + data << uint16(LootSpecID); } if (changesMask[104]) { - data << uint64(GuildClubMemberID); + data << uint32(OverrideZonePVPType); } if (changesMask[105]) { - data << int32(Honor); + data << BnetAccount; } if (changesMask[106]) { - data << int32(HonorNextLevel); + data << uint64(GuildClubMemberID); } if (changesMask[107]) { - data << uint8(NumBankSlots); + data << int32(Honor); + } + if (changesMask[108]) + { + data << int32(HonorNextLevel); + } + if (changesMask[109]) + { + data << int32(PerksProgramCurrency); } if (changesMask[110]) { + data << uint8(NumBankSlots); + } + if (changesMask[114]) + { data << int32(UiChromieTimeExpansionID); } - if (changesMask[111]) + if (changesMask[115]) { data << int32(TransportServerTime); } - if (changesMask[112]) + if (changesMask[116]) { data << uint32(WeeklyRewardsPeriodSinceOrigin); } - if (changesMask[113]) + if (changesMask[117]) { data << int16(DEBUGSoulbindConduitRank); } - if (changesMask[115]) + if (changesMask[119]) { data << uint32(ActiveCombatTraitConfigID); } @@ -4590,157 +4647,161 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo if (changesMask[98]) { data.WriteBits(QuestSession.has_value(), 1); - if (changesMask[109]) + if (changesMask[111]) { - Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data << FrozenPerksVendorItem; } - if (changesMask[108]) + if (changesMask[112]) { if (QuestSession.has_value()) { QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[114]) + if (changesMask[113]) + { + Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + if (changesMask[118]) { data << DungeonScore; } } - if (changesMask[116]) + if (changesMask[120]) { for (uint32 i = 0; i < 218; ++i) { - if (changesMask[117 + i]) + if (changesMask[121 + i]) { data << InvSlots[i]; } } } - if (changesMask[335]) + if (changesMask[339]) { for (uint32 i = 0; i < 240; ++i) { - if (changesMask[336 + i]) + if (changesMask[340 + i]) { data << uint64(ExploredZones[i]); } } } - if (changesMask[576]) + if (changesMask[580]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[577 + i]) + if (changesMask[581 + i]) { RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[579]) + if (changesMask[583]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[580 + i]) + if (changesMask[584 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[587 + i]) + if (changesMask[591 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[594 + i]) + if (changesMask[598 + i]) { data << float(ModDamageDonePercent[i]); } - if (changesMask[601 + i]) + if (changesMask[605 + i]) { data << float(ModHealingDonePercent[i]); } } } - if (changesMask[608]) + if (changesMask[612]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[609 + i]) + if (changesMask[613 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[612 + i]) + if (changesMask[616 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[615]) + if (changesMask[619]) { for (uint32 i = 0; i < 12; ++i) { - if (changesMask[616 + i]) + if (changesMask[620 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[628 + i]) + if (changesMask[632 + i]) { data << int64(BuybackTimestamp[i]); } } } - if (changesMask[640]) + if (changesMask[644]) { for (uint32 i = 0; i < 32; ++i) { - if (changesMask[641 + i]) + if (changesMask[645 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[673]) + if (changesMask[677]) { for (uint32 i = 0; i < 4; ++i) { - if (changesMask[674 + i]) + if (changesMask[678 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[678]) + if (changesMask[682]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[679 + i]) + if (changesMask[683 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[681]) + if (changesMask[685]) { for (uint32 i = 0; i < 5; ++i) { - if (changesMask[682 + i]) + if (changesMask[686 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[687]) + if (changesMask[691]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[688 + i]) + if (changesMask[692 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[695]) + if (changesMask[699]) { for (uint32 i = 0; i < 875; ++i) { - if (changesMask[696 + i]) + if (changesMask[700 + i]) { data << uint64(QuestCompleted[i]); } @@ -4755,6 +4816,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(BankAutoSortDisabled); Base::ClearChangesMask(SortBagsRightToLeft); Base::ClearChangesMask(InsertItemsLeftToRight); + Base::ClearChangesMask(HasPerksProgramPendingReward); Base::ClearChangesMask(Research); Base::ClearChangesMask(KnownTitles); Base::ClearChangesMask(ResearchSites); @@ -4777,6 +4839,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(RecipeProgression); Base::ClearChangesMask(ReplayedQuests); Base::ClearChangesMask(DisabledSpells); + Base::ClearChangesMask(PersonalCraftingOrderCounts); Base::ClearChangesMask(PvpInfo); Base::ClearChangesMask(CharacterRestrictions); Base::ClearChangesMask(TraitConfigs); @@ -4853,7 +4916,9 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(GuildClubMemberID); Base::ClearChangesMask(Honor); Base::ClearChangesMask(HonorNextLevel); + Base::ClearChangesMask(PerksProgramCurrency); Base::ClearChangesMask(NumBankSlots); + Base::ClearChangesMask(FrozenPerksVendorItem); Base::ClearChangesMask(Field_1410); Base::ClearChangesMask(QuestSession); Base::ClearChangesMask(UiChromieTimeExpansionID); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index a075a11ab81..3048896d2f7 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -22,6 +22,7 @@ #include "ItemPacketsCommon.h" #include "MythicPlusPacketsCommon.h" #include "ObjectGuid.h" +#include "PerksProgramPacketsCommon.h" #include "Position.h" #include "QuaternionData.h" #include "UpdateField.h" @@ -255,7 +256,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); } }; -struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<196> +struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<197> { UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs; DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells; @@ -376,25 +377,26 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<196> UpdateField<int32, 96, 114> LooksLikeMountID; UpdateField<int32, 96, 115> LooksLikeCreatureID; UpdateField<int32, 96, 116> LookAtControllerID; - UpdateField<int32, 96, 117> TaxiNodesID; - UpdateField<ObjectGuid, 96, 118> GuildGUID; - UpdateField<int32, 96, 119> FlightCapabilityID; - UpdateField<uint32, 96, 120> SilencedSchoolMask; - UpdateField<ObjectGuid, 96, 121> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object - UpdateFieldArray<uint32, 2, 122, 123> NpcFlags; + UpdateField<int32, 96, 117> PerksVendorItemID; + UpdateField<int32, 96, 118> TaxiNodesID; + UpdateField<ObjectGuid, 96, 119> GuildGUID; + UpdateField<int32, 96, 120> FlightCapabilityID; + UpdateField<uint32, 96, 121> SilencedSchoolMask; + UpdateField<ObjectGuid, 96, 122> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object + UpdateFieldArray<uint32, 2, 123, 124> NpcFlags; struct NpcFlagsTag : ViewerDependentValueTag<uint32> {}; - UpdateFieldArray<int32, 7, 125, 126> Power; - UpdateFieldArray<int32, 7, 125, 133> MaxPower; - UpdateFieldArray<float, 7, 125, 140> PowerRegenFlatModifier; - UpdateFieldArray<float, 7, 125, 147> PowerRegenInterruptedFlatModifier; - UpdateFieldArray<UF::VisibleItem, 3, 154, 155> VirtualItems; - UpdateFieldArray<uint32, 2, 158, 159> AttackRoundBaseTime; - UpdateFieldArray<int32, 4, 161, 162> Stats; - UpdateFieldArray<int32, 4, 161, 166> StatPosBuff; - UpdateFieldArray<int32, 4, 161, 170> StatNegBuff; - UpdateFieldArray<int32, 7, 174, 175> Resistances; - UpdateFieldArray<int32, 7, 174, 182> BonusResistanceMods; - UpdateFieldArray<int32, 7, 174, 189> ManaCostModifier; + UpdateFieldArray<int32, 7, 126, 127> Power; + UpdateFieldArray<int32, 7, 126, 134> MaxPower; + UpdateFieldArray<float, 7, 126, 141> PowerRegenFlatModifier; + UpdateFieldArray<float, 7, 126, 148> PowerRegenInterruptedFlatModifier; + UpdateFieldArray<UF::VisibleItem, 3, 155, 156> VirtualItems; + UpdateFieldArray<uint32, 2, 159, 160> AttackRoundBaseTime; + UpdateFieldArray<int32, 4, 162, 163> Stats; + UpdateFieldArray<int32, 4, 162, 167> StatPosBuff; + UpdateFieldArray<int32, 4, 162, 171> StatNegBuff; + UpdateFieldArray<int32, 7, 175, 176> Resistances; + UpdateFieldArray<int32, 7, 175, 183> BonusResistanceMods; + UpdateFieldArray<int32, 7, 175, 190> ManaCostModifier; void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; @@ -751,136 +753,151 @@ struct CraftingOrder : public IsUpdateFieldStructureTag, public HasChangesMask<4 void ClearChangesMask(); }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1571> +struct PersonalCraftingOrderCount : public IsUpdateFieldStructureTag +{ + int32 ProfessionID; + uint32 Count; + + void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; + bool operator==(PersonalCraftingOrderCount const& right) const; + bool operator!=(PersonalCraftingOrderCount const& right) const { return !(*this == right); } +}; + +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1575> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BankAutoSortDisabled; UpdateField<bool, 0, 3> SortBagsRightToLeft; UpdateField<bool, 0, 4> InsertItemsLeftToRight; - UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 30, 31> Research; - DynamicUpdateField<uint64, 0, 5> KnownTitles; - DynamicUpdateField<uint16, 0, 7> ResearchSites; - DynamicUpdateField<uint32, 0, 8> ResearchSiteProgress; - DynamicUpdateField<int32, 0, 9> DailyQuestsCompleted; - DynamicUpdateField<int32, 0, 10> AvailableQuestLineXQuestIDs; - DynamicUpdateField<int32, 0, 11> Heirlooms; - DynamicUpdateField<uint32, 0, 12> HeirloomFlags; - DynamicUpdateField<int32, 0, 13> Toys; - DynamicUpdateField<uint32, 0, 14> ToyFlags; - DynamicUpdateField<uint32, 0, 15> Transmog; - DynamicUpdateField<int32, 0, 16> ConditionalTransmog; - DynamicUpdateField<int32, 0, 17> SelfResSpells; - DynamicUpdateField<uint32, 0, 18> RuneforgePowers; - DynamicUpdateField<uint32, 0, 19> TransmogIllusions; - DynamicUpdateField<UF::SpellPctModByLabel, 0, 21> SpellPctModByLabel; - DynamicUpdateField<UF::SpellFlatModByLabel, 0, 22> SpellFlatModByLabel; - DynamicUpdateField<UF::MawPower, 0, 23> MawPowers; - DynamicUpdateField<UF::MultiFloorExplore, 0, 24> MultiFloorExploration; - DynamicUpdateField<UF::RecipeProgressionInfo, 0, 25> RecipeProgression; - DynamicUpdateField<UF::ReplayedQuest, 0, 26> ReplayedQuests; - DynamicUpdateField<int32, 0, 27> DisabledSpells; - DynamicUpdateField<UF::PVPInfo, 0, 6> PvpInfo; - DynamicUpdateField<UF::CharacterRestriction, 0, 20> CharacterRestrictions; - DynamicUpdateField<UF::TraitConfig, 0, 28> TraitConfigs; - DynamicUpdateField<UF::CraftingOrder, 0, 29> CraftingOrders; - UpdateField<ObjectGuid, 0, 32> FarsightObject; - UpdateField<ObjectGuid, 0, 33> SummonedBattlePetGUID; - UpdateField<uint64, 34, 35> Coinage; - UpdateField<int32, 34, 36> XP; - UpdateField<int32, 34, 37> NextLevelXP; - UpdateField<int32, 34, 38> TrialXP; - UpdateField<UF::SkillInfo, 34, 39> Skill; - UpdateField<int32, 34, 40> CharacterPoints; - UpdateField<int32, 34, 41> MaxTalentTiers; - UpdateField<uint32, 34, 42> TrackCreatureMask; - UpdateField<float, 34, 43> MainhandExpertise; - UpdateField<float, 34, 44> OffhandExpertise; - UpdateField<float, 34, 45> RangedExpertise; - UpdateField<float, 34, 46> CombatRatingExpertise; - UpdateField<float, 34, 47> BlockPercentage; - UpdateField<float, 34, 48> DodgePercentage; - UpdateField<float, 34, 49> DodgePercentageFromAttribute; - UpdateField<float, 34, 50> ParryPercentage; - UpdateField<float, 34, 51> ParryPercentageFromAttribute; - UpdateField<float, 34, 52> CritPercentage; - UpdateField<float, 34, 53> RangedCritPercentage; - UpdateField<float, 34, 54> OffhandCritPercentage; - UpdateField<float, 34, 55> SpellCritPercentage; - UpdateField<int32, 34, 56> ShieldBlock; - UpdateField<float, 34, 57> ShieldBlockCritPercentage; - UpdateField<float, 34, 58> Mastery; - UpdateField<float, 34, 59> Speed; - UpdateField<float, 34, 60> Avoidance; - UpdateField<float, 34, 61> Sturdiness; - UpdateField<int32, 34, 62> Versatility; - UpdateField<float, 34, 63> VersatilityBonus; - UpdateField<float, 34, 64> PvpPowerDamage; - UpdateField<float, 34, 65> PvpPowerHealing; - UpdateField<int32, 66, 67> ModHealingDonePos; - UpdateField<float, 66, 68> ModHealingPercent; - UpdateField<float, 66, 69> ModPeriodicHealingDonePercent; - UpdateField<float, 66, 70> ModSpellPowerPercent; - UpdateField<float, 66, 71> ModResiliencePercent; - UpdateField<float, 66, 72> OverrideSpellPowerByAPPercent; - UpdateField<float, 66, 73> OverrideAPBySpellPowerPercent; - UpdateField<int32, 66, 74> ModTargetResistance; - UpdateField<int32, 66, 75> ModTargetPhysicalResistance; - UpdateField<uint32, 66, 76> LocalFlags; - UpdateField<uint8, 66, 77> GrantableLevels; - UpdateField<uint8, 66, 78> MultiActionBars; - UpdateField<uint8, 66, 79> LifetimeMaxRank; - UpdateField<uint8, 66, 80> NumRespecs; - UpdateField<uint32, 66, 81> PvpMedals; - UpdateField<uint16, 66, 82> TodayHonorableKills; - UpdateField<uint16, 66, 83> YesterdayHonorableKills; - UpdateField<uint32, 66, 84> LifetimeHonorableKills; - UpdateField<int32, 66, 85> WatchedFactionIndex; - UpdateField<int32, 66, 86> MaxLevel; - UpdateField<int32, 66, 87> ScalingPlayerLevelDelta; - UpdateField<int32, 66, 88> MaxCreatureScalingLevel; - UpdateField<int32, 66, 89> PetSpellPower; - UpdateField<float, 66, 90> UiHitModifier; - UpdateField<float, 66, 91> UiSpellHitModifier; - UpdateField<int32, 66, 92> HomeRealmTimeOffset; - UpdateField<float, 66, 93> ModPetHaste; - UpdateField<int8, 66, 94> JailersTowerLevelMax; - UpdateField<int8, 66, 95> JailersTowerLevel; - UpdateField<uint8, 66, 96> LocalRegenFlags; - UpdateField<uint8, 66, 97> AuraVision; - UpdateField<uint8, 98, 99> NumBackpackSlots; - UpdateField<int32, 98, 100> OverrideSpellsID; - UpdateField<uint16, 98, 101> LootSpecID; - UpdateField<uint32, 98, 102> OverrideZonePVPType; - UpdateField<ObjectGuid, 98, 103> BnetAccount; - UpdateField<uint64, 98, 104> GuildClubMemberID; - UpdateField<int32, 98, 105> Honor; - UpdateField<int32, 98, 106> HonorNextLevel; - UpdateField<uint8, 98, 107> NumBankSlots; - UpdateField<UF::ActivePlayerUnk901, 98, 109> Field_1410; - OptionalUpdateField<UF::QuestSession, 98, 108> QuestSession; - UpdateField<int32, 98, 110> UiChromieTimeExpansionID; - UpdateField<int32, 98, 111> TransportServerTime; - UpdateField<uint32, 98, 112> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin - UpdateField<int16, 98, 113> DEBUGSoulbindConduitRank; - UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 114> DungeonScore; - UpdateField<uint32, 98, 115> ActiveCombatTraitConfigID; - UpdateFieldArray<ObjectGuid, 218, 116, 117> InvSlots; - UpdateFieldArray<uint64, 240, 335, 336> ExploredZones; - UpdateFieldArray<UF::RestInfo, 2, 576, 577> RestInfo; - UpdateFieldArray<int32, 7, 579, 580> ModDamageDonePos; - UpdateFieldArray<int32, 7, 579, 587> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 579, 594> ModDamageDonePercent; - UpdateFieldArray<float, 7, 579, 601> ModHealingDonePercent; - UpdateFieldArray<float, 3, 608, 609> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 608, 612> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 615, 616> BuybackPrice; - UpdateFieldArray<int64, 12, 615, 628> BuybackTimestamp; - UpdateFieldArray<int32, 32, 640, 641> CombatRatings; - UpdateFieldArray<uint32, 4, 673, 674> NoReagentCostMask; - UpdateFieldArray<int32, 2, 678, 679> ProfessionSkillLine; - UpdateFieldArray<uint32, 5, 681, 682> BagSlotFlags; - UpdateFieldArray<uint32, 7, 687, 688> BankBagSlotFlags; - UpdateFieldArray<uint64, 875, 695, 696> QuestCompleted; + UpdateField<bool, 0, 5> HasPerksProgramPendingReward; + UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 32, 33> Research; + DynamicUpdateField<uint64, 0, 6> KnownTitles; + DynamicUpdateField<uint16, 0, 8> ResearchSites; + DynamicUpdateField<uint32, 0, 9> ResearchSiteProgress; + DynamicUpdateField<int32, 0, 10> DailyQuestsCompleted; + DynamicUpdateField<int32, 0, 11> AvailableQuestLineXQuestIDs; + DynamicUpdateField<int32, 0, 12> Heirlooms; + DynamicUpdateField<uint32, 0, 13> HeirloomFlags; + DynamicUpdateField<int32, 0, 14> Toys; + DynamicUpdateField<uint32, 0, 15> ToyFlags; + DynamicUpdateField<uint32, 0, 16> Transmog; + DynamicUpdateField<int32, 0, 17> ConditionalTransmog; + DynamicUpdateField<int32, 0, 18> SelfResSpells; + DynamicUpdateField<uint32, 0, 19> RuneforgePowers; + DynamicUpdateField<uint32, 0, 20> TransmogIllusions; + DynamicUpdateField<UF::SpellPctModByLabel, 0, 22> SpellPctModByLabel; + DynamicUpdateField<UF::SpellFlatModByLabel, 0, 23> SpellFlatModByLabel; + DynamicUpdateField<UF::MawPower, 0, 24> MawPowers; + DynamicUpdateField<UF::MultiFloorExplore, 0, 25> MultiFloorExploration; + DynamicUpdateField<UF::RecipeProgressionInfo, 0, 26> RecipeProgression; + DynamicUpdateField<UF::ReplayedQuest, 0, 27> ReplayedQuests; + DynamicUpdateField<int32, 0, 28> DisabledSpells; + DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 31> PersonalCraftingOrderCounts; + DynamicUpdateField<UF::PVPInfo, 0, 7> PvpInfo; + DynamicUpdateField<UF::CharacterRestriction, 0, 21> CharacterRestrictions; + DynamicUpdateField<UF::TraitConfig, 0, 29> TraitConfigs; + DynamicUpdateField<UF::CraftingOrder, 0, 30> CraftingOrders; + UpdateField<ObjectGuid, 34, 35> FarsightObject; + UpdateField<ObjectGuid, 34, 36> SummonedBattlePetGUID; + UpdateField<uint64, 34, 37> Coinage; + UpdateField<int32, 34, 38> XP; + UpdateField<int32, 34, 39> NextLevelXP; + UpdateField<int32, 34, 40> TrialXP; + UpdateField<UF::SkillInfo, 34, 41> Skill; + UpdateField<int32, 34, 42> CharacterPoints; + UpdateField<int32, 34, 43> MaxTalentTiers; + UpdateField<uint32, 34, 44> TrackCreatureMask; + UpdateField<float, 34, 45> MainhandExpertise; + UpdateField<float, 34, 46> OffhandExpertise; + UpdateField<float, 34, 47> RangedExpertise; + UpdateField<float, 34, 48> CombatRatingExpertise; + UpdateField<float, 34, 49> BlockPercentage; + UpdateField<float, 34, 50> DodgePercentage; + UpdateField<float, 34, 51> DodgePercentageFromAttribute; + UpdateField<float, 34, 52> ParryPercentage; + UpdateField<float, 34, 53> ParryPercentageFromAttribute; + UpdateField<float, 34, 54> CritPercentage; + UpdateField<float, 34, 55> RangedCritPercentage; + UpdateField<float, 34, 56> OffhandCritPercentage; + UpdateField<float, 34, 57> SpellCritPercentage; + UpdateField<int32, 34, 58> ShieldBlock; + UpdateField<float, 34, 59> ShieldBlockCritPercentage; + UpdateField<float, 34, 60> Mastery; + UpdateField<float, 34, 61> Speed; + UpdateField<float, 34, 62> Avoidance; + UpdateField<float, 34, 63> Sturdiness; + UpdateField<int32, 34, 64> Versatility; + UpdateField<float, 34, 65> VersatilityBonus; + UpdateField<float, 66, 67> PvpPowerDamage; + UpdateField<float, 66, 68> PvpPowerHealing; + UpdateField<int32, 66, 69> ModHealingDonePos; + UpdateField<float, 66, 70> ModHealingPercent; + UpdateField<float, 66, 71> ModPeriodicHealingDonePercent; + UpdateField<float, 66, 72> ModSpellPowerPercent; + UpdateField<float, 66, 73> ModResiliencePercent; + UpdateField<float, 66, 74> OverrideSpellPowerByAPPercent; + UpdateField<float, 66, 75> OverrideAPBySpellPowerPercent; + UpdateField<int32, 66, 76> ModTargetResistance; + UpdateField<int32, 66, 77> ModTargetPhysicalResistance; + UpdateField<uint32, 66, 78> LocalFlags; + UpdateField<uint8, 66, 79> GrantableLevels; + UpdateField<uint8, 66, 80> MultiActionBars; + UpdateField<uint8, 66, 81> LifetimeMaxRank; + UpdateField<uint8, 66, 82> NumRespecs; + UpdateField<uint32, 66, 83> PvpMedals; + UpdateField<uint16, 66, 84> TodayHonorableKills; + UpdateField<uint16, 66, 85> YesterdayHonorableKills; + UpdateField<uint32, 66, 86> LifetimeHonorableKills; + UpdateField<int32, 66, 87> WatchedFactionIndex; + UpdateField<int32, 66, 88> MaxLevel; + UpdateField<int32, 66, 89> ScalingPlayerLevelDelta; + UpdateField<int32, 66, 90> MaxCreatureScalingLevel; + UpdateField<int32, 66, 91> PetSpellPower; + UpdateField<float, 66, 92> UiHitModifier; + UpdateField<float, 66, 93> UiSpellHitModifier; + UpdateField<int32, 66, 94> HomeRealmTimeOffset; + UpdateField<float, 66, 95> ModPetHaste; + UpdateField<int8, 66, 96> JailersTowerLevelMax; + UpdateField<int8, 66, 97> JailersTowerLevel; + UpdateField<uint8, 98, 99> LocalRegenFlags; + UpdateField<uint8, 98, 100> AuraVision; + UpdateField<uint8, 98, 101> NumBackpackSlots; + UpdateField<int32, 98, 102> OverrideSpellsID; + UpdateField<uint16, 98, 103> LootSpecID; + UpdateField<uint32, 98, 104> OverrideZonePVPType; + UpdateField<ObjectGuid, 98, 105> BnetAccount; + UpdateField<uint64, 98, 106> GuildClubMemberID; + UpdateField<int32, 98, 107> Honor; + UpdateField<int32, 98, 108> HonorNextLevel; + UpdateField<int32, 98, 109> PerksProgramCurrency; + UpdateField<uint8, 98, 110> NumBankSlots; + UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 98, 111> FrozenPerksVendorItem; + UpdateField<UF::ActivePlayerUnk901, 98, 113> Field_1410; + OptionalUpdateField<UF::QuestSession, 98, 112> QuestSession; + UpdateField<int32, 98, 114> UiChromieTimeExpansionID; + UpdateField<int32, 98, 115> TransportServerTime; + UpdateField<uint32, 98, 116> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin + UpdateField<int16, 98, 117> DEBUGSoulbindConduitRank; + UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 118> DungeonScore; + UpdateField<uint32, 98, 119> ActiveCombatTraitConfigID; + UpdateFieldArray<ObjectGuid, 218, 120, 121> InvSlots; + UpdateFieldArray<uint64, 240, 339, 340> ExploredZones; + UpdateFieldArray<UF::RestInfo, 2, 580, 581> RestInfo; + UpdateFieldArray<int32, 7, 583, 584> ModDamageDonePos; + UpdateFieldArray<int32, 7, 583, 591> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 583, 598> ModDamageDonePercent; + UpdateFieldArray<float, 7, 583, 605> ModHealingDonePercent; + UpdateFieldArray<float, 3, 612, 613> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 612, 616> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 619, 620> BuybackPrice; + UpdateFieldArray<int64, 12, 619, 632> BuybackTimestamp; + UpdateFieldArray<int32, 32, 644, 645> CombatRatings; + UpdateFieldArray<uint32, 4, 677, 678> NoReagentCostMask; + UpdateFieldArray<int32, 2, 682, 683> ProfessionSkillLine; + UpdateFieldArray<uint32, 5, 685, 686> BagSlotFlags; + UpdateFieldArray<uint32, 7, 691, 692> BankBagSlotFlags; + UpdateFieldArray<uint64, 875, 699, 700> 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/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 3d51060c926..bf5e6a9a4fb 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2650,7 +2650,7 @@ void Player::SendUnlearnSpells() SendDirectMessage(sendUnlearnSpells.Write()); } -void Player::RemoveMail(uint32 id) +void Player::RemoveMail(uint64 id) { for (PlayerMails::iterator itr = m_mail.begin(); itr != m_mail.end(); ++itr) { @@ -2663,7 +2663,7 @@ void Player::RemoveMail(uint32 id) } } -void Player::SendMailResult(uint32 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError, ObjectGuid::LowType item_guid, uint32 item_count) const +void Player::SendMailResult(uint64 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError, ObjectGuid::LowType itemGuid, uint32 itemCount) const { WorldPackets::Mail::MailCommandResult result; @@ -2675,8 +2675,8 @@ void Player::SendMailResult(uint32 mailId, MailResponseType mailAction, MailResp result.BagResult = equipError; else if (mailAction == MAIL_ITEM_TAKEN) { - result.AttachID = item_guid; - result.QtyInInventory = item_count; + result.AttachID = itemGuid; + result.QtyInInventory = itemCount; } SendDirectMessage(result.Write()); } @@ -3578,7 +3578,7 @@ void Player::ResetPvpTalents() RemovePvpTalent(talentInfo, spec); } -Mail* Player::GetMail(uint32 id) +Mail* Player::GetMail(uint64 id) { for (PlayerMails::iterator itr = m_mail.begin(); itr != m_mail.end(); ++itr) if ((*itr)->messageID == id) @@ -3865,7 +3865,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe if (resultMail) { - std::unordered_map<uint32, std::vector<Item*>> itemsByMail; + std::unordered_map<uint64, std::vector<Item*>> itemsByMail; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAILITEMS); stmt->setUInt64(0, guid); @@ -3900,7 +3900,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe do { Field* fields = resultItems->Fetch(); - uint32 mailId = fields[44].GetUInt32(); + uint64 mailId = fields[44].GetUInt64(); if (Item* mailItem = _LoadMailedItem(playerguid, nullptr, mailId, nullptr, fields, Trinity::Containers::MapGetValuePtr(additionalData, fields[0].GetUInt64()))) itemsByMail[mailId].push_back(mailItem); @@ -3911,7 +3911,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe { Field* mailFields = resultMail->Fetch(); - uint32 mail_id = mailFields[0].GetUInt32(); + uint64 mail_id = mailFields[0].GetUInt64(); uint8 mailType = mailFields[1].GetUInt8(); uint16 mailTemplateId= mailFields[2].GetUInt16(); ObjectGuid::LowType sender = mailFields[3].GetUInt64(); @@ -3923,7 +3923,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe // We can return mail now // So firstly delete the old one stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, mail_id); + stmt->setUInt64(0, mail_id); trans->Append(stmt); // Mail is not from player @@ -3932,7 +3932,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe if (has_items) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, mail_id); + stmt->setUInt64(0, mail_id); trans->Append(stmt); } continue; @@ -3953,7 +3953,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, mail_id); + stmt->setUInt64(0, mail_id); trans->Append(stmt); uint32 pl_account = sCharacterCache->GetCharacterAccountIdByGuid(playerguid); @@ -16749,9 +16749,14 @@ void Player::SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount) const void Player::SendQuestGiverStatusMultiple() { + SendQuestGiverStatusMultiple(m_clientGUIDs); +} + +void Player::SendQuestGiverStatusMultiple(GuidUnorderedSet const& guids) +{ WorldPackets::Quest::QuestGiverStatusMultiple response; - for (auto itr = m_clientGUIDs.begin(); itr != m_clientGUIDs.end(); ++itr) + for (auto itr = guids.begin(); itr != guids.end(); ++itr) { if (itr->IsAnyTypeCreature()) { @@ -18528,7 +18533,7 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint3 } // load mailed item which should receive current player -Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint32 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData) +Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint64 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData) { ObjectGuid::LowType itemGuid = fields[0].GetUInt64(); uint32 itemEntry = fields[1].GetUInt32(); @@ -18600,7 +18605,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail { m_mail.clear(); - std::unordered_map<uint32, Mail*> mailById; + std::unordered_map<uint64, Mail*> mailById; if (mailsResult) { @@ -18609,7 +18614,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail Field* fields = mailsResult->Fetch(); Mail* m = new Mail(); - m->messageID = fields[0].GetUInt32(); + m->messageID = fields[0].GetUInt64(); m->messageType = fields[1].GetUInt8(); m->sender = fields[2].GetUInt64(); m->receiver = fields[3].GetUInt64(); @@ -18646,7 +18651,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail do { Field* fields = mailItemsResult->Fetch(); - uint32 mailId = fields[52].GetUInt32(); + uint64 mailId = fields[52].GetUInt64(); _LoadMailedItem(GetGUID(), this, mailId, mailById[mailId], fields, Trinity::Containers::MapGetValuePtr(additionalData, fields[0].GetUInt64())); } while (mailItemsResult->NextRow()); } @@ -20113,7 +20118,7 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans) stmt->setUInt64(3, m->money); stmt->setUInt64(4, m->COD); stmt->setUInt8(5, uint8(m->checked)); - stmt->setUInt32(6, m->messageID); + stmt->setUInt64(6, m->messageID); trans->Append(stmt); @@ -20141,11 +20146,11 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans) } } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->setUInt64(0, m->messageID); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->setUInt64(0, m->messageID); trans->Append(stmt); } } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index d8ca3a8568e..3c795bcee63 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1674,6 +1674,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SendQuestUpdateAddCreditSimple(QuestObjective const& obj) const; void SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount) const; void SendQuestGiverStatusMultiple(); + void SendQuestGiverStatusMultiple(GuidUnorderedSet const& guids); void SendDisplayToast(uint32 entry, DisplayToastType type, bool isBonusRoll, uint32 quantity, DisplayToastMethod method, uint32 questId = 0, Item* item = nullptr) const; uint32 GetSharedQuestID() const { return m_sharedQuestId; } @@ -1760,16 +1761,16 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SetTarget(ObjectGuid const& /*guid*/) override { } /// Used for serverside target changes, does not apply to players void SetSelection(ObjectGuid const& guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Target), guid); } - void SendMailResult(uint32 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError = 0, ObjectGuid::LowType item_guid = UI64LIT(0), uint32 item_count = 0) const; + void SendMailResult(uint64 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError = 0, ObjectGuid::LowType itemGuid = UI64LIT(0), uint32 itemCount = 0) const; void SendNewMail() const; void UpdateNextMailTimeAndUnreads(); void AddNewMailDeliverTime(time_t deliver_time); - void RemoveMail(uint32 id); + void RemoveMail(uint64 id); void AddMail(Mail* mail) { m_mail.push_front(mail);}// for call from WorldSession::SendMailTo uint32 GetMailSize() const { return uint32(m_mail.size()); } - Mail* GetMail(uint32 id); + Mail* GetMail(uint64 id); PlayerMails const& GetMails() const { return m_mail; } @@ -2915,7 +2916,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void _LoadVoidStorage(PreparedQueryResult result); void _LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mailItemsResult, PreparedQueryResult artifactResult, PreparedQueryResult azeriteItemResult, PreparedQueryResult azeriteItemMilestonePowersResult, PreparedQueryResult azeriteItemUnlockedEssencesResult, PreparedQueryResult azeriteEmpoweredItemResult); - static Item* _LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint32 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData); + static Item* _LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint64 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData); void _LoadQuestStatus(PreparedQueryResult result); void _LoadQuestStatusObjectives(PreparedQueryResult result); void _LoadQuestStatusRewarded(PreparedQueryResult result); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 1169ab991a3..ea71542acf3 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6526,7 +6526,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) return; // any mails need to be returned or deleted } - std::map<uint32 /*messageId*/, MailItemInfoVec> itemsCache; + std::map<uint64 /*messageId*/, MailItemInfoVec> itemsCache; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_EXPIRED_MAIL_ITEMS); stmt->setUInt32(0, curTime); if (PreparedQueryResult items = CharacterDatabase.Query(stmt)) @@ -6537,7 +6537,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) Field* fields = items->Fetch(); item.item_guid = fields[0].GetUInt64(); item.item_template = fields[1].GetUInt32(); - uint32 mailId = fields[2].GetUInt32(); + uint64 mailId = fields[2].GetUInt64(); itemsCache[mailId].push_back(item); } while (items->NextRow()); } @@ -6552,7 +6552,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) continue; Mail* m = new Mail; - m->messageID = fields[0].GetUInt32(); + m->messageID = fields[0].GetUInt64(); m->messageType = fields[1].GetUInt8(); m->sender = fields[2].GetUInt64(); m->receiver = receiver; @@ -6582,7 +6582,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->setUInt64(0, m->messageID); CharacterDatabase.Execute(stmt); } else @@ -6594,7 +6594,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) stmt->setInt64 (2, curTime + 30 * DAY); stmt->setInt64 (3, curTime); stmt->setUInt8 (4, uint8(MAIL_CHECK_MASK_RETURNED)); - stmt->setUInt32(5, m->messageID); + stmt->setUInt64(5, m->messageID); CharacterDatabase.Execute(stmt); for (MailItemInfoVec::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2) { @@ -6616,7 +6616,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->setUInt64(0, m->messageID); CharacterDatabase.Execute(stmt); delete m; ++deletedCount; @@ -7512,7 +7512,7 @@ void ObjectMgr::SetHighestGuids() result = CharacterDatabase.Query("SELECT MAX(id) FROM mail"); if (result) - _mailId = (*result)[0].GetUInt32()+1; + _mailId = (*result)[0].GetUInt64()+1; result = CharacterDatabase.Query("SELECT MAX(arenateamid) FROM arena_team"); if (result) @@ -7572,7 +7572,7 @@ uint64 ObjectMgr::GenerateEquipmentSetGuid() return _equipmentSetGuid++; } -uint32 ObjectMgr::GenerateMailID() +uint64 ObjectMgr::GenerateMailID() { if (_mailId >= 0xFFFFFFFE) { diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index c7e205bba3a..7c791592350 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1457,7 +1457,7 @@ class TC_GAME_API ObjectMgr uint32 GenerateAuctionID(); uint64 GenerateEquipmentSetGuid(); - uint32 GenerateMailID(); + uint64 GenerateMailID(); uint32 GeneratePetNumber(); uint64 GenerateVoidStorageItemId(); ObjectGuid::LowType GenerateCreatureSpawnId(); @@ -1794,7 +1794,7 @@ class TC_GAME_API ObjectMgr // first free id for selected id type uint32 _auctionId; uint64 _equipmentSetGuid; - std::atomic<uint32> _mailId; + std::atomic<uint64> _mailId; std::atomic<uint32> _hiPetNumber; ObjectGuid::LowType _creatureSpawnId; ObjectGuid::LowType _gameObjectSpawnId; diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index df8d7dd4aa8..6fb901e19b1 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1467,8 +1467,6 @@ void WorldSession::SendFeatureSystemStatus() /// START OF DUMMY VALUES features.ComplaintStatus = COMPLAINT_ENABLED_WITH_AUTO_IGNORE; - features.ScrollOfResurrectionRequestsRemaining = 1; - features.ScrollOfResurrectionMaxRequestsPerDay = 1; features.TwitterPostThrottleLimit = 60; features.TwitterPostThrottleCooldown = 20; features.CfgRealmID = 2; diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 7fda82b28f3..e7773549434 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -158,7 +158,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& sendMail) // test the receiver's Faction... or all items are account bound bool accountBound = !mailInfo.Attachments.empty(); - for (auto const& att : mailInfo.Attachments) + for (WorldPackets::Mail::SendMail::StructSendMail::MailAttachment const& att : mailInfo.Attachments) { if (Item* item = player->GetItemByGuid(att.ItemGUID)) { @@ -185,7 +185,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& sendMail) std::vector<Item*> items; - for (auto const& att : mailInfo.Attachments) + for (WorldPackets::Mail::SendMail::StructSendMail::MailAttachment const& att : mailInfo.Attachments) { if (att.ItemGUID.IsEmpty()) { @@ -384,11 +384,11 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, returnToSender.MailID); + stmt->setUInt64(0, returnToSender.MailID); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, returnToSender.MailID); + stmt->setUInt64(0, returnToSender.MailID); trans->Append(stmt); player->RemoveMail(returnToSender.MailID); @@ -421,7 +421,7 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend //called when player takes item attached in mail void WorldSession::HandleMailTakeItem(WorldPackets::Mail::MailTakeItem& takeItem) { - uint32 AttachID = takeItem.AttachID; + uint64 AttachID = takeItem.AttachID; if (!CanOpenMailBox(takeItem.Mailbox)) return; diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 31f7f26d089..94cbf2a48de 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -797,6 +797,11 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::Ques _player->SendQuestGiverStatusMultiple(); } +void WorldSession::HandleQuestgiverStatusTrackedQueryOpcode(WorldPackets::Quest::QuestGiverStatusTrackedQuery& questGiverStatusTrackedQuery) +{ + _player->SendQuestGiverStatusMultiple(questGiverStatusTrackedQuery.QuestGiverGUIDs); +} + void WorldSession::HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& /*packet*/) { WorldPackets::Quest::WorldQuestUpdateResponse response; diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp index bb9c718d169..d098d7cbd57 100644 --- a/src/server/game/Mails/Mail.cpp +++ b/src/server/game/Mails/Mail.cpp @@ -197,7 +197,7 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons if (pReceiver) prepareItems(pReceiver, trans); // generate mail template items - uint32 mailId = sObjectMgr->GenerateMailID(); + uint64 mailId = sObjectMgr->GenerateMailID(); time_t deliver_time = GameTime::GetGameTime() + deliver_delay; @@ -221,7 +221,7 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons // Add to DB uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL); - stmt->setUInt32( index, mailId); + stmt->setUInt64( index, mailId); stmt->setUInt8 (++index, uint8(sender.GetMailMessageType())); stmt->setInt8 (++index, int8(sender.GetStationery())); stmt->setUInt16(++index, GetMailTemplateId()); @@ -241,7 +241,7 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons { Item* pItem = mailItemIter->second; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL_ITEM); - stmt->setUInt32(0, mailId); + stmt->setUInt64(0, mailId); stmt->setUInt64(1, pItem->GetGUID().GetCounter()); stmt->setUInt64(2, receiver.GetPlayerGUIDLow()); trans->Append(stmt); diff --git a/src/server/game/Mails/Mail.h b/src/server/game/Mails/Mail.h index d6f512674d5..56b90a3e4e1 100644 --- a/src/server/game/Mails/Mail.h +++ b/src/server/game/Mails/Mail.h @@ -171,7 +171,7 @@ typedef std::vector<MailItemInfo> MailItemInfoVec; struct TC_GAME_API Mail { - uint32 messageID; + uint64 messageID; uint8 messageType; uint8 stationery; uint16 mailTemplateId; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 99285a33fbb..7146bab0105 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -2833,10 +2833,12 @@ enum GameobjectTypes : uint8 GAMEOBJECT_TYPE_LEGENDARY_FORGE = 57, GAMEOBJECT_TYPE_GARR_TALENT_TREE = 58, GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST = 59, - GAMEOBJECT_TYPE_CLIENT_MODEL = 60 + GAMEOBJECT_TYPE_CLIENT_MODEL = 60, + GAMEOBJECT_TYPE_CRAFTING_TABLE = 61, + GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST = 62, }; -#define MAX_GAMEOBJECT_TYPE 61 // sending to client this or greater value can crash client. +#define MAX_GAMEOBJECT_TYPE 63 // sending to client this or greater value can crash client. #define MAX_GAMEOBJECT_DATA 35 // Max number of uint32 vars in gameobject_template data field enum GameObjectFlags @@ -7528,289 +7530,290 @@ enum class GameError : uint32 ERR_DIFFICULTY_CHANGE_ENCOUNTER = 828, ERR_DIFFICULTY_CHANGE_COMBAT = 829, ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 830, - ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 831, - ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 832, - ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 833, - ERR_ARENA_TEAM_PARTY_SIZE = 834, - ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 835, - ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 836, - ERR_SOLO_SHUFFLE_MIN_ITEM_LEVEL = 837, - ERR_PVP_PLAYER_ABANDONED = 838, - ERR_QUEST_FORCE_REMOVED_S = 839, - ERR_ATTACK_NO_ACTIONS = 840, - ERR_IN_RANDOM_BG = 841, - ERR_IN_NON_RANDOM_BG = 842, - ERR_BN_FRIEND_SELF = 843, - ERR_BN_FRIEND_ALREADY = 844, - ERR_BN_FRIEND_BLOCKED = 845, - ERR_BN_FRIEND_LIST_FULL = 846, - ERR_BN_FRIEND_REQUEST_SENT = 847, - ERR_BN_BROADCAST_THROTTLE = 848, - ERR_BG_DEVELOPER_ONLY = 849, - ERR_CURRENCY_SPELL_SLOT_MISMATCH = 850, - ERR_CURRENCY_NOT_TRADABLE = 851, - ERR_REQUIRES_EXPANSION_S = 852, - ERR_QUEST_FAILED_SPELL = 853, - ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 854, - ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 855, - ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 856, - ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 857, - ERR_TALENT_FAILED_UNKNOWN = 858, - ERR_TALENT_FAILED_IN_COMBAT = 859, - ERR_TALENT_FAILED_IN_PVP_MATCH = 860, - ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 861, - ERR_WARGAME_REQUEST_FAILURE = 862, - ERR_RANK_REQUIRES_AUTHENTICATOR = 863, - ERR_GUILD_BANK_VOUCHER_FAILED = 864, - ERR_WARGAME_REQUEST_SENT = 865, - ERR_REQUIRES_ACHIEVEMENT_I = 866, - ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 867, - ERR_CANT_BUY_QUANTITY = 868, - ERR_ITEM_IS_BATTLE_PAY_LOCKED = 869, - ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 870, - ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 871, - ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 872, - ERR_INSUFF_TRACKED_CURRENCY_IS = 873, - ERR_NOT_ON_TOURNAMENT_REALM = 874, - ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 875, - ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 876, - ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 877, - ERR_CANT_DO_THAT_IN_A_GROUP = 878, - ERR_GUILD_LEADER_REPLACED = 879, - ERR_TRANSMOGRIFY_CANT_EQUIP = 880, - ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 881, - ERR_TRANSMOGRIFY_NOT_SOULBOUND = 882, - ERR_TRANSMOGRIFY_INVALID_SOURCE = 883, - ERR_TRANSMOGRIFY_INVALID_DESTINATION = 884, - ERR_TRANSMOGRIFY_MISMATCH = 885, - ERR_TRANSMOGRIFY_LEGENDARY = 886, - ERR_TRANSMOGRIFY_SAME_ITEM = 887, - ERR_TRANSMOGRIFY_SAME_APPEARANCE = 888, - ERR_TRANSMOGRIFY_NOT_EQUIPPED = 889, - ERR_VOID_DEPOSIT_FULL = 890, - ERR_VOID_WITHDRAW_FULL = 891, - ERR_VOID_STORAGE_WRAPPED = 892, - ERR_VOID_STORAGE_STACKABLE = 893, - ERR_VOID_STORAGE_UNBOUND = 894, - ERR_VOID_STORAGE_REPAIR = 895, - ERR_VOID_STORAGE_CHARGES = 896, - ERR_VOID_STORAGE_QUEST = 897, - ERR_VOID_STORAGE_CONJURED = 898, - ERR_VOID_STORAGE_MAIL = 899, - ERR_VOID_STORAGE_BAG = 900, - ERR_VOID_TRANSFER_STORAGE_FULL = 901, - ERR_VOID_TRANSFER_INV_FULL = 902, - ERR_VOID_TRANSFER_INTERNAL_ERROR = 903, - ERR_VOID_TRANSFER_ITEM_INVALID = 904, - ERR_DIFFICULTY_DISABLED_IN_LFG = 905, - ERR_VOID_STORAGE_UNIQUE = 906, - ERR_VOID_STORAGE_LOOT = 907, - ERR_VOID_STORAGE_HOLIDAY = 908, - ERR_VOID_STORAGE_DURATION = 909, - ERR_VOID_STORAGE_LOAD_FAILED = 910, - ERR_VOID_STORAGE_INVALID_ITEM = 911, - ERR_PARENTAL_CONTROLS_CHAT_MUTED = 912, - ERR_SOR_START_EXPERIENCE_INCOMPLETE = 913, - ERR_SOR_INVALID_EMAIL = 914, - ERR_SOR_INVALID_COMMENT = 915, - ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 916, - ERR_CHALLENGE_MODE_RESET_KEYSTONE = 917, - ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 918, - ERR_REPORT_SUBMITTED_SUCCESSFULLY = 919, - ERR_REPORT_SUBMISSION_FAILED = 920, - ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 921, - ERR_BUG_SUBMITTED_SUCCESSFULLY = 922, - ERR_CHALLENGE_MODE_ENABLED = 923, - ERR_CHALLENGE_MODE_DISABLED = 924, - ERR_PETBATTLE_CREATE_FAILED = 925, - ERR_PETBATTLE_NOT_HERE = 926, - ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 927, - ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 928, - ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 929, - ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 930, - ERR_PETBATTLE_NOT_WHILE_DEAD = 931, - ERR_PETBATTLE_NOT_WHILE_FLYING = 932, - ERR_PETBATTLE_TARGET_INVALID = 933, - ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 934, - ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 935, - ERR_PETBATTLE_NOT_A_TRAINER = 936, - ERR_PETBATTLE_DECLINED = 937, - ERR_PETBATTLE_IN_BATTLE = 938, - ERR_PETBATTLE_INVALID_LOADOUT = 939, - ERR_PETBATTLE_ALL_PETS_DEAD = 940, - ERR_PETBATTLE_NO_PETS_IN_SLOTS = 941, - ERR_PETBATTLE_NO_ACCOUNT_LOCK = 942, - ERR_PETBATTLE_WILD_PET_TAPPED = 943, - ERR_PETBATTLE_RESTRICTED_ACCOUNT = 944, - ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 945, - ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 946, - ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 947, - ERR_CANT_HAVE_MORE_PETS = 948, - ERR_PVP_MAP_NOT_FOUND = 949, - ERR_PVP_MAP_NOT_SET = 950, - ERR_PETBATTLE_QUEUE_QUEUED = 951, - ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 952, - ERR_PETBATTLE_QUEUE_JOIN_FAILED = 953, - ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 954, - ERR_PETBATTLE_QUEUE_REMOVED = 955, - ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 956, - ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 957, - ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 958, - ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 959, - ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 960, - ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 961, - ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 962, - ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 963, - ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 964, - ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 965, - ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 966, - ERR_PETBATTLE_QUEUE_SLOT_DEAD = 967, - ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 968, - ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 969, - ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 970, - ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 971, - ERR_HAS_RESTRICTION = 972, - ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 973, - ERR_ITEM_UPGRADE_NO_PATH = 974, - ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 975, - ERR_BONUS_ROLL_EMPTY = 976, - ERR_CHALLENGE_MODE_FULL = 977, - ERR_CHALLENGE_MODE_IN_PROGRESS = 978, - ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 979, - ERR_BATTLETAG_FRIEND_NOT_FOUND = 980, - ERR_BATTLETAG_FRIEND_NOT_VALID = 981, - ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 982, - ERR_BATTLETAG_FRIEND_THROTTLED = 983, - ERR_BATTLETAG_FRIEND_SUCCESS = 984, - ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 985, - ERR_PETBATTLE_INTERNAL = 986, - ERR_CANT_CAGE_PET_YET = 987, - ERR_NO_LOOT_IN_CHALLENGE_MODE = 988, - ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 989, - ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 990, - ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 991, - ERR_RECRUIT_A_FRIEND_FAILED = 992, - ERR_SET_LOOT_PERSONAL = 993, - ERR_SET_LOOT_METHOD_FAILED_COMBAT = 994, - ERR_REAGENT_BANK_FULL = 995, - ERR_REAGENT_BANK_LOCKED = 996, - ERR_GARRISON_BUILDING_EXISTS = 997, - ERR_GARRISON_INVALID_PLOT = 998, - ERR_GARRISON_INVALID_BUILDINGID = 999, - ERR_GARRISON_INVALID_PLOT_BUILDING = 1000, - ERR_GARRISON_REQUIRES_BLUEPRINT = 1001, - ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1002, - ERR_GARRISON_NOT_ENOUGH_GOLD = 1003, - ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1004, - ERR_ALREADY_USING_LFG_LIST = 1005, - ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1006, - ERR_TOY_USE_LIMIT_REACHED = 1007, - ERR_TOY_ALREADY_KNOWN = 1008, - ERR_TRANSMOG_SET_ALREADY_KNOWN = 1009, - ERR_NOT_ENOUGH_CURRENCY = 1010, - ERR_SPEC_IS_DISABLED = 1011, - ERR_FEATURE_RESTRICTED_TRIAL = 1012, - ERR_CANT_BE_OBLITERATED = 1013, - ERR_CANT_BE_SCRAPPED = 1014, - ERR_CANT_BE_RECRAFTED = 1015, - ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1016, - ERR_MUST_EQUIP_ARTIFACT = 1017, - ERR_CANT_DO_THAT_RIGHT_NOW = 1018, - ERR_AFFECTING_COMBAT = 1019, - ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1020, - ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1021, - ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1022, - ERR_MOVIE_RECORDING_WARNING_PERF = 1023, - ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1024, - ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1025, - ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1026, - ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1027, - ERR_NO_CHALLENGE_MODE_REWARD = 1028, - ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1029, - ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1030, - ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1031, - ERR_TALENT_FAILED_REST_AREA = 1032, - ERR_CANNOT_ABANDON_LAST_PET = 1033, - ERR_TEST_CVAR_SET_SSS = 1034, - ERR_QUEST_TURN_IN_FAIL_REASON = 1035, - ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1036, - ERR_TALENT_GRANTED_BY_AURA = 1037, - ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1038, - ERR_GLYPH_TARGET_NOT_AVAILABLE = 1039, - ERR_PVP_WARMODE_TOGGLE_ON = 1040, - ERR_PVP_WARMODE_TOGGLE_OFF = 1041, - ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1042, - ERR_SPELL_FAILED_CANT_FLY_HERE = 1043, - ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1044, - ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1045, - ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1046, - ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1047, - ERR_VOICE_CHAT_SERVICE_LOST = 1048, - ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1049, - ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1050, - ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1051, - ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1052, - ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1053, - ERR_VOICE_CHAT_PLAYER_SILENCED = 1054, - ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1055, - ERR_VOICE_CHAT_DISABLED = 1056, - ERR_NO_PVP_REWARD = 1057, - ERR_CLAIMED_PVP_REWARD = 1058, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1059, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1060, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1061, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1062, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1063, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1064, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1065, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1066, - ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1067, - ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1068, - ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1069, - ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1070, - ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1071, - ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1072, - ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1073, - ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1074, - ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1075, - ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1076, - ERR_SOCKETING_REQUIRES_TINKER_GEM = 1077, - ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1078, - ERR_LEVEL_LINKING_RESULT_LINKED = 1079, - ERR_LEVEL_LINKING_RESULT_UNLINKED = 1080, - ERR_CLUB_FINDER_ERROR_POST_CLUB = 1081, - ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1082, - ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1083, - ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1084, - ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1085, - ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1086, - ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1087, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1088, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1089, - ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1090, - ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1091, - ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1092, - ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1093, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1094, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1095, - ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1096, - ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1097, - ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1098, - ERR_SOULBIND_INVALID_CONDUIT = 1099, - ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1100, - ERR_SOULBIND_INVALID_TALENT = 1101, - ERR_SOULBIND_DUPLICATE_CONDUIT = 1102, - ERR_ACTIVATE_SOULBIND_S = 1103, - ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1104, - ERR_CANT_USE_PROFANITY = 1105, - ERR_NOT_IN_PET_BATTLE = 1106, - ERR_NOT_IN_NPE = 1107, - ERR_NO_SPEC = 1108, - ERR_NO_DOMINATIONSHARD_OVERWRITE = 1109, - ERR_USE_WEEKLY_REWARDS_DISABLED = 1110, - ERR_CROSS_FACTION_GROUP_JOINED = 1111, - ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1112, - ERR_EQUIPABLESPELLS_SLOTS_FULL = 1113, + ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 831, + ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 832, + ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 833, + ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 834, + ERR_ARENA_TEAM_PARTY_SIZE = 835, + ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 836, + ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 837, + ERR_SOLO_SHUFFLE_MIN_ITEM_LEVEL = 838, + ERR_PVP_PLAYER_ABANDONED = 839, + ERR_QUEST_FORCE_REMOVED_S = 840, + ERR_ATTACK_NO_ACTIONS = 841, + ERR_IN_RANDOM_BG = 842, + ERR_IN_NON_RANDOM_BG = 843, + ERR_BN_FRIEND_SELF = 844, + ERR_BN_FRIEND_ALREADY = 845, + ERR_BN_FRIEND_BLOCKED = 846, + ERR_BN_FRIEND_LIST_FULL = 847, + ERR_BN_FRIEND_REQUEST_SENT = 848, + ERR_BN_BROADCAST_THROTTLE = 849, + ERR_BG_DEVELOPER_ONLY = 850, + ERR_CURRENCY_SPELL_SLOT_MISMATCH = 851, + ERR_CURRENCY_NOT_TRADABLE = 852, + ERR_REQUIRES_EXPANSION_S = 853, + ERR_QUEST_FAILED_SPELL = 854, + ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 855, + ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 856, + ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 857, + ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 858, + ERR_TALENT_FAILED_UNKNOWN = 859, + ERR_TALENT_FAILED_IN_COMBAT = 860, + ERR_TALENT_FAILED_IN_PVP_MATCH = 861, + ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 862, + ERR_WARGAME_REQUEST_FAILURE = 863, + ERR_RANK_REQUIRES_AUTHENTICATOR = 864, + ERR_GUILD_BANK_VOUCHER_FAILED = 865, + ERR_WARGAME_REQUEST_SENT = 866, + ERR_REQUIRES_ACHIEVEMENT_I = 867, + ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 868, + ERR_CANT_BUY_QUANTITY = 869, + ERR_ITEM_IS_BATTLE_PAY_LOCKED = 870, + ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 871, + ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 872, + ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 873, + ERR_INSUFF_TRACKED_CURRENCY_IS = 874, + ERR_NOT_ON_TOURNAMENT_REALM = 875, + ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 876, + ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 877, + ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 878, + ERR_CANT_DO_THAT_IN_A_GROUP = 879, + ERR_GUILD_LEADER_REPLACED = 880, + ERR_TRANSMOGRIFY_CANT_EQUIP = 881, + ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 882, + ERR_TRANSMOGRIFY_NOT_SOULBOUND = 883, + ERR_TRANSMOGRIFY_INVALID_SOURCE = 884, + ERR_TRANSMOGRIFY_INVALID_DESTINATION = 885, + ERR_TRANSMOGRIFY_MISMATCH = 886, + ERR_TRANSMOGRIFY_LEGENDARY = 887, + ERR_TRANSMOGRIFY_SAME_ITEM = 888, + ERR_TRANSMOGRIFY_SAME_APPEARANCE = 889, + ERR_TRANSMOGRIFY_NOT_EQUIPPED = 890, + ERR_VOID_DEPOSIT_FULL = 891, + ERR_VOID_WITHDRAW_FULL = 892, + ERR_VOID_STORAGE_WRAPPED = 893, + ERR_VOID_STORAGE_STACKABLE = 894, + ERR_VOID_STORAGE_UNBOUND = 895, + ERR_VOID_STORAGE_REPAIR = 896, + ERR_VOID_STORAGE_CHARGES = 897, + ERR_VOID_STORAGE_QUEST = 898, + ERR_VOID_STORAGE_CONJURED = 899, + ERR_VOID_STORAGE_MAIL = 900, + ERR_VOID_STORAGE_BAG = 901, + ERR_VOID_TRANSFER_STORAGE_FULL = 902, + ERR_VOID_TRANSFER_INV_FULL = 903, + ERR_VOID_TRANSFER_INTERNAL_ERROR = 904, + ERR_VOID_TRANSFER_ITEM_INVALID = 905, + ERR_DIFFICULTY_DISABLED_IN_LFG = 906, + ERR_VOID_STORAGE_UNIQUE = 907, + ERR_VOID_STORAGE_LOOT = 908, + ERR_VOID_STORAGE_HOLIDAY = 909, + ERR_VOID_STORAGE_DURATION = 910, + ERR_VOID_STORAGE_LOAD_FAILED = 911, + ERR_VOID_STORAGE_INVALID_ITEM = 912, + ERR_PARENTAL_CONTROLS_CHAT_MUTED = 913, + ERR_SOR_START_EXPERIENCE_INCOMPLETE = 914, + ERR_SOR_INVALID_EMAIL = 915, + ERR_SOR_INVALID_COMMENT = 916, + ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 917, + ERR_CHALLENGE_MODE_RESET_KEYSTONE = 918, + ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 919, + ERR_REPORT_SUBMITTED_SUCCESSFULLY = 920, + ERR_REPORT_SUBMISSION_FAILED = 921, + ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 922, + ERR_BUG_SUBMITTED_SUCCESSFULLY = 923, + ERR_CHALLENGE_MODE_ENABLED = 924, + ERR_CHALLENGE_MODE_DISABLED = 925, + ERR_PETBATTLE_CREATE_FAILED = 926, + ERR_PETBATTLE_NOT_HERE = 927, + ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 928, + ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 929, + ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 930, + ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 931, + ERR_PETBATTLE_NOT_WHILE_DEAD = 932, + ERR_PETBATTLE_NOT_WHILE_FLYING = 933, + ERR_PETBATTLE_TARGET_INVALID = 934, + ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 935, + ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 936, + ERR_PETBATTLE_NOT_A_TRAINER = 937, + ERR_PETBATTLE_DECLINED = 938, + ERR_PETBATTLE_IN_BATTLE = 939, + ERR_PETBATTLE_INVALID_LOADOUT = 940, + ERR_PETBATTLE_ALL_PETS_DEAD = 941, + ERR_PETBATTLE_NO_PETS_IN_SLOTS = 942, + ERR_PETBATTLE_NO_ACCOUNT_LOCK = 943, + ERR_PETBATTLE_WILD_PET_TAPPED = 944, + ERR_PETBATTLE_RESTRICTED_ACCOUNT = 945, + ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 946, + ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 947, + ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 948, + ERR_CANT_HAVE_MORE_PETS = 949, + ERR_PVP_MAP_NOT_FOUND = 950, + ERR_PVP_MAP_NOT_SET = 951, + ERR_PETBATTLE_QUEUE_QUEUED = 952, + ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 953, + ERR_PETBATTLE_QUEUE_JOIN_FAILED = 954, + ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 955, + ERR_PETBATTLE_QUEUE_REMOVED = 956, + ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 957, + ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 958, + ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 959, + ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 960, + ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 961, + ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 962, + ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 963, + ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 964, + ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 965, + ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 966, + ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 967, + ERR_PETBATTLE_QUEUE_SLOT_DEAD = 968, + ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 969, + ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 970, + ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 971, + ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 972, + ERR_HAS_RESTRICTION = 973, + ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 974, + ERR_ITEM_UPGRADE_NO_PATH = 975, + ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 976, + ERR_BONUS_ROLL_EMPTY = 977, + ERR_CHALLENGE_MODE_FULL = 978, + ERR_CHALLENGE_MODE_IN_PROGRESS = 979, + ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 980, + ERR_BATTLETAG_FRIEND_NOT_FOUND = 981, + ERR_BATTLETAG_FRIEND_NOT_VALID = 982, + ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 983, + ERR_BATTLETAG_FRIEND_THROTTLED = 984, + ERR_BATTLETAG_FRIEND_SUCCESS = 985, + ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 986, + ERR_PETBATTLE_INTERNAL = 987, + ERR_CANT_CAGE_PET_YET = 988, + ERR_NO_LOOT_IN_CHALLENGE_MODE = 989, + ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 990, + ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 991, + ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 992, + ERR_RECRUIT_A_FRIEND_FAILED = 993, + ERR_SET_LOOT_PERSONAL = 994, + ERR_SET_LOOT_METHOD_FAILED_COMBAT = 995, + ERR_REAGENT_BANK_FULL = 996, + ERR_REAGENT_BANK_LOCKED = 997, + ERR_GARRISON_BUILDING_EXISTS = 998, + ERR_GARRISON_INVALID_PLOT = 999, + ERR_GARRISON_INVALID_BUILDINGID = 1000, + ERR_GARRISON_INVALID_PLOT_BUILDING = 1001, + ERR_GARRISON_REQUIRES_BLUEPRINT = 1002, + ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1003, + ERR_GARRISON_NOT_ENOUGH_GOLD = 1004, + ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1005, + ERR_ALREADY_USING_LFG_LIST = 1006, + ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1007, + ERR_TOY_USE_LIMIT_REACHED = 1008, + ERR_TOY_ALREADY_KNOWN = 1009, + ERR_TRANSMOG_SET_ALREADY_KNOWN = 1010, + ERR_NOT_ENOUGH_CURRENCY = 1011, + ERR_SPEC_IS_DISABLED = 1012, + ERR_FEATURE_RESTRICTED_TRIAL = 1013, + ERR_CANT_BE_OBLITERATED = 1014, + ERR_CANT_BE_SCRAPPED = 1015, + ERR_CANT_BE_RECRAFTED = 1016, + ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1017, + ERR_MUST_EQUIP_ARTIFACT = 1018, + ERR_CANT_DO_THAT_RIGHT_NOW = 1019, + ERR_AFFECTING_COMBAT = 1020, + ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1021, + ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1022, + ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1023, + ERR_MOVIE_RECORDING_WARNING_PERF = 1024, + ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1025, + ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1026, + ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1027, + ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1028, + ERR_NO_CHALLENGE_MODE_REWARD = 1029, + ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1030, + ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1031, + ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1032, + ERR_TALENT_FAILED_REST_AREA = 1033, + ERR_CANNOT_ABANDON_LAST_PET = 1034, + ERR_TEST_CVAR_SET_SSS = 1035, + ERR_QUEST_TURN_IN_FAIL_REASON = 1036, + ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1037, + ERR_TALENT_GRANTED_BY_AURA = 1038, + ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1039, + ERR_GLYPH_TARGET_NOT_AVAILABLE = 1040, + ERR_PVP_WARMODE_TOGGLE_ON = 1041, + ERR_PVP_WARMODE_TOGGLE_OFF = 1042, + ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1043, + ERR_SPELL_FAILED_CANT_FLY_HERE = 1044, + ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1045, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1046, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1047, + ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1048, + ERR_VOICE_CHAT_SERVICE_LOST = 1049, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1050, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1051, + ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1052, + ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1053, + ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1054, + ERR_VOICE_CHAT_PLAYER_SILENCED = 1055, + ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1056, + ERR_VOICE_CHAT_DISABLED = 1057, + ERR_NO_PVP_REWARD = 1058, + ERR_CLAIMED_PVP_REWARD = 1059, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1060, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1061, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1062, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1063, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1064, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1065, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1066, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1067, + ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1068, + ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1069, + ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1070, + ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1071, + ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1072, + ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1073, + ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1074, + ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1075, + ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1076, + ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1077, + ERR_SOCKETING_REQUIRES_TINKER_GEM = 1078, + ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1079, + ERR_LEVEL_LINKING_RESULT_LINKED = 1080, + ERR_LEVEL_LINKING_RESULT_UNLINKED = 1081, + ERR_CLUB_FINDER_ERROR_POST_CLUB = 1082, + ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1083, + ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1084, + ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1085, + ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1086, + ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1087, + ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1088, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1089, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1090, + ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1091, + ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1092, + ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1093, + ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1094, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1095, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1096, + ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1097, + ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1098, + ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1099, + ERR_SOULBIND_INVALID_CONDUIT = 1100, + ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1101, + ERR_SOULBIND_INVALID_TALENT = 1102, + ERR_SOULBIND_DUPLICATE_CONDUIT = 1103, + ERR_ACTIVATE_SOULBIND_S = 1104, + ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1105, + ERR_CANT_USE_PROFANITY = 1106, + ERR_NOT_IN_PET_BATTLE = 1107, + ERR_NOT_IN_NPE = 1108, + ERR_NO_SPEC = 1109, + ERR_NO_DOMINATIONSHARD_OVERWRITE = 1110, + ERR_USE_WEEKLY_REWARDS_DISABLED = 1111, + ERR_CROSS_FACTION_GROUP_JOINED = 1112, + ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1113, + ERR_EQUIPABLESPELLS_SLOTS_FULL = 1114, }; enum class MountResult : uint32 diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 2fa88ef4901..921dd72cde0 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -348,6 +348,14 @@ WorldPacket const* WorldPackets::Battleground::RatedPvpInfo::Write() return &_worldPacket; } +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::RatedMatchDeserterPenalty const& ratedMatchDeserterPenalty) +{ + data << int32(ratedMatchDeserterPenalty.PersonalRatingChange); + data << int32(ratedMatchDeserterPenalty.QueuePenaltySpellID); + data << ratedMatchDeserterPenalty.QueuePenaltyDuration; + return data; +} + WorldPacket const* WorldPackets::Battleground::PVPMatchInitialize::Write() { _worldPacket << uint32(MapID); @@ -358,8 +366,12 @@ WorldPacket const* WorldPackets::Battleground::PVPMatchInitialize::Write() _worldPacket << uint32(BattlemasterListID); _worldPacket.WriteBit(Registered); _worldPacket.WriteBit(AffectsRating); + _worldPacket.WriteBit(DeserterPenalty.has_value()); _worldPacket.FlushBits(); + if (DeserterPenalty) + _worldPacket << *DeserterPenalty; + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index 587efc4e224..b1a6f5bbe89 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -465,6 +465,13 @@ namespace WorldPackets } Bracket[6]; }; + struct RatedMatchDeserterPenalty + { + int32 PersonalRatingChange = 0; + int32 QueuePenaltySpellID = 0; + WorldPackets::Duration<Milliseconds, int32> QueuePenaltyDuration; + }; + class PVPMatchInitialize final : public ServerPacket { public: @@ -483,6 +490,7 @@ namespace WorldPackets MatchState State = Inactive; Timestamp<> StartTime; WorldPackets::Duration<Seconds> Duration; + Optional<RatedMatchDeserterPenalty> DeserterPenalty; uint8 ArenaFaction = 0; uint32 BattlemasterListID = 0; bool Registered = false; diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp index d06b0e21e7d..de5189183e5 100644 --- a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp @@ -30,11 +30,12 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReduced ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData) { data << int32(craftingData.CraftingQualityID); - data << int32(craftingData.field_4); - data << int32(craftingData.field_8); + data << float(craftingData.QualityProgress); + data << int32(craftingData.SkillLineAbilityID); + data << int32(craftingData.CraftingDataID); data << int32(craftingData.Multicraft); - data << int32(craftingData.field_10); - data << int32(craftingData.field_14); + data << int32(craftingData.SkillFromReagents); + data << int32(craftingData.Skill); data << int32(craftingData.CritBonusSkill); data << float(craftingData.field_1C); data << uint64(craftingData.field_20); diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.h b/src/server/game/Server/Packets/CraftingPacketsCommon.h index b74d77cda29..9426662d460 100644 --- a/src/server/game/Server/Packets/CraftingPacketsCommon.h +++ b/src/server/game/Server/Packets/CraftingPacketsCommon.h @@ -32,11 +32,12 @@ struct SpellReducedReagent struct CraftingData { int32 CraftingQualityID = 0; - int32 field_4 = 0; - int32 field_8 = 0; + float QualityProgress = 0.0f; + int32 SkillLineAbilityID = 0; + int32 CraftingDataID = 0; int32 Multicraft = 0; - int32 field_10 = 0; - int32 field_14 = 0; + int32 SkillFromReagents = 0; + int32 Skill = 0; int32 CritBonusSkill = 0; float field_1C = 0.0f; uint64 field_20 = 0; diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp index 5bfb0f0ff8f..95582186f86 100644 --- a/src/server/game/Server/Packets/MailPackets.cpp +++ b/src/server/game/Server/Packets/MailPackets.cpp @@ -58,7 +58,7 @@ WorldPackets::Mail::MailAttachedItem::MailAttachedItem(::Item const* item, uint8 ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailAttachedItem const& att) { data << uint8(att.Position); - data << int32(att.AttachID); + data << uint64(att.AttachID); data << int32(att.Count); data << int32(att.Charges); data << uint32(att.MaxDurability); @@ -114,7 +114,7 @@ WorldPackets::Mail::MailListEntry::MailListEntry(::Mail const* mail, ::Player* p ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailListEntry const& entry) { - data << int32(entry.MailID); + data << uint64(entry.MailID); data << uint8(entry.SenderType); data << uint64(entry.Cod); data << int32(entry.StationeryID); @@ -198,12 +198,12 @@ void WorldPackets::Mail::MailReturnToSender::Read() WorldPacket const* WorldPackets::Mail::MailCommandResult::Write() { - _worldPacket << uint32(MailID); - _worldPacket << uint32(Command); - _worldPacket << uint32(ErrorCode); - _worldPacket << uint32(BagResult); - _worldPacket << uint32(AttachID); - _worldPacket << uint32(QtyInInventory); + _worldPacket << uint64(MailID); + _worldPacket << int32(Command); + _worldPacket << int32(ErrorCode); + _worldPacket << int32(BagResult); + _worldPacket << uint64(AttachID); + _worldPacket << int32(QtyInInventory); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MailPackets.h b/src/server/game/Server/Packets/MailPackets.h index 5c65dce692e..2dc1fc3eb96 100644 --- a/src/server/game/Server/Packets/MailPackets.h +++ b/src/server/game/Server/Packets/MailPackets.h @@ -34,7 +34,7 @@ namespace WorldPackets MailAttachedItem(::Item const* item, uint8 pos); uint8 Position = 0; - int32 AttachID = 0; + uint64 AttachID = 0; Item::ItemInstance Item; int32 Count = 0; int32 Charges = 0; @@ -49,7 +49,7 @@ namespace WorldPackets { MailListEntry(::Mail const* mail, ::Player* player); - int32 MailID = 0; + uint64 MailID = 0; uint8 SenderType = 0; Optional<ObjectGuid> SenderCharacter; Optional<uint32> AltSenderID; @@ -93,7 +93,7 @@ namespace WorldPackets void Read() override; ObjectGuid Mailbox; - uint32 MailID = 0; + uint64 MailID = 0; }; class SendMail final : public ClientPacket @@ -131,12 +131,12 @@ namespace WorldPackets WorldPacket const* Write() override; - uint32 MailID = 0; - uint32 Command = 0; - uint32 ErrorCode = 0; - uint32 BagResult = 0; - uint32 AttachID = 0; - uint32 QtyInInventory = 0; + uint64 MailID = 0; + int32 Command = 0; + int32 ErrorCode = 0; + int32 BagResult = 0; + uint64 AttachID = 0; + int32 QtyInInventory = 0; }; class MailReturnToSender final : public ClientPacket @@ -146,7 +146,7 @@ namespace WorldPackets void Read() override; - int32 MailID = 0; + uint64 MailID = 0; ObjectGuid SenderGUID; }; @@ -158,7 +158,7 @@ namespace WorldPackets void Read() override; ObjectGuid Mailbox; - int32 MailID = 0; + uint64 MailID = 0; }; class MailDelete final : public ClientPacket @@ -168,7 +168,7 @@ namespace WorldPackets void Read() override; - int32 MailID = 0; + uint64 MailID = 0; int32 DeleteReason = 0; }; @@ -180,8 +180,8 @@ namespace WorldPackets void Read() override; ObjectGuid Mailbox; - int32 MailID = 0; - int32 AttachID = 0; + uint64 MailID = 0; + uint64 AttachID = 0; }; class MailTakeMoney final : public ClientPacket @@ -192,8 +192,8 @@ namespace WorldPackets void Read() override; ObjectGuid Mailbox; - int32 MailID = 0; - int64 Money = 0; + uint64 MailID = 0; + uint64 Money = 0; }; class MailQueryNextMailTime final : public ClientPacket diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp new file mode 100644 index 00000000000..32d0d781c94 --- /dev/null +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp @@ -0,0 +1,38 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "PerksProgramPacketsCommon.h" + +namespace WorldPackets::PerksProgram +{ +ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem) +{ + data << int32(perksVendorItem.VendorItemID); + data << int32(perksVendorItem.MountID); + data << int32(perksVendorItem.BattlePetSpeciesID); + data << int32(perksVendorItem.TransmogSetID); + data << int32(perksVendorItem.ItemModifiedAppearanceID); + data << int32(perksVendorItem.Field_14); + data << int32(perksVendorItem.Field_18); + data << int32(perksVendorItem.Price); + data << perksVendorItem.AvailableUntil; + data.WriteBit(perksVendorItem.Disabled); + data.FlushBits(); + + return data; +} +} diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.h b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h new file mode 100644 index 00000000000..7b153218e8b --- /dev/null +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.h @@ -0,0 +1,42 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef PerksPorgramPacketsCommon_h__ +#define PerksPorgramPacketsCommon_h__ + +#include "PacketUtilities.h" + +namespace WorldPackets::PerksProgram +{ +struct PerksVendorItem +{ + int32 VendorItemID = 0; + int32 MountID = 0; + int32 BattlePetSpeciesID = 0; + int32 TransmogSetID = 0; + int32 ItemModifiedAppearanceID = 0; + int32 Field_14 = 0; + int32 Field_18 = 0; + int32 Price = 0; + Timestamp<> AvailableUntil; + bool Disabled = false; +}; + +ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem); +} + +#endif // PerksPorgramPacketsCommon_h__ diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 43fd278239f..4ac0d00c1f5 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -45,6 +45,22 @@ void QuestGiverStatusQuery::Read() _worldPacket >> QuestGiverGUID; } +void QuestGiverStatusTrackedQuery::Read() +{ + uint32 guidCount = 0; + _worldPacket >> guidCount; + if (guidCount > 1000) + throw PacketArrayMaxCapacityException(guidCount, 1000); + + QuestGiverGUIDs.reserve(guidCount); + for (uint32 i = 0; i < guidCount; ++i) + { + ObjectGuid guid; + _worldPacket >> guid; + QuestGiverGUIDs.insert(guid); + } +} + WorldPacket const* QuestGiverStatus::Write() { _worldPacket << QuestGiver.Guid; diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 14c9f25e981..42cdff0f3eb 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -49,6 +49,16 @@ namespace WorldPackets void Read() override { } }; + class QuestGiverStatusTrackedQuery final : public ClientPacket + { + public: + QuestGiverStatusTrackedQuery(WorldPacket&& packet) : ClientPacket(CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY, std::move(packet)) { } + + void Read() override; + + GuidUnorderedSet QuestGiverGUIDs; + }; + struct QuestGiverInfo { QuestGiverInfo() { } diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 221a6e5cd96..d3010690bbc 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -907,7 +907,6 @@ void SelfRes::Read() void GetMirrorImageData::Read() { _worldPacket >> UnitGUID; - _worldPacket >> DisplayID; } MirrorImageComponentedData::MirrorImageComponentedData() diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 53cfdfddfcd..deb37c81647 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -906,7 +906,6 @@ namespace WorldPackets void Read() override; ObjectGuid UnitGUID; - uint32 DisplayID = 0; }; class MirrorImageComponentedData final : public ServerPacket diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 5396f9fe141..d71b49eb566 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -52,9 +52,6 @@ WorldPacket const* FeatureSystemStatus::Write() { _worldPacket << uint8(ComplaintStatus); - _worldPacket << uint32(ScrollOfResurrectionRequestsRemaining); - _worldPacket << uint32(ScrollOfResurrectionMaxRequestsPerDay); - _worldPacket << uint32(CfgRealmID); _worldPacket << int32(CfgRealmRecID); @@ -87,14 +84,13 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(VoiceEnabled); _worldPacket.WriteBit(EuropaTicketSystemStatus.has_value()); - _worldPacket.WriteBit(ScrollOfResurrectionEnabled); _worldPacket.WriteBit(BpayStoreEnabled); _worldPacket.WriteBit(BpayStoreAvailable); _worldPacket.WriteBit(BpayStoreDisabledByParentalControls); _worldPacket.WriteBit(ItemRestorationButtonEnabled); _worldPacket.WriteBit(BrowserEnabled); - _worldPacket.WriteBit(SessionAlert.has_value()); + _worldPacket.WriteBit(RAFSystem.Enabled); _worldPacket.WriteBit(RAFSystem.RecruitingEnabled); _worldPacket.WriteBit(CharUndeleteEnabled); @@ -102,8 +98,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(CommerceSystemEnabled); _worldPacket.WriteBit(TutorialsEnabled); _worldPacket.WriteBit(TwitterEnabled); - _worldPacket.WriteBit(Unk67); + _worldPacket.WriteBit(WillKickFromWorld); _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.WriteBit(CompetitiveModeEnabled); @@ -111,8 +107,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(WarModeFeatureEnabled); _worldPacket.WriteBit(ClubsEnabled); _worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed); - _worldPacket.WriteBit(ClubsCharacterClubTypeAllowed); + _worldPacket.WriteBit(ClubsPresenceUpdateEnabled); _worldPacket.WriteBit(VoiceChatDisabledByParentalControl); _worldPacket.WriteBit(VoiceChatMutedByParentalControl); @@ -120,8 +116,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(IsMuted); _worldPacket.WriteBit(ClubFinderEnabled); _worldPacket.WriteBit(Unknown901CheckoutRelated); - _worldPacket.WriteBit(TextToSpeechFeatureEnabled); + _worldPacket.WriteBit(ChatDisabledByDefault); _worldPacket.WriteBit(ChatDisabledByPlayer); _worldPacket.WriteBit(LFGListCustomRequiresAuthenticator); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 2091940632f..bd1affa1f6b 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -114,10 +114,7 @@ namespace WorldPackets bool BpayStoreAvailable = false; bool BpayStoreEnabled = false; Optional<SessionAlertConfig> SessionAlert; - uint32 ScrollOfResurrectionMaxRequestsPerDay = 0; - bool ScrollOfResurrectionEnabled = false; Optional<EuropaTicketConfig> EuropaTicketSystemStatus; - uint32 ScrollOfResurrectionRequestsRemaining = 0; uint32 CfgRealmID = 0; uint8 ComplaintStatus = 0; int32 CfgRealmRecID = 0; diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index ec2b558dd41..5cece62fa03 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -147,7 +147,7 @@ namespace WorldPackets struct SupportTicketMailInfo { - int32 MailID = 0; + int64 MailID = 0; std::string MailSubject; std::string MailBody; }; @@ -259,7 +259,7 @@ namespace WorldPackets uint8 ComplaintType = 0; ComplaintOffender Offender; - uint32 MailID = 0; + uint64 MailID = 0; ComplaintChat Chat; uint64 EventGuid = 0; uint64 InviteGuid = 0; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 586bd8e8298..823539281d0 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -693,6 +693,11 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_PARTY_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyInviteResponseOpcode); DEFINE_HANDLER(CMSG_PARTY_UNINVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyUninviteOpcode); DEFINE_HANDLER(CMSG_PERFORM_ITEM_INTERACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_REFUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_PERKS_PROGRAM_STATUS_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PETITION_BUY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionBuy); DEFINE_HANDLER(CMSG_PETITION_RENAME_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionRenameGuild); DEFINE_HANDLER(CMSG_PETITION_SHOW_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowList); @@ -754,6 +759,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_QUEST_GIVER_REQUEST_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverRequestRewardOpcode); DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverStatusMultipleQuery); DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusQueryOpcode); + DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusTrackedQueryOpcode); DEFINE_HANDLER(CMSG_QUEST_LOG_REMOVE_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestLogRemoveQuest); DEFINE_HANDLER(CMSG_QUEST_POI_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestPOIQuery); DEFINE_HANDLER(CMSG_QUEST_PUSH_RESULT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestPushResult); @@ -990,6 +996,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_DATA_TIMES, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HEIRLOOM_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_TOY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1265,6 +1272,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFT_ENCHANT_RESULT, 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_CREATOR_VISUALS_OVERRIDE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CROSSED_INEBRIATION_THRESHOLD, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1756,6 +1764,11 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAST_TIME_EVENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_DISABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_VENDOR_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1913,11 +1926,14 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_LAST_LOADED_CONFIG_CVARS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_QUEST_POI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_WEEKLY_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPEC_WIPE_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPOND_INSPECT_ACHIEVEMENTS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPONSE_PERK_PENDING_REWARDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPONSE_PERK_RECENT_PURCHASES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESTART_GLOBAL_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESTRICTED_ACCOUNT_WARNING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index f819789325b..38a05995d99 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -47,17 +47,17 @@ enum OpcodeClient : uint16 CMSG_ABANDON_NPE_RESPONSE = 0x33EB, CMSG_ACCEPT_GUILD_INVITE = 0x35FC, CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x3395, - CMSG_ACCEPT_SOCIAL_CONTRACT = 0x373E, + CMSG_ACCEPT_SOCIAL_CONTRACT = 0x373C, CMSG_ACCEPT_TRADE = 0x315A, CMSG_ACCEPT_WARGAME_INVITE = 0x35E0, - CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3733, + CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3731, CMSG_ACTIVATE_SOULBIND = 0x33DA, CMSG_ACTIVATE_TAXI = 0x34B1, CMSG_ADDON_LIST = 0x35D8, CMSG_ADD_ACCOUNT_COSMETIC = 0x32B1, - CMSG_ADD_BATTLENET_FRIEND = 0x365A, - CMSG_ADD_FRIEND = 0x36CE, - CMSG_ADD_IGNORE = 0x36D2, + CMSG_ADD_BATTLENET_FRIEND = 0x3658, + CMSG_ADD_FRIEND = 0x36CC, + CMSG_ADD_IGNORE = 0x36D0, CMSG_ADD_TOY = 0x32B0, CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3204, CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DD, @@ -71,8 +71,8 @@ enum OpcodeClient : uint16 CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3210, CMSG_ATTACK_STOP = 0x3263, CMSG_ATTACK_SWING = 0x3262, - CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E4, - CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E5, + CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E2, + CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E3, CMSG_AUCTION_BROWSE_QUERY = 0x34D6, CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DE, CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DD, @@ -86,10 +86,10 @@ enum OpcodeClient : uint16 CMSG_AUCTION_PLACE_BID = 0x34D5, CMSG_AUCTION_REMOVE_ITEM = 0x34D3, CMSG_AUCTION_REPLICATE_ITEMS = 0x34D4, - CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3735, + CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3733, CMSG_AUCTION_SELL_COMMODITY = 0x34DF, CMSG_AUCTION_SELL_ITEM = 0x34D2, - CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3734, + CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3732, CMSG_AUTH_CONTINUED_SESSION = 0x3766, CMSG_AUTH_SESSION = 0x3765, CMSG_AUTOBANK_ITEM = 0x3997, @@ -115,28 +115,28 @@ enum OpcodeClient : uint16 CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3536, CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3532, CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3533, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D1, - CMSG_BATTLENET_REQUEST = 0x36F3, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CB, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3711, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CA, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C1, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3738, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B9, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BA, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370A, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3706, - CMSG_BATTLE_PAY_START_PURCHASE = 0x36C9, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F0, - CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C, - CMSG_BATTLE_PET_DELETE_PET = 0x3625, - CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3626, - CMSG_BATTLE_PET_MODIFY_NAME = 0x3628, - CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3624, - CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3623, - CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362D, - CMSG_BATTLE_PET_SET_FLAGS = 0x3630, - CMSG_BATTLE_PET_SUMMON = 0x3629, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36CF, + CMSG_BATTLENET_REQUEST = 0x36F1, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36C9, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x370F, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C8, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36BF, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3736, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B7, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B8, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3708, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3704, + CMSG_BATTLE_PAY_START_PURCHASE = 0x36C7, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36EE, + CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312B, + CMSG_BATTLE_PET_DELETE_PET = 0x3623, + CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3624, + CMSG_BATTLE_PET_MODIFY_NAME = 0x3626, + CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3622, + CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3621, + CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362B, + CMSG_BATTLE_PET_SET_FLAGS = 0x362E, + CMSG_BATTLE_PET_SUMMON = 0x3627, CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E2, CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E1, CMSG_BEGIN_TRADE = 0x3157, @@ -145,28 +145,28 @@ enum OpcodeClient : uint16 CMSG_BLACK_MARKET_OPEN = 0x353E, CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353F, CMSG_BONUS_ROLL = 0x3394, - CMSG_BUG_REPORT = 0x3685, + CMSG_BUG_REPORT = 0x3683, 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 = 0x31F4, - CMSG_CALENDAR_ADD_EVENT = 0x367D, - CMSG_CALENDAR_COMMUNITY_INVITE = 0x3671, - CMSG_CALENDAR_COMPLAIN = 0x3679, - CMSG_CALENDAR_COPY_EVENT = 0x3678, - CMSG_CALENDAR_EVENT_SIGN_UP = 0x367B, - CMSG_CALENDAR_GET = 0x366F, - CMSG_CALENDAR_GET_EVENT = 0x3670, - CMSG_CALENDAR_GET_NUM_PENDING = 0x367A, - CMSG_CALENDAR_INVITE = 0x3672, - CMSG_CALENDAR_MODERATOR_STATUS = 0x3676, - CMSG_CALENDAR_REMOVE_EVENT = 0x3677, - CMSG_CALENDAR_REMOVE_INVITE = 0x3673, - CMSG_CALENDAR_RSVP = 0x3674, - CMSG_CALENDAR_STATUS = 0x3675, - CMSG_CALENDAR_UPDATE_EVENT = 0x367E, + CMSG_CALENDAR_ADD_EVENT = 0x367B, + CMSG_CALENDAR_COMMUNITY_INVITE = 0x366F, + CMSG_CALENDAR_COMPLAIN = 0x3677, + CMSG_CALENDAR_COPY_EVENT = 0x3676, + CMSG_CALENDAR_EVENT_SIGN_UP = 0x3679, + CMSG_CALENDAR_GET = 0x366D, + CMSG_CALENDAR_GET_EVENT = 0x366E, + CMSG_CALENDAR_GET_NUM_PENDING = 0x3678, + CMSG_CALENDAR_INVITE = 0x3670, + CMSG_CALENDAR_MODERATOR_STATUS = 0x3674, + CMSG_CALENDAR_REMOVE_EVENT = 0x3675, + CMSG_CALENDAR_REMOVE_INVITE = 0x3671, + CMSG_CALENDAR_RSVP = 0x3672, + CMSG_CALENDAR_STATUS = 0x3673, + CMSG_CALENDAR_UPDATE_EVENT = 0x367C, CMSG_CANCEL_AURA = 0x31AF, CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5, CMSG_CANCEL_CAST = 0x32B7, @@ -178,22 +178,22 @@ enum OpcodeClient : uint16 CMSG_CANCEL_QUEUED_SPELL = 0x3180, CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500, CMSG_CANCEL_TRADE = 0x315C, - CMSG_CAN_DUEL = 0x3662, - CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3705, + CMSG_CAN_DUEL = 0x3660, + CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3703, CMSG_CAST_SPELL = 0x32B4, - CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090, + CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F, CMSG_CHANGE_BAG_SLOT_FLAG = 0x334E, CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x334F, CMSG_CHANGE_MONUMENT_APPEARANCE = 0x332F, - CMSG_CHANGE_REALM_TICKET = 0x36F8, - CMSG_CHANGE_SUB_GROUP = 0x364C, - CMSG_CHARACTER_CHECK_UPGRADE = 0x36C4, - CMSG_CHARACTER_RENAME_REQUEST = 0x36BF, - CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C2, - CMSG_CHARACTER_UPGRADE_START = 0x36C3, - CMSG_CHAR_CUSTOMIZE = 0x368C, - CMSG_CHAR_DELETE = 0x369C, - CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3692, + CMSG_CHANGE_REALM_TICKET = 0x36F6, + CMSG_CHANGE_SUB_GROUP = 0x364A, + CMSG_CHARACTER_CHECK_UPGRADE = 0x36C2, + CMSG_CHARACTER_RENAME_REQUEST = 0x36BD, + CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C0, + CMSG_CHARACTER_UPGRADE_START = 0x36C1, + CMSG_CHAR_CUSTOMIZE = 0x368A, + CMSG_CHAR_DELETE = 0x369A, + CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3690, CMSG_CHAT_ADDON_MESSAGE = 0x37EE, CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF, CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3, @@ -230,65 +230,65 @@ enum OpcodeClient : uint16 CMSG_CHAT_REPORT_FILTERED = 0x37CC, CMSG_CHAT_REPORT_IGNORED = 0x37CB, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE, - CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645, + CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3643, CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3254, CMSG_CHOICE_RESPONSE = 0x32BC, CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D9, CMSG_CLAIM_WEEKLY_REWARD = 0x33B5, - CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3408, + CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3410, CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3214, - CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x340A, - CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3407, - CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3406, - CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x340B, + CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3412, + CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x340F, + CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x340E, + CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3413, CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3213, - CMSG_CLEAR_NEW_APPEARANCE = 0x312F, + CMSG_CLEAR_NEW_APPEARANCE = 0x312E, CMSG_CLEAR_RAID_MARKER = 0x31A7, CMSG_CLEAR_TRADE_ITEM = 0x315E, CMSG_CLIENT_PORT_GRAVEYARD = 0x353A, CMSG_CLOSE_INTERACTION = 0x3499, CMSG_CLOSE_QUEST_CHOICE = 0x32BD, CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E1, - CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x340C, - CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371C, - CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371A, - CMSG_CLUB_FINDER_POST = 0x3717, - CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371E, - CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3718, - CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3719, - CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371D, - CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371F, - CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371B, - CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x373B, - CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F5, - CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3633, + CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3414, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371A, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3718, + CMSG_CLUB_FINDER_POST = 0x3715, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371C, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3716, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3717, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371B, + CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371D, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x3719, + CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x3739, + CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F3, + CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3631, CMSG_COMMENTATOR_ENABLE = 0x35F0, CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4, CMSG_COMMENTATOR_EXIT_INSTANCE = 0x35F5, CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F1, CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3, CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2, - CMSG_COMMENTATOR_SPECTATE = 0x3739, + CMSG_COMMENTATOR_SPECTATE = 0x3737, CMSG_COMMENTATOR_START_WARGAME = 0x35EF, - CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E2, - CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EC, - CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E3, - CMSG_COMPLAINT = 0x366C, + CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E0, + CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EA, + CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E1, + CMSG_COMPLAINT = 0x366A, CMSG_COMPLETE_CINEMATIC = 0x3558, CMSG_COMPLETE_MOVIE = 0x34EB, CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AC, CMSG_CONFIRM_RESPEC_WIPE = 0x3216, CMSG_CONNECT_TO_FAILED = 0x35D4, - CMSG_CONSUMABLE_TOKEN_BUY = 0x36E7, - CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E8, - CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E6, - CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36EA, - CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EB, + CMSG_CONSUMABLE_TOKEN_BUY = 0x36E5, + CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E6, + CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E4, + CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E8, + CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36E9, CMSG_CONTRIBUTION_CONTRIBUTE = 0x356C, CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356D, CMSG_CONVERSATION_CINEMATIC_READY = 0x355A, CMSG_CONVERSATION_LINE_STARTED = 0x3559, - CMSG_CONVERT_RAID = 0x364E, + CMSG_CONVERT_RAID = 0x364C, CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3580, CMSG_CRAFTING_ORDER_CANCEL = 0x358B, CMSG_CRAFTING_ORDER_CLAIM = 0x3588, @@ -299,14 +299,14 @@ enum OpcodeClient : uint16 CMSG_CRAFTING_ORDER_REJECT = 0x358C, CMSG_CRAFTING_ORDER_RELEASE = 0x3589, CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x358D, - CMSG_CREATE_CHARACTER = 0x3644, + CMSG_CREATE_CHARACTER = 0x3642, CMSG_CREATE_SHIPMENT = 0x331A, CMSG_DB_QUERY_BULK = 0x35E4, CMSG_DECLINE_GUILD_INVITES = 0x352D, CMSG_DECLINE_PETITION = 0x3547, CMSG_DELETE_EQUIPMENT_SET = 0x3519, - CMSG_DEL_FRIEND = 0x36CF, - CMSG_DEL_IGNORE = 0x36D3, + CMSG_DEL_FRIEND = 0x36CD, + CMSG_DEL_IGNORE = 0x36D1, CMSG_DEPOSIT_REAGENT_BANK = 0x3357, CMSG_DESTROY_ITEM = 0x32AA, CMSG_DF_BOOT_PLAYER_VOTE = 0x3616, @@ -321,18 +321,18 @@ enum OpcodeClient : uint16 CMSG_DF_TELEPORT = 0x3617, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A41, CMSG_DISMISS_CRITTER = 0x3507, - CMSG_DO_COUNTDOWN = 0x3716, + CMSG_DO_COUNTDOWN = 0x3714, CMSG_DO_MASTER_LOOT_ROLL = 0x321B, - CMSG_DO_READY_CHECK = 0x3634, + CMSG_DO_READY_CHECK = 0x3632, CMSG_DUEL_RESPONSE = 0x34F0, CMSG_EJECT_PASSENGER = 0x3249, CMSG_EMOTE = 0x3554, CMSG_ENABLE_NAGLE = 0x376B, CMSG_ENABLE_TAXI_NODE = 0x34AF, - CMSG_ENGINE_SURVEY = 0x36E1, + CMSG_ENGINE_SURVEY = 0x36DF, CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767, CMSG_ENUM_CHARACTERS = 0x35E8, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DB, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36D9, CMSG_FAR_SIGHT = 0x34F6, CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B3, CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B2, @@ -366,25 +366,25 @@ enum OpcodeClient : uint16 CMSG_GARRISON_START_MISSION = 0x333B, CMSG_GARRISON_SWAP_BUILDINGS = 0x32E9, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7, - CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B4, - CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3732, + CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B2, + CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3730, CMSG_GET_GARRISON_INFO = 0x32DE, CMSG_GET_ITEM_PURCHASE_DATA = 0x3542, CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3319, CMSG_GET_MIRROR_IMAGE_DATA = 0x32AE, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE, - CMSG_GET_RAF_ACCOUNT_INFO = 0x3720, - CMSG_GET_REMAINING_GAME_TIME = 0x36E9, + CMSG_GET_RAF_ACCOUNT_INFO = 0x371E, + CMSG_GET_REMAINING_GAME_TIME = 0x36E7, CMSG_GET_TROPHY_LIST = 0x332C, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DD, - CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36EE, - CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EF, - CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3690, - CMSG_GM_TICKET_GET_CASE_STATUS = 0x368F, - CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368E, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DB, + CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36EC, + CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36ED, + CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368E, + CMSG_GM_TICKET_GET_CASE_STATUS = 0x368D, + CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368C, CMSG_GOSSIP_REFRESH_OPTIONS = 0x357F, CMSG_GOSSIP_SELECT_OPTION = 0x349A, - CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308E, + CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308D, CMSG_GUILD_ADD_RANK = 0x3065, CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x3060, CMSG_GUILD_AUTO_DECLINE_INVITATION = 0x3062, @@ -421,7 +421,7 @@ enum OpcodeClient : uint16 CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3089, CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x3070, CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3071, - CMSG_GUILD_SET_GUILD_MASTER = 0x36C6, + CMSG_GUILD_SET_GUILD_MASTER = 0x36C4, CMSG_GUILD_SET_MEMBER_NOTE = 0x3073, CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3068, CMSG_GUILD_SHIFT_RANK = 0x3067, @@ -440,12 +440,12 @@ enum OpcodeClient : uint16 CMSG_ITEM_TEXT_QUERY = 0x334B, CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DF, CMSG_JOIN_RATED_BATTLEGROUND = 0x3179, - CMSG_KEEP_ALIVE = 0x367F, + CMSG_KEEP_ALIVE = 0x367D, CMSG_KEYBOUND_OVERRIDE = 0x322E, CMSG_LATENCY_REPORT = 0x3771, CMSG_LEARN_PVP_TALENTS = 0x356B, CMSG_LEARN_TALENTS = 0x3569, - CMSG_LEAVE_GROUP = 0x3649, + CMSG_LEAVE_GROUP = 0x3647, CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E0, CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360D, CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360E, @@ -458,10 +458,10 @@ enum OpcodeClient : uint16 CMSG_LFG_LIST_SEARCH = 0x360C, CMSG_LFG_LIST_UPDATE_REQUEST = 0x3390, CMSG_LIST_INVENTORY = 0x34A7, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B7, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B6, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B5, - CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B8, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B5, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B4, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B3, + CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B6, CMSG_LOADING_SCREEN_NOTIFY = 0x35F8, CMSG_LOAD_SELECTED_TROPHY = 0x332D, CMSG_LOGOUT_CANCEL = 0x34E6, @@ -474,13 +474,13 @@ enum OpcodeClient : uint16 CMSG_LOOT_RELEASE = 0x321D, CMSG_LOOT_ROLL = 0x321E, CMSG_LOOT_UNIT = 0x3217, - CMSG_LOW_LEVEL_RAID1 = 0x36A0, + CMSG_LOW_LEVEL_RAID1 = 0x369E, CMSG_LOW_LEVEL_RAID2 = 0x3521, CMSG_MAIL_CREATE_TEXT_ITEM = 0x354E, CMSG_MAIL_DELETE = 0x3230, CMSG_MAIL_GET_LIST = 0x3549, CMSG_MAIL_MARK_AS_READ = 0x354D, - CMSG_MAIL_RETURN_TO_SENDER = 0x3655, + CMSG_MAIL_RETURN_TO_SENDER = 0x3653, CMSG_MAIL_TAKE_ITEM = 0x354B, CMSG_MAIL_TAKE_MONEY = 0x354A, CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3232, @@ -488,10 +488,10 @@ enum OpcodeClient : uint16 CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C7, CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C4, CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C2, - CMSG_MINIMAP_PING = 0x364B, + CMSG_MINIMAP_PING = 0x3649, CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318B, - CMSG_MOUNT_CLEAR_FANFARE = 0x312D, - CMSG_MOUNT_SET_FAVORITE = 0x3632, + CMSG_MOUNT_CLEAR_FANFARE = 0x312C, + CMSG_MOUNT_SET_FAVORITE = 0x3630, CMSG_MOUNT_SPECIAL_ANIM = 0x3297, CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A50, CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4E, @@ -582,7 +582,7 @@ enum OpcodeClient : uint16 CMSG_MOVE_TIME_SKIPPED = 0x3A1B, CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A1A, CMSG_MOVE_WATER_WALK_ACK = 0x3A1D, - CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308F, + CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308E, CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D5, CMSG_NEXT_CINEMATIC_CAMERA = 0x3557, CMSG_OBJECT_UPDATE_FAILED = 0x3181, @@ -597,19 +597,24 @@ enum OpcodeClient : uint16 CMSG_OVERRIDE_SCREEN_FLASH = 0x352E, CMSG_PARTY_INVITE = 0x3602, CMSG_PARTY_INVITE_RESPONSE = 0x3604, - CMSG_PARTY_UNINVITE = 0x3647, + CMSG_PARTY_UNINVITE = 0x3645, CMSG_PERFORM_ITEM_INTERACTION = 0x323A, + CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x313A, + CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3400, + CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3401, + CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3402, + CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x33FF, CMSG_PETITION_BUY = 0x34CF, - CMSG_PETITION_RENAME_GUILD = 0x36C7, + CMSG_PETITION_RENAME_GUILD = 0x36C5, CMSG_PETITION_SHOW_LIST = 0x34CE, CMSG_PETITION_SHOW_SIGNATURES = 0x34D0, CMSG_PET_ABANDON = 0x3493, CMSG_PET_ACTION = 0x3491, CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E4, - CMSG_PET_BATTLE_INPUT = 0x3641, + CMSG_PET_BATTLE_INPUT = 0x363F, CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322F, CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E3, - CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3642, + CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3640, CMSG_PET_BATTLE_REQUEST_PVP = 0x31DD, CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DE, CMSG_PET_BATTLE_REQUEST_WILD = 0x31DB, @@ -617,7 +622,7 @@ enum OpcodeClient : uint16 CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DC, CMSG_PET_CANCEL_AURA = 0x3494, CMSG_PET_CAST_SPELL = 0x32B3, - CMSG_PET_RENAME = 0x3684, + CMSG_PET_RENAME = 0x3682, CMSG_PET_SET_ACTION = 0x3490, CMSG_PET_SPELL_AUTOCAST = 0x3495, CMSG_PET_STOP_ATTACK = 0x3492, @@ -626,13 +631,13 @@ enum OpcodeClient : uint16 CMSG_PUSH_QUEST_TO_PARTY = 0x34A5, CMSG_PVP_LOG_DATA = 0x317C, CMSG_QUERY_BATTLE_PET_NAME = 0x328A, - CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660, - CMSG_QUERY_CORPSE_TRANSPORT = 0x3661, + CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365E, + CMSG_QUERY_CORPSE_TRANSPORT = 0x365F, CMSG_QUERY_COUNTDOWN_TIMER = 0x31AA, CMSG_QUERY_CREATURE = 0x3284, CMSG_QUERY_GAME_OBJECT = 0x3285, CMSG_QUERY_GARRISON_PET_NAME = 0x328B, - CMSG_QUERY_GUILD_INFO = 0x368A, + CMSG_QUERY_GUILD_INFO = 0x3688, CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E, CMSG_QUERY_NEXT_MAIL_TIME = 0x354C, CMSG_QUERY_NPC_TEXT = 0x3286, @@ -645,8 +650,8 @@ enum OpcodeClient : uint16 CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175, CMSG_QUERY_QUEST_INFO = 0x3287, CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3176, - CMSG_QUERY_REALM_NAME = 0x3689, - CMSG_QUERY_SCENARIO_POI = 0x3656, + CMSG_QUERY_REALM_NAME = 0x3687, + CMSG_QUERY_SCENARIO_POI = 0x3654, CMSG_QUERY_TIME = 0x34E3, CMSG_QUERY_TREASURE_PICKER = 0x3370, CMSG_QUERY_VOID_STORAGE = 0x31A3, @@ -660,45 +665,46 @@ enum OpcodeClient : uint16 CMSG_QUEST_GIVER_REQUEST_REWARD = 0x34A1, CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A3, CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A2, + CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY = 0x358F, CMSG_QUEST_LOG_REMOVE_QUEST = 0x3541, - CMSG_QUEST_POI_QUERY = 0x36AE, + CMSG_QUEST_POI_QUERY = 0x36AC, CMSG_QUEST_PUSH_RESULT = 0x34A6, CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C9, CMSG_QUEST_SESSION_REQUEST_START = 0x33C8, - CMSG_QUEST_SESSION_REQUEST_STOP = 0x372B, + CMSG_QUEST_SESSION_REQUEST_STOP = 0x3729, CMSG_QUEUED_MESSAGES_END = 0x376C, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3704, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3703, - CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3730, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3702, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3701, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3702, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3701, + CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x372E, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3700, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36FF, CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3512, - CMSG_RAF_CLAIM_NEXT_REWARD = 0x3721, - CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3723, - CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3722, - CMSG_RANDOM_ROLL = 0x3654, - CMSG_READY_CHECK_RESPONSE = 0x3635, + CMSG_RAF_CLAIM_NEXT_REWARD = 0x371F, + CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3721, + CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3720, + CMSG_RANDOM_ROLL = 0x3652, + CMSG_READY_CHECK_RESPONSE = 0x3633, CMSG_READ_ITEM = 0x334D, CMSG_RECLAIM_CORPSE = 0x34E9, CMSG_REMOVE_NEW_ITEM = 0x3373, - CMSG_REMOVE_RAF_RECRUIT = 0x3724, + CMSG_REMOVE_RAF_RECRUIT = 0x3722, CMSG_REORDER_CHARACTERS = 0x35E9, CMSG_REPAIR_ITEM = 0x34FA, CMSG_REPLACE_TROPHY = 0x332E, CMSG_REPOP_REQUEST = 0x3539, - CMSG_REPORT_CLIENT_VARIABLES = 0x36FE, - CMSG_REPORT_ENABLED_ADDONS = 0x36FD, - CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A6, - CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FF, + CMSG_REPORT_CLIENT_VARIABLES = 0x36FC, + CMSG_REPORT_ENABLED_ADDONS = 0x36FB, + CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A4, + CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FD, CMSG_REPORT_PVP_PLAYER_AFK = 0x3502, CMSG_REPORT_SERVER_LAG = 0x33C1, CMSG_REPORT_STUCK_IN_COMBAT = 0x33C2, - CMSG_REQUEST_ACCOUNT_DATA = 0x3694, + CMSG_REQUEST_ACCOUNT_DATA = 0x3692, CMSG_REQUEST_AREA_POI_UPDATE = 0x3372, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC, CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317E, CMSG_REQUEST_CEMETERY_LIST = 0x3177, - CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368B, + CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3689, CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32D0, CMSG_REQUEST_COVENANT_CALLINGS = 0x33B3, CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353D, @@ -711,13 +717,13 @@ enum OpcodeClient : uint16 CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3208, CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3209, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7, - CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653, + CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3651, CMSG_REQUEST_PET_INFO = 0x3496, CMSG_REQUEST_PLAYED_TIME = 0x328F, CMSG_REQUEST_PVP_REWARDS = 0x3196, - CMSG_REQUEST_RAID_INFO = 0x36C8, + CMSG_REQUEST_RAID_INFO = 0x36C6, CMSG_REQUEST_RATED_PVP_INFO = 0x35E3, - CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309B, + CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309A, CMSG_REQUEST_RESEARCH_HISTORY = 0x3167, CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3197, CMSG_REQUEST_STABLED_PETS = 0x3497, @@ -729,8 +735,8 @@ enum OpcodeClient : uint16 CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3371, CMSG_RESET_CHALLENGE_MODE = 0x3206, CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3207, - CMSG_RESET_INSTANCES = 0x3668, - CMSG_RESURRECT_RESPONSE = 0x3683, + CMSG_RESET_INSTANCES = 0x3666, + CMSG_RESURRECT_RESPONSE = 0x3681, CMSG_REVERT_MONUMENT_APPEARANCE = 0x3330, CMSG_RIDE_VEHICLE_INTERACT = 0x3248, CMSG_SAVE_CUF_PROFILES = 0x318C, @@ -741,23 +747,23 @@ enum OpcodeClient : uint16 CMSG_SCENE_TRIGGER_EVENT = 0x322C, CMSG_SELF_RES = 0x3544, CMSG_SELL_ITEM = 0x34A8, - CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F7, - CMSG_SEND_CONTACT_LIST = 0x36CD, + CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F5, + CMSG_SEND_CONTACT_LIST = 0x36CB, CMSG_SEND_MAIL = 0x35FA, CMSG_SEND_TEXT_EMOTE = 0x348E, - CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369B, + CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3699, CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3231, CMSG_SET_ACTION_BAR_TOGGLES = 0x3545, - CMSG_SET_ACTION_BUTTON = 0x3636, + CMSG_SET_ACTION_BUTTON = 0x3634, CMSG_SET_ACTIVE_MOVER = 0x3A3C, CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D1, - CMSG_SET_ASSISTANT_LEADER = 0x364F, + CMSG_SET_ASSISTANT_LEADER = 0x364D, CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3350, CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3351, - CMSG_SET_CONTACT_NOTES = 0x36D0, + CMSG_SET_CONTACT_NOTES = 0x36CE, CMSG_SET_CURRENCY_FLAGS = 0x3169, CMSG_SET_DIFFICULTY_ID = 0x322D, - CMSG_SET_DUNGEON_DIFFICULTY = 0x3682, + CMSG_SET_DUNGEON_DIFFICULTY = 0x3680, CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x327E, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3618, CMSG_SET_FACTION_AT_WAR = 0x34EC, @@ -765,17 +771,17 @@ enum OpcodeClient : uint16 CMSG_SET_FACTION_NOT_AT_WAR = 0x34ED, CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31BA, CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3353, - CMSG_SET_LOOT_METHOD = 0x3648, + CMSG_SET_LOOT_METHOD = 0x3646, CMSG_SET_LOOT_SPECIALIZATION = 0x3552, - CMSG_SET_PARTY_ASSIGNMENT = 0x3651, - CMSG_SET_PARTY_LEADER = 0x364A, + CMSG_SET_PARTY_ASSIGNMENT = 0x364F, + CMSG_SET_PARTY_LEADER = 0x3648, CMSG_SET_PET_SLOT = 0x3168, - CMSG_SET_PLAYER_DECLINED_NAMES = 0x3688, + CMSG_SET_PLAYER_DECLINED_NAMES = 0x3686, CMSG_SET_PREFERRED_CEMETERY = 0x3178, CMSG_SET_PVP = 0x32C7, - CMSG_SET_RAID_DIFFICULTY = 0x36D9, + CMSG_SET_RAID_DIFFICULTY = 0x36D7, CMSG_SET_ROLE = 0x35D9, - CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3686, + CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3684, CMSG_SET_SELECTION = 0x353B, CMSG_SET_SHEATHED = 0x348F, CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3352, @@ -787,10 +793,10 @@ enum OpcodeClient : uint16 CMSG_SET_USING_PARTY_GARRISON = 0x3311, CMSG_SET_WAR_MODE = 0x32C8, CMSG_SET_WATCHED_FACTION = 0x34EF, - CMSG_SHOW_TRADE_SKILL = 0x36C0, + CMSG_SHOW_TRADE_SKILL = 0x36BE, CMSG_SIGN_PETITION = 0x3546, - CMSG_SILENCE_PARTY_TALKER = 0x3652, - CMSG_SOCIAL_CONTRACT_REQUEST = 0x373D, + CMSG_SILENCE_PARTY_TALKER = 0x3650, + CMSG_SOCIAL_CONTRACT_REQUEST = 0x373B, CMSG_SOCKET_GEMS = 0x34F9, CMSG_SORT_BAGS = 0x3354, CMSG_SORT_BANK_BAGS = 0x3355, @@ -808,10 +814,10 @@ enum OpcodeClient : uint16 CMSG_START_SPECTATOR_WAR_GAME = 0x35DF, CMSG_START_WAR_GAME = 0x35DE, CMSG_STORE_GUILD_BANK_ITEM = 0x34BE, - CMSG_SUBMIT_USER_FEEDBACK = 0x3693, + CMSG_SUBMIT_USER_FEEDBACK = 0x3691, CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E2, - CMSG_SUMMON_RESPONSE = 0x366A, - CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646, + CMSG_SUMMON_RESPONSE = 0x3668, + CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644, CMSG_SURRENDER_ARENA = 0x3174, CMSG_SUSPEND_COMMS_ACK = 0x3764, CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A, @@ -819,7 +825,7 @@ enum OpcodeClient : uint16 CMSG_SWAP_INV_ITEM = 0x399D, CMSG_SWAP_ITEM = 0x399C, CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x34BF, - CMSG_SWAP_SUB_GROUPS = 0x364D, + CMSG_SWAP_SUB_GROUPS = 0x364B, CMSG_SWAP_VOID_ITEM = 0x31A5, CMSG_TABARD_VENDOR_ACTIVATE = 0x32C4, CMSG_TALK_TO_GOSSIP = 0x3498, @@ -830,36 +836,36 @@ enum OpcodeClient : uint16 CMSG_TIME_SYNC_RESPONSE = 0x3A3D, CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3F, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3E, - CMSG_TOGGLE_DIFFICULTY = 0x3657, + CMSG_TOGGLE_DIFFICULTY = 0x3655, CMSG_TOGGLE_PVP = 0x32C6, CMSG_TOTEM_DESTROYED = 0x3506, - CMSG_TOY_CLEAR_FANFARE = 0x312E, + CMSG_TOY_CLEAR_FANFARE = 0x312D, CMSG_TRADE_SKILL_SET_FAVORITE = 0x336F, CMSG_TRAINER_BUY_SPELL = 0x34B4, CMSG_TRAINER_LIST = 0x34B3, - CMSG_TRAITS_COMMIT_CONFIG = 0x3401, - CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x33FF, + CMSG_TRAITS_COMMIT_CONFIG = 0x3408, + CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3406, CMSG_TRANSMOGRIFY_ITEMS = 0x3198, CMSG_TURN_IN_PETITION = 0x3548, - CMSG_TUTORIAL = 0x36DA, - CMSG_TWITTER_CHECK_STATUS = 0x312A, - CMSG_TWITTER_CONNECT = 0x3127, - CMSG_TWITTER_DISCONNECT = 0x312B, + CMSG_TUTORIAL = 0x36D8, + CMSG_TWITTER_CHECK_STATUS = 0x3129, + CMSG_TWITTER_CONNECT = 0x3126, + CMSG_TWITTER_DISCONNECT = 0x312A, CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B2, CMSG_UNACCEPT_TRADE = 0x315B, - CMSG_UNDELETE_CHARACTER = 0x36DC, + CMSG_UNDELETE_CHARACTER = 0x36DA, CMSG_UNLEARN_SKILL = 0x34F3, CMSG_UNLEARN_SPECIALIZATION = 0x31A6, CMSG_UNLOCK_VOID_STORAGE = 0x31A2, - CMSG_UPDATE_AADC_STATUS = 0x3737, - CMSG_UPDATE_ACCOUNT_DATA = 0x3695, + CMSG_UPDATE_AADC_STATUS = 0x3735, + CMSG_UPDATE_ACCOUNT_DATA = 0x3693, CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32B6, - CMSG_UPDATE_CLIENT_SETTINGS = 0x3664, + CMSG_UPDATE_CLIENT_SETTINGS = 0x3662, CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3323, CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A43, - CMSG_UPDATE_RAID_TARGET = 0x3650, + CMSG_UPDATE_RAID_TARGET = 0x364E, CMSG_UPDATE_SPELL_VISUAL = 0x32B5, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F1, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36EF, CMSG_UPGRADE_GARRISON = 0x32D9, CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E0, CMSG_USED_FOLLOW = 0x3187, @@ -867,17 +873,17 @@ enum OpcodeClient : uint16 CMSG_USE_EQUIPMENT_SET = 0x3995, CMSG_USE_ITEM = 0x32AF, CMSG_USE_TOY = 0x32B2, - CMSG_VAS_CHECK_TRANSFER_OK = 0x3709, - CMSG_VAS_GET_QUEUE_MINUTES = 0x3708, - CMSG_VAS_GET_SERVICE_STATUS = 0x3707, + CMSG_VAS_CHECK_TRANSFER_OK = 0x3707, + CMSG_VAS_GET_QUEUE_MINUTES = 0x3706, + CMSG_VAS_GET_SERVICE_STATUS = 0x3705, CMSG_VIOLENCE_LEVEL = 0x3185, - CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370D, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370E, - CMSG_VOICE_CHAT_LOGIN = 0x370C, + CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370B, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370C, + CMSG_VOICE_CHAT_LOGIN = 0x370A, CMSG_VOID_STORAGE_TRANSFER = 0x31A4, CMSG_WARDEN3_DATA = 0x35EC, - CMSG_WHO = 0x3681, - CMSG_WHO_IS = 0x3680, + CMSG_WHO = 0x367F, + CMSG_WHO_IS = 0x367E, CMSG_WORLD_PORT_RESPONSE = 0x35F9, CMSG_WRAP_ITEM = 0x3994, }; @@ -885,75 +891,76 @@ enum OpcodeClient : uint16 enum OpcodeServer : uint16 { SMSG_ABORT_NEW_WORLD = 0x259C, - SMSG_ACCOUNT_COSMETIC_ADDED = 0x287B, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2861, - SMSG_ACCOUNT_DATA_TIMES = 0x2704, + SMSG_ACCOUNT_COSMETIC_ADDED = 0x287C, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2862, + SMSG_ACCOUNT_DATA_TIMES = 0x2705, + SMSG_ACCOUNT_MOUNT_REMOVED = 0x25B0, SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AF, - SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x287A, - SMSG_ACCOUNT_TOY_UPDATE = 0x25B0, - SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B3, - SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B2, - SMSG_ACHIEVEMENT_DELETED = 0x26E2, - SMSG_ACHIEVEMENT_EARNED = 0x2640, + SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x287B, + SMSG_ACCOUNT_TOY_UPDATE = 0x25B1, + SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B4, + SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B3, + SMSG_ACHIEVEMENT_DELETED = 0x26E3, + SMSG_ACHIEVEMENT_EARNED = 0x2641, SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015, SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017, - SMSG_ACTIVATE_TAXI_REPLY = 0x267A, + SMSG_ACTIVATE_TAXI_REPLY = 0x267B, SMSG_ACTIVE_GLYPHS = 0x2C57, - SMSG_ADDON_LIST_REQUEST = 0x263F, - SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263A, + SMSG_ADDON_LIST_REQUEST = 0x2640, + SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263B, SMSG_ADD_ITEM_PASSIVE = 0x25AB, - SMSG_ADD_LOSS_OF_CONTROL = 0x266E, - SMSG_ADD_RUNE_POWER = 0x26B4, - SMSG_ADJUST_SPLINE_DURATION = 0x25CF, - SMSG_ADVANCED_COMBAT_LOG = 0x2877, - SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2871, - SMSG_AE_LOOT_TARGETS = 0x2615, - SMSG_AE_LOOT_TARGET_ACK = 0x2616, - SMSG_AI_REACTION = 0x26B1, - SMSG_ALLIED_RACE_DETAILS = 0x27F4, + SMSG_ADD_LOSS_OF_CONTROL = 0x266F, + SMSG_ADD_RUNE_POWER = 0x26B5, + SMSG_ADJUST_SPLINE_DURATION = 0x25D0, + SMSG_ADVANCED_COMBAT_LOG = 0x2878, + SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2872, + SMSG_AE_LOOT_TARGETS = 0x2616, + SMSG_AE_LOOT_TARGET_ACK = 0x2617, + SMSG_AI_REACTION = 0x26B2, + SMSG_ALLIED_RACE_DETAILS = 0x27F5, SMSG_ALL_ACCOUNT_CRITERIA = 0x2571, SMSG_ALL_ACHIEVEMENT_DATA = 0x2570, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8, - SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284E, + SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284F, SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588, SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x2739, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x273A, SMSG_AREA_TRIGGER_DENIED = 0x2902, SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x28FF, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x2710, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x2711, SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE, SMSG_AREA_TRIGGER_RE_PATH = 0x28FD, SMSG_AREA_TRIGGER_RE_SHAPE = 0x2901, SMSG_AREA_TRIGGER_UNATTACH = 0x2900, - SMSG_ARENA_CLEAR_OPPONENTS = 0x2646, - SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262F, - SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2645, - SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279E, - SMSG_ARTIFACT_FORGE_ERROR = 0x279C, - SMSG_ARTIFACT_RESPEC_PROMPT = 0x279D, - SMSG_ARTIFACT_XP_GAIN = 0x27E7, + SMSG_ARENA_CLEAR_OPPONENTS = 0x2647, + SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2630, + SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2646, + SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279F, + SMSG_ARTIFACT_FORGE_ERROR = 0x279D, + SMSG_ARTIFACT_RESPEC_PROMPT = 0x279E, + SMSG_ARTIFACT_XP_GAIN = 0x27E8, SMSG_ATTACKER_STATE_UPDATE = 0x294D, SMSG_ATTACK_START = 0x2938, SMSG_ATTACK_STOP = 0x2939, SMSG_ATTACK_SWING_ERROR = 0x2947, SMSG_ATTACK_SWING_LANDED_LOG = 0x2948, - SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D0, - SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CF, - SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CE, - SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26ED, - SMSG_AUCTION_COMMAND_RESULT = 0x26EA, - SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x288D, - SMSG_AUCTION_FAVORITE_LIST = 0x2868, - SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285F, - SMSG_AUCTION_HELLO_RESPONSE = 0x26E8, - SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285E, - SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x285B, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x285C, - SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285D, - SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26EC, - SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EE, - SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E9, - SMSG_AUCTION_WON_NOTIFICATION = 0x26EB, + SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D1, + SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27D0, + SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CF, + SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26EE, + SMSG_AUCTION_COMMAND_RESULT = 0x26EB, + SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2895, + SMSG_AUCTION_FAVORITE_LIST = 0x2869, + SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2860, + SMSG_AUCTION_HELLO_RESPONSE = 0x26E9, + SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285F, + SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x285C, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x285D, + SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285E, + SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26ED, + SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EF, + SMSG_AUCTION_REPLICATE_RESPONSE = 0x26EA, + SMSG_AUCTION_WON_NOTIFICATION = 0x26EC, SMSG_AURA_POINTS_DEPLETED = 0x2C23, SMSG_AURA_UPDATE = 0x2C22, SMSG_AUTH_CHALLENGE = 0x3048, @@ -961,8 +968,8 @@ enum OpcodeServer : uint16 SMSG_AUTH_RESPONSE = 0x256D, SMSG_AVAILABLE_HOTFIXES = 0x290F, SMSG_BAG_CLEANUP_FINISHED = 0x2DA7, - SMSG_BARBER_SHOP_RESULT = 0x26B9, - SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283F, + SMSG_BARBER_SHOP_RESULT = 0x26BA, + SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2840, SMSG_BATTLEFIELD_LIST = 0x2927, SMSG_BATTLEFIELD_PORT_DENIED = 0x292D, SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923, @@ -978,112 +985,112 @@ enum OpcodeServer : uint16 SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928, SMSG_BATTLEGROUND_POINTS = 0x2949, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x2783, - SMSG_BATTLENET_CHALLENGE_START = 0x2782, - SMSG_BATTLENET_NOTIFICATION = 0x2800, - SMSG_BATTLENET_RESPONSE = 0x27FF, - SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2801, - SMSG_BATTLE_PAY_ACK_FAILED = 0x277D, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2772, - SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2773, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277C, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2770, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x276F, - SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2880, - SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276D, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276E, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276C, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276A, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276B, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2771, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277B, - SMSG_BATTLE_PAY_START_CHECKOUT = 0x281C, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2779, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2778, - SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2810, - SMSG_BATTLE_PETS_HEALED = 0x25F1, - SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2675, - SMSG_BATTLE_PET_DELETED = 0x25EE, - SMSG_BATTLE_PET_ERROR = 0x2635, - SMSG_BATTLE_PET_JOURNAL = 0x25ED, - SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EB, - SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25EC, - SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25F2, - SMSG_BATTLE_PET_RESTORED = 0x25F0, - SMSG_BATTLE_PET_REVOKED = 0x25EF, - SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E9, - SMSG_BATTLE_PET_UPDATES = 0x25E8, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x2784, + SMSG_BATTLENET_CHALLENGE_START = 0x2783, + SMSG_BATTLENET_NOTIFICATION = 0x2801, + SMSG_BATTLENET_RESPONSE = 0x2800, + SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2802, + SMSG_BATTLE_PAY_ACK_FAILED = 0x277E, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2773, + SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2774, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277D, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2771, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2770, + SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2881, + SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276E, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276F, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276D, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276B, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276C, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2772, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277C, + SMSG_BATTLE_PAY_START_CHECKOUT = 0x281D, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x277A, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2779, + SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2811, + SMSG_BATTLE_PETS_HEALED = 0x25F2, + SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2676, + SMSG_BATTLE_PET_DELETED = 0x25EF, + SMSG_BATTLE_PET_ERROR = 0x2636, + SMSG_BATTLE_PET_JOURNAL = 0x25EE, + SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EC, + SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25ED, + SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25F3, + SMSG_BATTLE_PET_RESTORED = 0x25F1, + SMSG_BATTLE_PET_REVOKED = 0x25F0, + SMSG_BATTLE_PET_TRAP_LEVEL = 0x25EA, + SMSG_BATTLE_PET_UPDATES = 0x25E9, SMSG_BIND_POINT_UPDATE = 0x257D, - SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2625, - SMSG_BLACK_MARKET_OUTBID = 0x2626, - SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2624, - SMSG_BLACK_MARKET_WON = 0x2627, - SMSG_BONUS_ROLL_EMPTY = 0x2642, + SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2626, + SMSG_BLACK_MARKET_OUTBID = 0x2627, + SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2625, + SMSG_BLACK_MARKET_WON = 0x2628, + SMSG_BONUS_ROLL_EMPTY = 0x2643, SMSG_BOSS_KILL = 0x294C, SMSG_BREAK_TARGET = 0x2937, SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC, - SMSG_BROADCAST_SUMMON_CAST = 0x2841, - SMSG_BROADCAST_SUMMON_RESPONSE = 0x2842, - SMSG_BUY_FAILED = 0x26C2, - SMSG_BUY_SUCCEEDED = 0x26C1, + SMSG_BROADCAST_SUMMON_CAST = 0x2842, + SMSG_BROADCAST_SUMMON_RESPONSE = 0x2843, + SMSG_BUY_FAILED = 0x26C3, + SMSG_BUY_SUCCEEDED = 0x26C2, SMSG_CACHE_INFO = 0x291D, SMSG_CACHE_VERSION = 0x291C, - SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269A, - SMSG_CALENDAR_COMMAND_RESULT = 0x269B, - SMSG_CALENDAR_COMMUNITY_INVITE = 0x268A, - SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2692, - SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2693, - SMSG_CALENDAR_INVITE_ADDED = 0x268B, - SMSG_CALENDAR_INVITE_ALERT = 0x268F, - SMSG_CALENDAR_INVITE_NOTES = 0x2694, - SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2695, - SMSG_CALENDAR_INVITE_REMOVED = 0x268C, - SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2691, - SMSG_CALENDAR_INVITE_STATUS = 0x268D, - SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2690, - SMSG_CALENDAR_MODERATOR_STATUS = 0x268E, - SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2696, - SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2697, - SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2698, - SMSG_CALENDAR_SEND_CALENDAR = 0x2688, - SMSG_CALENDAR_SEND_EVENT = 0x2689, - SMSG_CALENDAR_SEND_NUM_PENDING = 0x2699, - SMSG_CAMERA_EFFECT = 0x271F, - SMSG_CANCEL_AUTO_REPEAT = 0x26D8, + SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269B, + SMSG_CALENDAR_COMMAND_RESULT = 0x269C, + SMSG_CALENDAR_COMMUNITY_INVITE = 0x268B, + SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2693, + SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2694, + SMSG_CALENDAR_INVITE_ADDED = 0x268C, + SMSG_CALENDAR_INVITE_ALERT = 0x2690, + SMSG_CALENDAR_INVITE_NOTES = 0x2695, + SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2696, + SMSG_CALENDAR_INVITE_REMOVED = 0x268D, + SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2692, + SMSG_CALENDAR_INVITE_STATUS = 0x268E, + SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2691, + SMSG_CALENDAR_MODERATOR_STATUS = 0x268F, + SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2697, + SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2698, + SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2699, + SMSG_CALENDAR_SEND_CALENDAR = 0x2689, + SMSG_CALENDAR_SEND_EVENT = 0x268A, + SMSG_CALENDAR_SEND_NUM_PENDING = 0x269A, + SMSG_CAMERA_EFFECT = 0x2720, + SMSG_CANCEL_AUTO_REPEAT = 0x26D9, SMSG_CANCEL_COMBAT = 0x2946, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C49, SMSG_CANCEL_PRELOAD_WORLD = 0x259A, - SMSG_CANCEL_SCENE = 0x2634, + SMSG_CANCEL_SCENE = 0x2635, SMSG_CANCEL_SPELL_VISUAL = 0x2C47, SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C4B, SMSG_CAN_DUEL_RESULT = 0x2942, - SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280F, + SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2810, SMSG_CAPTURE_POINT_REMOVED = 0x292A, SMSG_CAST_FAILED = 0x2C5A, SMSG_CATEGORY_COOLDOWN = 0x2C16, - SMSG_CHAIN_MISSILE_BOUNCE = 0x25C7, - SMSG_CHALLENGE_MODE_COMPLETE = 0x2609, - SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260D, - SMSG_CHALLENGE_MODE_RESET = 0x2608, - SMSG_CHALLENGE_MODE_START = 0x2606, - SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2607, + SMSG_CHAIN_MISSILE_BOUNCE = 0x25C8, + SMSG_CHALLENGE_MODE_COMPLETE = 0x260A, + SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260E, + SMSG_CHALLENGE_MODE_RESET = 0x2609, + SMSG_CHALLENGE_MODE_START = 0x2607, + SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2608, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004, - SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2802, + SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2803, SMSG_CHANNEL_LIST = 0x2BC3, SMSG_CHANNEL_NOTIFY = 0x2BC0, SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1, SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2, - SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B9, - SMSG_CHARACTER_LOGIN_FAILED = 0x26FF, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2781, - SMSG_CHARACTER_RENAME_RESULT = 0x275C, - SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B8, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B7, - SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BA, - SMSG_CHARACTER_UPGRADE_STARTED = 0x27B6, - SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DC, - SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DD, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A3, + SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27BA, + SMSG_CHARACTER_LOGIN_FAILED = 0x2700, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2782, + SMSG_CHARACTER_RENAME_RESULT = 0x275D, + SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B9, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B8, + SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BB, + SMSG_CHARACTER_UPGRADE_STARTED = 0x27B7, + SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DD, + SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DE, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A4, SMSG_CHAT = 0x2BAD, SMSG_CHAT_AUTO_RESPONDED = 0x2BB8, SMSG_CHAT_DOWN = 0x2BBD, @@ -1100,95 +1107,96 @@ enum OpcodeServer : uint16 SMSG_CHECK_ABANDON_NPE = 0x3018, SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584, SMSG_CHECK_WARGAME_ENTRY = 0x2592, - SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x286B, - SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2852, + SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x286C, + SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2853, SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27, - SMSG_CLEAR_BOSS_EMOTES = 0x25BA, - SMSG_CLEAR_COOLDOWN = 0x26B6, + SMSG_CLEAR_BOSS_EMOTES = 0x25BB, + SMSG_CLEAR_COOLDOWN = 0x26B7, SMSG_CLEAR_COOLDOWNS = 0x2C26, SMSG_CLEAR_RESURRECT = 0x257F, SMSG_CLEAR_SPELL_CHARGES = 0x2C28, SMSG_CLEAR_TARGET = 0x2943, SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1, - SMSG_CLOSE_ARTIFACT_FORGE = 0x279B, - SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x284A, - SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284D, - SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x284B, - SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2848, - SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x284C, - SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2849, - SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x2887, - SMSG_COIN_REMOVED = 0x2614, + SMSG_CLOSE_ARTIFACT_FORGE = 0x279C, + SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x284B, + SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284E, + SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x284C, + SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2849, + SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x284D, + SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x284A, + SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x288F, + SMSG_COIN_REMOVED = 0x2615, SMSG_COMBAT_EVENT_FAILED = 0x293A, - SMSG_COMMENTATOR_MAP_INFO = 0x2701, - SMSG_COMMENTATOR_PLAYER_INFO = 0x2702, - SMSG_COMMENTATOR_STATE_CHANGED = 0x2700, - SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CB, - SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D7, - SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CD, - SMSG_COMMERCE_TOKEN_UPDATE = 0x27CC, - SMSG_COMPLAINT_RESULT = 0x26A8, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2794, - SMSG_CONFIRM_PARTY_INVITE = 0x280E, + SMSG_COMMENTATOR_MAP_INFO = 0x2702, + SMSG_COMMENTATOR_PLAYER_INFO = 0x2703, + SMSG_COMMENTATOR_STATE_CHANGED = 0x2701, + SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CC, + SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D8, + SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CE, + SMSG_COMMERCE_TOKEN_UPDATE = 0x27CD, + SMSG_COMPLAINT_RESULT = 0x26A9, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2795, + SMSG_CONFIRM_PARTY_INVITE = 0x280F, SMSG_CONNECT_TO = 0x304D, - SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277E, - SMSG_CONSOLE_WRITE = 0x2632, - SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D3, - SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D2, - SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D1, - SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D5, - SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D6, - SMSG_CONTACT_LIST = 0x277F, - SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2815, - SMSG_CONTROL_UPDATE = 0x2644, - SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2874, - SMSG_COOLDOWN_CHEAT = 0x2732, - SMSG_COOLDOWN_EVENT = 0x26B5, - SMSG_CORPSE_LOCATION = 0x264C, - SMSG_CORPSE_RECLAIM_DELAY = 0x2743, - SMSG_CORPSE_TRANSPORT_QUERY = 0x270C, + SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277F, + SMSG_CONSOLE_WRITE = 0x2633, + SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D4, + SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D3, + SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D2, + SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D6, + SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D7, + SMSG_CONTACT_LIST = 0x2780, + SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2816, + SMSG_CONTROL_UPDATE = 0x2645, + SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2875, + SMSG_COOLDOWN_CHEAT = 0x2733, + SMSG_COOLDOWN_EVENT = 0x26B6, + SMSG_CORPSE_LOCATION = 0x264D, + SMSG_CORPSE_RECLAIM_DELAY = 0x2744, + SMSG_CORPSE_TRANSPORT_QUERY = 0x270D, SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3, - SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F7, - SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2875, - SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x289E, - SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x289A, - SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x2896, - SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x2898, - SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x2894, - SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x2899, - SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x2895, - SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x289C, - SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x2897, - SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x289F, - SMSG_CRAFT_ENCHANT_RESULT = 0x289D, - SMSG_CREATE_CHAR = 0x26FB, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x2793, - SMSG_CRITERIA_DELETED = 0x26E1, - SMSG_CRITERIA_UPDATE = 0x26DB, - SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BD, - SMSG_CUSTOM_LOAD_SCREEN = 0x25CA, + SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F8, + SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2876, + SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A6, + SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A2, + SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x289E, + SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x28A0, + SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289C, + SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A1, + SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x289D, + SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A4, + SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x289F, + SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A7, + SMSG_CRAFT_ENCHANT_RESULT = 0x28A5, + SMSG_CREATE_CHAR = 0x26FC, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x2794, + SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AA, + SMSG_CRITERIA_DELETED = 0x26E2, + SMSG_CRITERIA_UPDATE = 0x26DC, + SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BE, + SMSG_CUSTOM_LOAD_SCREEN = 0x25CB, SMSG_DAILY_QUESTS_RESET = 0x2A80, - SMSG_DAMAGE_CALC_LOG = 0x27C0, + SMSG_DAMAGE_CALC_LOG = 0x27C1, SMSG_DB_REPLY = 0x290E, - SMSG_DEATH_RELEASE_LOC = 0x26CE, - SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2652, + SMSG_DEATH_RELEASE_LOC = 0x26CF, + SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2653, SMSG_DEFENSE_MESSAGE = 0x2BB6, - SMSG_DELETE_CHAR = 0x26FC, + SMSG_DELETE_CHAR = 0x26FD, SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980, - SMSG_DESTROY_ARENA_UNIT = 0x273B, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F3, + SMSG_DESTROY_ARENA_UNIT = 0x273C, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F4, SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C, SMSG_DISENCHANT_CREDIT = 0x25A8, SMSG_DISMOUNT_RESULT = 0x257C, SMSG_DISPEL_FAILED = 0x2C30, SMSG_DISPLAY_GAME_ERROR = 0x25A1, SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC, - SMSG_DISPLAY_PROMOTION = 0x2649, + SMSG_DISPLAY_PROMOTION = 0x264A, SMSG_DISPLAY_QUEST_POPUP = 0x2A9E, - SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2879, - SMSG_DISPLAY_TOAST = 0x2621, - SMSG_DISPLAY_WORLD_TEXT = 0x27E8, - SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DF, + SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x287A, + SMSG_DISPLAY_TOAST = 0x2622, + SMSG_DISPLAY_WORLD_TEXT = 0x27E9, + SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25E0, SMSG_DROP_NEW_CONNECTION = 0x304C, SMSG_DUEL_ARRANGED = 0x293C, SMSG_DUEL_COMPLETE = 0x2940, @@ -1197,50 +1205,50 @@ enum OpcodeServer : uint16 SMSG_DUEL_OUT_OF_BOUNDS = 0x293D, SMSG_DUEL_REQUESTED = 0x293B, SMSG_DUEL_WINNER = 0x2941, - SMSG_DURABILITY_DAMAGE_DEATH = 0x273F, - SMSG_EMOTE = 0x27C1, - SMSG_ENABLE_BARBER_SHOP = 0x26B8, - SMSG_ENCHANTMENT_LOG = 0x270D, - SMSG_ENCOUNTER_END = 0x2777, - SMSG_ENCOUNTER_START = 0x2776, - SMSG_END_LIGHTNING_STORM = 0x26A5, - SMSG_ENSURE_WORLD_LOADED = 0x2881, + SMSG_DURABILITY_DAMAGE_DEATH = 0x2740, + SMSG_EMOTE = 0x27C2, + SMSG_ENABLE_BARBER_SHOP = 0x26B9, + SMSG_ENCHANTMENT_LOG = 0x270E, + SMSG_ENCOUNTER_END = 0x2778, + SMSG_ENCOUNTER_START = 0x2777, + SMSG_END_LIGHTNING_STORM = 0x26A6, + SMSG_ENSURE_WORLD_LOADED = 0x2889, SMSG_ENTER_ENCRYPTED_MODE = 0x3049, SMSG_ENUM_CHARACTERS_RESULT = 0x2583, - SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27ED, + SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27EE, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21, - SMSG_EQUIPMENT_SET_ID = 0x26AE, + SMSG_EQUIPMENT_SET_ID = 0x26AF, SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1, - SMSG_EXPLORATION_EXPERIENCE = 0x2758, - SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2872, - SMSG_FACTION_BONUS_INFO = 0x271E, + SMSG_EXPLORATION_EXPERIENCE = 0x2759, + SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2873, + SMSG_FACTION_BONUS_INFO = 0x271F, SMSG_FAILED_PLAYER_CONDITION = 0x2FFA, - SMSG_FAILED_QUEST_TURN_IN = 0x280B, - SMSG_FEATURE_SYSTEM_STATUS = 0x25BE, - SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BF, - SMSG_FEIGN_DEATH_RESISTED = 0x273E, - SMSG_FISH_ESCAPED = 0x26CB, - SMSG_FISH_NOT_HOOKED = 0x26CA, + SMSG_FAILED_QUEST_TURN_IN = 0x280C, + SMSG_FEATURE_SYSTEM_STATUS = 0x25BF, + SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C0, + SMSG_FEIGN_DEATH_RESISTED = 0x273F, + SMSG_FISH_ESCAPED = 0x26CC, + SMSG_FISH_NOT_HOOKED = 0x26CB, SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B, - SMSG_FORCED_DEATH_UPDATE = 0x26CF, - SMSG_FORCE_ANIM = 0x274A, - SMSG_FORCE_ANIMATIONS = 0x274B, - SMSG_FORCE_OBJECT_RELINK = 0x2648, - SMSG_FRIEND_STATUS = 0x2780, - SMSG_GAIN_MAW_POWER = 0x27DC, - SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C2, - SMSG_GAME_OBJECT_BASE = 0x2822, - SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2885, - SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C3, - SMSG_GAME_OBJECT_DESPAWN = 0x25C4, - SMSG_GAME_OBJECT_INTERACTION = 0x2884, + SMSG_FORCED_DEATH_UPDATE = 0x26D0, + SMSG_FORCE_ANIM = 0x274B, + SMSG_FORCE_ANIMATIONS = 0x274C, + SMSG_FORCE_OBJECT_RELINK = 0x2649, + SMSG_FRIEND_STATUS = 0x2781, + SMSG_GAIN_MAW_POWER = 0x27DD, + SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C3, + SMSG_GAME_OBJECT_BASE = 0x2823, + SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x288D, + SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C4, + SMSG_GAME_OBJECT_DESPAWN = 0x25C5, + SMSG_GAME_OBJECT_INTERACTION = 0x288C, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4E, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4D, - SMSG_GAME_OBJECT_RESET_STATE = 0x2718, - SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FE, - SMSG_GAME_SPEED_SET = 0x267E, - SMSG_GAME_TIME_SET = 0x2706, - SMSG_GAME_TIME_UPDATE = 0x2705, + SMSG_GAME_OBJECT_RESET_STATE = 0x2719, + SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FF, + SMSG_GAME_SPEED_SET = 0x267F, + SMSG_GAME_TIME_SET = 0x2707, + SMSG_GAME_TIME_UPDATE = 0x2706, SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982, SMSG_GARRISON_ADD_EVENT = 0x29A6, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974, @@ -1312,35 +1320,35 @@ enum OpcodeServer : uint16 SMSG_GARRISON_UPGRADE_RESULT = 0x296B, SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585, - SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2816, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275A, + SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2817, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B, SMSG_GET_GARRISON_INFO_RESULT = 0x295E, - SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2796, - SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D4, - SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BE, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2795, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2791, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BD, - SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E9, - SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EA, + SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2797, + SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D5, + SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BF, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2796, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2792, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BE, + SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27EA, + SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EB, SMSG_GM_PLAYER_INFO = 0x3005, SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB, - SMSG_GM_TICKET_CASE_STATUS = 0x26A0, - SMSG_GM_TICKET_SYSTEM_STATUS = 0x269F, - SMSG_GOD_MODE = 0x26F6, + SMSG_GM_TICKET_CASE_STATUS = 0x26A1, + SMSG_GM_TICKET_SYSTEM_STATUS = 0x26A0, + SMSG_GOD_MODE = 0x26F7, SMSG_GOSSIP_COMPLETE = 0x2A97, SMSG_GOSSIP_MESSAGE = 0x2A98, SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7, - SMSG_GOSSIP_POI = 0x278E, + SMSG_GOSSIP_POI = 0x278F, SMSG_GOSSIP_QUEST_UPDATE = 0x2A99, SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6, SMSG_GROUP_ACTION_THROTTLED = 0x2590, - SMSG_GROUP_AUTO_KICK = 0x278B, - SMSG_GROUP_DECLINE = 0x2787, - SMSG_GROUP_DESTROYED = 0x278A, - SMSG_GROUP_NEW_LEADER = 0x262A, - SMSG_GROUP_REQUEST_DECLINE = 0x2788, - SMSG_GROUP_UNINVITE = 0x2789, + SMSG_GROUP_AUTO_KICK = 0x278C, + SMSG_GROUP_DECLINE = 0x2788, + SMSG_GROUP_DESTROYED = 0x278B, + SMSG_GROUP_NEW_LEADER = 0x262B, + SMSG_GROUP_REQUEST_DECLINE = 0x2789, + SMSG_GROUP_UNINVITE = 0x278A, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7, @@ -1394,59 +1402,59 @@ enum OpcodeServer : uint16 SMSG_GUILD_ROSTER = 0x29BB, SMSG_GUILD_ROSTER_UPDATE = 0x29BC, SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9, - SMSG_HEALTH_UPDATE = 0x26CC, - SMSG_HIGHEST_THREAT_UPDATE = 0x26D4, + SMSG_HEALTH_UPDATE = 0x26CD, + SMSG_HIGHEST_THREAT_UPDATE = 0x26D5, SMSG_HOTFIX_CONNECT = 0x2911, SMSG_HOTFIX_MESSAGE = 0x2910, - SMSG_INITIALIZE_FACTIONS = 0x271D, + SMSG_INITIALIZE_FACTIONS = 0x271E, SMSG_INITIAL_SETUP = 0x2580, - SMSG_INIT_WORLD_STATES = 0x2740, - SMSG_INSPECT_RESULT = 0x262E, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A9, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A8, - SMSG_INSTANCE_ENCOUNTER_END = 0x27B1, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A7, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B3, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B2, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AC, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AB, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B0, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B4, - SMSG_INSTANCE_ENCOUNTER_START = 0x27AD, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AA, - SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27AF, - SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AE, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F4, - SMSG_INSTANCE_INFO = 0x2631, - SMSG_INSTANCE_RESET = 0x2683, - SMSG_INSTANCE_RESET_FAILED = 0x2684, - SMSG_INSTANCE_SAVE_CREATED = 0x2775, + SMSG_INIT_WORLD_STATES = 0x2741, + SMSG_INSPECT_RESULT = 0x262F, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27AA, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A9, + SMSG_INSTANCE_ENCOUNTER_END = 0x27B2, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A8, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B4, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B3, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AD, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AC, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B1, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B5, + SMSG_INSTANCE_ENCOUNTER_START = 0x27AE, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AB, + SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B0, + SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AF, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F5, + SMSG_INSTANCE_INFO = 0x2632, + SMSG_INSTANCE_RESET = 0x2684, + SMSG_INSTANCE_RESET_FAILED = 0x2685, + SMSG_INSTANCE_SAVE_CREATED = 0x2776, SMSG_INTERRUPT_POWER_REGEN = 0x2C5C, SMSG_INVALIDATE_PAGE_TEXT = 0x2918, SMSG_INVALIDATE_PLAYER = 0x2FFF, - SMSG_INVALID_PROMOTION_CODE = 0x274C, + SMSG_INVALID_PROMOTION_CODE = 0x274D, SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5, - SMSG_INVENTORY_FIXUP_COMPLETE = 0x280D, - SMSG_INVENTORY_FULL_OVERFLOW = 0x281E, - SMSG_ISLAND_AZERITE_GAIN = 0x2755, - SMSG_ISLAND_COMPLETE = 0x2756, + SMSG_INVENTORY_FIXUP_COMPLETE = 0x280E, + SMSG_INVENTORY_FULL_OVERFLOW = 0x281F, + SMSG_ISLAND_AZERITE_GAIN = 0x2756, + SMSG_ISLAND_COMPLETE = 0x2757, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84, - SMSG_ITEM_CHANGED = 0x26E5, - SMSG_ITEM_COOLDOWN = 0x27BF, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274E, + SMSG_ITEM_CHANGED = 0x26E6, + SMSG_ITEM_COOLDOWN = 0x27C0, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274F, SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25A0, - SMSG_ITEM_INTERACTION_COMPLETE = 0x286A, + SMSG_ITEM_INTERACTION_COMPLETE = 0x286B, SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259E, - SMSG_ITEM_PUSH_RESULT = 0x2620, - SMSG_ITEM_TIME_UPDATE = 0x274D, - SMSG_KICK_REASON = 0x2686, - SMSG_LATENCY_REPORT_PING = 0x287C, + SMSG_ITEM_PUSH_RESULT = 0x2621, + SMSG_ITEM_TIME_UPDATE = 0x274E, + SMSG_KICK_REASON = 0x2687, + SMSG_LATENCY_REPORT_PING = 0x287D, SMSG_LEARNED_SPELLS = 0x2C50, - SMSG_LEARN_PVP_TALENT_FAILED = 0x25D3, - SMSG_LEARN_TALENT_FAILED = 0x25D2, - SMSG_LEGACY_LOOT_RULES = 0x2823, - SMSG_LEVEL_LINKING_RESULT = 0x2850, - SMSG_LEVEL_UP_INFO = 0x26E3, + SMSG_LEARN_PVP_TALENT_FAILED = 0x25D4, + SMSG_LEARN_TALENT_FAILED = 0x25D3, + SMSG_LEGACY_LOOT_RULES = 0x2824, + SMSG_LEVEL_LINKING_RESULT = 0x2851, + SMSG_LEVEL_UP_INFO = 0x26E4, SMSG_LFG_BOOT_PLAYER = 0x2A35, SMSG_LFG_DISABLED = 0x2A33, SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B, @@ -1474,46 +1482,46 @@ enum OpcodeServer : uint16 SMSG_LFG_SLOT_INVALID = 0x2A30, SMSG_LFG_TELEPORT_DENIED = 0x2A32, SMSG_LFG_UPDATE_STATUS = 0x2A24, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2767, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2766, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B, - SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2768, - SMSG_LOAD_CUF_PROFILES = 0x25BB, - SMSG_LOAD_EQUIPMENT_SET = 0x2708, - SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2889, - SMSG_LOGIN_SET_TIME_SPEED = 0x2707, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2768, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2767, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275C, + SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2769, + SMSG_LOAD_CUF_PROFILES = 0x25BC, + SMSG_LOAD_EQUIPMENT_SET = 0x2709, + SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2891, + SMSG_LOGIN_SET_TIME_SPEED = 0x2708, SMSG_LOGIN_VERIFY_WORLD = 0x259B, - SMSG_LOGOUT_CANCEL_ACK = 0x2682, - SMSG_LOGOUT_COMPLETE = 0x2681, - SMSG_LOGOUT_RESPONSE = 0x2680, - SMSG_LOG_XP_GAIN = 0x26DF, - SMSG_LOOT_ALL_PASSED = 0x261E, - SMSG_LOOT_LIST = 0x273A, - SMSG_LOOT_MONEY_NOTIFY = 0x2619, - SMSG_LOOT_RELEASE = 0x2618, - SMSG_LOOT_RELEASE_ALL = 0x2617, - SMSG_LOOT_REMOVED = 0x2613, - SMSG_LOOT_RESPONSE = 0x2612, - SMSG_LOOT_ROLL = 0x261B, - SMSG_LOOT_ROLLS_COMPLETE = 0x261D, - SMSG_LOOT_ROLL_WON = 0x261F, - SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266D, - SMSG_MAIL_COMMAND_RESULT = 0x2638, - SMSG_MAIL_LIST_RESULT = 0x274F, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2750, + SMSG_LOGOUT_CANCEL_ACK = 0x2683, + SMSG_LOGOUT_COMPLETE = 0x2682, + SMSG_LOGOUT_RESPONSE = 0x2681, + SMSG_LOG_XP_GAIN = 0x26E0, + SMSG_LOOT_ALL_PASSED = 0x261F, + SMSG_LOOT_LIST = 0x273B, + SMSG_LOOT_MONEY_NOTIFY = 0x261A, + SMSG_LOOT_RELEASE = 0x2619, + SMSG_LOOT_RELEASE_ALL = 0x2618, + SMSG_LOOT_REMOVED = 0x2614, + SMSG_LOOT_RESPONSE = 0x2613, + SMSG_LOOT_ROLL = 0x261C, + SMSG_LOOT_ROLLS_COMPLETE = 0x261E, + SMSG_LOOT_ROLL_WON = 0x2620, + SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266E, + SMSG_MAIL_COMMAND_RESULT = 0x2639, + SMSG_MAIL_LIST_RESULT = 0x2750, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2751, SMSG_MAP_OBJECTIVES_INIT = 0x294B, - SMSG_MAP_OBJ_EVENTS = 0x25C5, - SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261C, - SMSG_MEETING_STONE_FAILED = 0x288A, + SMSG_MAP_OBJ_EVENTS = 0x25C6, + SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261D, + SMSG_MEETING_STONE_FAILED = 0x2892, SMSG_MESSAGE_BOX = 0x2576, - SMSG_MINIMAP_PING = 0x26C9, + SMSG_MINIMAP_PING = 0x26CA, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13, - SMSG_MISSILE_CANCEL = 0x25C6, - SMSG_MODIFY_COOLDOWN = 0x275D, + SMSG_MISSILE_CANCEL = 0x25C7, + SMSG_MODIFY_COOLDOWN = 0x275E, SMSG_MOTD = 0x2BAF, SMSG_MOUNT_RESULT = 0x257B, - SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2840, + SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2841, SMSG_MOVE_ADD_IMPULSE = 0x2E32, SMSG_MOVE_APPLY_INERTIA = 0x2E2E, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15, @@ -1621,79 +1629,84 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1, SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD, SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8, - SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D9, - SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D8, - SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260A, - SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260C, - SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260F, - SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260B, - SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DA, - SMSG_NEW_TAXI_PATH = 0x267B, + SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27DA, + SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D9, + SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260B, + SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260D, + SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2610, + SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260C, + SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DB, + SMSG_NEW_TAXI_PATH = 0x267C, SMSG_NEW_WORLD = 0x2598, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C46, - SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A7, + SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A8, SMSG_NOTIFY_MONEY = 0x259D, - SMSG_NOTIFY_RECEIVED_MAIL = 0x2639, - SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2883, - SMSG_OFFER_PETITION_ERROR = 0x26B2, - SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E0, + SMSG_NOTIFY_RECEIVED_MAIL = 0x263A, + SMSG_NPC_INTERACTION_OPEN_RESULT = 0x288B, + SMSG_OFFER_PETITION_ERROR = 0x26B3, + SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E1, SMSG_ON_MONSTER_MOVE = 0x2DD4, - SMSG_OPEN_ARTIFACT_FORGE = 0x279A, + SMSG_OPEN_ARTIFACT_FORGE = 0x279B, SMSG_OPEN_CONTAINER = 0x2DA6, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2792, - SMSG_OVERRIDE_LIGHT = 0x26B7, - SMSG_PAGE_TEXT = 0x2713, - SMSG_PARTY_COMMAND_RESULT = 0x278C, - SMSG_PARTY_INVITE = 0x25BC, - SMSG_PARTY_KILL_LOG = 0x2753, - SMSG_PARTY_MEMBER_FULL_STATE = 0x2752, - SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2751, - SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2870, - SMSG_PARTY_UPDATE = 0x25F3, - SMSG_PAST_TIME_EVENTS = 0x25C1, - SMSG_PAUSE_MIRROR_TIMER = 0x270A, - SMSG_PENDING_RAID_LOCK = 0x26F2, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2793, + SMSG_OVERRIDE_LIGHT = 0x26B8, + SMSG_PAGE_TEXT = 0x2714, + SMSG_PARTY_COMMAND_RESULT = 0x278D, + SMSG_PARTY_INVITE = 0x25BD, + SMSG_PARTY_KILL_LOG = 0x2754, + SMSG_PARTY_MEMBER_FULL_STATE = 0x2753, + SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2752, + SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2871, + SMSG_PARTY_UPDATE = 0x25F4, + SMSG_PAST_TIME_EVENTS = 0x25C2, + SMSG_PAUSE_MIRROR_TIMER = 0x270B, + SMSG_PENDING_RAID_LOCK = 0x26F3, + SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2887, + SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x2883, + SMSG_PERKS_PROGRAM_DISABLED = 0x2888, + SMSG_PERKS_PROGRAM_RESULT = 0x2884, + SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x2882, SMSG_PETITION_ALREADY_SIGNED = 0x25A3, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA, - SMSG_PETITION_SHOW_LIST = 0x26BA, - SMSG_PETITION_SHOW_SIGNATURES = 0x26BB, - SMSG_PETITION_SIGN_RESULTS = 0x2745, - SMSG_PET_ACTION_FEEDBACK = 0x2742, - SMSG_PET_ACTION_SOUND = 0x269D, + SMSG_PETITION_SHOW_LIST = 0x26BB, + SMSG_PETITION_SHOW_SIGNATURES = 0x26BC, + SMSG_PETITION_SIGN_RESULTS = 0x2746, + SMSG_PET_ACTION_FEEDBACK = 0x2743, + SMSG_PET_ACTION_SOUND = 0x269E, SMSG_PET_ADDED = 0x2595, - SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2601, - SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2672, - SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FA, - SMSG_PET_BATTLE_FINAL_ROUND = 0x25FF, - SMSG_PET_BATTLE_FINISHED = 0x2600, - SMSG_PET_BATTLE_FIRST_ROUND = 0x25FC, - SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FB, - SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2602, - SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F9, - SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2636, - SMSG_PET_BATTLE_QUEUE_STATUS = 0x2637, - SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FE, - SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F8, - SMSG_PET_BATTLE_ROUND_RESULT = 0x25FD, - SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EA, + SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2602, + SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2673, + SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FB, + SMSG_PET_BATTLE_FINAL_ROUND = 0x2600, + SMSG_PET_BATTLE_FINISHED = 0x2601, + SMSG_PET_BATTLE_FIRST_ROUND = 0x25FD, + SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FC, + SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2603, + SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25FA, + SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2637, + SMSG_PET_BATTLE_QUEUE_STATUS = 0x2638, + SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FF, + SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F9, + SMSG_PET_BATTLE_ROUND_RESULT = 0x25FE, + SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EB, SMSG_PET_CAST_FAILED = 0x2C5B, SMSG_PET_CLEAR_SPELLS = 0x2C24, - SMSG_PET_DISMISS_SOUND = 0x269E, - SMSG_PET_GOD_MODE = 0x2678, - SMSG_PET_GUIDS = 0x26FE, + SMSG_PET_DISMISS_SOUND = 0x269F, + SMSG_PET_GOD_MODE = 0x2679, + SMSG_PET_GUIDS = 0x26FF, SMSG_PET_LEARNED_SPELLS = 0x2C52, SMSG_PET_MODE = 0x258B, - SMSG_PET_NAME_INVALID = 0x26BF, + SMSG_PET_NAME_INVALID = 0x26C0, SMSG_PET_NEWLY_TAMED = 0x2589, SMSG_PET_SLOT_UPDATED = 0x258A, SMSG_PET_SPELLS_MESSAGE = 0x2C25, SMSG_PET_STABLE_LIST = 0x2596, SMSG_PET_STABLE_RESULT = 0x2597, - SMSG_PET_TAME_FAILURE = 0x26AF, + SMSG_PET_TAME_FAILURE = 0x26B0, SMSG_PET_UNLEARNED_SPELLS = 0x2C53, SMSG_PHASE_SHIFT_CHANGE = 0x2578, - SMSG_PLAYED_TIME = 0x26D0, + SMSG_PLAYED_TIME = 0x26D1, SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014, SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013, SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3016, @@ -1709,25 +1722,25 @@ enum OpcodeServer : uint16 SMSG_PLAYER_SKINNED = 0x3006, SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D, SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C, - SMSG_PLAY_MUSIC = 0x2762, - SMSG_PLAY_OBJECT_SOUND = 0x2763, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272A, + SMSG_PLAY_MUSIC = 0x2763, + SMSG_PLAY_OBJECT_SOUND = 0x2764, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272B, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C4A, - SMSG_PLAY_SCENE = 0x2633, - SMSG_PLAY_SOUND = 0x2761, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x2764, + SMSG_PLAY_SCENE = 0x2634, + SMSG_PLAY_SOUND = 0x2762, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x2765, SMSG_PLAY_SPELL_VISUAL = 0x2C48, SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C4C, - SMSG_PLAY_TIME_WARNING = 0x26F8, + SMSG_PLAY_TIME_WARNING = 0x26F9, SMSG_PONG = 0x304E, - SMSG_POWER_UPDATE = 0x26CD, + SMSG_POWER_UPDATE = 0x26CE, SMSG_PRELOAD_CHILD_MAP = 0x2579, SMSG_PRELOAD_WORLD = 0x2599, - SMSG_PREPOPULATE_NAME_CACHE = 0x2843, - SMSG_PRE_RESSURECT = 0x2760, - SMSG_PRINT_NOTIFICATION = 0x25C9, - SMSG_PROC_RESIST = 0x2754, - SMSG_PROFESSION_GOSSIP = 0x27F9, + SMSG_PREPOPULATE_NAME_CACHE = 0x2844, + SMSG_PRE_RESSURECT = 0x2761, + SMSG_PRINT_NOTIFICATION = 0x25CA, + SMSG_PROC_RESIST = 0x2755, + SMSG_PROFESSION_GOSSIP = 0x27FA, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C54, SMSG_PVP_CREDIT = 0x2945, SMSG_PVP_MATCH_COMPLETE = 0x294F, @@ -1735,7 +1748,7 @@ enum OpcodeServer : uint16 SMSG_PVP_MATCH_START = 0x294E, SMSG_PVP_MATCH_STATISTICS = 0x2932, SMSG_PVP_OPTIONS_ENABLED = 0x2934, - SMSG_PVP_TIER_RECORD = 0x287D, + SMSG_PVP_TIER_RECORD = 0x287E, SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A, SMSG_QUERY_CREATURE_RESPONSE = 0x2914, SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915, @@ -1751,7 +1764,7 @@ enum OpcodeServer : uint16 SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002, SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96, SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6, - SMSG_QUERY_TIME_RESPONSE = 0x26DE, + SMSG_QUERY_TIME_RESPONSE = 0x26DF, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81, SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F, SMSG_QUEST_FORCE_REMOVED = 0x2A9C, @@ -1770,137 +1783,140 @@ enum OpcodeServer : uint16 SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D, SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F, SMSG_QUEST_PUSH_RESULT = 0x2A90, - SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2866, - SMSG_QUEST_SESSION_READY_CHECK = 0x2854, - SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2855, - SMSG_QUEST_SESSION_RESULT = 0x2853, + SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2867, + SMSG_QUEST_SESSION_READY_CHECK = 0x2855, + SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2856, + SMSG_QUEST_SESSION_RESULT = 0x2854, SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C, SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D, SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E, SMSG_QUEST_UPDATE_COMPLETE = 0x2A89, SMSG_QUEST_UPDATE_FAILED = 0x2A8A, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B, - SMSG_QUEUE_SUMMARY_UPDATE = 0x280C, - SMSG_RAF_ACCOUNT_INFO = 0x2851, - SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2862, - SMSG_RAID_DIFFICULTY_SET = 0x27A4, - SMSG_RAID_GROUP_ONLY = 0x27A6, + SMSG_QUEUE_SUMMARY_UPDATE = 0x280D, + SMSG_RAF_ACCOUNT_INFO = 0x2852, + SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2863, + SMSG_RAID_DIFFICULTY_SET = 0x27A5, + SMSG_RAID_GROUP_ONLY = 0x27A7, SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4, SMSG_RAID_MARKERS_CHANGED = 0x25A4, - SMSG_RANDOM_ROLL = 0x262D, + SMSG_RANDOM_ROLL = 0x262E, SMSG_RATED_PVP_INFO = 0x2931, - SMSG_READY_CHECK_COMPLETED = 0x25F7, - SMSG_READY_CHECK_RESPONSE = 0x25F6, - SMSG_READY_CHECK_STARTED = 0x25F5, - SMSG_READ_ITEM_RESULT_FAILED = 0x27A0, - SMSG_READ_ITEM_RESULT_OK = 0x2797, - SMSG_REALM_LOOKUP_INFO = 0x27C4, + SMSG_READY_CHECK_COMPLETED = 0x25F8, + SMSG_READY_CHECK_RESPONSE = 0x25F7, + SMSG_READY_CHECK_STARTED = 0x25F6, + SMSG_READ_ITEM_RESULT_FAILED = 0x27A1, + SMSG_READ_ITEM_RESULT_OK = 0x2798, + SMSG_REALM_LOOKUP_INFO = 0x27C5, SMSG_REALM_QUERY_RESPONSE = 0x2913, - SMSG_REATTACH_RESURRECT = 0x2744, - SMSG_RECRAFT_ITEM_RESULT = 0x289B, - SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BC, - SMSG_REFRESH_COMPONENT = 0x264E, + SMSG_REATTACH_RESURRECT = 0x2745, + SMSG_RECRAFT_ITEM_RESULT = 0x28A3, + SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BD, + SMSG_REFRESH_COMPONENT = 0x264F, SMSG_REFRESH_SPELL_HISTORY = 0x2C2C, SMSG_REMOVE_ITEM_PASSIVE = 0x25AC, SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C55, - SMSG_REPLACE_TROPHY_RESPONSE = 0x27BC, + SMSG_REPLACE_TROPHY_RESPONSE = 0x27BD, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2935, SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2936, SMSG_RESEARCH_COMPLETE = 0x2587, SMSG_RESET_COMPRESSION_CONTEXT = 0x304F, - SMSG_RESET_FAILED_NOTIFY = 0x26B3, + SMSG_RESET_FAILED_NOTIFY = 0x26B4, + SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28A9, SMSG_RESET_QUEST_POI = 0x2AA0, SMSG_RESET_RANGED_COMBAT_TIMER = 0x2944, SMSG_RESET_WEEKLY_CURRENCY = 0x2575, - SMSG_RESPEC_WIPE_CONFIRM = 0x2610, + SMSG_RESPEC_WIPE_CONFIRM = 0x2611, SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572, + SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x2885, + SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2886, SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C64, - SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B8, + SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B9, SMSG_RESUME_CAST = 0x2C3E, SMSG_RESUME_CAST_BAR = 0x2C41, SMSG_RESUME_COMMS = 0x304B, SMSG_RESUME_TOKEN = 0x25AA, SMSG_RESURRECT_REQUEST = 0x257E, SMSG_RESYNC_RUNES = 0x2C62, - SMSG_RETURNING_PLAYER_PROMPT = 0x279F, - SMSG_RETURN_APPLICANT_LIST = 0x2847, - SMSG_RETURN_RECRUITING_CLUBS = 0x2846, + SMSG_RETURNING_PLAYER_PROMPT = 0x27A0, + SMSG_RETURN_APPLICANT_LIST = 0x2848, + SMSG_RETURN_RECRUITING_CLUBS = 0x2847, SMSG_ROLE_CHANGED_INFORM = 0x258D, SMSG_ROLE_CHOSEN = 0x2A39, SMSG_ROLE_POLL_INFORM = 0x258E, - SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F8, - SMSG_RUNE_REGEN_DEBUG = 0x25B5, - SMSG_SCENARIO_COMPLETED = 0x27E6, - SMSG_SCENARIO_POIS = 0x2630, - SMSG_SCENARIO_PROGRESS_UPDATE = 0x2629, - SMSG_SCENARIO_SHOW_CRITERIA = 0x27FC, - SMSG_SCENARIO_STATE = 0x2628, - SMSG_SCENARIO_UI_UPDATE = 0x27FB, - SMSG_SCENARIO_VACATE = 0x27A1, - SMSG_SCENE_OBJECT_EVENT = 0x25E0, - SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E5, - SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E6, - SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E2, - SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E1, - SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E4, - SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E3, + SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F9, + SMSG_RUNE_REGEN_DEBUG = 0x25B6, + SMSG_SCENARIO_COMPLETED = 0x27E7, + SMSG_SCENARIO_POIS = 0x2631, + SMSG_SCENARIO_PROGRESS_UPDATE = 0x262A, + SMSG_SCENARIO_SHOW_CRITERIA = 0x27FD, + SMSG_SCENARIO_STATE = 0x2629, + SMSG_SCENARIO_UI_UPDATE = 0x27FC, + SMSG_SCENARIO_VACATE = 0x27A2, + SMSG_SCENE_OBJECT_EVENT = 0x25E1, + SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E6, + SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E7, + SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E3, + SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E2, + SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E5, + SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E4, SMSG_SCRIPT_CAST = 0x2C59, - SMSG_SEASON_INFO = 0x25C0, - SMSG_SELL_RESPONSE = 0x26C0, + SMSG_SEASON_INFO = 0x25C1, + SMSG_SELL_RESPONSE = 0x26C1, SMSG_SEND_ITEM_PASSIVES = 0x25AD, SMSG_SEND_KNOWN_SPELLS = 0x2C2A, - SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262B, - SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262C, + SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262C, + SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262D, SMSG_SEND_SPELL_CHARGES = 0x2C2D, SMSG_SEND_SPELL_HISTORY = 0x2C2B, SMSG_SEND_UNLEARN_SPELLS = 0x2C2E, - SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264B, - SMSG_SERVER_TIME = 0x267F, - SMSG_SERVER_TIME_OFFSET = 0x270E, + SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264C, + SMSG_SERVER_TIME = 0x2680, + SMSG_SERVER_TIME_OFFSET = 0x270F, SMSG_SETUP_CURRENCY = 0x2573, SMSG_SETUP_RESEARCH_HISTORY = 0x2586, - SMSG_SET_AI_ANIM_KIT = 0x2729, - SMSG_SET_ALL_TASK_PROGRESS = 0x2785, - SMSG_SET_ANIM_TIER = 0x272D, - SMSG_SET_CHR_UPGRADE_TIER = 0x25DD, + SMSG_SET_AI_ANIM_KIT = 0x272A, + SMSG_SET_ALL_TASK_PROGRESS = 0x2786, + SMSG_SET_ANIM_TIER = 0x272E, + SMSG_SET_CHR_UPGRADE_TIER = 0x25DE, SMSG_SET_CURRENCY = 0x2574, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E, - SMSG_SET_DUNGEON_DIFFICULTY = 0x26A1, - SMSG_SET_FACTION_AT_WAR = 0x26FA, - SMSG_SET_FACTION_NOT_VISIBLE = 0x2724, - SMSG_SET_FACTION_STANDING = 0x2725, - SMSG_SET_FACTION_VISIBLE = 0x2723, + SMSG_SET_DUNGEON_DIFFICULTY = 0x26A2, + SMSG_SET_FACTION_AT_WAR = 0x26FB, + SMSG_SET_FACTION_NOT_VISIBLE = 0x2725, + SMSG_SET_FACTION_STANDING = 0x2726, + SMSG_SET_FACTION_VISIBLE = 0x2724, SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C39, - SMSG_SET_FORCED_REACTIONS = 0x2717, + SMSG_SET_FORCED_REACTIONS = 0x2718, SMSG_SET_ITEM_PURCHASE_DATA = 0x259F, - SMSG_SET_LOOT_METHOD_FAILED = 0x27CA, + SMSG_SET_LOOT_METHOD_FAILED = 0x27CB, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A2, - SMSG_SET_MELEE_ANIM_KIT = 0x272C, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x272B, + SMSG_SET_MELEE_ANIM_KIT = 0x272D, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x272C, SMSG_SET_PCT_SPELL_MODIFIER = 0x2C3A, - SMSG_SET_PET_SPECIALIZATION = 0x2622, + SMSG_SET_PET_SPECIALIZATION = 0x2623, SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003, - SMSG_SET_PLAY_HOVER_ANIM = 0x25B9, - SMSG_SET_PROFICIENCY = 0x272E, - SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x285A, + SMSG_SET_PLAY_HOVER_ANIM = 0x25BA, + SMSG_SET_PROFICIENCY = 0x272F, + SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x285B, SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998, SMSG_SET_SPELL_CHARGES = 0x2C29, - SMSG_SET_TASK_COMPLETE = 0x2786, - SMSG_SET_TIME_ZONE_INFORMATION = 0x2674, - SMSG_SET_VEHICLE_REC_ID = 0x26F1, - SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2882, + SMSG_SET_TASK_COMPLETE = 0x2787, + SMSG_SET_TIME_ZONE_INFORMATION = 0x2675, + SMSG_SET_VEHICLE_REC_ID = 0x26F2, + SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x288A, SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2999, - SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D9, + SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25DA, SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95, - SMSG_SHOW_TAXI_NODES = 0x26C8, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2769, - SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x288B, - SMSG_SOCKET_GEMS_FAILURE = 0x2721, - SMSG_SOCKET_GEMS_SUCCESS = 0x2720, - SMSG_SPECIAL_MOUNT_ANIM = 0x269C, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2712, + SMSG_SHOW_TAXI_NODES = 0x26C9, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x276A, + SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2893, + SMSG_SOCKET_GEMS_FAILURE = 0x2722, + SMSG_SOCKET_GEMS_SUCCESS = 0x2721, + SMSG_SPECIAL_MOUNT_ANIM = 0x269D, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2713, SMSG_SPELL_ABSORB_LOG = 0x2C1F, SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17, SMSG_SPELL_CHANNEL_START = 0x2C34, @@ -1928,97 +1944,97 @@ enum OpcodeServer : uint16 SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B, SMSG_SPELL_PREPARE = 0x2C3B, SMSG_SPELL_START = 0x2C3D, - SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CB, - SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x286C, - SMSG_STAND_STATE_UPDATE = 0x2716, - SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D1, - SMSG_START_ELAPSED_TIMER = 0x2603, - SMSG_START_ELAPSED_TIMERS = 0x2605, - SMSG_START_LIGHTNING_STORM = 0x26A4, - SMSG_START_LOOT_ROLL = 0x261A, - SMSG_START_MIRROR_TIMER = 0x2709, + SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CC, + SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x286D, + SMSG_STAND_STATE_UPDATE = 0x2717, + SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D2, + SMSG_START_ELAPSED_TIMER = 0x2604, + SMSG_START_ELAPSED_TIMERS = 0x2606, + SMSG_START_LIGHTNING_STORM = 0x26A5, + SMSG_START_LOOT_ROLL = 0x261B, + SMSG_START_MIRROR_TIMER = 0x270A, SMSG_START_TIMER = 0x25A6, - SMSG_STOP_ELAPSED_TIMER = 0x2604, - SMSG_STOP_MIRROR_TIMER = 0x270B, - SMSG_STOP_SPEAKERBOT_SOUND = 0x2765, + SMSG_STOP_ELAPSED_TIMER = 0x2605, + SMSG_STOP_MIRROR_TIMER = 0x270C, + SMSG_STOP_SPEAKERBOT_SOUND = 0x2766, SMSG_STOP_TIMER = 0x25A7, SMSG_STREAMING_MOVIES = 0x25A5, - SMSG_SUGGEST_INVITE_INFORM = 0x278D, - SMSG_SUMMON_CANCEL = 0x26AD, + SMSG_SUGGEST_INVITE_INFORM = 0x278E, + SMSG_SUMMON_CANCEL = 0x26AE, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F, - SMSG_SUMMON_REQUEST = 0x271B, + SMSG_SUMMON_REQUEST = 0x271C, SMSG_SUPERCEDED_SPELLS = 0x2C4F, SMSG_SUSPEND_COMMS = 0x304A, SMSG_SUSPEND_TOKEN = 0x25A9, - SMSG_SYNC_WOW_ENTITLEMENTS = 0x2864, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2711, - SMSG_TAXI_NODE_STATUS = 0x2679, - SMSG_TEXT_EMOTE = 0x2677, - SMSG_THREAT_CLEAR = 0x26D7, - SMSG_THREAT_REMOVE = 0x26D6, - SMSG_THREAT_UPDATE = 0x26D5, + SMSG_SYNC_WOW_ENTITLEMENTS = 0x2865, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2712, + SMSG_TAXI_NODE_STATUS = 0x267A, + SMSG_TEXT_EMOTE = 0x2678, + SMSG_THREAT_CLEAR = 0x26D8, + SMSG_THREAT_REMOVE = 0x26D7, + SMSG_THREAT_UPDATE = 0x26D6, SMSG_TIME_ADJUSTMENT = 0x2DD3, SMSG_TIME_SYNC_REQUEST = 0x2DD2, - SMSG_TITLE_EARNED = 0x26D2, - SMSG_TITLE_LOST = 0x26D3, - SMSG_TOTEM_CREATED = 0x26C3, - SMSG_TOTEM_DURATION_CHANGED = 0x26C4, - SMSG_TOTEM_MOVED = 0x26C5, + SMSG_TITLE_EARNED = 0x26D3, + SMSG_TITLE_LOST = 0x26D4, + SMSG_TOTEM_CREATED = 0x26C4, + SMSG_TOTEM_DURATION_CHANGED = 0x26C5, + SMSG_TOTEM_MOVED = 0x26C6, SMSG_TRADE_STATUS = 0x2582, SMSG_TRADE_UPDATED = 0x2581, - SMSG_TRAINER_BUY_FAILED = 0x26DA, - SMSG_TRAINER_LIST = 0x26D9, - SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D0, - SMSG_TRANSFER_ABORTED = 0x26FD, - SMSG_TRANSFER_PENDING = 0x25CC, + SMSG_TRAINER_BUY_FAILED = 0x26DB, + SMSG_TRAINER_LIST = 0x26DA, + SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D1, + SMSG_TRANSFER_ABORTED = 0x26FE, + SMSG_TRANSFER_PENDING = 0x25CD, SMSG_TREASURE_PICKER_RESPONSE = 0x291F, - SMSG_TRIGGER_CINEMATIC = 0x27C2, - SMSG_TRIGGER_MOVIE = 0x26C6, - SMSG_TURN_IN_PETITION_RESULT = 0x2747, - SMSG_TUTORIAL_FLAGS = 0x27B5, + SMSG_TRIGGER_CINEMATIC = 0x27C3, + SMSG_TRIGGER_MOVIE = 0x26C7, + SMSG_TURN_IN_PETITION_RESULT = 0x2748, + SMSG_TUTORIAL_FLAGS = 0x27B6, SMSG_TWITTER_STATUS = 0x3043, - SMSG_UI_HEALING_RANGE_MODIFIED = 0x273D, + SMSG_UI_HEALING_RANGE_MODIFIED = 0x273E, SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C5, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C6, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C6, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C7, SMSG_UNLEARNED_SPELLS = 0x2C51, SMSG_UNLOAD_CHILD_MAP = 0x257A, - SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287E, - SMSG_UPDATE_ACCOUNT_DATA = 0x2703, - SMSG_UPDATE_ACTION_BUTTONS = 0x25DE, - SMSG_UPDATE_BNET_SESSION_KEY = 0x281D, + SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287F, + SMSG_UPDATE_ACCOUNT_DATA = 0x2704, + SMSG_UPDATE_ACTION_BUTTONS = 0x25DF, + SMSG_UPDATE_BNET_SESSION_KEY = 0x281E, SMSG_UPDATE_CAPTURE_POINT = 0x2929, - SMSG_UPDATE_CELESTIAL_BODY = 0x2819, - SMSG_UPDATE_CHARACTER_FLAGS = 0x27BB, - SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x275F, - SMSG_UPDATE_COOLDOWN = 0x275E, + SMSG_UPDATE_CELESTIAL_BODY = 0x281A, + SMSG_UPDATE_CHARACTER_FLAGS = 0x27BC, + SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2760, + SMSG_UPDATE_COOLDOWN = 0x275F, SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996, SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F, - SMSG_UPDATE_EXPANSION_LEVEL = 0x2643, - SMSG_UPDATE_GAME_TIME_STATE = 0x2820, - SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A6, - SMSG_UPDATE_LAST_INSTANCE = 0x2685, - SMSG_UPDATE_OBJECT = 0x27C3, - SMSG_UPDATE_PRIMARY_SPEC = 0x25D6, - SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F4, - SMSG_UPDATE_TALENT_DATA = 0x25D5, - SMSG_UPDATE_TASK_PROGRESS = 0x2784, + SMSG_UPDATE_EXPANSION_LEVEL = 0x2644, + SMSG_UPDATE_GAME_TIME_STATE = 0x2821, + SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A7, + SMSG_UPDATE_LAST_INSTANCE = 0x2686, + SMSG_UPDATE_OBJECT = 0x27C4, + SMSG_UPDATE_PRIMARY_SPEC = 0x25D7, + SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F5, + SMSG_UPDATE_TALENT_DATA = 0x25D6, + SMSG_UPDATE_TASK_PROGRESS = 0x2785, SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19, - SMSG_UPDATE_WORLD_STATE = 0x2741, + SMSG_UPDATE_WORLD_STATE = 0x2742, SMSG_USERLIST_ADD = 0x2BB9, SMSG_USERLIST_REMOVE = 0x2BBA, SMSG_USERLIST_UPDATE = 0x2BBB, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x2748, - SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2814, - SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2812, - SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2811, - SMSG_VAS_PURCHASE_COMPLETE = 0x27EC, - SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27EB, - SMSG_VENDOR_INVENTORY = 0x25B7, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x2749, + SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2815, + SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2813, + SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2812, + SMSG_VAS_PURCHASE_COMPLETE = 0x27ED, + SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27EC, + SMSG_VENDOR_INVENTORY = 0x25B8, SMSG_VIGNETTE_UPDATE = 0x3008, - SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2818, - SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2878, - SMSG_VOICE_LOGIN_RESPONSE = 0x2817, + SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2819, + SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2879, + SMSG_VOICE_LOGIN_RESPONSE = 0x2818, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4, SMSG_VOID_STORAGE_CONTENTS = 0x2DA1, SMSG_VOID_STORAGE_FAILED = 0x2DA0, @@ -2027,28 +2043,28 @@ enum OpcodeServer : uint16 SMSG_WAIT_QUEUE_FINISH = 0x256F, SMSG_WAIT_QUEUE_UPDATE = 0x256E, SMSG_WARDEN3_DATA = 0x2577, - SMSG_WARDEN3_DISABLED = 0x281B, - SMSG_WARDEN3_ENABLED = 0x281A, - SMSG_WARFRONT_COMPLETE = 0x2757, + SMSG_WARDEN3_DISABLED = 0x281C, + SMSG_WARDEN3_ENABLED = 0x281B, + SMSG_WARFRONT_COMPLETE = 0x2758, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933, - SMSG_WEATHER = 0x26A3, - SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286F, - SMSG_WEEKLY_REWARDS_RESULT = 0x286D, - SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286E, + SMSG_WEATHER = 0x26A4, + SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2870, + SMSG_WEEKLY_REWARDS_RESULT = 0x286E, + SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286F, SMSG_WEEKLY_SPELL_USAGE = 0x2C18, SMSG_WHO = 0x2BAE, - SMSG_WHO_IS = 0x26A2, - SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281F, + SMSG_WHO_IS = 0x26A3, + SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2820, SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F, SMSG_WORLD_SERVER_INFO = 0x25AE, - SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2865, - SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A0, - SMSG_XP_GAIN_ABORTED = 0x25C8, - SMSG_XP_GAIN_ENABLED = 0x27A5, + SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2866, + SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A8, + SMSG_XP_GAIN_ABORTED = 0x25C9, + SMSG_XP_GAIN_ENABLED = 0x27A6, SMSG_ZONE_UNDER_ATTACK = 0x2BB5, // Opcodes that are not generated automatically - SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25B1, // no client handler + SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25B2, // 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 00e83ca63af..2d154099d77 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -640,6 +640,7 @@ namespace WorldPackets class QuestConfirmAccept; class QuestGiverStatusQuery; class QuestGiverStatusMultipleQuery; + class QuestGiverStatusTrackedQuery; class QuestGiverHello; class QueryQuestInfo; class QuestGiverChooseReward; @@ -1516,6 +1517,7 @@ class TC_GAME_API WorldSession void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet); void HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& packet); + void HandleQuestgiverStatusTrackedQueryOpcode(WorldPackets::Quest::QuestGiverStatusTrackedQuery& questGiverStatusTrackedQuery); void HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHello& packet); void HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet); void HandleQuestgiverQueryQuestOpcode(WorldPackets::Quest::QuestGiverQueryQuest& packet); diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index 6615e4d202b..0eabe462431 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -905,8 +905,8 @@ DumpReturn PlayerDumpReader::LoadDump(std::istream& input, uint32 account, std:: std::map<ObjectGuid::LowType, ObjectGuid::LowType> items; ObjectGuid::LowType itemLowGuidOffset = sObjectMgr->GetGenerator<HighGuid::Item>().GetNextAfterMaxUsed(); - std::map<uint32, uint32> mails; - uint32 mailLowGuidOffset = sObjectMgr->_mailId; + std::map<uint64, uint64> mails; + uint64 mailLowGuidOffset = sObjectMgr->_mailId; std::map<uint32, uint32> petIds; uint32 petLowGuidOffset = sObjectMgr->_hiPetNumber; |