diff --git a/Source/Framework/Constants/AchievementConst.cs b/Source/Framework/Constants/AchievementConst.cs index ccb0d4053..560a43f4c 100644 --- a/Source/Framework/Constants/AchievementConst.cs +++ b/Source/Framework/Constants/AchievementConst.cs @@ -465,6 +465,9 @@ namespace Framework.Constants PlayerDataElementCharacterEqual = 390, /*NYI*/ // Player {PlayerDataElementCharacter} is greater than {#Amount} PlayerDataElementAccountEqual = 391, /*NYI*/ // Player {PlayerDataElementAccount} is greater than {#Amount} PlayerHasCompletedQuestOrIsReadyToTurnIn = 392, // Player has previously completed quest "{QuestV2}" or is ready to turn it in + PlayerTitle = 393, // Player is currently using "{ChrTitles}" title + + PlayerIsInGuild = 404, // Player is in a guild } public enum CriteriaFailEvent : byte diff --git a/Source/Framework/Constants/CliDBConst.cs b/Source/Framework/Constants/CliDBConst.cs index acafe287f..fed3ecdfb 100644 --- a/Source/Framework/Constants/CliDBConst.cs +++ b/Source/Framework/Constants/CliDBConst.cs @@ -1103,6 +1103,7 @@ namespace Framework.Constants DontDisplayIfZero = 0x20, // NYI ScaleMaxQuantityBySeasonWeeks = 0x40, // NYI ScaleMaxQuantityByWeeksSinceStart = 0x80, // NYI + ForceMaxQuantityOnConversion = 0x100, // NYI } [Flags] @@ -1269,7 +1270,7 @@ namespace Framework.Constants public enum ContentTuningFlag { DisabledForItem = 0x04, - Horde = 0x8, + Horde = 0x08, Alliance = 0x10 } @@ -2034,6 +2035,14 @@ namespace Framework.Constants CharacterBanker = 67, AccountBanker = 68, ProfessionRespec = 69, + PlaceholderType71 = 70, + PlaceholderType72 = 71, + PlaceholderType73 = 72, + PlaceholderType74 = 73, + PlaceholderType75 = 74, + PlaceholderType76 = 75, + GuildRename = 76, + PlaceholderType77 = 77, } [Flags] @@ -2885,6 +2894,14 @@ namespace Framework.Constants ContentTuningPvpItemLevelHealthScaling = 13, ContentTuningPvpLevelDamageScaling = 14, ContentTuningPvpItemLevelDamageScaling = 15, + + ArmorItemLevelDiminishing = 18, + + ChallengeModeHealth = 21, + ChallengeModeDamage = 22, + MythicPlusEndOfRunGearSequenceLevel = 23, + + SpellAreaEffectWarningRadius = 26, // ground spell effect warning circle radius (based on spell radius) } public enum BattlePetSpeciesFlags : int diff --git a/Source/Framework/Constants/GossipConst.cs b/Source/Framework/Constants/GossipConst.cs index 9bd19b207..5ec8b9f79 100644 --- a/Source/Framework/Constants/GossipConst.cs +++ b/Source/Framework/Constants/GossipConst.cs @@ -93,6 +93,12 @@ namespace Framework.Constants CharacterBanker = 56, AccountBanker = 57, ProfessionRespec = 58, + Placeholder1 = 59, + Placeholder2 = 60, + Placeholder3 = 61, + GuildRename = 62, + Placeholder4 = 63, + ItemUpgrade = 64, Max } diff --git a/Source/Framework/Constants/ItemConst.cs b/Source/Framework/Constants/ItemConst.cs index c36fdb309..1e774c06f 100644 --- a/Source/Framework/Constants/ItemConst.cs +++ b/Source/Framework/Constants/ItemConst.cs @@ -788,6 +788,9 @@ namespace Framework.Constants Bandage = 7, ConsumableOther = 8, VantusRune = 9, + UtilityCurio = 10, + CombatCurio = 11, + Max } diff --git a/Source/Framework/Constants/LFGConst.cs b/Source/Framework/Constants/LFGConst.cs index a89dcedb2..fb3f49056 100644 --- a/Source/Framework/Constants/LFGConst.cs +++ b/Source/Framework/Constants/LFGConst.cs @@ -156,6 +156,8 @@ namespace Framework.Constants AlreadyUsingLfgList = 0x3f, // You Can'T Do That While Using Premade Groups. NotLeader = 0x45, // You Are Not The Party Leader. Dead = 0x49, + FarmLimit = 0x4D, // You or someone in your party has entered too many instances recently. Please wait awhile and try again. + NoCrossFactionParties = 0x4E, // Cross-faction groups can't queue for this instance PartyNotMeetReqs = 6, // One Or More Party Members Do Not Meet The Requirements For The Chosen Dungeons (Fixme) } diff --git a/Source/Framework/Constants/Network/Opcodes.cs b/Source/Framework/Constants/Network/Opcodes.cs index a2dc8ea88..a252d8c59 100644 --- a/Source/Framework/Constants/Network/Opcodes.cs +++ b/Source/Framework/Constants/Network/Opcodes.cs @@ -5,38 +5,38 @@ namespace Framework.Constants { public enum ClientOpcodes : uint { - AbandonNpeResponse = 0x310299, + AbandonNpeResponse = 0x31029a, AcceptGuildInvite = 0x360029, - AcceptReturningPlayerPrompt = 0x31025a, - AcceptSocialContract = 0x360174, + AcceptReturningPlayerPrompt = 0x31025b, + AcceptSocialContract = 0x360172, AcceptTrade = 0x310004, AcceptWargameInvite = 0x36000c, - AccountBankDepositMoney = 0x3102db, - AccountBankWithdrawMoney = 0x3102dc, - AccountNotificationAcknowledged = 0x360160, + AccountBankDepositMoney = 0x3102dd, + AccountBankWithdrawMoney = 0x3102de, + AccountNotificationAcknowledged = 0x36015e, AccountStoreBeginPurchaseOrRefund = 0x3600be, - ActivateSoulbind = 0x310288, + ActivateSoulbind = 0x310289, ActivateTaxi = 0x32003e, AddonList = 0x360004, AddAccountCosmetic = 0x310170, AddBattlenetFriend = 0x360084, - AddFriend = 0x3600fb, - AddIgnore = 0x3600ff, + AddFriend = 0x3600fc, + AddIgnore = 0x360100, AddToy = 0x31016f, - AdventureJournalOpenQuest = 0x3100b4, - AdventureJournalUpdateSuggestions = 0x31028b, - AdventureMapStartQuest = 0x31022b, + AdventureJournalOpenQuest = 0x3100b3, + AdventureJournalUpdateSuggestions = 0x31028c, + AdventureMapStartQuest = 0x31022c, AlterAppearance = 0x32008f, AreaSpiritHealerQuery = 0x320043, AreaSpiritHealerQueue = 0x320044, - AreaTrigger = 0x310087, + AreaTrigger = 0x310086, ArtifactAddPower = 0x310056, ArtifactSetAppearance = 0x310058, - AssignEquipmentSetSpec = 0x3100c0, - AttackStop = 0x31011e, - AttackSwing = 0x31011d, - AuctionableTokenSell = 0x360111, - AuctionableTokenSellAtMarketPrice = 0x360112, + AssignEquipmentSetSpec = 0x3100bf, + AttackStop = 0x31011d, + AttackSwing = 0x31011c, + AuctionableTokenSell = 0x360112, + AuctionableTokenSellAtMarketPrice = 0x360113, AuctionBrowseQuery = 0x320063, AuctionCancelCommoditiesPurchase = 0x32006b, AuctionConfirmCommoditiesPurchase = 0x32006a, @@ -52,47 +52,47 @@ namespace Framework.Constants AuctionReplicateItems = 0x320061, AuctionSellCommodity = 0x32006c, AuctionSellItem = 0x32005f, - AuctionSetFavoriteItem = 0x360161, + AuctionSetFavoriteItem = 0x36015f, AuthContinuedSession = 0x370002, AuthSession = 0x370001, AutobankItem = 0x330003, AutobankReagent = 0x330005, AutostoreBankItem = 0x330002, AutostoreBankReagent = 0x330004, - AutoDepositAccountBank = 0x3102e5, + AutoDepositAccountBank = 0x3102e7, AutoEquipItem = 0x330006, AutoEquipItemSlot = 0x33000b, AutoGuildBankItem = 0x32004a, AutoStoreBagItem = 0x330007, AutoStoreGuildBankItem = 0x320053, - AzeriteEmpoweredItemSelectPower = 0x310256, - AzeriteEmpoweredItemViewed = 0x310237, - AzeriteEssenceActivateEssence = 0x310258, - AzeriteEssenceUnlockMilestone = 0x310257, + AzeriteEmpoweredItemSelectPower = 0x310257, + AzeriteEmpoweredItemViewed = 0x310238, + AzeriteEssenceActivateEssence = 0x310259, + AzeriteEssenceUnlockMilestone = 0x310258, BankerActivate = 0x320046, BattlefieldLeave = 0x31001f, BattlefieldList = 0x31002a, BattlefieldPort = 0x3200c5, - BattlemasterHello = 0x31018d, + BattlemasterHello = 0x31018e, BattlemasterJoin = 0x3200bc, BattlemasterJoinArena = 0x3200bd, BattlemasterJoinBrawl = 0x3200c3, BattlemasterJoinRatedBgBlitz = 0x3200bf, BattlemasterJoinRatedSoloShuffle = 0x3200be, BattlemasterJoinSkirmish = 0x3200c0, - BattlenetChallengeResponse = 0x3600fe, - BattlenetRequest = 0x36011f, - BattlePayAckFailedResponse = 0x3600f8, - BattlePayCancelOpenCheckout = 0x36013e, - BattlePayConfirmPurchaseResponse = 0x3600f7, - BattlePayDistributionAssignToTarget = 0x3600ee, - BattlePayDistributionAssignVas = 0x360164, - BattlePayGetProductList = 0x3600e5, - BattlePayGetPurchaseList = 0x3600e6, - BattlePayOpenCheckout = 0x360137, - BattlePayRequestPriceInfo = 0x360133, - BattlePayStartPurchase = 0x3600f6, - BattlePayStartVasPurchase = 0x36011d, + BattlenetChallengeResponse = 0x3600ff, + BattlenetRequest = 0x360120, + BattlePayAckFailedResponse = 0x3600f9, + BattlePayCancelOpenCheckout = 0x36013c, + BattlePayConfirmPurchaseResponse = 0x3600f8, + BattlePayDistributionAssignToTarget = 0x3600ef, + BattlePayDistributionAssignVas = 0x360162, + BattlePayGetProductList = 0x3600e6, + BattlePayGetPurchaseList = 0x3600e7, + BattlePayOpenCheckout = 0x360135, + BattlePayRequestPriceInfo = 0x360131, + BattlePayStartPurchase = 0x3600f7, + BattlePayStartVasPurchase = 0x36011e, BattlePetClearFanfare = 0x2b0002, BattlePetDeletePet = 0x36004f, BattlePetDeletePetCheat = 0x360050, @@ -102,14 +102,14 @@ namespace Framework.Constants BattlePetSetBattleSlot = 0x360057, BattlePetSetFlags = 0x36005a, BattlePetSummon = 0x360053, - BattlePetUpdateDisplayNotify = 0x310091, - BattlePetUpdateNotify = 0x310090, + BattlePetUpdateDisplayNotify = 0x310090, + BattlePetUpdateNotify = 0x31008f, BeginTrade = 0x310001, BinderActivate = 0x320045, BlackMarketBidOnItem = 0x3200cd, BlackMarketOpen = 0x3200cb, BlackMarketRequestItems = 0x3200cc, - BonusRoll = 0x310259, + BonusRoll = 0x31025a, BugReport = 0x3600af, BusyTrade = 0x310002, BuyAccountBankTab = 0x320122, @@ -117,7 +117,7 @@ namespace Framework.Constants BuyBankSlot = 0x320047, BuyItem = 0x320036, BuyReagentBank = 0x320048, - CageBattlePet = 0x3100a4, + CageBattlePet = 0x3100a3, CalendarAddEvent = 0x3600a7, CalendarCommunityInvite = 0x36009b, CalendarComplain = 0x3600a3, @@ -138,98 +138,102 @@ namespace Framework.Constants CancelCast = 0x310176, CancelChannelling = 0x310137, CancelGrowthAura = 0x31013f, - CancelMasterLootRoll = 0x3100cd, + CancelMasterLootRoll = 0x3100cc, CancelModSpeedNoControlAuras = 0x310059, CancelMountAura = 0x310152, CancelQueuedSpell = 0x31002b, CancelTempEnchantment = 0x32008c, CancelTrade = 0x310006, CanDuel = 0x36008c, - CanRedeemTokenForBalance = 0x360132, + CanRedeemTokenForBalance = 0x360130, CastSpell = 0x310173, ChallengeModeRequestLeaders = 0x2e0002, - ChangeBagSlotFlag = 0x31020f, - ChangeBankBagSlotFlag = 0x310210, - ChangeMonumentAppearance = 0x3101f0, - ChangeRealmTicket = 0x360124, + ChangeBagSlotFlag = 0x310210, + ChangeBankBagSlotFlag = 0x310211, + ChangeMonumentAppearance = 0x3101f1, + ChangeRealmTicket = 0x360125, ChangeSubGroup = 0x360076, - CharacterCheckUpgrade = 0x3600f1, - CharacterRenameRequest = 0x3600ec, - CharacterUpgradeManualUnrevokeRequest = 0x3600ef, - CharacterUpgradeStart = 0x3600f0, + CharacterCheckUpgrade = 0x3600f2, + CharacterRenameRequest = 0x3600ed, + CharacterUpgradeManualUnrevokeRequest = 0x3600f0, + CharacterUpgradeStart = 0x3600f1, CharCustomize = 0x3600b6, CharDelete = 0x3600c8, CharRaceOrFactionChange = 0x3600bc, - ChatAddonMessage = 0x2d0026, - ChatAddonMessageTargeted = 0x2d0027, - ChatCanLocalWhisperTargetRequest = 0x2d002e, - ChatChannelAnnouncements = 0x2d001b, - ChatChannelBan = 0x2d0019, - ChatChannelDeclineInvite = 0x2d001e, - ChatChannelDisplayList = 0x2d000e, - ChatChannelInvite = 0x2d0017, - ChatChannelKick = 0x2d0018, - ChatChannelList = 0x2d000d, - ChatChannelModerator = 0x2d0013, - ChatChannelOwner = 0x2d0011, - ChatChannelPassword = 0x2d000f, - ChatChannelSetOwner = 0x2d0010, - ChatChannelSilenceAll = 0x2d001c, - ChatChannelUnban = 0x2d001a, - ChatChannelUnmoderator = 0x2d0014, - ChatChannelUnsilenceAll = 0x2d001d, + ChatAddonMessage = 0x2d002a, + ChatAddonMessageTargeted = 0x2d002b, + ChatCanLocalWhisperTargetRequest = 0x2d0032, + ChatChannelAnnouncements = 0x2d001f, + ChatChannelBan = 0x2d001d, + ChatChannelDeclineInvite = 0x2d0022, + ChatChannelDisplayList = 0x2d0012, + ChatChannelInvite = 0x2d001b, + ChatChannelKick = 0x2d001c, + ChatChannelList = 0x2d0011, + ChatChannelModerate = 0x2d0016, + ChatChannelModerator = 0x2d0017, + ChatChannelOwner = 0x2d0015, + ChatChannelPassword = 0x2d0013, + ChatChannelSetOwner = 0x2d0014, + ChatChannelSilenceAll = 0x2d0020, + ChatChannelUnban = 0x2d001e, + ChatChannelUnmoderator = 0x2d0018, + ChatChannelUnsilenceAll = 0x2d0021, + ChatDropCautionaryChatMessage = 0x2d000a, ChatJoinChannel = 0x2d0000, ChatLeaveChannel = 0x2d0001, - ChatLobbyMatchmakerMessageInstanceChat = 0x2d002d, - ChatLobbyMatchmakerMessageParty = 0x2d002c, - ChatMessageAfk = 0x2d000b, + ChatLobbyMatchmakerMessageInstanceChat = 0x2d0031, + ChatLobbyMatchmakerMessageParty = 0x2d0030, + ChatMessageAfk = 0x2d000f, ChatMessageChannel = 0x2d0007, - ChatMessageDnd = 0x2d000c, - ChatMessageEmote = 0x2d0020, - ChatMessageGuild = 0x2d0009, - ChatMessageInstanceChat = 0x2d0024, - ChatMessageOfficer = 0x2d000a, - ChatMessageParty = 0x2d0022, - ChatMessageRaid = 0x2d0023, - ChatMessageRaidWarning = 0x2d0025, - ChatMessageSay = 0x2d001f, + ChatMessageDnd = 0x2d0010, + ChatMessageEmote = 0x2d0024, + ChatMessageGuild = 0x2d000d, + ChatMessageInstanceChat = 0x2d0028, + ChatMessageOfficer = 0x2d000e, + ChatMessageParty = 0x2d0026, + ChatMessageRaid = 0x2d0027, + ChatMessageRaidWarning = 0x2d0029, + ChatMessageSay = 0x2d0023, ChatMessageWhisper = 0x2d0008, - ChatMessageYell = 0x2d0021, + ChatMessageYell = 0x2d0025, ChatRegisterAddonPrefixes = 0x2d0005, ChatReportFiltered = 0x2d0004, ChatReportIgnored = 0x2d0003, + ChatSendCautionaryChannelMessage = 0x2d000b, + ChatSendCautionaryChatMessage = 0x2d0009, ChatUnregisterAllAddonPrefixes = 0x2d0006, CheckCharacterNameAvailability = 0x36006f, - CheckIsAdventureMapPoiValid = 0x31010f, + CheckIsAdventureMapPoiValid = 0x31010e, ChoiceResponse = 0x31017b, - ChromieTimeSelectExpansion = 0x310287, - ClaimWeeklyReward = 0x310264, - ClassTalentsDeleteConfig = 0x3102c0, - ClassTalentsNotifyEmptyConfig = 0x3100c4, - ClassTalentsNotifyValidationFailed = 0x3102c2, - ClassTalentsRenameConfig = 0x3102bf, - ClassTalentsRequestNewConfig = 0x3102be, - ClassTalentsSetStarterBuildActive = 0x3102c3, - ClassTalentsSetUsesSharedActionBars = 0x3100c3, + ChromieTimeSelectExpansion = 0x310288, + ClaimWeeklyReward = 0x310265, + ClassTalentsDeleteConfig = 0x3102c2, + ClassTalentsNotifyEmptyConfig = 0x3100c3, + ClassTalentsNotifyValidationFailed = 0x3102c4, + ClassTalentsRenameConfig = 0x3102c1, + ClassTalentsRequestNewConfig = 0x3102c0, + ClassTalentsSetStarterBuildActive = 0x3102c5, + ClassTalentsSetUsesSharedActionBars = 0x3100c2, ClearNewAppearance = 0x2b0005, ClearRaidMarker = 0x310052, ClearTradeItem = 0x310008, ClientPortGraveyard = 0x3200c7, CloseInteraction = 0x320025, CloseQuestChoice = 0x31017c, - CloseRuneforgeInteraction = 0x31028f, - CloseTraitSystemInteraction = 0x3102c4, - ClubFinderApplicationResponse = 0x360149, - ClubFinderGetApplicantsList = 0x360147, - ClubFinderPost = 0x360144, - ClubFinderRequestClubsData = 0x36014b, - ClubFinderRequestClubsList = 0x360145, - ClubFinderRequestMembershipToClub = 0x360146, - ClubFinderRequestPendingClubsList = 0x36014a, - ClubFinderRequestSubscribedClubPostingIds = 0x36014c, - ClubFinderRespondToApplicant = 0x360148, - ClubFinderWhisperApplicantRequest = 0x360167, - ClubPresenceSubscribe = 0x360121, + CloseRuneforgeInteraction = 0x310290, + CloseTraitSystemInteraction = 0x3102c6, + ClubFinderApplicationResponse = 0x360147, + ClubFinderGetApplicantsList = 0x360145, + ClubFinderPost = 0x360142, + ClubFinderRequestClubsData = 0x360149, + ClubFinderRequestClubsList = 0x360143, + ClubFinderRequestMembershipToClub = 0x360144, + ClubFinderRequestPendingClubsList = 0x360148, + ClubFinderRequestSubscribedClubPostingIds = 0x36014a, + ClubFinderRespondToApplicant = 0x360146, + ClubFinderWhisperApplicantRequest = 0x360165, + ClubPresenceSubscribe = 0x360122, CollectionItemSetFavorite = 0x36005d, CommentatorEnable = 0x36001c, CommentatorEnterInstance = 0x360020, @@ -237,30 +241,30 @@ namespace Framework.Constants CommentatorGetMapInfo = 0x36001d, CommentatorGetPlayerCooldowns = 0x36001f, CommentatorGetPlayerInfo = 0x36001e, - CommentatorSpectate = 0x360165, + CommentatorSpectate = 0x360163, CommentatorStartWargame = 0x36001b, - CommerceTokenGetCount = 0x36010f, - CommerceTokenGetLog = 0x360119, - CommerceTokenGetMarketPrice = 0x360110, + CommerceTokenGetCount = 0x360110, + CommerceTokenGetLog = 0x36011a, + CommerceTokenGetMarketPrice = 0x360111, Complaint = 0x360096, CompleteCinematic = 0x3200e5, CompleteMovie = 0x320077, ConfirmArtifactRespec = 0x310057, - ConfirmProfessionRespec = 0x3100c7, - ConfirmRespecWipe = 0x3100c6, + ConfirmProfessionRespec = 0x3100c6, + ConfirmRespecWipe = 0x3100c5, ConnectToFailed = 0x360000, - ConsumableTokenBuy = 0x360114, - ConsumableTokenBuyAtMarketPrice = 0x360115, - ConsumableTokenCanVeteranBuy = 0x360113, - ConsumableTokenRedeem = 0x360117, - ConsumableTokenRedeemConfirmation = 0x360118, - ContentTrackingStartTracking = 0x3102d4, - ContentTrackingStopTracking = 0x3102d5, + ConsumableTokenBuy = 0x360115, + ConsumableTokenBuyAtMarketPrice = 0x360116, + ConsumableTokenCanVeteranBuy = 0x360114, + ConsumableTokenRedeem = 0x360118, + ConsumableTokenRedeemConfirmation = 0x360119, + ContentTrackingStartTracking = 0x3102d6, + ContentTrackingStopTracking = 0x3102d7, ContributionContribute = 0x3200fa, ContributionLastUpdateRequest = 0x3200fb, ConversationCinematicReady = 0x3200e7, ConversationLineStarted = 0x3200e6, - ConvertItemToBindToAccount = 0x3102e4, + ConvertItemToBindToAccount = 0x3102e6, ConvertRaid = 0x360078, CovenantRenownRequestCatchupState = 0x32010e, CraftingOrderCancel = 0x32011a, @@ -275,15 +279,15 @@ namespace Framework.Constants CraftingOrderReportPlayer = 0x32011c, CraftingOrderUpdateIgnoreList = 0x32011d, CreateCharacter = 0x36006e, - CreateShipment = 0x3101d9, + CreateShipment = 0x3101da, DbQueryBulk = 0x360010, DeclineGuildInvites = 0x3200b9, DeclinePetition = 0x3200d4, DeleteEquipmentSet = 0x3200a5, DelveTeleportOut = 0x320129, - DelFriend = 0x3600fc, - DelIgnore = 0x360100, - DepositReagentBank = 0x310219, + DelFriend = 0x3600fd, + DelIgnore = 0x360101, + DepositReagentBank = 0x31021a, DestroyItem = 0x310169, DfBootPlayerVote = 0x360044, DfConfirmExpandSearch = 0x360036, @@ -297,65 +301,65 @@ namespace Framework.Constants DfTeleport = 0x360045, DiscardedTimeSyncAcks = 0x34005e, DismissCritter = 0x320093, - DoCountdown = 0x360143, - DoMasterLootRoll = 0x3100cc, + DoCountdown = 0x360141, + DoMasterLootRoll = 0x3100cb, DoReadyCheck = 0x36005e, DuelResponse = 0x32007c, - EjectPassenger = 0x310104, + EjectPassenger = 0x310103, Emote = 0x3200e1, EnableNagle = 0x370007, EnableTaxiNode = 0x32003c, - EngineSurvey = 0x36010e, + EngineSurvey = 0x36010f, EnterEncryptedModeAck = 0x370003, EnumCharacters = 0x360014, - EnumCharactersDeletedByClient = 0x360108, + EnumCharactersDeletedByClient = 0x360109, FarSight = 0x320082, GameEventDebugDisable = 0x31005e, GameEventDebugEnable = 0x31005d, GameObjReportUse = 0x320089, GameObjUse = 0x320088, - GarrisonAddFollowerHealth = 0x3101d4, - GarrisonAssignFollowerToBuilding = 0x3101ba, - GarrisonCancelConstruction = 0x3101a7, - GarrisonCheckUpgradeable = 0x31020b, - GarrisonCompleteMission = 0x3101fd, - GarrisonFullyHealAllFollowers = 0x3101d5, - GarrisonGenerateRecruits = 0x3101bd, - GarrisonGetClassSpecCategoryInfo = 0x3101cc, - GarrisonGetMapData = 0x3101d3, - GarrisonGetMissionReward = 0x31022f, - GarrisonLearnTalent = 0x3101c8, - GarrisonMissionBonusRoll = 0x3101ff, - GarrisonPurchaseBuilding = 0x3101a3, - GarrisonRecruitFollower = 0x3101bf, - GarrisonRemoveFollower = 0x3101f4, - GarrisonRemoveFollowerFromBuilding = 0x3101bb, - GarrisonRenameFollower = 0x3101bc, - GarrisonRequestBlueprintAndSpecializationData = 0x3101a2, - GarrisonRequestShipmentInfo = 0x3101d7, - GarrisonResearchTalent = 0x3101c0, - GarrisonSetBuildingActive = 0x3101a4, - GarrisonSetFollowerFavorite = 0x3101b8, - GarrisonSetFollowerInactive = 0x3101b0, - GarrisonSetRecruitmentPreferences = 0x3101be, - GarrisonSocketTalent = 0x31029c, - GarrisonStartMission = 0x3101fc, - GarrisonSwapBuildings = 0x3101a8, + GarrisonAddFollowerHealth = 0x3101d5, + GarrisonAssignFollowerToBuilding = 0x3101bb, + GarrisonCancelConstruction = 0x3101a8, + GarrisonCheckUpgradeable = 0x31020c, + GarrisonCompleteMission = 0x3101fe, + GarrisonFullyHealAllFollowers = 0x3101d6, + GarrisonGenerateRecruits = 0x3101be, + GarrisonGetClassSpecCategoryInfo = 0x3101cd, + GarrisonGetMapData = 0x3101d4, + GarrisonGetMissionReward = 0x310230, + GarrisonLearnTalent = 0x3101c9, + GarrisonMissionBonusRoll = 0x310200, + GarrisonPurchaseBuilding = 0x3101a4, + GarrisonRecruitFollower = 0x3101c0, + GarrisonRemoveFollower = 0x3101f5, + GarrisonRemoveFollowerFromBuilding = 0x3101bc, + GarrisonRenameFollower = 0x3101bd, + GarrisonRequestBlueprintAndSpecializationData = 0x3101a3, + GarrisonRequestShipmentInfo = 0x3101d8, + GarrisonResearchTalent = 0x3101c1, + GarrisonSetBuildingActive = 0x3101a5, + GarrisonSetFollowerFavorite = 0x3101b9, + GarrisonSetFollowerInactive = 0x3101b1, + GarrisonSetRecruitmentPreferences = 0x3101bf, + GarrisonSocketTalent = 0x31029d, + GarrisonStartMission = 0x3101fd, + GarrisonSwapBuildings = 0x3101a9, GenerateRandomCharacterName = 0x360013, - GetAccountCharacterList = 0x3600e0, - GetAccountNotifications = 0x36015f, - GetGarrisonInfo = 0x31019d, + GetAccountCharacterList = 0x3600e1, + GetAccountNotifications = 0x36015d, + GetGarrisonInfo = 0x31019e, GetItemPurchaseData = 0x3200cf, - GetLandingPageShipments = 0x3101d8, + GetLandingPageShipments = 0x3101d9, GetMirrorImageData = 0x31016d, GetPvpOptionsEnabled = 0x36001a, - GetRafAccountInfo = 0x36014d, - GetRegionwideCharacterRestrictionAndMailData = 0x360190, - GetRemainingGameTime = 0x360116, - GetTrophyList = 0x3101ed, - GetUndeleteCharacterCooldownStatus = 0x36010a, - GetVasAccountCharacterList = 0x36011b, - GetVasTransferTargetRealmList = 0x36011c, + GetRafAccountInfo = 0x36014b, + GetRegionwideCharacterRestrictionAndMailData = 0x36018e, + GetRemainingGameTime = 0x360117, + GetTrophyList = 0x3101ee, + GetUndeleteCharacterCooldownStatus = 0x36010b, + GetVasAccountCharacterList = 0x36011c, + GetVasTransferTargetRealmList = 0x36011d, GmTicketAcknowledgeSurvey = 0x3600ba, GmTicketGetCaseStatus = 0x3600b9, GmTicketGetSystemStatus = 0x3600b8, @@ -395,9 +399,13 @@ namespace Framework.Constants GuildQueryNews = 0x2f000d, GuildQueryRecipes = 0x2f000b, GuildReplaceGuildMaster = 0x2f001f, + GuildRequestRename = 0x2f0023, + GuildRequestRenameNameCheck = 0x2f0022, + GuildRequestRenameRefund = 0x2f0024, + GuildRequestRenameStatus = 0x2f0021, GuildSetAchievementTracking = 0x2f0010, GuildSetFocusedAchievement = 0x2f0011, - GuildSetGuildMaster = 0x3600f3, + GuildSetGuildMaster = 0x3600f4, GuildSetMemberNote = 0x2f0013, GuildSetRankPermissions = 0x2f0008, GuildShiftRank = 0x2f0007, @@ -411,68 +419,68 @@ namespace Framework.Constants InitiateTrade = 0x310000, Inspect = 0x3200c9, InstanceLockResponse = 0x3200a6, - IslandQueue = 0x310260, + IslandQueue = 0x310261, ItemPurchaseRefund = 0x3200d0, - ItemTextQuery = 0x31020c, - JoinPetBattleQueue = 0x31008e, + ItemTextQuery = 0x31020d, + JoinPetBattleQueue = 0x31008d, JoinRatedBattleground = 0x310025, KeepAlive = 0x3600a9, - KeyboundOverride = 0x3100e2, + KeyboundOverride = 0x3100e1, LatencyReport = 0x37000d, LearnPvpTalents = 0x3200f9, LearnTalents = 0x3200f7, LeaveGroup = 0x360073, - LeavePetBattleQueue = 0x31008f, + LeavePetBattleQueue = 0x31008e, LfgListApplyToGroup = 0x36003b, LfgListCancelApplication = 0x36003c, LfgListDeclineApplicant = 0x36003d, LfgListGetStatus = 0x360039, LfgListInviteApplicant = 0x36003e, LfgListInviteResponse = 0x36003f, - LfgListJoin = 0x310254, + LfgListJoin = 0x310255, LfgListLeave = 0x360038, LfgListSearch = 0x36003a, - LfgListUpdateRequest = 0x310255, + LfgListUpdateRequest = 0x310256, ListInventory = 0x320033, - LiveRegionAccountRestore = 0x3600e3, - LiveRegionCharacterCopy = 0x3600e2, - LiveRegionGetAccountCharacterList = 0x3600e1, - LiveRegionKeyBindingsCopy = 0x3600e4, + LiveRegionAccountRestore = 0x3600e4, + LiveRegionCharacterCopy = 0x3600e3, + LiveRegionGetAccountCharacterList = 0x3600e2, + LiveRegionKeyBindingsCopy = 0x3600e5, LoadingScreenNotify = 0x360024, - LoadSelectedTrophy = 0x3101ee, - LobbyMatchmakerAbandonQueue = 0x360172, - LobbyMatchmakerAcceptPartyInvite = 0x360169, - LobbyMatchmakerCreateCharacter = 0x36017b, - LobbyMatchmakerEnterQueue = 0x360170, - LobbyMatchmakerLeaveParty = 0x36016c, - LobbyMatchmakerPartyInvite = 0x360168, - LobbyMatchmakerPartyUninvite = 0x36016b, - LobbyMatchmakerQueuePropsalResponse = 0x360171, - LobbyMatchmakerRejectPartyInvite = 0x36016a, - LobbyMatchmakerSetPartyPlaylistEntry = 0x36016d, - LobbyMatchmakerSetPlayerReady = 0x36016e, + LoadSelectedTrophy = 0x3101ef, + LobbyMatchmakerAbandonQueue = 0x360170, + LobbyMatchmakerAcceptPartyInvite = 0x360167, + LobbyMatchmakerCreateCharacter = 0x360179, + LobbyMatchmakerEnterQueue = 0x36016e, + LobbyMatchmakerLeaveParty = 0x36016a, + LobbyMatchmakerPartyInvite = 0x360166, + LobbyMatchmakerPartyUninvite = 0x360169, + LobbyMatchmakerQueuePropsalResponse = 0x36016f, + LobbyMatchmakerRejectPartyInvite = 0x360168, + LobbyMatchmakerSetPartyPlaylistEntry = 0x36016b, + LobbyMatchmakerSetPlayerReady = 0x36016c, LogoutCancel = 0x320072, LogoutInstant = 0x320073, LogoutLobbyMatchmaker = 0x320121, LogoutRequest = 0x320071, LogDisconnect = 0x370005, LogStreamingError = 0x370009, - LootItem = 0x3100ca, - LootMoney = 0x3100c9, - LootRelease = 0x3100ce, - LootRoll = 0x3100cf, - LootUnit = 0x3100c8, + LootItem = 0x3100c9, + LootMoney = 0x3100c8, + LootRelease = 0x3100cd, + LootRoll = 0x3100ce, + LootUnit = 0x3100c7, LowLevelRaid1 = 0x3600cc, LowLevelRaid2 = 0x3200ad, MailCreateTextItem = 0x3200db, - MailDelete = 0x3100e4, + MailDelete = 0x3100e3, MailGetList = 0x3200d6, MailMarkAsRead = 0x3200da, MailReturnToSender = 0x36007f, MailTakeItem = 0x3200d8, MailTakeMoney = 0x3200d7, - MakeContitionalAppearancePermanent = 0x3100e5, - MasterLootItem = 0x3100cb, + MakeContitionalAppearancePermanent = 0x3100e4, + MasterLootItem = 0x3100ca, MergeGuildBankItemWithGuildBankItem = 0x320054, MergeGuildBankItemWithItem = 0x320051, MergeItemWithGuildBankItem = 0x32004f, @@ -573,45 +581,46 @@ namespace Framework.Constants MoveUpdateFallSpeed = 0x340036, MoveWaterWalkAck = 0x340039, MythicPlusRequestMapStats = 0x2e0001, - NeutralPlayerSelectFaction = 0x310084, + NeutralPlayerSelectFaction = 0x310083, NextCinematicCamera = 0x3200e4, ObjectUpdateFailed = 0x31002c, ObjectUpdateRescued = 0x31002d, - OfferPetition = 0x310286, + OfferPetition = 0x310287, OpeningCinematic = 0x3200e3, - OpenItem = 0x31020d, - OpenMissionNpc = 0x3101ce, - OpenShipmentNpc = 0x3101d6, - OpenTradeskillNpc = 0x3101e1, + OpenItem = 0x31020e, + OpenMissionNpc = 0x3101cf, + OpenShipmentNpc = 0x3101d7, + OpenTradeskillNpc = 0x3101e2, OptOutOfLoot = 0x320090, OverrideScreenFlash = 0x3200ba, PartyInvite = 0x360030, PartyInviteResponse = 0x360032, PartyUninvite = 0x360071, - PerformItemInteraction = 0x3100ed, - PerksProgramItemsRefreshed = 0x3102ae, + PerformItemInteraction = 0x3100ec, + PerksProgramItemsRefreshed = 0x3102af, + PerksProgramRequestCartCheckout = 0x3102b2, PerksProgramRequestPendingRewards = 0x2b0012, - PerksProgramRequestPurchase = 0x3102b0, - PerksProgramRequestRefund = 0x3102b1, - PerksProgramSetFrozenVendorItem = 0x3102b2, - PerksProgramStatusRequest = 0x3102af, + PerksProgramRequestPurchase = 0x3102b1, + PerksProgramRequestRefund = 0x3102b3, + PerksProgramSetFrozenVendorItem = 0x3102b4, + PerksProgramStatusRequest = 0x3102b0, PetitionBuy = 0x32005c, - PetitionRenameGuild = 0x3600f4, + PetitionRenameGuild = 0x3600f5, PetitionShowList = 0x32005b, PetitionShowSignatures = 0x32005d, PetAbandon = 0x32001e, PetAbandonByNumber = 0x32001f, PetAction = 0x32001c, - PetBattleFinalNotify = 0x310093, + PetBattleFinalNotify = 0x310092, PetBattleInput = 0x36006b, - PetBattleQueueProposeMatchResult = 0x3100e3, - PetBattleQuitNotify = 0x310092, + PetBattleQueueProposeMatchResult = 0x3100e2, + PetBattleQuitNotify = 0x310091, PetBattleReplaceFrontPet = 0x36006c, - PetBattleRequestPvp = 0x31008c, - PetBattleRequestUpdate = 0x31008d, - PetBattleRequestWild = 0x31008a, - PetBattleScriptErrorNotify = 0x310094, - PetBattleWildLocationFail = 0x31008b, + PetBattleRequestPvp = 0x31008b, + PetBattleRequestUpdate = 0x31008c, + PetBattleRequestWild = 0x310089, + PetBattleScriptErrorNotify = 0x310093, + PetBattleWildLocationFail = 0x31008a, PetCancelAura = 0x320020, PetCastSpell = 0x310172, PetRename = 0x3600ae, @@ -644,11 +653,11 @@ namespace Framework.Constants QueryQuestItemUsability = 0x310022, QueryRealmName = 0x3600b3, QueryScenarioPoi = 0x360080, - QuerySelectedWowLabsArea = 0x3102e9, + QuerySelectedWowLabsArea = 0x3102eb, QueryTime = 0x320070, - QueryTreasurePicker = 0x310232, + QueryTreasurePicker = 0x310233, QueryVoidStorage = 0x31004e, - QueryWowLabsAreaInfo = 0x3102ea, + QueryWowLabsAreaInfo = 0x3102ec, QuestConfirmAccept = 0x320030, QuestGiverAcceptQuest = 0x32002a, QuestGiverChooseReward = 0x32002c, @@ -660,119 +669,116 @@ namespace Framework.Constants QuestGiverStatusMultipleQuery = 0x32002f, QuestGiverStatusQuery = 0x32002e, QuestLogRemoveQuest = 0x3200ce, - QuestPoiQuery = 0x3600da, + QuestPoiQuery = 0x3600db, QuestPushResult = 0x320032, - QuestSessionBeginResponse = 0x310278, - QuestSessionRequestStart = 0x310277, - QuestSessionRequestStop = 0x360158, + QuestSessionBeginResponse = 0x310279, + QuestSessionRequestStart = 0x310278, + QuestSessionRequestStop = 0x360156, QueuedMessagesEnd = 0x370008, - QuickJoinAutoAcceptRequests = 0x360130, - QuickJoinRequestInvite = 0x36012f, - QuickJoinRequestInviteWithConfirmation = 0x36015d, - QuickJoinRespondToInvite = 0x36012e, - QuickJoinSignalToastDisplayed = 0x36012d, + QuickJoinAutoAcceptRequests = 0x36012e, + QuickJoinRequestInvite = 0x36012d, + QuickJoinRequestInviteWithConfirmation = 0x36015b, + QuickJoinRespondToInvite = 0x36012c, + QuickJoinSignalToastDisplayed = 0x36012b, RafClaimActivityReward = 0x32009e, - RafClaimNextReward = 0x36014e, - RafGenerateRecruitmentLink = 0x360150, - RafUpdateRecruitmentInfo = 0x36014f, + RafClaimNextReward = 0x36014c, + RafGenerateRecruitmentLink = 0x36014e, + RafUpdateRecruitmentInfo = 0x36014d, RandomRoll = 0x36007e, ReadyCheckResponse = 0x36005f, - ReadItem = 0x31020e, + ReadItem = 0x31020f, ReclaimCorpse = 0x320075, - RemoveNewItem = 0x310236, - RemoveRafRecruit = 0x360151, + RemoveNewItem = 0x310237, + RemoveRafRecruit = 0x36014f, ReorderCharacters = 0x360015, RepairItem = 0x320086, - ReplaceTrophy = 0x3101ef, + ReplaceTrophy = 0x3101f0, RepopRequest = 0x3200c6, - ReportClientVariables = 0x36012a, - ReportEnabledAddons = 0x360129, - ReportKeybindingExecutionCounts = 0x36012b, ReportPvpPlayerAfk = 0x32008e, - ReportServerLag = 0x310270, - ReportStuckInCombat = 0x310271, + ReportServerLag = 0x310271, + ReportStuckInCombat = 0x310272, RequestAccountData = 0x3600c0, - RequestAreaPoiUpdate = 0x310234, + RequestAreaPoiUpdate = 0x310235, RequestBattlefieldStatus = 0x360008, RequestCemeteryList = 0x310023, RequestCharacterGuildFollowInfo = 0x3600b5, - RequestCovenantCallings = 0x310262, + RequestCovenantCallings = 0x310263, RequestCrowdControlSpell = 0x3200ca, RequestCurrencyDataForAccountCharacters = 0x2b0019, - RequestGarrisonTalentWorldQuestUnlocks = 0x31029b, + RequestGarrisonTalentWorldQuestUnlocks = 0x31029c, RequestGuildPartyState = 0x310054, RequestGuildRewardsList = 0x310053, - RequestLatestSplashScreen = 0x310272, + RequestLatestSplashScreen = 0x310273, RequestLfgListBlacklist = 0x31017e, - RequestMythicPlusAffixes = 0x3100b8, - RequestMythicPlusSeasonData = 0x3100b9, - RequestPartyEligibilityForDelveTiers = 0x3102e8, + RequestMythicPlusAffixes = 0x3100b7, + RequestMythicPlusSeasonData = 0x3100b8, + RequestPartyEligibilityForDelveTiers = 0x3102ea, RequestPartyJoinUpdates = 0x360023, RequestPartyMemberStats = 0x36007d, RequestPetInfo = 0x320022, RequestPlayedTime = 0x31014b, RequestPvpRewards = 0x310041, - RequestRaidInfo = 0x3600f5, + RequestRaidInfo = 0x3600f6, RequestRatedPvpInfo = 0x36000f, - RequestRealmGuildMasterInfo = 0x360193, - RequestScheduledAreaPoiUpdate = 0x310235, + RequestRealmGuildMasterInfo = 0x360191, + RequestScheduledAreaPoiUpdate = 0x310236, RequestScheduledPvpInfo = 0x310042, RequestStabledPets = 0x320023, RequestStoreFrontInfoUpdate = 0x2b001e, - RequestVehicleExit = 0x3100ff, - RequestVehicleNextSeat = 0x310101, - RequestVehiclePrevSeat = 0x310100, - RequestVehicleSwitchSeat = 0x310102, - RequestWeeklyRewards = 0x310265, - RequestWorldQuestUpdate = 0x310233, - ResetChallengeMode = 0x3100b6, - ResetChallengeModeCheat = 0x3100b7, + RequestVehicleExit = 0x3100fe, + RequestVehicleNextSeat = 0x310100, + RequestVehiclePrevSeat = 0x3100ff, + RequestVehicleSwitchSeat = 0x310101, + RequestWeeklyRewards = 0x310266, + RequestWorldQuestUpdate = 0x310234, + ResetChallengeMode = 0x3100b5, + ResetChallengeModeCheat = 0x3100b6, ResetInstances = 0x360092, ResurrectResponse = 0x3600ad, - RevertMonumentAppearance = 0x3101f1, - RideVehicleInteract = 0x310103, - RpeResetCharacter = 0x36017e, - SaveAccountDataExport = 0x360178, + RevertMonumentAppearance = 0x3101f2, + RideVehicleInteract = 0x310102, + RpeResetCharacter = 0x36017c, + SaveAccountDataExport = 0x360176, SaveCufProfiles = 0x310037, SaveEquipmentSet = 0x3200a4, - SaveGuildEmblem = 0x310182, - SavePersonalEmblem = 0x310183, - ScenePlaybackCanceled = 0x3100df, - ScenePlaybackComplete = 0x3100de, - SceneTriggerEvent = 0x3100e0, - SeamlessTransferComplete = 0x3102d7, - SelectWowLabsArea = 0x3102eb, + SaveGuildEmblem = 0x310183, + SavePersonalEmblem = 0x310184, + ScenePlaybackCanceled = 0x3100de, + ScenePlaybackComplete = 0x3100dd, + SceneTriggerEvent = 0x3100df, + SeamlessTransferComplete = 0x3102d9, + SelectWowLabsArea = 0x3102ed, SelfRes = 0x3200d1, SellAllJunkItems = 0x320035, SellItem = 0x320034, - SendCharacterClubInvitation = 0x360123, - SendContactList = 0x3600fa, + SendCharacterClubInvitation = 0x360124, + SendContactList = 0x3600fb, SendMail = 0x360026, - SendPingUnit = 0x3102d9, - SendPingWorldPoint = 0x3102da, + SendPingUnit = 0x3102db, + SendPingWorldPoint = 0x3102dc, SendTextEmote = 0x320019, ServerTimeOffsetRequest = 0x3600c7, - SetupWarbandGroups = 0x36018c, + SetupWarbandGroups = 0x36018a, SetActionBarToggles = 0x3200d2, SetActionButton = 0x360060, SetActiveMover = 0x340059, - SetAdvancedCombatLogging = 0x310190, + SetAdvancedCombatLogging = 0x310191, SetAssistantLeader = 0x360079, - SetBackpackAutosortDisabled = 0x310211, - SetBackpackSellJunkDisabled = 0x310212, - SetBankAutosortDisabled = 0x310213, - SetContactNotes = 0x3600fd, + SetBackpackAutosortDisabled = 0x310212, + SetBackpackSellJunkDisabled = 0x310213, + SetBankAutosortDisabled = 0x310214, + SetContactNotes = 0x3600fe, SetCurrencyFlags = 0x310015, - SetDifficultyId = 0x3100e1, + SetDifficultyId = 0x3100e0, SetDungeonDifficulty = 0x3600ac, SetEmpowerMinHoldStagePercent = 0x31013a, SetEveryoneIsAssistant = 0x360046, - SetExcludedChatCensorSources = 0x360131, + SetExcludedChatCensorSources = 0x36012f, SetFactionAtWar = 0x320078, SetFactionInactive = 0x32007a, SetFactionNotAtWar = 0x320079, SetGameEventDebugViewState = 0x310065, - SetInsertItemsLeftToRight = 0x310215, + SetInsertItemsLeftToRight = 0x310216, SetLootMethod = 0x360072, SetLootSpecialization = 0x3200df, SetPartyAssignment = 0x36007b, @@ -782,33 +788,33 @@ namespace Framework.Constants SetPetSpecialization = 0x310013, SetPlayerDeclinedNames = 0x3600b2, SetPreferredCemetery = 0x310024, - SetPvp = 0x310187, - SetRaidDifficulty = 0x360106, + SetPvp = 0x310188, + SetRaidDifficulty = 0x360107, SetRestrictPingsToAssistants = 0x360047, SetRole = 0x360005, SetSavedInstanceExtend = 0x3600b0, SetSelection = 0x3200c8, SetSheathed = 0x32001a, - SetSortBagsRightToLeft = 0x310214, + SetSortBagsRightToLeft = 0x310215, SetTaxiBenchmarkMode = 0x32008d, SetTitle = 0x310151, SetTradeCurrency = 0x31000a, SetTradeGold = 0x310009, SetTradeItem = 0x310007, - SetUsingPartyGarrison = 0x3101d0, - SetWarMode = 0x310188, + SetUsingPartyGarrison = 0x3101d1, + SetWarMode = 0x310189, SetWatchedFaction = 0x32007b, - ShowTradeSkill = 0x3600ed, + ShowTradeSkill = 0x3600ee, SignPetition = 0x3200d3, SilencePartyTalker = 0x36007c, - SocialContractRequest = 0x360173, + SocialContractRequest = 0x360171, SocketGems = 0x320085, - SortAccountBankBags = 0x3102dd, - SortBags = 0x310216, - SortBankBags = 0x310217, - SortReagentBankBags = 0x310218, + SortAccountBankBags = 0x3102df, + SortBags = 0x310217, + SortBankBags = 0x310218, + SortReagentBankBags = 0x310219, SpawnTrackingUpdate = 0x310166, - SpectateChange = 0x3102d0, + SpectateChange = 0x3102d2, SpellClick = 0x320027, SpellEmpowerRelease = 0x310138, SpellEmpowerRestart = 0x310139, @@ -823,7 +829,7 @@ namespace Framework.Constants StartWarGame = 0x36000a, StoreGuildBankItem = 0x32004b, SubmitUserFeedback = 0x3600bf, - SubscriptionInterstitialResponse = 0x310290, + SubscriptionInterstitialResponse = 0x310291, SummonResponse = 0x360094, SupportTicketSubmitComplaint = 0x360070, SurrenderArena = 0x310020, @@ -835,7 +841,7 @@ namespace Framework.Constants SwapItemWithGuildBankItem = 0x32004c, SwapSubGroups = 0x360077, SwapVoidItem = 0x310050, - TabardVendorActivate = 0x310184, + TabardVendorActivate = 0x310185, TalkToGossip = 0x320024, TaxiNodeStatusQuery = 0x32003b, TaxiQueryAvailableNodes = 0x32003d, @@ -845,53 +851,53 @@ namespace Framework.Constants TimeSyncResponseDropped = 0x34005c, TimeSyncResponseFailed = 0x34005b, ToggleDifficulty = 0x360081, - TogglePvp = 0x310186, + TogglePvp = 0x310187, TotemDestroyed = 0x320092, ToyClearFanfare = 0x2b0004, - TradeSkillSetFavorite = 0x310231, + TradeSkillSetFavorite = 0x310232, TrainerBuySpell = 0x320041, TrainerList = 0x320040, - TraitsCommitConfig = 0x3102b8, - TraitsTalentTestUnlearnSpells = 0x3102b6, - TransferCurrencyFromAccountCharacter = 0x3102e6, + TraitsCommitConfig = 0x3102ba, + TraitsTalentTestUnlearnSpells = 0x3102b8, + TransferCurrencyFromAccountCharacter = 0x3102e8, TransmogrifyItems = 0x310043, TurnInPetition = 0x3200d5, - Tutorial = 0x360107, - UiMapQuestLinesRequest = 0x310261, + Tutorial = 0x360108, + UiMapQuestLinesRequest = 0x310262, UnacceptTrade = 0x310005, - UndeleteCharacter = 0x360109, + UndeleteCharacter = 0x36010a, UnlearnSkill = 0x32007f, UnlearnSpecialization = 0x310051, UnlockVoidStorage = 0x31004d, - UpdateAadcStatus = 0x360163, + UpdateAadcStatus = 0x360161, UpdateAccountBankTabSettings = 0x320128, UpdateAccountData = 0x3600c1, UpdateAreaTriggerVisual = 0x310175, UpdateClientSettings = 0x36008e, - UpdateCraftingNpcRecipes = 0x3101e2, + UpdateCraftingNpcRecipes = 0x3101e3, UpdateMissileTrajectory = 0x340060, UpdateRaidTarget = 0x36007a, UpdateSpellVisual = 0x310174, - UpdateVasPurchaseStates = 0x36011e, - UpgradeGarrison = 0x310198, - UpgradeRuneforgeLegendary = 0x31028e, + UpdateVasPurchaseStates = 0x36011f, + UpgradeGarrison = 0x310199, + UpgradeRuneforgeLegendary = 0x31028f, UsedFollow = 0x310032, - UseCritterItem = 0x310109, + UseCritterItem = 0x310108, UseEquipmentSet = 0x330001, UseItem = 0x31016e, UseToy = 0x310171, - VasCheckTransferOk = 0x360136, - VasGetQueueMinutes = 0x360135, - VasGetServiceStatus = 0x360134, + VasCheckTransferOk = 0x360134, + VasGetQueueMinutes = 0x360133, + VasGetServiceStatus = 0x360132, ViolenceLevel = 0x310030, - VoiceChannelSttTokenRequest = 0x36013a, - VoiceChatJoinChannel = 0x36013b, - VoiceChatLogin = 0x360139, + VoiceChannelSttTokenRequest = 0x360138, + VoiceChatJoinChannel = 0x360139, + VoiceChatLogin = 0x360137, VoidStorageTransfer = 0x31004f, Warden3Data = 0x360018, Who = 0x3600ab, WhoIs = 0x3600aa, - WorldLootObjectClick = 0x3102d3, + WorldLootObjectClick = 0x3102d5, WorldPortResponse = 0x360025, WrapItem = 0x330000, @@ -1049,7 +1055,7 @@ namespace Framework.Constants BonusRollEmpty = 0x3800dd, BossKill = 0x3e002b, BreakTarget = 0x3e0016, - BroadcastAchievement = 0x3d0010, + BroadcastAchievement = 0x3d0012, BroadcastSummonCast = 0x3802c2, BroadcastSummonResponse = 0x3802c3, BuyFailed = 0x380160, @@ -1090,6 +1096,8 @@ namespace Framework.Constants CapturePointRemoved = 0x3e0008, CastFailed = 0x4e0048, CasRefreshRemoteData = 0x380111, + CautionaryChannelMessage = 0x3d0009, + CautionaryChatMessage = 0x3d0008, ChainMissileBounce = 0x380061, ChallengeModeComplete = 0x3800a2, ChallengeModeRequestLeadersResult = 0x3800a8, @@ -1098,11 +1106,11 @@ namespace Framework.Constants ChallengeModeUpdateDeathCount = 0x3800a0, ChangePlayerDifficultyResult = 0x4b000c, ChangeRealmTicketResponse = 0x38029a, - ChannelList = 0x3d0019, - ChannelNotify = 0x3d0015, - ChannelNotifyJoined = 0x3d0017, - ChannelNotifyLeft = 0x3d0018, - ChannelNotifyNpeJoinedBatch = 0x3d0016, + ChannelList = 0x3d001b, + ChannelNotify = 0x3d0017, + ChannelNotifyJoined = 0x3d0019, + ChannelNotifyLeft = 0x3d001a, + ChannelNotifyNpeJoinedBatch = 0x3d0018, CharacterCheckUpgradeResult = 0x380254, CharacterLoginFailed = 0x38019e, CharacterObjectTestResponse = 0x38021f, @@ -1115,19 +1123,19 @@ namespace Framework.Constants CharCustomizeSuccess = 0x38017c, CharFactionChangeResult = 0x38023e, Chat = 0x3d0001, - ChatAutoResponded = 0x3d000c, - ChatCanLocalWhisperTargetResponse = 0x3d0020, - ChatDown = 0x3d0012, + ChatAutoResponded = 0x3d000e, + ChatCanLocalWhisperTargetResponse = 0x3d0022, + ChatDown = 0x3d0014, ChatIgnoredAccountMuted = 0x3d0000, - ChatIsDown = 0x3d0013, - ChatNotInGuild = 0x3d0021, + ChatIsDown = 0x3d0015, + ChatNotInGuild = 0x3d0023, ChatNotInParty = 0x3d0006, ChatPlayerAmbiguous = 0x3d0004, - ChatPlayerNotfound = 0x3d000b, - ChatReconnect = 0x3d0014, - ChatRegionalServiceStatus = 0x3d001b, + ChatPlayerNotfound = 0x3d000d, + ChatReconnect = 0x3d0016, + ChatRegionalServiceStatus = 0x3d001d, ChatRestricted = 0x3d0007, - ChatServerMessage = 0x3d001a, + ChatServerMessage = 0x3d001c, CheatIgnoreDimishingReturns = 0x4e0002, CheckAbandonNpe = 0x4b0023, CheckCharacterNameAvailabilityResult = 0x38001b, @@ -1207,7 +1215,7 @@ namespace Framework.Constants DbReply = 0x3c0000, DeathReleaseLoc = 0x38016d, DebugMenuManagerFullUpdate = 0x3800ef, - DefenseMessage = 0x3d000a, + DefenseMessage = 0x3d000c, DeleteChar = 0x38019b, DeleteExpiredMissionsResult = 0x420022, DelvesAccountDataElementChanged = 0x380348, @@ -1247,6 +1255,7 @@ namespace Framework.Constants EquipmentSetId = 0x38014c, ExpectedSpamRecords = 0x3d0005, ExplorationExperience = 0x3801f6, + ExportAccountProfile = 0x3800ec, ExternalTransactionIdGenerated = 0x3802f3, FactionBonusInfo = 0x3801bc, FailedPlayerCondition = 0x4b0002, @@ -1429,6 +1438,10 @@ namespace Framework.Constants GuildPartyState = 0x440013, GuildPermissionsQueryResults = 0x440029, GuildRanks = 0x440010, + GuildRenameNameCheck = 0x440044, + GuildRenameRefundResult = 0x440046, + GuildRenameRequestedResult = 0x440045, + GuildRenameStatusUpdate = 0x440043, GuildReputationReactionChanged = 0x440014, GuildReset = 0x440020, GuildRewardList = 0x440008, @@ -1558,6 +1571,7 @@ namespace Framework.Constants MirrorImageCreatureData = 0x4e0003, MissileCancel = 0x380060, ModifyCooldown = 0x3801fb, + Motd = 0x3d0003, MountResult = 0x38000f, MovementEnforcementAlert = 0x3802c1, MoveAddImpulse = 0x490062, @@ -1849,7 +1863,7 @@ namespace Framework.Constants RafDebugFriendMonths = 0x380333, RaidDifficultySet = 0x38023f, RaidGroupOnly = 0x380241, - RaidInstanceMessage = 0x3d0008, + RaidInstanceMessage = 0x3d000a, RaidMarkersChanged = 0x380038, RandomRoll = 0x3800c8, RatedPvpInfo = 0x3e000f, @@ -2074,9 +2088,9 @@ namespace Framework.Constants UpdateRecentPlayerGuids = 0x38008d, UpdateTalentData = 0x38006f, UpdateWorldState = 0x3801df, - UserlistAdd = 0x3d000d, - UserlistRemove = 0x3d000e, - UserlistUpdate = 0x3d000f, + UserlistAdd = 0x3d000f, + UserlistRemove = 0x3d0010, + UserlistUpdate = 0x3d0011, UseEquipmentSetResult = 0x3801e6, VasCheckTransferOkResponse = 0x3802ac, VasGetQueueMinutesResponse = 0x3802aa, @@ -2121,7 +2135,7 @@ namespace Framework.Constants XpAwardedFromCurrency = 0x38032f, XpGainAborted = 0x380062, XpGainEnabled = 0x380240, - ZoneUnderAttack = 0x3d0009, + ZoneUnderAttack = 0x3d000b, // Opcodes That Are Not Generated Automatically AccountHeirloomUpdate = AccountToyUpdate + 1, // No Client Handler diff --git a/Source/Framework/Constants/PlayerConst.cs b/Source/Framework/Constants/PlayerConst.cs index 25d1c772c..ef4137193 100644 --- a/Source/Framework/Constants/PlayerConst.cs +++ b/Source/Framework/Constants/PlayerConst.cs @@ -10,7 +10,7 @@ namespace Framework.Constants public const Expansion CurrentExpansion = Expansion.TheWarWithin; public const int MaxTalentTiers = 7; - public const int MaxTalentColumns = 3; + public const int MaxTalentColumns = 4; public const int MaxTalentRank = 5; public const int MaxPvpTalentSlots = 4; public const int MinSpecializationLevel = 10; diff --git a/Source/Framework/Constants/QuestConst.cs b/Source/Framework/Constants/QuestConst.cs index 0886d6f4e..279221af5 100644 --- a/Source/Framework/Constants/QuestConst.cs +++ b/Source/Framework/Constants/QuestConst.cs @@ -63,6 +63,10 @@ namespace Framework.Constants Spell = 5, Unlock = 6, Companion = 7, + QuestlineUnlock = 8, + QuestlineReward = 9, + QuestlineUnlockPart = 10, + Max } diff --git a/Source/Framework/Constants/SupportSystemConst.cs b/Source/Framework/Constants/SupportSystemConst.cs index 4a3df323e..9a01c2542 100644 --- a/Source/Framework/Constants/SupportSystemConst.cs +++ b/Source/Framework/Constants/SupportSystemConst.cs @@ -46,6 +46,8 @@ namespace Framework.Constants GuildName = 0x1000, Description = 0x2000, Name = 0x4000, + ChinaHarmfulMinors = 0x8000, + Disruption = 0x10000, } public enum GMTicketSystemStatus diff --git a/Source/Framework/Database/Databases/HotfixDatabase.cs b/Source/Framework/Database/Databases/HotfixDatabase.cs index 8fcd1475e..da462100f 100644 --- a/Source/Framework/Database/Databases/HotfixDatabase.cs +++ b/Source/Framework/Database/Databases/HotfixDatabase.cs @@ -454,7 +454,7 @@ namespace Framework.Database // DungeonEncounter.db2 PrepareStatement(HotfixStatements.SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, CompleteWorldStateID, Bit, Flags, " + - "SpellIconFileID, Faction FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?"); + "SpellIconFileID, Faction, Unknown1115 FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?"); PrepareStatement(HotfixStatements.SEL_DUNGEON_ENCOUNTER_LOCALE, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE (`VerifiedBuild` > 0) = ?" + " AND locale = ?"); @@ -1003,8 +1003,8 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_NAMES_RESERVED_LOCALE, "SELECT ID, Name, LocaleMask FROM names_reserved_locale WHERE (`VerifiedBuild` > 0) = ?"); // NumTalentsAtLevel.db2 - PrepareStatement(HotfixStatements.SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level" + - " WHERE (`VerifiedBuild` > 0) = ?"); + PrepareStatement(HotfixStatements.SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter, Unknown1115" + + " FROM num_talents_at_level WHERE (`VerifiedBuild` > 0) = ?"); // OverrideSpellData.db2 PrepareStatement(HotfixStatements.SEL_OVERRIDE_SPELL_DATA, "SELECT ID, Spells1, Spells2, Spells3, Spells4, Spells5, Spells6, Spells7, Spells8, Spells9, " + @@ -1414,8 +1414,10 @@ namespace Framework.Database "Key16 FROM tact_key WHERE (`VerifiedBuild` > 0) = ?"); // Talent.db2 - PrepareStatement(HotfixStatements.SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, ClassID, SpecID, SpellID, OverridesSpellID, " + - "CategoryMask1, CategoryMask2 FROM talent WHERE (`VerifiedBuild` > 0) = ?"); + PrepareStatement(HotfixStatements.SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, TabID, ClassID, SpecID, SpellID, OverridesSpellID, " + + "RequiredSpellID, CategoryMask1, CategoryMask2, SpellRank1, SpellRank2, SpellRank3, SpellRank4, SpellRank5, SpellRank6, SpellRank7, " + + "SpellRank8, SpellRank9, PrereqTalent1, PrereqTalent2, PrereqTalent3, PrereqRank1, PrereqRank2, PrereqRank3 FROM talent" + + " WHERE (`VerifiedBuild` > 0) = ?"); PrepareStatement(HotfixStatements.SEL_TALENT_LOCALE, "SELECT ID, Description_lang FROM talent_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?"); // TaxiNodes.db2 diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index 75c13d20a..2e39c2c62 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -3754,6 +3754,14 @@ namespace Game.Achievements return false; break; } + case ModifierTreeType.PlayerTitle: // 393 + if (referencePlayer.m_playerData.PlayerTitle != reqValue) + return false; + break; + case ModifierTreeType.PlayerIsInGuild: // 404 + if (referencePlayer.GetGuildId() == 0) + return false; + break; default: return false; } diff --git a/Source/Game/DataStorage/Structs/C_Records.cs b/Source/Game/DataStorage/Structs/C_Records.cs index d68d28d0f..cf0058d71 100644 --- a/Source/Game/DataStorage/Structs/C_Records.cs +++ b/Source/Game/DataStorage/Structs/C_Records.cs @@ -129,7 +129,7 @@ namespace Game.DataStorage public ushort CinematicSequenceID; public ushort DefaultSpec; public uint Id; - public byte PrimaryStatPriority; + public sbyte PrimaryStatPriority; public PowerType DisplayPower; public byte RangedAttackPowerPerAgility; public byte AttackPowerPerAgility; @@ -532,7 +532,7 @@ namespace Game.DataStorage public uint FootstepCameraEffectID; public uint DeathThudCameraEffectID; public uint SoundID; - public uint SizeClass; + public sbyte SizeClass; public float CollisionWidth; public float CollisionHeight; public float WorldEffectScale; diff --git a/Source/Game/DataStorage/Structs/D_Records.cs b/Source/Game/DataStorage/Structs/D_Records.cs index a0b149b76..5ef626327 100644 --- a/Source/Game/DataStorage/Structs/D_Records.cs +++ b/Source/Game/DataStorage/Structs/D_Records.cs @@ -65,6 +65,7 @@ namespace Game.DataStorage public int Flags; public int SpellIconFileID; public int Faction; + public int Unknown1115; } public sealed class DurabilityCostsRecord diff --git a/Source/Game/DataStorage/Structs/H_Records.cs b/Source/Game/DataStorage/Structs/H_Records.cs index 447887ee7..bc53d517b 100644 --- a/Source/Game/DataStorage/Structs/H_Records.cs +++ b/Source/Game/DataStorage/Structs/H_Records.cs @@ -13,7 +13,7 @@ namespace Game.DataStorage public int LegacyUpgradedItemID; public uint StaticUpgradedItemID; public sbyte SourceTypeEnum; - public byte Flags; + public int Flags; public int LegacyItemID; public int[] UpgradeItemID = new int[6]; public ushort[] UpgradeItemBonusListID = new ushort[6]; diff --git a/Source/Game/DataStorage/Structs/I_Records.cs b/Source/Game/DataStorage/Structs/I_Records.cs index 6f96bc506..84e21b32f 100644 --- a/Source/Game/DataStorage/Structs/I_Records.cs +++ b/Source/Game/DataStorage/Structs/I_Records.cs @@ -158,7 +158,7 @@ namespace Game.DataStorage public string ClassName; public sbyte ClassID; public float PriceModifier; - public byte Flags; + public int Flags; } public sealed class ItemContextPickerEntryRecord @@ -225,7 +225,7 @@ namespace Game.DataStorage public uint Id; public ushort RequiredArenaRating; public byte ArenaBracket; // arena slot restrictions (min slot value) - public byte Flags; + public int Flags; public byte MinFactionID; public int MinReputation; public byte RequiredAchievement; // required personal arena rating diff --git a/Source/Game/DataStorage/Structs/N_Records.cs b/Source/Game/DataStorage/Structs/N_Records.cs index ee8fb5451..5ca574f20 100644 --- a/Source/Game/DataStorage/Structs/N_Records.cs +++ b/Source/Game/DataStorage/Structs/N_Records.cs @@ -37,5 +37,6 @@ namespace Game.DataStorage public uint NumTalents; public uint NumTalentsDeathKnight; public uint NumTalentsDemonHunter; + public float Unknown1115; } } diff --git a/Source/Game/DataStorage/Structs/S_Records.cs b/Source/Game/DataStorage/Structs/S_Records.cs index 56608167e..555de0d40 100644 --- a/Source/Game/DataStorage/Structs/S_Records.cs +++ b/Source/Game/DataStorage/Structs/S_Records.cs @@ -231,7 +231,7 @@ namespace Game.DataStorage { public uint Id; public uint SpellID; - public byte FacingCasterFlags; + public int FacingCasterFlags; public ushort MinFactionID; public int MinReputation; public ushort RequiredAreasID; diff --git a/Source/Game/DataStorage/Structs/T_Records.cs b/Source/Game/DataStorage/Structs/T_Records.cs index 8af35d96a..77bac18af 100644 --- a/Source/Game/DataStorage/Structs/T_Records.cs +++ b/Source/Game/DataStorage/Structs/T_Records.cs @@ -20,11 +20,16 @@ namespace Game.DataStorage public byte TierID; public byte Flags; public byte ColumnIndex; + public ushort TabID; public sbyte ClassID; public ushort SpecID; public uint SpellID; public uint OverridesSpellID; - public byte[] CategoryMask = new byte[2]; + public uint RequiredSpellID; + public int[] CategoryMask = new int[2]; + public uint[] SpellRank = new uint[2]; + public uint[] PrereqTalent = new uint[2]; + public byte[] PrereqRank = new byte[2]; } public sealed class TaxiNodesRecord @@ -98,7 +103,7 @@ namespace Game.DataStorage public string SourceText; public uint Id; public uint ItemID; - public byte Flags; + public int Flags; public sbyte SourceTypeEnum; } diff --git a/Source/Game/DataStorage/Structs/V_Records.cs b/Source/Game/DataStorage/Structs/V_Records.cs index f5319f8af..58ebc03a2 100644 --- a/Source/Game/DataStorage/Structs/V_Records.cs +++ b/Source/Game/DataStorage/Structs/V_Records.cs @@ -89,12 +89,12 @@ namespace Game.DataStorage public float CameraEnteringZoom; public float CameraSeatZoomMin; public float CameraSeatZoomMax; - public short EnterAnimKitID; - public short RideAnimKitID; - public short ExitAnimKitID; - public short VehicleEnterAnimKitID; - public short VehicleRideAnimKitID; - public short VehicleExitAnimKitID; + public int EnterAnimKitID; + public int RideAnimKitID; + public int ExitAnimKitID; + public int VehicleEnterAnimKitID; + public int VehicleRideAnimKitID; + public int VehicleExitAnimKitID; public short CameraModeID; public bool HasFlag(VehicleSeatFlags flag) { return (Flags & (int)flag) != 0; } diff --git a/Source/Game/Entities/Creature/Gossip.cs b/Source/Game/Entities/Creature/Gossip.cs index 923f8d1d5..2a6b19790 100644 --- a/Source/Game/Entities/Creature/Gossip.cs +++ b/Source/Game/Entities/Creature/Gossip.cs @@ -287,6 +287,7 @@ namespace Game.Misc gossipText.QuestFlags = (uint)quest.Flags; gossipText.QuestFlagsEx = (uint)quest.FlagsEx; gossipText.QuestFlagsEx2 = (uint)quest.FlagsEx2; + gossipText.QuestFlagsEx3 = quest.FlagsEx3; gossipText.Repeatable = quest.IsTurnIn() && quest.IsRepeatable() && !quest.IsDailyOrWeekly() && !quest.IsMonthly(); gossipText.ResetByScheduler = quest.IsResetByScheduler(); gossipText.Important = quest.IsImportant(); @@ -383,6 +384,7 @@ namespace Game.Misc text.QuestFlags = (uint)quest.Flags; text.QuestFlagsEx = (uint)quest.FlagsEx; text.QuestFlagsEx2 = (uint)quest.FlagsEx2; + text.QuestFlagsEx3 = quest.FlagsEx3; text.Repeatable = quest.IsTurnIn() && quest.IsRepeatable() && !quest.IsDailyOrWeekly() && !quest.IsMonthly(); text.ResetByScheduler = quest.IsResetByScheduler(); text.Important = quest.IsImportant(); @@ -464,6 +466,7 @@ namespace Game.Misc packet.QuestFlags[0] = (uint)(quest.Flags & (WorldConfig.GetBoolValue(WorldCfg.QuestIgnoreAutoAccept) ? ~QuestFlags.AutoAccept : ~QuestFlags.None)); packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.QuestFlags[2] = (uint)quest.FlagsEx2; + packet.QuestFlags[3] = quest.FlagsEx3; packet.SuggestedPartyMembers = quest.SuggestedPlayers; // Is there a better way? what about game objects? @@ -576,6 +579,7 @@ namespace Game.Misc offer.QuestFlags[0] = (uint)quest.Flags; offer.QuestFlags[1] = (uint)quest.FlagsEx; offer.QuestFlags[2] = (uint)quest.FlagsEx2; + offer.QuestFlags[3] = quest.FlagsEx3; packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.PortraitGiver = quest.QuestGiverPortrait; @@ -646,6 +650,7 @@ namespace Game.Misc packet.QuestFlags[0] = (uint)quest.Flags; packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.QuestFlags[2] = (uint)quest.FlagsEx2; + packet.QuestFlags[3] = quest.FlagsEx3; packet.SuggestPartyMembers = quest.SuggestedPlayers; packet.QuestInfoID = (int)quest.QuestInfoID; diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index 11ec15d9e..01c1db33d 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -3794,7 +3794,7 @@ namespace Game.Entities public void WriteCreate(WorldPacket data, Player owner, Player receiver) { - data.WriteBits(Type, 1); + data.WriteUInt32(Type); if (Type == 1) { data.WriteFloat(FloatValue); @@ -3803,11 +3803,10 @@ namespace Game.Entities { data.WriteInt64(Int64Value); } - data.FlushBits(); } public void WriteUpdate(WorldPacket data, bool ignoreChangesMask, Player owner, Player receiver) { - data.WriteBits(Type, 1); + data.WriteUInt32(Type); if (Type == 1) { data.WriteFloat(FloatValue); @@ -3816,7 +3815,6 @@ namespace Game.Entities { data.WriteInt64(Int64Value); } - data.FlushBits(); } } @@ -5637,10 +5635,9 @@ namespace Game.Entities public class ActivePlayerData : HasChangesMask { - public static int QuestCompletedBitsSize; public static int QuestCompletedBitsPerBlock; - static int changeMaskLength = 1517; + static int changeMaskLength = 516; public UpdateField BackpackAutoSortDisabled = new(0, 1); public UpdateField BackpackSellJunkDisabled = new(0, 2); @@ -5652,6 +5649,8 @@ namespace Game.Entities public UpdateFieldArray> ResearchSiteProgress = new(1, 43, 44); public UpdateFieldArray> Research = new(1, 45, 46); public DynamicUpdateField KnownTitles = new(0, 7); + public DynamicUpdateField CharacterDataElements = new(0, 8); + public DynamicUpdateField AccountDataElements = new(0, 9); public DynamicUpdateField DailyQuestsCompleted = new(0, 11); public DynamicUpdateField AvailableQuestLineXQuestIDs = new(0, 12); public DynamicUpdateField Heirlooms = new(0, 13); @@ -5677,8 +5676,6 @@ namespace Game.Entities public DynamicUpdateField CategoryCooldownMods = new(32, 37); public DynamicUpdateField WeeklySpellUses = new(32, 38); public DynamicUpdateField TrackedCollectableSources = new(32, 39); - public DynamicUpdateField CharacterDataElements = new(0, 8); - public DynamicUpdateField AccountDataElements = new(0, 9); public DynamicUpdateField PvpInfo = new(0, 10); public DynamicUpdateField CharacterRestrictions = new(0, 23); public DynamicUpdateField TraitConfigs = new(32, 33); @@ -5733,7 +5730,7 @@ namespace Game.Entities public UpdateField MultiActionBars = new(70, 94); public UpdateField LifetimeMaxRank = new(70, 95); public UpdateField NumRespecs = new(70, 96); - public UpdateField PvpMedals = new(70, 97); + public UpdateField PvpMedals = new(70, 97); public UpdateField TodayHonorableKills = new(70, 98); public UpdateField YesterdayHonorableKills = new(70, 99); public UpdateField LifetimeHonorableKills = new(70, 100); @@ -5795,12 +5792,10 @@ namespace Game.Entities public UpdateFieldArray ProfessionSkillLine = new(2, 481, 482); public UpdateFieldArray BagSlotFlags = new(5, 484, 485); public UpdateFieldArray BankBagSlotFlags = new(7, 490, 491); - public UpdateFieldArray QuestCompleted = new(1000, 498, 499); - public UpdateFieldArray ItemUpgradeHighWatermark = new(17, 1499, 1500); + public UpdateFieldArray ItemUpgradeHighWatermark = new(17, 498, 499); public ActivePlayerData() : base((int)EntityFragment.CGObject, TypeId.ActivePlayer, changeMaskLength) { - QuestCompletedBitsSize = QuestCompleted.GetSize(); QuestCompletedBitsPerBlock = sizeof(ulong) * 8; } @@ -5878,7 +5873,7 @@ namespace Game.Entities data.WriteUInt8(MultiActionBars); data.WriteUInt8(LifetimeMaxRank); data.WriteUInt8(NumRespecs); - data.WriteUInt8(PvpMedals); + data.WriteUInt32(PvpMedals); for (int i = 0; i < 12; ++i) { data.WriteUInt32(BuybackPrice[i]); @@ -5925,10 +5920,6 @@ namespace Game.Entities { data.WriteUInt32(BankBagSlotFlags[i]); } - for (int i = 0; i < 1000; ++i) - { - data.WriteUInt64(QuestCompleted[i]); - } data.WriteUInt32(Honor); data.WriteUInt32(HonorNextLevel); data.WriteInt32(PerksProgramCurrency); @@ -6001,6 +5992,14 @@ namespace Game.Entities { data.WriteUInt64(KnownTitles[i]); } + for (int i = 0; i < CharacterDataElements.Size(); ++i) + { + CharacterDataElements[i].WriteCreate(data, owner, receiver); + } + for (int i = 0; i < AccountDataElements.Size(); ++i) + { + AccountDataElements[i].WriteCreate(data, owner, receiver); + } for (int i = 0; i < DailyQuestsCompleted.Size(); ++i) { data.WriteUInt32(DailyQuestsCompleted[i]); @@ -6122,14 +6121,6 @@ namespace Game.Entities FrozenPerksVendorItem.GetValue().Write(data); Field_1410.GetValue().WriteCreate(data, owner, receiver); DungeonScore.GetValue().Write(data); - for (int i = 0; i < CharacterDataElements.Size(); ++i) - { - CharacterDataElements[i].WriteCreate(data, owner, receiver); - } - for (int i = 0; i < AccountDataElements.Size(); ++i) - { - AccountDataElements[i].WriteCreate(data, owner, receiver); - } for (int i = 0; i < PvpInfo.Size(); ++i) { PvpInfo[i].WriteCreate(data, owner, receiver); @@ -6172,10 +6163,8 @@ namespace Game.Entities public void WriteUpdate(WorldPacket data, UpdateMask changesMask, bool ignoreNestedChangesMask, Player owner, Player receiver) { - 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(0), 17); + for (uint i = 0; i < 17; ++i) if (changesMask.GetBlock(i) != 0) data.WriteBits(changesMask.GetBlock(i), 32); @@ -6537,6 +6526,26 @@ namespace Game.Entities } } } + if (changesMask[8]) + { + for (int i = 0; i < CharacterDataElements.Size(); ++i) + { + if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask) + { + CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } + if (changesMask[9]) + { + for (int i = 0; i < AccountDataElements.Size(); ++i) + { + if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask) + { + AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } if (changesMask[11]) { for (int i = 0; i < DailyQuestsCompleted.Size(); ++i) @@ -6800,26 +6809,6 @@ namespace Game.Entities } if (changesMask[0]) { - if (changesMask[8]) - { - for (int i = 0; i < CharacterDataElements.Size(); ++i) - { - if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask) - { - CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); - } - } - } - if (changesMask[9]) - { - for (int i = 0; i < AccountDataElements.Size(); ++i) - { - if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask) - { - AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); - } - } - } if (changesMask[10]) { for (int i = 0; i < PvpInfo.Size(); ++i) @@ -7074,7 +7063,7 @@ namespace Game.Entities } if (changesMask[97]) { - data.WriteUInt8(PvpMedals); + data.WriteUInt32(PvpMedals); } if (changesMask[98]) { @@ -7417,20 +7406,10 @@ namespace Game.Entities } } if (changesMask[498]) - { - for (int i = 0; i < 1000; ++i) - { - if (changesMask[499 + i]) - { - data.WriteUInt64(QuestCompleted[i]); - } - } - } - if (changesMask[1499]) { for (int i = 0; i < 17; ++i) { - if (changesMask[1500 + i]) + if (changesMask[499 + i]) { data.WriteFloat(ItemUpgradeHighWatermark[i]); } @@ -7451,6 +7430,8 @@ namespace Game.Entities ClearChangesMask(ResearchSiteProgress); ClearChangesMask(Research); ClearChangesMask(KnownTitles); + ClearChangesMask(CharacterDataElements); + ClearChangesMask(AccountDataElements); ClearChangesMask(DailyQuestsCompleted); ClearChangesMask(AvailableQuestLineXQuestIDs); ClearChangesMask(Heirlooms); @@ -7476,8 +7457,6 @@ namespace Game.Entities ClearChangesMask(CategoryCooldownMods); ClearChangesMask(WeeklySpellUses); ClearChangesMask(TrackedCollectableSources); - ClearChangesMask(CharacterDataElements); - ClearChangesMask(AccountDataElements); ClearChangesMask(PvpInfo); ClearChangesMask(CharacterRestrictions); ClearChangesMask(TraitConfigs); @@ -7594,7 +7573,6 @@ namespace Game.Entities ClearChangesMask(ProfessionSkillLine); ClearChangesMask(BagSlotFlags); ClearChangesMask(BankBagSlotFlags); - ClearChangesMask(QuestCompleted); ClearChangesMask(ItemUpgradeHighWatermark); _changesMask.ResetAll(); } diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 2bcd35c2d..7d0144d8d 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -2421,13 +2421,6 @@ namespace Game.Entities int fieldOffset = (int)((questBit - 1) / ActivePlayerData.QuestCompletedBitsPerBlock); ulong flag = 1ul << (((int)questBit - 1) % ActivePlayerData.QuestCompletedBitsPerBlock); - if (fieldOffset < ActivePlayerData.QuestCompletedBitsSize) - { - if (completed) - SetUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, fieldOffset), flag); - else - RemoveUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, fieldOffset), flag); - } BitVectors bitVectors = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.BitVectors); BitVector bitVector = bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.CharacterQuestCompletedIndex); diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index ba4e134ac..4a7fa6808 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -2965,7 +2965,9 @@ namespace Game.Entities PlayerInteractionType.ProfessionsCraftingOrder, PlayerInteractionType.Professions, PlayerInteractionType.ProfessionsCustomerOrder, PlayerInteractionType.TraitSystem, PlayerInteractionType.BarbersChoice, PlayerInteractionType.MajorFactionRenown, PlayerInteractionType.PersonalTabardVendor, PlayerInteractionType.ForgeMaster, PlayerInteractionType.CharacterBanker, - PlayerInteractionType.AccountBanker, PlayerInteractionType.ProfessionRespec + PlayerInteractionType.AccountBanker, PlayerInteractionType.ProfessionRespec,PlayerInteractionType.PlaceholderType72, + PlayerInteractionType.PlaceholderType75, PlayerInteractionType.PlaceholderType76, PlayerInteractionType.GuildRename, + PlayerInteractionType.PlaceholderType77, PlayerInteractionType.ItemUpgrade }; PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[(int)gossipOptionNpc]; @@ -4962,7 +4964,7 @@ namespace Game.Entities if (playerChoiceLocale != null) ObjectManager.GetLocaleString(playerChoiceLocale.Question, locale, ref displayPlayerChoice.Question); - displayPlayerChoice.CloseChoiceFrame = false; + displayPlayerChoice.InfiniteRange = false; displayPlayerChoice.HideWarboardHeader = playerChoice.HideWarboardHeader; displayPlayerChoice.KeepOpenAfterChoice = playerChoice.KeepOpenAfterChoice; @@ -5066,7 +5068,6 @@ namespace Game.Entities var mawPower = new Networking.Packets.PlayerChoiceResponseMawPower(); mawPower.TypeArtFileID = playerChoiceResponse.MawPower.Value.TypeArtFileID; mawPower.Rarity = playerChoiceResponse.MawPower.Value.Rarity; - mawPower.RarityColor = playerChoiceResponse.MawPower.Value.RarityColor; mawPower.SpellID = playerChoiceResponse.MawPower.Value.SpellID; mawPower.MaxStacks = playerChoiceResponse.MawPower.Value.MaxStacks; diff --git a/Source/Game/Entities/StatSystem.cs b/Source/Game/Entities/StatSystem.cs index 12682cd49..a41dac57a 100644 --- a/Source/Game/Entities/StatSystem.cs +++ b/Source/Game/Entities/StatSystem.cs @@ -1999,10 +1999,10 @@ namespace Game.Entities Stats GetPrimaryStat() { - byte primaryStatPriority; + sbyte primaryStatPriority; var specialization = GetPrimarySpecializationEntry(); if (specialization != null) - primaryStatPriority = (byte)specialization.PrimaryStatPriority; + primaryStatPriority = specialization.PrimaryStatPriority; else primaryStatPriority = CliDB.ChrClassesStorage.LookupByKey(GetClass()).PrimaryStatPriority; diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 77b4f9ff8..322594b19 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -7082,35 +7082,35 @@ namespace Game "ID, QuestType, QuestPackageID, ContentTuningID, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " + //10 11 12 13 14 15 16 "RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " + - //17 18 19 20 21 22 - "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, " + - //23 24 25 26 27 28 29 30 + //17 18 19 20 21 22 23 + "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, FlagsEx3, " + + //24 25 26 27 28 29 30 31 "RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " + - //31 32 33 34 35 36 37 38 + //32 33 34 35 36 37 38 39 "RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " + - //39 40 41 42 43 44 + //40 41 42 43 44 45 "RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " + - //45 46 47 48 49 50 + //46 47 48 49 50 51 "RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " + - //51 52 53 54 55 56 + //52 53 54 55 56 57 "RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " + - //57 58 59 60 61 62 63 64 + //58 59 60 61 62 63 64 65 "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, " + - //65 66 67 68 + //66 67 68 69 "PortraitGiver, PortraitGiverMount, PortraitGiverModelSceneID, PortraitTurnIn, " + - //69 70 71 72 73 74 75 76 + //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, ResetByScheduler, 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"); + "FROM quest_template"); if (result.IsEmpty()) { @@ -10468,7 +10468,7 @@ namespace Game } while (rewards.NextRow()); } - SQLResult mawPowersResult = DB.World.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, RarityColor, SpellID, MaxStacks FROM playerchoice_response_maw_power"); + SQLResult mawPowersResult = DB.World.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, SpellID, MaxStacks FROM playerchoice_response_maw_power"); if (!mawPowersResult.IsEmpty()) { do @@ -10494,10 +10494,8 @@ namespace Game mawPower.TypeArtFileID = mawPowersResult.Read(2); if (!mawPowersResult.IsNull(3)) mawPower.Rarity = mawPowersResult.Read(3); - if (!mawPowersResult.IsNull(4)) - mawPower.RarityColor = mawPowersResult.Read(4); - mawPower.SpellID = mawPowersResult.Read(5); - mawPower.MaxStacks = mawPowersResult.Read(6); + mawPower.SpellID = mawPowersResult.Read(4); + mawPower.MaxStacks = mawPowersResult.Read(5); response.MawPower = mawPower; ++mawPowersCount; @@ -12691,7 +12689,6 @@ namespace Game { public int TypeArtFileID; public int? Rarity; - public uint? RarityColor; public int SpellID; public int MaxStacks; } diff --git a/Source/Game/Handlers/SpellHandler.cs b/Source/Game/Handlers/SpellHandler.cs index 7b40d8bca..984c7301e 100644 --- a/Source/Game/Handlers/SpellHandler.cs +++ b/Source/Game/Handlers/SpellHandler.cs @@ -492,7 +492,9 @@ namespace Game { MirrorImageComponentedData mirrorImageComponentedData = new(); mirrorImageComponentedData.UnitGUID = guid; - mirrorImageComponentedData.DisplayID = (int)creator.GetDisplayId(); + var chrModel = Global.DB2Mgr.GetChrModel(creator.GetRace(), creator.GetGender()); + if (chrModel != null) + mirrorImageComponentedData.ChrModelID = (int)chrModel.Id; mirrorImageComponentedData.RaceID = (byte)creator.GetRace(); mirrorImageComponentedData.Gender = (byte)creator.GetGender(); mirrorImageComponentedData.ClassID = (byte)creator.GetClass(); diff --git a/Source/Game/Networking/Packets/BattleGroundPackets.cs b/Source/Game/Networking/Packets/BattleGroundPackets.cs index f71e03ae7..961f44620 100644 --- a/Source/Game/Networking/Packets/BattleGroundPackets.cs +++ b/Source/Game/Networking/Packets/BattleGroundPackets.cs @@ -597,7 +597,7 @@ namespace Game.Networking.Packets public int PvpTierID; public int SeasonPvpTier; public int BestWeeklyPvpTier; - public int BestSeasonPvpTierEnum; + public byte BestSeasonPvpTierEnum; public bool Disqualified; public void Write(WorldPacket data) @@ -620,7 +620,7 @@ namespace Game.Networking.Packets data.WriteInt32(PvpTierID); data.WriteInt32(SeasonPvpTier); data.WriteInt32(BestWeeklyPvpTier); - data.WriteInt32(BestSeasonPvpTierEnum); + data.WriteUInt8(BestSeasonPvpTierEnum); data.WriteBit(Disqualified); data.FlushBits(); } diff --git a/Source/Game/Networking/Packets/CharacterPackets.cs b/Source/Game/Networking/Packets/CharacterPackets.cs index 418e5a0a4..a819e1b8c 100644 --- a/Source/Game/Networking/Packets/CharacterPackets.cs +++ b/Source/Game/Networking/Packets/CharacterPackets.cs @@ -199,7 +199,7 @@ namespace Game.Networking.Packets { data.WritePackedGuid(Guid); data.WriteUInt32(VirtualRealmAddress); - data.WriteUInt8(ListPosition); + data.WriteUInt16(ListPosition); data.WriteUInt8(RaceId); data.WriteUInt8(SexId); data.WriteUInt8((byte)ClassId); @@ -256,7 +256,7 @@ namespace Game.Networking.Packets public uint VirtualRealmAddress; public ulong GuildClubMemberID; // same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known) public string Name; - public byte ListPosition; // Order of the characters in list + public ushort ListPosition; // Order of the characters in list public byte RaceId; public Class ClassId; public byte SexId; diff --git a/Source/Game/Networking/Packets/InspectPackets.cs b/Source/Game/Networking/Packets/InspectPackets.cs index d8dcae6f1..c3581721a 100644 --- a/Source/Game/Networking/Packets/InspectPackets.cs +++ b/Source/Game/Networking/Packets/InspectPackets.cs @@ -288,7 +288,7 @@ namespace Game.Networking.Packets public int Tier; public int WeeklyBestTier; public int SeasonBestRating; - public int SeasonBestTierEnum; + public byte SeasonBestTierEnum; public int RoundsSeasonPlayed; public int RoundsSeasonWon; public int RoundsWeeklyPlayed; @@ -311,7 +311,7 @@ namespace Game.Networking.Packets data.WriteInt32(Tier); data.WriteInt32(WeeklyBestTier); data.WriteInt32(SeasonBestRating); - data.WriteInt32(SeasonBestTierEnum); + data.WriteUInt8(SeasonBestTierEnum); data.WriteInt32(RoundsSeasonPlayed); data.WriteInt32(RoundsSeasonWon); data.WriteInt32(RoundsWeeklyPlayed); diff --git a/Source/Game/Networking/Packets/LFGPackets.cs b/Source/Game/Networking/Packets/LFGPackets.cs index 2e8089258..ad27e9d67 100644 --- a/Source/Game/Networking/Packets/LFGPackets.cs +++ b/Source/Game/Networking/Packets/LFGPackets.cs @@ -265,7 +265,7 @@ namespace Game.Networking.Packets { Ticket.Write(_worldPacket); - _worldPacket.WriteUInt8(Result); + _worldPacket.WriteInt32(Result); _worldPacket.WriteUInt8(ResultDetail); _worldPacket.WriteInt32(BlackList.Count); _worldPacket.WriteInt32(BlackListNames.Count); @@ -282,7 +282,7 @@ namespace Game.Networking.Packets } public RideTicket Ticket = new(); - public byte Result; + public int Result; public byte ResultDetail; public List BlackList = new(); public List BlackListNames = new(); diff --git a/Source/Game/Networking/Packets/NPCPackets.cs b/Source/Game/Networking/Packets/NPCPackets.cs index 540c2f534..1fa23c185 100644 --- a/Source/Game/Networking/Packets/NPCPackets.cs +++ b/Source/Game/Networking/Packets/NPCPackets.cs @@ -399,6 +399,7 @@ namespace Game.Networking.Packets public uint QuestFlags; public uint QuestFlagsEx; public uint QuestFlagsEx2; + public uint QuestFlagsEx3; public void Write(WorldPacket data) { @@ -409,6 +410,7 @@ namespace Game.Networking.Packets data.WriteUInt32(QuestFlags); data.WriteUInt32(QuestFlagsEx); data.WriteUInt32(QuestFlagsEx2); + data.WriteUInt32(QuestFlagsEx3); data.WriteBit(Repeatable); data.WriteBit(ResetByScheduler); diff --git a/Source/Game/Networking/Packets/QuestPackets.cs b/Source/Game/Networking/Packets/QuestPackets.cs index 4b0b4fa28..848b4ff43 100644 --- a/Source/Game/Networking/Packets/QuestPackets.cs +++ b/Source/Game/Networking/Packets/QuestPackets.cs @@ -125,6 +125,7 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(Info.Flags); _worldPacket.WriteUInt32(Info.FlagsEx); _worldPacket.WriteUInt32(Info.FlagsEx2); + _worldPacket.WriteUInt32(Info.FlagsEx3); for (uint i = 0; i < SharedConst.QuestRewardItemCount; ++i) { @@ -452,7 +453,8 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(PortraitTurnIn); _worldPacket.WriteUInt32(QuestFlags[0]); // Flags _worldPacket.WriteUInt32(QuestFlags[1]); // FlagsEx - _worldPacket.WriteUInt32(QuestFlags[2]); // FlagsEx + _worldPacket.WriteUInt32(QuestFlags[2]); // FlagsEx2 + _worldPacket.WriteUInt32(QuestFlags[3]); // FlagsEx3 _worldPacket.WriteUInt32(SuggestedPartyMembers); _worldPacket.WriteInt32(LearnSpells.Count); _worldPacket.WriteInt32(DescEmotes.Count); @@ -513,7 +515,7 @@ namespace Game.Networking.Packets public ObjectGuid InformUnit; public uint QuestID; public int QuestPackageID; - public uint[] QuestFlags = new uint[3]; + public uint[] QuestFlags = new uint[4]; public uint SuggestedPartyMembers; public QuestRewards Rewards = new(); public List Objectives = new(); @@ -554,6 +556,7 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(QuestFlags[0]); _worldPacket.WriteUInt32(QuestFlags[1]); _worldPacket.WriteUInt32(QuestFlags[2]); + _worldPacket.WriteUInt32(QuestFlags[3]); _worldPacket.WriteInt32(StatusFlags); _worldPacket.WriteUInt32(QuestGiverCreatureID); _worldPacket.WriteUInt32(QuestID); @@ -606,7 +609,7 @@ namespace Game.Networking.Packets public List Currency = new(); public int StatusFlags; public int QuestInfoID; - public uint[] QuestFlags = new uint[3]; + public uint[] QuestFlags = new uint[4]; public string QuestTitle = ""; public string CompletionText = ""; public List ConditionalCompletionText = new(); @@ -912,9 +915,11 @@ namespace Game.Networking.Packets _worldPacket.WriteInt64(Duration); _worldPacket.WriteBits(Question.GetByteCount(), 8); _worldPacket.WriteBits(PendingChoiceText.GetByteCount(), 8); - _worldPacket.WriteBit(CloseChoiceFrame); + _worldPacket.WriteBit(InfiniteRange); _worldPacket.WriteBit(HideWarboardHeader); _worldPacket.WriteBit(KeepOpenAfterChoice); + _worldPacket.WriteBit(Unknown_1115_1); + _worldPacket.WriteBit(Unknown_1115_2); _worldPacket.FlushBits(); foreach (PlayerChoiceResponse response in Responses) @@ -934,9 +939,11 @@ namespace Game.Networking.Packets public string Question; public string PendingChoiceText; public List Responses = new(); - public bool CloseChoiceFrame; + public bool InfiniteRange; public bool HideWarboardHeader; public bool KeepOpenAfterChoice; + public bool Unknown_1115_1; + public bool Unknown_1115_2; } class ChoiceResponse : ClientPacket @@ -1139,6 +1146,7 @@ namespace Game.Networking.Packets public uint Flags; public uint FlagsEx; public uint FlagsEx2; + public uint FlagsEx3; public uint POIContinent; public float POIx; public float POIy; @@ -1348,6 +1356,7 @@ namespace Game.Networking.Packets data.WriteUInt32(QuestFlags[0]); // Flags data.WriteUInt32(QuestFlags[1]); // FlagsEx data.WriteUInt32(QuestFlags[2]); // FlagsEx2 + data.WriteUInt32(QuestFlags[3]); // FlagsEx3 data.WriteUInt32(QuestGiverCreatureID); data.WriteUInt32(QuestID); data.WriteUInt32(SuggestedPartyMembers); @@ -1373,7 +1382,7 @@ namespace Game.Networking.Packets public uint SuggestedPartyMembers; public QuestRewards Rewards = new(); public List Emotes = new(); - public uint[] QuestFlags = new uint[3]; // Flags and FlagsEx + public uint[] QuestFlags = new uint[4]; // Flags and FlagsEx public int QuestInfoID; } @@ -1493,7 +1502,6 @@ namespace Game.Networking.Packets public int Unused901_1; public int TypeArtFileID; public int? Rarity; - public uint? RarityColor; public int Unused901_2; public int SpellID; public int MaxStacks; @@ -1506,14 +1514,10 @@ namespace Game.Networking.Packets data.WriteInt32(SpellID); data.WriteInt32(MaxStacks); data.WriteBit(Rarity.HasValue); - data.WriteBit(RarityColor.HasValue); data.FlushBits(); if (Rarity.HasValue) data.WriteInt32(Rarity.Value); - - if (RarityColor.HasValue) - data.WriteUInt32(RarityColor.Value); } } diff --git a/Source/Game/Networking/Packets/SpellPackets.cs b/Source/Game/Networking/Packets/SpellPackets.cs index 78a70f563..3ed819719 100644 --- a/Source/Game/Networking/Packets/SpellPackets.cs +++ b/Source/Game/Networking/Packets/SpellPackets.cs @@ -1063,14 +1063,15 @@ namespace Game.Networking.Packets public override void Write() { _worldPacket.WritePackedGuid(UnitGUID); - _worldPacket.WriteInt32(DisplayID); - _worldPacket.WriteInt32(SpellVisualKitID); + _worldPacket.WriteInt32(ChrModelID); _worldPacket.WriteUInt8(RaceID); _worldPacket.WriteUInt8(Gender); _worldPacket.WriteUInt8(ClassID); _worldPacket.WriteInt32(Customizations.Count); _worldPacket.WritePackedGuid(GuildGUID); _worldPacket.WriteInt32(ItemDisplayID.Count); + _worldPacket.WriteInt32(SpellVisualKitID); + _worldPacket.WriteInt32(Unused_1115); foreach (ChrCustomizationChoice customization in Customizations) { @@ -1083,8 +1084,9 @@ namespace Game.Networking.Packets } public ObjectGuid UnitGUID; - public int DisplayID; + public int ChrModelID; public int SpellVisualKitID; + public int Unused_1115; public byte RaceID; public byte Gender; public byte ClassID; @@ -2036,6 +2038,7 @@ namespace Game.Networking.Packets data.WriteUInt32((uint)CastFlags); data.WriteUInt32((uint)CastFlagsEx); + data.WriteUInt32(CastFlagsEx2); data.WriteUInt32(CastTime); MissileTrajectory.Write(data); @@ -2087,6 +2090,7 @@ namespace Game.Networking.Packets public SpellCastVisual Visual; public SpellCastFlags CastFlags; public SpellCastFlagsEx CastFlagsEx; + public uint CastFlagsEx2; public uint CastTime; public List HitTargets = new(); public List MissTargets = new(); diff --git a/Source/Game/Networking/Packets/SystemPackets.cs b/Source/Game/Networking/Packets/SystemPackets.cs index b71c894a2..f911030ea 100644 --- a/Source/Game/Networking/Packets/SystemPackets.cs +++ b/Source/Game/Networking/Packets/SystemPackets.cs @@ -102,7 +102,6 @@ namespace Game.Networking.Packets _worldPacket.WriteBit(GroupFinderEnabled); _worldPacket.WriteBit(IsPremadeGroupEnabled); - _worldPacket.WriteBit(UseActivePlayerDataQuestCompleted); _worldPacket.WriteBit(false); // unused 10.2.7 _worldPacket.WriteBit(GuildEventsEditsEnabled); _worldPacket.WriteBit(GuildTradeSkillsEnabled); @@ -110,8 +109,8 @@ namespace Game.Networking.Packets _worldPacket.WriteBit(BNSendWhisperUseV2Services); _worldPacket.WriteBit(BNSendGameDataUseV2Services); _worldPacket.WriteBit(IsAccountCurrencyTransferEnabled); - _worldPacket.WriteBit(false); // unused 11.0.7 + _worldPacket.WriteBit(LobbyMatchmakerQueueFromMainlineEnabled); _worldPacket.WriteBit(CanSendLobbyMatchmakerPartyCustomizations); _worldPacket.WriteBit(AddonProfilerEnabled); @@ -215,7 +214,6 @@ namespace Game.Networking.Packets public bool SellAllJunkEnabled; public bool GroupFinderEnabled = true; // classic only public bool IsPremadeGroupEnabled = true; // classic only - public bool UseActivePlayerDataQuestCompleted = false; ///< Uses ActivePlayerData::QuestCompleted (legacy) to store completed quest bits instead of ActivePlayerData::BitVectors[9] public bool GuildEventsEditsEnabled = true; public bool GuildTradeSkillsEnabled = true; public bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService diff --git a/Source/Game/Quest/Quest.cs b/Source/Game/Quest/Quest.cs index 40dcb8aa1..f33ff152a 100644 --- a/Source/Game/Quest/Quest.cs +++ b/Source/Game/Quest/Quest.cs @@ -42,13 +42,14 @@ namespace Game Flags = (QuestFlags)fields.Read(20); FlagsEx = (QuestFlagsEx)fields.Read(21); FlagsEx2 = (QuestFlagsEx2)fields.Read(22); + FlagsEx3 = fields.Read(23); for (int i = 0; i < SharedConst.QuestItemDropCount; ++i) { - RewardItemId[i] = fields.Read(23 + i * 4); - RewardItemCount[i] = fields.Read(24 + i * 4); - ItemDrop[i] = fields.Read(25 + i * 4); - ItemDropQuantity[i] = fields.Read(26 + i * 4); + RewardItemId[i] = fields.Read(24 + i * 4); + RewardItemCount[i] = fields.Read(25 + i * 4); + ItemDrop[i] = fields.Read(26 + i * 4); + ItemDropQuantity[i] = fields.Read(27 + i * 4); if (RewardItemId[i] != 0) ++_rewItemsCount; @@ -56,67 +57,64 @@ namespace Game for (int i = 0; i < SharedConst.QuestRewardChoicesCount; ++i) { - RewardChoiceItemId[i] = fields.Read(39 + i * 3); - RewardChoiceItemCount[i] = fields.Read(40 + i * 3); - RewardChoiceItemDisplayId[i] = fields.Read(41 + i * 3); + RewardChoiceItemId[i] = fields.Read(40 + i * 3); + RewardChoiceItemCount[i] = fields.Read(41 + i * 3); + RewardChoiceItemDisplayId[i] = fields.Read(42 + i * 3); if (RewardChoiceItemId[i] != 0) ++_rewChoiceItemsCount; } - POIContinent = fields.Read(57); - POIx = fields.Read(58); - POIy = fields.Read(59); - POIPriority = fields.Read(60); + POIContinent = fields.Read(58); + POIx = fields.Read(59); + POIy = fields.Read(60); + POIPriority = fields.Read(61); - RewardTitleId = fields.Read(61); - RewardArenaPoints = fields.Read(62); - RewardSkillId = fields.Read(63); - RewardSkillPoints = fields.Read(64); + RewardTitleId = fields.Read(62); + RewardArenaPoints = fields.Read(63); + RewardSkillId = fields.Read(64); + RewardSkillPoints = fields.Read(65); - QuestGiverPortrait = fields.Read(65); - QuestGiverPortraitMount = fields.Read(66); - QuestGiverPortraitModelSceneId = fields.Read(67); - QuestTurnInPortrait = fields.Read(68); + QuestGiverPortrait = fields.Read(66); + QuestGiverPortraitMount = fields.Read(67); + 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); - - if (RewardCurrencyId[i] != 0) - ++_rewCurrencyCount; + RewardCurrencyId[i] = fields.Read(91 + i * 2); + RewardCurrencyCount[i] = fields.Read(92 + i * 2); } - SoundAccept = fields.Read(98); - SoundTurnIn = fields.Read(99); - AreaGroupID = fields.Read(100); - LimitTime = fields.Read(101); - AllowableRaces = new(fields.Read(102)); - ResetByScheduler = 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 = new(fields.Read(103)); + ResetByScheduler = 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) @@ -727,6 +725,7 @@ namespace Game response.Info.Flags = (uint)Flags; response.Info.FlagsEx = (uint)FlagsEx; response.Info.FlagsEx2 = (uint)FlagsEx2; + response.Info.FlagsEx3 = FlagsEx3; response.Info.RewardTitle = RewardTitleId; response.Info.RewardArenaPoints = RewardArenaPoints; response.Info.RewardSkillLineID = RewardSkillId; @@ -849,7 +848,6 @@ namespace Game public uint GetRewChoiceItemsCount() { return _rewChoiceItemsCount; } public uint GetRewItemsCount() { return _rewItemsCount; } - public uint GetRewCurrencyCount() { return _rewCurrencyCount; } public void SetEventIdForQuest(ushort eventId) { _eventIdForQuest = eventId; } public ushort GetEventIdForQuest() { return _eventIdForQuest; } @@ -879,6 +877,7 @@ namespace Game public QuestFlags Flags { get; set; } public QuestFlagsEx FlagsEx; public QuestFlagsEx2 FlagsEx2; + public uint FlagsEx3; public uint[] RewardItemId = new uint[SharedConst.QuestRewardItemCount]; public uint[] RewardItemCount = new uint[SharedConst.QuestRewardItemCount]; public uint[] ItemDrop = new uint[SharedConst.QuestItemDropCount]; @@ -983,7 +982,6 @@ namespace Game uint _rewChoiceItemsCount; uint _rewItemsCount; - uint _rewCurrencyCount; ushort _eventIdForQuest; #endregion } diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index 1652a5848..98adcf1de 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -121,7 +121,7 @@ namespace Game.Spells if (_castreq != null) { RequiresSpellFocus = _castreq.RequiresSpellFocus; - FacingCasterFlags = _castreq.FacingCasterFlags; + FacingCasterFlags = (uint)_castreq.FacingCasterFlags; RequiredAreasID = _castreq.RequiredAreasID; }