diff --git a/Source/Framework/Constants/ItemConst.cs b/Source/Framework/Constants/ItemConst.cs index 4fc25dfc4..56fe47ebe 100644 --- a/Source/Framework/Constants/ItemConst.cs +++ b/Source/Framework/Constants/ItemConst.cs @@ -107,19 +107,19 @@ namespace Framework.Constants public const byte BagStart = 19; public const byte BagEnd = 23; public const byte ItemStart = 23; - public const byte ItemEnd = 47; + public const byte ItemEnd = 51; - public const byte BankItemStart = 47; - public const byte BankItemEnd = 75; - public const byte BankBagStart = 75; - public const byte BankBagEnd = 82; + public const byte BankItemStart = 51; + public const byte BankItemEnd = 79; + public const byte BankBagStart = 79; + public const byte BankBagEnd = 86; - public const byte BuyBackStart = 82; - public const byte BuyBackEnd = 94; - public const byte ReagentStart = 94; - public const byte ReagentEnd = 192; - public const byte ChildEquipmentStart = 192; - public const byte ChildEquipmentEnd = 195; + public const byte BuyBackStart = 86; + public const byte BuyBackEnd = 98; + public const byte ReagentStart = 98; + public const byte ReagentEnd = 196; + public const byte ChildEquipmentStart = 196; + public const byte ChildEquipmentEnd = 199; public const byte Bag0 = 255; public const byte DefaultSize = 16; diff --git a/Source/Framework/Constants/Network/Opcodes.cs b/Source/Framework/Constants/Network/Opcodes.cs index 1a1a4569e..95042e421 100644 --- a/Source/Framework/Constants/Network/Opcodes.cs +++ b/Source/Framework/Constants/Network/Opcodes.cs @@ -19,36 +19,43 @@ namespace Framework.Constants { public enum ClientOpcodes : uint { - AcceptGuildInvite = 0x35fd, + AcceptGuildInvite = 0x35fc, AcceptTrade = 0x315a, - AcceptWargameInvite = 0x35e1, + AcceptWargameInvite = 0x35e0, ActivateTaxi = 0x34ab, AddonList = 0x35d8, - AddBattlenetFriend = 0x365c, - AddFriend = 0x36d2, - AddIgnore = 0x36d6, - AddToy = 0x329b, - AdventureJournalOpenQuest = 0x3204, - AdventureJournalStartQuest = 0x3342, - AdventureMapPoiQuery = 0x3249, - AlterAppearance = 0x34f6, + AddBattlenetFriend = 0x365b, + AddFriend = 0x36d1, + AddIgnore = 0x36d5, + AddToy = 0x329c, + AdventureJournalOpenQuest = 0x3203, + AdventureJournalStartQuest = 0x3346, + AdventureMapPoiQuery = 0x324a, + AlterAppearance = 0x34fd, AreaSpiritHealerQuery = 0x34b0, AreaSpiritHealerQueue = 0x34b1, - AreaTrigger = 0x31d8, + AreaTrigger = 0x31d7, ArtifactAddPower = 0x31a9, ArtifactSetAppearance = 0x31ab, - AssignEquipmentSetSpec = 0x320c, - AttackStop = 0x3258, - AttackSwing = 0x3257, + AssignEquipmentSetSpec = 0x320b, + AttackStop = 0x3259, + AttackSwing = 0x3258, + AuctionBrowseQuery = 0x34d0, + AuctionCancelCommoditiesPurchase = 0x34d8, + AuctionConfirmCommoditiesPurchase = 0x34d7, AuctionHelloRequest = 0x34cb, - AuctionListBidderItems = 0x34d1, - AuctionListItems = 0x34ce, - AuctionListOwnerItems = 0x34d0, - AuctionListPendingSales = 0x34d3, - AuctionPlaceBid = 0x34d2, + AuctionListBidderItems = 0x34d4, + AuctionListItemsByBucketKey = 0x34d1, + AuctionListItemsByItemId = 0x34d2, + AuctionListItemsByItemKeys = 0x34d5, + AuctionListOwnerItems = 0x34d3, + AuctionPlaceBid = 0x34cf, AuctionRemoveItem = 0x34cd, - AuctionReplicateItems = 0x34cf, + AuctionReplicateItems = 0x34ce, + AuctionSellCommodity = 0x34d9, AuctionSellItem = 0x34cc, + AuctionSetFavoriteItem = 0x3736, + AuctionStartCommoditiesPurchase = 0x34d6, AuthContinuedSession = 0x3766, AuthSession = 0x3765, AutobankItem = 0x3996, @@ -58,104 +65,104 @@ namespace Framework.Constants AutoEquipItem = 0x399a, AutoEquipItemSlot = 0x399f, AutoStoreBagItem = 0x399b, - AzeriteEmpoweredItemSelectPower = 0x3360, - AzeriteEmpoweredItemViewed = 0x334c, - AzeriteEssenceActivateEssence = 0x3362, - AzeriteEssenceUnlockMilestone = 0x3361, + AzeriteEmpoweredItemSelectPower = 0x3366, + AzeriteEmpoweredItemViewed = 0x3350, + AzeriteEssenceActivateEssence = 0x3368, + AzeriteEssenceUnlockMilestone = 0x3367, BankerActivate = 0x34b3, BattlefieldLeave = 0x3173, BattlefieldList = 0x317e, - BattlefieldPort = 0x3526, - BattlemasterHello = 0x32b3, - BattlemasterJoin = 0x3521, - BattlemasterJoinArena = 0x3522, - BattlemasterJoinBrawl = 0x3524, - BattlemasterJoinSkirmish = 0x3523, - BattlenetChallengeResponse = 0x36d5, - BattlenetRequest = 0x36f9, - BattlenetRequestRealmListTicket = 0x36fe, - BattlePayAckFailedResponse = 0x36cf, - BattlePayCancelOpenCheckout = 0x3717, - BattlePayConfirmPurchaseResponse = 0x36ce, - BattlePayDistributionAssignToTarget = 0x36c5, - BattlePayGetProductList = 0x36bd, - BattlePayGetPurchaseList = 0x36be, - BattlePayOpenCheckout = 0x3710, - BattlePayQueryClassTrialBoostResult = 0x36c8, - BattlePayRequestCharacterBoostUnrevoke = 0x36c6, - BattlePayRequestCurrentVasTransferQueues = 0x370d, - BattlePayRequestPriceInfo = 0x370c, - BattlePayRequestVasCharacterQueueTime = 0x370e, - BattlePayStartPurchase = 0x36f5, - BattlePayStartVasPurchase = 0x36f6, - BattlePayTrialBoostCharacter = 0x36c7, - BattlePayValidateBnetVasTransfer = 0x370f, - BattlePayVasPurchaseComplete = 0x36f4, + BattlefieldPort = 0x352f, + BattlemasterHello = 0x32b4, + BattlemasterJoin = 0x3528, + BattlemasterJoinArena = 0x3529, + BattlemasterJoinBrawl = 0x352d, + BattlemasterJoinSkirmish = 0x352a, + BattlenetChallengeResponse = 0x36d4, + BattlenetRequest = 0x36f8, + BattlenetRequestRealmListTicket = 0x36fd, + BattlePayAckFailedResponse = 0x36ce, + BattlePayCancelOpenCheckout = 0x3716, + BattlePayConfirmPurchaseResponse = 0x36cd, + BattlePayDistributionAssignToTarget = 0x36c4, + BattlePayGetProductList = 0x36bc, + BattlePayGetPurchaseList = 0x36bd, + BattlePayOpenCheckout = 0x370f, + BattlePayQueryClassTrialBoostResult = 0x36c7, + BattlePayRequestCharacterBoostUnrevoke = 0x36c5, + BattlePayRequestCurrentVasTransferQueues = 0x370c, + BattlePayRequestPriceInfo = 0x370b, + BattlePayRequestVasCharacterQueueTime = 0x370d, + BattlePayStartPurchase = 0x36f4, + BattlePayStartVasPurchase = 0x36f5, + BattlePayTrialBoostCharacter = 0x36c6, + BattlePayValidateBnetVasTransfer = 0x370e, + BattlePayVasPurchaseComplete = 0x36f3, BattlePetClearFanfare = 0x312c, - BattlePetDeletePet = 0x3625, - BattlePetDeletePetCheat = 0x3626, - BattlePetModifyName = 0x3628, - BattlePetRequestJournal = 0x3624, - BattlePetRequestJournalLock = 0x3623, - BattlePetSetBattleSlot = 0x362d, - BattlePetSetFlags = 0x3631, - BattlePetSummon = 0x3629, - BattlePetUpdateDisplayNotify = 0x31e2, - BattlePetUpdateNotify = 0x31e1, + BattlePetDeletePet = 0x3624, + BattlePetDeletePetCheat = 0x3625, + BattlePetModifyName = 0x3627, + BattlePetRequestJournal = 0x3623, + BattlePetRequestJournalLock = 0x3622, + BattlePetSetBattleSlot = 0x362c, + BattlePetSetFlags = 0x3630, + BattlePetSummon = 0x3628, + BattlePetUpdateDisplayNotify = 0x31e1, + BattlePetUpdateNotify = 0x31e0, BeginTrade = 0x3157, BinderActivate = 0x34b2, - BlackMarketBidOnItem = 0x352e, - BlackMarketOpen = 0x352c, - BlackMarketRequestItems = 0x352d, - BonusRoll = 0x3363, - BugReport = 0x3688, + BlackMarketBidOnItem = 0x3537, + BlackMarketOpen = 0x3535, + BlackMarketRequestItems = 0x3536, + BonusRoll = 0x3369, + BugReport = 0x3687, BusyTrade = 0x3158, BuyBackItem = 0x34a4, BuyBankSlot = 0x34b4, BuyItem = 0x34a3, BuyReagentBank = 0x34b5, - BuyWowTokenConfirm = 0x36ee, - BuyWowTokenStart = 0x36ed, - CageBattlePet = 0x31f3, - CalendarAddEvent = 0x367f, - CalendarCommunityFilter = 0x3673, - CalendarComplain = 0x367b, - CalendarCopyEvent = 0x367a, - CalendarEventInvite = 0x3674, - CalendarEventModeratorStatus = 0x3678, - CalendarEventRsvp = 0x3676, - CalendarEventSignUp = 0x367d, - CalendarEventStatus = 0x3677, - CalendarGet = 0x3671, - CalendarGetEvent = 0x3672, - CalendarGetNumPending = 0x367c, - CalendarRemoveEvent = 0x3679, - CalendarRemoveInvite = 0x3675, - CalendarUpdateEvent = 0x3680, + BuyWowTokenConfirm = 0x36ed, + BuyWowTokenStart = 0x36ec, + CageBattlePet = 0x31f2, + CalendarAddEvent = 0x367e, + CalendarCommunityFilter = 0x3672, + CalendarComplain = 0x367a, + CalendarCopyEvent = 0x3679, + CalendarEventInvite = 0x3673, + CalendarEventModeratorStatus = 0x3677, + CalendarEventRsvp = 0x3675, + CalendarEventSignUp = 0x367c, + CalendarEventStatus = 0x3676, + CalendarGet = 0x3670, + CalendarGetEvent = 0x3671, + CalendarGetNumPending = 0x367b, + CalendarRemoveEvent = 0x3678, + CalendarRemoveInvite = 0x3674, + CalendarUpdateEvent = 0x367f, CancelAura = 0x31ad, - CancelAutoRepeatSpell = 0x34e8, - CancelCast = 0x32a1, - CancelChannelling = 0x326d, - CancelGrowthAura = 0x3272, - CancelMasterLootRoll = 0x3214, + CancelAutoRepeatSpell = 0x34ef, + CancelCast = 0x32a2, + CancelChannelling = 0x326e, + CancelGrowthAura = 0x3273, + CancelMasterLootRoll = 0x3213, CancelModSpeedNoControlAuras = 0x31ac, - CancelMountAura = 0x3283, + CancelMountAura = 0x3284, CancelQueuedSpell = 0x317f, - CancelTempEnchantment = 0x34f3, + CancelTempEnchantment = 0x34fa, CancelTrade = 0x315c, - CanDuel = 0x3664, - CanRedeemWowTokenForBalance = 0x370b, - CastSpell = 0x329e, + CanDuel = 0x3663, + CanRedeemWowTokenForBalance = 0x370a, + CastSpell = 0x329f, ChallengeModeRequestLeaders = 0x3090, ChallengeModeRequestMapStats = 0x308f, - ChangeBagSlotFlag = 0x3324, - ChangeBankBagSlotFlag = 0x3325, - ChangeMonumentAppearance = 0x3306, - ChangeSubGroup = 0x364e, - CharacterRenameRequest = 0x36c3, - CharCustomize = 0x3693, - CharDelete = 0x36a0, - CharRaceOrFactionChange = 0x3699, + ChangeBagSlotFlag = 0x3328, + ChangeBankBagSlotFlag = 0x3329, + ChangeMonumentAppearance = 0x330a, + ChangeSubGroup = 0x364d, + CharacterRenameRequest = 0x36c2, + CharCustomize = 0x3692, + CharDelete = 0x369f, + CharRaceOrFactionChange = 0x3698, ChatAddonMessage = 0x37ee, ChatAddonMessageTargeted = 0x37ef, ChatChannelAnnouncements = 0x37e3, @@ -192,117 +199,117 @@ namespace Framework.Constants ChatReportFiltered = 0x37cc, ChatReportIgnored = 0x37cb, ChatUnregisterAllAddonPrefixes = 0x37ce, - CheckWowTokenVeteranEligibility = 0x36ec, - ChoiceResponse = 0x32a3, + CheckWowTokenVeteranEligibility = 0x36eb, + ChoiceResponse = 0x32a4, ClearNewAppearance = 0x312f, ClearRaidMarker = 0x31a5, ClearTradeItem = 0x315e, - ClientPortGraveyard = 0x3528, + ClientPortGraveyard = 0x3531, CloseInteraction = 0x3493, - CloseQuestChoice = 0x32a4, - ClubFinderApplicationResponse = 0x3721, - ClubFinderGetApplicantsList = 0x371f, - ClubFinderPost = 0x371c, - ClubFinderRequestClubsData = 0x3723, - ClubFinderRequestClubsList = 0x371d, - ClubFinderRequestMembershipToClub = 0x371e, - ClubFinderRequestPendingClubsList = 0x3722, - ClubFinderRequestSubscribedClubPostingIds = 0x3724, - ClubFinderRespondToApplicant = 0x3720, - ClubInvite = 0x36fd, - CollectionItemSetFavorite = 0x3634, - CommentatorEnable = 0x35f1, - CommentatorEnterInstance = 0x35f5, - CommentatorExitInstance = 0x35f6, - CommentatorGetMapInfo = 0x35f2, - CommentatorGetPlayerCooldowns = 0x35f4, - CommentatorGetPlayerInfo = 0x35f3, - CommentatorStartWargame = 0x35f0, - Complaint = 0x366e, - CompleteCinematic = 0x3546, - CompleteMovie = 0x34de, + CloseQuestChoice = 0x32a5, + ClubFinderApplicationResponse = 0x3720, + ClubFinderGetApplicantsList = 0x371e, + ClubFinderPost = 0x371b, + ClubFinderRequestClubsData = 0x3722, + ClubFinderRequestClubsList = 0x371c, + ClubFinderRequestMembershipToClub = 0x371d, + ClubFinderRequestPendingClubsList = 0x3721, + ClubFinderRequestSubscribedClubPostingIds = 0x3723, + ClubFinderRespondToApplicant = 0x371f, + ClubInvite = 0x36fc, + CollectionItemSetFavorite = 0x3633, + CommentatorEnable = 0x35f0, + CommentatorEnterInstance = 0x35f4, + CommentatorExitInstance = 0x35f5, + CommentatorGetMapInfo = 0x35f1, + CommentatorGetPlayerCooldowns = 0x35f3, + CommentatorGetPlayerInfo = 0x35f2, + CommentatorStartWargame = 0x35ef, + Complaint = 0x366d, + CompleteCinematic = 0x354f, + CompleteMovie = 0x34e5, ConfirmArtifactRespec = 0x31aa, - ConfirmRespecWipe = 0x320e, + ConfirmRespecWipe = 0x320d, ConnectToFailed = 0x35d4, - ContributionContribute = 0x3556, - ContributionGetState = 0x3557, - ConversationLineStarted = 0x3547, - ConvertRaid = 0x3650, - CreateCharacter = 0x3645, - CreateShipment = 0x32f2, - DbQueryBulk = 0x35e5, - DeclineGuildInvites = 0x351f, - DeclinePetition = 0x3535, - DeleteEquipmentSet = 0x350c, - DelFriend = 0x36d3, - DelIgnore = 0x36d7, - DepositReagentBank = 0x332d, - DestroyItem = 0x3295, - DfBootPlayerVote = 0x3616, - DfGetJoinStatus = 0x3614, - DfGetSystemInfo = 0x3613, - DfJoin = 0x3609, - DfLeave = 0x3612, - DfProposalResponse = 0x3608, - DfReadyCheckResponse = 0x3619, - DfSetRoles = 0x3615, - DfTeleport = 0x3617, - DiscardedTimeSyncAcks = 0x3a3c, - DismissCritter = 0x34fa, - DoMasterLootRoll = 0x3213, - DoReadyCheck = 0x3635, - DuelResponse = 0x34e3, - EjectPassenger = 0x323e, - Emote = 0x3542, + ContributionContribute = 0x355f, + ContributionGetState = 0x3560, + ConversationLineStarted = 0x3550, + ConvertRaid = 0x364f, + CreateCharacter = 0x3644, + CreateShipment = 0x32f6, + DbQueryBulk = 0x35e4, + DeclineGuildInvites = 0x3526, + DeclinePetition = 0x353e, + DeleteEquipmentSet = 0x3513, + DelFriend = 0x36d2, + DelIgnore = 0x36d6, + DepositReagentBank = 0x3331, + DestroyItem = 0x3296, + DfBootPlayerVote = 0x3615, + DfGetJoinStatus = 0x3613, + DfGetSystemInfo = 0x3612, + DfJoin = 0x3608, + DfLeave = 0x3611, + DfProposalResponse = 0x3607, + DfReadyCheckResponse = 0x3618, + DfSetRoles = 0x3614, + DfTeleport = 0x3616, + DiscardedTimeSyncAcks = 0x3a3d, + DismissCritter = 0x3501, + DoMasterLootRoll = 0x3212, + DoReadyCheck = 0x3634, + DuelResponse = 0x34ea, + EjectPassenger = 0x323f, + Emote = 0x354b, EnableEncryptionAck = 0x3767, EnableNagle = 0x376b, EnableTaxiNode = 0x34a9, - EngineSurvey = 0x36e6, - EnumCharacters = 0x35e9, - EnumCharactersDeletedByClient = 0x36e0, - FarSight = 0x34e9, + EngineSurvey = 0x36e5, + EnumCharacters = 0x35e8, + EnumCharactersDeletedByClient = 0x36df, + FarSight = 0x34f0, GameEventDebugDisable = 0x31b1, GameEventDebugEnable = 0x31b0, - GameObjReportUse = 0x34f0, - GameObjUse = 0x34ef, - GarrisonAssignFollowerToBuilding = 0x32dd, - GarrisonCancelConstruction = 0x32ce, - GarrisonCheckUpgradeable = 0x3320, - GarrisonCompleteMission = 0x3313, - GarrisonGenerateRecruits = 0x32e0, - GarrisonGetBuildingLandmarks = 0x32ee, - GarrisonGetMissionReward = 0x3346, - GarrisonMissionBonusRoll = 0x3315, - GarrisonPurchaseBuilding = 0x32ca, - GarrisonRecruitFollower = 0x32e2, - GarrisonRemoveFollower = 0x330a, - GarrisonRemoveFollowerFromBuilding = 0x32de, - GarrisonRenameFollower = 0x32df, - GarrisonRequestBlueprintAndSpecializationData = 0x32c9, - GarrisonRequestClassSpecCategoryInfo = 0x32e7, - GarrisonRequestLandingPageShipmentInfo = 0x32f1, - GarrisonRequestShipmentInfo = 0x32f0, - GarrisonResearchTalent = 0x32e3, - GarrisonSetBuildingActive = 0x32cb, - GarrisonSetFollowerFavorite = 0x32db, - GarrisonSetFollowerInactive = 0x32d7, - GarrisonSetRecruitmentPreferences = 0x32e1, - GarrisonStartMission = 0x3312, - GarrisonSwapBuildings = 0x32cf, - GenerateRandomCharacterName = 0x35e8, - GetAccountCharacterList = 0x36b9, - GetChallengeModeRewards = 0x3685, - GetGarrisonInfo = 0x32c4, - GetItemPurchaseData = 0x3530, - GetMirrorImageData = 0x3299, - GetPvpOptionsEnabled = 0x35ef, - GetRafAccountInfo = 0x3725, - GetRemainingGameTime = 0x36ef, - GetTrophyList = 0x3303, - GetUndeleteCharacterCooldownStatus = 0x36e2, - GmTicketAcknowledgeSurvey = 0x3697, - GmTicketGetCaseStatus = 0x3696, - GmTicketGetSystemStatus = 0x3695, + GameObjReportUse = 0x34f7, + GameObjUse = 0x34f6, + GarrisonAssignFollowerToBuilding = 0x32e1, + GarrisonCancelConstruction = 0x32cf, + GarrisonCheckUpgradeable = 0x3324, + GarrisonCompleteMission = 0x3317, + GarrisonGenerateRecruits = 0x32e4, + GarrisonGetBuildingLandmarks = 0x32f2, + GarrisonGetMissionReward = 0x334a, + GarrisonMissionBonusRoll = 0x3319, + GarrisonPurchaseBuilding = 0x32cb, + GarrisonRecruitFollower = 0x32e6, + GarrisonRemoveFollower = 0x330e, + GarrisonRemoveFollowerFromBuilding = 0x32e2, + GarrisonRenameFollower = 0x32e3, + GarrisonRequestBlueprintAndSpecializationData = 0x32ca, + GarrisonRequestClassSpecCategoryInfo = 0x32eb, + GarrisonRequestLandingPageShipmentInfo = 0x32f5, + GarrisonRequestShipmentInfo = 0x32f4, + GarrisonResearchTalent = 0x32e7, + GarrisonSetBuildingActive = 0x32cc, + GarrisonSetFollowerFavorite = 0x32df, + GarrisonSetFollowerInactive = 0x32d8, + GarrisonSetRecruitmentPreferences = 0x32e5, + GarrisonStartMission = 0x3316, + GarrisonSwapBuildings = 0x32d0, + GenerateRandomCharacterName = 0x35e7, + GetAccountCharacterList = 0x36b8, + GetChallengeModeRewards = 0x3684, + GetGarrisonInfo = 0x32c5, + GetItemPurchaseData = 0x3539, + GetMirrorImageData = 0x329a, + GetPvpOptionsEnabled = 0x35ee, + GetRafAccountInfo = 0x3724, + GetRemainingGameTime = 0x36ee, + GetTrophyList = 0x3307, + GetUndeleteCharacterCooldownStatus = 0x36e1, + GmTicketAcknowledgeSurvey = 0x3696, + GmTicketGetCaseStatus = 0x3695, + GmTicketGetSystemStatus = 0x3694, GossipSelectOption = 0x3494, GuildAddBattlenetFriend = 0x308e, GuildAddRank = 0x3065, @@ -328,7 +335,7 @@ namespace Framework.Constants GuildGetAchievementMembers = 0x3072, GuildGetRanks = 0x306e, GuildGetRoster = 0x3074, - GuildInviteByName = 0x3607, + GuildInviteByName = 0x3606, GuildLeave = 0x3063, GuildNewsUpdateSticky = 0x306f, GuildOfficerRemoveMember = 0x3064, @@ -341,206 +348,207 @@ namespace Framework.Constants GuildReplaceGuildMaster = 0x3089, GuildSetAchievementTracking = 0x3070, GuildSetFocusedAchievement = 0x3071, - GuildSetGuildMaster = 0x36ca, + GuildSetGuildMaster = 0x36c9, GuildSetMemberNote = 0x3073, GuildSetRankPermissions = 0x3068, GuildShiftRank = 0x3067, GuildUpdateInfoText = 0x3076, GuildUpdateMotdText = 0x3075, - HearthAndResurrect = 0x3508, - HotfixRequest = 0x35e6, + HearthAndResurrect = 0x350f, + HotfixRequest = 0x35e5, IgnoreTrade = 0x3159, InitiateRolePoll = 0x35da, InitiateTrade = 0x3156, - Inspect = 0x352a, - InstanceLockResponse = 0x350d, - IslandQueue = 0x3390, - ItemPurchaseRefund = 0x3531, - ItemTextQuery = 0x3321, - JoinPetBattleQueue = 0x31df, + Inspect = 0x3533, + InstanceLockResponse = 0x3514, + IslandQueue = 0x3396, + ItemPurchaseRefund = 0x353a, + ItemTextQuery = 0x3325, + JoinPetBattleQueue = 0x31de, JoinRatedBattleground = 0x3178, - KeepAlive = 0x3681, - KeyboundOverride = 0x3226, - LearnPvpTalents = 0x3555, - LearnTalents = 0x3553, - LeaveGroup = 0x364b, - LeavePetBattleQueue = 0x31e0, - LfgListApplyToGroup = 0x360d, - LfgListCancelApplication = 0x360e, - LfgListDeclineApplicant = 0x360f, - LfgListGetStatus = 0x360b, - LfgListInviteApplicant = 0x3610, - LfgListInviteResponse = 0x3611, - LfgListJoin = 0x335e, - LfgListLeave = 0x360a, - LfgListSearch = 0x360c, - LfgListUpdateRequest = 0x335f, - LfGuildAddRecruit = 0x361c, - LfGuildBrowse = 0x361e, + KeepAlive = 0x3680, + KeyboundOverride = 0x3225, + LearnPvpTalents = 0x355e, + LearnTalents = 0x355c, + LeaveGroup = 0x364a, + LeavePetBattleQueue = 0x31df, + LfgListApplyToGroup = 0x360c, + LfgListCancelApplication = 0x360d, + LfgListDeclineApplicant = 0x360e, + LfgListGetStatus = 0x360a, + LfgListInviteApplicant = 0x360f, + LfgListInviteResponse = 0x3610, + LfgListJoin = 0x3364, + LfgListLeave = 0x3609, + LfgListSearch = 0x360b, + LfgListUpdateRequest = 0x3365, + LfGuildAddRecruit = 0x361b, + LfGuildBrowse = 0x361d, LfGuildDeclineRecruit = 0x3079, LfGuildGetApplications = 0x307a, LfGuildGetGuildPost = 0x3077, LfGuildGetRecruits = 0x3078, LfGuildRemoveRecruit = 0x307b, - LfGuildSetGuildPost = 0x361d, + LfGuildSetGuildPost = 0x361c, ListInventory = 0x34a1, - LiveRegionAccountRestore = 0x36bc, - LiveRegionCharacterCopy = 0x36bb, - LiveRegionGetAccountCharacterList = 0x36ba, - LoadingScreenNotify = 0x35f9, - LoadSelectedTrophy = 0x3304, - LogoutCancel = 0x34d9, - LogoutInstant = 0x34da, - LogoutRequest = 0x34d7, + LiveRegionAccountRestore = 0x36bb, + LiveRegionCharacterCopy = 0x36ba, + LiveRegionGetAccountCharacterList = 0x36b9, + LoadingScreenNotify = 0x35f8, + LoadSelectedTrophy = 0x3308, + LogoutCancel = 0x34e0, + LogoutInstant = 0x34e1, + LogoutRequest = 0x34de, LogDisconnect = 0x3769, LogStreamingError = 0x376d, - LootItem = 0x3211, - LootMoney = 0x3210, - LootRelease = 0x3215, - LootRoll = 0x3216, - LootUnit = 0x320f, - LowLevelRaid1 = 0x36a4, - LowLevelRaid2 = 0x3514, - MailCreateTextItem = 0x353c, - MailDelete = 0x3228, - MailGetList = 0x3537, - MailMarkAsRead = 0x353b, - MailReturnToSender = 0x3657, - MailTakeItem = 0x3539, - MailTakeMoney = 0x3538, - MakeContitionalAppearancePermanent = 0x322a, - MasterLootItem = 0x3212, - MinimapPing = 0x364d, + LootItem = 0x3210, + LootMoney = 0x320f, + LootRelease = 0x3214, + LootRoll = 0x3215, + LootUnit = 0x320e, + LowLevelRaid1 = 0x36a3, + LowLevelRaid2 = 0x351b, + MailCreateTextItem = 0x3545, + MailDelete = 0x3227, + MailGetList = 0x3540, + MailMarkAsRead = 0x3544, + MailReturnToSender = 0x3656, + MailTakeItem = 0x3542, + MailTakeMoney = 0x3541, + MakeContitionalAppearancePermanent = 0x3229, + MasterLootItem = 0x3211, + MinimapPing = 0x364c, MissileTrajectoryCollision = 0x318a, MountClearFanfare = 0x312d, - MountSetFavorite = 0x3633, - MountSpecialAnim = 0x3284, - MoveApplyMovementForceAck = 0x3a12, - MoveChangeTransport = 0x3a2c, - MoveChangeVehicleSeats = 0x3a31, - MoveDismissVehicle = 0x3a30, + MountSetFavorite = 0x3632, + MountSpecialAnim = 0x3285, + MoveApplyMovementForceAck = 0x3a13, + MoveChangeTransport = 0x3a2d, + MoveChangeVehicleSeats = 0x3a32, + MoveDismissVehicle = 0x3a31, MoveDoubleJump = 0x39eb, - MoveEnableDoubleJumpAck = 0x3a1b, - MoveEnableSwimToFlyTransAck = 0x3a21, - MoveFallLand = 0x39f9, - MoveFallReset = 0x3a16, - MoveFeatherFallAck = 0x3a19, - MoveForceFlightBackSpeedChangeAck = 0x3a2b, - MoveForceFlightSpeedChangeAck = 0x3a2a, - MoveForcePitchRateChangeAck = 0x3a2f, - MoveForceRootAck = 0x3a0b, - MoveForceRunBackSpeedChangeAck = 0x3a09, - MoveForceRunSpeedChangeAck = 0x3a08, - MoveForceSwimBackSpeedChangeAck = 0x3a1f, - MoveForceSwimSpeedChangeAck = 0x3a0a, - MoveForceTurnRateChangeAck = 0x3a20, - MoveForceUnrootAck = 0x3a0c, - MoveForceWalkSpeedChangeAck = 0x3a1e, - MoveGravityDisableAck = 0x3a32, - MoveGravityEnableAck = 0x3a33, - MoveHeartbeat = 0x3a0d, - MoveHoverAck = 0x3a10, + MoveEnableDoubleJumpAck = 0x3a1c, + MoveEnableSwimToFlyTransAck = 0x3a22, + MoveFallLand = 0x39fa, + MoveFallReset = 0x3a17, + MoveFeatherFallAck = 0x3a1a, + MoveForceFlightBackSpeedChangeAck = 0x3a2c, + MoveForceFlightSpeedChangeAck = 0x3a2b, + MoveForcePitchRateChangeAck = 0x3a30, + MoveForceRootAck = 0x3a0c, + MoveForceRunBackSpeedChangeAck = 0x3a0a, + MoveForceRunSpeedChangeAck = 0x3a09, + MoveForceSwimBackSpeedChangeAck = 0x3a20, + MoveForceSwimSpeedChangeAck = 0x3a0b, + MoveForceTurnRateChangeAck = 0x3a21, + MoveForceUnrootAck = 0x3a0d, + MoveForceWalkSpeedChangeAck = 0x3a1f, + MoveGravityDisableAck = 0x3a33, + MoveGravityEnableAck = 0x3a34, + MoveHeartbeat = 0x3a0e, + MoveHoverAck = 0x3a11, MoveJump = 0x39ea, - MoveKnockBackAck = 0x3a0f, - MoveRemoveMovementForces = 0x3a14, - MoveRemoveMovementForceAck = 0x3a13, - MoveSeamlessTransferComplete = 0x3a3f, - MoveSetCanFlyAck = 0x3a24, - MoveSetCanTurnWhileFallingAck = 0x3a22, - MoveSetCollisionHeightAck = 0x3a36, - MoveSetFacing = 0x3a06, - MoveSetFly = 0x3a25, - MoveSetIgnoreMovementForcesAck = 0x3a23, - MoveSetModMovementForceMagnitudeAck = 0x3a3d, - MoveSetPitch = 0x3a07, + MoveKnockBackAck = 0x3a10, + MoveRemoveMovementForces = 0x3a15, + MoveRemoveMovementForceAck = 0x3a14, + MoveSeamlessTransferComplete = 0x3a40, + MoveSetCanFlyAck = 0x3a25, + MoveSetCanTurnWhileFallingAck = 0x3a23, + MoveSetCollisionHeightAck = 0x3a37, + MoveSetFacing = 0x3a07, + MoveSetFly = 0x3a26, + MoveSetIgnoreMovementForcesAck = 0x3a24, + MoveSetModMovementForceMagnitudeAck = 0x3a3e, + MoveSetPitch = 0x3a08, MoveSetRunMode = 0x39f2, - MoveSetVehicleRecIdAck = 0x3a11, + MoveSetVehicleRecIdAck = 0x3a12, MoveSetWalkMode = 0x39f3, - MoveSplineDone = 0x3a15, - MoveStartAscend = 0x3a26, + MoveSplineDone = 0x3a16, + MoveStartAscend = 0x3a27, MoveStartBackward = 0x39e5, - MoveStartDescend = 0x3a2d, + MoveStartDescend = 0x3a2e, MoveStartForward = 0x39e4, MoveStartPitchDown = 0x39f0, MoveStartPitchUp = 0x39ef, MoveStartStrafeLeft = 0x39e7, MoveStartStrafeRight = 0x39e8, - MoveStartSwim = 0x39fa, + MoveStartSwim = 0x39fb, MoveStartTurnLeft = 0x39ec, MoveStartTurnRight = 0x39ed, MoveStop = 0x39e6, - MoveStopAscend = 0x3a27, + MoveStopAscend = 0x3a28, MoveStopPitch = 0x39f1, MoveStopStrafe = 0x39e9, - MoveStopSwim = 0x39fb, + MoveStopSwim = 0x39fc, MoveStopTurn = 0x39ee, - MoveTeleportAck = 0x39f8, - MoveTimeSkipped = 0x3a18, - MoveToggleCollisionCheat = 0x3a05, - MoveUpdateFallSpeed = 0x3a17, - MoveWaterWalkAck = 0x3a1a, - NeutralPlayerSelectFaction = 0x31d5, - NextCinematicCamera = 0x3545, + MoveTeleportAck = 0x39f9, + MoveTimeSkipped = 0x3a19, + MoveToggleCollisionCheat = 0x3a06, + MoveUpdateFallSpeed = 0x3a18, + MoveWaterWalkAck = 0x3a1b, + NeutralPlayerSelectFaction = 0x31d4, + NextCinematicCamera = 0x354e, ObjectUpdateFailed = 0x3180, ObjectUpdateRescued = 0x3181, - OfferPetition = 0x36b2, - OpeningCinematic = 0x3544, - OpenItem = 0x3322, - OpenMissionNpc = 0x32e9, - OpenShipmentNpc = 0x32ef, - OpenTradeskillNpc = 0x32fa, - OptOutOfLoot = 0x34f7, - PartyInvite = 0x3603, - PartyInviteResponse = 0x3604, - PartyUninvite = 0x3649, + OfferPetition = 0x36b1, + OpeningCinematic = 0x354d, + OpenItem = 0x3326, + OpenMissionNpc = 0x32ed, + OpenShipmentNpc = 0x32f3, + OpenTradeskillNpc = 0x32fe, + OptOutOfLoot = 0x34fe, + PartyInvite = 0x3602, + PartyInviteResponse = 0x3603, + PartyUninvite = 0x3648, + PerformItemInteraction = 0x3231, PetitionBuy = 0x34c9, - PetitionRenameGuild = 0x36cb, + PetitionRenameGuild = 0x36ca, PetitionShowList = 0x34c8, PetitionShowSignatures = 0x34ca, PetAbandon = 0x348d, PetAction = 0x348b, - PetBattleFinalNotify = 0x31e4, - PetBattleInput = 0x3642, - PetBattleQueueProposeMatchResult = 0x3227, - PetBattleQuitNotify = 0x31e3, - PetBattleReplaceFrontPet = 0x3643, - PetBattleRequestPvp = 0x31dd, - PetBattleRequestUpdate = 0x31de, - PetBattleRequestWild = 0x31db, - PetBattleScriptErrorNotify = 0x31e5, - PetBattleWildLocationFail = 0x31dc, + PetBattleFinalNotify = 0x31e3, + PetBattleInput = 0x3641, + PetBattleQueueProposeMatchResult = 0x3226, + PetBattleQuitNotify = 0x31e2, + PetBattleReplaceFrontPet = 0x3642, + PetBattleRequestPvp = 0x31dc, + PetBattleRequestUpdate = 0x31dd, + PetBattleRequestWild = 0x31da, + PetBattleScriptErrorNotify = 0x31e4, + PetBattleWildLocationFail = 0x31db, PetCancelAura = 0x348e, - PetCastSpell = 0x329d, - PetRename = 0x3687, + PetCastSpell = 0x329e, + PetRename = 0x3686, PetSetAction = 0x348a, PetSpellAutocast = 0x348f, PetStopAttack = 0x348c, Ping = 0x3768, - PlayerLogin = 0x35eb, + PlayerLogin = 0x35ea, PushQuestToParty = 0x349f, PvpLogData = 0x317b, - QueryBattlePetName = 0x3279, - QueryCommunityName = 0x368e, - QueryCorpseLocationFromClient = 0x3662, - QueryCorpseTransport = 0x3663, + QueryBattlePetName = 0x327a, + QueryCommunityName = 0x368d, + QueryCorpseLocationFromClient = 0x3661, + QueryCorpseTransport = 0x3662, QueryCountdownTimer = 0x31a8, - QueryCreature = 0x3273, - QueryGameObject = 0x3274, - QueryGarrisonCreatureName = 0x327a, - QueryGuildInfo = 0x3691, - QueryInspectAchievements = 0x3501, - QueryNextMailTime = 0x353a, - QueryNpcText = 0x3275, - QueryPageText = 0x3277, - QueryPetition = 0x327b, - QueryPetName = 0x3278, - QueryPlayerName = 0x368d, + QueryCreature = 0x3274, + QueryGameObject = 0x3275, + QueryGarrisonCreatureName = 0x327b, + QueryGuildInfo = 0x3690, + QueryInspectAchievements = 0x3508, + QueryNextMailTime = 0x3543, + QueryNpcText = 0x3276, + QueryPageText = 0x3278, + QueryPetition = 0x327c, + QueryPetName = 0x3279, + QueryPlayerName = 0x368c, QueryQuestCompletionNpcs = 0x3175, - QueryQuestInfo = 0x3276, - QueryRealmName = 0x3690, - QueryScenarioPoi = 0x3658, - QueryTime = 0x34d6, - QueryTreasurePicker = 0x3348, + QueryQuestInfo = 0x3277, + QueryRealmName = 0x368f, + QueryScenarioPoi = 0x3657, + QueryTime = 0x34dd, + QueryTreasurePicker = 0x334c, QueryVoidStorage = 0x31a1, QuestConfirmAccept = 0x349e, QuestGiverAcceptQuest = 0x3498, @@ -551,208 +559,208 @@ namespace Framework.Constants QuestGiverRequestReward = 0x349b, QuestGiverStatusMultipleQuery = 0x349d, QuestGiverStatusQuery = 0x349c, - QuestLogRemoveQuest = 0x352f, - QuestPoiQuery = 0x36b3, + QuestLogRemoveQuest = 0x3538, + QuestPoiQuery = 0x36b2, QuestPushResult = 0x34a0, - QuestSessionBeginResponse = 0x339f, - QuestSessionRequestStart = 0x339e, - QuestSessionRequestStop = 0x3730, + QuestSessionBeginResponse = 0x33a5, + QuestSessionRequestStart = 0x33a4, + QuestSessionRequestStop = 0x372f, QueuedMessagesEnd = 0x376c, - QuickJoinAutoAcceptRequests = 0x370a, - QuickJoinRequestInvite = 0x3709, - QuickJoinRequestInviteWithConfirmation = 0x3735, - QuickJoinRespondToInvite = 0x3708, - QuickJoinSignalToastDisplayed = 0x3707, - RafClaimActivityReward = 0x3505, - RafClaimNextReward = 0x3726, - RafGenerateRecruitmentLink = 0x3728, - RafUpdateRecruitmentInfo = 0x3727, - RaidOrBattlegroundEngineSurvey = 0x36e7, - RandomRoll = 0x3656, - ReadyCheckResponse = 0x3636, - ReadItem = 0x3323, - ReclaimCorpse = 0x34dc, - RedeemWowTokenConfirm = 0x36f1, - RedeemWowTokenStart = 0x36f0, - RemoveNewItem = 0x334b, - RemoveRafRecruit = 0x3729, - ReorderCharacters = 0x35ea, - RepairItem = 0x34ed, - ReplaceTrophy = 0x3305, - RepopRequest = 0x3527, - ReportClientVariables = 0x3704, - ReportEnabledAddons = 0x3703, - ReportKeybindingExecutionCounts = 0x3705, - ReportPvpPlayerAfk = 0x34f5, - ReportServerLag = 0x3396, - RequestAccountData = 0x369a, - RequestAreaPoiUpdate = 0x334a, - RequestBattlefieldStatus = 0x35dd, + QuickJoinAutoAcceptRequests = 0x3709, + QuickJoinRequestInvite = 0x3708, + QuickJoinRequestInviteWithConfirmation = 0x3734, + QuickJoinRespondToInvite = 0x3707, + QuickJoinSignalToastDisplayed = 0x3706, + RafClaimActivityReward = 0x350c, + RafClaimNextReward = 0x3725, + RafGenerateRecruitmentLink = 0x3727, + RafUpdateRecruitmentInfo = 0x3726, + RaidOrBattlegroundEngineSurvey = 0x36e6, + RandomRoll = 0x3655, + ReadyCheckResponse = 0x3635, + ReadItem = 0x3327, + ReclaimCorpse = 0x34e3, + RedeemWowTokenConfirm = 0x36f0, + RedeemWowTokenStart = 0x36ef, + RemoveNewItem = 0x334f, + RemoveRafRecruit = 0x3728, + ReorderCharacters = 0x35e9, + RepairItem = 0x34f4, + ReplaceTrophy = 0x3309, + RepopRequest = 0x3530, + ReportClientVariables = 0x3703, + ReportEnabledAddons = 0x3702, + ReportKeybindingExecutionCounts = 0x3704, + ReportPvpPlayerAfk = 0x34fc, + ReportServerLag = 0x339c, + RequestAccountData = 0x3699, + RequestAreaPoiUpdate = 0x334e, + RequestBattlefieldStatus = 0x35dc, RequestCategoryCooldowns = 0x317d, RequestCemeteryList = 0x3176, - RequestChallengeModeAffixes = 0x3208, - RequestCharacterGuildFollowInfo = 0x3692, - RequestConquestFormulaConstants = 0x32b6, - RequestCrowdControlSpell = 0x352b, - RequestForcedReactions = 0x320a, + RequestChallengeModeAffixes = 0x3207, + RequestCharacterGuildFollowInfo = 0x3691, + RequestConquestFormulaConstants = 0x32b7, + RequestCrowdControlSpell = 0x3534, + RequestForcedReactions = 0x3209, RequestGuildPartyState = 0x31a7, RequestGuildRewardsList = 0x31a6, - RequestLfgListBlacklist = 0x32a6, - RequestPartyJoinUpdates = 0x35f8, - RequestPartyMemberStats = 0x3655, + RequestLfgListBlacklist = 0x32a7, + RequestPartyJoinUpdates = 0x35f7, + RequestPartyMemberStats = 0x3654, RequestPetInfo = 0x3490, - RequestPlayedTime = 0x327e, + RequestPlayedTime = 0x327f, RequestPvpBrawlInfo = 0x3195, RequestPvpRewards = 0x3194, - RequestQuestLinesForMap = 0x3391, - RequestRaidInfo = 0x36cc, - RequestRatedBattlefieldInfo = 0x35e4, + RequestQuestLinesForMap = 0x3397, + RequestRaidInfo = 0x36cb, + RequestRatedBattlefieldInfo = 0x35e3, RequestRealmGuildMasterInfo = 0x309b, RequestResearchHistory = 0x3167, RequestStabledPets = 0x3491, - RequestVehicleExit = 0x3239, - RequestVehicleNextSeat = 0x323b, - RequestVehiclePrevSeat = 0x323a, - RequestVehicleSwitchSeat = 0x323c, - RequestWorldQuestUpdate = 0x3349, - RequestWowTokenMarketPrice = 0x36e9, - ResetChallengeMode = 0x3206, - ResetChallengeModeCheat = 0x3207, - ResetInstances = 0x366a, - ResurrectResponse = 0x3686, - RevertMonumentAppearance = 0x3307, - RideVehicleInteract = 0x323d, + RequestVehicleExit = 0x323a, + RequestVehicleNextSeat = 0x323c, + RequestVehiclePrevSeat = 0x323b, + RequestVehicleSwitchSeat = 0x323d, + RequestWorldQuestUpdate = 0x334d, + RequestWowTokenMarketPrice = 0x36e8, + ResetChallengeMode = 0x3205, + ResetChallengeModeCheat = 0x3206, + ResetInstances = 0x3669, + ResurrectResponse = 0x3685, + RevertMonumentAppearance = 0x330b, + RideVehicleInteract = 0x323e, SaveCufProfiles = 0x318b, - SaveEquipmentSet = 0x350b, - SaveGuildEmblem = 0x32aa, - ScenePlaybackCanceled = 0x3223, - ScenePlaybackComplete = 0x3222, - SceneTriggerEvent = 0x3224, - SelfRes = 0x3532, + SaveEquipmentSet = 0x3512, + SaveGuildEmblem = 0x32ab, + ScenePlaybackCanceled = 0x3222, + ScenePlaybackComplete = 0x3221, + SceneTriggerEvent = 0x3223, + SelfRes = 0x353b, SellItem = 0x34a2, - SellWowTokenConfirm = 0x36eb, - SellWowTokenStart = 0x36ea, - SendContactList = 0x36d1, - SendMail = 0x35fb, + SellWowTokenConfirm = 0x36ea, + SellWowTokenStart = 0x36e9, + SendContactList = 0x36d0, + SendMail = 0x35fa, SendTextEmote = 0x3488, - SetAchievementsHidden = 0x3229, - SetActionBarToggles = 0x3533, - SetActionButton = 0x3637, - SetActiveMover = 0x3a37, - SetAdvancedCombatLogging = 0x32b7, - SetAssistantLeader = 0x3651, - SetBackpackAutosortDisabled = 0x3326, - SetBankAutosortDisabled = 0x3327, - SetContactNotes = 0x36d4, + SetAchievementsHidden = 0x3228, + SetActionBarToggles = 0x353c, + SetActionButton = 0x3636, + SetActiveMover = 0x3a38, + SetAdvancedCombatLogging = 0x32b8, + SetAssistantLeader = 0x3650, + SetBackpackAutosortDisabled = 0x332a, + SetBankAutosortDisabled = 0x332b, + SetContactNotes = 0x36d3, SetCurrencyFlags = 0x3169, - SetDifficultyId = 0x3225, - SetDungeonDifficulty = 0x3684, - SetEveryoneIsAssistant = 0x3618, - SetFactionAtWar = 0x34df, - SetFactionInactive = 0x34e1, - SetFactionNotAtWar = 0x34e0, - SetGameEventDebugViewState = 0x31b9, - SetInsertItemsLeftToRight = 0x3329, - SetLfgBonusFactionId = 0x32a5, - SetLootMethod = 0x364a, - SetLootSpecialization = 0x3540, - SetPartyAssignment = 0x3653, - SetPartyLeader = 0x364c, + SetDifficultyId = 0x3224, + SetDungeonDifficulty = 0x3683, + SetEveryoneIsAssistant = 0x3617, + SetFactionAtWar = 0x34e6, + SetFactionInactive = 0x34e8, + SetFactionNotAtWar = 0x34e7, + SetGameEventDebugViewState = 0x31b8, + SetInsertItemsLeftToRight = 0x332d, + SetLfgBonusFactionId = 0x32a6, + SetLootMethod = 0x3649, + SetLootSpecialization = 0x3549, + SetPartyAssignment = 0x3652, + SetPartyLeader = 0x364b, SetPetSlot = 0x3168, - SetPlayerDeclinedNames = 0x368c, + SetPlayerDeclinedNames = 0x368b, SetPreferredCemetery = 0x3177, - SetPvp = 0x32ae, - SetRaidDifficulty = 0x36de, + SetPvp = 0x32af, + SetRaidDifficulty = 0x36dd, SetRole = 0x35d9, - SetSavedInstanceExtend = 0x368a, - SetSelection = 0x3529, + SetSavedInstanceExtend = 0x3689, + SetSelection = 0x3532, SetSheathed = 0x3489, - SetSortBagsRightToLeft = 0x3328, - SetTaxiBenchmarkMode = 0x34f4, - SetTitle = 0x3282, + SetSortBagsRightToLeft = 0x332c, + SetTaxiBenchmarkMode = 0x34fb, + SetTitle = 0x3283, SetTradeCurrency = 0x3160, SetTradeGold = 0x315f, SetTradeItem = 0x315d, - SetUsingPartyGarrison = 0x32eb, - SetWarMode = 0x32af, - SetWatchedFaction = 0x34e2, - ShowTradeSkill = 0x36c4, - SignPetition = 0x3534, - SilencePartyTalker = 0x3654, - SocketGems = 0x34ec, - SortBags = 0x332a, - SortBankBags = 0x332b, - SortReagentBankBags = 0x332c, + SetUsingPartyGarrison = 0x32ef, + SetWarMode = 0x32b0, + SetWatchedFaction = 0x34e9, + ShowTradeSkill = 0x36c3, + SignPetition = 0x353d, + SilencePartyTalker = 0x3653, + SocketGems = 0x34f3, + SortBags = 0x332e, + SortBankBags = 0x332f, + SortReagentBankBags = 0x3330, SpellClick = 0x3495, SpiritHealerActivate = 0x34af, SplitItem = 0x399e, StandStateChange = 0x3189, - StartChallengeMode = 0x354b, - StartSpectatorWarGame = 0x35e0, - StartWarGame = 0x35df, - SummonResponse = 0x366c, - SupportTicketSubmitBug = 0x3647, - SupportTicketSubmitComplaint = 0x3646, - SupportTicketSubmitSuggestion = 0x3648, + StartChallengeMode = 0x3554, + StartSpectatorWarGame = 0x35df, + StartWarGame = 0x35de, + SummonResponse = 0x366b, + SupportTicketSubmitBug = 0x3646, + SupportTicketSubmitComplaint = 0x3645, + SupportTicketSubmitSuggestion = 0x3647, SurrenderArena = 0x3174, SuspendCommsAck = 0x3764, SuspendTokenResponse = 0x376a, SwapInvItem = 0x399d, SwapItem = 0x399c, - SwapSubGroups = 0x364f, + SwapSubGroups = 0x364e, SwapVoidItem = 0x31a3, - TabardVendorActivate = 0x32ab, + TabardVendorActivate = 0x32ac, TalkToGossip = 0x3492, TaxiNodeStatusQuery = 0x34a8, TaxiQueryAvailableNodes = 0x34aa, TaxiRequestEarlyLanding = 0x34ac, - TimeAdjustmentResponse = 0x3a3b, - TimeSyncResponse = 0x3a38, - TimeSyncResponseDropped = 0x3a3a, - TimeSyncResponseFailed = 0x3a39, - ToggleDifficulty = 0x3659, - TogglePvp = 0x32ad, - TotemDestroyed = 0x34f9, + TimeAdjustmentResponse = 0x3a3c, + TimeSyncResponse = 0x3a39, + TimeSyncResponseDropped = 0x3a3b, + TimeSyncResponseFailed = 0x3a3a, + ToggleDifficulty = 0x3658, + TogglePvp = 0x32ae, + TotemDestroyed = 0x3500, ToyClearFanfare = 0x312e, - TradeSkillSetFavorite = 0x3347, + TradeSkillSetFavorite = 0x334b, TrainerBuySpell = 0x34ae, TrainerList = 0x34ad, TransmogrifyItems = 0x3196, - TurnInPetition = 0x3536, - Tutorial = 0x36df, + TurnInPetition = 0x353f, + Tutorial = 0x36de, TwitterCheckStatus = 0x312a, TwitterConnect = 0x3127, TwitterDisconnect = 0x312b, - TwitterPost = 0x332e, - UiTimeRequest = 0x369f, + TwitterPost = 0x3332, + UiTimeRequest = 0x369e, UnacceptTrade = 0x315b, - UndeleteCharacter = 0x36e1, - UnlearnSkill = 0x34e6, + UndeleteCharacter = 0x36e0, + UnlearnSkill = 0x34ed, UnlearnSpecialization = 0x31a4, UnlockVoidStorage = 0x31a0, - UpdateAccountData = 0x369b, - UpdateAreaTriggerVisual = 0x32a0, - UpdateClientSettings = 0x3666, - UpdateMissileTrajectory = 0x3a3e, - UpdateRaidTarget = 0x3652, - UpdateSpellVisual = 0x329f, - UpdateVasPurchaseStates = 0x36f7, - UpdateWowTokenAuctionableList = 0x36f2, - UpdateWowTokenCount = 0x36e8, - UpgradeGarrison = 0x32bf, + UpdateAccountData = 0x369a, + UpdateAreaTriggerVisual = 0x32a1, + UpdateClientSettings = 0x3665, + UpdateMissileTrajectory = 0x3a3f, + UpdateRaidTarget = 0x3651, + UpdateSpellVisual = 0x32a0, + UpdateVasPurchaseStates = 0x36f6, + UpdateWowTokenAuctionableList = 0x36f1, + UpdateWowTokenCount = 0x36e7, + UpgradeGarrison = 0x32c0, UsedFollow = 0x3186, - UseCritterItem = 0x3243, + UseCritterItem = 0x3244, UseEquipmentSet = 0x3995, - UseItem = 0x329a, - UseToy = 0x329c, + UseItem = 0x329b, + UseToy = 0x329d, ViolenceLevel = 0x3184, - VoiceChatJoinChannel = 0x3713, - VoiceChatLogin = 0x3712, + VoiceChatJoinChannel = 0x3712, + VoiceChatLogin = 0x3711, VoidStorageTransfer = 0x31a2, - WardenData = 0x35ed, - Who = 0x3683, - WhoIs = 0x3682, - WorldPortResponse = 0x35fa, + WardenData = 0x35ec, + Who = 0x3682, + WhoIs = 0x3681, + WorldPortResponse = 0x35f9, WrapItem = 0x3994, Max = 0x3FFF, @@ -762,8 +770,8 @@ namespace Framework.Constants public enum ServerOpcodes : uint { AbortNewWorld = 0x25af, - AccountCriteriaUpdate = 0x28c1, - AccountDataTimes = 0x2752, + AccountCriteriaUpdate = 0x28c5, + AccountDataTimes = 0x274f, AccountMountUpdate = 0x25c4, AccountToysUpdate = 0x25c5, AchievementDeleted = 0x2727, @@ -775,7 +783,7 @@ namespace Framework.Constants AddLossOfControl = 0x269c, AddRunePower = 0x26eb, AdjustSplineDuration = 0x25e9, - AdventureMapPoiQueryResponse = 0x2843, + AdventureMapPoiQueryResponse = 0x2842, AeLootTargets = 0x262f, AeLootTargetAck = 0x2630, AiReaction = 0x26e8, @@ -783,33 +791,35 @@ namespace Framework.Constants AllAchievementData = 0x2570, AllGuildAchievements = 0x29b8, ArchaeologySurveryCast = 0x2588, - AreaPoiUpdate = 0x2850, - AreaSpiritHealerTime = 0x2789, + AreaPoiUpdate = 0x284f, + AreaSpiritHealerTime = 0x2786, AreaTriggerDenied = 0x26a3, - AreaTriggerNoCorpse = 0x275e, + AreaTriggerNoCorpse = 0x275b, AreaTriggerPlayVisualEvent = 0x2641, AreaTriggerRePath = 0x263f, AreaTriggerReShape = 0x2644, ArenaCrowdControlSpells = 0x2652, - ArenaMatchEnd = 0x28a8, - ArenaMatchStart = 0x28a7, + ArenaMatchEnd = 0x28a7, + ArenaMatchStart = 0x28a6, ArenaPrepOpponentSpecializations = 0x2668, - ArtifactForgeOpened = 0x27eb, - ArtifactRespecConfirm = 0x27ee, - ArtifactTraitsRefunded = 0x27ef, - ArtifactXpGain = 0x2833, - AttackerStateUpdate = 0x27d8, + ArtifactForgeOpened = 0x27e8, + ArtifactRespecConfirm = 0x27eb, + ArtifactTraitsRefunded = 0x27ec, + ArtifactXpGain = 0x2830, + AttackerStateUpdate = 0x27d5, AttackStart = 0x2670, AttackStop = 0x2671, - AttackSwingError = 0x273c, - AttackSwingLandedLog = 0x273d, + AttackSwingError = 0x2739, + AttackSwingLandedLog = 0x273a, AuctionClosedNotification = 0x2731, AuctionCommandResult = 0x272e, + AuctionCommodityPriceUpdate = 0x28c3, AuctionHelloResponse = 0x272c, - AuctionListBidderItemsResult = 0x2735, - AuctionListItemsResult = 0x2733, - AuctionListOwnerItemsResult = 0x2734, - AuctionListPendingSalesResult = 0x2736, + AuctionListBidderItemsResult = 0x28c2, + AuctionListBucketItemsResult = 0x28bf, + AuctionListFavoriteItemsResult = 0x28cc, + AuctionListItemsResult = 0x28c0, + AuctionListOwnerItemsResult = 0x28c1, AuctionOutbidNotification = 0x2730, AuctionOwnerBidNotification = 0x2732, AuctionReplicateResponse = 0x272d, @@ -820,12 +830,12 @@ namespace Framework.Constants AuthError = 0x256c, AuthResponse = 0x256d, AvailableHotfixes = 0x25a3, - AzeriteEmpoweredItemEquippedStatusChanged = 0x2872, - AzeriteEmpoweredItemRespecOpen = 0x283d, - AzeriteEssenceForgeClose = 0x2875, - AzeriteEssenceForgeOpened = 0x2874, - AzeriteEssenceSelectionResult = 0x2873, - AzeriteXpGain = 0x2871, + AzeriteEmpoweredItemEquippedStatusChanged = 0x2871, + AzeriteEmpoweredItemRespecOpen = 0x283b, + AzeriteEssenceForgeClose = 0x2874, + AzeriteEssenceForgeOpened = 0x2873, + AzeriteEssenceSelectionResult = 0x2872, + AzeriteXpGain = 0x2870, BanReason = 0x26b8, BarberShopResult = 0x26f1, BattlefieldList = 0x2596, @@ -837,46 +847,46 @@ namespace Framework.Constants BattlefieldStatusQueued = 0x2593, BattlefieldStatusWaitForGroups = 0x25a7, BattlegroundInfoThrottled = 0x259d, - BattlegroundInit = 0x27a7, + BattlegroundInit = 0x27a4, BattlegroundPlayerJoined = 0x259a, BattlegroundPlayerLeft = 0x259b, BattlegroundPlayerPositions = 0x2597, - BattlegroundPoints = 0x27a6, - BattlenetChallengeAbort = 0x27d7, - BattlenetChallengeStart = 0x27d6, - BattlenetNotification = 0x284b, - BattlenetRealmListTicket = 0x284d, - BattlenetResponse = 0x284a, - BattlenetSetSessionState = 0x284c, - BattlenetUpdateSessionKey = 0x286b, - BattlePayAckFailed = 0x27d1, - BattlePayBattlePetDelivered = 0x27c5, - BattlePayBundlePriceUpdate = 0x285e, - BattlePayConfirmPurchase = 0x27d0, - BattlePayDeliveryEnded = 0x27c3, - BattlePayDeliveryStarted = 0x27c2, - BattlePayDistributionUpdate = 0x27c1, - BattlePayGetDistributionListResponse = 0x27bf, - BattlePayGetProductListResponse = 0x27bd, - BattlePayGetPurchaseListResponse = 0x27be, - BattlePayMountDelivered = 0x27c4, - BattlePayOpenCheckoutResult = 0x2864, - BattlePayPurchaseUpdate = 0x27cf, - BattlePayStartDistributionAssignToTargetResponse = 0x27cd, - BattlePayStartPurchaseResponse = 0x27cc, - BattlePaySubscriptionChanged = 0x286d, - BattlePayToyDelivered = 0x27c6, - BattlePayVasBnetTransferValidationResult = 0x2862, - BattlePayVasBoostConsumed = 0x27c0, - BattlePayVasCharacterList = 0x2836, - BattlePayVasCharacterQueueStatus = 0x2860, + BattlegroundPoints = 0x27a3, + BattlenetChallengeAbort = 0x27d4, + BattlenetChallengeStart = 0x27d3, + BattlenetNotification = 0x284a, + BattlenetRealmListTicket = 0x284c, + BattlenetResponse = 0x2849, + BattlenetSetSessionState = 0x284b, + BattlenetUpdateSessionKey = 0x286a, + BattlePayAckFailed = 0x27ce, + BattlePayBattlePetDelivered = 0x27c2, + BattlePayBundlePriceUpdate = 0x285d, + BattlePayConfirmPurchase = 0x27cd, + BattlePayDeliveryEnded = 0x27c0, + BattlePayDeliveryStarted = 0x27bf, + BattlePayDistributionUpdate = 0x27be, + BattlePayGetDistributionListResponse = 0x27bc, + BattlePayGetProductListResponse = 0x27ba, + BattlePayGetPurchaseListResponse = 0x27bb, + BattlePayMountDelivered = 0x27c1, + BattlePayOpenCheckoutResult = 0x2863, + BattlePayPurchaseUpdate = 0x27cc, + BattlePayStartDistributionAssignToTargetResponse = 0x27ca, + BattlePayStartPurchaseResponse = 0x27c9, + BattlePaySubscriptionChanged = 0x286c, + BattlePayToyDelivered = 0x27c3, + BattlePayVasBnetTransferValidationResult = 0x2861, + BattlePayVasBoostConsumed = 0x27bd, + BattlePayVasCharacterList = 0x2833, + BattlePayVasCharacterQueueStatus = 0x285f, BattlePayVasGuildFollowInfo = 0x29e7, BattlePayVasGuildMasterList = 0x29e6, - BattlePayVasPurchaseComplete = 0x2839, - BattlePayVasPurchaseList = 0x283a, - BattlePayVasPurchaseStarted = 0x2838, - BattlePayVasRealmList = 0x2837, - BattlePayVasTransferQueueStatus = 0x285f, + BattlePayVasPurchaseComplete = 0x2836, + BattlePayVasPurchaseList = 0x2837, + BattlePayVasPurchaseStarted = 0x2835, + BattlePayVasRealmList = 0x2834, + BattlePayVasTransferQueueStatus = 0x285e, BattlePetsHealed = 0x260b, BattlePetCageDateError = 0x26a6, BattlePetDeleted = 0x2608, @@ -890,7 +900,7 @@ namespace Framework.Constants BattlePetRevoked = 0x2609, BattlePetTrapLevel = 0x2602, BattlePetUpdates = 0x2601, - BinderConfirm = 0x2742, + BinderConfirm = 0x273f, BindPointUpdate = 0x257d, BlackMarketBidOnItemResult = 0x2648, BlackMarketOpenResult = 0x2646, @@ -898,14 +908,14 @@ namespace Framework.Constants BlackMarketRequestItemsResult = 0x2647, BlackMarketWon = 0x264a, BonusRollEmpty = 0x2665, - BonusRollFailed = 0x2878, - BossKillCredit = 0x27cb, + BonusRollFailed = 0x2877, + BossKillCredit = 0x27c8, BreakTarget = 0x266f, BroadcastAchievement = 0x2bbc, BuyFailed = 0x26fa, BuySucceeded = 0x26f9, - CacheInfo = 0x274c, - CacheVersion = 0x274b, + CacheInfo = 0x2749, + CacheVersion = 0x2748, CalendarClearPendingAction = 0x26cc, CalendarCommandResult = 0x26cd, CalendarEventInitialInvites = 0x26bc, @@ -926,9 +936,9 @@ namespace Framework.Constants CalendarSendCalendar = 0x26ba, CalendarSendEvent = 0x26bb, CalendarSendNumPending = 0x26cb, - CameraEffect = 0x276e, + CameraEffect = 0x276b, CancelAutoRepeat = 0x271b, - CancelCombat = 0x273a, + CancelCombat = 0x2737, CancelOrphanSpellVisual = 0x2c46, CancelScene = 0x2657, CancelSpellVisual = 0x2c44, @@ -946,25 +956,25 @@ namespace Framework.Constants ChallengeModeRewards = 0x2623, ChallengeModeStart = 0x261f, ChallengeModeUpdateDeathCount = 0x2620, - ChangePlayerDifficultyResult = 0x273e, + ChangePlayerDifficultyResult = 0x273b, ChannelList = 0x2bc3, ChannelNotify = 0x2bc0, ChannelNotifyJoined = 0x2bc1, ChannelNotifyLeft = 0x2bc2, - CharacterClassTrialCreate = 0x2809, - CharacterInventoryOverflowWarning = 0x286c, - CharacterItemFixup = 0x285b, - CharacterLoginFailed = 0x274d, - CharacterObjectTestResponse = 0x27d5, - CharacterRenameResult = 0x27af, - CharacterUpgradeComplete = 0x2808, - CharacterUpgradeQueued = 0x2807, + CharacterClassTrialCreate = 0x2806, + CharacterInventoryOverflowWarning = 0x286b, + CharacterItemFixup = 0x285a, + CharacterLoginFailed = 0x274a, + CharacterObjectTestResponse = 0x27d2, + CharacterRenameResult = 0x27ac, + CharacterUpgradeComplete = 0x2805, + CharacterUpgradeQueued = 0x2804, CharacterUpgradeSpellTierSet = 0x25f6, - CharacterUpgradeStarted = 0x2806, - CharacterUpgradeUnrevokeResult = 0x280a, + CharacterUpgradeStarted = 0x2803, + CharacterUpgradeUnrevokeResult = 0x2807, CharCustomize = 0x2722, CharCustomizeFailed = 0x2721, - CharFactionChangeResult = 0x27f3, + CharFactionChangeResult = 0x27f0, Chat = 0x2bad, ChatAutoResponded = 0x2bb8, ChatDown = 0x2bbd, @@ -985,44 +995,44 @@ namespace Framework.Constants ClearLossOfControl = 0x269e, ClearSpellCharges = 0x2c28, ClearTarget = 0x26e4, - ClubFinderApplicantsList = 0x28af, - ClubFinderApplications = 0x28b0, - ClubFinderApplicationsChanged = 0x28b1, - ClubFinderClubsData = 0x28b3, - ClubFinderClubsList = 0x28ae, - ClubFinderCommandResult = 0x28b2, + ClubFinderApplicantsList = 0x28ae, + ClubFinderApplications = 0x28af, + ClubFinderApplicationsChanged = 0x28b0, + ClubFinderClubsData = 0x28b2, + ClubFinderClubsList = 0x28ad, + ClubFinderCommandResult = 0x28b1, CoinRemoved = 0x262e, CombatEventFailed = 0x2672, - CommentatorMapInfo = 0x274f, - CommentatorPlayerInfo = 0x2750, - CommentatorStateChanged = 0x274e, + CommentatorMapInfo = 0x274c, + CommentatorPlayerInfo = 0x274d, + CommentatorStateChanged = 0x274b, ComplaintResult = 0x26db, - CompleteShipmentResponse = 0x27e7, + CompleteShipmentResponse = 0x27e4, ConnectTo = 0x304d, - ConquestFormulaConstants = 0x27d2, + ConquestFormulaConstants = 0x27cf, ConsoleWrite = 0x2655, - ContactList = 0x27d3, - ContributionCollectorState = 0x2863, + ContactList = 0x27d0, + ContributionCollectorState = 0x2862, ControlUpdate = 0x2667, - CooldownCheat = 0x2782, + CooldownCheat = 0x277f, CooldownEvent = 0x26ec, CorpseLocation = 0x266e, - CorpseReclaimDelay = 0x2794, - CorpseTransportQuery = 0x275a, - CreateChar = 0x2747, - CreateShipmentResponse = 0x27e6, + CorpseReclaimDelay = 0x2791, + CorpseTransportQuery = 0x2757, + CreateChar = 0x2744, + CreateShipmentResponse = 0x27e3, CriteriaDeleted = 0x2726, CriteriaUpdate = 0x2720, CrossedInebriationThreshold = 0x26f5, CustomLoadScreen = 0x25e4, DailyQuestsReset = 0x2a80, - DamageCalcLog = 0x2811, + DamageCalcLog = 0x280e, DbReply = 0x25a2, DeathReleaseLoc = 0x2710, DefenseMessage = 0x2bb6, - DeleteChar = 0x2748, - DestroyArenaUnit = 0x278b, - DestructibleBuildingDamage = 0x273b, + DeleteChar = 0x2745, + DestroyArenaUnit = 0x2788, + DestructibleBuildingDamage = 0x2738, DifferentInstanceFromParty = 0x258c, DisenchantCredit = 0x25bd, Dismount = 0x26e3, @@ -1042,45 +1052,45 @@ namespace Framework.Constants DuelOutOfBounds = 0x2675, DuelRequested = 0x2673, DuelWinner = 0x2679, - DurabilityDamageDeath = 0x2790, - Emote = 0x2812, + DurabilityDamageDeath = 0x278d, + Emote = 0x280f, EnableBarberShop = 0x26f0, EnableEncryption = 0x3049, - EnchantmentLog = 0x275b, - EncounterEnd = 0x27ca, - EncounterStart = 0x27c9, - Entitlements = 0x28c4, - EntitlementNotification = 0x28c5, + EnchantmentLog = 0x2758, + EncounterEnd = 0x27c7, + EncounterStart = 0x27c6, + Entitlements = 0x28c8, + EntitlementNotification = 0x28c9, EnumCharactersResult = 0x2584, EnvironmentalDamageLog = 0x2c21, EquipmentSetId = 0x26e5, ExpectedSpamRecords = 0x2bb1, - ExplorationExperience = 0x27ac, - FactionBonusInfo = 0x276d, + ExplorationExperience = 0x27a9, + FactionBonusInfo = 0x276a, FailedPlayerCondition = 0x25e3, FeatureSystemStatus = 0x25d2, FeatureSystemStatusGlueScreen = 0x25d3, - FeignDeathResisted = 0x278e, + FeignDeathResisted = 0x278b, FishEscaped = 0x2703, FishNotHooked = 0x2702, FlightSplineSync = 0x2df7, ForcedDeathUpdate = 0x2711, - ForceAnim = 0x279b, + ForceAnim = 0x2798, ForceObjectRelink = 0x266a, - FriendStatus = 0x27d4, + FriendStatus = 0x27d1, GameEventDebugInitialize = 0x2680, GameObjectActivateAnimKit = 0x25d7, GameObjectCustomAnim = 0x25d8, GameObjectDespawn = 0x25d9, - GameObjectMultiTransition = 0x2876, + GameObjectMultiTransition = 0x2875, GameObjectPlaySpellVisual = 0x2c4b, GameObjectPlaySpellVisualKit = 0x2c4a, - GameObjectResetState = 0x2765, - GameObjectSetState = 0x2849, - GameObjectUiAction = 0x2762, + GameObjectResetState = 0x2762, + GameObjectSetState = 0x2848, + GameObjectUiAction = 0x275f, GameSpeedSet = 0x26b0, - GameTimeSet = 0x2754, - GameTimeUpdate = 0x2753, + GameTimeSet = 0x2751, + GameTimeUpdate = 0x2750, GarrisonAddFollowerResult = 0x2902, GarrisonAddMissionResult = 0x2906, GarrisonAssignFollowerToBuildingResult = 0x2918, @@ -1099,7 +1109,7 @@ namespace Framework.Constants GarrisonFollowerChangedStatus = 0x2915, GarrisonFollowerChangedXp = 0x2912, GarrisonIsUpgradeableResult = 0x2929, - GarrisonLandingPageShipmentInfo = 0x27e9, + GarrisonLandingPageShipmentInfo = 0x27e6, GarrisonLearnBlueprintResult = 0x28f7, GarrisonLearnSpecializationResult = 0x28f5, GarrisonListFollowersCheatResult = 0x2905, @@ -1130,27 +1140,27 @@ namespace Framework.Constants GarrisonUnlearnBlueprintResult = 0x28f8, GarrisonUpgradeResult = 0x28fd, GenerateRandomCharacterNameResult = 0x2585, - GetAccountCharacterListResult = 0x27ad, + GetAccountCharacterListResult = 0x27aa, GetDisplayedTrophyListResponse = 0x2928, GetGarrisonInfoResult = 0x28f0, - GetShipmentsOfTypeResponse = 0x27e8, - GetShipmentInfoResponse = 0x27e4, - GetTrophyListResponse = 0x280d, - GmPlayerInfo = 0x2781, + GetShipmentsOfTypeResponse = 0x27e5, + GetShipmentInfoResponse = 0x27e1, + GetTrophyListResponse = 0x280a, + GmPlayerInfo = 0x277e, GmRequestPlayerInfo = 0x25ef, GmTicketCaseStatus = 0x26d2, GmTicketSystemStatus = 0x26d1, - GodMode = 0x2741, + GodMode = 0x273e, GossipComplete = 0x2a96, GossipMessage = 0x2a97, - GossipPoi = 0x27e1, + GossipPoi = 0x27de, GossipTextUpdate = 0x2a98, GroupActionThrottled = 0x259e, - GroupDecline = 0x27dc, - GroupDestroyed = 0x27de, - GroupInviteConfirmation = 0x285c, + GroupDecline = 0x27d9, + GroupDestroyed = 0x27db, + GroupInviteConfirmation = 0x285b, GroupNewLeader = 0x264d, - GroupUninvite = 0x27dd, + GroupUninvite = 0x27da, GuildAchievementDeleted = 0x29c5, GuildAchievementEarned = 0x29c4, GuildAchievementMembers = 0x29c7, @@ -1208,51 +1218,53 @@ namespace Framework.Constants HighestThreatUpdate = 0x2717, HotfixMessage = 0x25a4, HotfixResponse = 0x25a5, - IncomingSummonCompleted = 0x28aa, - IncomingSummonPending = 0x28a9, - InitializeFactions = 0x276c, + IncomingSummonCompleted = 0x28a9, + IncomingSummonPending = 0x28a8, + InitializeFactions = 0x2769, InitialSetup = 0x2581, - InitWorldStates = 0x2791, + InitWorldStates = 0x278e, InspectResult = 0x2651, - InstanceEncounterChangePriority = 0x27f9, - InstanceEncounterDisengageUnit = 0x27f8, - InstanceEncounterEnd = 0x2801, - InstanceEncounterEngageUnit = 0x27f7, - InstanceEncounterGainCombatResurrectionCharge = 0x2803, - InstanceEncounterInCombatResurrection = 0x2802, - InstanceEncounterObjectiveComplete = 0x27fc, - InstanceEncounterObjectiveStart = 0x27fb, - InstanceEncounterObjectiveUpdate = 0x2800, - InstanceEncounterPhaseShiftChanged = 0x2804, - InstanceEncounterSetAllowingRelease = 0x27ff, - InstanceEncounterSetSuppressingRelease = 0x27fe, - InstanceEncounterStart = 0x27fd, - InstanceEncounterTimerStart = 0x27fa, - InstanceGroupSizeChanged = 0x273f, + InstanceEncounterChangePriority = 0x27f6, + InstanceEncounterDisengageUnit = 0x27f5, + InstanceEncounterEnd = 0x27fe, + InstanceEncounterEngageUnit = 0x27f4, + InstanceEncounterGainCombatResurrectionCharge = 0x2800, + InstanceEncounterInCombatResurrection = 0x27ff, + InstanceEncounterObjectiveComplete = 0x27f9, + InstanceEncounterObjectiveStart = 0x27f8, + InstanceEncounterObjectiveUpdate = 0x27fd, + InstanceEncounterPhaseShiftChanged = 0x2801, + InstanceEncounterSetAllowingRelease = 0x27fc, + InstanceEncounterSetSuppressingRelease = 0x27fb, + InstanceEncounterStart = 0x27fa, + InstanceEncounterTimerStart = 0x27f7, + InstanceGroupSizeChanged = 0x273c, InstanceInfo = 0x2654, InstanceReset = 0x26b5, InstanceResetFailed = 0x26b6, - InstanceSaveCreated = 0x27c8, + InstanceSaveCreated = 0x27c5, InvalidatePageText = 0x270c, InvalidatePlayer = 0x26da, - InvalidPromotionCode = 0x279c, - InventoryChangeFailure = 0x276a, - IslandAzeriteXpGain = 0x27a9, - IslandCompleted = 0x27aa, - IslandOpenQueueNpc = 0x283e, + InvalidPromotionCode = 0x2799, + InventoryChangeFailure = 0x2767, + IslandAzeriteXpGain = 0x27a6, + IslandCompleted = 0x27a7, + IslandOpenQueueNpc = 0x283d, IsQuestCompleteResponse = 0x2a83, ItemChanged = 0x2729, - ItemCooldown = 0x2810, - ItemEnchantTimeUpdate = 0x279e, + ItemCooldown = 0x280d, + ItemEnchantTimeUpdate = 0x279b, ItemExpirePurchaseRefund = 0x25b3, + ItemInteractionOpen = 0x283c, + ItemInteractionResult = 0x28ce, ItemPurchaseRefundResult = 0x25b1, ItemPushResult = 0x263a, - ItemTimeUpdate = 0x279d, - KickReason = 0x2835, + ItemTimeUpdate = 0x279a, + KickReason = 0x2832, LearnedSpells = 0x2c4d, LearnPvpTalentsFailed = 0x25eb, LearnTalentsFailed = 0x25ea, - LevelLinkingResult = 0x28b8, + LevelLinkingResult = 0x28b7, LevelUpdate = 0x2589, LevelUpInfo = 0x2728, LfgBootPlayer = 0x2a35, @@ -1290,21 +1302,21 @@ namespace Framework.Constants LfGuildRecruits = 0x29cf, LightningStormEnd = 0x26d7, LightningStormStart = 0x26d6, - LiveRegionAccountRestoreResult = 0x27bb, - LiveRegionCharacterCopyResult = 0x27b9, - LiveRegionGetAccountCharacterListResult = 0x27ae, + LiveRegionAccountRestoreResult = 0x27b8, + LiveRegionCharacterCopyResult = 0x27b6, + LiveRegionGetAccountCharacterListResult = 0x27ab, LoadCufProfiles = 0x25cf, - LoadEquipmentSet = 0x2756, - LoadSelectedTrophyResult = 0x280e, - LoginSetTimeSpeed = 0x2755, + LoadEquipmentSet = 0x2753, + LoadSelectedTrophyResult = 0x280b, + LoginSetTimeSpeed = 0x2752, LoginVerifyWorld = 0x25ae, LogoutCancelAck = 0x26b4, LogoutComplete = 0x26b3, LogoutResponse = 0x26b2, LogXpGain = 0x2724, LootAllPassed = 0x2638, - LootLegacyRulesInEffect = 0x2877, - LootList = 0x278a, + LootLegacyRulesInEffect = 0x2876, + LootList = 0x2787, LootMoneyNotify = 0x2633, LootRelease = 0x2632, LootReleaseAll = 0x2631, @@ -1315,9 +1327,9 @@ namespace Framework.Constants LootRollWon = 0x2639, LossOfControlAuraUpdate = 0x269b, MailCommandResult = 0x265b, - MailListResult = 0x279f, - MailQueryNextTimeResult = 0x27a0, - MapObjectivesInit = 0x27a8, + MailListResult = 0x279c, + MailQueryNextTimeResult = 0x279d, + MapObjectivesInit = 0x27a5, MapObjectiveAdd = 0x2598, MapObjectiveRemove = 0x2599, MapObjEvents = 0x25da, @@ -1327,12 +1339,12 @@ namespace Framework.Constants MirrorImageComponentedData = 0x2c14, MirrorImageCreatureData = 0x2c13, MissileCancel = 0x25db, - ModifyChargeRecoverySpeed = 0x27b2, - ModifyCooldown = 0x27b0, - ModifyCooldownRecoverySpeed = 0x27b1, - ModifyPartyRange = 0x278d, + ModifyChargeRecoverySpeed = 0x27af, + ModifyCooldown = 0x27ad, + ModifyCooldownRecoverySpeed = 0x27ae, + ModifyPartyRange = 0x278a, Motd = 0x2baf, - MountEquipmentApplyResult = 0x28b6, + MountEquipmentApplyResult = 0x28b5, MountResult = 0x257b, MoveApplyMovementForce = 0x2de1, MoveDisableCollision = 0x2ddd, @@ -1428,28 +1440,28 @@ namespace Framework.Constants OfferPetitionError = 0x26e9, OnCancelExpectedRideVehicleAura = 0x2725, OnMonsterMove = 0x2da2, - OpenAlliedRaceDetailsGiver = 0x283f, - OpenContainer = 0x276b, + OpenAlliedRaceDetailsGiver = 0x283e, + OpenContainer = 0x2768, OpenLfgDungeonFinder = 0x2a31, - OpenShipmentNpcFromGossip = 0x27e3, - OpenShipmentNpcResult = 0x27e5, - OpenTransmogrifier = 0x283c, + OpenShipmentNpcFromGossip = 0x27e0, + OpenShipmentNpcResult = 0x27e2, + OpenTransmogrifier = 0x283a, OverrideLight = 0x26ef, - PageText = 0x2761, - PartyCommandResult = 0x27e0, + PageText = 0x275e, + PartyCommandResult = 0x27dd, PartyInvite = 0x25d0, - PartyKillLog = 0x27a4, - PartyMemberState = 0x27a2, - PartyMemberStateUpdate = 0x27a1, + PartyKillLog = 0x27a1, + PartyMemberState = 0x279f, + PartyMemberStateUpdate = 0x279e, PartyUpdate = 0x260d, - PauseMirrorTimer = 0x2758, - PendingRaidLock = 0x2739, + PauseMirrorTimer = 0x2755, + PendingRaidLock = 0x2736, PetitionAlreadySigned = 0x25b9, PetitionRenameGuildResponse = 0x29fa, PetitionShowList = 0x26f2, PetitionShowSignatures = 0x26f3, - PetitionSignResults = 0x2796, - PetActionFeedback = 0x2793, + PetitionSignResults = 0x2793, + PetActionFeedback = 0x2790, PetActionSound = 0x26cf, PetAdded = 0x25aa, PetBattleChatRestricted = 0x261a, @@ -1471,7 +1483,7 @@ namespace Framework.Constants PetClearSpells = 0x2c24, PetDismissSound = 0x26d0, PetGodMode = 0x26aa, - PetGuids = 0x274a, + PetGuids = 0x2747, PetLearnedSpells = 0x2c4f, PetMode = 0x258b, PetNameInvalid = 0x26f7, @@ -1485,27 +1497,27 @@ namespace Framework.Constants PlayedTime = 0x2713, PlayerBound = 0x257e, PlayerSaveGuildEmblem = 0x29f9, - PlayerSkinned = 0x278f, - PlayerTabardVendorActivate = 0x27a3, - PlayMusic = 0x27b5, - PlayObjectSound = 0x27b6, - PlayOneShotAnimKit = 0x2779, + PlayerSkinned = 0x278c, + PlayerTabardVendorActivate = 0x27a0, + PlayMusic = 0x27b2, + PlayObjectSound = 0x27b3, + PlayOneShotAnimKit = 0x2776, PlayOrphanSpellVisual = 0x2c47, PlayScene = 0x2656, - PlaySound = 0x27b4, - PlaySpeakerbotSound = 0x27b7, + PlaySound = 0x27b1, + PlaySpeakerbotSound = 0x27b4, PlaySpellVisual = 0x2c45, PlaySpellVisualKit = 0x2c49, - PlayTimeWarning = 0x2743, + PlayTimeWarning = 0x2740, Pong = 0x304e, PowerUpdate = 0x2707, - PreRessurect = 0x27b3, + PreRessurect = 0x27b0, PrintNotification = 0x25e2, - ProcResist = 0x27a5, + ProcResist = 0x27a2, PushSpellToActionBar = 0x2c51, PvpCredit = 0x271f, PvpLogData = 0x25b4, - PvpMatchStart = 0x28ad, + PvpMatchStart = 0x28ac, PvpOptionsEnabled = 0x25b7, PvpSeason = 0x25d4, QueryBattlePetNameResponse = 0x270e, @@ -1514,7 +1526,7 @@ namespace Framework.Constants QueryGameObjectResponse = 0x2705, QueryGarrisonCreatureNameResponse = 0x292b, QueryGuildInfoResponse = 0x29e5, - QueryItemTextResponse = 0x280f, + QueryItemTextResponse = 0x280c, QueryNpcTextResponse = 0x2708, QueryPageTextResponse = 0x270b, QueryPetitionResponse = 0x270f, @@ -1522,7 +1534,7 @@ namespace Framework.Constants QueryPlayerNameResponse = 0x2709, QueryQuestInfoResponse = 0x2a95, QueryTimeResponse = 0x2723, - QueryTreasurePickerResponse = 0x284e, + QueryTreasurePickerResponse = 0x284d, QuestCompletionNpcResponse = 0x2a81, QuestConfirmAccept = 0x2a8e, QuestForceRemoved = 0x2a9b, @@ -1532,7 +1544,7 @@ namespace Framework.Constants QuestGiverQuestDetails = 0x2a91, QuestGiverQuestFailed = 0x2a85, QuestGiverQuestListMessage = 0x2a99, - QuestGiverQuestTurnInFailure = 0x2859, + QuestGiverQuestTurnInFailure = 0x2858, QuestGiverRequestItems = 0x2a92, QuestGiverStatus = 0x2a9a, QuestGiverStatusMultiple = 0x2a90, @@ -1540,9 +1552,9 @@ namespace Framework.Constants QuestPoiChanged = 0x2a9f, QuestPoiQueryResponse = 0x2a9c, QuestPushResult = 0x2a8f, - QuestSessionMemberConfirm = 0x28bc, - QuestSessionMemberStartResponse = 0x28bd, - QuestSessionNotification = 0x28bb, + QuestSessionMemberConfirm = 0x28bb, + QuestSessionMemberStartResponse = 0x28bc, + QuestSessionNotification = 0x28ba, QuestSpawnTrackingUpdate = 0x2a9e, QuestUpdateAddCredit = 0x2a8b, QuestUpdateAddCreditSimple = 0x2a8c, @@ -1551,12 +1563,12 @@ namespace Framework.Constants QuestUpdateCompleteBySpell = 0x2a87, QuestUpdateFailed = 0x2a89, QuestUpdateFailedTimer = 0x2a8a, - QuickJoinConfirmRequestInvite = 0x28c6, - RafAccountInfo = 0x28b9, - RafActivity = 0x28c2, - RafInfoUpdate = 0x28ba, - RaidDifficultySet = 0x27f4, - RaidGroupOnly = 0x27f6, + QuickJoinConfirmRequestInvite = 0x28ca, + RafAccountInfo = 0x28b8, + RafActivity = 0x28c6, + RafInfoUpdate = 0x28b9, + RaidDifficultySet = 0x27f1, + RaidGroupOnly = 0x27f3, RaidInstanceMessage = 0x2bb4, RaidMarkersChanged = 0x25ba, RandomRoll = 0x2650, @@ -1564,16 +1576,16 @@ namespace Framework.Constants ReadyCheckCompleted = 0x2610, ReadyCheckResponse = 0x260f, ReadyCheckStarted = 0x260e, - ReadItemResultFailed = 0x27f0, - ReadItemResultOk = 0x27ea, - RealmLookupInformation = 0x2815, + ReadItemResultFailed = 0x27ed, + ReadItemResultOk = 0x27e7, + RealmLookupInformation = 0x2812, RealmQueryResponse = 0x26ee, ReferAFriendFailure = 0x26f4, RefreshComponent = 0x267c, RefreshSpellHistory = 0x2c2c, RemoveItemPassive = 0x25c1, RemoveLossOfControl = 0x269d, - ReplaceTrophyResponse = 0x280c, + ReplaceTrophyResponse = 0x2809, ReportPvpPlayerAfkResult = 0x26e2, RequestAddonList = 0x2662, RequestCemeteryListResponse = 0x259f, @@ -1591,17 +1603,17 @@ namespace Framework.Constants ResumeToken = 0x25bf, ResurrectClearData = 0x2580, ResurrectRequest = 0x257f, - ResyncRunes = 0x2746, + ResyncRunes = 0x2743, RoleChangedInform = 0x258e, RoleChosen = 0x2a39, RolePollInform = 0x258f, RuneRegenDebug = 0x25c9, - ScenarioBoot = 0x27f1, - ScenarioCompleted = 0x2832, + ScenarioBoot = 0x27ee, + ScenarioCompleted = 0x282f, ScenarioPois = 0x2653, ScenarioProgressUpdate = 0x264c, - ScenarioSetShouldShowCriteria = 0x2842, - ScenarioSpellUpdate = 0x2841, + ScenarioSetShouldShowCriteria = 0x2841, + ScenarioSpellUpdate = 0x2840, ScenarioState = 0x264b, SceneObjectEvent = 0x25f9, SceneObjectPetBattleFinalRound = 0x25fe, @@ -1623,44 +1635,44 @@ namespace Framework.Constants ServerTime = 0x26b1, SetupCurrency = 0x2573, SetupResearchHistory = 0x2586, - SetAiAnimKit = 0x2778, - SetAllTaskProgress = 0x27da, - SetAnimTier = 0x277c, + SetAiAnimKit = 0x2775, + SetAllTaskProgress = 0x27d7, + SetAnimTier = 0x2779, SetCurrency = 0x2574, SetDfFastLaunchResult = 0x2a2e, SetDungeonDifficulty = 0x26d3, - SetFactionAtWar = 0x2745, - SetFactionNotVisible = 0x2773, - SetFactionStanding = 0x2774, - SetFactionVisible = 0x2772, + SetFactionAtWar = 0x2742, + SetFactionNotVisible = 0x2770, + SetFactionStanding = 0x2771, + SetFactionVisible = 0x276f, SetFlatSpellModifier = 0x2c36, - SetForcedReactions = 0x2764, + SetForcedReactions = 0x2761, SetItemPurchaseData = 0x25b2, - SetLootMethodFailed = 0x281b, + SetLootMethodFailed = 0x2818, SetMaxWeeklyQuantity = 0x25b8, - SetMeleeAnimKit = 0x277b, - SetMovementAnimKit = 0x277a, + SetMeleeAnimKit = 0x2778, + SetMovementAnimKit = 0x2777, SetPctSpellModifier = 0x2c37, SetPetSpecialization = 0x2645, SetPlayerDeclinedNamesResult = 0x2712, SetPlayHoverAnim = 0x25cd, - SetProficiency = 0x277d, + SetProficiency = 0x277a, SetSpellCharges = 0x2c29, - SetTaskComplete = 0x27db, + SetTaskComplete = 0x27d8, SetTimeZoneInformation = 0x26a5, - SetVehicleRecId = 0x2738, - ShowAdventureMap = 0x283b, + SetVehicleRecId = 0x2735, + ShowAdventureMap = 0x2838, ShowBank = 0x26ae, - ShowMailbox = 0x27f2, + ShowMailbox = 0x27ef, ShowNeutralPlayerFactionSelectUi = 0x25f2, ShowTaxiNodes = 0x2700, - ShowTradeSkillResponse = 0x27bc, - SocketGems = 0x276f, - SocketGemsFailure = 0x2770, - SortBagsResult = 0x2829, + ShowTradeSkillResponse = 0x27b9, + SocketGems = 0x276c, + SocketGemsFailure = 0x276d, + SortBagsResult = 0x2826, SpecializationChanged = 0x25ee, SpecialMountAnim = 0x26ce, - SpecInvoluntarilyChanged = 0x2760, + SpecInvoluntarilyChanged = 0x275d, SpellAbsorbLog = 0x2c1f, SpellCategoryCooldown = 0x2c17, SpellChannelStart = 0x2c34, @@ -1685,24 +1697,24 @@ namespace Framework.Constants SpellPeriodicAuraLog = 0x2c1b, SpellPrepare = 0x2c38, SpellStart = 0x2c3a, - SpiritHealerConfirm = 0x275d, - StandStateUpdate = 0x2763, + SpiritHealerConfirm = 0x275a, + StandStateUpdate = 0x2760, StartElapsedTimer = 0x261c, StartElapsedTimers = 0x261e, StartLootRoll = 0x2634, - StartMirrorTimer = 0x2757, + StartMirrorTimer = 0x2754, StartTimer = 0x25bc, StopElapsedTimer = 0x261d, - StopMirrorTimer = 0x2759, - StopSpeakerbotSound = 0x27b8, + StopMirrorTimer = 0x2756, + StopSpeakerbotSound = 0x27b5, StreamingMovies = 0x25bb, SummonCancel = 0x26e1, SummonRaidMemberValidateFailed = 0x2590, - SummonRequest = 0x2768, + SummonRequest = 0x2765, SupercededSpells = 0x2c4c, SuspendComms = 0x304a, SuspendToken = 0x25be, - TalentsInvoluntarilyReset = 0x275f, + TalentsInvoluntarilyReset = 0x275c, TaxiNodeStatus = 0x26ab, TextEmote = 0x26a9, ThreatClear = 0x271a, @@ -1719,40 +1731,40 @@ namespace Framework.Constants TradeUpdated = 0x2582, TrainerBuyFailed = 0x271e, TrainerList = 0x271d, - TransferAborted = 0x2749, + TransferAborted = 0x2746, TransferPending = 0x25e6, TransmogCollectionUpdate = 0x25c7, TransmogSetCollectionUpdate = 0x25c8, - TriggerCinematic = 0x2813, + TriggerCinematic = 0x2810, TriggerMovie = 0x26fe, - TurnInPetitionResult = 0x2798, - TutorialFlags = 0x2805, - TutorialHighlightSpell = 0x2848, - TutorialUnhighlightSpell = 0x2847, + TurnInPetitionResult = 0x2795, + TutorialFlags = 0x2802, + TutorialHighlightSpell = 0x2847, + TutorialUnhighlightSpell = 0x2846, TwitterStatus = 0x2ffd, - UiTime = 0x275c, - UndeleteCharacterResponse = 0x2816, - UndeleteCooldownStatusResponse = 0x2817, + UiTime = 0x2759, + UndeleteCharacterResponse = 0x2813, + UndeleteCooldownStatusResponse = 0x2814, UnlearnedSpells = 0x2c4e, - UpdateAccountData = 0x2751, + UpdateAccountData = 0x274e, UpdateActionButtons = 0x25f7, - UpdateCelestialBody = 0x2867, - UpdateCharacterFlags = 0x280b, + UpdateCelestialBody = 0x2866, + UpdateCharacterFlags = 0x2808, UpdateExpansionLevel = 0x2666, - UpdateGameTimeState = 0x286e, + UpdateGameTimeState = 0x286d, UpdateInstanceOwnership = 0x26d8, UpdateLastInstance = 0x26b7, - UpdateObject = 0x2814, + UpdateObject = 0x2811, UpdateTalentData = 0x25ed, - UpdateTaskProgress = 0x27d9, + UpdateTaskProgress = 0x27d6, UpdateWeeklySpellUsage = 0x2c19, - UpdateWorldState = 0x2792, + UpdateWorldState = 0x278f, UserlistAdd = 0x2bb9, UserlistRemove = 0x2bba, UserlistUpdate = 0x2bbb, - UseEquipmentSetResult = 0x2799, + UseEquipmentSetResult = 0x2796, VendorInventory = 0x25cb, - VignetteUpdate = 0x27ba, + VignetteUpdate = 0x27b7, VoidItemSwapResponse = 0x25e0, VoidStorageContents = 0x25dd, VoidStorageFailed = 0x25dc, @@ -1761,31 +1773,32 @@ namespace Framework.Constants WaitQueueFinish = 0x256f, WaitQueueUpdate = 0x256e, WardenData = 0x2577, - WarfrontCompleted = 0x27ab, + WarfrontCompleted = 0x27a8, WargameRequestSuccessfullySentToOpponent = 0x25b5, Weather = 0x26d5, WeeklySpellUsage = 0x2c18, Who = 0x2bae, WhoIs = 0x26d4, - WorldQuestUpdate = 0x284f, + WorldMapInteraction = 0x2839, + WorldQuestUpdate = 0x284e, WorldServerInfo = 0x25c3, - WorldText = 0x2834, - WowTokenAuctionSold = 0x2821, - WowTokenBuyRequestConfirmation = 0x2823, - WowTokenBuyResultConfirmation = 0x2824, - WowTokenCanRedeemForBalanceResult = 0x285d, - WowTokenCanVeteranBuyResult = 0x2822, - WowTokenDistributionGlueUpdate = 0x281c, - WowTokenDistributionUpdate = 0x281d, - WowTokenMarketPriceResponse = 0x281e, - WowTokenRedeemGameTimeUpdated = 0x2825, - WowTokenRedeemRequestConfirmation = 0x2826, - WowTokenRedeemResult = 0x2827, - WowTokenSellRequestConfirmation = 0x281f, - WowTokenSellResultConfirmation = 0x2820, - WowTokenUpdateAuctionableListResponse = 0x2828, + WorldText = 0x2831, + WowTokenAuctionSold = 0x281e, + WowTokenBuyRequestConfirmation = 0x2820, + WowTokenBuyResultConfirmation = 0x2821, + WowTokenCanRedeemForBalanceResult = 0x285c, + WowTokenCanVeteranBuyResult = 0x281f, + WowTokenDistributionGlueUpdate = 0x2819, + WowTokenDistributionUpdate = 0x281a, + WowTokenMarketPriceResponse = 0x281b, + WowTokenRedeemGameTimeUpdated = 0x2822, + WowTokenRedeemRequestConfirmation = 0x2823, + WowTokenRedeemResult = 0x2824, + WowTokenSellRequestConfirmation = 0x281c, + WowTokenSellResultConfirmation = 0x281d, + WowTokenUpdateAuctionableListResponse = 0x2825, XpGainAborted = 0x25e1, - XpGainEnabled = 0x27f5, + XpGainEnabled = 0x27f2, ZoneUnderAttack = 0x2bb5, // Opcodes that are not generated automatically diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index 1c3f8ad03..06aff3399 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -658,13 +658,13 @@ namespace Game.Entities { public UpdateField SpecializationID = new UpdateField(0, 1); public UpdateField Enabled = new UpdateField(0, 2); - public UpdateFieldArray AzeriteEssenceID = new UpdateFieldArray(3, 3, 4); + public UpdateFieldArray AzeriteEssenceID = new UpdateFieldArray(4, 3, 4); - public SelectedAzeriteEssences() : base(7) { } + public SelectedAzeriteEssences() : base(8) { } public override void WriteCreate(WorldPacket data, AzeriteItem owner, Player receiver) { - for (int i = 0; i < 3; ++i) + for (int i = 0; i < 4; ++i) { data.WriteUInt32(AzeriteEssenceID[i]); } @@ -693,7 +693,7 @@ namespace Game.Entities } if (changesMask[3]) { - for (int i = 0; i < 3; ++i) + for (int i = 0; i < 4; ++i) { if (changesMask[4 + i]) { @@ -1043,22 +1043,24 @@ namespace Game.Entities public UpdateField LookAtControllerID = new UpdateField(96, 111); public UpdateField TaxiNodesID = new UpdateField(96, 112); public UpdateField GuildGUID = new UpdateField(96, 113); + public UpdateFieldSkinningOwnerGUID = new UpdateField(96, 114); public UpdateFieldArray NpcFlags = new UpdateFieldArray(2, 114, 115); - public UpdateFieldArray Power = new UpdateFieldArray(6, 117, 118); - public UpdateFieldArray MaxPower = new UpdateFieldArray(6, 117, 124); - public UpdateFieldArray PowerRegenFlatModifier = new UpdateFieldArray(6, 117, 130); - public UpdateFieldArray PowerRegenInterruptedFlatModifier = new UpdateFieldArray(6, 117, 136); - public UpdateFieldArray VirtualItems = new UpdateFieldArray(3, 142, 143); - public UpdateFieldArray AttackRoundBaseTime = new UpdateFieldArray(2, 146, 147); - public UpdateFieldArray Stats = new UpdateFieldArray(4, 149, 150); - public UpdateFieldArray StatPosBuff = new UpdateFieldArray(4, 149, 154); - public UpdateFieldArray StatNegBuff = new UpdateFieldArray(4, 149, 158); - public UpdateFieldArray Resistances = new UpdateFieldArray(7, 162, 163); - public UpdateFieldArray BonusResistanceMods = new UpdateFieldArray(7, 162, 170); - public UpdateFieldArray PowerCostModifier = new UpdateFieldArray(7, 162, 177); - public UpdateFieldArray PowerCostMultiplier = new UpdateFieldArray(7, 162, 184); - public UnitData() : base(0, TypeId.Unit, 191) { } + public UpdateFieldArrayPower = new UpdateFieldArray(6, 118, 119); + public UpdateFieldArrayMaxPower = new UpdateFieldArray(6, 118, 125); + public UpdateFieldArrayPowerRegenFlatModifier = new UpdateFieldArray(6, 118, 131); + public UpdateFieldArrayPowerRegenInterruptedFlatModifier = new UpdateFieldArray(6, 118, 137); + public UpdateFieldArrayVirtualItems = new UpdateFieldArray(3, 143, 144); + public UpdateFieldArrayAttackRoundBaseTime = new UpdateFieldArray(2, 147, 148); + public UpdateFieldArrayStats = new UpdateFieldArray(4, 150, 151); + public UpdateFieldArrayStatPosBuff = new UpdateFieldArray(4, 150, 155); + public UpdateFieldArrayStatNegBuff = new UpdateFieldArray(4, 150, 159); + public UpdateFieldArrayResistances = new UpdateFieldArray(7, 163, 164); + public UpdateFieldArrayBonusResistanceMods = new UpdateFieldArray(7, 163, 171); + public UpdateFieldArrayPowerCostModifier = new UpdateFieldArray(7, 163, 178); + public UpdateFieldArrayPowerCostMultiplier = new UpdateFieldArray(7, 163, 185); + + public UnitData() : base(0, TypeId.Unit, 192) { } public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) { @@ -1234,6 +1236,8 @@ namespace Game.Entities data.WriteInt32(PassiveSpells.Size()); data.WriteInt32(WorldEffects.Size()); data.WriteInt32(ChannelObjects.Size()); + data.WritePackedGuid(SkinningOwnerGUID); + for (int i = 0; i < PassiveSpells.Size(); ++i) PassiveSpells[i].WriteCreate(data, owner, receiver); @@ -1246,7 +1250,7 @@ namespace Game.Entities public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) { - UpdateMask allowedMaskForTarget = new UpdateMask(191, new uint[] { 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFDFFFF9u, 0x001FC003u, 0x00000000u }); + UpdateMask allowedMaskForTarget = new UpdateMask(192, new uint[] { 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFBFFFF9u, 0x003F8007u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, fieldVisibilityFlags, owner, receiver); } @@ -1254,11 +1258,11 @@ namespace Game.Entities public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner)) - allowedMaskForTarget |= new UpdateMask(191, new uint[] { 0x00001000u, 0x03C04000u, 0xFFFE1000u, 0x00200006u, 0xFFE03FFCu, 0x7FFFFFFFu }); + allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00001000u, 0x03C04000u, 0xFFFE1000u, 0x00400006u, 0xFFC07FF8u, 0xFFFFFFFFu }); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll)) - allowedMaskForTarget |= new UpdateMask(191, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x00200000u, 0x00003FFCu, 0x00000000u }); + allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x00400000u, 0x00007FF8u, 0x00000000u }); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Empath)) - allowedMaskForTarget |= new UpdateMask(191, new uint[] { 0x00000000u, 0x03C00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000003FCu }); + allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00000000u, 0x03C00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000007F8u }); } public void WriteUpdate(WorldPacket data, UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) @@ -1762,94 +1766,98 @@ namespace Game.Entities { data.WritePackedGuid(GuildGUID); } + if (changesMask[114]) + { + data.WritePackedGuid(SkinningOwnerGUID); + } } - if (changesMask[114]) + if (changesMask[115]) { for (int i = 0; i < 2; ++i) { - if (changesMask[115 + i]) + if (changesMask[116 + i]) { data.WriteUInt32(GetViewerDependentNpcFlags(NpcFlags[i], i, owner, receiver)); } } } - if (changesMask[117]) + if (changesMask[118]) { for (int i = 0; i < 6; ++i) { - if (changesMask[118 + i]) + if (changesMask[119 + i]) { data.WriteInt32(Power[i]); } - if (changesMask[124 + i]) + if (changesMask[125 + i]) { data.WriteUInt32(MaxPower[i]); } - if (changesMask[130 + i]) + if (changesMask[131 + i]) { data.WriteFloat(PowerRegenFlatModifier[i]); } - if (changesMask[136 + i]) + if (changesMask[137 + i]) { data.WriteFloat(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[142]) + if (changesMask[143]) { for (int i = 0; i < 3; ++i) { - if (changesMask[143 + i]) + if (changesMask[144 + i]) { VirtualItems[i].WriteUpdate(data, owner, receiver); } } } - if (changesMask[146]) + if (changesMask[147]) { for (int i = 0; i < 2; ++i) { - if (changesMask[147 + i]) + if (changesMask[148 + i]) { data.WriteUInt32(AttackRoundBaseTime[i]); } } } - if (changesMask[149]) + if (changesMask[150]) { for (int i = 0; i < 4; ++i) { - if (changesMask[150 + i]) + if (changesMask[151 + i]) { data.WriteInt32(Stats[i]); } - if (changesMask[154 + i]) + if (changesMask[155 + i]) { data.WriteInt32(StatPosBuff[i]); } - if (changesMask[158 + i]) + if (changesMask[159 + i]) { data.WriteInt32(StatNegBuff[i]); } } } - if (changesMask[162]) + if (changesMask[163]) { for (int i = 0; i < 7; ++i) { - if (changesMask[163 + i]) + if (changesMask[164 + i]) { data.WriteInt32(Resistances[i]); } - if (changesMask[170 + i]) + if (changesMask[171 + i]) { data.WriteInt32(BonusResistanceMods[i]); } - if (changesMask[177 + i]) + if (changesMask[178 + i]) { data.WriteInt32(PowerCostModifier[i]); } - if (changesMask[184 + i]) + if (changesMask[185 + i]) { data.WriteFloat(PowerCostMultiplier[i]); } @@ -1969,6 +1977,7 @@ namespace Game.Entities ClearChangesMask(LookAtControllerID); ClearChangesMask(TaxiNodesID); ClearChangesMask(GuildGUID); + ClearChangesMask(SkinningOwnerGUID); ClearChangesMask(NpcFlags); ClearChangesMask(Power); ClearChangesMask(MaxPower); @@ -3097,32 +3106,31 @@ namespace Game.Entities public UpdateField PvpLastWeeksRewardClaimed = new UpdateField(98, 101); public UpdateField NumBankSlots = new UpdateField(98, 102); public UpdateField> QuestSession = new UpdateField>(98, 103); - public UpdateFieldArray InvSlots = new UpdateFieldArray(195, 104, 105); - public UpdateFieldArray TrackResourceMask = new UpdateFieldArray(2, 300, 301); - public UpdateFieldArray ExploredZones = new UpdateFieldArray(192, 303, 304); - public UpdateFieldArray RestInfo = new UpdateFieldArray(2, 496, 497); - public UpdateFieldArray ModDamageDonePos = new UpdateFieldArray(7, 499, 500); - public UpdateFieldArray ModDamageDoneNeg = new UpdateFieldArray(7, 499, 507); - public UpdateFieldArray ModDamageDonePercent = new UpdateFieldArray(7, 499, 514); - public UpdateFieldArray WeaponDmgMultipliers = new UpdateFieldArray(3, 521, 522); - public UpdateFieldArray WeaponAtkSpeedMultipliers = new UpdateFieldArray(3, 521, 525); - public UpdateFieldArray BuybackPrice = new UpdateFieldArray(12, 528, 529); - public UpdateFieldArray BuybackTimestamp = new UpdateFieldArray(12, 528, 541); - public UpdateFieldArray CombatRatings = new UpdateFieldArray(32, 553, 554); - public UpdateFieldArray PvpInfo = new UpdateFieldArray(6, 586, 587); - public UpdateFieldArray NoReagentCostMask = new UpdateFieldArray(4, 593, 594); - public UpdateFieldArray ProfessionSkillLine = new UpdateFieldArray(2, 598, 599); - public UpdateFieldArray BagSlotFlags = new UpdateFieldArray(4, 601, 602); - public UpdateFieldArray BankBagSlotFlags = new UpdateFieldArray(7, 606, 607); - public UpdateFieldArray QuestCompleted = new UpdateFieldArray(875, 614, 615); + public UpdateFieldArray InvSlots = new UpdateFieldArray(199, 104, 105); + public UpdateFieldArray TrackResourceMask = new UpdateFieldArray(2, 304, 305); + public UpdateFieldArray ExploredZones = new UpdateFieldArray(192, 307, 308); + public UpdateFieldArray RestInfo = new UpdateFieldArray(2, 500, 501); + public UpdateFieldArray ModDamageDonePos = new UpdateFieldArray(7, 503, 504); + public UpdateFieldArray ModDamageDoneNeg = new UpdateFieldArray(7, 503, 511); + public UpdateFieldArray ModDamageDonePercent = new UpdateFieldArray(7, 503, 518); + public UpdateFieldArray WeaponDmgMultipliers = new UpdateFieldArray(3, 525, 526); + public UpdateFieldArray WeaponAtkSpeedMultipliers = new UpdateFieldArray(3, 525, 529); + public UpdateFieldArray BuybackPrice = new UpdateFieldArray(12, 532, 533); + public UpdateFieldArray BuybackTimestamp = new UpdateFieldArray(12, 532, 545); + public UpdateFieldArray CombatRatings = new UpdateFieldArray(32, 557, 558); + public UpdateFieldArray PvpInfo = new UpdateFieldArray(6, 590, 591); + public UpdateFieldArray NoReagentCostMask = new UpdateFieldArray(4, 597, 598); + public UpdateFieldArray ProfessionSkillLine = new UpdateFieldArray(2, 602, 603); + public UpdateFieldArray BagSlotFlags = new UpdateFieldArray(4, 605, 606); + public UpdateFieldArray BankBagSlotFlags = new UpdateFieldArray(7, 610, 611); + public UpdateFieldArray QuestCompleted = new UpdateFieldArray(875, 618, 619); - - public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1487) { } + public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1494) { } public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver) { - for (int i = 0; i < 195; ++i) + for (int i = 0; i < 199; ++i) { data.WritePackedGuid(InvSlots[i]); } @@ -3997,7 +4005,7 @@ namespace Game.Entities } if (_changesMask[104]) { - for (int i = 0; i < 195; ++i) + for (int i = 0; i < 199; ++i) { if (_changesMask[105 + i]) { @@ -4005,147 +4013,147 @@ namespace Game.Entities } } } - if (_changesMask[300]) + if (_changesMask[304]) { for (int i = 0; i < 2; ++i) { - if (_changesMask[301 + i]) + if (_changesMask[305 + i]) { data.WriteUInt32(TrackResourceMask[i]); } } } - if (_changesMask[303]) + if (_changesMask[307]) { for (int i = 0; i < 192; ++i) { - if (_changesMask[304 + i]) + if (_changesMask[308 + i]) { data.WriteUInt64(ExploredZones[i]); } } } - if (_changesMask[496]) + if (_changesMask[500]) { for (int i = 0; i < 2; ++i) { - if (_changesMask[497 + i]) + if (_changesMask[501 + i]) { RestInfo[i].WriteUpdate(data, owner, receiver); } } } - if (_changesMask[499]) + if (_changesMask[503]) { for (int i = 0; i < 7; ++i) { - if (_changesMask[500 + i]) + if (_changesMask[504 + i]) { data.WriteInt32(ModDamageDonePos[i]); } - if (_changesMask[507 + i]) + if (_changesMask[511 + i]) { data.WriteInt32(ModDamageDoneNeg[i]); } - if (_changesMask[514 + i]) + if (_changesMask[518 + i]) { data.WriteFloat(ModDamageDonePercent[i]); } } } - if (_changesMask[521]) + if (_changesMask[525]) { for (int i = 0; i < 3; ++i) { - if (_changesMask[522 + i]) + if (_changesMask[526 + i]) { data.WriteFloat(WeaponDmgMultipliers[i]); } - if (_changesMask[525 + i]) + if (_changesMask[529 + i]) { data.WriteFloat(WeaponAtkSpeedMultipliers[i]); } } } - if (_changesMask[528]) + if (_changesMask[532]) { for (int i = 0; i < 12; ++i) { - if (_changesMask[529 + i]) + if (_changesMask[533 + i]) { data.WriteUInt32(BuybackPrice[i]); } - if (_changesMask[541 + i]) + if (_changesMask[545 + i]) { data.WriteUInt32(BuybackTimestamp[i]); } } } - if (_changesMask[553]) + if (_changesMask[557]) { for (int i = 0; i < 32; ++i) { - if (_changesMask[554 + i]) + if (_changesMask[558 + i]) { data.WriteUInt32(CombatRatings[i]); } } } - if (_changesMask[593]) + if (_changesMask[597]) { for (int i = 0; i < 4; ++i) { - if (_changesMask[594 + i]) + if (_changesMask[598 + i]) { data.WriteUInt32(NoReagentCostMask[i]); } } } - if (_changesMask[598]) + if (_changesMask[602]) { for (int i = 0; i < 2; ++i) { - if (_changesMask[599 + i]) + if (_changesMask[603 + i]) { data.WriteUInt32(ProfessionSkillLine[i]); } } } - if (_changesMask[601]) + if (_changesMask[605]) { for (int i = 0; i < 4; ++i) { - if (_changesMask[602 + i]) + if (_changesMask[606 + i]) { data.WriteUInt32(BagSlotFlags[i]); } } } - if (_changesMask[606]) + if (_changesMask[610]) { for (int i = 0; i < 7; ++i) { - if (_changesMask[607 + i]) + if (_changesMask[611 + i]) { data.WriteUInt32(BankBagSlotFlags[i]); } } } - if (_changesMask[614]) + if (_changesMask[618]) { for (int i = 0; i < 875; ++i) { - if (_changesMask[615 + i]) + if (_changesMask[619 + i]) { data.WriteUInt64(QuestCompleted[i]); } } } - if (_changesMask[586]) + if (_changesMask[590]) { for (int i = 0; i < 6; ++i) { - if (_changesMask[587 + i]) + if (_changesMask[591 + i]) { PvpInfo[i].WriteUpdate(data, owner, receiver); } diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 493c35ccd..1abf93bfa 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -437,35 +437,73 @@ namespace Game oldMSTime = Time.GetMSTime(); _classExpansionRequirementStorage.Clear(); - // 0 1 - result = DB.World.Query("SELECT classID, expansion FROM `class_expansion_requirement`"); + // 0 1 2 3 + result = DB.World.Query("SELECT ClassID, RaceID, ActiveExpansionLevel, AccountExpansionLevel FROM `class_expansion_requirement`"); if (!result.IsEmpty()) { + Dictionary>> temp = new Dictionary>>(); uint count = 0; do { byte classID = result.Read(0); - byte expansion = result.Read(1); + byte raceID = result.Read(1); + byte activeExpansionLevel = result.Read(2); + byte accountExpansionLevel = result.Read(3); ChrClassesRecord classEntry = CliDB.ChrClassesStorage.LookupByKey(classID); if (classEntry == null) { - Log.outError(LogFilter.Sql, "Class {0} defined in `class_expansion_requirement` does not exists, skipped.", classID); + Log.outError(LogFilter.Sql, $"Class {classID} (race {raceID}) defined in `class_expansion_requirement` does not exists, skipped."); continue; } - if (expansion >= (int)Expansion.Max) + ChrRacesRecord raceEntry = CliDB.ChrRacesStorage.LookupByKey(raceID); + if (raceEntry == null) { - Log.outError(LogFilter.Sql, "Class {0} defined in `class_expansion_requirement` has incorrect expansion {1}, skipped.", classID, expansion); + Log.outError(LogFilter.Sql, $"Race {raceID} (class {classID}) defined in `class_expansion_requirement` does not exists, skipped."); continue; } - _classExpansionRequirementStorage[classID] = expansion; + if (activeExpansionLevel >= (int)Expansion.Max) + { + Log.outError(LogFilter.Sql, $"Class {classID} Race {raceID} defined in `class_expansion_requirement` has incorrect ActiveExpansionLevel {activeExpansionLevel}, skipped."); + continue; + } + + if (accountExpansionLevel >= (int)Expansion.MaxAccountExpansions) + { + Log.outError(LogFilter.Sql, $"Class {classID} Race {raceID} defined in `class_expansion_requirement` has incorrect AccountExpansionLevel {accountExpansionLevel}, skipped."); + continue; + } + + if (!temp.ContainsKey(raceID)) + temp[raceID] = new Dictionary>(); + + temp[raceID][classID] = Tuple.Create(activeExpansionLevel, accountExpansionLevel); ++count; } while (result.NextRow()); - Log.outInfo(LogFilter.ServerLoading, "Loaded {0} class expansion requirements in {1} ms.", count, Time.GetMSTimeDiffToNow(oldMSTime)); + + foreach (var race in temp) + { + RaceClassAvailability raceClassAvailability = new RaceClassAvailability(); + raceClassAvailability.RaceID = race.Key; + + foreach (var class_ in race.Value) + { + ClassAvailability classAvailability = new ClassAvailability(); + classAvailability.ClassID = class_.Key; + classAvailability.ActiveExpansionLevel = class_.Value.Item1; + classAvailability.AccountExpansionLevel = class_.Value.Item2; + + raceClassAvailability.Classes.Add(classAvailability); + } + + _classExpansionRequirementStorage.Add(raceClassAvailability); + } + + Log.outInfo(LogFilter.ServerLoading, $"Loaded {count} class expansion requirements in {Time.GetMSTimeDiffToNow(oldMSTime)} ms."); } else Log.outInfo(LogFilter.ServerLoading, "Loaded 0 class expansion requirements. DB table `class_expansion_requirement` is empty."); @@ -533,12 +571,26 @@ namespace Game } public Dictionary GetRaceUnlockRequirements() { return _raceUnlockRequirementStorage; } public RaceUnlockRequirement GetRaceUnlockRequirement(Race race) { return _raceUnlockRequirementStorage.LookupByKey((byte)race); } - public Dictionary GetClassExpansionRequirements() { return _classExpansionRequirementStorage; } - public Expansion GetClassExpansionRequirement(Class class_) + public List GetClassExpansionRequirements() { return _classExpansionRequirementStorage; } + public ClassAvailability GetClassExpansionRequirement(Race raceId, Class classId) { - if (_classExpansionRequirementStorage.ContainsKey((byte)class_)) - return (Expansion)_classExpansionRequirementStorage[(byte)class_]; - return Expansion.Classic; + var raceClassAvailability = _classExpansionRequirementStorage.Find(raceClass => + { + return raceClass.RaceID == (byte)raceId; + }); + + if (raceClassAvailability == null) + return null; + + var classAvailability = raceClassAvailability.Classes.Find(availability => + { + return availability.ClassID == (byte)classId; + }); + + if (classAvailability == null) + return null; + + return classAvailability; } public PlayerChoice GetPlayerChoice(int choiceId) { @@ -9694,7 +9746,7 @@ namespace Game Dictionary _sceneTemplateStorage = new Dictionary(); Dictionary _raceUnlockRequirementStorage = new Dictionary(); - Dictionary _classExpansionRequirementStorage = new Dictionary(); + List _classExpansionRequirementStorage = new List(); Dictionary _realmNameStorage = new Dictionary(); //Quest @@ -10743,6 +10795,19 @@ namespace Game public bool KeepOpenAfterChoice; } + public class ClassAvailability + { + public byte ClassID; + public byte ActiveExpansionLevel; + public byte AccountExpansionLevel; + } + + public class RaceClassAvailability + { + public byte RaceID; + public List Classes = new List(); + } + public class RaceUnlockRequirement { public byte Expansion; diff --git a/Source/Game/Handlers/AuctionHandler.cs b/Source/Game/Handlers/AuctionHandler.cs index b87828bf1..d8525ba84 100644 --- a/Source/Game/Handlers/AuctionHandler.cs +++ b/Source/Game/Handlers/AuctionHandler.cs @@ -61,7 +61,7 @@ namespace Game AuctionHelloResponse packet = new AuctionHelloResponse(); packet.Guid = guid; - packet.OpenForBusiness = true; // 3.3.3: 1 - AH enabled, 0 - AH disabled + packet.OpenForBusiness = false; // 3.3.3: 1 - AH enabled, 0 - AH disabled SendPacket(packet); } @@ -590,7 +590,7 @@ namespace Game SendPacket(result); } - [WorldPacketHandler(ClientOpcodes.AuctionListItems)] + //[WorldPacketHandler(ClientOpcodes.AuctionListItems)] void HandleAuctionListItems(AuctionListItems packet) { Creature creature = GetPlayer().GetNPCIfCanInteractWith(packet.Auctioneer, NPCFlags.Auctioneer, NPCFlags2.None); @@ -636,7 +636,7 @@ namespace Game SendPacket(result); } - [WorldPacketHandler(ClientOpcodes.AuctionListPendingSales)] + //[WorldPacketHandler(ClientOpcodes.AuctionListPendingSales)] void HandleAuctionListPendingSales(AuctionListPendingSales packet) { AuctionListPendingSalesResult result = new AuctionListPendingSalesResult(); diff --git a/Source/Game/Handlers/AuthenticationHandler.cs b/Source/Game/Handlers/AuthenticationHandler.cs index b7645c46c..1d715e775 100644 --- a/Source/Game/Handlers/AuthenticationHandler.cs +++ b/Source/Game/Handlers/AuthenticationHandler.cs @@ -32,10 +32,10 @@ namespace Game response.SuccessInfo.HasValue = true; response.SuccessInfo.Value = new AuthResponse.AuthSuccessInfo(); - response.SuccessInfo.Value.AccountExpansionLevel = (byte)GetAccountExpansion(); response.SuccessInfo.Value.ActiveExpansionLevel = (byte)GetExpansion(); + response.SuccessInfo.Value.AccountExpansionLevel = (byte)GetAccountExpansion(); response.SuccessInfo.Value.VirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); - response.SuccessInfo.Value.Time = (uint)Time.UnixTime; + response.SuccessInfo.Value.Time = (uint)GameTime.GetGameTime(); var realm = Global.WorldMgr.GetRealm(); diff --git a/Source/Game/Handlers/CharacterHandler.cs b/Source/Game/Handlers/CharacterHandler.cs index 9f920b1d7..c45bf8ece 100644 --- a/Source/Game/Handlers/CharacterHandler.cs +++ b/Source/Game/Handlers/CharacterHandler.cs @@ -246,10 +246,17 @@ namespace Game //} // prevent character creating Expansion class without Expansion account - var classExpansionRequirement = Global.ObjectMgr.GetClassExpansionRequirement(charCreate.CreateInfo.ClassId); - if (classExpansionRequirement > GetAccountExpansion()) + ClassAvailability classExpansionRequirement = Global.ObjectMgr.GetClassExpansionRequirement(charCreate.CreateInfo.RaceId, charCreate.CreateInfo.ClassId); + if (classExpansionRequirement == null) { - Log.outError(LogFilter.Network, $"Expansion {GetAccountExpansion()} account:[{GetAccountId()}] tried to Create character with expansion {classExpansionRequirement} class ({charCreate.CreateInfo.ClassId})"); + Log.outError(LogFilter.Player, $"Expansion {GetAccountExpansion()} account:[{GetAccountId()}] tried to Create character for race/class combination that is missing requirements in db ({charCreate.CreateInfo.RaceId}/{charCreate.CreateInfo.ClassId})"); + SendCharCreate(ResponseCodes.CharCreateExpansionClass); + return; + } + + if (classExpansionRequirement.ActiveExpansionLevel > (int)GetExpansion() || classExpansionRequirement.AccountExpansionLevel > (int)GetAccountExpansion()) + { + Log.outError(LogFilter.Player, $"Expansion {GetAccountExpansion()} account:[{GetAccountId()}] tried to Create character with expansion {classExpansionRequirement.AccountExpansionLevel} race/class ({charCreate.CreateInfo.RaceId}/{charCreate.CreateInfo.ClassId})"); SendCharCreate(ResponseCodes.CharCreateExpansionClass); return; } diff --git a/Source/Game/Handlers/QueryHandler.cs b/Source/Game/Handlers/QueryHandler.cs index 4c989dda5..c50e4838e 100644 --- a/Source/Game/Handlers/QueryHandler.cs +++ b/Source/Game/Handlers/QueryHandler.cs @@ -94,6 +94,7 @@ namespace Game QueryGameObjectResponse response = new QueryGameObjectResponse(); response.GameObjectID = packet.GameObjectID; + response.Guid = packet.Guid; SendPacket(response); } } diff --git a/Source/Game/Network/Packets/AuctionHousePackets.cs b/Source/Game/Network/Packets/AuctionHousePackets.cs index e5110ca0f..679770d39 100644 --- a/Source/Game/Network/Packets/AuctionHousePackets.cs +++ b/Source/Game/Network/Packets/AuctionHousePackets.cs @@ -354,7 +354,7 @@ namespace Game.Network.Packets class AuctionListPendingSalesResult : ServerPacket { - public AuctionListPendingSalesResult() : base(ServerOpcodes.AuctionListPendingSalesResult) { } + public AuctionListPendingSalesResult() : base(ServerOpcodes.Unknown) { } public override void Write() { diff --git a/Source/Game/Network/Packets/AuthenticationPackets.cs b/Source/Game/Network/Packets/AuthenticationPackets.cs index d0c1d6a53..455d8a557 100644 --- a/Source/Game/Network/Packets/AuthenticationPackets.cs +++ b/Source/Game/Network/Packets/AuthenticationPackets.cs @@ -132,10 +132,17 @@ namespace Game.Network.Packets _worldPacket.WriteUInt32(SuccessInfo.Value.CurrencyID); _worldPacket.WriteUInt32(SuccessInfo.Value.Time); - foreach (var klass in SuccessInfo.Value.AvailableClasses) + foreach (var raceClassAvailability in SuccessInfo.Value.AvailableClasses) { - _worldPacket.WriteUInt8(klass.Key); // the current class - _worldPacket.WriteUInt8(klass.Value); // the required Expansion + _worldPacket.WriteUInt8(raceClassAvailability.RaceID); + _worldPacket.WriteInt32(raceClassAvailability.Classes.Count); + + foreach (var classAvailability in raceClassAvailability.Classes) + { + _worldPacket.WriteUInt8(classAvailability.ClassID); + _worldPacket.WriteUInt8(classAvailability.ActiveExpansionLevel); + _worldPacket.WriteUInt8(classAvailability.AccountExpansionLevel); + } } _worldPacket.WriteBit(SuccessInfo.Value.IsExpansionTrial); @@ -197,8 +204,8 @@ namespace Game.Network.Packets public class AuthSuccessInfo { - public byte AccountExpansionLevel; // the current expansion of this account, the possible values are in @ref Expansions public byte ActiveExpansionLevel; // the current server expansion, the possible values are in @ref Expansions + public byte AccountExpansionLevel; // the current expansion of this account, the possible values are in @ref Expansions public uint TimeRested; // affects the return value of the GetBillingTimeRested() client API call, it is the number of seconds you have left until the experience points and loot you receive from creatures and quests is reduced. It is only used in the Asia region in retail, it's not implemented in TC and will probably never be. public uint VirtualRealmAddress; // a special identifier made from the Index, BattleGroup and Region. @todo implement @@ -211,7 +218,7 @@ namespace Game.Network.Packets public List VirtualRealms = new List(); // list of realms connected to this one (inclusive) @todo implement public List Templates = new List(); // list of pre-made character templates. @todo implement - public Dictionary AvailableClasses; // the minimum AccountExpansion required to select the classes + public List AvailableClasses; // the minimum AccountExpansion required to select the classes public bool IsExpansionTrial; public bool ForceCharacterTemplate; // forces the client to always use a character template when creating a new character. @see Templates. @todo implement diff --git a/Source/Game/Network/Packets/CharacterPackets.cs b/Source/Game/Network/Packets/CharacterPackets.cs index 008072f34..b364ce49a 100644 --- a/Source/Game/Network/Packets/CharacterPackets.cs +++ b/Source/Game/Network/Packets/CharacterPackets.cs @@ -219,12 +219,21 @@ namespace Game.Network.Packets data.WriteUInt32(Unknown703); data.WriteUInt32(LastLoginVersion); data.WriteUInt32(Flags4); + data.WriteInt32(Unknown830.Count); data.WriteBits(Name.GetByteCount(), 6); data.WriteBit(FirstLogin); data.WriteBit(BoostInProgress); data.WriteBits(unkWod61x, 5); + + foreach (string str in Unknown830) + data.WriteBits(str.GetByteCount() + 1, 6); + data.FlushBits(); + foreach (string str in Unknown830) + if (!str.IsEmpty()) + data.WriteCString(str); + data.WriteString(Name); } @@ -262,6 +271,8 @@ namespace Game.Network.Packets public bool BoostInProgress; // @todo public uint[] ProfessionIds = new uint[2]; // @todo public VisualItemInfo[] VisualItems = new VisualItemInfo[InventorySlots.BagEnd]; + public List Unknown830 = new List(); // Something with character names, same length limit as name, + // client accepts unlimited number of these in packet but only uses first 3 public struct VisualItemInfo { diff --git a/Source/Game/Network/Packets/GarrisonPackets.cs b/Source/Game/Network/Packets/GarrisonPackets.cs index a4d80f65c..bca79a124 100644 --- a/Source/Game/Network/Packets/GarrisonPackets.cs +++ b/Source/Game/Network/Packets/GarrisonPackets.cs @@ -460,11 +460,13 @@ namespace Game.Network.Packets public void Write(WorldPacket data) { data.WriteInt32(GarrTalentID); + data.WriteInt32(Rank); data.WriteUInt32((uint)ResearchStartTime); data.WriteInt32(Flags); } public int GarrTalentID; + public int Rank; public long ResearchStartTime; public int Flags; } @@ -496,18 +498,18 @@ namespace Game.Network.Packets mission.Write(data); foreach (List missionReward in MissionRewards) - { data.WriteInt32(missionReward.Count); + + foreach (List missionReward in MissionRewards) foreach (GarrisonMissionReward missionRewardItem in missionReward) missionRewardItem.Write(data); - } foreach (List missionReward in MissionOvermaxRewards) - { data.WriteInt32(missionReward.Count); + + foreach (List missionReward in MissionOvermaxRewards) foreach (GarrisonMissionReward missionRewardItem in missionReward) missionRewardItem.Write(data); - } foreach (GarrisonMissionBonusAbility areaBonus in MissionAreaBonuses) areaBonus.Write(data); diff --git a/Source/Game/Network/Packets/QueryPackets.cs b/Source/Game/Network/Packets/QueryPackets.cs index b25d3b79e..9c549998b 100644 --- a/Source/Game/Network/Packets/QueryPackets.cs +++ b/Source/Game/Network/Packets/QueryPackets.cs @@ -274,6 +274,7 @@ namespace Game.Network.Packets public override void Write() { _worldPacket.WriteUInt32(GameObjectID); + _worldPacket.WritePackedGuid(Guid); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -307,6 +308,7 @@ namespace Game.Network.Packets } public uint GameObjectID; + public ObjectGuid Guid; public bool Allow; public GameObjectStats Stats; } diff --git a/Source/Game/Network/Packets/ScenePackets.cs b/Source/Game/Network/Packets/ScenePackets.cs index 204be8918..ab59971b8 100644 --- a/Source/Game/Network/Packets/ScenePackets.cs +++ b/Source/Game/Network/Packets/ScenePackets.cs @@ -32,6 +32,8 @@ namespace Game.Network.Packets _worldPacket.WriteUInt32(SceneScriptPackageID); _worldPacket.WritePackedGuid(TransportGUID); _worldPacket.WriteXYZO(Location); + _worldPacket.WriteBit(PerformTactCallbacks); + _worldPacket.FlushBits(); } public uint SceneID; @@ -40,6 +42,7 @@ namespace Game.Network.Packets public uint SceneScriptPackageID; public ObjectGuid TransportGUID; public Position Location; + public bool PerformTactCallbacks; } class CancelScene : ServerPacket diff --git a/Source/Game/Network/Packets/SystemPackets.cs b/Source/Game/Network/Packets/SystemPackets.cs index 4ffd786b1..06a5b0b92 100644 --- a/Source/Game/Network/Packets/SystemPackets.cs +++ b/Source/Game/Network/Packets/SystemPackets.cs @@ -77,7 +77,6 @@ namespace Game.Network.Packets _worldPacket.WriteBit(WillKickFromWorld); _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.WriteBit(CompetitiveModeEnabled); - _worldPacket.WriteBit(RaceClassExpansionLevels.HasValue); _worldPacket.WriteBit(TokenBalanceEnabled); _worldPacket.WriteBit(WarModeFeatureEnabled); _worldPacket.WriteBit(ClubsEnabled); @@ -124,13 +123,6 @@ namespace Game.Network.Packets _worldPacket.WriteInt32(SessionAlert.Value.DisplayTime); } - if (RaceClassExpansionLevels.HasValue) - { - _worldPacket.WriteInt32(RaceClassExpansionLevels.Value.Count); - foreach (var level in RaceClassExpansionLevels.Value) - _worldPacket.WriteUInt8(level); - } - _worldPacket.WriteBit(VoiceChatManagerSettings.IsSquelched); _worldPacket.WritePackedGuid(VoiceChatManagerSettings.BnetAccountGuid); _worldPacket.WritePackedGuid(VoiceChatManagerSettings.GuildGuid); @@ -192,7 +184,6 @@ namespace Game.Network.Packets public bool IsMuted; public bool ClubFinderEnabled; - public Optional> RaceClassExpansionLevels; public SocialQueueConfig QuickJoinConfig; public VoiceChatProxySettings VoiceChatManagerSettings; public RafSystemFeatureInfo RAFSystem; diff --git a/sql/updates/characters/master/2020_02_17_00_characters.sql b/sql/updates/characters/master/2020_02_17_00_characters.sql new file mode 100644 index 000000000..ed834a9dd --- /dev/null +++ b/sql/updates/characters/master/2020_02_17_00_characters.sql @@ -0,0 +1,7 @@ +UPDATE `character_inventory` SET `slot`=`slot`+4 WHERE `slot`>=47 AND `bag`=0; + +ALTER TABLE `item_instance_azerite` + ADD `selectedAzeriteEssences1azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences1azeriteEssenceId3`, + ADD `selectedAzeriteEssences2azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences2azeriteEssenceId3`, + ADD `selectedAzeriteEssences3azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences3azeriteEssenceId3`, + ADD `selectedAzeriteEssences4azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences4azeriteEssenceId3`; diff --git a/sql/updates/world/master/2020_02_17_00_world.sql b/sql/updates/world/master/2020_02_17_00_world.sql new file mode 100644 index 000000000..084014564 --- /dev/null +++ b/sql/updates/world/master/2020_02_17_00_world.sql @@ -0,0 +1,223 @@ +DROP TABLE IF EXISTS `class_expansion_requirement`; +CREATE TABLE `class_expansion_requirement` ( + `ClassID` tinyint(3) unsigned NOT NULL, + `RaceID` tinyint(3) unsigned NOT NULL, + `ActiveExpansionLevel` tinyint(3) unsigned DEFAULT '0', + `AccountExpansionLevel` tinyint(3) unsigned DEFAULT '0', + PRIMARY KEY (`ClassID`,`RaceID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Dumping data for table `class_expansion_requirement` +-- +INSERT INTO `class_expansion_requirement` VALUES +(1,1,0,0), +(1,2,0,0), +(1,3,0,0), +(1,4,0,0), +(1,5,0,0), +(1,6,0,0), +(1,7,0,0), +(1,8,0,0), +(1,9,0,0), +(1,10,0,0), +(1,11,0,0), +(1,22,0,0), +(1,24,0,0), +(1,25,0,0), +(1,26,0,0), +(1,27,0,0), +(1,28,0,0), +(1,29,0,0), +(1,30,0,0), +(1,31,0,0), +(1,32,0,0), +(1,34,0,0), +(1,35,0,0), +(1,36,0,0), +(1,37,0,0), +(2,1,0,0), +(2,3,0,0), +(2,6,0,0), +(2,10,0,0), +(2,11,0,0), +(2,30,0,0), +(2,31,0,0), +(2,34,0,0), +(3,1,0,0), +(3,2,0,0), +(3,3,0,0), +(3,4,0,0), +(3,5,0,0), +(3,6,0,0), +(3,7,0,0), +(3,8,0,0), +(3,9,0,0), +(3,10,0,0), +(3,11,0,0), +(3,22,0,0), +(3,24,0,0), +(3,25,0,0), +(3,26,0,0), +(3,27,0,0), +(3,28,0,0), +(3,29,0,0), +(3,30,0,0), +(3,31,0,0), +(3,32,0,0), +(3,34,0,0), +(3,35,0,0), +(3,36,0,0), +(3,37,0,0), +(4,1,0,0), +(4,2,0,0), +(4,3,0,0), +(4,4,0,0), +(4,5,0,0), +(4,7,0,0), +(4,8,0,0), +(4,9,0,0), +(4,10,0,0), +(4,22,0,0), +(4,24,0,0), +(4,25,0,0), +(4,26,0,0), +(4,27,0,0), +(4,29,0,0), +(4,31,0,0), +(4,32,0,0), +(4,34,0,0), +(4,35,0,0), +(4,36,0,0), +(4,37,0,0), +(5,1,0,0), +(5,3,0,0), +(5,4,0,0), +(5,5,0,0), +(5,6,0,0), +(5,7,0,0), +(5,8,0,0), +(5,9,0,0), +(5,10,0,0), +(5,11,0,0), +(5,22,0,0), +(5,24,0,0), +(5,25,0,0), +(5,26,0,0), +(5,27,0,0), +(5,29,0,0), +(5,30,0,0), +(5,31,0,0), +(5,32,0,0), +(5,34,0,0), +(5,35,0,0), +(5,36,0,0), +(5,37,0,0), +(6,1,2,2), +(6,2,2,2), +(6,3,2,2), +(6,4,2,2), +(6,5,2,2), +(6,6,2,2), +(6,7,2,2), +(6,8,2,2), +(6,9,2,2), +(6,10,2,2), +(6,11,2,2), +(6,22,2,2), +(6,24,2,8), +(6,25,2,8), +(6,26,2,8), +(6,27,2,8), +(6,28,2,8), +(6,29,2,8), +(6,30,2,8), +(6,31,2,8), +(6,32,2,8), +(6,34,2,8), +(6,35,2,8), +(6,36,2,8), +(6,37,2,8), +(7,2,0,0), +(7,3,0,0), +(7,6,0,0), +(7,8,0,0), +(7,9,0,0), +(7,11,0,0), +(7,24,0,0), +(7,25,0,0), +(7,26,0,0), +(7,28,0,0), +(7,31,0,0), +(7,32,0,0), +(7,34,0,0), +(7,35,0,0), +(7,36,0,0), +(8,1,0,0), +(8,2,0,0), +(8,3,0,0), +(8,4,0,0), +(8,5,0,0), +(8,7,0,0), +(8,8,0,0), +(8,9,0,0), +(8,10,0,0), +(8,11,0,0), +(8,22,0,0), +(8,24,0,0), +(8,25,0,0), +(8,26,0,0), +(8,27,0,0), +(8,29,0,0), +(8,30,0,0), +(8,31,0,0), +(8,32,0,0), +(8,34,0,0), +(8,35,0,0), +(8,36,0,0), +(8,37,0,0), +(9,1,0,0), +(9,2,0,0), +(9,3,0,0), +(9,5,0,0), +(9,7,0,0), +(9,8,0,0), +(9,9,0,0), +(9,10,0,0), +(9,22,0,0), +(9,27,0,0), +(9,29,0,0), +(9,34,0,0), +(9,35,0,0), +(9,37,0,0), +(10,1,4,4), +(10,2,4,4), +(10,3,4,4), +(10,4,4,4), +(10,5,4,4), +(10,6,4,4), +(10,7,4,4), +(10,8,4,4), +(10,10,4,4), +(10,11,4,4), +(10,24,4,4), +(10,25,4,4), +(10,26,4,4), +(10,27,4,4), +(10,28,4,4), +(10,29,4,4), +(10,31,4,4), +(10,32,4,4), +(10,34,4,4), +(10,35,4,4), +(10,36,4,4), +(10,37,4,4), +(11,4,0,0), +(11,6,0,0), +(11,8,0,0), +(11,22,0,0), +(11,28,0,0), +(11,31,0,0), +(11,32,0,0), +(12,4,6,6), +(12,10,6,6);