diff --git a/Source/Framework/Constants/AccountConst.cs b/Source/Framework/Constants/AccountConst.cs
index fe20643fd..a59677a3f 100644
--- a/Source/Framework/Constants/AccountConst.cs
+++ b/Source/Framework/Constants/AccountConst.cs
@@ -31,12 +31,13 @@ namespace Framework.Constants
PerCharacterTtsCache = 9,
GlobalFlaggedCache = 10,
PerCharacterFlaggedCache = 11,
+ PerCharacterClickBindingsCache = 12,
- Max = 12,
+ Max = 13,
- AllAccountDataCacheMask = 0xFFF,
+ AllAccountDataCacheMask = 0x1FFF,
GlobalCacheMask = 0x515,
- PerCharacterCacheMask = 0xAEA
+ PerCharacterCacheMask = 0x1AEA
}
public enum TutorialAction
diff --git a/Source/Framework/Constants/AreaTriggerConst.cs b/Source/Framework/Constants/AreaTriggerConst.cs
index 1c69a1012..1d8ff6437 100644
--- a/Source/Framework/Constants/AreaTriggerConst.cs
+++ b/Source/Framework/Constants/AreaTriggerConst.cs
@@ -40,7 +40,8 @@ namespace Framework.Constants
Unk = 2,
Polygon = 3,
Cylinder = 4,
- Max = 5
+ Disk = 5,
+ Max
}
public enum AreaTriggerActionTypes
diff --git a/Source/Framework/Constants/Movement/MovementFlags.cs b/Source/Framework/Constants/Movement/MovementFlags.cs
index 3759e2ef9..72e9f5360 100644
--- a/Source/Framework/Constants/Movement/MovementFlags.cs
+++ b/Source/Framework/Constants/Movement/MovementFlags.cs
@@ -93,4 +93,11 @@ namespace Framework.Constants
InterpolatedTurning = 0x40000,
InterpolatedPitching = 0x80000
}
+
+ [Flags]
+ public enum MovementFlags3
+ {
+ None = 0x00,
+ DisableInertia = 0x01,
+ }
}
diff --git a/Source/Framework/Constants/Network/Opcodes.cs b/Source/Framework/Constants/Network/Opcodes.cs
index 3cc6306d1..d020ed38b 100644
--- a/Source/Framework/Constants/Network/Opcodes.cs
+++ b/Source/Framework/Constants/Network/Opcodes.cs
@@ -19,31 +19,31 @@ namespace Framework.Constants
{
public enum ClientOpcodes : uint
{
- AbandonNpeResponse = 0x33f0,
+ AbandonNpeResponse = 0x33f2,
AcceptGuildInvite = 0x35fc,
AcceptTrade = 0x315a,
AcceptWargameInvite = 0x35e0,
AccountNotificationAcknowledged = 0x3732,
- ActivateSoulbind = 0x33df,
+ ActivateSoulbind = 0x33e1,
ActivateTaxi = 0x34b1,
AddonList = 0x35d8,
- AddAccountCosmetic = 0x32aa,
+ AddAccountCosmetic = 0x32a9,
AddBattlenetFriend = 0x365a,
AddFriend = 0x36cd,
AddIgnore = 0x36d1,
- AddToy = 0x32a9,
- AdventureJournalOpenQuest = 0x3206,
- AdventureJournalUpdateSuggestions = 0x33e2,
- AdventureMapStartQuest = 0x335f,
+ AddToy = 0x32a8,
+ AdventureJournalOpenQuest = 0x3205,
+ AdventureJournalUpdateSuggestions = 0x33e4,
+ AdventureMapStartQuest = 0x3360,
AlterAppearance = 0x3503,
AreaSpiritHealerQuery = 0x34b6,
AreaSpiritHealerQueue = 0x34b7,
- AreaTrigger = 0x31d9,
+ AreaTrigger = 0x31d8,
ArtifactAddPower = 0x31ab,
ArtifactSetAppearance = 0x31ad,
- AssignEquipmentSetSpec = 0x3212,
- AttackStop = 0x3261,
- AttackSwing = 0x3260,
+ AssignEquipmentSetSpec = 0x3211,
+ AttackStop = 0x3260,
+ AttackSwing = 0x325f,
AuctionableTokenSell = 0x36e3,
AuctionableTokenSellAtMarketPrice = 0x36e4,
AuctionBrowseQuery = 0x34d6,
@@ -73,15 +73,15 @@ namespace Framework.Constants
AutoGuildBankItem = 0x34bd,
AutoStoreBagItem = 0x399b,
AutoStoreGuildBankItem = 0x34c6,
- AzeriteEmpoweredItemSelectPower = 0x3387,
- AzeriteEmpoweredItemViewed = 0x336a,
- AzeriteEssenceActivateEssence = 0x3389,
- AzeriteEssenceUnlockMilestone = 0x3388,
+ AzeriteEmpoweredItemSelectPower = 0x3388,
+ AzeriteEmpoweredItemViewed = 0x336b,
+ AzeriteEssenceActivateEssence = 0x338a,
+ AzeriteEssenceUnlockMilestone = 0x3389,
BankerActivate = 0x34b9,
BattlefieldLeave = 0x3173,
BattlefieldList = 0x317f,
BattlefieldPort = 0x3537,
- BattlemasterHello = 0x32c4,
+ BattlemasterHello = 0x32c5,
BattlemasterJoin = 0x3530,
BattlemasterJoinArena = 0x3531,
BattlemasterJoinBrawl = 0x3535,
@@ -107,21 +107,21 @@ namespace Framework.Constants
BattlePetSetBattleSlot = 0x362d,
BattlePetSetFlags = 0x3630,
BattlePetSummon = 0x3629,
- BattlePetUpdateDisplayNotify = 0x31e3,
- BattlePetUpdateNotify = 0x31e2,
+ BattlePetUpdateDisplayNotify = 0x31e2,
+ BattlePetUpdateNotify = 0x31e1,
BeginTrade = 0x3157,
BinderActivate = 0x34b8,
BlackMarketBidOnItem = 0x353f,
BlackMarketOpen = 0x353d,
BlackMarketRequestItems = 0x353e,
- BonusRoll = 0x338a,
+ BonusRoll = 0x338b,
BugReport = 0x3685,
BusyTrade = 0x3158,
BuyBackItem = 0x34aa,
BuyBankSlot = 0x34ba,
BuyItem = 0x34a9,
BuyReagentBank = 0x34bb,
- CageBattlePet = 0x31f5,
+ CageBattlePet = 0x31f4,
CalendarAddEvent = 0x367d,
CalendarCommunityInvite = 0x3671,
CalendarComplain = 0x3679,
@@ -139,22 +139,22 @@ namespace Framework.Constants
CalendarUpdateEvent = 0x367e,
CancelAura = 0x31af,
CancelAutoRepeatSpell = 0x34f5,
- CancelCast = 0x32b0,
- CancelChannelling = 0x3279,
- CancelGrowthAura = 0x327e,
- CancelMasterLootRoll = 0x321a,
+ CancelCast = 0x32af,
+ CancelChannelling = 0x3278,
+ CancelGrowthAura = 0x327d,
+ CancelMasterLootRoll = 0x3219,
CancelModSpeedNoControlAuras = 0x31ae,
- CancelMountAura = 0x3291,
+ CancelMountAura = 0x3290,
CancelQueuedSpell = 0x3180,
CancelTempEnchantment = 0x3500,
CancelTrade = 0x315c,
CanDuel = 0x3662,
CanRedeemTokenForBalance = 0x3704,
- CastSpell = 0x32ad,
+ CastSpell = 0x32ac,
ChallengeModeRequestLeaders = 0x3090,
- ChangeBagSlotFlag = 0x3344,
- ChangeBankBagSlotFlag = 0x3345,
- ChangeMonumentAppearance = 0x3325,
+ ChangeBagSlotFlag = 0x3345,
+ ChangeBankBagSlotFlag = 0x3346,
+ ChangeMonumentAppearance = 0x3326,
ChangeRealmTicket = 0x36f7,
ChangeSubGroup = 0x364c,
CharacterCheckUpgrade = 0x36c3,
@@ -201,17 +201,17 @@ namespace Framework.Constants
ChatReportIgnored = 0x37cb,
ChatUnregisterAllAddonPrefixes = 0x37ce,
CheckCharacterNameAvailability = 0x3645,
- CheckIsAdventureMapPoiValid = 0x3252,
+ CheckIsAdventureMapPoiValid = 0x3251,
ChoiceResponse = 0x32b4,
- ChromieTimeSelectExpansion = 0x33de,
- ClaimWeeklyReward = 0x33bb,
+ ChromieTimeSelectExpansion = 0x33e0,
+ ClaimWeeklyReward = 0x33bc,
ClearNewAppearance = 0x312f,
ClearRaidMarker = 0x31a7,
ClearTradeItem = 0x315e,
ClientPortGraveyard = 0x3539,
CloseInteraction = 0x3499,
CloseQuestChoice = 0x32b5,
- CloseRuneforgeInteraction = 0x33e6,
+ CloseRuneforgeInteraction = 0x33e8,
ClubFinderApplicationResponse = 0x371b,
ClubFinderGetApplicantsList = 0x3719,
ClubFinderPost = 0x3716,
@@ -229,6 +229,7 @@ namespace Framework.Constants
CommentatorGetMapInfo = 0x35f1,
CommentatorGetPlayerCooldowns = 0x35f3,
CommentatorGetPlayerInfo = 0x35f2,
+ CommentatorSpectate = 0x3737,
CommentatorStartWargame = 0x35ef,
CommerceTokenGetCount = 0x36e1,
CommerceTokenGetLog = 0x36eb,
@@ -237,29 +238,29 @@ namespace Framework.Constants
CompleteCinematic = 0x3557,
CompleteMovie = 0x34eb,
ConfirmArtifactRespec = 0x31ac,
- ConfirmRespecWipe = 0x3214,
+ ConfirmRespecWipe = 0x3213,
ConnectToFailed = 0x35d4,
ConsumableTokenBuy = 0x36e6,
ConsumableTokenBuyAtMarketPrice = 0x36e7,
ConsumableTokenCanVeteranBuy = 0x36e5,
ConsumableTokenRedeem = 0x36e9,
ConsumableTokenRedeemConfirmation = 0x36ea,
- ContributionContribute = 0x356a,
- ContributionLastUpdateRequest = 0x356b,
+ ContributionContribute = 0x356b,
+ ContributionLastUpdateRequest = 0x356c,
ConversationCinematicReady = 0x3559,
ConversationLineStarted = 0x3558,
ConvertRaid = 0x364e,
- CovenantRenownRequestCatchupState = 0x357e,
+ CovenantRenownRequestCatchupState = 0x357f,
CreateCharacter = 0x3644,
- CreateShipment = 0x3311,
+ CreateShipment = 0x3312,
DbQueryBulk = 0x35e4,
DeclineGuildInvites = 0x352d,
DeclinePetition = 0x3546,
DeleteEquipmentSet = 0x3519,
DelFriend = 0x36ce,
DelIgnore = 0x36d2,
- DepositReagentBank = 0x334d,
- DestroyItem = 0x32a3,
+ DepositReagentBank = 0x334e,
+ DestroyItem = 0x32a2,
DfBootPlayerVote = 0x3616,
DfConfirmExpandSearch = 0x3608,
DfGetJoinStatus = 0x3614,
@@ -270,13 +271,13 @@ namespace Framework.Constants
DfReadyCheckResponse = 0x3619,
DfSetRoles = 0x3615,
DfTeleport = 0x3617,
- DiscardedTimeSyncAcks = 0x3a3e,
+ DiscardedTimeSyncAcks = 0x3a42,
DismissCritter = 0x3507,
DoCountdown = 0x3715,
- DoMasterLootRoll = 0x3219,
+ DoMasterLootRoll = 0x3218,
DoReadyCheck = 0x3634,
DuelResponse = 0x34f0,
- EjectPassenger = 0x3247,
+ EjectPassenger = 0x3246,
Emote = 0x3553,
EnableNagle = 0x376b,
EnableTaxiNode = 0x34af,
@@ -289,51 +290,51 @@ namespace Framework.Constants
GameEventDebugEnable = 0x31b2,
GameObjReportUse = 0x34fd,
GameObjUse = 0x34fc,
- GarrisonAddFollowerHealth = 0x330c,
- GarrisonAssignFollowerToBuilding = 0x32f2,
- GarrisonCancelConstruction = 0x32df,
- GarrisonCheckUpgradeable = 0x3340,
- GarrisonCompleteMission = 0x3332,
- GarrisonFullyHealAllFollowers = 0x330d,
- GarrisonGenerateRecruits = 0x32f5,
- GarrisonGetClassSpecCategoryInfo = 0x3304,
- GarrisonGetMapData = 0x330b,
- GarrisonGetMissionReward = 0x3363,
- GarrisonLearnTalent = 0x3300,
- GarrisonMissionBonusRoll = 0x3334,
- GarrisonPurchaseBuilding = 0x32db,
- GarrisonRecruitFollower = 0x32f7,
- GarrisonRemoveFollower = 0x3329,
- GarrisonRemoveFollowerFromBuilding = 0x32f3,
- GarrisonRenameFollower = 0x32f4,
- GarrisonRequestBlueprintAndSpecializationData = 0x32da,
- GarrisonRequestShipmentInfo = 0x330f,
- GarrisonResearchTalent = 0x32f8,
- GarrisonSetBuildingActive = 0x32dc,
- GarrisonSetFollowerFavorite = 0x32f0,
- GarrisonSetFollowerInactive = 0x32e8,
- GarrisonSetRecruitmentPreferences = 0x32f6,
- GarrisonSocketTalent = 0x33f3,
- GarrisonStartMission = 0x3331,
- GarrisonSwapBuildings = 0x32e0,
+ GarrisonAddFollowerHealth = 0x330d,
+ GarrisonAssignFollowerToBuilding = 0x32f3,
+ GarrisonCancelConstruction = 0x32e0,
+ GarrisonCheckUpgradeable = 0x3341,
+ GarrisonCompleteMission = 0x3333,
+ GarrisonFullyHealAllFollowers = 0x330e,
+ GarrisonGenerateRecruits = 0x32f6,
+ GarrisonGetClassSpecCategoryInfo = 0x3305,
+ GarrisonGetMapData = 0x330c,
+ GarrisonGetMissionReward = 0x3364,
+ GarrisonLearnTalent = 0x3301,
+ GarrisonMissionBonusRoll = 0x3335,
+ GarrisonPurchaseBuilding = 0x32dc,
+ GarrisonRecruitFollower = 0x32f8,
+ GarrisonRemoveFollower = 0x332a,
+ GarrisonRemoveFollowerFromBuilding = 0x32f4,
+ GarrisonRenameFollower = 0x32f5,
+ GarrisonRequestBlueprintAndSpecializationData = 0x32db,
+ GarrisonRequestShipmentInfo = 0x3310,
+ GarrisonResearchTalent = 0x32f9,
+ GarrisonSetBuildingActive = 0x32dd,
+ GarrisonSetFollowerFavorite = 0x32f1,
+ GarrisonSetFollowerInactive = 0x32e9,
+ GarrisonSetRecruitmentPreferences = 0x32f7,
+ GarrisonSocketTalent = 0x33f5,
+ GarrisonStartMission = 0x3332,
+ GarrisonSwapBuildings = 0x32e1,
GenerateRandomCharacterName = 0x35e7,
GetAccountCharacterList = 0x36b3,
GetAccountNotifications = 0x3731,
- GetGarrisonInfo = 0x32d5,
+ GetGarrisonInfo = 0x32d6,
GetItemPurchaseData = 0x3541,
- GetLandingPageShipments = 0x3310,
- GetMirrorImageData = 0x32a7,
+ GetLandingPageShipments = 0x3311,
+ GetMirrorImageData = 0x32a6,
GetPvpOptionsEnabled = 0x35ee,
GetRafAccountInfo = 0x371f,
GetRemainingGameTime = 0x36e8,
- GetTrophyList = 0x3322,
+ GetTrophyList = 0x3323,
GetUndeleteCharacterCooldownStatus = 0x36dc,
GetVasAccountCharacterList = 0x36ed,
GetVasTransferTargetRealmList = 0x36ee,
GmTicketAcknowledgeSurvey = 0x3690,
GmTicketGetCaseStatus = 0x368f,
GmTicketGetSystemStatus = 0x368e,
- GossipRefreshOptions = 0x357d,
+ GossipRefreshOptions = 0x357e,
GossipSelectOption = 0x349a,
GuildAddBattlenetFriend = 0x308e,
GuildAddRank = 0x3065,
@@ -386,56 +387,56 @@ namespace Framework.Constants
InitiateTrade = 0x3156,
Inspect = 0x353b,
InstanceLockResponse = 0x351a,
- IslandQueue = 0x33b7,
+ IslandQueue = 0x33b8,
ItemPurchaseRefund = 0x3542,
- ItemTextQuery = 0x3341,
- JoinPetBattleQueue = 0x31e0,
+ ItemTextQuery = 0x3342,
+ JoinPetBattleQueue = 0x31df,
JoinRatedBattleground = 0x3179,
KeepAlive = 0x367f,
- KeyboundOverride = 0x322c,
- LatencyReport = 0x3772,
- LearnPvpTalents = 0x3569,
- LearnTalents = 0x3567,
+ KeyboundOverride = 0x322b,
+ LatencyReport = 0x3771,
+ LearnPvpTalents = 0x356a,
+ LearnTalents = 0x3568,
LeaveGroup = 0x3649,
- LeavePetBattleQueue = 0x31e1,
+ LeavePetBattleQueue = 0x31e0,
LfgListApplyToGroup = 0x360d,
LfgListCancelApplication = 0x360e,
LfgListDeclineApplicant = 0x360f,
LfgListGetStatus = 0x360b,
LfgListInviteApplicant = 0x3610,
LfgListInviteResponse = 0x3611,
- LfgListJoin = 0x3385,
+ LfgListJoin = 0x3386,
LfgListLeave = 0x360a,
LfgListSearch = 0x360c,
- LfgListUpdateRequest = 0x3386,
+ LfgListUpdateRequest = 0x3387,
ListInventory = 0x34a7,
LiveRegionAccountRestore = 0x36b6,
LiveRegionCharacterCopy = 0x36b5,
LiveRegionGetAccountCharacterList = 0x36b4,
LiveRegionKeyBindingsCopy = 0x36b7,
LoadingScreenNotify = 0x35f8,
- LoadSelectedTrophy = 0x3323,
+ LoadSelectedTrophy = 0x3324,
LogoutCancel = 0x34e6,
LogoutInstant = 0x34e7,
LogoutRequest = 0x34e4,
LogDisconnect = 0x3769,
LogStreamingError = 0x376d,
- LootItem = 0x3217,
- LootMoney = 0x3216,
- LootRelease = 0x321b,
- LootRoll = 0x321c,
- LootUnit = 0x3215,
+ LootItem = 0x3216,
+ LootMoney = 0x3215,
+ LootRelease = 0x321a,
+ LootRoll = 0x321b,
+ LootUnit = 0x3214,
LowLevelRaid1 = 0x369f,
LowLevelRaid2 = 0x3521,
MailCreateTextItem = 0x354d,
- MailDelete = 0x322e,
+ MailDelete = 0x322d,
MailGetList = 0x3548,
MailMarkAsRead = 0x354c,
MailReturnToSender = 0x3655,
MailTakeItem = 0x354a,
MailTakeMoney = 0x3549,
- MakeContitionalAppearancePermanent = 0x3230,
- MasterLootItem = 0x3218,
+ MakeContitionalAppearancePermanent = 0x322f,
+ MasterLootItem = 0x3217,
MergeGuildBankItemWithGuildBankItem = 0x34c7,
MergeGuildBankItemWithItem = 0x34c4,
MergeItemWithGuildBankItem = 0x34c2,
@@ -443,110 +444,115 @@ namespace Framework.Constants
MissileTrajectoryCollision = 0x318b,
MountClearFanfare = 0x312d,
MountSetFavorite = 0x3632,
- MountSpecialAnim = 0x3292,
- MoveApplyMovementForceAck = 0x3a14,
- MoveChangeTransport = 0x3a2e,
- MoveChangeVehicleSeats = 0x3a33,
- MoveCollisionDisableAck = 0x3a36,
- MoveCollisionEnableAck = 0x3a37,
- MoveDismissVehicle = 0x3a32,
+ MountSpecialAnim = 0x3291,
+ MoveApplyInertiaAck = 0x3a4f,
+ MoveApplyMovementForceAck = 0x3a16,
+ MoveChangeTransport = 0x3a30,
+ MoveChangeVehicleSeats = 0x3a35,
+ MoveCollisionDisableAck = 0x3a3a,
+ MoveCollisionEnableAck = 0x3a3b,
+ MoveDismissVehicle = 0x3a34,
MoveDoubleJump = 0x39eb,
- MoveEnableDoubleJumpAck = 0x3a1d,
- MoveEnableSwimToFlyTransAck = 0x3a23,
- MoveFallLand = 0x39fa,
- MoveFallReset = 0x3a18,
- MoveFeatherFallAck = 0x3a1b,
- MoveForceFlightBackSpeedChangeAck = 0x3a2d,
- MoveForceFlightSpeedChangeAck = 0x3a2c,
- MoveForcePitchRateChangeAck = 0x3a31,
- MoveForceRootAck = 0x3a0d,
- MoveForceRunBackSpeedChangeAck = 0x3a0b,
- MoveForceRunSpeedChangeAck = 0x3a0a,
- MoveForceSwimBackSpeedChangeAck = 0x3a21,
- MoveForceSwimSpeedChangeAck = 0x3a0c,
- MoveForceTurnRateChangeAck = 0x3a22,
- MoveForceUnrootAck = 0x3a0e,
- MoveForceWalkSpeedChangeAck = 0x3a20,
- MoveGravityDisableAck = 0x3a34,
- MoveGravityEnableAck = 0x3a35,
+ MoveEnableDoubleJumpAck = 0x3a1f,
+ MoveEnableSwimToFlyTransAck = 0x3a25,
+ MoveFallLand = 0x39fb,
+ MoveFallReset = 0x3a1a,
+ MoveFeatherFallAck = 0x3a1d,
+ MoveForceFlightBackSpeedChangeAck = 0x3a2f,
+ MoveForceFlightSpeedChangeAck = 0x3a2e,
+ MoveForcePitchRateChangeAck = 0x3a33,
+ MoveForceRootAck = 0x3a0f,
+ MoveForceRunBackSpeedChangeAck = 0x3a0d,
+ MoveForceRunSpeedChangeAck = 0x3a0c,
+ MoveForceSwimBackSpeedChangeAck = 0x3a23,
+ MoveForceSwimSpeedChangeAck = 0x3a0e,
+ MoveForceTurnRateChangeAck = 0x3a24,
+ MoveForceUnrootAck = 0x3a10,
+ MoveForceWalkSpeedChangeAck = 0x3a22,
+ MoveGravityDisableAck = 0x3a36,
+ MoveGravityEnableAck = 0x3a37,
MoveGuildBankItem = 0x34c1,
- MoveHeartbeat = 0x3a0f,
- MoveHoverAck = 0x3a12,
- MoveInitActiveMoverComplete = 0x3a43,
+ MoveHeartbeat = 0x3a11,
+ MoveHoverAck = 0x3a14,
+ MoveInertiaDisableAck = 0x3a38,
+ MoveInertiaEnableAck = 0x3a39,
+ MoveInitActiveMoverComplete = 0x3a47,
MoveJump = 0x39ea,
- MoveKnockBackAck = 0x3a11,
- MoveRemoveMovementForces = 0x3a16,
- MoveRemoveMovementForceAck = 0x3a15,
- MoveSeamlessTransferComplete = 0x3a41,
- MoveSetCanFlyAck = 0x3a26,
- MoveSetCanTurnWhileFallingAck = 0x3a24,
- MoveSetCollisionHeightAck = 0x3a38,
- MoveSetFacing = 0x3a08,
- MoveSetFly = 0x3a27,
- MoveSetIgnoreMovementForcesAck = 0x3a25,
- MoveSetModMovementForceMagnitudeAck = 0x3a3f,
- MoveSetPitch = 0x3a09,
+ MoveKnockBackAck = 0x3a13,
+ MoveRemoveInertiaAck = 0x3a50,
+ MoveRemoveMovementForces = 0x3a18,
+ MoveRemoveMovementForceAck = 0x3a17,
+ MoveSeamlessTransferComplete = 0x3a45,
+ MoveSetCanFlyAck = 0x3a28,
+ MoveSetCanTurnWhileFallingAck = 0x3a26,
+ MoveSetCollisionHeightAck = 0x3a3c,
+ MoveSetFacing = 0x3a09,
+ MoveSetFacingHeartbeat = 0x3a0a,
+ MoveSetFly = 0x3a29,
+ MoveSetIgnoreMovementForcesAck = 0x3a27,
+ MoveSetModMovementForceMagnitudeAck = 0x3a43,
+ MoveSetPitch = 0x3a0b,
MoveSetRunMode = 0x39f2,
- MoveSetTurnRateCheat = 0x3a05,
- MoveSetVehicleRecIdAck = 0x3a13,
+ MoveSetTurnRateCheat = 0x3a06,
+ MoveSetVehicleRecIdAck = 0x3a15,
MoveSetWalkMode = 0x39f3,
- MoveSplineDone = 0x3a17,
- MoveStartAscend = 0x3a28,
+ MoveSplineDone = 0x3a19,
+ MoveStartAscend = 0x3a2a,
MoveStartBackward = 0x39e5,
- MoveStartDescend = 0x3a2f,
+ MoveStartDescend = 0x3a31,
MoveStartForward = 0x39e4,
MoveStartPitchDown = 0x39f0,
MoveStartPitchUp = 0x39ef,
MoveStartStrafeLeft = 0x39e7,
MoveStartStrafeRight = 0x39e8,
- MoveStartSwim = 0x39fb,
+ MoveStartSwim = 0x39fc,
MoveStartTurnLeft = 0x39ec,
MoveStartTurnRight = 0x39ed,
MoveStop = 0x39e6,
- MoveStopAscend = 0x3a29,
+ MoveStopAscend = 0x3a2b,
MoveStopPitch = 0x39f1,
MoveStopStrafe = 0x39e9,
- MoveStopSwim = 0x39fc,
+ MoveStopSwim = 0x39fd,
MoveStopTurn = 0x39ee,
- MoveTeleportAck = 0x39f9,
- MoveTimeSkipped = 0x3a1a,
- MoveUpdateFallSpeed = 0x3a19,
- MoveWaterWalkAck = 0x3a1c,
+ MoveTeleportAck = 0x39fa,
+ MoveTimeSkipped = 0x3a1c,
+ MoveUpdateFallSpeed = 0x3a1b,
+ MoveWaterWalkAck = 0x3a1e,
MythicPlusRequestMapStats = 0x308f,
- NeutralPlayerSelectFaction = 0x31d6,
+ NeutralPlayerSelectFaction = 0x31d5,
NextCinematicCamera = 0x3556,
ObjectUpdateFailed = 0x3181,
ObjectUpdateRescued = 0x3182,
- OfferPetition = 0x33dd,
+ OfferPetition = 0x33df,
OpeningCinematic = 0x3555,
- OpenItem = 0x3342,
- OpenMissionNpc = 0x3306,
- OpenShipmentNpc = 0x330e,
- OpenTradeskillNpc = 0x3319,
+ OpenItem = 0x3343,
+ OpenMissionNpc = 0x3307,
+ OpenShipmentNpc = 0x330f,
+ OpenTradeskillNpc = 0x331a,
OptOutOfLoot = 0x3504,
OverrideScreenFlash = 0x352e,
PartyInvite = 0x3602,
PartyInviteResponse = 0x3604,
PartyUninvite = 0x3647,
- PerformItemInteraction = 0x3238,
+ PerformItemInteraction = 0x3237,
PetitionBuy = 0x34cf,
PetitionRenameGuild = 0x36c6,
PetitionShowList = 0x34ce,
PetitionShowSignatures = 0x34d0,
PetAbandon = 0x3493,
PetAction = 0x3491,
- PetBattleFinalNotify = 0x31e5,
+ PetBattleFinalNotify = 0x31e4,
PetBattleInput = 0x3641,
- PetBattleQueueProposeMatchResult = 0x322d,
- PetBattleQuitNotify = 0x31e4,
+ PetBattleQueueProposeMatchResult = 0x322c,
+ PetBattleQuitNotify = 0x31e3,
PetBattleReplaceFrontPet = 0x3642,
- PetBattleRequestPvp = 0x31de,
- PetBattleRequestUpdate = 0x31df,
- PetBattleRequestWild = 0x31dc,
- PetBattleScriptErrorNotify = 0x31e6,
- PetBattleWildLocationFail = 0x31dd,
+ PetBattleRequestPvp = 0x31dd,
+ PetBattleRequestUpdate = 0x31de,
+ PetBattleRequestWild = 0x31db,
+ PetBattleScriptErrorNotify = 0x31e5,
+ PetBattleWildLocationFail = 0x31dc,
PetCancelAura = 0x3494,
- PetCastSpell = 0x32ac,
+ PetCastSpell = 0x32ab,
PetRename = 0x3684,
PetSetAction = 0x3490,
PetSpellAutocast = 0x3495,
@@ -555,29 +561,29 @@ namespace Framework.Constants
PlayerLogin = 0x35ea,
PushQuestToParty = 0x34a5,
PvpLogData = 0x317c,
- QueryBattlePetName = 0x3285,
+ QueryBattlePetName = 0x3284,
QueryCorpseLocationFromClient = 0x3660,
QueryCorpseTransport = 0x3661,
QueryCountdownTimer = 0x31aa,
- QueryCreature = 0x327f,
- QueryGameObject = 0x3280,
- QueryGarrisonPetName = 0x3286,
+ QueryCreature = 0x327e,
+ QueryGameObject = 0x327f,
+ QueryGarrisonPetName = 0x3285,
QueryGuildInfo = 0x368a,
QueryInspectAchievements = 0x350e,
QueryNextMailTime = 0x354b,
- QueryNpcText = 0x3281,
- QueryPageText = 0x3283,
- QueryPetition = 0x3287,
- QueryPetName = 0x3284,
- QueryPlayerName = 0x376f,
- QueryPlayerNamesForCommunity = 0x3771,
- QueryPlayerNameByCommunityId = 0x3770,
+ QueryNpcText = 0x3280,
+ QueryPageText = 0x3282,
+ QueryPetition = 0x3286,
+ QueryPetName = 0x3283,
+ QueryPlayerName = 0x3772,
+ QueryPlayerNamesForCommunity = 0x3770,
+ QueryPlayerNameByCommunityId = 0x376f,
QueryQuestCompletionNpcs = 0x3175,
- QueryQuestInfo = 0x3282,
+ QueryQuestInfo = 0x3281,
QueryRealmName = 0x3689,
QueryScenarioPoi = 0x3656,
QueryTime = 0x34e3,
- QueryTreasurePicker = 0x3366,
+ QueryTreasurePicker = 0x3367,
QueryVoidStorage = 0x31a3,
QuestConfirmAccept = 0x34a4,
QuestGiverAcceptQuest = 0x349e,
@@ -592,8 +598,8 @@ namespace Framework.Constants
QuestLogRemoveQuest = 0x3540,
QuestPoiQuery = 0x36ad,
QuestPushResult = 0x34a6,
- QuestSessionBeginResponse = 0x33ce,
- QuestSessionRequestStart = 0x33cd,
+ QuestSessionBeginResponse = 0x33d0,
+ QuestSessionRequestStart = 0x33cf,
QuestSessionRequestStop = 0x372a,
QueuedMessagesEnd = 0x376c,
QuickJoinAutoAcceptRequests = 0x3703,
@@ -607,41 +613,41 @@ namespace Framework.Constants
RafUpdateRecruitmentInfo = 0x3721,
RandomRoll = 0x3654,
ReadyCheckResponse = 0x3635,
- ReadItem = 0x3343,
+ ReadItem = 0x3344,
ReclaimCorpse = 0x34e9,
- RemoveNewItem = 0x3369,
+ RemoveNewItem = 0x336a,
RemoveRafRecruit = 0x3723,
ReorderCharacters = 0x35e9,
RepairItem = 0x34fa,
- ReplaceTrophy = 0x3324,
+ ReplaceTrophy = 0x3325,
RepopRequest = 0x3538,
ReportClientVariables = 0x36fd,
ReportEnabledAddons = 0x36fc,
ReportKeybindingExecutionCounts = 0x36fe,
ReportPvpPlayerAfk = 0x3502,
- ReportServerLag = 0x33c6,
- ReportStuckInCombat = 0x33c7,
+ ReportServerLag = 0x33c8,
+ ReportStuckInCombat = 0x33c9,
RequestAccountData = 0x3694,
- RequestAreaPoiUpdate = 0x3368,
+ RequestAreaPoiUpdate = 0x3369,
RequestBattlefieldStatus = 0x35dc,
RequestCategoryCooldowns = 0x317e,
RequestCemeteryList = 0x3177,
RequestCharacterGuildFollowInfo = 0x368b,
- RequestConquestFormulaConstants = 0x32c7,
- RequestCovenantCallings = 0x33b9,
+ RequestConquestFormulaConstants = 0x32c8,
+ RequestCovenantCallings = 0x33ba,
RequestCrowdControlSpell = 0x353c,
- RequestForcedReactions = 0x3210,
- RequestGarrisonTalentWorldQuestUnlocks = 0x33f2,
+ RequestForcedReactions = 0x320f,
+ RequestGarrisonTalentWorldQuestUnlocks = 0x33f4,
RequestGuildPartyState = 0x31a9,
RequestGuildRewardsList = 0x31a8,
- RequestLatestSplashScreen = 0x33c8,
+ RequestLatestSplashScreen = 0x33ca,
RequestLfgListBlacklist = 0x32b7,
- RequestMythicPlusAffixes = 0x320a,
- RequestMythicPlusSeasonData = 0x320b,
+ RequestMythicPlusAffixes = 0x3209,
+ RequestMythicPlusSeasonData = 0x320a,
RequestPartyJoinUpdates = 0x35f7,
RequestPartyMemberStats = 0x3653,
RequestPetInfo = 0x3496,
- RequestPlayedTime = 0x328a,
+ RequestPlayedTime = 0x3289,
RequestPvpRewards = 0x3196,
RequestRaidInfo = 0x36c7,
RequestRatedPvpInfo = 0x35e3,
@@ -649,24 +655,24 @@ namespace Framework.Constants
RequestResearchHistory = 0x3167,
RequestScheduledPvpInfo = 0x3197,
RequestStabledPets = 0x3497,
- RequestVehicleExit = 0x3242,
- RequestVehicleNextSeat = 0x3244,
- RequestVehiclePrevSeat = 0x3243,
- RequestVehicleSwitchSeat = 0x3245,
- RequestWeeklyRewards = 0x33bc,
- RequestWorldQuestUpdate = 0x3367,
- ResetChallengeMode = 0x3208,
- ResetChallengeModeCheat = 0x3209,
+ RequestVehicleExit = 0x3241,
+ RequestVehicleNextSeat = 0x3243,
+ RequestVehiclePrevSeat = 0x3242,
+ RequestVehicleSwitchSeat = 0x3244,
+ RequestWeeklyRewards = 0x33bd,
+ RequestWorldQuestUpdate = 0x3368,
+ ResetChallengeMode = 0x3207,
+ ResetChallengeModeCheat = 0x3208,
ResetInstances = 0x3668,
ResurrectResponse = 0x3683,
- RevertMonumentAppearance = 0x3326,
- RideVehicleInteract = 0x3246,
+ RevertMonumentAppearance = 0x3327,
+ RideVehicleInteract = 0x3245,
SaveCufProfiles = 0x318c,
SaveEquipmentSet = 0x3518,
SaveGuildEmblem = 0x32bb,
- ScenePlaybackCanceled = 0x3229,
- ScenePlaybackComplete = 0x3228,
- SceneTriggerEvent = 0x322a,
+ ScenePlaybackCanceled = 0x3228,
+ ScenePlaybackComplete = 0x3227,
+ SceneTriggerEvent = 0x3229,
SelfRes = 0x3543,
SellItem = 0x34a8,
SendCharacterClubInvitation = 0x36f6,
@@ -674,25 +680,25 @@ namespace Framework.Constants
SendMail = 0x35fa,
SendTextEmote = 0x348e,
ServerTimeOffsetRequest = 0x369a,
- SetAchievementsHidden = 0x322f,
+ SetAchievementsHidden = 0x322e,
SetActionBarToggles = 0x3544,
SetActionButton = 0x3636,
- SetActiveMover = 0x3a39,
- SetAdvancedCombatLogging = 0x32c8,
+ SetActiveMover = 0x3a3d,
+ SetAdvancedCombatLogging = 0x32c9,
SetAssistantLeader = 0x364f,
- SetBackpackAutosortDisabled = 0x3346,
- SetBankAutosortDisabled = 0x3347,
+ SetBackpackAutosortDisabled = 0x3347,
+ SetBankAutosortDisabled = 0x3348,
SetChatDisabled = 0x3735,
SetContactNotes = 0x36cf,
SetCurrencyFlags = 0x3169,
- SetDifficultyId = 0x322b,
+ SetDifficultyId = 0x322a,
SetDungeonDifficulty = 0x3682,
SetEveryoneIsAssistant = 0x3618,
SetFactionAtWar = 0x34ec,
SetFactionInactive = 0x34ee,
SetFactionNotAtWar = 0x34ed,
SetGameEventDebugViewState = 0x31ba,
- SetInsertItemsLeftToRight = 0x3349,
+ SetInsertItemsLeftToRight = 0x334a,
SetLootMethod = 0x3648,
SetLootSpecialization = 0x3551,
SetPartyAssignment = 0x3651,
@@ -706,22 +712,22 @@ namespace Framework.Constants
SetSavedInstanceExtend = 0x3686,
SetSelection = 0x353a,
SetSheathed = 0x348f,
- SetSortBagsRightToLeft = 0x3348,
+ SetSortBagsRightToLeft = 0x3349,
SetTaxiBenchmarkMode = 0x3501,
- SetTitle = 0x3290,
+ SetTitle = 0x328f,
SetTradeCurrency = 0x3160,
SetTradeGold = 0x315f,
SetTradeItem = 0x315d,
- SetUsingPartyGarrison = 0x3308,
+ SetUsingPartyGarrison = 0x3309,
SetWarMode = 0x32c0,
SetWatchedFaction = 0x34ef,
ShowTradeSkill = 0x36bf,
SignPetition = 0x3545,
SilencePartyTalker = 0x3652,
SocketGems = 0x34f9,
- SortBags = 0x334a,
- SortBankBags = 0x334b,
- SortReagentBankBags = 0x334c,
+ SortBags = 0x334b,
+ SortBankBags = 0x334c,
+ SortReagentBankBags = 0x334d,
SpellClick = 0x349b,
SpiritHealerActivate = 0x34b5,
SplitGuildBankItem = 0x34c8,
@@ -734,7 +740,7 @@ namespace Framework.Constants
StartWarGame = 0x35de,
StoreGuildBankItem = 0x34be,
SubmitUserFeedback = 0x3693,
- SubscriptionInterstitialResponse = 0x33e7,
+ SubscriptionInterstitialResponse = 0x33e9,
SummonResponse = 0x366a,
SupportTicketSubmitComplaint = 0x3646,
SurrenderArena = 0x3174,
@@ -751,15 +757,15 @@ namespace Framework.Constants
TaxiNodeStatusQuery = 0x34ae,
TaxiQueryAvailableNodes = 0x34b0,
TaxiRequestEarlyLanding = 0x34b2,
- TimeAdjustmentResponse = 0x3a3d,
- TimeSyncResponse = 0x3a3a,
- TimeSyncResponseDropped = 0x3a3c,
- TimeSyncResponseFailed = 0x3a3b,
+ TimeAdjustmentResponse = 0x3a41,
+ TimeSyncResponse = 0x3a3e,
+ TimeSyncResponseDropped = 0x3a40,
+ TimeSyncResponseFailed = 0x3a3f,
ToggleDifficulty = 0x3657,
TogglePvp = 0x32be,
TotemDestroyed = 0x3506,
ToyClearFanfare = 0x312e,
- TradeSkillSetFavorite = 0x3365,
+ TradeSkillSetFavorite = 0x3366,
TrainerBuySpell = 0x34b4,
TrainerList = 0x34b3,
TransmogrifyItems = 0x3198,
@@ -768,26 +774,27 @@ namespace Framework.Constants
TwitterCheckStatus = 0x312a,
TwitterConnect = 0x3127,
TwitterDisconnect = 0x312b,
- UiMapQuestLinesRequest = 0x33b8,
+ UiMapQuestLinesRequest = 0x33b9,
UnacceptTrade = 0x315b,
UndeleteCharacter = 0x36db,
UnlearnSkill = 0x34f3,
UnlearnSpecialization = 0x31a6,
UnlockVoidStorage = 0x31a2,
UpdateAccountData = 0x3695,
- UpdateAreaTriggerVisual = 0x32af,
+ UpdateAreaTriggerVisual = 0x32ae,
UpdateClientSettings = 0x3664,
- UpdateMissileTrajectory = 0x3a40,
+ UpdateMissileTrajectory = 0x3a44,
UpdateRaidTarget = 0x3650,
- UpdateSpellVisual = 0x32ae,
+ UpdateSpellVisual = 0x32ad,
UpdateVasPurchaseStates = 0x36f0,
- UpgradeGarrison = 0x32d0,
- UpgradeRuneforgeLegendary = 0x33e5,
+ UpgradeGarrison = 0x32d1,
+ UpgradeRuneforgeLegendary = 0x33e7,
UsedFollow = 0x3187,
- UseCritterItem = 0x324c,
+ UseCritterItem = 0x324b,
UseEquipmentSet = 0x3995,
- UseItem = 0x32a8,
- UseToy = 0x32ab,
+ UseItem = 0x32a7,
+ UseToy = 0x32aa,
+ VasAssignDistribution = 0x3736,
VasCheckTransferOk = 0x3708,
VasGetQueueMinutes = 0x3707,
VasGetServiceStatus = 0x3706,
@@ -809,204 +816,205 @@ namespace Framework.Constants
public enum ServerOpcodes : uint
{
AbortNewWorld = 0x259a,
- AccountCosmeticAdded = 0x2884,
- AccountCriteriaUpdate = 0x286a,
- AccountDataTimes = 0x26fb,
+ AccountCosmeticAdded = 0x2885,
+ AccountCriteriaUpdate = 0x286b,
+ AccountDataTimes = 0x26fd,
AccountMountUpdate = 0x25ac,
- AccountNotificationsResponse = 0x2883,
+ AccountNotificationsResponse = 0x2884,
AccountToyUpdate = 0x25ad,
AccountTransmogSetFavoritesUpdate = 0x25b0,
AccountTransmogUpdate = 0x25af,
- AchievementDeleted = 0x26da,
- AchievementEarned = 0x2639,
- ActivateEssenceFailed = 0x3016,
- ActivateSoulbindFailed = 0x3018,
- ActivateTaxiReply = 0x2672,
+ AchievementDeleted = 0x26dc,
+ AchievementEarned = 0x263a,
+ ActivateEssenceFailed = 0x3015,
+ ActivateSoulbindFailed = 0x3017,
+ ActivateTaxiReply = 0x2674,
ActiveGlyphs = 0x2c54,
- AddonListRequest = 0x2638,
- AddBattlenetFriendResponse = 0x2633,
+ AddonListRequest = 0x2639,
+ AddBattlenetFriendResponse = 0x2634,
AddItemPassive = 0x25a8,
- AddLossOfControl = 0x2666,
- AddRunePower = 0x26ac,
- AdjustSplineDuration = 0x25cb,
- AdvancedCombatLog = 0x2880,
- AdventureJournalDataResponse = 0x287a,
- AdventureMapOpenNpc = 0x27e3,
- AeLootTargets = 0x260e,
- AeLootTargetAck = 0x260f,
- AiReaction = 0x26a9,
- AlliedRaceDetails = 0x27e9,
+ AddLossOfControl = 0x2668,
+ AddRunePower = 0x26ae,
+ AdjustSplineDuration = 0x25cc,
+ AdvancedCombatLog = 0x2881,
+ AdventureJournalDataResponse = 0x287b,
+ AdventureMapOpenNpc = 0x27e4,
+ AeLootTargets = 0x260f,
+ AeLootTargetAck = 0x2610,
+ AiReaction = 0x26ab,
+ AlliedRaceDetails = 0x27ea,
AllAccountCriteria = 0x2571,
AllAchievementData = 0x2570,
AllGuildAchievements = 0x29b8,
- ApplyMountEquipmentResult = 0x2857,
+ ApplyMountEquipmentResult = 0x2858,
ArchaeologySurveryCast = 0x2588,
- AreaPoiUpdateResponse = 0x3011,
- AreaSpiritHealerTime = 0x2730,
+ AreaPoiUpdateResponse = 0x3010,
+ AreaSpiritHealerTime = 0x2732,
AreaTriggerDenied = 0x2902,
AreaTriggerForceSetPositionAndFacing = 0x28ff,
- AreaTriggerNoCorpse = 0x2707,
+ AreaTriggerNoCorpse = 0x2709,
AreaTriggerPlaySpellVisual = 0x28fe,
AreaTriggerRePath = 0x28fd,
AreaTriggerReShape = 0x2901,
AreaTriggerUnattach = 0x2900,
- ArenaCrowdControlSpellResult = 0x2628,
- ArenaPrepOpponentSpecializations = 0x263e,
- ArtifactEndgamePowersRefunded = 0x2793,
- ArtifactForgeError = 0x2791,
- ArtifactRespecPrompt = 0x2792,
- ArtifactXpGain = 0x27db,
- AttackerStateUpdate = 0x294c,
- AttackStart = 0x2937,
- AttackStop = 0x2938,
- AttackSwingError = 0x2946,
- AttackSwingLandedLog = 0x2947,
- AuctionableTokenAuctionSold = 0x27c4,
- AuctionableTokenSellAtMarketPriceResponse = 0x27c3,
- AuctionableTokenSellConfirmRequired = 0x27c2,
- AuctionClosedNotification = 0x26e4,
- AuctionCommandResult = 0x26e1,
- AuctionFavoriteList = 0x2871,
- AuctionGetCommodityQuoteResult = 0x2868,
- AuctionHelloResponse = 0x26df,
- AuctionListBiddedItemsResult = 0x2867,
- AuctionListBucketsResult = 0x2864,
- AuctionListItemsResult = 0x2865,
- AuctionListOwnedItemsResult = 0x2866,
- AuctionOutbidNotification = 0x26e3,
- AuctionOwnerBidNotification = 0x26e5,
- AuctionReplicateResponse = 0x26e0,
- AuctionWonNotification = 0x26e2,
+ ArenaCrowdControlSpellResult = 0x2629,
+ ArenaPrepOpponentSpecializations = 0x263f,
+ ArtifactEndgamePowersRefunded = 0x2795,
+ ArtifactForgeError = 0x2793,
+ ArtifactRespecPrompt = 0x2794,
+ ArtifactXpGain = 0x27dd,
+ AttackerStateUpdate = 0x294d,
+ AttackStart = 0x2938,
+ AttackStop = 0x2939,
+ AttackSwingError = 0x2947,
+ AttackSwingLandedLog = 0x2948,
+ AuctionableTokenAuctionSold = 0x27c6,
+ AuctionableTokenSellAtMarketPriceResponse = 0x27c5,
+ AuctionableTokenSellConfirmRequired = 0x27c4,
+ AuctionClosedNotification = 0x26e6,
+ AuctionCommandResult = 0x26e3,
+ AuctionFavoriteList = 0x2872,
+ AuctionGetCommodityQuoteResult = 0x2869,
+ AuctionHelloResponse = 0x26e1,
+ AuctionListBiddedItemsResult = 0x2868,
+ AuctionListBucketsResult = 0x2865,
+ AuctionListItemsResult = 0x2866,
+ AuctionListOwnedItemsResult = 0x2867,
+ AuctionOutbidNotification = 0x26e5,
+ AuctionOwnerBidNotification = 0x26e7,
+ AuctionReplicateResponse = 0x26e2,
+ AuctionWonNotification = 0x26e4,
AuraPointsDepleted = 0x2c23,
AuraUpdate = 0x2c22,
AuthChallenge = 0x3048,
AuthFailed = 0x256c,
AuthResponse = 0x256d,
AvailableHotfixes = 0x290f,
- AzeriteRespecNpc = 0x27e6,
+ AzeriteRespecNpc = 0x27e7,
BagCleanupFinished = 0x2da7,
- BarberShopResult = 0x26b1,
- BatchPresenceSubscription = 0x2848,
+ BarberShopResult = 0x26b3,
+ BatchPresenceSubscription = 0x2849,
BattlefieldList = 0x2927,
BattlefieldPortDenied = 0x292d,
BattlefieldStatusActive = 0x2923,
BattlefieldStatusFailed = 0x2926,
+ BattlefieldStatusGroupProposalFailed = 0x2930,
BattlefieldStatusNeedConfirmation = 0x2922,
BattlefieldStatusNone = 0x2925,
BattlefieldStatusQueued = 0x2924,
BattlefieldStatusWaitForGroups = 0x292f,
BattlegroundInfoThrottled = 0x292e,
- BattlegroundInit = 0x2949,
+ BattlegroundInit = 0x294a,
BattlegroundPlayerJoined = 0x292b,
BattlegroundPlayerLeft = 0x292c,
BattlegroundPlayerPositions = 0x2928,
- BattlegroundPoints = 0x2948,
- BattlenetChallengeAbort = 0x277a,
- BattlenetChallengeStart = 0x2779,
- BattlenetNotification = 0x27f4,
- BattlenetResponse = 0x27f3,
- BattleNetConnectionStatus = 0x27f5,
- BattlePayAckFailed = 0x2774,
- BattlePayBattlePetDelivered = 0x2769,
- BattlePayCollectionItemDelivered = 0x276a,
- BattlePayConfirmPurchase = 0x2773,
- BattlePayDeliveryEnded = 0x2767,
- BattlePayDeliveryStarted = 0x2766,
- BattlePayDistributionUnrevoked = 0x2764,
- BattlePayDistributionUpdate = 0x2765,
- BattlePayGetDistributionListResponse = 0x2763,
- BattlePayGetProductListResponse = 0x2761,
- BattlePayGetPurchaseListResponse = 0x2762,
- BattlePayMountDelivered = 0x2768,
- BattlePayPurchaseUpdate = 0x2772,
- BattlePayStartCheckout = 0x2810,
- BattlePayStartDistributionAssignToTargetResponse = 0x2770,
- BattlePayStartPurchaseResponse = 0x276f,
- BattlePayValidatePurchaseResponse = 0x2804,
- BattlePetsHealed = 0x25eb,
- BattlePetCageDateError = 0x266d,
- BattlePetDeleted = 0x25e8,
- BattlePetError = 0x262e,
- BattlePetJournal = 0x25e7,
- BattlePetJournalLockAcquired = 0x25e5,
- BattlePetJournalLockDenied = 0x25e6,
- BattlePetLicenseChanged = 0x25ec,
- BattlePetRestored = 0x25ea,
- BattlePetRevoked = 0x25e9,
- BattlePetTrapLevel = 0x25e3,
- BattlePetUpdates = 0x25e2,
- BinderConfirm = 0x26ee,
+ BattlegroundPoints = 0x2949,
+ BattlenetChallengeAbort = 0x277c,
+ BattlenetChallengeStart = 0x277b,
+ BattlenetNotification = 0x27f5,
+ BattlenetResponse = 0x27f4,
+ BattleNetConnectionStatus = 0x27f6,
+ BattlePayAckFailed = 0x2776,
+ BattlePayBattlePetDelivered = 0x276b,
+ BattlePayCollectionItemDelivered = 0x276c,
+ BattlePayConfirmPurchase = 0x2775,
+ BattlePayDeliveryEnded = 0x2769,
+ BattlePayDeliveryStarted = 0x2768,
+ BattlePayDistributionUnrevoked = 0x2766,
+ BattlePayDistributionUpdate = 0x2767,
+ BattlePayGetDistributionListResponse = 0x2765,
+ BattlePayGetProductListResponse = 0x2763,
+ BattlePayGetPurchaseListResponse = 0x2764,
+ BattlePayMountDelivered = 0x276a,
+ BattlePayPurchaseUpdate = 0x2774,
+ BattlePayStartCheckout = 0x2811,
+ BattlePayStartDistributionAssignToTargetResponse = 0x2772,
+ BattlePayStartPurchaseResponse = 0x2771,
+ BattlePayValidatePurchaseResponse = 0x2805,
+ BattlePetsHealed = 0x25ec,
+ BattlePetCageDateError = 0x266f,
+ BattlePetDeleted = 0x25e9,
+ BattlePetError = 0x262f,
+ BattlePetJournal = 0x25e8,
+ BattlePetJournalLockAcquired = 0x25e6,
+ BattlePetJournalLockDenied = 0x25e7,
+ BattlePetLicenseChanged = 0x25ed,
+ BattlePetRestored = 0x25eb,
+ BattlePetRevoked = 0x25ea,
+ BattlePetTrapLevel = 0x25e4,
+ BattlePetUpdates = 0x25e3,
+ BinderConfirm = 0x26f0,
BindPointUpdate = 0x257d,
- BlackMarketBidOnItemResult = 0x261e,
- BlackMarketOpenResult = 0x261c,
- BlackMarketOutbid = 0x261f,
- BlackMarketRequestItemsResult = 0x261d,
- BlackMarketWon = 0x2620,
- BonusRollEmpty = 0x263b,
- BossKill = 0x294b,
- BreakTarget = 0x2936,
+ BlackMarketBidOnItemResult = 0x261f,
+ BlackMarketOpenResult = 0x261d,
+ BlackMarketOutbid = 0x2620,
+ BlackMarketRequestItemsResult = 0x261e,
+ BlackMarketWon = 0x2621,
+ BonusRollEmpty = 0x263c,
+ BossKill = 0x294c,
+ BreakTarget = 0x2937,
BroadcastAchievement = 0x2bbc,
- BroadcastSummonCast = 0x284a,
- BroadcastSummonResponse = 0x284b,
- BuyFailed = 0x26ba,
- BuySucceeded = 0x26b9,
+ BroadcastSummonCast = 0x284b,
+ BroadcastSummonResponse = 0x284c,
+ BuyFailed = 0x26bc,
+ BuySucceeded = 0x26bb,
CacheInfo = 0x291d,
CacheVersion = 0x291c,
- CalendarClearPendingAction = 0x2692,
- CalendarCommandResult = 0x2693,
- CalendarCommunityInvite = 0x2682,
- CalendarEventRemovedAlert = 0x268a,
- CalendarEventUpdatedAlert = 0x268b,
- CalendarInviteAdded = 0x2683,
- CalendarInviteAlert = 0x2687,
- CalendarInviteNotes = 0x268c,
- CalendarInviteNotesAlert = 0x268d,
- CalendarInviteRemoved = 0x2684,
- CalendarInviteRemovedAlert = 0x2689,
- CalendarInviteStatus = 0x2685,
- CalendarInviteStatusAlert = 0x2688,
- CalendarModeratorStatus = 0x2686,
- CalendarRaidLockoutAdded = 0x268e,
- CalendarRaidLockoutRemoved = 0x268f,
- CalendarRaidLockoutUpdated = 0x2690,
- CalendarSendCalendar = 0x2680,
- CalendarSendEvent = 0x2681,
- CalendarSendNumPending = 0x2691,
- CameraEffect = 0x2716,
- CancelAutoRepeat = 0x26d0,
- CancelCombat = 0x2945,
+ CalendarClearPendingAction = 0x2694,
+ CalendarCommandResult = 0x2695,
+ CalendarCommunityInvite = 0x2684,
+ CalendarEventRemovedAlert = 0x268c,
+ CalendarEventUpdatedAlert = 0x268d,
+ CalendarInviteAdded = 0x2685,
+ CalendarInviteAlert = 0x2689,
+ CalendarInviteNotes = 0x268e,
+ CalendarInviteNotesAlert = 0x268f,
+ CalendarInviteRemoved = 0x2686,
+ CalendarInviteRemovedAlert = 0x268b,
+ CalendarInviteStatus = 0x2687,
+ CalendarInviteStatusAlert = 0x268a,
+ CalendarModeratorStatus = 0x2688,
+ CalendarRaidLockoutAdded = 0x2690,
+ CalendarRaidLockoutRemoved = 0x2691,
+ CalendarRaidLockoutUpdated = 0x2692,
+ CalendarSendCalendar = 0x2682,
+ CalendarSendEvent = 0x2683,
+ CalendarSendNumPending = 0x2693,
+ CameraEffect = 0x2718,
+ CancelAutoRepeat = 0x26d2,
+ CancelCombat = 0x2946,
CancelOrphanSpellVisual = 0x2c46,
- CancelScene = 0x262d,
+ CancelScene = 0x262e,
CancelSpellVisual = 0x2c44,
CancelSpellVisualKit = 0x2c48,
- CanDuelResult = 0x2941,
- CanRedeemTokenForBalanceResponse = 0x2803,
+ CanDuelResult = 0x2942,
+ CanRedeemTokenForBalanceResponse = 0x2804,
CapturePointRemoved = 0x292a,
CastFailed = 0x2c57,
CategoryCooldown = 0x2c16,
- ChainMissileBounce = 0x25c3,
- ChallengeModeComplete = 0x2602,
- ChallengeModeRequestLeadersResult = 0x2606,
- ChallengeModeReset = 0x2601,
- ChallengeModeStart = 0x25ff,
- ChallengeModeUpdateDeathCount = 0x2600,
- ChangePlayerDifficultyResult = 0x3005,
- ChangeRealmTicketResponse = 0x27f6,
+ ChainMissileBounce = 0x25c4,
+ ChallengeModeComplete = 0x2603,
+ ChallengeModeRequestLeadersResult = 0x2607,
+ ChallengeModeReset = 0x2602,
+ ChallengeModeStart = 0x2600,
+ ChallengeModeUpdateDeathCount = 0x2601,
+ ChangePlayerDifficultyResult = 0x3004,
+ ChangeRealmTicketResponse = 0x27f7,
ChannelList = 0x2bc3,
ChannelNotify = 0x2bc0,
ChannelNotifyJoined = 0x2bc1,
ChannelNotifyLeft = 0x2bc2,
- CharacterCheckUpgradeResult = 0x27ad,
- CharacterLoginFailed = 0x26f6,
- CharacterObjectTestResponse = 0x2778,
- CharacterRenameResult = 0x2753,
- CharacterUpgradeAborted = 0x27ac,
- CharacterUpgradeComplete = 0x27ab,
- CharacterUpgradeManualUnrevokeResult = 0x27ae,
- CharacterUpgradeStarted = 0x27aa,
- CharCustomizeFailure = 0x26d4,
- CharCustomizeSuccess = 0x26d5,
- CharFactionChangeResult = 0x2797,
+ CharacterCheckUpgradeResult = 0x27af,
+ CharacterLoginFailed = 0x26f8,
+ CharacterObjectTestResponse = 0x277a,
+ CharacterRenameResult = 0x2755,
+ CharacterUpgradeAborted = 0x27ae,
+ CharacterUpgradeComplete = 0x27ad,
+ CharacterUpgradeManualUnrevokeResult = 0x27b0,
+ CharacterUpgradeStarted = 0x27ac,
+ CharCustomizeFailure = 0x26d6,
+ CharCustomizeSuccess = 0x26d7,
+ CharFactionChangeResult = 0x2799,
Chat = 0x2bad,
ChatAutoResponded = 0x2bb8,
ChatDown = 0x2bbd,
@@ -1020,141 +1028,141 @@ namespace Framework.Constants
ChatRestricted = 0x2bb3,
ChatServerMessage = 0x2bc4,
CheatIgnoreDimishingReturns = 0x2c12,
- CheckAbandonNpe = 0x3019,
+ CheckAbandonNpe = 0x3018,
CheckCharacterNameAvailabilityResult = 0x2584,
CheckWargameEntry = 0x2592,
- ChromieTimeOpenNpc = 0x27eb,
- ChromieTimeSelectExpansionSuccess = 0x2874,
- ClaimRafRewardResponse = 0x285b,
+ ChromieTimeOpenNpc = 0x27ec,
+ ChromieTimeSelectExpansionSuccess = 0x2875,
+ ClaimRafRewardResponse = 0x285c,
ClearAllSpellCharges = 0x2c27,
+ ClearArenaUnit = 0x2640,
ClearBossEmotes = 0x25b7,
- ClearCooldown = 0x26ae,
+ ClearCooldown = 0x26b0,
ClearCooldowns = 0x2c26,
ClearResurrect = 0x257f,
ClearSpellCharges = 0x2c28,
- ClearTarget = 0x2942,
+ ClearTarget = 0x2943,
ClearTreasurePickerCache = 0x2aa1,
- CloseArtifactForge = 0x2790,
- CloseHeartForge = 0x2816,
- CloseItemForge = 0x278e,
- ClubFinderErrorMessage = 0x2853,
- ClubFinderGetClubPostingIdsResponse = 0x2856,
- ClubFinderLookupClubPostingsList = 0x2854,
- ClubFinderResponseCharacterApplicationList = 0x2851,
- ClubFinderResponsePostRecruitmentMessage = 0x2855,
- ClubFinderUpdateApplications = 0x2852,
- CoinRemoved = 0x260d,
- CombatEventFailed = 0x2939,
- CommentatorMapInfo = 0x26f8,
- CommentatorPlayerInfo = 0x26f9,
- CommentatorStateChanged = 0x26f7,
- CommerceTokenGetCountResponse = 0x27bf,
- CommerceTokenGetLogResponse = 0x27cb,
- CommerceTokenGetMarketPriceResponse = 0x27c1,
- CommerceTokenUpdate = 0x27c0,
- ComplaintResult = 0x26a0,
- CompleteShipmentResponse = 0x2789,
- ConfirmPartyInvite = 0x2802,
+ CloseArtifactForge = 0x2792,
+ CloseHeartForge = 0x2817,
+ CloseItemForge = 0x2790,
+ ClubFinderErrorMessage = 0x2854,
+ ClubFinderGetClubPostingIdsResponse = 0x2857,
+ ClubFinderLookupClubPostingsList = 0x2855,
+ ClubFinderResponseCharacterApplicationList = 0x2852,
+ ClubFinderResponsePostRecruitmentMessage = 0x2856,
+ ClubFinderUpdateApplications = 0x2853,
+ CoinRemoved = 0x260e,
+ CombatEventFailed = 0x293a,
+ CommentatorMapInfo = 0x26fa,
+ CommentatorPlayerInfo = 0x26fb,
+ CommentatorStateChanged = 0x26f9,
+ CommerceTokenGetCountResponse = 0x27c1,
+ CommerceTokenGetLogResponse = 0x27cd,
+ CommerceTokenGetMarketPriceResponse = 0x27c3,
+ CommerceTokenUpdate = 0x27c2,
+ ComplaintResult = 0x26a2,
+ CompleteShipmentResponse = 0x278b,
+ ConfirmPartyInvite = 0x2803,
ConnectTo = 0x304d,
- ConquestFormulaConstants = 0x2775,
- ConsoleWrite = 0x262b,
- ConsumableTokenBuyAtMarketPriceResponse = 0x27c7,
- ConsumableTokenBuyChoiceRequired = 0x27c6,
- ConsumableTokenCanVeteranBuyResponse = 0x27c5,
- ConsumableTokenRedeemConfirmRequired = 0x27c9,
- ConsumableTokenRedeemResponse = 0x27ca,
- ContactList = 0x2776,
- ContributionLastUpdateResponse = 0x2809,
- ControlUpdate = 0x263d,
- ConvertItemsToCurrencyValue = 0x287d,
- CooldownCheat = 0x2729,
- CooldownEvent = 0x26ad,
- CorpseLocation = 0x2644,
- CorpseReclaimDelay = 0x273a,
- CorpseTransportQuery = 0x2703,
+ ConquestFormulaConstants = 0x2777,
+ ConsoleWrite = 0x262c,
+ ConsumableTokenBuyAtMarketPriceResponse = 0x27c9,
+ ConsumableTokenBuyChoiceRequired = 0x27c8,
+ ConsumableTokenCanVeteranBuyResponse = 0x27c7,
+ ConsumableTokenRedeemConfirmRequired = 0x27cb,
+ ConsumableTokenRedeemResponse = 0x27cc,
+ ContactList = 0x2778,
+ ContributionLastUpdateResponse = 0x280a,
+ ControlUpdate = 0x263e,
+ ConvertItemsToCurrencyValue = 0x287e,
+ CooldownCheat = 0x272b,
+ CooldownEvent = 0x26af,
+ CorpseLocation = 0x2646,
+ CorpseReclaimDelay = 0x273c,
+ CorpseTransportQuery = 0x2705,
CovenantCallingsAvailabilityResponse = 0x2aa3,
- CovenantPreviewOpenNpc = 0x27ec,
- CovenantRenownOpenNpc = 0x287c,
- CovenantRenownSendCatchupState = 0x287e,
- CreateChar = 0x26f2,
- CreateShipmentResponse = 0x2788,
- CriteriaDeleted = 0x26d9,
- CriteriaUpdate = 0x26d3,
- CrossedInebriationThreshold = 0x26b5,
- CustomLoadScreen = 0x25c6,
+ CovenantPreviewOpenNpc = 0x27ed,
+ CovenantRenownOpenNpc = 0x287d,
+ CovenantRenownSendCatchupState = 0x287f,
+ CreateChar = 0x26f4,
+ CreateShipmentResponse = 0x278a,
+ CriteriaDeleted = 0x26db,
+ CriteriaUpdate = 0x26d5,
+ CrossedInebriationThreshold = 0x26b7,
+ CustomLoadScreen = 0x25c7,
DailyQuestsReset = 0x2a80,
- DamageCalcLog = 0x27b4,
+ DamageCalcLog = 0x27b6,
DbReply = 0x290e,
- DeathReleaseLoc = 0x26c6,
- DebugMenuManagerFullUpdate = 0x264a,
+ DeathReleaseLoc = 0x26c8,
+ DebugMenuManagerFullUpdate = 0x264c,
DefenseMessage = 0x2bb6,
- DeleteChar = 0x26f3,
+ DeleteChar = 0x26f5,
DeleteExpiredMissionsResult = 0x2980,
- DestroyArenaUnit = 0x2732,
- DestructibleBuildingDamage = 0x26ea,
+ DestroyArenaUnit = 0x2734,
+ DestructibleBuildingDamage = 0x26ec,
DifferentInstanceFromParty = 0x258c,
- DisconnectReason = 0x27dd,
DisenchantCredit = 0x25a5,
DismountResult = 0x257c,
DispelFailed = 0x2c30,
DisplayGameError = 0x259f,
DisplayPlayerChoice = 0x2ffc,
- DisplayPromotion = 0x2641,
+ DisplayPromotion = 0x2643,
DisplayQuestPopup = 0x2a9e,
- DisplaySoulbindUpdateMessage = 0x2882,
- DisplayToast = 0x261a,
- DisplayWorldText = 0x27dc,
- DontAutoPushSpellsToActionBar = 0x25d9,
+ DisplaySoulbindUpdateMessage = 0x2883,
+ DisplayToast = 0x261b,
+ DisplayWorldText = 0x27de,
+ DontAutoPushSpellsToActionBar = 0x25da,
DropNewConnection = 0x304c,
- DuelArranged = 0x293b,
- DuelComplete = 0x293f,
- DuelCountdown = 0x293e,
- DuelInBounds = 0x293d,
- DuelOutOfBounds = 0x293c,
- DuelRequested = 0x293a,
- DuelWinner = 0x2940,
- DurabilityDamageDeath = 0x2736,
- Emote = 0x27b5,
- EnableBarberShop = 0x26b0,
- EnchantmentLog = 0x2704,
- EncounterEnd = 0x276e,
- EncounterStart = 0x276d,
- EndLightningStorm = 0x269d,
+ DuelArranged = 0x293c,
+ DuelComplete = 0x2940,
+ DuelCountdown = 0x293f,
+ DuelInBounds = 0x293e,
+ DuelOutOfBounds = 0x293d,
+ DuelRequested = 0x293b,
+ DuelWinner = 0x2941,
+ DurabilityDamageDeath = 0x2738,
+ Emote = 0x27b7,
+ EnableBarberShop = 0x26b2,
+ EnchantmentLog = 0x2706,
+ EncounterEnd = 0x2770,
+ EncounterStart = 0x276f,
+ EndLightningStorm = 0x269f,
EnterEncryptedMode = 0x3049,
EnumCharactersResult = 0x2583,
- EnumVasPurchaseStatesResponse = 0x27e2,
+ EnumVasPurchaseStatesResponse = 0x27e3,
EnvironmentalDamageLog = 0x2c21,
- EquipmentSetId = 0x26a6,
+ EquipmentSetId = 0x26a8,
ExpectedSpamRecords = 0x2bb1,
- ExplorationExperience = 0x274f,
- ExternalTransactionIdGenerated = 0x287b,
- FactionBonusInfo = 0x2715,
+ ExplorationExperience = 0x2751,
+ ExternalTransactionIdGenerated = 0x287c,
+ FactionBonusInfo = 0x2717,
FailedPlayerCondition = 0x2ffa,
- FailedQuestTurnIn = 0x27ff,
+ FailedQuestTurnIn = 0x2800,
FeatureSystemStatus = 0x25bb,
FeatureSystemStatusGlueScreen = 0x25bc,
- FeignDeathResisted = 0x2735,
- FishEscaped = 0x26c3,
- FishNotHooked = 0x26c2,
- FlightSplineSync = 0x2e29,
- ForcedDeathUpdate = 0x26c7,
- ForceAnim = 0x2741,
- ForceAnimations = 0x2742,
- ForceObjectRelink = 0x2640,
- FriendStatus = 0x2777,
- GainMawPower = 0x27d0,
- GameObjectActivateAnimKit = 0x25be,
- GameObjectBase = 0x2817,
- GameObjectCustomAnim = 0x25bf,
- GameObjectDespawn = 0x25c0,
+ FeignDeathResisted = 0x2737,
+ FishEscaped = 0x26c5,
+ FishNotHooked = 0x26c4,
+ FlightSplineSync = 0x2e2b,
+ ForcedDeathUpdate = 0x26c9,
+ ForceAnim = 0x2743,
+ ForceAnimations = 0x2744,
+ ForceObjectRelink = 0x2642,
+ FriendStatus = 0x2779,
+ GainMawPower = 0x27d2,
+ GameObjectActivateAnimKit = 0x25bf,
+ GameObjectBase = 0x2818,
+ GameObjectCustomAnim = 0x25c0,
+ GameObjectDespawn = 0x25c1,
GameObjectPlaySpellVisual = 0x2c4b,
GameObjectPlaySpellVisualKit = 0x2c4a,
- GameObjectResetState = 0x270f,
- GameObjectSetStateLocal = 0x27f2,
- GameObjectUiLink = 0x270b,
- GameSpeedSet = 0x2676,
- GameTimeSet = 0x26fd,
- GameTimeUpdate = 0x26fc,
+ GameObjectResetState = 0x2711,
+ GameObjectSetStateLocal = 0x27f3,
+ GameObjectUiLink = 0x270d,
+ GameSpeedSet = 0x2678,
+ GameTimeSet = 0x26ff,
+ GameTimeUpdate = 0x26fe,
GarrisonActivateMissionBonusAbility = 0x2982,
GarrisonAddEvent = 0x29a5,
GarrisonAddFollowerResult = 0x2974,
@@ -1229,33 +1237,33 @@ namespace Framework.Constants
GarrisonUpgradeResult = 0x296b,
GarrisonUseRecallPortalResult = 0x297d,
GenerateRandomCharacterNameResult = 0x2585,
- GenerateSsoTokenResponse = 0x280a,
- GetAccountCharacterListResult = 0x2751,
+ GenerateSsoTokenResponse = 0x280b,
+ GetAccountCharacterListResult = 0x2753,
GetGarrisonInfoResult = 0x295e,
- GetLandingPageShipmentsResponse = 0x278b,
- GetRemainingGameTimeResponse = 0x27c8,
- GetSelectedTrophyIdResponse = 0x27b2,
- GetShipmentsOfTypeResponse = 0x278a,
- GetShipmentInfoResponse = 0x2786,
- GetTrophyListResponse = 0x27b1,
- GetVasAccountCharacterListResult = 0x27de,
- GetVasTransferTargetRealmListResult = 0x27df,
- GmPlayerInfo = 0x3006,
+ GetLandingPageShipmentsResponse = 0x278d,
+ GetRemainingGameTimeResponse = 0x27ca,
+ GetSelectedTrophyIdResponse = 0x27b4,
+ GetShipmentsOfTypeResponse = 0x278c,
+ GetShipmentInfoResponse = 0x2788,
+ GetTrophyListResponse = 0x27b3,
+ GetVasAccountCharacterListResult = 0x27df,
+ GetVasTransferTargetRealmListResult = 0x27e0,
+ GmPlayerInfo = 0x3005,
GmRequestPlayerInfo = 0x2ffb,
- GmTicketCaseStatus = 0x2698,
- GmTicketSystemStatus = 0x2697,
- GodMode = 0x26ed,
+ GmTicketCaseStatus = 0x269a,
+ GmTicketSystemStatus = 0x2699,
+ GodMode = 0x26ef,
GossipComplete = 0x2a97,
GossipMessage = 0x2a98,
- GossipPoi = 0x2783,
+ GossipPoi = 0x2785,
GossipQuestUpdate = 0x2a99,
GossipRefreshOptions = 0x2aa6,
GroupActionThrottled = 0x2590,
- GroupAutoKick = 0x2781,
- GroupDecline = 0x277e,
- GroupDestroyed = 0x2780,
- GroupNewLeader = 0x2623,
- GroupUninvite = 0x277f,
+ GroupAutoKick = 0x2783,
+ GroupDecline = 0x2780,
+ GroupDestroyed = 0x2782,
+ GroupNewLeader = 0x2624,
+ GroupUninvite = 0x2781,
GuildAchievementDeleted = 0x29c5,
GuildAchievementEarned = 0x29c4,
GuildAchievementMembers = 0x29c7,
@@ -1309,60 +1317,61 @@ namespace Framework.Constants
GuildRoster = 0x29bb,
GuildRosterUpdate = 0x29bc,
GuildSendRankChange = 0x29b9,
- HealthUpdate = 0x26c4,
- HighestThreatUpdate = 0x26cc,
+ HealthUpdate = 0x26c6,
+ HighestThreatUpdate = 0x26ce,
HotfixConnect = 0x2911,
HotfixMessage = 0x2910,
- InitializeFactions = 0x2714,
+ InitializeFactions = 0x2716,
InitialSetup = 0x2580,
- InitWorldStates = 0x2737,
- InspectResult = 0x2627,
- InstanceEncounterChangePriority = 0x279d,
- InstanceEncounterDisengageUnit = 0x279c,
- InstanceEncounterEnd = 0x27a5,
- InstanceEncounterEngageUnit = 0x279b,
- InstanceEncounterGainCombatResurrectionCharge = 0x27a7,
- InstanceEncounterInCombatResurrection = 0x27a6,
- InstanceEncounterObjectiveComplete = 0x27a0,
- InstanceEncounterObjectiveStart = 0x279f,
- InstanceEncounterObjectiveUpdate = 0x27a4,
- InstanceEncounterPhaseShiftChanged = 0x27a8,
- InstanceEncounterStart = 0x27a1,
- InstanceEncounterTimerStart = 0x279e,
- InstanceEncounterUpdateAllowReleaseInProgress = 0x27a3,
- InstanceEncounterUpdateSuppressRelease = 0x27a2,
- InstanceGroupSizeChanged = 0x26eb,
- InstanceInfo = 0x262a,
- InstanceReset = 0x267b,
- InstanceResetFailed = 0x267c,
- InstanceSaveCreated = 0x276c,
+ InitWorldStates = 0x2739,
+ InspectResult = 0x2628,
+ InstanceEncounterChangePriority = 0x279f,
+ InstanceEncounterDisengageUnit = 0x279e,
+ InstanceEncounterEnd = 0x27a7,
+ InstanceEncounterEngageUnit = 0x279d,
+ InstanceEncounterGainCombatResurrectionCharge = 0x27a9,
+ InstanceEncounterInCombatResurrection = 0x27a8,
+ InstanceEncounterObjectiveComplete = 0x27a2,
+ InstanceEncounterObjectiveStart = 0x27a1,
+ InstanceEncounterObjectiveUpdate = 0x27a6,
+ InstanceEncounterPhaseShiftChanged = 0x27aa,
+ InstanceEncounterStart = 0x27a3,
+ InstanceEncounterTimerStart = 0x27a0,
+ InstanceEncounterUpdateAllowReleaseInProgress = 0x27a5,
+ InstanceEncounterUpdateSuppressRelease = 0x27a4,
+ InstanceGroupSizeChanged = 0x26ed,
+ InstanceInfo = 0x262b,
+ InstanceReset = 0x267d,
+ InstanceResetFailed = 0x267e,
+ InstanceSaveCreated = 0x276e,
InterruptPowerRegen = 0x2c59,
InvalidatePageText = 0x2918,
InvalidatePlayer = 0x2fff,
- InvalidPromotionCode = 0x2743,
+ InvalidPromotionCode = 0x2745,
InventoryChangeFailure = 0x2da5,
- InventoryFixupComplete = 0x2801,
- InventoryFullOverflow = 0x2812,
- IslandsMissionNpc = 0x27e8,
- IslandAzeriteGain = 0x274c,
- IslandComplete = 0x274d,
+ InventoryFixupComplete = 0x2802,
+ InventoryFullOverflow = 0x2813,
+ IslandsMissionNpc = 0x27e9,
+ IslandAzeriteGain = 0x274e,
+ IslandComplete = 0x274f,
IsQuestCompleteResponse = 0x2a84,
- ItemChanged = 0x26dc,
- ItemCooldown = 0x27b3,
- ItemEnchantTimeUpdate = 0x2745,
+ ItemChanged = 0x26de,
+ ItemCooldown = 0x27b5,
+ ItemEnchantTimeUpdate = 0x2747,
ItemExpirePurchaseRefund = 0x259e,
- ItemInteractionComplete = 0x2873,
+ ItemInteractionChargeInfoUpdated = 0x288b,
+ ItemInteractionComplete = 0x2874,
ItemPurchaseRefundResult = 0x259c,
- ItemPushResult = 0x2619,
- ItemTimeUpdate = 0x2744,
- KickReason = 0x267e,
- LatencyReportPing = 0x2885,
+ ItemPushResult = 0x261a,
+ ItemTimeUpdate = 0x2746,
+ KickReason = 0x2680,
+ LatencyReportPing = 0x2886,
LearnedSpells = 0x2c4d,
- LearnPvpTalentFailed = 0x25cd,
- LearnTalentFailed = 0x25cc,
- LegacyLootRules = 0x2818,
- LevelLinkingResult = 0x2859,
- LevelUpInfo = 0x26db,
+ LearnPvpTalentFailed = 0x25ce,
+ LearnTalentFailed = 0x25cd,
+ LegacyLootRules = 0x2819,
+ LevelLinkingResult = 0x285a,
+ LevelUpInfo = 0x26dd,
LfgBootPlayer = 0x2a35,
LfgDisabled = 0x2a33,
LfgExpandSearchPrompt = 0x2a3b,
@@ -1390,61 +1399,65 @@ namespace Framework.Constants
LfgSlotInvalid = 0x2a30,
LfgTeleportDenied = 0x2a32,
LfgUpdateStatus = 0x2a24,
- LiveRegionAccountRestoreResult = 0x275e,
- LiveRegionCharacterCopyResult = 0x275d,
- LiveRegionGetAccountCharacterListResult = 0x2752,
- LiveRegionKeyBindingsCopyResult = 0x275f,
+ LiveRegionAccountRestoreResult = 0x2760,
+ LiveRegionCharacterCopyResult = 0x275f,
+ LiveRegionGetAccountCharacterListResult = 0x2754,
+ LiveRegionKeyBindingsCopyResult = 0x2761,
LoadCufProfiles = 0x25b8,
- LoadEquipmentSet = 0x26ff,
- LoginSetTimeSpeed = 0x26fe,
+ LoadEquipmentSet = 0x2701,
+ LoginSetTimeSpeed = 0x2700,
LoginVerifyWorld = 0x2599,
- LogoutCancelAck = 0x267a,
- LogoutComplete = 0x2679,
- LogoutResponse = 0x2678,
- LogXpGain = 0x26d7,
- LootAllPassed = 0x2617,
- LootList = 0x2731,
- LootMoneyNotify = 0x2612,
- LootRelease = 0x2611,
- LootReleaseAll = 0x2610,
- LootRemoved = 0x260c,
- LootResponse = 0x260b,
- LootRoll = 0x2614,
- LootRollsComplete = 0x2616,
- LootRollWon = 0x2618,
- LossOfControlAuraUpdate = 0x2665,
- MailCommandResult = 0x2631,
- MailListResult = 0x2746,
- MailQueryNextTimeResult = 0x2747,
- MapObjectivesInit = 0x294a,
- MapObjEvents = 0x25c1,
- MasterLootCandidateList = 0x2615,
+ LogoutCancelAck = 0x267c,
+ LogoutComplete = 0x267b,
+ LogoutResponse = 0x267a,
+ LogXpGain = 0x26d9,
+ LootAllPassed = 0x2618,
+ LootList = 0x2733,
+ LootMoneyNotify = 0x2613,
+ LootRelease = 0x2612,
+ LootReleaseAll = 0x2611,
+ LootRemoved = 0x260d,
+ LootResponse = 0x260c,
+ LootRoll = 0x2615,
+ LootRollsComplete = 0x2617,
+ LootRollWon = 0x2619,
+ LossOfControlAuraUpdate = 0x2667,
+ MailCommandResult = 0x2632,
+ MailListResult = 0x2748,
+ MailQueryNextTimeResult = 0x2749,
+ MapObjectivesInit = 0x294b,
+ MapObjEvents = 0x25c2,
+ MasterLootCandidateList = 0x2616,
MessageBox = 0x2576,
- MinimapPing = 0x26c1,
+ MinimapPing = 0x26c3,
MirrorImageComponentedData = 0x2c14,
MirrorImageCreatureData = 0x2c13,
- MissileCancel = 0x25c2,
- ModifyCooldown = 0x2754,
+ MissileCancel = 0x25c3,
+ ModifyCooldown = 0x2756,
Motd = 0x2baf,
MountResult = 0x257b,
- MovementEnforcementAlert = 0x2849,
- MoveApplyMovementForce = 0x2e13,
- MoveDisableCollision = 0x2e0f,
+ MovementEnforcementAlert = 0x284a,
+ MoveApplyInertia = 0x2e2e,
+ MoveApplyMovementForce = 0x2e15,
+ MoveDisableCollision = 0x2e11,
MoveDisableDoubleJump = 0x2dfd,
MoveDisableGravity = 0x2e0d,
+ MoveDisableInertia = 0x2e0f,
MoveDisableTransitionBetweenSwimAndFly = 0x2e0c,
- MoveEnableCollision = 0x2e10,
+ MoveEnableCollision = 0x2e12,
MoveEnableDoubleJump = 0x2dfc,
MoveEnableGravity = 0x2e0e,
+ MoveEnableInertia = 0x2e10,
MoveEnableTransitionBetweenSwimAndFly = 0x2e0b,
MoveKnockBack = 0x2e03,
- MoveRemoveMovementForce = 0x2e14,
+ MoveRemoveInertia = 0x2e2f,
+ MoveRemoveMovementForce = 0x2e16,
MoveRoot = 0x2df9,
MoveSetActiveMover = 0x2dd5,
MoveSetCanFly = 0x2e05,
MoveSetCanTurnWhileFalling = 0x2e07,
- MoveSetCollisionHeight = 0x2e11,
- MoveSetCompoundState = 0x2e15,
+ MoveSetCollisionHeight = 0x2e13,
+ MoveSetCompoundState = 0x2e17,
MoveSetFeatherFall = 0x2dff,
MoveSetFlightBackSpeed = 0x2df5,
MoveSetFlightSpeed = 0x2df4,
@@ -1459,37 +1472,37 @@ namespace Framework.Constants
MoveSetSwimBackSpeed = 0x2df3,
MoveSetSwimSpeed = 0x2df2,
MoveSetTurnRate = 0x2df7,
- MoveSetVehicleRecId = 0x2e12,
+ MoveSetVehicleRecId = 0x2e14,
MoveSetWalkSpeed = 0x2df6,
MoveSetWaterWalk = 0x2dfb,
- MoveSkipTime = 0x2e16,
- MoveSplineDisableCollision = 0x2e1b,
- MoveSplineDisableGravity = 0x2e19,
- MoveSplineEnableCollision = 0x2e1c,
- MoveSplineEnableGravity = 0x2e1a,
- MoveSplineRoot = 0x2e17,
- MoveSplineSetFeatherFall = 0x2e1d,
+ MoveSkipTime = 0x2e18,
+ MoveSplineDisableCollision = 0x2e1d,
+ MoveSplineDisableGravity = 0x2e1b,
+ MoveSplineEnableCollision = 0x2e1e,
+ MoveSplineEnableGravity = 0x2e1c,
+ MoveSplineRoot = 0x2e19,
+ MoveSplineSetFeatherFall = 0x2e1f,
MoveSplineSetFlightBackSpeed = 0x2dec,
MoveSplineSetFlightSpeed = 0x2deb,
- MoveSplineSetFlying = 0x2e27,
- MoveSplineSetHover = 0x2e1f,
- MoveSplineSetLandWalk = 0x2e22,
- MoveSplineSetNormalFall = 0x2e1e,
+ MoveSplineSetFlying = 0x2e29,
+ MoveSplineSetHover = 0x2e21,
+ MoveSplineSetLandWalk = 0x2e24,
+ MoveSplineSetNormalFall = 0x2e20,
MoveSplineSetPitchRate = 0x2def,
MoveSplineSetRunBackSpeed = 0x2de8,
- MoveSplineSetRunMode = 0x2e25,
+ MoveSplineSetRunMode = 0x2e27,
MoveSplineSetRunSpeed = 0x2de7,
MoveSplineSetSwimBackSpeed = 0x2dea,
MoveSplineSetSwimSpeed = 0x2de9,
MoveSplineSetTurnRate = 0x2dee,
- MoveSplineSetWalkMode = 0x2e26,
+ MoveSplineSetWalkMode = 0x2e28,
MoveSplineSetWalkSpeed = 0x2ded,
- MoveSplineSetWaterWalk = 0x2e21,
- MoveSplineStartSwim = 0x2e23,
- MoveSplineStopSwim = 0x2e24,
- MoveSplineUnroot = 0x2e18,
- MoveSplineUnsetFlying = 0x2e28,
- MoveSplineUnsetHover = 0x2e20,
+ MoveSplineSetWaterWalk = 0x2e23,
+ MoveSplineStartSwim = 0x2e25,
+ MoveSplineStopSwim = 0x2e26,
+ MoveSplineUnroot = 0x2e1a,
+ MoveSplineUnsetFlying = 0x2e2a,
+ MoveSplineUnsetHover = 0x2e22,
MoveTeleport = 0x2e04,
MoveUnroot = 0x2dfa,
MoveUnsetCanFly = 0x2e06,
@@ -1497,6 +1510,7 @@ namespace Framework.Constants
MoveUnsetHovering = 0x2e02,
MoveUnsetIgnoreMovementForces = 0x2e0a,
MoveUpdate = 0x2de0,
+ MoveUpdateApplyInertia = 0x2e30,
MoveUpdateApplyMovementForce = 0x2de4,
MoveUpdateCollisionHeight = 0x2ddf,
MoveUpdateFlightBackSpeed = 0x2ddc,
@@ -1504,6 +1518,7 @@ namespace Framework.Constants
MoveUpdateKnockBack = 0x2de2,
MoveUpdateModMovementForceMagnitude = 0x2de3,
MoveUpdatePitchRate = 0x2dde,
+ MoveUpdateRemoveInertia = 0x2e31,
MoveUpdateRemoveMovementForce = 0x2de5,
MoveUpdateRunBackSpeed = 0x2dd7,
MoveUpdateRunSpeed = 0x2dd6,
@@ -1512,121 +1527,122 @@ namespace Framework.Constants
MoveUpdateTeleport = 0x2de1,
MoveUpdateTurnRate = 0x2ddd,
MoveUpdateWalkSpeed = 0x2dd8,
- MultiFloorLeaveFloor = 0x27cd,
- MultiFloorNewFloor = 0x27cc,
- MythicPlusAllMapStats = 0x2603,
- MythicPlusCurrentAffixes = 0x2605,
- MythicPlusNewWeekRecord = 0x2608,
- MythicPlusSeasonData = 0x2604,
- NeutralPlayerFactionSelectResult = 0x25d4,
- NewTaxiPath = 0x2673,
+ MultiFloorLeaveFloor = 0x27cf,
+ MultiFloorNewFloor = 0x27ce,
+ MythicPlusAllMapStats = 0x2604,
+ MythicPlusCurrentAffixes = 0x2606,
+ MythicPlusNewWeekRecord = 0x2609,
+ MythicPlusSeasonData = 0x2605,
+ NeutralPlayerFactionSelectResult = 0x25d5,
+ NewTaxiPath = 0x2675,
NewWorld = 0x2598,
NotifyDestLocSpellCast = 0x2c43,
- NotifyMissileTrajectoryCollision = 0x269f,
+ NotifyMissileTrajectoryCollision = 0x26a1,
NotifyMoney = 0x259b,
- NotifyReceivedMail = 0x2632,
- OfferPetitionError = 0x26aa,
- OnCancelExpectedRideVehicleAura = 0x26d8,
+ NotifyReceivedMail = 0x2633,
+ OfferPetitionError = 0x26ac,
+ OnCancelExpectedRideVehicleAura = 0x26da,
OnMonsterMove = 0x2dd4,
- OpenAnimaDiversionUi = 0x270c,
- OpenArtifactForge = 0x278f,
+ OpenAnimaDiversionUi = 0x270e,
+ OpenArtifactForge = 0x2791,
OpenContainer = 0x2da6,
- OpenHeartForge = 0x2815,
- OpenItemForge = 0x278d,
+ OpenHeartForge = 0x2816,
+ OpenItemForge = 0x278f,
OpenLfgDungeonFinder = 0x2a31,
- OpenShipmentNpcFromGossip = 0x2785,
- OpenShipmentNpcResult = 0x2787,
- OverrideLight = 0x26af,
- PageText = 0x270a,
- PartyCommandResult = 0x2782,
+ OpenShipmentNpcFromGossip = 0x2787,
+ OpenShipmentNpcResult = 0x2789,
+ OverrideLight = 0x26b1,
+ PageText = 0x270c,
+ PartyCommandResult = 0x2784,
PartyInvite = 0x25b9,
- PartyKillLog = 0x274a,
- PartyMemberFullState = 0x2749,
- PartyMemberPartialState = 0x2748,
- PartyNotifyLfgLeaderChange = 0x2879,
- PartyUpdate = 0x25ed,
- PauseMirrorTimer = 0x2701,
- PendingRaidLock = 0x26e9,
+ PartyKillLog = 0x274c,
+ PartyMemberFullState = 0x274b,
+ PartyMemberPartialState = 0x274a,
+ PartyNotifyLfgLeaderChange = 0x287a,
+ PartyUpdate = 0x25ee,
+ PassedTimeEvents = 0x25be,
+ PauseMirrorTimer = 0x2703,
+ PendingRaidLock = 0x26eb,
PetitionAlreadySigned = 0x25a1,
PetitionRenameGuildResponse = 0x29fa,
- PetitionShowList = 0x26b2,
- PetitionShowSignatures = 0x26b3,
- PetitionSignResults = 0x273c,
- PetActionFeedback = 0x2739,
- PetActionSound = 0x2695,
+ PetitionShowList = 0x26b4,
+ PetitionShowSignatures = 0x26b5,
+ PetitionSignResults = 0x273e,
+ PetActionFeedback = 0x273b,
+ PetActionSound = 0x2697,
PetAdded = 0x2595,
- PetBattleChatRestricted = 0x25fa,
- PetBattleDebugQueueDumpResponse = 0x266a,
- PetBattleFinalizeLocation = 0x25f3,
- PetBattleFinalRound = 0x25f8,
- PetBattleFinished = 0x25f9,
- PetBattleFirstRound = 0x25f5,
- PetBattleInitialUpdate = 0x25f4,
- PetBattleMaxGameLengthWarning = 0x25fb,
- PetBattlePvpChallenge = 0x25f2,
- PetBattleQueueProposeMatch = 0x262f,
- PetBattleQueueStatus = 0x2630,
- PetBattleReplacementsMade = 0x25f7,
- PetBattleRequestFailed = 0x25f1,
- PetBattleRoundResult = 0x25f6,
- PetBattleSlotUpdates = 0x25e4,
+ PetBattleChatRestricted = 0x25fb,
+ PetBattleDebugQueueDumpResponse = 0x266c,
+ PetBattleFinalizeLocation = 0x25f4,
+ PetBattleFinalRound = 0x25f9,
+ PetBattleFinished = 0x25fa,
+ PetBattleFirstRound = 0x25f6,
+ PetBattleInitialUpdate = 0x25f5,
+ PetBattleMaxGameLengthWarning = 0x25fc,
+ PetBattlePvpChallenge = 0x25f3,
+ PetBattleQueueProposeMatch = 0x2630,
+ PetBattleQueueStatus = 0x2631,
+ PetBattleReplacementsMade = 0x25f8,
+ PetBattleRequestFailed = 0x25f2,
+ PetBattleRoundResult = 0x25f7,
+ PetBattleSlotUpdates = 0x25e5,
PetCastFailed = 0x2c58,
PetClearSpells = 0x2c24,
- PetDismissSound = 0x2696,
- PetGodMode = 0x2670,
- PetGuids = 0x26f5,
+ PetDismissSound = 0x2698,
+ PetGodMode = 0x2672,
+ PetGuids = 0x26f7,
PetLearnedSpells = 0x2c4f,
PetMode = 0x258b,
- PetNameInvalid = 0x26b7,
+ PetNameInvalid = 0x26b9,
PetNewlyTamed = 0x2589,
PetSlotUpdated = 0x258a,
PetSpellsMessage = 0x2c25,
PetStableList = 0x2596,
PetStableResult = 0x2597,
- PetTameFailure = 0x26a7,
+ PetTameFailure = 0x26a9,
PetUnlearnedSpells = 0x2c50,
PhaseShiftChange = 0x2578,
- PlayedTime = 0x26c8,
- PlayerAzeriteItemEquippedStatusChanged = 0x3015,
- PlayerAzeriteItemGains = 0x3014,
- PlayerBonusRollFailed = 0x3017,
+ PlayedTime = 0x26ca,
+ PlayerAzeriteItemEquippedStatusChanged = 0x3014,
+ PlayerAzeriteItemGains = 0x3013,
+ PlayerBonusRollFailed = 0x3016,
PlayerBound = 0x2ff8,
PlayerChoiceClear = 0x2ffe,
PlayerChoiceDisplayError = 0x2ffd,
- PlayerConditionResult = 0x300b,
- PlayerIsAdventureMapPoiValid = 0x300a,
- PlayerOpenSubscriptionInterstitial = 0x300f,
+ PlayerConditionResult = 0x300a,
+ PlayerIsAdventureMapPoiValid = 0x3009,
+ PlayerOpenSubscriptionInterstitial = 0x300e,
PlayerSaveGuildEmblem = 0x29f9,
- PlayerShowUiEventToast = 0x301a,
- PlayerSkinned = 0x3007,
- PlayerTabardVendorActivate = 0x3008,
- PlayerTutorialHighlightSpell = 0x300e,
- PlayerTutorialUnhighlightSpell = 0x300d,
- PlayMusic = 0x2759,
- PlayObjectSound = 0x275a,
- PlayOneShotAnimKit = 0x2721,
+ PlayerShowUiEventToast = 0x3019,
+ PlayerSkinned = 0x3006,
+ PlayerTabardVendorActivate = 0x3007,
+ PlayerTutorialHighlightSpell = 0x300d,
+ PlayerTutorialUnhighlightSpell = 0x300c,
+ PlayMusic = 0x275b,
+ PlayObjectSound = 0x275c,
+ PlayOneShotAnimKit = 0x2723,
PlayOrphanSpellVisual = 0x2c47,
- PlayScene = 0x262c,
- PlaySound = 0x2758,
- PlaySpeakerbotSound = 0x275b,
+ PlayScene = 0x262d,
+ PlaySound = 0x275a,
+ PlaySpeakerbotSound = 0x275d,
PlaySpellVisual = 0x2c45,
PlaySpellVisualKit = 0x2c49,
- PlayTimeWarning = 0x26ef,
+ PlayTimeWarning = 0x26f1,
Pong = 0x304e,
- PowerUpdate = 0x26c5,
+ PowerUpdate = 0x26c7,
PreloadChildMap = 0x2579,
- PrepopulateNameCache = 0x284c,
- PreRessurect = 0x2757,
- PrintNotification = 0x25c5,
- ProcResist = 0x274b,
+ PrepopulateNameCache = 0x284d,
+ PreRessurect = 0x2759,
+ PrintNotification = 0x25c6,
+ ProcResist = 0x274d,
PushSpellToActionBar = 0x2c51,
- PvpCredit = 0x2944,
- PvpMatchComplete = 0x294e,
- PvpMatchInitialize = 0x294f,
- PvpMatchStart = 0x294d,
- PvpMatchStatistics = 0x2931,
- PvpOptionsEnabled = 0x2933,
- PvpTierRecord = 0x2886,
+ PvpCredit = 0x2945,
+ PvpMatchComplete = 0x294f,
+ PvpMatchInitialize = 0x2950,
+ PvpMatchStart = 0x294e,
+ PvpMatchStatistics = 0x2932,
+ PvpOptionsEnabled = 0x2934,
+ PvpTierRecord = 0x2887,
QueryBattlePetNameResponse = 0x291a,
QueryCreatureResponse = 0x2914,
QueryGameObjectResponse = 0x2915,
@@ -1638,11 +1654,11 @@ namespace Framework.Constants
QueryPageTextResponse = 0x2917,
QueryPetitionResponse = 0x291b,
QueryPetNameResponse = 0x2919,
- QueryPlayerNameByCommunityIdResponse = 0x3003,
- QueryPlayerNameResponse = 0x3002,
+ QueryPlayerNameByCommunityIdResponse = 0x3002,
+ QueryPlayerNameResponse = 0x301b,
QueryQuestInfoResponse = 0x2a96,
QueryRealmGuildMasterInfoResponse = 0x29e6,
- QueryTimeResponse = 0x26d6,
+ QueryTimeResponse = 0x26d8,
QuestCompletionNpcResponse = 0x2a81,
QuestConfirmAccept = 0x2a8f,
QuestForceRemoved = 0x2a9c,
@@ -1660,50 +1676,50 @@ namespace Framework.Constants
QuestPoiQueryResponse = 0x2a9d,
QuestPoiUpdateResponse = 0x2a9f,
QuestPushResult = 0x2a90,
- QuestSessionInfoResponse = 0x286f,
- QuestSessionReadyCheck = 0x285d,
- QuestSessionReadyCheckResponse = 0x285e,
- QuestSessionResult = 0x285c,
+ QuestSessionInfoResponse = 0x2870,
+ QuestSessionReadyCheck = 0x285e,
+ QuestSessionReadyCheckResponse = 0x285f,
+ QuestSessionResult = 0x285d,
QuestUpdateAddCredit = 0x2a8c,
QuestUpdateAddCreditSimple = 0x2a8d,
QuestUpdateAddPvpCredit = 0x2a8e,
QuestUpdateComplete = 0x2a89,
QuestUpdateFailed = 0x2a8a,
QuestUpdateFailedTimer = 0x2a8b,
- QueueSummaryUpdate = 0x2800,
- RafAccountInfo = 0x285a,
- RafActivityStateChanged = 0x286b,
- RaidDifficultySet = 0x2798,
- RaidGroupOnly = 0x279a,
+ QueueSummaryUpdate = 0x2801,
+ RafAccountInfo = 0x285b,
+ RafActivityStateChanged = 0x286c,
+ RaidDifficultySet = 0x279a,
+ RaidGroupOnly = 0x279c,
RaidInstanceMessage = 0x2bb4,
RaidMarkersChanged = 0x25a2,
- RandomRoll = 0x2626,
- RatedPvpInfo = 0x2930,
- ReadyCheckCompleted = 0x25f0,
- ReadyCheckResponse = 0x25ef,
- ReadyCheckStarted = 0x25ee,
- ReadItemResultFailed = 0x2794,
- ReadItemResultOk = 0x278c,
- RealmLookupInfo = 0x27b8,
+ RandomRoll = 0x2627,
+ RatedPvpInfo = 0x2931,
+ ReadyCheckCompleted = 0x25f1,
+ ReadyCheckResponse = 0x25f0,
+ ReadyCheckStarted = 0x25ef,
+ ReadItemResultFailed = 0x2796,
+ ReadItemResultOk = 0x278e,
+ RealmLookupInfo = 0x27ba,
RealmQueryResponse = 0x2913,
- ReattachResurrect = 0x273b,
- RecruitAFriendFailure = 0x26b4,
- RefreshComponent = 0x2646,
+ ReattachResurrect = 0x273d,
+ RecruitAFriendFailure = 0x26b6,
+ RefreshComponent = 0x2648,
RefreshSpellHistory = 0x2c2c,
RemoveItemPassive = 0x25a9,
RemoveSpellFromActionBar = 0x2c52,
- ReplaceTrophyResponse = 0x27b0,
+ ReplaceTrophyResponse = 0x27b2,
ReportPvpPlayerAfkResult = 0x3001,
RequestCemeteryListResponse = 0x2591,
- RequestPvpRewardsResponse = 0x2934,
- RequestScheduledPvpInfoResponse = 0x2935,
+ RequestPvpRewardsResponse = 0x2935,
+ RequestScheduledPvpInfoResponse = 0x2936,
ResearchComplete = 0x2587,
ResetCompressionContext = 0x304f,
- ResetFailedNotify = 0x26ab,
+ ResetFailedNotify = 0x26ad,
ResetQuestPoi = 0x2aa0,
- ResetRangedCombatTimer = 0x2943,
+ ResetRangedCombatTimer = 0x2944,
ResetWeeklyCurrency = 0x2575,
- RespecWipeConfirm = 0x2609,
+ RespecWipeConfirm = 0x260a,
RespondInspectAchievements = 0x2572,
RestartGlobalCooldown = 0x2c60,
RestrictedAccountWarning = 0x25b5,
@@ -1713,82 +1729,82 @@ namespace Framework.Constants
ResumeToken = 0x25a7,
ResurrectRequest = 0x257e,
ResyncRunes = 0x2c5f,
- ReturnApplicantList = 0x2850,
- ReturnRecruitingClubs = 0x284f,
+ ReturnApplicantList = 0x2851,
+ ReturnRecruitingClubs = 0x2850,
RoleChangedInform = 0x258d,
RoleChosen = 0x2a39,
RolePollInform = 0x258e,
- RuneforgeLegendaryCraftingOpenNpc = 0x27ed,
+ RuneforgeLegendaryCraftingOpenNpc = 0x27ee,
RuneRegenDebug = 0x25b2,
- ScenarioCompleted = 0x27da,
- ScenarioPois = 0x2629,
- ScenarioProgressUpdate = 0x2622,
- ScenarioShowCriteria = 0x27f0,
- ScenarioState = 0x2621,
- ScenarioUiUpdate = 0x27ef,
- ScenarioVacate = 0x2795,
- SceneObjectEvent = 0x25da,
- SceneObjectPetBattleFinalRound = 0x25df,
- SceneObjectPetBattleFinished = 0x25e0,
- SceneObjectPetBattleFirstRound = 0x25dc,
- SceneObjectPetBattleInitialUpdate = 0x25db,
- SceneObjectPetBattleReplacementsMade = 0x25de,
- SceneObjectPetBattleRoundResult = 0x25dd,
+ ScenarioCompleted = 0x27dc,
+ ScenarioPois = 0x262a,
+ ScenarioProgressUpdate = 0x2623,
+ ScenarioShowCriteria = 0x27f1,
+ ScenarioState = 0x2622,
+ ScenarioUiUpdate = 0x27f0,
+ ScenarioVacate = 0x2797,
+ SceneObjectEvent = 0x25db,
+ SceneObjectPetBattleFinalRound = 0x25e0,
+ SceneObjectPetBattleFinished = 0x25e1,
+ SceneObjectPetBattleFirstRound = 0x25dd,
+ SceneObjectPetBattleInitialUpdate = 0x25dc,
+ SceneObjectPetBattleReplacementsMade = 0x25df,
+ SceneObjectPetBattleRoundResult = 0x25de,
ScriptCast = 0x2c56,
SeasonInfo = 0x25bd,
- SellResponse = 0x26b8,
+ SellResponse = 0x26ba,
SendItemPassives = 0x25aa,
SendKnownSpells = 0x2c2a,
- SendRaidTargetUpdateAll = 0x2624,
- SendRaidTargetUpdateSingle = 0x2625,
+ SendRaidTargetUpdateAll = 0x2625,
+ SendRaidTargetUpdateSingle = 0x2626,
SendSpellCharges = 0x2c2d,
SendSpellHistory = 0x2c2b,
SendUnlearnSpells = 0x2c2e,
- ServerFirstAchievements = 0x2643,
- ServerTime = 0x2677,
- ServerTimeOffset = 0x2705,
+ ServerFirstAchievements = 0x2645,
+ ServerTime = 0x2679,
+ ServerTimeOffset = 0x2707,
SetupCurrency = 0x2573,
SetupResearchHistory = 0x2586,
- SetAiAnimKit = 0x2720,
- SetAllTaskProgress = 0x277c,
- SetAnimTier = 0x2724,
- SetChrUpgradeTier = 0x25d7,
+ SetAiAnimKit = 0x2722,
+ SetAllTaskProgress = 0x277e,
+ SetAnimTier = 0x2726,
+ SetChrUpgradeTier = 0x25d8,
SetCurrency = 0x2574,
SetDfFastLaunchResult = 0x2a2e,
- SetDungeonDifficulty = 0x2699,
- SetFactionAtWar = 0x26f1,
- SetFactionNotVisible = 0x271b,
- SetFactionStanding = 0x271c,
- SetFactionVisible = 0x271a,
+ SetDungeonDifficulty = 0x269b,
+ SetFactionAtWar = 0x26f3,
+ SetFactionNotVisible = 0x271d,
+ SetFactionStanding = 0x271e,
+ SetFactionVisible = 0x271c,
SetFlatSpellModifier = 0x2c36,
- SetForcedReactions = 0x270e,
+ SetForcedReactions = 0x2710,
SetItemPurchaseData = 0x259d,
- SetLootMethodFailed = 0x27be,
+ SetLootMethodFailed = 0x27c0,
SetMaxWeeklyQuantity = 0x25a0,
- SetMeleeAnimKit = 0x2723,
- SetMovementAnimKit = 0x2722,
+ SetMeleeAnimKit = 0x2725,
+ SetMovementAnimKit = 0x2724,
SetPctSpellModifier = 0x2c37,
- SetPetSpecialization = 0x261b,
- SetPlayerDeclinedNamesResult = 0x3004,
+ SetPetSpecialization = 0x261c,
+ SetPlayerDeclinedNamesResult = 0x3003,
SetPlayHoverAnim = 0x25b6,
- SetProficiency = 0x2725,
- SetQuestReplayCooldownOverride = 0x2863,
+ SetProficiency = 0x2727,
+ SetQuestReplayCooldownOverride = 0x2864,
SetShipmentReadyResponse = 0x2997,
SetSpellCharges = 0x2c29,
- SetTaskComplete = 0x277d,
- SetTimeZoneInformation = 0x266c,
- SetVehicleRecId = 0x26e8,
+ SetTaskComplete = 0x277f,
+ SetTimeZoneInformation = 0x266e,
+ SetVehicleRecId = 0x26ea,
ShipmentFactionUpdateResult = 0x2998,
- ShowBank = 0x2674,
- ShowMailbox = 0x2796,
- ShowNeutralPlayerFactionSelectUi = 0x25d3,
+ ShowBank = 0x2676,
+ ShowMailbox = 0x2798,
+ ShowNeutralPlayerFactionSelectUi = 0x25d4,
ShowQuestCompletionText = 0x2a95,
- ShowTaxiNodes = 0x26c0,
- ShowTradeSkillResponse = 0x2760,
- SocketGemsFailure = 0x2718,
- SocketGemsSuccess = 0x2717,
- SpecialMountAnim = 0x2694,
- SpecInvoluntarilyChanged = 0x2709,
+ ShowTaxiNodes = 0x26c2,
+ ShowTradeSkillResponse = 0x2762,
+ SocketGemsFailure = 0x271a,
+ SocketGemsSuccess = 0x2719,
+ SpecialMountAnim = 0x2696,
+ SpecInvoluntarilyChanged = 0x270b,
SpellAbsorbLog = 0x2c1f,
SpellCategoryCooldown = 0x2c17,
SpellChannelStart = 0x2c34,
@@ -1813,94 +1829,95 @@ namespace Framework.Constants
SpellPeriodicAuraLog = 0x2c1b,
SpellPrepare = 0x2c38,
SpellStart = 0x2c3a,
- SpellVisualLoadScreen = 0x25c7,
- SpiritHealerConfirm = 0x2706,
- SplashScreenShowLatest = 0x2875,
- StandStateUpdate = 0x270d,
- StartElapsedTimer = 0x25fc,
- StartElapsedTimers = 0x25fe,
- StartLightningStorm = 0x269c,
- StartLootRoll = 0x2613,
- StartMirrorTimer = 0x2700,
+ SpellVisualLoadScreen = 0x25c8,
+ SpiritHealerConfirm = 0x2708,
+ SplashScreenShowLatest = 0x2876,
+ StandStateUpdate = 0x270f,
+ StartElapsedTimer = 0x25fd,
+ StartElapsedTimers = 0x25ff,
+ StartLightningStorm = 0x269e,
+ StartLootRoll = 0x2614,
+ StartMirrorTimer = 0x2702,
StartTimer = 0x25a4,
- StopElapsedTimer = 0x25fd,
- StopMirrorTimer = 0x2702,
- StopSpeakerbotSound = 0x275c,
+ StopElapsedTimer = 0x25fe,
+ StopMirrorTimer = 0x2704,
+ StopSpeakerbotSound = 0x275e,
StreamingMovies = 0x25a3,
- SummonCancel = 0x26a5,
+ SummonCancel = 0x26a7,
SummonRaidMemberValidateFailed = 0x258f,
- SummonRequest = 0x2712,
+ SummonRequest = 0x2714,
SupercededSpells = 0x2c4c,
SuspendComms = 0x304a,
SuspendToken = 0x25a6,
- SyncWowEntitlements = 0x286d,
- TalentsInvoluntarilyReset = 0x2708,
- TaxiNodeStatus = 0x2671,
- TextEmote = 0x266f,
- ThreatClear = 0x26cf,
- ThreatRemove = 0x26ce,
- ThreatUpdate = 0x26cd,
+ SyncWowEntitlements = 0x286e,
+ TalentsInvoluntarilyReset = 0x270a,
+ TaxiNodeStatus = 0x2673,
+ TextEmote = 0x2671,
+ ThreatClear = 0x26d1,
+ ThreatRemove = 0x26d0,
+ ThreatUpdate = 0x26cf,
TimeAdjustment = 0x2dd3,
TimeSyncRequest = 0x2dd2,
- TitleEarned = 0x26ca,
- TitleLost = 0x26cb,
- TotemCreated = 0x26bb,
- TotemDurationChanged = 0x26bc,
- TotemMoved = 0x26bd,
+ TitleEarned = 0x26cc,
+ TitleLost = 0x26cd,
+ TotemCreated = 0x26bd,
+ TotemDurationChanged = 0x26be,
+ TotemMoved = 0x26bf,
TradeStatus = 0x2582,
TradeUpdated = 0x2581,
- TrainerBuyFailed = 0x26d2,
- TrainerList = 0x26d1,
- TransferAborted = 0x26f4,
- TransferPending = 0x25c8,
- TransmogrifyNpc = 0x27e5,
+ TrainerBuyFailed = 0x26d4,
+ TrainerList = 0x26d3,
+ TransferAborted = 0x26f6,
+ TransferPending = 0x25c9,
+ TransmogrifyNpc = 0x27e6,
TreasurePickerResponse = 0x291f,
- TriggerCinematic = 0x27b6,
- TriggerMovie = 0x26be,
- TurnInPetitionResult = 0x273e,
- TutorialFlags = 0x27a9,
+ TriggerCinematic = 0x27b8,
+ TriggerMovie = 0x26c0,
+ TurnInPetitionResult = 0x2740,
+ TutorialFlags = 0x27ab,
TwitterStatus = 0x3043,
- UiHealingRangeModified = 0x2734,
- UiItemInteractionNpc = 0x27e7,
+ UiHealingRangeModified = 0x2736,
+ UiItemInteractionNpc = 0x27e8,
UiMapQuestLinesResponse = 0x2aa2,
- UndeleteCharacterResponse = 0x27b9,
- UndeleteCooldownStatusResponse = 0x27ba,
+ UndeleteCharacterResponse = 0x27bb,
+ UndeleteCooldownStatusResponse = 0x27bc,
UnlearnedSpells = 0x2c4e,
UnloadChildMap = 0x257a,
- UpdateAadcStatusResponse = 0x2887,
- UpdateAccountData = 0x26fa,
- UpdateActionButtons = 0x25d8,
- UpdateBnetSessionKey = 0x2811,
+ UpdateAadcStatusResponse = 0x2888,
+ UpdateAccountData = 0x26fc,
+ UpdateActionButtons = 0x25d9,
+ UpdateBnetSessionKey = 0x2812,
UpdateCapturePoint = 0x2929,
- UpdateCelestialBody = 0x280d,
- UpdateCharacterFlags = 0x27af,
- UpdateChargeCategoryCooldown = 0x2756,
- UpdateCooldown = 0x2755,
+ UpdateCelestialBody = 0x280e,
+ UpdateCharacterFlags = 0x27b1,
+ UpdateChargeCategoryCooldown = 0x2758,
+ UpdateCooldown = 0x2757,
UpdateDailyMissionCounter = 0x297f,
- UpdateExpansionLevel = 0x263c,
- UpdateGameTimeState = 0x2814,
- UpdateInstanceOwnership = 0x269e,
- UpdateLastInstance = 0x267d,
- UpdateObject = 0x27b7,
- UpdatePrimarySpec = 0x25d0,
- UpdateTalentData = 0x25cf,
- UpdateTaskProgress = 0x277b,
+ UpdateExpansionLevel = 0x263d,
+ UpdateGameTimeState = 0x2815,
+ UpdateInstanceOwnership = 0x26a0,
+ UpdateLastInstance = 0x267f,
+ UpdateObject = 0x27b9,
+ UpdatePrimarySpec = 0x25d1,
+ UpdateTalentData = 0x25d0,
+ UpdateTaskProgress = 0x277d,
UpdateWeeklySpellUsage = 0x2c19,
- UpdateWorldState = 0x2738,
+ UpdateWorldState = 0x273a,
UserlistAdd = 0x2bb9,
UserlistRemove = 0x2bba,
UserlistUpdate = 0x2bbb,
- UseEquipmentSetResult = 0x273f,
- VasCheckTransferOkResponse = 0x2808,
- VasGetQueueMinutesResponse = 0x2806,
- VasGetServiceStatusResponse = 0x2805,
- VasPurchaseComplete = 0x27e1,
- VasPurchaseStateUpdate = 0x27e0,
+ UseEquipmentSetResult = 0x2741,
+ VasAssignDistributionResponse = 0x288a,
+ VasCheckTransferOkResponse = 0x2809,
+ VasGetQueueMinutesResponse = 0x2807,
+ VasGetServiceStatusResponse = 0x2806,
+ VasPurchaseComplete = 0x27e2,
+ VasPurchaseStateUpdate = 0x27e1,
VendorInventory = 0x25b4,
- VignetteUpdate = 0x3009,
- VoiceChannelInfoResponse = 0x280c,
- VoiceChannelSttTokenResponse = 0x2881,
- VoiceLoginResponse = 0x280b,
+ VignetteUpdate = 0x3008,
+ VoiceChannelInfoResponse = 0x280d,
+ VoiceChannelSttTokenResponse = 0x2882,
+ VoiceLoginResponse = 0x280c,
VoidItemSwapResponse = 0x2da4,
VoidStorageContents = 0x2da1,
VoidStorageFailed = 0x2da0,
@@ -1909,24 +1926,24 @@ namespace Framework.Constants
WaitQueueFinish = 0x256f,
WaitQueueUpdate = 0x256e,
Warden3Data = 0x2577,
- Warden3Disabled = 0x280f,
- Warden3Enabled = 0x280e,
- WarfrontComplete = 0x274e,
- WargameRequestSuccessfullySentToOpponent = 0x2932,
- Weather = 0x269b,
- WeeklyRewardsProgressResult = 0x2878,
- WeeklyRewardsResult = 0x2876,
- WeeklyRewardClaimResult = 0x2877,
+ Warden3Disabled = 0x2810,
+ Warden3Enabled = 0x280f,
+ WarfrontComplete = 0x2750,
+ WargameRequestSuccessfullySentToOpponent = 0x2933,
+ Weather = 0x269d,
+ WeeklyRewardsProgressResult = 0x2879,
+ WeeklyRewardsResult = 0x2877,
+ WeeklyRewardClaimResult = 0x2878,
WeeklySpellUsage = 0x2c18,
Who = 0x2bae,
- WhoIs = 0x269a,
- WillBeKickedForAddedSubscriptionTime = 0x2813,
- WorldMapOpenNpc = 0x27e4,
- WorldQuestUpdateResponse = 0x3010,
+ WhoIs = 0x269c,
+ WillBeKickedForAddedSubscriptionTime = 0x2814,
+ WorldMapOpenNpc = 0x27e5,
+ WorldQuestUpdateResponse = 0x300f,
WorldServerInfo = 0x25ab,
- WowEntitlementNotification = 0x286e,
- XpGainAborted = 0x25c4,
- XpGainEnabled = 0x2799,
+ WowEntitlementNotification = 0x286f,
+ XpGainAborted = 0x25c5,
+ XpGainEnabled = 0x279b,
ZoneUnderAttack = 0x2bb5,
// Opcodes That Are Not Generated Automatically
diff --git a/Source/Framework/Constants/SharedConst.cs b/Source/Framework/Constants/SharedConst.cs
index e917c0172..9fbe4ed71 100644
--- a/Source/Framework/Constants/SharedConst.cs
+++ b/Source/Framework/Constants/SharedConst.cs
@@ -213,7 +213,7 @@ namespace Framework.Constants
///
/// AreaTrigger Const
///
- public const int MaxAreatriggerEntityData = 6;
+ public const int MaxAreatriggerEntityData = 8;
public const int MaxAreatriggerScale = 7;
///
diff --git a/Source/Game/DungeonFinding/LFGScripts.cs b/Source/Game/DungeonFinding/LFGScripts.cs
index e74652d11..94f6a3246 100644
--- a/Source/Game/DungeonFinding/LFGScripts.cs
+++ b/Source/Game/DungeonFinding/LFGScripts.cs
@@ -19,6 +19,7 @@ using Framework.Constants;
using Game.Entities;
using Game.Groups;
using Game.Maps;
+using Game.Networking.Packets;
using Game.Scripting;
namespace Game.DungeonFinding
@@ -84,12 +85,14 @@ namespace Game.DungeonFinding
return;
}
- for (GroupReference refe = group.GetFirstMember(); refe != null; refe = refe.Next())
+ QueryPlayerNameResponse response = new();
+ foreach (MemberSlot memberSlot in group.GetMemberSlots())
{
- Player member = refe.GetSource();
- if (member)
- player.GetSession().SendNameQuery(member.GetGUID());
+ player.GetSession().BuildNameQueryData(memberSlot.guid, out NameCacheLookupResult nameCacheLookupResult);
+ response.Players.Add(nameCacheLookupResult);
}
+
+ player.SendPacket(response);
if (Global.LFGMgr.SelectedRandomLfgDungeon(player.GetGUID()))
player.CastSpell(player, SharedConst.LFGSpellLuckOfTheDraw, true);
diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs
index 7ff6a6926..556af2c2b 100644
--- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs
+++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs
@@ -370,6 +370,9 @@ namespace Game.Entities
case AreaTriggerTypes.Cylinder:
SearchUnitInCylinder(targetList);
break;
+ case AreaTriggerTypes.Disk:
+ SearchUnitInDisk(targetList);
+ break;
default:
break;
}
@@ -452,6 +455,18 @@ namespace Game.Entities
targetList.RemoveAll(unit => unit.GetPositionZ() < minZ || unit.GetPositionZ() > maxZ);
}
+ void SearchUnitInDisk(List targetList)
+ {
+ SearchUnits(targetList, GetMaxSearchRadius(), false);
+
+ float innerRadius = _shape.DiskDatas.InnerRadius;
+ float height = _shape.DiskDatas.Height;
+ float minZ = GetPositionZ() - height;
+ float maxZ = GetPositionZ() + height;
+
+ targetList.RemoveAll(unit => unit.IsInDist2d(this, innerRadius) || unit.GetPositionZ() < minZ || unit.GetPositionZ() > maxZ);
+ }
+
void HandleUnitEnterExit(List newTargetList)
{
List exitUnits = _insideUnits;
diff --git a/Source/Game/Entities/AreaTrigger/AreaTriggerTemplate.cs b/Source/Game/Entities/AreaTrigger/AreaTriggerTemplate.cs
index ec1dd39cd..a5323bb06 100644
--- a/Source/Game/Entities/AreaTrigger/AreaTriggerTemplate.cs
+++ b/Source/Game/Entities/AreaTrigger/AreaTriggerTemplate.cs
@@ -44,6 +44,9 @@ namespace Game.Entities
[FieldOffset(0)]
public cylinderdatas CylinderDatas;
+ [FieldOffset(0)]
+ public diskDatas DiskDatas;
+
public struct defaultdatas
{
public fixed float Data[SharedConst.MaxAreatriggerEntityData];
@@ -80,6 +83,18 @@ namespace Game.Entities
public float LocationZOffset;
public float LocationZOffsetTarget;
}
+ // AREATRIGGER_TYPE_DISK
+ public struct diskDatas
+ {
+ public float InnerRadius;
+ public float InnerRadiusTarget;
+ public float OuterRadius;
+ public float OuterRadiusTarget;
+ public float Height;
+ public float HeightTarget;
+ public float LocationZOffset;
+ public float LocationZOffsetTarget;
+ }
}
///
@@ -183,7 +198,7 @@ namespace Game.Entities
}
public class AreaTriggerShapeInfo : AreaTriggerData
- {
+ {
public AreaTriggerTypes TriggerType;
public AreaTriggerShapeInfo()
@@ -200,7 +215,9 @@ namespace Game.Entities
case AreaTriggerTypes.Box:
return MathF.Sqrt(BoxDatas.Extents[0] * BoxDatas.Extents[0] / 4 + BoxDatas.Extents[1] * BoxDatas.Extents[1] / 4);
case AreaTriggerTypes.Cylinder:
- return CylinderDatas.Radius;
+ return Math.Max(CylinderDatas.Radius, CylinderDatas.RadiusTarget);
+ case AreaTriggerTypes.Disk:
+ return Math.Max(DiskDatas.OuterRadius, DiskDatas.OuterRadiusTarget);
}
return 0.0f;
@@ -210,6 +227,7 @@ namespace Game.Entities
public bool IsBox() { return TriggerType == AreaTriggerTypes.Box; }
public bool IsPolygon() { return TriggerType == AreaTriggerTypes.Polygon; }
public bool IsCylinder() { return TriggerType == AreaTriggerTypes.Cylinder; }
+ public bool IsDisk() { return TriggerType == AreaTriggerTypes.Disk; }
}
public class AreaTriggerOrbitInfo
diff --git a/Source/Game/Entities/Creature/Gossip.cs b/Source/Game/Entities/Creature/Gossip.cs
index ff2a21fab..1d53f19c6 100644
--- a/Source/Game/Entities/Creature/Gossip.cs
+++ b/Source/Game/Entities/Creature/Gossip.cs
@@ -260,6 +260,7 @@ namespace Game.Misc
opt.OptionNPC = item.MenuItemIcon;
opt.OptionFlags = (byte)(item.IsCoded ? 1 : 0); // makes pop up box password
opt.OptionCost = (int)item.BoxMoney; // money required to open menu, 2.0.3
+ opt.OptionLanguage = item.Language;
opt.Text = item.Message; // text for gossip item
opt.Confirm = item.BoxMessage; // accept text (related to money) pop up box, 2.0.3
opt.Status = GossipOptionStatus.Available;
@@ -701,6 +702,7 @@ namespace Game.Misc
public uint OptionType;
public string BoxMessage;
public uint BoxMoney;
+ public uint Language;
}
public class GossipMenuItemData
@@ -734,6 +736,7 @@ namespace Game.Misc
public uint OptionBroadcastTextId;
public GossipOption OptionType;
public NPCFlags OptionNpcFlag;
+ public uint Language;
public uint ActionMenuId;
public uint ActionPoiId;
public bool BoxCoded;
diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs
index 90481b440..5851dd66f 100644
--- a/Source/Game/Entities/Object/Update/UpdateFields.cs
+++ b/Source/Game/Entities/Object/Update/UpdateFields.cs
@@ -1219,24 +1219,23 @@ namespace Game.Entities
public UpdateField LookAtControllerID = new(96, 115);
public UpdateField TaxiNodesID = new(96, 116);
public UpdateField GuildGUID = new(96, 117);
- public UpdateField SkinningOwnerGUID = new(96, 118);
- public UpdateField SilencedSchoolMask = new(96, 119);
- public UpdateField NameplateAttachToGUID = new(96, 120); // When set, nameplate of this unit will instead appear on that object
- public UpdateFieldArray NpcFlags = new(2, 121, 122);
- public UpdateFieldArray Power = new(7, 124, 125);
- public UpdateFieldArray MaxPower = new(7, 124, 132);
- public UpdateFieldArray PowerRegenFlatModifier = new(7, 124, 139);
- public UpdateFieldArray PowerRegenInterruptedFlatModifier = new(7, 124, 146);
- public UpdateFieldArray VirtualItems = new(3, 153, 154);
- public UpdateFieldArray AttackRoundBaseTime = new(2, 157, 158);
- public UpdateFieldArray Stats = new(4, 160, 161);
- public UpdateFieldArray StatPosBuff = new(4, 160, 165);
- public UpdateFieldArray StatNegBuff = new(4, 160, 169);
- public UpdateFieldArray Resistances = new(7, 173, 174);
- public UpdateFieldArray BonusResistanceMods = new(7, 173, 181);
- public UpdateFieldArray ManaCostModifier = new(7, 173, 188);
+ public UpdateField SilencedSchoolMask = new(96, 118);
+ public UpdateField NameplateAttachToGUID = new(96, 119); // When set, nameplate of this unit will instead appear on that object
+ public UpdateFieldArray NpcFlags = new(2, 120, 121);
+ public UpdateFieldArray Power = new(7, 123, 124);
+ public UpdateFieldArray MaxPower = new(7, 123, 131);
+ public UpdateFieldArray PowerRegenFlatModifier = new(7, 123, 138);
+ public UpdateFieldArray PowerRegenInterruptedFlatModifier = new(7, 123, 145);
+ public UpdateFieldArray VirtualItems = new(3, 152, 153);
+ public UpdateFieldArray AttackRoundBaseTime = new(2, 156, 157);
+ public UpdateFieldArray Stats = new(4, 159, 160);
+ public UpdateFieldArray StatPosBuff = new(4, 159, 164);
+ public UpdateFieldArray StatNegBuff = new(4, 159, 168);
+ public UpdateFieldArray Resistances = new(7, 172, 173);
+ public UpdateFieldArray BonusResistanceMods = new(7, 172, 180);
+ public UpdateFieldArray ManaCostModifier = new(7, 172, 187);
- public UnitData() : base(0, TypeId.Unit, 195) { }
+ public UnitData() : base(0, TypeId.Unit, 194) { }
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
{
@@ -1415,7 +1414,6 @@ namespace Game.Entities
data.WriteInt32(PassiveSpells.Size());
data.WriteInt32(WorldEffects.Size());
data.WriteInt32(ChannelObjects.Size());
- data.WritePackedGuid(SkinningOwnerGUID);
data.WriteUInt32(SilencedSchoolMask);
data.WritePackedGuid(NameplateAttachToGUID);
@@ -1431,7 +1429,7 @@ namespace Game.Entities
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
{
- UpdateMask allowedMaskForTarget = new(195, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0xFE0007FFu, 0x00000000u, 0x00000000u });
+ UpdateMask allowedMaskForTarget = new(195, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x7F0003FFu, 0x00000000u, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -1439,16 +1437,16 @@ namespace Game.Entities
public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
- allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x1000007Eu, 0x01FFF800u, 0xFFFFFFFFu, 0x00000007u }));
+ allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0800007Eu, 0x80FFFC00u, 0xFFFFFFFFu, 0x00000003u }));
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll))
- allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x10000000u, 0x01FFF800u, 0x00000000u, 0x00000000u }));
+ allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x08000000u, 0x00FFFC00u, 0x00000000u, 0x00000000u }));
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Empath))
- allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x001FE000u, 0x00000000u }));
+ allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000FF000u, 0x00000000u }));
}
public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags)
{
- UpdateMask allowedMaskForTarget = new(195, new[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0xFE0007FFu, 0x00000000u, 0x00000000u });
+ UpdateMask allowedMaskForTarget = new(195, new[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x7F0003FFu, 0x00000000u, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask.AND(allowedMaskForTarget);
}
@@ -1979,101 +1977,97 @@ namespace Game.Entities
data.WritePackedGuid(GuildGUID);
}
if (changesMask[118])
- {
- data.WritePackedGuid(SkinningOwnerGUID);
- }
- if (changesMask[119])
{
data.WriteUInt32(SilencedSchoolMask);
}
- if (changesMask[120])
+ if (changesMask[119])
{
data.WritePackedGuid(NameplateAttachToGUID);
}
}
- if (changesMask[121])
+ if (changesMask[120])
{
for (int i = 0; i < 2; ++i)
{
- if (changesMask[122 + i])
+ if (changesMask[121 + i])
{
data.WriteUInt32(GetViewerDependentNpcFlags(this, i, owner, receiver));
}
}
}
- if (changesMask[124])
+ if (changesMask[123])
{
for (int i = 0; i < 7; ++i)
{
- if (changesMask[125 + i])
+ if (changesMask[124 + i])
{
data.WriteInt32(Power[i]);
}
- if (changesMask[132 + i])
+ if (changesMask[131 + i])
{
data.WriteUInt32(MaxPower[i]);
}
- if (changesMask[139 + i])
+ if (changesMask[138 + i])
{
data.WriteFloat(PowerRegenFlatModifier[i]);
}
- if (changesMask[146 + i])
+ if (changesMask[145 + i])
{
data.WriteFloat(PowerRegenInterruptedFlatModifier[i]);
}
}
}
- if (changesMask[153])
+ if (changesMask[152])
{
for (int i = 0; i < 3; ++i)
{
- if (changesMask[154 + i])
+ if (changesMask[153 + i])
{
VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[157])
+ if (changesMask[156])
{
for (int i = 0; i < 2; ++i)
{
- if (changesMask[158 + i])
+ if (changesMask[157 + i])
{
data.WriteUInt32(AttackRoundBaseTime[i]);
}
}
}
- if (changesMask[160])
+ if (changesMask[159])
{
for (int i = 0; i < 4; ++i)
{
- if (changesMask[161 + i])
+ if (changesMask[160 + i])
{
data.WriteInt32(Stats[i]);
}
- if (changesMask[165 + i])
+ if (changesMask[164 + i])
{
data.WriteInt32(StatPosBuff[i]);
}
- if (changesMask[169 + i])
+ if (changesMask[168 + i])
{
data.WriteInt32(StatNegBuff[i]);
}
}
}
- if (changesMask[173])
+ if (changesMask[172])
{
for (int i = 0; i < 7; ++i)
{
- if (changesMask[174 + i])
+ if (changesMask[173 + i])
{
data.WriteInt32(Resistances[i]);
}
- if (changesMask[181 + i])
+ if (changesMask[180 + i])
{
data.WriteInt32(BonusResistanceMods[i]);
}
- if (changesMask[188 + i])
+ if (changesMask[187 + i])
{
data.WriteInt32(ManaCostModifier[i]);
}
@@ -2197,7 +2191,6 @@ namespace Game.Entities
ClearChangesMask(LookAtControllerID);
ClearChangesMask(TaxiNodesID);
ClearChangesMask(GuildGUID);
- ClearChangesMask(SkinningOwnerGUID);
ClearChangesMask(SilencedSchoolMask);
ClearChangesMask(NameplateAttachToGUID);
ClearChangesMask(NpcFlags);
@@ -5140,22 +5133,22 @@ namespace Game.Entities
public class DynamicObjectData : BaseUpdateData
{
public UpdateField Caster = new(0, 1);
- public UpdateField SpellVisual = new(0, 2);
- public UpdateField SpellID = new(0, 3);
- public UpdateField Radius = new(0, 4);
- public UpdateField CastTime = new(0, 5);
- public UpdateField Type = new(0, 6);
+ public UpdateField Type = new(0, 2);
+ public UpdateField SpellVisual = new(0, 3);
+ public UpdateField SpellID = new(0, 4);
+ public UpdateField Radius = new(0, 5);
+ public UpdateField CastTime = new(0, 6);
public DynamicObjectData() : base(0, TypeId.DynamicObject, 7) { }
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, DynamicObject owner, Player receiver)
{
data.WritePackedGuid(Caster);
+ data.WriteUInt8(Type);
((SpellCastVisualField)SpellVisual).WriteCreate(data, owner, receiver);
data.WriteUInt32(SpellID);
data.WriteFloat(Radius);
data.WriteUInt32(CastTime);
- data.WriteUInt8(Type);
}
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, DynamicObject owner, Player receiver)
@@ -5176,23 +5169,23 @@ namespace Game.Entities
}
if (_changesMask[2])
{
- ((SpellCastVisualField)SpellVisual).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data.WriteUInt8(Type);
}
if (_changesMask[3])
{
- data.WriteUInt32(SpellID);
+ ((SpellCastVisualField)SpellVisual).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
if (_changesMask[4])
{
- data.WriteFloat(Radius);
+ data.WriteUInt32(SpellID);
}
if (_changesMask[5])
{
- data.WriteUInt32(CastTime);
+ data.WriteFloat(Radius);
}
if (_changesMask[6])
{
- data.WriteUInt8(Type);
+ data.WriteUInt32(CastTime);
}
}
}
@@ -5200,11 +5193,11 @@ namespace Game.Entities
public override void ClearChangesMask()
{
ClearChangesMask(Caster);
+ ClearChangesMask(Type);
ClearChangesMask(SpellVisual);
ClearChangesMask(SpellID);
ClearChangesMask(Radius);
ClearChangesMask(CastTime);
- ClearChangesMask(Type);
_changesMask.ResetAll();
}
}
@@ -5511,10 +5504,12 @@ namespace Game.Entities
public UpdateField BoundsRadius2D = new(0, 11);
public UpdateField DecalPropertiesID = new(0, 12);
public UpdateField CreatingEffectGUID = new(0, 13);
- public UpdateField Field_80 = new(0, 14);
- public UpdateField VisualAnim = new(0, 15);
+ public UpdateField Field_80 = new(0, 14);
+ public UpdateField Field_84 = new(0, 15);
+ public UpdateField Field_88 = new(0, 16);
+ public UpdateField VisualAnim = new(0, 17);
- public AreaTriggerFieldData() : base(0, TypeId.AreaTrigger, 16) { }
+ public AreaTriggerFieldData() : base(0, TypeId.AreaTrigger, 18) { }
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
{
@@ -5532,7 +5527,11 @@ namespace Game.Entities
data.WriteFloat(BoundsRadius2D);
data.WriteUInt32(DecalPropertiesID);
data.WritePackedGuid(CreatingEffectGUID);
+ data.WriteUInt32(Field_80);
+ data.WriteUInt32(Field_84);
+ data.WritePackedGuid(Field_88);
((ScaleCurve)ExtraScaleCurve).WriteCreate(data, owner, receiver);
+ ((VisualAnim)VisualAnim).WriteCreate(data, owner, receiver);
}
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
@@ -5542,7 +5541,7 @@ namespace Game.Entities
public void WriteUpdate(WorldPacket data, UpdateMask changesMask, bool ignoreNestedChangesMask, AreaTrigger owner, Player receiver)
{
- data.WriteBits(_changesMask.GetBlock(0), 14);
+ data.WriteBits(_changesMask.GetBlock(0), 18);
data.FlushBits();
if (_changesMask[0])
@@ -5595,10 +5594,26 @@ namespace Game.Entities
{
data.WritePackedGuid(CreatingEffectGUID);
}
+ if (changesMask[14])
+ {
+ data.WriteUInt32(Field_80);
+ }
+ if (changesMask[15])
+ {
+ data.WriteUInt32(Field_84);
+ }
+ if (changesMask[16])
+ {
+ data.WritePackedGuid(Field_88);
+ }
if (_changesMask[2])
{
((ScaleCurve)ExtraScaleCurve).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
+ if (changesMask[17])
+ {
+ ((VisualAnim)VisualAnim).WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
}
}
@@ -5617,6 +5632,10 @@ namespace Game.Entities
ClearChangesMask(BoundsRadius2D);
ClearChangesMask(DecalPropertiesID);
ClearChangesMask(CreatingEffectGUID);
+ ClearChangesMask(Field_80);
+ ClearChangesMask(Field_84);
+ ClearChangesMask(Field_88);
+ ClearChangesMask(VisualAnim);
_changesMask.ResetAll();
}
}
diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs
index a69d4fb52..6ac0ba5af 100644
--- a/Source/Game/Entities/Object/WorldObject.cs
+++ b/Source/Game/Entities/Object/WorldObject.cs
@@ -281,9 +281,14 @@ namespace Game.Entities
bool HasFallDirection = unit.HasUnitMovementFlag(MovementFlag.Falling);
bool HasFall = HasFallDirection || unit.m_movementInfo.jump.fallTime != 0;
bool HasSpline = unit.IsSplineEnabled();
+ bool HasInertia = unit.m_movementInfo.inertia.HasValue;
data.WritePackedGuid(GetGUID()); // MoverGUID
+ data.WriteUInt32((uint)unit.GetUnitMovementFlags());
+ data.WriteUInt32((uint)unit.GetUnitMovementFlags2());
+ data.WriteUInt32((uint)unit.GetExtraUnitMovementFlags2());
+
data.WriteUInt32(unit.m_movementInfo.Time); // MoveTime
data.WriteFloat(unit.GetPositionX());
data.WriteFloat(unit.GetPositionY());
@@ -299,17 +304,23 @@ namespace Game.Entities
//for (public uint i = 0; i < RemoveForcesIDs.Count; ++i)
// *data << ObjectGuid(RemoveForcesIDs);
- data.WriteBits((uint)unit.GetUnitMovementFlags(), 30);
- data.WriteBits((uint)unit.GetUnitMovementFlags2(), 18);
data.WriteBit(!unit.m_movementInfo.transport.guid.IsEmpty()); // HasTransport
data.WriteBit(HasFall); // HasFall
data.WriteBit(HasSpline); // HasSpline - marks that the unit uses spline movement
data.WriteBit(false); // HeightChangeFailed
data.WriteBit(false); // RemoteTimeValid
+ data.WriteBit(HasInertia); // HasInertia
if (!unit.m_movementInfo.transport.guid.IsEmpty())
MovementExtensions.WriteTransportInfo(data, unit.m_movementInfo.transport);
+ if (HasInertia)
+ {
+ data.WritePackedGuid(unit.m_movementInfo.inertia.Value.guid);
+ data.WriteXYZ(unit.m_movementInfo.inertia.Value.force);
+ data.WriteUInt32(unit.m_movementInfo.inertia.Value.lifetime);
+ }
+
if (HasFall)
{
data.WriteUInt32(unit.m_movementInfo.jump.fallTime); // Time
@@ -440,6 +451,7 @@ namespace Game.Entities
bool hasAreaTriggerBox = shape.IsBox();
bool hasAreaTriggerPolygon = createProperties != null && shape.IsPolygon();
bool hasAreaTriggerCylinder = shape.IsCylinder();
+ bool hasDisk = shape.IsDisk();
bool hasAreaTriggerSpline = areaTrigger.HasSplines();
bool hasOrbit = areaTrigger.HasOrbit();
bool hasMovementScript = false;
@@ -459,6 +471,7 @@ namespace Game.Entities
data.WriteBit(hasAreaTriggerBox);
data.WriteBit(hasAreaTriggerPolygon);
data.WriteBit(hasAreaTriggerCylinder);
+ data.WriteBit(hasDisk);
data.WriteBit(hasAreaTriggerSpline);
data.WriteBit(hasOrbit);
data.WriteBit(hasMovementScript);
@@ -532,6 +545,18 @@ namespace Game.Entities
data.WriteFloat(shape.CylinderDatas.LocationZOffsetTarget);
}
+ if (hasDisk)
+ {
+ data.WriteFloat(shape.DiskDatas.InnerRadius);
+ data.WriteFloat(shape.DiskDatas.InnerRadiusTarget);
+ data.WriteFloat(shape.DiskDatas.OuterRadius);
+ data.WriteFloat(shape.DiskDatas.OuterRadiusTarget);
+ data.WriteFloat(shape.DiskDatas.Height);
+ data.WriteFloat(shape.DiskDatas.HeightTarget);
+ data.WriteFloat(shape.DiskDatas.LocationZOffset);
+ data.WriteFloat(shape.DiskDatas.LocationZOffsetTarget);
+ }
+
//if (hasMovementScript)
// *data << *areaTrigger.GetMovementScript(); // AreaTriggerMovementScriptInfo
@@ -3667,10 +3692,12 @@ namespace Game.Entities
public ObjectGuid Guid { get; set; }
MovementFlag flags;
MovementFlag2 flags2;
+ MovementFlags3 flags3;
public Position Pos { get; set; }
public uint Time { get; set; }
public TransportInfo transport;
public float Pitch { get; set; }
+ public Inertia? inertia;
public JumpInfo jump;
public float SplineElevation { get; set; }
@@ -3699,6 +3726,12 @@ namespace Game.Entities
public void RemoveMovementFlag2(MovementFlag2 f) { flags2 &= ~f; }
public bool HasMovementFlag2(MovementFlag2 f) { return (flags2 & f) != 0; }
+ public MovementFlags3 GetExtraMovementFlags2() { return flags3; }
+ public void SetExtraMovementFlags2(MovementFlags3 flag) { flags3 = flag; }
+ public void AddExtraMovementFlag2(MovementFlags3 flag) { flags3 |= flag; }
+ public void RemoveExtraMovementFlag2(MovementFlags3 flag) { flags3 &= ~flag; }
+ public bool HasExtraMovementFlag2(MovementFlags3 flag) { return (flags3 & flag) != 0; }
+
public void SetFallTime(uint time) { jump.fallTime = time; }
public void ResetTransport()
@@ -3730,6 +3763,12 @@ namespace Game.Entities
public uint prevTime;
public uint vehicleId;
}
+ public struct Inertia
+ {
+ public ObjectGuid guid;
+ public Position force;
+ public uint lifetime;
+ }
public struct JumpInfo
{
public void Reset()
diff --git a/Source/Game/Entities/Pet.cs b/Source/Game/Entities/Pet.cs
index 5e39c4a37..dd4f4c4e2 100644
--- a/Source/Game/Entities/Pet.cs
+++ b/Source/Game/Entities/Pet.cs
@@ -299,9 +299,11 @@ namespace Game.Entities
{
var activePetIndex = Array.FindIndex(petStable.ActivePets, pet => pet?.PetNumber == petnumber);
- Cypher.Assert(petStable.CurrentPetIndex == 0);
Cypher.Assert(activePetIndex != -1);
+ // Check that we either have no pet (unsummoned by player) or it matches temporarily unsummoned pet by server (for example on flying mount)
+ Cypher.Assert(petStable.CurrentPetIndex == 0 || petStable.CurrentPetIndex == activePetIndex);
+
petStable.SetCurrentActivePetIndex((uint)activePetIndex);
}
diff --git a/Source/Game/Entities/Unit/Unit.Movement.cs b/Source/Game/Entities/Unit/Unit.Movement.cs
index 3c9e3277d..2bbb3698a 100644
--- a/Source/Game/Entities/Unit/Unit.Movement.cs
+++ b/Source/Game/Entities/Unit/Unit.Movement.cs
@@ -1714,6 +1714,12 @@ namespace Game.Entities
m_movementInfo.SetMovementFlags2(f);
}
+ public void AddExtraUnitMovementFlag2(MovementFlags3 f) { m_movementInfo.AddExtraMovementFlag2(f); }
+ public void RemoveExtraUnitMovementFlag2(MovementFlags3 f) { m_movementInfo.RemoveExtraMovementFlag2(f); }
+ public bool HasExtraUnitMovementFlag2(MovementFlags3 f) { return m_movementInfo.HasExtraMovementFlag2(f); }
+ public MovementFlags3 GetExtraUnitMovementFlags2() { return m_movementInfo.GetExtraMovementFlags2(); }
+ public void SetExtraUnitMovementFlags2(MovementFlags3 f) { m_movementInfo.SetExtraMovementFlags2(f); }
+
//Spline
public bool IsSplineEnabled()
{
diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs
index b7bc6d984..392ae346a 100644
--- a/Source/Game/Entities/Unit/Unit.cs
+++ b/Source/Game/Entities/Unit/Unit.cs
@@ -242,7 +242,7 @@ namespace Game.Entities
_spellHistory.Update();
}
- public void HandleEmoteCommand(Emote emoteId, Player target = null, uint[] spellVisualKitIds = null)
+ public void HandleEmoteCommand(Emote emoteId, Player target = null, uint[] spellVisualKitIds = null, int sequenceVariation = 0)
{
EmoteMessage packet = new();
packet.Guid = GetGUID();
@@ -253,6 +253,8 @@ namespace Game.Entities
if (emotesEntry.AnimId == (uint)Anim.MountSpecial || emotesEntry.AnimId == (uint)Anim.MountSelfSpecial)
packet.SpellVisualKitIDs.AddRange(spellVisualKitIds);
+ packet.SequenceVariation = sequenceVariation;
+
if (target != null)
target.SendPacket(packet);
else
diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs
index 907d22289..7276006a2 100644
--- a/Source/Game/Globals/ObjectManager.cs
+++ b/Source/Game/Globals/ObjectManager.cs
@@ -596,15 +596,10 @@ namespace Game
uint oldMSTime = Time.GetMSTime();
gossipMenuItemsStorage.Clear();
-
- // 0 1 2 3 4 5 6
- SQLResult result = DB.World.Query("SELECT o.MenuId, o.OptionIndex, o.OptionIcon, o.OptionText, o.OptionBroadcastTextId, o.OptionType, o.OptionNpcFlag, " +
- // 7 8 9 10 11 12
- "oa.ActionMenuId, oa.ActionPoiId, ob.BoxCoded, ob.BoxMoney, ob.BoxText, ob.BoxBroadcastTextId " +
- "FROM gossip_menu_option o " +
- "LEFT JOIN gossip_menu_option_action oa ON o.MenuId = oa.MenuId AND o.OptionIndex = oa.OptionIndex " +
- "LEFT JOIN gossip_menu_option_box ob ON o.MenuId = ob.MenuId AND o.OptionIndex = ob.OptionIndex " +
- "ORDER BY o.MenuId, o.OptionIndex");
+
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13
+ SQLResult result = DB.World.Query("SELECT MenuID, OptionID, OptionIcon, OptionText, OptionBroadcastTextID, OptionType, OptionNpcFlag, Language, ActionMenuID, ActionPoiID, BoxCoded, BoxMoney, BoxText, BoxBroadcastTextID " +
+ "FROM gossip_menu_option ORDER BY MenuID, OptionID");
if (result.IsEmpty())
{
@@ -623,12 +618,13 @@ namespace Game
gMenuItem.OptionBroadcastTextId = result.Read(4);
gMenuItem.OptionType = (GossipOption)result.Read(5);
gMenuItem.OptionNpcFlag = (NPCFlags)result.Read(6);
- gMenuItem.ActionMenuId = result.Read(7);
- gMenuItem.ActionPoiId = result.Read(8);
- gMenuItem.BoxCoded = result.Read(9);
- gMenuItem.BoxMoney = result.Read(10);
- gMenuItem.BoxText = result.Read(11);
- gMenuItem.BoxBroadcastTextId = result.Read(12);
+ gMenuItem.Language = result.Read(7);
+ gMenuItem.ActionMenuId = result.Read(8);
+ gMenuItem.ActionPoiId = result.Read(9);
+ gMenuItem.BoxCoded = result.Read(10);
+ gMenuItem.BoxMoney = result.Read(11);
+ gMenuItem.BoxText = result.Read(12);
+ gMenuItem.BoxBroadcastTextId = result.Read(13);
if (gMenuItem.OptionIcon >= GossipOptionIcon.Max)
{
@@ -648,6 +644,12 @@ namespace Game
if (gMenuItem.OptionType >= GossipOption.Max)
Log.outError(LogFilter.Sql, $"Table gossip_menu_option for MenuId {gMenuItem.MenuId}, OptionIndex {gMenuItem.OptionId} has unknown option id {gMenuItem.OptionType}. Option will not be used");
+ if (gMenuItem.Language != 0 && !CliDB.LanguagesStorage.ContainsKey(gMenuItem.Language))
+ {
+ Log.outError(LogFilter.Sql, $"Table `gossip_menu_option` for menu {gMenuItem.MenuId}, id {gMenuItem.OptionId} use non-existing Language {gMenuItem.Language}, ignoring");
+ gMenuItem.Language = 0;
+ }
+
if (gMenuItem.ActionPoiId != 0 && GetPointOfInterest(gMenuItem.ActionPoiId) == null)
{
Log.outError(LogFilter.Sql, $"Table gossip_menu_option for MenuId {gMenuItem.MenuId}, OptionIndex {gMenuItem.OptionId} use non-existing actionpoiid {gMenuItem.ActionPoiId}, ignoring");
@@ -9550,7 +9552,7 @@ namespace Game
uint oldMSTime = Time.GetMSTime();
_playerChoices.Clear();
- SQLResult choiceResult = DB.World.Query("SELECT ChoiceId, UiTextureKitId, SoundKitId, Question, HideWarboardHeader, KeepOpenAfterChoice FROM playerchoice");
+ SQLResult choiceResult = DB.World.Query("SELECT ChoiceId, UiTextureKitId, SoundKitId, CloseSoundKitId, Duration, Question, PendingChoiceText, HideWarboardHeader, KeepOpenAfterChoice FROM playerchoice");
if (choiceResult.IsEmpty())
{
Log.outInfo(LogFilter.ServerLoading, "Loaded 0 player choices. DB table `playerchoice` is empty.");
@@ -9571,9 +9573,12 @@ namespace Game
choice.ChoiceId = choiceResult.Read(0);
choice.UiTextureKitId = choiceResult.Read(1);
choice.SoundKitId = choiceResult.Read(2);
- choice.Question = choiceResult.Read(3);
- choice.HideWarboardHeader = choiceResult.Read(4);
- choice.KeepOpenAfterChoice = choiceResult.Read(5);
+ choice.CloseSoundKitId = choiceResult.Read(3);
+ choice.Duration = choiceResult.Read(4);
+ choice.Question = choiceResult.Read(5);
+ choice.PendingChoiceText = choiceResult.Read(6);
+ choice.HideWarboardHeader = choiceResult.Read(7);
+ choice.KeepOpenAfterChoice = choiceResult.Read(8);
_playerChoices[choice.ChoiceId] = choice;
@@ -9887,8 +9892,10 @@ namespace Game
PlayerChoiceResponseMawPower mawPower = new();
mawPower.TypeArtFileID = mawPowersResult.Read(2);
- mawPower.Rarity = mawPowersResult.Read(3);
- mawPower.RarityColor = mawPowersResult.Read(4);
+ 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);
response.MawPower = mawPower;
@@ -11805,8 +11812,8 @@ namespace Game
public struct PlayerChoiceResponseMawPower
{
public int TypeArtFileID;
- public int Rarity;
- public uint RarityColor;
+ public int? Rarity;
+ public uint? RarityColor;
public int SpellID;
public int MaxStacks;
}
@@ -11843,7 +11850,10 @@ namespace Game
public int ChoiceId;
public int UiTextureKitId;
public uint SoundKitId;
+ public uint CloseSoundKitId;
+ public long Duration;
public string Question;
+ public string PendingChoiceText;
public List Responses = new();
public bool HideWarboardHeader;
public bool KeepOpenAfterChoice;
diff --git a/Source/Game/Guilds/Guild.cs b/Source/Game/Guilds/Guild.cs
index 4e7303c3e..555dfc725 100644
--- a/Source/Game/Guilds/Guild.cs
+++ b/Source/Game/Guilds/Guild.cs
@@ -148,7 +148,7 @@ namespace Game.Guilds
{
SQLTransaction trans = new();
- m_achievementSys.SaveToDB(trans);
+ GetAchievementMgr().SaveToDB(trans);
DB.Characters.CommitTransaction(trans);
}
@@ -252,11 +252,10 @@ namespace Game.Guilds
session.SendPacket(roster);
}
- public void SendQueryResponse(WorldSession session, ObjectGuid playerGuid)
+ public void SendQueryResponse(WorldSession session)
{
QueryGuildInfoResponse response = new();
response.GuildGUID = GetGUID();
- response.PlayerGuid = playerGuid;
response.HasGuildInfo = true;
response.Info.GuildGuid = GetGUID();
@@ -395,7 +394,7 @@ namespace Game.Guilds
SendSaveEmblemResult(session, GuildEmblemError.Success); // "Guild Emblem saved."
- SendQueryResponse(session, ObjectGuid.Empty);
+ SendQueryResponse(session);
}
}
@@ -1145,7 +1144,7 @@ namespace Game.Guilds
foreach (var entry in CliDB.GuildPerkSpellsStorage.Values)
player.LearnSpell(entry.SpellID, true);
- m_achievementSys.SendAllData(player);
+ GetAchievementMgr().SendAllData(player);
// tells the client to request bank withdrawal limit
player.SendPacket(new GuildMemberDailyReset());
@@ -2412,12 +2411,12 @@ namespace Game.Guilds
bool HasAchieved(uint achievementId)
{
- return m_achievementSys.HasAchieved(achievementId);
+ return GetAchievementMgr().HasAchieved(achievementId);
}
public void UpdateCriteria(CriteriaType type, ulong miscValue1, ulong miscValue2, ulong miscValue3, WorldObject refe, Player player)
{
- m_achievementSys.UpdateCriteria(type, miscValue1, miscValue2, miscValue3, refe, player);
+ GetAchievementMgr().UpdateCriteria(type, miscValue1, miscValue2, miscValue3, refe, player);
}
public void HandleNewsSetSticky(WorldSession session, uint newsId, bool sticky)
diff --git a/Source/Game/Handlers/CharacterHandler.cs b/Source/Game/Handlers/CharacterHandler.cs
index 4f17a4089..64dc6a1f2 100644
--- a/Source/Game/Handlers/CharacterHandler.cs
+++ b/Source/Game/Handlers/CharacterHandler.cs
@@ -763,10 +763,10 @@ namespace Game
// Send PVPSeason
{
SeasonInfo seasonInfo = new();
- seasonInfo.PreviousSeason = (WorldConfig.GetIntValue(WorldCfg.ArenaSeasonId) - (WorldConfig.GetBoolValue(WorldCfg.ArenaSeasonInProgress) ? 1 : 0));
+ seasonInfo.MythicPlusMilestoneSeasonID = (WorldConfig.GetIntValue(WorldCfg.ArenaSeasonId) - (WorldConfig.GetBoolValue(WorldCfg.ArenaSeasonInProgress) ? 1 : 0));
if (WorldConfig.GetBoolValue(WorldCfg.ArenaSeasonInProgress))
- seasonInfo.CurrentSeason = WorldConfig.GetIntValue(WorldCfg.ArenaSeasonId);
+ seasonInfo.PreviousArenaSeason = WorldConfig.GetIntValue(WorldCfg.ArenaSeasonId);
SendPacket(seasonInfo);
}
diff --git a/Source/Game/Handlers/ChatHandler.cs b/Source/Game/Handlers/ChatHandler.cs
index 441fd7f8a..a56544cec 100644
--- a/Source/Game/Handlers/ChatHandler.cs
+++ b/Source/Game/Handlers/ChatHandler.cs
@@ -584,7 +584,7 @@ namespace Game
// Only allow text-emotes for "dead" entities (feign death included)
if (GetPlayer().HasUnitState(UnitState.Died))
break;
- GetPlayer().HandleEmoteCommand(emote, null, packet.SpellVisualKitIDs);
+ GetPlayer().HandleEmoteCommand(emote, null, packet.SpellVisualKitIDs, packet.SequenceVariation);
break;
}
diff --git a/Source/Game/Handlers/GuildHandler.cs b/Source/Game/Handlers/GuildHandler.cs
index a1fb5c775..16a793258 100644
--- a/Source/Game/Handlers/GuildHandler.cs
+++ b/Source/Game/Handlers/GuildHandler.cs
@@ -31,16 +31,12 @@ namespace Game
Guild guild = Global.GuildMgr.GetGuildByGuid(query.GuildGuid);
if (guild)
{
- if (guild.IsMember(query.PlayerGuid))
- {
- guild.SendQueryResponse(this, query.PlayerGuid);
- return;
- }
+ guild.SendQueryResponse(this);
+ return;
}
QueryGuildInfoResponse response = new();
response.GuildGUID = query.GuildGuid;
- response.PlayerGuid = query.PlayerGuid;
SendPacket(response);
}
diff --git a/Source/Game/Handlers/MiscHandler.cs b/Source/Game/Handlers/MiscHandler.cs
index 30c536c3d..690adaee8 100644
--- a/Source/Game/Handlers/MiscHandler.cs
+++ b/Source/Game/Handlers/MiscHandler.cs
@@ -440,6 +440,7 @@ namespace Game
SpecialMountAnim specialMountAnim = new();
specialMountAnim.UnitGUID = _player.GetGUID();
specialMountAnim.SpellVisualKitIDs.AddRange(mountSpecial.SpellVisualKitIDs);
+ specialMountAnim.SequenceVariation = mountSpecial.SequenceVariation;
GetPlayer().SendMessageToSet(specialMountAnim, false);
}
diff --git a/Source/Game/Handlers/QueryHandler.cs b/Source/Game/Handlers/QueryHandler.cs
index 0ef59aedf..8780bbaec 100644
--- a/Source/Game/Handlers/QueryHandler.cs
+++ b/Source/Game/Handlers/QueryHandler.cs
@@ -33,24 +33,31 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.QueryPlayerName, Processing = PacketProcessing.Inplace)]
void HandleNameQueryRequest(QueryPlayerName queryPlayerName)
{
- SendNameQuery(queryPlayerName.Player);
- }
-
- public void SendNameQuery(ObjectGuid guid)
- {
- Player player = Global.ObjAccessor.FindPlayer(guid);
-
QueryPlayerNameResponse response = new();
- response.Player = guid;
-
- if (response.Data.Initialize(guid, player))
- response.Result = ResponseCodes.Success;
- else
- response.Result = ResponseCodes.Failure; // name unknown
+ foreach (ObjectGuid guid in queryPlayerName.Players)
+ {
+ BuildNameQueryData(guid, out NameCacheLookupResult nameCacheLookupResult);
+ response.Players.Add(nameCacheLookupResult);
+ }
SendPacket(response);
}
+ public void BuildNameQueryData(ObjectGuid guid, out NameCacheLookupResult lookupData)
+ {
+ lookupData = new();
+
+ Player player = Global.ObjAccessor.FindPlayer(guid);
+
+ lookupData.Player = guid;
+
+ lookupData.Data = new();
+ if (lookupData.Data.Initialize(guid, player))
+ lookupData.Result = (byte)ResponseCodes.Success;
+ else
+ lookupData.Result = (byte)ResponseCodes.Failure; // name unknown
+ }
+
[WorldPacketHandler(ClientOpcodes.QueryTime, Processing = PacketProcessing.Inplace)]
void HandleQueryTime(QueryTime packet)
{
diff --git a/Source/Game/Networking/Packets/BattleGroundPackets.cs b/Source/Game/Networking/Packets/BattleGroundPackets.cs
index b0be83f59..a2bd8f3f5 100644
--- a/Source/Game/Networking/Packets/BattleGroundPackets.cs
+++ b/Source/Game/Networking/Packets/BattleGroundPackets.cs
@@ -30,18 +30,20 @@ namespace Game.Networking.Packets
public override void Write()
{
- _worldPacket.WriteInt32(MythicPlusSeasonID);
- _worldPacket.WriteInt32(CurrentSeason);
- _worldPacket.WriteInt32(PreviousSeason);
+ _worldPacket.WriteInt32(MythicPlusDisplaySeasonID);
+ _worldPacket.WriteInt32(MythicPlusMilestoneSeasonID);
+ _worldPacket.WriteInt32(CurrentArenaSeason);
+ _worldPacket.WriteInt32(PreviousArenaSeason);
_worldPacket.WriteInt32(ConquestWeeklyProgressCurrencyID);
_worldPacket.WriteInt32(PvpSeasonID);
_worldPacket.WriteBit(WeeklyRewardChestsEnabled);
_worldPacket.FlushBits();
}
- public int MythicPlusSeasonID;
- public int PreviousSeason;
- public int CurrentSeason;
+ public int MythicPlusDisplaySeasonID;
+ public int MythicPlusMilestoneSeasonID;
+ public int PreviousArenaSeason;
+ public int CurrentArenaSeason;
public int PvpSeasonID;
public int ConquestWeeklyProgressCurrencyID;
public bool WeeklyRewardChestsEnabled;
@@ -159,6 +161,7 @@ namespace Game.Networking.Packets
Hdr.Write(_worldPacket);
_worldPacket.WriteUInt32(AverageWaitTime);
_worldPacket.WriteUInt32(WaitTime);
+ _worldPacket.WriteInt32(Unused920);
_worldPacket.WriteBit(AsGroup);
_worldPacket.WriteBit(EligibleForMatchmaking);
_worldPacket.WriteBit(SuspendedQueue);
@@ -171,6 +174,7 @@ namespace Game.Networking.Packets
public bool SuspendedQueue;
public bool EligibleForMatchmaking;
public uint WaitTime;
+ public int Unused920;
}
public class BattlefieldStatusFailed : ServerPacket
@@ -503,6 +507,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt8(Winner);
_worldPacket.WriteInt32(Duration);
_worldPacket.WriteBit(LogData != null);
+ _worldPacket.WriteBits(SoloShuffleStatus, 2);
_worldPacket.FlushBits();
if (LogData != null)
@@ -512,6 +517,7 @@ namespace Game.Networking.Packets
public byte Winner;
public int Duration;
public PVPMatchStatistics LogData;
+ public uint SoloShuffleStatus;
}
//Structs
@@ -631,6 +637,7 @@ namespace Game.Networking.Packets
data.WriteInt32(PlayerClass);
data.WriteInt32(CreatureID);
data.WriteInt32(HonorLevel);
+ data.WriteInt32(Role);
foreach (var pvpStat in Stats)
pvpStat.Write(data);
@@ -678,6 +685,7 @@ namespace Game.Networking.Packets
public int PlayerClass;
public int CreatureID;
public int HonorLevel;
+ public int Role;
}
public void Write(WorldPacket data)
diff --git a/Source/Game/Networking/Packets/ChatPackets.cs b/Source/Game/Networking/Packets/ChatPackets.cs
index 2aa32648b..432e6a9f1 100644
--- a/Source/Game/Networking/Packets/ChatPackets.cs
+++ b/Source/Game/Networking/Packets/ChatPackets.cs
@@ -281,7 +281,8 @@ namespace Game.Networking.Packets
_worldPacket.WritePackedGuid(Guid);
_worldPacket.WriteUInt32(EmoteID);
_worldPacket.WriteInt32(SpellVisualKitIDs.Count);
-
+ _worldPacket.WriteInt32(SequenceVariation);
+
foreach (var id in SpellVisualKitIDs)
_worldPacket.WriteUInt32(id);
}
@@ -289,6 +290,7 @@ namespace Game.Networking.Packets
public ObjectGuid Guid;
public uint EmoteID;
public List SpellVisualKitIDs = new();
+ public int SequenceVariation;
}
public class CTextEmote : ClientPacket
@@ -302,6 +304,7 @@ namespace Game.Networking.Packets
SoundIndex = _worldPacket.ReadInt32();
SpellVisualKitIDs = new uint[_worldPacket.ReadUInt32()];
+ SequenceVariation = _worldPacket.ReadInt32();
for (var i = 0; i < SpellVisualKitIDs.Length; ++i)
SpellVisualKitIDs[i] = _worldPacket.ReadUInt32();
}
@@ -310,6 +313,7 @@ namespace Game.Networking.Packets
public int EmoteID;
public int SoundIndex;
public uint[] SpellVisualKitIDs;
+ public int SequenceVariation;
}
public class STextEmote : ServerPacket
diff --git a/Source/Game/Networking/Packets/GameObjectPackets.cs b/Source/Game/Networking/Packets/GameObjectPackets.cs
index e362b196f..5929ad086 100644
--- a/Source/Game/Networking/Packets/GameObjectPackets.cs
+++ b/Source/Game/Networking/Packets/GameObjectPackets.cs
@@ -144,10 +144,12 @@ namespace Game.Networking.Packets
{
_worldPacket.WritePackedGuid(ObjectGUID);
_worldPacket.WriteInt32(UILink);
+ _worldPacket.WriteInt32(UIItemInteractionID);
}
public ObjectGuid ObjectGUID;
public int UILink;
+ public int UIItemInteractionID;
}
class GameObjectPlaySpellVisual : ServerPacket
diff --git a/Source/Game/Networking/Packets/GuildPackets.cs b/Source/Game/Networking/Packets/GuildPackets.cs
index a8ce9df42..d4a139311 100644
--- a/Source/Game/Networking/Packets/GuildPackets.cs
+++ b/Source/Game/Networking/Packets/GuildPackets.cs
@@ -44,7 +44,6 @@ namespace Game.Networking.Packets
public override void Write()
{
_worldPacket.WritePackedGuid(GuildGUID);
- _worldPacket.WritePackedGuid(PlayerGuid);
_worldPacket.WriteBit(HasGuildInfo);
_worldPacket.FlushBits();
@@ -76,7 +75,6 @@ namespace Game.Networking.Packets
}
public ObjectGuid GuildGUID;
- public ObjectGuid PlayerGuid;
public GuildInfo Info = new();
public bool HasGuildInfo;
diff --git a/Source/Game/Networking/Packets/MiscPackets.cs b/Source/Game/Networking/Packets/MiscPackets.cs
index 71be2f97e..ad5942dfe 100644
--- a/Source/Game/Networking/Packets/MiscPackets.cs
+++ b/Source/Game/Networking/Packets/MiscPackets.cs
@@ -1181,11 +1181,13 @@ namespace Game.Networking.Packets
public override void Read()
{
SpellVisualKitIDs = new int[_worldPacket.ReadUInt32()];
+ SequenceVariation = _worldPacket.ReadInt32();
for (var i = 0; i < SpellVisualKitIDs.Length; ++i)
SpellVisualKitIDs[i] = _worldPacket.ReadInt32();
}
public int[] SpellVisualKitIDs;
+ public int SequenceVariation;
}
class SpecialMountAnim : ServerPacket
@@ -1196,12 +1198,14 @@ namespace Game.Networking.Packets
{
_worldPacket.WritePackedGuid(UnitGUID);
_worldPacket.WriteInt32(SpellVisualKitIDs.Count);
+ _worldPacket.WriteInt32(SequenceVariation);
foreach (var id in SpellVisualKitIDs)
_worldPacket.WriteInt32(id);
}
public ObjectGuid UnitGUID;
public List SpellVisualKitIDs = new();
+ public int SequenceVariation;
}
class CrossedInebriationThreshold : ServerPacket
diff --git a/Source/Game/Networking/Packets/MovementPackets.cs b/Source/Game/Networking/Packets/MovementPackets.cs
index b503a1f8a..b12831091 100644
--- a/Source/Game/Networking/Packets/MovementPackets.cs
+++ b/Source/Game/Networking/Packets/MovementPackets.cs
@@ -75,6 +75,9 @@ namespace Game.Networking.Packets
{
var movementInfo = new MovementInfo();
movementInfo.Guid = data.ReadPackedGuid();
+ movementInfo.SetMovementFlags((MovementFlag)data.ReadUInt32());
+ movementInfo.SetMovementFlags2((MovementFlag2)data.ReadUInt32());
+ movementInfo.SetExtraMovementFlags2((MovementFlags3)data.ReadUInt32());
movementInfo.Time = data.ReadUInt32();
float x = data.ReadFloat();
float y = data.ReadFloat();
@@ -96,19 +99,27 @@ namespace Game.Networking.Packets
// ResetBitReader
- movementInfo.SetMovementFlags((MovementFlag)data.ReadBits(30));
- movementInfo.SetMovementFlags2((MovementFlag2)data.ReadBits(18));
-
bool hasTransport = data.HasBit();
bool hasFall = data.HasBit();
bool hasSpline = data.HasBit(); // todo 6.x read this infos
data.ReadBit(); // HeightChangeFailed
data.ReadBit(); // RemoteTimeValid
+ bool hasInertia = data.HasBit();
if (hasTransport)
ReadTransportInfo(data, ref movementInfo.transport);
+ if (hasInertia)
+ {
+ MovementInfo.Inertia inertia = new();
+ inertia.guid = data.ReadPackedGuid();
+ inertia.force = data.ReadPosition();
+ inertia.lifetime = data.ReadUInt32();
+
+ movementInfo.inertia = inertia;
+ }
+
if (hasFall)
{
movementInfo.jump.fallTime = data.ReadUInt32();
@@ -134,8 +145,12 @@ namespace Game.Networking.Packets
bool hasFallDirection = movementInfo.HasMovementFlag(MovementFlag.Falling | MovementFlag.FallingFar);
bool hasFallData = hasFallDirection || movementInfo.jump.fallTime != 0;
bool hasSpline = false; // todo 6.x send this infos
+ bool hasInertia = movementInfo.inertia.HasValue;
data.WritePackedGuid(movementInfo.Guid);
+ data.WriteUInt32((uint)movementInfo.GetMovementFlags());
+ data.WriteUInt32((uint)movementInfo.GetMovementFlags2());
+ data.WriteUInt32((uint)movementInfo.GetExtraMovementFlags2());
data.WriteUInt32(movementInfo.Time);
data.WriteFloat(movementInfo.Pos.GetPositionX());
data.WriteFloat(movementInfo.Pos.GetPositionY());
@@ -147,27 +162,32 @@ namespace Game.Networking.Packets
uint removeMovementForcesCount = 0;
data.WriteUInt32(removeMovementForcesCount);
- uint int168 = 0;
- data.WriteUInt32(int168);
+ uint moveIndex = 0;
+ data.WriteUInt32(moveIndex);
/*for (public uint i = 0; i < removeMovementForcesCount; ++i)
{
_worldPacket << ObjectGuid;
}*/
- data.WriteBits((uint)movementInfo.GetMovementFlags(), 30);
- data.WriteBits((uint)movementInfo.GetMovementFlags2(), 18);
-
data.WriteBit(hasTransportData);
data.WriteBit(hasFallData);
data.WriteBit(hasSpline);
data.WriteBit(false); // HeightChangeFailed
data.WriteBit(false); // RemoteTimeValid
+ data.WriteBit(hasInertia);
data.FlushBits();
if (hasTransportData)
WriteTransportInfo(data, movementInfo.transport);
+ if (hasInertia)
+ {
+ data.WritePackedGuid(movementInfo.inertia.Value.guid);
+ data.WriteXYZ(movementInfo.inertia.Value.force);
+ data.WriteUInt32(movementInfo.inertia.Value.lifetime);
+ }
+
if (hasFallData)
{
data.WriteUInt32(movementInfo.jump.fallTime);
@@ -1168,13 +1188,13 @@ namespace Game.Networking.Packets
data.WriteBit(CollisionHeight.HasValue);
data.WriteBit(@MovementForce != null);
data.WriteBit(MovementForceGUID.HasValue);
+ data.WriteBit(MovementInertiaGUID.HasValue);
+ data.WriteBit(MovementInertiaLifetimeMs.HasValue);
data.FlushBits();
if (@MovementForce != null)
@MovementForce.Write(data);
-
-
if (Speed.HasValue)
data.WriteFloat(Speed.Value);
@@ -1198,6 +1218,12 @@ namespace Game.Networking.Packets
if (MovementForceGUID.HasValue)
data.WritePackedGuid(MovementForceGUID.Value);
+
+ if (MovementInertiaGUID.HasValue)
+ data.WritePackedGuid(MovementInertiaGUID.Value);
+
+ if (MovementInertiaLifetimeMs.HasValue)
+ data.WriteUInt32(MovementInertiaLifetimeMs.Value);
}
public ServerOpcodes MessageID;
@@ -1208,6 +1234,8 @@ namespace Game.Networking.Packets
public CollisionHeightInfo? CollisionHeight;
public MovementForce MovementForce;
public ObjectGuid? MovementForceGUID;
+ public ObjectGuid? MovementInertiaGUID;
+ public uint? MovementInertiaLifetimeMs;
}
}
diff --git a/Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs b/Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs
index fc857a607..caa21d65f 100644
--- a/Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs
+++ b/Source/Game/Networking/Packets/MythicPlusPacketsCommon.cs
@@ -42,11 +42,13 @@ namespace Game.Networking.Packets
public class DungeonScoreSummary
{
public float CurrentSeasonScore;
+ public float LifetimeBestSeasonScore;
public List Runs = new();
public void Write(WorldPacket data)
{
data.WriteFloat(CurrentSeasonScore);
+ data.WriteFloat(LifetimeBestSeasonScore);
data.WriteInt32(Runs.Count);
foreach (var dungeonScoreMapSummary in Runs)
dungeonScoreMapSummary.Write(data);
@@ -61,7 +63,7 @@ namespace Game.Networking.Packets
public ObjectGuid GuildGUID;
public uint NativeRealmAddress;
public uint VirtualRealmAddress;
- public short ChrSpecializationID;
+ public int ChrSpecializationID;
public short RaceID;
public int ItemLevel;
public int CovenantID;
@@ -75,7 +77,7 @@ namespace Game.Networking.Packets
data.WritePackedGuid(GuildGUID);
data.WriteUInt32(NativeRealmAddress);
data.WriteUInt32(VirtualRealmAddress);
- data.WriteInt16(ChrSpecializationID);
+ data.WriteInt32(ChrSpecializationID);
data.WriteInt16(RaceID);
data.WriteInt32(ItemLevel);
data.WriteInt32(CovenantID);
@@ -157,7 +159,13 @@ namespace Game.Networking.Packets
{
data.WriteInt32(Season);
data.WriteInt32(Maps.Count);
+ data.WriteUInt32(0);
data.WriteFloat(SeasonScore);
+ data.WriteFloat(0);
+
+ foreach (var map in Maps)
+ map.Write(data);
+
foreach (var map in Maps)
map.Write(data);
}
diff --git a/Source/Game/Networking/Packets/NPCPackets.cs b/Source/Game/Networking/Packets/NPCPackets.cs
index cbdf90a07..a4bd6fe27 100644
--- a/Source/Game/Networking/Packets/NPCPackets.cs
+++ b/Source/Game/Networking/Packets/NPCPackets.cs
@@ -63,6 +63,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt8(options.OptionNPC);
_worldPacket.WriteUInt8(options.OptionFlags);
_worldPacket.WriteInt32(options.OptionCost);
+ _worldPacket.WriteUInt32(options.OptionLanguage);
_worldPacket.WriteBits(options.Text.GetByteCount(), 12);
_worldPacket.WriteBits(options.Confirm.GetByteCount(), 12);
@@ -113,9 +114,15 @@ namespace Game.Networking.Packets
public class GossipComplete : ServerPacket
{
+ public bool SuppressSound;
+
public GossipComplete() : base(ServerOpcodes.GossipComplete) { }
- public override void Write() { }
+ public override void Write()
+ {
+ _worldPacket.WriteBit(SuppressSound);
+ _worldPacket.FlushBits();
+ }
}
public class VendorInventory : ServerPacket
@@ -341,6 +348,7 @@ namespace Game.Networking.Packets
public byte OptionNPC;
public byte OptionFlags;
public int OptionCost;
+ public uint OptionLanguage;
public GossipOptionStatus Status;
public string Text;
public string Confirm;
diff --git a/Source/Game/Networking/Packets/QueryPackets.cs b/Source/Game/Networking/Packets/QueryPackets.cs
index f82f16783..e7e6aa5f1 100644
--- a/Source/Game/Networking/Packets/QueryPackets.cs
+++ b/Source/Game/Networking/Packets/QueryPackets.cs
@@ -33,31 +33,26 @@ namespace Game.Networking.Packets
public override void Read()
{
- Player = _worldPacket.ReadPackedGuid();
+ Players = new ObjectGuid[_worldPacket.ReadInt32()];
+ for (var i = 0; i < Players.Length; ++i)
+ Players[i] = _worldPacket.ReadPackedGuid();
}
- public ObjectGuid Player;
+ public ObjectGuid[] Players;
}
public class QueryPlayerNameResponse : ServerPacket
{
- public QueryPlayerNameResponse() : base(ServerOpcodes.QueryPlayerNameResponse)
- {
- Data = new PlayerGuidLookupData();
- }
+ public List Players = new();
+
+ public QueryPlayerNameResponse() : base(ServerOpcodes.QueryPlayerNameResponse) { }
public override void Write()
{
- _worldPacket.WriteInt8((sbyte)Result);
- _worldPacket.WritePackedGuid(Player);
-
- if (Result == ResponseCodes.Success)
- Data.Write(_worldPacket);
+ _worldPacket.WriteInt32(Players.Count);
+ foreach (NameCacheLookupResult lookupResult in Players)
+ lookupResult.Write(_worldPacket);
}
-
- public ObjectGuid Player;
- public ResponseCodes Result; // 0 - full packet, != 0 - only guid
- public PlayerGuidLookupData Data;
}
public class QueryCreature : ClientPacket
@@ -685,6 +680,46 @@ namespace Game.Networking.Packets
public DeclinedName DeclinedNames = new();
}
+ public struct NameCacheUnused920
+ {
+ public uint Unused1;
+ public ObjectGuid Unused2;
+ public string Unused3 = "";
+
+ public void Write(WorldPacket data)
+ {
+ data.WriteUInt32(Unused1);
+ data.WritePackedGuid(Unused2);
+ data.WriteBits(Unused3.GetByteCount(), 7);
+ data.FlushBits();
+
+ data.WriteString(Unused3);
+ }
+ }
+
+ public struct NameCacheLookupResult
+ {
+ public ObjectGuid Player;
+ public byte Result = 0; // 0 - full packet, != 0 - only guid
+ public PlayerGuidLookupData Data;
+ public NameCacheUnused920? Unused920;
+
+ public void Write(WorldPacket data)
+ {
+ data.WriteUInt8(Result);
+ data.WritePackedGuid(Player);
+ data.WriteBit(Data != null);
+ data.WriteBit(Unused920.HasValue);
+ data.FlushBits();
+
+ if (Data != null)
+ Data.Write(data);
+
+ if (Unused920.HasValue)
+ Unused920.Value.Write(data);
+ }
+ }
+
public class CreatureXDisplay
{
public CreatureXDisplay(uint creatureDisplayID, float displayScale, float probability)
diff --git a/Source/Game/Networking/Packets/QuestPackets.cs b/Source/Game/Networking/Packets/QuestPackets.cs
index cbb6cfc08..c833025c9 100644
--- a/Source/Game/Networking/Packets/QuestPackets.cs
+++ b/Source/Game/Networking/Packets/QuestPackets.cs
@@ -850,8 +850,11 @@ namespace Game.Networking.Packets
_worldPacket.WritePackedGuid(SenderGUID);
_worldPacket.WriteInt32(UiTextureKitID);
_worldPacket.WriteUInt32(SoundKitID);
+ _worldPacket.WriteUInt32(CloseUISoundKitID);
_worldPacket.WriteUInt8(NumRerolls);
+ _worldPacket.WriteInt64(Duration);
_worldPacket.WriteBits(Question.GetByteCount(), 8);
+ _worldPacket.WriteBits(PendingChoiceText.GetByteCount(), 8);
_worldPacket.WriteBit(CloseChoiceFrame);
_worldPacket.WriteBit(HideWarboardHeader);
_worldPacket.WriteBit(KeepOpenAfterChoice);
@@ -861,14 +864,18 @@ namespace Game.Networking.Packets
response.Write(_worldPacket);
_worldPacket.WriteString(Question);
+ _worldPacket.WriteString(PendingChoiceText);
}
public ObjectGuid SenderGUID;
public int ChoiceID;
public int UiTextureKitID;
public uint SoundKitID;
+ public uint CloseUISoundKitID;
public byte NumRerolls;
+ public long Duration;
public string Question;
+ public string PendingChoiceText;
public List Responses = new();
public bool CloseChoiceFrame;
public bool HideWarboardHeader;
@@ -1278,8 +1285,8 @@ namespace Game.Networking.Packets
{
public int Unused901_1;
public int TypeArtFileID;
- public int Rarity;
- public uint RarityColor;
+ public int? Rarity;
+ public uint? RarityColor;
public int Unused901_2;
public int SpellID;
public int MaxStacks;
@@ -1288,11 +1295,18 @@ namespace Game.Networking.Packets
{
data.WriteInt32(Unused901_1);
data.WriteInt32(TypeArtFileID);
- data.WriteInt32(Rarity);
- data.WriteUInt32(RarityColor);
data.WriteInt32(Unused901_2);
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/SystemPackets.cs b/Source/Game/Networking/Packets/SystemPackets.cs
index 7a4dd3555..89ae2598d 100644
--- a/Source/Game/Networking/Packets/SystemPackets.cs
+++ b/Source/Game/Networking/Packets/SystemPackets.cs
@@ -53,6 +53,14 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32(ClubsPresenceUpdateTimer);
_worldPacket.WriteUInt32(HiddenUIClubsPresenceUpdateTimer);
+ _worldPacket.WriteInt32(GameRuleUnknown1);
+ _worldPacket.WriteInt32(GameRuleValues.Count);
+
+ _worldPacket.WriteInt16(MaxPlayerNameQueriesPerPacket);
+
+ foreach (GameRuleValuePair gameRuleValue in GameRuleValues)
+ gameRuleValue.Write(_worldPacket);
+
_worldPacket.WriteBit(VoiceEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus.HasValue);
_worldPacket.WriteBit(ScrollOfResurrectionEnabled);
@@ -152,6 +160,8 @@ namespace Game.Networking.Packets
public uint ClubsPresenceUpdateTimer;
public uint HiddenUIClubsPresenceUpdateTimer; // Timer for updating club presence when communities ui frame is hidden
public uint KioskSessionMinutes;
+ public int GameRuleUnknown1;
+ public short MaxPlayerNameQueriesPerPacket = 50;
public bool ItemRestorationButtonEnabled;
public bool CharUndeleteEnabled; // Implemented
public bool BpayStoreDisabledByParentalControls;
@@ -184,6 +194,7 @@ namespace Game.Networking.Packets
public SocialQueueConfig QuickJoinConfig;
public SquelchInfo Squelch;
public RafSystemFeatureInfo RAFSystem;
+ public List GameRuleValues = new();
public struct SessionAlertConfig
{
@@ -276,10 +287,15 @@ namespace Game.Networking.Packets
_worldPacket.WriteInt32(ActiveClassTrialBoostType);
_worldPacket.WriteInt32(MinimumExpansionLevel);
_worldPacket.WriteInt32(MaximumExpansionLevel);
+ _worldPacket.WriteInt32(GameRuleUnknown1);
+ _worldPacket.WriteInt32(GameRuleValues.Count);
+ _worldPacket.WriteInt16(MaxPlayerNameQueriesPerPacket);
foreach (var sourceRegion in LiveRegionCharacterCopySourceRegions)
_worldPacket.WriteInt32(sourceRegion);
+ foreach (GameRuleValuePair gameRuleValue in GameRuleValues)
+ gameRuleValue.Write(_worldPacket);
}
public bool BpayStoreAvailable; // NYI
@@ -310,6 +326,9 @@ namespace Game.Networking.Packets
public int MinimumExpansionLevel;
public int MaximumExpansionLevel;
public uint KioskSessionMinutes;
+ public int GameRuleUnknown1;
+ public List GameRuleValues = new();
+ public short MaxPlayerNameQueriesPerPacket = 50;
}
public class MOTD : ServerPacket
@@ -383,4 +402,16 @@ namespace Game.Networking.Packets
ThrottleState.Write(data);
}
}
+
+ public struct GameRuleValuePair
+ {
+ public int Rule;
+ public int Value;
+
+ public void Write(WorldPacket data)
+ {
+ data.WriteInt32(Rule);
+ data.WriteInt32(Value);
+ }
+ }
}