Core/PacketIO: Updated packet structures to 9.0.5

Port From (https://github.com/TrinityCore/TrinityCore/commit/f2202869f71f5a1a35191de303ee5166e4275884)
This commit is contained in:
hondacrx
2021-04-12 14:02:46 -04:00
parent d62ca82d30
commit 13631f6b4c
20 changed files with 458 additions and 400 deletions
+247 -242
View File
@@ -19,29 +19,29 @@ namespace Framework.Constants
{ {
public enum ClientOpcodes : uint public enum ClientOpcodes : uint
{ {
AbandonNpeResponse = 0x33ef, AbandonNpeResponse = 0x33f1,
AcceptGuildInvite = 0x35fc, AcceptGuildInvite = 0x35fc,
AcceptTrade = 0x315a, AcceptTrade = 0x315a,
AcceptWargameInvite = 0x35e0, AcceptWargameInvite = 0x35e0,
ActivateSoulbind = 0x33df, ActivateSoulbind = 0x33e1,
ActivateTaxi = 0x34b1, ActivateTaxi = 0x34b1,
AddonList = 0x35d8, AddonList = 0x35d8,
AddBattlenetFriend = 0x365a, AddBattlenetFriend = 0x365a,
AddFriend = 0x36d0, AddFriend = 0x36d0,
AddIgnore = 0x36d4, AddIgnore = 0x36d4,
AddToy = 0x32a6, AddToy = 0x32a7,
AdventureJournalOpenQuest = 0x3206, AdventureJournalOpenQuest = 0x3207,
AdventureJournalUpdateSuggestions = 0x33e2, AdventureJournalUpdateSuggestions = 0x33e4,
AdventureMapStartQuest = 0x335b, AdventureMapStartQuest = 0x335d,
AlterAppearance = 0x3503, AlterAppearance = 0x3503,
AreaSpiritHealerQuery = 0x34b6, AreaSpiritHealerQuery = 0x34b6,
AreaSpiritHealerQueue = 0x34b7, AreaSpiritHealerQueue = 0x34b7,
AreaTrigger = 0x31d9, AreaTrigger = 0x31da,
ArtifactAddPower = 0x31ab, ArtifactAddPower = 0x31ac,
ArtifactSetAppearance = 0x31ad, ArtifactSetAppearance = 0x31ae,
AssignEquipmentSetSpec = 0x320f, AssignEquipmentSetSpec = 0x3210,
AttackStop = 0x325e, AttackStop = 0x325f,
AttackSwing = 0x325d, AttackSwing = 0x325e,
AuctionableTokenSell = 0x36e8, AuctionableTokenSell = 0x36e8,
AuctionableTokenSellAtMarketPrice = 0x36e9, AuctionableTokenSellAtMarketPrice = 0x36e9,
AuctionBrowseQuery = 0x34d6, AuctionBrowseQuery = 0x34d6,
@@ -69,15 +69,15 @@ namespace Framework.Constants
AutoEquipItem = 0x399a, AutoEquipItem = 0x399a,
AutoEquipItemSlot = 0x399f, AutoEquipItemSlot = 0x399f,
AutoStoreBagItem = 0x399b, AutoStoreBagItem = 0x399b,
AzeriteEmpoweredItemSelectPower = 0x3384, AzeriteEmpoweredItemSelectPower = 0x3386,
AzeriteEmpoweredItemViewed = 0x3366, AzeriteEmpoweredItemViewed = 0x3368,
AzeriteEssenceActivateEssence = 0x3386, AzeriteEssenceActivateEssence = 0x3388,
AzeriteEssenceUnlockMilestone = 0x3385, AzeriteEssenceUnlockMilestone = 0x3387,
BankerActivate = 0x34b9, BankerActivate = 0x34b9,
BattlefieldLeave = 0x3173, BattlefieldLeave = 0x3173,
BattlefieldList = 0x317e, BattlefieldList = 0x317f,
BattlefieldPort = 0x3537, BattlefieldPort = 0x3537,
BattlemasterHello = 0x32c0, BattlemasterHello = 0x32c1,
BattlemasterJoin = 0x3530, BattlemasterJoin = 0x3530,
BattlemasterJoinArena = 0x3531, BattlemasterJoinArena = 0x3531,
BattlemasterJoinBrawl = 0x3535, BattlemasterJoinBrawl = 0x3535,
@@ -103,21 +103,21 @@ namespace Framework.Constants
BattlePetSetBattleSlot = 0x362c, BattlePetSetBattleSlot = 0x362c,
BattlePetSetFlags = 0x3630, BattlePetSetFlags = 0x3630,
BattlePetSummon = 0x3628, BattlePetSummon = 0x3628,
BattlePetUpdateDisplayNotify = 0x31e3, BattlePetUpdateDisplayNotify = 0x31e4,
BattlePetUpdateNotify = 0x31e2, BattlePetUpdateNotify = 0x31e3,
BeginTrade = 0x3157, BeginTrade = 0x3157,
BinderActivate = 0x34b8, BinderActivate = 0x34b8,
BlackMarketBidOnItem = 0x353f, BlackMarketBidOnItem = 0x353f,
BlackMarketOpen = 0x353d, BlackMarketOpen = 0x353d,
BlackMarketRequestItems = 0x353e, BlackMarketRequestItems = 0x353e,
BonusRoll = 0x3387, BonusRoll = 0x3389,
BugReport = 0x3686, BugReport = 0x3686,
BusyTrade = 0x3158, BusyTrade = 0x3158,
BuyBackItem = 0x34aa, BuyBackItem = 0x34aa,
BuyBankSlot = 0x34ba, BuyBankSlot = 0x34ba,
BuyItem = 0x34a9, BuyItem = 0x34a9,
BuyReagentBank = 0x34bb, BuyReagentBank = 0x34bb,
CageBattlePet = 0x31f5, CageBattlePet = 0x31f6,
CalendarAddEvent = 0x367d, CalendarAddEvent = 0x367d,
CalendarCommunityInvite = 0x3671, CalendarCommunityInvite = 0x3671,
CalendarComplain = 0x3679, CalendarComplain = 0x3679,
@@ -133,24 +133,24 @@ namespace Framework.Constants
CalendarRsvp = 0x3674, CalendarRsvp = 0x3674,
CalendarStatus = 0x3675, CalendarStatus = 0x3675,
CalendarUpdateEvent = 0x367e, CalendarUpdateEvent = 0x367e,
CancelAura = 0x31af, CancelAura = 0x31b0,
CancelAutoRepeatSpell = 0x34f5, CancelAutoRepeatSpell = 0x34f5,
CancelCast = 0x32ac, CancelCast = 0x32ad,
CancelChannelling = 0x3276, CancelChannelling = 0x3277,
CancelGrowthAura = 0x327b, CancelGrowthAura = 0x327c,
CancelMasterLootRoll = 0x3217, CancelMasterLootRoll = 0x3218,
CancelModSpeedNoControlAuras = 0x31ae, CancelModSpeedNoControlAuras = 0x31af,
CancelMountAura = 0x328e, CancelMountAura = 0x328f,
CancelQueuedSpell = 0x317f, CancelQueuedSpell = 0x3180,
CancelTempEnchantment = 0x3500, CancelTempEnchantment = 0x3500,
CancelTrade = 0x315c, CancelTrade = 0x315c,
CanDuel = 0x3662, CanDuel = 0x3662,
CanRedeemTokenForBalance = 0x3709, CanRedeemTokenForBalance = 0x3709,
CastSpell = 0x32a9, CastSpell = 0x32aa,
ChallengeModeRequestLeaders = 0x3090, ChallengeModeRequestLeaders = 0x3090,
ChangeBagSlotFlag = 0x333f, ChangeBagSlotFlag = 0x3341,
ChangeBankBagSlotFlag = 0x3340, ChangeBankBagSlotFlag = 0x3342,
ChangeMonumentAppearance = 0x3321, ChangeMonumentAppearance = 0x3322,
ChangeRealmTicket = 0x36fc, ChangeRealmTicket = 0x36fc,
ChangeSubGroup = 0x364c, ChangeSubGroup = 0x364c,
CharacterCheckUpgrade = 0x36c6, CharacterCheckUpgrade = 0x36c6,
@@ -197,17 +197,17 @@ namespace Framework.Constants
ChatReportIgnored = 0x37cb, ChatReportIgnored = 0x37cb,
ChatUnregisterAllAddonPrefixes = 0x37ce, ChatUnregisterAllAddonPrefixes = 0x37ce,
CheckCharacterNameAvailability = 0x3645, CheckCharacterNameAvailability = 0x3645,
CheckIsAdventureMapPoiValid = 0x324f, CheckIsAdventureMapPoiValid = 0x3250,
ChoiceResponse = 0x32b0, ChoiceResponse = 0x32b1,
ChromieTimeSelectExpansion = 0x33de, ChromieTimeSelectExpansion = 0x33e0,
ClaimWeeklyReward = 0x33b9, ClaimWeeklyReward = 0x33bb,
ClearNewAppearance = 0x312f, ClearNewAppearance = 0x312f,
ClearRaidMarker = 0x31a7, ClearRaidMarker = 0x31a8,
ClearTradeItem = 0x315e, ClearTradeItem = 0x315e,
ClientPortGraveyard = 0x3539, ClientPortGraveyard = 0x3539,
CloseInteraction = 0x3499, CloseInteraction = 0x3499,
CloseQuestChoice = 0x32b1, CloseQuestChoice = 0x32b2,
CloseRuneforgeInteraction = 0x33e6, CloseRuneforgeInteraction = 0x33e8,
ClubFinderApplicationResponse = 0x371f, ClubFinderApplicationResponse = 0x371f,
ClubFinderGetApplicantsList = 0x371d, ClubFinderGetApplicantsList = 0x371d,
ClubFinderPost = 0x371a, ClubFinderPost = 0x371a,
@@ -232,8 +232,8 @@ namespace Framework.Constants
Complaint = 0x366c, Complaint = 0x366c,
CompleteCinematic = 0x3557, CompleteCinematic = 0x3557,
CompleteMovie = 0x34eb, CompleteMovie = 0x34eb,
ConfirmArtifactRespec = 0x31ac, ConfirmArtifactRespec = 0x31ad,
ConfirmRespecWipe = 0x3211, ConfirmRespecWipe = 0x3212,
ConnectToFailed = 0x35d4, ConnectToFailed = 0x35d4,
ConsumableTokenBuy = 0x36eb, ConsumableTokenBuy = 0x36eb,
ConsumableTokenBuyAtMarketPrice = 0x36ec, ConsumableTokenBuyAtMarketPrice = 0x36ec,
@@ -244,16 +244,17 @@ namespace Framework.Constants
ContributionLastUpdateRequest = 0x356a, ContributionLastUpdateRequest = 0x356a,
ConversationLineStarted = 0x3558, ConversationLineStarted = 0x3558,
ConvertRaid = 0x364e, ConvertRaid = 0x364e,
CovenantRenownRequestCatchupState = 0x357d,
CreateCharacter = 0x3644, CreateCharacter = 0x3644,
CreateShipment = 0x330d, CreateShipment = 0x330e,
DbQueryBulk = 0x35e4, DbQueryBulk = 0x35e4,
DeclineGuildInvites = 0x352d, DeclineGuildInvites = 0x352d,
DeclinePetition = 0x3546, DeclinePetition = 0x3546,
DeleteEquipmentSet = 0x3519, DeleteEquipmentSet = 0x3519,
DelFriend = 0x36d1, DelFriend = 0x36d1,
DelIgnore = 0x36d5, DelIgnore = 0x36d5,
DepositReagentBank = 0x3348, DepositReagentBank = 0x334a,
DestroyItem = 0x32a0, DestroyItem = 0x32a1,
DfBootPlayerVote = 0x3615, DfBootPlayerVote = 0x3615,
DfConfirmExpandSearch = 0x3607, DfConfirmExpandSearch = 0x3607,
DfGetJoinStatus = 0x3613, DfGetJoinStatus = 0x3613,
@@ -267,10 +268,10 @@ namespace Framework.Constants
DiscardedTimeSyncAcks = 0x3a3e, DiscardedTimeSyncAcks = 0x3a3e,
DismissCritter = 0x3507, DismissCritter = 0x3507,
DoCountdown = 0x3719, DoCountdown = 0x3719,
DoMasterLootRoll = 0x3216, DoMasterLootRoll = 0x3217,
DoReadyCheck = 0x3634, DoReadyCheck = 0x3634,
DuelResponse = 0x34f0, DuelResponse = 0x34f0,
EjectPassenger = 0x3244, EjectPassenger = 0x3245,
Emote = 0x3553, Emote = 0x3553,
EnableNagle = 0x376b, EnableNagle = 0x376b,
EnableTaxiNode = 0x34af, EnableTaxiNode = 0x34af,
@@ -279,47 +280,47 @@ namespace Framework.Constants
EnumCharacters = 0x35e8, EnumCharacters = 0x35e8,
EnumCharactersDeletedByClient = 0x36de, EnumCharactersDeletedByClient = 0x36de,
FarSight = 0x34f6, FarSight = 0x34f6,
GameEventDebugDisable = 0x31b3, GameEventDebugDisable = 0x31b4,
GameEventDebugEnable = 0x31b2, GameEventDebugEnable = 0x31b3,
GameObjReportUse = 0x34fd, GameObjReportUse = 0x34fd,
GameObjUse = 0x34fc, GameObjUse = 0x34fc,
GarrisonAddFollowerHealth = 0x3308, GarrisonAddFollowerHealth = 0x3309,
GarrisonAssignFollowerToBuilding = 0x32ee, GarrisonAssignFollowerToBuilding = 0x32ef,
GarrisonCancelConstruction = 0x32db, GarrisonCancelConstruction = 0x32dc,
GarrisonCheckUpgradeable = 0x333b, GarrisonCheckUpgradeable = 0x333d,
GarrisonCompleteMission = 0x332e, GarrisonCompleteMission = 0x332f,
GarrisonFullyHealAllFollowers = 0x3309, GarrisonFullyHealAllFollowers = 0x330a,
GarrisonGenerateRecruits = 0x32f1, GarrisonGenerateRecruits = 0x32f2,
GarrisonGetClassSpecCategoryInfo = 0x3300, GarrisonGetClassSpecCategoryInfo = 0x3301,
GarrisonGetMapData = 0x3307, GarrisonGetMapData = 0x3308,
GarrisonGetMissionReward = 0x335f, GarrisonGetMissionReward = 0x3361,
GarrisonLearnTalent = 0x32fc, GarrisonLearnTalent = 0x32fd,
GarrisonMissionBonusRoll = 0x3330, GarrisonMissionBonusRoll = 0x3331,
GarrisonPurchaseBuilding = 0x32d7, GarrisonPurchaseBuilding = 0x32d8,
GarrisonRecruitFollower = 0x32f3, GarrisonRecruitFollower = 0x32f4,
GarrisonRemoveFollower = 0x3325, GarrisonRemoveFollower = 0x3326,
GarrisonRemoveFollowerFromBuilding = 0x32ef, GarrisonRemoveFollowerFromBuilding = 0x32f0,
GarrisonRenameFollower = 0x32f0, GarrisonRenameFollower = 0x32f1,
GarrisonRequestBlueprintAndSpecializationData = 0x32d6, GarrisonRequestBlueprintAndSpecializationData = 0x32d7,
GarrisonRequestShipmentInfo = 0x330b, GarrisonRequestShipmentInfo = 0x330c,
GarrisonResearchTalent = 0x32f4, GarrisonResearchTalent = 0x32f5,
GarrisonSetBuildingActive = 0x32d8, GarrisonSetBuildingActive = 0x32d9,
GarrisonSetFollowerFavorite = 0x32ec, GarrisonSetFollowerFavorite = 0x32ed,
GarrisonSetFollowerInactive = 0x32e4, GarrisonSetFollowerInactive = 0x32e5,
GarrisonSetRecruitmentPreferences = 0x32f2, GarrisonSetRecruitmentPreferences = 0x32f3,
GarrisonSocketTalent = 0x33f2, GarrisonSocketTalent = 0x33f4,
GarrisonStartMission = 0x332d, GarrisonStartMission = 0x332e,
GarrisonSwapBuildings = 0x32dc, GarrisonSwapBuildings = 0x32dd,
GenerateRandomCharacterName = 0x35e7, GenerateRandomCharacterName = 0x35e7,
GetAccountCharacterList = 0x36b6, GetAccountCharacterList = 0x36b6,
GetGarrisonInfo = 0x32d1, GetGarrisonInfo = 0x32d2,
GetItemPurchaseData = 0x3541, GetItemPurchaseData = 0x3541,
GetLandingPageShipments = 0x330c, GetLandingPageShipments = 0x330d,
GetMirrorImageData = 0x32a4, GetMirrorImageData = 0x32a5,
GetPvpOptionsEnabled = 0x35ee, GetPvpOptionsEnabled = 0x35ee,
GetRafAccountInfo = 0x3723, GetRafAccountInfo = 0x3723,
GetRemainingGameTime = 0x36ed, GetRemainingGameTime = 0x36ed,
GetTrophyList = 0x331e, GetTrophyList = 0x331f,
GetUndeleteCharacterCooldownStatus = 0x36e0, GetUndeleteCharacterCooldownStatus = 0x36e0,
GetVasAccountCharacterList = 0x36f2, GetVasAccountCharacterList = 0x36f2,
GetVasTransferTargetRealmList = 0x36f3, GetVasTransferTargetRealmList = 0x36f3,
@@ -372,34 +373,34 @@ namespace Framework.Constants
GuildUpdateInfoText = 0x3076, GuildUpdateInfoText = 0x3076,
GuildUpdateMotdText = 0x3075, GuildUpdateMotdText = 0x3075,
HearthAndResurrect = 0x3515, HearthAndResurrect = 0x3515,
HideQuestChoice = 0x32b2, HideQuestChoice = 0x32b3,
HotfixRequest = 0x35e5, HotfixRequest = 0x35e5,
IgnoreTrade = 0x3159, IgnoreTrade = 0x3159,
InitiateRolePoll = 0x35da, InitiateRolePoll = 0x35da,
InitiateTrade = 0x3156, InitiateTrade = 0x3156,
Inspect = 0x353b, Inspect = 0x353b,
InstanceLockResponse = 0x351a, InstanceLockResponse = 0x351a,
IslandQueue = 0x33b5, IslandQueue = 0x33b7,
ItemPurchaseRefund = 0x3542, ItemPurchaseRefund = 0x3542,
ItemTextQuery = 0x333c, ItemTextQuery = 0x333e,
JoinPetBattleQueue = 0x31e0, JoinPetBattleQueue = 0x31e1,
JoinRatedBattleground = 0x3178, JoinRatedBattleground = 0x3179,
KeepAlive = 0x367f, KeepAlive = 0x367f,
KeyboundOverride = 0x3229, KeyboundOverride = 0x322a,
LearnPvpTalents = 0x3568, LearnPvpTalents = 0x3568,
LearnTalents = 0x3566, LearnTalents = 0x3566,
LeaveGroup = 0x3649, LeaveGroup = 0x3649,
LeavePetBattleQueue = 0x31e1, LeavePetBattleQueue = 0x31e2,
LfgListApplyToGroup = 0x360c, LfgListApplyToGroup = 0x360c,
LfgListCancelApplication = 0x360d, LfgListCancelApplication = 0x360d,
LfgListDeclineApplicant = 0x360e, LfgListDeclineApplicant = 0x360e,
LfgListGetStatus = 0x360a, LfgListGetStatus = 0x360a,
LfgListInviteApplicant = 0x360f, LfgListInviteApplicant = 0x360f,
LfgListInviteResponse = 0x3610, LfgListInviteResponse = 0x3610,
LfgListJoin = 0x3382, LfgListJoin = 0x3384,
LfgListLeave = 0x3609, LfgListLeave = 0x3609,
LfgListSearch = 0x360b, LfgListSearch = 0x360b,
LfgListUpdateRequest = 0x3383, LfgListUpdateRequest = 0x3385,
LfGuildAddRecruit = 0x361b, LfGuildAddRecruit = 0x361b,
LfGuildBrowse = 0x361d, LfGuildBrowse = 0x361d,
LfGuildDeclineRecruit = 0x3079, LfGuildDeclineRecruit = 0x3079,
@@ -414,33 +415,33 @@ namespace Framework.Constants
LiveRegionGetAccountCharacterList = 0x36b7, LiveRegionGetAccountCharacterList = 0x36b7,
LiveRegionKeyBindingsCopy = 0x36ba, LiveRegionKeyBindingsCopy = 0x36ba,
LoadingScreenNotify = 0x35f8, LoadingScreenNotify = 0x35f8,
LoadSelectedTrophy = 0x331f, LoadSelectedTrophy = 0x3320,
LogoutCancel = 0x34e6, LogoutCancel = 0x34e6,
LogoutInstant = 0x34e7, LogoutInstant = 0x34e7,
LogoutRequest = 0x34e4, LogoutRequest = 0x34e4,
LogDisconnect = 0x3769, LogDisconnect = 0x3769,
LogStreamingError = 0x376d, LogStreamingError = 0x376d,
LootItem = 0x3214, LootItem = 0x3215,
LootMoney = 0x3213, LootMoney = 0x3214,
LootRelease = 0x3218, LootRelease = 0x3219,
LootRoll = 0x3219, LootRoll = 0x321a,
LootUnit = 0x3212, LootUnit = 0x3213,
LowLevelRaid1 = 0x36a2, LowLevelRaid1 = 0x36a2,
LowLevelRaid2 = 0x3521, LowLevelRaid2 = 0x3521,
MailCreateTextItem = 0x354d, MailCreateTextItem = 0x354d,
MailDelete = 0x322b, MailDelete = 0x322c,
MailGetList = 0x3548, MailGetList = 0x3548,
MailMarkAsRead = 0x354c, MailMarkAsRead = 0x354c,
MailReturnToSender = 0x3655, MailReturnToSender = 0x3655,
MailTakeItem = 0x354a, MailTakeItem = 0x354a,
MailTakeMoney = 0x3549, MailTakeMoney = 0x3549,
MakeContitionalAppearancePermanent = 0x322d, MakeContitionalAppearancePermanent = 0x322e,
MasterLootItem = 0x3215, MasterLootItem = 0x3216,
MinimapPing = 0x364b, MinimapPing = 0x364b,
MissileTrajectoryCollision = 0x318a, MissileTrajectoryCollision = 0x318b,
MountClearFanfare = 0x312d, MountClearFanfare = 0x312d,
MountSetFavorite = 0x3632, MountSetFavorite = 0x3632,
MountSpecialAnim = 0x328f, MountSpecialAnim = 0x3290,
MoveApplyMovementForceAck = 0x3a14, MoveApplyMovementForceAck = 0x3a14,
MoveChangeTransport = 0x3a2e, MoveChangeTransport = 0x3a2e,
MoveChangeVehicleSeats = 0x3a33, MoveChangeVehicleSeats = 0x3a33,
@@ -510,40 +511,40 @@ namespace Framework.Constants
MoveWaterWalkAck = 0x3a1c, MoveWaterWalkAck = 0x3a1c,
MythicPlusRequestMapStats = 0x308f, MythicPlusRequestMapStats = 0x308f,
MythicPlusWeeklyRewardRequest = 0x3683, MythicPlusWeeklyRewardRequest = 0x3683,
NeutralPlayerSelectFaction = 0x31d6, NeutralPlayerSelectFaction = 0x31d7,
NextCinematicCamera = 0x3556, NextCinematicCamera = 0x3556,
ObjectUpdateFailed = 0x3180, ObjectUpdateFailed = 0x3181,
ObjectUpdateRescued = 0x3181, ObjectUpdateRescued = 0x3182,
OfferPetition = 0x33dd, OfferPetition = 0x33df,
OpeningCinematic = 0x3555, OpeningCinematic = 0x3555,
OpenItem = 0x333d, OpenItem = 0x333f,
OpenMissionNpc = 0x3302, OpenMissionNpc = 0x3303,
OpenShipmentNpc = 0x330a, OpenShipmentNpc = 0x330b,
OpenTradeskillNpc = 0x3315, OpenTradeskillNpc = 0x3316,
OptOutOfLoot = 0x3504, OptOutOfLoot = 0x3504,
OverrideScreenFlash = 0x352e, OverrideScreenFlash = 0x352e,
PartyInvite = 0x3602, PartyInvite = 0x3602,
PartyInviteResponse = 0x3603, PartyInviteResponse = 0x3603,
PartyUninvite = 0x3647, PartyUninvite = 0x3647,
PerformItemInteraction = 0x3235, PerformItemInteraction = 0x3236,
PetitionBuy = 0x34cf, PetitionBuy = 0x34cf,
PetitionRenameGuild = 0x36c9, PetitionRenameGuild = 0x36c9,
PetitionShowList = 0x34ce, PetitionShowList = 0x34ce,
PetitionShowSignatures = 0x34d0, PetitionShowSignatures = 0x34d0,
PetAbandon = 0x3493, PetAbandon = 0x3493,
PetAction = 0x3491, PetAction = 0x3491,
PetBattleFinalNotify = 0x31e5, PetBattleFinalNotify = 0x31e6,
PetBattleInput = 0x3641, PetBattleInput = 0x3641,
PetBattleQueueProposeMatchResult = 0x322a, PetBattleQueueProposeMatchResult = 0x322b,
PetBattleQuitNotify = 0x31e4, PetBattleQuitNotify = 0x31e5,
PetBattleReplaceFrontPet = 0x3642, PetBattleReplaceFrontPet = 0x3642,
PetBattleRequestPvp = 0x31de, PetBattleRequestPvp = 0x31df,
PetBattleRequestUpdate = 0x31df, PetBattleRequestUpdate = 0x31e0,
PetBattleRequestWild = 0x31dc, PetBattleRequestWild = 0x31dd,
PetBattleScriptErrorNotify = 0x31e6, PetBattleScriptErrorNotify = 0x31e7,
PetBattleWildLocationFail = 0x31dd, PetBattleWildLocationFail = 0x31de,
PetCancelAura = 0x3494, PetCancelAura = 0x3494,
PetCastSpell = 0x32a8, PetCastSpell = 0x32a9,
PetRename = 0x3685, PetRename = 0x3685,
PetSetAction = 0x3490, PetSetAction = 0x3490,
PetSpellAutocast = 0x3495, PetSpellAutocast = 0x3495,
@@ -551,31 +552,31 @@ namespace Framework.Constants
Ping = 0x3768, Ping = 0x3768,
PlayerLogin = 0x35ea, PlayerLogin = 0x35ea,
PushQuestToParty = 0x34a5, PushQuestToParty = 0x34a5,
PvpLogData = 0x317b, PvpLogData = 0x317c,
QueryBattlePetName = 0x3282, QueryBattlePetName = 0x3283,
QueryCorpseLocationFromClient = 0x3660, QueryCorpseLocationFromClient = 0x3660,
QueryCorpseTransport = 0x3661, QueryCorpseTransport = 0x3661,
QueryCountdownTimer = 0x31aa, QueryCountdownTimer = 0x31ab,
QueryCreature = 0x327c, QueryCreature = 0x327d,
QueryGameObject = 0x327d, QueryGameObject = 0x327e,
QueryGarrisonPetName = 0x3283, QueryGarrisonPetName = 0x3284,
QueryGuildInfo = 0x368e, QueryGuildInfo = 0x368e,
QueryInspectAchievements = 0x350e, QueryInspectAchievements = 0x350e,
QueryNextMailTime = 0x354b, QueryNextMailTime = 0x354b,
QueryNpcText = 0x327e, QueryNpcText = 0x327f,
QueryPageText = 0x3280, QueryPageText = 0x3281,
QueryPetition = 0x3284, QueryPetition = 0x3285,
QueryPetName = 0x3281, QueryPetName = 0x3282,
QueryPlayerName = 0x368a, QueryPlayerName = 0x368a,
QueryPlayerNamesForCommunity = 0x368c, QueryPlayerNamesForCommunity = 0x368c,
QueryPlayerNameByCommunityId = 0x368b, QueryPlayerNameByCommunityId = 0x368b,
QueryQuestCompletionNpcs = 0x3175, QueryQuestCompletionNpcs = 0x3175,
QueryQuestInfo = 0x327f, QueryQuestInfo = 0x3280,
QueryRealmName = 0x368d, QueryRealmName = 0x368d,
QueryScenarioPoi = 0x3656, QueryScenarioPoi = 0x3656,
QueryTime = 0x34e3, QueryTime = 0x34e3,
QueryTreasurePicker = 0x3362, QueryTreasurePicker = 0x3364,
QueryVoidStorage = 0x31a3, QueryVoidStorage = 0x31a4,
QuestConfirmAccept = 0x34a4, QuestConfirmAccept = 0x34a4,
QuestGiverAcceptQuest = 0x349e, QuestGiverAcceptQuest = 0x349e,
QuestGiverChooseReward = 0x34a0, QuestGiverChooseReward = 0x34a0,
@@ -589,8 +590,8 @@ namespace Framework.Constants
QuestLogRemoveQuest = 0x3540, QuestLogRemoveQuest = 0x3540,
QuestPoiQuery = 0x36b0, QuestPoiQuery = 0x36b0,
QuestPushResult = 0x34a6, QuestPushResult = 0x34a6,
QuestSessionBeginResponse = 0x33ce, QuestSessionBeginResponse = 0x33d0,
QuestSessionRequestStart = 0x33cd, QuestSessionRequestStart = 0x33cf,
QuestSessionRequestStop = 0x372e, QuestSessionRequestStop = 0x372e,
QueuedMessagesEnd = 0x376c, QueuedMessagesEnd = 0x376c,
QuickJoinAutoAcceptRequests = 0x3708, QuickJoinAutoAcceptRequests = 0x3708,
@@ -605,66 +606,66 @@ namespace Framework.Constants
RaidOrBattlegroundEngineSurvey = 0x36e5, RaidOrBattlegroundEngineSurvey = 0x36e5,
RandomRoll = 0x3654, RandomRoll = 0x3654,
ReadyCheckResponse = 0x3635, ReadyCheckResponse = 0x3635,
ReadItem = 0x333e, ReadItem = 0x3340,
ReclaimCorpse = 0x34e9, ReclaimCorpse = 0x34e9,
RemoveNewItem = 0x3365, RemoveNewItem = 0x3367,
RemoveRafRecruit = 0x3727, RemoveRafRecruit = 0x3727,
ReorderCharacters = 0x35e9, ReorderCharacters = 0x35e9,
RepairItem = 0x34fa, RepairItem = 0x34fa,
ReplaceTrophy = 0x3320, ReplaceTrophy = 0x3321,
RepopRequest = 0x3538, RepopRequest = 0x3538,
ReportClientVariables = 0x3702, ReportClientVariables = 0x3702,
ReportEnabledAddons = 0x3701, ReportEnabledAddons = 0x3701,
ReportKeybindingExecutionCounts = 0x3703, ReportKeybindingExecutionCounts = 0x3703,
ReportPvpPlayerAfk = 0x3502, ReportPvpPlayerAfk = 0x3502,
ReportServerLag = 0x33c4, ReportServerLag = 0x33c6,
ReportStuckInCombat = 0x33c5, ReportStuckInCombat = 0x33c7,
RequestAccountData = 0x3698, RequestAccountData = 0x3698,
RequestAreaPoiUpdate = 0x3364, RequestAreaPoiUpdate = 0x3366,
RequestBattlefieldStatus = 0x35dc, RequestBattlefieldStatus = 0x35dc,
RequestCategoryCooldowns = 0x317d, RequestCategoryCooldowns = 0x317e,
RequestCemeteryList = 0x3176, RequestCemeteryList = 0x3177,
RequestCharacterGuildFollowInfo = 0x368f, RequestCharacterGuildFollowInfo = 0x368f,
RequestConquestFormulaConstants = 0x32c3, RequestConquestFormulaConstants = 0x32c4,
RequestCovenantCallings = 0x33b7, RequestCovenantCallings = 0x33b9,
RequestCrowdControlSpell = 0x353c, RequestCrowdControlSpell = 0x353c,
RequestForcedReactions = 0x320d, RequestForcedReactions = 0x320e,
RequestGarrisonTalentWorldQuestUnlocks = 0x33f1, RequestGarrisonTalentWorldQuestUnlocks = 0x33f3,
RequestGuildPartyState = 0x31a9, RequestGuildPartyState = 0x31aa,
RequestGuildRewardsList = 0x31a8, RequestGuildRewardsList = 0x31a9,
RequestLatestSplashScreen = 0x33c6, RequestLatestSplashScreen = 0x33c8,
RequestLfgListBlacklist = 0x32b3, RequestLfgListBlacklist = 0x32b4,
RequestMythicPlusAffixes = 0x320a, RequestMythicPlusAffixes = 0x320b,
RequestMythicPlusSeasonData = 0x320b, RequestMythicPlusSeasonData = 0x320c,
RequestPartyJoinUpdates = 0x35f7, RequestPartyJoinUpdates = 0x35f7,
RequestPartyMemberStats = 0x3653, RequestPartyMemberStats = 0x3653,
RequestPetInfo = 0x3496, RequestPetInfo = 0x3496,
RequestPlayedTime = 0x3287, RequestPlayedTime = 0x3288,
RequestPvpRewards = 0x3196, RequestPvpRewards = 0x3197,
RequestRaidInfo = 0x36ca, RequestRaidInfo = 0x36ca,
RequestRatedPvpInfo = 0x35e3, RequestRatedPvpInfo = 0x35e3,
RequestRealmGuildMasterInfo = 0x309b, RequestRealmGuildMasterInfo = 0x309b,
RequestResearchHistory = 0x3167, RequestResearchHistory = 0x3167,
RequestScheduledPvpInfo = 0x3197, RequestScheduledPvpInfo = 0x3198,
RequestStabledPets = 0x3497, RequestStabledPets = 0x3497,
RequestVehicleExit = 0x323f, RequestVehicleExit = 0x3240,
RequestVehicleNextSeat = 0x3241, RequestVehicleNextSeat = 0x3242,
RequestVehiclePrevSeat = 0x3240, RequestVehiclePrevSeat = 0x3241,
RequestVehicleSwitchSeat = 0x3242, RequestVehicleSwitchSeat = 0x3243,
RequestWeeklyRewards = 0x33ba, RequestWeeklyRewards = 0x33bc,
RequestWorldQuestUpdate = 0x3363, RequestWorldQuestUpdate = 0x3365,
ResetChallengeMode = 0x3208, ResetChallengeMode = 0x3209,
ResetChallengeModeCheat = 0x3209, ResetChallengeModeCheat = 0x320a,
ResetInstances = 0x3668, ResetInstances = 0x3668,
ResurrectResponse = 0x3684, ResurrectResponse = 0x3684,
RevertMonumentAppearance = 0x3322, RevertMonumentAppearance = 0x3323,
RideVehicleInteract = 0x3243, RideVehicleInteract = 0x3244,
SaveCufProfiles = 0x318b, SaveCufProfiles = 0x318c,
SaveEquipmentSet = 0x3518, SaveEquipmentSet = 0x3518,
SaveGuildEmblem = 0x32b7, SaveGuildEmblem = 0x32b8,
ScenePlaybackCanceled = 0x3226, ScenePlaybackCanceled = 0x3227,
ScenePlaybackComplete = 0x3225, ScenePlaybackComplete = 0x3226,
SceneTriggerEvent = 0x3227, SceneTriggerEvent = 0x3228,
SelfRes = 0x3543, SelfRes = 0x3543,
SellItem = 0x34a8, SellItem = 0x34a8,
SendCharacterClubInvitation = 0x36fb, SendCharacterClubInvitation = 0x36fb,
@@ -672,62 +673,62 @@ namespace Framework.Constants
SendMail = 0x35fa, SendMail = 0x35fa,
SendTextEmote = 0x348e, SendTextEmote = 0x348e,
ServerTimeOffsetRequest = 0x369d, ServerTimeOffsetRequest = 0x369d,
SetAchievementsHidden = 0x322c, SetAchievementsHidden = 0x322d,
SetActionBarToggles = 0x3544, SetActionBarToggles = 0x3544,
SetActionButton = 0x3636, SetActionButton = 0x3636,
SetActiveMover = 0x3a39, SetActiveMover = 0x3a39,
SetAdvancedCombatLogging = 0x32c4, SetAdvancedCombatLogging = 0x32c5,
SetAssistantLeader = 0x364f, SetAssistantLeader = 0x364f,
SetBackpackAutosortDisabled = 0x3341, SetBackpackAutosortDisabled = 0x3343,
SetBankAutosortDisabled = 0x3342, SetBankAutosortDisabled = 0x3344,
SetContactNotes = 0x36d2, SetContactNotes = 0x36d2,
SetCurrencyFlags = 0x3169, SetCurrencyFlags = 0x3169,
SetDifficultyId = 0x3228, SetDifficultyId = 0x3229,
SetDungeonDifficulty = 0x3682, SetDungeonDifficulty = 0x3682,
SetEveryoneIsAssistant = 0x3617, SetEveryoneIsAssistant = 0x3617,
SetFactionAtWar = 0x34ec, SetFactionAtWar = 0x34ec,
SetFactionInactive = 0x34ee, SetFactionInactive = 0x34ee,
SetFactionNotAtWar = 0x34ed, SetFactionNotAtWar = 0x34ed,
SetGameEventDebugViewState = 0x31ba, SetGameEventDebugViewState = 0x31bb,
SetInsertItemsLeftToRight = 0x3344, SetInsertItemsLeftToRight = 0x3346,
SetLootMethod = 0x3648, SetLootMethod = 0x3648,
SetLootSpecialization = 0x3551, SetLootSpecialization = 0x3551,
SetPartyAssignment = 0x3651, SetPartyAssignment = 0x3651,
SetPartyLeader = 0x364a, SetPartyLeader = 0x364a,
SetPetSlot = 0x3168, SetPetSlot = 0x3168,
SetPlayerDeclinedNames = 0x3689, SetPlayerDeclinedNames = 0x3689,
SetPreferredCemetery = 0x3177, SetPreferredCemetery = 0x3178,
SetPvp = 0x32bb, SetPvp = 0x32bc,
SetRaidDifficulty = 0x36dc, SetRaidDifficulty = 0x36dc,
SetRole = 0x35d9, SetRole = 0x35d9,
SetSavedInstanceExtend = 0x3687, SetSavedInstanceExtend = 0x3687,
SetSelection = 0x353a, SetSelection = 0x353a,
SetSheathed = 0x348f, SetSheathed = 0x348f,
SetSortBagsRightToLeft = 0x3343, SetSortBagsRightToLeft = 0x3345,
SetTaxiBenchmarkMode = 0x3501, SetTaxiBenchmarkMode = 0x3501,
SetTitle = 0x328d, SetTitle = 0x328e,
SetTradeCurrency = 0x3160, SetTradeCurrency = 0x3160,
SetTradeGold = 0x315f, SetTradeGold = 0x315f,
SetTradeItem = 0x315d, SetTradeItem = 0x315d,
SetUsingPartyGarrison = 0x3304, SetUsingPartyGarrison = 0x3305,
SetWarMode = 0x32bc, SetWarMode = 0x32bd,
SetWatchedFaction = 0x34ef, SetWatchedFaction = 0x34ef,
ShowTradeSkill = 0x36c2, ShowTradeSkill = 0x36c2,
SignPetition = 0x3545, SignPetition = 0x3545,
SilencePartyTalker = 0x3652, SilencePartyTalker = 0x3652,
SocketGems = 0x34f9, SocketGems = 0x34f9,
SortBags = 0x3345, SortBags = 0x3347,
SortBankBags = 0x3346, SortBankBags = 0x3348,
SortReagentBankBags = 0x3347, SortReagentBankBags = 0x3349,
SpellClick = 0x349b, SpellClick = 0x349b,
SpiritHealerActivate = 0x34b5, SpiritHealerActivate = 0x34b5,
SplitItem = 0x399e, SplitItem = 0x399e,
StandStateChange = 0x3189, StandStateChange = 0x318a,
StartChallengeMode = 0x355c, StartChallengeMode = 0x355c,
StartSpectatorWarGame = 0x35df, StartSpectatorWarGame = 0x35df,
StartWarGame = 0x35de, StartWarGame = 0x35de,
SubmitUserFeedback = 0x3697, SubmitUserFeedback = 0x3697,
SubscriptionInterstitialResponse = 0x33e7, SubscriptionInterstitialResponse = 0x33e9,
SummonResponse = 0x366a, SummonResponse = 0x366a,
SupportTicketSubmitComplaint = 0x3646, SupportTicketSubmitComplaint = 0x3646,
SurrenderArena = 0x3174, SurrenderArena = 0x3174,
@@ -736,8 +737,8 @@ namespace Framework.Constants
SwapInvItem = 0x399d, SwapInvItem = 0x399d,
SwapItem = 0x399c, SwapItem = 0x399c,
SwapSubGroups = 0x364d, SwapSubGroups = 0x364d,
SwapVoidItem = 0x31a5, SwapVoidItem = 0x31a6,
TabardVendorActivate = 0x32b8, TabardVendorActivate = 0x32b9,
TalkToGossip = 0x3498, TalkToGossip = 0x3498,
TaxiNodeStatusQuery = 0x34ae, TaxiNodeStatusQuery = 0x34ae,
TaxiQueryAvailableNodes = 0x34b0, TaxiQueryAvailableNodes = 0x34b0,
@@ -747,46 +748,46 @@ namespace Framework.Constants
TimeSyncResponseDropped = 0x3a3c, TimeSyncResponseDropped = 0x3a3c,
TimeSyncResponseFailed = 0x3a3b, TimeSyncResponseFailed = 0x3a3b,
ToggleDifficulty = 0x3657, ToggleDifficulty = 0x3657,
TogglePvp = 0x32ba, TogglePvp = 0x32bb,
TotemDestroyed = 0x3506, TotemDestroyed = 0x3506,
ToyClearFanfare = 0x312e, ToyClearFanfare = 0x312e,
TradeSkillSetFavorite = 0x3361, TradeSkillSetFavorite = 0x3363,
TrainerBuySpell = 0x34b4, TrainerBuySpell = 0x34b4,
TrainerList = 0x34b3, TrainerList = 0x34b3,
TransmogrifyItems = 0x3198, TransmogrifyItems = 0x3199,
TurnInPetition = 0x3547, TurnInPetition = 0x3547,
Tutorial = 0x36dd, Tutorial = 0x36dd,
TwitterCheckStatus = 0x312a, TwitterCheckStatus = 0x312a,
TwitterConnect = 0x3127, TwitterConnect = 0x3127,
TwitterDisconnect = 0x312b, TwitterDisconnect = 0x312b,
TwitterPost = 0x3349, TwitterPost = 0x334b,
UiMapQuestLinesRequest = 0x33b6, UiMapQuestLinesRequest = 0x33b8,
UnacceptTrade = 0x315b, UnacceptTrade = 0x315b,
UndeleteCharacter = 0x36df, UndeleteCharacter = 0x36df,
UnlearnSkill = 0x34f3, UnlearnSkill = 0x34f3,
UnlearnSpecialization = 0x31a6, UnlearnSpecialization = 0x31a7,
UnlockVoidStorage = 0x31a2, UnlockVoidStorage = 0x31a3,
UpdateAccountData = 0x3699, UpdateAccountData = 0x3699,
UpdateAreaTriggerVisual = 0x32ab, UpdateAreaTriggerVisual = 0x32ac,
UpdateClientSettings = 0x3664, UpdateClientSettings = 0x3664,
UpdateMissileTrajectory = 0x3a40, UpdateMissileTrajectory = 0x3a40,
UpdateRaidTarget = 0x3650, UpdateRaidTarget = 0x3650,
UpdateSpellVisual = 0x32aa, UpdateSpellVisual = 0x32ab,
UpdateVasPurchaseStates = 0x36f5, UpdateVasPurchaseStates = 0x36f5,
UpgradeGarrison = 0x32cc, UpgradeGarrison = 0x32cd,
UpgradeRuneforgeLegendary = 0x33e5, UpgradeRuneforgeLegendary = 0x33e7,
UsedFollow = 0x3186, UsedFollow = 0x3187,
UseCritterItem = 0x3249, UseCritterItem = 0x324a,
UseEquipmentSet = 0x3995, UseEquipmentSet = 0x3995,
UseItem = 0x32a5, UseItem = 0x32a6,
UseToy = 0x32a7, UseToy = 0x32a8,
VasCheckTransferOk = 0x370d, VasCheckTransferOk = 0x370d,
VasGetQueueMinutes = 0x370c, VasGetQueueMinutes = 0x370c,
VasGetServiceStatus = 0x370b, VasGetServiceStatus = 0x370b,
ViolenceLevel = 0x3184, ViolenceLevel = 0x3185,
VoiceChatJoinChannel = 0x3711, VoiceChatJoinChannel = 0x3711,
VoiceChatLogin = 0x3710, VoiceChatLogin = 0x3710,
VoidStorageTransfer = 0x31a4, VoidStorageTransfer = 0x31a5,
Warden3Data = 0x35ec, Warden3Data = 0x35ec,
Who = 0x3681, Who = 0x3681,
WhoIs = 0x3680, WhoIs = 0x3680,
@@ -818,6 +819,7 @@ namespace Framework.Constants
AddLossOfControl = 0x266d, AddLossOfControl = 0x266d,
AddRunePower = 0x26b5, AddRunePower = 0x26b5,
AdjustSplineDuration = 0x25cf, AdjustSplineDuration = 0x25cf,
AdvancedCombatLog = 0x2893,
AdventureJournalDataResponse = 0x288d, AdventureJournalDataResponse = 0x288d,
AdventureMapOpenNpc = 0x27f7, AdventureMapOpenNpc = 0x27f7,
AeLootTargets = 0x2615, AeLootTargets = 0x2615,
@@ -1025,7 +1027,7 @@ namespace Framework.Constants
ClearResurrect = 0x257f, ClearResurrect = 0x257f,
ClearSpellCharges = 0x2c28, ClearSpellCharges = 0x2c28,
ClearTarget = 0x2942, ClearTarget = 0x2942,
ClearTreasurePickerCache = 0x2aa0, ClearTreasurePickerCache = 0x2aa1,
CloseArtifactForge = 0x27a3, CloseArtifactForge = 0x27a3,
CloseHeartForge = 0x282b, CloseHeartForge = 0x282b,
CloseItemForge = 0x27a1, CloseItemForge = 0x27a1,
@@ -1064,9 +1066,10 @@ namespace Framework.Constants
CorpseLocation = 0x264b, CorpseLocation = 0x264b,
CorpseReclaimDelay = 0x274e, CorpseReclaimDelay = 0x274e,
CorpseTransportQuery = 0x2717, CorpseTransportQuery = 0x2717,
CovenantCallingsAvailabilityResponse = 0x2aa2, CovenantCallingsAvailabilityResponse = 0x2aa3,
CovenantPreviewOpenNpc = 0x2800, CovenantPreviewOpenNpc = 0x2800,
CovenantRenownOpenNpc = 0x288f, CovenantRenownOpenNpc = 0x288f,
CovenantRenownSendCatchupState = 0x2891,
CreateChar = 0x2704, CreateChar = 0x2704,
CreateShipmentResponse = 0x279b, CreateShipmentResponse = 0x279b,
CriteriaDeleted = 0x26eb, CriteriaDeleted = 0x26eb,
@@ -1091,7 +1094,7 @@ namespace Framework.Constants
DisplayGameError = 0x25a4, DisplayGameError = 0x25a4,
DisplayPlayerChoice = 0x2ffc, DisplayPlayerChoice = 0x2ffc,
DisplayPromotion = 0x2648, DisplayPromotion = 0x2648,
DisplayQuestPopup = 0x2a9d, DisplayQuestPopup = 0x2a9e,
DisplayToast = 0x2621, DisplayToast = 0x2621,
DisplayWorldText = 0x27f0, DisplayWorldText = 0x27f0,
DontAutoPushSpellsToActionBar = 0x25dd, DontAutoPushSpellsToActionBar = 0x25dd,
@@ -1141,7 +1144,7 @@ namespace Framework.Constants
GameObjectPlaySpellVisualKit = 0x2c4a, GameObjectPlaySpellVisualKit = 0x2c4a,
GameObjectResetState = 0x2723, GameObjectResetState = 0x2723,
GameObjectSetStateLocal = 0x2806, GameObjectSetStateLocal = 0x2806,
GameObjectUILink = 0x271f, GameObjectUiLink = 0x271f,
GameSpeedSet = 0x267f, GameSpeedSet = 0x267f,
GameTimeSet = 0x2711, GameTimeSet = 0x2711,
GameTimeUpdate = 0x2710, GameTimeUpdate = 0x2710,
@@ -1151,6 +1154,7 @@ namespace Framework.Constants
GarrisonAddMissionResult = 0x296e, GarrisonAddMissionResult = 0x296e,
GarrisonApplyTalentSocketDataChanges = 0x29a0, GarrisonApplyTalentSocketDataChanges = 0x29a0,
GarrisonAssignFollowerToBuildingResult = 0x2980, GarrisonAssignFollowerToBuildingResult = 0x2980,
GarrisonAutoTroopMinLevelUpdateResult = 0x29a2,
GarrisonBuildingActivated = 0x295f, GarrisonBuildingActivated = 0x295f,
GarrisonBuildingRemoved = 0x2958, GarrisonBuildingRemoved = 0x2958,
GarrisonBuildingSetActiveSpecializationResult = 0x295a, GarrisonBuildingSetActiveSpecializationResult = 0x295a,
@@ -1212,6 +1216,7 @@ namespace Framework.Constants
GarrisonUnlearnBlueprintResult = 0x295c, GarrisonUnlearnBlueprintResult = 0x295c,
GarrisonUpdateFollower = 0x296c, GarrisonUpdateFollower = 0x296c,
GarrisonUpdateGarrisonMonumentSelections = 0x2991, GarrisonUpdateGarrisonMonumentSelections = 0x2991,
GarrisonUpdateMissionCheatResult = 0x29a1,
GarrisonUpgradeResult = 0x2961, GarrisonUpgradeResult = 0x2961,
GarrisonUseRecallPortalResult = 0x2973, GarrisonUseRecallPortalResult = 0x2973,
GenerateRandomCharacterNameResult = 0x2585, GenerateRandomCharacterNameResult = 0x2585,
@@ -1231,11 +1236,11 @@ namespace Framework.Constants
GmTicketCaseStatus = 0x26a1, GmTicketCaseStatus = 0x26a1,
GmTicketSystemStatus = 0x26a0, GmTicketSystemStatus = 0x26a0,
GodMode = 0x26ff, GodMode = 0x26ff,
GossipComplete = 0x2a96, GossipComplete = 0x2a97,
GossipMessage = 0x2a97, GossipMessage = 0x2a98,
GossipPoi = 0x2796, GossipPoi = 0x2796,
GossipQuestUpdate = 0x2a98, GossipQuestUpdate = 0x2a99,
GossipRefreshOptions = 0x2aa5, GossipRefreshOptions = 0x2aa6,
GroupActionThrottled = 0x2590, GroupActionThrottled = 0x2590,
GroupAutoKick = 0x2794, GroupAutoKick = 0x2794,
GroupDecline = 0x2791, GroupDecline = 0x2791,
@@ -1332,7 +1337,7 @@ namespace Framework.Constants
IslandsMissionNpc = 0x27fc, IslandsMissionNpc = 0x27fc,
IslandAzeriteGain = 0x2760, IslandAzeriteGain = 0x2760,
IslandComplete = 0x2761, IslandComplete = 0x2761,
IsQuestCompleteResponse = 0x2a83, IsQuestCompleteResponse = 0x2a84,
ItemChanged = 0x26ee, ItemChanged = 0x26ee,
ItemCooldown = 0x27c7, ItemCooldown = 0x27c7,
ItemEnchantTimeUpdate = 0x2759, ItemEnchantTimeUpdate = 0x2759,
@@ -1631,35 +1636,35 @@ namespace Framework.Constants
QueryPetNameResponse = 0x26d5, QueryPetNameResponse = 0x26d5,
QueryPlayerNameByCommunityIdResponse = 0x3003, QueryPlayerNameByCommunityIdResponse = 0x3003,
QueryPlayerNameResponse = 0x3002, QueryPlayerNameResponse = 0x3002,
QueryQuestInfoResponse = 0x2a95, QueryQuestInfoResponse = 0x2a96,
QueryTimeResponse = 0x26e8, QueryTimeResponse = 0x26e8,
QuestCompletionNpcResponse = 0x2a81, QuestCompletionNpcResponse = 0x2a81,
QuestConfirmAccept = 0x2a8e, QuestConfirmAccept = 0x2a8f,
QuestForceRemoved = 0x2a9b, QuestForceRemoved = 0x2a9c,
QuestGiverInvalidQuest = 0x2a84, QuestGiverInvalidQuest = 0x2a85,
QuestGiverOfferRewardMessage = 0x2a93, QuestGiverOfferRewardMessage = 0x2a94,
QuestGiverQuestComplete = 0x2a82, QuestGiverQuestComplete = 0x2a83,
QuestGiverQuestDetails = 0x2a91, QuestGiverQuestDetails = 0x2a92,
QuestGiverQuestFailed = 0x2a85, QuestGiverQuestFailed = 0x2a86,
QuestGiverQuestListMessage = 0x2a99, QuestGiverQuestListMessage = 0x2a9a,
QuestGiverRequestItems = 0x2a92, QuestGiverRequestItems = 0x2a93,
QuestGiverStatus = 0x2a9a, QuestGiverStatus = 0x2a9b,
QuestGiverStatusMultiple = 0x2a90, QuestGiverStatusMultiple = 0x2a91,
QuestLogFull = 0x2a86, QuestLogFull = 0x2a87,
QuestPoiQueryResponse = 0x2a9c, QuestPoiQueryResponse = 0x2a9d,
QuestPoiUpdateResponse = 0x2a9e, QuestPoiUpdateResponse = 0x2a9f,
QuestPushResult = 0x2a8f, QuestPushResult = 0x2a90,
QuestSessionInfoResponse = 0x2882, QuestSessionInfoResponse = 0x2882,
QuestSessionReadyCheck = 0x2870, QuestSessionReadyCheck = 0x2870,
QuestSessionReadyCheckResponse = 0x2871, QuestSessionReadyCheckResponse = 0x2871,
QuestSessionResult = 0x286f, QuestSessionResult = 0x286f,
QuestUpdateAddCredit = 0x2a8b, QuestUpdateAddCredit = 0x2a8c,
QuestUpdateAddCreditSimple = 0x2a8c, QuestUpdateAddCreditSimple = 0x2a8d,
QuestUpdateAddPvpCredit = 0x2a8d, QuestUpdateAddPvpCredit = 0x2a8e,
QuestUpdateComplete = 0x2a88, QuestUpdateComplete = 0x2a89,
QuestUpdateCompleteBySpell = 0x2a87, QuestUpdateCompleteBySpell = 0x2a88,
QuestUpdateFailed = 0x2a89, QuestUpdateFailed = 0x2a8a,
QuestUpdateFailedTimer = 0x2a8a, QuestUpdateFailedTimer = 0x2a8b,
QueueSummaryUpdate = 0x2815, QueueSummaryUpdate = 0x2815,
RafAccountInfo = 0x286d, RafAccountInfo = 0x286d,
RafActivityStateChanged = 0x287e, RafActivityStateChanged = 0x287e,
@@ -1691,7 +1696,7 @@ namespace Framework.Constants
ResearchComplete = 0x2587, ResearchComplete = 0x2587,
ResetCompressionContext = 0x304f, ResetCompressionContext = 0x304f,
ResetFailedNotify = 0x26b4, ResetFailedNotify = 0x26b4,
ResetQuestPoi = 0x2a9f, ResetQuestPoi = 0x2aa0,
ResetRangedCombatTimer = 0x2943, ResetRangedCombatTimer = 0x2943,
ResetWeeklyCurrency = 0x2575, ResetWeeklyCurrency = 0x2575,
RespecWipeConfirm = 0x2610, RespecWipeConfirm = 0x2610,
@@ -1772,7 +1777,7 @@ namespace Framework.Constants
ShowBank = 0x267d, ShowBank = 0x267d,
ShowMailbox = 0x27a9, ShowMailbox = 0x27a9,
ShowNeutralPlayerFactionSelectUi = 0x25d7, ShowNeutralPlayerFactionSelectUi = 0x25d7,
ShowQuestCompletionText = 0x2a94, ShowQuestCompletionText = 0x2a95,
ShowTaxiNodes = 0x26ca, ShowTaxiNodes = 0x26ca,
ShowTradeSkillResponse = 0x2773, ShowTradeSkillResponse = 0x2773,
SocketGemsFailure = 0x272c, SocketGemsFailure = 0x272c,
@@ -1852,7 +1857,7 @@ namespace Framework.Constants
TwitterStatus = 0x3043, TwitterStatus = 0x3043,
UiHealingRangeModified = 0x2748, UiHealingRangeModified = 0x2748,
UiItemInteractionNpc = 0x27fb, UiItemInteractionNpc = 0x27fb,
UiMapQuestLinesResponse = 0x2aa1, UiMapQuestLinesResponse = 0x2aa2,
UndeleteCharacterResponse = 0x27cd, UndeleteCharacterResponse = 0x27cd,
UndeleteCooldownStatusResponse = 0x27ce, UndeleteCooldownStatusResponse = 0x27ce,
UnlearnedSpells = 0x2c4e, UnlearnedSpells = 0x2c4e,
+5 -5
View File
@@ -739,7 +739,7 @@ namespace Game.DataStorage
hotfixRecord.RecordID = recordId; hotfixRecord.RecordID = recordId;
hotfixRecord.HotfixID = id; hotfixRecord.HotfixID = id;
hotfixRecord.HotfixStatus = status; hotfixRecord.HotfixStatus = status;
_hotfixData.Add(hotfixRecord); _hotfixData.Add(id, hotfixRecord);
deletedRecords[(tableHash, recordId)] = status == HotfixRecord.Status.RecordRemoved; deletedRecords[(tableHash, recordId)] = status == HotfixRecord.Status.RecordRemoved;
++count; ++count;
@@ -776,7 +776,7 @@ namespace Game.DataStorage
var storeItr = _storage.LookupByKey(tableHash); var storeItr = _storage.LookupByKey(tableHash);
if (storeItr != null) if (storeItr != null)
{ {
Log.outError(LogFilter.Sql, $"Table hash 0x{tableHash:X} points to a loaded DB2 store {nameof(storeItr)}, fill related table instead of hotfix_blob"); Log.outError(LogFilter.Sql, $"Table hash 0x{tableHash:X} points to a loaded DB2 store {storeItr.GetType().Name}, fill related table instead of hotfix_blob");
continue; continue;
} }
@@ -878,11 +878,11 @@ namespace Game.DataStorage
public uint GetHotfixCount() { return (uint)_hotfixData.Count; } public uint GetHotfixCount() { return (uint)_hotfixData.Count; }
public List<HotfixRecord> GetHotfixData() { return _hotfixData; } public MultiMap<int, HotfixRecord> GetHotfixData() { return _hotfixData; }
public byte[] GetHotfixBlobData(uint tableHash, int recordId, Locale locale) public byte[] GetHotfixBlobData(uint tableHash, int recordId, Locale locale)
{ {
Cypher.Assert(SharedConst.IsValidLocale(locale), "Locale {locale} is invalid locale"); Cypher.Assert(SharedConst.IsValidLocale(locale), $"Locale {locale} is invalid locale");
return _hotfixBlob[(int)locale].LookupByKey((tableHash, recordId)); return _hotfixBlob[(int)locale].LookupByKey((tableHash, recordId));
} }
@@ -2288,7 +2288,7 @@ namespace Game.DataStorage
delegate bool AllowedHotfixOptionalData(byte[] data); delegate bool AllowedHotfixOptionalData(byte[] data);
Dictionary<uint, IDB2Storage> _storage = new(); Dictionary<uint, IDB2Storage> _storage = new();
List<HotfixRecord> _hotfixData = new(); MultiMap<int, HotfixRecord> _hotfixData = new();
Dictionary<(uint tableHash, int recordId), byte[]>[] _hotfixBlob = new Dictionary<(uint tableHash, int recordId), byte[]>[(int)Locale.Total]; Dictionary<(uint tableHash, int recordId), byte[]>[] _hotfixBlob = new Dictionary<(uint tableHash, int recordId), byte[]>[(int)Locale.Total];
MultiMap<uint, Tuple<uint, AllowedHotfixOptionalData>> _allowedHotfixOptionalData = new(); MultiMap<uint, Tuple<uint, AllowedHotfixOptionalData>> _allowedHotfixOptionalData = new();
MultiMap<(uint tableHash, int recordId), HotfixOptionalData>[]_hotfixOptionalData = new MultiMap<(uint tableHash, int recordId), HotfixOptionalData>[(int)Locale.Total]; MultiMap<(uint tableHash, int recordId), HotfixOptionalData>[]_hotfixOptionalData = new MultiMap<(uint tableHash, int recordId), HotfixOptionalData>[(int)Locale.Total];
+2
View File
@@ -330,6 +330,7 @@ namespace Game.Misc
packet.Pos = pointOfInterest.Pos; packet.Pos = pointOfInterest.Pos;
packet.Icon = pointOfInterest.Icon; packet.Icon = pointOfInterest.Icon;
packet.Importance = pointOfInterest.Importance; packet.Importance = pointOfInterest.Importance;
packet.Unknown905 = pointOfInterest.Unknown905;
_session.SendPacket(packet); _session.SendPacket(packet);
} }
@@ -772,6 +773,7 @@ namespace Game.Misc
public uint Flags; public uint Flags;
public uint Importance; public uint Importance;
public string Name; public string Name;
public uint Unknown905;
} }
public class PointOfInterestLocale public class PointOfInterestLocale
@@ -377,7 +377,7 @@ namespace Game.Entities
public UpdateField<uint> MaxDurability = new(0, 12); public UpdateField<uint> MaxDurability = new(0, 12);
public UpdateField<uint> CreatePlayedTime = new(0, 13); public UpdateField<uint> CreatePlayedTime = new(0, 13);
public UpdateField<int> Context = new(0, 14); public UpdateField<int> Context = new(0, 14);
public UpdateField<int> CreateTime = new(0, 15); public UpdateField<long> CreateTime = new(0, 15);
public UpdateField<ulong> ArtifactXP = new(0, 16); public UpdateField<ulong> ArtifactXP = new(0, 16);
public UpdateField<byte> ItemAppearanceModID = new(0, 17); public UpdateField<byte> ItemAppearanceModID = new(0, 17);
public UpdateField<ItemModList> Modifiers = new(0, 18); public UpdateField<ItemModList> Modifiers = new(0, 18);
@@ -419,7 +419,7 @@ namespace Game.Entities
} }
data.WriteUInt32(CreatePlayedTime); data.WriteUInt32(CreatePlayedTime);
data.WriteInt32(Context); data.WriteInt32(Context);
data.WriteInt32(CreateTime); data.WriteInt64(CreateTime);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner)) if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
{ {
data.WriteUInt64(ArtifactXP); data.WriteUInt64(ArtifactXP);
@@ -566,7 +566,7 @@ namespace Game.Entities
} }
if (changesMask[15]) if (changesMask[15])
{ {
data.WriteInt32(CreateTime); data.WriteInt64(CreateTime);
} }
if (changesMask[16]) if (changesMask[16])
{ {
@@ -3015,15 +3015,15 @@ namespace Game.Entities
public class PVPInfo : BaseUpdateData<Player> public class PVPInfo : BaseUpdateData<Player>
{ {
public UpdateField<uint> Field_0 = new(0, 1); public UpdateField<bool> Field_20 = new(0, 1);
public UpdateField<uint> Field_4 = new(0, 2); public UpdateField<uint> Field_0 = new(0, 2);
public UpdateField<uint> Field_8 = new(0, 3); public UpdateField<uint> Field_4 = new(0, 3);
public UpdateField<uint> Field_C = new(0, 4); public UpdateField<uint> Field_8 = new(0, 4);
public UpdateField<uint> Rating = new(0, 5); public UpdateField<uint> Field_C = new(0, 5);
public UpdateField<uint> Field_14 = new(0, 6); public UpdateField<uint> Rating = new(0, 6);
public UpdateField<uint> Field_18 = new(0, 7); public UpdateField<uint> Field_14 = new(0, 7);
public UpdateField<uint> PvpTierID = new(0, 8); public UpdateField<uint> Field_18 = new(0, 8);
public UpdateField<uint> Field_20 = new(0, 9); public UpdateField<uint> PvpTierID = new(0, 9);
public PVPInfo() : base(10) { } public PVPInfo() : base(10) { }
@@ -3037,7 +3037,7 @@ namespace Game.Entities
data.WriteUInt32(Field_14); data.WriteUInt32(Field_14);
data.WriteUInt32(Field_18); data.WriteUInt32(Field_18);
data.WriteUInt32(PvpTierID); data.WriteUInt32(PvpTierID);
data.WriteBits((uint)Field_20, 1); data.WriteBit(Field_20);
data.FlushBits(); data.FlushBits();
} }
@@ -3049,44 +3049,47 @@ namespace Game.Entities
data.WriteBits(changesMask.GetBlock(0), 10); data.WriteBits(changesMask.GetBlock(0), 10);
data.FlushBits();
if (changesMask[0]) if (changesMask[0])
{ {
if (changesMask[1]) if (changesMask[1])
{ {
data.WriteUInt32(Field_0); data.WriteBit(Field_20);
} }
}
data.FlushBits();
if (changesMask[0])
{
if (changesMask[2]) if (changesMask[2])
{ {
data.WriteUInt32(Field_4); data.WriteUInt32(Field_0);
} }
if (changesMask[3]) if (changesMask[3])
{ {
data.WriteUInt32(Field_8); data.WriteUInt32(Field_4);
} }
if (changesMask[4]) if (changesMask[4])
{ {
data.WriteUInt32(Field_C); data.WriteUInt32(Field_8);
} }
if (changesMask[5]) if (changesMask[5])
{ {
data.WriteUInt32(Rating); data.WriteUInt32(Field_C);
} }
if (changesMask[6]) if (changesMask[6])
{ {
data.WriteUInt32(Field_14); data.WriteUInt32(Rating);
} }
if (changesMask[7]) if (changesMask[7])
{ {
data.WriteUInt32(Field_18); data.WriteUInt32(Field_14);
} }
if (changesMask[8]) if (changesMask[8])
{ {
data.WriteUInt32(PvpTierID); data.WriteUInt32(Field_18);
} }
if (changesMask[9]) if (changesMask[9])
{ {
data.WriteBits(Field_20, 1); data.WriteUInt32(PvpTierID);
} }
} }
data.FlushBits(); data.FlushBits();
@@ -3094,6 +3097,7 @@ namespace Game.Entities
public override void ClearChangesMask() public override void ClearChangesMask()
{ {
ClearChangesMask(Field_20);
ClearChangesMask(Field_0); ClearChangesMask(Field_0);
ClearChangesMask(Field_4); ClearChangesMask(Field_4);
ClearChangesMask(Field_8); ClearChangesMask(Field_8);
@@ -3102,7 +3106,6 @@ namespace Game.Entities
ClearChangesMask(Field_14); ClearChangesMask(Field_14);
ClearChangesMask(Field_18); ClearChangesMask(Field_18);
ClearChangesMask(PvpTierID); ClearChangesMask(PvpTierID);
ClearChangesMask(Field_20);
_changesMask.ResetAll(); _changesMask.ResetAll();
} }
} }
@@ -3495,37 +3498,38 @@ namespace Game.Entities
public UpdateField<ulong> GuildClubMemberID = new(98, 101); public UpdateField<ulong> GuildClubMemberID = new(98, 101);
public UpdateField<uint> Honor = new(98, 102); public UpdateField<uint> Honor = new(98, 102);
public UpdateField<uint> HonorNextLevel = new(98, 103); public UpdateField<uint> HonorNextLevel = new(98, 103);
public UpdateField<int> PvpRewardAchieved = new(98, 104); public UpdateField<long> PvpRewardAchieved = new(98, 104);
public UpdateField<int> PvpTierMaxFromWins = new(98, 105); public UpdateField<int> PvpTierMaxFromWins = new(98, 105);
public UpdateField<int> PvpLastWeeksRewardAchieved = new(98, 106); public UpdateField<long> PvpLastWeeksRewardAchieved = new(98, 106);
public UpdateField<int> PvpLastWeeksTierMaxFromWins = new(98, 107); public UpdateField<int> PvpLastWeeksTierMaxFromWins = new(98, 107);
public UpdateField<int> PvpLastWeeksRewardClaimed = new(98, 108); public UpdateField<long> PvpLastWeeksRewardClaimed = new(98, 108);
public UpdateField<byte> NumBankSlots = new(98, 109); public UpdateField<byte> NumBankSlots = new(98, 109);
public UpdateField<ActivePlayerUnk901> Field_1410 = new(98, 111); public UpdateField<ActivePlayerUnk901> Field_1410 = new(98, 111);
public UpdateField<Optional<QuestSession>> QuestSession = new(98, 110); public UpdateField<Optional<QuestSession>> QuestSession = new(98, 110);
public UpdateField<int> UiChromieTimeExpansionID = new(98, 112); public UpdateField<int> UiChromieTimeExpansionID = new(98, 112);
public UpdateField<int> TransportServerTime = new(98, 113); public UpdateField<int> TransportServerTime = new(98, 113);
public UpdateFieldArray<ObjectGuid> InvSlots = new(199, 114, 115); public UpdateField<uint> WeeklyRewardsPeriodSinceOrigin = new(98, 114); // week count since Cfg_RegionsEntry::ChallengeOrigin
public UpdateFieldArray<uint> TrackResourceMask = new(2, 314, 315); public UpdateFieldArray<ObjectGuid> InvSlots = new(199, 115, 116);
public UpdateFieldArray<ulong> ExploredZones = new(192, 317, 318); public UpdateFieldArray<uint> TrackResourceMask = new(2, 315, 316);
public UpdateFieldArray<RestInfo> RestInfo = new(2, 510, 511); public UpdateFieldArray<ulong> ExploredZones = new(192, 318, 319);
public UpdateFieldArray<int> ModDamageDonePos = new(7, 513, 514); public UpdateFieldArray<RestInfo> RestInfo = new(2, 511, 512);
public UpdateFieldArray<int> ModDamageDoneNeg = new(7, 513, 521); public UpdateFieldArray<int> ModDamageDonePos = new(7, 514, 515);
public UpdateFieldArray<float> ModDamageDonePercent = new(7, 513, 528); public UpdateFieldArray<int> ModDamageDoneNeg = new(7, 514, 522);
public UpdateFieldArray<float> ModHealingDonePercent = new(7, 513, 535); public UpdateFieldArray<float> ModDamageDonePercent = new(7, 514, 529);
public UpdateFieldArray<float> WeaponDmgMultipliers = new(3, 542, 543); public UpdateFieldArray<float> ModHealingDonePercent = new(7, 514, 536);
public UpdateFieldArray<float> WeaponAtkSpeedMultipliers = new(3, 542, 546); public UpdateFieldArray<float> WeaponDmgMultipliers = new(3, 543, 544);
public UpdateFieldArray<uint> BuybackPrice = new(12, 549, 550); public UpdateFieldArray<float> WeaponAtkSpeedMultipliers = new(3, 543, 547);
public UpdateFieldArray<uint> BuybackTimestamp = new(12, 549, 562); public UpdateFieldArray<uint> BuybackPrice = new(12, 550, 551);
public UpdateFieldArray<uint> CombatRatings = new(32, 574, 575); public UpdateFieldArray<uint> BuybackTimestamp = new(12, 550, 563);
public UpdateFieldArray<PVPInfo> PvpInfo = new(6, 607, 608); public UpdateFieldArray<uint> CombatRatings = new(32, 575, 576);
public UpdateFieldArray<uint> NoReagentCostMask = new(4, 614, 615); public UpdateFieldArray<PVPInfo> PvpInfo = new(6, 608, 609);
public UpdateFieldArray<uint> ProfessionSkillLine = new(2, 619, 620); public UpdateFieldArray<uint> NoReagentCostMask = new(4, 615, 616);
public UpdateFieldArray<uint> BagSlotFlags = new(4, 622, 623); public UpdateFieldArray<uint> ProfessionSkillLine = new(2, 620, 621);
public UpdateFieldArray<uint> BankBagSlotFlags = new(7, 627, 628); public UpdateFieldArray<uint> BagSlotFlags = new(4, 623, 624);
public UpdateFieldArray<ulong> QuestCompleted = new(875, 635, 636); public UpdateFieldArray<uint> BankBagSlotFlags = new(7, 628, 629);
public UpdateFieldArray<ulong> QuestCompleted = new(875, 636, 637);
public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1511) { } public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1512) { }
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver) public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver)
{ {
@@ -3659,11 +3663,11 @@ namespace Game.Entities
} }
data.WriteUInt32(Honor); data.WriteUInt32(Honor);
data.WriteUInt32(HonorNextLevel); data.WriteUInt32(HonorNextLevel);
data.WriteInt32(PvpRewardAchieved); data.WriteInt64(PvpRewardAchieved);
data.WriteInt32(PvpTierMaxFromWins); data.WriteInt32(PvpTierMaxFromWins);
data.WriteInt32(PvpLastWeeksRewardAchieved); data.WriteInt64(PvpLastWeeksRewardAchieved);
data.WriteInt32(PvpLastWeeksTierMaxFromWins); data.WriteInt32(PvpLastWeeksTierMaxFromWins);
data.WriteInt32(PvpLastWeeksRewardClaimed); data.WriteInt64(PvpLastWeeksRewardClaimed);
data.WriteUInt8(NumBankSlots); data.WriteUInt8(NumBankSlots);
data.WriteInt32(ResearchSites.Size()); data.WriteInt32(ResearchSites.Size());
data.WriteInt32(ResearchSiteProgress.Size()); data.WriteInt32(ResearchSiteProgress.Size());
@@ -3696,6 +3700,7 @@ namespace Game.Entities
data.WriteInt32(DisabledSpells.Size()); data.WriteInt32(DisabledSpells.Size());
data.WriteInt32(UiChromieTimeExpansionID); data.WriteInt32(UiChromieTimeExpansionID);
data.WriteInt32(TransportServerTime); data.WriteInt32(TransportServerTime);
data.WriteUInt32(WeeklyRewardsPeriodSinceOrigin);
for (int i = 0; i < KnownTitles.Size(); ++i) for (int i = 0; i < KnownTitles.Size(); ++i)
{ {
data.WriteUInt64(KnownTitles[i]); data.WriteUInt64(KnownTitles[i]);
@@ -3975,6 +3980,7 @@ namespace Game.Entities
} }
} }
} }
data.FlushBits();
if (changesMask[0]) if (changesMask[0])
{ {
if (changesMask[22]) if (changesMask[22])
@@ -4535,7 +4541,7 @@ namespace Game.Entities
} }
if (changesMask[104]) if (changesMask[104])
{ {
data.WriteInt32(PvpRewardAchieved); data.WriteInt64(PvpRewardAchieved);
} }
if (changesMask[105]) if (changesMask[105])
{ {
@@ -4543,7 +4549,7 @@ namespace Game.Entities
} }
if (changesMask[106]) if (changesMask[106])
{ {
data.WriteInt32(PvpLastWeeksRewardAchieved); data.WriteInt64(PvpLastWeeksRewardAchieved);
} }
if (changesMask[107]) if (changesMask[107])
{ {
@@ -4551,7 +4557,7 @@ namespace Game.Entities
} }
if (changesMask[108]) if (changesMask[108])
{ {
data.WriteInt32(PvpLastWeeksRewardClaimed); data.WriteInt64(PvpLastWeeksRewardClaimed);
} }
if (changesMask[109]) if (changesMask[109])
{ {
@@ -4565,6 +4571,10 @@ namespace Game.Entities
{ {
data.WriteInt32(TransportServerTime); data.WriteInt32(TransportServerTime);
} }
if (changesMask[114])
{
data.WriteUInt32(WeeklyRewardsPeriodSinceOrigin);
}
} }
if (changesMask[98]) if (changesMask[98])
{ {
@@ -4581,161 +4591,161 @@ namespace Game.Entities
} }
} }
} }
if (changesMask[114]) if (changesMask[115])
{ {
for (int i = 0; i < 199; ++i) for (int i = 0; i < 199; ++i)
{ {
if (changesMask[115 + i]) if (changesMask[116 + i])
{ {
data.WritePackedGuid(InvSlots[i]); data.WritePackedGuid(InvSlots[i]);
} }
} }
} }
if (changesMask[314]) if (changesMask[315])
{ {
for (int i = 0; i < 2; ++i) for (int i = 0; i < 2; ++i)
{ {
if (changesMask[315 + i]) if (changesMask[316 + i])
{ {
data.WriteUInt32(TrackResourceMask[i]); data.WriteUInt32(TrackResourceMask[i]);
} }
} }
} }
if (changesMask[317]) if (changesMask[318])
{ {
for (int i = 0; i < 192; ++i) for (int i = 0; i < 192; ++i)
{ {
if (changesMask[318 + i]) if (changesMask[319 + i])
{ {
data.WriteUInt64(ExploredZones[i]); data.WriteUInt64(ExploredZones[i]);
} }
} }
} }
if (changesMask[510]) if (changesMask[511])
{ {
for (int i = 0; i < 2; ++i) for (int i = 0; i < 2; ++i)
{ {
if (changesMask[511 + i]) if (changesMask[512 + i])
{ {
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
} }
} }
} }
if (changesMask[513]) if (changesMask[514])
{ {
for (int i = 0; i < 7; ++i) for (int i = 0; i < 7; ++i)
{ {
if (changesMask[514 + i]) if (changesMask[515 + i])
{ {
data.WriteInt32(ModDamageDonePos[i]); data.WriteInt32(ModDamageDonePos[i]);
} }
if (changesMask[521 + i]) if (changesMask[522 + i])
{ {
data.WriteInt32(ModDamageDoneNeg[i]); data.WriteInt32(ModDamageDoneNeg[i]);
} }
if (changesMask[528 + i]) if (changesMask[529 + i])
{ {
data.WriteFloat(ModDamageDonePercent[i]); data.WriteFloat(ModDamageDonePercent[i]);
} }
if (changesMask[535 + i]) if (changesMask[536 + i])
{ {
data.WriteFloat(ModHealingDonePercent[i]); data.WriteFloat(ModHealingDonePercent[i]);
} }
} }
} }
if (changesMask[542]) if (changesMask[543])
{ {
for (int i = 0; i < 3; ++i) for (int i = 0; i < 3; ++i)
{ {
if (changesMask[543 + i]) if (changesMask[544 + i])
{ {
data.WriteFloat(WeaponDmgMultipliers[i]); data.WriteFloat(WeaponDmgMultipliers[i]);
} }
if (changesMask[546 + i]) if (changesMask[547 + i])
{ {
data.WriteFloat(WeaponAtkSpeedMultipliers[i]); data.WriteFloat(WeaponAtkSpeedMultipliers[i]);
} }
} }
} }
if (changesMask[549]) if (changesMask[550])
{ {
for (int i = 0; i < 12; ++i) for (int i = 0; i < 12; ++i)
{ {
if (changesMask[550 + i]) if (changesMask[551 + i])
{ {
data.WriteUInt32(BuybackPrice[i]); data.WriteUInt32(BuybackPrice[i]);
} }
if (changesMask[562 + i]) if (changesMask[563 + i])
{ {
data.WriteUInt32(BuybackTimestamp[i]); data.WriteUInt32(BuybackTimestamp[i]);
} }
} }
} }
if (changesMask[574]) if (changesMask[575])
{ {
for (int i = 0; i < 32; ++i) for (int i = 0; i < 32; ++i)
{ {
if (changesMask[575 + i]) if (changesMask[576 + i])
{ {
data.WriteUInt32(CombatRatings[i]); data.WriteUInt32(CombatRatings[i]);
} }
} }
} }
if (changesMask[614]) if (changesMask[615])
{ {
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
if (changesMask[615 + i]) if (changesMask[616 + i])
{ {
data.WriteUInt32(NoReagentCostMask[i]); data.WriteUInt32(NoReagentCostMask[i]);
} }
} }
} }
if (changesMask[619]) if (changesMask[620])
{ {
for (int i = 0; i < 2; ++i) for (int i = 0; i < 2; ++i)
{ {
if (changesMask[620 + i]) if (changesMask[621 + i])
{ {
data.WriteUInt32(ProfessionSkillLine[i]); data.WriteUInt32(ProfessionSkillLine[i]);
} }
} }
} }
if (changesMask[622]) if (changesMask[623])
{ {
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
if (changesMask[623 + i]) if (changesMask[624 + i])
{ {
data.WriteUInt32(BagSlotFlags[i]); data.WriteUInt32(BagSlotFlags[i]);
} }
} }
} }
if (changesMask[627]) if (changesMask[628])
{ {
for (int i = 0; i < 7; ++i) for (int i = 0; i < 7; ++i)
{ {
if (changesMask[628 + i]) if (changesMask[629 + i])
{ {
data.WriteUInt32(BankBagSlotFlags[i]); data.WriteUInt32(BankBagSlotFlags[i]);
} }
} }
} }
if (changesMask[635]) if (changesMask[636])
{ {
for (int i = 0; i < 875; ++i) for (int i = 0; i < 875; ++i)
{ {
if (changesMask[636 + i]) if (changesMask[637 + i])
{ {
data.WriteUInt64(QuestCompleted[i]); data.WriteUInt64(QuestCompleted[i]);
} }
} }
} }
if (changesMask[607]) if (changesMask[608])
{ {
for (int i = 0; i < 6; ++i) for (int i = 0; i < 6; ++i)
{ {
if (changesMask[608 + i]) if (changesMask[609 + i])
{ {
PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
} }
@@ -4855,6 +4865,7 @@ namespace Game.Entities
ClearChangesMask(QuestSession); ClearChangesMask(QuestSession);
ClearChangesMask(UiChromieTimeExpansionID); ClearChangesMask(UiChromieTimeExpansionID);
ClearChangesMask(TransportServerTime); ClearChangesMask(TransportServerTime);
ClearChangesMask(WeeklyRewardsPeriodSinceOrigin);
ClearChangesMask(InvSlots); ClearChangesMask(InvSlots);
ClearChangesMask(TrackResourceMask); ClearChangesMask(TrackResourceMask);
ClearChangesMask(ExploredZones); ClearChangesMask(ExploredZones);
@@ -598,6 +598,7 @@ namespace Game.Entities
//if (flags.SmoothPhasing) //if (flags.SmoothPhasing)
//{ //{
// data.WriteBit(ReplaceActive); // data.WriteBit(ReplaceActive);
// data.WriteBit(StopAnimKits);
// data.WriteBit(HasReplaceObjectt); // data.WriteBit(HasReplaceObjectt);
// data.FlushBits(); // data.FlushBits();
// if (HasReplaceObject) // if (HasReplaceObject)
+10 -2
View File
@@ -195,6 +195,7 @@ namespace Game.Entities
UpdateSplineMovement(diff); UpdateSplineMovement(diff);
GetMotionMaster().UpdateMotion(diff); GetMotionMaster().UpdateMotion(diff);
} }
void _UpdateSpells(uint diff) void _UpdateSpells(uint diff)
{ {
if (GetCurrentSpell(CurrentSpellTypes.AutoRepeat) != null) if (GetCurrentSpell(CurrentSpellTypes.AutoRepeat) != null)
@@ -250,13 +251,20 @@ namespace Game.Entities
_spellHistory.Update(); _spellHistory.Update();
} }
public void HandleEmoteCommand(Emote anim_id) public void HandleEmoteCommand(Emote animId, uint[] spellVisualKitIds = null)
{ {
EmoteMessage packet = new(); EmoteMessage packet = new();
packet.Guid = GetGUID(); packet.Guid = GetGUID();
packet.EmoteID = (int)anim_id; packet.EmoteID = (uint)animId;
var emotesEntry = CliDB.EmotesStorage.LookupByKey(animId);
if (emotesEntry != null && spellVisualKitIds != null)
if (emotesEntry.AnimId == (uint)Anim.MountSpecial || emotesEntry.AnimId == (uint)Anim.MountSelfSpecial)
packet.SpellVisualKitIDs.AddRange(spellVisualKitIds);
SendMessageToSet(packet, true); SendMessageToSet(packet, true);
} }
public void SendDurabilityLoss(Player receiver, uint percent) public void SendDurabilityLoss(Player receiver, uint percent)
{ {
DurabilityDamageDeath packet = new(); DurabilityDamageDeath packet = new();
+5 -4
View File
@@ -717,8 +717,8 @@ namespace Game
pointsOfInterestStorage.Clear(); // need for reload case pointsOfInterestStorage.Clear(); // need for reload case
// 0 1 2 3 4 5 6 // 0 1 2 3 4 5 6 7
SQLResult result = DB.World.Query("SELECT ID, PositionX, PositionY, Icon, Flags, Importance, Name FROM points_of_interest"); SQLResult result = DB.World.Query("SELECT ID, PositionX, PositionY, Icon, Flags, Importance, Name, Unknown905 FROM points_of_interest");
if (result.IsEmpty()) if (result.IsEmpty())
{ {
@@ -738,10 +738,11 @@ namespace Game
POI.Flags = result.Read<uint>(4); POI.Flags = result.Read<uint>(4);
POI.Importance = result.Read<uint>(5); POI.Importance = result.Read<uint>(5);
POI.Name = result.Read<string>(6); POI.Name = result.Read<string>(6);
POI.Unknown905 = result.Read<uint>(7);
if (!GridDefines.IsValidMapCoord(POI.Pos.X, POI.Pos.Y)) if (!GridDefines.IsValidMapCoord(POI.Pos.X, POI.Pos.Y))
{ {
Log.outError(LogFilter.Sql, "Table `points_of_interest` (ID: {0}) have invalid coordinates (PositionX: {1} PositionY: {2}), ignored.", id, POI.Pos.X, POI.Pos.Y); Log.outError(LogFilter.Sql, $"Table `points_of_interest` (ID: {id}) have invalid coordinates (PositionX: {POI.Pos.X} PositionY: {POI.Pos.Y}), ignored.");
continue; continue;
} }
@@ -750,7 +751,7 @@ namespace Game
++count; ++count;
} while (result.NextRow()); } while (result.NextRow());
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} Points of Interest definitions in {1} ms", count, Time.GetMSTimeDiffToNow(oldMSTime)); Log.outInfo(LogFilter.ServerLoading, $"Loaded {count} Points of Interest definitions in {Time.GetMSTimeDiffToNow(oldMSTime)} ms");
} }
public List<GossipMenus> GetGossipMenusMapBounds(uint uiMenuId) public List<GossipMenus> GetGossipMenusMapBounds(uint uiMenuId)
+1 -1
View File
@@ -588,7 +588,7 @@ namespace Game
// Only allow text-emotes for "dead" entities (feign death included) // Only allow text-emotes for "dead" entities (feign death included)
if (GetPlayer().HasUnitState(UnitState.Died)) if (GetPlayer().HasUnitState(UnitState.Died))
break; break;
GetPlayer().HandleEmoteCommand(emoteAnim); GetPlayer().HandleEmoteCommand(emoteAnim, packet.SpellVisualKitIDs);
break; break;
} }
+33 -27
View File
@@ -61,7 +61,7 @@ namespace Game
void SendAvailableHotfixes() void SendAvailableHotfixes()
{ {
SendPacket(new AvailableHotfixes(Global.WorldMgr.GetRealmId().GetAddress(), Global.DB2Mgr.GetHotfixCount(), Global.DB2Mgr.GetHotfixData())); SendPacket(new AvailableHotfixes(Global.WorldMgr.GetRealmId().GetAddress(), Global.DB2Mgr.GetHotfixData()));
} }
[WorldPacketHandler(ClientOpcodes.HotfixRequest, Status = SessionStatus.Authed)] [WorldPacketHandler(ClientOpcodes.HotfixRequest, Status = SessionStatus.Authed)]
@@ -70,42 +70,48 @@ namespace Game
var hotfixes = Global.DB2Mgr.GetHotfixData(); var hotfixes = Global.DB2Mgr.GetHotfixData();
HotfixConnect hotfixQueryResponse = new(); HotfixConnect hotfixQueryResponse = new();
foreach (HotfixRecord hotfixRecord in hotfixQuery.Hotfixes) foreach (var hotfixId in hotfixQuery.Hotfixes)
{ {
var serverHotfixIndex = hotfixes.IndexOf(hotfixRecord); var hotfixRecords = hotfixes.LookupByKey(hotfixId);
if (serverHotfixIndex != -1) if (hotfixRecords != null)
{ {
HotfixConnect.HotfixData hotfixData = new(); foreach (var hotfixRecord in hotfixRecords)
hotfixData.Record = hotfixes[serverHotfixIndex];
if (hotfixData.Record.HotfixStatus == HotfixRecord.Status.Valid)
{ {
var storage = Global.DB2Mgr.GetStorage(hotfixRecord.TableHash); HotfixConnect.HotfixData hotfixData = new HotfixConnect.HotfixData();
if (storage != null && storage.HasRecord((uint)hotfixRecord.RecordID)) hotfixData.Record = hotfixRecord;
if (hotfixRecord.HotfixStatus == HotfixRecord.Status.Valid)
{ {
uint pos = hotfixQueryResponse.HotfixContent.GetSize(); var storage = Global.DB2Mgr.GetStorage(hotfixRecord.TableHash);
storage.WriteRecord((uint)hotfixRecord.RecordID, GetSessionDbcLocale(), hotfixQueryResponse.HotfixContent); if (storage != null && storage.HasRecord((uint)hotfixRecord.RecordID))
var optionalDataEntries = Global.DB2Mgr.GetHotfixOptionalData(hotfixRecord.TableHash, (uint)hotfixRecord.RecordID, GetSessionDbcLocale());
foreach (HotfixOptionalData optionalData in optionalDataEntries)
{ {
hotfixQueryResponse.HotfixContent.WriteUInt32(optionalData.Key); var pos = hotfixQueryResponse.HotfixContent.GetSize();
hotfixQueryResponse.HotfixContent.WriteBytes(optionalData.Data); storage.WriteRecord((uint)hotfixRecord.RecordID, GetSessionDbcLocale(), hotfixQueryResponse.HotfixContent);
var optionalDataEntries = Global.DB2Mgr.GetHotfixOptionalData(hotfixRecord.TableHash, (uint)hotfixRecord.RecordID, GetSessionDbcLocale());
if (optionalDataEntries != null)
{
foreach (var optionalData in optionalDataEntries)
{
hotfixQueryResponse.HotfixContent.WriteUInt32(optionalData.Key);
hotfixQueryResponse.HotfixContent.WriteBytes(optionalData.Data);
}
}
hotfixData.Size = hotfixQueryResponse.HotfixContent.GetSize() - pos;
} }
else
hotfixData.Size = hotfixQueryResponse.HotfixContent.GetSize() - pos;
}
else
{
byte[] blobData = Global.DB2Mgr.GetHotfixBlobData(hotfixRecord.TableHash, hotfixRecord.RecordID, GetSessionDbcLocale());
if (blobData != null)
{ {
hotfixData.Size = (uint)blobData.Length; var blobData = Global.DB2Mgr.GetHotfixBlobData(hotfixRecord.TableHash, hotfixRecord.RecordID, GetSessionDbcLocale());
hotfixQueryResponse.HotfixContent.WriteBytes(blobData); if (blobData != null)
{
hotfixData.Size = (uint)blobData.Length;
hotfixQueryResponse.HotfixContent.WriteBytes(blobData);
}
} }
} }
hotfixQueryResponse.Hotfixes.Add(hotfixData);
} }
hotfixQueryResponse.Hotfixes.Add(hotfixData);
} }
} }
+1
View File
@@ -419,6 +419,7 @@ namespace Game
{ {
SpecialMountAnim specialMountAnim = new(); SpecialMountAnim specialMountAnim = new();
specialMountAnim.UnitGUID = _player.GetGUID(); specialMountAnim.UnitGUID = _player.GetGUID();
specialMountAnim.SpellVisualKitIDs.AddRange(mountSpecial.SpellVisualKitIDs);
GetPlayer().SendMessageToSet(specialMountAnim, false); GetPlayer().SendMessageToSet(specialMountAnim, false);
} }
@@ -189,6 +189,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32(progress.DateCreated); _worldPacket.WriteUInt32(progress.DateCreated);
_worldPacket.WriteUInt32(progress.DateStarted); _worldPacket.WriteUInt32(progress.DateStarted);
_worldPacket.WritePackedTime(progress.DateUpdated); _worldPacket.WritePackedTime(progress.DateUpdated);
_worldPacket.WriteUInt32(0); // this is a hack. this is a packed time written as int64 (progress.DateUpdated)
_worldPacket.WriteUInt64(progress.Quantity); _worldPacket.WriteUInt64(progress.Quantity);
_worldPacket.WritePackedGuid(progress.PlayerGUID); _worldPacket.WritePackedGuid(progress.PlayerGUID);
_worldPacket.WriteInt32(progress.Flags); _worldPacket.WriteInt32(progress.Flags);
+14 -3
View File
@@ -16,10 +16,11 @@
*/ */
using Framework.Constants; using Framework.Constants;
using Framework.Dynamic;
using Game.Entities; using Game.Entities;
using Game.Groups; using Game.Groups;
using System; using System;
using Framework.Dynamic; using System.Collections.Generic;
namespace Game.Networking.Packets namespace Game.Networking.Packets
{ {
@@ -269,11 +270,16 @@ namespace Game.Networking.Packets
public override void Write() public override void Write()
{ {
_worldPacket.WritePackedGuid(Guid); _worldPacket.WritePackedGuid(Guid);
_worldPacket.WriteInt32(EmoteID); _worldPacket.WriteUInt32(EmoteID);
_worldPacket.WriteInt32(SpellVisualKitIDs.Count);
foreach (var id in SpellVisualKitIDs)
_worldPacket.WriteUInt32(id);
} }
public ObjectGuid Guid; public ObjectGuid Guid;
public int EmoteID; public uint EmoteID;
public List<uint> SpellVisualKitIDs = new();
} }
public class CTextEmote : ClientPacket public class CTextEmote : ClientPacket
@@ -285,11 +291,16 @@ namespace Game.Networking.Packets
Target = _worldPacket.ReadPackedGuid(); Target = _worldPacket.ReadPackedGuid();
EmoteID = _worldPacket.ReadInt32(); EmoteID = _worldPacket.ReadInt32();
SoundIndex = _worldPacket.ReadInt32(); SoundIndex = _worldPacket.ReadInt32();
SpellVisualKitIDs = new uint[_worldPacket.ReadUInt32()];
for (var i = 0; i < SpellVisualKitIDs.Length; ++i)
SpellVisualKitIDs[i] = _worldPacket.ReadUInt32();
} }
public ObjectGuid Target; public ObjectGuid Target;
public int EmoteID; public int EmoteID;
public int SoundIndex; public int SoundIndex;
public uint[] SpellVisualKitIDs;
} }
public class STextEmote : ServerPacket public class STextEmote : ServerPacket
@@ -138,7 +138,7 @@ namespace Game.Networking.Packets
class GameObjectUILink : ServerPacket class GameObjectUILink : ServerPacket
{ {
public GameObjectUILink() : base(ServerOpcodes.GameObjectUILink, ConnectionType.Instance) { } public GameObjectUILink() : base(ServerOpcodes.GameObjectUiLink, ConnectionType.Instance) { }
public override void Write() public override void Write()
{ {
@@ -405,12 +405,12 @@ namespace Game.Networking.Packets
public void Write(WorldPacket data) public void Write(WorldPacket data)
{ {
data.WriteUInt64(DbID); data.WriteUInt64(DbID);
data.WriteUInt32(MissionRecID);
data.WriteUInt32((uint)OfferTime); data.WriteUInt32((uint)OfferTime);
data.WriteUInt32(OfferDuration); data.WriteUInt32(OfferDuration);
data.WriteUInt32((uint)StartTime); data.WriteUInt32((uint)StartTime);
data.WriteUInt32(TravelDuration); data.WriteUInt32(TravelDuration);
data.WriteUInt32(MissionDuration); data.WriteUInt32(MissionDuration);
data.WriteUInt32(MissionRecID);
data.WriteUInt32(MissionState); data.WriteUInt32(MissionState);
data.WriteUInt32(SuccessChance); data.WriteUInt32(SuccessChance);
data.WriteUInt32(Flags); data.WriteUInt32(Flags);
@@ -462,8 +462,8 @@ namespace Game.Networking.Packets
{ {
public void Write(WorldPacket data) public void Write(WorldPacket data)
{ {
data.WriteUInt32(GarrMssnBonusAbilityID);
data.WriteUInt32((uint)StartTime); data.WriteUInt32((uint)StartTime);
data.WriteUInt32(GarrMssnBonusAbilityID);
} }
public uint GarrMssnBonusAbilityID; public uint GarrMssnBonusAbilityID;
@@ -533,12 +533,12 @@ namespace Game.Networking.Packets
struct GarrisonEventEntry struct GarrisonEventEntry
{ {
public int EntryID; public int EntryID;
public int EventValue; public long EventValue;
public void Write(WorldPacket data) public void Write(WorldPacket data)
{ {
data.WriteInt64(EventValue);
data.WriteInt32(EntryID); data.WriteInt32(EntryID);
data.WriteInt32(EventValue);
} }
} }
@@ -578,6 +578,7 @@ namespace Game.Networking.Packets
data.WriteInt32(ArchivedMissions.Count); data.WriteInt32(ArchivedMissions.Count);
data.WriteUInt32(NumFollowerActivationsRemaining); data.WriteUInt32(NumFollowerActivationsRemaining);
data.WriteUInt32(NumMissionsStartedToday); data.WriteUInt32(NumMissionsStartedToday);
data.WriteInt32(MinAutoTroopLevel);
foreach (GarrisonPlotInfo plot in Plots) foreach (GarrisonPlotInfo plot in Plots)
plot.Write(data); plot.Write(data);
@@ -634,6 +635,7 @@ namespace Game.Networking.Packets
public uint GarrSiteLevelID; public uint GarrSiteLevelID;
public uint NumFollowerActivationsRemaining; public uint NumFollowerActivationsRemaining;
public uint NumMissionsStartedToday; // might mean something else, but sending 0 here enables follower abilities "Increase success chance of the first mission of the day by %." public uint NumMissionsStartedToday; // might mean something else, but sending 0 here enables follower abilities "Increase success chance of the first mission of the day by %."
public int MinAutoTroopLevel;
public List<GarrisonPlotInfo> Plots = new(); public List<GarrisonPlotInfo> Plots = new();
public List<GarrisonBuildingInfo> Buildings = new(); public List<GarrisonBuildingInfo> Buildings = new();
public List<GarrisonFollower> Followers = new(); public List<GarrisonFollower> Followers = new();
@@ -78,25 +78,24 @@ namespace Game.Networking.Packets
class AvailableHotfixes : ServerPacket class AvailableHotfixes : ServerPacket
{ {
public AvailableHotfixes(uint virtualRealmAddress, uint hotfixCount, List<HotfixRecord> hotfixes) : base(ServerOpcodes.AvailableHotfixes) public AvailableHotfixes(uint virtualRealmAddress, MultiMap<int, HotfixRecord> hotfixes) : base(ServerOpcodes.AvailableHotfixes)
{ {
VirtualRealmAddress = virtualRealmAddress; VirtualRealmAddress = virtualRealmAddress;
HotfixCount = hotfixCount;
Hotfixes = hotfixes; Hotfixes = hotfixes;
} }
public override void Write() public override void Write()
{ {
_worldPacket.WriteUInt32(VirtualRealmAddress); _worldPacket.WriteUInt32(VirtualRealmAddress);
_worldPacket.WriteUInt32(HotfixCount); _worldPacket.WriteInt32(Hotfixes.Count);
foreach (HotfixRecord hotfixRecord in Hotfixes) foreach (var pair in Hotfixes)
hotfixRecord.Write(_worldPacket); _worldPacket.WriteInt32(pair.Key);
} }
public uint VirtualRealmAddress; public uint VirtualRealmAddress;
public uint HotfixCount; public uint HotfixCount;
public List<HotfixRecord> Hotfixes; public MultiMap<int, HotfixRecord> Hotfixes;
} }
class HotfixRequest : ClientPacket class HotfixRequest : ClientPacket
@@ -110,16 +109,12 @@ namespace Game.Networking.Packets
uint hotfixCount = _worldPacket.ReadUInt32(); uint hotfixCount = _worldPacket.ReadUInt32();
for (var i = 0; i < hotfixCount; ++i) for (var i = 0; i < hotfixCount; ++i)
{ Hotfixes.Add(_worldPacket.ReadInt32());
HotfixRecord hotfixRecord = new();
hotfixRecord.Read(_worldPacket);
Hotfixes.Add(hotfixRecord);
}
} }
public uint ClientBuild; public uint ClientBuild;
public uint DataBuild; public uint DataBuild;
public List<HotfixRecord> Hotfixes = new(); public List<int> Hotfixes = new();
} }
class HotfixConnect : ServerPacket class HotfixConnect : ServerPacket
+12 -1
View File
@@ -1162,7 +1162,14 @@ namespace Game.Networking.Packets
{ {
public MountSpecial(WorldPacket packet) : base(packet) { } public MountSpecial(WorldPacket packet) : base(packet) { }
public override void Read() { } public override void Read()
{
SpellVisualKitIDs = new int[_worldPacket.ReadUInt32()];
for (var i = 0; i < SpellVisualKitIDs.Length; ++i)
SpellVisualKitIDs[i] = _worldPacket.ReadInt32();
}
public int[] SpellVisualKitIDs;
} }
class SpecialMountAnim : ServerPacket class SpecialMountAnim : ServerPacket
@@ -1172,9 +1179,13 @@ namespace Game.Networking.Packets
public override void Write() public override void Write()
{ {
_worldPacket.WritePackedGuid(UnitGUID); _worldPacket.WritePackedGuid(UnitGUID);
_worldPacket.WriteInt32(SpellVisualKitIDs.Count);
foreach (var id in SpellVisualKitIDs)
_worldPacket.WriteInt32(id);
} }
public ObjectGuid UnitGUID; public ObjectGuid UnitGUID;
public List<int> SpellVisualKitIDs = new();
} }
class CrossedInebriationThreshold : ServerPacket class CrossedInebriationThreshold : ServerPacket
@@ -209,6 +209,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteFloat(Pos.Y); _worldPacket.WriteFloat(Pos.Y);
_worldPacket.WriteUInt32(Icon); _worldPacket.WriteUInt32(Icon);
_worldPacket.WriteUInt32(Importance); _worldPacket.WriteUInt32(Importance);
_worldPacket.WriteUInt32(Unknown905);
_worldPacket.WriteBits(Flags, 14); _worldPacket.WriteBits(Flags, 14);
_worldPacket.WriteBits(Name.GetByteCount(), 6); _worldPacket.WriteBits(Name.GetByteCount(), 6);
_worldPacket.FlushBits(); _worldPacket.FlushBits();
@@ -220,6 +221,7 @@ namespace Game.Networking.Packets
public Vector2 Pos; public Vector2 Pos;
public uint Icon; public uint Icon;
public uint Importance; public uint Importance;
public uint Unknown905;
public string Name; public string Name;
} }
@@ -61,10 +61,10 @@ namespace Game.Networking.Packets
foreach (var c in Cases) foreach (var c in Cases)
{ {
_worldPacket.WriteInt32(c.CaseID); _worldPacket.WriteInt32(c.CaseID);
_worldPacket.WriteInt32(c.CaseOpened); _worldPacket.WriteUInt32(c.CaseOpened);
_worldPacket.WriteInt32(c.CaseStatus); _worldPacket.WriteInt32(c.CaseStatus);
_worldPacket.WriteInt16(c.CfgRealmID); _worldPacket.WriteUInt16(c.CfgRealmID);
_worldPacket.WriteInt64(c.CharacterID); _worldPacket.WriteUInt64(c.CharacterID);
_worldPacket.WriteInt32(c.WaitTimeOverrideMinutes); _worldPacket.WriteInt32(c.WaitTimeOverrideMinutes);
_worldPacket.WriteBits(c.Url.GetByteCount(), 11); _worldPacket.WriteBits(c.Url.GetByteCount(), 11);
@@ -80,10 +80,10 @@ namespace Game.Networking.Packets
public struct GMTicketCase public struct GMTicketCase
{ {
public int CaseID; public int CaseID;
public int CaseOpened; public uint CaseOpened;
public int CaseStatus; public int CaseStatus;
public short CfgRealmID; public ushort CfgRealmID;
public long CharacterID; public ulong CharacterID;
public int WaitTimeOverrideMinutes; public int WaitTimeOverrideMinutes;
public string Url; public string Url;
public string WaitTimeOverrideMessage; public string WaitTimeOverrideMessage;
@@ -42,27 +42,27 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32((uint)Result); _worldPacket.WriteUInt32((uint)Result);
_worldPacket.WriteInt32(AuctionableTokenAuctionableList.Count); _worldPacket.WriteInt32(AuctionableTokenAuctionableList.Count);
foreach (AuctionableTokenAuctionable auctionableTokenAuctionable in AuctionableTokenAuctionableList) foreach (AuctionableTokenInfo auctionableTokenAuctionable in AuctionableTokenAuctionableList)
{ {
_worldPacket.WriteUInt64(auctionableTokenAuctionable.UnkInt1); _worldPacket.WriteUInt64(auctionableTokenAuctionable.UnkInt1);
_worldPacket.WriteUInt32(auctionableTokenAuctionable.UnkInt2); _worldPacket.WriteUInt32(auctionableTokenAuctionable.UnkInt2);
_worldPacket.WriteUInt32(auctionableTokenAuctionable.Owner);
_worldPacket.WriteUInt64(auctionableTokenAuctionable.BuyoutPrice); _worldPacket.WriteUInt64(auctionableTokenAuctionable.BuyoutPrice);
_worldPacket.WriteUInt32(auctionableTokenAuctionable.EndTime); _worldPacket.WriteUInt32(auctionableTokenAuctionable.Owner);
_worldPacket.WriteUInt32(auctionableTokenAuctionable.DurationLeft);
} }
} }
public uint UnkInt; // send CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST public uint UnkInt; // send CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST
public TokenResult Result; public TokenResult Result;
List<AuctionableTokenAuctionable> AuctionableTokenAuctionableList =new(); List<AuctionableTokenInfo> AuctionableTokenAuctionableList = new();
struct AuctionableTokenAuctionable struct AuctionableTokenInfo
{ {
public ulong UnkInt1; public ulong UnkInt1;
public uint UnkInt2; public uint UnkInt2;
public uint Owner; public uint Owner;
public ulong BuyoutPrice; public ulong BuyoutPrice;
public uint EndTime; public uint DurationLeft;
} }
} }
@@ -0,0 +1 @@
ALTER TABLE `points_of_interest` ADD `Unknown905` int(11) NOT NULL DEFAULT '0' AFTER `Name`;