diff --git a/Source/Framework/Constants/AchievementConst.cs b/Source/Framework/Constants/AchievementConst.cs index 3b019968b..aed1235ca 100644 --- a/Source/Framework/Constants/AchievementConst.cs +++ b/Source/Framework/Constants/AchievementConst.cs @@ -421,7 +421,12 @@ namespace Framework.Constants PlayerDaysSinceLogout = 344, 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 } public enum CriteriaFailEvent : byte @@ -716,6 +721,9 @@ namespace Framework.Constants ReputationAmountGained = 243, /*NYI*/ // Gain reputation amount with {FactionID}; accumulate, not highest FulfillAnyCraftingOrder = 245, /*NYI*/ FulfillCraftingOrderType = 246, /*NYI*/ // {CraftingOrderType} + + PerksProgramMonthComplete = 249, /*NYI*/ + Count } diff --git a/Source/Framework/Constants/GameObjectConst.cs b/Source/Framework/Constants/GameObjectConst.cs index 5a6de47b3..6ab32eca4 100644 --- a/Source/Framework/Constants/GameObjectConst.cs +++ b/Source/Framework/Constants/GameObjectConst.cs @@ -66,7 +66,10 @@ namespace Framework.Constants GarrTalentTree = 58, WeeklyRewardChest = 59, ClientModel = 60, - Max = 61 + CraftingTable = 61, + PerksProgramChest = 62, + + Max } public enum GameObjectState diff --git a/Source/Framework/Constants/Network/Opcodes.cs b/Source/Framework/Constants/Network/Opcodes.cs index 32aed638e..bc82d59c9 100644 --- a/Source/Framework/Constants/Network/Opcodes.cs +++ b/Source/Framework/Constants/Network/Opcodes.cs @@ -8,17 +8,17 @@ namespace Framework.Constants AbandonNpeResponse = 0x33eb, AcceptGuildInvite = 0x35fc, AcceptReturningPlayerPrompt = 0x3395, - AcceptSocialContract = 0x373e, + AcceptSocialContract = 0x373c, AcceptTrade = 0x315a, AcceptWargameInvite = 0x35e0, - AccountNotificationAcknowledged = 0x3733, + AccountNotificationAcknowledged = 0x3731, ActivateSoulbind = 0x33da, ActivateTaxi = 0x34b1, AddonList = 0x35d8, AddAccountCosmetic = 0x32b1, - AddBattlenetFriend = 0x365a, - AddFriend = 0x36ce, - AddIgnore = 0x36d2, + AddBattlenetFriend = 0x3658, + AddFriend = 0x36cc, + AddIgnore = 0x36d0, AddToy = 0x32b0, AdventureJournalOpenQuest = 0x3204, AdventureJournalUpdateSuggestions = 0x33dd, @@ -32,8 +32,8 @@ namespace Framework.Constants AssignEquipmentSetSpec = 0x3210, AttackStop = 0x3263, AttackSwing = 0x3262, - AuctionableTokenSell = 0x36e4, - AuctionableTokenSellAtMarketPrice = 0x36e5, + AuctionableTokenSell = 0x36e2, + AuctionableTokenSellAtMarketPrice = 0x36e3, AuctionBrowseQuery = 0x34d6, AuctionCancelCommoditiesPurchase = 0x34de, AuctionConfirmCommoditiesPurchase = 0x34dd, @@ -47,10 +47,10 @@ namespace Framework.Constants AuctionPlaceBid = 0x34d5, AuctionRemoveItem = 0x34d3, AuctionReplicateItems = 0x34d4, - AuctionRequestFavoriteList = 0x3735, + AuctionRequestFavoriteList = 0x3733, AuctionSellCommodity = 0x34df, AuctionSellItem = 0x34d2, - AuctionSetFavoriteItem = 0x3734, + AuctionSetFavoriteItem = 0x3732, AuthContinuedSession = 0x3766, AuthSession = 0x3765, AutobankItem = 0x3997, @@ -76,28 +76,28 @@ namespace Framework.Constants BattlemasterJoinBrawl = 0x3536, BattlemasterJoinRatedSoloShuffle = 0x3532, BattlemasterJoinSkirmish = 0x3533, - BattlenetChallengeResponse = 0x36d1, - BattlenetRequest = 0x36f3, - BattlePayAckFailedResponse = 0x36cb, - BattlePayCancelOpenCheckout = 0x3711, - BattlePayConfirmPurchaseResponse = 0x36ca, - BattlePayDistributionAssignToTarget = 0x36c1, - BattlePayDistributionAssignVas = 0x3738, - BattlePayGetProductList = 0x36b9, - BattlePayGetPurchaseList = 0x36ba, - BattlePayOpenCheckout = 0x370a, - BattlePayRequestPriceInfo = 0x3706, - BattlePayStartPurchase = 0x36c9, - BattlePayStartVasPurchase = 0x36f0, - BattlePetClearFanfare = 0x312c, - BattlePetDeletePet = 0x3625, - BattlePetDeletePetCheat = 0x3626, - BattlePetModifyName = 0x3628, - BattlePetRequestJournal = 0x3624, - BattlePetRequestJournalLock = 0x3623, - BattlePetSetBattleSlot = 0x362d, - BattlePetSetFlags = 0x3630, - BattlePetSummon = 0x3629, + BattlenetChallengeResponse = 0x36cf, + BattlenetRequest = 0x36f1, + BattlePayAckFailedResponse = 0x36c9, + BattlePayCancelOpenCheckout = 0x370f, + BattlePayConfirmPurchaseResponse = 0x36c8, + BattlePayDistributionAssignToTarget = 0x36bf, + BattlePayDistributionAssignVas = 0x3736, + BattlePayGetProductList = 0x36b7, + BattlePayGetPurchaseList = 0x36b8, + BattlePayOpenCheckout = 0x3708, + BattlePayRequestPriceInfo = 0x3704, + BattlePayStartPurchase = 0x36c7, + BattlePayStartVasPurchase = 0x36ee, + BattlePetClearFanfare = 0x312b, + BattlePetDeletePet = 0x3623, + BattlePetDeletePetCheat = 0x3624, + BattlePetModifyName = 0x3626, + BattlePetRequestJournal = 0x3622, + BattlePetRequestJournalLock = 0x3621, + BattlePetSetBattleSlot = 0x362b, + BattlePetSetFlags = 0x362e, + BattlePetSummon = 0x3627, BattlePetUpdateDisplayNotify = 0x31e2, BattlePetUpdateNotify = 0x31e1, BeginTrade = 0x3157, @@ -106,28 +106,28 @@ namespace Framework.Constants BlackMarketOpen = 0x353e, BlackMarketRequestItems = 0x353f, BonusRoll = 0x3394, - BugReport = 0x3685, + BugReport = 0x3683, BusyTrade = 0x3158, BuyBackItem = 0x34aa, BuyBankSlot = 0x34ba, BuyItem = 0x34a9, BuyReagentBank = 0x34bb, CageBattlePet = 0x31f4, - CalendarAddEvent = 0x367d, - CalendarCommunityInvite = 0x3671, - CalendarComplain = 0x3679, - CalendarCopyEvent = 0x3678, - CalendarEventSignUp = 0x367b, - CalendarGet = 0x366f, - CalendarGetEvent = 0x3670, - CalendarGetNumPending = 0x367a, - CalendarInvite = 0x3672, - CalendarModeratorStatus = 0x3676, - CalendarRemoveEvent = 0x3677, - CalendarRemoveInvite = 0x3673, - CalendarRsvp = 0x3674, - CalendarStatus = 0x3675, - CalendarUpdateEvent = 0x367e, + CalendarAddEvent = 0x367b, + CalendarCommunityInvite = 0x366f, + CalendarComplain = 0x3677, + CalendarCopyEvent = 0x3676, + CalendarEventSignUp = 0x3679, + CalendarGet = 0x366d, + CalendarGetEvent = 0x366e, + CalendarGetNumPending = 0x3678, + CalendarInvite = 0x3670, + CalendarModeratorStatus = 0x3674, + CalendarRemoveEvent = 0x3675, + CalendarRemoveInvite = 0x3671, + CalendarRsvp = 0x3672, + CalendarStatus = 0x3673, + CalendarUpdateEvent = 0x367c, CancelAura = 0x31af, CancelAutoRepeatSpell = 0x34f5, CancelCast = 0x32b7, @@ -139,22 +139,22 @@ namespace Framework.Constants CancelQueuedSpell = 0x3180, CancelTempEnchantment = 0x3500, CancelTrade = 0x315c, - CanDuel = 0x3662, - CanRedeemTokenForBalance = 0x3705, + CanDuel = 0x3660, + CanRedeemTokenForBalance = 0x3703, CastSpell = 0x32b4, - ChallengeModeRequestLeaders = 0x3090, + ChallengeModeRequestLeaders = 0x308f, ChangeBagSlotFlag = 0x334e, ChangeBankBagSlotFlag = 0x334f, ChangeMonumentAppearance = 0x332f, - ChangeRealmTicket = 0x36f8, - ChangeSubGroup = 0x364c, - CharacterCheckUpgrade = 0x36c4, - CharacterRenameRequest = 0x36bf, - CharacterUpgradeManualUnrevokeRequest = 0x36c2, - CharacterUpgradeStart = 0x36c3, - CharCustomize = 0x368c, - CharDelete = 0x369c, - CharRaceOrFactionChange = 0x3692, + ChangeRealmTicket = 0x36f6, + ChangeSubGroup = 0x364a, + CharacterCheckUpgrade = 0x36c2, + CharacterRenameRequest = 0x36bd, + CharacterUpgradeManualUnrevokeRequest = 0x36c0, + CharacterUpgradeStart = 0x36c1, + CharCustomize = 0x368a, + CharDelete = 0x369a, + CharRaceOrFactionChange = 0x3690, ChatAddonMessage = 0x37ee, ChatAddonMessageTargeted = 0x37ef, ChatChannelAnnouncements = 0x37e3, @@ -191,65 +191,65 @@ namespace Framework.Constants ChatReportFiltered = 0x37cc, ChatReportIgnored = 0x37cb, ChatUnregisterAllAddonPrefixes = 0x37ce, - CheckCharacterNameAvailability = 0x3645, + CheckCharacterNameAvailability = 0x3643, CheckIsAdventureMapPoiValid = 0x3254, ChoiceResponse = 0x32bc, ChromieTimeSelectExpansion = 0x33d9, ClaimWeeklyReward = 0x33b5, - ClassTalentsDeleteConfig = 0x3408, + ClassTalentsDeleteConfig = 0x3410, ClassTalentsNotifyEmptyConfig = 0x3214, - ClassTalentsNotifyValidationFailed = 0x340a, - ClassTalentsRenameConfig = 0x3407, - ClassTalentsRequestNewConfig = 0x3406, - ClassTalentsSetStarterBuildActive = 0x340b, + ClassTalentsNotifyValidationFailed = 0x3412, + ClassTalentsRenameConfig = 0x340f, + ClassTalentsRequestNewConfig = 0x340e, + ClassTalentsSetStarterBuildActive = 0x3413, ClassTalentsSetUsesSharedActionBars = 0x3213, - ClearNewAppearance = 0x312f, + ClearNewAppearance = 0x312e, ClearRaidMarker = 0x31a7, ClearTradeItem = 0x315e, ClientPortGraveyard = 0x353a, CloseInteraction = 0x3499, CloseQuestChoice = 0x32bd, CloseRuneforgeInteraction = 0x33e1, - CloseTraitSystemInteraction = 0x340c, - ClubFinderApplicationResponse = 0x371c, - ClubFinderGetApplicantsList = 0x371a, - ClubFinderPost = 0x3717, - ClubFinderRequestClubsData = 0x371e, - ClubFinderRequestClubsList = 0x3718, - ClubFinderRequestMembershipToClub = 0x3719, - ClubFinderRequestPendingClubsList = 0x371d, - ClubFinderRequestSubscribedClubPostingIds = 0x371f, - ClubFinderRespondToApplicant = 0x371b, - ClubFinderWhisperApplicantRequest = 0x373b, - ClubPresenceSubscribe = 0x36f5, - CollectionItemSetFavorite = 0x3633, + CloseTraitSystemInteraction = 0x3414, + ClubFinderApplicationResponse = 0x371a, + ClubFinderGetApplicantsList = 0x3718, + ClubFinderPost = 0x3715, + ClubFinderRequestClubsData = 0x371c, + ClubFinderRequestClubsList = 0x3716, + ClubFinderRequestMembershipToClub = 0x3717, + ClubFinderRequestPendingClubsList = 0x371b, + ClubFinderRequestSubscribedClubPostingIds = 0x371d, + ClubFinderRespondToApplicant = 0x3719, + ClubFinderWhisperApplicantRequest = 0x3739, + ClubPresenceSubscribe = 0x36f3, + CollectionItemSetFavorite = 0x3631, CommentatorEnable = 0x35f0, CommentatorEnterInstance = 0x35f4, CommentatorExitInstance = 0x35f5, CommentatorGetMapInfo = 0x35f1, CommentatorGetPlayerCooldowns = 0x35f3, CommentatorGetPlayerInfo = 0x35f2, - CommentatorSpectate = 0x3739, + CommentatorSpectate = 0x3737, CommentatorStartWargame = 0x35ef, - CommerceTokenGetCount = 0x36e2, - CommerceTokenGetLog = 0x36ec, - CommerceTokenGetMarketPrice = 0x36e3, - Complaint = 0x366c, + CommerceTokenGetCount = 0x36e0, + CommerceTokenGetLog = 0x36ea, + CommerceTokenGetMarketPrice = 0x36e1, + Complaint = 0x366a, CompleteCinematic = 0x3558, CompleteMovie = 0x34eb, ConfirmArtifactRespec = 0x31ac, ConfirmRespecWipe = 0x3216, ConnectToFailed = 0x35d4, - ConsumableTokenBuy = 0x36e7, - ConsumableTokenBuyAtMarketPrice = 0x36e8, - ConsumableTokenCanVeteranBuy = 0x36e6, - ConsumableTokenRedeem = 0x36ea, - ConsumableTokenRedeemConfirmation = 0x36eb, + ConsumableTokenBuy = 0x36e5, + ConsumableTokenBuyAtMarketPrice = 0x36e6, + ConsumableTokenCanVeteranBuy = 0x36e4, + ConsumableTokenRedeem = 0x36e8, + ConsumableTokenRedeemConfirmation = 0x36e9, ContributionContribute = 0x356c, ContributionLastUpdateRequest = 0x356d, ConversationCinematicReady = 0x355a, ConversationLineStarted = 0x3559, - ConvertRaid = 0x364e, + ConvertRaid = 0x364c, CovenantRenownRequestCatchupState = 0x3580, CraftingOrderCancel = 0x358b, CraftingOrderClaim = 0x3588, @@ -260,14 +260,14 @@ namespace Framework.Constants CraftingOrderReject = 0x358c, CraftingOrderRelease = 0x3589, CraftingOrderUpdateIgnoreList = 0x358d, - CreateCharacter = 0x3644, + CreateCharacter = 0x3642, CreateShipment = 0x331a, DbQueryBulk = 0x35e4, DeclineGuildInvites = 0x352d, DeclinePetition = 0x3547, DeleteEquipmentSet = 0x3519, - DelFriend = 0x36cf, - DelIgnore = 0x36d3, + DelFriend = 0x36cd, + DelIgnore = 0x36d1, DepositReagentBank = 0x3357, DestroyItem = 0x32aa, DfBootPlayerVote = 0x3616, @@ -282,18 +282,18 @@ namespace Framework.Constants DfTeleport = 0x3617, DiscardedTimeSyncAcks = 0x3a41, DismissCritter = 0x3507, - DoCountdown = 0x3716, + DoCountdown = 0x3714, DoMasterLootRoll = 0x321b, - DoReadyCheck = 0x3634, + DoReadyCheck = 0x3632, DuelResponse = 0x34f0, EjectPassenger = 0x3249, Emote = 0x3554, EnableNagle = 0x376b, EnableTaxiNode = 0x34af, - EngineSurvey = 0x36e1, + EngineSurvey = 0x36df, EnterEncryptedModeAck = 0x3767, EnumCharacters = 0x35e8, - EnumCharactersDeletedByClient = 0x36db, + EnumCharactersDeletedByClient = 0x36d9, FarSight = 0x34f6, GameEventDebugDisable = 0x31b3, GameEventDebugEnable = 0x31b2, @@ -327,25 +327,25 @@ namespace Framework.Constants GarrisonStartMission = 0x333b, GarrisonSwapBuildings = 0x32e9, GenerateRandomCharacterName = 0x35e7, - GetAccountCharacterList = 0x36b4, - GetAccountNotifications = 0x3732, + GetAccountCharacterList = 0x36b2, + GetAccountNotifications = 0x3730, GetGarrisonInfo = 0x32de, GetItemPurchaseData = 0x3542, GetLandingPageShipments = 0x3319, GetMirrorImageData = 0x32ae, GetPvpOptionsEnabled = 0x35ee, - GetRafAccountInfo = 0x3720, - GetRemainingGameTime = 0x36e9, + GetRafAccountInfo = 0x371e, + GetRemainingGameTime = 0x36e7, GetTrophyList = 0x332c, - GetUndeleteCharacterCooldownStatus = 0x36dd, - GetVasAccountCharacterList = 0x36ee, - GetVasTransferTargetRealmList = 0x36ef, - GmTicketAcknowledgeSurvey = 0x3690, - GmTicketGetCaseStatus = 0x368f, - GmTicketGetSystemStatus = 0x368e, + GetUndeleteCharacterCooldownStatus = 0x36db, + GetVasAccountCharacterList = 0x36ec, + GetVasTransferTargetRealmList = 0x36ed, + GmTicketAcknowledgeSurvey = 0x368e, + GmTicketGetCaseStatus = 0x368d, + GmTicketGetSystemStatus = 0x368c, GossipRefreshOptions = 0x357f, GossipSelectOption = 0x349a, - GuildAddBattlenetFriend = 0x308e, + GuildAddBattlenetFriend = 0x308d, GuildAddRank = 0x3065, GuildAssignMemberRank = 0x3060, GuildAutoDeclineInvitation = 0x3062, @@ -382,7 +382,7 @@ namespace Framework.Constants GuildReplaceGuildMaster = 0x3089, GuildSetAchievementTracking = 0x3070, GuildSetFocusedAchievement = 0x3071, - GuildSetGuildMaster = 0x36c6, + GuildSetGuildMaster = 0x36c4, GuildSetMemberNote = 0x3073, GuildSetRankPermissions = 0x3068, GuildShiftRank = 0x3067, @@ -401,12 +401,12 @@ namespace Framework.Constants ItemTextQuery = 0x334b, JoinPetBattleQueue = 0x31df, JoinRatedBattleground = 0x3179, - KeepAlive = 0x367f, + KeepAlive = 0x367d, KeyboundOverride = 0x322e, LatencyReport = 0x3771, LearnPvpTalents = 0x356b, LearnTalents = 0x3569, - LeaveGroup = 0x3649, + LeaveGroup = 0x3647, LeavePetBattleQueue = 0x31e0, LfgListApplyToGroup = 0x360d, LfgListCancelApplication = 0x360e, @@ -419,10 +419,10 @@ namespace Framework.Constants LfgListSearch = 0x360c, LfgListUpdateRequest = 0x3390, ListInventory = 0x34a7, - LiveRegionAccountRestore = 0x36b7, - LiveRegionCharacterCopy = 0x36b6, - LiveRegionGetAccountCharacterList = 0x36b5, - LiveRegionKeyBindingsCopy = 0x36b8, + LiveRegionAccountRestore = 0x36b5, + LiveRegionCharacterCopy = 0x36b4, + LiveRegionGetAccountCharacterList = 0x36b3, + LiveRegionKeyBindingsCopy = 0x36b6, LoadingScreenNotify = 0x35f8, LoadSelectedTrophy = 0x332d, LogoutCancel = 0x34e6, @@ -435,13 +435,13 @@ namespace Framework.Constants LootRelease = 0x321d, LootRoll = 0x321e, LootUnit = 0x3217, - LowLevelRaid1 = 0x36a0, + LowLevelRaid1 = 0x369e, LowLevelRaid2 = 0x3521, MailCreateTextItem = 0x354e, MailDelete = 0x3230, MailGetList = 0x3549, MailMarkAsRead = 0x354d, - MailReturnToSender = 0x3655, + MailReturnToSender = 0x3653, MailTakeItem = 0x354b, MailTakeMoney = 0x354a, MakeContitionalAppearancePermanent = 0x3232, @@ -449,10 +449,10 @@ namespace Framework.Constants MergeGuildBankItemWithGuildBankItem = 0x34c7, MergeGuildBankItemWithItem = 0x34c4, MergeItemWithGuildBankItem = 0x34c2, - MinimapPing = 0x364b, + MinimapPing = 0x3649, MissileTrajectoryCollision = 0x318b, - MountClearFanfare = 0x312d, - MountSetFavorite = 0x3632, + MountClearFanfare = 0x312c, + MountSetFavorite = 0x3630, MountSpecialAnim = 0x3297, MoveAddImpulseAck = 0x3a50, MoveApplyInertiaAck = 0x3a4e, @@ -543,7 +543,7 @@ namespace Framework.Constants MoveTimeSkipped = 0x3a1b, MoveUpdateFallSpeed = 0x3a1a, MoveWaterWalkAck = 0x3a1d, - MythicPlusRequestMapStats = 0x308f, + MythicPlusRequestMapStats = 0x308e, NeutralPlayerSelectFaction = 0x31d5, NextCinematicCamera = 0x3557, ObjectUpdateFailed = 0x3181, @@ -558,19 +558,24 @@ namespace Framework.Constants OverrideScreenFlash = 0x352e, PartyInvite = 0x3602, PartyInviteResponse = 0x3604, - PartyUninvite = 0x3647, + PartyUninvite = 0x3645, PerformItemInteraction = 0x323a, + PerksProgramRequestPendingRewards = 0x313a, + PerksProgramRequestPurchase = 0x3400, + PerksProgramRequestRefund = 0x3401, + PerksProgramSetFrozenVendorItem = 0x3402, + PerksProgramStatusRequest = 0x33ff, PetitionBuy = 0x34cf, - PetitionRenameGuild = 0x36c7, + PetitionRenameGuild = 0x36c5, PetitionShowList = 0x34ce, PetitionShowSignatures = 0x34d0, PetAbandon = 0x3493, PetAction = 0x3491, PetBattleFinalNotify = 0x31e4, - PetBattleInput = 0x3641, + PetBattleInput = 0x363f, PetBattleQueueProposeMatchResult = 0x322f, PetBattleQuitNotify = 0x31e3, - PetBattleReplaceFrontPet = 0x3642, + PetBattleReplaceFrontPet = 0x3640, PetBattleRequestPvp = 0x31dd, PetBattleRequestUpdate = 0x31de, PetBattleRequestWild = 0x31db, @@ -578,7 +583,7 @@ namespace Framework.Constants PetBattleWildLocationFail = 0x31dc, PetCancelAura = 0x3494, PetCastSpell = 0x32b3, - PetRename = 0x3684, + PetRename = 0x3682, PetSetAction = 0x3490, PetSpellAutocast = 0x3495, PetStopAttack = 0x3492, @@ -587,13 +592,13 @@ namespace Framework.Constants PushQuestToParty = 0x34a5, PvpLogData = 0x317c, QueryBattlePetName = 0x328a, - QueryCorpseLocationFromClient = 0x3660, - QueryCorpseTransport = 0x3661, + QueryCorpseLocationFromClient = 0x365e, + QueryCorpseTransport = 0x365f, QueryCountdownTimer = 0x31aa, QueryCreature = 0x3284, QueryGameObject = 0x3285, QueryGarrisonPetName = 0x328b, - QueryGuildInfo = 0x368a, + QueryGuildInfo = 0x3688, QueryInspectAchievements = 0x350e, QueryNextMailTime = 0x354c, QueryNpcText = 0x3286, @@ -606,8 +611,8 @@ namespace Framework.Constants QueryQuestCompletionNpcs = 0x3175, QueryQuestInfo = 0x3287, QueryQuestItemUsability = 0x3176, - QueryRealmName = 0x3689, - QueryScenarioPoi = 0x3656, + QueryRealmName = 0x3687, + QueryScenarioPoi = 0x3654, QueryTime = 0x34e3, QueryTreasurePicker = 0x3370, QueryVoidStorage = 0x31a3, @@ -621,45 +626,46 @@ namespace Framework.Constants QuestGiverRequestReward = 0x34a1, QuestGiverStatusMultipleQuery = 0x34a3, QuestGiverStatusQuery = 0x34a2, + QuestGiverStatusTrackedQuery = 0x358f, QuestLogRemoveQuest = 0x3541, - QuestPoiQuery = 0x36ae, + QuestPoiQuery = 0x36ac, QuestPushResult = 0x34a6, QuestSessionBeginResponse = 0x33c9, QuestSessionRequestStart = 0x33c8, - QuestSessionRequestStop = 0x372b, + QuestSessionRequestStop = 0x3729, QueuedMessagesEnd = 0x376c, - QuickJoinAutoAcceptRequests = 0x3704, - QuickJoinRequestInvite = 0x3703, - QuickJoinRequestInviteWithConfirmation = 0x3730, - QuickJoinRespondToInvite = 0x3702, - QuickJoinSignalToastDisplayed = 0x3701, + QuickJoinAutoAcceptRequests = 0x3702, + QuickJoinRequestInvite = 0x3701, + QuickJoinRequestInviteWithConfirmation = 0x372e, + QuickJoinRespondToInvite = 0x3700, + QuickJoinSignalToastDisplayed = 0x36ff, RafClaimActivityReward = 0x3512, - RafClaimNextReward = 0x3721, - RafGenerateRecruitmentLink = 0x3723, - RafUpdateRecruitmentInfo = 0x3722, - RandomRoll = 0x3654, - ReadyCheckResponse = 0x3635, + RafClaimNextReward = 0x371f, + RafGenerateRecruitmentLink = 0x3721, + RafUpdateRecruitmentInfo = 0x3720, + RandomRoll = 0x3652, + ReadyCheckResponse = 0x3633, ReadItem = 0x334d, ReclaimCorpse = 0x34e9, RemoveNewItem = 0x3373, - RemoveRafRecruit = 0x3724, + RemoveRafRecruit = 0x3722, ReorderCharacters = 0x35e9, RepairItem = 0x34fa, ReplaceTrophy = 0x332e, RepopRequest = 0x3539, - ReportClientVariables = 0x36fe, - ReportEnabledAddons = 0x36fd, - ReportFrozenWhileLoadingMap = 0x36a6, - ReportKeybindingExecutionCounts = 0x36ff, + ReportClientVariables = 0x36fc, + ReportEnabledAddons = 0x36fb, + ReportFrozenWhileLoadingMap = 0x36a4, + ReportKeybindingExecutionCounts = 0x36fd, ReportPvpPlayerAfk = 0x3502, ReportServerLag = 0x33c1, ReportStuckInCombat = 0x33c2, - RequestAccountData = 0x3694, + RequestAccountData = 0x3692, RequestAreaPoiUpdate = 0x3372, RequestBattlefieldStatus = 0x35dc, RequestCategoryCooldowns = 0x317e, RequestCemeteryList = 0x3177, - RequestCharacterGuildFollowInfo = 0x368b, + RequestCharacterGuildFollowInfo = 0x3689, RequestConquestFormulaConstants = 0x32d0, RequestCovenantCallings = 0x33b3, RequestCrowdControlSpell = 0x353d, @@ -672,13 +678,13 @@ namespace Framework.Constants RequestMythicPlusAffixes = 0x3208, RequestMythicPlusSeasonData = 0x3209, RequestPartyJoinUpdates = 0x35f7, - RequestPartyMemberStats = 0x3653, + RequestPartyMemberStats = 0x3651, RequestPetInfo = 0x3496, RequestPlayedTime = 0x328f, RequestPvpRewards = 0x3196, - RequestRaidInfo = 0x36c8, + RequestRaidInfo = 0x36c6, RequestRatedPvpInfo = 0x35e3, - RequestRealmGuildMasterInfo = 0x309b, + RequestRealmGuildMasterInfo = 0x309a, RequestResearchHistory = 0x3167, RequestScheduledPvpInfo = 0x3197, RequestStabledPets = 0x3497, @@ -690,8 +696,8 @@ namespace Framework.Constants RequestWorldQuestUpdate = 0x3371, ResetChallengeMode = 0x3206, ResetChallengeModeCheat = 0x3207, - ResetInstances = 0x3668, - ResurrectResponse = 0x3683, + ResetInstances = 0x3666, + ResurrectResponse = 0x3681, RevertMonumentAppearance = 0x3330, RideVehicleInteract = 0x3248, SaveCufProfiles = 0x318c, @@ -702,23 +708,23 @@ namespace Framework.Constants SceneTriggerEvent = 0x322c, SelfRes = 0x3544, SellItem = 0x34a8, - SendCharacterClubInvitation = 0x36f7, - SendContactList = 0x36cd, + SendCharacterClubInvitation = 0x36f5, + SendContactList = 0x36cb, SendMail = 0x35fa, SendTextEmote = 0x348e, - ServerTimeOffsetRequest = 0x369b, + ServerTimeOffsetRequest = 0x3699, SetAchievementsHidden = 0x3231, SetActionBarToggles = 0x3545, - SetActionButton = 0x3636, + SetActionButton = 0x3634, SetActiveMover = 0x3a3c, SetAdvancedCombatLogging = 0x32d1, - SetAssistantLeader = 0x364f, + SetAssistantLeader = 0x364d, SetBackpackAutosortDisabled = 0x3350, SetBankAutosortDisabled = 0x3351, - SetContactNotes = 0x36d0, + SetContactNotes = 0x36ce, SetCurrencyFlags = 0x3169, SetDifficultyId = 0x322d, - SetDungeonDifficulty = 0x3682, + SetDungeonDifficulty = 0x3680, SetEmpowerMinHoldStagePercent = 0x327e, SetEveryoneIsAssistant = 0x3618, SetFactionAtWar = 0x34ec, @@ -726,17 +732,17 @@ namespace Framework.Constants SetFactionNotAtWar = 0x34ed, SetGameEventDebugViewState = 0x31ba, SetInsertItemsLeftToRight = 0x3353, - SetLootMethod = 0x3648, + SetLootMethod = 0x3646, SetLootSpecialization = 0x3552, - SetPartyAssignment = 0x3651, - SetPartyLeader = 0x364a, + SetPartyAssignment = 0x364f, + SetPartyLeader = 0x3648, SetPetSlot = 0x3168, - SetPlayerDeclinedNames = 0x3688, + SetPlayerDeclinedNames = 0x3686, SetPreferredCemetery = 0x3178, SetPvp = 0x32c7, - SetRaidDifficulty = 0x36d9, + SetRaidDifficulty = 0x36d7, SetRole = 0x35d9, - SetSavedInstanceExtend = 0x3686, + SetSavedInstanceExtend = 0x3684, SetSelection = 0x353b, SetSheathed = 0x348f, SetSortBagsRightToLeft = 0x3352, @@ -748,10 +754,10 @@ namespace Framework.Constants SetUsingPartyGarrison = 0x3311, SetWarMode = 0x32c8, SetWatchedFaction = 0x34ef, - ShowTradeSkill = 0x36c0, + ShowTradeSkill = 0x36be, SignPetition = 0x3546, - SilencePartyTalker = 0x3652, - SocialContractRequest = 0x373d, + SilencePartyTalker = 0x3650, + SocialContractRequest = 0x373b, SocketGems = 0x34f9, SortBags = 0x3354, SortBankBags = 0x3355, @@ -769,10 +775,10 @@ namespace Framework.Constants StartSpectatorWarGame = 0x35df, StartWarGame = 0x35de, StoreGuildBankItem = 0x34be, - SubmitUserFeedback = 0x3693, + SubmitUserFeedback = 0x3691, SubscriptionInterstitialResponse = 0x33e2, - SummonResponse = 0x366a, - SupportTicketSubmitComplaint = 0x3646, + SummonResponse = 0x3668, + SupportTicketSubmitComplaint = 0x3644, SurrenderArena = 0x3174, SuspendCommsAck = 0x3764, SuspendTokenResponse = 0x376a, @@ -780,7 +786,7 @@ namespace Framework.Constants SwapInvItem = 0x399d, SwapItem = 0x399c, SwapItemWithGuildBankItem = 0x34bf, - SwapSubGroups = 0x364d, + SwapSubGroups = 0x364b, SwapVoidItem = 0x31a5, TabardVendorActivate = 0x32c4, TalkToGossip = 0x3498, @@ -791,36 +797,36 @@ namespace Framework.Constants TimeSyncResponse = 0x3a3d, TimeSyncResponseDropped = 0x3a3f, TimeSyncResponseFailed = 0x3a3e, - ToggleDifficulty = 0x3657, + ToggleDifficulty = 0x3655, TogglePvp = 0x32c6, TotemDestroyed = 0x3506, - ToyClearFanfare = 0x312e, + ToyClearFanfare = 0x312d, TradeSkillSetFavorite = 0x336f, TrainerBuySpell = 0x34b4, TrainerList = 0x34b3, - TraitsCommitConfig = 0x3401, - TraitsTalentTestUnlearnSpells = 0x33ff, + TraitsCommitConfig = 0x3408, + TraitsTalentTestUnlearnSpells = 0x3406, TransmogrifyItems = 0x3198, TurnInPetition = 0x3548, - Tutorial = 0x36da, - TwitterCheckStatus = 0x312a, - TwitterConnect = 0x3127, - TwitterDisconnect = 0x312b, + Tutorial = 0x36d8, + TwitterCheckStatus = 0x3129, + TwitterConnect = 0x3126, + TwitterDisconnect = 0x312a, UiMapQuestLinesRequest = 0x33b2, UnacceptTrade = 0x315b, - UndeleteCharacter = 0x36dc, + UndeleteCharacter = 0x36da, UnlearnSkill = 0x34f3, UnlearnSpecialization = 0x31a6, UnlockVoidStorage = 0x31a2, - UpdateAadcStatus = 0x3737, - UpdateAccountData = 0x3695, + UpdateAadcStatus = 0x3735, + UpdateAccountData = 0x3693, UpdateAreaTriggerVisual = 0x32b6, - UpdateClientSettings = 0x3664, + UpdateClientSettings = 0x3662, UpdateCraftingNpcRecipes = 0x3323, UpdateMissileTrajectory = 0x3a43, - UpdateRaidTarget = 0x3650, + UpdateRaidTarget = 0x364e, UpdateSpellVisual = 0x32b5, - UpdateVasPurchaseStates = 0x36f1, + UpdateVasPurchaseStates = 0x36ef, UpgradeGarrison = 0x32d9, UpgradeRuneforgeLegendary = 0x33e0, UsedFollow = 0x3187, @@ -828,17 +834,17 @@ namespace Framework.Constants UseEquipmentSet = 0x3995, UseItem = 0x32af, UseToy = 0x32b2, - VasCheckTransferOk = 0x3709, - VasGetQueueMinutes = 0x3708, - VasGetServiceStatus = 0x3707, + VasCheckTransferOk = 0x3707, + VasGetQueueMinutes = 0x3706, + VasGetServiceStatus = 0x3705, ViolenceLevel = 0x3185, - VoiceChannelSttTokenRequest = 0x370d, - VoiceChatJoinChannel = 0x370e, - VoiceChatLogin = 0x370c, + VoiceChannelSttTokenRequest = 0x370b, + VoiceChatJoinChannel = 0x370c, + VoiceChatLogin = 0x370a, VoidStorageTransfer = 0x31a4, Warden3Data = 0x35ec, - Who = 0x3681, - WhoIs = 0x3680, + Who = 0x367f, + WhoIs = 0x367e, WorldPortResponse = 0x35f9, WrapItem = 0x3994, @@ -849,75 +855,76 @@ namespace Framework.Constants public enum ServerOpcodes : uint { AbortNewWorld = 0x259c, - AccountCosmeticAdded = 0x287b, - AccountCriteriaUpdate = 0x2861, - AccountDataTimes = 0x2704, + AccountCosmeticAdded = 0x287c, + AccountCriteriaUpdate = 0x2862, + AccountDataTimes = 0x2705, + AccountMountRemoved = 0x25b0, AccountMountUpdate = 0x25af, - AccountNotificationsResponse = 0x287a, - AccountToyUpdate = 0x25b0, - AccountTransmogSetFavoritesUpdate = 0x25b3, - AccountTransmogUpdate = 0x25b2, - AchievementDeleted = 0x26e2, - AchievementEarned = 0x2640, + AccountNotificationsResponse = 0x287b, + AccountToyUpdate = 0x25b1, + AccountTransmogSetFavoritesUpdate = 0x25b4, + AccountTransmogUpdate = 0x25b3, + AchievementDeleted = 0x26e3, + AchievementEarned = 0x2641, ActivateEssenceFailed = 0x3015, ActivateSoulbindFailed = 0x3017, - ActivateTaxiReply = 0x267a, + ActivateTaxiReply = 0x267b, ActiveGlyphs = 0x2c57, - AddonListRequest = 0x263f, - AddBattlenetFriendResponse = 0x263a, + AddonListRequest = 0x2640, + AddBattlenetFriendResponse = 0x263b, AddItemPassive = 0x25ab, - AddLossOfControl = 0x266e, - AddRunePower = 0x26b4, - AdjustSplineDuration = 0x25cf, - AdvancedCombatLog = 0x2877, - AdventureJournalDataResponse = 0x2871, - AeLootTargets = 0x2615, - AeLootTargetAck = 0x2616, - AiReaction = 0x26b1, - AlliedRaceDetails = 0x27f4, + AddLossOfControl = 0x266f, + AddRunePower = 0x26b5, + AdjustSplineDuration = 0x25d0, + AdvancedCombatLog = 0x2878, + AdventureJournalDataResponse = 0x2872, + AeLootTargets = 0x2616, + AeLootTargetAck = 0x2617, + AiReaction = 0x26b2, + AlliedRaceDetails = 0x27f5, AllAccountCriteria = 0x2571, AllAchievementData = 0x2570, AllGuildAchievements = 0x29b8, - ApplyMountEquipmentResult = 0x284e, + ApplyMountEquipmentResult = 0x284f, ArchaeologySurveryCast = 0x2588, AreaPoiUpdateResponse = 0x3010, - AreaSpiritHealerTime = 0x2739, + AreaSpiritHealerTime = 0x273a, AreaTriggerDenied = 0x2902, AreaTriggerForceSetPositionAndFacing = 0x28ff, - AreaTriggerNoCorpse = 0x2710, + AreaTriggerNoCorpse = 0x2711, AreaTriggerPlaySpellVisual = 0x28fe, AreaTriggerRePath = 0x28fd, AreaTriggerReShape = 0x2901, AreaTriggerUnattach = 0x2900, - ArenaClearOpponents = 0x2646, - ArenaCrowdControlSpellResult = 0x262f, - ArenaPrepOpponentSpecializations = 0x2645, - ArtifactEndgamePowersRefunded = 0x279e, - ArtifactForgeError = 0x279c, - ArtifactRespecPrompt = 0x279d, - ArtifactXpGain = 0x27e7, + ArenaClearOpponents = 0x2647, + ArenaCrowdControlSpellResult = 0x2630, + ArenaPrepOpponentSpecializations = 0x2646, + ArtifactEndgamePowersRefunded = 0x279f, + ArtifactForgeError = 0x279d, + ArtifactRespecPrompt = 0x279e, + ArtifactXpGain = 0x27e8, AttackerStateUpdate = 0x294d, AttackStart = 0x2938, AttackStop = 0x2939, AttackSwingError = 0x2947, AttackSwingLandedLog = 0x2948, - AuctionableTokenAuctionSold = 0x27d0, - AuctionableTokenSellAtMarketPriceResponse = 0x27cf, - AuctionableTokenSellConfirmRequired = 0x27ce, - AuctionClosedNotification = 0x26ed, - AuctionCommandResult = 0x26ea, - AuctionDisableNewPostings = 0x288d, - AuctionFavoriteList = 0x2868, - AuctionGetCommodityQuoteResult = 0x285f, - AuctionHelloResponse = 0x26e8, - AuctionListBiddedItemsResult = 0x285e, - AuctionListBucketsResult = 0x285b, - AuctionListItemsResult = 0x285c, - AuctionListOwnedItemsResult = 0x285d, - AuctionOutbidNotification = 0x26ec, - AuctionOwnerBidNotification = 0x26ee, - AuctionReplicateResponse = 0x26e9, - AuctionWonNotification = 0x26eb, + AuctionableTokenAuctionSold = 0x27d1, + AuctionableTokenSellAtMarketPriceResponse = 0x27d0, + AuctionableTokenSellConfirmRequired = 0x27cf, + AuctionClosedNotification = 0x26ee, + AuctionCommandResult = 0x26eb, + AuctionDisableNewPostings = 0x2895, + AuctionFavoriteList = 0x2869, + AuctionGetCommodityQuoteResult = 0x2860, + AuctionHelloResponse = 0x26e9, + AuctionListBiddedItemsResult = 0x285f, + AuctionListBucketsResult = 0x285c, + AuctionListItemsResult = 0x285d, + AuctionListOwnedItemsResult = 0x285e, + AuctionOutbidNotification = 0x26ed, + AuctionOwnerBidNotification = 0x26ef, + AuctionReplicateResponse = 0x26ea, + AuctionWonNotification = 0x26ec, AuraPointsDepleted = 0x2c23, AuraUpdate = 0x2c22, AuthChallenge = 0x3048, @@ -925,8 +932,8 @@ namespace Framework.Constants AuthResponse = 0x256d, AvailableHotfixes = 0x290f, BagCleanupFinished = 0x2da7, - BarberShopResult = 0x26b9, - BatchPresenceSubscription = 0x283f, + BarberShopResult = 0x26ba, + BatchPresenceSubscription = 0x2840, BattlefieldList = 0x2927, BattlefieldPortDenied = 0x292d, BattlefieldStatusActive = 0x2923, @@ -942,112 +949,112 @@ namespace Framework.Constants BattlegroundPlayerLeft = 0x292c, BattlegroundPlayerPositions = 0x2928, BattlegroundPoints = 0x2949, - BattlenetChallengeAbort = 0x2783, - BattlenetChallengeStart = 0x2782, - BattlenetNotification = 0x2800, - BattlenetResponse = 0x27ff, - BattleNetConnectionStatus = 0x2801, - BattlePayAckFailed = 0x277d, - BattlePayBattlePetDelivered = 0x2772, - BattlePayCollectionItemDelivered = 0x2773, - BattlePayConfirmPurchase = 0x277c, - BattlePayDeliveryEnded = 0x2770, - BattlePayDeliveryStarted = 0x276f, - BattlePayDistributionAssignVasResponse = 0x2880, - BattlePayDistributionUnrevoked = 0x276d, - BattlePayDistributionUpdate = 0x276e, - BattlePayGetDistributionListResponse = 0x276c, - BattlePayGetProductListResponse = 0x276a, - BattlePayGetPurchaseListResponse = 0x276b, - BattlePayMountDelivered = 0x2771, - BattlePayPurchaseUpdate = 0x277b, - BattlePayStartCheckout = 0x281c, - BattlePayStartDistributionAssignToTargetResponse = 0x2779, - BattlePayStartPurchaseResponse = 0x2778, - BattlePayValidatePurchaseResponse = 0x2810, - BattlePetsHealed = 0x25f1, - BattlePetCageDateError = 0x2675, - BattlePetDeleted = 0x25ee, - BattlePetError = 0x2635, - BattlePetJournal = 0x25ed, - BattlePetJournalLockAcquired = 0x25eb, - BattlePetJournalLockDenied = 0x25ec, - BattlePetLicenseChanged = 0x25f2, - BattlePetRestored = 0x25f0, - BattlePetRevoked = 0x25ef, - BattlePetTrapLevel = 0x25e9, - BattlePetUpdates = 0x25e8, + BattlenetChallengeAbort = 0x2784, + BattlenetChallengeStart = 0x2783, + BattlenetNotification = 0x2801, + BattlenetResponse = 0x2800, + BattleNetConnectionStatus = 0x2802, + BattlePayAckFailed = 0x277e, + BattlePayBattlePetDelivered = 0x2773, + BattlePayCollectionItemDelivered = 0x2774, + BattlePayConfirmPurchase = 0x277d, + BattlePayDeliveryEnded = 0x2771, + BattlePayDeliveryStarted = 0x2770, + BattlePayDistributionAssignVasResponse = 0x2881, + BattlePayDistributionUnrevoked = 0x276e, + BattlePayDistributionUpdate = 0x276f, + BattlePayGetDistributionListResponse = 0x276d, + BattlePayGetProductListResponse = 0x276b, + BattlePayGetPurchaseListResponse = 0x276c, + BattlePayMountDelivered = 0x2772, + BattlePayPurchaseUpdate = 0x277c, + BattlePayStartCheckout = 0x281d, + BattlePayStartDistributionAssignToTargetResponse = 0x277a, + BattlePayStartPurchaseResponse = 0x2779, + BattlePayValidatePurchaseResponse = 0x2811, + BattlePetsHealed = 0x25f2, + BattlePetCageDateError = 0x2676, + BattlePetDeleted = 0x25ef, + BattlePetError = 0x2636, + BattlePetJournal = 0x25ee, + BattlePetJournalLockAcquired = 0x25ec, + BattlePetJournalLockDenied = 0x25ed, + BattlePetLicenseChanged = 0x25f3, + BattlePetRestored = 0x25f1, + BattlePetRevoked = 0x25f0, + BattlePetTrapLevel = 0x25ea, + BattlePetUpdates = 0x25e9, BindPointUpdate = 0x257d, - BlackMarketBidOnItemResult = 0x2625, - BlackMarketOutbid = 0x2626, - BlackMarketRequestItemsResult = 0x2624, - BlackMarketWon = 0x2627, - BonusRollEmpty = 0x2642, + BlackMarketBidOnItemResult = 0x2626, + BlackMarketOutbid = 0x2627, + BlackMarketRequestItemsResult = 0x2625, + BlackMarketWon = 0x2628, + BonusRollEmpty = 0x2643, BossKill = 0x294c, BreakTarget = 0x2937, BroadcastAchievement = 0x2bbc, - BroadcastSummonCast = 0x2841, - BroadcastSummonResponse = 0x2842, - BuyFailed = 0x26c2, - BuySucceeded = 0x26c1, + BroadcastSummonCast = 0x2842, + BroadcastSummonResponse = 0x2843, + BuyFailed = 0x26c3, + BuySucceeded = 0x26c2, CacheInfo = 0x291d, CacheVersion = 0x291c, - CalendarClearPendingAction = 0x269a, - CalendarCommandResult = 0x269b, - CalendarCommunityInvite = 0x268a, - CalendarEventRemovedAlert = 0x2692, - CalendarEventUpdatedAlert = 0x2693, - CalendarInviteAdded = 0x268b, - CalendarInviteAlert = 0x268f, - CalendarInviteNotes = 0x2694, - CalendarInviteNotesAlert = 0x2695, - CalendarInviteRemoved = 0x268c, - CalendarInviteRemovedAlert = 0x2691, - CalendarInviteStatus = 0x268d, - CalendarInviteStatusAlert = 0x2690, - CalendarModeratorStatus = 0x268e, - CalendarRaidLockoutAdded = 0x2696, - CalendarRaidLockoutRemoved = 0x2697, - CalendarRaidLockoutUpdated = 0x2698, - CalendarSendCalendar = 0x2688, - CalendarSendEvent = 0x2689, - CalendarSendNumPending = 0x2699, - CameraEffect = 0x271f, - CancelAutoRepeat = 0x26d8, + CalendarClearPendingAction = 0x269b, + CalendarCommandResult = 0x269c, + CalendarCommunityInvite = 0x268b, + CalendarEventRemovedAlert = 0x2693, + CalendarEventUpdatedAlert = 0x2694, + CalendarInviteAdded = 0x268c, + CalendarInviteAlert = 0x2690, + CalendarInviteNotes = 0x2695, + CalendarInviteNotesAlert = 0x2696, + CalendarInviteRemoved = 0x268d, + CalendarInviteRemovedAlert = 0x2692, + CalendarInviteStatus = 0x268e, + CalendarInviteStatusAlert = 0x2691, + CalendarModeratorStatus = 0x268f, + CalendarRaidLockoutAdded = 0x2697, + CalendarRaidLockoutRemoved = 0x2698, + CalendarRaidLockoutUpdated = 0x2699, + CalendarSendCalendar = 0x2689, + CalendarSendEvent = 0x268a, + CalendarSendNumPending = 0x269a, + CameraEffect = 0x2720, + CancelAutoRepeat = 0x26d9, CancelCombat = 0x2946, CancelOrphanSpellVisual = 0x2c49, CancelPreloadWorld = 0x259a, - CancelScene = 0x2634, + CancelScene = 0x2635, CancelSpellVisual = 0x2c47, CancelSpellVisualKit = 0x2c4b, CanDuelResult = 0x2942, - CanRedeemTokenForBalanceResponse = 0x280f, + CanRedeemTokenForBalanceResponse = 0x2810, CapturePointRemoved = 0x292a, CastFailed = 0x2c5a, CategoryCooldown = 0x2c16, - ChainMissileBounce = 0x25c7, - ChallengeModeComplete = 0x2609, - ChallengeModeRequestLeadersResult = 0x260d, - ChallengeModeReset = 0x2608, - ChallengeModeStart = 0x2606, - ChallengeModeUpdateDeathCount = 0x2607, + ChainMissileBounce = 0x25c8, + ChallengeModeComplete = 0x260a, + ChallengeModeRequestLeadersResult = 0x260e, + ChallengeModeReset = 0x2609, + ChallengeModeStart = 0x2607, + ChallengeModeUpdateDeathCount = 0x2608, ChangePlayerDifficultyResult = 0x3004, - ChangeRealmTicketResponse = 0x2802, + ChangeRealmTicketResponse = 0x2803, ChannelList = 0x2bc3, ChannelNotify = 0x2bc0, ChannelNotifyJoined = 0x2bc1, ChannelNotifyLeft = 0x2bc2, - CharacterCheckUpgradeResult = 0x27b9, - CharacterLoginFailed = 0x26ff, - CharacterObjectTestResponse = 0x2781, - CharacterRenameResult = 0x275c, - CharacterUpgradeAborted = 0x27b8, - CharacterUpgradeComplete = 0x27b7, - CharacterUpgradeManualUnrevokeResult = 0x27ba, - CharacterUpgradeStarted = 0x27b6, - CharCustomizeFailure = 0x26dc, - CharCustomizeSuccess = 0x26dd, - CharFactionChangeResult = 0x27a3, + CharacterCheckUpgradeResult = 0x27ba, + CharacterLoginFailed = 0x2700, + CharacterObjectTestResponse = 0x2782, + CharacterRenameResult = 0x275d, + CharacterUpgradeAborted = 0x27b9, + CharacterUpgradeComplete = 0x27b8, + CharacterUpgradeManualUnrevokeResult = 0x27bb, + CharacterUpgradeStarted = 0x27b7, + CharCustomizeFailure = 0x26dd, + CharCustomizeSuccess = 0x26de, + CharFactionChangeResult = 0x27a4, Chat = 0x2bad, ChatAutoResponded = 0x2bb8, ChatDown = 0x2bbd, @@ -1064,95 +1071,96 @@ namespace Framework.Constants CheckAbandonNpe = 0x3018, CheckCharacterNameAvailabilityResult = 0x2584, CheckWargameEntry = 0x2592, - ChromieTimeSelectExpansionSuccess = 0x286b, - ClaimRafRewardResponse = 0x2852, + ChromieTimeSelectExpansionSuccess = 0x286c, + ClaimRafRewardResponse = 0x2853, ClearAllSpellCharges = 0x2c27, - ClearBossEmotes = 0x25ba, - ClearCooldown = 0x26b6, + ClearBossEmotes = 0x25bb, + ClearCooldown = 0x26b7, ClearCooldowns = 0x2c26, ClearResurrect = 0x257f, ClearSpellCharges = 0x2c28, ClearTarget = 0x2943, ClearTreasurePickerCache = 0x2aa1, - CloseArtifactForge = 0x279b, - ClubFinderErrorMessage = 0x284a, - ClubFinderGetClubPostingIdsResponse = 0x284d, - ClubFinderLookupClubPostingsList = 0x284b, - ClubFinderResponseCharacterApplicationList = 0x2848, - ClubFinderResponsePostRecruitmentMessage = 0x284c, - ClubFinderUpdateApplications = 0x2849, - ClubFinderWhisperApplicantResponse = 0x2887, - CoinRemoved = 0x2614, + CloseArtifactForge = 0x279c, + ClubFinderErrorMessage = 0x284b, + ClubFinderGetClubPostingIdsResponse = 0x284e, + ClubFinderLookupClubPostingsList = 0x284c, + ClubFinderResponseCharacterApplicationList = 0x2849, + ClubFinderResponsePostRecruitmentMessage = 0x284d, + ClubFinderUpdateApplications = 0x284a, + ClubFinderWhisperApplicantResponse = 0x288f, + CoinRemoved = 0x2615, CombatEventFailed = 0x293a, - CommentatorMapInfo = 0x2701, - CommentatorPlayerInfo = 0x2702, - CommentatorStateChanged = 0x2700, - CommerceTokenGetCountResponse = 0x27cb, - CommerceTokenGetLogResponse = 0x27d7, - CommerceTokenGetMarketPriceResponse = 0x27cd, - CommerceTokenUpdate = 0x27cc, - ComplaintResult = 0x26a8, - CompleteShipmentResponse = 0x2794, - ConfirmPartyInvite = 0x280e, + CommentatorMapInfo = 0x2702, + CommentatorPlayerInfo = 0x2703, + CommentatorStateChanged = 0x2701, + CommerceTokenGetCountResponse = 0x27cc, + CommerceTokenGetLogResponse = 0x27d8, + CommerceTokenGetMarketPriceResponse = 0x27ce, + CommerceTokenUpdate = 0x27cd, + ComplaintResult = 0x26a9, + CompleteShipmentResponse = 0x2795, + ConfirmPartyInvite = 0x280f, ConnectTo = 0x304d, - ConquestFormulaConstants = 0x277e, - ConsoleWrite = 0x2632, - ConsumableTokenBuyAtMarketPriceResponse = 0x27d3, - ConsumableTokenBuyChoiceRequired = 0x27d2, - ConsumableTokenCanVeteranBuyResponse = 0x27d1, - ConsumableTokenRedeemConfirmRequired = 0x27d5, - ConsumableTokenRedeemResponse = 0x27d6, - ContactList = 0x277f, - ContributionLastUpdateResponse = 0x2815, - ControlUpdate = 0x2644, - ConvertItemsToCurrencyValue = 0x2874, - CooldownCheat = 0x2732, - CooldownEvent = 0x26b5, - CorpseLocation = 0x264c, - CorpseReclaimDelay = 0x2743, - CorpseTransportQuery = 0x270c, + ConquestFormulaConstants = 0x277f, + ConsoleWrite = 0x2633, + ConsumableTokenBuyAtMarketPriceResponse = 0x27d4, + ConsumableTokenBuyChoiceRequired = 0x27d3, + ConsumableTokenCanVeteranBuyResponse = 0x27d2, + ConsumableTokenRedeemConfirmRequired = 0x27d6, + ConsumableTokenRedeemResponse = 0x27d7, + ContactList = 0x2780, + ContributionLastUpdateResponse = 0x2816, + ControlUpdate = 0x2645, + ConvertItemsToCurrencyValue = 0x2875, + CooldownCheat = 0x2733, + CooldownEvent = 0x26b6, + CorpseLocation = 0x264d, + CorpseReclaimDelay = 0x2744, + CorpseTransportQuery = 0x270d, CovenantCallingsAvailabilityResponse = 0x2aa3, - CovenantPreviewOpenNpc = 0x27f7, - CovenantRenownSendCatchupState = 0x2875, - CraftingHouseHelloResponse = 0x289e, - CraftingOrderCancelResult = 0x289a, - CraftingOrderClaimResult = 0x2896, - CraftingOrderCraftResult = 0x2898, - CraftingOrderCreateResult = 0x2894, - CraftingOrderFulfillResult = 0x2899, - CraftingOrderListOrdersResponse = 0x2895, - CraftingOrderRejectResult = 0x289c, - CraftingOrderReleaseResult = 0x2897, - CraftingOrderUpdateState = 0x289f, - CraftEnchantResult = 0x289d, - CreateChar = 0x26fb, - CreateShipmentResponse = 0x2793, - CriteriaDeleted = 0x26e1, - CriteriaUpdate = 0x26db, - CrossedInebriationThreshold = 0x26bd, - CustomLoadScreen = 0x25ca, + CovenantPreviewOpenNpc = 0x27f8, + CovenantRenownSendCatchupState = 0x2876, + CraftingHouseHelloResponse = 0x28a6, + CraftingOrderCancelResult = 0x28a2, + CraftingOrderClaimResult = 0x289e, + CraftingOrderCraftResult = 0x28a0, + CraftingOrderCreateResult = 0x289c, + CraftingOrderFulfillResult = 0x28a1, + CraftingOrderListOrdersResponse = 0x289d, + CraftingOrderRejectResult = 0x28a4, + CraftingOrderReleaseResult = 0x289f, + CraftingOrderUpdateState = 0x28a7, + CraftEnchantResult = 0x28a5, + CreateChar = 0x26fc, + CreateShipmentResponse = 0x2794, + CreatorVisualsOverride = 0x28aa, + CriteriaDeleted = 0x26e2, + CriteriaUpdate = 0x26dc, + CrossedInebriationThreshold = 0x26be, + CustomLoadScreen = 0x25cb, DailyQuestsReset = 0x2a80, - DamageCalcLog = 0x27c0, + DamageCalcLog = 0x27c1, DbReply = 0x290e, - DeathReleaseLoc = 0x26ce, - DebugMenuManagerFullUpdate = 0x2652, + DeathReleaseLoc = 0x26cf, + DebugMenuManagerFullUpdate = 0x2653, DefenseMessage = 0x2bb6, - DeleteChar = 0x26fc, + DeleteChar = 0x26fd, DeleteExpiredMissionsResult = 0x2980, - DestroyArenaUnit = 0x273b, - DestructibleBuildingDamage = 0x26f3, + DestroyArenaUnit = 0x273c, + DestructibleBuildingDamage = 0x26f4, DifferentInstanceFromParty = 0x258c, DisenchantCredit = 0x25a8, DismountResult = 0x257c, DispelFailed = 0x2c30, DisplayGameError = 0x25a1, DisplayPlayerChoice = 0x2ffc, - DisplayPromotion = 0x2649, + DisplayPromotion = 0x264a, DisplayQuestPopup = 0x2a9e, - DisplaySoulbindUpdateMessage = 0x2879, - DisplayToast = 0x2621, - DisplayWorldText = 0x27e8, - DontAutoPushSpellsToActionBar = 0x25df, + DisplaySoulbindUpdateMessage = 0x287a, + DisplayToast = 0x2622, + DisplayWorldText = 0x27e9, + DontAutoPushSpellsToActionBar = 0x25e0, DropNewConnection = 0x304c, DuelArranged = 0x293c, DuelComplete = 0x2940, @@ -1161,50 +1169,50 @@ namespace Framework.Constants DuelOutOfBounds = 0x293d, DuelRequested = 0x293b, DuelWinner = 0x2941, - DurabilityDamageDeath = 0x273f, - Emote = 0x27c1, - EnableBarberShop = 0x26b8, - EnchantmentLog = 0x270d, - EncounterEnd = 0x2777, - EncounterStart = 0x2776, - EndLightningStorm = 0x26a5, - EnsureWorldLoaded = 0x2881, + DurabilityDamageDeath = 0x2740, + Emote = 0x27c2, + EnableBarberShop = 0x26b9, + EnchantmentLog = 0x270e, + EncounterEnd = 0x2778, + EncounterStart = 0x2777, + EndLightningStorm = 0x26a6, + EnsureWorldLoaded = 0x2889, EnterEncryptedMode = 0x3049, EnumCharactersResult = 0x2583, - EnumVasPurchaseStatesResponse = 0x27ed, + EnumVasPurchaseStatesResponse = 0x27ee, EnvironmentalDamageLog = 0x2c21, - EquipmentSetId = 0x26ae, + EquipmentSetId = 0x26af, ExpectedSpamRecords = 0x2bb1, - ExplorationExperience = 0x2758, - ExternalTransactionIdGenerated = 0x2872, - FactionBonusInfo = 0x271e, + ExplorationExperience = 0x2759, + ExternalTransactionIdGenerated = 0x2873, + FactionBonusInfo = 0x271f, FailedPlayerCondition = 0x2ffa, - FailedQuestTurnIn = 0x280b, - FeatureSystemStatus = 0x25be, - FeatureSystemStatusGlueScreen = 0x25bf, - FeignDeathResisted = 0x273e, - FishEscaped = 0x26cb, - FishNotHooked = 0x26ca, + FailedQuestTurnIn = 0x280c, + FeatureSystemStatus = 0x25bf, + FeatureSystemStatusGlueScreen = 0x25c0, + FeignDeathResisted = 0x273f, + FishEscaped = 0x26cc, + FishNotHooked = 0x26cb, FlightSplineSync = 0x2e2b, - ForcedDeathUpdate = 0x26cf, - ForceAnim = 0x274a, - ForceAnimations = 0x274b, - ForceObjectRelink = 0x2648, - FriendStatus = 0x2780, - GainMawPower = 0x27dc, - GameObjectActivateAnimKit = 0x25c2, - GameObjectBase = 0x2822, - GameObjectCloseInteraction = 0x2885, - GameObjectCustomAnim = 0x25c3, - GameObjectDespawn = 0x25c4, - GameObjectInteraction = 0x2884, + ForcedDeathUpdate = 0x26d0, + ForceAnim = 0x274b, + ForceAnimations = 0x274c, + ForceObjectRelink = 0x2649, + FriendStatus = 0x2781, + GainMawPower = 0x27dd, + GameObjectActivateAnimKit = 0x25c3, + GameObjectBase = 0x2823, + GameObjectCloseInteraction = 0x288d, + GameObjectCustomAnim = 0x25c4, + GameObjectDespawn = 0x25c5, + GameObjectInteraction = 0x288c, GameObjectPlaySpellVisual = 0x2c4e, GameObjectPlaySpellVisualKit = 0x2c4d, - GameObjectResetState = 0x2718, - GameObjectSetStateLocal = 0x27fe, - GameSpeedSet = 0x267e, - GameTimeSet = 0x2706, - GameTimeUpdate = 0x2705, + GameObjectResetState = 0x2719, + GameObjectSetStateLocal = 0x27ff, + GameSpeedSet = 0x267f, + GameTimeSet = 0x2707, + GameTimeUpdate = 0x2706, GarrisonActivateMissionBonusAbility = 0x2982, GarrisonAddEvent = 0x29a6, GarrisonAddFollowerResult = 0x2974, @@ -1276,35 +1284,35 @@ namespace Framework.Constants GarrisonUpgradeResult = 0x296b, GarrisonUseRecallPortalResult = 0x297d, GenerateRandomCharacterNameResult = 0x2585, - GenerateSsoTokenResponse = 0x2816, - GetAccountCharacterListResult = 0x275a, + GenerateSsoTokenResponse = 0x2817, + GetAccountCharacterListResult = 0x275b, GetGarrisonInfoResult = 0x295e, - GetLandingPageShipmentsResponse = 0x2796, - GetRemainingGameTimeResponse = 0x27d4, - GetSelectedTrophyIdResponse = 0x27be, - GetShipmentsOfTypeResponse = 0x2795, - GetShipmentInfoResponse = 0x2791, - GetTrophyListResponse = 0x27bd, - GetVasAccountCharacterListResult = 0x27e9, - GetVasTransferTargetRealmListResult = 0x27ea, + GetLandingPageShipmentsResponse = 0x2797, + GetRemainingGameTimeResponse = 0x27d5, + GetSelectedTrophyIdResponse = 0x27bf, + GetShipmentsOfTypeResponse = 0x2796, + GetShipmentInfoResponse = 0x2792, + GetTrophyListResponse = 0x27be, + GetVasAccountCharacterListResult = 0x27ea, + GetVasTransferTargetRealmListResult = 0x27eb, GmPlayerInfo = 0x3005, GmRequestPlayerInfo = 0x2ffb, - GmTicketCaseStatus = 0x26a0, - GmTicketSystemStatus = 0x269f, - GodMode = 0x26f6, + GmTicketCaseStatus = 0x26a1, + GmTicketSystemStatus = 0x26a0, + GodMode = 0x26f7, GossipComplete = 0x2a97, GossipMessage = 0x2a98, GossipOptionNpcInteraction = 0x2aa7, - GossipPoi = 0x278e, + GossipPoi = 0x278f, GossipQuestUpdate = 0x2a99, GossipRefreshOptions = 0x2aa6, GroupActionThrottled = 0x2590, - GroupAutoKick = 0x278b, - GroupDecline = 0x2787, - GroupDestroyed = 0x278a, - GroupNewLeader = 0x262a, - GroupRequestDecline = 0x2788, - GroupUninvite = 0x2789, + GroupAutoKick = 0x278c, + GroupDecline = 0x2788, + GroupDestroyed = 0x278b, + GroupNewLeader = 0x262b, + GroupRequestDecline = 0x2789, + GroupUninvite = 0x278a, GuildAchievementDeleted = 0x29c5, GuildAchievementEarned = 0x29c4, GuildAchievementMembers = 0x29c7, @@ -1358,59 +1366,59 @@ namespace Framework.Constants GuildRoster = 0x29bb, GuildRosterUpdate = 0x29bc, GuildSendRankChange = 0x29b9, - HealthUpdate = 0x26cc, - HighestThreatUpdate = 0x26d4, + HealthUpdate = 0x26cd, + HighestThreatUpdate = 0x26d5, HotfixConnect = 0x2911, HotfixMessage = 0x2910, - InitializeFactions = 0x271d, + InitializeFactions = 0x271e, InitialSetup = 0x2580, - InitWorldStates = 0x2740, - InspectResult = 0x262e, - InstanceEncounterChangePriority = 0x27a9, - InstanceEncounterDisengageUnit = 0x27a8, - InstanceEncounterEnd = 0x27b1, - InstanceEncounterEngageUnit = 0x27a7, - InstanceEncounterGainCombatResurrectionCharge = 0x27b3, - InstanceEncounterInCombatResurrection = 0x27b2, - InstanceEncounterObjectiveComplete = 0x27ac, - InstanceEncounterObjectiveStart = 0x27ab, - InstanceEncounterObjectiveUpdate = 0x27b0, - InstanceEncounterPhaseShiftChanged = 0x27b4, - InstanceEncounterStart = 0x27ad, - InstanceEncounterTimerStart = 0x27aa, - InstanceEncounterUpdateAllowReleaseInProgress = 0x27af, - InstanceEncounterUpdateSuppressRelease = 0x27ae, - InstanceGroupSizeChanged = 0x26f4, - InstanceInfo = 0x2631, - InstanceReset = 0x2683, - InstanceResetFailed = 0x2684, - InstanceSaveCreated = 0x2775, + InitWorldStates = 0x2741, + InspectResult = 0x262f, + InstanceEncounterChangePriority = 0x27aa, + InstanceEncounterDisengageUnit = 0x27a9, + InstanceEncounterEnd = 0x27b2, + InstanceEncounterEngageUnit = 0x27a8, + InstanceEncounterGainCombatResurrectionCharge = 0x27b4, + InstanceEncounterInCombatResurrection = 0x27b3, + InstanceEncounterObjectiveComplete = 0x27ad, + InstanceEncounterObjectiveStart = 0x27ac, + InstanceEncounterObjectiveUpdate = 0x27b1, + InstanceEncounterPhaseShiftChanged = 0x27b5, + InstanceEncounterStart = 0x27ae, + InstanceEncounterTimerStart = 0x27ab, + InstanceEncounterUpdateAllowReleaseInProgress = 0x27b0, + InstanceEncounterUpdateSuppressRelease = 0x27af, + InstanceGroupSizeChanged = 0x26f5, + InstanceInfo = 0x2632, + InstanceReset = 0x2684, + InstanceResetFailed = 0x2685, + InstanceSaveCreated = 0x2776, InterruptPowerRegen = 0x2c5c, InvalidatePageText = 0x2918, InvalidatePlayer = 0x2fff, - InvalidPromotionCode = 0x274c, + InvalidPromotionCode = 0x274d, InventoryChangeFailure = 0x2da5, - InventoryFixupComplete = 0x280d, - InventoryFullOverflow = 0x281e, - IslandAzeriteGain = 0x2755, - IslandComplete = 0x2756, + InventoryFixupComplete = 0x280e, + InventoryFullOverflow = 0x281f, + IslandAzeriteGain = 0x2756, + IslandComplete = 0x2757, IsQuestCompleteResponse = 0x2a84, - ItemChanged = 0x26e5, - ItemCooldown = 0x27bf, - ItemEnchantTimeUpdate = 0x274e, + ItemChanged = 0x26e6, + ItemCooldown = 0x27c0, + ItemEnchantTimeUpdate = 0x274f, ItemExpirePurchaseRefund = 0x25a0, - ItemInteractionComplete = 0x286a, + ItemInteractionComplete = 0x286b, ItemPurchaseRefundResult = 0x259e, - ItemPushResult = 0x2620, - ItemTimeUpdate = 0x274d, - KickReason = 0x2686, - LatencyReportPing = 0x287c, + ItemPushResult = 0x2621, + ItemTimeUpdate = 0x274e, + KickReason = 0x2687, + LatencyReportPing = 0x287d, LearnedSpells = 0x2c50, - LearnPvpTalentFailed = 0x25d3, - LearnTalentFailed = 0x25d2, - LegacyLootRules = 0x2823, - LevelLinkingResult = 0x2850, - LevelUpInfo = 0x26e3, + LearnPvpTalentFailed = 0x25d4, + LearnTalentFailed = 0x25d3, + LegacyLootRules = 0x2824, + LevelLinkingResult = 0x2851, + LevelUpInfo = 0x26e4, LfgBootPlayer = 0x2a35, LfgDisabled = 0x2a33, LfgExpandSearchPrompt = 0x2a3b, @@ -1438,46 +1446,46 @@ namespace Framework.Constants LfgSlotInvalid = 0x2a30, LfgTeleportDenied = 0x2a32, LfgUpdateStatus = 0x2a24, - LiveRegionAccountRestoreResult = 0x2767, - LiveRegionCharacterCopyResult = 0x2766, - LiveRegionGetAccountCharacterListResult = 0x275b, - LiveRegionKeyBindingsCopyResult = 0x2768, - LoadCufProfiles = 0x25bb, - LoadEquipmentSet = 0x2708, - LobbyMatchmakerPartyInfo = 0x2889, - LoginSetTimeSpeed = 0x2707, + LiveRegionAccountRestoreResult = 0x2768, + LiveRegionCharacterCopyResult = 0x2767, + LiveRegionGetAccountCharacterListResult = 0x275c, + LiveRegionKeyBindingsCopyResult = 0x2769, + LoadCufProfiles = 0x25bc, + LoadEquipmentSet = 0x2709, + LobbyMatchmakerPartyInfo = 0x2891, + LoginSetTimeSpeed = 0x2708, LoginVerifyWorld = 0x259b, - LogoutCancelAck = 0x2682, - LogoutComplete = 0x2681, - LogoutResponse = 0x2680, - LogXpGain = 0x26df, - LootAllPassed = 0x261e, - LootList = 0x273a, - LootMoneyNotify = 0x2619, - LootRelease = 0x2618, - LootReleaseAll = 0x2617, - LootRemoved = 0x2613, - LootResponse = 0x2612, - LootRoll = 0x261b, - LootRollsComplete = 0x261d, - LootRollWon = 0x261f, - LossOfControlAuraUpdate = 0x266d, - MailCommandResult = 0x2638, - MailListResult = 0x274f, - MailQueryNextTimeResult = 0x2750, + LogoutCancelAck = 0x2683, + LogoutComplete = 0x2682, + LogoutResponse = 0x2681, + LogXpGain = 0x26e0, + LootAllPassed = 0x261f, + LootList = 0x273b, + LootMoneyNotify = 0x261a, + LootRelease = 0x2619, + LootReleaseAll = 0x2618, + LootRemoved = 0x2614, + LootResponse = 0x2613, + LootRoll = 0x261c, + LootRollsComplete = 0x261e, + LootRollWon = 0x2620, + LossOfControlAuraUpdate = 0x266e, + MailCommandResult = 0x2639, + MailListResult = 0x2750, + MailQueryNextTimeResult = 0x2751, MapObjectivesInit = 0x294b, - MapObjEvents = 0x25c5, - MasterLootCandidateList = 0x261c, - MeetingStoneFailed = 0x288a, + MapObjEvents = 0x25c6, + MasterLootCandidateList = 0x261d, + MeetingStoneFailed = 0x2892, MessageBox = 0x2576, - MinimapPing = 0x26c9, + MinimapPing = 0x26ca, MirrorImageComponentedData = 0x2c14, MirrorImageCreatureData = 0x2c13, - MissileCancel = 0x25c6, - ModifyCooldown = 0x275d, + MissileCancel = 0x25c7, + ModifyCooldown = 0x275e, Motd = 0x2baf, MountResult = 0x257b, - MovementEnforcementAlert = 0x2840, + MovementEnforcementAlert = 0x2841, MoveAddImpulse = 0x2e32, MoveApplyInertia = 0x2e2e, MoveApplyMovementForce = 0x2e15, @@ -1585,79 +1593,84 @@ namespace Framework.Constants MoveUpdateTeleport = 0x2de1, MoveUpdateTurnRate = 0x2ddd, MoveUpdateWalkSpeed = 0x2dd8, - MultiFloorLeaveFloor = 0x27d9, - MultiFloorNewFloor = 0x27d8, - MythicPlusAllMapStats = 0x260a, - MythicPlusCurrentAffixes = 0x260c, - MythicPlusNewWeekRecord = 0x260f, - MythicPlusSeasonData = 0x260b, - NeutralPlayerFactionSelectResult = 0x25da, - NewTaxiPath = 0x267b, + MultiFloorLeaveFloor = 0x27da, + MultiFloorNewFloor = 0x27d9, + MythicPlusAllMapStats = 0x260b, + MythicPlusCurrentAffixes = 0x260d, + MythicPlusNewWeekRecord = 0x2610, + MythicPlusSeasonData = 0x260c, + NeutralPlayerFactionSelectResult = 0x25db, + NewTaxiPath = 0x267c, NewWorld = 0x2598, NotifyDestLocSpellCast = 0x2c46, - NotifyMissileTrajectoryCollision = 0x26a7, + NotifyMissileTrajectoryCollision = 0x26a8, NotifyMoney = 0x259d, - NotifyReceivedMail = 0x2639, - NpcInteractionOpenResult = 0x2883, - OfferPetitionError = 0x26b2, - OnCancelExpectedRideVehicleAura = 0x26e0, + NotifyReceivedMail = 0x263a, + NpcInteractionOpenResult = 0x288b, + OfferPetitionError = 0x26b3, + OnCancelExpectedRideVehicleAura = 0x26e1, OnMonsterMove = 0x2dd4, - OpenArtifactForge = 0x279a, + OpenArtifactForge = 0x279b, OpenContainer = 0x2da6, OpenLfgDungeonFinder = 0x2a31, - OpenShipmentNpcResult = 0x2792, - OverrideLight = 0x26b7, - PageText = 0x2713, - PartyCommandResult = 0x278c, - PartyInvite = 0x25bc, - PartyKillLog = 0x2753, - PartyMemberFullState = 0x2752, - PartyMemberPartialState = 0x2751, - PartyNotifyLfgLeaderChange = 0x2870, - PartyUpdate = 0x25f3, - PastTimeEvents = 0x25c1, - PauseMirrorTimer = 0x270a, - PendingRaidLock = 0x26f2, + OpenShipmentNpcResult = 0x2793, + OverrideLight = 0x26b8, + PageText = 0x2714, + PartyCommandResult = 0x278d, + PartyInvite = 0x25bd, + PartyKillLog = 0x2754, + PartyMemberFullState = 0x2753, + PartyMemberPartialState = 0x2752, + PartyNotifyLfgLeaderChange = 0x2871, + PartyUpdate = 0x25f4, + PastTimeEvents = 0x25c2, + PauseMirrorTimer = 0x270b, + PendingRaidLock = 0x26f3, + PerksProgramActivityComplete = 0x2887, + PerksProgramActivityUpdate = 0x2883, + PerksProgramDisabled = 0x2888, + PerksProgramResult = 0x2884, + PerksProgramVendorUpdate = 0x2882, PetitionAlreadySigned = 0x25a3, PetitionRenameGuildResponse = 0x29fa, - PetitionShowList = 0x26ba, - PetitionShowSignatures = 0x26bb, - PetitionSignResults = 0x2745, - PetActionFeedback = 0x2742, - PetActionSound = 0x269d, + PetitionShowList = 0x26bb, + PetitionShowSignatures = 0x26bc, + PetitionSignResults = 0x2746, + PetActionFeedback = 0x2743, + PetActionSound = 0x269e, PetAdded = 0x2595, - PetBattleChatRestricted = 0x2601, - PetBattleDebugQueueDumpResponse = 0x2672, - PetBattleFinalizeLocation = 0x25fa, - PetBattleFinalRound = 0x25ff, - PetBattleFinished = 0x2600, - PetBattleFirstRound = 0x25fc, - PetBattleInitialUpdate = 0x25fb, - PetBattleMaxGameLengthWarning = 0x2602, - PetBattlePvpChallenge = 0x25f9, - PetBattleQueueProposeMatch = 0x2636, - PetBattleQueueStatus = 0x2637, - PetBattleReplacementsMade = 0x25fe, - PetBattleRequestFailed = 0x25f8, - PetBattleRoundResult = 0x25fd, - PetBattleSlotUpdates = 0x25ea, + PetBattleChatRestricted = 0x2602, + PetBattleDebugQueueDumpResponse = 0x2673, + PetBattleFinalizeLocation = 0x25fb, + PetBattleFinalRound = 0x2600, + PetBattleFinished = 0x2601, + PetBattleFirstRound = 0x25fd, + PetBattleInitialUpdate = 0x25fc, + PetBattleMaxGameLengthWarning = 0x2603, + PetBattlePvpChallenge = 0x25fa, + PetBattleQueueProposeMatch = 0x2637, + PetBattleQueueStatus = 0x2638, + PetBattleReplacementsMade = 0x25ff, + PetBattleRequestFailed = 0x25f9, + PetBattleRoundResult = 0x25fe, + PetBattleSlotUpdates = 0x25eb, PetCastFailed = 0x2c5b, PetClearSpells = 0x2c24, - PetDismissSound = 0x269e, - PetGodMode = 0x2678, - PetGuids = 0x26fe, + PetDismissSound = 0x269f, + PetGodMode = 0x2679, + PetGuids = 0x26ff, PetLearnedSpells = 0x2c52, PetMode = 0x258b, - PetNameInvalid = 0x26bf, + PetNameInvalid = 0x26c0, PetNewlyTamed = 0x2589, PetSlotUpdated = 0x258a, PetSpellsMessage = 0x2c25, PetStableList = 0x2596, PetStableResult = 0x2597, - PetTameFailure = 0x26af, + PetTameFailure = 0x26b0, PetUnlearnedSpells = 0x2c53, PhaseShiftChange = 0x2578, - PlayedTime = 0x26d0, + PlayedTime = 0x26d1, PlayerAzeriteItemEquippedStatusChanged = 0x3014, PlayerAzeriteItemGains = 0x3013, PlayerBonusRollFailed = 0x3016, @@ -1673,25 +1686,25 @@ namespace Framework.Constants PlayerSkinned = 0x3006, PlayerTutorialHighlightSpell = 0x300d, PlayerTutorialUnhighlightSpell = 0x300c, - PlayMusic = 0x2762, - PlayObjectSound = 0x2763, - PlayOneShotAnimKit = 0x272a, + PlayMusic = 0x2763, + PlayObjectSound = 0x2764, + PlayOneShotAnimKit = 0x272b, PlayOrphanSpellVisual = 0x2c4a, - PlayScene = 0x2633, - PlaySound = 0x2761, - PlaySpeakerbotSound = 0x2764, + PlayScene = 0x2634, + PlaySound = 0x2762, + PlaySpeakerbotSound = 0x2765, PlaySpellVisual = 0x2c48, PlaySpellVisualKit = 0x2c4c, - PlayTimeWarning = 0x26f8, + PlayTimeWarning = 0x26f9, Pong = 0x304e, - PowerUpdate = 0x26cd, + PowerUpdate = 0x26ce, PreloadChildMap = 0x2579, PreloadWorld = 0x2599, - PrepopulateNameCache = 0x2843, - PreRessurect = 0x2760, - PrintNotification = 0x25c9, - ProcResist = 0x2754, - ProfessionGossip = 0x27f9, + PrepopulateNameCache = 0x2844, + PreRessurect = 0x2761, + PrintNotification = 0x25ca, + ProcResist = 0x2755, + ProfessionGossip = 0x27fa, PushSpellToActionBar = 0x2c54, PvpCredit = 0x2945, PvpMatchComplete = 0x294f, @@ -1699,7 +1712,7 @@ namespace Framework.Constants PvpMatchStart = 0x294e, PvpMatchStatistics = 0x2932, PvpOptionsEnabled = 0x2934, - PvpTierRecord = 0x287d, + PvpTierRecord = 0x287e, QueryBattlePetNameResponse = 0x291a, QueryCreatureResponse = 0x2914, QueryGameObjectResponse = 0x2915, @@ -1715,7 +1728,7 @@ namespace Framework.Constants QueryPlayerNameByCommunityIdResponse = 0x3002, QueryQuestInfoResponse = 0x2a96, QueryRealmGuildMasterInfoResponse = 0x29e6, - QueryTimeResponse = 0x26de, + QueryTimeResponse = 0x26df, QuestCompletionNpcResponse = 0x2a81, QuestConfirmAccept = 0x2a8f, QuestForceRemoved = 0x2a9c, @@ -1734,137 +1747,140 @@ namespace Framework.Constants QuestPoiQueryResponse = 0x2a9d, QuestPoiUpdateResponse = 0x2a9f, QuestPushResult = 0x2a90, - QuestSessionInfoResponse = 0x2866, - QuestSessionReadyCheck = 0x2854, - QuestSessionReadyCheckResponse = 0x2855, - QuestSessionResult = 0x2853, + QuestSessionInfoResponse = 0x2867, + QuestSessionReadyCheck = 0x2855, + QuestSessionReadyCheckResponse = 0x2856, + QuestSessionResult = 0x2854, QuestUpdateAddCredit = 0x2a8c, QuestUpdateAddCreditSimple = 0x2a8d, QuestUpdateAddPvpCredit = 0x2a8e, QuestUpdateComplete = 0x2a89, QuestUpdateFailed = 0x2a8a, QuestUpdateFailedTimer = 0x2a8b, - QueueSummaryUpdate = 0x280c, - RafAccountInfo = 0x2851, - RafActivityStateChanged = 0x2862, - RaidDifficultySet = 0x27a4, - RaidGroupOnly = 0x27a6, + QueueSummaryUpdate = 0x280d, + RafAccountInfo = 0x2852, + RafActivityStateChanged = 0x2863, + RaidDifficultySet = 0x27a5, + RaidGroupOnly = 0x27a7, RaidInstanceMessage = 0x2bb4, RaidMarkersChanged = 0x25a4, - RandomRoll = 0x262d, + RandomRoll = 0x262e, RatedPvpInfo = 0x2931, - ReadyCheckCompleted = 0x25f7, - ReadyCheckResponse = 0x25f6, - ReadyCheckStarted = 0x25f5, - ReadItemResultFailed = 0x27a0, - ReadItemResultOk = 0x2797, - RealmLookupInfo = 0x27c4, + ReadyCheckCompleted = 0x25f8, + ReadyCheckResponse = 0x25f7, + ReadyCheckStarted = 0x25f6, + ReadItemResultFailed = 0x27a1, + ReadItemResultOk = 0x2798, + RealmLookupInfo = 0x27c5, RealmQueryResponse = 0x2913, - ReattachResurrect = 0x2744, - RecraftItemResult = 0x289b, - RecruitAFriendFailure = 0x26bc, - RefreshComponent = 0x264e, + ReattachResurrect = 0x2745, + RecraftItemResult = 0x28a3, + RecruitAFriendFailure = 0x26bd, + RefreshComponent = 0x264f, RefreshSpellHistory = 0x2c2c, RemoveItemPassive = 0x25ac, RemoveSpellFromActionBar = 0x2c55, - ReplaceTrophyResponse = 0x27bc, + ReplaceTrophyResponse = 0x27bd, ReportPvpPlayerAfkResult = 0x3001, RequestCemeteryListResponse = 0x2591, RequestPvpRewardsResponse = 0x2935, RequestScheduledPvpInfoResponse = 0x2936, ResearchComplete = 0x2587, ResetCompressionContext = 0x304f, - ResetFailedNotify = 0x26b3, + ResetFailedNotify = 0x26b4, + ResetLastLoadedConfigCvars = 0x28a9, ResetQuestPoi = 0x2aa0, ResetRangedCombatTimer = 0x2944, ResetWeeklyCurrency = 0x2575, - RespecWipeConfirm = 0x2610, + RespecWipeConfirm = 0x2611, RespondInspectAchievements = 0x2572, + ResponsePerkPendingRewards = 0x2885, + ResponsePerkRecentPurchases = 0x2886, RestartGlobalCooldown = 0x2c64, - RestrictedAccountWarning = 0x25b8, + RestrictedAccountWarning = 0x25b9, ResumeCast = 0x2c3e, ResumeCastBar = 0x2c41, ResumeComms = 0x304b, ResumeToken = 0x25aa, ResurrectRequest = 0x257e, ResyncRunes = 0x2c62, - ReturningPlayerPrompt = 0x279f, - ReturnApplicantList = 0x2847, - ReturnRecruitingClubs = 0x2846, + ReturningPlayerPrompt = 0x27a0, + ReturnApplicantList = 0x2848, + ReturnRecruitingClubs = 0x2847, RoleChangedInform = 0x258d, RoleChosen = 0x2a39, RolePollInform = 0x258e, - RuneforgeLegendaryCraftingOpenNpc = 0x27f8, - RuneRegenDebug = 0x25b5, - ScenarioCompleted = 0x27e6, - ScenarioPois = 0x2630, - ScenarioProgressUpdate = 0x2629, - ScenarioShowCriteria = 0x27fc, - ScenarioState = 0x2628, - ScenarioUiUpdate = 0x27fb, - ScenarioVacate = 0x27a1, - SceneObjectEvent = 0x25e0, - SceneObjectPetBattleFinalRound = 0x25e5, - SceneObjectPetBattleFinished = 0x25e6, - SceneObjectPetBattleFirstRound = 0x25e2, - SceneObjectPetBattleInitialUpdate = 0x25e1, - SceneObjectPetBattleReplacementsMade = 0x25e4, - SceneObjectPetBattleRoundResult = 0x25e3, + RuneforgeLegendaryCraftingOpenNpc = 0x27f9, + RuneRegenDebug = 0x25b6, + ScenarioCompleted = 0x27e7, + ScenarioPois = 0x2631, + ScenarioProgressUpdate = 0x262a, + ScenarioShowCriteria = 0x27fd, + ScenarioState = 0x2629, + ScenarioUiUpdate = 0x27fc, + ScenarioVacate = 0x27a2, + SceneObjectEvent = 0x25e1, + SceneObjectPetBattleFinalRound = 0x25e6, + SceneObjectPetBattleFinished = 0x25e7, + SceneObjectPetBattleFirstRound = 0x25e3, + SceneObjectPetBattleInitialUpdate = 0x25e2, + SceneObjectPetBattleReplacementsMade = 0x25e5, + SceneObjectPetBattleRoundResult = 0x25e4, ScriptCast = 0x2c59, - SeasonInfo = 0x25c0, - SellResponse = 0x26c0, + SeasonInfo = 0x25c1, + SellResponse = 0x26c1, SendItemPassives = 0x25ad, SendKnownSpells = 0x2c2a, - SendRaidTargetUpdateAll = 0x262b, - SendRaidTargetUpdateSingle = 0x262c, + SendRaidTargetUpdateAll = 0x262c, + SendRaidTargetUpdateSingle = 0x262d, SendSpellCharges = 0x2c2d, SendSpellHistory = 0x2c2b, SendUnlearnSpells = 0x2c2e, - ServerFirstAchievements = 0x264b, - ServerTime = 0x267f, - ServerTimeOffset = 0x270e, + ServerFirstAchievements = 0x264c, + ServerTime = 0x2680, + ServerTimeOffset = 0x270f, SetupCurrency = 0x2573, SetupResearchHistory = 0x2586, - SetAiAnimKit = 0x2729, - SetAllTaskProgress = 0x2785, - SetAnimTier = 0x272d, - SetChrUpgradeTier = 0x25dd, + SetAiAnimKit = 0x272a, + SetAllTaskProgress = 0x2786, + SetAnimTier = 0x272e, + SetChrUpgradeTier = 0x25de, SetCurrency = 0x2574, SetDfFastLaunchResult = 0x2a2e, - SetDungeonDifficulty = 0x26a1, - SetFactionAtWar = 0x26fa, - SetFactionNotVisible = 0x2724, - SetFactionStanding = 0x2725, - SetFactionVisible = 0x2723, + SetDungeonDifficulty = 0x26a2, + SetFactionAtWar = 0x26fb, + SetFactionNotVisible = 0x2725, + SetFactionStanding = 0x2726, + SetFactionVisible = 0x2724, SetFlatSpellModifier = 0x2c39, - SetForcedReactions = 0x2717, + SetForcedReactions = 0x2718, SetItemPurchaseData = 0x259f, - SetLootMethodFailed = 0x27ca, + SetLootMethodFailed = 0x27cb, SetMaxWeeklyQuantity = 0x25a2, - SetMeleeAnimKit = 0x272c, - SetMovementAnimKit = 0x272b, + SetMeleeAnimKit = 0x272d, + SetMovementAnimKit = 0x272c, SetPctSpellModifier = 0x2c3a, - SetPetSpecialization = 0x2622, + SetPetSpecialization = 0x2623, SetPlayerDeclinedNamesResult = 0x3003, - SetPlayHoverAnim = 0x25b9, - SetProficiency = 0x272e, - SetQuestReplayCooldownOverride = 0x285a, + SetPlayHoverAnim = 0x25ba, + SetProficiency = 0x272f, + SetQuestReplayCooldownOverride = 0x285b, SetShipmentReadyResponse = 0x2998, SetSpellCharges = 0x2c29, - SetTaskComplete = 0x2786, - SetTimeZoneInformation = 0x2674, - SetVehicleRecId = 0x26f1, - ShadowlandsCapacitanceUpdate = 0x2882, + SetTaskComplete = 0x2787, + SetTimeZoneInformation = 0x2675, + SetVehicleRecId = 0x26f2, + ShadowlandsCapacitanceUpdate = 0x288a, ShipmentFactionUpdateResult = 0x2999, - ShowNeutralPlayerFactionSelectUi = 0x25d9, + ShowNeutralPlayerFactionSelectUi = 0x25da, ShowQuestCompletionText = 0x2a95, - ShowTaxiNodes = 0x26c8, - ShowTradeSkillResponse = 0x2769, - SocialContractRequestResponse = 0x288b, - SocketGemsFailure = 0x2721, - SocketGemsSuccess = 0x2720, - SpecialMountAnim = 0x269c, - SpecInvoluntarilyChanged = 0x2712, + ShowTaxiNodes = 0x26c9, + ShowTradeSkillResponse = 0x276a, + SocialContractRequestResponse = 0x2893, + SocketGemsFailure = 0x2722, + SocketGemsSuccess = 0x2721, + SpecialMountAnim = 0x269d, + SpecInvoluntarilyChanged = 0x2713, SpellAbsorbLog = 0x2c1f, SpellCategoryCooldown = 0x2c17, SpellChannelStart = 0x2c34, @@ -1892,97 +1908,97 @@ namespace Framework.Constants SpellPeriodicAuraLog = 0x2c1b, SpellPrepare = 0x2c3b, SpellStart = 0x2c3d, - SpellVisualLoadScreen = 0x25cb, - SplashScreenShowLatest = 0x286c, - StandStateUpdate = 0x2716, - StarterBuildActivateFailed = 0x25d1, - StartElapsedTimer = 0x2603, - StartElapsedTimers = 0x2605, - StartLightningStorm = 0x26a4, - StartLootRoll = 0x261a, - StartMirrorTimer = 0x2709, + SpellVisualLoadScreen = 0x25cc, + SplashScreenShowLatest = 0x286d, + StandStateUpdate = 0x2717, + StarterBuildActivateFailed = 0x25d2, + StartElapsedTimer = 0x2604, + StartElapsedTimers = 0x2606, + StartLightningStorm = 0x26a5, + StartLootRoll = 0x261b, + StartMirrorTimer = 0x270a, StartTimer = 0x25a6, - StopElapsedTimer = 0x2604, - StopMirrorTimer = 0x270b, - StopSpeakerbotSound = 0x2765, + StopElapsedTimer = 0x2605, + StopMirrorTimer = 0x270c, + StopSpeakerbotSound = 0x2766, StopTimer = 0x25a7, StreamingMovies = 0x25a5, - SuggestInviteInform = 0x278d, - SummonCancel = 0x26ad, + SuggestInviteInform = 0x278e, + SummonCancel = 0x26ae, SummonRaidMemberValidateFailed = 0x258f, - SummonRequest = 0x271b, + SummonRequest = 0x271c, SupercededSpells = 0x2c4f, SuspendComms = 0x304a, SuspendToken = 0x25a9, - SyncWowEntitlements = 0x2864, - TalentsInvoluntarilyReset = 0x2711, - TaxiNodeStatus = 0x2679, - TextEmote = 0x2677, - ThreatClear = 0x26d7, - ThreatRemove = 0x26d6, - ThreatUpdate = 0x26d5, + SyncWowEntitlements = 0x2865, + TalentsInvoluntarilyReset = 0x2712, + TaxiNodeStatus = 0x267a, + TextEmote = 0x2678, + ThreatClear = 0x26d8, + ThreatRemove = 0x26d7, + ThreatUpdate = 0x26d6, TimeAdjustment = 0x2dd3, TimeSyncRequest = 0x2dd2, - TitleEarned = 0x26d2, - TitleLost = 0x26d3, - TotemCreated = 0x26c3, - TotemDurationChanged = 0x26c4, - TotemMoved = 0x26c5, + TitleEarned = 0x26d3, + TitleLost = 0x26d4, + TotemCreated = 0x26c4, + TotemDurationChanged = 0x26c5, + TotemMoved = 0x26c6, TradeStatus = 0x2582, TradeUpdated = 0x2581, - TrainerBuyFailed = 0x26da, - TrainerList = 0x26d9, - TraitConfigCommitFailed = 0x25d0, - TransferAborted = 0x26fd, - TransferPending = 0x25cc, + TrainerBuyFailed = 0x26db, + TrainerList = 0x26da, + TraitConfigCommitFailed = 0x25d1, + TransferAborted = 0x26fe, + TransferPending = 0x25cd, TreasurePickerResponse = 0x291f, - TriggerCinematic = 0x27c2, - TriggerMovie = 0x26c6, - TurnInPetitionResult = 0x2747, - TutorialFlags = 0x27b5, + TriggerCinematic = 0x27c3, + TriggerMovie = 0x26c7, + TurnInPetitionResult = 0x2748, + TutorialFlags = 0x27b6, TwitterStatus = 0x3043, - UiHealingRangeModified = 0x273d, + UiHealingRangeModified = 0x273e, UiMapQuestLinesResponse = 0x2aa2, - UndeleteCharacterResponse = 0x27c5, - UndeleteCooldownStatusResponse = 0x27c6, + UndeleteCharacterResponse = 0x27c6, + UndeleteCooldownStatusResponse = 0x27c7, UnlearnedSpells = 0x2c51, UnloadChildMap = 0x257a, - UpdateAadcStatusResponse = 0x287e, - UpdateAccountData = 0x2703, - UpdateActionButtons = 0x25de, - UpdateBnetSessionKey = 0x281d, + UpdateAadcStatusResponse = 0x287f, + UpdateAccountData = 0x2704, + UpdateActionButtons = 0x25df, + UpdateBnetSessionKey = 0x281e, UpdateCapturePoint = 0x2929, - UpdateCelestialBody = 0x2819, - UpdateCharacterFlags = 0x27bb, - UpdateChargeCategoryCooldown = 0x275f, - UpdateCooldown = 0x275e, + UpdateCelestialBody = 0x281a, + UpdateCharacterFlags = 0x27bc, + UpdateChargeCategoryCooldown = 0x2760, + UpdateCooldown = 0x275f, UpdateCraftingNpcRecipes = 0x2996, UpdateDailyMissionCounter = 0x297f, - UpdateExpansionLevel = 0x2643, - UpdateGameTimeState = 0x2820, - UpdateInstanceOwnership = 0x26a6, - UpdateLastInstance = 0x2685, - UpdateObject = 0x27c3, - UpdatePrimarySpec = 0x25d6, - UpdateRecentPlayerGuids = 0x25f4, - UpdateTalentData = 0x25d5, - UpdateTaskProgress = 0x2784, + UpdateExpansionLevel = 0x2644, + UpdateGameTimeState = 0x2821, + UpdateInstanceOwnership = 0x26a7, + UpdateLastInstance = 0x2686, + UpdateObject = 0x27c4, + UpdatePrimarySpec = 0x25d7, + UpdateRecentPlayerGuids = 0x25f5, + UpdateTalentData = 0x25d6, + UpdateTaskProgress = 0x2785, UpdateWeeklySpellUsage = 0x2c19, - UpdateWorldState = 0x2741, + UpdateWorldState = 0x2742, UserlistAdd = 0x2bb9, UserlistRemove = 0x2bba, UserlistUpdate = 0x2bbb, - UseEquipmentSetResult = 0x2748, - VasCheckTransferOkResponse = 0x2814, - VasGetQueueMinutesResponse = 0x2812, - VasGetServiceStatusResponse = 0x2811, - VasPurchaseComplete = 0x27ec, - VasPurchaseStateUpdate = 0x27eb, - VendorInventory = 0x25b7, + UseEquipmentSetResult = 0x2749, + VasCheckTransferOkResponse = 0x2815, + VasGetQueueMinutesResponse = 0x2813, + VasGetServiceStatusResponse = 0x2812, + VasPurchaseComplete = 0x27ed, + VasPurchaseStateUpdate = 0x27ec, + VendorInventory = 0x25b8, VignetteUpdate = 0x3008, - VoiceChannelInfoResponse = 0x2818, - VoiceChannelSttTokenResponse = 0x2878, - VoiceLoginResponse = 0x2817, + VoiceChannelInfoResponse = 0x2819, + VoiceChannelSttTokenResponse = 0x2879, + VoiceLoginResponse = 0x2818, VoidItemSwapResponse = 0x2da4, VoidStorageContents = 0x2da1, VoidStorageFailed = 0x2da0, @@ -1991,24 +2007,24 @@ namespace Framework.Constants WaitQueueFinish = 0x256f, WaitQueueUpdate = 0x256e, Warden3Data = 0x2577, - Warden3Disabled = 0x281b, - Warden3Enabled = 0x281a, - WarfrontComplete = 0x2757, + Warden3Disabled = 0x281c, + Warden3Enabled = 0x281b, + WarfrontComplete = 0x2758, WargameRequestSuccessfullySentToOpponent = 0x2933, - Weather = 0x26a3, - WeeklyRewardsProgressResult = 0x286f, - WeeklyRewardsResult = 0x286d, - WeeklyRewardClaimResult = 0x286e, + Weather = 0x26a4, + WeeklyRewardsProgressResult = 0x2870, + WeeklyRewardsResult = 0x286e, + WeeklyRewardClaimResult = 0x286f, WeeklySpellUsage = 0x2c18, Who = 0x2bae, - WhoIs = 0x26a2, - WillBeKickedForAddedSubscriptionTime = 0x281f, + WhoIs = 0x26a3, + WillBeKickedForAddedSubscriptionTime = 0x2820, WorldQuestUpdateResponse = 0x300f, WorldServerInfo = 0x25ae, - WowEntitlementNotification = 0x2865, - XpAwardedFromCurrency = 0x28a0, - XpGainAborted = 0x25c8, - XpGainEnabled = 0x27a5, + WowEntitlementNotification = 0x2866, + XpAwardedFromCurrency = 0x28a8, + XpGainAborted = 0x25c9, + XpGainEnabled = 0x27a6, ZoneUnderAttack = 0x2bb5, // Opcodes That Are Not Generated Automatically diff --git a/Source/Framework/Constants/SharedConst.cs b/Source/Framework/Constants/SharedConst.cs index e3779728f..b42c4b3c7 100644 --- a/Source/Framework/Constants/SharedConst.cs +++ b/Source/Framework/Constants/SharedConst.cs @@ -2763,289 +2763,290 @@ namespace Framework.Constants DifficultyChangeEncounter = 828, DifficultyChangeCombat = 829, DifficultyChangePlayerBusy = 830, - DifficultyChangeAlreadyStarted = 831, - DifficultyChangeOtherHeroicS = 832, - DifficultyChangeHeroicInstanceAlreadyRunning = 833, - ArenaTeamPartySize = 834, - SoloShuffleWargameGroupSize = 835, - SoloShuffleWargameGroupComp = 836, - SoloShuffleMinItemLevel = 837, - PvpPlayerAbandoned = 838, - QuestForceRemovedS = 839, - AttackNoActions = 840, - InRandomBg = 841, - InNonRandomBg = 842, - BnFriendSelf = 843, - BnFriendAlready = 844, - BnFriendBlocked = 845, - BnFriendListFull = 846, - BnFriendRequestSent = 847, - BnBroadcastThrottle = 848, - BgDeveloperOnly = 849, - CurrencySpellSlotMismatch = 850, - CurrencyNotTradable = 851, - RequiresExpansionS = 852, - QuestFailedSpell = 853, - TalentFailedUnspentTalentPoints = 854, - TalentFailedNotEnoughTalentsInPrimaryTree = 855, - TalentFailedNoPrimaryTreeSelected = 856, - TalentFailedCantRemoveTalent = 857, - TalentFailedUnknown = 858, - TalentFailedInCombat = 859, - TalentFailedInPvpMatch = 860, - TalentFailedInMythicPlus = 861, - WargameRequestFailure = 862, - RankRequiresAuthenticator = 863, - GuildBankVoucherFailed = 864, - WargameRequestSent = 865, - RequiresAchievementI = 866, - RefundResultExceedMaxCurrency = 867, - CantBuyQuantity = 868, - ItemIsBattlePayLocked = 869, - PartyAlreadyInBattlegroundQueue = 870, - PartyConfirmingBattlegroundQueue = 871, - BattlefieldTeamPartySize = 872, - InsuffTrackedCurrencyIs = 873, - NotOnTournamentRealm = 874, - GuildTrialAccountTrial = 875, - GuildTrialAccountVeteran = 876, - GuildUndeletableDueToLevel = 877, - CantDoThatInAGroup = 878, - GuildLeaderReplaced = 879, - TransmogrifyCantEquip = 880, - TransmogrifyInvalidItemType = 881, - TransmogrifyNotSoulbound = 882, - TransmogrifyInvalidSource = 883, - TransmogrifyInvalidDestination = 884, - TransmogrifyMismatch = 885, - TransmogrifyLegendary = 886, - TransmogrifySameItem = 887, - TransmogrifySameAppearance = 888, - TransmogrifyNotEquipped = 889, - VoidDepositFull = 890, - VoidWithdrawFull = 891, - VoidStorageWrapped = 892, - VoidStorageStackable = 893, - VoidStorageUnbound = 894, - VoidStorageRepair = 895, - VoidStorageCharges = 896, - VoidStorageQuest = 897, - VoidStorageConjured = 898, - VoidStorageMail = 899, - VoidStorageBag = 900, - VoidTransferStorageFull = 901, - VoidTransferInvFull = 902, - VoidTransferInternalError = 903, - VoidTransferItemInvalid = 904, - DifficultyDisabledInLfg = 905, - VoidStorageUnique = 906, - VoidStorageLoot = 907, - VoidStorageHoliday = 908, - VoidStorageDuration = 909, - VoidStorageLoadFailed = 910, - VoidStorageInvalidItem = 911, - ParentalControlsChatMuted = 912, - SorStartExperienceIncomplete = 913, - SorInvalidEmail = 914, - SorInvalidComment = 915, - ChallengeModeResetCooldownS = 916, - ChallengeModeResetKeystone = 917, - PetJournalAlreadyInLoadout = 918, - ReportSubmittedSuccessfully = 919, - ReportSubmissionFailed = 920, - SuggestionSubmittedSuccessfully = 921, - BugSubmittedSuccessfully = 922, - ChallengeModeEnabled = 923, - ChallengeModeDisabled = 924, - PetbattleCreateFailed = 925, - PetbattleNotHere = 926, - PetbattleNotHereOnTransport = 927, - PetbattleNotHereUnevenGround = 928, - PetbattleNotHereObstructed = 929, - PetbattleNotWhileInCombat = 930, - PetbattleNotWhileDead = 931, - PetbattleNotWhileFlying = 932, - PetbattleTargetInvalid = 933, - PetbattleTargetOutOfRange = 934, - PetbattleTargetNotCapturable = 935, - PetbattleNotATrainer = 936, - PetbattleDeclined = 937, - PetbattleInBattle = 938, - PetbattleInvalidLoadout = 939, - PetbattleAllPetsDead = 940, - PetbattleNoPetsInSlots = 941, - PetbattleNoAccountLock = 942, - PetbattleWildPetTapped = 943, - PetbattleRestrictedAccount = 944, - PetbattleOpponentNotAvailable = 945, - PetbattleNotWhileInMatchedBattle = 946, - CantHaveMorePetsOfThatType = 947, - CantHaveMorePets = 948, - PvpMapNotFound = 949, - PvpMapNotSet = 950, - PetbattleQueueQueued = 951, - PetbattleQueueAlreadyQueued = 952, - PetbattleQueueJoinFailed = 953, - PetbattleQueueJournalLock = 954, - PetbattleQueueRemoved = 955, - PetbattleQueueProposalDeclined = 956, - PetbattleQueueProposalTimeout = 957, - PetbattleQueueOpponentDeclined = 958, - PetbattleQueueRequeuedInternal = 959, - PetbattleQueueRequeuedRemoved = 960, - PetbattleQueueSlotLocked = 961, - PetbattleQueueSlotEmpty = 962, - PetbattleQueueSlotNoTracker = 963, - PetbattleQueueSlotNoSpecies = 964, - PetbattleQueueSlotCantBattle = 965, - PetbattleQueueSlotRevoked = 966, - PetbattleQueueSlotDead = 967, - PetbattleQueueSlotNoPet = 968, - PetbattleQueueNotWhileNeutral = 969, - PetbattleGameTimeLimitWarning = 970, - PetbattleGameRoundsLimitWarning = 971, - HasRestriction = 972, - ItemUpgradeItemTooLowLevel = 973, - ItemUpgradeNoPath = 974, - ItemUpgradeNoMoreUpgrades = 975, - BonusRollEmpty = 976, - ChallengeModeFull = 977, - ChallengeModeInProgress = 978, - ChallengeModeIncorrectKeystone = 979, - BattletagFriendNotFound = 980, - BattletagFriendNotValid = 981, - BattletagFriendNotAllowed = 982, - BattletagFriendThrottled = 983, - BattletagFriendSuccess = 984, - PetTooHighLevelToUncage = 985, - PetbattleInternal = 986, - CantCagePetYet = 987, - NoLootInChallengeMode = 988, - QuestPetBattleVictoriesPvpIi = 989, - RoleCheckAlreadyInProgress = 990, - RecruitAFriendAccountLimit = 991, - RecruitAFriendFailed = 992, - SetLootPersonal = 993, - SetLootMethodFailedCombat = 994, - ReagentBankFull = 995, - ReagentBankLocked = 996, - GarrisonBuildingExists = 997, - GarrisonInvalidPlot = 998, - GarrisonInvalidBuildingid = 999, - GarrisonInvalidPlotBuilding = 1000, - GarrisonRequiresBlueprint = 1001, - GarrisonNotEnoughCurrency = 1002, - GarrisonNotEnoughGold = 1003, - GarrisonCompleteMissionWrongFollowerType = 1004, - AlreadyUsingLfgList = 1005, - RestrictedAccountLfgListTrial = 1006, - ToyUseLimitReached = 1007, - ToyAlreadyKnown = 1008, - TransmogSetAlreadyKnown = 1009, - NotEnoughCurrency = 1010, - SpecIsDisabled = 1011, - FeatureRestrictedTrial = 1012, - CantBeObliterated = 1013, - CantBeScrapped = 1014, - CantBeRecrafted = 1015, - ArtifactRelicDoesNotMatchArtifact = 1016, - MustEquipArtifact = 1017, - CantDoThatRightNow = 1018, - AffectingCombat = 1019, - EquipmentManagerCombatSwapS = 1020, - EquipmentManagerBagsFull = 1021, - EquipmentManagerMissingItemS = 1022, - MovieRecordingWarningPerf = 1023, - MovieRecordingWarningDiskFull = 1024, - MovieRecordingWarningNoMovie = 1025, - MovieRecordingWarningRequirements = 1026, - MovieRecordingWarningCompressing = 1027, - NoChallengeModeReward = 1028, - ClaimedChallengeModeReward = 1029, - ChallengeModePeriodResetSs = 1030, - CantDoThatChallengeModeActive = 1031, - TalentFailedRestArea = 1032, - CannotAbandonLastPet = 1033, - TestCvarSetSss = 1034, - QuestTurnInFailReason = 1035, - ClaimedChallengeModeRewardOld = 1036, - TalentGrantedByAura = 1037, - ChallengeModeAlreadyComplete = 1038, - GlyphTargetNotAvailable = 1039, - PvpWarmodeToggleOn = 1040, - PvpWarmodeToggleOff = 1041, - SpellFailedLevelRequirement = 1042, - SpellFailedCantFlyHere = 1043, - BattlegroundJoinRequiresLevel = 1044, - BattlegroundJoinDisqualified = 1045, - BattlegroundJoinDisqualifiedNoName = 1046, - VoiceChatGenericUnableToConnect = 1047, - VoiceChatServiceLost = 1048, - VoiceChatChannelNameTooShort = 1049, - VoiceChatChannelNameTooLong = 1050, - VoiceChatChannelAlreadyExists = 1051, - VoiceChatTargetNotFound = 1052, - VoiceChatTooManyRequests = 1053, - VoiceChatPlayerSilenced = 1054, - VoiceChatParentalDisableAll = 1055, - VoiceChatDisabled = 1056, - NoPvpReward = 1057, - ClaimedPvpReward = 1058, - AzeriteEssenceSelectionFailedEssenceNotUnlocked = 1059, - AzeriteEssenceSelectionFailedCantRemoveEssence = 1060, - AzeriteEssenceSelectionFailedConditionFailed = 1061, - AzeriteEssenceSelectionFailedRestArea = 1062, - AzeriteEssenceSelectionFailedSlotLocked = 1063, - AzeriteEssenceSelectionFailedNotAtForge = 1064, - AzeriteEssenceSelectionFailedHeartLevelTooLow = 1065, - AzeriteEssenceSelectionFailedNotEquipped = 1066, - SocketingRequiresPunchcardredGem = 1067, - SocketingPunchcardredGemOnlyInPunchcardredslot = 1068, - SocketingRequiresPunchcardyellowGem = 1069, - SocketingPunchcardyellowGemOnlyInPunchcardyellowslot = 1070, - SocketingRequiresPunchcardblueGem = 1071, - SocketingPunchcardblueGemOnlyInPunchcardblueslot = 1072, - SocketingRequiresDominationShard = 1073, - SocketingDominationShardOnlyInDominationslot = 1074, - SocketingRequiresCypherGem = 1075, - SocketingCypherGemOnlyInCypherslot = 1076, - SocketingRequiresTinkerGem = 1077, - SocketingTinkerGemOnlyInTinkerslot = 1078, - LevelLinkingResultLinked = 1079, - LevelLinkingResultUnlinked = 1080, - ClubFinderErrorPostClub = 1081, - ClubFinderErrorApplyClub = 1082, - ClubFinderErrorRespondApplicant = 1083, - ClubFinderErrorCancelApplication = 1084, - ClubFinderErrorTypeAcceptApplication = 1085, - ClubFinderErrorTypeNoInvitePermissions = 1086, - ClubFinderErrorTypeNoPostingPermissions = 1087, - ClubFinderErrorTypeApplicantList = 1088, - ClubFinderErrorTypeApplicantListNoPerm = 1089, - ClubFinderErrorTypeFinderNotAvailable = 1090, - ClubFinderErrorTypeGetPostingIds = 1091, - ClubFinderErrorTypeJoinApplication = 1092, - ClubFinderErrorTypeRealmNotEligible = 1093, - ClubFinderErrorTypeFlaggedRename = 1094, - ClubFinderErrorTypeFlaggedDescriptionChange = 1095, - ItemInteractionNotEnoughGold = 1096, - ItemInteractionNotEnoughCurrency = 1097, - PlayerChoiceErrorPendingChoice = 1098, - SoulbindInvalidConduit = 1099, - SoulbindInvalidConduitItem = 1100, - SoulbindInvalidTalent = 1101, - SoulbindDuplicateConduit = 1102, - ActivateSoulbindS = 1103, - ActivateSoulbindFailedRestArea = 1104, - CantUseProfanity = 1105, - NotInPetBattle = 1106, - NotInNpe = 1107, - NoSpec = 1108, - NoDominationshardOverwrite = 1109, - UseWeeklyRewardsDisabled = 1110, - CrossFactionGroupJoined = 1111, - CantTargetUnfriendlyInOverworld = 1112, - EquipablespellsSlotsFull = 1113 + DifficultyChangePlayerOnVehicle = 831, + DifficultyChangeAlreadyStarted = 832, + DifficultyChangeOtherHeroicS = 833, + DifficultyChangeHeroicInstanceAlreadyRunning = 834, + ArenaTeamPartySize = 835, + SoloShuffleWargameGroupSize = 836, + SoloShuffleWargameGroupComp = 837, + SoloShuffleMinItemLevel = 838, + PvpPlayerAbandoned = 839, + QuestForceRemovedS = 840, + AttackNoActions = 841, + InRandomBg = 842, + InNonRandomBg = 843, + BnFriendSelf = 844, + BnFriendAlready = 845, + BnFriendBlocked = 846, + BnFriendListFull = 847, + BnFriendRequestSent = 848, + BnBroadcastThrottle = 849, + BgDeveloperOnly = 850, + CurrencySpellSlotMismatch = 851, + CurrencyNotTradable = 852, + RequiresExpansionS = 853, + QuestFailedSpell = 854, + TalentFailedUnspentTalentPoints = 855, + TalentFailedNotEnoughTalentsInPrimaryTree = 856, + TalentFailedNoPrimaryTreeSelected = 857, + TalentFailedCantRemoveTalent = 858, + TalentFailedUnknown = 859, + TalentFailedInCombat = 860, + TalentFailedInPvpMatch = 861, + TalentFailedInMythicPlus = 862, + WargameRequestFailure = 863, + RankRequiresAuthenticator = 864, + GuildBankVoucherFailed = 865, + WargameRequestSent = 866, + RequiresAchievementI = 867, + RefundResultExceedMaxCurrency = 868, + CantBuyQuantity = 869, + ItemIsBattlePayLocked = 870, + PartyAlreadyInBattlegroundQueue = 871, + PartyConfirmingBattlegroundQueue = 872, + BattlefieldTeamPartySize = 873, + InsuffTrackedCurrencyIs = 874, + NotOnTournamentRealm = 875, + GuildTrialAccountTrial = 876, + GuildTrialAccountVeteran = 877, + GuildUndeletableDueToLevel = 878, + CantDoThatInAGroup = 879, + GuildLeaderReplaced = 880, + TransmogrifyCantEquip = 881, + TransmogrifyInvalidItemType = 882, + TransmogrifyNotSoulbound = 883, + TransmogrifyInvalidSource = 884, + TransmogrifyInvalidDestination = 885, + TransmogrifyMismatch = 886, + TransmogrifyLegendary = 887, + TransmogrifySameItem = 888, + TransmogrifySameAppearance = 889, + TransmogrifyNotEquipped = 890, + VoidDepositFull = 891, + VoidWithdrawFull = 892, + VoidStorageWrapped = 893, + VoidStorageStackable = 894, + VoidStorageUnbound = 895, + VoidStorageRepair = 896, + VoidStorageCharges = 897, + VoidStorageQuest = 898, + VoidStorageConjured = 899, + VoidStorageMail = 900, + VoidStorageBag = 901, + VoidTransferStorageFull = 902, + VoidTransferInvFull = 903, + VoidTransferInternalError = 904, + VoidTransferItemInvalid = 905, + DifficultyDisabledInLfg = 906, + VoidStorageUnique = 907, + VoidStorageLoot = 908, + VoidStorageHoliday = 909, + VoidStorageDuration = 910, + VoidStorageLoadFailed = 911, + VoidStorageInvalidItem = 912, + ParentalControlsChatMuted = 913, + SorStartExperienceIncomplete = 914, + SorInvalidEmail = 915, + SorInvalidComment = 916, + ChallengeModeResetCooldownS = 917, + ChallengeModeResetKeystone = 918, + PetJournalAlreadyInLoadout = 919, + ReportSubmittedSuccessfully = 920, + ReportSubmissionFailed = 921, + SuggestionSubmittedSuccessfully = 922, + BugSubmittedSuccessfully = 923, + ChallengeModeEnabled = 924, + ChallengeModeDisabled = 925, + PetbattleCreateFailed = 926, + PetbattleNotHere = 927, + PetbattleNotHereOnTransport = 928, + PetbattleNotHereUnevenGround = 929, + PetbattleNotHereObstructed = 930, + PetbattleNotWhileInCombat = 931, + PetbattleNotWhileDead = 932, + PetbattleNotWhileFlying = 933, + PetbattleTargetInvalid = 934, + PetbattleTargetOutOfRange = 935, + PetbattleTargetNotCapturable = 936, + PetbattleNotATrainer = 937, + PetbattleDeclined = 938, + PetbattleInBattle = 939, + PetbattleInvalidLoadout = 940, + PetbattleAllPetsDead = 941, + PetbattleNoPetsInSlots = 942, + PetbattleNoAccountLock = 943, + PetbattleWildPetTapped = 944, + PetbattleRestrictedAccount = 945, + PetbattleOpponentNotAvailable = 946, + PetbattleNotWhileInMatchedBattle = 947, + CantHaveMorePetsOfThatType = 948, + CantHaveMorePets = 949, + PvpMapNotFound = 950, + PvpMapNotSet = 951, + PetbattleQueueQueued = 952, + PetbattleQueueAlreadyQueued = 953, + PetbattleQueueJoinFailed = 954, + PetbattleQueueJournalLock = 955, + PetbattleQueueRemoved = 956, + PetbattleQueueProposalDeclined = 957, + PetbattleQueueProposalTimeout = 958, + PetbattleQueueOpponentDeclined = 959, + PetbattleQueueRequeuedInternal = 960, + PetbattleQueueRequeuedRemoved = 961, + PetbattleQueueSlotLocked = 962, + PetbattleQueueSlotEmpty = 963, + PetbattleQueueSlotNoTracker = 964, + PetbattleQueueSlotNoSpecies = 965, + PetbattleQueueSlotCantBattle = 966, + PetbattleQueueSlotRevoked = 967, + PetbattleQueueSlotDead = 968, + PetbattleQueueSlotNoPet = 969, + PetbattleQueueNotWhileNeutral = 970, + PetbattleGameTimeLimitWarning = 971, + PetbattleGameRoundsLimitWarning = 972, + HasRestriction = 973, + ItemUpgradeItemTooLowLevel = 974, + ItemUpgradeNoPath = 975, + ItemUpgradeNoMoreUpgrades = 976, + BonusRollEmpty = 977, + ChallengeModeFull = 978, + ChallengeModeInProgress = 979, + ChallengeModeIncorrectKeystone = 980, + BattletagFriendNotFound = 981, + BattletagFriendNotValid = 982, + BattletagFriendNotAllowed = 983, + BattletagFriendThrottled = 984, + BattletagFriendSuccess = 985, + PetTooHighLevelToUncage = 986, + PetbattleInternal = 987, + CantCagePetYet = 988, + NoLootInChallengeMode = 989, + QuestPetBattleVictoriesPvpIi = 990, + RoleCheckAlreadyInProgress = 991, + RecruitAFriendAccountLimit = 992, + RecruitAFriendFailed = 993, + SetLootPersonal = 994, + SetLootMethodFailedCombat = 995, + ReagentBankFull = 996, + ReagentBankLocked = 997, + GarrisonBuildingExists = 998, + GarrisonInvalidPlot = 999, + GarrisonInvalidBuildingid = 1000, + GarrisonInvalidPlotBuilding = 1001, + GarrisonRequiresBlueprint = 1002, + GarrisonNotEnoughCurrency = 1003, + GarrisonNotEnoughGold = 1004, + GarrisonCompleteMissionWrongFollowerType = 1005, + AlreadyUsingLfgList = 1006, + RestrictedAccountLfgListTrial = 1007, + ToyUseLimitReached = 1008, + ToyAlreadyKnown = 1009, + TransmogSetAlreadyKnown = 1010, + NotEnoughCurrency = 1011, + SpecIsDisabled = 1012, + FeatureRestrictedTrial = 1013, + CantBeObliterated = 1014, + CantBeScrapped = 1015, + CantBeRecrafted = 1016, + ArtifactRelicDoesNotMatchArtifact = 1017, + MustEquipArtifact = 1018, + CantDoThatRightNow = 1019, + AffectingCombat = 1020, + EquipmentManagerCombatSwapS = 1021, + EquipmentManagerBagsFull = 1022, + EquipmentManagerMissingItemS = 1023, + MovieRecordingWarningPerf = 1024, + MovieRecordingWarningDiskFull = 1025, + MovieRecordingWarningNoMovie = 1026, + MovieRecordingWarningRequirements = 1027, + MovieRecordingWarningCompressing = 1028, + NoChallengeModeReward = 1029, + ClaimedChallengeModeReward = 1030, + ChallengeModePeriodResetSs = 1031, + CantDoThatChallengeModeActive = 1032, + TalentFailedRestArea = 1033, + CannotAbandonLastPet = 1034, + TestCvarSetSss = 1035, + QuestTurnInFailReason = 1036, + ClaimedChallengeModeRewardOld = 1037, + TalentGrantedByAura = 1038, + ChallengeModeAlreadyComplete = 1039, + GlyphTargetNotAvailable = 1040, + PvpWarmodeToggleOn = 1041, + PvpWarmodeToggleOff = 1042, + SpellFailedLevelRequirement = 1043, + SpellFailedCantFlyHere = 1044, + BattlegroundJoinRequiresLevel = 1045, + BattlegroundJoinDisqualified = 1046, + BattlegroundJoinDisqualifiedNoName = 1047, + VoiceChatGenericUnableToConnect = 1048, + VoiceChatServiceLost = 1049, + VoiceChatChannelNameTooShort = 1050, + VoiceChatChannelNameTooLong = 1051, + VoiceChatChannelAlreadyExists = 1052, + VoiceChatTargetNotFound = 1053, + VoiceChatTooManyRequests = 1054, + VoiceChatPlayerSilenced = 1055, + VoiceChatParentalDisableAll = 1056, + VoiceChatDisabled = 1057, + NoPvpReward = 1058, + ClaimedPvpReward = 1059, + AzeriteEssenceSelectionFailedEssenceNotUnlocked = 1060, + AzeriteEssenceSelectionFailedCantRemoveEssence = 1061, + AzeriteEssenceSelectionFailedConditionFailed = 1062, + AzeriteEssenceSelectionFailedRestArea = 1063, + AzeriteEssenceSelectionFailedSlotLocked = 1064, + AzeriteEssenceSelectionFailedNotAtForge = 1065, + AzeriteEssenceSelectionFailedHeartLevelTooLow = 1066, + AzeriteEssenceSelectionFailedNotEquipped = 1067, + SocketingRequiresPunchcardredGem = 1068, + SocketingPunchcardredGemOnlyInPunchcardredslot = 1069, + SocketingRequiresPunchcardyellowGem = 1070, + SocketingPunchcardyellowGemOnlyInPunchcardyellowslot = 1071, + SocketingRequiresPunchcardblueGem = 1072, + SocketingPunchcardblueGemOnlyInPunchcardblueslot = 1073, + SocketingRequiresDominationShard = 1074, + SocketingDominationShardOnlyInDominationslot = 1075, + SocketingRequiresCypherGem = 1076, + SocketingCypherGemOnlyInCypherslot = 1077, + SocketingRequiresTinkerGem = 1078, + SocketingTinkerGemOnlyInTinkerslot = 1079, + LevelLinkingResultLinked = 1080, + LevelLinkingResultUnlinked = 1081, + ClubFinderErrorPostClub = 1082, + ClubFinderErrorApplyClub = 1083, + ClubFinderErrorRespondApplicant = 1084, + ClubFinderErrorCancelApplication = 1085, + ClubFinderErrorTypeAcceptApplication = 1086, + ClubFinderErrorTypeNoInvitePermissions = 1087, + ClubFinderErrorTypeNoPostingPermissions = 1088, + ClubFinderErrorTypeApplicantList = 1089, + ClubFinderErrorTypeApplicantListNoPerm = 1090, + ClubFinderErrorTypeFinderNotAvailable = 1091, + ClubFinderErrorTypeGetPostingIds = 1092, + ClubFinderErrorTypeJoinApplication = 1093, + ClubFinderErrorTypeRealmNotEligible = 1094, + ClubFinderErrorTypeFlaggedRename = 1095, + ClubFinderErrorTypeFlaggedDescriptionChange = 1096, + ItemInteractionNotEnoughGold = 1097, + ItemInteractionNotEnoughCurrency = 1098, + PlayerChoiceErrorPendingChoice = 1099, + SoulbindInvalidConduit = 1100, + SoulbindInvalidConduitItem = 1101, + SoulbindInvalidTalent = 1102, + SoulbindDuplicateConduit = 1103, + ActivateSoulbindS = 1104, + ActivateSoulbindFailedRestArea = 1105, + CantUseProfanity = 1106, + NotInPetBattle = 1107, + NotInNpe = 1108, + NoSpec = 1109, + NoDominationshardOverwrite = 1110, + UseWeeklyRewardsDisabled = 1111, + CrossFactionGroupJoined = 1112, + CantTargetUnfriendlyInOverworld = 1113, + EquipablespellsSlotsFull = 1114 } public enum SceneFlags diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index 31ef7257b..62443a638 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -3600,6 +3600,10 @@ namespace Game.Achievements if (GameTime.GetGameTime() - referencePlayer.m_playerData.LogoutTime < reqValue * Time.Day) return false; break; + case ModifierTreeType.PlayerHasPerksProgramPendingReward: // 350 + if (!referencePlayer.m_activePlayerData.HasPerksProgramPendingReward) + return false; + break; case ModifierTreeType.PlayerCanUseItem: // 351 { ItemTemplate itemTemplate = Global.ObjectMgr.GetItemTemplate(reqValue); @@ -3607,6 +3611,26 @@ namespace Game.Achievements return false; break; } + case ModifierTreeType.PlayerHasAtLeastProfPathRanks: // 355 + { + uint ranks = 0; + foreach (TraitConfig traitConfig in referencePlayer.m_activePlayerData.TraitConfigs) + { + if ((TraitConfigType)(int)traitConfig.Type != TraitConfigType.Profession) + continue; + + if (traitConfig.SkillLineID != secondaryAsset) + continue; + + foreach (TraitEntry traitEntry in traitConfig.Entries) + if (CliDB.TraitNodeEntryStorage.LookupByKey(traitEntry.TraitNodeEntryID)?.GetNodeEntryType() == TraitNodeEntryType.ProfPath) + ranks += (uint)(traitEntry.Rank + traitEntry.GrantedRanks); + } + + if (ranks < reqValue) + return false; + break; + } default: return false; } diff --git a/Source/Game/DataStorage/Structs/T_Records.cs b/Source/Game/DataStorage/Structs/T_Records.cs index 53778ba2e..6e4697dbc 100644 --- a/Source/Game/DataStorage/Structs/T_Records.cs +++ b/Source/Game/DataStorage/Structs/T_Records.cs @@ -191,7 +191,9 @@ namespace Game.DataStorage public uint Id; public int TraitDefinitionID; public int MaxRanks; - public byte NodeRecordType; + public byte NodeEntryType; + + public TraitNodeEntryType GetNodeEntryType() { return (TraitNodeEntryType)NodeEntryType; } } public sealed class TraitNodeEntryXTraitCondRecord diff --git a/Source/Game/Entities/GameObject/GameObjectData.cs b/Source/Game/Entities/GameObject/GameObjectData.cs index f09426e8a..442d60dbf 100644 --- a/Source/Game/Entities/GameObject/GameObjectData.cs +++ b/Source/Game/Entities/GameObject/GameObjectData.cs @@ -1206,6 +1206,7 @@ namespace Game.Entities public uint SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0 public uint InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0 public uint CustomizationScope; // 4 Customization Scope, int, Min value: 0, Max value: 2147483647, Default value: 0 + public uint Preventteleportingtheplayeroutofthebarbershopchair;// 5 Prevent teleporting the player out of the barbershop chair, enum { false, true, }; Default: false } public struct destructiblebuilding @@ -1512,6 +1513,12 @@ namespace Game.Entities { public uint Profession; // 0 Profession, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing } + + public struct perksProgramChest + { + public uint Script; // 0 Script, References: SpellScript, NoValue = 0 + public uint autoClose; // 1 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 + } #endregion } diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index ae41b28ca..2d5008080 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -1239,26 +1239,27 @@ namespace Game.Entities public UpdateField LooksLikeMountID = new(96, 114); public UpdateField LooksLikeCreatureID = new(96, 115); public UpdateField LookAtControllerID = new(96, 116); - public UpdateField TaxiNodesID = new(96, 117); - public UpdateField GuildGUID = new(96, 118); - public UpdateField FlightCapabilityID = new(96, 119); - public UpdateField SilencedSchoolMask = new(96, 120); - public UpdateField NameplateAttachToGUID = new(96, 121); // When set, nameplate of this unit will instead appear on that object - public UpdateFieldArray NpcFlags = new(2, 122, 123); - public UpdateFieldArray Power = new(7, 125, 126); - public UpdateFieldArray MaxPower = new(7, 125, 133); - public UpdateFieldArray PowerRegenFlatModifier = new(7, 125, 140); - public UpdateFieldArray PowerRegenInterruptedFlatModifier = new(7, 125, 147); - public UpdateFieldArray VirtualItems = new(3, 154, 155); - public UpdateFieldArray AttackRoundBaseTime = new(2, 158, 159); - public UpdateFieldArray Stats = new(4, 161, 162); - public UpdateFieldArray StatPosBuff = new(4, 161, 166); - public UpdateFieldArray StatNegBuff = new(4, 161, 170); - public UpdateFieldArray Resistances = new(7, 174, 175); - public UpdateFieldArray BonusResistanceMods = new(7, 174, 182); - public UpdateFieldArray ManaCostModifier = new(7, 174, 189); + public UpdateField PerksVendorItemID = new(96, 117); + public UpdateField TaxiNodesID = new(96, 118); + public UpdateField GuildGUID = new(96, 119); + public UpdateField FlightCapabilityID = new(96, 120); + public UpdateField SilencedSchoolMask = new(96, 121); + public UpdateField NameplateAttachToGUID = new(96, 122); // When set, nameplate of this unit will instead appear on that object + public UpdateFieldArray NpcFlags = new(2, 123, 124); + public UpdateFieldArray Power = new(7, 126, 127); + public UpdateFieldArray MaxPower = new(7, 126, 134); + public UpdateFieldArray PowerRegenFlatModifier = new(7, 126, 141); + public UpdateFieldArray PowerRegenInterruptedFlatModifier = new(7, 126, 148); + public UpdateFieldArray VirtualItems = new(3, 155, 156); + public UpdateFieldArray AttackRoundBaseTime = new(2, 159, 160); + public UpdateFieldArray Stats = new(4, 162, 163); + public UpdateFieldArray StatPosBuff = new(4, 162, 167); + public UpdateFieldArray StatNegBuff = new(4, 162, 171); + public UpdateFieldArray Resistances = new(7, 175, 176); + public UpdateFieldArray BonusResistanceMods = new(7, 175, 183); + public UpdateFieldArray ManaCostModifier = new(7, 175, 190); - public UnitData() : base(0, TypeId.Unit, 196) { } + public UnitData() : base(0, TypeId.Unit, 197) { } public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) { @@ -1433,6 +1434,7 @@ namespace Game.Entities data.WriteInt32(LooksLikeMountID); data.WriteInt32(LooksLikeCreatureID); data.WriteInt32(LookAtControllerID); + data.WriteInt32(PerksVendorItemID); data.WriteInt32(TaxiNodesID); data.WritePackedGuid(GuildGUID); data.WriteInt32(PassiveSpells.Size()); @@ -1454,7 +1456,7 @@ namespace Game.Entities public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) { - UpdateMask allowedMaskForTarget = new(195, new uint[] { 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xFC000FFFu, 0x00000001u, 0x00000000u }); + UpdateMask allowedMaskForTarget = new(195, new uint[] { 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xF8001FFFu, 0x00000003u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } @@ -1462,16 +1464,16 @@ namespace Game.Entities public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner)) - allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x200000FEu, 0x03FFF000u, 0xFFFFFFFEu, 0x0000000Fu })); + allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x400000FEu, 0x03FFF000u, 0xFFFFFFFEu, 0x0000000Fu })); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll)) - allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x20000000u, 0x03FFF000u, 0x00000000u, 0x00000000u })); + allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x40000000u, 0x07FFE000u, 0x00000000u, 0x00000000u })); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Empath)) - allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x003FC000u, 0x00000000u })); + allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x007F8000u, 0x00000000u })); } public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags) { - UpdateMask allowedMaskForTarget = new(195, new[] { 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xFC000FFFu, 0x00000001u, 0x00000000u }); + UpdateMask allowedMaskForTarget = new(195, new[] { 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xF8001FFFu, 0x00000003u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask.AND(allowedMaskForTarget); } @@ -1610,7 +1612,7 @@ namespace Game.Entities } if (changesMask[19]) { - data .WritePackedGuid( Target); + data.WritePackedGuid(Target); } if (changesMask[20]) { @@ -1999,108 +2001,112 @@ namespace Game.Entities } if (changesMask[117]) { - data.WriteInt32(TaxiNodesID); + data.WriteInt32(PerksVendorItemID); } if (changesMask[118]) { - data.WritePackedGuid(GuildGUID); + data.WriteInt32(TaxiNodesID); } if (changesMask[119]) { - data.WriteInt32(FlightCapabilityID); + data.WritePackedGuid(GuildGUID); } if (changesMask[120]) { - data.WriteUInt32(SilencedSchoolMask); + data.WriteInt32(FlightCapabilityID); } if (changesMask[121]) + { + data.WriteUInt32(SilencedSchoolMask); + } + if (changesMask[122]) { data.WritePackedGuid(NameplateAttachToGUID); } } - if (changesMask[122]) + if (changesMask[123]) { for (int i = 0; i < 2; ++i) { - if (changesMask[123 + i]) + if (changesMask[124 + i]) { data.WriteUInt32(GetViewerDependentNpcFlags(this, i, owner, receiver)); } } } - if (changesMask[125]) + if (changesMask[126]) { for (int i = 0; i < 7; ++i) { - if (changesMask[126 + i]) + if (changesMask[127 + i]) { data.WriteInt32(Power[i]); } - if (changesMask[133 + i]) + if (changesMask[134 + i]) { data.WriteUInt32(MaxPower[i]); } - if (changesMask[140 + i]) + if (changesMask[141 + i]) { data.WriteFloat(PowerRegenFlatModifier[i]); } - if (changesMask[147 + i]) + if (changesMask[148 + i]) { data.WriteFloat(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[154]) + if (changesMask[155]) { for (int 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 (int i = 0; i < 2; ++i) { - if (changesMask[159 + i]) + if (changesMask[160 + i]) { data.WriteUInt32(AttackRoundBaseTime[i]); } } } - if (changesMask[161]) + if (changesMask[162]) { for (int i = 0; i < 4; ++i) { - if (changesMask[162 + i]) + if (changesMask[163 + i]) { data.WriteInt32(Stats[i]); } - if (changesMask[166 + i]) + if (changesMask[167 + i]) { data.WriteInt32(StatPosBuff[i]); } - if (changesMask[170 + i]) + if (changesMask[171 + i]) { data.WriteInt32(StatNegBuff[i]); } } } - if (changesMask[174]) + if (changesMask[175]) { for (int i = 0; i < 7; ++i) { - if (changesMask[175 + i]) + if (changesMask[176 + i]) { data.WriteInt32(Resistances[i]); } - if (changesMask[182 + i]) + if (changesMask[183 + i]) { data.WriteInt32(BonusResistanceMods[i]); } - if (changesMask[189 + i]) + if (changesMask[190 + i]) { data.WriteInt32(ManaCostModifier[i]); } @@ -2223,6 +2229,7 @@ namespace Game.Entities ClearChangesMask(LooksLikeMountID); ClearChangesMask(LooksLikeCreatureID); ClearChangesMask(LookAtControllerID); + ClearChangesMask(PerksVendorItemID); ClearChangesMask(TaxiNodesID); ClearChangesMask(GuildGUID); ClearChangesMask(FlightCapabilityID); @@ -4145,6 +4152,29 @@ namespace Game.Entities } } + public class PersonalCraftingOrderCount : IEquatable + { + public int ProfessionID; + public uint Count; + + public void WriteCreate(WorldPacket data, Player owner, Player receiver) + { + data.WriteInt32(ProfessionID); + data.WriteUInt32(Count); + } + + public void WriteUpdate(WorldPacket data, bool ignoreChangesMask, Player owner, Player receiver) + { + data.WriteInt32(ProfessionID); + data.WriteUInt32(Count); + } + + public bool Equals(PersonalCraftingOrderCount right) + { + return ProfessionID == right.ProfessionID && Count == right.Count; + } + } + public class ActivePlayerData : BaseUpdateData { public static int ExploredZonesSize; @@ -4156,132 +4186,136 @@ namespace Game.Entities public UpdateField BankAutoSortDisabled = new(0, 2); public UpdateField SortBagsRightToLeft = new(0, 3); public UpdateField InsertItemsLeftToRight = new(0, 4); - public UpdateFieldArray> Research = new(1, 30, 31); - public DynamicUpdateField KnownTitles = new(0, 5); - public DynamicUpdateField ResearchSites = new(0, 7); - public DynamicUpdateField ResearchSiteProgress = new(0, 8); - public DynamicUpdateField DailyQuestsCompleted = new(0, 9); - public DynamicUpdateField AvailableQuestLineXQuestIDs = new(0, 10); - public DynamicUpdateField Heirlooms = new(0, 11); - public DynamicUpdateField HeirloomFlags = new(0, 12); - public DynamicUpdateField Toys = new(0, 13); - public DynamicUpdateField ToyFlags = new(0, 14); - public DynamicUpdateField Transmog = new(0, 15); - public DynamicUpdateField ConditionalTransmog = new(0, 16); - public DynamicUpdateField SelfResSpells = new(0, 17); - public DynamicUpdateField RuneforgePowers = new(0, 18); - public DynamicUpdateField TransmogIllusions = new(0, 19); - public DynamicUpdateField SpellPctModByLabel = new(0, 21); - public DynamicUpdateField SpellFlatModByLabel = new(0, 22); - public DynamicUpdateField MawPowers = new(0, 23); - public DynamicUpdateField MultiFloorExploration = new(0, 24); - public DynamicUpdateField RecipeProgression = new(0, 25); - public DynamicUpdateField ReplayedQuests = new(0, 26); - public DynamicUpdateField DisabledSpells = new(0, 27); - public DynamicUpdateField PvpInfo = new(0, 6); - public DynamicUpdateField CharacterRestrictions = new(0, 20); - public DynamicUpdateField TraitConfigs = new(0, 28); - public DynamicUpdateField CraftingOrders = new(0, 29); - public UpdateField FarsightObject = new(0, 32); - public UpdateField SummonedBattlePetGUID = new(0, 33); - public UpdateField Coinage = new(34, 35); - public UpdateField XP = new(34, 36); - public UpdateField NextLevelXP = new(34, 37); - public UpdateField TrialXP = new(34, 38); - public UpdateField Skill = new(34, 39); - public UpdateField CharacterPoints = new(34, 40); - public UpdateField MaxTalentTiers = new(34, 41); - public UpdateField TrackCreatureMask = new(34, 42); - public UpdateField MainhandExpertise = new(34, 43); - public UpdateField OffhandExpertise = new(34, 44); - public UpdateField RangedExpertise = new(34, 45); - public UpdateField CombatRatingExpertise = new(34, 46); - public UpdateField BlockPercentage = new(34, 47); - public UpdateField DodgePercentage = new(34, 48); - public UpdateField DodgePercentageFromAttribute = new(34, 49); - public UpdateField ParryPercentage = new(34, 50); - public UpdateField ParryPercentageFromAttribute = new(34, 51); - public UpdateField CritPercentage = new(34, 52); - public UpdateField RangedCritPercentage = new(34, 53); - public UpdateField OffhandCritPercentage = new(34, 54); - public UpdateField SpellCritPercentage = new(34, 55); - public UpdateField ShieldBlock = new(34, 56); - public UpdateField ShieldBlockCritPercentage = new(34, 57); - public UpdateField Mastery = new(34, 58); - public UpdateField Speed = new(34, 59); - public UpdateField Avoidance = new(34, 60); - public UpdateField Sturdiness = new(34, 61); - public UpdateField Versatility = new(34, 62); - public UpdateField VersatilityBonus = new(34, 63); - public UpdateField PvpPowerDamage = new(34, 64); - public UpdateField PvpPowerHealing = new(34, 65); - public UpdateField ModHealingDonePos = new(66, 67); - public UpdateField ModHealingPercent = new(66, 68); - public UpdateField ModPeriodicHealingDonePercent = new(66, 69); - public UpdateField ModSpellPowerPercent = new(66, 70); - public UpdateField ModResiliencePercent = new(66, 71); - public UpdateField OverrideSpellPowerByAPPercent = new(66, 72); - public UpdateField OverrideAPBySpellPowerPercent = new(66, 73); - public UpdateField ModTargetResistance = new(66, 74); - public UpdateField ModTargetPhysicalResistance = new(66, 75); - public UpdateField LocalFlags = new(66, 76); - public UpdateField GrantableLevels = new(66, 77); - public UpdateField MultiActionBars = new(66, 78); - public UpdateField LifetimeMaxRank = new(66, 79); - public UpdateField NumRespecs = new(66, 80); - public UpdateField PvpMedals = new(66, 81); - public UpdateField TodayHonorableKills = new(66, 82); - public UpdateField YesterdayHonorableKills = new(66, 83); - public UpdateField LifetimeHonorableKills = new(66, 84); - public UpdateField WatchedFactionIndex = new(66, 85); - public UpdateField MaxLevel = new(66, 86); - public UpdateField ScalingPlayerLevelDelta = new(66, 87); - public UpdateField MaxCreatureScalingLevel = new(66, 88); - public UpdateField PetSpellPower = new(66, 89); - public UpdateField UiHitModifier = new(66, 90); - public UpdateField UiSpellHitModifier = new(66, 91); - public UpdateField HomeRealmTimeOffset = new(66, 92); - public UpdateField ModPetHaste = new(66, 93); - public UpdateField JailersTowerLevelMax = new(66, 94); - public UpdateField JailersTowerLevel = new(66, 95); - public UpdateField LocalRegenFlags = new(66, 96); - public UpdateField AuraVision = new(66, 97); - public UpdateField NumBackpackSlots = new(98, 99); - public UpdateField OverrideSpellsID = new(98, 100); - public UpdateField LootSpecID = new(98, 101); - public UpdateField OverrideZonePVPType = new(98, 102); - public UpdateField BnetAccount = new(98, 103); - public UpdateField GuildClubMemberID = new(98, 104); - public UpdateField Honor = new(98, 105); - public UpdateField HonorNextLevel = new(98, 106); - public UpdateField NumBankSlots = new(98, 107); - public UpdateField Field_1410 = new(98, 109); - public OptionalUpdateField QuestSession = new(98, 108); - public UpdateField UiChromieTimeExpansionID = new(98, 110); - public UpdateField TransportServerTime = new(98, 111); - public UpdateField WeeklyRewardsPeriodSinceOrigin = new(98, 112); // week count since Cfg_RegionsEntry::ChallengeOrigin - public UpdateField DEBUGSoulbindConduitRank = new(98, 113); - public UpdateField DungeonScore = new(98, 114); - public UpdateField ActiveCombatTraitConfigID = new(98, 115); - public UpdateFieldArray InvSlots = new(218, 116, 117); - public UpdateFieldArray ExploredZones = new(240, 335, 336); - public UpdateFieldArray RestInfo = new(2, 576, 577); - public UpdateFieldArray ModDamageDonePos = new(7, 579, 580); - public UpdateFieldArray ModDamageDoneNeg = new(7, 579, 587); - public UpdateFieldArray ModDamageDonePercent = new(7, 579, 594); - public UpdateFieldArray ModHealingDonePercent = new(7, 579, 601); - public UpdateFieldArray WeaponDmgMultipliers = new(3, 608, 609); - public UpdateFieldArray WeaponAtkSpeedMultipliers = new(3, 608, 612); - public UpdateFieldArray BuybackPrice = new(12, 615, 616); - public UpdateFieldArray BuybackTimestamp = new(12, 615, 628); - public UpdateFieldArray CombatRatings = new(32, 640, 641); - public UpdateFieldArray NoReagentCostMask = new(4, 673, 674); - public UpdateFieldArray ProfessionSkillLine = new(2, 678, 679); - public UpdateFieldArray BagSlotFlags = new(5, 681, 682); - public UpdateFieldArray BankBagSlotFlags = new(7, 687, 688); - public UpdateFieldArray QuestCompleted = new(875, 695, 696); + public UpdateField HasPerksProgramPendingReward = new(0, 5); + public UpdateFieldArray> Research = new(1, 32, 33); + public DynamicUpdateField KnownTitles = new(0, 6); + public DynamicUpdateField ResearchSites = new(0, 8); + public DynamicUpdateField ResearchSiteProgress = new(0, 9); + public DynamicUpdateField DailyQuestsCompleted = new(0, 10); + public DynamicUpdateField AvailableQuestLineXQuestIDs = new(0, 11); + public DynamicUpdateField Heirlooms = new(0, 12); + public DynamicUpdateField HeirloomFlags = new(0, 13); + public DynamicUpdateField Toys = new(0, 14); + public DynamicUpdateField ToyFlags = new(0, 15); + public DynamicUpdateField Transmog = new(0, 16); + public DynamicUpdateField ConditionalTransmog = new(0, 17); + public DynamicUpdateField SelfResSpells = new(0, 18); + public DynamicUpdateField RuneforgePowers = new(0, 19); + public DynamicUpdateField TransmogIllusions = new(0, 20); + public DynamicUpdateField SpellPctModByLabel = new(0, 22); + public DynamicUpdateField SpellFlatModByLabel = new(0, 23); + public DynamicUpdateField MawPowers = new(0, 24); + public DynamicUpdateField MultiFloorExploration = new(0, 25); + public DynamicUpdateField RecipeProgression = new(0, 26); + public DynamicUpdateField ReplayedQuests = new(0, 27); + public DynamicUpdateField DisabledSpells = new(0, 28); + public DynamicUpdateField PersonalCraftingOrderCounts = new(0, 31); + public DynamicUpdateField PvpInfo = new(0, 7); + public DynamicUpdateField CharacterRestrictions = new(0, 21); + public DynamicUpdateField TraitConfigs = new(0, 29); + public DynamicUpdateField CraftingOrders = new(0, 30); + public UpdateField FarsightObject = new(34, 35); + public UpdateField SummonedBattlePetGUID = new(34, 36); + public UpdateField Coinage = new(34, 37); + public UpdateField XP = new(34, 38); + public UpdateField NextLevelXP = new(34, 39); + public UpdateField TrialXP = new(34, 40); + public UpdateField Skill = new(34, 41); + public UpdateField CharacterPoints = new(34, 42); + public UpdateField MaxTalentTiers = new(34, 43); + public UpdateField TrackCreatureMask = new(34, 44); + public UpdateField MainhandExpertise = new(34, 45); + public UpdateField OffhandExpertise = new(34, 46); + public UpdateField RangedExpertise = new(34, 47); + public UpdateField CombatRatingExpertise = new(34, 48); + public UpdateField BlockPercentage = new(34, 49); + public UpdateField DodgePercentage = new(34, 50); + public UpdateField DodgePercentageFromAttribute = new(34, 51); + public UpdateField ParryPercentage = new(34, 52); + public UpdateField ParryPercentageFromAttribute = new(34, 53); + public UpdateField CritPercentage = new(34, 54); + public UpdateField RangedCritPercentage = new(34, 55); + public UpdateField OffhandCritPercentage = new(34, 56); + public UpdateField SpellCritPercentage = new(34, 57); + public UpdateField ShieldBlock = new(34, 58); + public UpdateField ShieldBlockCritPercentage = new(34, 59); + public UpdateField Mastery = new(34, 60); + public UpdateField Speed = new(34, 61); + public UpdateField Avoidance = new(34, 62); + public UpdateField Sturdiness = new(34, 63); + public UpdateField Versatility = new(34, 64); + public UpdateField VersatilityBonus = new(34, 65); + public UpdateField PvpPowerDamage = new(66, 67); + public UpdateField PvpPowerHealing = new(66, 68); + public UpdateField ModHealingDonePos = new(66, 69); + public UpdateField ModHealingPercent = new(66, 70); + public UpdateField ModPeriodicHealingDonePercent = new(66, 71); + public UpdateField ModSpellPowerPercent = new(66, 72); + public UpdateField ModResiliencePercent = new(66, 73); + public UpdateField OverrideSpellPowerByAPPercent = new(66, 74); + public UpdateField OverrideAPBySpellPowerPercent = new(66, 75); + public UpdateField ModTargetResistance = new(66, 76); + public UpdateField ModTargetPhysicalResistance = new(66, 77); + public UpdateField LocalFlags = new(66, 78); + public UpdateField GrantableLevels = new(66, 79); + public UpdateField MultiActionBars = new(66, 80); + public UpdateField LifetimeMaxRank = new(66, 81); + public UpdateField NumRespecs = new(66, 82); + public UpdateField PvpMedals = new(66, 83); + public UpdateField TodayHonorableKills = new(66, 84); + public UpdateField YesterdayHonorableKills = new(66, 85); + public UpdateField LifetimeHonorableKills = new(66, 86); + public UpdateField WatchedFactionIndex = new(66, 87); + public UpdateField MaxLevel = new(66, 88); + public UpdateField ScalingPlayerLevelDelta = new(66, 89); + public UpdateField MaxCreatureScalingLevel = new(66, 90); + public UpdateField PetSpellPower = new(66, 91); + public UpdateField UiHitModifier = new(66, 92); + public UpdateField UiSpellHitModifier = new(66, 93); + public UpdateField HomeRealmTimeOffset = new(66, 94); + public UpdateField ModPetHaste = new(66, 95); + public UpdateField JailersTowerLevelMax = new(66, 96); + public UpdateField JailersTowerLevel = new(66, 97); + public UpdateField LocalRegenFlags = new(98, 99); + public UpdateField AuraVision = new(98, 100); + public UpdateField NumBackpackSlots = new(98, 101); + public UpdateField OverrideSpellsID = new(98, 102); + public UpdateField LootSpecID = new(98, 103); + public UpdateField OverrideZonePVPType = new(98, 104); + public UpdateField BnetAccount = new(98, 105); + public UpdateField GuildClubMemberID = new(98, 106); + public UpdateField Honor = new(98, 107); + public UpdateField HonorNextLevel = new(98, 108); + public UpdateField PerksProgramCurrency = new(98, 109); + public UpdateField NumBankSlots = new(98, 110); + public UpdateField FrozenPerksVendorItem = new(98, 111); + public UpdateField Field_1410 = new(98, 113); + public OptionalUpdateField QuestSession = new(98, 112); + public UpdateField UiChromieTimeExpansionID = new(98, 114); + public UpdateField TransportServerTime = new(98, 115); + public UpdateField WeeklyRewardsPeriodSinceOrigin = new(98, 116); // week count since Cfg_RegionsEntry::ChallengeOrigin + public UpdateField DEBUGSoulbindConduitRank = new(98, 117); + public UpdateField DungeonScore = new(98, 118); + public UpdateField ActiveCombatTraitConfigID = new(98, 119); + public UpdateFieldArray InvSlots = new(218, 120, 121); + public UpdateFieldArray ExploredZones = new(240, 339, 340); + public UpdateFieldArray RestInfo = new(2, 580, 581); + public UpdateFieldArray ModDamageDonePos = new(7, 583, 584); + public UpdateFieldArray ModDamageDoneNeg = new(7, 583, 591); + public UpdateFieldArray ModDamageDonePercent = new(7, 583, 598); + public UpdateFieldArray ModHealingDonePercent = new(7, 583, 605); + public UpdateFieldArray WeaponDmgMultipliers = new(3, 612, 613); + public UpdateFieldArray WeaponAtkSpeedMultipliers = new(3, 612, 616); + public UpdateFieldArray BuybackPrice = new(12, 619, 620); + public UpdateFieldArray BuybackTimestamp = new(12, 619, 632); + public UpdateFieldArray CombatRatings = new(32, 644, 645); + public UpdateFieldArray NoReagentCostMask = new(4, 677, 678); + public UpdateFieldArray ProfessionSkillLine = new(2, 682, 683); + public UpdateFieldArray BagSlotFlags = new(5, 685, 686); + public UpdateFieldArray BankBagSlotFlags = new(7, 691, 692); + public UpdateFieldArray QuestCompleted = new(875, 699, 700); - public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1571) + public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1575) { ExploredZonesSize = ExploredZones.GetSize(); ExploredZonesBits = sizeof(ulong) * 8; @@ -4419,6 +4453,7 @@ namespace Game.Entities } data.WriteUInt32(Honor); data.WriteUInt32(HonorNextLevel); + data.WriteInt32(PerksProgramCurrency); data.WriteUInt8(NumBankSlots); data.WriteInt32(ResearchSites.Size()); data.WriteInt32(ResearchSiteProgress.Size()); @@ -4456,6 +4491,7 @@ namespace Game.Entities data.WriteInt32(TraitConfigs.Size()); data.WriteUInt32(ActiveCombatTraitConfigID); data.WriteInt32(CraftingOrders.Size()); + data.WriteInt32(PersonalCraftingOrderCounts.Size()); for (int i = 0; i < KnownTitles.Size(); ++i) { data.WriteUInt64(KnownTitles[i]); @@ -4540,17 +4576,23 @@ namespace Game.Entities { data.WriteInt32(DisabledSpells[i]); } + for (int 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.HasValue(), 1); - ((ActivePlayerUnk901)Field_1410).WriteCreate(data, owner, receiver); + FrozenPerksVendorItem.GetValue().Write(data); if (QuestSession.HasValue()) { QuestSession.GetValue().WriteCreate(data, owner, receiver); } + ((ActivePlayerUnk901)Field_1410).WriteCreate(data, owner, receiver); DungeonScore._value.Write(data); for (int i = 0; i < PvpInfo.Size(); ++i) { @@ -4604,125 +4646,129 @@ namespace Game.Entities data.WriteBit(InsertItemsLeftToRight); } 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); @@ -4730,11 +4776,11 @@ namespace Game.Entities WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.Size(), data); } } - if (changesMask[30]) + if (changesMask[32]) { for (int i = 0; i < 1; ++i) { - if (changesMask[31 + i]) + if (changesMask[33 + i]) { if (!ignoreNestedChangesMask) Research[i].WriteUpdateMask(data); @@ -4753,60 +4799,67 @@ namespace Game.Entities 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 (int i = 0; i < KnownTitles.Size(); ++i) { @@ -4816,7 +4869,7 @@ namespace Game.Entities } } } - if (changesMask[7]) + if (changesMask[8]) { for (int i = 0; i < ResearchSites.Size(); ++i) { @@ -4826,7 +4879,7 @@ namespace Game.Entities } } } - if (changesMask[8]) + if (changesMask[9]) { for (int i = 0; i < ResearchSiteProgress.Size(); ++i) { @@ -4836,7 +4889,7 @@ namespace Game.Entities } } } - if (changesMask[9]) + if (changesMask[10]) { for (int i = 0; i < DailyQuestsCompleted.Size(); ++i) { @@ -4846,7 +4899,7 @@ namespace Game.Entities } } } - if (changesMask[10]) + if (changesMask[11]) { for (int i = 0; i < AvailableQuestLineXQuestIDs.Size(); ++i) { @@ -4856,7 +4909,7 @@ namespace Game.Entities } } } - if (changesMask[11]) + if (changesMask[12]) { for (int i = 0; i < Heirlooms.Size(); ++i) { @@ -4866,7 +4919,7 @@ namespace Game.Entities } } } - if (changesMask[12]) + if (changesMask[13]) { for (int i = 0; i < HeirloomFlags.Size(); ++i) { @@ -4876,7 +4929,7 @@ namespace Game.Entities } } } - if (changesMask[13]) + if (changesMask[14]) { for (int i = 0; i < Toys.Size(); ++i) { @@ -4886,7 +4939,7 @@ namespace Game.Entities } } } - if (changesMask[14]) + if (changesMask[15]) { for (int i = 0; i < ToyFlags.Size(); ++i) { @@ -4896,7 +4949,7 @@ namespace Game.Entities } } } - if (changesMask[15]) + if (changesMask[16]) { for (int i = 0; i < Transmog.Size(); ++i) { @@ -4906,7 +4959,7 @@ namespace Game.Entities } } } - if (changesMask[16]) + if (changesMask[17]) { for (int i = 0; i < ConditionalTransmog.Size(); ++i) { @@ -4916,7 +4969,7 @@ namespace Game.Entities } } } - if (changesMask[17]) + if (changesMask[18]) { for (int i = 0; i < SelfResSpells.Size(); ++i) { @@ -4926,7 +4979,7 @@ namespace Game.Entities } } } - if (changesMask[18]) + if (changesMask[19]) { for (int i = 0; i < RuneforgePowers.Size(); ++i) { @@ -4936,7 +4989,7 @@ namespace Game.Entities } } } - if (changesMask[19]) + if (changesMask[20]) { for (int i = 0; i < TransmogIllusions.Size(); ++i) { @@ -4946,7 +4999,7 @@ namespace Game.Entities } } } - if (changesMask[21]) + if (changesMask[22]) { for (int i = 0; i < SpellPctModByLabel.Size(); ++i) { @@ -4956,7 +5009,7 @@ namespace Game.Entities } } } - if (changesMask[22]) + if (changesMask[23]) { for (int i = 0; i < SpellFlatModByLabel.Size(); ++i) { @@ -4966,7 +5019,7 @@ namespace Game.Entities } } } - if (changesMask[23]) + if (changesMask[24]) { for (int i = 0; i < MawPowers.Size(); ++i) { @@ -4976,7 +5029,7 @@ namespace Game.Entities } } } - if (changesMask[24]) + if (changesMask[25]) { for (int i = 0; i < MultiFloorExploration.Size(); ++i) { @@ -4986,7 +5039,7 @@ namespace Game.Entities } } } - if (changesMask[25]) + if (changesMask[26]) { for (int i = 0; i < RecipeProgression.Size(); ++i) { @@ -4996,7 +5049,7 @@ namespace Game.Entities } } } - if (changesMask[26]) + if (changesMask[27]) { for (int i = 0; i < ReplayedQuests.Size(); ++i) { @@ -5006,7 +5059,7 @@ namespace Game.Entities } } } - if (changesMask[27]) + if (changesMask[28]) { for (int i = 0; i < DisabledSpells.Size(); ++i) { @@ -5016,7 +5069,17 @@ namespace Game.Entities } } } - if (changesMask[6]) + if (changesMask[31]) + { + for (int i = 0; i < PersonalCraftingOrderCounts.Size(); ++i) + { + if (PersonalCraftingOrderCounts.HasChanged(i) || ignoreNestedChangesMask) + { + PersonalCraftingOrderCounts[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } + if (changesMask[7]) { for (int i = 0; i < PvpInfo.Size(); ++i) { @@ -5026,7 +5089,7 @@ namespace Game.Entities } } } - if (changesMask[20]) + if (changesMask[21]) { for (int i = 0; i < CharacterRestrictions.Size(); ++i) { @@ -5036,7 +5099,7 @@ namespace Game.Entities } } } - if (changesMask[28]) + if (changesMask[29]) { for (int i = 0; i < TraitConfigs.Size(); ++i) { @@ -5046,7 +5109,7 @@ namespace Game.Entities } } } - if (changesMask[29]) + if (changesMask[30]) { for (int i = 0; i < CraftingOrders.Size(); ++i) { @@ -5056,324 +5119,328 @@ namespace Game.Entities } } } - if (changesMask[32]) - { - data.WritePackedGuid(FarsightObject); - } - if (changesMask[33]) - { - data.WritePackedGuid(SummonedBattlePetGUID); - } } if (changesMask[34]) { if (changesMask[35]) { - data.WriteUInt64(Coinage); + data.WritePackedGuid(FarsightObject); } if (changesMask[36]) { - data.WriteUInt32(XP); + data.WritePackedGuid(SummonedBattlePetGUID); } if (changesMask[37]) { - data.WriteUInt32(NextLevelXP); + data.WriteUInt64(Coinage); } if (changesMask[38]) { - data.WriteInt32(TrialXP); + data.WriteUInt32(XP); } if (changesMask[39]) { - Skill.GetValue().WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data.WriteUInt32(NextLevelXP); } if (changesMask[40]) { - data.WriteUInt32(CharacterPoints); + data.WriteInt32(TrialXP); } if (changesMask[41]) { - data.WriteUInt32(MaxTalentTiers); + ((SkillInfo)Skill).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[42]) { - data.WriteUInt32(TrackCreatureMask); + data.WriteUInt32(CharacterPoints); } if (changesMask[43]) { - data.WriteFloat(MainhandExpertise); + data.WriteUInt32(MaxTalentTiers); } if (changesMask[44]) { - data.WriteFloat(OffhandExpertise); + data.WriteUInt32(TrackCreatureMask); } if (changesMask[45]) { - data.WriteFloat(RangedExpertise); + data.WriteFloat(MainhandExpertise); } if (changesMask[46]) { - data.WriteFloat(CombatRatingExpertise); + data.WriteFloat(OffhandExpertise); } if (changesMask[47]) { - data.WriteFloat(BlockPercentage); + data.WriteFloat(RangedExpertise); } if (changesMask[48]) { - data.WriteFloat(DodgePercentage); + data.WriteFloat(CombatRatingExpertise); } if (changesMask[49]) { - data.WriteFloat(DodgePercentageFromAttribute); + data.WriteFloat(BlockPercentage); } if (changesMask[50]) { - data.WriteFloat(ParryPercentage); + data.WriteFloat(DodgePercentage); } if (changesMask[51]) { - data.WriteFloat(ParryPercentageFromAttribute); + data.WriteFloat(DodgePercentageFromAttribute); } if (changesMask[52]) { - data.WriteFloat(CritPercentage); + data.WriteFloat(ParryPercentage); } if (changesMask[53]) { - data.WriteFloat(RangedCritPercentage); + data.WriteFloat(ParryPercentageFromAttribute); } if (changesMask[54]) { - data.WriteFloat(OffhandCritPercentage); + data.WriteFloat(CritPercentage); } if (changesMask[55]) { - data.WriteFloat(SpellCritPercentage); + data.WriteFloat(RangedCritPercentage); } if (changesMask[56]) { - data.WriteUInt32(ShieldBlock); + data.WriteFloat(OffhandCritPercentage); } if (changesMask[57]) { - data.WriteFloat(ShieldBlockCritPercentage); + data.WriteFloat(SpellCritPercentage); } if (changesMask[58]) { - data.WriteFloat(Mastery); + data.WriteUInt32(ShieldBlock); } if (changesMask[59]) { - data.WriteFloat(Speed); + data.WriteFloat(ShieldBlockCritPercentage); } if (changesMask[60]) { - data.WriteFloat(Avoidance); + data.WriteFloat(Mastery); } if (changesMask[61]) { - data.WriteFloat(Sturdiness); + data.WriteFloat(Speed); } if (changesMask[62]) { - data.WriteInt32(Versatility); + data.WriteFloat(Avoidance); } if (changesMask[63]) { - data.WriteFloat(VersatilityBonus); + data.WriteFloat(Sturdiness); } if (changesMask[64]) { - data.WriteFloat(PvpPowerDamage); + data.WriteInt32(Versatility); } if (changesMask[65]) { - data.WriteFloat(PvpPowerHealing); + data.WriteFloat(VersatilityBonus); } } if (changesMask[66]) { if (changesMask[67]) { - data.WriteInt32(ModHealingDonePos); + data.WriteFloat(PvpPowerDamage); } if (changesMask[68]) { - data.WriteFloat(ModHealingPercent); + data.WriteFloat(PvpPowerHealing); } if (changesMask[69]) { - data.WriteFloat(ModPeriodicHealingDonePercent); + data.WriteInt32(ModHealingDonePos); } if (changesMask[70]) { - data.WriteFloat(ModSpellPowerPercent); + data.WriteFloat(ModHealingPercent); } if (changesMask[71]) { - data.WriteFloat(ModResiliencePercent); + data.WriteFloat(ModPeriodicHealingDonePercent); } if (changesMask[72]) { - data.WriteFloat(OverrideSpellPowerByAPPercent); + data.WriteFloat(ModSpellPowerPercent); } if (changesMask[73]) { - data.WriteFloat(OverrideAPBySpellPowerPercent); + data.WriteFloat(ModResiliencePercent); } if (changesMask[74]) { - data.WriteInt32(ModTargetResistance); + data.WriteFloat(OverrideSpellPowerByAPPercent); } if (changesMask[75]) { - data.WriteInt32(ModTargetPhysicalResistance); + data.WriteFloat(OverrideAPBySpellPowerPercent); } if (changesMask[76]) { - data.WriteUInt32(LocalFlags); + data.WriteInt32(ModTargetResistance); } if (changesMask[77]) { - data.WriteUInt8(GrantableLevels); + data.WriteInt32(ModTargetPhysicalResistance); } if (changesMask[78]) { - data.WriteUInt8(MultiActionBars); + data.WriteUInt32(LocalFlags); } if (changesMask[79]) { - data.WriteUInt8(LifetimeMaxRank); + data.WriteUInt8(GrantableLevels); } if (changesMask[80]) { - data.WriteUInt8(NumRespecs); + data.WriteUInt8(MultiActionBars); } if (changesMask[81]) { - data.WriteUInt32(PvpMedals); + data.WriteUInt32(LifetimeMaxRank); } if (changesMask[82]) { - data.WriteUInt16(TodayHonorableKills); + data.WriteUInt16(NumRespecs); } if (changesMask[83]) { - data.WriteUInt16(YesterdayHonorableKills); + data.WriteUInt32(PvpMedals); } if (changesMask[84]) { - data.WriteUInt32(LifetimeHonorableKills); + data.WriteUInt32(TodayHonorableKills); } if (changesMask[85]) { - data.WriteUInt32(WatchedFactionIndex); + data.WriteUInt32(YesterdayHonorableKills); } if (changesMask[86]) { - data.WriteInt32(MaxLevel); + data.WriteUInt32(LifetimeHonorableKills); } if (changesMask[87]) { - data.WriteInt32(ScalingPlayerLevelDelta); + data.WriteUInt32(WatchedFactionIndex); } if (changesMask[88]) { - data.WriteInt32(MaxCreatureScalingLevel); + data.WriteInt32(MaxLevel); } if (changesMask[89]) { - data.WriteUInt32(PetSpellPower); + data.WriteInt32(ScalingPlayerLevelDelta); } if (changesMask[90]) { - data.WriteFloat(UiHitModifier); + data.WriteInt32(MaxCreatureScalingLevel); } if (changesMask[91]) { - data.WriteFloat(UiSpellHitModifier); + data.WriteUInt32(PetSpellPower); } if (changesMask[92]) { - data.WriteInt32(HomeRealmTimeOffset); + data.WriteFloat(UiHitModifier); } if (changesMask[93]) { - data.WriteFloat(ModPetHaste); + data.WriteFloat(UiSpellHitModifier); } if (changesMask[94]) { - data.WriteInt8(JailersTowerLevelMax); + data.WriteInt32(HomeRealmTimeOffset); } if (changesMask[95]) { - data.WriteInt8(JailersTowerLevel); + data.WriteFloat(ModPetHaste); } if (changesMask[96]) { - data.WriteUInt8(LocalRegenFlags); + data.WriteInt8(JailersTowerLevelMax); } if (changesMask[97]) { - data.WriteUInt8(AuraVision); + data.WriteInt8(JailersTowerLevel); } } if (changesMask[98]) { if (changesMask[99]) { - data.WriteUInt8(NumBackpackSlots); + data.WriteUInt8(LocalRegenFlags); } if (changesMask[100]) { - data.WriteUInt32(OverrideSpellsID); + data.WriteUInt32(AuraVision); } if (changesMask[101]) { - data.WriteUInt16(LootSpecID); + data.WriteUInt16(NumBackpackSlots); } if (changesMask[102]) { - data.WriteUInt32(OverrideZonePVPType); + data.WriteUInt32(OverrideSpellsID); } if (changesMask[103]) { - data.WritePackedGuid(BnetAccount); + data.WriteUInt16(LootSpecID); } if (changesMask[104]) { - data.WriteUInt64(GuildClubMemberID); + data.WriteUInt64(OverrideZonePVPType); } if (changesMask[105]) { - data.WriteUInt32(Honor); + data.WritePackedGuid(BnetAccount); } if (changesMask[106]) { - data.WriteUInt32(HonorNextLevel); + data.WriteUInt64(GuildClubMemberID); } if (changesMask[107]) { - data.WriteUInt8(NumBankSlots); + data.WriteUInt32(Honor); + } + if (changesMask[108]) + { + data.WriteUInt32(HonorNextLevel); + } + if (changesMask[109]) + { + data.WriteInt32(PerksProgramCurrency); } if (changesMask[110]) + { + data.WriteInt32(NumBankSlots); + } + if (changesMask[114]) { data.WriteInt32(UiChromieTimeExpansionID); } - if (changesMask[111]) + if (changesMask[115]) { data.WriteInt32(TransportServerTime); } - if (changesMask[112]) + if (changesMask[116]) { data.WriteUInt32(WeeklyRewardsPeriodSinceOrigin); } - if (changesMask[113]) + if (changesMask[117]) { data.WriteInt16(DEBUGSoulbindConduitRank); } - if (changesMask[115]) + if (changesMask[119]) { data.WriteUInt32(ActiveCombatTraitConfigID); } @@ -5381,157 +5448,161 @@ namespace Game.Entities if (changesMask[98]) { data.WriteBits(QuestSession.HasValue(), 1); - if (changesMask[109]) + if (changesMask[111]) { - Field_1410.GetValue().WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + FrozenPerksVendorItem.GetValue().Write(data); } - if (changesMask[108]) + if (changesMask[112]) { if (QuestSession.HasValue()) { QuestSession.GetValue().WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[114]) + if (changesMask[113]) + { + ((ActivePlayerUnk901)Field_1410).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + if (changesMask[118]) { DungeonScore.GetValue().Write(data); } } - if (changesMask[116]) + if (changesMask[120]) { for (int i = 0; i < 218; ++i) { - if (changesMask[117 + i]) + if (changesMask[121 + i]) { data.WritePackedGuid(InvSlots[i]); } } } - if (changesMask[335]) + if (changesMask[339]) { for (int i = 0; i < 240; ++i) { - if (changesMask[336 + i]) + if (changesMask[340 + i]) { data.WriteUInt64(ExploredZones[i]); } } } - if (changesMask[576]) + if (changesMask[580]) { for (int 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 (int i = 0; i < 7; ++i) { - if (changesMask[580 + i]) + if (changesMask[584 + i]) { data.WriteInt32(ModDamageDonePos[i]); } - if (changesMask[587 + i]) + if (changesMask[591 + i]) { data.WriteInt32(ModDamageDoneNeg[i]); } - if (changesMask[594 + i]) + if (changesMask[598 + i]) { data.WriteFloat(ModDamageDonePercent[i]); } - if (changesMask[601 + i]) + if (changesMask[605 + i]) { data.WriteFloat(ModHealingDonePercent[i]); } } } - if (changesMask[608]) + if (changesMask[612]) { for (int i = 0; i < 3; ++i) { - if (changesMask[609 + i]) + if (changesMask[613 + i]) { data.WriteFloat(WeaponDmgMultipliers[i]); } - if (changesMask[612 + i]) + if (changesMask[616 + i]) { data.WriteFloat(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[615]) + if (changesMask[619]) { for (int i = 0; i < 12; ++i) { - if (changesMask[616 + i]) + if (changesMask[620 + i]) { data.WriteUInt32(BuybackPrice[i]); } - if (changesMask[628 + i]) + if (changesMask[632 + i]) { data.WriteUInt64(BuybackTimestamp[i]); } } } - if (changesMask[640]) + if (changesMask[644]) { for (int i = 0; i < 32; ++i) { - if (changesMask[641 + i]) + if (changesMask[645 + i]) { data.WriteUInt32(CombatRatings[i]); } } } - if (changesMask[673]) + if (changesMask[677]) { for (int i = 0; i < 4; ++i) { - if (changesMask[674 + i]) + if (changesMask[678 + i]) { data.WriteUInt32(NoReagentCostMask[i]); } } } - if (changesMask[678]) + if (changesMask[682]) { for (int i = 0; i < 2; ++i) { - if (changesMask[679 + i]) + if (changesMask[683 + i]) { data.WriteUInt32(ProfessionSkillLine[i]); } } } - if (changesMask[681]) + if (changesMask[685]) { for (int i = 0; i < 5; ++i) { - if (changesMask[682 + i]) + if (changesMask[686 + i]) { data.WriteUInt32(BagSlotFlags[i]); } } } - if (changesMask[687]) + if (changesMask[691]) { for (int i = 0; i < 7; ++i) { - if (changesMask[688 + i]) + if (changesMask[692 + i]) { data.WriteUInt32(BankBagSlotFlags[i]); } } } - if (changesMask[695]) + if (changesMask[699]) { for (int i = 0; i < 875; ++i) { - if (changesMask[696 + i]) + if (changesMask[700 + i]) { data.WriteUInt64(QuestCompleted[i]); } @@ -5546,6 +5617,7 @@ namespace Game.Entities ClearChangesMask(BankAutoSortDisabled); ClearChangesMask(SortBagsRightToLeft); ClearChangesMask(InsertItemsLeftToRight); + ClearChangesMask(HasPerksProgramPendingReward); ClearChangesMask(Research); ClearChangesMask(KnownTitles); ClearChangesMask(ResearchSites); @@ -5568,6 +5640,7 @@ namespace Game.Entities ClearChangesMask(RecipeProgression); ClearChangesMask(ReplayedQuests); ClearChangesMask(DisabledSpells); + ClearChangesMask(PersonalCraftingOrderCounts); ClearChangesMask(PvpInfo); ClearChangesMask(CharacterRestrictions); ClearChangesMask(TraitConfigs); @@ -5644,7 +5717,9 @@ namespace Game.Entities ClearChangesMask(GuildClubMemberID); ClearChangesMask(Honor); ClearChangesMask(HonorNextLevel); + ClearChangesMask(PerksProgramCurrency); ClearChangesMask(NumBankSlots); + ClearChangesMask(FrozenPerksVendorItem); ClearChangesMask(Field_1410); ClearChangesMask(QuestSession); ClearChangesMask(UiChromieTimeExpansionID); diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index 738b3fe28..8f784ecab 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -1246,7 +1246,7 @@ namespace Game.Entities { m_mail.Clear(); - Dictionary mailById = new(); + Dictionary mailById = new(); if (!mailsResult.IsEmpty()) { @@ -1254,7 +1254,7 @@ namespace Game.Entities { Mail m = new(); - m.messageID = mailsResult.Read(0); + m.messageID = mailsResult.Read(0); m.messageType = (MailMessageType)mailsResult.Read(1); m.sender = mailsResult.Read(2); m.receiver = mailsResult.Read(3); @@ -1289,7 +1289,7 @@ namespace Game.Entities do { - uint mailId = mailItemsResult.Read(52); + ulong mailId = mailItemsResult.Read(52); _LoadMailedItem(GetGUID(), this, mailId, mailById[mailId], mailItemsResult.GetFields(), additionalData.LookupByKey(mailItemsResult.Read(0))); } while (mailItemsResult.NextRow()); @@ -1298,7 +1298,7 @@ namespace Game.Entities UpdateNextMailTimeAndUnreads(); } - static Item _LoadMailedItem(ObjectGuid playerGuid, Player player, uint mailId, Mail mail, SQLFields fields, ItemAdditionalLoadInfo addionalData) + static Item _LoadMailedItem(ObjectGuid playerGuid, Player player, ulong mailId, Mail mail, SQLFields fields, ItemAdditionalLoadInfo addionalData) { ulong itemGuid = fields.Read(0); uint itemEntry = fields.Read(1); @@ -4081,7 +4081,7 @@ namespace Game.Entities SQLResult resultMail = DB.Characters.Query(stmt); if (!resultMail.IsEmpty()) { - MultiMap itemsByMail = new(); + MultiMap itemsByMail = new(); stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_MAILITEMS); stmt.AddValue(0, guid); @@ -4114,7 +4114,7 @@ namespace Game.Entities do { - uint mailId = resultItems.Read(44); + ulong mailId = resultItems.Read(44); Item mailItem = _LoadMailedItem(playerGuid, null, mailId, null, resultItems.GetFields(), additionalData.LookupByKey(resultItems.Read(0))); if (mailItem != null) itemsByMail.Add(mailId, mailItem); @@ -4124,7 +4124,7 @@ namespace Game.Entities do { - uint mail_id = resultMail.Read(0); + ulong mail_id = resultMail.Read(0); MailMessageType mailType = (MailMessageType)resultMail.Read(1); ushort mailTemplateId = resultMail.Read(2); uint sender = resultMail.Read(3); diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 52475282d..bf102d9f2 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -2879,10 +2879,15 @@ namespace Game.Entities } public void SendQuestGiverStatusMultiple() + { + SendQuestGiverStatusMultiple(m_clientGUIDs); + } + + public void SendQuestGiverStatusMultiple(List guids) { QuestGiverStatusMultiple response = new(); - foreach (var itr in m_clientGUIDs) + foreach (var itr in guids) { if (itr.IsAnyTypeCreature()) { diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 000bb1f98..858d6572d 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -2763,7 +2763,8 @@ namespace Game.Entities //Mail public void AddMail(Mail mail) { m_mail.Insert(0, mail); } - public void RemoveMail(uint id) + + public void RemoveMail(ulong id) { foreach (var mail in m_mail) { @@ -2775,27 +2776,30 @@ namespace Game.Entities } } } - public void SendMailResult(uint mailId, MailResponseType mailAction, MailResponseResult mailError, InventoryResult equipError = 0, uint item_guid = 0, uint item_count = 0) + + public void SendMailResult(ulong mailId, MailResponseType mailAction, MailResponseResult mailError, InventoryResult equipError = 0, ulong itemGuid = 0, uint itemCount = 0) { MailCommandResult result = new(); result.MailID = mailId; - result.Command = (uint)mailAction; - result.ErrorCode = (uint)mailError; + result.Command = (int)mailAction; + result.ErrorCode = (int)mailError; if (mailError == MailResponseResult.EquipError) - result.BagResult = (uint)equipError; + result.BagResult = (int)equipError; else if (mailAction == MailResponseType.ItemTaken) { - result.AttachID = item_guid; - result.QtyInInventory = item_count; + result.AttachID = itemGuid; + result.QtyInInventory = (int)itemCount; } SendPacket(result); } + void SendNewMail() { SendPacket(new NotifyReceivedMail()); } + public void UpdateNextMailTimeAndUnreads() { // calculate next delivery time (min. from non-delivered mails @@ -2814,6 +2818,7 @@ namespace Game.Entities ++unReadMails; } } + public void AddNewMailDeliverTime(long deliver_time) { if (deliver_time <= GameTime.GetGameTime()) // ready now @@ -2827,16 +2832,19 @@ namespace Game.Entities m_nextMailDelivereTime = deliver_time; } } + public void AddMItem(Item it) { mMitems[it.GetGUID().GetCounter()] = it; } + public bool RemoveMItem(ulong id) { return mMitems.Remove(id); } + public Item GetMItem(ulong id) { return mMitems.LookupByKey(id); } - public Mail GetMail(uint id) { return m_mail.Find(p => p.messageID == id); } + public Mail GetMail(ulong id) { return m_mail.Find(p => p.messageID == id); } public List GetMails() { return m_mail; } public uint GetMailSize() { return (uint)m_mail.Count; } diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 3caff77d3..1c8862116 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -9614,7 +9614,7 @@ namespace Game return; // any mails need to be returned or deleted } - MultiMap itemsCache = new(); + MultiMap itemsCache = new(); stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_EXPIRED_MAIL_ITEMS); stmt.AddValue(0, curTime); SQLResult items = DB.Characters.Query(stmt); @@ -9625,7 +9625,7 @@ namespace Game { item.item_guid = result.Read(0); item.item_template = result.Read(1); - uint mailId = result.Read(2); + ulong mailId = result.Read(2); itemsCache.Add(mailId, item); } while (items.NextRow()); } @@ -9639,7 +9639,7 @@ namespace Game continue; Mail m = new(); - m.messageID = result.Read(0); + m.messageID = result.Read(0); m.messageType = (MailMessageType)result.Read(1); m.sender = result.Read(2); m.receiver = receiver; @@ -10360,7 +10360,7 @@ namespace Game result = DB.Characters.Query("SELECT MAX(id) FROM mail"); if (!result.IsEmpty()) - _mailId = result.Read(0) + 1; + _mailId = result.Read(0) + 1; result = DB.Characters.Query("SELECT MAX(arenateamid) FROM arena_team"); if (!result.IsEmpty()) @@ -10404,7 +10404,7 @@ namespace Game } return _equipmentSetGuid++; } - public uint GenerateMailID() + public ulong GenerateMailID() { if (_mailId >= 0xFFFFFFFE) { @@ -11042,7 +11042,7 @@ namespace Game // first free id for selected id type uint _auctionId; ulong _equipmentSetGuid; - uint _mailId; + ulong _mailId; uint _hiPetNumber; ulong _creatureSpawnId; ulong _gameObjectSpawnId; diff --git a/Source/Game/Handlers/CharacterHandler.cs b/Source/Game/Handlers/CharacterHandler.cs index cb010d660..a1b570e40 100644 --- a/Source/Game/Handlers/CharacterHandler.cs +++ b/Source/Game/Handlers/CharacterHandler.cs @@ -1112,8 +1112,6 @@ namespace Game // START OF DUMMY VALUES features.ComplaintStatus = (byte)ComplaintStatus.EnabledWithAutoIgnore; - features.ScrollOfResurrectionRequestsRemaining = 1; - features.ScrollOfResurrectionMaxRequestsPerDay = 1; features.TwitterPostThrottleLimit = 60; features.TwitterPostThrottleCooldown = 20; features.CfgRealmID = 2; diff --git a/Source/Game/Handlers/MailHandler.cs b/Source/Game/Handlers/MailHandler.cs index 25de117da..9eb1494a3 100644 --- a/Source/Game/Handlers/MailHandler.cs +++ b/Source/Game/Handlers/MailHandler.cs @@ -405,7 +405,7 @@ namespace Game [WorldPacketHandler(ClientOpcodes.MailTakeItem)] void HandleMailTakeItem(MailTakeItem takeItem) { - uint AttachID = takeItem.AttachID; + ulong AttachID = takeItem.AttachID; if (!CanOpenMailBox(takeItem.Mailbox)) return; diff --git a/Source/Game/Handlers/QuestHandler.cs b/Source/Game/Handlers/QuestHandler.cs index aed69b4ec..4c1150e6b 100644 --- a/Source/Game/Handlers/QuestHandler.cs +++ b/Source/Game/Handlers/QuestHandler.cs @@ -755,6 +755,12 @@ namespace Game _player.SendQuestGiverStatusMultiple(); } + [WorldPacketHandler(ClientOpcodes.QuestGiverStatusTrackedQuery)] + void HandleQuestgiverStatusTrackedQueryOpcode(QuestGiverStatusTrackedQuery questGiverStatusTrackedQuery) + { + _player.SendQuestGiverStatusMultiple(questGiverStatusTrackedQuery.QuestGiverGUIDs); + } + [WorldPacketHandler(ClientOpcodes.RequestWorldQuestUpdate)] void HandleRequestWorldQuestUpdate(RequestWorldQuestUpdate packet) { diff --git a/Source/Game/Mails/Mail.cs b/Source/Game/Mails/Mail.cs index 2c4635724..bf30a1f52 100644 --- a/Source/Game/Mails/Mail.cs +++ b/Source/Game/Mails/Mail.cs @@ -18,11 +18,11 @@ namespace Game.Mails items.Add(mii); } - public bool RemoveItem(uint item_guid) + public bool RemoveItem(ulong itemGuid) { foreach (var item in items) { - if (item.item_guid == item_guid) + if (item.item_guid == itemGuid) { items.Remove(item); return true; @@ -33,7 +33,7 @@ namespace Game.Mails public bool HasItems() { return !items.Empty(); } - public uint messageID; + public ulong messageID; public MailMessageType messageType; public MailStationery stationery; public uint mailTemplateId; @@ -42,7 +42,7 @@ namespace Game.Mails public string subject; public string body; public List items = new(); - public List removedItems = new(); + public List removedItems = new(); public long expire_time; public long deliver_time; public ulong money; diff --git a/Source/Game/Mails/MailDraft.cs b/Source/Game/Mails/MailDraft.cs index ec74c3aaf..bc7c3972a 100644 --- a/Source/Game/Mails/MailDraft.cs +++ b/Source/Game/Mails/MailDraft.cs @@ -131,7 +131,7 @@ namespace Game.Mails if (pReceiver != null) PrepareItems(pReceiver, trans); // generate mail template items - uint mailId = Global.ObjectMgr.GenerateMailID(); + ulong mailId = Global.ObjectMgr.GenerateMailID(); long deliver_time = GameTime.GetGameTime() + deliver_delay; diff --git a/Source/Game/Networking/Packets/BattleGroundPackets.cs b/Source/Game/Networking/Packets/BattleGroundPackets.cs index f0f150cb3..60807cdf2 100644 --- a/Source/Game/Networking/Packets/BattleGroundPackets.cs +++ b/Source/Game/Networking/Packets/BattleGroundPackets.cs @@ -478,7 +478,11 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(BattlemasterListID); _worldPacket.WriteBit(Registered); _worldPacket.WriteBit(AffectsRating); + _worldPacket.WriteBit(DeserterPenalty != null); _worldPacket.FlushBits(); + + if (DeserterPenalty != null) + DeserterPenalty.Write(_worldPacket); } public enum MatchState @@ -492,6 +496,7 @@ namespace Game.Networking.Packets public MatchState State = MatchState.Inactive; public long StartTime; public int Duration; + public RatedMatchDeserterPenalty DeserterPenalty; public byte ArenaFaction; public uint BattlemasterListID; public bool Registered; @@ -598,6 +603,20 @@ namespace Game.Networking.Packets } } + class RatedMatchDeserterPenalty + { + public int PersonalRatingChange; + public int QueuePenaltySpellID; + public int QueuePenaltyDuration; + + public void Write(WorldPacket data) + { + data.WriteInt32(PersonalRatingChange); + data.WriteInt32(QueuePenaltySpellID); + data.WriteInt32(QueuePenaltyDuration); + } + } + public class PVPMatchStatistics { public List Statistics = new(); diff --git a/Source/Game/Networking/Packets/CraftingPackets.cs b/Source/Game/Networking/Packets/CraftingPackets.cs index 077259ed4..93fb39b4f 100644 --- a/Source/Game/Networking/Packets/CraftingPackets.cs +++ b/Source/Game/Networking/Packets/CraftingPackets.cs @@ -21,11 +21,12 @@ namespace Game.Networking.Packets class CraftingData { public int CraftingQualityID; - public int field_4; - public int field_8; + public float QualityProgress; + public int SkillLineAbilityID; + public int CraftingDataID; public int Multicraft; - public int field_10; - public int field_14; + public int SkillFromReagents; + public int Skill; public int CritBonusSkill; public float field_1C; public ulong field_20; @@ -44,11 +45,12 @@ namespace Game.Networking.Packets public void Write(WorldPacket data) { data.WriteInt32(CraftingQualityID); - data.WriteInt32(field_4); - data.WriteInt32(field_8); + data.WriteFloat(QualityProgress); + data.WriteInt32(SkillLineAbilityID); + data.WriteInt32(CraftingDataID); data.WriteInt32(Multicraft); - data.WriteInt32(field_10); - data.WriteInt32(field_14); + data.WriteInt32(SkillFromReagents); + data.WriteInt32(Skill); data.WriteInt32(CritBonusSkill); data.WriteFloat(field_1C); data.WriteUInt64(field_20); diff --git a/Source/Game/Networking/Packets/MailPackets.cs b/Source/Game/Networking/Packets/MailPackets.cs index 5d1f38fbc..61501c337 100644 --- a/Source/Game/Networking/Packets/MailPackets.cs +++ b/Source/Game/Networking/Packets/MailPackets.cs @@ -49,7 +49,7 @@ namespace Game.Networking.Packets } public ObjectGuid Mailbox; - public uint MailID; + public ulong MailID; } public class SendMail : ClientPacket @@ -115,20 +115,20 @@ namespace Game.Networking.Packets public override void Write() { - _worldPacket.WriteUInt32(MailID); - _worldPacket.WriteUInt32(Command); - _worldPacket.WriteUInt32(ErrorCode); - _worldPacket.WriteUInt32(BagResult); - _worldPacket.WriteUInt32(AttachID); - _worldPacket.WriteUInt32(QtyInInventory); + _worldPacket.WriteUInt64(MailID); + _worldPacket.WriteInt32(Command); + _worldPacket.WriteInt32(ErrorCode); + _worldPacket.WriteInt32(BagResult); + _worldPacket.WriteUInt64(AttachID); + _worldPacket.WriteInt32(QtyInInventory); } - public uint MailID; - public uint Command; - public uint ErrorCode; - public uint BagResult; - public uint AttachID; - public uint QtyInInventory; + public ulong MailID; + public int Command; + public int ErrorCode; + public int BagResult; + public ulong AttachID; + public int QtyInInventory; } public class MailReturnToSender : ClientPacket @@ -141,7 +141,7 @@ namespace Game.Networking.Packets SenderGUID = _worldPacket.ReadPackedGuid(); } - public uint MailID; + public ulong MailID; public ObjectGuid SenderGUID; } @@ -156,7 +156,7 @@ namespace Game.Networking.Packets } public ObjectGuid Mailbox; - public uint MailID; + public ulong MailID; } public class MailDelete : ClientPacket @@ -169,7 +169,7 @@ namespace Game.Networking.Packets DeleteReason = _worldPacket.ReadInt32(); } - public uint MailID; + public ulong MailID; public int DeleteReason; } @@ -185,8 +185,8 @@ namespace Game.Networking.Packets } public ObjectGuid Mailbox; - public uint MailID; - public uint AttachID; + public ulong MailID; + public ulong AttachID; } public class MailTakeMoney : ClientPacket @@ -197,12 +197,12 @@ namespace Game.Networking.Packets { Mailbox = _worldPacket.ReadPackedGuid(); MailID = _worldPacket.ReadUInt32(); - Money = _worldPacket.ReadInt64(); + Money = _worldPacket.ReadUInt64(); } public ObjectGuid Mailbox; - public uint MailID; - public long Money; + public ulong MailID; + public ulong Money; } public class MailQueryNextMailTime : ClientPacket @@ -285,7 +285,7 @@ namespace Game.Networking.Packets public MailAttachedItem(Item item, byte pos) { Position = pos; - AttachID = (int)item.GetGUID().GetCounter(); + AttachID = item.GetGUID().GetCounter(); Item = new ItemInstance(item); Count = item.GetCount(); Charges = item.GetSpellCharges(); @@ -318,7 +318,7 @@ namespace Game.Networking.Packets public void Write(WorldPacket data) { data.WriteUInt8(Position); - data.WriteInt32(AttachID); + data.WriteUInt64(AttachID); data.WriteUInt32(Count); data.WriteInt32(Charges); data.WriteUInt32(MaxDurability); @@ -337,7 +337,7 @@ namespace Game.Networking.Packets } public byte Position; - public int AttachID; + public ulong AttachID; public ItemInstance Item; public uint Count; public int Charges; @@ -352,7 +352,7 @@ namespace Game.Networking.Packets { public MailListEntry(Mail mail, Player player) { - MailID = (int)mail.messageID; + MailID = mail.messageID; SenderType = (byte)mail.messageType; switch (mail.messageType) @@ -387,7 +387,7 @@ namespace Game.Networking.Packets public void Write(WorldPacket data) { - data.WriteInt32(MailID); + data.WriteUInt64(MailID); data.WriteUInt8(SenderType); data.WriteUInt64(Cod); data.WriteInt32(StationeryID); @@ -415,7 +415,7 @@ namespace Game.Networking.Packets data.WriteString(Body); } - public int MailID; + public ulong MailID; public byte SenderType; public ObjectGuid? SenderCharacter; public uint? AltSenderID; diff --git a/Source/Game/Networking/Packets/PerksPorgramPacketsCommon.cs b/Source/Game/Networking/Packets/PerksPorgramPacketsCommon.cs new file mode 100644 index 000000000..40267f70e --- /dev/null +++ b/Source/Game/Networking/Packets/PerksPorgramPacketsCommon.cs @@ -0,0 +1,34 @@ +// Copyright (c) CypherCore All rights reserved. +// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information. + +namespace Game.Networking.Packets +{ + public struct PerksVendorItem + { + public int VendorItemID; + public int MountID; + public int BattlePetSpeciesID; + public int TransmogSetID; + public int ItemModifiedAppearanceID; + public int Field_14; + public int Field_18; + public int Price; + public long AvailableUntil; + public bool Disabled; + + public void Write(WorldPacket data) + { + data.WriteInt32(VendorItemID); + data.WriteInt32(MountID); + data.WriteInt32(BattlePetSpeciesID); + data.WriteInt32(TransmogSetID); + data.WriteInt32(ItemModifiedAppearanceID); + data.WriteInt32(Field_14); + data.WriteInt32(Field_18); + data.WriteInt32(Price); + data.WriteInt64(AvailableUntil); + data.WriteBit(Disabled); + data.FlushBits(); + } + } +} diff --git a/Source/Game/Networking/Packets/QuestPackets.cs b/Source/Game/Networking/Packets/QuestPackets.cs index f2603afbb..d2db9481d 100644 --- a/Source/Game/Networking/Packets/QuestPackets.cs +++ b/Source/Game/Networking/Packets/QuestPackets.cs @@ -28,6 +28,21 @@ namespace Game.Networking.Packets public override void Read() { } } + class QuestGiverStatusTrackedQuery : ClientPacket + { + public List QuestGiverGUIDs = new(); + + public QuestGiverStatusTrackedQuery(WorldPacket packet) : base(packet) { } + + public override void Read() + { + uint guidCount = _worldPacket.ReadUInt32(); + + for (uint i = 0; i < guidCount; ++i) + QuestGiverGUIDs.Add(_worldPacket.ReadPackedGuid()); + } + } + public class QuestGiverStatusPkt : ServerPacket { public QuestGiverStatusPkt() : base(ServerOpcodes.QuestGiverStatus, ConnectionType.Instance) diff --git a/Source/Game/Networking/Packets/SpellPackets.cs b/Source/Game/Networking/Packets/SpellPackets.cs index 647aa1d04..9d18019d7 100644 --- a/Source/Game/Networking/Packets/SpellPackets.cs +++ b/Source/Game/Networking/Packets/SpellPackets.cs @@ -899,11 +899,9 @@ namespace Game.Networking.Packets public override void Read() { UnitGUID = _worldPacket.ReadPackedGuid(); - DisplayID = _worldPacket.ReadUInt32(); } public ObjectGuid UnitGUID; - public uint DisplayID; } class MirrorImageComponentedData : ServerPacket diff --git a/Source/Game/Networking/Packets/SystemPackets.cs b/Source/Game/Networking/Packets/SystemPackets.cs index d158ab2f1..0c9874d3f 100644 --- a/Source/Game/Networking/Packets/SystemPackets.cs +++ b/Source/Game/Networking/Packets/SystemPackets.cs @@ -17,9 +17,6 @@ namespace Game.Networking.Packets { _worldPacket.WriteUInt8(ComplaintStatus); - _worldPacket.WriteUInt32(ScrollOfResurrectionRequestsRemaining); - _worldPacket.WriteUInt32(ScrollOfResurrectionMaxRequestsPerDay); - _worldPacket.WriteUInt32(CfgRealmID); _worldPacket.WriteInt32(CfgRealmRecID); @@ -51,7 +48,6 @@ namespace Game.Networking.Packets _worldPacket.WriteBit(VoiceEnabled); _worldPacket.WriteBit(EuropaTicketSystemStatus.HasValue); - _worldPacket.WriteBit(ScrollOfResurrectionEnabled); _worldPacket.WriteBit(BpayStoreEnabled); _worldPacket.WriteBit(BpayStoreAvailable); _worldPacket.WriteBit(BpayStoreDisabledByParentalControls); @@ -140,10 +136,7 @@ namespace Game.Networking.Packets public bool BpayStoreAvailable; public bool BpayStoreEnabled; public SessionAlertConfig? SessionAlert; - public uint ScrollOfResurrectionMaxRequestsPerDay; - public bool ScrollOfResurrectionEnabled; public EuropaTicketConfig? EuropaTicketSystemStatus; - public uint ScrollOfResurrectionRequestsRemaining; public uint CfgRealmID; public byte ComplaintStatus; public int CfgRealmRecID; diff --git a/Source/Game/Networking/Packets/TicketPackets.cs b/Source/Game/Networking/Packets/TicketPackets.cs index def0e107c..e69fd73eb 100644 --- a/Source/Game/Networking/Packets/TicketPackets.cs +++ b/Source/Game/Networking/Packets/TicketPackets.cs @@ -328,7 +328,7 @@ namespace Game.Networking.Packets { public void Read(WorldPacket data) { - MailID = data.ReadInt32(); + MailID = data.ReadUInt64(); uint bodyLength = data.ReadBits(13); uint subjectLength = data.ReadBits(9); @@ -336,7 +336,7 @@ namespace Game.Networking.Packets MailSubject = data.ReadString(subjectLength); } - public int MailID; + public ulong MailID; public string MailSubject; public string MailBody; } @@ -479,7 +479,7 @@ namespace Game.Networking.Packets switch (ComplaintType) { case SupportSpamType.Mail: - MailID = _worldPacket.ReadUInt32(); + MailID = _worldPacket.ReadUInt64(); break; case SupportSpamType.Chat: Chat.Read(_worldPacket); @@ -492,14 +492,14 @@ namespace Game.Networking.Packets } public SupportSpamType ComplaintType; - ComplaintOffender Offender; - uint MailID; - ComplaintChat Chat; + public ComplaintOffender Offender; + public ulong MailID; + public ComplaintChat Chat; - ulong EventGuid; - ulong InviteGuid; + public ulong EventGuid; + public ulong InviteGuid; - struct ComplaintOffender + public struct ComplaintOffender { public void Read(WorldPacket data) { @@ -513,7 +513,7 @@ namespace Game.Networking.Packets public uint TimeSinceOffence; } - struct ComplaintChat + public struct ComplaintChat { public void Read(WorldPacket data) {