From 491ec3333ca6a098504a210225bb7abd6a196618 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 8 Aug 2021 13:10:49 -0400 Subject: [PATCH] Core/PacketIO: 9.1.0 opcodes and packet structures Port From (https://github.com/TrinityCore/TrinityCore/commit/cd5357dc185f95c6ef78089c5ab8bd2b885dd89f) --- .../Framework/Constants/AchievementConst.cs | 5 + Source/Framework/Constants/Network/Opcodes.cs | 2085 ++++++++--------- .../Database/Databases/WorldDatabase.cs | 2 +- Source/Game/Achievements/CriteriaHandler.cs | 61 + Source/Game/AuctionHouse/AuctionManager.cs | 4 + Source/Game/Chat/Channels/Channel.cs | 5 +- Source/Game/Chat/Channels/ChannelAppenders.cs | 8 +- Source/Game/Chat/Channels/ChannelManager.cs | 9 + Source/Game/Entities/Creature/Creature.cs | 16 +- Source/Game/Entities/Creature/CreatureData.cs | 4 +- Source/Game/Entities/Creature/Gossip.cs | 4 +- .../Entities/Object/Update/UpdateFields.cs | 358 +-- Source/Game/Entities/Object/WorldObject.cs | 5 +- Source/Game/Entities/Player/Player.Fields.cs | 6 +- Source/Game/Globals/ObjectManager.cs | 82 +- Source/Game/Handlers/CharacterHandler.cs | 4 + Source/Game/Handlers/ChatHandler.cs | 13 +- .../Networking/Packets/AuctionHousePackets.cs | 5 + .../Networking/Packets/BattleGroundPackets.cs | 2 + .../Networking/Packets/BattlePetPackets.cs | 2 - Source/Game/Networking/Packets/ChatPackets.cs | 19 +- .../Networking/Packets/CombatLogPackets.cs | 4 +- .../Networking/Packets/EquipmentPackets.cs | 12 +- .../Networking/Packets/GarrisonPackets.cs | 17 + .../Game/Networking/Packets/GuildPackets.cs | 10 + .../Game/Networking/Packets/InspectPackets.cs | 2 + Source/Game/Networking/Packets/MailPackets.cs | 2 - .../Networking/Packets/MovementPackets.cs | 4 + .../Packets/MythicPlusPacketsCommon.cs | 179 ++ Source/Game/Networking/Packets/NPCPackets.cs | 5 +- .../Game/Networking/Packets/PartyPackets.cs | 3 + .../Networking/Packets/PetitionPackets.cs | 2 + .../Game/Networking/Packets/QueryPackets.cs | 2 + .../Game/Networking/Packets/QuestPackets.cs | 10 + .../Game/Networking/Packets/SpellPackets.cs | 21 +- .../Game/Networking/Packets/SystemPackets.cs | 13 + .../Game/Networking/Packets/TicketPackets.cs | 21 + Source/Game/Quest/Quest.cs | 55 +- Source/Game/Server/WorldSession.cs | 1 - 39 files changed, 1720 insertions(+), 1342 deletions(-) create mode 100644 Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs diff --git a/Source/Framework/Constants/AchievementConst.cs b/Source/Framework/Constants/AchievementConst.cs index 5f1d04c0b..440c9f448 100644 --- a/Source/Framework/Constants/AchievementConst.cs +++ b/Source/Framework/Constants/AchievementConst.cs @@ -416,6 +416,11 @@ namespace Framework.Constants RapidRenownCatchupActive = 320, /*NYI*/ // Rapid Renown Catchup Active PlayerMythicPlusRatingEqualOrGreaterThan = 321, /*NYI*/ // Player has Mythic+ Rating of at least "{#DungeonScore}" PlayerMythicPlusRunCountInCurrentExpansionEqualOrGreaterThan = 322, /*NYI*/ // Player has completed at least "{#MythicKeystoneRuns}" Mythic+ runs in current expansion + PlayerHasCustomizationChoice = 323, // (Mainline) Player has Customization Choice "{ChrCustomizationChoice}" + PlayerBestWeeklyWinPvpTier = 324, // (Mainline) Player has best weekly win in PVP tier {PvpTier} + PlayerBestWeeklyWinPvpTierInBracketEqualOrGreaterThan = 325, // (Mainline) Player has best weekly win at or above "{@PVP_TIER_ENUM}" for "{@PVP_BRACKET}" + PlayerHasVanillaCollectorsEdition = 326, // Player has Vanilla Collector's Edition + PlayerHasItemWithKeystoneLevelModifierEqualOrGreaterThan = 327, } public enum CriteriaFailEvent : byte diff --git a/Source/Framework/Constants/Network/Opcodes.cs b/Source/Framework/Constants/Network/Opcodes.cs index 3c277e330..7bd222930 100644 --- a/Source/Framework/Constants/Network/Opcodes.cs +++ b/Source/Framework/Constants/Network/Opcodes.cs @@ -19,31 +19,31 @@ namespace Framework.Constants { public enum ClientOpcodes : uint { - AbandonNpeResponse = 0x33f1, + AbandonNpeResponse = 0x33ec, AcceptGuildInvite = 0x35fc, AcceptTrade = 0x315a, AcceptWargameInvite = 0x35e0, - ActivateSoulbind = 0x33e1, + ActivateSoulbind = 0x33db, ActivateTaxi = 0x34b1, AddonList = 0x35d8, - AddBattlenetFriend = 0x365a, - AddFriend = 0x36d0, - AddIgnore = 0x36d4, - AddToy = 0x32a7, - AdventureJournalOpenQuest = 0x3207, - AdventureJournalUpdateSuggestions = 0x33e4, - AdventureMapStartQuest = 0x335d, + AddBattlenetFriend = 0x3659, + AddFriend = 0x36cf, + AddIgnore = 0x36d3, + AddToy = 0x32a6, + AdventureJournalOpenQuest = 0x3206, + AdventureJournalUpdateSuggestions = 0x33de, + AdventureMapStartQuest = 0x335b, AlterAppearance = 0x3503, AreaSpiritHealerQuery = 0x34b6, AreaSpiritHealerQueue = 0x34b7, - AreaTrigger = 0x31da, - ArtifactAddPower = 0x31ac, - ArtifactSetAppearance = 0x31ae, - AssignEquipmentSetSpec = 0x3210, - AttackStop = 0x325f, - AttackSwing = 0x325e, - AuctionableTokenSell = 0x36e8, - AuctionableTokenSellAtMarketPrice = 0x36e9, + AreaTrigger = 0x31d9, + ArtifactAddPower = 0x31ab, + ArtifactSetAppearance = 0x31ad, + AssignEquipmentSetSpec = 0x320f, + AttackStop = 0x325e, + AttackSwing = 0x325d, + AuctionableTokenSell = 0x36e6, + AuctionableTokenSellAtMarketPrice = 0x36e7, AuctionBrowseQuery = 0x34d6, AuctionCancelCommoditiesPurchase = 0x34de, AuctionConfirmCommoditiesPurchase = 0x34dd, @@ -59,7 +59,7 @@ namespace Framework.Constants AuctionReplicateItems = 0x34d4, AuctionSellCommodity = 0x34df, AuctionSellItem = 0x34d2, - AuctionSetFavoriteItem = 0x3735, + AuctionSetFavoriteItem = 0x3734, AuthContinuedSession = 0x3766, AuthSession = 0x3765, AutobankItem = 0x3997, @@ -70,31 +70,31 @@ namespace Framework.Constants AutoEquipItemSlot = 0x399f, AutoStoreBagItem = 0x399b, AutoStoreGuildBankItem = 0x34c6, - AzeriteEmpoweredItemSelectPower = 0x3386, - AzeriteEmpoweredItemViewed = 0x3368, - AzeriteEssenceActivateEssence = 0x3388, - AzeriteEssenceUnlockMilestone = 0x3387, + AzeriteEmpoweredItemSelectPower = 0x3383, + AzeriteEmpoweredItemViewed = 0x3366, + AzeriteEssenceActivateEssence = 0x3385, + AzeriteEssenceUnlockMilestone = 0x3384, BankerActivate = 0x34b9, BattlefieldLeave = 0x3173, BattlefieldList = 0x317f, BattlefieldPort = 0x3537, - BattlemasterHello = 0x32c1, + BattlemasterHello = 0x32c0, BattlemasterJoin = 0x3530, BattlemasterJoinArena = 0x3531, BattlemasterJoinBrawl = 0x3535, BattlemasterJoinSkirmish = 0x3532, - BattlenetChallengeResponse = 0x36d3, - BattlenetRequest = 0x36f7, - BattlePayAckFailedResponse = 0x36cd, - BattlePayCancelOpenCheckout = 0x3714, - BattlePayConfirmPurchaseResponse = 0x36cc, - BattlePayDistributionAssignToTarget = 0x36c3, - BattlePayGetProductList = 0x36bb, - BattlePayGetPurchaseList = 0x36bc, - BattlePayOpenCheckout = 0x370e, - BattlePayRequestPriceInfo = 0x370a, - BattlePayStartPurchase = 0x36cb, - BattlePayStartVasPurchase = 0x36f4, + BattlenetChallengeResponse = 0x36d2, + BattlenetRequest = 0x36f5, + BattlePayAckFailedResponse = 0x36cc, + BattlePayCancelOpenCheckout = 0x3713, + BattlePayConfirmPurchaseResponse = 0x36cb, + BattlePayDistributionAssignToTarget = 0x36c2, + BattlePayGetProductList = 0x36ba, + BattlePayGetPurchaseList = 0x36bb, + BattlePayOpenCheckout = 0x370c, + BattlePayRequestPriceInfo = 0x3708, + BattlePayStartPurchase = 0x36ca, + BattlePayStartVasPurchase = 0x36f2, BattlePetClearFanfare = 0x312c, BattlePetDeletePet = 0x3624, BattlePetDeletePetCheat = 0x3625, @@ -102,65 +102,65 @@ namespace Framework.Constants BattlePetRequestJournal = 0x3623, BattlePetRequestJournalLock = 0x3622, BattlePetSetBattleSlot = 0x362c, - BattlePetSetFlags = 0x3630, + BattlePetSetFlags = 0x362f, BattlePetSummon = 0x3628, - BattlePetUpdateDisplayNotify = 0x31e4, - BattlePetUpdateNotify = 0x31e3, + BattlePetUpdateDisplayNotify = 0x31e3, + BattlePetUpdateNotify = 0x31e2, BeginTrade = 0x3157, BinderActivate = 0x34b8, BlackMarketBidOnItem = 0x353f, BlackMarketOpen = 0x353d, BlackMarketRequestItems = 0x353e, - BonusRoll = 0x3389, - BugReport = 0x3686, + BonusRoll = 0x3386, + BugReport = 0x3684, BusyTrade = 0x3158, BuyBackItem = 0x34aa, BuyBankSlot = 0x34ba, BuyItem = 0x34a9, BuyReagentBank = 0x34bb, - CageBattlePet = 0x31f6, - CalendarAddEvent = 0x367d, - CalendarCommunityInvite = 0x3671, - CalendarComplain = 0x3679, - CalendarCopyEvent = 0x3678, - CalendarEventSignUp = 0x367b, - CalendarGet = 0x366f, - CalendarGetEvent = 0x3670, - CalendarGetNumPending = 0x367a, - CalendarInvite = 0x3672, - CalendarModeratorStatus = 0x3676, - CalendarRemoveEvent = 0x3677, - CalendarRemoveInvite = 0x3673, - CalendarRsvp = 0x3674, - CalendarStatus = 0x3675, - CalendarUpdateEvent = 0x367e, - CancelAura = 0x31b0, + CageBattlePet = 0x31f5, + CalendarAddEvent = 0x367c, + CalendarCommunityInvite = 0x3670, + CalendarComplain = 0x3678, + CalendarCopyEvent = 0x3677, + CalendarEventSignUp = 0x367a, + CalendarGet = 0x366e, + CalendarGetEvent = 0x366f, + CalendarGetNumPending = 0x3679, + CalendarInvite = 0x3671, + CalendarModeratorStatus = 0x3675, + CalendarRemoveEvent = 0x3676, + CalendarRemoveInvite = 0x3672, + CalendarRsvp = 0x3673, + CalendarStatus = 0x3674, + CalendarUpdateEvent = 0x367d, + CancelAura = 0x31af, CancelAutoRepeatSpell = 0x34f5, - CancelCast = 0x32ad, - CancelChannelling = 0x3277, - CancelGrowthAura = 0x327c, - CancelMasterLootRoll = 0x3218, - CancelModSpeedNoControlAuras = 0x31af, - CancelMountAura = 0x328f, + CancelCast = 0x32ac, + CancelChannelling = 0x3276, + CancelGrowthAura = 0x327b, + CancelMasterLootRoll = 0x3217, + CancelModSpeedNoControlAuras = 0x31ae, + CancelMountAura = 0x328e, CancelQueuedSpell = 0x3180, CancelTempEnchantment = 0x3500, CancelTrade = 0x315c, - CanDuel = 0x3662, - CanRedeemTokenForBalance = 0x3709, - CastSpell = 0x32aa, + CanDuel = 0x3661, + CanRedeemTokenForBalance = 0x3707, + CastSpell = 0x32a9, ChallengeModeRequestLeaders = 0x3090, - ChangeBagSlotFlag = 0x3341, - ChangeBankBagSlotFlag = 0x3342, - ChangeMonumentAppearance = 0x3322, - ChangeRealmTicket = 0x36fc, - ChangeSubGroup = 0x364c, - CharacterCheckUpgrade = 0x36c6, - CharacterRenameRequest = 0x36c1, - CharacterUpgradeManualUnrevokeRequest = 0x36c4, - CharacterUpgradeStart = 0x36c5, - CharCustomize = 0x3690, - CharDelete = 0x369e, - CharRaceOrFactionChange = 0x3696, + ChangeBagSlotFlag = 0x3340, + ChangeBankBagSlotFlag = 0x3341, + ChangeMonumentAppearance = 0x3321, + ChangeRealmTicket = 0x36fa, + ChangeSubGroup = 0x364b, + CharacterCheckUpgrade = 0x36c5, + CharacterRenameRequest = 0x36c0, + CharacterUpgradeManualUnrevokeRequest = 0x36c3, + CharacterUpgradeStart = 0x36c4, + CharCustomize = 0x368e, + CharDelete = 0x369d, + CharRaceOrFactionChange = 0x3694, ChatAddonMessage = 0x37ee, ChatAddonMessageTargeted = 0x37ef, ChatChannelAnnouncements = 0x37e3, @@ -197,29 +197,29 @@ namespace Framework.Constants ChatReportFiltered = 0x37cc, ChatReportIgnored = 0x37cb, ChatUnregisterAllAddonPrefixes = 0x37ce, - CheckCharacterNameAvailability = 0x3645, - CheckIsAdventureMapPoiValid = 0x3250, - ChoiceResponse = 0x32b1, - ChromieTimeSelectExpansion = 0x33e0, - ClaimWeeklyReward = 0x33bb, + CheckCharacterNameAvailability = 0x3644, + CheckIsAdventureMapPoiValid = 0x324f, + ChoiceResponse = 0x32b0, + ChromieTimeSelectExpansion = 0x33da, + ClaimWeeklyReward = 0x33b7, ClearNewAppearance = 0x312f, - ClearRaidMarker = 0x31a8, + ClearRaidMarker = 0x31a7, ClearTradeItem = 0x315e, ClientPortGraveyard = 0x3539, CloseInteraction = 0x3499, - CloseQuestChoice = 0x32b2, - CloseRuneforgeInteraction = 0x33e8, - ClubFinderApplicationResponse = 0x371f, - ClubFinderGetApplicantsList = 0x371d, - ClubFinderPost = 0x371a, - ClubFinderRequestClubsData = 0x3721, - ClubFinderRequestClubsList = 0x371b, - ClubFinderRequestMembershipToClub = 0x371c, - ClubFinderRequestPendingClubsList = 0x3720, - ClubFinderRequestSubscribedClubPostingIds = 0x3722, - ClubFinderRespondToApplicant = 0x371e, - ClubPresenceSubscribe = 0x36f9, - CollectionItemSetFavorite = 0x3633, + CloseQuestChoice = 0x32b1, + CloseRuneforgeInteraction = 0x33e2, + ClubFinderApplicationResponse = 0x371e, + ClubFinderGetApplicantsList = 0x371c, + ClubFinderPost = 0x3719, + ClubFinderRequestClubsData = 0x3720, + ClubFinderRequestClubsList = 0x371a, + ClubFinderRequestMembershipToClub = 0x371b, + ClubFinderRequestPendingClubsList = 0x371f, + ClubFinderRequestSubscribedClubPostingIds = 0x3721, + ClubFinderRespondToApplicant = 0x371d, + ClubPresenceSubscribe = 0x36f7, + CollectionItemSetFavorite = 0x3632, CommentatorEnable = 0x35f0, CommentatorEnterInstance = 0x35f4, CommentatorExitInstance = 0x35f5, @@ -227,36 +227,36 @@ namespace Framework.Constants CommentatorGetPlayerCooldowns = 0x35f3, CommentatorGetPlayerInfo = 0x35f2, CommentatorStartWargame = 0x35ef, - CommerceTokenGetCount = 0x36e6, - CommerceTokenGetLog = 0x36f0, - CommerceTokenGetMarketPrice = 0x36e7, - Complaint = 0x366c, + CommerceTokenGetCount = 0x36e4, + CommerceTokenGetLog = 0x36ee, + CommerceTokenGetMarketPrice = 0x36e5, + Complaint = 0x366b, CompleteCinematic = 0x3557, CompleteMovie = 0x34eb, - ConfirmArtifactRespec = 0x31ad, - ConfirmRespecWipe = 0x3212, + ConfirmArtifactRespec = 0x31ac, + ConfirmRespecWipe = 0x3211, ConnectToFailed = 0x35d4, - ConsumableTokenBuy = 0x36eb, - ConsumableTokenBuyAtMarketPrice = 0x36ec, - ConsumableTokenCanVeteranBuy = 0x36ea, - ConsumableTokenRedeem = 0x36ee, - ConsumableTokenRedeemConfirmation = 0x36ef, + ConsumableTokenBuy = 0x36e9, + ConsumableTokenBuyAtMarketPrice = 0x36ea, + ConsumableTokenCanVeteranBuy = 0x36e8, + ConsumableTokenRedeem = 0x36ec, + ConsumableTokenRedeemConfirmation = 0x36ed, ContributionContribute = 0x3569, ContributionLastUpdateRequest = 0x356a, ConversationLineStarted = 0x3558, - ConvertRaid = 0x364e, + ConvertRaid = 0x364d, CovenantRenownRequestCatchupState = 0x357d, - CreateCharacter = 0x3644, - CreateShipment = 0x330e, + CreateCharacter = 0x3643, + CreateShipment = 0x330d, DbQueryBulk = 0x35e4, DeclineGuildInvites = 0x352d, DeclinePetition = 0x3546, DeleteEquipmentSet = 0x3519, - DelFriend = 0x36d1, - DelIgnore = 0x36d5, + DelFriend = 0x36d0, + DelIgnore = 0x36d4, DepositGuildBankItem = 0x34bd, - DepositReagentBank = 0x334a, - DestroyItem = 0x32a1, + DepositReagentBank = 0x3349, + DestroyItem = 0x32a0, DfBootPlayerVote = 0x3615, DfConfirmExpandSearch = 0x3607, DfGetJoinStatus = 0x3613, @@ -269,66 +269,66 @@ namespace Framework.Constants DfTeleport = 0x3616, DiscardedTimeSyncAcks = 0x3a3e, DismissCritter = 0x3507, - DoCountdown = 0x3719, - DoMasterLootRoll = 0x3217, - DoReadyCheck = 0x3634, + DoCountdown = 0x3718, + DoMasterLootRoll = 0x3216, + DoReadyCheck = 0x3633, DuelResponse = 0x34f0, - EjectPassenger = 0x3245, + EjectPassenger = 0x3244, Emote = 0x3553, EnableNagle = 0x376b, EnableTaxiNode = 0x34af, - EngineSurvey = 0x36e4, + EngineSurvey = 0x36e2, EnterEncryptedModeAck = 0x3767, EnumCharacters = 0x35e8, - EnumCharactersDeletedByClient = 0x36de, + EnumCharactersDeletedByClient = 0x36dc, FarSight = 0x34f6, - GameEventDebugDisable = 0x31b4, - GameEventDebugEnable = 0x31b3, + GameEventDebugDisable = 0x31b3, + GameEventDebugEnable = 0x31b2, GameObjReportUse = 0x34fd, GameObjUse = 0x34fc, - GarrisonAddFollowerHealth = 0x3309, - GarrisonAssignFollowerToBuilding = 0x32ef, - GarrisonCancelConstruction = 0x32dc, - GarrisonCheckUpgradeable = 0x333d, - GarrisonCompleteMission = 0x332f, - GarrisonFullyHealAllFollowers = 0x330a, - GarrisonGenerateRecruits = 0x32f2, - GarrisonGetClassSpecCategoryInfo = 0x3301, - GarrisonGetMapData = 0x3308, - GarrisonGetMissionReward = 0x3361, - GarrisonLearnTalent = 0x32fd, - GarrisonMissionBonusRoll = 0x3331, - GarrisonPurchaseBuilding = 0x32d8, - GarrisonRecruitFollower = 0x32f4, - GarrisonRemoveFollower = 0x3326, - GarrisonRemoveFollowerFromBuilding = 0x32f0, - GarrisonRenameFollower = 0x32f1, - GarrisonRequestBlueprintAndSpecializationData = 0x32d7, - GarrisonRequestShipmentInfo = 0x330c, - GarrisonResearchTalent = 0x32f5, - GarrisonSetBuildingActive = 0x32d9, - GarrisonSetFollowerFavorite = 0x32ed, - GarrisonSetFollowerInactive = 0x32e5, - GarrisonSetRecruitmentPreferences = 0x32f3, - GarrisonSocketTalent = 0x33f4, - GarrisonStartMission = 0x332e, - GarrisonSwapBuildings = 0x32dd, + GarrisonAddFollowerHealth = 0x3308, + GarrisonAssignFollowerToBuilding = 0x32ee, + GarrisonCancelConstruction = 0x32db, + GarrisonCheckUpgradeable = 0x333c, + GarrisonCompleteMission = 0x332e, + GarrisonFullyHealAllFollowers = 0x3309, + GarrisonGenerateRecruits = 0x32f1, + GarrisonGetClassSpecCategoryInfo = 0x3300, + GarrisonGetMapData = 0x3307, + GarrisonGetMissionReward = 0x335f, + GarrisonLearnTalent = 0x32fc, + GarrisonMissionBonusRoll = 0x3330, + GarrisonPurchaseBuilding = 0x32d7, + GarrisonRecruitFollower = 0x32f3, + GarrisonRemoveFollower = 0x3325, + GarrisonRemoveFollowerFromBuilding = 0x32ef, + GarrisonRenameFollower = 0x32f0, + GarrisonRequestBlueprintAndSpecializationData = 0x32d6, + GarrisonRequestShipmentInfo = 0x330b, + GarrisonResearchTalent = 0x32f4, + GarrisonSetBuildingActive = 0x32d8, + GarrisonSetFollowerFavorite = 0x32ec, + GarrisonSetFollowerInactive = 0x32e4, + GarrisonSetRecruitmentPreferences = 0x32f2, + GarrisonSocketTalent = 0x33ef, + GarrisonStartMission = 0x332d, + GarrisonSwapBuildings = 0x32dc, GenerateRandomCharacterName = 0x35e7, - GetAccountCharacterList = 0x36b6, - GetGarrisonInfo = 0x32d2, + GetAccountCharacterList = 0x36b5, + GetGarrisonInfo = 0x32d1, GetItemPurchaseData = 0x3541, - GetLandingPageShipments = 0x330d, - GetMirrorImageData = 0x32a5, + GetLandingPageShipments = 0x330c, + GetMirrorImageData = 0x32a4, GetPvpOptionsEnabled = 0x35ee, - GetRafAccountInfo = 0x3723, - GetRemainingGameTime = 0x36ed, - GetTrophyList = 0x331f, - GetUndeleteCharacterCooldownStatus = 0x36e0, - GetVasAccountCharacterList = 0x36f2, - GetVasTransferTargetRealmList = 0x36f3, - GmTicketAcknowledgeSurvey = 0x3694, - GmTicketGetCaseStatus = 0x3693, - GmTicketGetSystemStatus = 0x3692, + GetRafAccountInfo = 0x3722, + GetRemainingGameTime = 0x36eb, + GetTrophyList = 0x331e, + GetUndeleteCharacterCooldownStatus = 0x36de, + GetVasAccountCharacterList = 0x36f0, + GetVasTransferTargetRealmList = 0x36f1, + GmTicketAcknowledgeSurvey = 0x3692, + GmTicketGetCaseStatus = 0x3691, + GmTicketGetSystemStatus = 0x3690, GossipRefreshOptions = 0x357c, GossipSelectOption = 0x349a, GuildAddBattlenetFriend = 0x308e, @@ -343,15 +343,6 @@ namespace Framework.Constants GuildBankRemainingWithdrawMoneyQuery = 0x3084, GuildBankSetTabText = 0x3087, GuildBankTextQuery = 0x3088, - GuildBankTransferItemToBank = 0x34bd, - GuildBankTransferItemToPlayer = 0x34be, - GuildBankMoveItemInBank = 0x34c1, - GuildBankCombineItemStackWithBank = 0x34c2, - GuildBankTransferItemStackToBank = 0x34c3, - GuildBankCombineItemStackWithPlayer = 0x34c4, - GuildBankTransferItemStackToPlayer = 0x34c5, - GuildBankTransferItemToPlayerAutostore = 0x34c6, - GuildBankCombineItemStackInBank = 0x34c7, GuildBankUpdateTab = 0x34cb, GuildBankWithdrawMoney = 0x34cd, GuildChallengeUpdateRequest = 0x307c, @@ -377,41 +368,41 @@ namespace Framework.Constants GuildReplaceGuildMaster = 0x3089, GuildSetAchievementTracking = 0x3070, GuildSetFocusedAchievement = 0x3071, - GuildSetGuildMaster = 0x36c8, + GuildSetGuildMaster = 0x36c7, GuildSetMemberNote = 0x3073, GuildSetRankPermissions = 0x3068, GuildShiftRank = 0x3067, GuildUpdateInfoText = 0x3076, GuildUpdateMotdText = 0x3075, HearthAndResurrect = 0x3515, - HideQuestChoice = 0x32b3, + HideQuestChoice = 0x32b2, HotfixRequest = 0x35e5, IgnoreTrade = 0x3159, InitiateRolePoll = 0x35da, InitiateTrade = 0x3156, Inspect = 0x353b, InstanceLockResponse = 0x351a, - IslandQueue = 0x33b7, + IslandQueue = 0x33b3, ItemPurchaseRefund = 0x3542, - ItemTextQuery = 0x333e, - JoinPetBattleQueue = 0x31e1, + ItemTextQuery = 0x333d, + JoinPetBattleQueue = 0x31e0, JoinRatedBattleground = 0x3179, - KeepAlive = 0x367f, - KeyboundOverride = 0x322a, + KeepAlive = 0x367e, + KeyboundOverride = 0x3229, LearnPvpTalents = 0x3568, LearnTalents = 0x3566, - LeaveGroup = 0x3649, - LeavePetBattleQueue = 0x31e2, + LeaveGroup = 0x3648, + LeavePetBattleQueue = 0x31e1, LfgListApplyToGroup = 0x360c, LfgListCancelApplication = 0x360d, LfgListDeclineApplicant = 0x360e, LfgListGetStatus = 0x360a, LfgListInviteApplicant = 0x360f, LfgListInviteResponse = 0x3610, - LfgListJoin = 0x3384, + LfgListJoin = 0x3381, LfgListLeave = 0x3609, LfgListSearch = 0x360b, - LfgListUpdateRequest = 0x3385, + LfgListUpdateRequest = 0x3382, LfGuildAddRecruit = 0x361b, LfGuildBrowse = 0x361d, LfGuildDeclineRecruit = 0x3079, @@ -421,41 +412,41 @@ namespace Framework.Constants LfGuildRemoveRecruit = 0x307b, LfGuildSetGuildPost = 0x361c, ListInventory = 0x34a7, - LiveRegionAccountRestore = 0x36b9, - LiveRegionCharacterCopy = 0x36b8, - LiveRegionGetAccountCharacterList = 0x36b7, - LiveRegionKeyBindingsCopy = 0x36ba, + LiveRegionAccountRestore = 0x36b8, + LiveRegionCharacterCopy = 0x36b7, + LiveRegionGetAccountCharacterList = 0x36b6, + LiveRegionKeyBindingsCopy = 0x36b9, LoadingScreenNotify = 0x35f8, - LoadSelectedTrophy = 0x3320, + LoadSelectedTrophy = 0x331f, LogoutCancel = 0x34e6, LogoutInstant = 0x34e7, LogoutRequest = 0x34e4, LogDisconnect = 0x3769, LogStreamingError = 0x376d, - LootItem = 0x3215, - LootMoney = 0x3214, - LootRelease = 0x3219, - LootRoll = 0x321a, - LootUnit = 0x3213, - LowLevelRaid1 = 0x36a2, + LootItem = 0x3214, + LootMoney = 0x3213, + LootRelease = 0x3218, + LootRoll = 0x3219, + LootUnit = 0x3212, + LowLevelRaid1 = 0x36a1, LowLevelRaid2 = 0x3521, MailCreateTextItem = 0x354d, - MailDelete = 0x322c, + MailDelete = 0x322b, MailGetList = 0x3548, MailMarkAsRead = 0x354c, - MailReturnToSender = 0x3655, + MailReturnToSender = 0x3654, MailTakeItem = 0x354a, MailTakeMoney = 0x3549, - MakeContitionalAppearancePermanent = 0x322e, - MasterLootItem = 0x3216, + MakeContitionalAppearancePermanent = 0x322d, + MasterLootItem = 0x3215, MergeGuildBankItemWithGuildBankItem = 0x34c7, MergeGuildBankItemWithItem = 0x34c4, MergeItemWithGuildBankItem = 0x34c2, - MinimapPing = 0x364b, + MinimapPing = 0x364a, MissileTrajectoryCollision = 0x318b, MountClearFanfare = 0x312d, - MountSetFavorite = 0x3632, - MountSpecialAnim = 0x3290, + MountSetFavorite = 0x3631, + MountSpecialAnim = 0x328f, MoveApplyMovementForceAck = 0x3a14, MoveChangeTransport = 0x3a2e, MoveChangeVehicleSeats = 0x3a33, @@ -525,42 +516,41 @@ namespace Framework.Constants MoveUpdateFallSpeed = 0x3a19, MoveWaterWalkAck = 0x3a1c, MythicPlusRequestMapStats = 0x308f, - MythicPlusWeeklyRewardRequest = 0x3683, - NeutralPlayerSelectFaction = 0x31d7, + NeutralPlayerSelectFaction = 0x31d6, NextCinematicCamera = 0x3556, ObjectUpdateFailed = 0x3181, ObjectUpdateRescued = 0x3182, - OfferPetition = 0x33df, + OfferPetition = 0x33d9, OpeningCinematic = 0x3555, - OpenItem = 0x333f, - OpenMissionNpc = 0x3303, - OpenShipmentNpc = 0x330b, - OpenTradeskillNpc = 0x3316, + OpenItem = 0x333e, + OpenMissionNpc = 0x3302, + OpenShipmentNpc = 0x330a, + OpenTradeskillNpc = 0x3315, OptOutOfLoot = 0x3504, OverrideScreenFlash = 0x352e, PartyInvite = 0x3602, PartyInviteResponse = 0x3603, - PartyUninvite = 0x3647, - PerformItemInteraction = 0x3236, + PartyUninvite = 0x3646, + PerformItemInteraction = 0x3235, PetitionBuy = 0x34cf, - PetitionRenameGuild = 0x36c9, + PetitionRenameGuild = 0x36c8, PetitionShowList = 0x34ce, PetitionShowSignatures = 0x34d0, PetAbandon = 0x3493, PetAction = 0x3491, - PetBattleFinalNotify = 0x31e6, - PetBattleInput = 0x3641, - PetBattleQueueProposeMatchResult = 0x322b, - PetBattleQuitNotify = 0x31e5, - PetBattleReplaceFrontPet = 0x3642, - PetBattleRequestPvp = 0x31df, - PetBattleRequestUpdate = 0x31e0, - PetBattleRequestWild = 0x31dd, - PetBattleScriptErrorNotify = 0x31e7, - PetBattleWildLocationFail = 0x31de, + PetBattleFinalNotify = 0x31e5, + PetBattleInput = 0x3640, + PetBattleQueueProposeMatchResult = 0x322a, + PetBattleQuitNotify = 0x31e4, + PetBattleReplaceFrontPet = 0x3641, + PetBattleRequestPvp = 0x31de, + PetBattleRequestUpdate = 0x31df, + PetBattleRequestWild = 0x31dc, + PetBattleScriptErrorNotify = 0x31e6, + PetBattleWildLocationFail = 0x31dd, PetCancelAura = 0x3494, - PetCastSpell = 0x32a9, - PetRename = 0x3685, + PetCastSpell = 0x32a8, + PetRename = 0x3683, PetSetAction = 0x3490, PetSpellAutocast = 0x3495, PetStopAttack = 0x3492, @@ -568,30 +558,30 @@ namespace Framework.Constants PlayerLogin = 0x35ea, PushQuestToParty = 0x34a5, PvpLogData = 0x317c, - QueryBattlePetName = 0x3283, - QueryCorpseLocationFromClient = 0x3660, - QueryCorpseTransport = 0x3661, - QueryCountdownTimer = 0x31ab, - QueryCreature = 0x327d, - QueryGameObject = 0x327e, - QueryGarrisonPetName = 0x3284, - QueryGuildInfo = 0x368e, + QueryBattlePetName = 0x3282, + QueryCorpseLocationFromClient = 0x365f, + QueryCorpseTransport = 0x3660, + QueryCountdownTimer = 0x31aa, + QueryCreature = 0x327c, + QueryGameObject = 0x327d, + QueryGarrisonPetName = 0x3283, + QueryGuildInfo = 0x368c, QueryInspectAchievements = 0x350e, QueryNextMailTime = 0x354b, - QueryNpcText = 0x327f, - QueryPageText = 0x3281, - QueryPetition = 0x3285, - QueryPetName = 0x3282, - QueryPlayerName = 0x368a, - QueryPlayerNamesForCommunity = 0x368c, - QueryPlayerNameByCommunityId = 0x368b, + QueryNpcText = 0x327e, + QueryPageText = 0x3280, + QueryPetition = 0x3284, + QueryPetName = 0x3281, + QueryPlayerName = 0x3688, + QueryPlayerNamesForCommunity = 0x368a, + QueryPlayerNameByCommunityId = 0x3689, QueryQuestCompletionNpcs = 0x3175, - QueryQuestInfo = 0x3280, - QueryRealmName = 0x368d, - QueryScenarioPoi = 0x3656, + QueryQuestInfo = 0x327f, + QueryRealmName = 0x368b, + QueryScenarioPoi = 0x3655, QueryTime = 0x34e3, - QueryTreasurePicker = 0x3364, - QueryVoidStorage = 0x31a4, + QueryTreasurePicker = 0x3362, + QueryVoidStorage = 0x31a3, QuestConfirmAccept = 0x34a4, QuestGiverAcceptQuest = 0x349e, QuestGiverChooseReward = 0x34a0, @@ -603,153 +593,153 @@ namespace Framework.Constants QuestGiverStatusMultipleQuery = 0x34a3, QuestGiverStatusQuery = 0x34a2, QuestLogRemoveQuest = 0x3540, - QuestPoiQuery = 0x36b0, + QuestPoiQuery = 0x36af, QuestPushResult = 0x34a6, - QuestSessionBeginResponse = 0x33d0, - QuestSessionRequestStart = 0x33cf, - QuestSessionRequestStop = 0x372e, + QuestSessionBeginResponse = 0x33ca, + QuestSessionRequestStart = 0x33c9, + QuestSessionRequestStop = 0x372d, QueuedMessagesEnd = 0x376c, - QuickJoinAutoAcceptRequests = 0x3708, - QuickJoinRequestInvite = 0x3707, - QuickJoinRequestInviteWithConfirmation = 0x3733, - QuickJoinRespondToInvite = 0x3706, - QuickJoinSignalToastDisplayed = 0x3705, + QuickJoinAutoAcceptRequests = 0x3706, + QuickJoinRequestInvite = 0x3705, + QuickJoinRequestInviteWithConfirmation = 0x3732, + QuickJoinRespondToInvite = 0x3704, + QuickJoinSignalToastDisplayed = 0x3703, RafClaimActivityReward = 0x3512, - RafClaimNextReward = 0x3724, - RafGenerateRecruitmentLink = 0x3726, - RafUpdateRecruitmentInfo = 0x3725, - RaidOrBattlegroundEngineSurvey = 0x36e5, - RandomRoll = 0x3654, - ReadyCheckResponse = 0x3635, - ReadItem = 0x3340, + RafClaimNextReward = 0x3723, + RafGenerateRecruitmentLink = 0x3725, + RafUpdateRecruitmentInfo = 0x3724, + RaidOrBattlegroundEngineSurvey = 0x36e3, + RandomRoll = 0x3653, + ReadyCheckResponse = 0x3634, + ReadItem = 0x333f, ReclaimCorpse = 0x34e9, - RemoveNewItem = 0x3367, - RemoveRafRecruit = 0x3727, + RemoveNewItem = 0x3365, + RemoveRafRecruit = 0x3726, ReorderCharacters = 0x35e9, RepairItem = 0x34fa, - ReplaceTrophy = 0x3321, + ReplaceTrophy = 0x3320, RepopRequest = 0x3538, - ReportClientVariables = 0x3702, - ReportEnabledAddons = 0x3701, - ReportKeybindingExecutionCounts = 0x3703, + ReportClientVariables = 0x3700, + ReportEnabledAddons = 0x36ff, + ReportKeybindingExecutionCounts = 0x3701, ReportPvpPlayerAfk = 0x3502, - ReportServerLag = 0x33c6, - ReportStuckInCombat = 0x33c7, - RequestAccountData = 0x3698, - RequestAreaPoiUpdate = 0x3366, + ReportServerLag = 0x33c2, + ReportStuckInCombat = 0x33c3, + RequestAccountData = 0x3696, + RequestAreaPoiUpdate = 0x3364, RequestBattlefieldStatus = 0x35dc, RequestCategoryCooldowns = 0x317e, RequestCemeteryList = 0x3177, - RequestCharacterGuildFollowInfo = 0x368f, - RequestConquestFormulaConstants = 0x32c4, - RequestCovenantCallings = 0x33b9, + RequestCharacterGuildFollowInfo = 0x368d, + RequestConquestFormulaConstants = 0x32c3, + RequestCovenantCallings = 0x33b5, RequestCrowdControlSpell = 0x353c, - RequestForcedReactions = 0x320e, - RequestGarrisonTalentWorldQuestUnlocks = 0x33f3, - RequestGuildPartyState = 0x31aa, - RequestGuildRewardsList = 0x31a9, - RequestLatestSplashScreen = 0x33c8, - RequestLfgListBlacklist = 0x32b4, - RequestMythicPlusAffixes = 0x320b, - RequestMythicPlusSeasonData = 0x320c, + RequestForcedReactions = 0x320d, + RequestGarrisonTalentWorldQuestUnlocks = 0x33ee, + RequestGuildPartyState = 0x31a9, + RequestGuildRewardsList = 0x31a8, + RequestLatestSplashScreen = 0x33c4, + RequestLfgListBlacklist = 0x32b3, + RequestMythicPlusAffixes = 0x320a, + RequestMythicPlusSeasonData = 0x320b, RequestPartyJoinUpdates = 0x35f7, - RequestPartyMemberStats = 0x3653, + RequestPartyMemberStats = 0x3652, RequestPetInfo = 0x3496, - RequestPlayedTime = 0x3288, - RequestPvpRewards = 0x3197, - RequestRaidInfo = 0x36ca, + RequestPlayedTime = 0x3287, + RequestPvpRewards = 0x3196, + RequestRaidInfo = 0x36c9, RequestRatedPvpInfo = 0x35e3, RequestRealmGuildMasterInfo = 0x309b, RequestResearchHistory = 0x3167, - RequestScheduledPvpInfo = 0x3198, + RequestScheduledPvpInfo = 0x3197, RequestStabledPets = 0x3497, - RequestVehicleExit = 0x3240, - RequestVehicleNextSeat = 0x3242, - RequestVehiclePrevSeat = 0x3241, - RequestVehicleSwitchSeat = 0x3243, - RequestWeeklyRewards = 0x33bc, - RequestWorldQuestUpdate = 0x3365, - ResetChallengeMode = 0x3209, - ResetChallengeModeCheat = 0x320a, - ResetInstances = 0x3668, - ResurrectResponse = 0x3684, - RevertMonumentAppearance = 0x3323, - RideVehicleInteract = 0x3244, + RequestVehicleExit = 0x323f, + RequestVehicleNextSeat = 0x3241, + RequestVehiclePrevSeat = 0x3240, + RequestVehicleSwitchSeat = 0x3242, + RequestWeeklyRewards = 0x33b8, + RequestWorldQuestUpdate = 0x3363, + ResetChallengeMode = 0x3208, + ResetChallengeModeCheat = 0x3209, + ResetInstances = 0x3667, + ResurrectResponse = 0x3682, + RevertMonumentAppearance = 0x3322, + RideVehicleInteract = 0x3243, SaveCufProfiles = 0x318c, SaveEquipmentSet = 0x3518, - SaveGuildEmblem = 0x32b8, - ScenePlaybackCanceled = 0x3227, - ScenePlaybackComplete = 0x3226, - SceneTriggerEvent = 0x3228, + SaveGuildEmblem = 0x32b7, + ScenePlaybackCanceled = 0x3226, + ScenePlaybackComplete = 0x3225, + SceneTriggerEvent = 0x3227, SelfRes = 0x3543, SellItem = 0x34a8, - SendCharacterClubInvitation = 0x36fb, - SendContactList = 0x36cf, + SendCharacterClubInvitation = 0x36f9, + SendContactList = 0x36ce, SendMail = 0x35fa, SendTextEmote = 0x348e, - ServerTimeOffsetRequest = 0x369d, - SetAchievementsHidden = 0x322d, + ServerTimeOffsetRequest = 0x369c, + SetAchievementsHidden = 0x322c, SetActionBarToggles = 0x3544, - SetActionButton = 0x3636, + SetActionButton = 0x3635, SetActiveMover = 0x3a39, - SetAdvancedCombatLogging = 0x32c5, - SetAssistantLeader = 0x364f, - SetBackpackAutosortDisabled = 0x3343, - SetBankAutosortDisabled = 0x3344, - SetContactNotes = 0x36d2, + SetAdvancedCombatLogging = 0x32c4, + SetAssistantLeader = 0x364e, + SetBackpackAutosortDisabled = 0x3342, + SetBankAutosortDisabled = 0x3343, + SetContactNotes = 0x36d1, SetCurrencyFlags = 0x3169, - SetDifficultyId = 0x3229, - SetDungeonDifficulty = 0x3682, + SetDifficultyId = 0x3228, + SetDungeonDifficulty = 0x3681, SetEveryoneIsAssistant = 0x3617, SetFactionAtWar = 0x34ec, SetFactionInactive = 0x34ee, SetFactionNotAtWar = 0x34ed, - SetGameEventDebugViewState = 0x31bb, - SetInsertItemsLeftToRight = 0x3346, - SetLootMethod = 0x3648, + SetGameEventDebugViewState = 0x31ba, + SetInsertItemsLeftToRight = 0x3345, + SetLootMethod = 0x3647, SetLootSpecialization = 0x3551, - SetPartyAssignment = 0x3651, - SetPartyLeader = 0x364a, + SetPartyAssignment = 0x3650, + SetPartyLeader = 0x3649, SetPetSlot = 0x3168, - SetPlayerDeclinedNames = 0x3689, + SetPlayerDeclinedNames = 0x3687, SetPreferredCemetery = 0x3178, - SetPvp = 0x32bc, - SetRaidDifficulty = 0x36dc, + SetPvp = 0x32bb, + SetRaidDifficulty = 0x36da, SetRole = 0x35d9, - SetSavedInstanceExtend = 0x3687, + SetSavedInstanceExtend = 0x3685, SetSelection = 0x353a, SetSheathed = 0x348f, - SetSortBagsRightToLeft = 0x3345, + SetSortBagsRightToLeft = 0x3344, SetTaxiBenchmarkMode = 0x3501, - SetTitle = 0x328e, + SetTitle = 0x328d, SetTradeCurrency = 0x3160, SetTradeGold = 0x315f, SetTradeItem = 0x315d, - SetUsingPartyGarrison = 0x3305, - SetWarMode = 0x32bd, + SetUsingPartyGarrison = 0x3304, + SetWarMode = 0x32bc, SetWatchedFaction = 0x34ef, - ShowTradeSkill = 0x36c2, + ShowTradeSkill = 0x36c1, SignPetition = 0x3545, - SilencePartyTalker = 0x3652, + SilencePartyTalker = 0x3651, SocketGems = 0x34f9, - SortBags = 0x3347, - SortBankBags = 0x3348, - SortReagentBankBags = 0x3349, + SortBags = 0x3346, + SortBankBags = 0x3347, + SortReagentBankBags = 0x3348, SpellClick = 0x349b, SpiritHealerActivate = 0x34b5, SplitGuildBankItem = 0x34c8, SplitGuildBankItemToInventory = 0x34c5, SplitItem = 0x399e, - SplitItemToGuildBank = 0x34C3, + SplitItemToGuildBank = 0x34c3, StandStateChange = 0x318a, StartChallengeMode = 0x355c, StartSpectatorWarGame = 0x35df, StartWarGame = 0x35de, StoreGuildBankItem = 0x34be, - SubmitUserFeedback = 0x3697, - SubscriptionInterstitialResponse = 0x33e9, - SummonResponse = 0x366a, - SupportTicketSubmitComplaint = 0x3646, + SubmitUserFeedback = 0x3695, + SubscriptionInterstitialResponse = 0x33e3, + SummonResponse = 0x3669, + SupportTicketSubmitComplaint = 0x3645, SurrenderArena = 0x3174, SuspendCommsAck = 0x3764, SuspendTokenResponse = 0x376a, @@ -757,9 +747,9 @@ namespace Framework.Constants SwapInvItem = 0x399d, SwapItem = 0x399c, SwapItemWithGuildBankItem = 0x34bf, - SwapSubGroups = 0x364d, - SwapVoidItem = 0x31a6, - TabardVendorActivate = 0x32b9, + SwapSubGroups = 0x364c, + SwapVoidItem = 0x31a5, + TabardVendorActivate = 0x32b8, TalkToGossip = 0x3498, TaxiNodeStatusQuery = 0x34ae, TaxiQueryAvailableNodes = 0x34b0, @@ -768,50 +758,50 @@ namespace Framework.Constants TimeSyncResponse = 0x3a3a, TimeSyncResponseDropped = 0x3a3c, TimeSyncResponseFailed = 0x3a3b, - ToggleDifficulty = 0x3657, - TogglePvp = 0x32bb, + ToggleDifficulty = 0x3656, + TogglePvp = 0x32ba, TotemDestroyed = 0x3506, ToyClearFanfare = 0x312e, - TradeSkillSetFavorite = 0x3363, + TradeSkillSetFavorite = 0x3361, TrainerBuySpell = 0x34b4, TrainerList = 0x34b3, - TransmogrifyItems = 0x3199, + TransmogrifyItems = 0x3198, TurnInPetition = 0x3547, - Tutorial = 0x36dd, + Tutorial = 0x36db, TwitterCheckStatus = 0x312a, TwitterConnect = 0x3127, TwitterDisconnect = 0x312b, - TwitterPost = 0x334b, - UiMapQuestLinesRequest = 0x33b8, + UiMapQuestLinesRequest = 0x33b4, UnacceptTrade = 0x315b, - UndeleteCharacter = 0x36df, + UndeleteCharacter = 0x36dd, UnlearnSkill = 0x34f3, - UnlearnSpecialization = 0x31a7, - UnlockVoidStorage = 0x31a3, - UpdateAccountData = 0x3699, - UpdateAreaTriggerVisual = 0x32ac, - UpdateClientSettings = 0x3664, + UnlearnSpecialization = 0x31a6, + UnlockVoidStorage = 0x31a2, + UpdateAccountData = 0x3697, + UpdateAreaTriggerVisual = 0x32ab, + UpdateClientSettings = 0x3663, UpdateMissileTrajectory = 0x3a40, - UpdateRaidTarget = 0x3650, - UpdateSpellVisual = 0x32ab, - UpdateVasPurchaseStates = 0x36f5, - UpgradeGarrison = 0x32cd, - UpgradeRuneforgeLegendary = 0x33e7, + UpdateRaidTarget = 0x364f, + UpdateSpellVisual = 0x32aa, + UpdateVasPurchaseStates = 0x36f3, + UpgradeGarrison = 0x32cc, + UpgradeRuneforgeLegendary = 0x33e1, UsedFollow = 0x3187, - UseCritterItem = 0x324a, + UseCritterItem = 0x3249, UseEquipmentSet = 0x3995, - UseItem = 0x32a6, - UseToy = 0x32a8, - VasCheckTransferOk = 0x370d, - VasGetQueueMinutes = 0x370c, - VasGetServiceStatus = 0x370b, + UseItem = 0x32a5, + UseToy = 0x32a7, + VasCheckTransferOk = 0x370b, + VasGetQueueMinutes = 0x370a, + VasGetServiceStatus = 0x3709, ViolenceLevel = 0x3185, - VoiceChatJoinChannel = 0x3711, - VoiceChatLogin = 0x3710, - VoidStorageTransfer = 0x31a5, + VoiceChannelSttTokenRequest = 0x370f, + VoiceChatJoinChannel = 0x3710, + VoiceChatLogin = 0x370e, + VoidStorageTransfer = 0x31a4, Warden3Data = 0x35ec, - Who = 0x3681, - WhoIs = 0x3680, + Who = 0x3680, + WhoIs = 0x367f, WorldPortResponse = 0x35f9, WrapItem = 0x3994, @@ -821,84 +811,84 @@ namespace Framework.Constants public enum ServerOpcodes : uint { - AbortNewWorld = 0x259f, - AccountCriteriaUpdate = 0x287d, - AccountDataTimes = 0x270f, - AccountMountUpdate = 0x25b1, - AccountToyUpdate = 0x25b2, - AccountTransmogSetFavoritesUpdate = 0x25b5, - AccountTransmogUpdate = 0x25b4, - AchievementDeleted = 0x26ec, - AchievementEarned = 0x2640, + AbortNewWorld = 0x259a, + AccountCriteriaUpdate = 0x286b, + AccountDataTimes = 0x26fc, + AccountMountUpdate = 0x25ac, + AccountToyUpdate = 0x25ad, + AccountTransmogSetFavoritesUpdate = 0x25b0, + AccountTransmogUpdate = 0x25af, + AchievementDeleted = 0x26db, + AchievementEarned = 0x2638, ActivateEssenceFailed = 0x3016, ActivateSoulbindFailed = 0x3018, - ActivateTaxiReply = 0x267b, + ActivateTaxiReply = 0x2673, ActiveGlyphs = 0x2c54, - AddonListRequest = 0x263f, - AddBattlenetFriendResponse = 0x263a, - AddItemPassive = 0x25ad, - AddLossOfControl = 0x266d, - AddRunePower = 0x26b5, - AdjustSplineDuration = 0x25cf, - AdvancedCombatLog = 0x2893, - AdventureJournalDataResponse = 0x288d, - AdventureMapOpenNpc = 0x27f7, - AeLootTargets = 0x2615, - AeLootTargetAck = 0x2616, - AiReaction = 0x26b2, - AlliedRaceDetails = 0x27fd, + AddonListRequest = 0x2637, + AddBattlenetFriendResponse = 0x2632, + AddItemPassive = 0x25a8, + AddLossOfControl = 0x2665, + AddRunePower = 0x26ad, + AdjustSplineDuration = 0x25ca, + AdvancedCombatLog = 0x2881, + AdventureJournalDataResponse = 0x287b, + AdventureMapOpenNpc = 0x27e4, + AeLootTargets = 0x260d, + AeLootTargetAck = 0x260e, + AiReaction = 0x26aa, + AlliedRaceDetails = 0x27ea, AllAccountCriteria = 0x2571, AllAchievementData = 0x2570, AllGuildAchievements = 0x29b8, - ApplyMountEquipmentResult = 0x286a, + ApplyMountEquipmentResult = 0x2858, ArchaeologySurveryCast = 0x2588, AreaPoiUpdateResponse = 0x3011, - AreaSpiritHealerTime = 0x2744, - AreaTriggerDenied = 0x2917, - AreaTriggerForceSetPositionAndFacing = 0x2914, - AreaTriggerNoCorpse = 0x271b, - AreaTriggerPlaySpellVisual = 0x2913, - AreaTriggerRePath = 0x2911, - AreaTriggerReShape = 0x2916, - AreaTriggerSetVisualAnim = 0x2912, - AreaTriggerUnattach = 0x2915, - ArenaCrowdControlSpellResult = 0x262f, - ArenaPrepOpponentSpecializations = 0x2645, - ArtifactEndgamePowersRefunded = 0x27a6, - ArtifactForgeError = 0x27a4, - ArtifactRespecPrompt = 0x27a5, - ArtifactXpGain = 0x27ef, + AreaSpiritHealerTime = 0x2731, + AreaTriggerDenied = 0x2903, + AreaTriggerForceSetPositionAndFacing = 0x2900, + AreaTriggerNoCorpse = 0x2708, + AreaTriggerPlaySpellVisual = 0x28ff, + AreaTriggerRePath = 0x28fd, + AreaTriggerReShape = 0x2902, + AreaTriggerSetVisualAnim = 0x28fe, + AreaTriggerUnattach = 0x2901, + ArenaCrowdControlSpellResult = 0x2627, + ArenaPrepOpponentSpecializations = 0x263d, + ArtifactEndgamePowersRefunded = 0x2794, + ArtifactForgeError = 0x2792, + ArtifactRespecPrompt = 0x2793, + ArtifactXpGain = 0x27dc, AttackerStateUpdate = 0x294c, AttackStart = 0x2937, AttackStop = 0x2938, AttackSwingError = 0x2946, AttackSwingLandedLog = 0x2947, - AuctionableTokenAuctionSold = 0x27d8, - AuctionableTokenSellAtMarketPriceResponse = 0x27d7, - AuctionableTokenSellConfirmRequired = 0x27d6, - AuctionClosedNotification = 0x26f6, - AuctionCommandResult = 0x26f3, - AuctionFavoriteList = 0x2884, - AuctionGetCommodityQuoteResult = 0x287b, - AuctionHelloResponse = 0x26f1, - AuctionListBiddedItemsResult = 0x287a, - AuctionListBucketsResult = 0x2877, - AuctionListItemsResult = 0x2878, - AuctionListOwnedItemsResult = 0x2879, - AuctionOutbidNotification = 0x26f5, - AuctionOwnerBidNotification = 0x26f7, - AuctionReplicateResponse = 0x26f2, - AuctionWonNotification = 0x26f4, + AuctionableTokenAuctionSold = 0x27c5, + AuctionableTokenSellAtMarketPriceResponse = 0x27c4, + AuctionableTokenSellConfirmRequired = 0x27c3, + AuctionClosedNotification = 0x26e5, + AuctionCommandResult = 0x26e2, + AuctionFavoriteList = 0x2872, + AuctionGetCommodityQuoteResult = 0x2869, + AuctionHelloResponse = 0x26e0, + AuctionListBiddedItemsResult = 0x2868, + AuctionListBucketsResult = 0x2865, + AuctionListItemsResult = 0x2866, + AuctionListOwnedItemsResult = 0x2867, + AuctionOutbidNotification = 0x26e4, + AuctionOwnerBidNotification = 0x26e6, + AuctionReplicateResponse = 0x26e1, + AuctionWonNotification = 0x26e3, AuraPointsDepleted = 0x2c23, AuraUpdate = 0x2c22, AuthChallenge = 0x3048, AuthFailed = 0x256c, AuthResponse = 0x256d, - AvailableHotfixes = 0x2595, - AzeriteRespecNpc = 0x27fa, + AvailableHotfixes = 0x290f, + AzeriteRespecNpc = 0x27e7, BagCleanupFinished = 0x2da7, - BarberShopResult = 0x26bb, - BatchPresenceSubscription = 0x285b, + BarberShopResult = 0x26b2, + BatchPresenceSubscription = 0x2849, BattlefieldList = 0x2927, BattlefieldPortDenied = 0x292d, BattlefieldStatusActive = 0x2923, @@ -913,114 +903,111 @@ namespace Framework.Constants BattlegroundPlayerLeft = 0x292c, BattlegroundPlayerPositions = 0x2928, BattlegroundPoints = 0x2948, - BattlenetChallengeAbort = 0x278d, - BattlenetChallengeStart = 0x278c, - BattlenetNotification = 0x2808, - BattlenetResponse = 0x2807, - BattleNetConnectionStatus = 0x2809, - BattlePayAckFailed = 0x2787, - BattlePayBattlePetDelivered = 0x277c, - BattlePayCollectionItemDelivered = 0x277d, - BattlePayConfirmPurchase = 0x2786, - BattlePayDeliveryEnded = 0x277a, - BattlePayDeliveryStarted = 0x2779, - BattlePayDistributionUpdate = 0x2778, - BattlePayGetDistributionListResponse = 0x2776, - BattlePayDistributionUnrevoked = 0x2777, - BattlePayGetProductListResponse = 0x2774, - BattlePayGetPurchaseListResponse = 0x2775, - BattlePayMountDelivered = 0x277b, - BattlePayPurchaseUpdate = 0x2785, - BattlePayStartCheckout = 0x2825, - BattlePayStartDistributionAssignToTargetResponse = 0x2783, - BattlePayStartPurchaseResponse = 0x2782, - BattlePayValidatePurchaseResponse = 0x2819, - BattlePayVasGuildFollowInfo = 0x29e7, - BattlePayVasGuildMasterList = 0x29e6, - BattlePetsHealed = 0x25f0, - BattlePetCageDateError = 0x2676, - BattlePetDeleted = 0x25ed, - BattlePetError = 0x2635, - BattlePetJournal = 0x25ec, - BattlePetJournalLockAcquired = 0x25ea, - BattlePetJournalLockDenied = 0x25eb, - BattlePetLicenseChanged = 0x25f1, - BattlePetRestored = 0x25ef, - BattlePetRevoked = 0x25ee, - BattlePetSetMaxPets = 0x25e8, - BattlePetTrapLevel = 0x25e7, - BattlePetUpdates = 0x25e6, - BinderConfirm = 0x2700, + BattlenetChallengeAbort = 0x277b, + BattlenetChallengeStart = 0x277a, + BattlenetNotification = 0x27f5, + BattlenetResponse = 0x27f4, + BattleNetConnectionStatus = 0x27f6, + BattlePayAckFailed = 0x2775, + BattlePayBattlePetDelivered = 0x276a, + BattlePayCollectionItemDelivered = 0x276b, + BattlePayConfirmPurchase = 0x2774, + BattlePayDeliveryEnded = 0x2768, + BattlePayDeliveryStarted = 0x2767, + BattlePayDistributionUnrevoked = 0x2765, + BattlePayDistributionUpdate = 0x2766, + BattlePayGetDistributionListResponse = 0x2764, + BattlePayGetProductListResponse = 0x2762, + BattlePayGetPurchaseListResponse = 0x2763, + BattlePayMountDelivered = 0x2769, + BattlePayPurchaseUpdate = 0x2773, + BattlePayStartCheckout = 0x2811, + BattlePayStartDistributionAssignToTargetResponse = 0x2771, + BattlePayStartPurchaseResponse = 0x2770, + BattlePayValidatePurchaseResponse = 0x2805, + BattlePetsHealed = 0x25ea, + BattlePetCageDateError = 0x266e, + BattlePetDeleted = 0x25e7, + BattlePetError = 0x262d, + BattlePetJournal = 0x25e6, + BattlePetJournalLockAcquired = 0x25e4, + BattlePetJournalLockDenied = 0x25e5, + BattlePetLicenseChanged = 0x25eb, + BattlePetRestored = 0x25e9, + BattlePetRevoked = 0x25e8, + BattlePetTrapLevel = 0x25e2, + BattlePetUpdates = 0x25e1, + BinderConfirm = 0x26ef, BindPointUpdate = 0x257d, - BlackMarketBidOnItemResult = 0x2625, - BlackMarketOpenResult = 0x2623, - BlackMarketOutbid = 0x2626, - BlackMarketRequestItemsResult = 0x2624, - BlackMarketWon = 0x2627, - BonusRollEmpty = 0x2642, + BlackMarketBidOnItemResult = 0x261d, + BlackMarketOpenResult = 0x261b, + BlackMarketOutbid = 0x261e, + BlackMarketRequestItemsResult = 0x261c, + BlackMarketWon = 0x261f, + BonusRollEmpty = 0x263a, BossKill = 0x294b, BreakTarget = 0x2936, BroadcastAchievement = 0x2bbc, - BroadcastSummonCast = 0x285d, - BroadcastSummonResponse = 0x285e, - BuyFailed = 0x26c4, - BuySucceeded = 0x26c3, - CacheInfo = 0x2709, - CacheVersion = 0x2708, - CalendarClearPendingAction = 0x269b, - CalendarCommandResult = 0x269c, - CalendarCommunityInvite = 0x268b, - CalendarEventRemovedAlert = 0x2693, - CalendarEventUpdatedAlert = 0x2694, - CalendarInviteAdded = 0x268c, - CalendarInviteAlert = 0x2690, - CalendarInviteNotes = 0x2695, - CalendarInviteNotesAlert = 0x2696, - CalendarInviteRemoved = 0x268d, - CalendarInviteRemovedAlert = 0x2692, - CalendarInviteStatus = 0x268e, - CalendarInviteStatusAlert = 0x2691, - CalendarModeratorStatus = 0x268f, - CalendarRaidLockoutAdded = 0x2697, - CalendarRaidLockoutRemoved = 0x2698, - CalendarRaidLockoutUpdated = 0x2699, - CalendarSendCalendar = 0x2689, - CalendarSendEvent = 0x268a, - CalendarSendNumPending = 0x269a, - CameraEffect = 0x272a, - CancelAutoRepeat = 0x26e2, + BroadcastSummonCast = 0x284b, + BroadcastSummonResponse = 0x284c, + BuyFailed = 0x26bb, + BuySucceeded = 0x26ba, + CacheInfo = 0x291d, + CacheVersion = 0x291c, + CalendarClearPendingAction = 0x2693, + CalendarCommandResult = 0x2694, + CalendarCommunityInvite = 0x2683, + CalendarEventRemovedAlert = 0x268b, + CalendarEventUpdatedAlert = 0x268c, + CalendarInviteAdded = 0x2684, + CalendarInviteAlert = 0x2688, + CalendarInviteNotes = 0x268d, + CalendarInviteNotesAlert = 0x268e, + CalendarInviteRemoved = 0x2685, + CalendarInviteRemovedAlert = 0x268a, + CalendarInviteStatus = 0x2686, + CalendarInviteStatusAlert = 0x2689, + CalendarModeratorStatus = 0x2687, + CalendarRaidLockoutAdded = 0x268f, + CalendarRaidLockoutRemoved = 0x2690, + CalendarRaidLockoutUpdated = 0x2691, + CalendarSendCalendar = 0x2681, + CalendarSendEvent = 0x2682, + CalendarSendNumPending = 0x2692, + CameraEffect = 0x2717, + CancelAutoRepeat = 0x26d1, CancelCombat = 0x2945, CancelOrphanSpellVisual = 0x2c46, - CancelScene = 0x2634, + CancelScene = 0x262c, CancelSpellVisual = 0x2c44, CancelSpellVisualKit = 0x2c48, CanDuelResult = 0x2941, - CanRedeemTokenForBalanceResponse = 0x2818, + CanRedeemTokenForBalanceResponse = 0x2804, CapturePointRemoved = 0x292a, CastFailed = 0x2c57, CategoryCooldown = 0x2c16, - ChallengeModeComplete = 0x2607, - ChallengeModeRequestLeadersResult = 0x260c, - ChallengeModeReset = 0x2606, - ChallengeModeStart = 0x2604, - ChallengeModeUpdateDeathCount = 0x2605, + ChallengeModeComplete = 0x2601, + ChallengeModeRequestLeadersResult = 0x2605, + ChallengeModeReset = 0x2600, + ChallengeModeStart = 0x25fe, + ChallengeModeUpdateDeathCount = 0x25ff, ChangePlayerDifficultyResult = 0x3005, - ChangeRealmTicketResponse = 0x280a, + ChangeRealmTicketResponse = 0x27f7, ChannelList = 0x2bc3, ChannelNotify = 0x2bc0, ChannelNotifyJoined = 0x2bc1, ChannelNotifyLeft = 0x2bc2, - CharacterCheckUpgradeResult = 0x27c0, - CharacterLoginFailed = 0x270a, - CharacterObjectTestResponse = 0x278b, - CharacterRenameResult = 0x2766, - CharacterUpgradeAborted = 0x27bf, - CharacterUpgradeComplete = 0x27be, - CharacterUpgradeManualUnrevokeResult = 0x27c1, - CharacterUpgradeStarted = 0x27bd, - CharCustomizeFailure = 0x26e6, - CharCustomizeSuccess = 0x26e7, - CharFactionChangeResult = 0x27aa, + CharacterCheckUpgradeResult = 0x27ae, + CharacterLoginFailed = 0x26f7, + CharacterObjectTestResponse = 0x2779, + CharacterRenameResult = 0x2754, + CharacterUpgradeAborted = 0x27ad, + CharacterUpgradeComplete = 0x27ac, + CharacterUpgradeManualUnrevokeResult = 0x27af, + CharacterUpgradeStarted = 0x27ab, + CharCustomizeFailure = 0x26d5, + CharCustomizeSuccess = 0x26d6, + CharFactionChangeResult = 0x2798, Chat = 0x2bad, ChatAutoResponded = 0x2bb8, ChatDown = 0x2bbd, @@ -1037,88 +1024,89 @@ namespace Framework.Constants CheckAbandonNpe = 0x3019, CheckCharacterNameAvailabilityResult = 0x2584, CheckWargameEntry = 0x2592, - ChromieTimeOpenNpc = 0x27ff, - ChromieTimeSelectExpansionSuccess = 0x2887, - ClaimRafRewardResponse = 0x286e, + ChromieTimeOpenNpc = 0x27ec, + ChromieTimeSelectExpansionSuccess = 0x2875, + ClaimRafRewardResponse = 0x285c, ClearAllSpellCharges = 0x2c27, - ClearBossEmotes = 0x25bc, - ClearCooldown = 0x26b7, + ClearBossEmotes = 0x25b7, + ClearCooldown = 0x26af, ClearCooldowns = 0x2c26, - ClearLossOfControl = 0x266f, + ClearLossOfControl = 0x2667, ClearResurrect = 0x257f, ClearSpellCharges = 0x2c28, ClearTarget = 0x2942, ClearTreasurePickerCache = 0x2aa1, - CloseArtifactForge = 0x27a3, - CloseHeartForge = 0x282b, - CloseItemForge = 0x27a1, - ClubFinderErrorMessage = 0x2866, - ClubFinderGetClubPostingIdsResponse = 0x2869, - ClubFinderLookupClubPostingsList = 0x2867, - ClubFinderResponseCharacterApplicationList = 0x2864, - ClubFinderResponsePostRecruitmentMessage = 0x2868, - ClubFinderUpdateApplications = 0x2865, - CoinRemoved = 0x2614, + CloseArtifactForge = 0x2791, + CloseHeartForge = 0x2817, + CloseItemForge = 0x278f, + ClubFinderErrorMessage = 0x2854, + ClubFinderGetClubPostingIdsResponse = 0x2857, + ClubFinderLookupClubPostingsList = 0x2855, + ClubFinderResponseCharacterApplicationList = 0x2852, + ClubFinderResponsePostRecruitmentMessage = 0x2856, + ClubFinderUpdateApplications = 0x2853, + CoinRemoved = 0x260c, CombatEventFailed = 0x2939, - CommentatorMapInfo = 0x270c, - CommentatorPlayerInfo = 0x270d, - CommentatorStateChanged = 0x270b, - CommerceTokenGetCountResponse = 0x27d3, - CommerceTokenGetLogResponse = 0x27df, - CommerceTokenGetMarketPriceResponse = 0x27d5, - CommerceTokenUpdate = 0x27d4, - ComplaintResult = 0x26a9, - CompleteShipmentResponse = 0x279c, - ConfirmPartyInvite = 0x2817, + CommentatorMapInfo = 0x26f9, + CommentatorPlayerInfo = 0x26fa, + CommentatorStateChanged = 0x26f8, + CommerceTokenGetCountResponse = 0x27c0, + CommerceTokenGetLogResponse = 0x27cc, + CommerceTokenGetMarketPriceResponse = 0x27c2, + CommerceTokenUpdate = 0x27c1, + ComplaintResult = 0x26a1, + CompleteShipmentResponse = 0x278a, + ConfirmPartyInvite = 0x2803, ConnectTo = 0x304d, - ConquestFormulaConstants = 0x2788, - ConsoleWrite = 0x2632, - ConsumableTokenBuyAtMarketPriceResponse = 0x27db, - ConsumableTokenBuyChoiceRequired = 0x27da, - ConsumableTokenCanVeteranBuyResponse = 0x27d9, - ConsumableTokenRedeemConfirmRequired = 0x27dd, - ConsumableTokenRedeemResponse = 0x27de, - ContactList = 0x2789, - ContributionLastUpdateResponse = 0x281e, - ControlUpdate = 0x2644, - ConvertItemsToCurrencyValue = 0x2890, - CooldownCheat = 0x273d, - CooldownEvent = 0x26b6, - CorpseLocation = 0x264b, - CorpseReclaimDelay = 0x274e, - CorpseTransportQuery = 0x2717, + ConquestFormulaConstants = 0x2776, + ConsoleWrite = 0x262a, + ConsumableTokenBuyAtMarketPriceResponse = 0x27c8, + ConsumableTokenBuyChoiceRequired = 0x27c7, + ConsumableTokenCanVeteranBuyResponse = 0x27c6, + ConsumableTokenRedeemConfirmRequired = 0x27ca, + ConsumableTokenRedeemResponse = 0x27cb, + ContactList = 0x2777, + ContributionLastUpdateResponse = 0x280a, + ControlUpdate = 0x263c, + ConvertItemsToCurrencyValue = 0x287e, + CooldownCheat = 0x272a, + CooldownEvent = 0x26ae, + CorpseLocation = 0x2643, + CorpseReclaimDelay = 0x273b, + CorpseTransportQuery = 0x2704, CovenantCallingsAvailabilityResponse = 0x2aa3, - CovenantPreviewOpenNpc = 0x2800, - CovenantRenownOpenNpc = 0x288f, - CovenantRenownSendCatchupState = 0x2891, - CreateChar = 0x2704, - CreateShipmentResponse = 0x279b, - CriteriaDeleted = 0x26eb, - CriteriaUpdate = 0x26e5, - CrossedInebriationThreshold = 0x26bf, - CustomLoadScreen = 0x25ca, + CovenantPreviewOpenNpc = 0x27ed, + CovenantRenownOpenNpc = 0x287d, + CovenantRenownSendCatchupState = 0x287f, + CreateChar = 0x26f3, + CreateShipmentResponse = 0x2789, + CriteriaDeleted = 0x26da, + CriteriaUpdate = 0x26d4, + CrossedInebriationThreshold = 0x26b6, + CustomLoadScreen = 0x25c5, DailyQuestsReset = 0x2a80, - DamageCalcLog = 0x27c8, - DbReply = 0x2594, - DeathReleaseLoc = 0x26d8, - DebugMenuManagerFullUpdate = 0x2651, + DamageCalcLog = 0x27b5, + DbReply = 0x290e, + DeathReleaseLoc = 0x26c7, + DebugMenuManagerFullUpdate = 0x2649, DefenseMessage = 0x2bb6, - DeleteChar = 0x2705, - DeleteExpiredMissionsResult = 0x2976, - DestroyArenaUnit = 0x2746, - DestructibleBuildingDamage = 0x26fc, + DeleteChar = 0x26f4, + DeleteExpiredMissionsResult = 0x2980, + DestroyArenaUnit = 0x2733, + DestructibleBuildingDamage = 0x26eb, DifferentInstanceFromParty = 0x258c, - DisconnectReason = 0x27f1, - DisenchantCredit = 0x25aa, + DisconnectReason = 0x27de, + DisenchantCredit = 0x25a5, DismountResult = 0x257c, DispelFailed = 0x2c30, - DisplayGameError = 0x25a4, + DisplayGameError = 0x259f, DisplayPlayerChoice = 0x2ffc, - DisplayPromotion = 0x2648, + DisplayPromotion = 0x2640, DisplayQuestPopup = 0x2a9e, - DisplayToast = 0x2621, - DisplayWorldText = 0x27f0, - DontAutoPushSpellsToActionBar = 0x25dd, + DisplaySoulbindUpdateMessage = 0x2883, + DisplayToast = 0x2619, + DisplayWorldText = 0x27dd, + DontAutoPushSpellsToActionBar = 0x25d8, DropNewConnection = 0x304c, DuelArranged = 0x293b, DuelComplete = 0x293f, @@ -1127,147 +1115,150 @@ namespace Framework.Constants DuelOutOfBounds = 0x293c, DuelRequested = 0x293a, DuelWinner = 0x2940, - DurabilityDamageDeath = 0x274a, - Emote = 0x27c9, - EnableBarberShop = 0x26ba, - EnchantmentLog = 0x2718, - EncounterEnd = 0x2781, - EncounterStart = 0x2780, - EndLightningStorm = 0x26a6, + DurabilityDamageDeath = 0x2737, + Emote = 0x27b6, + EnableBarberShop = 0x26b1, + EnchantmentLog = 0x2705, + EncounterEnd = 0x276f, + EncounterStart = 0x276e, + EndLightningStorm = 0x269e, EnterEncryptedMode = 0x3049, EnumCharactersResult = 0x2583, - EnumVasPurchaseStatesResponse = 0x27f6, + EnumVasPurchaseStatesResponse = 0x27e3, EnvironmentalDamageLog = 0x2c21, - EquipmentSetId = 0x26af, + EquipmentSetId = 0x26a7, ExpectedSpamRecords = 0x2bb1, - ExplorationExperience = 0x2763, - ExternalTransactionIdGenerated = 0x288e, - FactionBonusInfo = 0x2729, + ExplorationExperience = 0x2750, + ExternalTransactionIdGenerated = 0x287c, + FactionBonusInfo = 0x2716, FailedPlayerCondition = 0x2ffa, - FailedQuestTurnIn = 0x2814, - FeatureSystemStatus = 0x25c0, - FeatureSystemStatusGlueScreen = 0x25c1, - FeignDeathResisted = 0x2749, - FishEscaped = 0x26cd, - FishNotHooked = 0x26cc, + FailedQuestTurnIn = 0x2800, + FeatureSystemStatus = 0x25bb, + FeatureSystemStatus2 = 0x2884, + FeatureSystemStatusGlueScreen = 0x25bc, + FeignDeathResisted = 0x2736, + FishEscaped = 0x26c4, + FishNotHooked = 0x26c3, FlightSplineSync = 0x2e29, - ForcedDeathUpdate = 0x26d9, - ForceAnim = 0x2755, - ForceAnimations = 0x2756, - ForceObjectRelink = 0x2647, - FriendStatus = 0x278a, - GainMawPower = 0x27e4, - GameObjectActivateAnimKit = 0x25c3, - GameObjectBase = 0x282c, - GameObjectCustomAnim = 0x25c4, - GameObjectDespawn = 0x25c5, + ForcedDeathUpdate = 0x26c8, + ForceAnim = 0x2742, + ForceAnimations = 0x2743, + ForceObjectRelink = 0x263f, + FriendStatus = 0x2778, + GainMawPower = 0x27d1, + GameObjectActivateAnimKit = 0x25be, + GameObjectBase = 0x2818, + GameObjectCustomAnim = 0x25bf, + GameObjectDespawn = 0x25c0, GameObjectPlaySpellVisual = 0x2c4b, GameObjectPlaySpellVisualKit = 0x2c4a, - GameObjectResetState = 0x2723, - GameObjectSetStateLocal = 0x2806, - GameObjectUiLink = 0x271f, - GameSpeedSet = 0x267f, - GameTimeSet = 0x2711, - GameTimeUpdate = 0x2710, - GarrisonActivateMissionBonusAbility = 0x2978, - GarrisonAddEvent = 0x299b, - GarrisonAddFollowerResult = 0x296a, - GarrisonAddMissionResult = 0x296e, - GarrisonApplyTalentSocketDataChanges = 0x29a0, - GarrisonAssignFollowerToBuildingResult = 0x2980, - GarrisonAutoTroopMinLevelUpdateResult = 0x29a2, - GarrisonBuildingActivated = 0x295f, - GarrisonBuildingRemoved = 0x2958, - GarrisonBuildingSetActiveSpecializationResult = 0x295a, - GarrisonChangeMissionStartTimeResult = 0x2971, - GarrisonClearCollection = 0x299a, - GarrisonClearEventList = 0x299d, - GarrisonCollectionRemoveEntry = 0x2999, - GarrisonCollectionUpdateEntry = 0x2998, - GarrisonCompleteBuildingConstructionResult = 0x2990, - GarrisonCompleteMissionResult = 0x2970, - GarrisonCreateResult = 0x2960, - GarrisonDeleteMissionResult = 0x2977, - GarrisonDeleteResult = 0x2989, - GarrisonFollowerActivationsSet = 0x297f, - GarrisonFollowerChangedFlags = 0x297d, - GarrisonFollowerChangedItemLevel = 0x297b, - GarrisonFollowerChangedQuality = 0x297c, - GarrisonFollowerChangedXp = 0x297a, - GarrisonFollowerFatigueCleared = 0x297e, - GarrisonGenerateFollowersResult = 0x2987, - GarrisonGetClassSpecCategoryInfoResult = 0x2969, - GarrisonGetRecallPortalLastUsedTimeResult = 0x2972, - GarrisonIsUpgradeableResponse = 0x2992, - GarrisonLearnBlueprintResult = 0x295b, - GarrisonLearnSpecializationResult = 0x2959, - GarrisonListCompletedMissionsCheatResult = 0x2993, - GarrisonListFollowersCheatResult = 0x296d, - GarrisonMapDataResponse = 0x2995, - GarrisonMissionBonusRollResult = 0x2974, - GarrisonMissionRequestRewardInfoResponse = 0x2996, - GarrisonMissionStartConditionUpdate = 0x2979, - GarrisonOpenArchitect = 0x298a, - GarrisonOpenCrafter = 0x298b, - GarrisonOpenMissionNpc = 0x298c, - GarrisonOpenRecruitmentNpc = 0x2984, - GarrisonOpenTalentNpc = 0x2985, - GarrisonPlaceBuildingResult = 0x2957, - GarrisonPlotPlaced = 0x2955, - GarrisonPlotRemoved = 0x2956, - GarrisonRecruitFollowerResult = 0x2988, - GarrisonRemoteInfo = 0x295e, - GarrisonRemoveEvent = 0x299c, - GarrisonRemoveFollowerAbilityResult = 0x2983, - GarrisonRemoveFollowerFromBuildingResult = 0x2981, - GarrisonRemoveFollowerResult = 0x296b, - GarrisonRenameFollowerResult = 0x2982, - GarrisonRequestBlueprintAndSpecializationDataResult = 0x295d, - GarrisonResearchTalentResult = 0x2962, - GarrisonResetTalentTree = 0x2967, - GarrisonResetTalentTreeSocketData = 0x2968, - GarrisonStartMissionResult = 0x296f, - GarrisonSwapBuildingsResponse = 0x298f, - GarrisonSwitchTalentTreeBranch = 0x299e, - GarrisonTalentCompleted = 0x2963, - GarrisonTalentRemoved = 0x2964, - GarrisonTalentRemoveSocketData = 0x2966, - GarrisonTalentUpdateSocketData = 0x2965, - GarrisonTalentWorldQuestUnlocksResponse = 0x299f, - GarrisonUnlearnBlueprintResult = 0x295c, - GarrisonUpdateFollower = 0x296c, - GarrisonUpdateGarrisonMonumentSelections = 0x2991, - GarrisonUpdateMissionCheatResult = 0x29a1, - GarrisonUpgradeResult = 0x2961, - GarrisonUseRecallPortalResult = 0x2973, + GameObjectResetState = 0x2710, + GameObjectSetStateLocal = 0x27f3, + GameObjectUiLink = 0x270c, + GameSpeedSet = 0x2677, + GameTimeSet = 0x26fe, + GameTimeUpdate = 0x26fd, + GarrisonActivateMissionBonusAbility = 0x2982, + GarrisonAddEvent = 0x29a5, + GarrisonAddFollowerResult = 0x2974, + GarrisonAddMissionResult = 0x2978, + GarrisonAddSpecGroups = 0x29a8, + GarrisonApplyTalentSocketDataChanges = 0x29ac, + GarrisonAssignFollowerToBuildingResult = 0x298a, + GarrisonAutoTroopMinLevelUpdateResult = 0x29ae, + GarrisonBuildingActivated = 0x2969, + GarrisonBuildingRemoved = 0x2962, + GarrisonBuildingSetActiveSpecializationResult = 0x2964, + GarrisonChangeMissionStartTimeResult = 0x297b, + GarrisonClearCollection = 0x29a4, + GarrisonClearEventList = 0x29a7, + GarrisonClearSpecGroups = 0x29a9, + GarrisonCollectionRemoveEntry = 0x29a3, + GarrisonCollectionUpdateEntry = 0x29a2, + GarrisonCompleteBuildingConstructionResult = 0x299a, + GarrisonCompleteMissionResult = 0x297a, + GarrisonCreateResult = 0x296a, + GarrisonDeleteMissionResult = 0x2981, + GarrisonDeleteResult = 0x2993, + GarrisonFollowerActivationsSet = 0x2989, + GarrisonFollowerChangedFlags = 0x2987, + GarrisonFollowerChangedItemLevel = 0x2985, + GarrisonFollowerChangedQuality = 0x2986, + GarrisonFollowerChangedXp = 0x2984, + GarrisonFollowerFatigueCleared = 0x2988, + GarrisonGenerateFollowersResult = 0x2991, + GarrisonGetClassSpecCategoryInfoResult = 0x2973, + GarrisonGetRecallPortalLastUsedTimeResult = 0x297c, + GarrisonIsUpgradeableResponse = 0x299c, + GarrisonLearnBlueprintResult = 0x2965, + GarrisonLearnSpecializationResult = 0x2963, + GarrisonListCompletedMissionsCheatResult = 0x299d, + GarrisonListFollowersCheatResult = 0x2977, + GarrisonMapDataResponse = 0x299f, + GarrisonMissionBonusRollResult = 0x297e, + GarrisonMissionRequestRewardInfoResponse = 0x29a0, + GarrisonMissionStartConditionUpdate = 0x2983, + GarrisonOpenArchitect = 0x2994, + GarrisonOpenCrafter = 0x2995, + GarrisonOpenMissionNpc = 0x2996, + GarrisonOpenRecruitmentNpc = 0x298e, + GarrisonOpenTalentNpc = 0x298f, + GarrisonPlaceBuildingResult = 0x2961, + GarrisonPlotPlaced = 0x295f, + GarrisonPlotRemoved = 0x2960, + GarrisonRecruitFollowerResult = 0x2992, + GarrisonRemoteInfo = 0x2968, + GarrisonRemoveEvent = 0x29a6, + GarrisonRemoveFollowerAbilityResult = 0x298d, + GarrisonRemoveFollowerFromBuildingResult = 0x298b, + GarrisonRemoveFollowerResult = 0x2975, + GarrisonRenameFollowerResult = 0x298c, + GarrisonRequestBlueprintAndSpecializationDataResult = 0x2967, + GarrisonResearchTalentResult = 0x296c, + GarrisonResetTalentTree = 0x2971, + GarrisonResetTalentTreeSocketData = 0x2972, + GarrisonStartMissionResult = 0x2979, + GarrisonSwapBuildingsResponse = 0x2999, + GarrisonSwitchTalentTreeBranch = 0x29aa, + GarrisonTalentCompleted = 0x296d, + GarrisonTalentRemoved = 0x296e, + GarrisonTalentRemoveSocketData = 0x2970, + GarrisonTalentUpdateSocketData = 0x296f, + GarrisonTalentWorldQuestUnlocksResponse = 0x29ab, + GarrisonUnlearnBlueprintResult = 0x2966, + GarrisonUpdateFollower = 0x2976, + GarrisonUpdateGarrisonMonumentSelections = 0x299b, + GarrisonUpdateMissionCheatResult = 0x29ad, + GarrisonUpgradeResult = 0x296b, + GarrisonUseRecallPortalResult = 0x297d, GenerateRandomCharacterNameResult = 0x2585, - GenerateSsoTokenResponse = 0x281f, - GetAccountCharacterListResult = 0x2764, - GetGarrisonInfoResult = 0x2954, - GetLandingPageShipmentsResponse = 0x279e, - GetRemainingGameTimeResponse = 0x27dc, - GetSelectedTrophyIdResponse = 0x27c5, - GetShipmentsOfTypeResponse = 0x279d, - GetShipmentInfoResponse = 0x2799, - GetTrophyListResponse = 0x27c4, - GetVasAccountCharacterListResult = 0x27f2, - GetVasTransferTargetRealmListResult = 0x27f3, + GenerateSsoTokenResponse = 0x280b, + GetAccountCharacterListResult = 0x2752, + GetGarrisonInfoResult = 0x295e, + GetLandingPageShipmentsResponse = 0x278c, + GetRemainingGameTimeResponse = 0x27c9, + GetSelectedTrophyIdResponse = 0x27b3, + GetShipmentsOfTypeResponse = 0x278b, + GetShipmentInfoResponse = 0x2787, + GetTrophyListResponse = 0x27b2, + GetVasAccountCharacterListResult = 0x27df, + GetVasTransferTargetRealmListResult = 0x27e0, GmPlayerInfo = 0x3006, GmRequestPlayerInfo = 0x2ffb, - GmTicketCaseStatus = 0x26a1, - GmTicketSystemStatus = 0x26a0, - GodMode = 0x26ff, + GmTicketCaseStatus = 0x2699, + GmTicketSystemStatus = 0x2698, + GodMode = 0x26ee, GossipComplete = 0x2a97, GossipMessage = 0x2a98, - GossipPoi = 0x2796, + GossipPoi = 0x2784, GossipQuestUpdate = 0x2a99, GossipRefreshOptions = 0x2aa6, GroupActionThrottled = 0x2590, - GroupAutoKick = 0x2794, - GroupDecline = 0x2791, - GroupDestroyed = 0x2793, - GroupNewLeader = 0x262a, - GroupUninvite = 0x2792, + GroupAutoKick = 0x2782, + GroupDecline = 0x277f, + GroupDestroyed = 0x2781, + GroupNewLeader = 0x2622, + GroupUninvite = 0x2780, GuildAchievementDeleted = 0x29c5, GuildAchievementEarned = 0x29c4, GuildAchievementMembers = 0x29c7, @@ -1321,59 +1312,59 @@ namespace Framework.Constants GuildRoster = 0x29bb, GuildRosterUpdate = 0x29bc, GuildSendRankChange = 0x29b9, - HealthUpdate = 0x26d0, - HighestThreatUpdate = 0x26de, - HotfixConnect = 0x2597, - HotfixMessage = 0x2596, - InitializeFactions = 0x2728, + HealthUpdate = 0x26c5, + HighestThreatUpdate = 0x26cd, + HotfixConnect = 0x2911, + HotfixMessage = 0x2910, + InitializeFactions = 0x2715, InitialSetup = 0x2580, - InitWorldStates = 0x274b, - InspectResult = 0x262e, - InstanceEncounterChangePriority = 0x27b0, - InstanceEncounterDisengageUnit = 0x27af, - InstanceEncounterEnd = 0x27b8, - InstanceEncounterEngageUnit = 0x27ae, - InstanceEncounterGainCombatResurrectionCharge = 0x27ba, - InstanceEncounterInCombatResurrection = 0x27b9, - InstanceEncounterObjectiveComplete = 0x27b3, - InstanceEncounterObjectiveStart = 0x27b2, - InstanceEncounterObjectiveUpdate = 0x27b7, - InstanceEncounterPhaseShiftChanged = 0x27bb, - InstanceEncounterStart = 0x27b4, - InstanceEncounterTimerStart = 0x27b1, - InstanceEncounterUpdateAllowReleaseInProgress = 0x27b6, - InstanceEncounterUpdateSuppressRelease = 0x27b5, - InstanceGroupSizeChanged = 0x26fd, - InstanceInfo = 0x2631, - InstanceReset = 0x2684, - InstanceResetFailed = 0x2685, - InstanceSaveCreated = 0x277f, + InitWorldStates = 0x2738, + InspectResult = 0x2626, + InstanceEncounterChangePriority = 0x279e, + InstanceEncounterDisengageUnit = 0x279d, + InstanceEncounterEnd = 0x27a6, + InstanceEncounterEngageUnit = 0x279c, + InstanceEncounterGainCombatResurrectionCharge = 0x27a8, + InstanceEncounterInCombatResurrection = 0x27a7, + InstanceEncounterObjectiveComplete = 0x27a1, + InstanceEncounterObjectiveStart = 0x27a0, + InstanceEncounterObjectiveUpdate = 0x27a5, + InstanceEncounterPhaseShiftChanged = 0x27a9, + InstanceEncounterStart = 0x27a2, + InstanceEncounterTimerStart = 0x279f, + InstanceEncounterUpdateAllowReleaseInProgress = 0x27a4, + InstanceEncounterUpdateSuppressRelease = 0x27a3, + InstanceGroupSizeChanged = 0x26ec, + InstanceInfo = 0x2629, + InstanceReset = 0x267c, + InstanceResetFailed = 0x267d, + InstanceSaveCreated = 0x276d, InterruptPowerRegen = 0x2c59, - InvalidatePageText = 0x26d4, + InvalidatePageText = 0x2918, InvalidatePlayer = 0x2fff, - InvalidPromotionCode = 0x2757, + InvalidPromotionCode = 0x2744, InventoryChangeFailure = 0x2da5, - InventoryFixupComplete = 0x2816, - InventoryFullOverflow = 0x2827, - IslandsMissionNpc = 0x27fc, - IslandAzeriteGain = 0x2760, - IslandComplete = 0x2761, + InventoryFixupComplete = 0x2802, + InventoryFullOverflow = 0x2813, + IslandsMissionNpc = 0x27e9, + IslandAzeriteGain = 0x274d, + IslandComplete = 0x274e, IsQuestCompleteResponse = 0x2a84, - ItemChanged = 0x26ee, - ItemCooldown = 0x27c7, - ItemEnchantTimeUpdate = 0x2759, - ItemExpirePurchaseRefund = 0x25a3, - ItemInteractionComplete = 0x2886, - ItemPurchaseRefundResult = 0x25a1, - ItemPushResult = 0x2620, - ItemTimeUpdate = 0x2758, - KickReason = 0x2687, + ItemChanged = 0x26dd, + ItemCooldown = 0x27b4, + ItemEnchantTimeUpdate = 0x2746, + ItemExpirePurchaseRefund = 0x259e, + ItemInteractionComplete = 0x2874, + ItemPurchaseRefundResult = 0x259c, + ItemPushResult = 0x2618, + ItemTimeUpdate = 0x2745, + KickReason = 0x267f, LearnedSpells = 0x2c4d, - LearnPvpTalentFailed = 0x25d1, - LearnTalentFailed = 0x25d0, - LegacyLootRules = 0x282d, - LevelLinkingResult = 0x286c, - LevelUpInfo = 0x26ed, + LearnPvpTalentFailed = 0x25cc, + LearnTalentFailed = 0x25cb, + LegacyLootRules = 0x2819, + LevelLinkingResult = 0x285a, + LevelUpInfo = 0x26dc, LfgBootPlayer = 0x2a35, LfgDisabled = 0x2a33, LfgExpandSearchPrompt = 0x2a3b, @@ -1408,44 +1399,44 @@ namespace Framework.Constants LfGuildCommandResult = 0x29d0, LfGuildPost = 0x29cd, LfGuildRecruits = 0x29cf, - LiveRegionAccountRestoreResult = 0x2771, - LiveRegionCharacterCopyResult = 0x2770, - LiveRegionGetAccountCharacterListResult = 0x2765, - LiveRegionKeyBindingsCopyResult = 0x2772, - LoadCufProfiles = 0x25bd, - LoadEquipmentSet = 0x2713, - LoginSetTimeSpeed = 0x2712, - LoginVerifyWorld = 0x259e, - LogoutCancelAck = 0x2683, - LogoutComplete = 0x2682, - LogoutResponse = 0x2681, - LogXpGain = 0x26e9, - LootAllPassed = 0x261e, - LootList = 0x2745, - LootMoneyNotify = 0x2619, - LootRelease = 0x2618, - LootReleaseAll = 0x2617, - LootRemoved = 0x2613, - LootResponse = 0x2612, - LootRoll = 0x261b, - LootRollsComplete = 0x261d, - LootRollWon = 0x261f, - LossOfControlAuraUpdate = 0x266c, - MailCommandResult = 0x2638, - MailListResult = 0x275a, - MailQueryNextTimeResult = 0x275b, + LiveRegionAccountRestoreResult = 0x275f, + LiveRegionCharacterCopyResult = 0x275e, + LiveRegionGetAccountCharacterListResult = 0x2753, + LiveRegionKeyBindingsCopyResult = 0x2760, + LoadCufProfiles = 0x25b8, + LoadEquipmentSet = 0x2700, + LoginSetTimeSpeed = 0x26ff, + LoginVerifyWorld = 0x2599, + LogoutCancelAck = 0x267b, + LogoutComplete = 0x267a, + LogoutResponse = 0x2679, + LogXpGain = 0x26d8, + LootAllPassed = 0x2616, + LootList = 0x2732, + LootMoneyNotify = 0x2611, + LootRelease = 0x2610, + LootReleaseAll = 0x260f, + LootRemoved = 0x260b, + LootResponse = 0x260a, + LootRoll = 0x2613, + LootRollsComplete = 0x2615, + LootRollWon = 0x2617, + LossOfControlAuraUpdate = 0x2664, + MailCommandResult = 0x2630, + MailListResult = 0x2747, + MailQueryNextTimeResult = 0x2748, MapObjectivesInit = 0x294a, - MapObjEvents = 0x25c6, - MasterLootCandidateList = 0x261c, + MapObjEvents = 0x25c1, + MasterLootCandidateList = 0x2614, MessageBox = 0x2576, - MinimapPing = 0x26cb, + MinimapPing = 0x26c2, MirrorImageComponentedData = 0x2c14, MirrorImageCreatureData = 0x2c13, - MissileCancel = 0x25c7, - ModifyCooldown = 0x2767, + MissileCancel = 0x25c2, + ModifyCooldown = 0x2755, Motd = 0x2baf, MountResult = 0x257b, - MovementEnforcementAlert = 0x285c, + MovementEnforcementAlert = 0x284a, MoveApplyMovementForce = 0x2e13, MoveDisableCollision = 0x2e0f, MoveDisableDoubleJump = 0x2dfd, @@ -1530,83 +1521,81 @@ namespace Framework.Constants MoveUpdateTeleport = 0x2de1, MoveUpdateTurnRate = 0x2ddd, MoveUpdateWalkSpeed = 0x2dd8, - MultiFloorLeaveFloor = 0x27e1, - MultiFloorNewFloor = 0x27e0, - MythicPlusAllMapStats = 0x2609, - MythicPlusCurrentAffixes = 0x260b, - MythicPlusNewSeasonRecord = 0x260f, - MythicPlusNewWeekRecord = 0x260e, - MythicPlusSeasonData = 0x260a, - MythicPlusWeeklyRewardResponse = 0x2608, - NeutralPlayerFactionSelectResult = 0x25d8, - NewTaxiPath = 0x267c, - NewWorld = 0x259d, + MultiFloorLeaveFloor = 0x27ce, + MultiFloorNewFloor = 0x27cd, + MythicPlusAllMapStats = 0x2602, + MythicPlusCurrentAffixes = 0x2604, + MythicPlusNewWeekRecord = 0x2607, + MythicPlusSeasonData = 0x2603, + NeutralPlayerFactionSelectResult = 0x25d3, + NewTaxiPath = 0x2674, + NewWorld = 0x2598, NotifyDestLocSpellCast = 0x2c43, - NotifyMissileTrajectoryCollision = 0x26a8, - NotifyMoney = 0x25a0, - NotifyReceivedMail = 0x2639, - OfferPetitionError = 0x26b3, - OnCancelExpectedRideVehicleAura = 0x26ea, + NotifyMissileTrajectoryCollision = 0x26a0, + NotifyMoney = 0x259b, + NotifyReceivedMail = 0x2631, + OfferPetitionError = 0x26ab, + OnCancelExpectedRideVehicleAura = 0x26d9, OnMonsterMove = 0x2dd4, - OpenAnimaDiversionUi = 0x2720, - OpenArtifactForge = 0x27a2, + OpenAnimaDiversionUi = 0x270d, + OpenArtifactForge = 0x2790, OpenContainer = 0x2da6, - OpenHeartForge = 0x282a, - OpenItemForge = 0x27a0, + OpenHeartForge = 0x2816, + OpenItemForge = 0x278e, OpenLfgDungeonFinder = 0x2a31, - OpenShipmentNpcFromGossip = 0x2798, - OpenShipmentNpcResult = 0x279a, - OverrideLight = 0x26b9, - PageText = 0x271e, - PartyCommandResult = 0x2795, - PartyInvite = 0x25be, - PartyKillLog = 0x275e, - PartyMemberFullState = 0x275d, - PartyMemberPartialState = 0x275c, - PartyNotifyLfgLeaderChange = 0x288c, - PartyUpdate = 0x25f2, - PauseMirrorTimer = 0x2715, - PendingRaidLock = 0x26fb, - PetitionAlreadySigned = 0x25a6, + OpenShipmentNpcFromGossip = 0x2786, + OpenShipmentNpcResult = 0x2788, + OverrideLight = 0x26b0, + PageText = 0x270b, + PartyCommandResult = 0x2783, + PartyInvite = 0x25b9, + PartyKillLog = 0x274b, + PartyMemberFullState = 0x274a, + PartyMemberPartialState = 0x2749, + PartyNotifyLfgLeaderChange = 0x287a, + PartyUpdate = 0x25ec, + PauseMirrorTimer = 0x2702, + PendingRaidLock = 0x26ea, + PetitionAlreadySigned = 0x25a1, PetitionRenameGuildResponse = 0x29fa, - PetitionShowList = 0x26bc, - PetitionShowSignatures = 0x26bd, - PetitionSignResults = 0x2750, - PetActionFeedback = 0x274d, - PetActionSound = 0x269e, - PetAdded = 0x259a, - PetBattleChatRestricted = 0x25ff, - PetBattleDebugQueueDumpResponse = 0x2673, - PetBattleFinalizeLocation = 0x25f8, - PetBattleFinalRound = 0x25fd, - PetBattleFinished = 0x25fe, - PetBattleFirstRound = 0x25fa, - PetBattleInitialUpdate = 0x25f9, - PetBattleMaxGameLengthWarning = 0x2600, - PetBattlePvpChallenge = 0x25f7, - PetBattleQueueProposeMatch = 0x2636, - PetBattleQueueStatus = 0x2637, - PetBattleReplacementsMade = 0x25fc, - PetBattleRequestFailed = 0x25f6, - PetBattleRoundResult = 0x25fb, - PetBattleSlotUpdates = 0x25e9, + PetitionShowList = 0x26b3, + PetitionShowSignatures = 0x26b4, + PetitionSignResults = 0x273d, + PetActionFeedback = 0x273a, + PetActionSound = 0x2696, + PetAdded = 0x2595, + PetBattleChatRestricted = 0x25f9, + PetBattleDebugQueueDumpResponse = 0x266b, + PetBattleFinalizeLocation = 0x25f2, + PetBattleFinalRound = 0x25f7, + PetBattleFinished = 0x25f8, + PetBattleFirstRound = 0x25f4, + PetBattleInitialUpdate = 0x25f3, + PetBattleMaxGameLengthWarning = 0x25fa, + PetBattlePvpChallenge = 0x25f1, + PetBattleQueueProposeMatch = 0x262e, + PetBattleQueueStatus = 0x262f, + PetBattleReplacementsMade = 0x25f6, + PetBattleRequestFailed = 0x25f0, + PetBattleRoundResult = 0x25f5, + PetBattleSlotUpdates = 0x25e3, PetCastFailed = 0x2c58, PetClearSpells = 0x2c24, - PetDismissSound = 0x269f, - PetGodMode = 0x2679, - PetGuids = 0x2707, + PetDismissSound = 0x2697, + PetGodMode = 0x2671, + PetGuids = 0x26f6, PetLearnedSpells = 0x2c4f, PetMode = 0x258b, - PetNameInvalid = 0x26c1, + PetNameInvalid = 0x26b8, PetNewlyTamed = 0x2589, PetSlotUpdated = 0x258a, PetSpellsMessage = 0x2c25, - PetStableList = 0x259b, - PetStableResult = 0x259c, - PetTameFailure = 0x26b0, + PetStableList = 0x2596, + PetStableResult = 0x2597, + PetTameFailure = 0x26a8, PetUnlearnedSpells = 0x2c50, PhaseShiftChange = 0x2578, - PlayedTime = 0x26da, + PlayedTime = 0x26c9, PlayerAzeriteItemEquippedStatusChanged = 0x3015, PlayerAzeriteItemGains = 0x3014, PlayerBonusRollFailed = 0x3017, @@ -1617,27 +1606,28 @@ namespace Framework.Constants PlayerIsAdventureMapPoiValid = 0x300a, PlayerOpenSubscriptionInterstitial = 0x300f, PlayerSaveGuildEmblem = 0x29f9, + PlayerShowUiEventToast = 0x301a, PlayerSkinned = 0x3007, PlayerTabardVendorActivate = 0x3008, PlayerTutorialHighlightSpell = 0x300e, PlayerTutorialUnhighlightSpell = 0x300d, - PlayMusic = 0x276c, - PlayObjectSound = 0x276d, - PlayOneShotAnimKit = 0x2735, + PlayMusic = 0x275a, + PlayObjectSound = 0x275b, + PlayOneShotAnimKit = 0x2722, PlayOrphanSpellVisual = 0x2c47, - PlayScene = 0x2633, - PlaySound = 0x276b, - PlaySpeakerbotSound = 0x276e, + PlayScene = 0x262b, + PlaySound = 0x2759, + PlaySpeakerbotSound = 0x275c, PlaySpellVisual = 0x2c45, PlaySpellVisualKit = 0x2c49, - PlayTimeWarning = 0x2701, + PlayTimeWarning = 0x26f0, Pong = 0x304e, - PowerUpdate = 0x26d1, + PowerUpdate = 0x26c6, PreloadChildMap = 0x2579, - PrepopulateNameCache = 0x285f, - PreRessurect = 0x276a, - PrintNotification = 0x25c9, - ProcResist = 0x275f, + PrepopulateNameCache = 0x284d, + PreRessurect = 0x2758, + PrintNotification = 0x25c4, + ProcResist = 0x274c, PushSpellToActionBar = 0x2c51, PvpCredit = 0x2944, PvpMatchComplete = 0x294e, @@ -1645,20 +1635,22 @@ namespace Framework.Constants PvpMatchStart = 0x294d, PvpMatchStatistics = 0x2931, PvpOptionsEnabled = 0x2933, - QueryBattlePetNameResponse = 0x26d6, - QueryCreatureResponse = 0x26ce, - QueryGameObjectResponse = 0x26cf, - QueryGarrisonPetNameResponse = 0x2994, + QueryBattlePetNameResponse = 0x291a, + QueryCreatureResponse = 0x2914, + QueryGameObjectResponse = 0x2915, + QueryGarrisonPetNameResponse = 0x299e, + QueryGuildFollowInfoResponse = 0x29e7, QueryGuildInfoResponse = 0x29e5, - QueryItemTextResponse = 0x27c6, - QueryNpcTextResponse = 0x26d2, - QueryPageTextResponse = 0x26d3, - QueryPetitionResponse = 0x26d7, - QueryPetNameResponse = 0x26d5, + QueryItemTextResponse = 0x291e, + QueryNpcTextResponse = 0x2916, + QueryPageTextResponse = 0x2917, + QueryPetitionResponse = 0x291b, + QueryPetNameResponse = 0x2919, QueryPlayerNameByCommunityIdResponse = 0x3003, QueryPlayerNameResponse = 0x3002, QueryQuestInfoResponse = 0x2a96, - QueryTimeResponse = 0x26e8, + QueryRealmGuildMasterInfoResponse = 0x29e6, + QueryTimeResponse = 0x26d7, QuestCompletionNpcResponse = 0x2a81, QuestConfirmAccept = 0x2a8f, QuestForceRemoved = 0x2a9c, @@ -1672,139 +1664,139 @@ namespace Framework.Constants QuestGiverStatus = 0x2a9b, QuestGiverStatusMultiple = 0x2a91, QuestLogFull = 0x2a87, + QuestNonLogUpdateComplete = 0x2a88, QuestPoiQueryResponse = 0x2a9d, QuestPoiUpdateResponse = 0x2a9f, QuestPushResult = 0x2a90, - QuestSessionInfoResponse = 0x2882, - QuestSessionReadyCheck = 0x2870, - QuestSessionReadyCheckResponse = 0x2871, - QuestSessionResult = 0x286f, + QuestSessionInfoResponse = 0x2870, + QuestSessionReadyCheck = 0x285e, + QuestSessionReadyCheckResponse = 0x285f, + QuestSessionResult = 0x285d, QuestUpdateAddCredit = 0x2a8c, QuestUpdateAddCreditSimple = 0x2a8d, QuestUpdateAddPvpCredit = 0x2a8e, QuestUpdateComplete = 0x2a89, - QuestUpdateCompleteBySpell = 0x2a88, QuestUpdateFailed = 0x2a8a, QuestUpdateFailedTimer = 0x2a8b, - QueueSummaryUpdate = 0x2815, - RafAccountInfo = 0x286d, - RafActivityStateChanged = 0x287e, - RaidDifficultySet = 0x27ab, - RaidGroupOnly = 0x27ad, + QueueSummaryUpdate = 0x2801, + RafAccountInfo = 0x285b, + RafActivityStateChanged = 0x286c, + RaidDifficultySet = 0x2799, + RaidGroupOnly = 0x279b, RaidInstanceMessage = 0x2bb4, - RaidMarkersChanged = 0x25a7, - RandomRoll = 0x262d, + RaidMarkersChanged = 0x25a2, + RandomRoll = 0x2625, RatedPvpInfo = 0x2930, - ReadyCheckCompleted = 0x25f5, - ReadyCheckResponse = 0x25f4, - ReadyCheckStarted = 0x25f3, - ReadItemResultFailed = 0x27a7, - ReadItemResultOk = 0x279f, - RealmLookupInfo = 0x27cc, - RealmQueryResponse = 0x26b8, - ReattachResurrect = 0x274f, - RecruitAFriendFailure = 0x26be, - RefreshComponent = 0x264d, + ReadyCheckCompleted = 0x25ef, + ReadyCheckResponse = 0x25ee, + ReadyCheckStarted = 0x25ed, + ReadItemResultFailed = 0x2795, + ReadItemResultOk = 0x278d, + RealmLookupInfo = 0x27b9, + RealmQueryResponse = 0x2913, + ReattachResurrect = 0x273c, + RecruitAFriendFailure = 0x26b5, + RefreshComponent = 0x2645, RefreshSpellHistory = 0x2c2c, - RemoveItemPassive = 0x25ae, - RemoveLossOfControl = 0x266e, + RemoveItemPassive = 0x25a9, + RemoveLossOfControl = 0x2666, RemoveSpellFromActionBar = 0x2c52, - ReplaceTrophyResponse = 0x27c3, + ReplaceTrophyResponse = 0x27b1, ReportPvpPlayerAfkResult = 0x3001, RequestCemeteryListResponse = 0x2591, RequestPvpRewardsResponse = 0x2934, RequestScheduledPvpInfoResponse = 0x2935, ResearchComplete = 0x2587, ResetCompressionContext = 0x304f, - ResetFailedNotify = 0x26b4, + ResetFailedNotify = 0x26ac, ResetQuestPoi = 0x2aa0, ResetRangedCombatTimer = 0x2943, ResetWeeklyCurrency = 0x2575, - RespecWipeConfirm = 0x2610, + RespecWipeConfirm = 0x2608, RespondInspectAchievements = 0x2572, - RestrictedAccountWarning = 0x25ba, + RestrictedAccountWarning = 0x25b5, ResumeCast = 0x2c3b, ResumeCastBar = 0x2c3e, ResumeComms = 0x304b, - ResumeToken = 0x25ac, + ResumeToken = 0x25a7, ResurrectRequest = 0x257e, ResyncRunes = 0x2c5f, - ReturnApplicantList = 0x2863, - ReturnRecruitingClubs = 0x2862, + ReturnApplicantList = 0x2851, + ReturnRecruitingClubs = 0x2850, RoleChangedInform = 0x258d, RoleChosen = 0x2a39, RolePollInform = 0x258e, - RuneforgeLegendaryCraftingOpenNpc = 0x2801, - RuneRegenDebug = 0x25b7, - ScenarioCompleted = 0x27ee, - ScenarioPois = 0x2630, - ScenarioProgressUpdate = 0x2629, - ScenarioShowCriteria = 0x2804, - ScenarioState = 0x2628, - ScenarioUiUpdate = 0x2803, - ScenarioVacate = 0x27a8, - SceneObjectEvent = 0x25de, - SceneObjectPetBattleFinalRound = 0x25e3, - SceneObjectPetBattleFinished = 0x25e4, - SceneObjectPetBattleFirstRound = 0x25e0, - SceneObjectPetBattleInitialUpdate = 0x25df, - SceneObjectPetBattleReplacementsMade = 0x25e2, - SceneObjectPetBattleRoundResult = 0x25e1, + RuneforgeLegendaryCraftingOpenNpc = 0x27ee, + RuneRegenDebug = 0x25b2, + ScenarioCompleted = 0x27db, + ScenarioPois = 0x2628, + ScenarioProgressUpdate = 0x2621, + ScenarioShowCriteria = 0x27f1, + ScenarioState = 0x2620, + ScenarioUiUpdate = 0x27f0, + ScenarioVacate = 0x2796, + SceneObjectEvent = 0x25d9, + SceneObjectPetBattleFinalRound = 0x25de, + SceneObjectPetBattleFinished = 0x25df, + SceneObjectPetBattleFirstRound = 0x25db, + SceneObjectPetBattleInitialUpdate = 0x25da, + SceneObjectPetBattleReplacementsMade = 0x25dd, + SceneObjectPetBattleRoundResult = 0x25dc, ScriptCast = 0x2c56, - SeasonInfo = 0x25c2, - SellResponse = 0x26c2, - SendItemPassives = 0x25af, + SeasonInfo = 0x25bd, + SellResponse = 0x26b9, + SendItemPassives = 0x25aa, SendKnownSpells = 0x2c2a, - SendRaidTargetUpdateAll = 0x262b, - SendRaidTargetUpdateSingle = 0x262c, + SendRaidTargetUpdateAll = 0x2623, + SendRaidTargetUpdateSingle = 0x2624, SendSpellCharges = 0x2c2d, SendSpellHistory = 0x2c2b, SendUnlearnSpells = 0x2c2e, - ServerFirstAchievements = 0x264a, - ServerTime = 0x2680, - ServerTimeOffset = 0x2719, + ServerFirstAchievements = 0x2642, + ServerTime = 0x2678, + ServerTimeOffset = 0x2706, SetupCurrency = 0x2573, SetupResearchHistory = 0x2586, - SetAiAnimKit = 0x2734, - SetAllTaskProgress = 0x278f, - SetAnimTier = 0x2738, - SetChrUpgradeTier = 0x25db, + SetAiAnimKit = 0x2721, + SetAllTaskProgress = 0x277d, + SetAnimTier = 0x2725, + SetChrUpgradeTier = 0x25d6, SetCurrency = 0x2574, SetDfFastLaunchResult = 0x2a2e, - SetDungeonDifficulty = 0x26a2, - SetFactionAtWar = 0x2703, - SetFactionNotVisible = 0x272f, - SetFactionStanding = 0x2730, - SetFactionVisible = 0x272e, + SetDungeonDifficulty = 0x269a, + SetFactionAtWar = 0x26f2, + SetFactionNotVisible = 0x271c, + SetFactionStanding = 0x271d, + SetFactionVisible = 0x271b, SetFlatSpellModifier = 0x2c36, - SetForcedReactions = 0x2722, - SetItemPurchaseData = 0x25a2, - SetLootMethodFailed = 0x27d2, - SetMaxWeeklyQuantity = 0x25a5, - SetMeleeAnimKit = 0x2737, - SetMovementAnimKit = 0x2736, + SetForcedReactions = 0x270f, + SetItemPurchaseData = 0x259d, + SetLootMethodFailed = 0x27bf, + SetMaxWeeklyQuantity = 0x25a0, + SetMeleeAnimKit = 0x2724, + SetMovementAnimKit = 0x2723, SetPctSpellModifier = 0x2c37, - SetPetSpecialization = 0x2622, + SetPetSpecialization = 0x261a, SetPlayerDeclinedNamesResult = 0x3004, - SetPlayHoverAnim = 0x25bb, - SetProficiency = 0x2739, - SetQuestReplayCooldownOverride = 0x2876, - SetShipmentReadyResponse = 0x298d, + SetPlayHoverAnim = 0x25b6, + SetProficiency = 0x2726, + SetQuestReplayCooldownOverride = 0x2864, + SetShipmentReadyResponse = 0x2997, SetSpellCharges = 0x2c29, - SetTaskComplete = 0x2790, - SetTimeZoneInformation = 0x2675, - SetVehicleRecId = 0x26fa, - ShipmentFactionUpdateResult = 0x298e, - ShowBank = 0x267d, - ShowMailbox = 0x27a9, - ShowNeutralPlayerFactionSelectUi = 0x25d7, + SetTaskComplete = 0x277e, + SetTimeZoneInformation = 0x266d, + SetVehicleRecId = 0x26e9, + ShipmentFactionUpdateResult = 0x2998, + ShowBank = 0x2675, + ShowMailbox = 0x2797, + ShowNeutralPlayerFactionSelectUi = 0x25d2, ShowQuestCompletionText = 0x2a95, - ShowTaxiNodes = 0x26ca, - ShowTradeSkillResponse = 0x2773, - SocketGemsFailure = 0x272c, - SocketGemsSuccess = 0x272b, - SpecialMountAnim = 0x269d, - SpecInvoluntarilyChanged = 0x271d, + ShowTaxiNodes = 0x26c1, + ShowTradeSkillResponse = 0x2761, + SocketGemsFailure = 0x2719, + SocketGemsSuccess = 0x2718, + SpecialMountAnim = 0x2695, + SpecInvoluntarilyChanged = 0x270a, SpellAbsorbLog = 0x2c1f, SpellCategoryCooldown = 0x2c17, SpellChannelStart = 0x2c34, @@ -1829,92 +1821,93 @@ namespace Framework.Constants SpellPeriodicAuraLog = 0x2c1b, SpellPrepare = 0x2c38, SpellStart = 0x2c3a, - SpellVisualLoadScreen = 0x25cb, - SpiritHealerConfirm = 0x271a, - SplashScreenShowLatest = 0x2888, - StandStateUpdate = 0x2721, - StartElapsedTimer = 0x2601, - StartElapsedTimers = 0x2603, - StartLightningStorm = 0x26a5, - StartLootRoll = 0x261a, - StartMirrorTimer = 0x2714, - StartTimer = 0x25a9, - StopElapsedTimer = 0x2602, - StopMirrorTimer = 0x2716, - StopSpeakerbotSound = 0x276f, - StreamingMovies = 0x25a8, - SummonCancel = 0x26ae, + SpellVisualLoadScreen = 0x25c6, + SpiritHealerConfirm = 0x2707, + SplashScreenShowLatest = 0x2876, + StandStateUpdate = 0x270e, + StartElapsedTimer = 0x25fb, + StartElapsedTimers = 0x25fd, + StartLightningStorm = 0x269d, + StartLootRoll = 0x2612, + StartMirrorTimer = 0x2701, + StartTimer = 0x25a4, + StopElapsedTimer = 0x25fc, + StopMirrorTimer = 0x2703, + StopSpeakerbotSound = 0x275d, + StreamingMovies = 0x25a3, + SummonCancel = 0x26a6, SummonRaidMemberValidateFailed = 0x258f, - SummonRequest = 0x2726, + SummonRequest = 0x2713, SupercededSpells = 0x2c4c, SuspendComms = 0x304a, - SuspendToken = 0x25ab, - SyncWowEntitlements = 0x2880, - TalentsInvoluntarilyReset = 0x271c, - TaxiNodeStatus = 0x267a, - TextEmote = 0x2678, - ThreatClear = 0x26e1, - ThreatRemove = 0x26e0, - ThreatUpdate = 0x26df, + SuspendToken = 0x25a6, + SyncWowEntitlements = 0x286e, + TalentsInvoluntarilyReset = 0x2709, + TaxiNodeStatus = 0x2672, + TextEmote = 0x2670, + ThreatClear = 0x26d0, + ThreatRemove = 0x26cf, + ThreatUpdate = 0x26ce, TimeAdjustment = 0x2dd3, TimeSyncRequest = 0x2dd2, - TitleEarned = 0x26dc, - TitleLost = 0x26dd, - TotemCreated = 0x26c5, - TotemDurationChanged = 0x26c6, - TotemMoved = 0x26c7, + TitleEarned = 0x26cb, + TitleLost = 0x26cc, + TotemCreated = 0x26bc, + TotemDurationChanged = 0x26bd, + TotemMoved = 0x26be, TradeStatus = 0x2582, TradeUpdated = 0x2581, - TrainerBuyFailed = 0x26e4, - TrainerList = 0x26e3, - TransferAborted = 0x2706, - TransferPending = 0x25cc, - TransmogrifyNpc = 0x27f9, - TreasurePickerResponse = 0x280b, - TriggerCinematic = 0x27ca, - TriggerMovie = 0x26c8, - TurnInPetitionResult = 0x2752, - TutorialFlags = 0x27bc, + TrainerBuyFailed = 0x26d3, + TrainerList = 0x26d2, + TransferAborted = 0x26f5, + TransferPending = 0x25c7, + TransmogrifyNpc = 0x27e6, + TreasurePickerResponse = 0x291f, + TriggerCinematic = 0x27b7, + TriggerMovie = 0x26bf, + TurnInPetitionResult = 0x273f, + TutorialFlags = 0x27aa, TwitterStatus = 0x3043, - UiHealingRangeModified = 0x2748, - UiItemInteractionNpc = 0x27fb, + UiHealingRangeModified = 0x2735, + UiItemInteractionNpc = 0x27e8, UiMapQuestLinesResponse = 0x2aa2, - UndeleteCharacterResponse = 0x27cd, - UndeleteCooldownStatusResponse = 0x27ce, + UndeleteCharacterResponse = 0x27ba, + UndeleteCooldownStatusResponse = 0x27bb, UnlearnedSpells = 0x2c4e, UnloadChildMap = 0x257a, - UpdateAccountData = 0x270e, - UpdateActionButtons = 0x25dc, - UpdateBnetSessionKey = 0x2826, + UpdateAccountData = 0x26fb, + UpdateActionButtons = 0x25d7, + UpdateBnetSessionKey = 0x2812, UpdateCapturePoint = 0x2929, - UpdateCelestialBody = 0x2822, - UpdateCharacterFlags = 0x27c2, - UpdateChargeCategoryCooldown = 0x2769, - UpdateCooldown = 0x2768, - UpdateDailyMissionCounter = 0x2975, - UpdateExpansionLevel = 0x2643, - UpdateGameTimeState = 0x2829, - UpdateInstanceOwnership = 0x26a7, - UpdateLastInstance = 0x2686, - UpdateObject = 0x27cb, - UpdatePrimarySpec = 0x25d4, - UpdateTalentData = 0x25d3, - UpdateTaskProgress = 0x278e, + UpdateCelestialBody = 0x280e, + UpdateCharacterFlags = 0x27b0, + UpdateChargeCategoryCooldown = 0x2757, + UpdateCooldown = 0x2756, + UpdateDailyMissionCounter = 0x297f, + UpdateExpansionLevel = 0x263b, + UpdateGameTimeState = 0x2815, + UpdateInstanceOwnership = 0x269f, + UpdateLastInstance = 0x267e, + UpdateObject = 0x27b8, + UpdatePrimarySpec = 0x25cf, + UpdateTalentData = 0x25ce, + UpdateTaskProgress = 0x277c, UpdateWeeklySpellUsage = 0x2c19, - UpdateWorldState = 0x274c, + UpdateWorldState = 0x2739, UserlistAdd = 0x2bb9, UserlistRemove = 0x2bba, UserlistUpdate = 0x2bbb, - UseEquipmentSetResult = 0x2753, - VasCheckTransferOkResponse = 0x281d, - VasGetQueueMinutesResponse = 0x281b, - VasGetServiceStatusResponse = 0x281a, - VasPurchaseComplete = 0x27f5, - VasPurchaseStateUpdate = 0x27f4, - VendorInventory = 0x25b9, + UseEquipmentSetResult = 0x2740, + VasCheckTransferOkResponse = 0x2809, + VasGetQueueMinutesResponse = 0x2807, + VasGetServiceStatusResponse = 0x2806, + VasPurchaseComplete = 0x27e2, + VasPurchaseStateUpdate = 0x27e1, + VendorInventory = 0x25b4, VignetteUpdate = 0x3009, - VoiceChannelInfoResponse = 0x2821, - VoiceLoginResponse = 0x2820, + VoiceChannelInfoResponse = 0x280d, + VoiceChannelSttTokenResponse = 0x2882, + VoiceLoginResponse = 0x280c, VoidItemSwapResponse = 0x2da4, VoidStorageContents = 0x2da1, VoidStorageFailed = 0x2da0, @@ -1923,28 +1916,28 @@ namespace Framework.Constants WaitQueueFinish = 0x256f, WaitQueueUpdate = 0x256e, Warden3Data = 0x2577, - Warden3Disabled = 0x2824, - Warden3Enabled = 0x2823, - WarfrontComplete = 0x2762, + Warden3Disabled = 0x2810, + Warden3Enabled = 0x280f, + WarfrontComplete = 0x274f, WargameRequestSuccessfullySentToOpponent = 0x2932, - Weather = 0x26a4, - WeeklyRewardsProgressResult = 0x288b, - WeeklyRewardsResult = 0x2889, - WeeklyRewardClaimResult = 0x288a, + Weather = 0x269c, + WeeklyRewardsProgressResult = 0x2879, + WeeklyRewardsResult = 0x2877, + WeeklyRewardClaimResult = 0x2878, WeeklySpellUsage = 0x2c18, Who = 0x2bae, - WhoIs = 0x26a3, - WillBeKickedForAddedSubscriptionTime = 0x2828, - WorldMapOpenNpc = 0x27f8, + WhoIs = 0x269b, + WillBeKickedForAddedSubscriptionTime = 0x2814, + WorldMapOpenNpc = 0x27e5, WorldQuestUpdateResponse = 0x3010, - WorldServerInfo = 0x25b0, - WowEntitlementNotification = 0x2881, - XpGainAborted = 0x25c8, - XpGainEnabled = 0x27ac, + WorldServerInfo = 0x25ab, + WowEntitlementNotification = 0x286f, + XpGainAborted = 0x25c3, + XpGainEnabled = 0x279a, ZoneUnderAttack = 0x2bb5, - // Opcodes that are not generated automatically - AccountHeirloomUpdate = 0x25B3, // No Client Handler + // Opcodes That Are Not Generated Automatically + AccountHeirloomUpdate = 0x25ae, // No Client Handler CompressedPacket = 0x3052, MultiplePackets = 0x3051, diff --git a/Source/Framework/Database/Databases/WorldDatabase.cs b/Source/Framework/Database/Databases/WorldDatabase.cs index 8f39a2b96..16d68e159 100644 --- a/Source/Framework/Database/Databases/WorldDatabase.cs +++ b/Source/Framework/Database/Databases/WorldDatabase.cs @@ -76,7 +76,7 @@ namespace Framework.Database PrepareStatement(WorldStatements.SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?"); PrepareStatement(WorldStatements.DEL_CREATURE, "DELETE FROM creature WHERE guid = ?"); PrepareStatement(WorldStatements.SEL_COMMANDS, "SELECT name, permission, help FROM command"); - PrepareStatement(WorldStatements.SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ? OR 1 = ?"); + PrepareStatement(WorldStatements.SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, CreatureDifficultyID, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ? OR 1 = ?"); PrepareStatement(WorldStatements.SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?"); PrepareStatement(WorldStatements.SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?"); PrepareStatement(WorldStatements.SEL_GAMEOBJECT_NEAREST, "SELECT guid, id, position_x, position_y, position_z, map, (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) AS order_ FROM gameobject WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_"); diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index a097b2497..88f20362e 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -3441,6 +3441,67 @@ namespace Game.Achievements case ModifierTreeType.PlayerMythicPlusRatingEqualOrGreaterThan: // 321 NYI case ModifierTreeType.PlayerMythicPlusRunCountInCurrentExpansionEqualOrGreaterThan: // 322 NYI return false; + case ModifierTreeType.PlayerHasCustomizationChoice: // 323 + { + int customizationChoiceIndex = referencePlayer.m_playerData.Customizations.FindIndexIf(choice => + { + return choice.ChrCustomizationChoiceID == reqValue; + }); + + if (customizationChoiceIndex < 0) + return false; + + break; + } + case ModifierTreeType.PlayerBestWeeklyWinPvpTier: // 324 + { + var pvpTier = CliDB.PvpTierStorage.LookupByKey(reqValue); + if (pvpTier == null) + return false; + + if (pvpTier.BracketID >= referencePlayer.m_activePlayerData.PvpInfo.GetSize()) + return false; + + var pvpInfo = referencePlayer.m_activePlayerData.PvpInfo[pvpTier.BracketID]; + if (pvpTier.Id != pvpInfo.WeeklyBestWinPvpTierID || pvpInfo.Disqualified) + return false; + + break; + } + case ModifierTreeType.PlayerBestWeeklyWinPvpTierInBracketEqualOrGreaterThan: // 325 + { + if (secondaryAsset >= referencePlayer.m_activePlayerData.PvpInfo.GetSize()) + return false; + + var pvpInfo = referencePlayer.m_activePlayerData.PvpInfo[secondaryAsset]; + var pvpTier = CliDB.PvpTierStorage.LookupByKey(pvpInfo.WeeklyBestWinPvpTierID); + if (pvpTier == null) + return false; + + if (pvpTier.Rank < reqValue) + return false; + + break; + } + case ModifierTreeType.PlayerHasVanillaCollectorsEdition: // 326 + return false; + case ModifierTreeType.PlayerHasItemWithKeystoneLevelModifierEqualOrGreaterThan: // 327 + { + bool bagScanReachedEnd = referencePlayer.ForEachItem(ItemSearchLocation.Inventory, item => + { + if (item.GetEntry() != reqValue) + return true; + + if (item.GetModifier(ItemModifier.ChallengeKeystoneLevel) < secondaryAsset) + return true; + + return false; + }); + if (bagScanReachedEnd) + return false; + + break; + } default: return false; } diff --git a/Source/Game/AuctionHouse/AuctionManager.cs b/Source/Game/AuctionHouse/AuctionManager.cs index c38428d10..9de95a587 100644 --- a/Source/Game/AuctionHouse/AuctionManager.cs +++ b/Source/Game/AuctionHouse/AuctionManager.cs @@ -1724,6 +1724,10 @@ namespace Game // SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT, SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT, SMSG_AUCTION_REPLICATE_RESPONSE (if commodity) if (sendKey) auctionItem.AuctionBucketKey.Set(new AuctionBucketKey(AuctionsBucketKey.ForItem(Items[0]))); + + // all + if (!Items[0].m_itemData.Creator._value.IsEmpty()) + auctionItem.Creator.Set(Items[0].m_itemData.Creator); } public static ulong CalculateMinIncrement(ulong bidAmount) diff --git a/Source/Game/Chat/Channels/Channel.cs b/Source/Game/Chat/Channels/Channel.cs index f5a0d31b0..66ff5b9cc 100644 --- a/Source/Game/Chat/Channels/Channel.cs +++ b/Source/Game/Chat/Channels/Channel.cs @@ -658,7 +658,7 @@ namespace Game.Chat return; } - SendToAll(new ChannelSayBuilder(this, lang, what, guid), !playerInfo.IsModerator() ? guid : ObjectGuid.Empty); + SendToAll(new ChannelSayBuilder(this, lang, what, guid, _channelGuid), !playerInfo.IsModerator() ? guid : ObjectGuid.Empty); } public void AddonSay(ObjectGuid guid, string prefix, string what, bool isLogged) @@ -883,9 +883,10 @@ namespace Game.Chat } public uint GetChannelId() { return _channelId; } - public ObjectGuid GetChannelGuid() { return _channelGuid; } public bool IsConstant() { return _channelId != 0; } + public ObjectGuid GetGUID() { return _channelGuid; } + public bool IsLFG() { return GetFlags().HasAnyFlag(ChannelFlags.Lfg); } bool IsAnnounce() { return _announceEnabled; } void SetAnnounce(bool nannounce) { _announceEnabled = nannounce; } diff --git a/Source/Game/Chat/Channels/ChannelAppenders.cs b/Source/Game/Chat/Channels/ChannelAppenders.cs index 7889638ee..98978b258 100644 --- a/Source/Game/Chat/Channels/ChannelAppenders.cs +++ b/Source/Game/Chat/Channels/ChannelAppenders.cs @@ -73,7 +73,7 @@ namespace Game.Chat //notify.InstanceID = 0; notify.Data.ChannelFlags = _source.GetFlags(); notify.Data.Channel = _source.GetName(localeIdx); - notify.Data.ChannelGUID = _source.GetChannelGuid(); + notify.Data.ChannelGUID = _source.GetGUID(); return notify; } @@ -105,12 +105,13 @@ namespace Game.Chat class ChannelSayBuilder : MessageBuilder { - public ChannelSayBuilder(Channel source, Language lang, string what, ObjectGuid guid) + public ChannelSayBuilder(Channel source, Language lang, string what, ObjectGuid guid, ObjectGuid channelGuid) { _source = source; _lang = lang; _what = what; _guid = guid; + _channelGuid = channelGuid; } public override PacketSenderOwning Invoke(Locale locale = Locale.enUS) @@ -128,6 +129,8 @@ namespace Game.Chat packet.Data.TargetGUID = _guid; } + packet.Data.ChannelGUID.Set(_channelGuid); + return packet; } @@ -135,6 +138,7 @@ namespace Game.Chat Language _lang; string _what; ObjectGuid _guid; + ObjectGuid _channelGuid; } class ChannelWhisperBuilder : MessageBuilder diff --git a/Source/Game/Chat/Channels/ChannelManager.cs b/Source/Game/Chat/Channels/ChannelManager.cs index 72b2787d1..bd5e237c6 100644 --- a/Source/Game/Chat/Channels/ChannelManager.cs +++ b/Source/Game/Chat/Channels/ChannelManager.cs @@ -58,6 +58,15 @@ namespace Game.Chat return null; } + public static Channel GetChannelForPlayerByGuid(ObjectGuid channelGuid, Player playerSearcher) + { + foreach (Channel channel in playerSearcher.GetJoinedChannels()) + if (channel.GetGUID() == channelGuid) + return channel; + + return null; + } + public Channel GetJoinChannel(uint channelId, string name, AreaTableRecord zoneEntry = null) { if (channelId != 0) // builtin diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index eacb66666..bde35d9aa 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -1334,16 +1334,20 @@ namespace Game.Entities CreatureTemplate cInfo = GetCreatureTemplate(); // level - var levels = cInfo.GetMinMaxLevel(); - int minlevel = Math.Min(levels[0], levels[1]); - int maxlevel = Math.Max(levels[0], levels[1]); + var minMaxLevels = cInfo.GetMinMaxLevel(); + int minlevel = Math.Min(minMaxLevels[0], minMaxLevels[1]); + int maxlevel = Math.Max(minMaxLevels[0], minMaxLevels[1]); int level = (minlevel == maxlevel ? minlevel : RandomHelper.IRand(minlevel, maxlevel)); SetLevel((uint)level); CreatureLevelScaling scaling = cInfo.GetLevelScaling(GetMap().GetDifficultyID()); - SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ScalingLevelMin), scaling.MinLevel); - SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ScalingLevelMax), scaling.MaxLevel); + var levels = Global.DB2Mgr.GetContentTuningData(scaling.ContentTuningID, 0); + if (levels != null) + { + SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ScalingLevelMin), levels.Value.MinLevel); + SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ScalingLevelMax), levels.Value.MaxLevel); + } int mindelta = Math.Min(scaling.DeltaLevelMax, scaling.DeltaLevelMin); int maxdelta = Math.Max(scaling.DeltaLevelMax, scaling.DeltaLevelMin); @@ -2483,7 +2487,7 @@ namespace Game.Entities CreatureTemplate cinfo = GetCreatureTemplate(); CreatureLevelScaling scaling = cinfo.GetLevelScaling(GetMap().GetDifficultyID()); - return (scaling.MinLevel != 0 && scaling.MaxLevel != 0); + return scaling.ContentTuningID != 0; } ulong GetMaxHealthByLevel(uint level) diff --git a/Source/Game/Entities/Creature/CreatureData.cs b/Source/Game/Entities/Creature/CreatureData.cs index 9c7ea580b..0e2976e37 100644 --- a/Source/Game/Entities/Creature/CreatureData.cs +++ b/Source/Game/Entities/Creature/CreatureData.cs @@ -85,6 +85,7 @@ namespace Game.Entities public float ModExperience; public bool RacialLeader; public uint MovementId; + public int CreatureDifficultyID; public int WidgetSetID; public int WidgetSetUnitConditionID; public bool RegenHealth; @@ -266,6 +267,7 @@ namespace Game.Entities stats.HealthScalingExpansion = HealthScalingExpansion; stats.VignetteID = VignetteID; stats.Class = (int)UnitClass; + stats.CreatureDifficultyID = CreatureDifficultyID; stats.WidgetSetID = WidgetSetID; stats.WidgetSetUnitConditionID = WidgetSetUnitConditionID; @@ -454,8 +456,6 @@ namespace Game.Entities public class CreatureLevelScaling { - public ushort MinLevel; - public ushort MaxLevel; public short DeltaLevelMin; public short DeltaLevelMax; public uint ContentTuningID; diff --git a/Source/Game/Entities/Creature/Gossip.cs b/Source/Game/Entities/Creature/Gossip.cs index 481ec2770..ecf9491f6 100644 --- a/Source/Game/Entities/Creature/Gossip.cs +++ b/Source/Game/Entities/Creature/Gossip.cs @@ -431,6 +431,7 @@ namespace Game.Misc packet.QuestID = quest.Id; packet.PortraitGiver = quest.QuestGiverPortrait; packet.PortraitGiverMount = quest.QuestGiverPortraitMount; + packet.PortraitGiverModelSceneID = quest.QuestGiverPortraitModelSceneId; packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.QuestSessionBonus = 0; //quest.GetQuestSessionBonus(); // this is only sent while quest session is active packet.AutoLaunched = autoLaunched; @@ -558,6 +559,7 @@ namespace Game.Misc packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.PortraitGiver = quest.QuestGiverPortrait; packet.PortraitGiverMount = quest.QuestGiverPortraitMount; + packet.PortraitGiverModelSceneID = quest.QuestGiverPortraitModelSceneId; packet.QuestPackageID = quest.PackageID; packet.QuestData = offer; @@ -768,7 +770,7 @@ namespace Game.Misc public class PointOfInterest { public uint Id; - public Vector2 Pos; + public Vector3 Pos; public uint Icon; public uint Flags; public uint Importance; diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index 796ebe58c..e238f3aff 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -20,6 +20,7 @@ using Framework.Dynamic; using Framework.GameMath; using Game.DataStorage; using Game.Networking; +using Game.Networking.Packets; using Game.Spells; using System; using System.Collections.Generic; @@ -1219,21 +1220,22 @@ namespace Game.Entities public UpdateField GuildGUID = new(96, 116); public UpdateField SkinningOwnerGUID = new(96, 117); public UpdateField SilencedSchoolMask = new(96, 118); - public UpdateFieldArray NpcFlags = new(2, 119, 120); - public UpdateFieldArray Power = new(6, 122, 123); - public UpdateFieldArray MaxPower = new(6, 122, 129); - public UpdateFieldArray PowerRegenFlatModifier = new(6, 122, 135); - public UpdateFieldArray PowerRegenInterruptedFlatModifier = new(6, 122, 141); - public UpdateFieldArray VirtualItems = new(3, 147, 148); - public UpdateFieldArray AttackRoundBaseTime = new(2, 151, 152); - public UpdateFieldArray Stats = new(4, 154, 155); - public UpdateFieldArray StatPosBuff = new(4, 154, 159); - public UpdateFieldArray StatNegBuff = new(4, 154, 163); - public UpdateFieldArray Resistances = new(7, 167, 168); - public UpdateFieldArray BonusResistanceMods = new(7, 167, 175); - public UpdateFieldArray ManaCostModifier = new(7, 167, 182); + public UpdateField NameplateAttachToGUID = new(96, 119); // When set, nameplate of this unit will instead appear on that object + public UpdateFieldArray NpcFlags = new(2, 120, 121); + public UpdateFieldArray Power = new(6, 123, 124); + public UpdateFieldArray MaxPower = new(6, 123, 130); + public UpdateFieldArray PowerRegenFlatModifier = new(6, 123, 136); + public UpdateFieldArray PowerRegenInterruptedFlatModifier = new(6, 123, 142); + public UpdateFieldArray VirtualItems = new(3, 148, 149); + public UpdateFieldArray AttackRoundBaseTime = new(2, 152, 153); + public UpdateFieldArray Stats = new(4, 155, 156); + public UpdateFieldArray StatPosBuff = new(4, 155, 160); + public UpdateFieldArray StatNegBuff = new(4, 155, 164); + public UpdateFieldArray Resistances = new(7, 168, 169); + public UpdateFieldArray BonusResistanceMods = new(7, 168, 176); + public UpdateFieldArray ManaCostModifier = new(7, 168, 183); - public UnitData() : base(0, TypeId.Unit, 189) { } + public UnitData() : base(0, TypeId.Unit, 190) { } public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) { @@ -1413,6 +1415,7 @@ namespace Game.Entities data.WriteInt32(ChannelObjects.Size()); data.WritePackedGuid(SkinningOwnerGUID); data.WriteUInt32(SilencedSchoolMask); + data.WritePackedGuid(NameplateAttachToGUID); for (int i = 0; i < PassiveSpells.Size(); ++i) PassiveSpells[i].WriteCreate(data, owner, receiver); @@ -1426,7 +1429,7 @@ namespace Game.Entities public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) { - UpdateMask allowedMaskForTarget = new(192, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x03F8007Fu, 0x00000000u }); + UpdateMask allowedMaskForTarget = new(192, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x07F000FFu, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } @@ -1434,16 +1437,16 @@ namespace Game.Entities public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner)) - allowedMaskForTarget.OR(new UpdateMask(192, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0400007Eu, 0xFC07FF80u, 0x1FFFFFFFu })); + allowedMaskForTarget.OR(new UpdateMask(190, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0800007Eu, 0xF80FFF00u, 0x3FFFFFFFu })); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll)) - allowedMaskForTarget.OR(new UpdateMask(192, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x04000000u, 0x0007FF80u, 0x00000000u })); + allowedMaskForTarget.OR(new UpdateMask(190, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x08000000u, 0x000FFF00u, 0x00000000u })); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Empath)) - allowedMaskForTarget.OR(new UpdateMask(192, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00007F80u })); + allowedMaskForTarget.OR(new UpdateMask(190, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0000FF00u })); } public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags) { - UpdateMask allowedMaskForTarget = new(192, new[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x03F8007Fu, 0x00000000u }); + UpdateMask allowedMaskForTarget = new(190, new[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x07F000FFu, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask.AND(allowedMaskForTarget); } @@ -1977,90 +1980,94 @@ namespace Game.Entities { data.WriteUInt32(SilencedSchoolMask); } + if (changesMask[119]) + { + data.WritePackedGuid(NameplateAttachToGUID); + } } - if (changesMask[119]) + if (changesMask[120]) { for (int i = 0; i < 2; ++i) { - if (changesMask[120 + i]) + if (changesMask[121 + i]) { data.WriteUInt32(GetViewerDependentNpcFlags(NpcFlags[i], i, owner, receiver)); } } } - if (changesMask[122]) + if (changesMask[123]) { for (int i = 0; i < 6; ++i) { - if (changesMask[123 + i]) + if (changesMask[124 + i]) { data.WriteInt32(Power[i]); } - if (changesMask[129 + i]) + if (changesMask[130 + i]) { data.WriteUInt32(MaxPower[i]); } - if (changesMask[135 + i]) + if (changesMask[136 + i]) { data.WriteFloat(PowerRegenFlatModifier[i]); } - if (changesMask[141 + i]) + if (changesMask[142 + i]) { data.WriteFloat(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[147]) + if (changesMask[148]) { for (int i = 0; i < 3; ++i) { - if (changesMask[148 + i]) + if (changesMask[149 + i]) { VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[151]) + if (changesMask[152]) { for (int i = 0; i < 2; ++i) { - if (changesMask[152 + i]) + if (changesMask[153 + i]) { data.WriteUInt32(AttackRoundBaseTime[i]); } } } - if (changesMask[154]) + if (changesMask[155]) { for (int i = 0; i < 4; ++i) { - if (changesMask[155 + i]) + if (changesMask[156 + i]) { data.WriteInt32(Stats[i]); } - if (changesMask[159 + i]) + if (changesMask[160 + i]) { data.WriteInt32(StatPosBuff[i]); } - if (changesMask[163 + i]) + if (changesMask[164 + i]) { data.WriteInt32(StatNegBuff[i]); } } } - if (changesMask[167]) + if (changesMask[168]) { for (int i = 0; i < 7; ++i) { - if (changesMask[168 + i]) + if (changesMask[169 + i]) { data.WriteInt32(Resistances[i]); } - if (changesMask[175 + i]) + if (changesMask[176 + i]) { data.WriteInt32(BonusResistanceMods[i]); } - if (changesMask[182 + i]) + if (changesMask[183 + i]) { data.WriteInt32(ManaCostModifier[i]); } @@ -2185,6 +2192,7 @@ namespace Game.Entities ClearChangesMask(GuildGUID); ClearChangesMask(SkinningOwnerGUID); ClearChangesMask(SilencedSchoolMask); + ClearChangesMask(NameplateAttachToGUID); ClearChangesMask(NpcFlags); ClearChangesMask(Power); ClearChangesMask(MaxPower); @@ -2518,11 +2526,12 @@ namespace Game.Entities public UpdateField CtrOptions = new(0, 30); public UpdateField CovenantID = new(0, 31); public UpdateField SoulbindID = new(32, 33); - public UpdateFieldArrayQuestLog = new(125, 34, 35); - public UpdateFieldArray VisibleItems = new(19, 160, 161); - public UpdateFieldArrayAvgItemLevel = new(4, 180, 181); + public UpdateField DungeonScore = new(32, 34); + public UpdateFieldArrayQuestLog = new(125, 35, 36); + public UpdateFieldArrayVisibleItems = new(19, 161, 162); + public UpdateFieldArrayAvgItemLevel = new(6, 181, 182); - public PlayerData() : base(0, TypeId.Player, 185) { } + public PlayerData() : base(0, TypeId.Player, 188) { } public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver) { @@ -2559,7 +2568,7 @@ namespace Game.Entities data.WriteUInt32(VirtualPlayerRealm); data.WriteUInt32(CurrentSpecID); data.WriteInt32(TaxiMountAnimKitID); - for (int i = 0; i < 4; ++i) + for (int i = 0; i < 6; ++i) { data.WriteFloat(AvgItemLevel[i]); } @@ -2588,15 +2597,16 @@ namespace Game.Entities } if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.PartyMember)) { - data.WriteBit((bool)HasQuestSession); + data.WriteBit(HasQuestSession); } - data.WriteBit((bool)HasLevelLink); + data.WriteBit(HasLevelLink); + DungeonScore._value.Write(data); data.FlushBits(); } public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver) { - UpdateMask allowedMaskForTarget = new(185, new[] { 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0x01FFFFFFu }); + UpdateMask allowedMaskForTarget = new(188, new[] { 0xFFFFFFEDu, 0x00000007u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0FFFFFFEu }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } @@ -2604,12 +2614,12 @@ namespace Game.Entities public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.PartyMember)) - allowedMaskForTarget.OR(new UpdateMask(185, new[] { 0x00000012u, 0xFFFFFFFCu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u })); + allowedMaskForTarget.OR(new UpdateMask(188, new[] { 0x00000012u, 0xFFFFFFF8u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000001u })); } public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags) { - UpdateMask allowedMaskForTarget = new(185, new[] { 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0x01FFFFFFu }); + UpdateMask allowedMaskForTarget = new(188, new[] { 0xFFFFFFEDu, 0x00000007u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0FFFFFFEu }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask.AND(allowedMaskForTarget); } @@ -2801,12 +2811,16 @@ namespace Game.Entities { data.WriteInt32(SoulbindID); } + if (changesMask[34]) + { + DungeonScore._value.Write(data); + } } - if (changesMask[34]) + if (changesMask[35]) { for (int i = 0; i < 125; ++i) { - if (changesMask[35 + i]) + if (changesMask[36 + i]) { if (noQuestLogChangesMask) QuestLog[i].WriteCreate(data, owner, receiver); @@ -2815,21 +2829,21 @@ namespace Game.Entities } } } - if (changesMask[160]) + if (changesMask[161]) { for (int i = 0; i < 19; ++i) { - if (changesMask[161 + i]) + if (changesMask[162 + i]) { VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[180]) + if (changesMask[181]) { - for (int i = 0; i < 4; ++i) + for (int i = 0; i < 6; ++i) { - if (changesMask[181 + i]) + if (changesMask[182 + i]) { data.WriteFloat(AvgItemLevel[i]); } @@ -2872,6 +2886,7 @@ namespace Game.Entities ClearChangesMask(CtrOptions); ClearChangesMask(CovenantID); ClearChangesMask(SoulbindID); + ClearChangesMask(DungeonScore); ClearChangesMask(QuestLog); ClearChangesMask(VisibleItems); ClearChangesMask(AvgItemLevel); @@ -3024,8 +3039,9 @@ namespace Game.Entities public UpdateField WeeklyBestRating = new(0, 7); public UpdateField SeasonBestRating = new(0, 8); public UpdateField PvpTierID = new(0, 9); + public UpdateField WeeklyBestWinPvpTierID = new(0, 10); - public PVPInfo() : base(10) { } + public PVPInfo() : base(11) { } public void WriteCreate(WorldPacket data, Player owner, Player receiver) { @@ -3037,6 +3053,7 @@ namespace Game.Entities data.WriteUInt32(WeeklyBestRating); data.WriteUInt32(SeasonBestRating); data.WriteUInt32(PvpTierID); + data.WriteUInt32(WeeklyBestWinPvpTierID); data.WriteBit(Disqualified); data.FlushBits(); } @@ -3047,7 +3064,7 @@ namespace Game.Entities if (ignoreChangesMask) changesMask.SetAll(); - data.WriteBits(changesMask.GetBlock(0), 10); + data.WriteBits(changesMask.GetBlock(0), 11); if (changesMask[0]) { @@ -3091,6 +3108,10 @@ namespace Game.Entities { data.WriteUInt32(PvpTierID); } + if (changesMask[10]) + { + data.WriteUInt32(WeeklyBestWinPvpTierID); + } } data.FlushBits(); } @@ -3106,6 +3127,7 @@ namespace Game.Entities ClearChangesMask(WeeklyBestRating); ClearChangesMask(SeasonBestRating); ClearChangesMask(PvpTierID); + ClearChangesMask(WeeklyBestWinPvpTierID); _changesMask.ResetAll(); } } @@ -3498,38 +3520,35 @@ namespace Game.Entities public UpdateField GuildClubMemberID = new(98, 101); public UpdateField Honor = new(98, 102); public UpdateField HonorNextLevel = new(98, 103); - public UpdateField PvpRewardAchieved = new(98, 104); - public UpdateField PvpTierMaxFromWins = new(98, 105); - public UpdateField PvpLastWeeksRewardAchieved = new(98, 106); - public UpdateField PvpLastWeeksTierMaxFromWins = new(98, 107); - public UpdateField PvpLastWeeksRewardClaimed = new(98, 108); - public UpdateField NumBankSlots = new(98, 109); - public UpdateField Field_1410 = new(98, 111); - public UpdateField> QuestSession = new(98, 110); - public UpdateField UiChromieTimeExpansionID = new(98, 112); - public UpdateField TransportServerTime = new(98, 113); - public UpdateField WeeklyRewardsPeriodSinceOrigin = new(98, 114); // week count since Cfg_RegionsEntry::ChallengeOrigin - public UpdateFieldArray InvSlots = new(199, 115, 116); - public UpdateFieldArray TrackResourceMask = new(2, 315, 316); - public UpdateFieldArray ExploredZones = new(192, 318, 319); - public UpdateFieldArray RestInfo = new(2, 511, 512); - public UpdateFieldArray ModDamageDonePos = new(7, 514, 515); - public UpdateFieldArray ModDamageDoneNeg = new(7, 514, 522); - public UpdateFieldArray ModDamageDonePercent = new(7, 514, 529); - public UpdateFieldArray ModHealingDonePercent = new(7, 514, 536); - public UpdateFieldArray WeaponDmgMultipliers = new(3, 543, 544); - public UpdateFieldArray WeaponAtkSpeedMultipliers = new(3, 543, 547); - public UpdateFieldArray BuybackPrice = new(12, 550, 551); - public UpdateFieldArray BuybackTimestamp = new(12, 550, 563); - public UpdateFieldArray CombatRatings = new(32, 575, 576); - public UpdateFieldArray PvpInfo = new(6, 608, 609); - public UpdateFieldArray NoReagentCostMask = new(4, 615, 616); - public UpdateFieldArray ProfessionSkillLine = new(2, 620, 621); - public UpdateFieldArray BagSlotFlags = new(4, 623, 624); - public UpdateFieldArray BankBagSlotFlags = new(7, 628, 629); - public UpdateFieldArray QuestCompleted = new(875, 636, 637); + public UpdateFieldNumBankSlots = new(98, 104); + public UpdateField Field_1410 = new(98, 106); + public UpdateField> QuestSession = new(98, 105); + public UpdateField UiChromieTimeExpansionID = new(98, 107); + public UpdateField TransportServerTime = new(98, 108); + public UpdateField WeeklyRewardsPeriodSinceOrigin = new(98, 109); // week count since Cfg_RegionsEntry::ChallengeOrigin + public UpdateField DEBUGSoulbindConduitRank = new(98, 110); + public UpdateField DungeonScore = new(98, 111); + public UpdateFieldArray InvSlots = new(199, 112, 113); + public UpdateFieldArray TrackResourceMask = new(2, 312, 313); + public UpdateFieldArray ExploredZones = new(240, 315, 316); + public UpdateFieldArray RestInfo = new(2, 556, 557); + public UpdateFieldArray ModDamageDonePos = new(7, 559, 560); + public UpdateFieldArray ModDamageDoneNeg = new(7, 559, 567); + public UpdateFieldArray ModDamageDonePercent = new(7, 559, 574); + public UpdateFieldArray ModHealingDonePercent = new(7, 559, 581); + public UpdateFieldArray WeaponDmgMultipliers = new(3, 588, 589); + public UpdateFieldArray WeaponAtkSpeedMultipliers = new(3, 588, 592); + public UpdateFieldArray BuybackPrice = new(12, 595, 596); + public UpdateFieldArray BuybackTimestamp = new(12, 595, 608); + public UpdateFieldArray CombatRatings = new(32, 620, 621); + public UpdateFieldArray PvpInfo = new(6, 653, 654); + public UpdateFieldArray NoReagentCostMask = new(4, 660, 661); + public UpdateFieldArray ProfessionSkillLine = new(2, 665, 666); + public UpdateFieldArray BagSlotFlags = new(4, 668, 669); + public UpdateFieldArray BankBagSlotFlags = new(7, 673, 674); + public UpdateFieldArray QuestCompleted = new(875, 681, 682); - public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1512) { } + public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1557) { } public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver) { @@ -3575,7 +3594,7 @@ namespace Game.Entities data.WriteFloat(VersatilityBonus); data.WriteFloat(PvpPowerDamage); data.WriteFloat(PvpPowerHealing); - for (int i = 0; i < 192; ++i) + for (int i = 0; i < 240; ++i) { data.WriteUInt64(ExploredZones[i]); } @@ -3663,11 +3682,6 @@ namespace Game.Entities } data.WriteUInt32(Honor); data.WriteUInt32(HonorNextLevel); - data.WriteInt64(PvpRewardAchieved); - data.WriteInt32(PvpTierMaxFromWins); - data.WriteInt64(PvpLastWeeksRewardAchieved); - data.WriteInt32(PvpLastWeeksTierMaxFromWins); - data.WriteInt64(PvpLastWeeksRewardClaimed); data.WriteUInt8(NumBankSlots); data.WriteInt32(ResearchSites.Size()); data.WriteInt32(ResearchSiteProgress.Size()); @@ -3701,6 +3715,7 @@ namespace Game.Entities data.WriteInt32(UiChromieTimeExpansionID); data.WriteInt32(TransportServerTime); data.WriteUInt32(WeeklyRewardsPeriodSinceOrigin); + data.WriteInt16(DEBUGSoulbindConduitRank); for (int i = 0; i < KnownTitles.Size(); ++i) { data.WriteUInt64(KnownTitles[i]); @@ -3790,16 +3805,17 @@ namespace Game.Entities PvpInfo[i].WriteCreate(data, owner, receiver); } data.FlushBits(); - data.WriteBit((bool)BackpackAutoSortDisabled); - data.WriteBit((bool)BankAutoSortDisabled); - data.WriteBit((bool)SortBagsRightToLeft); - data.WriteBit((bool)InsertItemsLeftToRight); + data.WriteBit(BackpackAutoSortDisabled); + data.WriteBit(BankAutoSortDisabled); + data.WriteBit(SortBagsRightToLeft); + data.WriteBit(InsertItemsLeftToRight); data.WriteBits(QuestSession.GetValue().HasValue, 1); ((ActivePlayerUnk901)Field_1410).WriteCreate(data, owner, receiver); if (QuestSession.GetValue().HasValue) { QuestSession.GetValue().Value.WriteCreate(data, owner, receiver); } + DungeonScore._value.Write(data); for (int i = 0; i < CharacterRestrictions.Size(); ++i) { CharacterRestrictions[i].WriteCreate(data, owner, receiver); @@ -3817,8 +3833,8 @@ namespace Game.Entities for (uint i = 0; i < 1; ++i) data.WriteUInt32(changesMask.GetBlocksMask(i)); - data.WriteBits(changesMask.GetBlocksMask(1), 16); - for (uint i = 0; i < 48; ++i) + data.WriteBits(changesMask.GetBlocksMask(1), 17); + for (uint i = 0; i < 49; ++i) if (changesMask.GetBlock(i) != 0) data.WriteBits(changesMask.GetBlock(i), 32); @@ -4541,211 +4557,199 @@ namespace Game.Entities } if (changesMask[104]) { - data.WriteInt64(PvpRewardAchieved); - } - if (changesMask[105]) - { - data.WriteInt32(PvpTierMaxFromWins); - } - if (changesMask[106]) - { - data.WriteInt64(PvpLastWeeksRewardAchieved); + data.WriteUInt8(NumBankSlots); } if (changesMask[107]) { - data.WriteInt32(PvpLastWeeksTierMaxFromWins); + data.WriteInt32(UiChromieTimeExpansionID); } if (changesMask[108]) { - data.WriteInt64(PvpLastWeeksRewardClaimed); + data.WriteInt32(TransportServerTime); } if (changesMask[109]) - { - data.WriteUInt8(NumBankSlots); - } - if (changesMask[112]) - { - data.WriteInt32(UiChromieTimeExpansionID); - } - if (changesMask[113]) - { - data.WriteInt32(TransportServerTime); - } - if (changesMask[114]) { data.WriteUInt32(WeeklyRewardsPeriodSinceOrigin); } + if (changesMask[110]) + { + data.WriteInt16(DEBUGSoulbindConduitRank); + } } if (changesMask[98]) { data.WriteBits(QuestSession.GetValue().HasValue, 1); - if (changesMask[111]) + if (changesMask[106]) { ((ActivePlayerUnk901)Field_1410).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[110]) + if (changesMask[105]) { if (QuestSession.GetValue().HasValue) { QuestSession.GetValue().Value.WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } + if (changesMask[111]) + { + DungeonScore._value.Write(data); + } } - if (changesMask[115]) + if (changesMask[112]) { for (int i = 0; i < 199; ++i) { - if (changesMask[116 + i]) + if (changesMask[113 + i]) { data.WritePackedGuid(InvSlots[i]); } } } - if (changesMask[315]) + if (changesMask[312]) { for (int i = 0; i < 2; ++i) { - if (changesMask[316 + i]) + if (changesMask[313 + i]) { data.WriteUInt32(TrackResourceMask[i]); } } } - if (changesMask[318]) + if (changesMask[315]) { - for (int i = 0; i < 192; ++i) + for (int i = 0; i < 240; ++i) { - if (changesMask[319 + i]) + if (changesMask[316 + i]) { data.WriteUInt64(ExploredZones[i]); } } } - if (changesMask[511]) + if (changesMask[556]) { for (int i = 0; i < 2; ++i) { - if (changesMask[512 + i]) + if (changesMask[557 + i]) { RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[514]) + if (changesMask[559]) { for (int i = 0; i < 7; ++i) { - if (changesMask[515 + i]) + if (changesMask[560 + i]) { data.WriteInt32(ModDamageDonePos[i]); } - if (changesMask[522 + i]) + if (changesMask[567 + i]) { data.WriteInt32(ModDamageDoneNeg[i]); } - if (changesMask[529 + i]) + if (changesMask[574 + i]) { data.WriteFloat(ModDamageDonePercent[i]); } - if (changesMask[536 + i]) + if (changesMask[581 + i]) { data.WriteFloat(ModHealingDonePercent[i]); } } } - if (changesMask[543]) + if (changesMask[588]) { for (int i = 0; i < 3; ++i) { - if (changesMask[544 + i]) + if (changesMask[589 + i]) { data.WriteFloat(WeaponDmgMultipliers[i]); } - if (changesMask[547 + i]) + if (changesMask[592 + i]) { data.WriteFloat(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[550]) + if (changesMask[595]) { for (int i = 0; i < 12; ++i) { - if (changesMask[551 + i]) + if (changesMask[596 + i]) { data.WriteUInt32(BuybackPrice[i]); } - if (changesMask[563 + i]) + if (changesMask[608 + i]) { data.WriteUInt32(BuybackTimestamp[i]); } } } - if (changesMask[575]) + if (changesMask[620]) { for (int i = 0; i < 32; ++i) { - if (changesMask[576 + i]) + if (changesMask[621 + i]) { data.WriteUInt32(CombatRatings[i]); } } } - if (changesMask[615]) + if (changesMask[660]) { for (int i = 0; i < 4; ++i) { - if (changesMask[616 + i]) + if (changesMask[661 + i]) { data.WriteUInt32(NoReagentCostMask[i]); } } } - if (changesMask[620]) + if (changesMask[665]) { for (int i = 0; i < 2; ++i) { - if (changesMask[621 + i]) + if (changesMask[666 + i]) { data.WriteUInt32(ProfessionSkillLine[i]); } } } - if (changesMask[623]) + if (changesMask[668]) { for (int i = 0; i < 4; ++i) { - if (changesMask[624 + i]) + if (changesMask[669 + i]) { data.WriteUInt32(BagSlotFlags[i]); } } } - if (changesMask[628]) + if (changesMask[673]) { for (int i = 0; i < 7; ++i) { - if (changesMask[629 + i]) + if (changesMask[674 + i]) { data.WriteUInt32(BankBagSlotFlags[i]); } } } - if (changesMask[636]) + if (changesMask[681]) { for (int i = 0; i < 875; ++i) { - if (changesMask[637 + i]) + if (changesMask[682 + i]) { data.WriteUInt64(QuestCompleted[i]); } } } - if (changesMask[608]) + if (changesMask[653]) { for (int i = 0; i < 6; ++i) { - if (changesMask[609 + i]) + if (changesMask[654 + i]) { PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } @@ -4855,17 +4859,14 @@ namespace Game.Entities ClearChangesMask(GuildClubMemberID); ClearChangesMask(Honor); ClearChangesMask(HonorNextLevel); - ClearChangesMask(PvpRewardAchieved); - ClearChangesMask(PvpTierMaxFromWins); - ClearChangesMask(PvpLastWeeksRewardAchieved); - ClearChangesMask(PvpLastWeeksTierMaxFromWins); - ClearChangesMask(PvpLastWeeksRewardClaimed); ClearChangesMask(NumBankSlots); ClearChangesMask(Field_1410); ClearChangesMask(QuestSession); ClearChangesMask(UiChromieTimeExpansionID); ClearChangesMask(TransportServerTime); ClearChangesMask(WeeklyRewardsPeriodSinceOrigin); + ClearChangesMask(DEBUGSoulbindConduitRank); + ClearChangesMask(DungeonScore); ClearChangesMask(InvSlots); ClearChangesMask(TrackResourceMask); ClearChangesMask(ExploredZones); @@ -5665,12 +5666,13 @@ namespace Game.Entities public class ConversationData : BaseUpdateData { - public UpdateField> Lines = new(0, 1); - public DynamicUpdateField Actors = new(0, 2); - public UpdateField LastLineEndTime = new(0, 3); - public UpdateField Progress = new(0, 4); + public UpdateField DontPlayBroadcastTextSounds = new(0, 1); + public UpdateField> Lines = new(0, 2); + public DynamicUpdateField Actors = new(0, 3); + public UpdateField LastLineEndTime = new(0, 4); + public UpdateFieldProgress = new(0, 5); - public ConversationData() : base(0, TypeId.Conversation, 5) { } + public ConversationData() : base(0, TypeId.Conversation, 6) { } public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Conversation owner, Player receiver) { @@ -5681,11 +5683,13 @@ namespace Game.Entities { ((List)Lines)[i].WriteCreate(data, owner, receiver); } + data.WriteBit(DontPlayBroadcastTextSounds); data.WriteInt32(Actors.Size()); for (int i = 0; i < Actors.Size(); ++i) { Actors[i].WriteCreate(data, owner, receiver); } + data.FlushBits(); } public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Conversation owner, Player receiver) @@ -5695,11 +5699,15 @@ namespace Game.Entities public void WriteUpdate(WorldPacket data, UpdateMask changesMask, bool ignoreNestedChangesMask, Conversation owner, Player receiver) { - data.WriteBits(_changesMask.GetBlock(0), 5); + data.WriteBits(_changesMask.GetBlock(0), 6); if (_changesMask[0]) { if (_changesMask[1]) + { + data.WriteBit(DontPlayBroadcastTextSounds); + } + if (changesMask[2]) { List list = Lines; data.WriteBits(list.Count, 32); @@ -5712,7 +5720,7 @@ namespace Game.Entities data.FlushBits(); if (_changesMask[0]) { - if (_changesMask[2]) + if (_changesMask[3]) { if (!ignoreNestedChangesMask) Actors.WriteUpdateMask(data); @@ -5723,7 +5731,7 @@ namespace Game.Entities data.FlushBits(); if (_changesMask[0]) { - if (_changesMask[2]) + if (_changesMask[3]) { for (int i = 0; i < Actors.Size(); ++i) { @@ -5733,19 +5741,21 @@ namespace Game.Entities } } } - if (_changesMask[3]) + if (_changesMask[4]) { data.WriteUInt32(LastLineEndTime); } - if (_changesMask[4]) + if (_changesMask[5]) { data.WriteUInt32(Progress); } } + data.FlushBits(); } public override void ClearChangesMask() { + ClearChangesMask(DontPlayBroadcastTextSounds); ClearChangesMask(Lines); ClearChangesMask(Actors); ClearChangesMask(LastLineEndTime); diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index 8b51b19e8..1a4246707 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -2509,6 +2509,7 @@ namespace Game.Entities public uint TransportID; public float Magnitude; public byte Type; + public int Unused910; public void Read(WorldPacket data) { @@ -2518,7 +2519,9 @@ namespace Game.Entities TransportID = data.ReadUInt32(); Magnitude = data.ReadFloat(); Type = data.ReadBits(2); - + bool has910 = data.HasBit(); + if (has910) + Unused910 = data.ReadInt32(); } public void Write(WorldPacket data) diff --git a/Source/Game/Entities/Player/Player.Fields.cs b/Source/Game/Entities/Player/Player.Fields.cs index bdae81016..337589d34 100644 --- a/Source/Game/Entities/Player/Player.Fields.cs +++ b/Source/Game/Entities/Player/Player.Fields.cs @@ -501,8 +501,10 @@ namespace Game.Entities public ObjectGuid[] Pieces = new ObjectGuid[EquipmentSlot.End]; public int[] Appearances = new int[EquipmentSlot.End]; // ItemModifiedAppearanceID public int[] Enchants = new int[2]; // SpellItemEnchantmentID - public int Unknown901_1; - public int Unknown901_2; + public int SecondaryShoulderApparanceID; // Secondary shoulder appearance + public int SecondaryShoulderSlot; // Always 2 if secondary shoulder apperance is used + public int SecondaryWeaponAppearanceID; // For legion artifacts: linked child item appearance + public int SecondaryWeaponSlot; // For legion artifacts: which slot is used by child item } public enum EquipmentSetType diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 88d134d65..85d2b5b25 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -672,9 +672,8 @@ namespace Game pointsOfInterestStorage.Clear(); // need for reload case - // 0 1 2 3 4 5 6 7 - SQLResult result = DB.World.Query("SELECT ID, PositionX, PositionY, Icon, Flags, Importance, Name, Unknown905 FROM points_of_interest"); - + // 0 1 2 3 4 5 6 7 8 + var result = DB.World.Query("SELECT ID, PositionX, PositionY, PositionZ, Icon, Flags, Importance, Name, Unknown905 FROM points_of_interest"); if (result.IsEmpty()) { Log.outInfo(LogFilter.ServerLoading, "Loaded 0 Points of Interest definitions. DB table `points_of_interest` is empty."); @@ -688,16 +687,16 @@ namespace Game PointOfInterest POI = new(); POI.Id = id; - POI.Pos = new Vector2(result.Read(1), result.Read(2)); - POI.Icon = result.Read(3); - POI.Flags = result.Read(4); - POI.Importance = result.Read(5); - POI.Name = result.Read(6); - POI.Unknown905 = result.Read(7); + POI.Pos = new Vector3(result.Read(1), result.Read(2), result.Read(3)); + POI.Icon = result.Read(4); + POI.Flags = result.Read(5); + POI.Importance = result.Read(6); + POI.Name = result.Read(7); + POI.Unknown905 = result.Read(8); - if (!GridDefines.IsValidMapCoord(POI.Pos.X, POI.Pos.Y)) + if (!GridDefines.IsValidMapCoord(POI.Pos.X, POI.Pos.Y, POI.Pos.Z)) { - Log.outError(LogFilter.Sql, $"Table `points_of_interest` (ID: {id}) have invalid coordinates (PositionX: {POI.Pos.X} PositionY: {POI.Pos.Y}), ignored."); + Log.outError(LogFilter.Sql, $"Table `points_of_interest` (ID: {id}) have invalid coordinates (PositionX: {POI.Pos.X} PositionY: {POI.Pos.Y} PositionZ: {POI.Pos.Z}), ignored."); continue; } @@ -1821,13 +1820,14 @@ namespace Game creature.ModExperience = fields.Read(68); creature.RacialLeader = fields.Read(69); creature.MovementId = fields.Read(70); - creature.WidgetSetID = fields.Read(71); - creature.WidgetSetUnitConditionID = fields.Read(72); - creature.RegenHealth = fields.Read(73); - creature.MechanicImmuneMask = fields.Read(74); - creature.SpellSchoolImmuneMask = fields.Read(75); - creature.FlagsExtra = (CreatureFlagsExtra)fields.Read(76); - creature.ScriptID = GetScriptId(fields.Read(77)); + creature.CreatureDifficultyID = fields.Read(71); + creature.WidgetSetID = fields.Read(72); + creature.WidgetSetUnitConditionID = fields.Read(73); + creature.RegenHealth = fields.Read(74); + creature.MechanicImmuneMask = fields.Read(75); + creature.SpellSchoolImmuneMask = fields.Read(76); + creature.FlagsExtra = (CreatureFlagsExtra)fields.Read(77); + creature.ScriptID = GetScriptId(fields.Read(78)); _creatureTemplateStorage[entry] = creature; } @@ -2338,8 +2338,8 @@ namespace Game { uint oldMSTime = Time.GetMSTime(); - // 0 1 2 3 4 5 6 - SQLResult result = DB.World.Query("SELECT Entry, DifficultyID, LevelScalingMin, LevelScalingMax, LevelScalingDeltaMin, LevelScalingDeltaMax, ContentTuningID FROM creature_template_scaling ORDER BY Entry"); + // 0 1 2 3 4 + var result = DB.World.Query("SELECT Entry, DifficultyID, LevelScalingDeltaMin, LevelScalingDeltaMax, ContentTuningID FROM creature_template_scaling ORDER BY Entry"); if (result.IsEmpty()) { Log.outInfo(LogFilter.ServerLoading, "Loaded 0 creature template scaling definitions. DB table `creature_template_scaling` is empty."); @@ -2360,11 +2360,9 @@ namespace Game } CreatureLevelScaling creatureLevelScaling = new(); - creatureLevelScaling.MinLevel = result.Read(2); - creatureLevelScaling.MaxLevel = result.Read(3); - creatureLevelScaling.DeltaLevelMin = result.Read(4); - creatureLevelScaling.DeltaLevelMax = result.Read(5); - creatureLevelScaling.ContentTuningID = result.Read(6); + creatureLevelScaling.DeltaLevelMin = result.Read(2); + creatureLevelScaling.DeltaLevelMax = result.Read(3); + creatureLevelScaling.ContentTuningID = result.Read(4); template.scalingStorage[difficulty] = creatureLevelScaling; @@ -6555,35 +6553,37 @@ namespace Game _exclusiveQuestGroups.Clear(); SQLResult result = DB.World.Query("SELECT " + - //0 1 2 3 4 5 6 7 8 9 + //0 1 2 3 4 5 6 7 8 9 "ID, QuestType, QuestPackageID, ContentTuningID, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " + - //10 11 12 13 14 15 16 17 + //10 11 12 13 14 15 16 17 "RewardMoney, RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " + - //18 19 20 21 22 23 + //18 19 20 21 22 23 "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, " + - //24 25 26 27 28 29 30 31 + //24 25 26 27 28 29 30 31 "RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " + - //32 33 34 35 36 37 38 39 + //32 33 34 35 36 37 38 39 "RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " + - //40 41 42 43 44 45 + //40 41 42 43 44 45 "RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " + - //46 47 48 49 50 51 + //46 47 48 49 50 51 "RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " + - //52 53 54 55 56 57 + //52 53 54 55 56 57 "RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " + - //58 59 60 61 62 63 64 65 66 67 68 - "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, PortraitGiver, PortraitGiverMount, PortraitTurnIn, " + - //69 70 71 72 73 74 75 76 + //58 59 60 61 62 63 64 65 + "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, " + + //66 67 68 69 + "PortraitGiver, PortraitGiverMount, PortraitGiverModelSceneID, PortraitTurnIn, " + + //70 71 72 73 74 75 76 77 "RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, " + - //77 78 79 80 81 82 83 84 + //78 79 80 81 82 83 84 85 "RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, " + - //85 86 87 88 89 + //86 87 88 89 90 "RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " + - //90 91 92 93 94 95 96 97 + //91 92 93 94 95 96 97 98 "RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " + - //98 99 100 101 102 103 104 105 106 + //99 100 101 102 103 104 105 106 107 "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, TreasurePickerID, Expansion, ManagedWorldStateID, QuestSessionBonus, " + - //107 108 109 110 111 112 113 114 115 + //108 109 110 111 112 113 114 115 116 "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog" + " FROM quest_template"); diff --git a/Source/Game/Handlers/CharacterHandler.cs b/Source/Game/Handlers/CharacterHandler.cs index 17099f290..9dd56ad63 100644 --- a/Source/Game/Handlers/CharacterHandler.cs +++ b/Source/Game/Handlers/CharacterHandler.cs @@ -1091,6 +1091,10 @@ namespace Game features.IsMuted = !CanSpeak(); SendPacket(features); + + FeatureSystemStatus2 features2 = new(); + features2.TextToSpeechFeatureEnabled = false; + SendPacket(features2); } [WorldPacketHandler(ClientOpcodes.SetFactionAtWar)] diff --git a/Source/Game/Handlers/ChatHandler.cs b/Source/Game/Handlers/ChatHandler.cs index f0a9503a0..f91e802db 100644 --- a/Source/Game/Handlers/ChatHandler.cs +++ b/Source/Game/Handlers/ChatHandler.cs @@ -16,6 +16,7 @@ */ using Framework.Constants; +using Framework.Dynamic; using Game.Chat; using Game.DataStorage; using Game.Entities; @@ -85,7 +86,7 @@ namespace Game [WorldPacketHandler(ClientOpcodes.ChatMessageChannel)] void HandleChatMessageChannel(ChatMessageChannel packet) { - HandleChat(ChatMsg.Channel, packet.Language, packet.Text, packet.Target); + HandleChat(ChatMsg.Channel, packet.Language, packet.Text, packet.Target, packet.ChannelGUID); } [WorldPacketHandler(ClientOpcodes.ChatMessageEmote)] @@ -94,7 +95,7 @@ namespace Game HandleChat(ChatMsg.Emote, Language.Universal, packet.Text); } - void HandleChat(ChatMsg type, Language lang, string msg, string target = "") + void HandleChat(ChatMsg type, Language lang, string msg, string target = "", ObjectGuid channelGuid = default) { Player sender = GetPlayer(); @@ -340,7 +341,7 @@ namespace Game return; } } - Channel chn = ChannelManager.GetChannelForPlayerByNamePart(target, sender); + Channel chn = !channelGuid.IsEmpty() ? ChannelManager.GetChannelForPlayerByGuid(channelGuid, sender) : ChannelManager.GetChannelForPlayerByNamePart(target, sender); if (chn != null) { Global.ScriptMgr.OnPlayerChat(GetPlayer(), type, lang, msg, chn); @@ -378,10 +379,10 @@ namespace Game [WorldPacketHandler(ClientOpcodes.ChatAddonMessageTargeted)] void HandleChatAddonMessageTargeted(ChatAddonMessageTargeted chatAddonMessageTargeted) { - HandleChatAddon(chatAddonMessageTargeted.Params.Type, chatAddonMessageTargeted.Params.Prefix, chatAddonMessageTargeted.Params.Text, chatAddonMessageTargeted.Params.IsLogged, chatAddonMessageTargeted.Target); + HandleChatAddon(chatAddonMessageTargeted.Params.Type, chatAddonMessageTargeted.Params.Prefix, chatAddonMessageTargeted.Params.Text, chatAddonMessageTargeted.Params.IsLogged, chatAddonMessageTargeted.Target, chatAddonMessageTargeted.ChannelGUID); } - void HandleChatAddon(ChatMsg type, string prefix, string text, bool isLogged, string target = "") + void HandleChatAddon(ChatMsg type, string prefix, string text, bool isLogged, string target = "", Optional channelGuid = default) { Player sender = GetPlayer(); @@ -445,7 +446,7 @@ namespace Game break; } case ChatMsg.Channel: - Channel chn = ChannelManager.GetChannelForPlayerByNamePart(target, sender); + Channel chn = channelGuid.HasValue ? ChannelManager.GetChannelForPlayerByGuid(channelGuid.Value, sender) : ChannelManager.GetChannelForPlayerByNamePart(target, sender); if (chn != null) chn.AddonSay(sender.GetGUID(), prefix, text, isLogged); break; diff --git a/Source/Game/Networking/Packets/AuctionHousePackets.cs b/Source/Game/Networking/Packets/AuctionHousePackets.cs index 1dc5b5ed8..802b82761 100644 --- a/Source/Game/Networking/Packets/AuctionHousePackets.cs +++ b/Source/Game/Networking/Packets/AuctionHousePackets.cs @@ -928,6 +928,7 @@ namespace Game.Networking.Packets public Optional BidAmount; public List Gems = new(); public Optional AuctionBucketKey; + public Optional Creator; public void Write(WorldPacket data) { @@ -941,6 +942,7 @@ namespace Game.Networking.Packets data.WriteBit(CensorServerSideInfo); data.WriteBit(CensorBidInfo); data.WriteBit(AuctionBucketKey.HasValue); + data.WriteBit(Creator.HasValue); if (!CensorBidInfo) { data.WriteBit(Bidder.HasValue); @@ -982,6 +984,9 @@ namespace Game.Networking.Packets data.WriteUInt32(EndTime); } + if (Creator.HasValue) + data.WritePackedGuid(Creator.Value); + if (!CensorBidInfo) { if (Bidder.HasValue) diff --git a/Source/Game/Networking/Packets/BattleGroundPackets.cs b/Source/Game/Networking/Packets/BattleGroundPackets.cs index 30e7576b2..d8913c471 100644 --- a/Source/Game/Networking/Packets/BattleGroundPackets.cs +++ b/Source/Game/Networking/Packets/BattleGroundPackets.cs @@ -530,6 +530,7 @@ namespace Game.Networking.Packets public int BestSeasonRating; public int PvpTierID; public int Unused3; + public int WeeklyBestWinPvpTierID; public bool Disqualified; public void Write(WorldPacket data) @@ -547,6 +548,7 @@ namespace Game.Networking.Packets data.WriteInt32(BestSeasonRating); data.WriteInt32(PvpTierID); data.WriteInt32(Unused3); + data.WriteInt32(WeeklyBestWinPvpTierID); data.WriteBit(Disqualified); data.FlushBits(); } diff --git a/Source/Game/Networking/Packets/BattlePetPackets.cs b/Source/Game/Networking/Packets/BattlePetPackets.cs index 4120606fb..e6eda0142 100644 --- a/Source/Game/Networking/Packets/BattlePetPackets.cs +++ b/Source/Game/Networking/Packets/BattlePetPackets.cs @@ -32,7 +32,6 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt16(Trap); _worldPacket.WriteInt32(Slots.Count); _worldPacket.WriteInt32(Pets.Count); - _worldPacket.WriteInt32(MaxPets); _worldPacket.WriteBit(HasJournalLock); _worldPacket.FlushBits(); @@ -47,7 +46,6 @@ namespace Game.Networking.Packets bool HasJournalLock = true; public List Slots = new(); public List Pets = new(); - int MaxPets = 1000; } class BattlePetJournalLockAcquired : ServerPacket diff --git a/Source/Game/Networking/Packets/ChatPackets.cs b/Source/Game/Networking/Packets/ChatPackets.cs index 9587490e9..b54b79d20 100644 --- a/Source/Game/Networking/Packets/ChatPackets.cs +++ b/Source/Game/Networking/Packets/ChatPackets.cs @@ -64,6 +64,7 @@ namespace Game.Networking.Packets public override void Read() { Language = (Language)_worldPacket.ReadInt32(); + ChannelGUID = _worldPacket.ReadPackedGuid(); uint targetLen = _worldPacket.ReadBits(9); uint textLen = _worldPacket.ReadBits(9); Target = _worldPacket.ReadString(targetLen); @@ -71,6 +72,7 @@ namespace Game.Networking.Packets } public Language Language = Language.Universal; + public ObjectGuid ChannelGUID; public string Text; public string Target; } @@ -95,11 +97,13 @@ namespace Game.Networking.Packets { uint targetLen = _worldPacket.ReadBits(9); Params.Read(_worldPacket); + ChannelGUID.Set(_worldPacket.ReadPackedGuid()); Target = _worldPacket.ReadString(targetLen); } public string Target; public ChatAddonMessageParams Params = new(); + public Optional ChannelGUID; // not optional in the packet. Optional for api reasons } public class ChatMessageDND : ClientPacket @@ -229,6 +233,7 @@ namespace Game.Networking.Packets _worldPacket.WriteBit(HideChatLog); _worldPacket.WriteBit(FakeSenderName); _worldPacket.WriteBit(Unused_801.HasValue); + _worldPacket.WriteBit(ChannelGUID.HasValue); _worldPacket.FlushBits(); _worldPacket.WriteString(SenderName); @@ -239,9 +244,12 @@ namespace Game.Networking.Packets if (Unused_801.HasValue) _worldPacket.WriteUInt32(Unused_801.Value); + + if (ChannelGUID.HasValue) + _worldPacket.WritePackedGuid(ChannelGUID.Value); } - public ChatMsg SlashCmd = 0; + public ChatMsg SlashCmd; public Language _Language = Language.Universal; public ObjectGuid SenderGUID; public ObjectGuid SenderGuildGUID; @@ -256,11 +264,12 @@ namespace Game.Networking.Packets public string Channel = ""; public string ChatText = ""; public uint AchievementID; - public ChatFlags _ChatFlags = 0; - public float DisplayTime = 0.0f; + public ChatFlags _ChatFlags; + public float DisplayTime; public Optional Unused_801; - public bool HideChatLog = false; - public bool FakeSenderName = false; + public bool HideChatLog; + public bool FakeSenderName; + public Optional ChannelGUID; } public class EmoteMessage : ServerPacket diff --git a/Source/Game/Networking/Packets/CombatLogPackets.cs b/Source/Game/Networking/Packets/CombatLogPackets.cs index 9507d31f9..8478e6aab 100644 --- a/Source/Game/Networking/Packets/CombatLogPackets.cs +++ b/Source/Game/Networking/Packets/CombatLogPackets.cs @@ -575,14 +575,14 @@ namespace Game.Networking.Packets attackRoundInfo.WriteUInt8((byte)ContentTuning.TuningType); attackRoundInfo.WriteUInt8(ContentTuning.TargetLevel); attackRoundInfo.WriteUInt8(ContentTuning.Expansion); - attackRoundInfo.WriteUInt8(ContentTuning.TargetMinScalingLevel); - attackRoundInfo.WriteUInt8(ContentTuning.TargetMaxScalingLevel); attackRoundInfo.WriteInt16(ContentTuning.PlayerLevelDelta); attackRoundInfo.WriteInt8(ContentTuning.TargetScalingLevelDelta); attackRoundInfo.WriteFloat(ContentTuning.PlayerItemLevel); attackRoundInfo.WriteFloat(ContentTuning.TargetItemLevel); attackRoundInfo.WriteUInt16(ContentTuning.ScalingHealthItemLevelCurveID); attackRoundInfo.WriteUInt32((uint)ContentTuning.Flags); + attackRoundInfo.WriteUInt32(ContentTuning.PlayerContentTuningID); + attackRoundInfo.WriteUInt32(ContentTuning.TargetContentTuningID); WriteLogDataBit(); FlushBits(); diff --git a/Source/Game/Networking/Packets/EquipmentPackets.cs b/Source/Game/Networking/Packets/EquipmentPackets.cs index 250d39d50..2e68c96f7 100644 --- a/Source/Game/Networking/Packets/EquipmentPackets.cs +++ b/Source/Game/Networking/Packets/EquipmentPackets.cs @@ -62,8 +62,10 @@ namespace Game.Networking.Packets foreach (var id in equipSet.Enchants) _worldPacket.WriteInt32(id); - _worldPacket.WriteInt32(equipSet.Unknown901_1); - _worldPacket.WriteInt32(equipSet.Unknown901_2); + _worldPacket.WriteInt32(equipSet.SecondaryShoulderApparanceID); + _worldPacket.WriteInt32(equipSet.SecondaryShoulderSlot); + _worldPacket.WriteInt32(equipSet.SecondaryWeaponAppearanceID); + _worldPacket.WriteInt32(equipSet.SecondaryWeaponSlot); _worldPacket.WriteBit(equipSet.AssignedSpecIndex != -1); _worldPacket.WriteBits(equipSet.SetName.GetByteCount(), 8); @@ -103,8 +105,10 @@ namespace Game.Networking.Packets Set.Enchants[0] = _worldPacket.ReadInt32(); Set.Enchants[1] = _worldPacket.ReadInt32(); - Set.Unknown901_1 = _worldPacket.ReadInt32(); - Set.Unknown901_2 = _worldPacket.ReadInt32(); + Set.SecondaryShoulderApparanceID = _worldPacket.ReadInt32(); + Set.SecondaryShoulderSlot = _worldPacket.ReadInt32(); + Set.SecondaryWeaponAppearanceID = _worldPacket.ReadInt32(); + Set.SecondaryWeaponSlot = _worldPacket.ReadInt32(); bool hasSpecIndex = _worldPacket.HasBit(); diff --git a/Source/Game/Networking/Packets/GarrisonPackets.cs b/Source/Game/Networking/Packets/GarrisonPackets.cs index 84c8efa9e..9b81411ab 100644 --- a/Source/Game/Networking/Packets/GarrisonPackets.cs +++ b/Source/Game/Networking/Packets/GarrisonPackets.cs @@ -556,6 +556,18 @@ namespace Game.Networking.Packets } } + struct GarrisonSpecGroup + { + public int ChrSpecializationID; + public int SoulbindID; + + public void Write(WorldPacket data) + { + data.WriteInt32(ChrSpecializationID); + data.WriteInt32(SoulbindID); + } + } + class GarrisonInfo { public void Write(WorldPacket data) @@ -574,6 +586,7 @@ namespace Game.Networking.Packets data.WriteInt32(Talents.Count); data.WriteInt32(Collections.Count); data.WriteInt32(EventLists.Count); + data.WriteInt32(SpecGroups.Count); data.WriteInt32(CanStartMission.Count); data.WriteInt32(ArchivedMissions.Count); data.WriteUInt32(NumFollowerActivationsRemaining); @@ -601,6 +614,9 @@ namespace Game.Networking.Packets foreach (GarrisonEventList eventList in EventLists) eventList.Write(data); + foreach (var specGroup in SpecGroups) + specGroup.Write(data); + foreach (var id in ArchivedMissions) data.WriteInt32(id); @@ -647,6 +663,7 @@ namespace Game.Networking.Packets public List Talents = new(); public List Collections = new(); public List EventLists = new(); + public List SpecGroups = new(); public List CanStartMission = new(); public List ArchivedMissions = new(); } diff --git a/Source/Game/Networking/Packets/GuildPackets.cs b/Source/Game/Networking/Packets/GuildPackets.cs index 002a2fee1..a1c61f4ed 100644 --- a/Source/Game/Networking/Packets/GuildPackets.cs +++ b/Source/Game/Networking/Packets/GuildPackets.cs @@ -229,10 +229,16 @@ namespace Game.Networking.Packets public override void Read() { uint nameLen = _worldPacket.ReadBits(9); + bool hasUnused910 = _worldPacket.HasBit(); + Name = _worldPacket.ReadString(nameLen); + + if (hasUnused910) + Unused910.Set(_worldPacket.ReadInt32()); } public string Name; + public Optional Unused910; } public class GuildInvite : ServerPacket @@ -1640,6 +1646,9 @@ namespace Game.Networking.Packets data.WriteBits(OfficerNote.GetByteCount(), 8); data.WriteBit(Authenticated); data.WriteBit(SorEligible); + data.FlushBits(); + + DungeonScore.Write(data); data.WriteString(Name); data.WriteString(Note); @@ -1666,6 +1675,7 @@ namespace Game.Networking.Packets public bool Authenticated; public bool SorEligible; public GuildRosterProfessionData[] Profession = new GuildRosterProfessionData[2]; + public DungeonScoreSummary DungeonScore = new(); } public class GuildEventEntry diff --git a/Source/Game/Networking/Packets/InspectPackets.cs b/Source/Game/Networking/Packets/InspectPackets.cs index 9e5e2e4eb..5910a0a81 100644 --- a/Source/Game/Networking/Packets/InspectPackets.cs +++ b/Source/Game/Networking/Packets/InspectPackets.cs @@ -299,6 +299,7 @@ namespace Game.Networking.Packets data.WriteInt32(WeeklyBestRating); data.WriteInt32(SeasonBestRating); data.WriteInt32(PvpTierID); + data.WriteInt32(WeeklyBestWinPvpTierID); data.WriteBit(Disqualified); data.FlushBits(); } @@ -312,6 +313,7 @@ namespace Game.Networking.Packets public int WeeklyBestRating; public int SeasonBestRating; public int PvpTierID; + public int WeeklyBestWinPvpTierID; public byte Bracket; public bool Disqualified; } diff --git a/Source/Game/Networking/Packets/MailPackets.cs b/Source/Game/Networking/Packets/MailPackets.cs index d3488d253..8aa2fbd59 100644 --- a/Source/Game/Networking/Packets/MailPackets.cs +++ b/Source/Game/Networking/Packets/MailPackets.cs @@ -167,12 +167,10 @@ namespace Game.Networking.Packets { Mailbox = _worldPacket.ReadPackedGuid(); MailID = _worldPacket.ReadUInt32(); - BiReceipt = _worldPacket.HasBit(); } public ObjectGuid Mailbox; public uint MailID; - public bool BiReceipt; } public class MailDelete : ClientPacket diff --git a/Source/Game/Networking/Packets/MovementPackets.cs b/Source/Game/Networking/Packets/MovementPackets.cs index 25f19754c..1bf9da8ed 100644 --- a/Source/Game/Networking/Packets/MovementPackets.cs +++ b/Source/Game/Networking/Packets/MovementPackets.cs @@ -323,7 +323,11 @@ namespace Game.Networking.Packets data.WriteUInt32(movementForce.TransportID); data.WriteFloat(movementForce.Magnitude); data.WriteBits(movementForce.Type, 2); + data.WriteBit(movementForce.Unused910 != 0); data.FlushBits(); + + if (movementForce.Unused910 != 0) + data.WriteInt32(movementForce.Unused910); } } diff --git a/Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs b/Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs new file mode 100644 index 000000000..a00ffd677 --- /dev/null +++ b/Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs @@ -0,0 +1,179 @@ +/* + * Copyright (C) 2012-2020 CypherCore + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using Game.Entities; +using System.Collections.Generic; + +namespace Game.Networking.Packets +{ + public struct DungeonScoreMapSummary + { + public int ChallengeModeID; + public int MapScore; + public int BestRunLevel; + public int BestRunDurationMS; + public bool FinishedSuccess; + + public void Write(WorldPacket data) + { + data.WriteInt32(ChallengeModeID); + data.WriteInt32(MapScore); + data.WriteInt32(BestRunLevel); + data.WriteInt32(BestRunDurationMS); + data.WriteBit(FinishedSuccess); + data.FlushBits(); + } + } + + public class DungeonScoreSummary + { + public int CurrentSeasonScore; + public List Runs = new(); + + public void Write(WorldPacket data) + { + data.WriteInt32(CurrentSeasonScore); + data.WriteInt32(Runs.Count); + foreach (var dungeonScoreMapSummary in Runs) + dungeonScoreMapSummary.Write(data); + } + } + + public struct MythicPlusMember + { + public ObjectGuid BnetAccountGUID; + public ulong GuildClubMemberID; + public ObjectGuid GUID; + public ObjectGuid GuildGUID; + public uint NativeRealmAddress; + public uint VirtualRealmAddress; + public short ChrSpecializationID; + public short RaceID; + public int ItemLevel; + public int CovenantID; + public int SoulbindID; + + public void Write(WorldPacket data) + { + data.WritePackedGuid(BnetAccountGUID); + data.WriteUInt64(GuildClubMemberID); + data.WritePackedGuid(GUID); + data.WritePackedGuid(GuildGUID); + data.WriteUInt32(NativeRealmAddress); + data.WriteUInt32(VirtualRealmAddress); + data.WriteInt16(ChrSpecializationID); + data.WriteInt16(RaceID); + data.WriteInt32(ItemLevel); + data.WriteInt32(CovenantID); + data.WriteInt32(SoulbindID); + } + } + + public class MythicPlusRun + { + public int MapChallengeModeID; + public bool Completed; + public uint Level; + public int DurationMs; + public long StartDate; + public long CompletionDate; + public int Season; + public List Members = new(); + public int RunScore; + public int[] KeystoneAffixIDs = new int[4]; + + public void Write(WorldPacket data) + { + data.WriteInt32(MapChallengeModeID); + data.WriteUInt32(Level); + data.WriteInt32(DurationMs); + data.WriteInt64(StartDate); + data.WriteInt64(CompletionDate); + data.WriteInt32(Season); + foreach (var id in KeystoneAffixIDs) + data.WriteInt32(id); + + data.WriteInt32(Members.Count); + data.WriteInt32(RunScore); + foreach (var member in Members) + member.Write(data); + + data.WriteBit(Completed); + data.FlushBits(); + } + } + + public class DungeonScoreBestRunForAffix + { + public int KeystoneAffixID; + public MythicPlusRun Run = new(); + public int Score; + + public void Write(WorldPacket data) + { + data.WriteInt32(KeystoneAffixID); + data.WriteInt32(Score); + Run.Write(data); + } + } + + public class DungeonScoreMapData + { + public int MapChallengeModeID; + public List BestRuns = new(); + public int OverAllScore; + + public void Write(WorldPacket data) + { + data.WriteInt32(MapChallengeModeID); + data.WriteInt32(BestRuns.Count); + data.WriteInt32(OverAllScore); + foreach (var bestRun in BestRuns) + bestRun.Write(data); + } + } + + public class DungeonScoreSeasonData + { + public int Season; + public List Maps = new(); + public int SeasonScore; + + public void Write(WorldPacket data) + { + data.WriteInt32(Season); + data.WriteInt32(Maps.Count); + data.WriteInt32(SeasonScore); + foreach (var map in Maps) + map.Write(data); + } + } + + public class DungeonScoreData + { + public List Seasons = new(); + public int TotalRuns; + + public void Write(WorldPacket data) + { + data.WriteInt32(Seasons.Count); + data.WriteInt32(TotalRuns); + foreach (var season in Seasons) + season.Write(data); + } + } +} \ No newline at end of file diff --git a/Source/Game/Networking/Packets/NPCPackets.cs b/Source/Game/Networking/Packets/NPCPackets.cs index c4b130689..3afcc8819 100644 --- a/Source/Game/Networking/Packets/NPCPackets.cs +++ b/Source/Game/Networking/Packets/NPCPackets.cs @@ -205,8 +205,7 @@ namespace Game.Networking.Packets public override void Write() { _worldPacket.WriteUInt32(Id); - _worldPacket.WriteFloat(Pos.X); - _worldPacket.WriteFloat(Pos.Y); + _worldPacket.WriteVector3(Pos); _worldPacket.WriteUInt32(Icon); _worldPacket.WriteUInt32(Importance); _worldPacket.WriteUInt32(Unknown905); @@ -218,7 +217,7 @@ namespace Game.Networking.Packets public uint Id; public uint Flags; - public Vector2 Pos; + public Vector3 Pos; public uint Icon; public uint Importance; public uint Unknown905; diff --git a/Source/Game/Networking/Packets/PartyPackets.cs b/Source/Game/Networking/Packets/PartyPackets.cs index 0f13b5d81..d15501563 100644 --- a/Source/Game/Networking/Packets/PartyPackets.cs +++ b/Source/Game/Networking/Packets/PartyPackets.cs @@ -1001,6 +1001,8 @@ namespace Game.Networking.Packets data.WriteBit(PetStats.HasValue); data.FlushBits(); + DungeonScore.Write(data); + if (PetStats.HasValue) PetStats.Value.Write(data); } @@ -1032,6 +1034,7 @@ namespace Game.Networking.Packets public uint WmoDoodadPlacementID; public sbyte[] PartyType = new sbyte[2]; public CTROptions ChromieTime; + public DungeonScoreSummary DungeonScore = new(); } struct PartyPlayerInfo diff --git a/Source/Game/Networking/Packets/PetitionPackets.cs b/Source/Game/Networking/Packets/PetitionPackets.cs index 95a298905..ff45521cb 100644 --- a/Source/Game/Networking/Packets/PetitionPackets.cs +++ b/Source/Game/Networking/Packets/PetitionPackets.cs @@ -91,11 +91,13 @@ namespace Game.Networking.Packets uint titleLen = _worldPacket.ReadBits(7); Unit = _worldPacket.ReadPackedGuid(); + Unused910 = _worldPacket.ReadUInt32(); Title = _worldPacket.ReadString(titleLen); } public ObjectGuid Unit; public string Title; + public uint Unused910; } public class PetitionShowSignatures : ClientPacket diff --git a/Source/Game/Networking/Packets/QueryPackets.cs b/Source/Game/Networking/Packets/QueryPackets.cs index aea847727..3e38a4720 100644 --- a/Source/Game/Networking/Packets/QueryPackets.cs +++ b/Source/Game/Networking/Packets/QueryPackets.cs @@ -132,6 +132,7 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(Stats.RequiredExpansion); _worldPacket.WriteUInt32(Stats.VignetteID); _worldPacket.WriteInt32(Stats.Class); + _worldPacket.WriteInt32(Stats.CreatureDifficultyID); _worldPacket.WriteInt32(Stats.WidgetSetID); _worldPacket.WriteInt32(Stats.WidgetSetUnitConditionID); @@ -720,6 +721,7 @@ namespace Game.Networking.Packets public uint RequiredExpansion; public uint VignetteID; public int Class; + public int CreatureDifficultyID; public int WidgetSetID; public int WidgetSetUnitConditionID; public uint[] Flags = new uint[2]; diff --git a/Source/Game/Networking/Packets/QuestPackets.cs b/Source/Game/Networking/Packets/QuestPackets.cs index 48d51ac61..8e563e801 100644 --- a/Source/Game/Networking/Packets/QuestPackets.cs +++ b/Source/Game/Networking/Packets/QuestPackets.cs @@ -166,6 +166,7 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(Info.PortraitGiver); _worldPacket.WriteUInt32(Info.PortraitGiverMount); + _worldPacket.WriteInt32(Info.PortraitGiverModelSceneID); _worldPacket.WriteUInt32(Info.PortraitTurnIn); for (uint i = 0; i < SharedConst.QuestRewardReputationsCount; ++i) @@ -312,6 +313,7 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(QuestPackageID); _worldPacket.WriteUInt32(PortraitGiver); _worldPacket.WriteUInt32(PortraitGiverMount); + _worldPacket.WriteInt32(PortraitGiverModelSceneID); _worldPacket.WriteUInt32(PortraitTurnIn); _worldPacket.WriteBits(QuestTitle.GetByteCount(), 9); @@ -332,6 +334,7 @@ namespace Game.Networking.Packets public uint PortraitTurnIn; public uint PortraitGiver; public uint PortraitGiverMount; + public int PortraitGiverModelSceneID; public string QuestTitle = ""; public string RewardText = ""; public string PortraitGiverText = ""; @@ -430,6 +433,7 @@ namespace Game.Networking.Packets _worldPacket.WriteInt32(QuestPackageID); _worldPacket.WriteUInt32(PortraitGiver); _worldPacket.WriteUInt32(PortraitGiverMount); + _worldPacket.WriteInt32(PortraitGiverModelSceneID); _worldPacket.WriteUInt32(PortraitTurnIn); _worldPacket.WriteUInt32(QuestFlags[0]); // Flags _worldPacket.WriteUInt32(QuestFlags[1]); // FlagsEx @@ -494,6 +498,7 @@ namespace Game.Networking.Packets public uint PortraitTurnIn; public uint PortraitGiver; public uint PortraitGiverMount; + public int PortraitGiverModelSceneID; public int QuestStartItemID; public int QuestSessionBonus; public string PortraitGiverText = ""; @@ -839,6 +844,7 @@ namespace Game.Networking.Packets _worldPacket.WritePackedGuid(SenderGUID); _worldPacket.WriteInt32(UiTextureKitID); _worldPacket.WriteUInt32(SoundKitID); + _worldPacket.WriteUInt8(NumRerolls); _worldPacket.WriteBits(Question.GetByteCount(), 8); _worldPacket.WriteBit(CloseChoiceFrame); _worldPacket.WriteBit(HideWarboardHeader); @@ -855,6 +861,7 @@ namespace Game.Networking.Packets public int ChoiceID; public int UiTextureKitID; public uint SoundKitID; + public byte NumRerolls; public string Question; public List Responses = new(); public bool CloseChoiceFrame; @@ -870,10 +877,12 @@ namespace Game.Networking.Packets { ChoiceID = _worldPacket.ReadInt32(); ResponseID = _worldPacket.ReadInt32(); + IsReroll = _worldPacket.HasBit(); } public int ChoiceID; public int ResponseID; + public bool IsReroll; } //Structs @@ -970,6 +979,7 @@ namespace Game.Networking.Packets public uint RewardNumSkillUps; // reward skill points public uint PortraitGiver; // quest giver entry ? public uint PortraitGiverMount; + public int PortraitGiverModelSceneID; public uint PortraitTurnIn; // quest turn in entry ? public string PortraitGiverText; public string PortraitGiverName; diff --git a/Source/Game/Networking/Packets/SpellPackets.cs b/Source/Game/Networking/Packets/SpellPackets.cs index 3a7502182..75e8de2fe 100644 --- a/Source/Game/Networking/Packets/SpellPackets.cs +++ b/Source/Game/Networking/Packets/SpellPackets.cs @@ -1240,9 +1240,8 @@ namespace Game.Networking.Packets ScalingHealthItemLevelCurveID = (ushort)target.m_unitData.ScalingHealthItemLevelCurveID; TargetLevel = (byte)target.GetLevel(); Expansion = (byte)creatureTemplate.HealthScalingExpansion; - TargetMinScalingLevel = (byte)creatureScaling.MinLevel; - TargetMaxScalingLevel = (byte)creatureScaling.MaxLevel; TargetScalingLevelDelta = (sbyte)attacker.m_unitData.ScalingLevelDelta; + TargetContentTuningID = creatureScaling.ContentTuningID; return true; } @@ -1257,9 +1256,8 @@ namespace Game.Networking.Packets ScalingHealthItemLevelCurveID = (ushort)target.m_unitData.ScalingHealthItemLevelCurveID; TargetLevel = (byte)target.GetLevel(); Expansion = (byte)creatureTemplate.HealthScalingExpansion; - TargetMinScalingLevel = (byte)creatureScaling.MinLevel; - TargetMaxScalingLevel = (byte)creatureScaling.MaxLevel; TargetScalingLevelDelta = (sbyte)target.m_unitData.ScalingLevelDelta; + TargetContentTuningID = creatureScaling.ContentTuningID; return true; } @@ -1274,9 +1272,8 @@ namespace Game.Networking.Packets PlayerItemLevel = 0; TargetLevel = (byte)target.GetLevel(); Expansion = (byte)creatureTemplate.HealthScalingExpansion; - TargetMinScalingLevel = (byte)creatureScaling.MinLevel; - TargetMaxScalingLevel = (byte)creatureScaling.MaxLevel; TargetScalingLevelDelta = (sbyte)accessor.m_unitData.ScalingLevelDelta; + TargetContentTuningID = creatureScaling.ContentTuningID; return true; } @@ -1323,10 +1320,10 @@ namespace Game.Networking.Packets data.WriteUInt16(ScalingHealthItemLevelCurveID); data.WriteUInt8(TargetLevel); data.WriteUInt8(Expansion); - data.WriteUInt8(TargetMinScalingLevel); - data.WriteUInt8(TargetMaxScalingLevel); data.WriteInt8(TargetScalingLevelDelta); data.WriteUInt32((uint)Flags); + data.WriteUInt32(PlayerContentTuningID); + data.WriteUInt32(TargetContentTuningID); data.WriteBits(TuningType, 4); data.FlushBits(); } @@ -1338,10 +1335,10 @@ namespace Game.Networking.Packets public ushort ScalingHealthItemLevelCurveID; public byte TargetLevel; public byte Expansion; - public byte TargetMinScalingLevel; - public byte TargetMaxScalingLevel; public sbyte TargetScalingLevelDelta; - public ContentTuningFlags Flags = ContentTuningFlags.NoLevelScaling | ContentTuningFlags.NoItemLevelScaling; + public ContentTuningFlags Flags = ContentTuningFlags.NoLevelScaling | ContentTuningFlags.NoItemLevelScaling; + public uint PlayerContentTuningID; + public uint TargetContentTuningID; public enum ContentTuningType { @@ -1581,13 +1578,11 @@ namespace Game.Networking.Packets { public int ItemID; public int Slot; - public int Count; public void Read(WorldPacket data) { ItemID = data.ReadInt32(); Slot = data.ReadInt32(); - Count = data.ReadInt32(); } } diff --git a/Source/Game/Networking/Packets/SystemPackets.cs b/Source/Game/Networking/Packets/SystemPackets.cs index 94f882746..1bfc0b249 100644 --- a/Source/Game/Networking/Packets/SystemPackets.cs +++ b/Source/Game/Networking/Packets/SystemPackets.cs @@ -233,6 +233,19 @@ namespace Game.Networking.Packets } } + public class FeatureSystemStatus2 : ServerPacket + { + public FeatureSystemStatus2() : base(ServerOpcodes.FeatureSystemStatus2) { } + + public override void Write() + { + _worldPacket.WriteBit(TextToSpeechFeatureEnabled); + _worldPacket.FlushBits(); + } + + public bool TextToSpeechFeatureEnabled; + } + public class FeatureSystemStatusGlueScreen : ServerPacket { public FeatureSystemStatusGlueScreen() : base(ServerOpcodes.FeatureSystemStatusGlueScreen) { } diff --git a/Source/Game/Networking/Packets/TicketPackets.cs b/Source/Game/Networking/Packets/TicketPackets.cs index 9c19e6dc4..8b05287b8 100644 --- a/Source/Game/Networking/Packets/TicketPackets.cs +++ b/Source/Game/Networking/Packets/TicketPackets.cs @@ -141,6 +141,7 @@ namespace Game.Networking.Packets bool hasLFGListApplicant = _worldPacket.HasBit(); bool hasClubMessage = _worldPacket.HasBit(); bool hasClubFinderResult = _worldPacket.HasBit(); + bool hasUnk910 = _worldPacket.HasBit(); _worldPacket.ResetBitPos(); @@ -196,6 +197,12 @@ namespace Game.Networking.Packets ClubFinderResult.HasValue = true; ClubFinderResult.Value.Read(_worldPacket); } + + if (hasUnk910) + { + Unused910.HasValue = true; + Unused910.Value.Read(_worldPacket); + } } public SupportTicketHeader Header; @@ -212,6 +219,7 @@ namespace Game.Networking.Packets public Optional LFGListApplicant; public Optional CommunityMessage; public Optional ClubFinderResult; + public Optional Unused910; public struct SupportTicketChatLine { @@ -460,6 +468,19 @@ namespace Game.Networking.Packets ClubName = data.ReadString(data.ReadBits(12)); } } + + public struct SupportTicketUnused910 + { + public string field_0; + public ObjectGuid field_104; + + public void Read(WorldPacket data) + { + uint field_0Length = data.ReadBits(7); + field_104 = data.ReadPackedGuid(); + field_0 = data.ReadString(field_0Length); + } + } } class Complaint : ClientPacket diff --git a/Source/Game/Quest/Quest.cs b/Source/Game/Quest/Quest.cs index 7808ae306..31a672ab7 100644 --- a/Source/Game/Quest/Quest.cs +++ b/Source/Game/Quest/Quest.cs @@ -89,46 +89,47 @@ namespace Game QuestGiverPortrait = fields.Read(66); QuestGiverPortraitMount = fields.Read(67); - QuestTurnInPortrait = fields.Read(68); + QuestGiverPortraitModelSceneId = fields.Read(68); + QuestTurnInPortrait = fields.Read(69); for (int i = 0; i < SharedConst.QuestRewardReputationsCount; ++i) { - RewardFactionId[i] = fields.Read(69 + i * 4); - RewardFactionValue[i] = fields.Read(70 + i * 4); - RewardFactionOverride[i] = fields.Read(71 + i * 4); - RewardFactionCapIn[i] = fields.Read(72 + i * 4); + RewardFactionId[i] = fields.Read(70 + i * 4); + RewardFactionValue[i] = fields.Read(71 + i * 4); + RewardFactionOverride[i] = fields.Read(72 + i * 4); + RewardFactionCapIn[i] = fields.Read(73 + i * 4); } - RewardReputationMask = fields.Read(89); + RewardReputationMask = fields.Read(90); for (int i = 0; i < SharedConst.QuestRewardCurrencyCount; ++i) { - RewardCurrencyId[i] = fields.Read(90 + i * 2); - RewardCurrencyCount[i] = fields.Read(91 + i * 2); + RewardCurrencyId[i] = fields.Read(91 + i * 2); + RewardCurrencyCount[i] = fields.Read(92 + i * 2); if (RewardCurrencyId[i] != 0) ++_rewCurrencyCount; } - SoundAccept = fields.Read(98); - SoundTurnIn = fields.Read(99); - AreaGroupID = fields.Read(100); - LimitTime = fields.Read(101); - AllowableRaces = (long)fields.Read(102); - TreasurePickerID = fields.Read(103); - Expansion = fields.Read(104); - ManagedWorldStateID = fields.Read(105); - QuestSessionBonus = fields.Read(106); + SoundAccept = fields.Read(99); + SoundTurnIn = fields.Read(100); + AreaGroupID = fields.Read(101); + LimitTime = fields.Read(102); + AllowableRaces = (long)fields.Read(103); + TreasurePickerID = fields.Read(104); + Expansion = fields.Read(105); + ManagedWorldStateID = fields.Read(106); + QuestSessionBonus = fields.Read(107); - LogTitle = fields.Read(107); - LogDescription = fields.Read(108); - QuestDescription = fields.Read(109); - AreaDescription = fields.Read(110); - PortraitGiverText = fields.Read(111); - PortraitGiverName = fields.Read(112); - PortraitTurnInText = fields.Read(113); - PortraitTurnInName = fields.Read(114); - QuestCompletionLog = fields.Read(115); + LogTitle = fields.Read(108); + LogDescription = fields.Read(109); + QuestDescription = fields.Read(110); + AreaDescription = fields.Read(111); + PortraitGiverText = fields.Read(112); + PortraitGiverName = fields.Read(113); + PortraitTurnInText = fields.Read(114); + PortraitTurnInName = fields.Read(115); + QuestCompletionLog = fields.Read(116); } public void LoadRewardDisplaySpell(SQLFields fields) @@ -503,6 +504,7 @@ namespace Game QueryData.Info.RewardFactionFlags = RewardReputationMask; QueryData.Info.PortraitGiver = QuestGiverPortrait; QueryData.Info.PortraitGiverMount = QuestGiverPortraitMount; + QueryData.Info.PortraitGiverModelSceneID = QuestGiverPortraitModelSceneId; QueryData.Info.PortraitTurnIn = QuestTurnInPortrait; for (byte i = 0; i < SharedConst.QuestItemDropCount; ++i) @@ -651,6 +653,7 @@ namespace Game public uint RewardSkillPoints; public uint QuestGiverPortrait; public uint QuestGiverPortraitMount; + public int QuestGiverPortraitModelSceneId; public uint QuestTurnInPortrait; public uint[] RewardFactionId = new uint[SharedConst.QuestRewardReputationsCount]; public int[] RewardFactionValue = new int[SharedConst.QuestRewardReputationsCount]; diff --git a/Source/Game/Server/WorldSession.cs b/Source/Game/Server/WorldSession.cs index e534b227c..6a27553f0 100644 --- a/Source/Game/Server/WorldSession.cs +++ b/Source/Game/Server/WorldSession.cs @@ -869,7 +869,6 @@ namespace Game long _logoutTime; bool m_inQueue; - SessionFlags m_flags; ObjectGuid m_playerLoading; // code processed in LoginPlayer bool m_playerLogout; // code processed in LogoutPlayer bool m_playerRecentlyLogout;