From 198c2f427bc2e82bc361898d26c73388fdbc96db Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 19 Dec 2024 00:38:58 +0100 Subject: [PATCH] Support 11.0.7 --- WowPacketParser/Enums/Opcode.cs | 21 + .../Enums/Version/V11_0_7_58123/Opcodes.cs | 2105 ++++++ .../PerksProgramHandler.cs | 2 + .../Parsers/UpdateFieldsHandler1107.cs | 6405 +++++++++++++++++ .../V11_0_7_58123/ActivePlayerData.cs | 168 + .../V11_0_7_58123/ActivePlayerUnk901.cs | 18 + .../V11_0_7_58123/AreaTriggerData.cs | 41 + .../V11_0_7_58123/ArenaCooldown.cs | 23 + .../V11_0_7_58123/ArtifactPower.cs | 19 + .../V11_0_7_58123/AzeriteEmpoweredItemData.cs | 17 + .../V11_0_7_58123/AzeriteItemData.cs | 25 + .../V11_0_7_58123/BankTabSettings.cs | 20 + .../UpdateFields/V11_0_7_58123/BitVector.cs | 17 + .../UpdateFields/V11_0_7_58123/BitVectors.cs | 17 + .../UpdateFields/V11_0_7_58123/CTROptions.cs | 19 + .../V11_0_7_58123/CategoryCooldownMod.cs | 18 + .../V11_0_7_58123/CharacterRestriction.cs | 20 + .../V11_0_7_58123/ChrCustomizationChoice.cs | 18 + .../CollectableSourceTrackedData.cs | 19 + .../V11_0_7_58123/CompletedProject.cs | 19 + .../V11_0_7_58123/ContainerData.cs | 18 + .../V11_0_7_58123/ConversationActor.cs | 22 + .../V11_0_7_58123/ConversationData.cs | 22 + .../V11_0_7_58123/ConversationLine.cs | 23 + .../UpdateFields/V11_0_7_58123/CorpseData.cs | 29 + .../V11_0_7_58123/CraftingOrder.cs | 20 + .../V11_0_7_58123/CraftingOrderCustomer.cs | 18 + .../V11_0_7_58123/CraftingOrderData.cs | 36 + .../V11_0_7_58123/CraftingOrderItem.cs | 23 + .../V11_0_7_58123/CraftingOrderNpcCustomer.cs | 18 + .../V11_0_7_58123/CustomTabardInfo.cs | 21 + .../V11_0_7_58123/DeclinedNames.cs | 17 + .../UpdateFields/V11_0_7_58123/DelveData.cs | 22 + .../V11_0_7_58123/DynamicObjectData.cs | 22 + .../V11_0_7_58123/GameObjectData.cs | 40 + .../UpdateFields/V11_0_7_58123/ItemData.cs | 37 + .../V11_0_7_58123/ItemEnchantment.cs | 20 + .../UpdateFields/V11_0_7_58123/ItemMod.cs | 18 + .../UpdateFields/V11_0_7_58123/ItemModList.cs | 17 + .../UpdateFields/V11_0_7_58123/MawPower.cs | 19 + .../V11_0_7_58123/MultiFloorExplore.cs | 17 + .../V11_0_7_58123/NPCCraftingOrderInfo.cs | 20 + .../UpdateFields/V11_0_7_58123/ObjectData.cs | 19 + .../UpdateFields/V11_0_7_58123/PVPInfo.cs | 34 + .../V11_0_7_58123/PassiveSpellHistory.cs | 18 + .../PersonalCraftingOrderCount.cs | 18 + .../V11_0_7_58123/PetCreatureName.cs | 18 + .../UpdateFields/V11_0_7_58123/PlayerData.cs | 67 + .../V11_0_7_58123/PlayerDataElement.cs | 19 + .../UpdateFields/V11_0_7_58123/QuestLog.cs | 21 + .../V11_0_7_58123/QuestSession.cs | 18 + .../V11_0_7_58123/RecipeProgressionInfo.cs | 18 + .../V11_0_7_58123/ReplayedQuest.cs | 18 + .../UpdateFields/V11_0_7_58123/Research.cs | 17 + .../V11_0_7_58123/ResearchHistory.cs | 17 + .../UpdateFields/V11_0_7_58123/RestInfo.cs | 18 + .../UpdateFields/V11_0_7_58123/ScaleCurve.cs | 20 + .../V11_0_7_58123/SceneObjectData.cs | 20 + .../V11_0_7_58123/SelectedAzeriteEssences.cs | 19 + .../UpdateFields/V11_0_7_58123/SkillInfo.cs | 23 + .../UpdateFields/V11_0_7_58123/SocketedGem.cs | 19 + .../V11_0_7_58123/SpellCastVisual.cs | 18 + .../V11_0_7_58123/SpellFlatModByLabel.cs | 19 + .../V11_0_7_58123/SpellPctModByLabel.cs | 19 + .../UpdateFields/V11_0_7_58123/StableInfo.cs | 18 + .../V11_0_7_58123/StablePetInfo.cs | 23 + .../UpdateFields/V11_0_7_58123/TraitConfig.cs | 26 + .../UpdateFields/V11_0_7_58123/TraitEntry.cs | 20 + .../V11_0_7_58123/TraitSubTreeCache.cs | 19 + .../UpdateFields/V11_0_7_58123/UnitChannel.cs | 18 + .../UpdateFields/V11_0_7_58123/UnitData.cs | 159 + .../V11_0_7_58123/UnlockedAzeriteEssence.cs | 18 + .../UpdateFields/V11_0_7_58123/VendorData.cs | 17 + .../UpdateFields/V11_0_7_58123/VisibleItem.cs | 21 + .../UpdateFields/V11_0_7_58123/VisualAnim.cs | 20 + .../UpdateFields/V11_0_7_58123/WalkInData.cs | 20 + .../V11_0_7_58123/WeeklySpellUse.cs | 18 + .../V11_0_7_58123/ZonePlayerForcedReaction.cs | 18 + 78 files changed, 10402 insertions(+) create mode 100644 WowPacketParserModule.V11_0_0_55666/Parsers/UpdateFieldsHandler1107.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerUnk901.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AreaTriggerData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArenaCooldown.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArtifactPower.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteEmpoweredItemData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteItemData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BankTabSettings.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVector.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVectors.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CTROptions.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CategoryCooldownMod.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CharacterRestriction.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ChrCustomizationChoice.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CollectableSourceTrackedData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CompletedProject.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ContainerData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationActor.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationLine.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CorpseData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrder.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderCustomer.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderItem.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderNpcCustomer.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CustomTabardInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DeclinedNames.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DelveData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DynamicObjectData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/GameObjectData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemEnchantment.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemMod.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemModList.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MawPower.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MultiFloorExplore.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/NPCCraftingOrderInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ObjectData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PVPInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PassiveSpellHistory.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PersonalCraftingOrderCount.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PetCreatureName.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerDataElement.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestLog.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestSession.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RecipeProgressionInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ReplayedQuest.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/Research.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ResearchHistory.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RestInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ScaleCurve.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SceneObjectData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SelectedAzeriteEssences.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SkillInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SocketedGem.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellCastVisual.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellFlatModByLabel.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellPctModByLabel.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StableInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StablePetInfo.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitConfig.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitEntry.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitSubTreeCache.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitChannel.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnlockedAzeriteEssence.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VendorData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisibleItem.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisualAnim.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WalkInData.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WeeklySpellUse.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ZonePlayerForcedReaction.cs diff --git a/WowPacketParser/Enums/Opcode.cs b/WowPacketParser/Enums/Opcode.cs index 1d4e631a3e..47987f1276 100644 --- a/WowPacketParser/Enums/Opcode.cs +++ b/WowPacketParser/Enums/Opcode.cs @@ -19,6 +19,7 @@ public enum Opcode CMSG_ACCOUNT_BANK_DEPOSIT_MONEY, CMSG_ACCOUNT_BANK_WITHDRAW_MONEY, CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED, + CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND, CMSG_ACTIVATE_SOULBIND, CMSG_ACTIVATE_TAXI, CMSG_ACTIVATE_TAXI_EXPRESS, @@ -746,11 +747,14 @@ public enum Opcode CMSG_LOADING_SCREEN_NOTIFY, CMSG_LOAD_DANCES, CMSG_LOAD_SELECTED_TROPHY, + CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE, CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE, CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER, + CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE, CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY, CMSG_LOBBY_MATCHMAKER_PARTY_INVITE, CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE, + CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE, CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE, CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY, CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY, @@ -1004,11 +1008,13 @@ public enum Opcode CMSG_QUERY_QUEST_ITEM_USABILITY, CMSG_QUERY_REALM_NAME, CMSG_QUERY_SCENARIO_POI, + CMSG_QUERY_SELECTED_WOW_LABS_AREA, CMSG_QUERY_SERVER_BUCK_DATA, CMSG_QUERY_TIME, CMSG_QUERY_TREASURE_PICKER, CMSG_QUERY_VEHICLE_STATUS, CMSG_QUERY_VOID_STORAGE, + CMSG_QUERY_WOW_LABS_AREA_INFO, CMSG_QUEST_CLOSE_AUTOACCEPT_QUEST, CMSG_QUEST_CONFIRM_ACCEPT, CMSG_QUEST_GIVER_ACCEPT_QUEST, @@ -1109,6 +1115,7 @@ public enum Opcode CMSG_REQUEST_RESEARCH_HISTORY, CMSG_REQUEST_SCHEDULED_PVP_INFO, CMSG_REQUEST_STABLED_PETS, + CMSG_REQUEST_STORE_FRONT_INFO_UPDATE, CMSG_REQUEST_VEHICLE_EXIT, CMSG_REQUEST_VEHICLE_NEXT_SEAT, CMSG_REQUEST_VEHICLE_PREV_SEAT, @@ -1136,6 +1143,7 @@ public enum Opcode CMSG_SCENE_PLAYBACK_COMPLETE, CMSG_SCENE_TRIGGER_EVENT, CMSG_SEAMLESS_TRANSFER_COMPLETE, + CMSG_SELECT_WOW_LABS_AREA, CMSG_SELF_RES, CMSG_SELL_ALL_JUNK_ITEMS, CMSG_SELL_ITEM, @@ -1561,6 +1569,10 @@ public enum Opcode SMSG_ACCOUNT_MOUNT_UPDATE, SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, SMSG_ACCOUNT_PROFILE, + SMSG_ACCOUNT_STORE_CURRENCY_UPDATE, + SMSG_ACCOUNT_STORE_FRONT_UPDATE, + SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED, + SMSG_ACCOUNT_STORE_RESULT, SMSG_ACCOUNT_TOY_UPDATE, SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE, SMSG_ACCOUNT_TRANSMOG_UPDATE, @@ -1859,6 +1871,7 @@ public enum Opcode SMSG_CHANNEL_NOTIFY, SMSG_CHANNEL_NOTIFY_JOINED, SMSG_CHANNEL_NOTIFY_LEFT, + SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH, SMSG_CHARACTER_CHECK_UPGRADE_RESULT, SMSG_CHARACTER_LOGIN_FAILED, SMSG_CHARACTER_OBJECT_TEST_RESPONSE, @@ -2430,6 +2443,7 @@ public enum Opcode SMSG_LFG_DISABLED, SMSG_LFG_EXPAND_SEARCH_PROMPT, SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN, + SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE, SMSG_LFG_JOIN_RESULT, SMSG_LFG_LFR_LIST, SMSG_LFG_LIST_APPLICANT_LIST_UPDATE, @@ -2482,6 +2496,8 @@ public enum Opcode SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER, SMSG_LOBBY_MATCHMAKER_PARTY_INFO, SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED, + SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED, + SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT, SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE, SMSG_LOGIN_SET_TIME_SPEED, SMSG_LOGIN_VERIFY_WORLD, @@ -2778,6 +2794,7 @@ public enum Opcode SMSG_PLAYER_CHOICE_DISPLAY_ERROR, SMSG_PLAYER_CONDITION_RESULT, SMSG_PLAYER_DIFFICULTY_CHANGE, + SMSG_PLAYER_END_OF_MATCH_DETAILS, SMSG_PLAYER_HIDE_ARROW_CALLOUT, SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL, @@ -3165,6 +3182,7 @@ public enum Opcode SMSG_TURN_IN_PETITION_RESULT, SMSG_TUTORIAL_FLAGS, SMSG_TWITTER_STATUS, + SMSG_UI_ACTION, SMSG_UI_HEALING_RANGE_MODIFIED, SMSG_UI_ITEM_INTERACTION_NPC, SMSG_UI_MAP_QUEST_LINES_RESPONSE, @@ -3438,10 +3456,13 @@ public enum Opcode SMSG_WORLD_QUEST_UPDATE_RESPONSE, SMSG_WORLD_SERVER_INFO, SMSG_WOW_ENTITLEMENT_NOTIFICATION, + SMSG_WOW_LABS_AREA_INFO, SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END, SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED, SMSG_WOW_LABS_PARTY_ERROR, + SMSG_WOW_LABS_SET_AREA_ID_RESULT, SMSG_WOW_LABS_SET_PREDICTION_CIRCLE, + SMSG_WOW_LABS_SET_SELECTED_AREA_ID, SMSG_XP_AWARDED_FROM_CURRENCY, SMSG_XP_GAIN_ABORTED, SMSG_XP_GAIN_ENABLED, diff --git a/WowPacketParser/Enums/Version/V11_0_7_58123/Opcodes.cs b/WowPacketParser/Enums/Version/V11_0_7_58123/Opcodes.cs index 10b18a9974..bd98f2414d 100644 --- a/WowPacketParser/Enums/Version/V11_0_7_58123/Opcodes.cs +++ b/WowPacketParser/Enums/Version/V11_0_7_58123/Opcodes.cs @@ -19,10 +19,2115 @@ public static BiDictionary Opcodes(Direction direction) private static readonly BiDictionary ClientOpcodes = new() { + { Opcode.CMSG_ABANDON_NPE_RESPONSE, 0x300295 }, + { Opcode.CMSG_ACCEPT_GUILD_INVITE, 0x350029 }, + { Opcode.CMSG_ACCEPT_RETURNING_PLAYER_PROMPT, 0x300256 }, + { Opcode.CMSG_ACCEPT_SOCIAL_CONTRACT, 0x350173 }, + { Opcode.CMSG_ACCEPT_TRADE, 0x300004 }, + { Opcode.CMSG_ACCEPT_WARGAME_INVITE, 0x35000C }, + { Opcode.CMSG_ACCOUNT_BANK_DEPOSIT_MONEY, 0x3002D7 }, + { Opcode.CMSG_ACCOUNT_BANK_WITHDRAW_MONEY, 0x3002D8 }, + { Opcode.CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED, 0x35015F }, + { Opcode.CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND, 0x3500BE }, + { Opcode.CMSG_ACTIVATE_SOULBIND, 0x300284 }, + { Opcode.CMSG_ACTIVATE_TAXI, 0x31003D }, + { Opcode.CMSG_ADDON_LIST, 0x350004 }, + { Opcode.CMSG_ADD_ACCOUNT_COSMETIC, 0x30016D }, + { Opcode.CMSG_ADD_BATTLENET_FRIEND, 0x350084 }, + { Opcode.CMSG_ADD_FRIEND, 0x3500FA }, + { Opcode.CMSG_ADD_IGNORE, 0x3500FE }, + { Opcode.CMSG_ADD_TOY, 0x30016C }, + { Opcode.CMSG_ADVENTURE_JOURNAL_OPEN_QUEST, 0x3000B2 }, + { Opcode.CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS, 0x300287 }, + { Opcode.CMSG_ADVENTURE_MAP_START_QUEST, 0x300228 }, + { Opcode.CMSG_ALTER_APPEARANCE, 0x31008E }, + { Opcode.CMSG_AREA_SPIRIT_HEALER_QUERY, 0x310042 }, + { Opcode.CMSG_AREA_SPIRIT_HEALER_QUEUE, 0x310043 }, + { Opcode.CMSG_AREA_TRIGGER, 0x300085 }, + { Opcode.CMSG_ARTIFACT_ADD_POWER, 0x300054 }, + { Opcode.CMSG_ARTIFACT_SET_APPEARANCE, 0x300056 }, + { Opcode.CMSG_ASSIGN_EQUIPMENT_SET_SPEC, 0x3000BD }, + { Opcode.CMSG_ATTACK_STOP, 0x30011B }, + { Opcode.CMSG_ATTACK_SWING, 0x30011A }, + { Opcode.CMSG_AUCTIONABLE_TOKEN_SELL, 0x350110 }, + { Opcode.CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE, 0x350111 }, + { Opcode.CMSG_AUCTION_BROWSE_QUERY, 0x310062 }, + { Opcode.CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE, 0x31006A }, + { Opcode.CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE, 0x310069 }, + { Opcode.CMSG_AUCTION_GET_COMMODITY_QUOTE, 0x310068 }, + { Opcode.CMSG_AUCTION_HELLO_REQUEST, 0x31005D }, + { Opcode.CMSG_AUCTION_LIST_BIDDED_ITEMS, 0x310066 }, + { Opcode.CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS, 0x310067 }, + { Opcode.CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY, 0x310063 }, + { Opcode.CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID, 0x310064 }, + { Opcode.CMSG_AUCTION_LIST_OWNED_ITEMS, 0x310065 }, + { Opcode.CMSG_AUCTION_PLACE_BID, 0x310061 }, + { Opcode.CMSG_AUCTION_REMOVE_ITEM, 0x31005F }, + { Opcode.CMSG_AUCTION_REPLICATE_ITEMS, 0x310060 }, + { Opcode.CMSG_AUCTION_SELL_COMMODITY, 0x31006B }, + { Opcode.CMSG_AUCTION_SELL_ITEM, 0x31005E }, + { Opcode.CMSG_AUCTION_SET_FAVORITE_ITEM, 0x350160 }, + { Opcode.CMSG_AUTH_CONTINUED_SESSION, 0x360002 }, + { Opcode.CMSG_AUTH_SESSION, 0x360001 }, + { Opcode.CMSG_AUTOBANK_ITEM, 0x320003 }, + { Opcode.CMSG_AUTOBANK_REAGENT, 0x320005 }, + { Opcode.CMSG_AUTOSTORE_BANK_ITEM, 0x320002 }, + { Opcode.CMSG_AUTOSTORE_BANK_REAGENT, 0x320004 }, + { Opcode.CMSG_AUTO_DEPOSIT_ACCOUNT_BANK, 0x3002E1 }, + { Opcode.CMSG_AUTO_EQUIP_ITEM, 0x320006 }, + { Opcode.CMSG_AUTO_EQUIP_ITEM_SLOT, 0x32000B }, + { Opcode.CMSG_AUTO_GUILD_BANK_ITEM, 0x310049 }, + { Opcode.CMSG_AUTO_STORE_BAG_ITEM, 0x320007 }, + { Opcode.CMSG_AUTO_STORE_GUILD_BANK_ITEM, 0x310052 }, + { Opcode.CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER, 0x300252 }, + { Opcode.CMSG_AZERITE_EMPOWERED_ITEM_VIEWED, 0x300233 }, + { Opcode.CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE, 0x300254 }, + { Opcode.CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE, 0x300253 }, + { Opcode.CMSG_BANKER_ACTIVATE, 0x310045 }, + { Opcode.CMSG_BATTLEFIELD_LEAVE, 0x30001D }, + { Opcode.CMSG_BATTLEFIELD_LIST, 0x300028 }, + { Opcode.CMSG_BATTLEFIELD_PORT, 0x3100C4 }, + { Opcode.CMSG_BATTLEMASTER_HELLO, 0x30018A }, + { Opcode.CMSG_BATTLEMASTER_JOIN, 0x3100BB }, + { Opcode.CMSG_BATTLEMASTER_JOIN_ARENA, 0x3100BC }, + { Opcode.CMSG_BATTLEMASTER_JOIN_BRAWL, 0x3100C2 }, + { Opcode.CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ, 0x3100BE }, + { Opcode.CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE, 0x3100BD }, + { Opcode.CMSG_BATTLEMASTER_JOIN_SKIRMISH, 0x3100BF }, + { Opcode.CMSG_BATTLENET_CHALLENGE_RESPONSE, 0x3500FD }, + { Opcode.CMSG_BATTLENET_REQUEST, 0x35011E }, + { Opcode.CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE, 0x3500F7 }, + { Opcode.CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT, 0x35013D }, + { Opcode.CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE, 0x3500F6 }, + { Opcode.CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET, 0x3500ED }, + { Opcode.CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS, 0x350163 }, + { Opcode.CMSG_BATTLE_PAY_GET_PRODUCT_LIST, 0x3500E5 }, + { Opcode.CMSG_BATTLE_PAY_GET_PURCHASE_LIST, 0x3500E6 }, + { Opcode.CMSG_BATTLE_PAY_OPEN_CHECKOUT, 0x350136 }, + { Opcode.CMSG_BATTLE_PAY_REQUEST_PRICE_INFO, 0x350132 }, + { Opcode.CMSG_BATTLE_PAY_START_PURCHASE, 0x3500F5 }, + { Opcode.CMSG_BATTLE_PAY_START_VAS_PURCHASE, 0x35011C }, + { Opcode.CMSG_BATTLE_PET_CLEAR_FANFARE, 0x2A0002 }, + { Opcode.CMSG_BATTLE_PET_DELETE_PET, 0x35004F }, + { Opcode.CMSG_BATTLE_PET_DELETE_PET_CHEAT, 0x350050 }, + { Opcode.CMSG_BATTLE_PET_MODIFY_NAME, 0x350052 }, + { Opcode.CMSG_BATTLE_PET_REQUEST_JOURNAL, 0x35004E }, + { Opcode.CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK, 0x35004D }, + { Opcode.CMSG_BATTLE_PET_SET_BATTLE_SLOT, 0x350057 }, + { Opcode.CMSG_BATTLE_PET_SET_FLAGS, 0x35005A }, + { Opcode.CMSG_BATTLE_PET_SUMMON, 0x350053 }, + { Opcode.CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY, 0x30008F }, + { Opcode.CMSG_BATTLE_PET_UPDATE_NOTIFY, 0x30008E }, + { Opcode.CMSG_BEGIN_TRADE, 0x300001 }, + { Opcode.CMSG_BINDER_ACTIVATE, 0x310044 }, + { Opcode.CMSG_BLACK_MARKET_BID_ON_ITEM, 0x3100CC }, + { Opcode.CMSG_BLACK_MARKET_OPEN, 0x3100CA }, + { Opcode.CMSG_BLACK_MARKET_REQUEST_ITEMS, 0x3100CB }, + { Opcode.CMSG_BONUS_ROLL, 0x300255 }, + { Opcode.CMSG_BUG_REPORT, 0x3500AF }, + { Opcode.CMSG_BUSY_TRADE, 0x300002 }, + { Opcode.CMSG_BUY_ACCOUNT_BANK_TAB, 0x310121 }, + { Opcode.CMSG_BUY_BACK_ITEM, 0x310036 }, + { Opcode.CMSG_BUY_BANK_SLOT, 0x310046 }, + { Opcode.CMSG_BUY_ITEM, 0x310035 }, + { Opcode.CMSG_BUY_REAGENT_BANK, 0x310047 }, + { Opcode.CMSG_CAGE_BATTLE_PET, 0x3000A2 }, + { Opcode.CMSG_CALENDAR_ADD_EVENT, 0x3500A7 }, + { Opcode.CMSG_CALENDAR_COMMUNITY_INVITE, 0x35009B }, + { Opcode.CMSG_CALENDAR_COMPLAIN, 0x3500A3 }, + { Opcode.CMSG_CALENDAR_COPY_EVENT, 0x3500A2 }, + { Opcode.CMSG_CALENDAR_EVENT_SIGN_UP, 0x3500A5 }, + { Opcode.CMSG_CALENDAR_GET, 0x350099 }, + { Opcode.CMSG_CALENDAR_GET_EVENT, 0x35009A }, + { Opcode.CMSG_CALENDAR_GET_NUM_PENDING, 0x3500A4 }, + { Opcode.CMSG_CALENDAR_INVITE, 0x35009C }, + { Opcode.CMSG_CALENDAR_MODERATOR_STATUS, 0x3500A0 }, + { Opcode.CMSG_CALENDAR_REMOVE_EVENT, 0x3500A1 }, + { Opcode.CMSG_CALENDAR_REMOVE_INVITE, 0x35009D }, + { Opcode.CMSG_CALENDAR_RSVP, 0x35009E }, + { Opcode.CMSG_CALENDAR_STATUS, 0x35009F }, + { Opcode.CMSG_CALENDAR_UPDATE_EVENT, 0x3500A8 }, + { Opcode.CMSG_CANCEL_AURA, 0x300058 }, + { Opcode.CMSG_CANCEL_AUTO_REPEAT_SPELL, 0x310080 }, + { Opcode.CMSG_CANCEL_CAST, 0x300173 }, + { Opcode.CMSG_CANCEL_CHANNELLING, 0x300134 }, + { Opcode.CMSG_CANCEL_GROWTH_AURA, 0x30013C }, + { Opcode.CMSG_CANCEL_MASTER_LOOT_ROLL, 0x3000C9 }, + { Opcode.CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS, 0x300057 }, + { Opcode.CMSG_CANCEL_MOUNT_AURA, 0x30014F }, + { Opcode.CMSG_CANCEL_QUEUED_SPELL, 0x300029 }, + { Opcode.CMSG_CANCEL_TEMP_ENCHANTMENT, 0x31008B }, + { Opcode.CMSG_CANCEL_TRADE, 0x300006 }, + { Opcode.CMSG_CAN_DUEL, 0x35008C }, + { Opcode.CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE, 0x350131 }, + { Opcode.CMSG_CAST_SPELL, 0x300170 }, + { Opcode.CMSG_CHALLENGE_MODE_REQUEST_LEADERS, 0x2D0002 }, + { Opcode.CMSG_CHANGE_BAG_SLOT_FLAG, 0x30020C }, + { Opcode.CMSG_CHANGE_BANK_BAG_SLOT_FLAG, 0x30020D }, + { Opcode.CMSG_CHANGE_MONUMENT_APPEARANCE, 0x3001ED }, + { Opcode.CMSG_CHANGE_REALM_TICKET, 0x350123 }, + { Opcode.CMSG_CHANGE_SUB_GROUP, 0x350076 }, + { Opcode.CMSG_CHARACTER_CHECK_UPGRADE, 0x3500F0 }, + { Opcode.CMSG_CHARACTER_RENAME_REQUEST, 0x3500EB }, + { Opcode.CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST, 0x3500EE }, + { Opcode.CMSG_CHARACTER_UPGRADE_START, 0x3500EF }, + { Opcode.CMSG_CHAR_CUSTOMIZE, 0x3500B6 }, + { Opcode.CMSG_CHAR_DELETE, 0x3500C8 }, + { Opcode.CMSG_CHAR_RACE_OR_FACTION_CHANGE, 0x3500BC }, + { Opcode.CMSG_CHAT_ADDON_MESSAGE, 0x2C0026 }, + { Opcode.CMSG_CHAT_ADDON_MESSAGE_TARGETED, 0x2C0027 }, + { Opcode.CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST, 0x2C002E }, + { Opcode.CMSG_CHAT_CHANNEL_ANNOUNCEMENTS, 0x2C001B }, + { Opcode.CMSG_CHAT_CHANNEL_BAN, 0x2C0019 }, + { Opcode.CMSG_CHAT_CHANNEL_DECLINE_INVITE, 0x2C001E }, + { Opcode.CMSG_CHAT_CHANNEL_DISPLAY_LIST, 0x2C000E }, + { Opcode.CMSG_CHAT_CHANNEL_INVITE, 0x2C0017 }, + { Opcode.CMSG_CHAT_CHANNEL_KICK, 0x2C0018 }, + { Opcode.CMSG_CHAT_CHANNEL_LIST, 0x2C000D }, + { Opcode.CMSG_CHAT_CHANNEL_MODERATOR, 0x2C0013 }, + { Opcode.CMSG_CHAT_CHANNEL_OWNER, 0x2C0011 }, + { Opcode.CMSG_CHAT_CHANNEL_PASSWORD, 0x2C000F }, + { Opcode.CMSG_CHAT_CHANNEL_SET_OWNER, 0x2C0010 }, + { Opcode.CMSG_CHAT_CHANNEL_SILENCE_ALL, 0x2C001C }, + { Opcode.CMSG_CHAT_CHANNEL_UNBAN, 0x2C001A }, + { Opcode.CMSG_CHAT_CHANNEL_UNMODERATOR, 0x2C0014 }, + { Opcode.CMSG_CHAT_CHANNEL_UNSILENCE_ALL, 0x2C001D }, + { Opcode.CMSG_CHAT_JOIN_CHANNEL, 0x2C0000 }, + { Opcode.CMSG_CHAT_LEAVE_CHANNEL, 0x2C0001 }, + { Opcode.CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT, 0x2C002D }, + { Opcode.CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY, 0x2C002C }, + { Opcode.CMSG_CHAT_MESSAGE_AFK, 0x2C000B }, + { Opcode.CMSG_CHAT_MESSAGE_CHANNEL, 0x2C0007 }, + { Opcode.CMSG_CHAT_MESSAGE_DND, 0x2C000C }, + { Opcode.CMSG_CHAT_MESSAGE_EMOTE, 0x2C0020 }, + { Opcode.CMSG_CHAT_MESSAGE_GUILD, 0x2C0009 }, + { Opcode.CMSG_CHAT_MESSAGE_INSTANCE_CHAT, 0x2C0024 }, + { Opcode.CMSG_CHAT_MESSAGE_OFFICER, 0x2C000A }, + { Opcode.CMSG_CHAT_MESSAGE_PARTY, 0x2C0022 }, + { Opcode.CMSG_CHAT_MESSAGE_RAID, 0x2C0023 }, + { Opcode.CMSG_CHAT_MESSAGE_RAID_WARNING, 0x2C0025 }, + { Opcode.CMSG_CHAT_MESSAGE_SAY, 0x2C001F }, + { Opcode.CMSG_CHAT_MESSAGE_WHISPER, 0x2C0008 }, + { Opcode.CMSG_CHAT_MESSAGE_YELL, 0x2C0021 }, + { Opcode.CMSG_CHAT_REGISTER_ADDON_PREFIXES, 0x2C0005 }, + { Opcode.CMSG_CHAT_REPORT_FILTERED, 0x2C0004 }, + { Opcode.CMSG_CHAT_REPORT_IGNORED, 0x2C0003 }, + { Opcode.CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, 0x2C0006 }, + { Opcode.CMSG_CHECK_CHARACTER_NAME_AVAILABILITY, 0x35006F }, + { Opcode.CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID, 0x30010C }, + { Opcode.CMSG_CHOICE_RESPONSE, 0x300178 }, + { Opcode.CMSG_CHROMIE_TIME_SELECT_EXPANSION, 0x300283 }, + { Opcode.CMSG_CLAIM_WEEKLY_REWARD, 0x300260 }, + { Opcode.CMSG_CLASS_TALENTS_DELETE_CONFIG, 0x3002BC }, + { Opcode.CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG, 0x3000C1 }, + { Opcode.CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED, 0x3002BE }, + { Opcode.CMSG_CLASS_TALENTS_RENAME_CONFIG, 0x3002BB }, + { Opcode.CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG, 0x3002BA }, + { Opcode.CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE, 0x3002BF }, + { Opcode.CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS, 0x3000C0 }, + { Opcode.CMSG_CLEAR_NEW_APPEARANCE, 0x2A0005 }, + { Opcode.CMSG_CLEAR_RAID_MARKER, 0x300050 }, + { Opcode.CMSG_CLEAR_TRADE_ITEM, 0x300008 }, + { Opcode.CMSG_CLIENT_PORT_GRAVEYARD, 0x3100C6 }, + { Opcode.CMSG_CLOSE_INTERACTION, 0x310024 }, + { Opcode.CMSG_CLOSE_QUEST_CHOICE, 0x300179 }, + { Opcode.CMSG_CLOSE_RUNEFORGE_INTERACTION, 0x30028B }, + { Opcode.CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION, 0x3002C0 }, + { Opcode.CMSG_CLUB_FINDER_APPLICATION_RESPONSE, 0x350148 }, + { Opcode.CMSG_CLUB_FINDER_GET_APPLICANTS_LIST, 0x350146 }, + { Opcode.CMSG_CLUB_FINDER_POST, 0x350143 }, + { Opcode.CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA, 0x35014A }, + { Opcode.CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST, 0x350144 }, + { Opcode.CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB, 0x350145 }, + { Opcode.CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST, 0x350149 }, + { Opcode.CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS, 0x35014B }, + { Opcode.CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT, 0x350147 }, + { Opcode.CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST, 0x350166 }, + { Opcode.CMSG_CLUB_PRESENCE_SUBSCRIBE, 0x350120 }, + { Opcode.CMSG_COLLECTION_ITEM_SET_FAVORITE, 0x35005D }, + { Opcode.CMSG_COMMENTATOR_ENABLE, 0x35001C }, + { Opcode.CMSG_COMMENTATOR_ENTER_INSTANCE, 0x350020 }, + { Opcode.CMSG_COMMENTATOR_EXIT_INSTANCE, 0x350021 }, + { Opcode.CMSG_COMMENTATOR_GET_MAP_INFO, 0x35001D }, + { Opcode.CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS, 0x35001F }, + { Opcode.CMSG_COMMENTATOR_GET_PLAYER_INFO, 0x35001E }, + { Opcode.CMSG_COMMENTATOR_SPECTATE, 0x350164 }, + { Opcode.CMSG_COMMENTATOR_START_WARGAME, 0x35001B }, + { Opcode.CMSG_COMMERCE_TOKEN_GET_COUNT, 0x35010E }, + { Opcode.CMSG_COMMERCE_TOKEN_GET_LOG, 0x350118 }, + { Opcode.CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE, 0x35010F }, + { Opcode.CMSG_COMPLAINT, 0x350096 }, + { Opcode.CMSG_COMPLETE_CINEMATIC, 0x3100E4 }, + { Opcode.CMSG_COMPLETE_MOVIE, 0x310076 }, + { Opcode.CMSG_CONFIRM_ARTIFACT_RESPEC, 0x300055 }, + { Opcode.CMSG_CONFIRM_RESPEC_WIPE, 0x3000C3 }, + { Opcode.CMSG_CONNECT_TO_FAILED, 0x350000 }, + { Opcode.CMSG_CONSUMABLE_TOKEN_BUY, 0x350113 }, + { Opcode.CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE, 0x350114 }, + { Opcode.CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY, 0x350112 }, + { Opcode.CMSG_CONSUMABLE_TOKEN_REDEEM, 0x350116 }, + { Opcode.CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION, 0x350117 }, + { Opcode.CMSG_CONTENT_TRACKING_START_TRACKING, 0x3002D0 }, + { Opcode.CMSG_CONTENT_TRACKING_STOP_TRACKING, 0x3002D1 }, + { Opcode.CMSG_CONTRIBUTION_CONTRIBUTE, 0x3100F9 }, + { Opcode.CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST, 0x3100FA }, + { Opcode.CMSG_CONVERSATION_CINEMATIC_READY, 0x3100E6 }, + { Opcode.CMSG_CONVERSATION_LINE_STARTED, 0x3100E5 }, + { Opcode.CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT, 0x3002E0 }, + { Opcode.CMSG_CONVERT_RAID, 0x350078 }, + { Opcode.CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE, 0x31010D }, + { Opcode.CMSG_CRAFTING_ORDER_CANCEL, 0x310119 }, + { Opcode.CMSG_CRAFTING_ORDER_CLAIM, 0x310116 }, + { Opcode.CMSG_CRAFTING_ORDER_CREATE, 0x310112 }, + { Opcode.CMSG_CRAFTING_ORDER_FULFILL, 0x310118 }, + { Opcode.CMSG_CRAFTING_ORDER_GET_NPC_REWARD_INFO, 0x310115 }, + { Opcode.CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS, 0x310114 }, + { Opcode.CMSG_CRAFTING_ORDER_LIST_MY_ORDERS, 0x310113 }, + { Opcode.CMSG_CRAFTING_ORDER_REJECT, 0x31011A }, + { Opcode.CMSG_CRAFTING_ORDER_RELEASE, 0x310117 }, + { Opcode.CMSG_CRAFTING_ORDER_REPORT_PLAYER, 0x31011B }, + { Opcode.CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST, 0x31011C }, + { Opcode.CMSG_CREATE_CHARACTER, 0x35006E }, + { Opcode.CMSG_CREATE_SHIPMENT, 0x3001D6 }, + { Opcode.CMSG_DB_QUERY_BULK, 0x350010 }, + { Opcode.CMSG_DECLINE_GUILD_INVITES, 0x3100B8 }, + { Opcode.CMSG_DECLINE_PETITION, 0x3100D3 }, + { Opcode.CMSG_DELETE_EQUIPMENT_SET, 0x3100A4 }, + { Opcode.CMSG_DELVE_TELEPORT_OUT, 0x310128 }, + { Opcode.CMSG_DEL_FRIEND, 0x3500FB }, + { Opcode.CMSG_DEL_IGNORE, 0x3500FF }, + { Opcode.CMSG_DEPOSIT_REAGENT_BANK, 0x300216 }, + { Opcode.CMSG_DESTROY_ITEM, 0x300166 }, + { Opcode.CMSG_DF_BOOT_PLAYER_VOTE, 0x350044 }, + { Opcode.CMSG_DF_CONFIRM_EXPAND_SEARCH, 0x350036 }, + { Opcode.CMSG_DF_GET_JOIN_STATUS, 0x350042 }, + { Opcode.CMSG_DF_GET_SYSTEM_INFO, 0x350041 }, + { Opcode.CMSG_DF_JOIN, 0x350037 }, + { Opcode.CMSG_DF_LEAVE, 0x350040 }, + { Opcode.CMSG_DF_PROPOSAL_RESPONSE, 0x350035 }, + { Opcode.CMSG_DF_READY_CHECK_RESPONSE, 0x350048 }, + { Opcode.CMSG_DF_SET_ROLES, 0x350043 }, + { Opcode.CMSG_DF_TELEPORT, 0x350045 }, + { Opcode.CMSG_DISCARDED_TIME_SYNC_ACKS, 0x33005E }, + { Opcode.CMSG_DISMISS_CRITTER, 0x310092 }, + { Opcode.CMSG_DO_COUNTDOWN, 0x350142 }, + { Opcode.CMSG_DO_MASTER_LOOT_ROLL, 0x3000C8 }, + { Opcode.CMSG_DO_READY_CHECK, 0x35005E }, + { Opcode.CMSG_DUEL_RESPONSE, 0x31007B }, + { Opcode.CMSG_EJECT_PASSENGER, 0x300101 }, + { Opcode.CMSG_EMOTE, 0x3100E0 }, + { Opcode.CMSG_ENABLE_NAGLE, 0x360007 }, + { Opcode.CMSG_ENABLE_TAXI_NODE, 0x31003B }, + { Opcode.CMSG_ENGINE_SURVEY, 0x35010D }, + { Opcode.CMSG_ENTER_ENCRYPTED_MODE_ACK, 0x360003 }, + { Opcode.CMSG_ENUM_CHARACTERS, 0x350014 }, + { Opcode.CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT, 0x350107 }, + { Opcode.CMSG_FAR_SIGHT, 0x310081 }, + { Opcode.CMSG_GAME_EVENT_DEBUG_DISABLE, 0x30005C }, + { Opcode.CMSG_GAME_EVENT_DEBUG_ENABLE, 0x30005B }, + { Opcode.CMSG_GAME_OBJ_REPORT_USE, 0x310088 }, + { Opcode.CMSG_GAME_OBJ_USE, 0x310087 }, + { Opcode.CMSG_GARRISON_ADD_FOLLOWER_HEALTH, 0x3001D1 }, + { Opcode.CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING, 0x3001B7 }, + { Opcode.CMSG_GARRISON_CANCEL_CONSTRUCTION, 0x3001A4 }, + { Opcode.CMSG_GARRISON_CHECK_UPGRADEABLE, 0x300208 }, + { Opcode.CMSG_GARRISON_COMPLETE_MISSION, 0x3001FA }, + { Opcode.CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS, 0x3001D2 }, + { Opcode.CMSG_GARRISON_GENERATE_RECRUITS, 0x3001BA }, + { Opcode.CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO, 0x3001C9 }, + { Opcode.CMSG_GARRISON_GET_MAP_DATA, 0x3001D0 }, + { Opcode.CMSG_GARRISON_GET_MISSION_REWARD, 0x30022C }, + { Opcode.CMSG_GARRISON_LEARN_TALENT, 0x3001C5 }, + { Opcode.CMSG_GARRISON_MISSION_BONUS_ROLL, 0x3001FC }, + { Opcode.CMSG_GARRISON_PURCHASE_BUILDING, 0x3001A0 }, + { Opcode.CMSG_GARRISON_RECRUIT_FOLLOWER, 0x3001BC }, + { Opcode.CMSG_GARRISON_REMOVE_FOLLOWER, 0x3001F1 }, + { Opcode.CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING, 0x3001B8 }, + { Opcode.CMSG_GARRISON_RENAME_FOLLOWER, 0x3001B9 }, + { Opcode.CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA, 0x30019F }, + { Opcode.CMSG_GARRISON_REQUEST_SHIPMENT_INFO, 0x3001D4 }, + { Opcode.CMSG_GARRISON_RESEARCH_TALENT, 0x3001BD }, + { Opcode.CMSG_GARRISON_SET_BUILDING_ACTIVE, 0x3001A1 }, + { Opcode.CMSG_GARRISON_SET_FOLLOWER_FAVORITE, 0x3001B5 }, + { Opcode.CMSG_GARRISON_SET_FOLLOWER_INACTIVE, 0x3001AD }, + { Opcode.CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES, 0x3001BB }, + { Opcode.CMSG_GARRISON_SOCKET_TALENT, 0x300298 }, + { Opcode.CMSG_GARRISON_START_MISSION, 0x3001F9 }, + { Opcode.CMSG_GARRISON_SWAP_BUILDINGS, 0x3001A5 }, + { Opcode.CMSG_GENERATE_RANDOM_CHARACTER_NAME, 0x350013 }, + { Opcode.CMSG_GET_ACCOUNT_CHARACTER_LIST, 0x3500E0 }, + { Opcode.CMSG_GET_ACCOUNT_NOTIFICATIONS, 0x35015E }, + { Opcode.CMSG_GET_GARRISON_INFO, 0x30019A }, + { Opcode.CMSG_GET_ITEM_PURCHASE_DATA, 0x3100CE }, + { Opcode.CMSG_GET_LANDING_PAGE_SHIPMENTS, 0x3001D5 }, + { Opcode.CMSG_GET_MIRROR_IMAGE_DATA, 0x30016A }, + { Opcode.CMSG_GET_PVP_OPTIONS_ENABLED, 0x35001A }, + { Opcode.CMSG_GET_RAF_ACCOUNT_INFO, 0x35014C }, + { Opcode.CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA, 0x35018D }, + { Opcode.CMSG_GET_REMAINING_GAME_TIME, 0x350115 }, + { Opcode.CMSG_GET_TROPHY_LIST, 0x3001EA }, + { Opcode.CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS, 0x350109 }, + { Opcode.CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST, 0x35011A }, + { Opcode.CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST, 0x35011B }, + { Opcode.CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY, 0x3500BA }, + { Opcode.CMSG_GM_TICKET_GET_CASE_STATUS, 0x3500B9 }, + { Opcode.CMSG_GM_TICKET_GET_SYSTEM_STATUS, 0x3500B8 }, + { Opcode.CMSG_GOSSIP_REFRESH_OPTIONS, 0x31010C }, + { Opcode.CMSG_GOSSIP_SELECT_OPTION, 0x310025 }, + { Opcode.CMSG_GUILD_ADD_BATTLENET_FRIEND, 0x2E0020 }, + { Opcode.CMSG_GUILD_ADD_RANK, 0x2E0005 }, + { Opcode.CMSG_GUILD_ASSIGN_MEMBER_RANK, 0x2E0002 }, + { Opcode.CMSG_GUILD_BANK_ACTIVATE, 0x310048 }, + { Opcode.CMSG_GUILD_BANK_BUY_TAB, 0x310056 }, + { Opcode.CMSG_GUILD_BANK_DEPOSIT_MONEY, 0x310058 }, + { Opcode.CMSG_GUILD_BANK_LOG_QUERY, 0x2E0019 }, + { Opcode.CMSG_GUILD_BANK_QUERY_TAB, 0x310055 }, + { Opcode.CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, 0x2E001A }, + { Opcode.CMSG_GUILD_BANK_SET_TAB_TEXT, 0x2E001D }, + { Opcode.CMSG_GUILD_BANK_TEXT_QUERY, 0x2E001E }, + { Opcode.CMSG_GUILD_BANK_UPDATE_TAB, 0x310057 }, + { Opcode.CMSG_GUILD_BANK_WITHDRAW_MONEY, 0x310059 }, + { Opcode.CMSG_GUILD_CHALLENGE_UPDATE_REQUEST, 0x2E0017 }, + { Opcode.CMSG_GUILD_CHANGE_NAME_REQUEST, 0x2E0018 }, + { Opcode.CMSG_GUILD_DECLINE_INVITATION, 0x35002A }, + { Opcode.CMSG_GUILD_DELETE, 0x2E0009 }, + { Opcode.CMSG_GUILD_DELETE_RANK, 0x2E0006 }, + { Opcode.CMSG_GUILD_DEMOTE_MEMBER, 0x2E0001 }, + { Opcode.CMSG_GUILD_EVENT_LOG_QUERY, 0x2E001C }, + { Opcode.CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS, 0x2E0012 }, + { Opcode.CMSG_GUILD_GET_RANKS, 0x2E000E }, + { Opcode.CMSG_GUILD_GET_ROSTER, 0x2E0014 }, + { Opcode.CMSG_GUILD_INVITE_BY_NAME, 0x350034 }, + { Opcode.CMSG_GUILD_LEAVE, 0x2E0003 }, + { Opcode.CMSG_GUILD_NEWS_UPDATE_STICKY, 0x2E000F }, + { Opcode.CMSG_GUILD_OFFICER_REMOVE_MEMBER, 0x2E0004 }, + { Opcode.CMSG_GUILD_PERMISSIONS_QUERY, 0x2E001B }, + { Opcode.CMSG_GUILD_PROMOTE_MEMBER, 0x2E0000 }, + { Opcode.CMSG_GUILD_QUERY_MEMBERS_FOR_RECIPE, 0x2E000C }, + { Opcode.CMSG_GUILD_QUERY_MEMBER_RECIPES, 0x2E000A }, + { Opcode.CMSG_GUILD_QUERY_NEWS, 0x2E000D }, + { Opcode.CMSG_GUILD_QUERY_RECIPES, 0x2E000B }, + { Opcode.CMSG_GUILD_REPLACE_GUILD_MASTER, 0x2E001F }, + { Opcode.CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, 0x2E0010 }, + { Opcode.CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT, 0x2E0011 }, + { Opcode.CMSG_GUILD_SET_GUILD_MASTER, 0x3500F2 }, + { Opcode.CMSG_GUILD_SET_MEMBER_NOTE, 0x2E0013 }, + { Opcode.CMSG_GUILD_SET_RANK_PERMISSIONS, 0x2E0008 }, + { Opcode.CMSG_GUILD_SHIFT_RANK, 0x2E0007 }, + { Opcode.CMSG_GUILD_UPDATE_INFO_TEXT, 0x2E0016 }, + { Opcode.CMSG_GUILD_UPDATE_MOTD_TEXT, 0x2E0015 }, + { Opcode.CMSG_HEARTH_AND_RESURRECT, 0x3100A0 }, + { Opcode.CMSG_HIDE_QUEST_CHOICE, 0x30017A }, + { Opcode.CMSG_HOTFIX_REQUEST, 0x350011 }, + { Opcode.CMSG_IGNORE_TRADE, 0x300003 }, + { Opcode.CMSG_INITIATE_ROLE_POLL, 0x350006 }, + { Opcode.CMSG_INITIATE_TRADE, 0x300000 }, + { Opcode.CMSG_INSPECT, 0x3100C8 }, + { Opcode.CMSG_INSTANCE_LOCK_RESPONSE, 0x3100A5 }, + { Opcode.CMSG_ISLAND_QUEUE, 0x30025C }, + { Opcode.CMSG_ITEM_PURCHASE_REFUND, 0x3100CF }, + { Opcode.CMSG_ITEM_TEXT_QUERY, 0x300209 }, + { Opcode.CMSG_JOIN_PET_BATTLE_QUEUE, 0x30008C }, + { Opcode.CMSG_JOIN_RATED_BATTLEGROUND, 0x300023 }, + { Opcode.CMSG_KEEP_ALIVE, 0x3500A9 }, + { Opcode.CMSG_KEYBOUND_OVERRIDE, 0x3000DE }, + { Opcode.CMSG_LATENCY_REPORT, 0x36000D }, + { Opcode.CMSG_LEARN_PVP_TALENTS, 0x3100F8 }, + { Opcode.CMSG_LEARN_TALENTS, 0x3100F6 }, + { Opcode.CMSG_LEAVE_GROUP, 0x350073 }, + { Opcode.CMSG_LEAVE_PET_BATTLE_QUEUE, 0x30008D }, + { Opcode.CMSG_LFG_LIST_APPLY_TO_GROUP, 0x35003B }, + { Opcode.CMSG_LFG_LIST_CANCEL_APPLICATION, 0x35003C }, + { Opcode.CMSG_LFG_LIST_DECLINE_APPLICANT, 0x35003D }, + { Opcode.CMSG_LFG_LIST_GET_STATUS, 0x350039 }, + { Opcode.CMSG_LFG_LIST_INVITE_APPLICANT, 0x35003E }, + { Opcode.CMSG_LFG_LIST_INVITE_RESPONSE, 0x35003F }, + { Opcode.CMSG_LFG_LIST_JOIN, 0x300250 }, + { Opcode.CMSG_LFG_LIST_LEAVE, 0x350038 }, + { Opcode.CMSG_LFG_LIST_SEARCH, 0x35003A }, + { Opcode.CMSG_LFG_LIST_UPDATE_REQUEST, 0x300251 }, + { Opcode.CMSG_LIST_INVENTORY, 0x310032 }, + { Opcode.CMSG_LIVE_REGION_ACCOUNT_RESTORE, 0x3500E3 }, + { Opcode.CMSG_LIVE_REGION_CHARACTER_COPY, 0x3500E2 }, + { Opcode.CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST, 0x3500E1 }, + { Opcode.CMSG_LIVE_REGION_KEY_BINDINGS_COPY, 0x3500E4 }, + { Opcode.CMSG_LOADING_SCREEN_NOTIFY, 0x350024 }, + { Opcode.CMSG_LOAD_SELECTED_TROPHY, 0x3001EB }, + { Opcode.CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE, 0x350171 }, + { Opcode.CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE, 0x350168 }, + { Opcode.CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER, 0x35017A }, + { Opcode.CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE, 0x35016F }, + { Opcode.CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY, 0x35016B }, + { Opcode.CMSG_LOBBY_MATCHMAKER_PARTY_INVITE, 0x350167 }, + { Opcode.CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE, 0x35016A }, + { Opcode.CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE, 0x350170 }, + { Opcode.CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE, 0x350169 }, + { Opcode.CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY, 0x35016C }, + { Opcode.CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY, 0x35016D }, + { Opcode.CMSG_LOGOUT_CANCEL, 0x310071 }, + { Opcode.CMSG_LOGOUT_INSTANT, 0x310072 }, + { Opcode.CMSG_LOGOUT_LOBBY_MATCHMAKER, 0x310120 }, + { Opcode.CMSG_LOGOUT_REQUEST, 0x310070 }, + { Opcode.CMSG_LOG_DISCONNECT, 0x360005 }, + { Opcode.CMSG_LOG_STREAMING_ERROR, 0x360009 }, + { Opcode.CMSG_LOOT_ITEM, 0x3000C6 }, + { Opcode.CMSG_LOOT_MONEY, 0x3000C5 }, + { Opcode.CMSG_LOOT_RELEASE, 0x3000CA }, + { Opcode.CMSG_LOOT_ROLL, 0x3000CB }, + { Opcode.CMSG_LOOT_UNIT, 0x3000C4 }, + { Opcode.CMSG_LOW_LEVEL_RAID1, 0x3500CC }, + { Opcode.CMSG_LOW_LEVEL_RAID2, 0x3100AC }, + { Opcode.CMSG_MAIL_CREATE_TEXT_ITEM, 0x3100DA }, + { Opcode.CMSG_MAIL_DELETE, 0x3000E0 }, + { Opcode.CMSG_MAIL_GET_LIST, 0x3100D5 }, + { Opcode.CMSG_MAIL_MARK_AS_READ, 0x3100D9 }, + { Opcode.CMSG_MAIL_RETURN_TO_SENDER, 0x35007F }, + { Opcode.CMSG_MAIL_TAKE_ITEM, 0x3100D7 }, + { Opcode.CMSG_MAIL_TAKE_MONEY, 0x3100D6 }, + { Opcode.CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT, 0x3000E2 }, + { Opcode.CMSG_MASTER_LOOT_ITEM, 0x3000C7 }, + { Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, 0x310053 }, + { Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM, 0x310050 }, + { Opcode.CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM, 0x31004E }, + { Opcode.CMSG_MINIMAP_PING, 0x350075 }, + { Opcode.CMSG_MISSILE_TRAJECTORY_COLLISION, 0x300034 }, + { Opcode.CMSG_MOUNT_CLEAR_FANFARE, 0x2A0003 }, + { Opcode.CMSG_MOUNT_SET_FAVORITE, 0x35005C }, + { Opcode.CMSG_MOUNT_SPECIAL_ANIM, 0x300150 }, + { Opcode.CMSG_MOVE_ADD_IMPULSE_ACK, 0x33006D }, + { Opcode.CMSG_MOVE_APPLY_INERTIA_ACK, 0x33006B }, + { Opcode.CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, 0x330031 }, + { Opcode.CMSG_MOVE_CHANGE_TRANSPORT, 0x33004C }, + { Opcode.CMSG_MOVE_CHANGE_VEHICLE_SEATS, 0x330051 }, + { Opcode.CMSG_MOVE_COLLISION_DISABLE_ACK, 0x330056 }, + { Opcode.CMSG_MOVE_COLLISION_ENABLE_ACK, 0x330057 }, + { Opcode.CMSG_MOVE_DISMISS_VEHICLE, 0x330050 }, + { Opcode.CMSG_MOVE_DOUBLE_JUMP, 0x330007 }, + { Opcode.CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK, 0x33003A }, + { Opcode.CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK, 0x330081 }, + { Opcode.CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK, 0x330040 }, + { Opcode.CMSG_MOVE_FALL_LAND, 0x330017 }, + { Opcode.CMSG_MOVE_FALL_RESET, 0x330035 }, + { Opcode.CMSG_MOVE_FEATHER_FALL_ACK, 0x330038 }, + { Opcode.CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, 0x33004B }, + { Opcode.CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, 0x33004A }, + { Opcode.CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, 0x33004F }, + { Opcode.CMSG_MOVE_FORCE_ROOT_ACK, 0x33002A }, + { Opcode.CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, 0x330028 }, + { Opcode.CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK, 0x330027 }, + { Opcode.CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, 0x33003E }, + { Opcode.CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK, 0x330029 }, + { Opcode.CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK, 0x33003F }, + { Opcode.CMSG_MOVE_FORCE_UNROOT_ACK, 0x33002B }, + { Opcode.CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK, 0x33003D }, + { Opcode.CMSG_MOVE_GRAVITY_DISABLE_ACK, 0x330052 }, + { Opcode.CMSG_MOVE_GRAVITY_ENABLE_ACK, 0x330053 }, + { Opcode.CMSG_MOVE_GUILD_BANK_ITEM, 0x31004D }, + { Opcode.CMSG_MOVE_HEARTBEAT, 0x33002C }, + { Opcode.CMSG_MOVE_HOVER_ACK, 0x33002F }, + { Opcode.CMSG_MOVE_INERTIA_DISABLE_ACK, 0x330054 }, + { Opcode.CMSG_MOVE_INERTIA_ENABLE_ACK, 0x330055 }, + { Opcode.CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE, 0x330063 }, + { Opcode.CMSG_MOVE_JUMP, 0x330006 }, + { Opcode.CMSG_MOVE_KNOCK_BACK_ACK, 0x33002E }, + { Opcode.CMSG_MOVE_REMOVE_INERTIA_ACK, 0x33006C }, + { Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCES, 0x330033 }, + { Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK, 0x330032 }, + { Opcode.CMSG_MOVE_SET_ADV_FLY, 0x33006F }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK, 0x330075 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK, 0x330070 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK, 0x330076 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK, 0x330073 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK, 0x330074 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK, 0x33007D }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK, 0x330072 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK, 0x330071 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK, 0x33007B }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK, 0x330077 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK, 0x330078 }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK, 0x33007A }, + { Opcode.CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK, 0x330079 }, + { Opcode.CMSG_MOVE_SET_CAN_ADV_FLY_ACK, 0x33006E }, + { Opcode.CMSG_MOVE_SET_CAN_FLY_ACK, 0x330043 }, + { Opcode.CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK, 0x330041 }, + { Opcode.CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, 0x330058 }, + { Opcode.CMSG_MOVE_SET_FACING, 0x330025 }, + { Opcode.CMSG_MOVE_SET_FACING_HEARTBEAT, 0x33007C }, + { Opcode.CMSG_MOVE_SET_FLY, 0x330045 }, + { Opcode.CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK, 0x330042 }, + { Opcode.CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK, 0x33005F }, + { Opcode.CMSG_MOVE_SET_PITCH, 0x330026 }, + { Opcode.CMSG_MOVE_SET_RUN_MODE, 0x33000E }, + { Opcode.CMSG_MOVE_SET_TURN_RATE_CHEAT, 0x330022 }, + { Opcode.CMSG_MOVE_SET_VEHICLE_REC_ID_ACK, 0x330030 }, + { Opcode.CMSG_MOVE_SET_WALK_MODE, 0x33000F }, + { Opcode.CMSG_MOVE_SPLINE_DONE, 0x330034 }, + { Opcode.CMSG_MOVE_START_ASCEND, 0x330046 }, + { Opcode.CMSG_MOVE_START_BACKWARD, 0x330001 }, + { Opcode.CMSG_MOVE_START_DESCEND, 0x33004D }, + { Opcode.CMSG_MOVE_START_FORWARD, 0x330000 }, + { Opcode.CMSG_MOVE_START_PITCH_DOWN, 0x33000C }, + { Opcode.CMSG_MOVE_START_PITCH_UP, 0x33000B }, + { Opcode.CMSG_MOVE_START_STRAFE_LEFT, 0x330003 }, + { Opcode.CMSG_MOVE_START_STRAFE_RIGHT, 0x330004 }, + { Opcode.CMSG_MOVE_START_SWIM, 0x330018 }, + { Opcode.CMSG_MOVE_START_TURN_LEFT, 0x330008 }, + { Opcode.CMSG_MOVE_START_TURN_RIGHT, 0x330009 }, + { Opcode.CMSG_MOVE_STOP, 0x330002 }, + { Opcode.CMSG_MOVE_STOP_ASCEND, 0x330047 }, + { Opcode.CMSG_MOVE_STOP_PITCH, 0x33000D }, + { Opcode.CMSG_MOVE_STOP_STRAFE, 0x330005 }, + { Opcode.CMSG_MOVE_STOP_SWIM, 0x330019 }, + { Opcode.CMSG_MOVE_STOP_TURN, 0x33000A }, + { Opcode.CMSG_MOVE_TELEPORT_ACK, 0x330016 }, + { Opcode.CMSG_MOVE_TIME_SKIPPED, 0x330037 }, + { Opcode.CMSG_MOVE_UPDATE_FALL_SPEED, 0x330036 }, + { Opcode.CMSG_MOVE_WATER_WALK_ACK, 0x330039 }, + { Opcode.CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS, 0x2D0001 }, + { Opcode.CMSG_NEUTRAL_PLAYER_SELECT_FACTION, 0x300082 }, + { Opcode.CMSG_NEXT_CINEMATIC_CAMERA, 0x3100E3 }, + { Opcode.CMSG_OBJECT_UPDATE_FAILED, 0x30002A }, + { Opcode.CMSG_OBJECT_UPDATE_RESCUED, 0x30002B }, + { Opcode.CMSG_OFFER_PETITION, 0x300282 }, + { Opcode.CMSG_OPENING_CINEMATIC, 0x3100E2 }, + { Opcode.CMSG_OPEN_ITEM, 0x30020A }, + { Opcode.CMSG_OPEN_MISSION_NPC, 0x3001CB }, + { Opcode.CMSG_OPEN_SHIPMENT_NPC, 0x3001D3 }, + { Opcode.CMSG_OPEN_TRADESKILL_NPC, 0x3001DE }, + { Opcode.CMSG_OPT_OUT_OF_LOOT, 0x31008F }, + { Opcode.CMSG_OVERRIDE_SCREEN_FLASH, 0x3100B9 }, + { Opcode.CMSG_PARTY_INVITE, 0x350030 }, + { Opcode.CMSG_PARTY_INVITE_RESPONSE, 0x350032 }, + { Opcode.CMSG_PARTY_UNINVITE, 0x350071 }, + { Opcode.CMSG_PERFORM_ITEM_INTERACTION, 0x3000EA }, + { Opcode.CMSG_PERKS_PROGRAM_ITEMS_REFRESHED, 0x3002AA }, + { Opcode.CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, 0x2A0011 }, + { Opcode.CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, 0x3002AC }, + { Opcode.CMSG_PERKS_PROGRAM_REQUEST_REFUND, 0x3002AD }, + { Opcode.CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM, 0x3002AE }, + { Opcode.CMSG_PERKS_PROGRAM_STATUS_REQUEST, 0x3002AB }, + { Opcode.CMSG_PETITION_BUY, 0x31005B }, + { Opcode.CMSG_PETITION_RENAME_GUILD, 0x3500F3 }, + { Opcode.CMSG_PETITION_SHOW_LIST, 0x31005A }, + { Opcode.CMSG_PETITION_SHOW_SIGNATURES, 0x31005C }, + { Opcode.CMSG_PET_ABANDON, 0x31001D }, + { Opcode.CMSG_PET_ABANDON_BY_NUMBER, 0x31001E }, + { Opcode.CMSG_PET_ACTION, 0x31001B }, + { Opcode.CMSG_PET_BATTLE_FINAL_NOTIFY, 0x300091 }, + { Opcode.CMSG_PET_BATTLE_INPUT, 0x35006B }, + { Opcode.CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT, 0x3000DF }, + { Opcode.CMSG_PET_BATTLE_QUIT_NOTIFY, 0x300090 }, + { Opcode.CMSG_PET_BATTLE_REPLACE_FRONT_PET, 0x35006C }, + { Opcode.CMSG_PET_BATTLE_REQUEST_PVP, 0x30008A }, + { Opcode.CMSG_PET_BATTLE_REQUEST_UPDATE, 0x30008B }, + { Opcode.CMSG_PET_BATTLE_REQUEST_WILD, 0x300088 }, + { Opcode.CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY, 0x300092 }, + { Opcode.CMSG_PET_CANCEL_AURA, 0x31001F }, + { Opcode.CMSG_PET_CAST_SPELL, 0x30016F }, + { Opcode.CMSG_PET_RENAME, 0x3500AE }, + { Opcode.CMSG_PET_SET_ACTION, 0x31001A }, + { Opcode.CMSG_PET_SPELL_AUTOCAST, 0x310020 }, + { Opcode.CMSG_PET_STOP_ATTACK, 0x31001C }, + { Opcode.CMSG_PING, 0x360004 }, + { Opcode.CMSG_PLAYER_LOGIN, 0x350016 }, + { Opcode.CMSG_PUSH_QUEST_TO_PARTY, 0x310030 }, + { Opcode.CMSG_PVP_LOG_DATA, 0x300026 }, + { Opcode.CMSG_QUERY_BATTLE_PET_NAME, 0x300143 }, + { Opcode.CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT, 0x35008A }, + { Opcode.CMSG_QUERY_CORPSE_TRANSPORT, 0x35008B }, + { Opcode.CMSG_QUERY_COUNTDOWN_TIMER, 0x300053 }, + { Opcode.CMSG_QUERY_CREATURE, 0x30013D }, + { Opcode.CMSG_QUERY_GAME_OBJECT, 0x30013E }, + { Opcode.CMSG_QUERY_GARRISON_PET_NAME, 0x300144 }, + { Opcode.CMSG_QUERY_GUILD_INFO, 0x3500B4 }, + { Opcode.CMSG_QUERY_INSPECT_ACHIEVEMENTS, 0x310099 }, + { Opcode.CMSG_QUERY_NEXT_MAIL_TIME, 0x3100D8 }, + { Opcode.CMSG_QUERY_NPC_TEXT, 0x30013F }, + { Opcode.CMSG_QUERY_PAGE_TEXT, 0x300141 }, + { Opcode.CMSG_QUERY_PETITION, 0x300145 }, + { Opcode.CMSG_QUERY_PET_NAME, 0x300142 }, + { Opcode.CMSG_QUERY_PLAYER_NAMES, 0x36000E }, + { Opcode.CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY, 0x36000C }, + { Opcode.CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID, 0x36000B }, + { Opcode.CMSG_QUERY_QUEST_COMPLETION_NPCS, 0x30001F }, + { Opcode.CMSG_QUERY_QUEST_INFO, 0x300140 }, + { Opcode.CMSG_QUERY_QUEST_ITEM_USABILITY, 0x300020 }, + { Opcode.CMSG_QUERY_REALM_NAME, 0x3500B3 }, + { Opcode.CMSG_QUERY_SCENARIO_POI, 0x350080 }, + { Opcode.CMSG_QUERY_SELECTED_WOW_LABS_AREA, 0x3002E5 }, + { Opcode.CMSG_QUERY_TIME, 0x31006F }, + { Opcode.CMSG_QUERY_TREASURE_PICKER, 0x30022F }, + { Opcode.CMSG_QUERY_VOID_STORAGE, 0x30004C }, + { Opcode.CMSG_QUERY_WOW_LABS_AREA_INFO, 0x3002E6 }, + { Opcode.CMSG_QUEST_CONFIRM_ACCEPT, 0x31002F }, + { Opcode.CMSG_QUEST_GIVER_ACCEPT_QUEST, 0x310029 }, + { Opcode.CMSG_QUEST_GIVER_CHOOSE_REWARD, 0x31002B }, + { Opcode.CMSG_QUEST_GIVER_CLOSE_QUEST, 0x3100E9 }, + { Opcode.CMSG_QUEST_GIVER_COMPLETE_QUEST, 0x31002A }, + { Opcode.CMSG_QUEST_GIVER_HELLO, 0x310027 }, + { Opcode.CMSG_QUEST_GIVER_QUERY_QUEST, 0x310028 }, + { Opcode.CMSG_QUEST_GIVER_REQUEST_REWARD, 0x31002C }, + { Opcode.CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY, 0x31002E }, + { Opcode.CMSG_QUEST_GIVER_STATUS_QUERY, 0x31002D }, + { Opcode.CMSG_QUEST_LOG_REMOVE_QUEST, 0x3100CD }, + { Opcode.CMSG_QUEST_POI_QUERY, 0x3500DA }, + { Opcode.CMSG_QUEST_PUSH_RESULT, 0x310031 }, + { Opcode.CMSG_QUEST_SESSION_BEGIN_RESPONSE, 0x300274 }, + { Opcode.CMSG_QUEST_SESSION_REQUEST_START, 0x300273 }, + { Opcode.CMSG_QUEST_SESSION_REQUEST_STOP, 0x350157 }, + { Opcode.CMSG_QUEUED_MESSAGES_END, 0x360008 }, + { Opcode.CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS, 0x35012F }, + { Opcode.CMSG_QUICK_JOIN_REQUEST_INVITE, 0x35012E }, + { Opcode.CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION, 0x35015C }, + { Opcode.CMSG_QUICK_JOIN_RESPOND_TO_INVITE, 0x35012D }, + { Opcode.CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED, 0x35012C }, + { Opcode.CMSG_RAF_CLAIM_ACTIVITY_REWARD, 0x31009D }, + { Opcode.CMSG_RAF_CLAIM_NEXT_REWARD, 0x35014D }, + { Opcode.CMSG_RAF_GENERATE_RECRUITMENT_LINK, 0x35014F }, + { Opcode.CMSG_RAF_UPDATE_RECRUITMENT_INFO, 0x35014E }, + { Opcode.CMSG_RANDOM_ROLL, 0x35007E }, + { Opcode.CMSG_READY_CHECK_RESPONSE, 0x35005F }, + { Opcode.CMSG_READ_ITEM, 0x30020B }, + { Opcode.CMSG_RECLAIM_CORPSE, 0x310074 }, + { Opcode.CMSG_REMOVE_NEW_ITEM, 0x300232 }, + { Opcode.CMSG_REMOVE_RAF_RECRUIT, 0x350150 }, + { Opcode.CMSG_REORDER_CHARACTERS, 0x350015 }, + { Opcode.CMSG_REPAIR_ITEM, 0x310085 }, + { Opcode.CMSG_REPLACE_TROPHY, 0x3001EC }, + { Opcode.CMSG_REPOP_REQUEST, 0x3100C5 }, + { Opcode.CMSG_REPORT_CLIENT_VARIABLES, 0x350129 }, + { Opcode.CMSG_REPORT_ENABLED_ADDONS, 0x350128 }, + { Opcode.CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS, 0x35012A }, + { Opcode.CMSG_REPORT_PVP_PLAYER_AFK, 0x31008D }, + { Opcode.CMSG_REPORT_SERVER_LAG, 0x30026C }, + { Opcode.CMSG_REPORT_STUCK_IN_COMBAT, 0x30026D }, + { Opcode.CMSG_REQUEST_ACCOUNT_DATA, 0x3500C0 }, + { Opcode.CMSG_REQUEST_AREA_POI_UPDATE, 0x300231 }, + { Opcode.CMSG_REQUEST_BATTLEFIELD_STATUS, 0x350008 }, + { Opcode.CMSG_REQUEST_CEMETERY_LIST, 0x300021 }, + { Opcode.CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO, 0x3500B5 }, + { Opcode.CMSG_REQUEST_COVENANT_CALLINGS, 0x30025E }, + { Opcode.CMSG_REQUEST_CROWD_CONTROL_SPELL, 0x3100C9 }, + { Opcode.CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS, 0x2A0018 }, + { Opcode.CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS, 0x300297 }, + { Opcode.CMSG_REQUEST_GUILD_PARTY_STATE, 0x300052 }, + { Opcode.CMSG_REQUEST_GUILD_REWARDS_LIST, 0x300051 }, + { Opcode.CMSG_REQUEST_LATEST_SPLASH_SCREEN, 0x30026E }, + { Opcode.CMSG_REQUEST_LFG_LIST_BLACKLIST, 0x30017B }, + { Opcode.CMSG_REQUEST_MYTHIC_PLUS_AFFIXES, 0x3000B6 }, + { Opcode.CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA, 0x3000B7 }, + { Opcode.CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS, 0x3002E4 }, + { Opcode.CMSG_REQUEST_PARTY_JOIN_UPDATES, 0x350023 }, + { Opcode.CMSG_REQUEST_PARTY_MEMBER_STATS, 0x35007D }, + { Opcode.CMSG_REQUEST_PET_INFO, 0x310021 }, + { Opcode.CMSG_REQUEST_PLAYED_TIME, 0x300148 }, + { Opcode.CMSG_REQUEST_PVP_REWARDS, 0x30003F }, + { Opcode.CMSG_REQUEST_RAID_INFO, 0x3500F4 }, + { Opcode.CMSG_REQUEST_RATED_PVP_INFO, 0x35000F }, + { Opcode.CMSG_REQUEST_REALM_GUILD_MASTER_INFO, 0x350190 }, + { Opcode.CMSG_REQUEST_SCHEDULED_PVP_INFO, 0x300040 }, + { Opcode.CMSG_REQUEST_STABLED_PETS, 0x310022 }, + { Opcode.CMSG_REQUEST_STORE_FRONT_INFO_UPDATE, 0x2A001D }, + { Opcode.CMSG_REQUEST_VEHICLE_EXIT, 0x3000FC }, + { Opcode.CMSG_REQUEST_VEHICLE_NEXT_SEAT, 0x3000FE }, + { Opcode.CMSG_REQUEST_VEHICLE_PREV_SEAT, 0x3000FD }, + { Opcode.CMSG_REQUEST_VEHICLE_SWITCH_SEAT, 0x3000FF }, + { Opcode.CMSG_REQUEST_WEEKLY_REWARDS, 0x300261 }, + { Opcode.CMSG_REQUEST_WORLD_QUEST_UPDATE, 0x300230 }, + { Opcode.CMSG_RESET_CHALLENGE_MODE, 0x3000B4 }, + { Opcode.CMSG_RESET_CHALLENGE_MODE_CHEAT, 0x3000B5 }, + { Opcode.CMSG_RESET_INSTANCES, 0x350092 }, + { Opcode.CMSG_RESURRECT_RESPONSE, 0x3500AD }, + { Opcode.CMSG_REVERT_MONUMENT_APPEARANCE, 0x3001EE }, + { Opcode.CMSG_RIDE_VEHICLE_INTERACT, 0x300100 }, + { Opcode.CMSG_RPE_RESET_CHARACTER, 0x35017D }, + { Opcode.CMSG_SAVE_ACCOUNT_DATA_EXPORT, 0x350177 }, + { Opcode.CMSG_SAVE_CUF_PROFILES, 0x300035 }, + { Opcode.CMSG_SAVE_EQUIPMENT_SET, 0x3100A3 }, + { Opcode.CMSG_SAVE_GUILD_EMBLEM, 0x30017F }, + { Opcode.CMSG_SAVE_PERSONAL_EMBLEM, 0x300180 }, + { Opcode.CMSG_SCENE_PLAYBACK_CANCELED, 0x3000DB }, + { Opcode.CMSG_SCENE_PLAYBACK_COMPLETE, 0x3000DA }, + { Opcode.CMSG_SCENE_TRIGGER_EVENT, 0x3000DC }, + { Opcode.CMSG_SEAMLESS_TRANSFER_COMPLETE, 0x3002D3 }, + { Opcode.CMSG_SELECT_WOW_LABS_AREA, 0x3002E7 }, + { Opcode.CMSG_SELF_RES, 0x3100D0 }, + { Opcode.CMSG_SELL_ALL_JUNK_ITEMS, 0x310034 }, + { Opcode.CMSG_SELL_ITEM, 0x310033 }, + { Opcode.CMSG_SEND_CHARACTER_CLUB_INVITATION, 0x350122 }, + { Opcode.CMSG_SEND_CONTACT_LIST, 0x3500F9 }, + { Opcode.CMSG_SEND_MAIL, 0x350026 }, + { Opcode.CMSG_SEND_PING_UNIT, 0x3002D5 }, + { Opcode.CMSG_SEND_PING_WORLD_POINT, 0x3002D6 }, + { Opcode.CMSG_SEND_TEXT_EMOTE, 0x310018 }, + { Opcode.CMSG_SERVER_TIME_OFFSET_REQUEST, 0x3500C7 }, + { Opcode.CMSG_SETUP_WARBAND_GROUPS, 0x35018B }, + { Opcode.CMSG_SET_ACHIEVEMENTS_HIDDEN, 0x3000E1 }, + { Opcode.CMSG_SET_ACTION_BAR_TOGGLES, 0x3100D1 }, + { Opcode.CMSG_SET_ACTION_BUTTON, 0x350060 }, + { Opcode.CMSG_SET_ACTIVE_MOVER, 0x330059 }, + { Opcode.CMSG_SET_ADVANCED_COMBAT_LOGGING, 0x30018D }, + { Opcode.CMSG_SET_ASSISTANT_LEADER, 0x350079 }, + { Opcode.CMSG_SET_BACKPACK_AUTOSORT_DISABLED, 0x30020E }, + { Opcode.CMSG_SET_BACKPACK_SELL_JUNK_DISABLED, 0x30020F }, + { Opcode.CMSG_SET_BANK_AUTOSORT_DISABLED, 0x300210 }, + { Opcode.CMSG_SET_CONTACT_NOTES, 0x3500FC }, + { Opcode.CMSG_SET_CURRENCY_FLAGS, 0x300013 }, + { Opcode.CMSG_SET_DIFFICULTY_ID, 0x3000DD }, + { Opcode.CMSG_SET_DUNGEON_DIFFICULTY, 0x3500AC }, + { Opcode.CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT, 0x300137 }, + { Opcode.CMSG_SET_EVERYONE_IS_ASSISTANT, 0x350046 }, + { Opcode.CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES, 0x350130 }, + { Opcode.CMSG_SET_FACTION_AT_WAR, 0x310077 }, + { Opcode.CMSG_SET_FACTION_INACTIVE, 0x310079 }, + { Opcode.CMSG_SET_FACTION_NOT_AT_WAR, 0x310078 }, + { Opcode.CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE, 0x300063 }, + { Opcode.CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, 0x300212 }, + { Opcode.CMSG_SET_LOOT_METHOD, 0x350072 }, + { Opcode.CMSG_SET_LOOT_SPECIALIZATION, 0x3100DE }, + { Opcode.CMSG_SET_PARTY_ASSIGNMENT, 0x35007B }, + { Opcode.CMSG_SET_PARTY_LEADER, 0x350074 }, + { Opcode.CMSG_SET_PET_FAVORITE, 0x300012 }, + { Opcode.CMSG_SET_PET_SLOT, 0x300011 }, + { Opcode.CMSG_SET_PLAYER_DECLINED_NAMES, 0x3500B2 }, + { Opcode.CMSG_SET_PREFERRED_CEMETERY, 0x300022 }, + { Opcode.CMSG_SET_PVP, 0x300184 }, + { Opcode.CMSG_SET_RAID_DIFFICULTY, 0x350105 }, + { Opcode.CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS, 0x350047 }, + { Opcode.CMSG_SET_ROLE, 0x350005 }, + { Opcode.CMSG_SET_SAVED_INSTANCE_EXTEND, 0x3500B0 }, + { Opcode.CMSG_SET_SELECTION, 0x3100C7 }, + { Opcode.CMSG_SET_SHEATHED, 0x310019 }, + { Opcode.CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT, 0x300211 }, + { Opcode.CMSG_SET_TAXI_BENCHMARK_MODE, 0x31008C }, + { Opcode.CMSG_SET_TITLE, 0x30014E }, + { Opcode.CMSG_SET_TRADE_CURRENCY, 0x30000A }, + { Opcode.CMSG_SET_TRADE_GOLD, 0x300009 }, + { Opcode.CMSG_SET_TRADE_ITEM, 0x300007 }, + { Opcode.CMSG_SET_USING_PARTY_GARRISON, 0x3001CD }, + { Opcode.CMSG_SET_WAR_MODE, 0x300185 }, + { Opcode.CMSG_SET_WATCHED_FACTION, 0x31007A }, + { Opcode.CMSG_SHOW_TRADE_SKILL, 0x3500EC }, + { Opcode.CMSG_SIGN_PETITION, 0x3100D2 }, + { Opcode.CMSG_SILENCE_PARTY_TALKER, 0x35007C }, + { Opcode.CMSG_SOCIAL_CONTRACT_REQUEST, 0x350172 }, + { Opcode.CMSG_SOCKET_GEMS, 0x310084 }, + { Opcode.CMSG_SORT_ACCOUNT_BANK_BAGS, 0x3002D9 }, + { Opcode.CMSG_SORT_BAGS, 0x300213 }, + { Opcode.CMSG_SORT_BANK_BAGS, 0x300214 }, + { Opcode.CMSG_SORT_REAGENT_BANK_BAGS, 0x300215 }, + { Opcode.CMSG_SPAWN_TRACKING_UPDATE, 0x300163 }, + { Opcode.CMSG_SPECTATE_CHANGE, 0x3002CC }, + { Opcode.CMSG_SPELL_CLICK, 0x310026 }, + { Opcode.CMSG_SPELL_EMPOWER_RELEASE, 0x300135 }, + { Opcode.CMSG_SPELL_EMPOWER_RESTART, 0x300136 }, + { Opcode.CMSG_SPIRIT_HEALER_ACTIVATE, 0x310041 }, + { Opcode.CMSG_SPLIT_GUILD_BANK_ITEM, 0x310054 }, + { Opcode.CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY, 0x310051 }, + { Opcode.CMSG_SPLIT_ITEM, 0x32000A }, + { Opcode.CMSG_SPLIT_ITEM_TO_GUILD_BANK, 0x31004F }, + { Opcode.CMSG_STAND_STATE_CHANGE, 0x300033 }, + { Opcode.CMSG_START_CHALLENGE_MODE, 0x3100EA }, + { Opcode.CMSG_START_SPECTATOR_WAR_GAME, 0x35000B }, + { Opcode.CMSG_START_WAR_GAME, 0x35000A }, + { Opcode.CMSG_STORE_GUILD_BANK_ITEM, 0x31004A }, + { Opcode.CMSG_SUBMIT_USER_FEEDBACK, 0x3500BF }, + { Opcode.CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE, 0x30028C }, + { Opcode.CMSG_SUMMON_RESPONSE, 0x350094 }, + { Opcode.CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, 0x350070 }, + { Opcode.CMSG_SURRENDER_ARENA, 0x30001E }, + { Opcode.CMSG_SUSPEND_COMMS_ACK, 0x360000 }, + { Opcode.CMSG_SUSPEND_TOKEN_RESPONSE, 0x360006 }, + { Opcode.CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, 0x31004C }, + { Opcode.CMSG_SWAP_INV_ITEM, 0x320009 }, + { Opcode.CMSG_SWAP_ITEM, 0x320008 }, + { Opcode.CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM, 0x31004B }, + { Opcode.CMSG_SWAP_SUB_GROUPS, 0x350077 }, + { Opcode.CMSG_SWAP_VOID_ITEM, 0x30004E }, + { Opcode.CMSG_TABARD_VENDOR_ACTIVATE, 0x300181 }, + { Opcode.CMSG_TALK_TO_GOSSIP, 0x310023 }, + { Opcode.CMSG_TAXI_NODE_STATUS_QUERY, 0x31003A }, + { Opcode.CMSG_TAXI_QUERY_AVAILABLE_NODES, 0x31003C }, + { Opcode.CMSG_TAXI_REQUEST_EARLY_LANDING, 0x31003E }, + { Opcode.CMSG_TIME_ADJUSTMENT_RESPONSE, 0x33005D }, + { Opcode.CMSG_TIME_SYNC_RESPONSE, 0x33005A }, + { Opcode.CMSG_TIME_SYNC_RESPONSE_DROPPED, 0x33005C }, + { Opcode.CMSG_TIME_SYNC_RESPONSE_FAILED, 0x33005B }, + { Opcode.CMSG_TOGGLE_DIFFICULTY, 0x350081 }, + { Opcode.CMSG_TOGGLE_PVP, 0x300183 }, + { Opcode.CMSG_TOTEM_DESTROYED, 0x310091 }, + { Opcode.CMSG_TOY_CLEAR_FANFARE, 0x2A0004 }, + { Opcode.CMSG_TRADE_SKILL_SET_FAVORITE, 0x30022E }, + { Opcode.CMSG_TRAINER_BUY_SPELL, 0x310040 }, + { Opcode.CMSG_TRAINER_LIST, 0x31003F }, + { Opcode.CMSG_TRAITS_COMMIT_CONFIG, 0x3002B4 }, + { Opcode.CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS, 0x3002B2 }, + { Opcode.CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER, 0x3002E2 }, + { Opcode.CMSG_TRANSMOGRIFY_ITEMS, 0x300041 }, + { Opcode.CMSG_TURN_IN_PETITION, 0x3100D4 }, + { Opcode.CMSG_TUTORIAL, 0x350106 }, + { Opcode.CMSG_UI_MAP_QUEST_LINES_REQUEST, 0x30025D }, + { Opcode.CMSG_UNACCEPT_TRADE, 0x300005 }, + { Opcode.CMSG_UNDELETE_CHARACTER, 0x350108 }, + { Opcode.CMSG_UNLEARN_SKILL, 0x31007E }, + { Opcode.CMSG_UNLEARN_SPECIALIZATION, 0x30004F }, + { Opcode.CMSG_UNLOCK_VOID_STORAGE, 0x30004B }, + { Opcode.CMSG_UPDATE_AADC_STATUS, 0x350162 }, + { Opcode.CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS, 0x310127 }, + { Opcode.CMSG_UPDATE_ACCOUNT_DATA, 0x3500C1 }, + { Opcode.CMSG_UPDATE_AREA_TRIGGER_VISUAL, 0x300172 }, + { Opcode.CMSG_UPDATE_CLIENT_SETTINGS, 0x35008E }, + { Opcode.CMSG_UPDATE_CRAFTING_NPC_RECIPES, 0x3001DF }, + { Opcode.CMSG_UPDATE_MISSILE_TRAJECTORY, 0x330060 }, + { Opcode.CMSG_UPDATE_RAID_TARGET, 0x35007A }, + { Opcode.CMSG_UPDATE_SPELL_VISUAL, 0x300171 }, + { Opcode.CMSG_UPDATE_VAS_PURCHASE_STATES, 0x35011D }, + { Opcode.CMSG_UPGRADE_GARRISON, 0x300195 }, + { Opcode.CMSG_UPGRADE_RUNEFORGE_LEGENDARY, 0x30028A }, + { Opcode.CMSG_USED_FOLLOW, 0x300030 }, + { Opcode.CMSG_USE_CRITTER_ITEM, 0x300106 }, + { Opcode.CMSG_USE_EQUIPMENT_SET, 0x320001 }, + { Opcode.CMSG_USE_ITEM, 0x30016B }, + { Opcode.CMSG_USE_TOY, 0x30016E }, + { Opcode.CMSG_VAS_CHECK_TRANSFER_OK, 0x350135 }, + { Opcode.CMSG_VAS_GET_QUEUE_MINUTES, 0x350134 }, + { Opcode.CMSG_VAS_GET_SERVICE_STATUS, 0x350133 }, + { Opcode.CMSG_VIOLENCE_LEVEL, 0x30002E }, + { Opcode.CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST, 0x350139 }, + { Opcode.CMSG_VOICE_CHAT_JOIN_CHANNEL, 0x35013A }, + { Opcode.CMSG_VOICE_CHAT_LOGIN, 0x350138 }, + { Opcode.CMSG_VOID_STORAGE_TRANSFER, 0x30004D }, + { Opcode.CMSG_WARDEN3_DATA, 0x350018 }, + { Opcode.CMSG_WHO, 0x3500AB }, + { Opcode.CMSG_WHO_IS, 0x3500AA }, + { Opcode.CMSG_WORLD_LOOT_OBJECT_CLICK, 0x3002CF }, + { Opcode.CMSG_WORLD_PORT_RESPONSE, 0x350025 }, + { Opcode.CMSG_WRAP_ITEM, 0x320000 }, }; private static readonly BiDictionary ServerOpcodes = new() { + { Opcode.SMSG_ABORT_NEW_WORLD, 0x370030 }, + { Opcode.SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS, 0x370340 }, + { Opcode.SMSG_ACCOUNT_CONVERSION_STATE_UPDATE, 0x370345 }, + { Opcode.SMSG_ACCOUNT_COSMETIC_ADDED, 0x3702F9 }, + { Opcode.SMSG_ACCOUNT_CRITERIA_UPDATE, 0x3702E0 }, + { Opcode.SMSG_ACCOUNT_DATA_TIMES, 0x3701A1 }, + { Opcode.SMSG_ACCOUNT_EXPORT_RESPONSE, 0x370331 }, + { Opcode.SMSG_ACCOUNT_HEIRLOOM_UPDATE, 0x370049 }, + { Opcode.SMSG_ACCOUNT_MOUNT_REMOVED, 0x370047 }, + { Opcode.SMSG_ACCOUNT_MOUNT_UPDATE, 0x370046 }, + { Opcode.SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, 0x3702F8 }, + { Opcode.SMSG_ACCOUNT_STORE_CURRENCY_UPDATE, 0x37031A }, + { Opcode.SMSG_ACCOUNT_STORE_FRONT_UPDATE, 0x37031B }, + { Opcode.SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED, 0x37031C }, + { Opcode.SMSG_ACCOUNT_STORE_RESULT, 0x37031D }, + { Opcode.SMSG_ACCOUNT_TOY_UPDATE, 0x370048 }, + { Opcode.SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE, 0x37004C }, + { Opcode.SMSG_ACCOUNT_TRANSMOG_UPDATE, 0x37004B }, + { Opcode.SMSG_ACHIEVEMENT_DELETED, 0x37017F }, + { Opcode.SMSG_ACHIEVEMENT_EARNED, 0x3700D9 }, + { Opcode.SMSG_ACTIVATE_ESSENCE_FAILED, 0x4A001F }, + { Opcode.SMSG_ACTIVATE_SOULBIND_FAILED, 0x4A0021 }, + { Opcode.SMSG_ACTIVATE_TAXI_REPLY, 0x370116 }, + { Opcode.SMSG_ACTIVE_GLYPHS, 0x4D0045 }, + { Opcode.SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO, 0x3701DC }, + { Opcode.SMSG_ADDON_LIST_REQUEST, 0x3700D8 }, + { Opcode.SMSG_ADD_BATTLENET_FRIEND_RESPONSE, 0x3700D3 }, + { Opcode.SMSG_ADD_ITEM_PASSIVE, 0x370042 }, + { Opcode.SMSG_ADD_LOSS_OF_CONTROL, 0x370109 }, + { Opcode.SMSG_ADD_RUNE_POWER, 0x370150 }, + { Opcode.SMSG_ADJUST_SPLINE_DURATION, 0x370068 }, + { Opcode.SMSG_ADVANCED_COMBAT_LOG, 0x3702F5 }, + { Opcode.SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE, 0x3702F0 }, + { Opcode.SMSG_AE_LOOT_TARGETS, 0x3700AE }, + { Opcode.SMSG_AE_LOOT_TARGET_ACK, 0x3700AF }, + { Opcode.SMSG_AI_REACTION, 0x37014D }, + { Opcode.SMSG_ALLIED_RACE_DETAILS, 0x37028A }, + { Opcode.SMSG_ALL_ACCOUNT_CRITERIA, 0x370005 }, + { Opcode.SMSG_ALL_ACHIEVEMENT_DATA, 0x370004 }, + { Opcode.SMSG_ALL_GUILD_ACHIEVEMENTS, 0x430000 }, + { Opcode.SMSG_APPLY_MOUNT_EQUIPMENT_RESULT, 0x3702CD }, + { Opcode.SMSG_ARCHAEOLOGY_SURVERY_CAST, 0x37001D }, + { Opcode.SMSG_AREA_POI_UPDATE_RESPONSE, 0x4A0018 }, + { Opcode.SMSG_AREA_SPIRIT_HEALER_TIME, 0x3701D5 }, + { Opcode.SMSG_AREA_TRIGGER_DENIED, 0x380009 }, + { Opcode.SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING, 0x380006 }, + { Opcode.SMSG_AREA_TRIGGER_NO_CORPSE, 0x3701AD }, + { Opcode.SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL, 0x380004 }, + { Opcode.SMSG_AREA_TRIGGER_RE_PATH, 0x380003 }, + { Opcode.SMSG_AREA_TRIGGER_RE_SHAPE, 0x380008 }, + { Opcode.SMSG_AREA_TRIGGER_UNATTACH, 0x380007 }, + { Opcode.SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES, 0x380005 }, + { Opcode.SMSG_ARENA_CLEAR_OPPONENTS, 0x3700DF }, + { Opcode.SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT, 0x3700C8 }, + { Opcode.SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, 0x3700DE }, + { Opcode.SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED, 0x370237 }, + { Opcode.SMSG_ARTIFACT_FORGE_ERROR, 0x370235 }, + { Opcode.SMSG_ARTIFACT_RESPEC_PROMPT, 0x370236 }, + { Opcode.SMSG_ARTIFACT_XP_GAIN, 0x37027D }, + { Opcode.SMSG_ATTACKER_STATE_UPDATE, 0x3D002C }, + { Opcode.SMSG_ATTACK_START, 0x3D0017 }, + { Opcode.SMSG_ATTACK_STOP, 0x3D0018 }, + { Opcode.SMSG_ATTACK_SWING_ERROR, 0x3D0026 }, + { Opcode.SMSG_ATTACK_SWING_LANDED_LOG, 0x3D0027 }, + { Opcode.SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD, 0x370266 }, + { Opcode.SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE, 0x370265 }, + { Opcode.SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED, 0x370264 }, + { Opcode.SMSG_AUCTION_CLOSED_NOTIFICATION, 0x37018A }, + { Opcode.SMSG_AUCTION_COMMAND_RESULT, 0x370187 }, + { Opcode.SMSG_AUCTION_DISABLE_NEW_POSTINGS, 0x37031E }, + { Opcode.SMSG_AUCTION_FAVORITE_LIST, 0x3702E7 }, + { Opcode.SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT, 0x3702DF }, + { Opcode.SMSG_AUCTION_HELLO_RESPONSE, 0x370185 }, + { Opcode.SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT, 0x3702DE }, + { Opcode.SMSG_AUCTION_LIST_BUCKETS_RESULT, 0x3702DA }, + { Opcode.SMSG_AUCTION_LIST_ITEMS_RESULT, 0x3702DB }, + { Opcode.SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT, 0x3702DD }, + { Opcode.SMSG_AUCTION_OUTBID_NOTIFICATION, 0x370189 }, + { Opcode.SMSG_AUCTION_OWNER_BID_NOTIFICATION, 0x37018B }, + { Opcode.SMSG_AUCTION_REPLICATE_RESPONSE, 0x370186 }, + { Opcode.SMSG_AUCTION_WON_NOTIFICATION, 0x370188 }, + { Opcode.SMSG_AURA_POINTS_DEPLETED, 0x4D0012 }, + { Opcode.SMSG_AURA_UPDATE, 0x4D0011 }, + { Opcode.SMSG_AUTH_CHALLENGE, 0x3E0000 }, + { Opcode.SMSG_AUTH_FAILED, 0x370000 }, + { Opcode.SMSG_AUTH_RESPONSE, 0x370001 }, + { Opcode.SMSG_AVAILABLE_HOTFIXES, 0x3B0001 }, + { Opcode.SMSG_BACKPACK_DEFAULT_SIZE_CHANGED, 0x37031F }, + { Opcode.SMSG_BAG_CLEANUP_FINISHED, 0x4E0007 }, + { Opcode.SMSG_BARBER_SHOP_RESULT, 0x370155 }, + { Opcode.SMSG_BATCH_PRESENCE_SUBSCRIPTION, 0x3702BE }, + { Opcode.SMSG_BATTLEFIELD_LIST, 0x3D0005 }, + { Opcode.SMSG_BATTLEFIELD_PORT_DENIED, 0x3D000B }, + { Opcode.SMSG_BATTLEFIELD_STATUS_ACTIVE, 0x3D0001 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_FAILED, 0x3D0004 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_GROUP_PROPOSAL_FAILED, 0x3D000E }, + { Opcode.SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, 0x3D0000 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_NONE, 0x3D0003 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_QUEUED, 0x3D0002 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS, 0x3D000D }, + { Opcode.SMSG_BATTLEGROUND_INFO_THROTTLED, 0x3D000C }, + { Opcode.SMSG_BATTLEGROUND_INIT, 0x3D0029 }, + { Opcode.SMSG_BATTLEGROUND_PLAYER_JOINED, 0x3D0009 }, + { Opcode.SMSG_BATTLEGROUND_PLAYER_LEFT, 0x3D000A }, + { Opcode.SMSG_BATTLEGROUND_PLAYER_POSITIONS, 0x3D0006 }, + { Opcode.SMSG_BATTLEGROUND_POINTS, 0x3D0028 }, + { Opcode.SMSG_BATTLENET_CHALLENGE_ABORT, 0x37021F }, + { Opcode.SMSG_BATTLENET_CHALLENGE_START, 0x37021E }, + { Opcode.SMSG_BATTLENET_NOTIFICATION, 0x370296 }, + { Opcode.SMSG_BATTLENET_RESPONSE, 0x370295 }, + { Opcode.SMSG_BATTLE_NET_CONNECTION_STATUS, 0x370297 }, + { Opcode.SMSG_BATTLE_PAY_ACK_FAILED, 0x37021A }, + { Opcode.SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED, 0x37020F }, + { Opcode.SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED, 0x370210 }, + { Opcode.SMSG_BATTLE_PAY_CONFIRM_PURCHASE, 0x370219 }, + { Opcode.SMSG_BATTLE_PAY_DELIVERY_ENDED, 0x37020D }, + { Opcode.SMSG_BATTLE_PAY_DELIVERY_STARTED, 0x37020C }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE, 0x3702FE }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED, 0x37020A }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE, 0x37020B }, + { Opcode.SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE, 0x370209 }, + { Opcode.SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE, 0x370207 }, + { Opcode.SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE, 0x370208 }, + { Opcode.SMSG_BATTLE_PAY_MOUNT_DELIVERED, 0x37020E }, + { Opcode.SMSG_BATTLE_PAY_PURCHASE_UPDATE, 0x370218 }, + { Opcode.SMSG_BATTLE_PAY_START_CHECKOUT, 0x3702B2 }, + { Opcode.SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, 0x370216 }, + { Opcode.SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE, 0x370215 }, + { Opcode.SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE, 0x3702A6 }, + { Opcode.SMSG_BATTLE_PETS_HEALED, 0x37008A }, + { Opcode.SMSG_BATTLE_PET_CAGE_DATE_ERROR, 0x370111 }, + { Opcode.SMSG_BATTLE_PET_DELETED, 0x370087 }, + { Opcode.SMSG_BATTLE_PET_ERROR, 0x3700CE }, + { Opcode.SMSG_BATTLE_PET_JOURNAL, 0x370086 }, + { Opcode.SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED, 0x370084 }, + { Opcode.SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED, 0x370085 }, + { Opcode.SMSG_BATTLE_PET_RESTORED, 0x370089 }, + { Opcode.SMSG_BATTLE_PET_REVOKED, 0x370088 }, + { Opcode.SMSG_BATTLE_PET_TRAP_LEVEL, 0x370082 }, + { Opcode.SMSG_BATTLE_PET_UPDATES, 0x370081 }, + { Opcode.SMSG_BIND_POINT_UPDATE, 0x370011 }, + { Opcode.SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT, 0x3700BE }, + { Opcode.SMSG_BLACK_MARKET_OUTBID, 0x3700BF }, + { Opcode.SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT, 0x3700BD }, + { Opcode.SMSG_BLACK_MARKET_WON, 0x3700C0 }, + { Opcode.SMSG_BONUS_ROLL_EMPTY, 0x3700DB }, + { Opcode.SMSG_BOSS_KILL, 0x3D002B }, + { Opcode.SMSG_BREAK_TARGET, 0x3D0016 }, + { Opcode.SMSG_BROADCAST_ACHIEVEMENT, 0x3C0010 }, + { Opcode.SMSG_BROADCAST_SUMMON_CAST, 0x3702C0 }, + { Opcode.SMSG_BROADCAST_SUMMON_RESPONSE, 0x3702C1 }, + { Opcode.SMSG_BUY_FAILED, 0x37015E }, + { Opcode.SMSG_BUY_SUCCEEDED, 0x37015D }, + { Opcode.SMSG_CACHE_INFO, 0x3B000F }, + { Opcode.SMSG_CACHE_VERSION, 0x3B000E }, + { Opcode.SMSG_CALENDAR_CLEAR_PENDING_ACTION, 0x370136 }, + { Opcode.SMSG_CALENDAR_COMMAND_RESULT, 0x370137 }, + { Opcode.SMSG_CALENDAR_COMMUNITY_INVITE, 0x370126 }, + { Opcode.SMSG_CALENDAR_EVENT_REMOVED_ALERT, 0x37012E }, + { Opcode.SMSG_CALENDAR_EVENT_UPDATED_ALERT, 0x37012F }, + { Opcode.SMSG_CALENDAR_INVITE_ADDED, 0x370127 }, + { Opcode.SMSG_CALENDAR_INVITE_ALERT, 0x37012B }, + { Opcode.SMSG_CALENDAR_INVITE_NOTES, 0x370130 }, + { Opcode.SMSG_CALENDAR_INVITE_NOTES_ALERT, 0x370131 }, + { Opcode.SMSG_CALENDAR_INVITE_REMOVED, 0x370128 }, + { Opcode.SMSG_CALENDAR_INVITE_REMOVED_ALERT, 0x37012D }, + { Opcode.SMSG_CALENDAR_INVITE_STATUS, 0x370129 }, + { Opcode.SMSG_CALENDAR_INVITE_STATUS_ALERT, 0x37012C }, + { Opcode.SMSG_CALENDAR_MODERATOR_STATUS, 0x37012A }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_ADDED, 0x370132 }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_REMOVED, 0x370133 }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_UPDATED, 0x370134 }, + { Opcode.SMSG_CALENDAR_SEND_CALENDAR, 0x370124 }, + { Opcode.SMSG_CALENDAR_SEND_EVENT, 0x370125 }, + { Opcode.SMSG_CALENDAR_SEND_NUM_PENDING, 0x370135 }, + { Opcode.SMSG_CAMERA_EFFECT, 0x3701BB }, + { Opcode.SMSG_CANCEL_AUTO_REPEAT, 0x370175 }, + { Opcode.SMSG_CANCEL_COMBAT, 0x3D0025 }, + { Opcode.SMSG_CANCEL_ORPHAN_SPELL_VISUAL, 0x4D0037 }, + { Opcode.SMSG_CANCEL_PING_PIN, 0x37003B }, + { Opcode.SMSG_CANCEL_PRELOAD_WORLD, 0x37002E }, + { Opcode.SMSG_CANCEL_SCENE, 0x3700CD }, + { Opcode.SMSG_CANCEL_SPELL_VISUAL, 0x4D0035 }, + { Opcode.SMSG_CANCEL_SPELL_VISUAL_KIT, 0x4D0039 }, + { Opcode.SMSG_CAN_DUEL_RESULT, 0x3D0021 }, + { Opcode.SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE, 0x3702A5 }, + { Opcode.SMSG_CAPTURE_POINT_REMOVED, 0x3D0008 }, + { Opcode.SMSG_CAST_FAILED, 0x4D0048 }, + { Opcode.SMSG_CAS_REFRESH_REMOTE_DATA, 0x37010F }, + { Opcode.SMSG_CHAIN_MISSILE_BOUNCE, 0x370060 }, + { Opcode.SMSG_CHALLENGE_MODE_COMPLETE, 0x3700A1 }, + { Opcode.SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, 0x3700A6 }, + { Opcode.SMSG_CHALLENGE_MODE_RESET, 0x3700A0 }, + { Opcode.SMSG_CHALLENGE_MODE_START, 0x37009E }, + { Opcode.SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT, 0x37009F }, + { Opcode.SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT, 0x4A000C }, + { Opcode.SMSG_CHANGE_REALM_TICKET_RESPONSE, 0x370298 }, + { Opcode.SMSG_CHANNEL_LIST, 0x3C0019 }, + { Opcode.SMSG_CHANNEL_NOTIFY, 0x3C0015 }, + { Opcode.SMSG_CHANNEL_NOTIFY_JOINED, 0x3C0017 }, + { Opcode.SMSG_CHANNEL_NOTIFY_LEFT, 0x3C0018 }, + { Opcode.SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH, 0x3C0016 }, + { Opcode.SMSG_CHARACTER_CHECK_UPGRADE_RESULT, 0x370252 }, + { Opcode.SMSG_CHARACTER_LOGIN_FAILED, 0x37019C }, + { Opcode.SMSG_CHARACTER_OBJECT_TEST_RESPONSE, 0x37021D }, + { Opcode.SMSG_CHARACTER_RENAME_RESULT, 0x3701F8 }, + { Opcode.SMSG_CHARACTER_UPGRADE_ABORTED, 0x370251 }, + { Opcode.SMSG_CHARACTER_UPGRADE_COMPLETE, 0x370250 }, + { Opcode.SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT, 0x370253 }, + { Opcode.SMSG_CHARACTER_UPGRADE_STARTED, 0x37024F }, + { Opcode.SMSG_CHAR_CUSTOMIZE_FAILURE, 0x370179 }, + { Opcode.SMSG_CHAR_CUSTOMIZE_SUCCESS, 0x37017A }, + { Opcode.SMSG_CHAR_FACTION_CHANGE_RESULT, 0x37023C }, + { Opcode.SMSG_CHAT, 0x3C0001 }, + { Opcode.SMSG_CHAT_AUTO_RESPONDED, 0x3C000C }, + { Opcode.SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE, 0x3C0020 }, + { Opcode.SMSG_CHAT_DOWN, 0x3C0012 }, + { Opcode.SMSG_CHAT_IGNORED_ACCOUNT_MUTED, 0x3C0000 }, + { Opcode.SMSG_CHAT_IS_DOWN, 0x3C0013 }, + { Opcode.SMSG_CHAT_NOT_IN_GUILD, 0x3C0021 }, + { Opcode.SMSG_CHAT_NOT_IN_PARTY, 0x3C0006 }, + { Opcode.SMSG_CHAT_PLAYER_AMBIGUOUS, 0x3C0004 }, + { Opcode.SMSG_CHAT_PLAYER_NOTFOUND, 0x3C000B }, + { Opcode.SMSG_CHAT_RECONNECT, 0x3C0014 }, + { Opcode.SMSG_CHAT_REGIONAL_SERVICE_STATUS, 0x3C001B }, + { Opcode.SMSG_CHAT_RESTRICTED, 0x3C0007 }, + { Opcode.SMSG_CHAT_SERVER_MESSAGE, 0x3C001A }, + { Opcode.SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, 0x4D0002 }, + { Opcode.SMSG_CHECK_ABANDON_NPE, 0x4A0022 }, + { Opcode.SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT, 0x37001B }, + { Opcode.SMSG_CHECK_WARGAME_ENTRY, 0x370027 }, + { Opcode.SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS, 0x3702EA }, + { Opcode.SMSG_CLAIM_RAF_REWARD_RESPONSE, 0x3702D1 }, + { Opcode.SMSG_CLEAR_ALL_SPELL_CHARGES, 0x4D0016 }, + { Opcode.SMSG_CLEAR_BOSS_EMOTES, 0x370053 }, + { Opcode.SMSG_CLEAR_COOLDOWN, 0x370152 }, + { Opcode.SMSG_CLEAR_COOLDOWNS, 0x4D0015 }, + { Opcode.SMSG_CLEAR_RESURRECT, 0x370013 }, + { Opcode.SMSG_CLEAR_SPELL_CHARGES, 0x4D0017 }, + { Opcode.SMSG_CLEAR_TARGET, 0x3D0022 }, + { Opcode.SMSG_CLEAR_TREASURE_PICKER_CACHE, 0x4B0022 }, + { Opcode.SMSG_CLOSE_ARTIFACT_FORGE, 0x370234 }, + { Opcode.SMSG_CLUB_FINDER_ERROR_MESSAGE, 0x3702C9 }, + { Opcode.SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE, 0x3702CC }, + { Opcode.SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST, 0x3702CA }, + { Opcode.SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST, 0x3702C7 }, + { Opcode.SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE, 0x3702CB }, + { Opcode.SMSG_CLUB_FINDER_UPDATE_APPLICATIONS, 0x3702C8 }, + { Opcode.SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE, 0x37030A }, + { Opcode.SMSG_COIN_REMOVED, 0x3700AD }, + { Opcode.SMSG_COMBAT_EVENT_FAILED, 0x3D0019 }, + { Opcode.SMSG_COMMENTATOR_MAP_INFO, 0x37019E }, + { Opcode.SMSG_COMMENTATOR_PLAYER_INFO, 0x37019F }, + { Opcode.SMSG_COMMENTATOR_STATE_CHANGED, 0x37019D }, + { Opcode.SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE, 0x370261 }, + { Opcode.SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE, 0x37026D }, + { Opcode.SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE, 0x370263 }, + { Opcode.SMSG_COMMERCE_TOKEN_UPDATE, 0x370262 }, + { Opcode.SMSG_COMPLAINT_RESULT, 0x370144 }, + { Opcode.SMSG_COMPLETE_SHIPMENT_RESPONSE, 0x37022D }, + { Opcode.SMSG_COMPRESSED_PACKET, 0x3E000A }, + { Opcode.SMSG_CONFIRM_PARTY_INVITE, 0x3702A4 }, + { Opcode.SMSG_CONNECT_TO, 0x3E0005 }, + { Opcode.SMSG_CONSOLE_WRITE, 0x3700CB }, + { Opcode.SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE, 0x370269 }, + { Opcode.SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED, 0x370268 }, + { Opcode.SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE, 0x370267 }, + { Opcode.SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED, 0x37026B }, + { Opcode.SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE, 0x37026C }, + { Opcode.SMSG_CONTACT_LIST, 0x37021B }, + { Opcode.SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE, 0x3702AB }, + { Opcode.SMSG_CONTROL_UPDATE, 0x3700DD }, + { Opcode.SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE, 0x3702F3 }, + { Opcode.SMSG_COOLDOWN_CHEAT, 0x3701CE }, + { Opcode.SMSG_COOLDOWN_EVENT, 0x370151 }, + { Opcode.SMSG_CORPSE_LOCATION, 0x3700E5 }, + { Opcode.SMSG_CORPSE_RECLAIM_DELAY, 0x3701DF }, + { Opcode.SMSG_CORPSE_TRANSPORT_QUERY, 0x3701A9 }, + { Opcode.SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE, 0x4B0024 }, + { Opcode.SMSG_COVENANT_PREVIEW_OPEN_NPC, 0x37028D }, + { Opcode.SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE, 0x3702F4 }, + { Opcode.SMSG_CRAFTING_HOUSE_HELLO_RESPONSE, 0x37032B }, + { Opcode.SMSG_CRAFTING_ORDER_CANCEL_RESULT, 0x370327 }, + { Opcode.SMSG_CRAFTING_ORDER_CLAIM_RESULT, 0x370323 }, + { Opcode.SMSG_CRAFTING_ORDER_CRAFT_RESULT, 0x370325 }, + { Opcode.SMSG_CRAFTING_ORDER_CREATE_RESULT, 0x370321 }, + { Opcode.SMSG_CRAFTING_ORDER_FULFILL_RESULT, 0x370326 }, + { Opcode.SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE, 0x370322 }, + { Opcode.SMSG_CRAFTING_ORDER_NPC_REWARD_INFO, 0x37032D }, + { Opcode.SMSG_CRAFTING_ORDER_REJECT_RESULT, 0x370329 }, + { Opcode.SMSG_CRAFTING_ORDER_RELEASE_RESULT, 0x370324 }, + { Opcode.SMSG_CRAFTING_ORDER_UPDATE_STATE, 0x37032C }, + { Opcode.SMSG_CRAFT_ENCHANT_RESULT, 0x37032A }, + { Opcode.SMSG_CREATE_CHAR, 0x370198 }, + { Opcode.SMSG_CREATE_SHIPMENT_RESPONSE, 0x37022C }, + { Opcode.SMSG_CREATOR_VISUALS_OVERRIDE, 0x370330 }, + { Opcode.SMSG_CRITERIA_DELETED, 0x37017E }, + { Opcode.SMSG_CRITERIA_UPDATE, 0x370178 }, + { Opcode.SMSG_CROSSED_INEBRIATION_THRESHOLD, 0x370159 }, + { Opcode.SMSG_CURRENCY_TRANSFER_LOG, 0x370342 }, + { Opcode.SMSG_CURRENCY_TRANSFER_RESULT, 0x370341 }, + { Opcode.SMSG_CUSTOM_LOAD_SCREEN, 0x370063 }, + { Opcode.SMSG_DAILY_QUESTS_RESET, 0x4B0000 }, + { Opcode.SMSG_DAMAGE_CALC_LOG, 0x4D0054 }, + { Opcode.SMSG_DB_REPLY, 0x3B0000 }, + { Opcode.SMSG_DEATH_RELEASE_LOC, 0x37016B }, + { Opcode.SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE, 0x3700ED }, + { Opcode.SMSG_DEFENSE_MESSAGE, 0x3C000A }, + { Opcode.SMSG_DELETE_CHAR, 0x370199 }, + { Opcode.SMSG_DELETE_EXPIRED_MISSIONS_RESULT, 0x410022 }, + { Opcode.SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED, 0x370347 }, + { Opcode.SMSG_DESTROY_ARENA_UNIT, 0x3701D7 }, + { Opcode.SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 0x370190 }, + { Opcode.SMSG_DIFFERENT_INSTANCE_FROM_PARTY, 0x370020 }, + { Opcode.SMSG_DISENCHANT_CREDIT, 0x37003F }, + { Opcode.SMSG_DISMOUNT_RESULT, 0x370010 }, + { Opcode.SMSG_DISPEL_FAILED, 0x4D001E }, + { Opcode.SMSG_DISPLAY_GAME_ERROR, 0x370035 }, + { Opcode.SMSG_DISPLAY_PLAYER_CHOICE, 0x4A0004 }, + { Opcode.SMSG_DISPLAY_PROMOTION, 0x3700E2 }, + { Opcode.SMSG_DISPLAY_QUEST_POPUP, 0x4B001E }, + { Opcode.SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE, 0x3702F7 }, + { Opcode.SMSG_DISPLAY_TOAST, 0x3700BA }, + { Opcode.SMSG_DISPLAY_WORLD_TEXT, 0x37027E }, + { Opcode.SMSG_DISPLAY_WORLD_TEXT_ON_TARGET, 0x4D0053 }, + { Opcode.SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, 0x370078 }, + { Opcode.SMSG_DROP_NEW_CONNECTION, 0x3E0004 }, + { Opcode.SMSG_DUEL_ARRANGED, 0x3D001B }, + { Opcode.SMSG_DUEL_COMPLETE, 0x3D001F }, + { Opcode.SMSG_DUEL_COUNTDOWN, 0x3D001E }, + { Opcode.SMSG_DUEL_IN_BOUNDS, 0x3D001D }, + { Opcode.SMSG_DUEL_OUT_OF_BOUNDS, 0x3D001C }, + { Opcode.SMSG_DUEL_REQUESTED, 0x3D001A }, + { Opcode.SMSG_DUEL_WINNER, 0x3D0020 }, + { Opcode.SMSG_DURABILITY_DAMAGE_DEATH, 0x3701DA }, + { Opcode.SMSG_EMOTE, 0x370259 }, + { Opcode.SMSG_ENABLE_BARBER_SHOP, 0x370154 }, + { Opcode.SMSG_ENCHANTMENT_LOG, 0x3701AA }, + { Opcode.SMSG_ENCOUNTER_END, 0x370214 }, + { Opcode.SMSG_ENCOUNTER_START, 0x370213 }, + { Opcode.SMSG_END_LIGHTNING_STORM, 0x370141 }, + { Opcode.SMSG_ENTER_ENCRYPTED_MODE, 0x3E0001 }, + { Opcode.SMSG_ENUM_CHARACTERS_RESULT, 0x370018 }, + { Opcode.SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE, 0x370283 }, + { Opcode.SMSG_ENVIRONMENTAL_DAMAGE_LOG, 0x4D000E }, + { Opcode.SMSG_EQUIPMENT_SET_ID, 0x37014A }, + { Opcode.SMSG_EXPECTED_SPAM_RECORDS, 0x3C0005 }, + { Opcode.SMSG_EXPLORATION_EXPERIENCE, 0x3701F4 }, + { Opcode.SMSG_EXTERNAL_TRANSACTION_ID_GENERATED, 0x3702F1 }, + { Opcode.SMSG_FACTION_BONUS_INFO, 0x3701BA }, + { Opcode.SMSG_FAILED_PLAYER_CONDITION, 0x4A0002 }, + { Opcode.SMSG_FAILED_QUEST_TURN_IN, 0x3702A1 }, + { Opcode.SMSG_FEATURE_SYSTEM_STATUS, 0x370057 }, + { Opcode.SMSG_FEATURE_SYSTEM_STATUS2, 0x37033F }, + { Opcode.SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, 0x370058 }, + { Opcode.SMSG_FEIGN_DEATH_RESISTED, 0x3701D9 }, + { Opcode.SMSG_FISH_ESCAPED, 0x370168 }, + { Opcode.SMSG_FISH_NOT_HOOKED, 0x370167 }, + { Opcode.SMSG_FLIGHT_SPLINE_SYNC, 0x48005B }, + { Opcode.SMSG_FLUSH_COMBAT_LOG_FILE, 0x4D0010 }, + { Opcode.SMSG_FORCED_DEATH_UPDATE, 0x37016C }, + { Opcode.SMSG_FORCE_ANIM, 0x3701E6 }, + { Opcode.SMSG_FORCE_ANIMATIONS, 0x3701E7 }, + { Opcode.SMSG_FORCE_OBJECT_RELINK, 0x3700E1 }, + { Opcode.SMSG_FORCE_RANDOM_TRANSMOG_TOAST, 0x37004A }, + { Opcode.SMSG_FORCE_SPAWN_TRACKING_UPDATE, 0x4B0021 }, + { Opcode.SMSG_FRIEND_STATUS, 0x37021C }, + { Opcode.SMSG_GAIN_MAW_POWER, 0x370272 }, + { Opcode.SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, 0x37005B }, + { Opcode.SMSG_GAME_OBJECT_BASE, 0x3702B8 }, + { Opcode.SMSG_GAME_OBJECT_CLOSE_INTERACTION, 0x370309 }, + { Opcode.SMSG_GAME_OBJECT_CUSTOM_ANIM, 0x37005C }, + { Opcode.SMSG_GAME_OBJECT_DESPAWN, 0x37005D }, + { Opcode.SMSG_GAME_OBJECT_INTERACTION, 0x370308 }, + { Opcode.SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, 0x4D003C }, + { Opcode.SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT, 0x4D003B }, + { Opcode.SMSG_GAME_OBJECT_RESET_STATE, 0x3701B4 }, + { Opcode.SMSG_GAME_OBJECT_SET_STATE_LOCAL, 0x370294 }, + { Opcode.SMSG_GAME_SPEED_SET, 0x37011A }, + { Opcode.SMSG_GAME_TIME_SET, 0x3701A3 }, + { Opcode.SMSG_GAME_TIME_UPDATE, 0x3701A2 }, + { Opcode.SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY, 0x410024 }, + { Opcode.SMSG_GARRISON_ADD_EVENT, 0x410048 }, + { Opcode.SMSG_GARRISON_ADD_FOLLOWER_RESULT, 0x410016 }, + { Opcode.SMSG_GARRISON_ADD_MISSION_RESULT, 0x41001A }, + { Opcode.SMSG_GARRISON_ADD_SPEC_GROUPS, 0x41004B }, + { Opcode.SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES, 0x41004F }, + { Opcode.SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT, 0x41002C }, + { Opcode.SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT, 0x410051 }, + { Opcode.SMSG_GARRISON_BUILDING_ACTIVATED, 0x41000B }, + { Opcode.SMSG_GARRISON_BUILDING_REMOVED, 0x410004 }, + { Opcode.SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT, 0x410006 }, + { Opcode.SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT, 0x41001D }, + { Opcode.SMSG_GARRISON_CLEAR_COLLECTION, 0x410047 }, + { Opcode.SMSG_GARRISON_CLEAR_EVENT_LIST, 0x41004A }, + { Opcode.SMSG_GARRISON_CLEAR_SPEC_GROUPS, 0x41004C }, + { Opcode.SMSG_GARRISON_COLLECTION_REMOVE_ENTRY, 0x410046 }, + { Opcode.SMSG_GARRISON_COLLECTION_UPDATE_ENTRY, 0x410045 }, + { Opcode.SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT, 0x41003D }, + { Opcode.SMSG_GARRISON_COMPLETE_MISSION_RESULT, 0x41001C }, + { Opcode.SMSG_GARRISON_CREATE_RESULT, 0x41000C }, + { Opcode.SMSG_GARRISON_DELETE_MISSION_RESULT, 0x410023 }, + { Opcode.SMSG_GARRISON_DELETE_RESULT, 0x410035 }, + { Opcode.SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET, 0x41002B }, + { Opcode.SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS, 0x410029 }, + { Opcode.SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL, 0x410027 }, + { Opcode.SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY, 0x410028 }, + { Opcode.SMSG_GARRISON_FOLLOWER_CHANGED_XP, 0x410026 }, + { Opcode.SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED, 0x41002A }, + { Opcode.SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT, 0x410033 }, + { Opcode.SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT, 0x410015 }, + { Opcode.SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT, 0x41001E }, + { Opcode.SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE, 0x41003F }, + { Opcode.SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 0x410007 }, + { Opcode.SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT, 0x410005 }, + { Opcode.SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT, 0x410040 }, + { Opcode.SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT, 0x410019 }, + { Opcode.SMSG_GARRISON_MAP_DATA_RESPONSE, 0x410042 }, + { Opcode.SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT, 0x410020 }, + { Opcode.SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE, 0x410043 }, + { Opcode.SMSG_GARRISON_MISSION_START_CONDITION_UPDATE, 0x410025 }, + { Opcode.SMSG_GARRISON_OPEN_CRAFTER, 0x410037 }, + { Opcode.SMSG_GARRISON_OPEN_RECRUITMENT_NPC, 0x410030 }, + { Opcode.SMSG_GARRISON_PLACE_BUILDING_RESULT, 0x410003 }, + { Opcode.SMSG_GARRISON_PLOT_PLACED, 0x410001 }, + { Opcode.SMSG_GARRISON_PLOT_REMOVED, 0x410002 }, + { Opcode.SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT, 0x410034 }, + { Opcode.SMSG_GARRISON_REMOTE_INFO, 0x41000A }, + { Opcode.SMSG_GARRISON_REMOVE_EVENT, 0x410049 }, + { Opcode.SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT, 0x41002F }, + { Opcode.SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT, 0x41002D }, + { Opcode.SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, 0x410017 }, + { Opcode.SMSG_GARRISON_RENAME_FOLLOWER_RESULT, 0x41002E }, + { Opcode.SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT, 0x410009 }, + { Opcode.SMSG_GARRISON_RESEARCH_TALENT_RESULT, 0x41000E }, + { Opcode.SMSG_GARRISON_RESET_TALENT_TREE, 0x410013 }, + { Opcode.SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA, 0x410014 }, + { Opcode.SMSG_GARRISON_START_MISSION_RESULT, 0x41001B }, + { Opcode.SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE, 0x41003C }, + { Opcode.SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH, 0x41004D }, + { Opcode.SMSG_GARRISON_TALENT_COMPLETED, 0x41000F }, + { Opcode.SMSG_GARRISON_TALENT_REMOVED, 0x410010 }, + { Opcode.SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA, 0x410012 }, + { Opcode.SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA, 0x410011 }, + { Opcode.SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE, 0x41004E }, + { Opcode.SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT, 0x410008 }, + { Opcode.SMSG_GARRISON_UPDATE_FOLLOWER, 0x410018 }, + { Opcode.SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS, 0x41003E }, + { Opcode.SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT, 0x410050 }, + { Opcode.SMSG_GARRISON_UPGRADE_RESULT, 0x41000D }, + { Opcode.SMSG_GARRISON_USE_RECALL_PORTAL_RESULT, 0x41001F }, + { Opcode.SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT, 0x37001C }, + { Opcode.SMSG_GENERATE_SSO_TOKEN_RESPONSE, 0x3702AC }, + { Opcode.SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT, 0x3701F6 }, + { Opcode.SMSG_GET_GARRISON_INFO_RESULT, 0x410000 }, + { Opcode.SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE, 0x37022F }, + { Opcode.SMSG_GET_REALM_HIDDEN_RESULT, 0x370336 }, + { Opcode.SMSG_GET_REMAINING_GAME_TIME_RESPONSE, 0x37026A }, + { Opcode.SMSG_GET_SELECTED_TROPHY_ID_RESPONSE, 0x370257 }, + { Opcode.SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE, 0x37022E }, + { Opcode.SMSG_GET_SHIPMENT_INFO_RESPONSE, 0x37022A }, + { Opcode.SMSG_GET_TROPHY_LIST_RESPONSE, 0x370256 }, + { Opcode.SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT, 0x37027F }, + { Opcode.SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT, 0x370280 }, + { Opcode.SMSG_GM_PLAYER_INFO, 0x4A000D }, + { Opcode.SMSG_GM_REQUEST_PLAYER_INFO, 0x4A0003 }, + { Opcode.SMSG_GM_TICKET_CASE_STATUS, 0x37013C }, + { Opcode.SMSG_GM_TICKET_SYSTEM_STATUS, 0x37013B }, + { Opcode.SMSG_GOD_MODE, 0x370193 }, + { Opcode.SMSG_GOSSIP_COMPLETE, 0x4B0017 }, + { Opcode.SMSG_GOSSIP_MESSAGE, 0x4B0018 }, + { Opcode.SMSG_GOSSIP_OPTION_NPC_INTERACTION, 0x4B0028 }, + { Opcode.SMSG_GOSSIP_POI, 0x370227 }, + { Opcode.SMSG_GOSSIP_QUEST_UPDATE, 0x4B0019 }, + { Opcode.SMSG_GOSSIP_REFRESH_OPTIONS, 0x4B0027 }, + { Opcode.SMSG_GROUP_ACTION_THROTTLED, 0x370024 }, + { Opcode.SMSG_GROUP_AUTO_KICK, 0x370224 }, + { Opcode.SMSG_GROUP_DECLINE, 0x370220 }, + { Opcode.SMSG_GROUP_DESTROYED, 0x370223 }, + { Opcode.SMSG_GROUP_NEW_LEADER, 0x3700C3 }, + { Opcode.SMSG_GROUP_REQUEST_DECLINE, 0x370221 }, + { Opcode.SMSG_GROUP_UNINVITE, 0x370222 }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_DELETED, 0x43000D }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_EARNED, 0x43000C }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_MEMBERS, 0x43000F }, + { Opcode.SMSG_GUILD_BANK_LOG_QUERY_RESULTS, 0x430027 }, + { Opcode.SMSG_GUILD_BANK_QUERY_RESULTS, 0x430026 }, + { Opcode.SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY, 0x430028 }, + { Opcode.SMSG_GUILD_BANK_TEXT_QUERY_RESULT, 0x43002B }, + { Opcode.SMSG_GUILD_CHALLENGE_COMPLETED, 0x43001B }, + { Opcode.SMSG_GUILD_CHALLENGE_UPDATE, 0x43001A }, + { Opcode.SMSG_GUILD_CHANGE_NAME_RESULT, 0x430025 }, + { Opcode.SMSG_GUILD_COMMAND_RESULT, 0x430002 }, + { Opcode.SMSG_GUILD_CRITERIA_DELETED, 0x43000E }, + { Opcode.SMSG_GUILD_CRITERIA_UPDATE, 0x43000B }, + { Opcode.SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED, 0x430040 }, + { Opcode.SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, 0x43003F }, + { Opcode.SMSG_GUILD_EVENT_DISBANDED, 0x430035 }, + { Opcode.SMSG_GUILD_EVENT_LOG_QUERY_RESULTS, 0x43002A }, + { Opcode.SMSG_GUILD_EVENT_MOTD, 0x430036 }, + { Opcode.SMSG_GUILD_EVENT_NEW_LEADER, 0x430034 }, + { Opcode.SMSG_GUILD_EVENT_PLAYER_JOINED, 0x430032 }, + { Opcode.SMSG_GUILD_EVENT_PLAYER_LEFT, 0x430033 }, + { Opcode.SMSG_GUILD_EVENT_PRESENCE_CHANGE, 0x430037 }, + { Opcode.SMSG_GUILD_EVENT_RANKS_UPDATED, 0x430039 }, + { Opcode.SMSG_GUILD_EVENT_RANK_CHANGED, 0x43003A }, + { Opcode.SMSG_GUILD_EVENT_STATUS_CHANGE, 0x430038 }, + { Opcode.SMSG_GUILD_EVENT_TAB_ADDED, 0x43003B }, + { Opcode.SMSG_GUILD_EVENT_TAB_DELETED, 0x43003C }, + { Opcode.SMSG_GUILD_EVENT_TAB_MODIFIED, 0x43003D }, + { Opcode.SMSG_GUILD_EVENT_TAB_TEXT_CHANGED, 0x43003E }, + { Opcode.SMSG_GUILD_FLAGGED_FOR_RENAME, 0x430024 }, + { Opcode.SMSG_GUILD_HARDCORE_MEMBER_DEATH, 0x430004 }, + { Opcode.SMSG_GUILD_INVITE, 0x430012 }, + { Opcode.SMSG_GUILD_INVITE_DECLINED, 0x430030 }, + { Opcode.SMSG_GUILD_INVITE_EXPIRED, 0x430031 }, + { Opcode.SMSG_GUILD_ITEM_LOOTED_NOTIFY, 0x43001C }, + { Opcode.SMSG_GUILD_KNOWN_RECIPES, 0x430006 }, + { Opcode.SMSG_GUILD_MEMBERS_WITH_RECIPE, 0x430007 }, + { Opcode.SMSG_GUILD_MEMBER_DAILY_RESET, 0x43002C }, + { Opcode.SMSG_GUILD_MEMBER_RECIPES, 0x430005 }, + { Opcode.SMSG_GUILD_MEMBER_UPDATE_NOTE, 0x430011 }, + { Opcode.SMSG_GUILD_MOVED, 0x430022 }, + { Opcode.SMSG_GUILD_MOVE_STARTING, 0x430021 }, + { Opcode.SMSG_GUILD_NAME_CHANGED, 0x430023 }, + { Opcode.SMSG_GUILD_NEWS, 0x430009 }, + { Opcode.SMSG_GUILD_NEWS_DELETED, 0x43000A }, + { Opcode.SMSG_GUILD_PARTY_STATE, 0x430013 }, + { Opcode.SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, 0x430029 }, + { Opcode.SMSG_GUILD_RANKS, 0x430010 }, + { Opcode.SMSG_GUILD_REPUTATION_REACTION_CHANGED, 0x430014 }, + { Opcode.SMSG_GUILD_RESET, 0x430020 }, + { Opcode.SMSG_GUILD_REWARD_LIST, 0x430008 }, + { Opcode.SMSG_GUILD_ROSTER, 0x430003 }, + { Opcode.SMSG_GUILD_SEND_RANK_CHANGE, 0x430001 }, + { Opcode.SMSG_HARDCORE_DEATH_ALERT, 0x37033E }, + { Opcode.SMSG_HEALTH_UPDATE, 0x370169 }, + { Opcode.SMSG_HIGHEST_THREAT_UPDATE, 0x370171 }, + { Opcode.SMSG_HOTFIX_CONNECT, 0x3B0003 }, + { Opcode.SMSG_HOTFIX_MESSAGE, 0x3B0002 }, + { Opcode.SMSG_INITIALIZE_FACTIONS, 0x3701B9 }, + { Opcode.SMSG_INITIAL_SETUP, 0x370014 }, + { Opcode.SMSG_INIT_WORLD_STATES, 0x3701DB }, + { Opcode.SMSG_INSPECT_RESULT, 0x3700C7 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY, 0x370242 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT, 0x370241 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_END, 0x37024A }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT, 0x370240 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE, 0x37024C }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION, 0x37024B }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE, 0x370245 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START, 0x370244 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE, 0x370249 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED, 0x37024D }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_START, 0x370246 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_TIMER_START, 0x370243 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS, 0x370248 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE, 0x370247 }, + { Opcode.SMSG_INSTANCE_GROUP_SIZE_CHANGED, 0x370191 }, + { Opcode.SMSG_INSTANCE_INFO, 0x3700CA }, + { Opcode.SMSG_INSTANCE_RESET, 0x37011F }, + { Opcode.SMSG_INSTANCE_RESET_FAILED, 0x370120 }, + { Opcode.SMSG_INSTANCE_SAVE_CREATED, 0x370212 }, + { Opcode.SMSG_INTERRUPT_POWER_REGEN, 0x4D004A }, + { Opcode.SMSG_INVALIDATE_PAGE_TEXT, 0x3B000A }, + { Opcode.SMSG_INVALIDATE_PLAYER, 0x4A0007 }, + { Opcode.SMSG_INVALID_PROMOTION_CODE, 0x3701E8 }, + { Opcode.SMSG_INVENTORY_CHANGE_FAILURE, 0x4E0005 }, + { Opcode.SMSG_INVENTORY_FIXUP_COMPLETE, 0x3702A3 }, + { Opcode.SMSG_INVENTORY_FULL_OVERFLOW, 0x3702B4 }, + { Opcode.SMSG_ISLAND_AZERITE_GAIN, 0x3701F1 }, + { Opcode.SMSG_ISLAND_COMPLETE, 0x3701F2 }, + { Opcode.SMSG_IS_QUEST_COMPLETE_RESPONSE, 0x4B0004 }, + { Opcode.SMSG_ITEM_CHANGED, 0x370182 }, + { Opcode.SMSG_ITEM_COOLDOWN, 0x370258 }, + { Opcode.SMSG_ITEM_ENCHANT_TIME_UPDATE, 0x3701EA }, + { Opcode.SMSG_ITEM_EXPIRE_PURCHASE_REFUND, 0x370034 }, + { Opcode.SMSG_ITEM_INTERACTION_COMPLETE, 0x3702E9 }, + { Opcode.SMSG_ITEM_PURCHASE_REFUND_RESULT, 0x370032 }, + { Opcode.SMSG_ITEM_PUSH_RESULT, 0x3700B9 }, + { Opcode.SMSG_ITEM_TIME_UPDATE, 0x3701E9 }, + { Opcode.SMSG_KICK_REASON, 0x370122 }, + { Opcode.SMSG_LATENCY_REPORT_PING, 0x3702FA }, + { Opcode.SMSG_LEARNED_SPELLS, 0x4D003E }, + { Opcode.SMSG_LEARN_PVP_TALENT_FAILED, 0x37006C }, + { Opcode.SMSG_LEARN_TALENT_FAILED, 0x37006B }, + { Opcode.SMSG_LEGACY_LOOT_RULES, 0x3702B9 }, + { Opcode.SMSG_LEVEL_LINKING_RESULT, 0x3702CF }, + { Opcode.SMSG_LEVEL_UP_INFO, 0x370180 }, + { Opcode.SMSG_LFG_BOOT_PLAYER, 0x450019 }, + { Opcode.SMSG_LFG_DISABLED, 0x450017 }, + { Opcode.SMSG_LFG_EXPAND_SEARCH_PROMPT, 0x45001F }, + { Opcode.SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN, 0x450009 }, + { Opcode.SMSG_LFG_JOIN_LOBBY_MATCHMAKER_QUEUE, 0x450020 }, + { Opcode.SMSG_LFG_JOIN_RESULT, 0x450000 }, + { Opcode.SMSG_LFG_LIST_APPLICANT_LIST_UPDATE, 0x45000F }, + { Opcode.SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE, 0x45000C }, + { Opcode.SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT, 0x45000D }, + { Opcode.SMSG_LFG_LIST_JOIN_RESULT, 0x450001 }, + { Opcode.SMSG_LFG_LIST_SEARCH_RESULTS, 0x450002 }, + { Opcode.SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE, 0x450010 }, + { Opcode.SMSG_LFG_LIST_SEARCH_STATUS, 0x450003 }, + { Opcode.SMSG_LFG_LIST_UPDATE_BLACKLIST, 0x45000E }, + { Opcode.SMSG_LFG_LIST_UPDATE_EXPIRATION, 0x45000B }, + { Opcode.SMSG_LFG_LIST_UPDATE_STATUS, 0x45000A }, + { Opcode.SMSG_LFG_OFFER_CONTINUE, 0x450018 }, + { Opcode.SMSG_LFG_PARTY_INFO, 0x45001A }, + { Opcode.SMSG_LFG_PLAYER_INFO, 0x45001B }, + { Opcode.SMSG_LFG_PLAYER_REWARD, 0x45001C }, + { Opcode.SMSG_LFG_PROPOSAL_UPDATE, 0x450011 }, + { Opcode.SMSG_LFG_QUEUE_STATUS, 0x450004 }, + { Opcode.SMSG_LFG_READY_CHECK_RESULT, 0x45001E }, + { Opcode.SMSG_LFG_READY_CHECK_UPDATE, 0x450006 }, + { Opcode.SMSG_LFG_ROLE_CHECK_UPDATE, 0x450005 }, + { Opcode.SMSG_LFG_SLOT_INVALID, 0x450014 }, + { Opcode.SMSG_LFG_TELEPORT_DENIED, 0x450016 }, + { Opcode.SMSG_LFG_UPDATE_STATUS, 0x450008 }, + { Opcode.SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, 0x370204 }, + { Opcode.SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, 0x370203 }, + { Opcode.SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, 0x3701F7 }, + { Opcode.SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT, 0x370205 }, + { Opcode.SMSG_LOAD_CUF_PROFILES, 0x370054 }, + { Opcode.SMSG_LOAD_EQUIPMENT_SET, 0x3701A5 }, + { Opcode.SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER, 0x37030B }, + { Opcode.SMSG_LOBBY_MATCHMAKER_PARTY_INFO, 0x37030C }, + { Opcode.SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED, 0x37030D }, + { Opcode.SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED, 0x37030F }, + { Opcode.SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT, 0x370310 }, + { Opcode.SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE, 0x37030E }, + { Opcode.SMSG_LOGIN_SET_TIME_SPEED, 0x3701A4 }, + { Opcode.SMSG_LOGIN_VERIFY_WORLD, 0x37002F }, + { Opcode.SMSG_LOGOUT_CANCEL_ACK, 0x37011E }, + { Opcode.SMSG_LOGOUT_COMPLETE, 0x37011D }, + { Opcode.SMSG_LOGOUT_RESPONSE, 0x37011C }, + { Opcode.SMSG_LOG_XP_GAIN, 0x37017C }, + { Opcode.SMSG_LOOT_ALL_PASSED, 0x3700B7 }, + { Opcode.SMSG_LOOT_LIST, 0x3701D6 }, + { Opcode.SMSG_LOOT_MONEY_NOTIFY, 0x3700B2 }, + { Opcode.SMSG_LOOT_RELEASE, 0x3700B1 }, + { Opcode.SMSG_LOOT_RELEASE_ALL, 0x3700B0 }, + { Opcode.SMSG_LOOT_REMOVED, 0x3700AC }, + { Opcode.SMSG_LOOT_RESPONSE, 0x3700AB }, + { Opcode.SMSG_LOOT_ROLL, 0x3700B4 }, + { Opcode.SMSG_LOOT_ROLLS_COMPLETE, 0x3700B6 }, + { Opcode.SMSG_LOOT_ROLL_WON, 0x3700B8 }, + { Opcode.SMSG_LOSS_OF_CONTROL_AURA_UPDATE, 0x370108 }, + { Opcode.SMSG_MAIL_COMMAND_RESULT, 0x3700D1 }, + { Opcode.SMSG_MAIL_LIST_RESULT, 0x3701EB }, + { Opcode.SMSG_MAIL_QUERY_NEXT_TIME_RESULT, 0x3701EC }, + { Opcode.SMSG_MAP_OBJECTIVES_INIT, 0x3D002A }, + { Opcode.SMSG_MAP_OBJ_EVENTS, 0x37005E }, + { Opcode.SMSG_MASTER_LOOT_CANDIDATE_LIST, 0x3700B5 }, + { Opcode.SMSG_MEETING_STONE_FAILED, 0x370311 }, + { Opcode.SMSG_MESSAGE_BOX, 0x37000A }, + { Opcode.SMSG_MINIMAP_PING, 0x370166 }, + { Opcode.SMSG_MIRROR_IMAGE_COMPONENTED_DATA, 0x4D0004 }, + { Opcode.SMSG_MIRROR_IMAGE_CREATURE_DATA, 0x4D0003 }, + { Opcode.SMSG_MISSILE_CANCEL, 0x37005F }, + { Opcode.SMSG_MODIFY_COOLDOWN, 0x3701F9 }, + { Opcode.SMSG_MOUNT_RESULT, 0x37000F }, + { Opcode.SMSG_MOVEMENT_ENFORCEMENT_ALERT, 0x3702BF }, + { Opcode.SMSG_MOVE_ADD_IMPULSE, 0x480062 }, + { Opcode.SMSG_MOVE_APPLY_INERTIA, 0x48005E }, + { Opcode.SMSG_MOVE_APPLY_MOVEMENT_FORCE, 0x480045 }, + { Opcode.SMSG_MOVE_DISABLE_COLLISION, 0x480041 }, + { Opcode.SMSG_MOVE_DISABLE_DOUBLE_JUMP, 0x48002B }, + { Opcode.SMSG_MOVE_DISABLE_FULL_SPEED_TURNING, 0x480075 }, + { Opcode.SMSG_MOVE_DISABLE_GRAVITY, 0x48003D }, + { Opcode.SMSG_MOVE_DISABLE_INERTIA, 0x48003F }, + { Opcode.SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 0x48003C }, + { Opcode.SMSG_MOVE_ENABLE_COLLISION, 0x480042 }, + { Opcode.SMSG_MOVE_ENABLE_DOUBLE_JUMP, 0x48002A }, + { Opcode.SMSG_MOVE_ENABLE_FULL_SPEED_TURNING, 0x480074 }, + { Opcode.SMSG_MOVE_ENABLE_GRAVITY, 0x48003E }, + { Opcode.SMSG_MOVE_ENABLE_INERTIA, 0x480040 }, + { Opcode.SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 0x48003B }, + { Opcode.SMSG_MOVE_KNOCK_BACK, 0x480031 }, + { Opcode.SMSG_MOVE_REMOVE_INERTIA, 0x48005F }, + { Opcode.SMSG_MOVE_REMOVE_MOVEMENT_FORCE, 0x480046 }, + { Opcode.SMSG_MOVE_ROOT, 0x480027 }, + { Opcode.SMSG_MOVE_SET_ACTIVE_MOVER, 0x480003 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED, 0x48006B }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION, 0x480066 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_BANKING_RATE, 0x48006C }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD, 0x480069 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT, 0x48006A }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT, 0x480072 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT, 0x480068 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_MAX_VEL, 0x480067 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION, 0x480071 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN, 0x48006D }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP, 0x48006E }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION, 0x480070 }, + { Opcode.SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD, 0x48006F }, + { Opcode.SMSG_MOVE_SET_CANT_SWIM, 0x480035 }, + { Opcode.SMSG_MOVE_SET_CAN_ADV_FLY, 0x480064 }, + { Opcode.SMSG_MOVE_SET_CAN_FLY, 0x480033 }, + { Opcode.SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING, 0x480037 }, + { Opcode.SMSG_MOVE_SET_COLLISION_HEIGHT, 0x480043 }, + { Opcode.SMSG_MOVE_SET_COMPOUND_STATE, 0x480047 }, + { Opcode.SMSG_MOVE_SET_FEATHER_FALL, 0x48002D }, + { Opcode.SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 0x480023 }, + { Opcode.SMSG_MOVE_SET_FLIGHT_SPEED, 0x480022 }, + { Opcode.SMSG_MOVE_SET_HOVERING, 0x48002F }, + { Opcode.SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, 0x480039 }, + { Opcode.SMSG_MOVE_SET_LAND_WALK, 0x48002C }, + { Opcode.SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE, 0x480014 }, + { Opcode.SMSG_MOVE_SET_NORMAL_FALL, 0x48002E }, + { Opcode.SMSG_MOVE_SET_PITCH_RATE, 0x480026 }, + { Opcode.SMSG_MOVE_SET_RUN_BACK_SPEED, 0x48001F }, + { Opcode.SMSG_MOVE_SET_RUN_SPEED, 0x48001E }, + { Opcode.SMSG_MOVE_SET_SWIM_BACK_SPEED, 0x480021 }, + { Opcode.SMSG_MOVE_SET_SWIM_SPEED, 0x480020 }, + { Opcode.SMSG_MOVE_SET_TURN_RATE, 0x480025 }, + { Opcode.SMSG_MOVE_SET_VEHICLE_REC_ID, 0x480044 }, + { Opcode.SMSG_MOVE_SET_WALK_SPEED, 0x480024 }, + { Opcode.SMSG_MOVE_SET_WATER_WALK, 0x480029 }, + { Opcode.SMSG_MOVE_SKIP_TIME, 0x480048 }, + { Opcode.SMSG_MOVE_SPLINE_DISABLE_COLLISION, 0x48004D }, + { Opcode.SMSG_MOVE_SPLINE_DISABLE_GRAVITY, 0x48004B }, + { Opcode.SMSG_MOVE_SPLINE_ENABLE_COLLISION, 0x48004E }, + { Opcode.SMSG_MOVE_SPLINE_ENABLE_GRAVITY, 0x48004C }, + { Opcode.SMSG_MOVE_SPLINE_ROOT, 0x480049 }, + { Opcode.SMSG_MOVE_SPLINE_SET_FEATHER_FALL, 0x48004F }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED, 0x48001A }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED, 0x480019 }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLYING, 0x480059 }, + { Opcode.SMSG_MOVE_SPLINE_SET_HOVER, 0x480051 }, + { Opcode.SMSG_MOVE_SPLINE_SET_LAND_WALK, 0x480054 }, + { Opcode.SMSG_MOVE_SPLINE_SET_NORMAL_FALL, 0x480050 }, + { Opcode.SMSG_MOVE_SPLINE_SET_PITCH_RATE, 0x48001D }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED, 0x480016 }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_MODE, 0x480057 }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_SPEED, 0x480015 }, + { Opcode.SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED, 0x480018 }, + { Opcode.SMSG_MOVE_SPLINE_SET_SWIM_SPEED, 0x480017 }, + { Opcode.SMSG_MOVE_SPLINE_SET_TURN_RATE, 0x48001C }, + { Opcode.SMSG_MOVE_SPLINE_SET_WALK_MODE, 0x480058 }, + { Opcode.SMSG_MOVE_SPLINE_SET_WALK_SPEED, 0x48001B }, + { Opcode.SMSG_MOVE_SPLINE_SET_WATER_WALK, 0x480053 }, + { Opcode.SMSG_MOVE_SPLINE_START_SWIM, 0x480055 }, + { Opcode.SMSG_MOVE_SPLINE_STOP_SWIM, 0x480056 }, + { Opcode.SMSG_MOVE_SPLINE_UNROOT, 0x48004A }, + { Opcode.SMSG_MOVE_SPLINE_UNSET_FLYING, 0x48005A }, + { Opcode.SMSG_MOVE_SPLINE_UNSET_HOVER, 0x480052 }, + { Opcode.SMSG_MOVE_TELEPORT, 0x480032 }, + { Opcode.SMSG_MOVE_UNROOT, 0x480028 }, + { Opcode.SMSG_MOVE_UNSET_CANT_SWIM, 0x480036 }, + { Opcode.SMSG_MOVE_UNSET_CAN_ADV_FLY, 0x480065 }, + { Opcode.SMSG_MOVE_UNSET_CAN_FLY, 0x480034 }, + { Opcode.SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING, 0x480038 }, + { Opcode.SMSG_MOVE_UNSET_HOVERING, 0x480030 }, + { Opcode.SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES, 0x48003A }, + { Opcode.SMSG_MOVE_UPDATE, 0x48000E }, + { Opcode.SMSG_MOVE_UPDATE_ADD_IMPULSE, 0x480063 }, + { Opcode.SMSG_MOVE_UPDATE_APPLY_INERTIA, 0x480060 }, + { Opcode.SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE, 0x480012 }, + { Opcode.SMSG_MOVE_UPDATE_COLLISION_HEIGHT, 0x48000D }, + { Opcode.SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, 0x48000A }, + { Opcode.SMSG_MOVE_UPDATE_FLIGHT_SPEED, 0x480009 }, + { Opcode.SMSG_MOVE_UPDATE_KNOCK_BACK, 0x480010 }, + { Opcode.SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE, 0x480011 }, + { Opcode.SMSG_MOVE_UPDATE_PITCH_RATE, 0x48000C }, + { Opcode.SMSG_MOVE_UPDATE_REMOVE_INERTIA, 0x480061 }, + { Opcode.SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, 0x480013 }, + { Opcode.SMSG_MOVE_UPDATE_RUN_BACK_SPEED, 0x480005 }, + { Opcode.SMSG_MOVE_UPDATE_RUN_SPEED, 0x480004 }, + { Opcode.SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, 0x480008 }, + { Opcode.SMSG_MOVE_UPDATE_SWIM_SPEED, 0x480007 }, + { Opcode.SMSG_MOVE_UPDATE_TELEPORT, 0x48000F }, + { Opcode.SMSG_MOVE_UPDATE_TURN_RATE, 0x48000B }, + { Opcode.SMSG_MOVE_UPDATE_WALK_SPEED, 0x480006 }, + { Opcode.SMSG_MULTIPLE_PACKETS, 0x3E0009 }, + { Opcode.SMSG_MULTI_FLOOR_LEAVE_FLOOR, 0x37026F }, + { Opcode.SMSG_MULTI_FLOOR_NEW_FLOOR, 0x37026E }, + { Opcode.SMSG_MYTHIC_PLUS_ALL_MAP_STATS, 0x3700A2 }, + { Opcode.SMSG_MYTHIC_PLUS_CURRENT_AFFIXES, 0x3700A4 }, + { Opcode.SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD, 0x3700A8 }, + { Opcode.SMSG_MYTHIC_PLUS_SEASON_DATA, 0x3700A3 }, + { Opcode.SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, 0x370073 }, + { Opcode.SMSG_NEW_DATA_BUILD, 0x370335 }, + { Opcode.SMSG_NEW_TAXI_PATH, 0x370117 }, + { Opcode.SMSG_NEW_WORLD, 0x37002B }, + { Opcode.SMSG_NOTIFY_DEST_LOC_SPELL_CAST, 0x4D0034 }, + { Opcode.SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, 0x370143 }, + { Opcode.SMSG_NOTIFY_MONEY, 0x370031 }, + { Opcode.SMSG_NOTIFY_RECEIVED_MAIL, 0x3700D2 }, + { Opcode.SMSG_NPC_INTERACTION_OPEN_RESULT, 0x370307 }, + { Opcode.SMSG_OFFER_PETITION_ERROR, 0x37014E }, + { Opcode.SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, 0x37017D }, + { Opcode.SMSG_ON_MONSTER_MOVE, 0x480002 }, + { Opcode.SMSG_OPEN_ARTIFACT_FORGE, 0x370233 }, + { Opcode.SMSG_OPEN_CONTAINER, 0x4E0006 }, + { Opcode.SMSG_OPEN_LFG_DUNGEON_FINDER, 0x450015 }, + { Opcode.SMSG_OPEN_SHIPMENT_NPC_RESULT, 0x37022B }, + { Opcode.SMSG_OVERRIDE_LIGHT, 0x370153 }, + { Opcode.SMSG_PAGE_TEXT, 0x3701B0 }, + { Opcode.SMSG_PARTY_COMMAND_RESULT, 0x370225 }, + { Opcode.SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE, 0x37034A }, + { Opcode.SMSG_PARTY_INVITE, 0x370055 }, + { Opcode.SMSG_PARTY_KILL_LOG, 0x3701EF }, + { Opcode.SMSG_PARTY_MEMBER_FULL_STATE, 0x3701EE }, + { Opcode.SMSG_PARTY_MEMBER_PARTIAL_STATE, 0x3701ED }, + { Opcode.SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE, 0x3702EF }, + { Opcode.SMSG_PARTY_UPDATE, 0x37008B }, + { Opcode.SMSG_PAST_TIME_EVENTS, 0x37005A }, + { Opcode.SMSG_PAUSE_MIRROR_TIMER, 0x3701A7 }, + { Opcode.SMSG_PENDING_RAID_LOCK, 0x37018F }, + { Opcode.SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE, 0x370304 }, + { Opcode.SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE, 0x370300 }, + { Opcode.SMSG_PERKS_PROGRAM_DISABLED, 0x370305 }, + { Opcode.SMSG_PERKS_PROGRAM_RESULT, 0x370301 }, + { Opcode.SMSG_PERKS_PROGRAM_VENDOR_UPDATE, 0x3702FF }, + { Opcode.SMSG_PETITION_ALREADY_SIGNED, 0x370037 }, + { Opcode.SMSG_PETITION_RENAME_GUILD_RESPONSE, 0x430042 }, + { Opcode.SMSG_PETITION_SHOW_LIST, 0x370156 }, + { Opcode.SMSG_PETITION_SHOW_SIGNATURES, 0x370157 }, + { Opcode.SMSG_PETITION_SIGN_RESULTS, 0x3701E1 }, + { Opcode.SMSG_PET_ACTION_FEEDBACK, 0x3701DE }, + { Opcode.SMSG_PET_ACTION_SOUND, 0x370139 }, + { Opcode.SMSG_PET_BATTLE_CHAT_RESTRICTED, 0x370099 }, + { Opcode.SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE, 0x37010D }, + { Opcode.SMSG_PET_BATTLE_FINALIZE_LOCATION, 0x370092 }, + { Opcode.SMSG_PET_BATTLE_FINAL_ROUND, 0x370097 }, + { Opcode.SMSG_PET_BATTLE_FINISHED, 0x370098 }, + { Opcode.SMSG_PET_BATTLE_FIRST_ROUND, 0x370094 }, + { Opcode.SMSG_PET_BATTLE_INITIAL_UPDATE, 0x370093 }, + { Opcode.SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING, 0x37009A }, + { Opcode.SMSG_PET_BATTLE_PVP_CHALLENGE, 0x370091 }, + { Opcode.SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH, 0x3700CF }, + { Opcode.SMSG_PET_BATTLE_QUEUE_STATUS, 0x3700D0 }, + { Opcode.SMSG_PET_BATTLE_REPLACEMENTS_MADE, 0x370096 }, + { Opcode.SMSG_PET_BATTLE_REQUEST_FAILED, 0x370090 }, + { Opcode.SMSG_PET_BATTLE_ROUND_RESULT, 0x370095 }, + { Opcode.SMSG_PET_BATTLE_SLOT_UPDATES, 0x370083 }, + { Opcode.SMSG_PET_CAST_FAILED, 0x4D0049 }, + { Opcode.SMSG_PET_CLEAR_SPELLS, 0x4D0013 }, + { Opcode.SMSG_PET_DISMISS_SOUND, 0x37013A }, + { Opcode.SMSG_PET_GOD_MODE, 0x370114 }, + { Opcode.SMSG_PET_GUIDS, 0x37019B }, + { Opcode.SMSG_PET_LEARNED_SPELLS, 0x4D0040 }, + { Opcode.SMSG_PET_MODE, 0x37001F }, + { Opcode.SMSG_PET_NAME_INVALID, 0x37015B }, + { Opcode.SMSG_PET_NEWLY_TAMED, 0x37001E }, + { Opcode.SMSG_PET_SPELLS_MESSAGE, 0x4D0014 }, + { Opcode.SMSG_PET_STABLE_RESULT, 0x37002A }, + { Opcode.SMSG_PET_TAME_FAILURE, 0x37014B }, + { Opcode.SMSG_PET_UNLEARNED_SPELLS, 0x4D0041 }, + { Opcode.SMSG_PHASE_SHIFT_CHANGE, 0x37000C }, + { Opcode.SMSG_PLAYED_TIME, 0x37016D }, + { Opcode.SMSG_PLAYER_ACKNOWLEDGE_ARROW_CALLOUT, 0x4A002C }, + { Opcode.SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED, 0x4A001E }, + { Opcode.SMSG_PLAYER_AZERITE_ITEM_GAINS, 0x4A001D }, + { Opcode.SMSG_PLAYER_BONUS_ROLL_FAILED, 0x4A0020 }, + { Opcode.SMSG_PLAYER_BOUND, 0x4A0000 }, + { Opcode.SMSG_PLAYER_CHOICE_CLEAR, 0x4A0006 }, + { Opcode.SMSG_PLAYER_CHOICE_DISPLAY_ERROR, 0x4A0005 }, + { Opcode.SMSG_PLAYER_CONDITION_RESULT, 0x4A0012 }, + { Opcode.SMSG_PLAYER_END_OF_MATCH_DETAILS, 0x4A002E }, + { Opcode.SMSG_PLAYER_HIDE_ARROW_CALLOUT, 0x4A002B }, + { Opcode.SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, 0x4A0011 }, + { Opcode.SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL, 0x4A0016 }, + { Opcode.SMSG_PLAYER_SAVE_GUILD_EMBLEM, 0x430041 }, + { Opcode.SMSG_PLAYER_SAVE_PERSONAL_EMBLEM, 0x4A002D }, + { Opcode.SMSG_PLAYER_SHOW_ARROW_CALLOUT, 0x4A002A }, + { Opcode.SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY, 0x4A0028 }, + { Opcode.SMSG_PLAYER_SHOW_PARTY_POSE_UI, 0x4A0029 }, + { Opcode.SMSG_PLAYER_SHOW_UI_EVENT_TOAST, 0x4A0023 }, + { Opcode.SMSG_PLAYER_SKINNED, 0x4A000E }, + { Opcode.SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL, 0x4A0015 }, + { Opcode.SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL, 0x4A0014 }, + { Opcode.SMSG_PLAY_MUSIC, 0x3701FE }, + { Opcode.SMSG_PLAY_OBJECT_SOUND, 0x370200 }, + { Opcode.SMSG_PLAY_ONE_SHOT_ANIM_KIT, 0x3701C6 }, + { Opcode.SMSG_PLAY_ORPHAN_SPELL_VISUAL, 0x4D0038 }, + { Opcode.SMSG_PLAY_SCENE, 0x3700CC }, + { Opcode.SMSG_PLAY_SOUND, 0x3701FD }, + { Opcode.SMSG_PLAY_SPEAKERBOT_SOUND, 0x370201 }, + { Opcode.SMSG_PLAY_SPELL_VISUAL, 0x4D0036 }, + { Opcode.SMSG_PLAY_SPELL_VISUAL_KIT, 0x4D003A }, + { Opcode.SMSG_PLAY_TIME_WARNING, 0x370195 }, + { Opcode.SMSG_PONG, 0x3E0006 }, + { Opcode.SMSG_POWER_UPDATE, 0x37016A }, + { Opcode.SMSG_PRELOAD_CHILD_MAP, 0x37000D }, + { Opcode.SMSG_PRELOAD_WORLD, 0x37002C }, + { Opcode.SMSG_PREPOPULATE_NAME_CACHE, 0x3702C2 }, + { Opcode.SMSG_PRE_RESSURECT, 0x3701FC }, + { Opcode.SMSG_PRINT_NOTIFICATION, 0x370062 }, + { Opcode.SMSG_PROC_RESIST, 0x3701F0 }, + { Opcode.SMSG_PROFESSION_GOSSIP, 0x37028F }, + { Opcode.SMSG_PUSH_SPELL_TO_ACTION_BAR, 0x4D0042 }, + { Opcode.SMSG_PVP_CREDIT, 0x3D0024 }, + { Opcode.SMSG_PVP_MATCH_COMPLETE, 0x3D002F }, + { Opcode.SMSG_PVP_MATCH_INITIALIZE, 0x3D0030 }, + { Opcode.SMSG_PVP_MATCH_SET_STATE, 0x3D002E }, + { Opcode.SMSG_PVP_MATCH_START, 0x3D002D }, + { Opcode.SMSG_PVP_MATCH_STATISTICS, 0x3D0010 }, + { Opcode.SMSG_PVP_OPTIONS_ENABLED, 0x3D0013 }, + { Opcode.SMSG_PVP_TIER_RECORD, 0x3702FB }, + { Opcode.SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, 0x3B000C }, + { Opcode.SMSG_QUERY_CREATURE_RESPONSE, 0x3B0006 }, + { Opcode.SMSG_QUERY_GAME_OBJECT_RESPONSE, 0x3B0007 }, + { Opcode.SMSG_QUERY_GARRISON_PET_NAME_RESPONSE, 0x410041 }, + { Opcode.SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE, 0x43002F }, + { Opcode.SMSG_QUERY_GUILD_INFO_RESPONSE, 0x43002D }, + { Opcode.SMSG_QUERY_ITEM_TEXT_RESPONSE, 0x3B0010 }, + { Opcode.SMSG_QUERY_NPC_TEXT_RESPONSE, 0x3B0008 }, + { Opcode.SMSG_QUERY_PAGE_TEXT_RESPONSE, 0x3B0009 }, + { Opcode.SMSG_QUERY_PETITION_RESPONSE, 0x3B000D }, + { Opcode.SMSG_QUERY_PET_NAME_RESPONSE, 0x3B000B }, + { Opcode.SMSG_QUERY_PLAYER_NAMES_RESPONSE, 0x4A0025 }, + { Opcode.SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE, 0x4A000A }, + { Opcode.SMSG_QUERY_QUEST_INFO_RESPONSE, 0x4B0016 }, + { Opcode.SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE, 0x43002E }, + { Opcode.SMSG_QUERY_TIME_RESPONSE, 0x37017B }, + { Opcode.SMSG_QUEST_COMPLETION_NPC_RESPONSE, 0x4B0001 }, + { Opcode.SMSG_QUEST_CONFIRM_ACCEPT, 0x4B000F }, + { Opcode.SMSG_QUEST_FORCE_REMOVED, 0x4B001C }, + { Opcode.SMSG_QUEST_GIVER_INVALID_QUEST, 0x4B0005 }, + { Opcode.SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, 0x4B0014 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_COMPLETE, 0x4B0003 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_DETAILS, 0x4B0012 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_FAILED, 0x4B0006 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE, 0x4B001A }, + { Opcode.SMSG_QUEST_GIVER_REQUEST_ITEMS, 0x4B0013 }, + { Opcode.SMSG_QUEST_GIVER_STATUS, 0x4B001B }, + { Opcode.SMSG_QUEST_GIVER_STATUS_MULTIPLE, 0x4B0011 }, + { Opcode.SMSG_QUEST_ITEM_USABILITY_RESPONSE, 0x4B0002 }, + { Opcode.SMSG_QUEST_LOG_FULL, 0x4B0007 }, + { Opcode.SMSG_QUEST_NON_LOG_UPDATE_COMPLETE, 0x4B0008 }, + { Opcode.SMSG_QUEST_POI_QUERY_RESPONSE, 0x4B001D }, + { Opcode.SMSG_QUEST_POI_UPDATE_RESPONSE, 0x4B001F }, + { Opcode.SMSG_QUEST_PUSH_RESULT, 0x4B0010 }, + { Opcode.SMSG_QUEST_SESSION_INFO_RESPONSE, 0x3702E5 }, + { Opcode.SMSG_QUEST_SESSION_READY_CHECK, 0x3702D3 }, + { Opcode.SMSG_QUEST_SESSION_READY_CHECK_RESPONSE, 0x3702D4 }, + { Opcode.SMSG_QUEST_SESSION_RESULT, 0x3702D2 }, + { Opcode.SMSG_QUEST_UPDATE_ADD_CREDIT, 0x4B000C }, + { Opcode.SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, 0x4B000D }, + { Opcode.SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, 0x4B000E }, + { Opcode.SMSG_QUEST_UPDATE_COMPLETE, 0x4B0009 }, + { Opcode.SMSG_QUEST_UPDATE_FAILED, 0x4B000A }, + { Opcode.SMSG_QUEST_UPDATE_FAILED_TIMER, 0x4B000B }, + { Opcode.SMSG_QUEUE_SUMMARY_UPDATE, 0x3702A2 }, + { Opcode.SMSG_RAF_ACCOUNT_INFO, 0x3702D0 }, + { Opcode.SMSG_RAF_ACTIVITY_STATE_CHANGED, 0x3702E1 }, + { Opcode.SMSG_RAF_DEBUG_FRIEND_MONTHS, 0x370332 }, + { Opcode.SMSG_RAID_DIFFICULTY_SET, 0x37023D }, + { Opcode.SMSG_RAID_GROUP_ONLY, 0x37023F }, + { Opcode.SMSG_RAID_INSTANCE_MESSAGE, 0x3C0008 }, + { Opcode.SMSG_RAID_MARKERS_CHANGED, 0x370038 }, + { Opcode.SMSG_RANDOM_ROLL, 0x3700C6 }, + { Opcode.SMSG_RATED_PVP_INFO, 0x3D000F }, + { Opcode.SMSG_READY_CHECK_COMPLETED, 0x37008F }, + { Opcode.SMSG_READY_CHECK_RESPONSE, 0x37008E }, + { Opcode.SMSG_READY_CHECK_STARTED, 0x37008D }, + { Opcode.SMSG_READ_ITEM_RESULT_FAILED, 0x370239 }, + { Opcode.SMSG_READ_ITEM_RESULT_OK, 0x370230 }, + { Opcode.SMSG_REALM_QUERY_RESPONSE, 0x3B0005 }, + { Opcode.SMSG_REATTACH_RESURRECT, 0x3701E0 }, + { Opcode.SMSG_RECEIVE_PING_UNIT, 0x370039 }, + { Opcode.SMSG_RECEIVE_PING_WORLD_POINT, 0x37003A }, + { Opcode.SMSG_RECRAFT_ITEM_RESULT, 0x370328 }, + { Opcode.SMSG_RECRUIT_A_FRIEND_FAILURE, 0x370158 }, + { Opcode.SMSG_REFRESH_COMPONENT, 0x3700E7 }, + { Opcode.SMSG_REGIONWIDE_CHARACTER_MAIL_DATA, 0x37001A }, + { Opcode.SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA, 0x370019 }, + { Opcode.SMSG_REMOVE_ITEM_PASSIVE, 0x370043 }, + { Opcode.SMSG_REMOVE_SPELL_FROM_ACTION_BAR, 0x4D0043 }, + { Opcode.SMSG_REPLACE_TROPHY_RESPONSE, 0x370255 }, + { Opcode.SMSG_REPORT_PVP_PLAYER_AFK_RESULT, 0x4A0009 }, + { Opcode.SMSG_REQUEST_CEMETERY_LIST_RESPONSE, 0x370025 }, + { Opcode.SMSG_REQUEST_PVP_REWARDS_RESPONSE, 0x3D0014 }, + { Opcode.SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE, 0x3D0015 }, + { Opcode.SMSG_RESET_COMPRESSION_CONTEXT, 0x3E0007 }, + { Opcode.SMSG_RESET_FAILED_NOTIFY, 0x37014F }, + { Opcode.SMSG_RESET_LAST_LOADED_CONFIG_CVARS, 0x37032F }, + { Opcode.SMSG_RESET_QUEST_POI, 0x4B0020 }, + { Opcode.SMSG_RESET_RANGED_COMBAT_TIMER, 0x3D0023 }, + { Opcode.SMSG_RESET_WEEKLY_CURRENCY, 0x370009 }, + { Opcode.SMSG_RESPEC_WIPE_CONFIRM, 0x3700A9 }, + { Opcode.SMSG_RESPOND_INSPECT_ACHIEVEMENTS, 0x370006 }, + { Opcode.SMSG_RESPONSE_PERK_PENDING_REWARDS, 0x370302 }, + { Opcode.SMSG_RESPONSE_PERK_RECENT_PURCHASES, 0x370303 }, + { Opcode.SMSG_RESTART_GLOBAL_COOLDOWN, 0x4D0052 }, + { Opcode.SMSG_RESTRICTED_ACCOUNT_WARNING, 0x370051 }, + { Opcode.SMSG_RESUME_CAST, 0x4D002C }, + { Opcode.SMSG_RESUME_CAST_BAR, 0x4D002F }, + { Opcode.SMSG_RESUME_COMMS, 0x3E0003 }, + { Opcode.SMSG_RESUME_TOKEN, 0x370041 }, + { Opcode.SMSG_RESURRECT_REQUEST, 0x370012 }, + { Opcode.SMSG_RESYNC_RUNES, 0x4D0050 }, + { Opcode.SMSG_RETURNING_PLAYER_PROMPT, 0x370238 }, + { Opcode.SMSG_RETURN_APPLICANT_LIST, 0x3702C6 }, + { Opcode.SMSG_RETURN_RECRUITING_CLUBS, 0x3702C5 }, + { Opcode.SMSG_ROLE_CHANGED_INFORM, 0x370021 }, + { Opcode.SMSG_ROLE_CHOSEN, 0x45001D }, + { Opcode.SMSG_ROLE_POLL_INFORM, 0x370022 }, + { Opcode.SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC, 0x37028E }, + { Opcode.SMSG_RUNE_REGEN_DEBUG, 0x37004E }, + { Opcode.SMSG_SCENARIO_COMPLETED, 0x37027C }, + { Opcode.SMSG_SCENARIO_POIS, 0x3700C9 }, + { Opcode.SMSG_SCENARIO_PROGRESS_UPDATE, 0x3700C2 }, + { Opcode.SMSG_SCENARIO_SHOW_CRITERIA, 0x370292 }, + { Opcode.SMSG_SCENARIO_STATE, 0x3700C1 }, + { Opcode.SMSG_SCENARIO_UI_UPDATE, 0x370291 }, + { Opcode.SMSG_SCENARIO_VACATE, 0x37023A }, + { Opcode.SMSG_SCENE_OBJECT_EVENT, 0x370079 }, + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND, 0x37007E }, + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED, 0x37007F }, + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND, 0x37007B }, + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE, 0x37007A }, + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE, 0x37007D }, + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT, 0x37007C }, + { Opcode.SMSG_SCRIPT_CAST, 0x4D0047 }, + { Opcode.SMSG_SEASON_INFO, 0x370059 }, + { Opcode.SMSG_SELL_RESPONSE, 0x37015C }, + { Opcode.SMSG_SEND_ITEM_PASSIVES, 0x370044 }, + { Opcode.SMSG_SEND_KNOWN_SPELLS, 0x4D0019 }, + { Opcode.SMSG_SEND_RAID_TARGET_UPDATE_ALL, 0x3700C4 }, + { Opcode.SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, 0x3700C5 }, + { Opcode.SMSG_SEND_SPELL_CHARGES, 0x4D001B }, + { Opcode.SMSG_SEND_SPELL_HISTORY, 0x4D001A }, + { Opcode.SMSG_SEND_UNLEARN_SPELLS, 0x4D001C }, + { Opcode.SMSG_SERVER_FIRST_ACHIEVEMENTS, 0x3700E4 }, + { Opcode.SMSG_SERVER_TIME, 0x37011B }, + { Opcode.SMSG_SERVER_TIME_OFFSET, 0x3701AB }, + { Opcode.SMSG_SETUP_COMBAT_LOG_FILE_FLUSH, 0x4D000F }, + { Opcode.SMSG_SETUP_CURRENCY, 0x370007 }, + { Opcode.SMSG_SET_AI_ANIM_KIT, 0x3701C5 }, + { Opcode.SMSG_SET_ANIM_TIER, 0x3701C9 }, + { Opcode.SMSG_SET_CHR_UPGRADE_TIER, 0x370076 }, + { Opcode.SMSG_SET_CURRENCY, 0x370008 }, + { Opcode.SMSG_SET_DF_FAST_LAUNCH_RESULT, 0x450012 }, + { Opcode.SMSG_SET_DUNGEON_DIFFICULTY, 0x37013D }, + { Opcode.SMSG_SET_FACTION_AT_WAR, 0x370197 }, + { Opcode.SMSG_SET_FACTION_NOT_VISIBLE, 0x3701C0 }, + { Opcode.SMSG_SET_FACTION_STANDING, 0x3701C1 }, + { Opcode.SMSG_SET_FACTION_VISIBLE, 0x3701BF }, + { Opcode.SMSG_SET_FLAT_SPELL_MODIFIER, 0x4D0027 }, + { Opcode.SMSG_SET_ITEM_PURCHASE_DATA, 0x370033 }, + { Opcode.SMSG_SET_LOOT_METHOD_FAILED, 0x370260 }, + { Opcode.SMSG_SET_MAX_WEEKLY_QUANTITY, 0x370036 }, + { Opcode.SMSG_SET_MELEE_ANIM_KIT, 0x3701C8 }, + { Opcode.SMSG_SET_MOVEMENT_ANIM_KIT, 0x3701C7 }, + { Opcode.SMSG_SET_PCT_SPELL_MODIFIER, 0x4D0028 }, + { Opcode.SMSG_SET_PET_SPECIALIZATION, 0x3700BB }, + { Opcode.SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, 0x4A000B }, + { Opcode.SMSG_SET_PLAY_HOVER_ANIM, 0x370052 }, + { Opcode.SMSG_SET_PROFICIENCY, 0x3701CA }, + { Opcode.SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE, 0x3702D9 }, + { Opcode.SMSG_SET_SHIPMENT_READY_RESPONSE, 0x41003A }, + { Opcode.SMSG_SET_SPELL_CHARGES, 0x4D0018 }, + { Opcode.SMSG_SET_TIME_ZONE_INFORMATION, 0x370110 }, + { Opcode.SMSG_SET_VEHICLE_REC_ID, 0x37018E }, + { Opcode.SMSG_SHADOWLANDS_CAPACITANCE_UPDATE, 0x370306 }, + { Opcode.SMSG_SHIPMENT_FACTION_UPDATE_RESULT, 0x41003B }, + { Opcode.SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI, 0x370348 }, + { Opcode.SMSG_SHOW_DELVES_DISPLAY_UI, 0x370346 }, + { Opcode.SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI, 0x370072 }, + { Opcode.SMSG_SHOW_QUEST_COMPLETION_TEXT, 0x4B0015 }, + { Opcode.SMSG_SHOW_TAXI_NODES, 0x370165 }, + { Opcode.SMSG_SHOW_TRADE_SKILL_RESPONSE, 0x370206 }, + { Opcode.SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE, 0x370312 }, + { Opcode.SMSG_SOCKET_GEMS_FAILURE, 0x3701BD }, + { Opcode.SMSG_SOCKET_GEMS_SUCCESS, 0x3701BC }, + { Opcode.SMSG_SPECIAL_MOUNT_ANIM, 0x370138 }, + { Opcode.SMSG_SPECTATE_END, 0x370334 }, + { Opcode.SMSG_SPECTATE_PLAYER, 0x370333 }, + { Opcode.SMSG_SPEC_INVOLUNTARILY_CHANGED, 0x3701AF }, + { Opcode.SMSG_SPELL_ABSORB_LOG, 0x4D000C }, + { Opcode.SMSG_SPELL_CATEGORY_COOLDOWN, 0x4D0006 }, + { Opcode.SMSG_SPELL_CHANNEL_START, 0x4D0022 }, + { Opcode.SMSG_SPELL_CHANNEL_UPDATE, 0x4D0023 }, + { Opcode.SMSG_SPELL_COOLDOWN, 0x4D0005 }, + { Opcode.SMSG_SPELL_DAMAGE_SHIELD, 0x4D001F }, + { Opcode.SMSG_SPELL_DELAYED, 0x4D0030 }, + { Opcode.SMSG_SPELL_DISPELL_LOG, 0x4D0007 }, + { Opcode.SMSG_SPELL_EMPOWER_SET_STAGE, 0x4D0026 }, + { Opcode.SMSG_SPELL_EMPOWER_START, 0x4D0024 }, + { Opcode.SMSG_SPELL_EMPOWER_UPDATE, 0x4D0025 }, + { Opcode.SMSG_SPELL_ENERGIZE_LOG, 0x4D0009 }, + { Opcode.SMSG_SPELL_EXECUTE_LOG, 0x4D0031 }, + { Opcode.SMSG_SPELL_FAILED_OTHER, 0x4D0046 }, + { Opcode.SMSG_SPELL_FAILURE, 0x4D0044 }, + { Opcode.SMSG_SPELL_FAILURE_MESSAGE, 0x4D004B }, + { Opcode.SMSG_SPELL_GO, 0x4D002A }, + { Opcode.SMSG_SPELL_HEAL_ABSORB_LOG, 0x4D000B }, + { Opcode.SMSG_SPELL_HEAL_LOG, 0x4D000A }, + { Opcode.SMSG_SPELL_INSTAKILL_LOG, 0x4D0021 }, + { Opcode.SMSG_SPELL_INTERRUPT_LOG, 0x4D000D }, + { Opcode.SMSG_SPELL_MISS_LOG, 0x4D0032 }, + { Opcode.SMSG_SPELL_NON_MELEE_DAMAGE_LOG, 0x4D0020 }, + { Opcode.SMSG_SPELL_OR_DAMAGE_IMMUNE, 0x4D001D }, + { Opcode.SMSG_SPELL_PERIODIC_AURA_LOG, 0x4D0008 }, + { Opcode.SMSG_SPELL_PREPARE, 0x4D0029 }, + { Opcode.SMSG_SPELL_START, 0x4D002B }, + { Opcode.SMSG_SPELL_VISUAL_LOAD_SCREEN, 0x370064 }, + { Opcode.SMSG_SPLASH_SCREEN_SHOW_LATEST, 0x3702EB }, + { Opcode.SMSG_STAND_STATE_UPDATE, 0x3701B3 }, + { Opcode.SMSG_STARTER_BUILD_ACTIVATE_FAILED, 0x37006A }, + { Opcode.SMSG_START_ELAPSED_TIMER, 0x37009B }, + { Opcode.SMSG_START_ELAPSED_TIMERS, 0x37009D }, + { Opcode.SMSG_START_LIGHTNING_STORM, 0x370140 }, + { Opcode.SMSG_START_LOOT_ROLL, 0x3700B3 }, + { Opcode.SMSG_START_MIRROR_TIMER, 0x3701A6 }, + { Opcode.SMSG_START_TIMER, 0x37003D }, + { Opcode.SMSG_STOP_ELAPSED_TIMER, 0x37009C }, + { Opcode.SMSG_STOP_MIRROR_TIMER, 0x3701A8 }, + { Opcode.SMSG_STOP_SPEAKERBOT_SOUND, 0x370202 }, + { Opcode.SMSG_STOP_TIMER, 0x37003E }, + { Opcode.SMSG_STREAMING_MOVIES, 0x37003C }, + { Opcode.SMSG_SUGGEST_INVITE_INFORM, 0x370226 }, + { Opcode.SMSG_SUMMON_CANCEL, 0x370149 }, + { Opcode.SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, 0x370023 }, + { Opcode.SMSG_SUMMON_REQUEST, 0x3701B7 }, + { Opcode.SMSG_SUPERCEDED_SPELLS, 0x4D003D }, + { Opcode.SMSG_SUSPEND_COMMS, 0x3E0002 }, + { Opcode.SMSG_SUSPEND_TOKEN, 0x370040 }, + { Opcode.SMSG_SYNC_WOW_ENTITLEMENTS, 0x3702E3 }, + { Opcode.SMSG_TALENTS_INVOLUNTARILY_RESET, 0x3701AE }, + { Opcode.SMSG_TAXI_NODE_STATUS, 0x370115 }, + { Opcode.SMSG_TEXT_EMOTE, 0x370113 }, + { Opcode.SMSG_THREAT_CLEAR, 0x370174 }, + { Opcode.SMSG_THREAT_REMOVE, 0x370173 }, + { Opcode.SMSG_THREAT_UPDATE, 0x370172 }, + { Opcode.SMSG_TIMERUNNING_SEASON_ENDED, 0x370349 }, + { Opcode.SMSG_TIME_ADJUSTMENT, 0x480001 }, + { Opcode.SMSG_TIME_SYNC_REQUEST, 0x480000 }, + { Opcode.SMSG_TITLE_EARNED, 0x37016F }, + { Opcode.SMSG_TITLE_LOST, 0x370170 }, + { Opcode.SMSG_TOTEM_CREATED, 0x37015F }, + { Opcode.SMSG_TOTEM_DURATION_CHANGED, 0x370161 }, + { Opcode.SMSG_TOTEM_MOVED, 0x370162 }, + { Opcode.SMSG_TOTEM_REMOVED, 0x370160 }, + { Opcode.SMSG_TRADE_STATUS, 0x370017 }, + { Opcode.SMSG_TRADE_UPDATED, 0x370016 }, + { Opcode.SMSG_TRAINER_BUY_FAILED, 0x370177 }, + { Opcode.SMSG_TRAINER_LIST, 0x370176 }, + { Opcode.SMSG_TRAIT_CONFIG_COMMIT_FAILED, 0x370069 }, + { Opcode.SMSG_TRANSFER_ABORTED, 0x37019A }, + { Opcode.SMSG_TRANSFER_PENDING, 0x370065 }, + { Opcode.SMSG_TREASURE_PICKER_RESPONSE, 0x3B0011 }, + { Opcode.SMSG_TRIGGER_CINEMATIC, 0x37025A }, + { Opcode.SMSG_TRIGGER_MOVIE, 0x370163 }, + { Opcode.SMSG_TURN_IN_PETITION_RESULT, 0x3701E3 }, + { Opcode.SMSG_TUTORIAL_FLAGS, 0x37024E }, + { Opcode.SMSG_UI_ACTION, 0x3701FF }, + { Opcode.SMSG_UI_MAP_QUEST_LINES_RESPONSE, 0x4B0023 }, + { Opcode.SMSG_UNDELETE_CHARACTER_RESPONSE, 0x37025B }, + { Opcode.SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, 0x37025C }, + { Opcode.SMSG_UNLEARNED_SPELLS, 0x4D003F }, + { Opcode.SMSG_UNLOAD_CHILD_MAP, 0x37000E }, + { Opcode.SMSG_UPDATE_AADC_STATUS_RESPONSE, 0x3702FC }, + { Opcode.SMSG_UPDATE_ACCOUNT_DATA, 0x3701A0 }, + { Opcode.SMSG_UPDATE_ACTION_BUTTONS, 0x370077 }, + { Opcode.SMSG_UPDATE_BNET_SESSION_KEY, 0x3702B3 }, + { Opcode.SMSG_UPDATE_CAPTURE_POINT, 0x3D0007 }, + { Opcode.SMSG_UPDATE_CELESTIAL_BODY, 0x3702AF }, + { Opcode.SMSG_UPDATE_CHARACTER_FLAGS, 0x370254 }, + { Opcode.SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN, 0x3701FB }, + { Opcode.SMSG_UPDATE_COOLDOWN, 0x3701FA }, + { Opcode.SMSG_UPDATE_CRAFTING_NPC_RECIPES, 0x410038 }, + { Opcode.SMSG_UPDATE_DAILY_MISSION_COUNTER, 0x410021 }, + { Opcode.SMSG_UPDATE_EXPANSION_LEVEL, 0x3700DC }, + { Opcode.SMSG_UPDATE_GAME_TIME_STATE, 0x3702B6 }, + { Opcode.SMSG_UPDATE_INSTANCE_OWNERSHIP, 0x370142 }, + { Opcode.SMSG_UPDATE_LAST_INSTANCE, 0x370121 }, + { Opcode.SMSG_UPDATE_OBJECT, 0x470000 }, + { Opcode.SMSG_UPDATE_PRIMARY_SPEC, 0x37006F }, + { Opcode.SMSG_UPDATE_RECENT_PLAYER_GUIDS, 0x37008C }, + { Opcode.SMSG_UPDATE_TALENT_DATA, 0x37006E }, + { Opcode.SMSG_UPDATE_WORLD_STATE, 0x3701DD }, + { Opcode.SMSG_USERLIST_ADD, 0x3C000D }, + { Opcode.SMSG_USERLIST_REMOVE, 0x3C000E }, + { Opcode.SMSG_USERLIST_UPDATE, 0x3C000F }, + { Opcode.SMSG_USE_EQUIPMENT_SET_RESULT, 0x3701E4 }, + { Opcode.SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE, 0x3702AA }, + { Opcode.SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE, 0x3702A8 }, + { Opcode.SMSG_VAS_GET_SERVICE_STATUS_RESPONSE, 0x3702A7 }, + { Opcode.SMSG_VAS_PURCHASE_COMPLETE, 0x370282 }, + { Opcode.SMSG_VAS_PURCHASE_STATE_UPDATE, 0x370281 }, + { Opcode.SMSG_VENDOR_INVENTORY, 0x370050 }, + { Opcode.SMSG_VIGNETTE_UPDATE, 0x4A0010 }, + { Opcode.SMSG_VOICE_CHANNEL_INFO_RESPONSE, 0x3702AE }, + { Opcode.SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE, 0x3702F6 }, + { Opcode.SMSG_VOICE_LOGIN_RESPONSE, 0x3702AD }, + { Opcode.SMSG_VOID_ITEM_SWAP_RESPONSE, 0x4E0004 }, + { Opcode.SMSG_VOID_STORAGE_CONTENTS, 0x4E0001 }, + { Opcode.SMSG_VOID_STORAGE_FAILED, 0x4E0000 }, + { Opcode.SMSG_VOID_STORAGE_TRANSFER_CHANGES, 0x4E0002 }, + { Opcode.SMSG_VOID_TRANSFER_RESULT, 0x4E0003 }, + { Opcode.SMSG_WAIT_QUEUE_FINISH, 0x370003 }, + { Opcode.SMSG_WAIT_QUEUE_UPDATE, 0x370002 }, + { Opcode.SMSG_WARDEN3_DATA, 0x37000B }, + { Opcode.SMSG_WARDEN3_DISABLED, 0x3702B1 }, + { Opcode.SMSG_WARDEN3_ENABLED, 0x3702B0 }, + { Opcode.SMSG_WARFRONT_COMPLETE, 0x3701F3 }, + { Opcode.SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE, 0x3D0012 }, + { Opcode.SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, 0x3D0011 }, + { Opcode.SMSG_WEATHER, 0x37013F }, + { Opcode.SMSG_WEEKLY_REWARDS_PROGRESS_RESULT, 0x3702EE }, + { Opcode.SMSG_WEEKLY_REWARDS_RESULT, 0x3702EC }, + { Opcode.SMSG_WEEKLY_REWARD_CLAIM_RESULT, 0x3702ED }, + { Opcode.SMSG_WHO, 0x3C0002 }, + { Opcode.SMSG_WHO_IS, 0x37013E }, + { Opcode.SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME, 0x3702B5 }, + { Opcode.SMSG_WORLD_QUEST_UPDATE_RESPONSE, 0x4A0017 }, + { Opcode.SMSG_WORLD_SERVER_INFO, 0x370045 }, + { Opcode.SMSG_WOW_ENTITLEMENT_NOTIFICATION, 0x3702E4 }, + { Opcode.SMSG_WOW_LABS_AREA_INFO, 0x370317 }, + { Opcode.SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END, 0x370313 }, + { Opcode.SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED, 0x370314 }, + { Opcode.SMSG_WOW_LABS_PARTY_ERROR, 0x370320 }, + { Opcode.SMSG_WOW_LABS_SET_AREA_ID_RESULT, 0x370315 }, + { Opcode.SMSG_WOW_LABS_SET_PREDICTION_CIRCLE, 0x370319 }, + { Opcode.SMSG_WOW_LABS_SET_SELECTED_AREA_ID, 0x370316 }, + { Opcode.SMSG_XP_AWARDED_FROM_CURRENCY, 0x37032E }, + { Opcode.SMSG_XP_GAIN_ABORTED, 0x370061 }, + { Opcode.SMSG_XP_GAIN_ENABLED, 0x37023E }, + { Opcode.SMSG_ZONE_UNDER_ATTACK, 0x3C0009 }, }; private static readonly BiDictionary MiscOpcodes = new(); diff --git a/WowPacketParserModule.Substructures/PerksProgramHandler.cs b/WowPacketParserModule.Substructures/PerksProgramHandler.cs index 6b8d358cc7..21a0113494 100644 --- a/WowPacketParserModule.Substructures/PerksProgramHandler.cs +++ b/WowPacketParserModule.Substructures/PerksProgramHandler.cs @@ -17,6 +17,8 @@ public static void ReadPerksVendorItem(Packet packet, params object[] indexes) packet.ReadInt32("TransmogIllusionID", indexes); packet.ReadInt32("ToyID", indexes); packet.ReadInt32("Price", indexes); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_7_58123)) + packet.ReadInt32("OriginalPrice", indexes); packet.ReadTime64("AvailableUntil", indexes); packet.ReadBit("Disabled", indexes); if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_5_57171)) diff --git a/WowPacketParserModule.V11_0_0_55666/Parsers/UpdateFieldsHandler1107.cs b/WowPacketParserModule.V11_0_0_55666/Parsers/UpdateFieldsHandler1107.cs new file mode 100644 index 0000000000..4f2d428906 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/Parsers/UpdateFieldsHandler1107.cs @@ -0,0 +1,6405 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using System.Collections; +using System.Linq; +using WowPacketParser.Enums; +using WowPacketParser.Misc; +using WowPacketParser.Parsing.Parsers; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UpdateFieldHandler : UpdateFieldsHandlerBase + { + public override IObjectData ReadCreateObjectData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new ObjectData(); + packet.ResetBitReader(); + data.EntryID = packet.ReadInt32("EntryID", indexes); + data.DynamicFlags = packet.ReadUInt32("DynamicFlags", indexes); + data.Scale = packet.ReadSingle("Scale", indexes); + return data; + } + + public override IObjectData ReadUpdateObjectData(Packet packet, params object[] indexes) + { + var data = new ObjectData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(4); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.EntryID = packet.ReadInt32("EntryID", indexes); + } + if (changesMask[2]) + { + data.DynamicFlags = packet.ReadUInt32("DynamicFlags", indexes); + } + if (changesMask[3]) + { + data.Scale = packet.ReadSingle("Scale", indexes); + } + } + return data; + } + + public static IItemEnchantment ReadCreateItemEnchantment(Packet packet, params object[] indexes) + { + var data = new ItemEnchantment(); + packet.ResetBitReader(); + data.ID = packet.ReadInt32("ID", indexes); + data.Duration = packet.ReadUInt32("Duration", indexes); + data.Charges = packet.ReadInt16("Charges", indexes); + data.Inactive = packet.ReadUInt16("Inactive", indexes); + return data; + } + + public static IItemEnchantment ReadUpdateItemEnchantment(Packet packet, params object[] indexes) + { + var data = new ItemEnchantment(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(5); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ID = packet.ReadInt32("ID", indexes); + } + if (changesMask[2]) + { + data.Duration = packet.ReadUInt32("Duration", indexes); + } + if (changesMask[3]) + { + data.Charges = packet.ReadInt16("Charges", indexes); + } + if (changesMask[4]) + { + data.Inactive = packet.ReadUInt16("Inactive", indexes); + } + } + return data; + } + + public static IItemMod ReadCreateItemMod(Packet packet, params object[] indexes) + { + var data = new ItemMod(); + packet.ResetBitReader(); + data.Type = packet.ReadByte("Type", indexes); + data.Value = packet.ReadInt32("Value", indexes); + return data; + } + + public static IItemMod ReadUpdateItemMod(Packet packet, params object[] indexes) + { + var data = new ItemMod(); + packet.ResetBitReader(); + data.Type = packet.ReadByte("Type", indexes); + data.Value = packet.ReadInt32("Value", indexes); + return data; + } + + public static IItemModList ReadCreateItemModList(Packet packet, params object[] indexes) + { + var data = new ItemModList(); + packet.ResetBitReader(); + data.Values.Resize(packet.ReadBits(6)); + for (var i = 0; i < data.Values.Count; ++i) + { + data.Values[i] = ReadCreateItemMod(packet, indexes, "Values", i); + } + return data; + } + + public static IItemModList ReadUpdateItemModList(Packet packet, params object[] indexes) + { + var data = new ItemModList(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(1); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + data.Values.ReadUpdateMask(packet, 6); + } + packet.ResetBitReader(); + if (changesMask[0]) + { + for (var i = 0; i < data.Values.Count; ++i) + { + if (data.Values.UpdateMask[i]) + { + data.Values[i] = ReadUpdateItemMod(packet, indexes, "Values", i); + } + } + } + return data; + } + + public static IArtifactPower ReadCreateArtifactPower(Packet packet, params object[] indexes) + { + var data = new ArtifactPower(); + packet.ResetBitReader(); + data.ArtifactPowerID = packet.ReadInt16("ArtifactPowerID", indexes); + data.PurchasedRank = packet.ReadByte("PurchasedRank", indexes); + data.CurrentRankWithBonus = packet.ReadByte("CurrentRankWithBonus", indexes); + return data; + } + + public static IArtifactPower ReadUpdateArtifactPower(Packet packet, params object[] indexes) + { + var data = new ArtifactPower(); + packet.ResetBitReader(); + data.ArtifactPowerID = packet.ReadInt16("ArtifactPowerID", indexes); + data.PurchasedRank = packet.ReadByte("PurchasedRank", indexes); + data.CurrentRankWithBonus = packet.ReadByte("CurrentRankWithBonus", indexes); + return data; + } + + public static ISocketedGem ReadCreateSocketedGem(Packet packet, params object[] indexes) + { + var data = new SocketedGem(); + packet.ResetBitReader(); + data.ItemID = packet.ReadInt32("ItemID", indexes); + for (var i = 0; i < 16; ++i) + { + data.BonusListIDs[i] = packet.ReadUInt16("BonusListIDs", indexes, i); + } + data.Context = packet.ReadByte("Context", indexes); + return data; + } + + public static ISocketedGem ReadUpdateSocketedGem(Packet packet, params object[] indexes) + { + var data = new SocketedGem(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(1); + var maskMask = new BitArray(rawMaskMask); + if (maskMask[0]) + rawChangesMask[0] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ItemID = packet.ReadInt32("ItemID", indexes); + } + if (changesMask[2]) + { + data.Context = packet.ReadByte("Context", indexes); + } + } + if (changesMask[3]) + { + for (var i = 0; i < 16; ++i) + { + if (changesMask[4 + i]) + { + data.BonusListIDs[i] = packet.ReadUInt16("BonusListIDs", indexes, i); + } + } + } + return data; + } + + public override IItemData ReadCreateItemData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new ItemData(); + packet.ResetBitReader(); + data.Owner = packet.ReadPackedGuid128("Owner", indexes); + data.ContainedIn = packet.ReadPackedGuid128("ContainedIn", indexes); + data.Creator = packet.ReadPackedGuid128("Creator", indexes); + data.GiftCreator = packet.ReadPackedGuid128("GiftCreator", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.StackCount = packet.ReadUInt32("StackCount", indexes); + data.Expiration = packet.ReadUInt32("Expiration", indexes); + for (var i = 0; i < 5; ++i) + { + data.SpellCharges[i] = packet.ReadInt32("SpellCharges", indexes, i); + } + } + data.DynamicFlags = packet.ReadUInt32("DynamicFlags", indexes); + for (var i = 0; i < 13; ++i) + { + data.Enchantment[i] = ReadCreateItemEnchantment(packet, indexes, "Enchantment", i); + } + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.Durability = packet.ReadUInt32("Durability", indexes); + data.MaxDurability = packet.ReadUInt32("MaxDurability", indexes); + } + data.CreatePlayedTime = packet.ReadUInt32("CreatePlayedTime", indexes); + data.Context = packet.ReadByte("Context", indexes); + data.CreateTime = packet.ReadInt64("CreateTime", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.ArtifactXP = packet.ReadUInt64("ArtifactXP", indexes); + data.ItemAppearanceModID = packet.ReadByte("ItemAppearanceModID", indexes); + } + data.ArtifactPowers.Resize(packet.ReadUInt32()); + data.Gems.Resize(packet.ReadUInt32()); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.ZoneFlags = packet.ReadUInt32("ZoneFlags", indexes); + } + Substructures.ItemHandler.ReadItemBonusKey(packet, indexes, "ItemBonusKey"); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.DEBUGItemLevel = packet.ReadUInt16("DEBUGItemLevel", indexes); + } + for (var i = 0; i < data.ArtifactPowers.Count; ++i) + { + data.ArtifactPowers[i] = ReadCreateArtifactPower(packet, indexes, "ArtifactPowers", i); + } + for (var i = 0; i < data.Gems.Count; ++i) + { + data.Gems[i] = ReadCreateSocketedGem(packet, indexes, "Gems", i); + } + data.Modifiers = ReadCreateItemModList(packet, indexes, "Modifiers"); + return data; + } + + public override IItemData ReadUpdateItemData(Packet packet, params object[] indexes) + { + var data = new ItemData(); + packet.ResetBitReader(); + var rawChangesMask = new int[2]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(2); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 2; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ArtifactPowers.ReadUpdateMask(packet); + } + if (changesMask[2]) + { + data.Gems.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (var i = 0; i < data.ArtifactPowers.Count; ++i) + { + if (data.ArtifactPowers.UpdateMask[i]) + { + data.ArtifactPowers[i] = ReadUpdateArtifactPower(packet, indexes, "ArtifactPowers", i); + } + } + } + if (changesMask[2]) + { + for (var i = 0; i < data.Gems.Count; ++i) + { + if (data.Gems.UpdateMask[i]) + { + data.Gems[i] = ReadUpdateSocketedGem(packet, indexes, "Gems", i); + } + } + } + if (changesMask[3]) + { + data.Owner = packet.ReadPackedGuid128("Owner", indexes); + } + if (changesMask[4]) + { + data.ContainedIn = packet.ReadPackedGuid128("ContainedIn", indexes); + } + if (changesMask[5]) + { + data.Creator = packet.ReadPackedGuid128("Creator", indexes); + } + if (changesMask[6]) + { + data.GiftCreator = packet.ReadPackedGuid128("GiftCreator", indexes); + } + if (changesMask[7]) + { + data.StackCount = packet.ReadUInt32("StackCount", indexes); + } + if (changesMask[8]) + { + data.Expiration = packet.ReadUInt32("Expiration", indexes); + } + if (changesMask[9]) + { + data.DynamicFlags = packet.ReadUInt32("DynamicFlags", indexes); + } + if (changesMask[10]) + { + data.Durability = packet.ReadUInt32("Durability", indexes); + } + if (changesMask[11]) + { + data.MaxDurability = packet.ReadUInt32("MaxDurability", indexes); + } + if (changesMask[12]) + { + data.CreatePlayedTime = packet.ReadUInt32("CreatePlayedTime", indexes); + } + if (changesMask[13]) + { + data.Context = packet.ReadByte("Context", indexes); + } + if (changesMask[14]) + { + data.CreateTime = packet.ReadInt64("CreateTime", indexes); + } + if (changesMask[15]) + { + data.ArtifactXP = packet.ReadUInt64("ArtifactXP", indexes); + } + if (changesMask[16]) + { + data.ItemAppearanceModID = packet.ReadByte("ItemAppearanceModID", indexes); + } + if (changesMask[18]) + { + data.ZoneFlags = packet.ReadUInt32("ZoneFlags", indexes); + } + if (changesMask[19]) + { + Substructures.ItemHandler.ReadItemBonusKey(packet, indexes, "ItemBonusKey"); + } + if (changesMask[20]) + { + data.DEBUGItemLevel = packet.ReadUInt16("DEBUGItemLevel", indexes); + } + if (changesMask[17]) + { + data.Modifiers = ReadUpdateItemModList(packet, indexes, "Modifiers"); + } + } + if (changesMask[21]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[22 + i]) + { + data.SpellCharges[i] = packet.ReadInt32("SpellCharges", indexes, i); + } + } + } + if (changesMask[27]) + { + for (var i = 0; i < 13; ++i) + { + if (changesMask[28 + i]) + { + data.Enchantment[i] = ReadUpdateItemEnchantment(packet, indexes, "Enchantment", i); + } + } + } + return data; + } + + public override IContainerData ReadCreateContainerData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new ContainerData(); + packet.ResetBitReader(); + for (var i = 0; i < 98; ++i) + { + data.Slots[i] = packet.ReadPackedGuid128("Slots", indexes, i); + } + data.NumSlots = packet.ReadUInt32("NumSlots", indexes); + return data; + } + + public override IContainerData ReadUpdateContainerData(Packet packet, params object[] indexes) + { + var data = new ContainerData(); + packet.ResetBitReader(); + var rawChangesMask = new int[4]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(4); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 4; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.NumSlots = packet.ReadUInt32("NumSlots", indexes); + } + } + if (changesMask[2]) + { + for (var i = 0; i < 98; ++i) + { + if (changesMask[3 + i]) + { + data.Slots[i] = packet.ReadPackedGuid128("Slots", indexes, i); + } + } + } + return data; + } + + public override IAzeriteEmpoweredItemData ReadCreateAzeriteEmpoweredItemData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new AzeriteEmpoweredItemData(); + packet.ResetBitReader(); + for (var i = 0; i < 5; ++i) + { + data.Selections[i] = packet.ReadInt32("Selections", indexes, i); + } + return data; + } + + public override IAzeriteEmpoweredItemData ReadUpdateAzeriteEmpoweredItemData(Packet packet, params object[] indexes) + { + var data = new AzeriteEmpoweredItemData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(1); + var maskMask = new BitArray(rawMaskMask); + if (maskMask[0]) + rawChangesMask[0] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[1 + i]) + { + data.Selections[i] = packet.ReadInt32("Selections", indexes, i); + } + } + } + return data; + } + + public static IUnlockedAzeriteEssence ReadCreateUnlockedAzeriteEssence(Packet packet, params object[] indexes) + { + var data = new UnlockedAzeriteEssence(); + packet.ResetBitReader(); + data.AzeriteEssenceID = packet.ReadUInt32("AzeriteEssenceID", indexes); + data.Rank = packet.ReadUInt32("Rank", indexes); + return data; + } + + public static IUnlockedAzeriteEssence ReadUpdateUnlockedAzeriteEssence(Packet packet, params object[] indexes) + { + var data = new UnlockedAzeriteEssence(); + packet.ResetBitReader(); + data.AzeriteEssenceID = packet.ReadUInt32("AzeriteEssenceID", indexes); + data.Rank = packet.ReadUInt32("Rank", indexes); + return data; + } + + public static ISelectedAzeriteEssences ReadCreateSelectedAzeriteEssences(Packet packet, params object[] indexes) + { + var data = new SelectedAzeriteEssences(); + packet.ResetBitReader(); + for (var i = 0; i < 4; ++i) + { + data.AzeriteEssenceID[i] = packet.ReadUInt32("AzeriteEssenceID", indexes, i); + } + data.SpecializationID = packet.ReadUInt32("SpecializationID", indexes); + data.Enabled = packet.ReadBit("Enabled", indexes); + return data; + } + + public static ISelectedAzeriteEssences ReadUpdateSelectedAzeriteEssences(Packet packet, params object[] indexes) + { + var data = new SelectedAzeriteEssences(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(1); + var maskMask = new BitArray(rawMaskMask); + if (maskMask[0]) + rawChangesMask[0] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Enabled = packet.ReadBit("Enabled", indexes); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + data.SpecializationID = packet.ReadUInt32("SpecializationID", indexes); + } + } + if (changesMask[3]) + { + for (var i = 0; i < 4; ++i) + { + if (changesMask[4 + i]) + { + data.AzeriteEssenceID[i] = packet.ReadUInt32("AzeriteEssenceID", indexes, i); + } + } + } + return data; + } + + public override IAzeriteItemData ReadCreateAzeriteItemData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new AzeriteItemData(); + packet.ResetBitReader(); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.Xp = packet.ReadUInt64("Xp", indexes); + data.Level = packet.ReadUInt32("Level", indexes); + data.AuraLevel = packet.ReadUInt32("AuraLevel", indexes); + data.KnowledgeLevel = packet.ReadUInt32("KnowledgeLevel", indexes); + data.DEBUGknowledgeWeek = packet.ReadInt32("DEBUGknowledgeWeek", indexes); + } + data.UnlockedEssences.Resize(packet.ReadUInt32()); + data.SelectedEssences.Resize(packet.ReadUInt32()); + data.UnlockedEssenceMilestones.Resize(packet.ReadUInt32()); + for (var i = 0; i < data.UnlockedEssences.Count; ++i) + { + data.UnlockedEssences[i] = ReadCreateUnlockedAzeriteEssence(packet, indexes, "UnlockedEssences", i); + } + for (var i = 0; i < data.UnlockedEssenceMilestones.Count; ++i) + { + data.UnlockedEssenceMilestones[i] = packet.ReadUInt32("UnlockedEssenceMilestones", indexes, i); + } + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.Enabled = packet.ReadBit("Enabled", indexes); + } + for (var i = 0; i < data.SelectedEssences.Count; ++i) + { + data.SelectedEssences[i] = ReadCreateSelectedAzeriteEssences(packet, indexes, "SelectedEssences", i); + } + return data; + } + + public override IAzeriteItemData ReadUpdateAzeriteItemData(Packet packet, params object[] indexes) + { + var data = new AzeriteItemData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(10); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Enabled = packet.ReadBit("Enabled", indexes); + } + if (changesMask[2]) + { + data.UnlockedEssences.ReadUpdateMask(packet); + } + if (changesMask[3]) + { + data.SelectedEssences.ReadUpdateMask(packet); + } + if (changesMask[4]) + { + data.UnlockedEssenceMilestones.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + for (var i = 0; i < data.UnlockedEssences.Count; ++i) + { + if (data.UnlockedEssences.UpdateMask[i]) + { + data.UnlockedEssences[i] = ReadUpdateUnlockedAzeriteEssence(packet, indexes, "UnlockedEssences", i); + } + } + } + if (changesMask[4]) + { + for (var i = 0; i < data.UnlockedEssenceMilestones.Count; ++i) + { + if (data.UnlockedEssenceMilestones.UpdateMask[i]) + { + data.UnlockedEssenceMilestones[i] = packet.ReadUInt32("UnlockedEssenceMilestones", indexes, i); + } + } + } + if (changesMask[3]) + { + for (var i = 0; i < data.SelectedEssences.Count; ++i) + { + if (data.SelectedEssences.UpdateMask[i]) + { + data.SelectedEssences[i] = ReadUpdateSelectedAzeriteEssences(packet, indexes, "SelectedEssences", i); + } + } + } + if (changesMask[5]) + { + data.Xp = packet.ReadUInt64("Xp", indexes); + } + if (changesMask[6]) + { + data.Level = packet.ReadUInt32("Level", indexes); + } + if (changesMask[7]) + { + data.AuraLevel = packet.ReadUInt32("AuraLevel", indexes); + } + if (changesMask[8]) + { + data.KnowledgeLevel = packet.ReadUInt32("KnowledgeLevel", indexes); + } + if (changesMask[9]) + { + data.DEBUGknowledgeWeek = packet.ReadInt32("DEBUGknowledgeWeek", indexes); + } + } + return data; + } + + public static ISpellCastVisual ReadCreateSpellCastVisual(Packet packet, params object[] indexes) + { + var data = new SpellCastVisual(); + packet.ResetBitReader(); + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + data.ScriptVisualID = packet.ReadInt32("ScriptVisualID", indexes); + return data; + } + + public static ISpellCastVisual ReadUpdateSpellCastVisual(Packet packet, params object[] indexes) + { + var data = new SpellCastVisual(); + packet.ResetBitReader(); + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + data.ScriptVisualID = packet.ReadInt32("ScriptVisualID", indexes); + return data; + } + + public static IUnitChannel ReadCreateUnitChannel(Packet packet, params object[] indexes) + { + var data = new UnitChannel(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.SpellVisual = ReadCreateSpellCastVisual(packet, indexes, "SpellVisual"); + return data; + } + + public static IUnitChannel ReadUpdateUnitChannel(Packet packet, params object[] indexes) + { + var data = new UnitChannel(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.SpellVisual = ReadUpdateSpellCastVisual(packet, indexes, "SpellVisual"); + return data; + } + + public static IVisibleItem ReadCreateVisibleItem(Packet packet, params object[] indexes) + { + var data = new VisibleItem(); + packet.ResetBitReader(); + data.ItemID = packet.ReadInt32("ItemID", indexes); + data.SecondaryItemModifiedAppearanceID = packet.ReadInt32("SecondaryItemModifiedAppearanceID", indexes); + data.ConditionalItemAppearanceID = packet.ReadInt32("ConditionalItemAppearanceID", indexes); + data.ItemAppearanceModID = packet.ReadUInt16("ItemAppearanceModID", indexes); + data.ItemVisual = packet.ReadUInt16("ItemVisual", indexes); + return data; + } + + public static IVisibleItem ReadUpdateVisibleItem(Packet packet, params object[] indexes) + { + var data = new VisibleItem(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(6); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ItemID = packet.ReadInt32("ItemID", indexes); + } + if (changesMask[2]) + { + data.SecondaryItemModifiedAppearanceID = packet.ReadInt32("SecondaryItemModifiedAppearanceID", indexes); + } + if (changesMask[3]) + { + data.ConditionalItemAppearanceID = packet.ReadInt32("ConditionalItemAppearanceID", indexes); + } + if (changesMask[4]) + { + data.ItemAppearanceModID = packet.ReadUInt16("ItemAppearanceModID", indexes); + } + if (changesMask[5]) + { + data.ItemVisual = packet.ReadUInt16("ItemVisual", indexes); + } + } + return data; + } + + public static IPassiveSpellHistory ReadCreatePassiveSpellHistory(Packet packet, params object[] indexes) + { + var data = new PassiveSpellHistory(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.AuraSpellID = packet.ReadInt32("AuraSpellID", indexes); + return data; + } + + public static IPassiveSpellHistory ReadUpdatePassiveSpellHistory(Packet packet, params object[] indexes) + { + var data = new PassiveSpellHistory(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.AuraSpellID = packet.ReadInt32("AuraSpellID", indexes); + return data; + } + + public override IUnitData ReadCreateUnitData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new UnitData(); + packet.ResetBitReader(); + data.DisplayID = packet.ReadInt32("DisplayID", indexes); + data.NpcFlags = packet.ReadUInt32("NpcFlags", indexes); + data.NpcFlags2 = packet.ReadUInt32("NpcFlags2", indexes); + data.StateSpellVisualID = packet.ReadUInt32("StateSpellVisualID", indexes); + data.StateAnimID = packet.ReadUInt32("StateAnimID", indexes); + data.StateAnimKitID = packet.ReadUInt32("StateAnimKitID", indexes); + data.StateWorldEffectIDs = new System.Nullable[packet.ReadUInt32()]; + data.StateWorldEffectsQuestObjectiveID = packet.ReadUInt32("StateWorldEffectsQuestObjectiveID", indexes); + data.SpellOverrideNameID = packet.ReadInt32("SpellOverrideNameID", indexes); + for (var i = 0; i < data.StateWorldEffectIDs.Length; ++i) + { + data.StateWorldEffectIDs[i] = packet.ReadUInt32("StateWorldEffectIDs", indexes, i); + } + data.Charm = packet.ReadPackedGuid128("Charm", indexes); + data.Summon = packet.ReadPackedGuid128("Summon", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.Critter = packet.ReadPackedGuid128("Critter", indexes); + } + data.CharmedBy = packet.ReadPackedGuid128("CharmedBy", indexes); + data.SummonedBy = packet.ReadPackedGuid128("SummonedBy", indexes); + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + data.DemonCreator = packet.ReadPackedGuid128("DemonCreator", indexes); + data.LookAtControllerTarget = packet.ReadPackedGuid128("LookAtControllerTarget", indexes); + data.Target = packet.ReadPackedGuid128("Target", indexes); + data.BattlePetCompanionGUID = packet.ReadPackedGuid128("BattlePetCompanionGUID", indexes); + data.BattlePetDBID = packet.ReadUInt64("BattlePetDBID", indexes); + data.ChannelData = ReadCreateUnitChannel(packet, indexes, "ChannelData"); + data.SpellEmpowerStage = packet.ReadSByte("SpellEmpowerStage", indexes); + data.SummonedByHomeRealm = packet.ReadUInt32("SummonedByHomeRealm", indexes); + data.Race = packet.ReadByte("Race", indexes); + data.ClassId = packet.ReadByte("ClassId", indexes); + data.PlayerClassId = packet.ReadByte("PlayerClassId", indexes); + data.Sex = packet.ReadByte("Sex", indexes); + data.DisplayPower = packet.ReadByte("DisplayPower", indexes); + data.OverrideDisplayPowerID = packet.ReadUInt32("OverrideDisplayPowerID", indexes); + data.Health = packet.ReadInt64("Health", indexes); + for (var i = 0; i < 10; ++i) + { + data.Power[i] = packet.ReadInt32("Power", indexes, i); + data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i); + } + if ((flags & (UpdateFieldFlag.Owner | UpdateFieldFlag.UnitAll)) != UpdateFieldFlag.None) + { + for (var i = 0; i < 10; ++i) + { + data.PowerRegenFlatModifier[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i); + data.PowerRegenInterruptedFlatModifier[i] = packet.ReadSingle("PowerRegenInterruptedFlatModifier", indexes, i); + } + } + data.MaxHealth = packet.ReadInt64("MaxHealth", indexes); + data.Level = packet.ReadInt32("Level", indexes); + data.EffectiveLevel = packet.ReadInt32("EffectiveLevel", indexes); + data.ContentTuningID = packet.ReadInt32("ContentTuningID", indexes); + data.ScalingLevelMin = packet.ReadInt32("ScalingLevelMin", indexes); + data.ScalingLevelMax = packet.ReadInt32("ScalingLevelMax", indexes); + data.ScalingLevelDelta = packet.ReadInt32("ScalingLevelDelta", indexes); + data.ScalingFactionGroup = packet.ReadInt32("ScalingFactionGroup", indexes); + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + for (var i = 0; i < 3; ++i) + { + data.VirtualItems[i] = ReadCreateVisibleItem(packet, indexes, "VirtualItems", i); + } + data.Flags = packet.ReadUInt32("Flags", indexes); + data.Flags2 = packet.ReadUInt32("Flags2", indexes); + data.Flags3 = packet.ReadUInt32("Flags3", indexes); + data.AuraState = packet.ReadUInt32("AuraState", indexes); + for (var i = 0; i < 2; ++i) + { + data.AttackRoundBaseTime[i] = packet.ReadUInt32("AttackRoundBaseTime", indexes, i); + } + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.RangedAttackRoundBaseTime = packet.ReadUInt32("RangedAttackRoundBaseTime", indexes); + } + data.BoundingRadius = packet.ReadSingle("BoundingRadius", indexes); + data.CombatReach = packet.ReadSingle("CombatReach", indexes); + data.DisplayScale = packet.ReadSingle("DisplayScale", indexes); + data.CreatureFamily = packet.ReadInt32("CreatureFamily", indexes); + data.CreatureType = packet.ReadInt32("CreatureType", indexes); + data.NativeDisplayID = packet.ReadInt32("NativeDisplayID", indexes); + data.NativeXDisplayScale = packet.ReadSingle("NativeXDisplayScale", indexes); + data.MountDisplayID = packet.ReadInt32("MountDisplayID", indexes); + data.CosmeticMountDisplayID = packet.ReadInt32("CosmeticMountDisplayID", indexes); + if ((flags & (UpdateFieldFlag.Owner | UpdateFieldFlag.Empath)) != UpdateFieldFlag.None) + { + data.MinDamage = packet.ReadSingle("MinDamage", indexes); + data.MaxDamage = packet.ReadSingle("MaxDamage", indexes); + data.MinOffHandDamage = packet.ReadSingle("MinOffHandDamage", indexes); + data.MaxOffHandDamage = packet.ReadSingle("MaxOffHandDamage", indexes); + } + data.StandState = packet.ReadByte("StandState", indexes); + data.PetTalentPoints = packet.ReadByte("PetTalentPoints", indexes); + data.VisFlags = packet.ReadByte("VisFlags", indexes); + data.AnimTier = packet.ReadByte("AnimTier", indexes); + data.PetNumber = packet.ReadUInt32("PetNumber", indexes); + data.PetNameTimestamp = packet.ReadUInt32("PetNameTimestamp", indexes); + data.PetExperience = packet.ReadUInt32("PetExperience", indexes); + data.PetNextLevelExperience = packet.ReadUInt32("PetNextLevelExperience", indexes); + data.ModCastingSpeed = packet.ReadSingle("ModCastingSpeed", indexes); + data.ModCastingSpeedNeg = packet.ReadSingle("ModCastingSpeedNeg", indexes); + data.ModSpellHaste = packet.ReadSingle("ModSpellHaste", indexes); + data.ModHaste = packet.ReadSingle("ModHaste", indexes); + data.ModRangedHaste = packet.ReadSingle("ModRangedHaste", indexes); + data.ModHasteRegen = packet.ReadSingle("ModHasteRegen", indexes); + data.ModTimeRate = packet.ReadSingle("ModTimeRate", indexes); + data.CreatedBySpell = packet.ReadInt32("CreatedBySpell", indexes); + data.EmoteState = packet.ReadInt32("EmoteState", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + for (var i = 0; i < 4; ++i) + { + data.Stats[i] = packet.ReadInt32("Stats", indexes, i); + data.StatPosBuff[i] = packet.ReadInt32("StatPosBuff", indexes, i); + data.StatNegBuff[i] = packet.ReadInt32("StatNegBuff", indexes, i); + data.StatSupportBuff[i] = packet.ReadInt32("StatSupportBuff", indexes, i); + } + } + if ((flags & (UpdateFieldFlag.Owner | UpdateFieldFlag.Empath)) != UpdateFieldFlag.None) + { + for (var i = 0; i < 7; ++i) + { + data.Resistances[i] = packet.ReadInt32("Resistances", indexes, i); + } + } + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + for (var i = 0; i < 7; ++i) + { + data.BonusResistanceMods[i] = packet.ReadInt32("BonusResistanceMods", indexes, i); + data.ManaCostModifier[i] = packet.ReadInt32("ManaCostModifier", indexes, i); + } + } + data.BaseMana = packet.ReadInt32("BaseMana", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.BaseHealth = packet.ReadInt32("BaseHealth", indexes); + } + data.SheatheState = packet.ReadByte("SheatheState", indexes); + data.PvpFlags = packet.ReadByte("PvpFlags", indexes); + data.PetFlags = packet.ReadByte("PetFlags", indexes); + data.ShapeshiftForm = packet.ReadByte("ShapeshiftForm", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.AttackPower = packet.ReadInt32("AttackPower", indexes); + data.AttackPowerModPos = packet.ReadInt32("AttackPowerModPos", indexes); + data.AttackPowerModNeg = packet.ReadInt32("AttackPowerModNeg", indexes); + data.AttackPowerMultiplier = packet.ReadSingle("AttackPowerMultiplier", indexes); + data.AttackPowerModSupport = packet.ReadInt32("AttackPowerModSupport", indexes); + data.RangedAttackPower = packet.ReadInt32("RangedAttackPower", indexes); + data.RangedAttackPowerModPos = packet.ReadInt32("RangedAttackPowerModPos", indexes); + data.RangedAttackPowerModNeg = packet.ReadInt32("RangedAttackPowerModNeg", indexes); + data.RangedAttackPowerMultiplier = packet.ReadSingle("RangedAttackPowerMultiplier", indexes); + data.RangedAttackPowerModSupport = packet.ReadInt32("RangedAttackPowerModSupport", indexes); + data.MainHandWeaponAttackPower = packet.ReadInt32("MainHandWeaponAttackPower", indexes); + data.OffHandWeaponAttackPower = packet.ReadInt32("OffHandWeaponAttackPower", indexes); + data.RangedWeaponAttackPower = packet.ReadInt32("RangedWeaponAttackPower", indexes); + data.SetAttackSpeedAura = packet.ReadInt32("SetAttackSpeedAura", indexes); + data.Lifesteal = packet.ReadSingle("Lifesteal", indexes); + data.MinRangedDamage = packet.ReadSingle("MinRangedDamage", indexes); + data.MaxRangedDamage = packet.ReadSingle("MaxRangedDamage", indexes); + data.ManaCostMultiplier = packet.ReadSingle("ManaCostMultiplier", indexes); + } + data.MaxHealthModifier = packet.ReadSingle("MaxHealthModifier", indexes); + data.HoverHeight = packet.ReadSingle("HoverHeight", indexes); + data.MinItemLevelCutoff = packet.ReadInt32("MinItemLevelCutoff", indexes); + data.MinItemLevel = packet.ReadInt32("MinItemLevel", indexes); + data.MaxItemLevel = packet.ReadInt32("MaxItemLevel", indexes); + data.AzeriteItemLevel = packet.ReadInt32("AzeriteItemLevel", indexes); + data.WildBattlePetLevel = packet.ReadInt32("WildBattlePetLevel", indexes); + data.BattlePetCompanionExperience = packet.ReadInt32("BattlePetCompanionExperience", indexes); + data.BattlePetCompanionNameTimestamp = packet.ReadUInt32("BattlePetCompanionNameTimestamp", indexes); + data.InteractSpellID = packet.ReadInt32("InteractSpellID", indexes); + data.ScaleDuration = packet.ReadInt32("ScaleDuration", indexes); + data.LooksLikeMountID = packet.ReadInt32("LooksLikeMountID", indexes); + data.LooksLikeCreatureID = packet.ReadInt32("LooksLikeCreatureID", indexes); + data.LookAtControllerID = packet.ReadInt32("LookAtControllerID", indexes); + data.PerksVendorItemID = packet.ReadInt32("PerksVendorItemID", indexes); + data.TaxiNodesID = packet.ReadInt32("TaxiNodesID", indexes); + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + data.PassiveSpells.Resize(packet.ReadUInt32()); + data.WorldEffects.Resize(packet.ReadUInt32()); + data.ChannelObjects.Resize(packet.ReadUInt32()); + data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + data.GlideEventSpeedDivisor = packet.ReadSingle("GlideEventSpeedDivisor", indexes); + data.MaxHealthModifierFlatNeg = packet.ReadInt32("MaxHealthModifierFlatNeg", indexes); + data.MaxHealthModifierFlatPos = packet.ReadInt32("MaxHealthModifierFlatPos", indexes); + data.SilencedSchoolMask = packet.ReadUInt32("SilencedSchoolMask", indexes); + data.CurrentAreaID = packet.ReadUInt32("CurrentAreaID", indexes); + data.Field_31C = packet.ReadSingle("Field_31C", indexes); + data.Field_320 = packet.ReadSingle("Field_320", indexes); + data.NameplateAttachToGUID = packet.ReadPackedGuid128("NameplateAttachToGUID", indexes); + for (var i = 0; i < data.PassiveSpells.Count; ++i) + { + data.PassiveSpells[i] = ReadCreatePassiveSpellHistory(packet, indexes, "PassiveSpells", i); + } + for (var i = 0; i < data.WorldEffects.Count; ++i) + { + data.WorldEffects[i] = packet.ReadInt32("WorldEffects", indexes, i); + } + for (var i = 0; i < data.ChannelObjects.Count; ++i) + { + data.ChannelObjects[i] = packet.ReadPackedGuid128("ChannelObjects", indexes, i); + } + data.Field_314 = packet.ReadBit("Field_314", indexes); + return data; + } + + public override IUnitData ReadUpdateUnitData(Packet packet, params object[] indexes) + { + var data = new UnitData(); + packet.ResetBitReader(); + var rawChangesMask = new int[7]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(7); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 7; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Field_314 = packet.ReadBit("Field_314", indexes); + } + if (changesMask[2]) + { + data.StateWorldEffectIDs = Enumerable.Range(0, (int)packet.ReadBits(32)).Select(x => new uint()).Cast>().ToArray(); + for (var i = 0; i < data.StateWorldEffectIDs.Length; ++i) + { + data.StateWorldEffectIDs[i] = packet.ReadUInt32("StateWorldEffectIDs", indexes, i); + } + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + data.PassiveSpells.ReadUpdateMask(packet); + } + if (changesMask[4]) + { + data.WorldEffects.ReadUpdateMask(packet); + } + if (changesMask[5]) + { + data.ChannelObjects.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + for (var i = 0; i < data.PassiveSpells.Count; ++i) + { + if (data.PassiveSpells.UpdateMask[i]) + { + data.PassiveSpells[i] = ReadUpdatePassiveSpellHistory(packet, indexes, "PassiveSpells", i); + } + } + } + if (changesMask[4]) + { + for (var i = 0; i < data.WorldEffects.Count; ++i) + { + if (data.WorldEffects.UpdateMask[i]) + { + data.WorldEffects[i] = packet.ReadInt32("WorldEffects", indexes, i); + } + } + } + if (changesMask[5]) + { + for (var i = 0; i < data.ChannelObjects.Count; ++i) + { + if (data.ChannelObjects.UpdateMask[i]) + { + data.ChannelObjects[i] = packet.ReadPackedGuid128("ChannelObjects", indexes, i); + } + } + } + if (changesMask[6]) + { + data.DisplayID = packet.ReadInt32("DisplayID", indexes); + } + if (changesMask[7]) + { + data.NpcFlags = packet.ReadUInt32("NpcFlags", indexes); + } + if (changesMask[8]) + { + data.NpcFlags2 = packet.ReadUInt32("NpcFlags2", indexes); + } + if (changesMask[9]) + { + data.StateSpellVisualID = packet.ReadUInt32("StateSpellVisualID", indexes); + } + if (changesMask[10]) + { + data.StateAnimID = packet.ReadUInt32("StateAnimID", indexes); + } + if (changesMask[11]) + { + data.StateAnimKitID = packet.ReadUInt32("StateAnimKitID", indexes); + } + if (changesMask[12]) + { + data.StateWorldEffectsQuestObjectiveID = packet.ReadUInt32("StateWorldEffectsQuestObjectiveID", indexes); + } + if (changesMask[13]) + { + data.SpellOverrideNameID = packet.ReadInt32("SpellOverrideNameID", indexes); + } + if (changesMask[14]) + { + data.Charm = packet.ReadPackedGuid128("Charm", indexes); + } + if (changesMask[15]) + { + data.Summon = packet.ReadPackedGuid128("Summon", indexes); + } + if (changesMask[16]) + { + data.Critter = packet.ReadPackedGuid128("Critter", indexes); + } + if (changesMask[17]) + { + data.CharmedBy = packet.ReadPackedGuid128("CharmedBy", indexes); + } + if (changesMask[18]) + { + data.SummonedBy = packet.ReadPackedGuid128("SummonedBy", indexes); + } + if (changesMask[19]) + { + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + } + if (changesMask[20]) + { + data.DemonCreator = packet.ReadPackedGuid128("DemonCreator", indexes); + } + if (changesMask[21]) + { + data.LookAtControllerTarget = packet.ReadPackedGuid128("LookAtControllerTarget", indexes); + } + if (changesMask[22]) + { + data.Target = packet.ReadPackedGuid128("Target", indexes); + } + if (changesMask[23]) + { + data.BattlePetCompanionGUID = packet.ReadPackedGuid128("BattlePetCompanionGUID", indexes); + } + if (changesMask[24]) + { + data.BattlePetDBID = packet.ReadUInt64("BattlePetDBID", indexes); + } + if (changesMask[25]) + { + data.ChannelData = ReadUpdateUnitChannel(packet, indexes, "ChannelData"); + } + if (changesMask[26]) + { + data.SpellEmpowerStage = packet.ReadSByte("SpellEmpowerStage", indexes); + } + if (changesMask[27]) + { + data.SummonedByHomeRealm = packet.ReadUInt32("SummonedByHomeRealm", indexes); + } + if (changesMask[28]) + { + data.Race = packet.ReadByte("Race", indexes); + } + if (changesMask[29]) + { + data.ClassId = packet.ReadByte("ClassId", indexes); + } + if (changesMask[30]) + { + data.PlayerClassId = packet.ReadByte("PlayerClassId", indexes); + } + if (changesMask[31]) + { + data.Sex = packet.ReadByte("Sex", indexes); + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + data.DisplayPower = packet.ReadByte("DisplayPower", indexes); + } + if (changesMask[34]) + { + data.OverrideDisplayPowerID = packet.ReadUInt32("OverrideDisplayPowerID", indexes); + } + if (changesMask[35]) + { + data.Health = packet.ReadInt64("Health", indexes); + } + if (changesMask[36]) + { + data.MaxHealth = packet.ReadInt64("MaxHealth", indexes); + } + if (changesMask[37]) + { + data.Level = packet.ReadInt32("Level", indexes); + } + if (changesMask[38]) + { + data.EffectiveLevel = packet.ReadInt32("EffectiveLevel", indexes); + } + if (changesMask[39]) + { + data.ContentTuningID = packet.ReadInt32("ContentTuningID", indexes); + } + if (changesMask[40]) + { + data.ScalingLevelMin = packet.ReadInt32("ScalingLevelMin", indexes); + } + if (changesMask[41]) + { + data.ScalingLevelMax = packet.ReadInt32("ScalingLevelMax", indexes); + } + if (changesMask[42]) + { + data.ScalingLevelDelta = packet.ReadInt32("ScalingLevelDelta", indexes); + } + if (changesMask[43]) + { + data.ScalingFactionGroup = packet.ReadInt32("ScalingFactionGroup", indexes); + } + if (changesMask[44]) + { + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + } + if (changesMask[45]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[46]) + { + data.Flags2 = packet.ReadUInt32("Flags2", indexes); + } + if (changesMask[47]) + { + data.Flags3 = packet.ReadUInt32("Flags3", indexes); + } + if (changesMask[48]) + { + data.AuraState = packet.ReadUInt32("AuraState", indexes); + } + if (changesMask[49]) + { + data.RangedAttackRoundBaseTime = packet.ReadUInt32("RangedAttackRoundBaseTime", indexes); + } + if (changesMask[50]) + { + data.BoundingRadius = packet.ReadSingle("BoundingRadius", indexes); + } + if (changesMask[51]) + { + data.CombatReach = packet.ReadSingle("CombatReach", indexes); + } + if (changesMask[52]) + { + data.DisplayScale = packet.ReadSingle("DisplayScale", indexes); + } + if (changesMask[53]) + { + data.CreatureFamily = packet.ReadInt32("CreatureFamily", indexes); + } + if (changesMask[54]) + { + data.CreatureType = packet.ReadInt32("CreatureType", indexes); + } + if (changesMask[55]) + { + data.NativeDisplayID = packet.ReadInt32("NativeDisplayID", indexes); + } + if (changesMask[56]) + { + data.NativeXDisplayScale = packet.ReadSingle("NativeXDisplayScale", indexes); + } + if (changesMask[57]) + { + data.MountDisplayID = packet.ReadInt32("MountDisplayID", indexes); + } + if (changesMask[58]) + { + data.CosmeticMountDisplayID = packet.ReadInt32("CosmeticMountDisplayID", indexes); + } + if (changesMask[59]) + { + data.MinDamage = packet.ReadSingle("MinDamage", indexes); + } + if (changesMask[60]) + { + data.MaxDamage = packet.ReadSingle("MaxDamage", indexes); + } + if (changesMask[61]) + { + data.MinOffHandDamage = packet.ReadSingle("MinOffHandDamage", indexes); + } + if (changesMask[62]) + { + data.MaxOffHandDamage = packet.ReadSingle("MaxOffHandDamage", indexes); + } + if (changesMask[63]) + { + data.StandState = packet.ReadByte("StandState", indexes); + } + } + if (changesMask[64]) + { + if (changesMask[65]) + { + data.PetTalentPoints = packet.ReadByte("PetTalentPoints", indexes); + } + if (changesMask[66]) + { + data.VisFlags = packet.ReadByte("VisFlags", indexes); + } + if (changesMask[67]) + { + data.AnimTier = packet.ReadByte("AnimTier", indexes); + } + if (changesMask[68]) + { + data.PetNumber = packet.ReadUInt32("PetNumber", indexes); + } + if (changesMask[69]) + { + data.PetNameTimestamp = packet.ReadUInt32("PetNameTimestamp", indexes); + } + if (changesMask[70]) + { + data.PetExperience = packet.ReadUInt32("PetExperience", indexes); + } + if (changesMask[71]) + { + data.PetNextLevelExperience = packet.ReadUInt32("PetNextLevelExperience", indexes); + } + if (changesMask[72]) + { + data.ModCastingSpeed = packet.ReadSingle("ModCastingSpeed", indexes); + } + if (changesMask[73]) + { + data.ModCastingSpeedNeg = packet.ReadSingle("ModCastingSpeedNeg", indexes); + } + if (changesMask[74]) + { + data.ModSpellHaste = packet.ReadSingle("ModSpellHaste", indexes); + } + if (changesMask[75]) + { + data.ModHaste = packet.ReadSingle("ModHaste", indexes); + } + if (changesMask[76]) + { + data.ModRangedHaste = packet.ReadSingle("ModRangedHaste", indexes); + } + if (changesMask[77]) + { + data.ModHasteRegen = packet.ReadSingle("ModHasteRegen", indexes); + } + if (changesMask[78]) + { + data.ModTimeRate = packet.ReadSingle("ModTimeRate", indexes); + } + if (changesMask[79]) + { + data.CreatedBySpell = packet.ReadInt32("CreatedBySpell", indexes); + } + if (changesMask[80]) + { + data.EmoteState = packet.ReadInt32("EmoteState", indexes); + } + if (changesMask[81]) + { + data.BaseMana = packet.ReadInt32("BaseMana", indexes); + } + if (changesMask[82]) + { + data.BaseHealth = packet.ReadInt32("BaseHealth", indexes); + } + if (changesMask[83]) + { + data.SheatheState = packet.ReadByte("SheatheState", indexes); + } + if (changesMask[84]) + { + data.PvpFlags = packet.ReadByte("PvpFlags", indexes); + } + if (changesMask[85]) + { + data.PetFlags = packet.ReadByte("PetFlags", indexes); + } + if (changesMask[86]) + { + data.ShapeshiftForm = packet.ReadByte("ShapeshiftForm", indexes); + } + if (changesMask[87]) + { + data.AttackPower = packet.ReadInt32("AttackPower", indexes); + } + if (changesMask[88]) + { + data.AttackPowerModPos = packet.ReadInt32("AttackPowerModPos", indexes); + } + if (changesMask[89]) + { + data.AttackPowerModNeg = packet.ReadInt32("AttackPowerModNeg", indexes); + } + if (changesMask[90]) + { + data.AttackPowerMultiplier = packet.ReadSingle("AttackPowerMultiplier", indexes); + } + if (changesMask[91]) + { + data.AttackPowerModSupport = packet.ReadInt32("AttackPowerModSupport", indexes); + } + if (changesMask[92]) + { + data.RangedAttackPower = packet.ReadInt32("RangedAttackPower", indexes); + } + if (changesMask[93]) + { + data.RangedAttackPowerModPos = packet.ReadInt32("RangedAttackPowerModPos", indexes); + } + if (changesMask[94]) + { + data.RangedAttackPowerModNeg = packet.ReadInt32("RangedAttackPowerModNeg", indexes); + } + if (changesMask[95]) + { + data.RangedAttackPowerMultiplier = packet.ReadSingle("RangedAttackPowerMultiplier", indexes); + } + } + if (changesMask[96]) + { + if (changesMask[97]) + { + data.RangedAttackPowerModSupport = packet.ReadInt32("RangedAttackPowerModSupport", indexes); + } + if (changesMask[98]) + { + data.MainHandWeaponAttackPower = packet.ReadInt32("MainHandWeaponAttackPower", indexes); + } + if (changesMask[99]) + { + data.OffHandWeaponAttackPower = packet.ReadInt32("OffHandWeaponAttackPower", indexes); + } + if (changesMask[100]) + { + data.RangedWeaponAttackPower = packet.ReadInt32("RangedWeaponAttackPower", indexes); + } + if (changesMask[101]) + { + data.SetAttackSpeedAura = packet.ReadInt32("SetAttackSpeedAura", indexes); + } + if (changesMask[102]) + { + data.Lifesteal = packet.ReadSingle("Lifesteal", indexes); + } + if (changesMask[103]) + { + data.MinRangedDamage = packet.ReadSingle("MinRangedDamage", indexes); + } + if (changesMask[104]) + { + data.MaxRangedDamage = packet.ReadSingle("MaxRangedDamage", indexes); + } + if (changesMask[105]) + { + data.ManaCostMultiplier = packet.ReadSingle("ManaCostMultiplier", indexes); + } + if (changesMask[106]) + { + data.MaxHealthModifier = packet.ReadSingle("MaxHealthModifier", indexes); + } + if (changesMask[107]) + { + data.HoverHeight = packet.ReadSingle("HoverHeight", indexes); + } + if (changesMask[108]) + { + data.MinItemLevelCutoff = packet.ReadInt32("MinItemLevelCutoff", indexes); + } + if (changesMask[109]) + { + data.MinItemLevel = packet.ReadInt32("MinItemLevel", indexes); + } + if (changesMask[110]) + { + data.MaxItemLevel = packet.ReadInt32("MaxItemLevel", indexes); + } + if (changesMask[111]) + { + data.AzeriteItemLevel = packet.ReadInt32("AzeriteItemLevel", indexes); + } + if (changesMask[112]) + { + data.WildBattlePetLevel = packet.ReadInt32("WildBattlePetLevel", indexes); + } + if (changesMask[113]) + { + data.BattlePetCompanionExperience = packet.ReadInt32("BattlePetCompanionExperience", indexes); + } + if (changesMask[114]) + { + data.BattlePetCompanionNameTimestamp = packet.ReadUInt32("BattlePetCompanionNameTimestamp", indexes); + } + if (changesMask[115]) + { + data.InteractSpellID = packet.ReadInt32("InteractSpellID", indexes); + } + if (changesMask[116]) + { + data.ScaleDuration = packet.ReadInt32("ScaleDuration", indexes); + } + if (changesMask[117]) + { + data.LooksLikeMountID = packet.ReadInt32("LooksLikeMountID", indexes); + } + if (changesMask[118]) + { + data.LooksLikeCreatureID = packet.ReadInt32("LooksLikeCreatureID", indexes); + } + if (changesMask[119]) + { + data.LookAtControllerID = packet.ReadInt32("LookAtControllerID", indexes); + } + if (changesMask[120]) + { + data.PerksVendorItemID = packet.ReadInt32("PerksVendorItemID", indexes); + } + if (changesMask[121]) + { + data.TaxiNodesID = packet.ReadInt32("TaxiNodesID", indexes); + } + if (changesMask[122]) + { + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + } + if (changesMask[123]) + { + data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + } + if (changesMask[124]) + { + data.GlideEventSpeedDivisor = packet.ReadSingle("GlideEventSpeedDivisor", indexes); + } + if (changesMask[125]) + { + data.MaxHealthModifierFlatNeg = packet.ReadInt32("MaxHealthModifierFlatNeg", indexes); + } + if (changesMask[126]) + { + data.MaxHealthModifierFlatPos = packet.ReadInt32("MaxHealthModifierFlatPos", indexes); + } + if (changesMask[127]) + { + data.SilencedSchoolMask = packet.ReadUInt32("SilencedSchoolMask", indexes); + } + } + if (changesMask[128]) + { + if (changesMask[129]) + { + data.CurrentAreaID = packet.ReadUInt32("CurrentAreaID", indexes); + } + if (changesMask[130]) + { + data.Field_31C = packet.ReadSingle("Field_31C", indexes); + } + if (changesMask[131]) + { + data.Field_320 = packet.ReadSingle("Field_320", indexes); + } + if (changesMask[132]) + { + data.NameplateAttachToGUID = packet.ReadPackedGuid128("NameplateAttachToGUID", indexes); + } + } + if (changesMask[133]) + { + for (var i = 0; i < 10; ++i) + { + if (changesMask[134 + i]) + { + data.Power[i] = packet.ReadInt32("Power", indexes, i); + } + if (changesMask[144 + i]) + { + data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i); + } + if (changesMask[154 + i]) + { + data.PowerRegenFlatModifier[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i); + } + if (changesMask[164 + i]) + { + data.PowerRegenInterruptedFlatModifier[i] = packet.ReadSingle("PowerRegenInterruptedFlatModifier", indexes, i); + } + } + } + if (changesMask[174]) + { + for (var i = 0; i < 3; ++i) + { + if (changesMask[175 + i]) + { + data.VirtualItems[i] = ReadUpdateVisibleItem(packet, indexes, "VirtualItems", i); + } + } + } + if (changesMask[178]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[179 + i]) + { + data.AttackRoundBaseTime[i] = packet.ReadUInt32("AttackRoundBaseTime", indexes, i); + } + } + } + if (changesMask[181]) + { + for (var i = 0; i < 4; ++i) + { + if (changesMask[182 + i]) + { + data.Stats[i] = packet.ReadInt32("Stats", indexes, i); + } + if (changesMask[186 + i]) + { + data.StatPosBuff[i] = packet.ReadInt32("StatPosBuff", indexes, i); + } + if (changesMask[190 + i]) + { + data.StatNegBuff[i] = packet.ReadInt32("StatNegBuff", indexes, i); + } + if (changesMask[194 + i]) + { + data.StatSupportBuff[i] = packet.ReadInt32("StatSupportBuff", indexes, i); + } + } + } + if (changesMask[198]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[199 + i]) + { + data.Resistances[i] = packet.ReadInt32("Resistances", indexes, i); + } + if (changesMask[206 + i]) + { + data.BonusResistanceMods[i] = packet.ReadInt32("BonusResistanceMods", indexes, i); + } + if (changesMask[213 + i]) + { + data.ManaCostModifier[i] = packet.ReadInt32("ManaCostModifier", indexes, i); + } + } + } + return data; + } + + public static IChrCustomizationChoice ReadCreateChrCustomizationChoice(Packet packet, params object[] indexes) + { + var data = new ChrCustomizationChoice(); + packet.ResetBitReader(); + data.ChrCustomizationOptionID = packet.ReadUInt32("ChrCustomizationOptionID", indexes); + data.ChrCustomizationChoiceID = packet.ReadUInt32("ChrCustomizationChoiceID", indexes); + return data; + } + + public static IChrCustomizationChoice ReadUpdateChrCustomizationChoice(Packet packet, params object[] indexes) + { + var data = new ChrCustomizationChoice(); + packet.ResetBitReader(); + data.ChrCustomizationOptionID = packet.ReadUInt32("ChrCustomizationOptionID", indexes); + data.ChrCustomizationChoiceID = packet.ReadUInt32("ChrCustomizationChoiceID", indexes); + return data; + } + + public static IQuestLog ReadCreateQuestLog(Packet packet, params object[] indexes) + { + var data = new QuestLog(); + packet.ResetBitReader(); + data.EndTime = packet.ReadInt64("EndTime", indexes); + data.QuestID = packet.ReadInt32("QuestID", indexes); + data.StateFlags = packet.ReadUInt32("StateFlags", indexes); + data.ObjectiveFlags = packet.ReadUInt32("ObjectiveFlags", indexes); + for (var i = 0; i < 24; ++i) + { + data.ObjectiveProgress[i] = packet.ReadInt16("ObjectiveProgress", indexes, i); + } + return data; + } + + public static IQuestLog ReadUpdateQuestLog(Packet packet, params object[] indexes) + { + var data = new QuestLog(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(1); + var maskMask = new BitArray(rawMaskMask); + if (maskMask[0]) + rawChangesMask[0] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.EndTime = packet.ReadInt64("EndTime", indexes); + } + if (changesMask[2]) + { + data.QuestID = packet.ReadInt32("QuestID", indexes); + } + if (changesMask[3]) + { + data.StateFlags = packet.ReadUInt32("StateFlags", indexes); + } + if (changesMask[4]) + { + data.ObjectiveFlags = packet.ReadUInt32("ObjectiveFlags", indexes); + } + } + if (changesMask[5]) + { + for (var i = 0; i < 24; ++i) + { + if (changesMask[6 + i]) + { + data.ObjectiveProgress[i] = packet.ReadInt16("ObjectiveProgress", indexes, i); + } + } + } + return data; + } + + public static IArenaCooldown ReadCreateArenaCooldown(Packet packet, params object[] indexes) + { + var data = new ArenaCooldown(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.Charges = packet.ReadInt32("Charges", indexes); + data.Flags = packet.ReadUInt32("Flags", indexes); + data.StartTime = packet.ReadUInt32("StartTime", indexes); + data.EndTime = packet.ReadUInt32("EndTime", indexes); + data.NextChargeTime = packet.ReadUInt32("NextChargeTime", indexes); + data.MaxCharges = packet.ReadByte("MaxCharges", indexes); + return data; + } + + public static IArenaCooldown ReadUpdateArenaCooldown(Packet packet, params object[] indexes) + { + var data = new ArenaCooldown(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(8); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.SpellID = packet.ReadInt32("SpellID", indexes); + } + if (changesMask[2]) + { + data.Charges = packet.ReadInt32("Charges", indexes); + } + if (changesMask[3]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[4]) + { + data.StartTime = packet.ReadUInt32("StartTime", indexes); + } + if (changesMask[5]) + { + data.EndTime = packet.ReadUInt32("EndTime", indexes); + } + if (changesMask[6]) + { + data.NextChargeTime = packet.ReadUInt32("NextChargeTime", indexes); + } + if (changesMask[7]) + { + data.MaxCharges = packet.ReadByte("MaxCharges", indexes); + } + } + return data; + } + + public static IZonePlayerForcedReaction ReadCreateZonePlayerForcedReaction(Packet packet, params object[] indexes) + { + var data = new ZonePlayerForcedReaction(); + packet.ResetBitReader(); + data.FactionID = packet.ReadInt32("FactionID", indexes); + data.Reaction = packet.ReadInt32("Reaction", indexes); + return data; + } + + public static IZonePlayerForcedReaction ReadUpdateZonePlayerForcedReaction(Packet packet, params object[] indexes) + { + var data = new ZonePlayerForcedReaction(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(3); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.FactionID = packet.ReadInt32("FactionID", indexes); + } + if (changesMask[2]) + { + data.Reaction = packet.ReadInt32("Reaction", indexes); + } + } + return data; + } + + public static IPetCreatureName ReadCreatePetCreatureName(Packet packet, params object[] indexes) + { + var data = new PetCreatureName(); + packet.ResetBitReader(); + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.Name = new string('*', (int)packet.ReadBits(8)); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + return data; + } + + public static IPetCreatureName ReadUpdatePetCreatureName(Packet packet, params object[] indexes) + { + var data = new PetCreatureName(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(3); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + } + if (changesMask[2]) + { + data.Name = new string('*', (int)packet.ReadBits(8)); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + } + } + return data; + } + + public static ICTROptions ReadCreateCTROptions(Packet packet, params object[] indexes) + { + var data = new CTROptions(); + packet.ResetBitReader(); + data.ConditionalFlags = packet.ReadInt32("ConditionalFlags", indexes); + data.FactionGroup = packet.ReadUInt32("FactionGroup", indexes); + data.ChromieTimeExpansionMask = packet.ReadUInt32("ChromieTimeExpansionMask", indexes); + return data; + } + + public static ICTROptions ReadUpdateCTROptions(Packet packet, params object[] indexes) + { + var data = new CTROptions(); + packet.ResetBitReader(); + data.ConditionalFlags = packet.ReadInt32("ConditionalFlags", indexes); + data.FactionGroup = packet.ReadUInt32("FactionGroup", indexes); + data.ChromieTimeExpansionMask = packet.ReadUInt32("ChromieTimeExpansionMask", indexes); + return data; + } + + public static IDeclinedNames ReadCreateDeclinedNames(Packet packet, params object[] indexes) + { + var data = new DeclinedNames(); + packet.ResetBitReader(); + for (var i = 0; i < 5; ++i) + { + data.Name[i] = new string('*', (int)packet.ReadBits(10)); + } + packet.ResetBitReader(); + for (var i = 0; i < 5; ++i) + { + data.Name[i] = packet.ReadWoWString("Name", data.Name[i].Length, indexes, i); + } + return data; + } + + public static IDeclinedNames ReadUpdateDeclinedNames(Packet packet, params object[] indexes) + { + var data = new DeclinedNames(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(1); + var maskMask = new BitArray(rawMaskMask); + if (maskMask[0]) + rawChangesMask[0] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[1 + i]) + { + data.Name[i] = new string('*', (int)packet.ReadBits(10)); + } + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[1 + i]) + { + data.Name[i] = packet.ReadWoWString("Name", data.Name[i].Length, indexes, i); + } + } + } + return data; + } + + public static ICustomTabardInfo ReadCreateCustomTabardInfo(Packet packet, params object[] indexes) + { + var data = new CustomTabardInfo(); + packet.ResetBitReader(); + data.EmblemStyle = packet.ReadInt32("EmblemStyle", indexes); + data.EmblemColor = packet.ReadInt32("EmblemColor", indexes); + data.BorderStyle = packet.ReadInt32("BorderStyle", indexes); + data.BorderColor = packet.ReadInt32("BorderColor", indexes); + data.BackgroundColor = packet.ReadInt32("BackgroundColor", indexes); + return data; + } + + public static ICustomTabardInfo ReadUpdateCustomTabardInfo(Packet packet, params object[] indexes) + { + var data = new CustomTabardInfo(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(6); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.EmblemStyle = packet.ReadInt32("EmblemStyle", indexes); + } + if (changesMask[2]) + { + data.EmblemColor = packet.ReadInt32("EmblemColor", indexes); + } + if (changesMask[3]) + { + data.BorderStyle = packet.ReadInt32("BorderStyle", indexes); + } + if (changesMask[4]) + { + data.BorderColor = packet.ReadInt32("BorderColor", indexes); + } + if (changesMask[5]) + { + data.BackgroundColor = packet.ReadInt32("BackgroundColor", indexes); + } + } + return data; + } + + public override IPlayerData ReadCreatePlayerData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new PlayerData(); + packet.ResetBitReader(); + var hasDeclinedNames = false; + data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes); + data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes); + data.BnetAccount = packet.ReadPackedGuid128("BnetAccount", indexes); + data.GuildClubMemberID = packet.ReadUInt64("GuildClubMemberID", indexes); + data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes); + data.PlayerFlags = packet.ReadUInt32("PlayerFlags", indexes); + data.PlayerFlagsEx = packet.ReadUInt32("PlayerFlagsEx", indexes); + data.GuildRankID = packet.ReadUInt32("GuildRankID", indexes); + data.GuildDeleteDate = packet.ReadUInt32("GuildDeleteDate", indexes); + data.GuildLevel = packet.ReadInt32("GuildLevel", indexes); + data.Customizations.Resize(packet.ReadUInt32()); + data.QaCustomizations.Resize(packet.ReadUInt32()); + for (var i = 0; i < 2; ++i) + { + data.PartyType[i] = packet.ReadByte("PartyType", indexes, i); + } + data.NativeSex = packet.ReadByte("NativeSex", indexes); + data.Inebriation = packet.ReadByte("Inebriation", indexes); + data.PvpTitle = packet.ReadByte("PvpTitle", indexes); + data.ArenaFaction = packet.ReadByte("ArenaFaction", indexes); + data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes); + data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes); + if ((flags & UpdateFieldFlag.PartyMember) != UpdateFieldFlag.None) + { + for (var i = 0; i < 175; ++i) + { + data.QuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestLog", i); + } + data.QuestSessionQuestLog.Resize(packet.ReadUInt32()); + } + for (var i = 0; i < 19; ++i) + { + data.VisibleItems[i] = ReadCreateVisibleItem(packet, indexes, "VisibleItems", i); + } + data.PlayerTitle = packet.ReadInt32("PlayerTitle", indexes); + data.FakeInebriation = packet.ReadInt32("FakeInebriation", indexes); + data.VirtualPlayerRealm = packet.ReadUInt32("VirtualPlayerRealm", indexes); + data.CurrentSpecID = packet.ReadUInt32("CurrentSpecID", indexes); + data.TaxiMountAnimKitID = packet.ReadInt32("TaxiMountAnimKitID", indexes); + for (var i = 0; i < 6; ++i) + { + data.AvgItemLevel[i] = packet.ReadSingle("AvgItemLevel", indexes, i); + } + data.CurrentBattlePetBreedQuality = packet.ReadByte("CurrentBattlePetBreedQuality", indexes); + data.HonorLevel = packet.ReadInt32("HonorLevel", indexes); + data.LogoutTime = packet.ReadInt64("LogoutTime", indexes); + data.ArenaCooldowns.Resize(packet.ReadUInt32()); + for (var i = 0; i < 32; ++i) + { + data.ForcedReactions[i] = ReadCreateZonePlayerForcedReaction(packet, indexes, "ForcedReactions", i); + } + data.Field_1AC = packet.ReadInt32("Field_1AC", indexes); + data.Field_1B0 = packet.ReadInt32("Field_1B0", indexes); + data.CurrentBattlePetSpeciesID = packet.ReadInt32("CurrentBattlePetSpeciesID", indexes); + data.PetNames.Resize(packet.ReadUInt32()); + data.CtrOptions = ReadCreateCTROptions(packet, indexes, "CtrOptions"); + data.CovenantID = packet.ReadInt32("CovenantID", indexes); + data.SoulbindID = packet.ReadInt32("SoulbindID", indexes); + data.SpectateTarget = packet.ReadPackedGuid128("SpectateTarget", indexes); + data.Field_200 = packet.ReadInt32("Field_200", indexes); + data.VisualItemReplacements.Resize(packet.ReadUInt32()); + for (var i = 0; i < 19; ++i) + { + data.Field_3120[i] = packet.ReadUInt32("Field_3120", indexes, i); + } + data.PersonalTabard = ReadCreateCustomTabardInfo(packet, indexes, "PersonalTabard"); + for (var i = 0; i < data.Customizations.Count; ++i) + { + data.Customizations[i] = ReadCreateChrCustomizationChoice(packet, indexes, "Customizations", i); + } + for (var i = 0; i < data.QaCustomizations.Count; ++i) + { + data.QaCustomizations[i] = ReadCreateChrCustomizationChoice(packet, indexes, "QaCustomizations", i); + } + if ((flags & UpdateFieldFlag.PartyMember) != UpdateFieldFlag.None) + { + for (var i = 0; i < data.QuestSessionQuestLog.Count; ++i) + { + data.QuestSessionQuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestSessionQuestLog", i); + } + } + for (var i = 0; i < data.ArenaCooldowns.Count; ++i) + { + data.ArenaCooldowns[i] = ReadCreateArenaCooldown(packet, indexes, "ArenaCooldowns", i); + } + for (var i = 0; i < data.VisualItemReplacements.Count; ++i) + { + data.VisualItemReplacements[i] = packet.ReadInt32("VisualItemReplacements", indexes, i); + } + packet.ResetBitReader(); + data.Name = new string('*', (int)packet.ReadBits(6)); + if ((flags & UpdateFieldFlag.PartyMember) != UpdateFieldFlag.None) + { + data.HasQuestSession = packet.ReadBit("HasQuestSession", indexes); + } + data.HasLevelLink = packet.ReadBit("HasLevelLink", indexes); + hasDeclinedNames = packet.ReadBit("HasDeclinedNames", indexes); + Substructures.MythicPlusHandler.ReadDungeonScoreSummary(packet, indexes, "DungeonScore"); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + for (var i = 0; i < 16; ++i) + { + Substructures.ItemHandler.ReadItemInstance(packet, indexes, i, "VisibleEquipableSpells"); + } + for (var i = 0; i < data.PetNames.Count; ++i) + { + data.PetNames[i] = ReadCreatePetCreatureName(packet, indexes, "PetNames", i); + } + if (hasDeclinedNames) + { + data.DeclinedNames = ReadCreateDeclinedNames(packet, indexes, "DeclinedNames"); + } + return data; + } + + public override IPlayerData ReadUpdatePlayerData(Packet packet, params object[] indexes) + { + var data = new PlayerData(); + packet.ResetBitReader(); + var rawChangesMask = new int[11]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(11); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 11; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + var noQuestLogChangesMask = packet.ReadBit(); + var hasDeclinedNames = false; + if (changesMask[0]) + { + if (changesMask[1]) + { + data.HasQuestSession = packet.ReadBit("HasQuestSession", indexes); + } + if (changesMask[2]) + { + data.HasLevelLink = packet.ReadBit("HasLevelLink", indexes); + } + if (changesMask[3]) + { + data.Customizations.ReadUpdateMask(packet); + } + if (changesMask[4]) + { + data.QaCustomizations.ReadUpdateMask(packet); + } + if (changesMask[5]) + { + data.QuestSessionQuestLog.ReadUpdateMask(packet); + } + if (changesMask[6]) + { + data.ArenaCooldowns.ReadUpdateMask(packet); + } + if (changesMask[7]) + { + data.PetNames.ReadUpdateMask(packet); + } + if (changesMask[8]) + { + data.VisualItemReplacements.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + for (var i = 0; i < data.Customizations.Count; ++i) + { + if (data.Customizations.UpdateMask[i]) + { + data.Customizations[i] = ReadUpdateChrCustomizationChoice(packet, indexes, "Customizations", i); + } + } + } + if (changesMask[4]) + { + for (var i = 0; i < data.QaCustomizations.Count; ++i) + { + if (data.QaCustomizations.UpdateMask[i]) + { + data.QaCustomizations[i] = ReadUpdateChrCustomizationChoice(packet, indexes, "QaCustomizations", i); + } + } + } + if (changesMask[5]) + { + for (var i = 0; i < data.QuestSessionQuestLog.Count; ++i) + { + if (data.QuestSessionQuestLog.UpdateMask[i]) + { + if (noQuestLogChangesMask) + data.QuestSessionQuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestSessionQuestLog", i); + else + data.QuestSessionQuestLog[i] = ReadUpdateQuestLog(packet, indexes, "QuestSessionQuestLog", i); + } + } + } + if (changesMask[6]) + { + for (var i = 0; i < data.ArenaCooldowns.Count; ++i) + { + if (data.ArenaCooldowns.UpdateMask[i]) + { + data.ArenaCooldowns[i] = ReadUpdateArenaCooldown(packet, indexes, "ArenaCooldowns", i); + } + } + } + if (changesMask[8]) + { + for (var i = 0; i < data.VisualItemReplacements.Count; ++i) + { + if (data.VisualItemReplacements.UpdateMask[i]) + { + data.VisualItemReplacements[i] = packet.ReadInt32("VisualItemReplacements", indexes, i); + } + } + } + if (changesMask[7]) + { + for (var i = 0; i < data.PetNames.Count; ++i) + { + if (data.PetNames.UpdateMask[i]) + { + data.PetNames[i] = ReadUpdatePetCreatureName(packet, indexes, "PetNames", i); + } + } + } + if (changesMask[9]) + { + data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes); + } + if (changesMask[10]) + { + data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes); + } + if (changesMask[11]) + { + data.BnetAccount = packet.ReadPackedGuid128("BnetAccount", indexes); + } + if (changesMask[12]) + { + data.GuildClubMemberID = packet.ReadUInt64("GuildClubMemberID", indexes); + } + if (changesMask[13]) + { + data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes); + } + if (changesMask[14]) + { + data.PlayerFlags = packet.ReadUInt32("PlayerFlags", indexes); + } + if (changesMask[15]) + { + data.PlayerFlagsEx = packet.ReadUInt32("PlayerFlagsEx", indexes); + } + if (changesMask[16]) + { + data.GuildRankID = packet.ReadUInt32("GuildRankID", indexes); + } + if (changesMask[17]) + { + data.GuildDeleteDate = packet.ReadUInt32("GuildDeleteDate", indexes); + } + if (changesMask[18]) + { + data.GuildLevel = packet.ReadInt32("GuildLevel", indexes); + } + if (changesMask[19]) + { + data.NativeSex = packet.ReadByte("NativeSex", indexes); + } + if (changesMask[20]) + { + data.Inebriation = packet.ReadByte("Inebriation", indexes); + } + if (changesMask[21]) + { + data.PvpTitle = packet.ReadByte("PvpTitle", indexes); + } + if (changesMask[22]) + { + data.ArenaFaction = packet.ReadByte("ArenaFaction", indexes); + } + if (changesMask[23]) + { + data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes); + } + if (changesMask[24]) + { + data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes); + } + if (changesMask[25]) + { + data.PlayerTitle = packet.ReadInt32("PlayerTitle", indexes); + } + if (changesMask[26]) + { + data.FakeInebriation = packet.ReadInt32("FakeInebriation", indexes); + } + if (changesMask[27]) + { + data.VirtualPlayerRealm = packet.ReadUInt32("VirtualPlayerRealm", indexes); + } + if (changesMask[28]) + { + data.CurrentSpecID = packet.ReadUInt32("CurrentSpecID", indexes); + } + if (changesMask[29]) + { + data.TaxiMountAnimKitID = packet.ReadInt32("TaxiMountAnimKitID", indexes); + } + if (changesMask[30]) + { + data.CurrentBattlePetBreedQuality = packet.ReadByte("CurrentBattlePetBreedQuality", indexes); + } + if (changesMask[31]) + { + data.HonorLevel = packet.ReadInt32("HonorLevel", indexes); + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + data.LogoutTime = packet.ReadInt64("LogoutTime", indexes); + } + if (changesMask[35]) + { + data.Field_1AC = packet.ReadInt32("Field_1AC", indexes); + } + if (changesMask[36]) + { + data.Field_1B0 = packet.ReadInt32("Field_1B0", indexes); + } + if (changesMask[37]) + { + data.CurrentBattlePetSpeciesID = packet.ReadInt32("CurrentBattlePetSpeciesID", indexes); + } + if (changesMask[38]) + { + data.CtrOptions = ReadUpdateCTROptions(packet, indexes, "CtrOptions"); + } + if (changesMask[39]) + { + data.CovenantID = packet.ReadInt32("CovenantID", indexes); + } + if (changesMask[40]) + { + data.SoulbindID = packet.ReadInt32("SoulbindID", indexes); + } + if (changesMask[42]) + { + data.SpectateTarget = packet.ReadPackedGuid128("SpectateTarget", indexes); + } + if (changesMask[43]) + { + data.Field_200 = packet.ReadInt32("Field_200", indexes); + } + if (changesMask[45]) + { + data.PersonalTabard = ReadUpdateCustomTabardInfo(packet, indexes, "PersonalTabard"); + } + if (changesMask[34]) + { + data.Name = new string('*', (int)packet.ReadBits(6)); + } + hasDeclinedNames = packet.ReadBit("HasDeclinedNames", indexes); + packet.ResetBitReader(); + if (changesMask[41]) + { + Substructures.MythicPlusHandler.ReadDungeonScoreSummary(packet, indexes, "DungeonScore"); + } + if (changesMask[34]) + { + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + } + if (changesMask[44]) + { + if (hasDeclinedNames) + { + data.DeclinedNames = ReadUpdateDeclinedNames(packet, indexes, "DeclinedNames"); + } + } + } + if (changesMask[46]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[47 + i]) + { + data.PartyType[i] = packet.ReadByte("PartyType", indexes, i); + } + } + } + if (changesMask[49]) + { + for (var i = 0; i < 175; ++i) + { + if (changesMask[50 + i]) + { + if (noQuestLogChangesMask) + data.QuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestLog", i); + else + data.QuestLog[i] = ReadUpdateQuestLog(packet, indexes, "QuestLog", i); + } + } + } + if (changesMask[225]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[226 + i]) + { + data.VisibleItems[i] = ReadUpdateVisibleItem(packet, indexes, "VisibleItems", i); + } + } + } + if (changesMask[245]) + { + for (var i = 0; i < 6; ++i) + { + if (changesMask[246 + i]) + { + data.AvgItemLevel[i] = packet.ReadSingle("AvgItemLevel", indexes, i); + } + } + } + if (changesMask[252]) + { + for (var i = 0; i < 32; ++i) + { + if (changesMask[253 + i]) + { + data.ForcedReactions[i] = ReadUpdateZonePlayerForcedReaction(packet, indexes, "ForcedReactions", i); + } + } + } + if (changesMask[302]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[303 + i]) + { + data.Field_3120[i] = packet.ReadUInt32("Field_3120", indexes, i); + } + } + } + if (changesMask[285]) + { + for (var i = 0; i < 16; ++i) + { + if (changesMask[286 + i]) + { + Substructures.ItemHandler.ReadItemInstance(packet, indexes, i, "VisibleEquipableSpells"); + } + } + } + return data; + } + + public static ISkillInfo ReadCreateSkillInfo(Packet packet, params object[] indexes) + { + var data = new SkillInfo(); + packet.ResetBitReader(); + for (var i = 0; i < 256; ++i) + { + data.SkillLineID[i] = packet.ReadUInt16("SkillLineID", indexes, i); + data.SkillStep[i] = packet.ReadUInt16("SkillStep", indexes, i); + data.SkillRank[i] = packet.ReadUInt16("SkillRank", indexes, i); + data.SkillStartingRank[i] = packet.ReadUInt16("SkillStartingRank", indexes, i); + data.SkillMaxRank[i] = packet.ReadUInt16("SkillMaxRank", indexes, i); + data.SkillTempBonus[i] = packet.ReadInt16("SkillTempBonus", indexes, i); + data.SkillPermBonus[i] = packet.ReadUInt16("SkillPermBonus", indexes, i); + } + return data; + } + + public static ISkillInfo ReadUpdateSkillInfo(Packet packet, params object[] indexes) + { + var data = new SkillInfo(); + packet.ResetBitReader(); + var rawChangesMask = new int[57]; + var rawMaskMask = new int[2]; + for (var i = 0; i < 1; ++i) + rawMaskMask[i] = packet.ReadInt32(); + rawMaskMask[1] = (int)packet.ReadBits(25); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 57; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + for (var i = 0; i < 256; ++i) + { + if (changesMask[1 + i]) + { + data.SkillLineID[i] = packet.ReadUInt16("SkillLineID", indexes, i); + } + if (changesMask[257 + i]) + { + data.SkillStep[i] = packet.ReadUInt16("SkillStep", indexes, i); + } + if (changesMask[513 + i]) + { + data.SkillRank[i] = packet.ReadUInt16("SkillRank", indexes, i); + } + if (changesMask[769 + i]) + { + data.SkillStartingRank[i] = packet.ReadUInt16("SkillStartingRank", indexes, i); + } + if (changesMask[1025 + i]) + { + data.SkillMaxRank[i] = packet.ReadUInt16("SkillMaxRank", indexes, i); + } + if (changesMask[1281 + i]) + { + data.SkillTempBonus[i] = packet.ReadInt16("SkillTempBonus", indexes, i); + } + if (changesMask[1537 + i]) + { + data.SkillPermBonus[i] = packet.ReadUInt16("SkillPermBonus", indexes, i); + } + } + } + return data; + } + + public static IBitVector ReadCreateBitVector(Packet packet, params object[] indexes) + { + var data = new BitVector(); + packet.ResetBitReader(); + data.Values.Resize(packet.ReadUInt32()); + for (var i = 0; i < data.Values.Count; ++i) + { + data.Values[i] = packet.ReadUInt64("Values", indexes, i); + } + return data; + } + + public static IBitVector ReadUpdateBitVector(Packet packet, params object[] indexes) + { + var data = new BitVector(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(2); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Values.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (var i = 0; i < data.Values.Count; ++i) + { + if (data.Values.UpdateMask[i]) + { + data.Values[i] = packet.ReadUInt64("Values", indexes, i); + } + } + } + } + return data; + } + + public static IBitVectors ReadCreateBitVectors(Packet packet, params object[] indexes) + { + var data = new BitVectors(); + packet.ResetBitReader(); + for (var i = 0; i < 13; ++i) + { + data.Values[i] = ReadCreateBitVector(packet, indexes, "Values", i); + } + return data; + } + + public static IBitVectors ReadUpdateBitVectors(Packet packet, params object[] indexes) + { + var data = new BitVectors(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(1); + var maskMask = new BitArray(rawMaskMask); + if (maskMask[0]) + rawChangesMask[0] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + for (var i = 0; i < 13; ++i) + { + if (changesMask[1 + i]) + { + data.Values[i] = ReadUpdateBitVector(packet, indexes, "Values", i); + } + } + } + return data; + } + + public static IPlayerDataElement ReadCreatePlayerDataElement(Packet packet, params object[] indexes) + { + var data = new PlayerDataElement(); + packet.ResetBitReader(); + data.Type = packet.ReadBits("Type", 1, indexes); + if (data.Type == 1) + { + data.FloatValue = packet.ReadSingle("FloatValue", indexes); + } + if (data.Type == 0) + { + data.Int64Value = packet.ReadInt64("Int64Value", indexes); + } + return data; + } + + public static IPlayerDataElement ReadUpdatePlayerDataElement(Packet packet, params object[] indexes) + { + var data = new PlayerDataElement(); + packet.ResetBitReader(); + data.Type = packet.ReadBits("Type", 1, indexes); + if (data.Type == 1) + { + data.FloatValue = packet.ReadSingle("FloatValue", indexes); + } + if (data.Type == 0) + { + data.Int64Value = packet.ReadInt64("Int64Value", indexes); + } + return data; + } + + public static IRestInfo ReadCreateRestInfo(Packet packet, params object[] indexes) + { + var data = new RestInfo(); + packet.ResetBitReader(); + data.Threshold = packet.ReadUInt32("Threshold", indexes); + data.StateID = packet.ReadByte("StateID", indexes); + return data; + } + + public static IRestInfo ReadUpdateRestInfo(Packet packet, params object[] indexes) + { + var data = new RestInfo(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(3); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Threshold = packet.ReadUInt32("Threshold", indexes); + } + if (changesMask[2]) + { + data.StateID = packet.ReadByte("StateID", indexes); + } + } + return data; + } + + public static IPVPInfo ReadCreatePVPInfo(Packet packet, params object[] indexes) + { + var data = new PVPInfo(); + packet.ResetBitReader(); + data.Bracket = packet.ReadSByte("Bracket", indexes); + data.PvpRatingID = packet.ReadInt32("PvpRatingID", indexes); + data.WeeklyPlayed = packet.ReadUInt32("WeeklyPlayed", indexes); + data.WeeklyWon = packet.ReadUInt32("WeeklyWon", indexes); + data.SeasonPlayed = packet.ReadUInt32("SeasonPlayed", indexes); + data.SeasonWon = packet.ReadUInt32("SeasonWon", indexes); + data.Rating = packet.ReadUInt32("Rating", indexes); + data.WeeklyBestRating = packet.ReadUInt32("WeeklyBestRating", indexes); + data.SeasonBestRating = packet.ReadUInt32("SeasonBestRating", indexes); + data.PvpTierID = packet.ReadUInt32("PvpTierID", indexes); + data.WeeklyBestWinPvpTierID = packet.ReadUInt32("WeeklyBestWinPvpTierID", indexes); + data.Field_28 = packet.ReadUInt32("Field_28", indexes); + data.Field_2C = packet.ReadUInt32("Field_2C", indexes); + data.WeeklyRoundsPlayed = packet.ReadUInt32("WeeklyRoundsPlayed", indexes); + data.WeeklyRoundsWon = packet.ReadUInt32("WeeklyRoundsWon", indexes); + data.SeasonRoundsPlayed = packet.ReadUInt32("SeasonRoundsPlayed", indexes); + data.SeasonRoundsWon = packet.ReadUInt32("SeasonRoundsWon", indexes); + data.Disqualified = packet.ReadBit("Disqualified", indexes); + return data; + } + + public static IPVPInfo ReadUpdatePVPInfo(Packet packet, params object[] indexes) + { + var data = new PVPInfo(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(19); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Disqualified = packet.ReadBit("Disqualified", indexes); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + data.Bracket = packet.ReadSByte("Bracket", indexes); + } + if (changesMask[3]) + { + data.PvpRatingID = packet.ReadInt32("PvpRatingID", indexes); + } + if (changesMask[4]) + { + data.WeeklyPlayed = packet.ReadUInt32("WeeklyPlayed", indexes); + } + if (changesMask[5]) + { + data.WeeklyWon = packet.ReadUInt32("WeeklyWon", indexes); + } + if (changesMask[6]) + { + data.SeasonPlayed = packet.ReadUInt32("SeasonPlayed", indexes); + } + if (changesMask[7]) + { + data.SeasonWon = packet.ReadUInt32("SeasonWon", indexes); + } + if (changesMask[8]) + { + data.Rating = packet.ReadUInt32("Rating", indexes); + } + if (changesMask[9]) + { + data.WeeklyBestRating = packet.ReadUInt32("WeeklyBestRating", indexes); + } + if (changesMask[10]) + { + data.SeasonBestRating = packet.ReadUInt32("SeasonBestRating", indexes); + } + if (changesMask[11]) + { + data.PvpTierID = packet.ReadUInt32("PvpTierID", indexes); + } + if (changesMask[12]) + { + data.WeeklyBestWinPvpTierID = packet.ReadUInt32("WeeklyBestWinPvpTierID", indexes); + } + if (changesMask[13]) + { + data.Field_28 = packet.ReadUInt32("Field_28", indexes); + } + if (changesMask[14]) + { + data.Field_2C = packet.ReadUInt32("Field_2C", indexes); + } + if (changesMask[15]) + { + data.WeeklyRoundsPlayed = packet.ReadUInt32("WeeklyRoundsPlayed", indexes); + } + if (changesMask[16]) + { + data.WeeklyRoundsWon = packet.ReadUInt32("WeeklyRoundsWon", indexes); + } + if (changesMask[17]) + { + data.SeasonRoundsPlayed = packet.ReadUInt32("SeasonRoundsPlayed", indexes); + } + if (changesMask[18]) + { + data.SeasonRoundsWon = packet.ReadUInt32("SeasonRoundsWon", indexes); + } + } + return data; + } + + public static ICharacterRestriction ReadCreateCharacterRestriction(Packet packet, params object[] indexes) + { + var data = new CharacterRestriction(); + packet.ResetBitReader(); + data.Field_0 = packet.ReadInt32("Field_0", indexes); + data.Field_4 = packet.ReadInt32("Field_4", indexes); + data.Field_8 = packet.ReadInt32("Field_8", indexes); + data.Type = packet.ReadBits("Type", 5, indexes); + return data; + } + + public static ICharacterRestriction ReadUpdateCharacterRestriction(Packet packet, params object[] indexes) + { + var data = new CharacterRestriction(); + packet.ResetBitReader(); + data.Field_0 = packet.ReadInt32("Field_0", indexes); + data.Field_4 = packet.ReadInt32("Field_4", indexes); + data.Field_8 = packet.ReadInt32("Field_8", indexes); + data.Type = packet.ReadBits("Type", 5, indexes); + return data; + } + + public static ISpellPctModByLabel ReadCreateSpellPctModByLabel(Packet packet, params object[] indexes) + { + var data = new SpellPctModByLabel(); + packet.ResetBitReader(); + data.ModIndex = packet.ReadInt32("ModIndex", indexes); + data.ModifierValue = packet.ReadSingle("ModifierValue", indexes); + data.LabelID = packet.ReadInt32("LabelID", indexes); + return data; + } + + public static ISpellPctModByLabel ReadUpdateSpellPctModByLabel(Packet packet, params object[] indexes) + { + var data = new SpellPctModByLabel(); + packet.ResetBitReader(); + data.ModIndex = packet.ReadInt32("ModIndex", indexes); + data.ModifierValue = packet.ReadSingle("ModifierValue", indexes); + data.LabelID = packet.ReadInt32("LabelID", indexes); + return data; + } + + public static ISpellFlatModByLabel ReadCreateSpellFlatModByLabel(Packet packet, params object[] indexes) + { + var data = new SpellFlatModByLabel(); + packet.ResetBitReader(); + data.ModIndex = packet.ReadInt32("ModIndex", indexes); + data.ModifierValue = packet.ReadInt32("ModifierValue", indexes); + data.LabelID = packet.ReadInt32("LabelID", indexes); + return data; + } + + public static ISpellFlatModByLabel ReadUpdateSpellFlatModByLabel(Packet packet, params object[] indexes) + { + var data = new SpellFlatModByLabel(); + packet.ResetBitReader(); + data.ModIndex = packet.ReadInt32("ModIndex", indexes); + data.ModifierValue = packet.ReadInt32("ModifierValue", indexes); + data.LabelID = packet.ReadInt32("LabelID", indexes); + return data; + } + + public static ICompletedProject ReadCreateCompletedProject(Packet packet, params object[] indexes) + { + var data = new CompletedProject(); + packet.ResetBitReader(); + data.ProjectID = packet.ReadUInt32("ProjectID", indexes); + data.FirstCompleted = packet.ReadInt64("FirstCompleted", indexes); + data.CompletionCount = packet.ReadUInt32("CompletionCount", indexes); + return data; + } + + public static ICompletedProject ReadUpdateCompletedProject(Packet packet, params object[] indexes) + { + var data = new CompletedProject(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(4); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ProjectID = packet.ReadUInt32("ProjectID", indexes); + } + if (changesMask[2]) + { + data.FirstCompleted = packet.ReadInt64("FirstCompleted", indexes); + } + if (changesMask[3]) + { + data.CompletionCount = packet.ReadUInt32("CompletionCount", indexes); + } + } + return data; + } + + public static IResearchHistory ReadCreateResearchHistory(Packet packet, params object[] indexes) + { + var data = new ResearchHistory(); + packet.ResetBitReader(); + data.CompletedProjects.Resize(packet.ReadUInt32()); + for (var i = 0; i < data.CompletedProjects.Count; ++i) + { + data.CompletedProjects[i] = ReadCreateCompletedProject(packet, indexes, "CompletedProjects", i); + } + return data; + } + + public static IResearchHistory ReadUpdateResearchHistory(Packet packet, params object[] indexes) + { + var data = new ResearchHistory(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(2); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.CompletedProjects.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (var i = 0; i < data.CompletedProjects.Count; ++i) + { + if (data.CompletedProjects.UpdateMask[i]) + { + data.CompletedProjects[i] = ReadUpdateCompletedProject(packet, indexes, "CompletedProjects", i); + } + } + } + } + return data; + } + + public static IMawPower ReadCreateMawPower(Packet packet, params object[] indexes) + { + var data = new MawPower(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.MawPowerID = packet.ReadInt32("MawPowerID", indexes); + data.Stacks = packet.ReadInt32("Stacks", indexes); + return data; + } + + public static IMawPower ReadUpdateMawPower(Packet packet, params object[] indexes) + { + var data = new MawPower(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.MawPowerID = packet.ReadInt32("MawPowerID", indexes); + data.Stacks = packet.ReadInt32("Stacks", indexes); + return data; + } + + public static IMultiFloorExplore ReadCreateMultiFloorExplore(Packet packet, params object[] indexes) + { + var data = new MultiFloorExplore(); + packet.ResetBitReader(); + data.WorldMapOverlayIDs = new int[packet.ReadUInt32()]; + for (var i = 0; i < data.WorldMapOverlayIDs.Length; ++i) + { + data.WorldMapOverlayIDs[i] = packet.ReadInt32("WorldMapOverlayIDs", indexes, i); + } + return data; + } + + public static IMultiFloorExplore ReadUpdateMultiFloorExplore(Packet packet, params object[] indexes) + { + var data = new MultiFloorExplore(); + packet.ResetBitReader(); + data.WorldMapOverlayIDs = new int[packet.ReadUInt32()]; + for (var i = 0; i < data.WorldMapOverlayIDs.Length; ++i) + { + data.WorldMapOverlayIDs[i] = packet.ReadInt32("WorldMapOverlayIDs", indexes, i); + } + packet.ResetBitReader(); + return data; + } + + public static IRecipeProgressionInfo ReadCreateRecipeProgressionInfo(Packet packet, params object[] indexes) + { + var data = new RecipeProgressionInfo(); + packet.ResetBitReader(); + data.RecipeProgressionGroupID = packet.ReadUInt16("RecipeProgressionGroupID", indexes); + data.Experience = packet.ReadUInt16("Experience", indexes); + return data; + } + + public static IRecipeProgressionInfo ReadUpdateRecipeProgressionInfo(Packet packet, params object[] indexes) + { + var data = new RecipeProgressionInfo(); + packet.ResetBitReader(); + data.RecipeProgressionGroupID = packet.ReadUInt16("RecipeProgressionGroupID", indexes); + data.Experience = packet.ReadUInt16("Experience", indexes); + return data; + } + + public static IActivePlayerUnk901 ReadCreateActivePlayerUnk901(Packet packet, params object[] indexes) + { + var data = new ActivePlayerUnk901(); + packet.ResetBitReader(); + data.Field_0 = packet.ReadPackedGuid128("Field_0", indexes); + data.Field_10 = packet.ReadInt32("Field_10", indexes); + return data; + } + + public static IActivePlayerUnk901 ReadUpdateActivePlayerUnk901(Packet packet, params object[] indexes) + { + var data = new ActivePlayerUnk901(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(3); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Field_0 = packet.ReadPackedGuid128("Field_0", indexes); + } + if (changesMask[2]) + { + data.Field_10 = packet.ReadInt32("Field_10", indexes); + } + } + return data; + } + + public static IQuestSession ReadCreateQuestSession(Packet packet, params object[] indexes) + { + var data = new QuestSession(); + packet.ResetBitReader(); + data.Owner = packet.ReadPackedGuid128("Owner", indexes); + data.QuestCompleted = ReadCreateBitVector(packet, indexes, "QuestCompleted"); + return data; + } + + public static IQuestSession ReadUpdateQuestSession(Packet packet, params object[] indexes) + { + var data = new QuestSession(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(3); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Owner = packet.ReadPackedGuid128("Owner", indexes); + } + if (changesMask[2]) + { + data.QuestCompleted = ReadUpdateBitVector(packet, indexes, "QuestCompleted"); + } + } + return data; + } + + public static IReplayedQuest ReadCreateReplayedQuest(Packet packet, params object[] indexes) + { + var data = new ReplayedQuest(); + packet.ResetBitReader(); + data.QuestID = packet.ReadInt32("QuestID", indexes); + data.ReplayTime = packet.ReadUInt32("ReplayTime", indexes); + return data; + } + + public static IReplayedQuest ReadUpdateReplayedQuest(Packet packet, params object[] indexes) + { + var data = new ReplayedQuest(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(3); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.QuestID = packet.ReadInt32("QuestID", indexes); + } + if (changesMask[2]) + { + data.ReplayTime = packet.ReadUInt32("ReplayTime", indexes); + } + } + return data; + } + + public static ITraitEntry ReadCreateTraitEntry(Packet packet, params object[] indexes) + { + var data = new TraitEntry(); + packet.ResetBitReader(); + data.TraitNodeID = packet.ReadInt32("TraitNodeID", indexes); + data.TraitNodeEntryID = packet.ReadInt32("TraitNodeEntryID", indexes); + data.Rank = packet.ReadInt32("Rank", indexes); + data.GrantedRanks = packet.ReadInt32("GrantedRanks", indexes); + return data; + } + + public static ITraitEntry ReadUpdateTraitEntry(Packet packet, params object[] indexes) + { + var data = new TraitEntry(); + packet.ResetBitReader(); + data.TraitNodeID = packet.ReadInt32("TraitNodeID", indexes); + data.TraitNodeEntryID = packet.ReadInt32("TraitNodeEntryID", indexes); + data.Rank = packet.ReadInt32("Rank", indexes); + data.GrantedRanks = packet.ReadInt32("GrantedRanks", indexes); + return data; + } + + public static ITraitSubTreeCache ReadCreateTraitSubTreeCache(Packet packet, params object[] indexes) + { + var data = new TraitSubTreeCache(); + packet.ResetBitReader(); + data.TraitSubTreeID = packet.ReadInt32("TraitSubTreeID", indexes); + data.Entries = new ITraitEntry[packet.ReadUInt32()]; + for (var i = 0; i < data.Entries.Length; ++i) + { + data.Entries[i] = ReadCreateTraitEntry(packet, indexes, "Entries", i); + } + data.Active = packet.ReadBits("Active", 1, indexes); + return data; + } + + public static ITraitSubTreeCache ReadUpdateTraitSubTreeCache(Packet packet, params object[] indexes) + { + var data = new TraitSubTreeCache(); + packet.ResetBitReader(); + data.TraitSubTreeID = packet.ReadInt32("TraitSubTreeID", indexes); + data.Entries = new ITraitEntry[packet.ReadUInt32()]; + for (var i = 0; i < data.Entries.Length; ++i) + { + data.Entries[i] = ReadUpdateTraitEntry(packet, indexes, "Entries", i); + } + packet.ResetBitReader(); + data.Active = packet.ReadBits("Active", 1, indexes); + return data; + } + + public static ITraitConfig ReadCreateTraitConfig(Packet packet, params object[] indexes) + { + var data = new TraitConfig(); + packet.ResetBitReader(); + data.ID = packet.ReadInt32("ID", indexes); + data.Type = packet.ReadInt32("Type", indexes); + data.Entries.Resize(packet.ReadUInt32()); + data.SubTrees.Resize(packet.ReadUInt32()); + if (data.Type == 2) + { + data.SkillLineID = packet.ReadInt32("SkillLineID", indexes); + } + if (data.Type == 1) + { + data.ChrSpecializationID = packet.ReadInt32("ChrSpecializationID", indexes); + data.CombatConfigFlags = packet.ReadInt32("CombatConfigFlags", indexes); + data.LocalIdentifier = packet.ReadInt32("LocalIdentifier", indexes); + } + if (data.Type == 3) + { + data.TraitSystemID = packet.ReadInt32("TraitSystemID", indexes); + } + for (var i = 0; i < data.Entries.Count; ++i) + { + data.Entries[i] = ReadCreateTraitEntry(packet, indexes, "Entries", i); + } + data.Name = new string('*', (int)packet.ReadBits(9)); + for (var i = 0; i < data.SubTrees.Count; ++i) + { + data.SubTrees[i] = ReadCreateTraitSubTreeCache(packet, indexes, "SubTrees", i); + } + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + return data; + } + + public static ITraitConfig ReadUpdateTraitConfig(Packet packet, params object[] indexes) + { + var data = new TraitConfig(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(14); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Entries.ReadUpdateMask(packet); + } + if (changesMask[2]) + { + data.SubTrees.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (var i = 0; i < data.Entries.Count; ++i) + { + if (data.Entries.UpdateMask[i]) + { + data.Entries[i] = ReadUpdateTraitEntry(packet, indexes, "Entries", i); + } + } + } + if (changesMask[2]) + { + for (var i = 0; i < data.SubTrees.Count; ++i) + { + if (data.SubTrees.UpdateMask[i]) + { + data.SubTrees[i] = ReadUpdateTraitSubTreeCache(packet, indexes, "SubTrees", i); + } + } + } + if (changesMask[3]) + { + data.ID = packet.ReadInt32("ID", indexes); + } + } + if (changesMask[4]) + { + if (changesMask[6]) + { + data.Type = packet.ReadInt32("Type", indexes); + } + if (changesMask[7]) + { + if (data.Type == 2) + { + data.SkillLineID = packet.ReadInt32("SkillLineID", indexes); + } + } + } + if (changesMask[8]) + { + if (changesMask[9]) + { + if (data.Type == 1) + { + data.ChrSpecializationID = packet.ReadInt32("ChrSpecializationID", indexes); + } + } + if (changesMask[10]) + { + if (data.Type == 1) + { + data.CombatConfigFlags = packet.ReadInt32("CombatConfigFlags", indexes); + } + } + if (changesMask[11]) + { + if (data.Type == 1) + { + data.LocalIdentifier = packet.ReadInt32("LocalIdentifier", indexes); + } + } + } + if (changesMask[12]) + { + if (changesMask[13]) + { + if (data.Type == 3) + { + data.TraitSystemID = packet.ReadInt32("TraitSystemID", indexes); + } + } + } + if (changesMask[4]) + { + if (changesMask[5]) + { + data.Name = new string('*', (int)packet.ReadBits(9)); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + } + } + return data; + } + + public static ICraftingOrderItem ReadCreateCraftingOrderItem(Packet packet, params object[] indexes) + { + var data = new CraftingOrderItem(); + packet.ResetBitReader(); + var hasDataSlotIndex = false; + data.Field_0 = packet.ReadUInt64("Field_0", indexes); + data.ItemGUID = packet.ReadPackedGuid128("ItemGUID", indexes); + data.OwnerGUID = packet.ReadPackedGuid128("OwnerGUID", indexes); + data.ItemID = packet.ReadInt32("ItemID", indexes); + data.Quantity = packet.ReadUInt32("Quantity", indexes); + data.ReagentQuality = packet.ReadInt32("ReagentQuality", indexes); + hasDataSlotIndex = packet.ReadBit("HasDataSlotIndex", indexes); + packet.ResetBitReader(); + if (hasDataSlotIndex) + { + data.DataSlotIndex = packet.ReadByte("DataSlotIndex", indexes); + } + return data; + } + + public static ICraftingOrderItem ReadUpdateCraftingOrderItem(Packet packet, params object[] indexes) + { + var data = new CraftingOrderItem(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(7); + var changesMask = new BitArray(rawChangesMask); + + var hasDataSlotIndex = false; + packet.ResetBitReader(); + if (changesMask[0]) + { + data.Field_0 = packet.ReadUInt64("Field_0", indexes); + } + if (changesMask[1]) + { + data.ItemGUID = packet.ReadPackedGuid128("ItemGUID", indexes); + } + if (changesMask[2]) + { + data.OwnerGUID = packet.ReadPackedGuid128("OwnerGUID", indexes); + } + if (changesMask[3]) + { + data.ItemID = packet.ReadInt32("ItemID", indexes); + } + if (changesMask[4]) + { + data.Quantity = packet.ReadUInt32("Quantity", indexes); + } + if (changesMask[5]) + { + data.ReagentQuality = packet.ReadInt32("ReagentQuality", indexes); + } + hasDataSlotIndex = packet.ReadBit("HasDataSlotIndex", indexes); + packet.ResetBitReader(); + if (changesMask[6]) + { + if (hasDataSlotIndex) + { + data.DataSlotIndex = packet.ReadByte("DataSlotIndex", indexes); + } + } + return data; + } + + public static ICraftingOrderCustomer ReadCreateCraftingOrderCustomer(Packet packet, params object[] indexes) + { + var data = new CraftingOrderCustomer(); + packet.ResetBitReader(); + data.CustomerGUID = packet.ReadPackedGuid128("CustomerGUID", indexes); + data.CustomerAccountGUID = packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + return data; + } + + public static ICraftingOrderCustomer ReadUpdateCraftingOrderCustomer(Packet packet, params object[] indexes) + { + var data = new CraftingOrderCustomer(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(2); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + data.CustomerGUID = packet.ReadPackedGuid128("CustomerGUID", indexes); + } + if (changesMask[1]) + { + data.CustomerAccountGUID = packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + } + return data; + } + + public static ICraftingOrderNpcCustomer ReadCreateCraftingOrderNpcCustomer(Packet packet, params object[] indexes) + { + var data = new CraftingOrderNpcCustomer(); + packet.ResetBitReader(); + data.NpcCraftingOrderCustomerID = packet.ReadInt64("NpcCraftingOrderCustomerID", indexes); + data.Field_8 = packet.ReadInt32("Field_8", indexes); + return data; + } + + public static ICraftingOrderNpcCustomer ReadUpdateCraftingOrderNpcCustomer(Packet packet, params object[] indexes) + { + var data = new CraftingOrderNpcCustomer(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(2); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + data.NpcCraftingOrderCustomerID = packet.ReadInt64("NpcCraftingOrderCustomerID", indexes); + } + if (changesMask[1]) + { + data.Field_8 = packet.ReadInt32("Field_8", indexes); + } + return data; + } + + public static ICraftingOrderData ReadCreateCraftingOrderData(Packet packet, params object[] indexes) + { + var data = new CraftingOrderData(); + packet.ResetBitReader(); + var hasCustomer = false; + var hasNpcCustomer = false; + var hasOutputItem = false; + var hasOutputItemData = false; + data.Field_0 = packet.ReadInt32("Field_0", indexes); + data.OrderID = packet.ReadUInt64("OrderID", indexes); + data.SkillLineAbilityID = packet.ReadInt32("SkillLineAbilityID", indexes); + data.OrderState = packet.ReadByte("OrderState", indexes); + data.OrderType = packet.ReadByte("OrderType", indexes); + data.MinQuality = packet.ReadByte("MinQuality", indexes); + data.ExpirationTime = packet.ReadInt64("ExpirationTime", indexes); + data.ClaimEndTime = packet.ReadInt64("ClaimEndTime", indexes); + data.TipAmount = packet.ReadInt64("TipAmount", indexes); + data.ConsortiumCut = packet.ReadInt64("ConsortiumCut", indexes); + data.Flags = packet.ReadUInt32("Flags", indexes); + data.CrafterGUID = packet.ReadPackedGuid128("CrafterGUID", indexes); + data.PersonalCrafterGUID = packet.ReadPackedGuid128("PersonalCrafterGUID", indexes); + data.NpcCraftingOrderSetID = packet.ReadInt32("NpcCraftingOrderSetID", indexes); + data.NpcTreasureID = packet.ReadInt32("NpcTreasureID", indexes); + data.Reagents.Resize(packet.ReadUInt32()); + data.CustomerNotes = new string('*', (int)packet.ReadBits(10)); + hasCustomer = packet.ReadBit("HasCustomer", indexes); + hasNpcCustomer = packet.ReadBit("HasNpcCustomer", indexes); + hasOutputItem = packet.ReadBit("HasOutputItem", indexes); + hasOutputItemData = packet.ReadBit("HasOutputItemData", indexes); + packet.ResetBitReader(); + for (var i = 0; i < data.Reagents.Count; ++i) + { + data.Reagents[i] = ReadCreateCraftingOrderItem(packet, indexes, "Reagents", i); + } + data.CustomerNotes = packet.ReadWoWString("CustomerNotes", data.CustomerNotes.Length, indexes); + if (hasCustomer) + { + data.Customer = ReadCreateCraftingOrderCustomer(packet, indexes, "Customer"); + } + if (hasNpcCustomer) + { + data.NpcCustomer = ReadCreateCraftingOrderNpcCustomer(packet, indexes, "NpcCustomer"); + } + if (hasOutputItem) + { + data.OutputItem = ReadCreateCraftingOrderItem(packet, indexes, "OutputItem"); + } + if (hasOutputItemData) + { + Substructures.ItemHandler.ReadItemInstance(packet, indexes, "OutputItemData"); + } + return data; + } + + public static ICraftingOrderData ReadUpdateCraftingOrderData(Packet packet, params object[] indexes) + { + var data = new CraftingOrderData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(26); + var changesMask = new BitArray(rawChangesMask); + + var hasCustomer = false; + var hasNpcCustomer = false; + var hasOutputItem = false; + var hasOutputItemData = false; + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Reagents.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (var i = 0; i < data.Reagents.Count; ++i) + { + if (data.Reagents.UpdateMask[i]) + { + data.Reagents[i] = ReadUpdateCraftingOrderItem(packet, indexes, "Reagents", i); + } + } + } + if (changesMask[2]) + { + data.Field_0 = packet.ReadInt32("Field_0", indexes); + } + if (changesMask[3]) + { + data.OrderID = packet.ReadUInt64("OrderID", indexes); + } + if (changesMask[4]) + { + data.SkillLineAbilityID = packet.ReadInt32("SkillLineAbilityID", indexes); + } + if (changesMask[5]) + { + data.OrderState = packet.ReadByte("OrderState", indexes); + } + } + if (changesMask[6]) + { + if (changesMask[7]) + { + data.OrderType = packet.ReadByte("OrderType", indexes); + } + if (changesMask[8]) + { + data.MinQuality = packet.ReadByte("MinQuality", indexes); + } + if (changesMask[9]) + { + data.ExpirationTime = packet.ReadInt64("ExpirationTime", indexes); + } + if (changesMask[10]) + { + data.ClaimEndTime = packet.ReadInt64("ClaimEndTime", indexes); + } + if (changesMask[11]) + { + data.TipAmount = packet.ReadInt64("TipAmount", indexes); + } + } + if (changesMask[12]) + { + if (changesMask[13]) + { + data.ConsortiumCut = packet.ReadInt64("ConsortiumCut", indexes); + } + if (changesMask[14]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[15]) + { + data.CrafterGUID = packet.ReadPackedGuid128("CrafterGUID", indexes); + } + if (changesMask[16]) + { + data.PersonalCrafterGUID = packet.ReadPackedGuid128("PersonalCrafterGUID", indexes); + } + if (changesMask[17]) + { + data.NpcCraftingOrderSetID = packet.ReadInt32("NpcCraftingOrderSetID", indexes); + } + } + if (changesMask[18]) + { + if (changesMask[19]) + { + data.NpcTreasureID = packet.ReadInt32("NpcTreasureID", indexes); + } + if (changesMask[20]) + { + data.CustomerNotes = new string('*', (int)packet.ReadBits(10)); + } + hasCustomer = packet.ReadBit("HasCustomer", indexes); + hasNpcCustomer = packet.ReadBit("HasNpcCustomer", indexes); + hasOutputItem = packet.ReadBit("HasOutputItem", indexes); + } + if (changesMask[24]) + { + hasOutputItemData = packet.ReadBit("HasOutputItemData", indexes); + } + if (changesMask[18]) + { + if (changesMask[20]) + { + data.CustomerNotes = packet.ReadWoWString("CustomerNotes", data.CustomerNotes.Length, indexes); + } + if (changesMask[21]) + { + if (hasCustomer) + { + data.Customer = ReadUpdateCraftingOrderCustomer(packet, indexes, "Customer"); + } + } + if (changesMask[22]) + { + if (hasNpcCustomer) + { + data.NpcCustomer = ReadUpdateCraftingOrderNpcCustomer(packet, indexes, "NpcCustomer"); + } + } + if (changesMask[23]) + { + if (hasOutputItem) + { + data.OutputItem = ReadUpdateCraftingOrderItem(packet, indexes, "OutputItem"); + } + } + } + if (changesMask[24]) + { + if (changesMask[25]) + { + if (hasOutputItemData) + { + Substructures.ItemHandler.ReadItemInstance(packet, indexes, "OutputItemData"); + } + } + } + return data; + } + + public static ICraftingOrder ReadCreateCraftingOrder(Packet packet, params object[] indexes) + { + var data = new CraftingOrder(); + packet.ResetBitReader(); + var hasRecraftItemInfo = false; + data.Data = ReadCreateCraftingOrderData(packet, indexes, "Data"); + hasRecraftItemInfo = packet.ReadBit("HasRecraftItemInfo", indexes); + data.Enchantments.Resize(packet.ReadBits(4)); + data.Gems.Resize(packet.ReadBits(2)); + packet.ResetBitReader(); + if (hasRecraftItemInfo) + { + Substructures.ItemHandler.ReadItemInstance(packet, indexes, "RecraftItemInfo"); + } + for (var i = 0; i < data.Enchantments.Count; ++i) + { + Substructures.ItemHandler.ReadItemEnchantData(packet, indexes, i, "Enchantments"); + } + for (var i = 0; i < data.Gems.Count; ++i) + { + Substructures.ItemHandler.ReadItemGemData(packet, indexes, i, "Gems"); + } + return data; + } + + public static ICraftingOrder ReadUpdateCraftingOrder(Packet packet, params object[] indexes) + { + var data = new CraftingOrder(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(4); + var changesMask = new BitArray(rawChangesMask); + + var hasRecraftItemInfo = false; + if (changesMask[0]) + { + data.Enchantments.ReadUpdateMask(packet, 4); + } + if (changesMask[1]) + { + data.Gems.ReadUpdateMask(packet, 2); + } + packet.ResetBitReader(); + if (changesMask[0]) + { + for (var i = 0; i < data.Enchantments.Count; ++i) + { + if (data.Enchantments.UpdateMask[i]) + { + Substructures.ItemHandler.ReadItemEnchantData(packet, indexes, i, "Enchantments"); + } + } + } + if (changesMask[1]) + { + for (var i = 0; i < data.Gems.Count; ++i) + { + if (data.Gems.UpdateMask[i]) + { + Substructures.ItemHandler.ReadItemGemData(packet, indexes, i, "Gems"); + } + } + } + if (changesMask[2]) + { + data.Data = ReadUpdateCraftingOrderData(packet, indexes, "Data"); + } + hasRecraftItemInfo = packet.ReadBit("HasRecraftItemInfo", indexes); + packet.ResetBitReader(); + if (changesMask[3]) + { + if (hasRecraftItemInfo) + { + Substructures.ItemHandler.ReadItemInstance(packet, indexes, "RecraftItemInfo"); + } + } + return data; + } + + public static IPersonalCraftingOrderCount ReadCreatePersonalCraftingOrderCount(Packet packet, params object[] indexes) + { + var data = new PersonalCraftingOrderCount(); + packet.ResetBitReader(); + data.ProfessionID = packet.ReadInt32("ProfessionID", indexes); + data.Count = packet.ReadUInt32("Count", indexes); + return data; + } + + public static IPersonalCraftingOrderCount ReadUpdatePersonalCraftingOrderCount(Packet packet, params object[] indexes) + { + var data = new PersonalCraftingOrderCount(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(2); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + data.ProfessionID = packet.ReadInt32("ProfessionID", indexes); + } + if (changesMask[1]) + { + data.Count = packet.ReadUInt32("Count", indexes); + } + return data; + } + + public static INPCCraftingOrderInfo ReadCreateNPCCraftingOrderInfo(Packet packet, params object[] indexes) + { + var data = new NPCCraftingOrderInfo(); + packet.ResetBitReader(); + data.OrderID = packet.ReadUInt64("OrderID", indexes); + data.NpcCraftingOrderSetID = packet.ReadInt32("NpcCraftingOrderSetID", indexes); + data.NpcTreasureID = packet.ReadInt32("NpcTreasureID", indexes); + data.NpcCraftingOrderCustomerID = packet.ReadInt32("NpcCraftingOrderCustomerID", indexes); + return data; + } + + public static INPCCraftingOrderInfo ReadUpdateNPCCraftingOrderInfo(Packet packet, params object[] indexes) + { + var data = new NPCCraftingOrderInfo(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(4); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + data.OrderID = packet.ReadUInt64("OrderID", indexes); + } + if (changesMask[1]) + { + data.NpcCraftingOrderSetID = packet.ReadInt32("NpcCraftingOrderSetID", indexes); + } + if (changesMask[2]) + { + data.NpcTreasureID = packet.ReadInt32("NpcTreasureID", indexes); + } + if (changesMask[3]) + { + data.NpcCraftingOrderCustomerID = packet.ReadInt32("NpcCraftingOrderCustomerID", indexes); + } + return data; + } + + public static ICategoryCooldownMod ReadCreateCategoryCooldownMod(Packet packet, params object[] indexes) + { + var data = new CategoryCooldownMod(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.ModCooldown = packet.ReadInt32("ModCooldown", indexes); + return data; + } + + public static ICategoryCooldownMod ReadUpdateCategoryCooldownMod(Packet packet, params object[] indexes) + { + var data = new CategoryCooldownMod(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.ModCooldown = packet.ReadInt32("ModCooldown", indexes); + return data; + } + + public static IWeeklySpellUse ReadCreateWeeklySpellUse(Packet packet, params object[] indexes) + { + var data = new WeeklySpellUse(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.Uses = packet.ReadByte("Uses", indexes); + return data; + } + + public static IWeeklySpellUse ReadUpdateWeeklySpellUse(Packet packet, params object[] indexes) + { + var data = new WeeklySpellUse(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.Uses = packet.ReadByte("Uses", indexes); + return data; + } + + public static IStablePetInfo ReadCreateStablePetInfo(Packet packet, params object[] indexes) + { + var data = new StablePetInfo(); + packet.ResetBitReader(); + data.PetSlot = packet.ReadUInt32("PetSlot", indexes); + data.PetNumber = packet.ReadUInt32("PetNumber", indexes); + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.DisplayID = packet.ReadUInt32("DisplayID", indexes); + data.ExperienceLevel = packet.ReadUInt32("ExperienceLevel", indexes); + data.PetFlags = packet.ReadByte("PetFlags", indexes); + data.Name = new string('*', (int)packet.ReadBits(8)); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + return data; + } + + public static IStablePetInfo ReadUpdateStablePetInfo(Packet packet, params object[] indexes) + { + var data = new StablePetInfo(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(8); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.PetSlot = packet.ReadUInt32("PetSlot", indexes); + } + if (changesMask[2]) + { + data.PetNumber = packet.ReadUInt32("PetNumber", indexes); + } + if (changesMask[3]) + { + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + } + if (changesMask[4]) + { + data.DisplayID = packet.ReadUInt32("DisplayID", indexes); + } + if (changesMask[5]) + { + data.ExperienceLevel = packet.ReadUInt32("ExperienceLevel", indexes); + } + if (changesMask[7]) + { + data.PetFlags = packet.ReadByte("PetFlags", indexes); + } + if (changesMask[6]) + { + data.Name = new string('*', (int)packet.ReadBits(8)); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + } + } + return data; + } + + public static IStableInfo ReadCreateStableInfo(Packet packet, params object[] indexes) + { + var data = new StableInfo(); + packet.ResetBitReader(); + data.Pets.Resize(packet.ReadUInt32()); + data.StableMaster = packet.ReadPackedGuid128("StableMaster", indexes); + for (var i = 0; i < data.Pets.Count; ++i) + { + data.Pets[i] = ReadCreateStablePetInfo(packet, indexes, "Pets", i); + } + return data; + } + + public static IStableInfo ReadUpdateStableInfo(Packet packet, params object[] indexes) + { + var data = new StableInfo(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(3); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Pets.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (var i = 0; i < data.Pets.Count; ++i) + { + if (data.Pets.UpdateMask[i]) + { + data.Pets[i] = ReadUpdateStablePetInfo(packet, indexes, "Pets", i); + } + } + } + if (changesMask[2]) + { + data.StableMaster = packet.ReadPackedGuid128("StableMaster", indexes); + } + } + return data; + } + + public static ICollectableSourceTrackedData ReadCreateCollectableSourceTrackedData(Packet packet, params object[] indexes) + { + var data = new CollectableSourceTrackedData(); + packet.ResetBitReader(); + data.TargetType = packet.ReadInt32("TargetType", indexes); + data.TargetID = packet.ReadInt32("TargetID", indexes); + data.CollectableSourceInfoID = packet.ReadInt32("CollectableSourceInfoID", indexes); + return data; + } + + public static ICollectableSourceTrackedData ReadUpdateCollectableSourceTrackedData(Packet packet, params object[] indexes) + { + var data = new CollectableSourceTrackedData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(4); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.TargetType = packet.ReadInt32("TargetType", indexes); + } + if (changesMask[2]) + { + data.TargetID = packet.ReadInt32("TargetID", indexes); + } + if (changesMask[3]) + { + data.CollectableSourceInfoID = packet.ReadInt32("CollectableSourceInfoID", indexes); + } + } + return data; + } + + public static IBankTabSettings ReadCreateBankTabSettings(Packet packet, params object[] indexes) + { + var data = new BankTabSettings(); + packet.ResetBitReader(); + data.Name = new string('*', (int)packet.ReadBits(7)); + data.Icon = new string('*', (int)packet.ReadBits(9)); + data.Description = new string('*', (int)packet.ReadBits(14)); + data.DepositFlags = packet.ReadInt32("DepositFlags", indexes); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + data.Icon = packet.ReadWoWString("Icon", data.Icon.Length, indexes); + data.Description = packet.ReadWoWString("Description", data.Description.Length, indexes); + return data; + } + + public static IBankTabSettings ReadUpdateBankTabSettings(Packet packet, params object[] indexes) + { + var data = new BankTabSettings(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(4); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + data.Name = new string('*', (int)packet.ReadBits(7)); + } + if (changesMask[1]) + { + data.Icon = new string('*', (int)packet.ReadBits(9)); + } + if (changesMask[2]) + { + data.Description = new string('*', (int)packet.ReadBits(14)); + } + if (changesMask[3]) + { + data.DepositFlags = packet.ReadInt32("DepositFlags", indexes); + } + if (changesMask[0]) + { + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + } + if (changesMask[1]) + { + data.Icon = packet.ReadWoWString("Icon", data.Icon.Length, indexes); + } + if (changesMask[2]) + { + data.Description = packet.ReadWoWString("Description", data.Description.Length, indexes); + } + return data; + } + + public static IWalkInData ReadCreateWalkInData(Packet packet, params object[] indexes) + { + var data = new WalkInData(); + packet.ResetBitReader(); + data.MapID = packet.ReadInt32("MapID", indexes); + data.Field_8 = packet.ReadInt64("Field_8", indexes); + data.Field_18 = packet.ReadPackedGuid128("Field_18", indexes); + data.Type = packet.ReadBits("Type", 1, indexes); + return data; + } + + public static IWalkInData ReadUpdateWalkInData(Packet packet, params object[] indexes) + { + var data = new WalkInData(); + packet.ResetBitReader(); + data.MapID = packet.ReadInt32("MapID", indexes); + data.Field_8 = packet.ReadInt64("Field_8", indexes); + data.Field_18 = packet.ReadPackedGuid128("Field_18", indexes); + data.Type = packet.ReadBits("Type", 1, indexes); + return data; + } + + public static IDelveData ReadCreateDelveData(Packet packet, params object[] indexes) + { + var data = new DelveData(); + packet.ResetBitReader(); + data.Field_0 = packet.ReadInt32("Field_0", indexes); + data.Field_8 = packet.ReadUInt64("Field_8", indexes); + data.Field_10 = packet.ReadInt32("Field_10", indexes); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.Owners = new WowGuid[packet.ReadUInt32()]; + for (var i = 0; i < data.Owners.Length; ++i) + { + data.Owners[i] = packet.ReadPackedGuid128("Owners", indexes, i); + } + data.Started = packet.ReadBits("Started", 1, indexes); + return data; + } + + public static IDelveData ReadUpdateDelveData(Packet packet, params object[] indexes) + { + var data = new DelveData(); + packet.ResetBitReader(); + packet.ResetBitReader(); + data.Field_0 = packet.ReadInt32("Field_0", indexes); + data.Field_8 = packet.ReadUInt64("Field_8", indexes); + data.Field_10 = packet.ReadInt32("Field_10", indexes); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.Owners = new WowGuid[packet.ReadUInt32()]; + for (var i = 0; i < data.Owners.Length; ++i) + { + data.Owners[i] = packet.ReadPackedGuid128("Owners", indexes, i); + } + data.Started = packet.ReadBits("Started", 1, indexes); + return data; + } + + public static IResearch ReadCreateResearch(Packet packet, params object[] indexes) + { + var data = new Research(); + packet.ResetBitReader(); + data.ResearchProjectID = packet.ReadInt16("ResearchProjectID", indexes); + return data; + } + + public static IResearch ReadUpdateResearch(Packet packet, params object[] indexes) + { + var data = new Research(); + packet.ResetBitReader(); + data.ResearchProjectID = packet.ReadInt16("ResearchProjectID", indexes); + return data; + } + + public override IActivePlayerData ReadCreateActivePlayerData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new ActivePlayerData(); + packet.ResetBitReader(); + var hasQuestSession = false; + var hasPetStable = false; + var hasWalkInData = false; + var hasDelveData = false; + for (var i = 0; i < 232; ++i) + { + data.InvSlots[i] = packet.ReadPackedGuid128("InvSlots", indexes, i); + } + data.FarsightObject = packet.ReadPackedGuid128("FarsightObject", indexes); + data.SummonedBattlePetGUID = packet.ReadPackedGuid128("SummonedBattlePetGUID", indexes); + data.KnownTitles.Resize(packet.ReadUInt32()); + data.Coinage = packet.ReadUInt64("Coinage", indexes); + data.AccountBankCoinage = packet.ReadUInt64("AccountBankCoinage", indexes); + data.XP = packet.ReadInt32("XP", indexes); + data.NextLevelXP = packet.ReadInt32("NextLevelXP", indexes); + data.TrialXP = packet.ReadInt32("TrialXP", indexes); + data.Skill = ReadCreateSkillInfo(packet, indexes, "Skill"); + data.CharacterPoints = packet.ReadInt32("CharacterPoints", indexes); + data.MaxTalentTiers = packet.ReadInt32("MaxTalentTiers", indexes); + data.TrackCreatureMask = packet.ReadUInt32("TrackCreatureMask", indexes); + data.MainhandExpertise = packet.ReadSingle("MainhandExpertise", indexes); + data.OffhandExpertise = packet.ReadSingle("OffhandExpertise", indexes); + data.RangedExpertise = packet.ReadSingle("RangedExpertise", indexes); + data.CombatRatingExpertise = packet.ReadSingle("CombatRatingExpertise", indexes); + data.BlockPercentage = packet.ReadSingle("BlockPercentage", indexes); + data.DodgePercentage = packet.ReadSingle("DodgePercentage", indexes); + data.DodgePercentageFromAttribute = packet.ReadSingle("DodgePercentageFromAttribute", indexes); + data.ParryPercentage = packet.ReadSingle("ParryPercentage", indexes); + data.ParryPercentageFromAttribute = packet.ReadSingle("ParryPercentageFromAttribute", indexes); + data.CritPercentage = packet.ReadSingle("CritPercentage", indexes); + data.RangedCritPercentage = packet.ReadSingle("RangedCritPercentage", indexes); + data.OffhandCritPercentage = packet.ReadSingle("OffhandCritPercentage", indexes); + data.SpellCritPercentage = packet.ReadSingle("SpellCritPercentage", indexes); + data.ShieldBlock = packet.ReadInt32("ShieldBlock", indexes); + data.ShieldBlockCritPercentage = packet.ReadSingle("ShieldBlockCritPercentage", indexes); + data.Mastery = packet.ReadSingle("Mastery", indexes); + data.Speed = packet.ReadSingle("Speed", indexes); + data.Avoidance = packet.ReadSingle("Avoidance", indexes); + data.Sturdiness = packet.ReadSingle("Sturdiness", indexes); + data.Versatility = packet.ReadInt32("Versatility", indexes); + data.VersatilityBonus = packet.ReadSingle("VersatilityBonus", indexes); + data.PvpPowerDamage = packet.ReadSingle("PvpPowerDamage", indexes); + data.PvpPowerHealing = packet.ReadSingle("PvpPowerHealing", indexes); + data.BitVectors = ReadCreateBitVectors(packet, indexes, "BitVectors"); + data.CharacterDataElements.Resize(packet.ReadUInt32()); + data.AccountDataElements.Resize(packet.ReadUInt32()); + for (var i = 0; i < 2; ++i) + { + data.RestInfo[i] = ReadCreateRestInfo(packet, indexes, "RestInfo", i); + } + for (var i = 0; i < 7; ++i) + { + data.ModDamageDonePos[i] = packet.ReadInt32("ModDamageDonePos", indexes, i); + data.ModDamageDoneNeg[i] = packet.ReadInt32("ModDamageDoneNeg", indexes, i); + data.ModDamageDonePercent[i] = packet.ReadSingle("ModDamageDonePercent", indexes, i); + data.ModHealingDonePercent[i] = packet.ReadSingle("ModHealingDonePercent", indexes, i); + } + data.ModHealingDonePos = packet.ReadInt32("ModHealingDonePos", indexes); + data.ModHealingPercent = packet.ReadSingle("ModHealingPercent", indexes); + data.ModPeriodicHealingDonePercent = packet.ReadSingle("ModPeriodicHealingDonePercent", indexes); + for (var i = 0; i < 3; ++i) + { + data.WeaponDmgMultipliers[i] = packet.ReadSingle("WeaponDmgMultipliers", indexes, i); + data.WeaponAtkSpeedMultipliers[i] = packet.ReadSingle("WeaponAtkSpeedMultipliers", indexes, i); + } + data.ModSpellPowerPercent = packet.ReadSingle("ModSpellPowerPercent", indexes); + data.ModResiliencePercent = packet.ReadSingle("ModResiliencePercent", indexes); + data.OverrideSpellPowerByAPPercent = packet.ReadSingle("OverrideSpellPowerByAPPercent", indexes); + data.OverrideAPBySpellPowerPercent = packet.ReadSingle("OverrideAPBySpellPowerPercent", indexes); + data.ModTargetResistance = packet.ReadInt32("ModTargetResistance", indexes); + data.ModTargetPhysicalResistance = packet.ReadInt32("ModTargetPhysicalResistance", indexes); + data.LocalFlags = packet.ReadUInt32("LocalFlags", indexes); + data.GrantableLevels = packet.ReadByte("GrantableLevels", indexes); + data.MultiActionBars = packet.ReadByte("MultiActionBars", indexes); + data.LifetimeMaxRank = packet.ReadByte("LifetimeMaxRank", indexes); + data.NumRespecs = packet.ReadByte("NumRespecs", indexes); + data.PvpMedals = packet.ReadUInt32("PvpMedals", indexes); + for (var i = 0; i < 12; ++i) + { + data.BuybackPrice[i] = packet.ReadUInt32("BuybackPrice", indexes, i); + data.BuybackTimestamp[i] = packet.ReadInt64("BuybackTimestamp", indexes, i); + } + data.TodayHonorableKills = packet.ReadUInt16("TodayHonorableKills", indexes); + data.YesterdayHonorableKills = packet.ReadUInt16("YesterdayHonorableKills", indexes); + data.LifetimeHonorableKills = packet.ReadUInt32("LifetimeHonorableKills", indexes); + data.WatchedFactionIndex = packet.ReadInt32("WatchedFactionIndex", indexes); + for (var i = 0; i < 32; ++i) + { + data.CombatRatings[i] = packet.ReadInt32("CombatRatings", indexes, i); + } + data.PvpInfo.Resize(packet.ReadUInt32()); + data.MaxLevel = packet.ReadInt32("MaxLevel", indexes); + data.ScalingPlayerLevelDelta = packet.ReadInt32("ScalingPlayerLevelDelta", indexes); + data.MaxCreatureScalingLevel = packet.ReadInt32("MaxCreatureScalingLevel", indexes); + for (var i = 0; i < 4; ++i) + { + data.NoReagentCostMask[i] = packet.ReadUInt32("NoReagentCostMask", indexes, i); + } + data.PetSpellPower = packet.ReadInt32("PetSpellPower", indexes); + for (var i = 0; i < 2; ++i) + { + data.ProfessionSkillLine[i] = packet.ReadInt32("ProfessionSkillLine", indexes, i); + } + data.UiHitModifier = packet.ReadSingle("UiHitModifier", indexes); + data.UiSpellHitModifier = packet.ReadSingle("UiSpellHitModifier", indexes); + data.HomeRealmTimeOffset = packet.ReadInt32("HomeRealmTimeOffset", indexes); + data.ModPetHaste = packet.ReadSingle("ModPetHaste", indexes); + data.JailersTowerLevelMax = packet.ReadSByte("JailersTowerLevelMax", indexes); + data.JailersTowerLevel = packet.ReadSByte("JailersTowerLevel", indexes); + data.LocalRegenFlags = packet.ReadByte("LocalRegenFlags", indexes); + data.AuraVision = packet.ReadByte("AuraVision", indexes); + data.NumBackpackSlots = packet.ReadByte("NumBackpackSlots", indexes); + data.OverrideSpellsID = packet.ReadInt32("OverrideSpellsID", indexes); + data.LootSpecID = packet.ReadUInt16("LootSpecID", indexes); + data.OverrideZonePVPType = packet.ReadUInt32("OverrideZonePVPType", indexes); + for (var i = 0; i < 5; ++i) + { + data.BagSlotFlags[i] = packet.ReadUInt32("BagSlotFlags", indexes, i); + } + for (var i = 0; i < 7; ++i) + { + data.BankBagSlotFlags[i] = packet.ReadUInt32("BankBagSlotFlags", indexes, i); + } + for (var i = 0; i < 1000; ++i) + { + data.QuestCompleted[i] = packet.ReadUInt64("QuestCompleted", indexes, i); + } + data.Honor = packet.ReadInt32("Honor", indexes); + data.HonorNextLevel = packet.ReadInt32("HonorNextLevel", indexes); + data.PerksProgramCurrency = packet.ReadInt32("PerksProgramCurrency", indexes); + data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); + data.NumAccountBankTabs = packet.ReadByte("NumAccountBankTabs", indexes); + for (var i = 0; i < 1; ++i) + { + data.ResearchSites[i].Resize(packet.ReadUInt32()); + data.ResearchSiteProgress[i].Resize(packet.ReadUInt32()); + data.Research[i].Resize(packet.ReadUInt32()); + for (var j = 0; j < data.ResearchSites[i].Count; ++j) + { + data.ResearchSites[i][j] = packet.ReadUInt16("ResearchSites", indexes, i, j); + } + for (var j = 0; j < data.ResearchSiteProgress[i].Count; ++j) + { + data.ResearchSiteProgress[i][j] = packet.ReadUInt32("ResearchSiteProgress", indexes, i, j); + } + for (var j = 0; j < data.Research[i].Count; ++j) + { + data.Research[i][j] = ReadCreateResearch(packet, indexes, "Research", i, j); + } + } + data.DailyQuestsCompleted.Resize(packet.ReadUInt32()); + data.AvailableQuestLineXQuestIDs.Resize(packet.ReadUInt32()); + data.Heirlooms.Resize(packet.ReadUInt32()); + data.HeirloomFlags.Resize(packet.ReadUInt32()); + data.Toys.Resize(packet.ReadUInt32()); + data.ToyFlags.Resize(packet.ReadUInt32()); + data.Transmog.Resize(packet.ReadUInt32()); + data.ConditionalTransmog.Resize(packet.ReadUInt32()); + data.SelfResSpells.Resize(packet.ReadUInt32()); + data.RuneforgePowers.Resize(packet.ReadUInt32()); + data.TransmogIllusions.Resize(packet.ReadUInt32()); + data.CharacterRestrictions.Resize(packet.ReadUInt32()); + data.SpellPctModByLabel.Resize(packet.ReadUInt32()); + data.SpellFlatModByLabel.Resize(packet.ReadUInt32()); + data.MawPowers.Resize(packet.ReadUInt32()); + data.MultiFloorExploration.Resize(packet.ReadUInt32()); + data.RecipeProgression.Resize(packet.ReadUInt32()); + data.ReplayedQuests.Resize(packet.ReadUInt32()); + data.TaskQuests.Resize(packet.ReadUInt32()); + data.DisabledSpells.Resize(packet.ReadUInt32()); + data.UiChromieTimeExpansionID = packet.ReadInt32("UiChromieTimeExpansionID", indexes); + data.TimerunningSeasonID = packet.ReadInt32("TimerunningSeasonID", indexes); + data.TransportServerTime = packet.ReadInt32("TransportServerTime", indexes); + data.WeeklyRewardsPeriodSinceOrigin = packet.ReadUInt32("WeeklyRewardsPeriodSinceOrigin", indexes); + data.DEBUGSoulbindConduitRank = packet.ReadInt16("DEBUGSoulbindConduitRank", indexes); + data.TraitConfigs.Resize(packet.ReadUInt32()); + data.ActiveCombatTraitConfigID = packet.ReadUInt32("ActiveCombatTraitConfigID", indexes); + data.CraftingOrders.Resize(packet.ReadUInt32()); + data.PersonalCraftingOrderCounts.Resize(packet.ReadUInt32()); + data.NpcCraftingOrders.Resize(packet.ReadUInt32()); + data.CategoryCooldownMods.Resize(packet.ReadUInt32()); + data.WeeklySpellUses.Resize(packet.ReadUInt32()); + for (var i = 0; i < 17; ++i) + { + data.ItemUpgradeHighWatermark[i] = packet.ReadSingle("ItemUpgradeHighWatermark", indexes, i); + } + data.ItemUpgradeHighOnehandWeaponItemID = packet.ReadInt32("ItemUpgradeHighOnehandWeaponItemID", indexes); + data.ItemUpgradeHighFingerItemID = packet.ReadInt32("ItemUpgradeHighFingerItemID", indexes); + data.ItemUpgradeHighFingerWatermark = packet.ReadSingle("ItemUpgradeHighFingerWatermark", indexes); + data.ItemUpgradeHighTrinketItemID = packet.ReadInt32("ItemUpgradeHighTrinketItemID", indexes); + data.ItemUpgradeHighTrinketWatermark = packet.ReadSingle("ItemUpgradeHighTrinketWatermark", indexes); + data.LootHistoryInstanceID = packet.ReadUInt64("LootHistoryInstanceID", indexes); + data.TrackedCollectableSources.Resize(packet.ReadUInt32()); + data.RequiredMountCapabilityFlags = packet.ReadByte("RequiredMountCapabilityFlags", indexes); + for (var i = 0; i < data.KnownTitles.Count; ++i) + { + data.KnownTitles[i] = packet.ReadUInt64("KnownTitles", indexes, i); + } + for (var i = 0; i < data.DailyQuestsCompleted.Count; ++i) + { + data.DailyQuestsCompleted[i] = packet.ReadInt32("DailyQuestsCompleted", indexes, i); + } + for (var i = 0; i < data.AvailableQuestLineXQuestIDs.Count; ++i) + { + data.AvailableQuestLineXQuestIDs[i] = packet.ReadInt32("AvailableQuestLineXQuestIDs", indexes, i); + } + for (var i = 0; i < data.Heirlooms.Count; ++i) + { + data.Heirlooms[i] = packet.ReadInt32("Heirlooms", indexes, i); + } + for (var i = 0; i < data.HeirloomFlags.Count; ++i) + { + data.HeirloomFlags[i] = packet.ReadUInt32("HeirloomFlags", indexes, i); + } + for (var i = 0; i < data.Toys.Count; ++i) + { + data.Toys[i] = packet.ReadInt32("Toys", indexes, i); + } + for (var i = 0; i < data.ToyFlags.Count; ++i) + { + data.ToyFlags[i] = packet.ReadUInt32("ToyFlags", indexes, i); + } + for (var i = 0; i < data.Transmog.Count; ++i) + { + data.Transmog[i] = packet.ReadUInt32("Transmog", indexes, i); + } + for (var i = 0; i < data.ConditionalTransmog.Count; ++i) + { + data.ConditionalTransmog[i] = packet.ReadInt32("ConditionalTransmog", indexes, i); + } + for (var i = 0; i < data.SelfResSpells.Count; ++i) + { + data.SelfResSpells[i] = packet.ReadInt32("SelfResSpells", indexes, i); + } + for (var i = 0; i < data.RuneforgePowers.Count; ++i) + { + data.RuneforgePowers[i] = packet.ReadUInt32("RuneforgePowers", indexes, i); + } + for (var i = 0; i < data.TransmogIllusions.Count; ++i) + { + data.TransmogIllusions[i] = packet.ReadUInt32("TransmogIllusions", indexes, i); + } + for (var i = 0; i < data.SpellPctModByLabel.Count; ++i) + { + data.SpellPctModByLabel[i] = ReadCreateSpellPctModByLabel(packet, indexes, "SpellPctModByLabel", i); + } + for (var i = 0; i < data.SpellFlatModByLabel.Count; ++i) + { + data.SpellFlatModByLabel[i] = ReadCreateSpellFlatModByLabel(packet, indexes, "SpellFlatModByLabel", i); + } + for (var i = 0; i < data.MawPowers.Count; ++i) + { + data.MawPowers[i] = ReadCreateMawPower(packet, indexes, "MawPowers", i); + } + for (var i = 0; i < data.MultiFloorExploration.Count; ++i) + { + data.MultiFloorExploration[i] = ReadCreateMultiFloorExplore(packet, indexes, "MultiFloorExploration", i); + } + for (var i = 0; i < data.RecipeProgression.Count; ++i) + { + data.RecipeProgression[i] = ReadCreateRecipeProgressionInfo(packet, indexes, "RecipeProgression", i); + } + for (var i = 0; i < data.ReplayedQuests.Count; ++i) + { + data.ReplayedQuests[i] = ReadCreateReplayedQuest(packet, indexes, "ReplayedQuests", i); + } + for (var i = 0; i < data.TaskQuests.Count; ++i) + { + data.TaskQuests[i] = ReadCreateQuestLog(packet, indexes, "TaskQuests", i); + } + for (var i = 0; i < data.DisabledSpells.Count; ++i) + { + data.DisabledSpells[i] = packet.ReadInt32("DisabledSpells", indexes, i); + } + for (var i = 0; i < data.PersonalCraftingOrderCounts.Count; ++i) + { + data.PersonalCraftingOrderCounts[i] = ReadCreatePersonalCraftingOrderCount(packet, indexes, "PersonalCraftingOrderCounts", i); + } + for (var i = 0; i < data.NpcCraftingOrders.Count; ++i) + { + data.NpcCraftingOrders[i] = ReadCreateNPCCraftingOrderInfo(packet, indexes, "NpcCraftingOrders", i); + } + for (var i = 0; i < data.CategoryCooldownMods.Count; ++i) + { + data.CategoryCooldownMods[i] = ReadCreateCategoryCooldownMod(packet, indexes, "CategoryCooldownMods", i); + } + for (var i = 0; i < data.WeeklySpellUses.Count; ++i) + { + data.WeeklySpellUses[i] = ReadCreateWeeklySpellUse(packet, indexes, "WeeklySpellUses", i); + } + for (var i = 0; i < data.TrackedCollectableSources.Count; ++i) + { + data.TrackedCollectableSources[i] = ReadCreateCollectableSourceTrackedData(packet, indexes, "TrackedCollectableSources", i); + } + packet.ResetBitReader(); + data.BackpackAutoSortDisabled = packet.ReadBit("BackpackAutoSortDisabled", indexes); + data.BackpackSellJunkDisabled = packet.ReadBit("BackpackSellJunkDisabled", indexes); + data.BankAutoSortDisabled = packet.ReadBit("BankAutoSortDisabled", indexes); + data.SortBagsRightToLeft = packet.ReadBit("SortBagsRightToLeft", indexes); + data.InsertItemsLeftToRight = packet.ReadBit("InsertItemsLeftToRight", indexes); + data.HasPerksProgramPendingReward = packet.ReadBit("HasPerksProgramPendingReward", indexes); + hasQuestSession = packet.ReadBit("HasQuestSession", indexes); + hasPetStable = packet.ReadBit("HasPetStable", indexes); + data.AccountBankTabSettings.Resize(packet.ReadBits(3)); + hasWalkInData = packet.ReadBit("HasWalkInData", indexes); + hasDelveData = packet.ReadBit("HasDelveData", indexes); + packet.ResetBitReader(); + data.ResearchHistory = ReadCreateResearchHistory(packet, indexes, "ResearchHistory"); + if (hasQuestSession) + { + data.QuestSession = ReadCreateQuestSession(packet, indexes, "QuestSession"); + } + Substructures.PerksProgramHandler.ReadPerksVendorItem(packet, indexes, "FrozenPerksVendorItem"); + data.Field_1410 = ReadCreateActivePlayerUnk901(packet, indexes, "Field_1410"); + Substructures.MythicPlusHandler.ReadDungeonScoreData(packet, indexes, "DungeonScore"); + for (var i = 0; i < data.CharacterDataElements.Count; ++i) + { + data.CharacterDataElements[i] = ReadCreatePlayerDataElement(packet, indexes, "CharacterDataElements", i); + } + for (var i = 0; i < data.AccountDataElements.Count; ++i) + { + data.AccountDataElements[i] = ReadCreatePlayerDataElement(packet, indexes, "AccountDataElements", i); + } + for (var i = 0; i < data.PvpInfo.Count; ++i) + { + data.PvpInfo[i] = ReadCreatePVPInfo(packet, indexes, "PvpInfo", i); + } + for (var i = 0; i < data.CharacterRestrictions.Count; ++i) + { + data.CharacterRestrictions[i] = ReadCreateCharacterRestriction(packet, indexes, "CharacterRestrictions", i); + } + for (var i = 0; i < data.TraitConfigs.Count; ++i) + { + data.TraitConfigs[i] = ReadCreateTraitConfig(packet, indexes, "TraitConfigs", i); + } + for (var i = 0; i < data.CraftingOrders.Count; ++i) + { + data.CraftingOrders[i] = ReadCreateCraftingOrder(packet, indexes, "CraftingOrders", i); + } + if (hasPetStable) + { + data.PetStable = ReadCreateStableInfo(packet, indexes, "PetStable"); + } + for (var i = 0; i < data.AccountBankTabSettings.Count; ++i) + { + data.AccountBankTabSettings[i] = ReadCreateBankTabSettings(packet, indexes, "AccountBankTabSettings", i); + } + if (hasWalkInData) + { + data.WalkInData = ReadCreateWalkInData(packet, indexes, "WalkInData"); + } + if (hasDelveData) + { + data.DelveData = ReadCreateDelveData(packet, indexes, "DelveData"); + } + return data; + } + + public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, params object[] indexes) + { + var data = new ActivePlayerData(); + packet.ResetBitReader(); + var rawChangesMask = new int[48]; + var rawMaskMask = new int[2]; + for (var i = 0; i < 1; ++i) + rawMaskMask[i] = packet.ReadInt32(); + rawMaskMask[1] = (int)packet.ReadBits(16); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 48; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + var hasQuestSession = false; + var hasPetStable = false; + var hasWalkInData = false; + var hasDelveData = false; + if (changesMask[0]) + { + if (changesMask[1]) + { + data.BackpackAutoSortDisabled = packet.ReadBit("BackpackAutoSortDisabled", indexes); + } + if (changesMask[2]) + { + data.BackpackSellJunkDisabled = packet.ReadBit("BackpackSellJunkDisabled", indexes); + } + if (changesMask[3]) + { + data.BankAutoSortDisabled = packet.ReadBit("BankAutoSortDisabled", indexes); + } + if (changesMask[4]) + { + data.SortBagsRightToLeft = packet.ReadBit("SortBagsRightToLeft", indexes); + } + if (changesMask[5]) + { + data.InsertItemsLeftToRight = packet.ReadBit("InsertItemsLeftToRight", indexes); + } + if (changesMask[6]) + { + data.HasPerksProgramPendingReward = packet.ReadBit("HasPerksProgramPendingReward", indexes); + } + if (changesMask[7]) + { + data.KnownTitles.ReadUpdateMask(packet); + } + if (changesMask[8]) + { + data.CharacterDataElements.ReadUpdateMask(packet); + } + if (changesMask[9]) + { + data.AccountDataElements.ReadUpdateMask(packet); + } + if (changesMask[10]) + { + data.PvpInfo.ReadUpdateMask(packet); + } + } + if (changesMask[40]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[41]) + { + data.ResearchSites[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[42]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[43]) + { + data.ResearchSiteProgress[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[44]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[45]) + { + data.Research[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[40]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[41]) + { + for (var j = 0; j < data.ResearchSites[i].Count; ++j) + { + if (data.ResearchSites[i].UpdateMask[j]) + { + data.ResearchSites[i][j] = packet.ReadUInt16("ResearchSites", indexes, i, j); + } + } + } + } + } + if (changesMask[42]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[43]) + { + for (var j = 0; j < data.ResearchSiteProgress[i].Count; ++j) + { + if (data.ResearchSiteProgress[i].UpdateMask[j]) + { + data.ResearchSiteProgress[i][j] = packet.ReadUInt32("ResearchSiteProgress", indexes, i, j); + } + } + } + } + } + if (changesMask[44]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[45]) + { + for (var j = 0; j < data.Research[i].Count; ++j) + { + if (data.Research[i].UpdateMask[j]) + { + data.Research[i][j] = ReadUpdateResearch(packet, indexes, "Research", i, j); + } + } + } + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[11]) + { + data.DailyQuestsCompleted.ReadUpdateMask(packet); + } + if (changesMask[12]) + { + data.AvailableQuestLineXQuestIDs.ReadUpdateMask(packet); + } + if (changesMask[13]) + { + data.Heirlooms.ReadUpdateMask(packet); + } + if (changesMask[14]) + { + data.HeirloomFlags.ReadUpdateMask(packet); + } + if (changesMask[15]) + { + data.Toys.ReadUpdateMask(packet); + } + if (changesMask[16]) + { + data.ToyFlags.ReadUpdateMask(packet); + } + if (changesMask[17]) + { + data.Transmog.ReadUpdateMask(packet); + } + if (changesMask[18]) + { + data.ConditionalTransmog.ReadUpdateMask(packet); + } + if (changesMask[19]) + { + data.SelfResSpells.ReadUpdateMask(packet); + } + if (changesMask[20]) + { + data.RuneforgePowers.ReadUpdateMask(packet); + } + if (changesMask[21]) + { + data.TransmogIllusions.ReadUpdateMask(packet); + } + if (changesMask[22]) + { + data.CharacterRestrictions.ReadUpdateMask(packet); + } + if (changesMask[23]) + { + data.SpellPctModByLabel.ReadUpdateMask(packet); + } + if (changesMask[24]) + { + data.SpellFlatModByLabel.ReadUpdateMask(packet); + } + if (changesMask[25]) + { + data.MawPowers.ReadUpdateMask(packet); + } + if (changesMask[26]) + { + data.MultiFloorExploration.ReadUpdateMask(packet); + } + if (changesMask[27]) + { + data.RecipeProgression.ReadUpdateMask(packet); + } + if (changesMask[28]) + { + data.ReplayedQuests.ReadUpdateMask(packet); + } + if (changesMask[29]) + { + data.TaskQuests.ReadUpdateMask(packet); + } + if (changesMask[30]) + { + data.DisabledSpells.ReadUpdateMask(packet); + } + if (changesMask[31]) + { + data.TraitConfigs.ReadUpdateMask(packet); + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + data.CraftingOrders.ReadUpdateMask(packet); + } + if (changesMask[34]) + { + data.PersonalCraftingOrderCounts.ReadUpdateMask(packet); + } + if (changesMask[35]) + { + data.NpcCraftingOrders.ReadUpdateMask(packet); + } + if (changesMask[36]) + { + data.CategoryCooldownMods.ReadUpdateMask(packet); + } + if (changesMask[37]) + { + data.WeeklySpellUses.ReadUpdateMask(packet); + } + if (changesMask[38]) + { + data.TrackedCollectableSources.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[7]) + { + for (var i = 0; i < data.KnownTitles.Count; ++i) + { + if (data.KnownTitles.UpdateMask[i]) + { + data.KnownTitles[i] = packet.ReadUInt64("KnownTitles", indexes, i); + } + } + } + if (changesMask[11]) + { + for (var i = 0; i < data.DailyQuestsCompleted.Count; ++i) + { + if (data.DailyQuestsCompleted.UpdateMask[i]) + { + data.DailyQuestsCompleted[i] = packet.ReadInt32("DailyQuestsCompleted", indexes, i); + } + } + } + if (changesMask[12]) + { + for (var i = 0; i < data.AvailableQuestLineXQuestIDs.Count; ++i) + { + if (data.AvailableQuestLineXQuestIDs.UpdateMask[i]) + { + data.AvailableQuestLineXQuestIDs[i] = packet.ReadInt32("AvailableQuestLineXQuestIDs", indexes, i); + } + } + } + if (changesMask[13]) + { + for (var i = 0; i < data.Heirlooms.Count; ++i) + { + if (data.Heirlooms.UpdateMask[i]) + { + data.Heirlooms[i] = packet.ReadInt32("Heirlooms", indexes, i); + } + } + } + if (changesMask[14]) + { + for (var i = 0; i < data.HeirloomFlags.Count; ++i) + { + if (data.HeirloomFlags.UpdateMask[i]) + { + data.HeirloomFlags[i] = packet.ReadUInt32("HeirloomFlags", indexes, i); + } + } + } + if (changesMask[15]) + { + for (var i = 0; i < data.Toys.Count; ++i) + { + if (data.Toys.UpdateMask[i]) + { + data.Toys[i] = packet.ReadInt32("Toys", indexes, i); + } + } + } + if (changesMask[16]) + { + for (var i = 0; i < data.ToyFlags.Count; ++i) + { + if (data.ToyFlags.UpdateMask[i]) + { + data.ToyFlags[i] = packet.ReadUInt32("ToyFlags", indexes, i); + } + } + } + if (changesMask[17]) + { + for (var i = 0; i < data.Transmog.Count; ++i) + { + if (data.Transmog.UpdateMask[i]) + { + data.Transmog[i] = packet.ReadUInt32("Transmog", indexes, i); + } + } + } + if (changesMask[18]) + { + for (var i = 0; i < data.ConditionalTransmog.Count; ++i) + { + if (data.ConditionalTransmog.UpdateMask[i]) + { + data.ConditionalTransmog[i] = packet.ReadInt32("ConditionalTransmog", indexes, i); + } + } + } + if (changesMask[19]) + { + for (var i = 0; i < data.SelfResSpells.Count; ++i) + { + if (data.SelfResSpells.UpdateMask[i]) + { + data.SelfResSpells[i] = packet.ReadInt32("SelfResSpells", indexes, i); + } + } + } + if (changesMask[20]) + { + for (var i = 0; i < data.RuneforgePowers.Count; ++i) + { + if (data.RuneforgePowers.UpdateMask[i]) + { + data.RuneforgePowers[i] = packet.ReadUInt32("RuneforgePowers", indexes, i); + } + } + } + if (changesMask[21]) + { + for (var i = 0; i < data.TransmogIllusions.Count; ++i) + { + if (data.TransmogIllusions.UpdateMask[i]) + { + data.TransmogIllusions[i] = packet.ReadUInt32("TransmogIllusions", indexes, i); + } + } + } + if (changesMask[23]) + { + for (var i = 0; i < data.SpellPctModByLabel.Count; ++i) + { + if (data.SpellPctModByLabel.UpdateMask[i]) + { + data.SpellPctModByLabel[i] = ReadUpdateSpellPctModByLabel(packet, indexes, "SpellPctModByLabel", i); + } + } + } + if (changesMask[24]) + { + for (var i = 0; i < data.SpellFlatModByLabel.Count; ++i) + { + if (data.SpellFlatModByLabel.UpdateMask[i]) + { + data.SpellFlatModByLabel[i] = ReadUpdateSpellFlatModByLabel(packet, indexes, "SpellFlatModByLabel", i); + } + } + } + if (changesMask[25]) + { + for (var i = 0; i < data.MawPowers.Count; ++i) + { + if (data.MawPowers.UpdateMask[i]) + { + data.MawPowers[i] = ReadUpdateMawPower(packet, indexes, "MawPowers", i); + } + } + } + if (changesMask[26]) + { + for (var i = 0; i < data.MultiFloorExploration.Count; ++i) + { + if (data.MultiFloorExploration.UpdateMask[i]) + { + data.MultiFloorExploration[i] = ReadUpdateMultiFloorExplore(packet, indexes, "MultiFloorExploration", i); + } + } + } + if (changesMask[27]) + { + for (var i = 0; i < data.RecipeProgression.Count; ++i) + { + if (data.RecipeProgression.UpdateMask[i]) + { + data.RecipeProgression[i] = ReadUpdateRecipeProgressionInfo(packet, indexes, "RecipeProgression", i); + } + } + } + if (changesMask[28]) + { + for (var i = 0; i < data.ReplayedQuests.Count; ++i) + { + if (data.ReplayedQuests.UpdateMask[i]) + { + data.ReplayedQuests[i] = ReadUpdateReplayedQuest(packet, indexes, "ReplayedQuests", i); + } + } + } + if (changesMask[29]) + { + for (var i = 0; i < data.TaskQuests.Count; ++i) + { + if (data.TaskQuests.UpdateMask[i]) + { + data.TaskQuests[i] = ReadUpdateQuestLog(packet, indexes, "TaskQuests", i); + } + } + } + if (changesMask[30]) + { + for (var i = 0; i < data.DisabledSpells.Count; ++i) + { + if (data.DisabledSpells.UpdateMask[i]) + { + data.DisabledSpells[i] = packet.ReadInt32("DisabledSpells", indexes, i); + } + } + } + } + if (changesMask[32]) + { + if (changesMask[34]) + { + for (var i = 0; i < data.PersonalCraftingOrderCounts.Count; ++i) + { + if (data.PersonalCraftingOrderCounts.UpdateMask[i]) + { + data.PersonalCraftingOrderCounts[i] = ReadUpdatePersonalCraftingOrderCount(packet, indexes, "PersonalCraftingOrderCounts", i); + } + } + } + if (changesMask[35]) + { + for (var i = 0; i < data.NpcCraftingOrders.Count; ++i) + { + if (data.NpcCraftingOrders.UpdateMask[i]) + { + data.NpcCraftingOrders[i] = ReadUpdateNPCCraftingOrderInfo(packet, indexes, "NpcCraftingOrders", i); + } + } + } + if (changesMask[36]) + { + for (var i = 0; i < data.CategoryCooldownMods.Count; ++i) + { + if (data.CategoryCooldownMods.UpdateMask[i]) + { + data.CategoryCooldownMods[i] = ReadUpdateCategoryCooldownMod(packet, indexes, "CategoryCooldownMods", i); + } + } + } + if (changesMask[37]) + { + for (var i = 0; i < data.WeeklySpellUses.Count; ++i) + { + if (data.WeeklySpellUses.UpdateMask[i]) + { + data.WeeklySpellUses[i] = ReadUpdateWeeklySpellUse(packet, indexes, "WeeklySpellUses", i); + } + } + } + if (changesMask[38]) + { + for (var i = 0; i < data.TrackedCollectableSources.Count; ++i) + { + if (data.TrackedCollectableSources.UpdateMask[i]) + { + data.TrackedCollectableSources[i] = ReadUpdateCollectableSourceTrackedData(packet, indexes, "TrackedCollectableSources", i); + } + } + } + if (changesMask[39]) + { + data.AccountBankTabSettings.ReadUpdateMask(packet, 3); + } + } + if (changesMask[0]) + { + if (changesMask[8]) + { + for (var i = 0; i < data.CharacterDataElements.Count; ++i) + { + if (data.CharacterDataElements.UpdateMask[i]) + { + data.CharacterDataElements[i] = ReadUpdatePlayerDataElement(packet, indexes, "CharacterDataElements", i); + } + } + } + if (changesMask[9]) + { + for (var i = 0; i < data.AccountDataElements.Count; ++i) + { + if (data.AccountDataElements.UpdateMask[i]) + { + data.AccountDataElements[i] = ReadUpdatePlayerDataElement(packet, indexes, "AccountDataElements", i); + } + } + } + if (changesMask[10]) + { + for (var i = 0; i < data.PvpInfo.Count; ++i) + { + if (data.PvpInfo.UpdateMask[i]) + { + data.PvpInfo[i] = ReadUpdatePVPInfo(packet, indexes, "PvpInfo", i); + } + } + } + if (changesMask[22]) + { + for (var i = 0; i < data.CharacterRestrictions.Count; ++i) + { + if (data.CharacterRestrictions.UpdateMask[i]) + { + data.CharacterRestrictions[i] = ReadUpdateCharacterRestriction(packet, indexes, "CharacterRestrictions", i); + } + } + } + if (changesMask[31]) + { + for (var i = 0; i < data.TraitConfigs.Count; ++i) + { + if (data.TraitConfigs.UpdateMask[i]) + { + data.TraitConfigs[i] = ReadUpdateTraitConfig(packet, indexes, "TraitConfigs", i); + } + } + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + for (var i = 0; i < data.CraftingOrders.Count; ++i) + { + if (data.CraftingOrders.UpdateMask[i]) + { + data.CraftingOrders[i] = ReadUpdateCraftingOrder(packet, indexes, "CraftingOrders", i); + } + } + } + if (changesMask[39]) + { + for (var i = 0; i < data.AccountBankTabSettings.Count; ++i) + { + if (data.AccountBankTabSettings.UpdateMask[i]) + { + data.AccountBankTabSettings[i] = ReadUpdateBankTabSettings(packet, indexes, "AccountBankTabSettings", i); + } + } + } + if (changesMask[46]) + { + data.FarsightObject = packet.ReadPackedGuid128("FarsightObject", indexes); + } + if (changesMask[47]) + { + data.SummonedBattlePetGUID = packet.ReadPackedGuid128("SummonedBattlePetGUID", indexes); + } + if (changesMask[48]) + { + data.Coinage = packet.ReadUInt64("Coinage", indexes); + } + if (changesMask[49]) + { + data.AccountBankCoinage = packet.ReadUInt64("AccountBankCoinage", indexes); + } + if (changesMask[50]) + { + data.XP = packet.ReadInt32("XP", indexes); + } + if (changesMask[51]) + { + data.NextLevelXP = packet.ReadInt32("NextLevelXP", indexes); + } + if (changesMask[52]) + { + data.TrialXP = packet.ReadInt32("TrialXP", indexes); + } + if (changesMask[53]) + { + data.Skill = ReadUpdateSkillInfo(packet, indexes, "Skill"); + } + if (changesMask[54]) + { + data.CharacterPoints = packet.ReadInt32("CharacterPoints", indexes); + } + if (changesMask[55]) + { + data.MaxTalentTiers = packet.ReadInt32("MaxTalentTiers", indexes); + } + if (changesMask[56]) + { + data.TrackCreatureMask = packet.ReadUInt32("TrackCreatureMask", indexes); + } + if (changesMask[57]) + { + data.MainhandExpertise = packet.ReadSingle("MainhandExpertise", indexes); + } + if (changesMask[58]) + { + data.OffhandExpertise = packet.ReadSingle("OffhandExpertise", indexes); + } + if (changesMask[59]) + { + data.RangedExpertise = packet.ReadSingle("RangedExpertise", indexes); + } + if (changesMask[60]) + { + data.CombatRatingExpertise = packet.ReadSingle("CombatRatingExpertise", indexes); + } + if (changesMask[61]) + { + data.BlockPercentage = packet.ReadSingle("BlockPercentage", indexes); + } + if (changesMask[62]) + { + data.DodgePercentage = packet.ReadSingle("DodgePercentage", indexes); + } + if (changesMask[63]) + { + data.DodgePercentageFromAttribute = packet.ReadSingle("DodgePercentageFromAttribute", indexes); + } + if (changesMask[64]) + { + data.ParryPercentage = packet.ReadSingle("ParryPercentage", indexes); + } + if (changesMask[65]) + { + data.ParryPercentageFromAttribute = packet.ReadSingle("ParryPercentageFromAttribute", indexes); + } + if (changesMask[66]) + { + data.CritPercentage = packet.ReadSingle("CritPercentage", indexes); + } + if (changesMask[67]) + { + data.RangedCritPercentage = packet.ReadSingle("RangedCritPercentage", indexes); + } + if (changesMask[68]) + { + data.OffhandCritPercentage = packet.ReadSingle("OffhandCritPercentage", indexes); + } + if (changesMask[69]) + { + data.SpellCritPercentage = packet.ReadSingle("SpellCritPercentage", indexes); + } + } + if (changesMask[70]) + { + if (changesMask[71]) + { + data.ShieldBlock = packet.ReadInt32("ShieldBlock", indexes); + } + if (changesMask[72]) + { + data.ShieldBlockCritPercentage = packet.ReadSingle("ShieldBlockCritPercentage", indexes); + } + if (changesMask[73]) + { + data.Mastery = packet.ReadSingle("Mastery", indexes); + } + if (changesMask[74]) + { + data.Speed = packet.ReadSingle("Speed", indexes); + } + if (changesMask[75]) + { + data.Avoidance = packet.ReadSingle("Avoidance", indexes); + } + if (changesMask[76]) + { + data.Sturdiness = packet.ReadSingle("Sturdiness", indexes); + } + if (changesMask[77]) + { + data.Versatility = packet.ReadInt32("Versatility", indexes); + } + if (changesMask[78]) + { + data.VersatilityBonus = packet.ReadSingle("VersatilityBonus", indexes); + } + if (changesMask[79]) + { + data.PvpPowerDamage = packet.ReadSingle("PvpPowerDamage", indexes); + } + if (changesMask[80]) + { + data.PvpPowerHealing = packet.ReadSingle("PvpPowerHealing", indexes); + } + if (changesMask[81]) + { + data.BitVectors = ReadUpdateBitVectors(packet, indexes, "BitVectors"); + } + if (changesMask[82]) + { + data.ModHealingDonePos = packet.ReadInt32("ModHealingDonePos", indexes); + } + if (changesMask[83]) + { + data.ModHealingPercent = packet.ReadSingle("ModHealingPercent", indexes); + } + if (changesMask[84]) + { + data.ModPeriodicHealingDonePercent = packet.ReadSingle("ModPeriodicHealingDonePercent", indexes); + } + if (changesMask[85]) + { + data.ModSpellPowerPercent = packet.ReadSingle("ModSpellPowerPercent", indexes); + } + if (changesMask[86]) + { + data.ModResiliencePercent = packet.ReadSingle("ModResiliencePercent", indexes); + } + if (changesMask[87]) + { + data.OverrideSpellPowerByAPPercent = packet.ReadSingle("OverrideSpellPowerByAPPercent", indexes); + } + if (changesMask[88]) + { + data.OverrideAPBySpellPowerPercent = packet.ReadSingle("OverrideAPBySpellPowerPercent", indexes); + } + if (changesMask[89]) + { + data.ModTargetResistance = packet.ReadInt32("ModTargetResistance", indexes); + } + if (changesMask[90]) + { + data.ModTargetPhysicalResistance = packet.ReadInt32("ModTargetPhysicalResistance", indexes); + } + if (changesMask[91]) + { + data.LocalFlags = packet.ReadUInt32("LocalFlags", indexes); + } + if (changesMask[92]) + { + data.GrantableLevels = packet.ReadByte("GrantableLevels", indexes); + } + if (changesMask[93]) + { + data.MultiActionBars = packet.ReadByte("MultiActionBars", indexes); + } + if (changesMask[94]) + { + data.LifetimeMaxRank = packet.ReadByte("LifetimeMaxRank", indexes); + } + if (changesMask[95]) + { + data.NumRespecs = packet.ReadByte("NumRespecs", indexes); + } + if (changesMask[96]) + { + data.PvpMedals = packet.ReadUInt32("PvpMedals", indexes); + } + if (changesMask[97]) + { + data.TodayHonorableKills = packet.ReadUInt16("TodayHonorableKills", indexes); + } + if (changesMask[98]) + { + data.YesterdayHonorableKills = packet.ReadUInt16("YesterdayHonorableKills", indexes); + } + if (changesMask[99]) + { + data.LifetimeHonorableKills = packet.ReadUInt32("LifetimeHonorableKills", indexes); + } + if (changesMask[100]) + { + data.WatchedFactionIndex = packet.ReadInt32("WatchedFactionIndex", indexes); + } + if (changesMask[101]) + { + data.MaxLevel = packet.ReadInt32("MaxLevel", indexes); + } + } + if (changesMask[102]) + { + if (changesMask[103]) + { + data.ScalingPlayerLevelDelta = packet.ReadInt32("ScalingPlayerLevelDelta", indexes); + } + if (changesMask[104]) + { + data.MaxCreatureScalingLevel = packet.ReadInt32("MaxCreatureScalingLevel", indexes); + } + if (changesMask[105]) + { + data.PetSpellPower = packet.ReadInt32("PetSpellPower", indexes); + } + if (changesMask[106]) + { + data.UiHitModifier = packet.ReadSingle("UiHitModifier", indexes); + } + if (changesMask[107]) + { + data.UiSpellHitModifier = packet.ReadSingle("UiSpellHitModifier", indexes); + } + if (changesMask[108]) + { + data.HomeRealmTimeOffset = packet.ReadInt32("HomeRealmTimeOffset", indexes); + } + if (changesMask[109]) + { + data.ModPetHaste = packet.ReadSingle("ModPetHaste", indexes); + } + if (changesMask[110]) + { + data.JailersTowerLevelMax = packet.ReadSByte("JailersTowerLevelMax", indexes); + } + if (changesMask[111]) + { + data.JailersTowerLevel = packet.ReadSByte("JailersTowerLevel", indexes); + } + if (changesMask[112]) + { + data.LocalRegenFlags = packet.ReadByte("LocalRegenFlags", indexes); + } + if (changesMask[113]) + { + data.AuraVision = packet.ReadByte("AuraVision", indexes); + } + if (changesMask[114]) + { + data.NumBackpackSlots = packet.ReadByte("NumBackpackSlots", indexes); + } + if (changesMask[115]) + { + data.OverrideSpellsID = packet.ReadInt32("OverrideSpellsID", indexes); + } + if (changesMask[116]) + { + data.LootSpecID = packet.ReadUInt16("LootSpecID", indexes); + } + if (changesMask[117]) + { + data.OverrideZonePVPType = packet.ReadUInt32("OverrideZonePVPType", indexes); + } + if (changesMask[118]) + { + data.Honor = packet.ReadInt32("Honor", indexes); + } + if (changesMask[119]) + { + data.HonorNextLevel = packet.ReadInt32("HonorNextLevel", indexes); + } + if (changesMask[120]) + { + data.PerksProgramCurrency = packet.ReadInt32("PerksProgramCurrency", indexes); + } + if (changesMask[121]) + { + data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); + } + if (changesMask[122]) + { + data.NumAccountBankTabs = packet.ReadByte("NumAccountBankTabs", indexes); + } + if (changesMask[127]) + { + data.UiChromieTimeExpansionID = packet.ReadInt32("UiChromieTimeExpansionID", indexes); + } + if (changesMask[128]) + { + data.TimerunningSeasonID = packet.ReadInt32("TimerunningSeasonID", indexes); + } + if (changesMask[129]) + { + data.TransportServerTime = packet.ReadInt32("TransportServerTime", indexes); + } + if (changesMask[130]) + { + data.WeeklyRewardsPeriodSinceOrigin = packet.ReadUInt32("WeeklyRewardsPeriodSinceOrigin", indexes); + } + if (changesMask[131]) + { + data.DEBUGSoulbindConduitRank = packet.ReadInt16("DEBUGSoulbindConduitRank", indexes); + } + if (changesMask[133]) + { + data.ActiveCombatTraitConfigID = packet.ReadUInt32("ActiveCombatTraitConfigID", indexes); + } + } + if (changesMask[134]) + { + if (changesMask[135]) + { + data.ItemUpgradeHighOnehandWeaponItemID = packet.ReadInt32("ItemUpgradeHighOnehandWeaponItemID", indexes); + } + if (changesMask[136]) + { + data.ItemUpgradeHighFingerItemID = packet.ReadInt32("ItemUpgradeHighFingerItemID", indexes); + } + if (changesMask[137]) + { + data.ItemUpgradeHighFingerWatermark = packet.ReadSingle("ItemUpgradeHighFingerWatermark", indexes); + } + if (changesMask[138]) + { + data.ItemUpgradeHighTrinketItemID = packet.ReadInt32("ItemUpgradeHighTrinketItemID", indexes); + } + if (changesMask[139]) + { + data.ItemUpgradeHighTrinketWatermark = packet.ReadSingle("ItemUpgradeHighTrinketWatermark", indexes); + } + if (changesMask[140]) + { + data.LootHistoryInstanceID = packet.ReadUInt64("LootHistoryInstanceID", indexes); + } + if (changesMask[142]) + { + data.RequiredMountCapabilityFlags = packet.ReadByte("RequiredMountCapabilityFlags", indexes); + } + } + if (changesMask[102]) + { + hasQuestSession = packet.ReadBit("HasQuestSession", indexes); + } + if (changesMask[134]) + { + hasPetStable = packet.ReadBit("HasPetStable", indexes); + hasWalkInData = packet.ReadBit("HasWalkInData", indexes); + hasDelveData = packet.ReadBit("HasDelveData", indexes); + } + packet.ResetBitReader(); + if (changesMask[102]) + { + if (changesMask[123]) + { + data.ResearchHistory = ReadUpdateResearchHistory(packet, indexes, "ResearchHistory"); + } + if (changesMask[125]) + { + if (hasQuestSession) + { + data.QuestSession = ReadUpdateQuestSession(packet, indexes, "QuestSession"); + } + } + if (changesMask[124]) + { + Substructures.PerksProgramHandler.ReadPerksVendorItem(packet, indexes, "FrozenPerksVendorItem"); + } + if (changesMask[126]) + { + data.Field_1410 = ReadUpdateActivePlayerUnk901(packet, indexes, "Field_1410"); + } + if (changesMask[132]) + { + Substructures.MythicPlusHandler.ReadDungeonScoreData(packet, indexes, "DungeonScore"); + } + } + if (changesMask[134]) + { + if (changesMask[141]) + { + if (hasPetStable) + { + data.PetStable = ReadUpdateStableInfo(packet, indexes, "PetStable"); + } + } + if (changesMask[143]) + { + if (hasWalkInData) + { + data.WalkInData = ReadUpdateWalkInData(packet, indexes, "WalkInData"); + } + } + if (changesMask[144]) + { + if (hasDelveData) + { + data.DelveData = ReadUpdateDelveData(packet, indexes, "DelveData"); + } + } + } + if (changesMask[145]) + { + for (var i = 0; i < 232; ++i) + { + if (changesMask[146 + i]) + { + data.InvSlots[i] = packet.ReadPackedGuid128("InvSlots", indexes, i); + } + } + } + if (changesMask[378]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[379 + i]) + { + data.RestInfo[i] = ReadUpdateRestInfo(packet, indexes, "RestInfo", i); + } + } + } + if (changesMask[381]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[382 + i]) + { + data.ModDamageDonePos[i] = packet.ReadInt32("ModDamageDonePos", indexes, i); + } + if (changesMask[389 + i]) + { + data.ModDamageDoneNeg[i] = packet.ReadInt32("ModDamageDoneNeg", indexes, i); + } + if (changesMask[396 + i]) + { + data.ModDamageDonePercent[i] = packet.ReadSingle("ModDamageDonePercent", indexes, i); + } + if (changesMask[403 + i]) + { + data.ModHealingDonePercent[i] = packet.ReadSingle("ModHealingDonePercent", indexes, i); + } + } + } + if (changesMask[410]) + { + for (var i = 0; i < 3; ++i) + { + if (changesMask[411 + i]) + { + data.WeaponDmgMultipliers[i] = packet.ReadSingle("WeaponDmgMultipliers", indexes, i); + } + if (changesMask[414 + i]) + { + data.WeaponAtkSpeedMultipliers[i] = packet.ReadSingle("WeaponAtkSpeedMultipliers", indexes, i); + } + } + } + if (changesMask[417]) + { + for (var i = 0; i < 12; ++i) + { + if (changesMask[418 + i]) + { + data.BuybackPrice[i] = packet.ReadUInt32("BuybackPrice", indexes, i); + } + if (changesMask[430 + i]) + { + data.BuybackTimestamp[i] = packet.ReadInt64("BuybackTimestamp", indexes, i); + } + } + } + if (changesMask[442]) + { + for (var i = 0; i < 32; ++i) + { + if (changesMask[443 + i]) + { + data.CombatRatings[i] = packet.ReadInt32("CombatRatings", indexes, i); + } + } + } + if (changesMask[475]) + { + for (var i = 0; i < 4; ++i) + { + if (changesMask[476 + i]) + { + data.NoReagentCostMask[i] = packet.ReadUInt32("NoReagentCostMask", indexes, i); + } + } + } + if (changesMask[480]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[481 + i]) + { + data.ProfessionSkillLine[i] = packet.ReadInt32("ProfessionSkillLine", indexes, i); + } + } + } + if (changesMask[483]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[484 + i]) + { + data.BagSlotFlags[i] = packet.ReadUInt32("BagSlotFlags", indexes, i); + } + } + } + if (changesMask[489]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[490 + i]) + { + data.BankBagSlotFlags[i] = packet.ReadUInt32("BankBagSlotFlags", indexes, i); + } + } + } + if (changesMask[497]) + { + for (var i = 0; i < 1000; ++i) + { + if (changesMask[498 + i]) + { + data.QuestCompleted[i] = packet.ReadUInt64("QuestCompleted", indexes, i); + } + } + } + if (changesMask[1498]) + { + for (var i = 0; i < 17; ++i) + { + if (changesMask[1499 + i]) + { + data.ItemUpgradeHighWatermark[i] = packet.ReadSingle("ItemUpgradeHighWatermark", indexes, i); + } + } + } + return data; + } + + public override IGameObjectData ReadCreateGameObjectData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new GameObjectData(); + packet.ResetBitReader(); + data.DisplayID = packet.ReadInt32("DisplayID", indexes); + data.SpellVisualID = packet.ReadUInt32("SpellVisualID", indexes); + data.StateSpellVisualID = packet.ReadUInt32("StateSpellVisualID", indexes); + data.SpawnTrackingStateAnimID = packet.ReadUInt32("SpawnTrackingStateAnimID", indexes); + data.SpawnTrackingStateAnimKitID = packet.ReadUInt32("SpawnTrackingStateAnimKitID", indexes); + data.StateWorldEffectIDs = new System.Nullable[packet.ReadUInt32()]; + data.StateWorldEffectsQuestObjectiveID = packet.ReadUInt32("StateWorldEffectsQuestObjectiveID", indexes); + for (var i = 0; i < data.StateWorldEffectIDs.Length; ++i) + { + data.StateWorldEffectIDs[i] = packet.ReadUInt32("StateWorldEffectIDs", indexes, i); + } + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + data.Flags = packet.ReadUInt32("Flags", indexes); + data.ParentRotation = packet.ReadQuaternion("ParentRotation", indexes); + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + data.State = packet.ReadSByte("State", indexes); + data.TypeID = packet.ReadSByte("TypeID", indexes); + data.PercentHealth = packet.ReadByte("PercentHealth", indexes); + data.ArtKit = packet.ReadUInt32("ArtKit", indexes); + data.EnableDoodadSets.Resize(packet.ReadUInt32()); + data.CustomParam = packet.ReadUInt32("CustomParam", indexes); + data.Level = packet.ReadInt32("Level", indexes); + data.AnimGroupInstance = packet.ReadUInt32("AnimGroupInstance", indexes); + data.UiWidgetItemID = packet.ReadUInt32("UiWidgetItemID", indexes); + data.UiWidgetItemQuality = packet.ReadUInt32("UiWidgetItemQuality", indexes); + data.UiWidgetItemUnknown1000 = packet.ReadUInt32("UiWidgetItemUnknown1000", indexes); + data.WorldEffects.Resize(packet.ReadUInt32()); + for (var i = 0; i < data.EnableDoodadSets.Count; ++i) + { + data.EnableDoodadSets[i] = packet.ReadInt32("EnableDoodadSets", indexes, i); + } + for (var i = 0; i < data.WorldEffects.Count; ++i) + { + data.WorldEffects[i] = packet.ReadInt32("WorldEffects", indexes, i); + } + return data; + } + + public override IGameObjectData ReadUpdateGameObjectData(Packet packet, params object[] indexes) + { + var data = new GameObjectData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(25); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.StateWorldEffectIDs = Enumerable.Range(0, (int)packet.ReadBits(32)).Select(x => new uint()).Cast>().ToArray(); + for (var i = 0; i < data.StateWorldEffectIDs.Length; ++i) + { + data.StateWorldEffectIDs[i] = packet.ReadUInt32("StateWorldEffectIDs", indexes, i); + } + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + data.EnableDoodadSets.ReadUpdateMask(packet); + } + if (changesMask[3]) + { + data.WorldEffects.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + for (var i = 0; i < data.EnableDoodadSets.Count; ++i) + { + if (data.EnableDoodadSets.UpdateMask[i]) + { + data.EnableDoodadSets[i] = packet.ReadInt32("EnableDoodadSets", indexes, i); + } + } + } + if (changesMask[3]) + { + for (var i = 0; i < data.WorldEffects.Count; ++i) + { + if (data.WorldEffects.UpdateMask[i]) + { + data.WorldEffects[i] = packet.ReadInt32("WorldEffects", indexes, i); + } + } + } + if (changesMask[4]) + { + data.DisplayID = packet.ReadInt32("DisplayID", indexes); + } + if (changesMask[5]) + { + data.SpellVisualID = packet.ReadUInt32("SpellVisualID", indexes); + } + if (changesMask[6]) + { + data.StateSpellVisualID = packet.ReadUInt32("StateSpellVisualID", indexes); + } + if (changesMask[7]) + { + data.SpawnTrackingStateAnimID = packet.ReadUInt32("SpawnTrackingStateAnimID", indexes); + } + if (changesMask[8]) + { + data.SpawnTrackingStateAnimKitID = packet.ReadUInt32("SpawnTrackingStateAnimKitID", indexes); + } + if (changesMask[9]) + { + data.StateWorldEffectsQuestObjectiveID = packet.ReadUInt32("StateWorldEffectsQuestObjectiveID", indexes); + } + if (changesMask[10]) + { + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + } + if (changesMask[11]) + { + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + } + if (changesMask[12]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[13]) + { + data.ParentRotation = packet.ReadQuaternion("ParentRotation", indexes); + } + if (changesMask[14]) + { + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + } + if (changesMask[15]) + { + data.State = packet.ReadSByte("State", indexes); + } + if (changesMask[16]) + { + data.TypeID = packet.ReadSByte("TypeID", indexes); + } + if (changesMask[17]) + { + data.PercentHealth = packet.ReadByte("PercentHealth", indexes); + } + if (changesMask[18]) + { + data.ArtKit = packet.ReadUInt32("ArtKit", indexes); + } + if (changesMask[19]) + { + data.CustomParam = packet.ReadUInt32("CustomParam", indexes); + } + if (changesMask[20]) + { + data.Level = packet.ReadInt32("Level", indexes); + } + if (changesMask[21]) + { + data.AnimGroupInstance = packet.ReadUInt32("AnimGroupInstance", indexes); + } + if (changesMask[22]) + { + data.UiWidgetItemID = packet.ReadUInt32("UiWidgetItemID", indexes); + } + if (changesMask[23]) + { + data.UiWidgetItemQuality = packet.ReadUInt32("UiWidgetItemQuality", indexes); + } + if (changesMask[24]) + { + data.UiWidgetItemUnknown1000 = packet.ReadUInt32("UiWidgetItemUnknown1000", indexes); + } + } + return data; + } + + public override IDynamicObjectData ReadCreateDynamicObjectData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new DynamicObjectData(); + packet.ResetBitReader(); + data.Caster = packet.ReadPackedGuid128("Caster", indexes); + data.Type = packet.ReadByte("Type", indexes); + data.SpellVisual = ReadCreateSpellCastVisual(packet, indexes, "SpellVisual"); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.Radius = packet.ReadSingle("Radius", indexes); + data.CastTime = packet.ReadUInt32("CastTime", indexes); + return data; + } + + public override IDynamicObjectData ReadUpdateDynamicObjectData(Packet packet, params object[] indexes) + { + var data = new DynamicObjectData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(7); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Caster = packet.ReadPackedGuid128("Caster", indexes); + } + if (changesMask[2]) + { + data.Type = packet.ReadByte("Type", indexes); + } + if (changesMask[3]) + { + data.SpellVisual = ReadUpdateSpellCastVisual(packet, indexes, "SpellVisual"); + } + if (changesMask[4]) + { + data.SpellID = packet.ReadInt32("SpellID", indexes); + } + if (changesMask[5]) + { + data.Radius = packet.ReadSingle("Radius", indexes); + } + if (changesMask[6]) + { + data.CastTime = packet.ReadUInt32("CastTime", indexes); + } + } + return data; + } + + public override ICorpseData ReadCreateCorpseData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new CorpseData(); + packet.ResetBitReader(); + data.DynamicFlags = packet.ReadUInt32("DynamicFlags", indexes); + data.Owner = packet.ReadPackedGuid128("Owner", indexes); + data.PartyGUID = packet.ReadPackedGuid128("PartyGUID", indexes); + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + data.DisplayID = packet.ReadUInt32("DisplayID", indexes); + for (var i = 0; i < 19; ++i) + { + data.Items[i] = packet.ReadUInt32("Items", indexes, i); + } + data.RaceID = packet.ReadByte("RaceID", indexes); + data.Sex = packet.ReadByte("Sex", indexes); + data.Class = packet.ReadByte("Class", indexes); + data.Customizations.Resize(packet.ReadUInt32()); + data.Flags = packet.ReadUInt32("Flags", indexes); + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + data.StateSpellVisualKitID = packet.ReadUInt32("StateSpellVisualKitID", indexes); + for (var i = 0; i < data.Customizations.Count; ++i) + { + data.Customizations[i] = ReadCreateChrCustomizationChoice(packet, indexes, "Customizations", i); + } + return data; + } + + public override ICorpseData ReadUpdateCorpseData(Packet packet, params object[] indexes) + { + var data = new CorpseData(); + packet.ResetBitReader(); + var rawChangesMask = new int[2]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(2); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 2; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Customizations.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (var i = 0; i < data.Customizations.Count; ++i) + { + if (data.Customizations.UpdateMask[i]) + { + data.Customizations[i] = ReadUpdateChrCustomizationChoice(packet, indexes, "Customizations", i); + } + } + } + if (changesMask[2]) + { + data.DynamicFlags = packet.ReadUInt32("DynamicFlags", indexes); + } + if (changesMask[3]) + { + data.Owner = packet.ReadPackedGuid128("Owner", indexes); + } + if (changesMask[4]) + { + data.PartyGUID = packet.ReadPackedGuid128("PartyGUID", indexes); + } + if (changesMask[5]) + { + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + } + if (changesMask[6]) + { + data.DisplayID = packet.ReadUInt32("DisplayID", indexes); + } + if (changesMask[7]) + { + data.RaceID = packet.ReadByte("RaceID", indexes); + } + if (changesMask[8]) + { + data.Sex = packet.ReadByte("Sex", indexes); + } + if (changesMask[9]) + { + data.Class = packet.ReadByte("Class", indexes); + } + if (changesMask[10]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[11]) + { + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + } + if (changesMask[12]) + { + data.StateSpellVisualKitID = packet.ReadUInt32("StateSpellVisualKitID", indexes); + } + } + if (changesMask[13]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[14 + i]) + { + data.Items[i] = packet.ReadUInt32("Items", indexes, i); + } + } + } + return data; + } + + public static IScaleCurve ReadCreateScaleCurve(Packet packet, params object[] indexes) + { + var data = new ScaleCurve(); + packet.ResetBitReader(); + data.StartTimeOffset = packet.ReadUInt32("StartTimeOffset", indexes); + for (var i = 0; i < 2; ++i) + { + data.Points[i] = packet.ReadVector2("Points", indexes, i); + } + data.ParameterCurve = packet.ReadUInt32("ParameterCurve", indexes); + data.OverrideActive = packet.ReadBit("OverrideActive", indexes); + return data; + } + + public static IScaleCurve ReadUpdateScaleCurve(Packet packet, params object[] indexes) + { + var data = new ScaleCurve(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(7); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.OverrideActive = packet.ReadBit("OverrideActive", indexes); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + data.StartTimeOffset = packet.ReadUInt32("StartTimeOffset", indexes); + } + if (changesMask[3]) + { + data.ParameterCurve = packet.ReadUInt32("ParameterCurve", indexes); + } + } + if (changesMask[4]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[5 + i]) + { + data.Points[i] = packet.ReadVector2("Points", indexes, i); + } + } + } + return data; + } + + public static IVisualAnim ReadCreateVisualAnim(Packet packet, params object[] indexes) + { + var data = new VisualAnim(); + packet.ResetBitReader(); + data.AnimationDataID = packet.ReadUInt32("AnimationDataID", indexes); + data.AnimKitID = packet.ReadUInt32("AnimKitID", indexes); + data.AnimProgress = packet.ReadUInt32("AnimProgress", indexes); + data.IsDecay = packet.ReadBit("IsDecay", indexes); + return data; + } + + public static IVisualAnim ReadUpdateVisualAnim(Packet packet, params object[] indexes) + { + var data = new VisualAnim(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(5); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.IsDecay = packet.ReadBit("IsDecay", indexes); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + data.AnimationDataID = packet.ReadUInt32("AnimationDataID", indexes); + } + if (changesMask[3]) + { + data.AnimKitID = packet.ReadUInt32("AnimKitID", indexes); + } + if (changesMask[4]) + { + data.AnimProgress = packet.ReadUInt32("AnimProgress", indexes); + } + } + return data; + } + + public override IAreaTriggerData ReadCreateAreaTriggerData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new AreaTriggerData(); + packet.ResetBitReader(); + data.OverrideScaleCurve = ReadCreateScaleCurve(packet, indexes, "OverrideScaleCurve"); + data.Caster = packet.ReadPackedGuid128("Caster", indexes); + data.Duration = packet.ReadUInt32("Duration", indexes); + data.TimeToTarget = packet.ReadUInt32("TimeToTarget", indexes); + data.TimeToTargetScale = packet.ReadUInt32("TimeToTargetScale", indexes); + data.TimeToTargetExtraScale = packet.ReadUInt32("TimeToTargetExtraScale", indexes); + data.TimeToTargetPos = packet.ReadUInt32("TimeToTargetPos", indexes); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.SpellForVisuals = packet.ReadInt32("SpellForVisuals", indexes); + data.SpellVisual = ReadCreateSpellCastVisual(packet, indexes, "SpellVisual"); + data.BoundsRadius2D = packet.ReadSingle("BoundsRadius2D", indexes); + data.DecalPropertiesID = packet.ReadUInt32("DecalPropertiesID", indexes); + data.CreatingEffectGUID = packet.ReadPackedGuid128("CreatingEffectGUID", indexes); + data.NumUnitsInside = packet.ReadUInt32("NumUnitsInside", indexes); + data.NumPlayersInside = packet.ReadUInt32("NumPlayersInside", indexes); + data.OrbitPathTarget = packet.ReadPackedGuid128("OrbitPathTarget", indexes); + data.RollPitchYaw = packet.ReadVector3("RollPitchYaw", indexes); + data.PositionalSoundKitID = packet.ReadInt32("PositionalSoundKitID", indexes); + data.ExtraScaleCurve = ReadCreateScaleCurve(packet, indexes, "ExtraScaleCurve"); + packet.ResetBitReader(); + data.HeightIgnoresScale = packet.ReadBit("HeightIgnoresScale", indexes); + data.Field_261 = packet.ReadBit("Field_261", indexes); + data.OverrideMoveCurveX = ReadCreateScaleCurve(packet, indexes, "OverrideMoveCurveX"); + data.OverrideMoveCurveY = ReadCreateScaleCurve(packet, indexes, "OverrideMoveCurveY"); + data.OverrideMoveCurveZ = ReadCreateScaleCurve(packet, indexes, "OverrideMoveCurveZ"); + data.VisualAnim = ReadCreateVisualAnim(packet, indexes, "VisualAnim"); + return data; + } + + public override IAreaTriggerData ReadUpdateAreaTriggerData(Packet packet, params object[] indexes) + { + var data = new AreaTriggerData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(26); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.HeightIgnoresScale = packet.ReadBit("HeightIgnoresScale", indexes); + } + if (changesMask[2]) + { + data.Field_261 = packet.ReadBit("Field_261", indexes); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + data.OverrideScaleCurve = ReadUpdateScaleCurve(packet, indexes, "OverrideScaleCurve"); + } + if (changesMask[8]) + { + data.Caster = packet.ReadPackedGuid128("Caster", indexes); + } + if (changesMask[9]) + { + data.Duration = packet.ReadUInt32("Duration", indexes); + } + if (changesMask[10]) + { + data.TimeToTarget = packet.ReadUInt32("TimeToTarget", indexes); + } + if (changesMask[11]) + { + data.TimeToTargetScale = packet.ReadUInt32("TimeToTargetScale", indexes); + } + if (changesMask[12]) + { + data.TimeToTargetExtraScale = packet.ReadUInt32("TimeToTargetExtraScale", indexes); + } + if (changesMask[13]) + { + data.TimeToTargetPos = packet.ReadUInt32("TimeToTargetPos", indexes); + } + if (changesMask[14]) + { + data.SpellID = packet.ReadInt32("SpellID", indexes); + } + if (changesMask[15]) + { + data.SpellForVisuals = packet.ReadInt32("SpellForVisuals", indexes); + } + if (changesMask[16]) + { + data.SpellVisual = ReadUpdateSpellCastVisual(packet, indexes, "SpellVisual"); + } + if (changesMask[17]) + { + data.BoundsRadius2D = packet.ReadSingle("BoundsRadius2D", indexes); + } + if (changesMask[18]) + { + data.DecalPropertiesID = packet.ReadUInt32("DecalPropertiesID", indexes); + } + if (changesMask[19]) + { + data.CreatingEffectGUID = packet.ReadPackedGuid128("CreatingEffectGUID", indexes); + } + if (changesMask[20]) + { + data.NumUnitsInside = packet.ReadUInt32("NumUnitsInside", indexes); + } + if (changesMask[21]) + { + data.NumPlayersInside = packet.ReadUInt32("NumPlayersInside", indexes); + } + if (changesMask[22]) + { + data.OrbitPathTarget = packet.ReadPackedGuid128("OrbitPathTarget", indexes); + } + if (changesMask[23]) + { + data.RollPitchYaw = packet.ReadVector3("RollPitchYaw", indexes); + } + if (changesMask[24]) + { + data.PositionalSoundKitID = packet.ReadInt32("PositionalSoundKitID", indexes); + } + if (changesMask[4]) + { + data.ExtraScaleCurve = ReadUpdateScaleCurve(packet, indexes, "ExtraScaleCurve"); + } + if (changesMask[5]) + { + data.OverrideMoveCurveX = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveX"); + } + if (changesMask[6]) + { + data.OverrideMoveCurveY = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveY"); + } + if (changesMask[7]) + { + data.OverrideMoveCurveZ = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveZ"); + } + if (changesMask[25]) + { + data.VisualAnim = ReadUpdateVisualAnim(packet, indexes, "VisualAnim"); + } + } + return data; + } + + public override ISceneObjectData ReadCreateSceneObjectData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new SceneObjectData(); + packet.ResetBitReader(); + data.ScriptPackageID = packet.ReadInt32("ScriptPackageID", indexes); + data.RndSeedVal = packet.ReadUInt32("RndSeedVal", indexes); + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + data.SceneType = packet.ReadUInt32("SceneType", indexes); + return data; + } + + public override ISceneObjectData ReadUpdateSceneObjectData(Packet packet, params object[] indexes) + { + var data = new SceneObjectData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(5); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ScriptPackageID = packet.ReadInt32("ScriptPackageID", indexes); + } + if (changesMask[2]) + { + data.RndSeedVal = packet.ReadUInt32("RndSeedVal", indexes); + } + if (changesMask[3]) + { + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + } + if (changesMask[4]) + { + data.SceneType = packet.ReadUInt32("SceneType", indexes); + } + } + return data; + } + + public static IConversationLine ReadCreateConversationLine(Packet packet, params object[] indexes) + { + var data = new ConversationLine(); + packet.ResetBitReader(); + data.ConversationLineID = packet.ReadInt32("ConversationLineID", indexes); + data.BroadcastTextID = packet.ReadInt32("BroadcastTextID", indexes); + data.StartTime = packet.ReadUInt32("StartTime", indexes); + data.UiCameraID = packet.ReadInt32("UiCameraID", indexes); + data.ActorIndex = packet.ReadByte("ActorIndex", indexes); + data.Flags = packet.ReadByte("Flags", indexes); + data.ChatType = packet.ReadByte("ChatType", indexes); + return data; + } + + public static IConversationLine ReadUpdateConversationLine(Packet packet, params object[] indexes) + { + var data = new ConversationLine(); + packet.ResetBitReader(); + data.ConversationLineID = packet.ReadInt32("ConversationLineID", indexes); + data.BroadcastTextID = packet.ReadInt32("BroadcastTextID", indexes); + data.StartTime = packet.ReadUInt32("StartTime", indexes); + data.UiCameraID = packet.ReadInt32("UiCameraID", indexes); + data.ActorIndex = packet.ReadByte("ActorIndex", indexes); + data.Flags = packet.ReadByte("Flags", indexes); + data.ChatType = packet.ReadByte("ChatType", indexes); + return data; + } + + public static IConversationActor ReadCreateConversationActor(Packet packet, params object[] indexes) + { + var data = new ConversationActor(); + packet.ResetBitReader(); + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.CreatureDisplayInfoID = packet.ReadUInt32("CreatureDisplayInfoID", indexes); + data.ActorGUID = packet.ReadPackedGuid128("ActorGUID", indexes); + data.Id = packet.ReadInt32("Id", indexes); + data.Type = packet.ReadBits("Type", 1, indexes); + data.NoActorObject = packet.ReadBits("NoActorObject", 1, indexes); + return data; + } + + public static IConversationActor ReadUpdateConversationActor(Packet packet, params object[] indexes) + { + var data = new ConversationActor(); + packet.ResetBitReader(); + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.CreatureDisplayInfoID = packet.ReadUInt32("CreatureDisplayInfoID", indexes); + data.ActorGUID = packet.ReadPackedGuid128("ActorGUID", indexes); + data.Id = packet.ReadInt32("Id", indexes); + data.Type = packet.ReadBits("Type", 1, indexes); + data.NoActorObject = packet.ReadBits("NoActorObject", 1, indexes); + return data; + } + + public override IConversationData ReadCreateConversationData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new ConversationData(); + packet.ResetBitReader(); + data.Lines = new IConversationLine[packet.ReadUInt32()]; + data.LastLineEndTime = packet.ReadInt32("LastLineEndTime", indexes); + data.Progress = packet.ReadUInt32("Progress", indexes); + for (var i = 0; i < data.Lines.Length; ++i) + { + data.Lines[i] = ReadCreateConversationLine(packet, indexes, "Lines", i); + } + data.DontPlayBroadcastTextSounds = packet.ReadBit("DontPlayBroadcastTextSounds", indexes); + data.Actors.Resize(packet.ReadUInt32()); + data.Flags = packet.ReadUInt32("Flags", indexes); + for (var i = 0; i < data.Actors.Count; ++i) + { + data.Actors[i] = ReadCreateConversationActor(packet, indexes, "Actors", i); + } + return data; + } + + public override IConversationData ReadUpdateConversationData(Packet packet, params object[] indexes) + { + var data = new ConversationData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(7); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.DontPlayBroadcastTextSounds = packet.ReadBit("DontPlayBroadcastTextSounds", indexes); + } + if (changesMask[2]) + { + data.Lines = Enumerable.Range(0, (int)packet.ReadBits(32)).Select(x => new ConversationLine()).Cast().ToArray(); + for (var i = 0; i < data.Lines.Length; ++i) + { + data.Lines[i] = ReadUpdateConversationLine(packet, indexes, "Lines", i); + } + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + data.Actors.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + for (var i = 0; i < data.Actors.Count; ++i) + { + if (data.Actors.UpdateMask[i]) + { + data.Actors[i] = ReadUpdateConversationActor(packet, indexes, "Actors", i); + } + } + } + if (changesMask[4]) + { + data.LastLineEndTime = packet.ReadInt32("LastLineEndTime", indexes); + } + if (changesMask[5]) + { + data.Progress = packet.ReadUInt32("Progress", indexes); + } + if (changesMask[6]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + } + return data; + } + + public override IVendorData ReadCreateVendorData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new VendorData(); + packet.ResetBitReader(); + data.Flags = packet.ReadInt32("Flags", indexes); + return data; + } + + public override IVendorData ReadUpdateVendorData(Packet packet, params object[] indexes) + { + var data = new VendorData(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(2); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Flags = packet.ReadInt32("Flags", indexes); + } + } + return data; + } + + } +} diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerData.cs new file mode 100644 index 0000000000..64ec58c123 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerData.cs @@ -0,0 +1,168 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ActivePlayerData : IActivePlayerData + { + public WowGuid[] InvSlots { get; } = new WowGuid[232]; + public WowGuid FarsightObject { get; set; } + public WowGuid SummonedBattlePetGUID { get; set; } + public System.Nullable Coinage { get; set; } + public System.Nullable AccountBankCoinage { get; set; } + public System.Nullable XP { get; set; } + public System.Nullable NextLevelXP { get; set; } + public System.Nullable TrialXP { get; set; } + public ISkillInfo Skill { get; set; } + public System.Nullable CharacterPoints { get; set; } + public System.Nullable MaxTalentTiers { get; set; } + public System.Nullable TrackCreatureMask { get; set; } + public System.Nullable MainhandExpertise { get; set; } + public System.Nullable OffhandExpertise { get; set; } + public System.Nullable RangedExpertise { get; set; } + public System.Nullable CombatRatingExpertise { get; set; } + public System.Nullable BlockPercentage { get; set; } + public System.Nullable DodgePercentage { get; set; } + public System.Nullable DodgePercentageFromAttribute { get; set; } + public System.Nullable ParryPercentage { get; set; } + public System.Nullable ParryPercentageFromAttribute { get; set; } + public System.Nullable CritPercentage { get; set; } + public System.Nullable RangedCritPercentage { get; set; } + public System.Nullable OffhandCritPercentage { get; set; } + public System.Nullable SpellCritPercentage { get; set; } + public System.Nullable ShieldBlock { get; set; } + public System.Nullable ShieldBlockCritPercentage { get; set; } + public System.Nullable Mastery { get; set; } + public System.Nullable Speed { get; set; } + public System.Nullable Avoidance { get; set; } + public System.Nullable Sturdiness { get; set; } + public System.Nullable Versatility { get; set; } + public System.Nullable VersatilityBonus { get; set; } + public System.Nullable PvpPowerDamage { get; set; } + public System.Nullable PvpPowerHealing { get; set; } + public IBitVectors BitVectors { get; set; } + public IRestInfo[] RestInfo { get; } = new IRestInfo[2]; + public System.Nullable[] ModDamageDonePos { get; } = new System.Nullable[7]; + public System.Nullable[] ModDamageDoneNeg { get; } = new System.Nullable[7]; + public System.Nullable[] ModDamageDonePercent { get; } = new System.Nullable[7]; + public System.Nullable[] ModHealingDonePercent { get; } = new System.Nullable[7]; + public System.Nullable ModHealingDonePos { get; set; } + public System.Nullable ModHealingPercent { get; set; } + public System.Nullable ModPeriodicHealingDonePercent { get; set; } + public System.Nullable[] WeaponDmgMultipliers { get; } = new System.Nullable[3]; + public System.Nullable[] WeaponAtkSpeedMultipliers { get; } = new System.Nullable[3]; + public System.Nullable ModSpellPowerPercent { get; set; } + public System.Nullable ModResiliencePercent { get; set; } + public System.Nullable OverrideSpellPowerByAPPercent { get; set; } + public System.Nullable OverrideAPBySpellPowerPercent { get; set; } + public System.Nullable ModTargetResistance { get; set; } + public System.Nullable ModTargetPhysicalResistance { get; set; } + public System.Nullable LocalFlags { get; set; } + public System.Nullable GrantableLevels { get; set; } + public System.Nullable MultiActionBars { get; set; } + public System.Nullable LifetimeMaxRank { get; set; } + public System.Nullable NumRespecs { get; set; } + public System.Nullable PvpMedals { get; set; } + public System.Nullable[] BuybackPrice { get; } = new System.Nullable[12]; + public System.Nullable[] BuybackTimestamp { get; } = new System.Nullable[12]; + public System.Nullable TodayHonorableKills { get; set; } + public System.Nullable YesterdayHonorableKills { get; set; } + public System.Nullable LifetimeHonorableKills { get; set; } + public System.Nullable WatchedFactionIndex { get; set; } + public System.Nullable[] CombatRatings { get; } = new System.Nullable[32]; + public System.Nullable MaxLevel { get; set; } + public System.Nullable ScalingPlayerLevelDelta { get; set; } + public System.Nullable MaxCreatureScalingLevel { get; set; } + public System.Nullable[] NoReagentCostMask { get; } = new System.Nullable[4]; + public System.Nullable PetSpellPower { get; set; } + public System.Nullable[] ProfessionSkillLine { get; } = new System.Nullable[2]; + public System.Nullable UiHitModifier { get; set; } + public System.Nullable UiSpellHitModifier { get; set; } + public System.Nullable HomeRealmTimeOffset { get; set; } + public System.Nullable ModPetHaste { get; set; } + public System.Nullable JailersTowerLevelMax { get; set; } + public System.Nullable JailersTowerLevel { get; set; } + public System.Nullable LocalRegenFlags { get; set; } + public System.Nullable AuraVision { get; set; } + public System.Nullable NumBackpackSlots { get; set; } + public System.Nullable OverrideSpellsID { get; set; } + public System.Nullable LootSpecID { get; set; } + public System.Nullable OverrideZonePVPType { get; set; } + public System.Nullable[] BagSlotFlags { get; } = new System.Nullable[5]; + public System.Nullable[] BankBagSlotFlags { get; } = new System.Nullable[7]; + public System.Nullable[] QuestCompleted { get; } = new System.Nullable[1000]; + public System.Nullable Honor { get; set; } + public System.Nullable HonorNextLevel { get; set; } + public System.Nullable PerksProgramCurrency { get; set; } + public System.Nullable NumBankSlots { get; set; } + public System.Nullable NumAccountBankTabs { get; set; } + public IResearchHistory ResearchHistory { get; set; } + public IActivePlayerUnk901 Field_1410 { get; set; } + public IQuestSession QuestSession { get; set; } + public System.Nullable UiChromieTimeExpansionID { get; set; } + public System.Nullable TimerunningSeasonID { get; set; } + public System.Nullable TransportServerTime { get; set; } + public System.Nullable WeeklyRewardsPeriodSinceOrigin { get; set; } + public System.Nullable DEBUGSoulbindConduitRank { get; set; } + public System.Nullable ActiveCombatTraitConfigID { get; set; } + public System.Nullable[] ItemUpgradeHighWatermark { get; } = new System.Nullable[17]; + public System.Nullable ItemUpgradeHighOnehandWeaponItemID { get; set; } + public System.Nullable ItemUpgradeHighFingerItemID { get; set; } + public System.Nullable ItemUpgradeHighFingerWatermark { get; set; } + public System.Nullable ItemUpgradeHighTrinketItemID { get; set; } + public System.Nullable ItemUpgradeHighTrinketWatermark { get; set; } + public System.Nullable LootHistoryInstanceID { get; set; } + public IStableInfo PetStable { get; set; } + public System.Nullable RequiredMountCapabilityFlags { get; set; } + public IWalkInData WalkInData { get; set; } + public IDelveData DelveData { get; set; } + public DynamicUpdateField>[] ResearchSites { get; } = new DynamicUpdateField>[1] { new DynamicUpdateField>() }; + public DynamicUpdateField>[] ResearchSiteProgress { get; } = new DynamicUpdateField>[1] { new DynamicUpdateField>() }; + public DynamicUpdateField[] Research { get; } = new DynamicUpdateField[1] { new DynamicUpdateField() }; + public DynamicUpdateField> KnownTitles { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> DailyQuestsCompleted { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> AvailableQuestLineXQuestIDs { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Heirlooms { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> HeirloomFlags { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Toys { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> ToyFlags { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Transmog { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> ConditionalTransmog { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> SelfResSpells { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> RuneforgePowers { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> TransmogIllusions { get; } = new DynamicUpdateField>(); + public DynamicUpdateField SpellPctModByLabel { get; } = new DynamicUpdateField(); + public DynamicUpdateField SpellFlatModByLabel { get; } = new DynamicUpdateField(); + public DynamicUpdateField MawPowers { get; } = new DynamicUpdateField(); + public DynamicUpdateField MultiFloorExploration { get; } = new DynamicUpdateField(); + public DynamicUpdateField RecipeProgression { get; } = new DynamicUpdateField(); + public DynamicUpdateField ReplayedQuests { get; } = new DynamicUpdateField(); + public DynamicUpdateField TaskQuests { get; } = new DynamicUpdateField(); + public DynamicUpdateField> DisabledSpells { get; } = new DynamicUpdateField>(); + public DynamicUpdateField PersonalCraftingOrderCounts { get; } = new DynamicUpdateField(); + public DynamicUpdateField NpcCraftingOrders { get; } = new DynamicUpdateField(); + public DynamicUpdateField CategoryCooldownMods { get; } = new DynamicUpdateField(); + public DynamicUpdateField WeeklySpellUses { get; } = new DynamicUpdateField(); + public DynamicUpdateField TrackedCollectableSources { get; } = new DynamicUpdateField(); + public System.Nullable BackpackAutoSortDisabled { get; set; } + public System.Nullable BackpackSellJunkDisabled { get; set; } + public System.Nullable BankAutoSortDisabled { get; set; } + public System.Nullable SortBagsRightToLeft { get; set; } + public System.Nullable InsertItemsLeftToRight { get; set; } + public System.Nullable HasPerksProgramPendingReward { get; set; } + public DynamicUpdateField CharacterDataElements { get; } = new DynamicUpdateField(); + public DynamicUpdateField AccountDataElements { get; } = new DynamicUpdateField(); + public DynamicUpdateField PvpInfo { get; } = new DynamicUpdateField(); + public DynamicUpdateField CharacterRestrictions { get; } = new DynamicUpdateField(); + public DynamicUpdateField TraitConfigs { get; } = new DynamicUpdateField(); + public DynamicUpdateField CraftingOrders { get; } = new DynamicUpdateField(); + public DynamicUpdateField AccountBankTabSettings { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerUnk901.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerUnk901.cs new file mode 100644 index 0000000000..769374929b --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ActivePlayerUnk901.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ActivePlayerUnk901 : IActivePlayerUnk901 + { + public WowGuid Field_0 { get; set; } + public System.Nullable Field_10 { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AreaTriggerData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AreaTriggerData.cs new file mode 100644 index 0000000000..2913655fb4 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AreaTriggerData.cs @@ -0,0 +1,41 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class AreaTriggerData : IAreaTriggerData + { + public WowGuid Caster { get; set; } + public System.Nullable Duration { get; set; } + public System.Nullable TimeToTarget { get; set; } + public System.Nullable TimeToTargetScale { get; set; } + public System.Nullable TimeToTargetExtraScale { get; set; } + public System.Nullable TimeToTargetPos { get; set; } + public System.Nullable SpellID { get; set; } + public System.Nullable SpellForVisuals { get; set; } + public ISpellCastVisual SpellVisual { get; set; } + public System.Nullable BoundsRadius2D { get; set; } + public System.Nullable DecalPropertiesID { get; set; } + public WowGuid CreatingEffectGUID { get; set; } + public System.Nullable NumUnitsInside { get; set; } + public System.Nullable NumPlayersInside { get; set; } + public WowGuid OrbitPathTarget { get; set; } + public Vector3 RollPitchYaw { get; set; } + public System.Nullable PositionalSoundKitID { get; set; } + public IScaleCurve OverrideScaleCurve { get; set; } + public IScaleCurve ExtraScaleCurve { get; set; } + public IScaleCurve OverrideMoveCurveX { get; set; } + public IScaleCurve OverrideMoveCurveY { get; set; } + public IScaleCurve OverrideMoveCurveZ { get; set; } + public IVisualAnim VisualAnim { get; set; } + public System.Nullable HeightIgnoresScale { get; set; } + public System.Nullable Field_261 { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArenaCooldown.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArenaCooldown.cs new file mode 100644 index 0000000000..48e7036eed --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArenaCooldown.cs @@ -0,0 +1,23 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ArenaCooldown : IArenaCooldown + { + public System.Nullable SpellID { get; set; } + public System.Nullable Charges { get; set; } + public System.Nullable Flags { get; set; } + public System.Nullable StartTime { get; set; } + public System.Nullable EndTime { get; set; } + public System.Nullable NextChargeTime { get; set; } + public System.Nullable MaxCharges { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArtifactPower.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArtifactPower.cs new file mode 100644 index 0000000000..1786408879 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ArtifactPower.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ArtifactPower : IArtifactPower + { + public short ArtifactPowerID { get; set; } + public byte PurchasedRank { get; set; } + public byte CurrentRankWithBonus { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteEmpoweredItemData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteEmpoweredItemData.cs new file mode 100644 index 0000000000..f4dbc68c9e --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteEmpoweredItemData.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class AzeriteEmpoweredItemData : IAzeriteEmpoweredItemData + { + public System.Nullable[] Selections { get; } = new System.Nullable[5]; + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteItemData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteItemData.cs new file mode 100644 index 0000000000..f0007a7788 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/AzeriteItemData.cs @@ -0,0 +1,25 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class AzeriteItemData : IAzeriteItemData + { + public System.Nullable Xp { get; set; } + public System.Nullable Level { get; set; } + public System.Nullable AuraLevel { get; set; } + public System.Nullable KnowledgeLevel { get; set; } + public System.Nullable DEBUGknowledgeWeek { get; set; } + public DynamicUpdateField UnlockedEssences { get; } = new DynamicUpdateField(); + public DynamicUpdateField> UnlockedEssenceMilestones { get; } = new DynamicUpdateField>(); + public System.Nullable Enabled { get; set; } + public DynamicUpdateField SelectedEssences { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BankTabSettings.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BankTabSettings.cs new file mode 100644 index 0000000000..124e38be4f --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BankTabSettings.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class BankTabSettings : IBankTabSettings + { + public System.Nullable DepositFlags { get; set; } + public string Name { get; set; } + public string Icon { get; set; } + public string Description { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVector.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVector.cs new file mode 100644 index 0000000000..7537413611 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVector.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class BitVector : IBitVector + { + public DynamicUpdateField> Values { get; } = new DynamicUpdateField>(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVectors.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVectors.cs new file mode 100644 index 0000000000..61b15d28fb --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/BitVectors.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class BitVectors : IBitVectors + { + public IBitVector[] Values { get; } = new IBitVector[13]; + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CTROptions.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CTROptions.cs new file mode 100644 index 0000000000..9a2a2ffbe5 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CTROptions.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CTROptions : ICTROptions + { + public int ConditionalFlags { get; set; } + public uint FactionGroup { get; set; } + public uint ChromieTimeExpansionMask { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CategoryCooldownMod.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CategoryCooldownMod.cs new file mode 100644 index 0000000000..a143ac3ccb --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CategoryCooldownMod.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CategoryCooldownMod : ICategoryCooldownMod + { + public int SpellCategoryID { get; set; } + public int ModCooldown { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CharacterRestriction.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CharacterRestriction.cs new file mode 100644 index 0000000000..7ee8ad998e --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CharacterRestriction.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CharacterRestriction : ICharacterRestriction + { + public int Field_0 { get; set; } + public int Field_4 { get; set; } + public int Field_8 { get; set; } + public uint Type { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ChrCustomizationChoice.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ChrCustomizationChoice.cs new file mode 100644 index 0000000000..3467da4ef7 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ChrCustomizationChoice.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ChrCustomizationChoice : IChrCustomizationChoice + { + public uint ChrCustomizationOptionID { get; set; } + public uint ChrCustomizationChoiceID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CollectableSourceTrackedData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CollectableSourceTrackedData.cs new file mode 100644 index 0000000000..f6909a9904 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CollectableSourceTrackedData.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CollectableSourceTrackedData : ICollectableSourceTrackedData + { + public System.Nullable TargetType { get; set; } + public System.Nullable TargetID { get; set; } + public System.Nullable CollectableSourceInfoID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CompletedProject.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CompletedProject.cs new file mode 100644 index 0000000000..f82e3f7d06 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CompletedProject.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CompletedProject : ICompletedProject + { + public System.Nullable ProjectID { get; set; } + public System.Nullable FirstCompleted { get; set; } + public System.Nullable CompletionCount { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ContainerData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ContainerData.cs new file mode 100644 index 0000000000..faac41461d --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ContainerData.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ContainerData : IContainerData + { + public WowGuid[] Slots { get; } = new WowGuid[98]; + public System.Nullable NumSlots { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationActor.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationActor.cs new file mode 100644 index 0000000000..8da99b1125 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationActor.cs @@ -0,0 +1,22 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationActor : IConversationActor + { + public uint CreatureID { get; set; } + public uint CreatureDisplayInfoID { get; set; } + public WowGuid ActorGUID { get; set; } + public int Id { get; set; } + public uint Type { get; set; } + public uint NoActorObject { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationData.cs new file mode 100644 index 0000000000..09bcc79024 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationData.cs @@ -0,0 +1,22 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationData : IMutableConversationData + { + public System.Nullable LastLineEndTime { get; set; } + public System.Nullable Progress { get; set; } + public IConversationLine[] Lines { get; set; } + public System.Nullable Flags { get; set; } + public System.Nullable DontPlayBroadcastTextSounds { get; set; } + public DynamicUpdateField Actors { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationLine.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationLine.cs new file mode 100644 index 0000000000..64f05cecef --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ConversationLine.cs @@ -0,0 +1,23 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationLine : IConversationLine + { + public int ConversationLineID { get; set; } + public int BroadcastTextID { get; set; } + public uint StartTime { get; set; } + public int UiCameraID { get; set; } + public byte ActorIndex { get; set; } + public byte Flags { get; set; } + public byte ChatType { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CorpseData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CorpseData.cs new file mode 100644 index 0000000000..efff344f69 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CorpseData.cs @@ -0,0 +1,29 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CorpseData : ICorpseData + { + public System.Nullable DynamicFlags { get; set; } + public WowGuid Owner { get; set; } + public WowGuid PartyGUID { get; set; } + public WowGuid GuildGUID { get; set; } + public System.Nullable DisplayID { get; set; } + public System.Nullable[] Items { get; } = new System.Nullable[19]; + public System.Nullable RaceID { get; set; } + public System.Nullable Sex { get; set; } + public System.Nullable Class { get; set; } + public System.Nullable Flags { get; set; } + public System.Nullable FactionTemplate { get; set; } + public System.Nullable StateSpellVisualKitID { get; set; } + public DynamicUpdateField Customizations { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrder.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrder.cs new file mode 100644 index 0000000000..f897135eb3 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrder.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CraftingOrder : ICraftingOrder + { + public DynamicUpdateField Enchantments { get; } = new DynamicUpdateField(); + public DynamicUpdateField Gems { get; } = new DynamicUpdateField(); + public ICraftingOrderData Data { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderCustomer.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderCustomer.cs new file mode 100644 index 0000000000..b07b19746f --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderCustomer.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CraftingOrderCustomer : ICraftingOrderCustomer + { + public WowGuid CustomerGUID { get; set; } + public WowGuid CustomerAccountGUID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderData.cs new file mode 100644 index 0000000000..3a3c76738e --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderData.cs @@ -0,0 +1,36 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CraftingOrderData : ICraftingOrderData + { + public System.Nullable Field_0 { get; set; } + public System.Nullable OrderID { get; set; } + public System.Nullable SkillLineAbilityID { get; set; } + public System.Nullable OrderState { get; set; } + public System.Nullable OrderType { get; set; } + public System.Nullable MinQuality { get; set; } + public System.Nullable ExpirationTime { get; set; } + public System.Nullable ClaimEndTime { get; set; } + public System.Nullable TipAmount { get; set; } + public System.Nullable ConsortiumCut { get; set; } + public System.Nullable Flags { get; set; } + public WowGuid CrafterGUID { get; set; } + public WowGuid PersonalCrafterGUID { get; set; } + public System.Nullable NpcCraftingOrderSetID { get; set; } + public System.Nullable NpcTreasureID { get; set; } + public ICraftingOrderCustomer Customer { get; set; } + public ICraftingOrderNpcCustomer NpcCustomer { get; set; } + public ICraftingOrderItem OutputItem { get; set; } + public DynamicUpdateField Reagents { get; } = new DynamicUpdateField(); + public string CustomerNotes { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderItem.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderItem.cs new file mode 100644 index 0000000000..03582b8c1f --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderItem.cs @@ -0,0 +1,23 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CraftingOrderItem : ICraftingOrderItem + { + public System.Nullable Field_0 { get; set; } + public WowGuid ItemGUID { get; set; } + public WowGuid OwnerGUID { get; set; } + public System.Nullable ItemID { get; set; } + public System.Nullable Quantity { get; set; } + public System.Nullable ReagentQuality { get; set; } + public System.Nullable DataSlotIndex { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderNpcCustomer.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderNpcCustomer.cs new file mode 100644 index 0000000000..1e8d2066dc --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CraftingOrderNpcCustomer.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CraftingOrderNpcCustomer : ICraftingOrderNpcCustomer + { + public System.Nullable NpcCraftingOrderCustomerID { get; set; } + public System.Nullable Field_8 { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CustomTabardInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CustomTabardInfo.cs new file mode 100644 index 0000000000..281951286e --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/CustomTabardInfo.cs @@ -0,0 +1,21 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class CustomTabardInfo : ICustomTabardInfo + { + public System.Nullable EmblemStyle { get; set; } + public System.Nullable EmblemColor { get; set; } + public System.Nullable BorderStyle { get; set; } + public System.Nullable BorderColor { get; set; } + public System.Nullable BackgroundColor { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DeclinedNames.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DeclinedNames.cs new file mode 100644 index 0000000000..e660a58560 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DeclinedNames.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class DeclinedNames : IDeclinedNames + { + public string[] Name { get; } = new string[5]; + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DelveData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DelveData.cs new file mode 100644 index 0000000000..58b6c2bae0 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DelveData.cs @@ -0,0 +1,22 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class DelveData : IDelveData + { + public int Field_0 { get; set; } + public ulong Field_8 { get; set; } + public int Field_10 { get; set; } + public int SpellID { get; set; } + public WowGuid[] Owners { get; set; } + public uint Started { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DynamicObjectData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DynamicObjectData.cs new file mode 100644 index 0000000000..f285395e07 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/DynamicObjectData.cs @@ -0,0 +1,22 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class DynamicObjectData : IDynamicObjectData + { + public WowGuid Caster { get; set; } + public System.Nullable Type { get; set; } + public ISpellCastVisual SpellVisual { get; set; } + public System.Nullable SpellID { get; set; } + public System.Nullable Radius { get; set; } + public System.Nullable CastTime { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/GameObjectData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/GameObjectData.cs new file mode 100644 index 0000000000..67a80b1c73 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/GameObjectData.cs @@ -0,0 +1,40 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class GameObjectData : IMutableGameObjectData + { + public System.Nullable DisplayID { get; set; } + public System.Nullable SpellVisualID { get; set; } + public System.Nullable StateSpellVisualID { get; set; } + public System.Nullable SpawnTrackingStateAnimID { get; set; } + public System.Nullable SpawnTrackingStateAnimKitID { get; set; } + public System.Nullable StateWorldEffectsQuestObjectiveID { get; set; } + public System.Nullable[] StateWorldEffectIDs { get; set; } + public WowGuid CreatedBy { get; set; } + public WowGuid GuildGUID { get; set; } + public System.Nullable Flags { get; set; } + public Quaternion? ParentRotation { get; set; } + public System.Nullable FactionTemplate { get; set; } + public System.Nullable State { get; set; } + public System.Nullable TypeID { get; set; } + public System.Nullable PercentHealth { get; set; } + public System.Nullable ArtKit { get; set; } + public System.Nullable CustomParam { get; set; } + public System.Nullable Level { get; set; } + public System.Nullable AnimGroupInstance { get; set; } + public System.Nullable UiWidgetItemID { get; set; } + public System.Nullable UiWidgetItemQuality { get; set; } + public System.Nullable UiWidgetItemUnknown1000 { get; set; } + public DynamicUpdateField> EnableDoodadSets { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> WorldEffects { get; } = new DynamicUpdateField>(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemData.cs new file mode 100644 index 0000000000..ba4ddf7c10 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemData.cs @@ -0,0 +1,37 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ItemData : IItemData + { + public WowGuid Owner { get; set; } + public WowGuid ContainedIn { get; set; } + public WowGuid Creator { get; set; } + public WowGuid GiftCreator { get; set; } + public System.Nullable StackCount { get; set; } + public System.Nullable Expiration { get; set; } + public System.Nullable[] SpellCharges { get; } = new System.Nullable[5]; + public System.Nullable DynamicFlags { get; set; } + public IItemEnchantment[] Enchantment { get; } = new IItemEnchantment[13]; + public System.Nullable Durability { get; set; } + public System.Nullable MaxDurability { get; set; } + public System.Nullable CreatePlayedTime { get; set; } + public System.Nullable Context { get; set; } + public System.Nullable CreateTime { get; set; } + public System.Nullable ArtifactXP { get; set; } + public System.Nullable ItemAppearanceModID { get; set; } + public System.Nullable ZoneFlags { get; set; } + public System.Nullable DEBUGItemLevel { get; set; } + public DynamicUpdateField ArtifactPowers { get; } = new DynamicUpdateField(); + public DynamicUpdateField Gems { get; } = new DynamicUpdateField(); + public IItemModList Modifiers { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemEnchantment.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemEnchantment.cs new file mode 100644 index 0000000000..851c868c15 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemEnchantment.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ItemEnchantment : IItemEnchantment + { + public System.Nullable ID { get; set; } + public System.Nullable Duration { get; set; } + public System.Nullable Charges { get; set; } + public System.Nullable Inactive { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemMod.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemMod.cs new file mode 100644 index 0000000000..db6a5c5a84 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemMod.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ItemMod : IItemMod + { + public byte Type { get; set; } + public int Value { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemModList.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemModList.cs new file mode 100644 index 0000000000..832ed8e732 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ItemModList.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ItemModList : IItemModList + { + public DynamicUpdateField Values { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MawPower.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MawPower.cs new file mode 100644 index 0000000000..5be8e86c21 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MawPower.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class MawPower : IMawPower + { + public int SpellID { get; set; } + public int MawPowerID { get; set; } + public int Stacks { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MultiFloorExplore.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MultiFloorExplore.cs new file mode 100644 index 0000000000..74adead485 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/MultiFloorExplore.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class MultiFloorExplore : IMultiFloorExplore + { + public int[] WorldMapOverlayIDs { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/NPCCraftingOrderInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/NPCCraftingOrderInfo.cs new file mode 100644 index 0000000000..4dc3168fe7 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/NPCCraftingOrderInfo.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class NPCCraftingOrderInfo : INPCCraftingOrderInfo + { + public System.Nullable OrderID { get; set; } + public System.Nullable NpcCraftingOrderSetID { get; set; } + public System.Nullable NpcTreasureID { get; set; } + public System.Nullable NpcCraftingOrderCustomerID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ObjectData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ObjectData.cs new file mode 100644 index 0000000000..6f1e141414 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ObjectData.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ObjectData : IMutableObjectData + { + public System.Nullable EntryID { get; set; } + public System.Nullable DynamicFlags { get; set; } + public System.Nullable Scale { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PVPInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PVPInfo.cs new file mode 100644 index 0000000000..01df00b0f2 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PVPInfo.cs @@ -0,0 +1,34 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class PVPInfo : IPVPInfo + { + public System.Nullable Bracket { get; set; } + public System.Nullable PvpRatingID { get; set; } + public System.Nullable WeeklyPlayed { get; set; } + public System.Nullable WeeklyWon { get; set; } + public System.Nullable SeasonPlayed { get; set; } + public System.Nullable SeasonWon { get; set; } + public System.Nullable Rating { get; set; } + public System.Nullable WeeklyBestRating { get; set; } + public System.Nullable SeasonBestRating { get; set; } + public System.Nullable PvpTierID { get; set; } + public System.Nullable WeeklyBestWinPvpTierID { get; set; } + public System.Nullable Field_28 { get; set; } + public System.Nullable Field_2C { get; set; } + public System.Nullable WeeklyRoundsPlayed { get; set; } + public System.Nullable WeeklyRoundsWon { get; set; } + public System.Nullable SeasonRoundsPlayed { get; set; } + public System.Nullable SeasonRoundsWon { get; set; } + public System.Nullable Disqualified { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PassiveSpellHistory.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PassiveSpellHistory.cs new file mode 100644 index 0000000000..e8ed785916 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PassiveSpellHistory.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class PassiveSpellHistory : IPassiveSpellHistory + { + public int SpellID { get; set; } + public int AuraSpellID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PersonalCraftingOrderCount.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PersonalCraftingOrderCount.cs new file mode 100644 index 0000000000..4f3e261e57 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PersonalCraftingOrderCount.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class PersonalCraftingOrderCount : IPersonalCraftingOrderCount + { + public System.Nullable ProfessionID { get; set; } + public System.Nullable Count { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PetCreatureName.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PetCreatureName.cs new file mode 100644 index 0000000000..51c14b6127 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PetCreatureName.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class PetCreatureName : IPetCreatureName + { + public System.Nullable CreatureID { get; set; } + public string Name { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerData.cs new file mode 100644 index 0000000000..3dcd110906 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerData.cs @@ -0,0 +1,67 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class PlayerData : IPlayerData + { + public WowGuid DuelArbiter { get; set; } + public WowGuid WowAccount { get; set; } + public WowGuid BnetAccount { get; set; } + public System.Nullable GuildClubMemberID { get; set; } + public WowGuid LootTargetGUID { get; set; } + public System.Nullable PlayerFlags { get; set; } + public System.Nullable PlayerFlagsEx { get; set; } + public System.Nullable GuildRankID { get; set; } + public System.Nullable GuildDeleteDate { get; set; } + public System.Nullable GuildLevel { get; set; } + public System.Nullable[] PartyType { get; } = new System.Nullable[2]; + public System.Nullable NativeSex { get; set; } + public System.Nullable Inebriation { get; set; } + public System.Nullable PvpTitle { get; set; } + public System.Nullable ArenaFaction { get; set; } + public System.Nullable DuelTeam { get; set; } + public System.Nullable GuildTimeStamp { get; set; } + public IQuestLog[] QuestLog { get; } = new IQuestLog[175]; + public IVisibleItem[] VisibleItems { get; } = new IVisibleItem[19]; + public System.Nullable PlayerTitle { get; set; } + public System.Nullable FakeInebriation { get; set; } + public System.Nullable VirtualPlayerRealm { get; set; } + public System.Nullable CurrentSpecID { get; set; } + public System.Nullable TaxiMountAnimKitID { get; set; } + public System.Nullable[] AvgItemLevel { get; } = new System.Nullable[6]; + public System.Nullable CurrentBattlePetBreedQuality { get; set; } + public System.Nullable HonorLevel { get; set; } + public System.Nullable LogoutTime { get; set; } + public IZonePlayerForcedReaction[] ForcedReactions { get; } = new IZonePlayerForcedReaction[32]; + public System.Nullable Field_1AC { get; set; } + public System.Nullable Field_1B0 { get; set; } + public System.Nullable CurrentBattlePetSpeciesID { get; set; } + public ICTROptions CtrOptions { get; set; } + public System.Nullable CovenantID { get; set; } + public System.Nullable SoulbindID { get; set; } + public WowGuid SpectateTarget { get; set; } + public System.Nullable Field_200 { get; set; } + public ItemInstance[] VisibleEquipableSpells { get; } = new ItemInstance[16]; + public System.Nullable[] Field_3120 { get; } = new System.Nullable[19]; + public IDeclinedNames DeclinedNames { get; set; } + public ICustomTabardInfo PersonalTabard { get; set; } + public DynamicUpdateField Customizations { get; } = new DynamicUpdateField(); + public DynamicUpdateField QaCustomizations { get; } = new DynamicUpdateField(); + public DynamicUpdateField QuestSessionQuestLog { get; } = new DynamicUpdateField(); + public DynamicUpdateField ArenaCooldowns { get; } = new DynamicUpdateField(); + public DynamicUpdateField> VisualItemReplacements { get; } = new DynamicUpdateField>(); + public string Name { get; set; } + public System.Nullable HasQuestSession { get; set; } + public System.Nullable HasLevelLink { get; set; } + public DynamicUpdateField PetNames { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerDataElement.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerDataElement.cs new file mode 100644 index 0000000000..a5e6be885f --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/PlayerDataElement.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class PlayerDataElement : IPlayerDataElement + { + public float FloatValue { get; set; } + public long Int64Value { get; set; } + public uint Type { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestLog.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestLog.cs new file mode 100644 index 0000000000..e2eb8a3f71 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestLog.cs @@ -0,0 +1,21 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class QuestLog : IQuestLog + { + public System.Nullable EndTime { get; set; } + public System.Nullable QuestID { get; set; } + public System.Nullable StateFlags { get; set; } + public System.Nullable ObjectiveFlags { get; set; } + public System.Nullable[] ObjectiveProgress { get; } = new System.Nullable[24]; + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestSession.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestSession.cs new file mode 100644 index 0000000000..4570ed3f23 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/QuestSession.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class QuestSession : IQuestSession + { + public WowGuid Owner { get; set; } + public IBitVector QuestCompleted { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RecipeProgressionInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RecipeProgressionInfo.cs new file mode 100644 index 0000000000..7baacbdc3a --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RecipeProgressionInfo.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class RecipeProgressionInfo : IRecipeProgressionInfo + { + public ushort RecipeProgressionGroupID { get; set; } + public ushort Experience { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ReplayedQuest.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ReplayedQuest.cs new file mode 100644 index 0000000000..f758b3c3b0 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ReplayedQuest.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ReplayedQuest : IReplayedQuest + { + public System.Nullable QuestID { get; set; } + public System.Nullable ReplayTime { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/Research.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/Research.cs new file mode 100644 index 0000000000..66b116a158 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/Research.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class Research : IResearch + { + public short ResearchProjectID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ResearchHistory.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ResearchHistory.cs new file mode 100644 index 0000000000..69683d6665 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ResearchHistory.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ResearchHistory : IResearchHistory + { + public DynamicUpdateField CompletedProjects { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RestInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RestInfo.cs new file mode 100644 index 0000000000..18cd1980a9 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/RestInfo.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class RestInfo : IRestInfo + { + public System.Nullable Threshold { get; set; } + public System.Nullable StateID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ScaleCurve.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ScaleCurve.cs new file mode 100644 index 0000000000..582f7bcecc --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ScaleCurve.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ScaleCurve : IScaleCurve + { + public System.Nullable StartTimeOffset { get; set; } + public Vector2[] Points { get; } = new Vector2[2]; + public System.Nullable ParameterCurve { get; set; } + public System.Nullable OverrideActive { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SceneObjectData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SceneObjectData.cs new file mode 100644 index 0000000000..9344a66971 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SceneObjectData.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class SceneObjectData : ISceneObjectData + { + public System.Nullable ScriptPackageID { get; set; } + public System.Nullable RndSeedVal { get; set; } + public WowGuid CreatedBy { get; set; } + public System.Nullable SceneType { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SelectedAzeriteEssences.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SelectedAzeriteEssences.cs new file mode 100644 index 0000000000..9c30b95125 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SelectedAzeriteEssences.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class SelectedAzeriteEssences : ISelectedAzeriteEssences + { + public System.Nullable[] AzeriteEssenceID { get; } = new System.Nullable[4]; + public System.Nullable SpecializationID { get; set; } + public System.Nullable Enabled { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SkillInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SkillInfo.cs new file mode 100644 index 0000000000..608602a1aa --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SkillInfo.cs @@ -0,0 +1,23 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class SkillInfo : ISkillInfo + { + public System.Nullable[] SkillLineID { get; } = new System.Nullable[256]; + public System.Nullable[] SkillStep { get; } = new System.Nullable[256]; + public System.Nullable[] SkillRank { get; } = new System.Nullable[256]; + public System.Nullable[] SkillStartingRank { get; } = new System.Nullable[256]; + public System.Nullable[] SkillMaxRank { get; } = new System.Nullable[256]; + public System.Nullable[] SkillTempBonus { get; } = new System.Nullable[256]; + public System.Nullable[] SkillPermBonus { get; } = new System.Nullable[256]; + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SocketedGem.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SocketedGem.cs new file mode 100644 index 0000000000..fbf08dfb17 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SocketedGem.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class SocketedGem : ISocketedGem + { + public System.Nullable ItemID { get; set; } + public System.Nullable[] BonusListIDs { get; } = new System.Nullable[16]; + public System.Nullable Context { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellCastVisual.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellCastVisual.cs new file mode 100644 index 0000000000..7bf7519ae2 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellCastVisual.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class SpellCastVisual : ISpellCastVisual + { + public int SpellXSpellVisualID { get; set; } + public int ScriptVisualID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellFlatModByLabel.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellFlatModByLabel.cs new file mode 100644 index 0000000000..663adf08dd --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellFlatModByLabel.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class SpellFlatModByLabel : ISpellFlatModByLabel + { + public int ModIndex { get; set; } + public int ModifierValue { get; set; } + public int LabelID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellPctModByLabel.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellPctModByLabel.cs new file mode 100644 index 0000000000..00f9b1886a --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/SpellPctModByLabel.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class SpellPctModByLabel : ISpellPctModByLabel + { + public int ModIndex { get; set; } + public float ModifierValue { get; set; } + public int LabelID { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StableInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StableInfo.cs new file mode 100644 index 0000000000..3a88ff30b1 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StableInfo.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class StableInfo : IStableInfo + { + public WowGuid StableMaster { get; set; } + public DynamicUpdateField Pets { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StablePetInfo.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StablePetInfo.cs new file mode 100644 index 0000000000..349c5d5e22 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/StablePetInfo.cs @@ -0,0 +1,23 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class StablePetInfo : IStablePetInfo + { + public System.Nullable PetSlot { get; set; } + public System.Nullable PetNumber { get; set; } + public System.Nullable CreatureID { get; set; } + public System.Nullable DisplayID { get; set; } + public System.Nullable ExperienceLevel { get; set; } + public System.Nullable PetFlags { get; set; } + public string Name { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitConfig.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitConfig.cs new file mode 100644 index 0000000000..1928085e0f --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitConfig.cs @@ -0,0 +1,26 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class TraitConfig : ITraitConfig + { + public System.Nullable ID { get; set; } + public System.Nullable Type { get; set; } + public System.Nullable SkillLineID { get; set; } + public System.Nullable ChrSpecializationID { get; set; } + public System.Nullable CombatConfigFlags { get; set; } + public System.Nullable LocalIdentifier { get; set; } + public System.Nullable TraitSystemID { get; set; } + public DynamicUpdateField Entries { get; } = new DynamicUpdateField(); + public string Name { get; set; } + public DynamicUpdateField SubTrees { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitEntry.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitEntry.cs new file mode 100644 index 0000000000..56d2611c4e --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitEntry.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class TraitEntry : ITraitEntry + { + public int TraitNodeID { get; set; } + public int TraitNodeEntryID { get; set; } + public int Rank { get; set; } + public int GrantedRanks { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitSubTreeCache.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitSubTreeCache.cs new file mode 100644 index 0000000000..4f6b22209a --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/TraitSubTreeCache.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class TraitSubTreeCache : ITraitSubTreeCache + { + public int TraitSubTreeID { get; set; } + public ITraitEntry[] Entries { get; set; } + public uint Active { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitChannel.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitChannel.cs new file mode 100644 index 0000000000..a157f4c281 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitChannel.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UnitChannel : IUnitChannel + { + public int SpellID { get; set; } + public ISpellCastVisual SpellVisual { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitData.cs new file mode 100644 index 0000000000..0821b8dd06 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnitData.cs @@ -0,0 +1,159 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UnitData : IMutableUnitData + { + public System.Nullable DisplayID { get; set; } + public System.Nullable NpcFlags { get; set; } + public System.Nullable NpcFlags2 { get; set; } + public System.Nullable StateSpellVisualID { get; set; } + public System.Nullable StateAnimID { get; set; } + public System.Nullable StateAnimKitID { get; set; } + public System.Nullable StateWorldEffectsQuestObjectiveID { get; set; } + public System.Nullable SpellOverrideNameID { get; set; } + public System.Nullable[] StateWorldEffectIDs { get; set; } + public WowGuid Charm { get; set; } + public WowGuid Summon { get; set; } + public WowGuid Critter { get; set; } + public WowGuid CharmedBy { get; set; } + public WowGuid SummonedBy { get; set; } + public WowGuid CreatedBy { get; set; } + public WowGuid DemonCreator { get; set; } + public WowGuid LookAtControllerTarget { get; set; } + public WowGuid Target { get; set; } + public WowGuid BattlePetCompanionGUID { get; set; } + public System.Nullable BattlePetDBID { get; set; } + public IUnitChannel ChannelData { get; set; } + public System.Nullable SpellEmpowerStage { get; set; } + public System.Nullable SummonedByHomeRealm { get; set; } + public System.Nullable Race { get; set; } + public System.Nullable ClassId { get; set; } + public System.Nullable PlayerClassId { get; set; } + public System.Nullable Sex { get; set; } + public System.Nullable DisplayPower { get; set; } + public System.Nullable OverrideDisplayPowerID { get; set; } + public System.Nullable Health { get; set; } + public System.Nullable[] Power { get; } = new System.Nullable[10]; + public System.Nullable[] MaxPower { get; } = new System.Nullable[10]; + public System.Nullable[] PowerRegenFlatModifier { get; } = new System.Nullable[10]; + public System.Nullable[] PowerRegenInterruptedFlatModifier { get; } = new System.Nullable[10]; + public System.Nullable MaxHealth { get; set; } + public System.Nullable Level { get; set; } + public System.Nullable EffectiveLevel { get; set; } + public System.Nullable ContentTuningID { get; set; } + public System.Nullable ScalingLevelMin { get; set; } + public System.Nullable ScalingLevelMax { get; set; } + public System.Nullable ScalingLevelDelta { get; set; } + public System.Nullable ScalingFactionGroup { get; set; } + public System.Nullable FactionTemplate { get; set; } + public IVisibleItem[] VirtualItems { get; } = new IVisibleItem[3]; + public System.Nullable Flags { get; set; } + public System.Nullable Flags2 { get; set; } + public System.Nullable Flags3 { get; set; } + public System.Nullable AuraState { get; set; } + public System.Nullable[] AttackRoundBaseTime { get; } = new System.Nullable[2]; + public System.Nullable RangedAttackRoundBaseTime { get; set; } + public System.Nullable BoundingRadius { get; set; } + public System.Nullable CombatReach { get; set; } + public System.Nullable DisplayScale { get; set; } + public System.Nullable CreatureFamily { get; set; } + public System.Nullable CreatureType { get; set; } + public System.Nullable NativeDisplayID { get; set; } + public System.Nullable NativeXDisplayScale { get; set; } + public System.Nullable MountDisplayID { get; set; } + public System.Nullable CosmeticMountDisplayID { get; set; } + public System.Nullable MinDamage { get; set; } + public System.Nullable MaxDamage { get; set; } + public System.Nullable MinOffHandDamage { get; set; } + public System.Nullable MaxOffHandDamage { get; set; } + public System.Nullable StandState { get; set; } + public System.Nullable PetTalentPoints { get; set; } + public System.Nullable VisFlags { get; set; } + public System.Nullable AnimTier { get; set; } + public System.Nullable PetNumber { get; set; } + public System.Nullable PetNameTimestamp { get; set; } + public System.Nullable PetExperience { get; set; } + public System.Nullable PetNextLevelExperience { get; set; } + public System.Nullable ModCastingSpeed { get; set; } + public System.Nullable ModCastingSpeedNeg { get; set; } + public System.Nullable ModSpellHaste { get; set; } + public System.Nullable ModHaste { get; set; } + public System.Nullable ModRangedHaste { get; set; } + public System.Nullable ModHasteRegen { get; set; } + public System.Nullable ModTimeRate { get; set; } + public System.Nullable CreatedBySpell { get; set; } + public System.Nullable EmoteState { get; set; } + public System.Nullable[] Stats { get; } = new System.Nullable[4]; + public System.Nullable[] StatPosBuff { get; } = new System.Nullable[4]; + public System.Nullable[] StatNegBuff { get; } = new System.Nullable[4]; + public System.Nullable[] StatSupportBuff { get; } = new System.Nullable[4]; + public System.Nullable[] Resistances { get; } = new System.Nullable[7]; + public System.Nullable[] BonusResistanceMods { get; } = new System.Nullable[7]; + public System.Nullable[] ManaCostModifier { get; } = new System.Nullable[7]; + public System.Nullable BaseMana { get; set; } + public System.Nullable BaseHealth { get; set; } + public System.Nullable SheatheState { get; set; } + public System.Nullable PvpFlags { get; set; } + public System.Nullable PetFlags { get; set; } + public System.Nullable ShapeshiftForm { get; set; } + public System.Nullable AttackPower { get; set; } + public System.Nullable AttackPowerModPos { get; set; } + public System.Nullable AttackPowerModNeg { get; set; } + public System.Nullable AttackPowerMultiplier { get; set; } + public System.Nullable AttackPowerModSupport { get; set; } + public System.Nullable RangedAttackPower { get; set; } + public System.Nullable RangedAttackPowerModPos { get; set; } + public System.Nullable RangedAttackPowerModNeg { get; set; } + public System.Nullable RangedAttackPowerMultiplier { get; set; } + public System.Nullable RangedAttackPowerModSupport { get; set; } + public System.Nullable MainHandWeaponAttackPower { get; set; } + public System.Nullable OffHandWeaponAttackPower { get; set; } + public System.Nullable RangedWeaponAttackPower { get; set; } + public System.Nullable SetAttackSpeedAura { get; set; } + public System.Nullable Lifesteal { get; set; } + public System.Nullable MinRangedDamage { get; set; } + public System.Nullable MaxRangedDamage { get; set; } + public System.Nullable ManaCostMultiplier { get; set; } + public System.Nullable MaxHealthModifier { get; set; } + public System.Nullable HoverHeight { get; set; } + public System.Nullable MinItemLevelCutoff { get; set; } + public System.Nullable MinItemLevel { get; set; } + public System.Nullable MaxItemLevel { get; set; } + public System.Nullable AzeriteItemLevel { get; set; } + public System.Nullable WildBattlePetLevel { get; set; } + public System.Nullable BattlePetCompanionExperience { get; set; } + public System.Nullable BattlePetCompanionNameTimestamp { get; set; } + public System.Nullable InteractSpellID { get; set; } + public System.Nullable ScaleDuration { get; set; } + public System.Nullable LooksLikeMountID { get; set; } + public System.Nullable LooksLikeCreatureID { get; set; } + public System.Nullable LookAtControllerID { get; set; } + public System.Nullable PerksVendorItemID { get; set; } + public System.Nullable TaxiNodesID { get; set; } + public WowGuid GuildGUID { get; set; } + public System.Nullable FlightCapabilityID { get; set; } + public System.Nullable GlideEventSpeedDivisor { get; set; } + public System.Nullable MaxHealthModifierFlatNeg { get; set; } + public System.Nullable MaxHealthModifierFlatPos { get; set; } + public System.Nullable SilencedSchoolMask { get; set; } + public System.Nullable CurrentAreaID { get; set; } + public System.Nullable Field_31C { get; set; } + public System.Nullable Field_320 { get; set; } + public WowGuid NameplateAttachToGUID { get; set; } + public DynamicUpdateField PassiveSpells { get; } = new DynamicUpdateField(); + public DynamicUpdateField> WorldEffects { get; } = new DynamicUpdateField>(); + public DynamicUpdateField ChannelObjects { get; } = new DynamicUpdateField(); + public System.Nullable Field_314 { get; set; } + + uint?[] IUnitData.NpcFlags => new[] { NpcFlags, NpcFlags2 }; + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnlockedAzeriteEssence.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnlockedAzeriteEssence.cs new file mode 100644 index 0000000000..10b685b4d7 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/UnlockedAzeriteEssence.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UnlockedAzeriteEssence : IUnlockedAzeriteEssence + { + public uint AzeriteEssenceID { get; set; } + public uint Rank { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VendorData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VendorData.cs new file mode 100644 index 0000000000..c2d551b098 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VendorData.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class VendorData : IVendorData + { + public System.Nullable Flags { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisibleItem.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisibleItem.cs new file mode 100644 index 0000000000..e2b7114468 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisibleItem.cs @@ -0,0 +1,21 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class VisibleItem : IMutableVisibleItem + { + public System.Nullable ItemID { get; set; } + public System.Nullable SecondaryItemModifiedAppearanceID { get; set; } + public System.Nullable ConditionalItemAppearanceID { get; set; } + public System.Nullable ItemAppearanceModID { get; set; } + public System.Nullable ItemVisual { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisualAnim.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisualAnim.cs new file mode 100644 index 0000000000..6623174bf1 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/VisualAnim.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class VisualAnim : IVisualAnim + { + public System.Nullable AnimationDataID { get; set; } + public System.Nullable AnimKitID { get; set; } + public System.Nullable AnimProgress { get; set; } + public System.Nullable IsDecay { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WalkInData.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WalkInData.cs new file mode 100644 index 0000000000..0c2021a617 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WalkInData.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class WalkInData : IWalkInData + { + public int MapID { get; set; } + public long Field_8 { get; set; } + public WowGuid Field_18 { get; set; } + public uint Type { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WeeklySpellUse.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WeeklySpellUse.cs new file mode 100644 index 0000000000..d00aaf5bf7 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/WeeklySpellUse.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class WeeklySpellUse : IWeeklySpellUse + { + public int SpellCategoryID { get; set; } + public byte Uses { get; set; } + } +} + diff --git a/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ZonePlayerForcedReaction.cs b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ZonePlayerForcedReaction.cs new file mode 100644 index 0000000000..0a91b77a79 --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_0_7_58123/ZonePlayerForcedReaction.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_0_7_58123 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ZonePlayerForcedReaction : IZonePlayerForcedReaction + { + public System.Nullable FactionID { get; set; } + public System.Nullable Reaction { get; set; } + } +} +