diff --git a/WowPacketParser/Enums/ClientVersionBuild.cs b/WowPacketParser/Enums/ClientVersionBuild.cs index c74b906117..e087b731e7 100644 --- a/WowPacketParser/Enums/ClientVersionBuild.cs +++ b/WowPacketParser/Enums/ClientVersionBuild.cs @@ -681,13 +681,36 @@ public enum ClientVersionBuild V1_14_4_51146 = 51146, // ptr V1_14_4_51535 = 51535, // live + V1_15_0_52146 = 52146, // live + V1_15_0_52186 = 52186, // live + V1_15_0_52212 = 52212, // live V1_15_0_52302 = 52302, // live + V1_15_0_52409 = 52409, // live V1_15_0_52610 = 52610, // live V1_15_1_53247 = 53247, // live V1_15_1_53495 = 53495, // live + V1_15_1_53623 = 53623, // live V1_15_2_54262 = 54262, // live + V1_15_2_54332 = 54332, // live + V1_15_2_54649 = 54649, // live + V1_15_2_54902 = 54902, // live + V1_15_2_55002 = 55002, // live + V1_15_2_55140 = 55140, // live + + V1_15_3_55515 = 55515, // live + V1_15_3_55563 = 55563, // live + V1_15_3_55646 = 55646, // live + V1_15_3_55917 = 55917, // live + V1_15_3_55488 = 55488, // live + V1_15_3_55626 = 55626, // live + + V1_15_4_56738 = 56738, // live + V1_15_4_56760 = 56760, // live + V1_15_4_56817 = 56817, // live + V1_15_4_56857 = 56857, // live + V1_15_4_57134 = 57134, // live // TBC Classic V2_5_1_38598 = 38598, // ptr diff --git a/WowPacketParser/Enums/Version/Opcodes.cs b/WowPacketParser/Enums/Version/Opcodes.cs index 3eda1339c3..2a446a7ab7 100644 --- a/WowPacketParser/Enums/Version/Opcodes.cs +++ b/WowPacketParser/Enums/Version/Opcodes.cs @@ -6,7 +6,7 @@ using WowPacketParser.Enums.Version.V1_13_6_36231; using WowPacketParser.Enums.Version.V1_14_1_40688; using WowPacketParser.Enums.Version.V1_14_4_51146; -using WowPacketParser.Enums.Version.V1_15_0_52302; +using WowPacketParser.Enums.Version.V1_15_0_52146; using WowPacketParser.Enums.Version.V2_4_3_8606; using WowPacketParser.Enums.Version.V2_5_1_38835; using WowPacketParser.Enums.Version.V2_5_2_39570; @@ -82,6 +82,8 @@ using WowPacketParser.Enums.Version.V11_0_2_55959; using WowPacketParser.Enums.Version.V11_0_5_57171; using WowPacketParser.Misc; +using WowPacketParser.Enums.Version.V1_15_4_56738; +using WowPacketParser.Enums.Version.V1_15_3_55515; namespace WowPacketParser.Enums.Version { @@ -937,12 +939,22 @@ public static ClientVersionBuild GetOpcodeDefiningBuild(ClientVersionBuild build case ClientVersionBuild.V3_4_3_53788: case ClientVersionBuild.V3_4_3_54261: return ClientVersionBuild.V3_4_3_51666; - case ClientVersionBuild.V1_15_0_52302: // inherits from above + case ClientVersionBuild.V1_15_0_52146: // inherits from above + case ClientVersionBuild.V1_15_0_52186: + case ClientVersionBuild.V1_15_0_52212: + case ClientVersionBuild.V1_15_0_52302: + case ClientVersionBuild.V1_15_0_52409: case ClientVersionBuild.V1_15_0_52610: case ClientVersionBuild.V1_15_1_53247: case ClientVersionBuild.V1_15_1_53495: + case ClientVersionBuild.V1_15_1_53623: case ClientVersionBuild.V1_15_2_54262: - return ClientVersionBuild.V1_15_0_52302; + case ClientVersionBuild.V1_15_2_54332: + case ClientVersionBuild.V1_15_2_54649: + case ClientVersionBuild.V1_15_2_54902: + case ClientVersionBuild.V1_15_2_55002: + case ClientVersionBuild.V1_15_2_55140: + return ClientVersionBuild.V1_15_0_52146; case ClientVersionBuild.V4_4_0_54481: case ClientVersionBuild.V4_4_0_54500: case ClientVersionBuild.V4_4_0_54501: @@ -965,6 +977,19 @@ public static ClientVersionBuild GetOpcodeDefiningBuild(ClientVersionBuild build case ClientVersionBuild.V4_4_0_56713: case ClientVersionBuild.V4_4_0_57244: return ClientVersionBuild.V4_4_0_54481; + case ClientVersionBuild.V1_15_3_55515: // inherits from above + case ClientVersionBuild.V1_15_3_55563: + case ClientVersionBuild.V1_15_3_55646: + case ClientVersionBuild.V1_15_3_55917: + case ClientVersionBuild.V1_15_3_55488: + case ClientVersionBuild.V1_15_3_55626: + return ClientVersionBuild.V1_15_3_55515; + case ClientVersionBuild.V1_15_4_56738: // inherits from above and below + case ClientVersionBuild.V1_15_4_56760: + case ClientVersionBuild.V1_15_4_56817: + case ClientVersionBuild.V1_15_4_56857: + case ClientVersionBuild.V1_15_4_57134: + return ClientVersionBuild.V1_15_4_56738; case ClientVersionBuild.V4_4_1_57294: return ClientVersionBuild.V4_4_1_57294; default: @@ -1124,8 +1149,12 @@ public static BiDictionary GetOpcodeDictionary(ClientVersionBuild b return Opcodes_1_14_1.Opcodes(direction); case ClientVersionBuild.V1_14_4_51146: return Opcodes_1_14_4.Opcodes(direction); - case ClientVersionBuild.V1_15_0_52302: + case ClientVersionBuild.V1_15_0_52146: return Opcodes_1_15_0.Opcodes(direction); + case ClientVersionBuild.V1_15_3_55515: + return Opcodes_1_15_3.Opcodes(direction); + case ClientVersionBuild.V1_15_4_56738: + return Opcodes_1_15_4.Opcodes(direction); case ClientVersionBuild.V2_5_1_38835: return Opcodes_2_5_1.Opcodes(direction); case ClientVersionBuild.V2_5_2_39570: diff --git a/WowPacketParser/Enums/Version/UpdateFields.cs b/WowPacketParser/Enums/Version/UpdateFields.cs index 63d365532f..2f7cdbe707 100644 --- a/WowPacketParser/Enums/Version/UpdateFields.cs +++ b/WowPacketParser/Enums/Version/UpdateFields.cs @@ -1031,13 +1031,40 @@ private static string GetUpdateFieldDictionaryBuildName(ClientVersionBuild build { return "V1_14_4_51146"; } + case ClientVersionBuild.V1_15_0_52146: + case ClientVersionBuild.V1_15_0_52186: + case ClientVersionBuild.V1_15_0_52212: case ClientVersionBuild.V1_15_0_52302: + case ClientVersionBuild.V1_15_0_52409: case ClientVersionBuild.V1_15_0_52610: case ClientVersionBuild.V1_15_1_53247: case ClientVersionBuild.V1_15_1_53495: + case ClientVersionBuild.V1_15_1_53623: case ClientVersionBuild.V1_15_2_54262: - { - return "V1_15_0_52302"; + case ClientVersionBuild.V1_15_2_54332: + case ClientVersionBuild.V1_15_2_54649: + case ClientVersionBuild.V1_15_2_54902: + case ClientVersionBuild.V1_15_2_55002: + case ClientVersionBuild.V1_15_2_55140: + { + return "V1_15_0_52146"; + } + case ClientVersionBuild.V1_15_3_55515: + case ClientVersionBuild.V1_15_3_55563: + case ClientVersionBuild.V1_15_3_55646: + case ClientVersionBuild.V1_15_3_55917: + case ClientVersionBuild.V1_15_3_55488: + case ClientVersionBuild.V1_15_3_55626: + { + return "V1_15_3_55515"; + } + case ClientVersionBuild.V1_15_4_56738: + case ClientVersionBuild.V1_15_4_56760: + case ClientVersionBuild.V1_15_4_56817: + case ClientVersionBuild.V1_15_4_56857: + case ClientVersionBuild.V1_15_4_57134: + { + return "V1_15_4_56738"; } case ClientVersionBuild.V2_5_1_38598: case ClientVersionBuild.V2_5_1_38644: diff --git a/WowPacketParser/Enums/Version/V1_15_0_52302/Opcodes.cs b/WowPacketParser/Enums/Version/V1_15_0_52146/Opcodes.cs similarity index 99% rename from WowPacketParser/Enums/Version/V1_15_0_52302/Opcodes.cs rename to WowPacketParser/Enums/Version/V1_15_0_52146/Opcodes.cs index 8d90bd3d34..eaf6c951c0 100644 --- a/WowPacketParser/Enums/Version/V1_15_0_52302/Opcodes.cs +++ b/WowPacketParser/Enums/Version/V1_15_0_52146/Opcodes.cs @@ -1,6 +1,6 @@ using WowPacketParser.Misc; -namespace WowPacketParser.Enums.Version.V1_15_0_52302 +namespace WowPacketParser.Enums.Version.V1_15_0_52146 { public static class Opcodes_1_15_0 { @@ -1438,7 +1438,7 @@ public static BiDictionary Opcodes(Direction direction) { Opcode.SMSG_RESET_WEEKLY_CURRENCY, 0x2575 }, { Opcode.SMSG_RESPEC_WIPE_CONFIRM, 0x2612 }, { Opcode.SMSG_RESPOND_INSPECT_ACHIEVEMENTS, 0x2572 }, - { Opcode.SMSG_RESUME_CAST, 0x2C38 }, + { Opcode.SMSG_RESUME_CAST, 0x2C3A }, { Opcode.SMSG_RESUME_CAST_BAR, 0x2C3B }, { Opcode.SMSG_RESUME_COMMS, 0x304B }, { Opcode.SMSG_RESUME_TOKEN, 0x25A9 }, @@ -1523,7 +1523,7 @@ public static BiDictionary Opcodes(Direction direction) { Opcode.SMSG_SPELL_FAILED_OTHER, 0x2C52 }, { Opcode.SMSG_SPELL_FAILURE, 0x2C50 }, { Opcode.SMSG_SPELL_FAILURE_MESSAGE, 0x2C57 }, - { Opcode.SMSG_SPELL_GO, 0x2C36 }, + { Opcode.SMSG_SPELL_GO, 0x2C38 }, { Opcode.SMSG_SPELL_HEAL_ABSORB_LOG, 0x2C1B }, { Opcode.SMSG_SPELL_HEAL_LOG, 0x2C1A }, { Opcode.SMSG_SPELL_INSTAKILL_LOG, 0x2C30 }, @@ -1533,7 +1533,7 @@ public static BiDictionary Opcodes(Direction direction) { Opcode.SMSG_SPELL_OR_DAMAGE_IMMUNE, 0x2C2C }, { Opcode.SMSG_SPELL_PERIODIC_AURA_LOG, 0x2C18 }, { Opcode.SMSG_SPELL_PREPARE, 0x2C35 }, - { Opcode.SMSG_SPELL_START, 0x2C37 }, + { Opcode.SMSG_SPELL_START, 0x2C39 }, { Opcode.SMSG_SPELL_VISUAL_LOAD_SCREEN, 0x25CC }, { Opcode.SMSG_STAND_STATE_UPDATE, 0x271C }, { Opcode.SMSG_START_ELAPSED_TIMER, 0x2604 }, diff --git a/WowPacketParser/Enums/Version/V1_15_3_55515/Opcodes.cs b/WowPacketParser/Enums/Version/V1_15_3_55515/Opcodes.cs new file mode 100644 index 0000000000..dc7c8e4df3 --- /dev/null +++ b/WowPacketParser/Enums/Version/V1_15_3_55515/Opcodes.cs @@ -0,0 +1,1684 @@ +using WowPacketParser.Misc; + +namespace WowPacketParser.Enums.Version.V1_15_3_55515 +{ + public static class Opcodes_1_15_3 + { + public static BiDictionary Opcodes(Direction direction) + { + switch (direction) + { + case Direction.ClientToServer: + return ClientOpcodes; + case Direction.ServerToClient: + return ServerOpcodes; + default: + return MiscOpcodes; + } + } + + private static readonly BiDictionary ClientOpcodes = new() + { + { Opcode.CMSG_ACCEPT_GUILD_INVITE, 0x35FD }, + { Opcode.CMSG_ACCEPT_SOCIAL_CONTRACT, 0x3749 }, // NYI + { Opcode.CMSG_ACCEPT_TRADE, 0x315B }, + { Opcode.CMSG_ACCEPT_WARGAME_INVITE, 0x35E0 }, // NYI + { Opcode.CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED, 0x3739 }, // NYI + { Opcode.CMSG_ACTIVATE_TAXI, 0x34AB }, + { Opcode.CMSG_ADDON_LIST, 0x35D8 }, + { Opcode.CMSG_ADD_BATTLENET_FRIEND, 0x3658 }, // NYI + { Opcode.CMSG_ADD_FRIEND, 0x36D4 }, + { Opcode.CMSG_ADD_IGNORE, 0x36D8 }, + { Opcode.CMSG_ADD_TOY, 0x329B }, + { Opcode.CMSG_ADVENTURE_MAP_START_QUEST, 0x32DA }, + { Opcode.CMSG_ALTER_APPEARANCE, 0x34F5 }, + { Opcode.CMSG_AREA_SPIRIT_HEALER_QUERY, 0x34B0 }, + { Opcode.CMSG_AREA_SPIRIT_HEALER_QUEUE, 0x34B1 }, + { Opcode.CMSG_AREA_TRIGGER, 0x31D8 }, + { Opcode.CMSG_ARENA_TEAM_ACCEPT, 0x36B5 }, // NYI + { Opcode.CMSG_ARENA_TEAM_DECLINE, 0x36B6 }, // NYI + { Opcode.CMSG_ARENA_TEAM_DISBAND, 0x36B9 }, // NYI + { Opcode.CMSG_ARENA_TEAM_LEADER, 0x36BA }, // NYI + { Opcode.CMSG_ARENA_TEAM_LEAVE, 0x36B7 }, // NYI + { Opcode.CMSG_ARENA_TEAM_REMOVE, 0x36B8 }, // NYI + { Opcode.CMSG_ARENA_TEAM_ROSTER, 0x36B4 }, + { Opcode.CMSG_ASSIGN_EQUIPMENT_SET_SPEC, 0x3209 }, // NYI + { Opcode.CMSG_ATTACK_STOP, 0x3258 }, + { Opcode.CMSG_ATTACK_SWING, 0x3257 }, + { Opcode.CMSG_AUCTIONABLE_TOKEN_SELL, 0x36EA }, // NYI + { Opcode.CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE, 0x36EB }, // NYI + { Opcode.CMSG_AUCTION_HELLO_REQUEST, 0x34CA }, + { Opcode.CMSG_AUCTION_LIST_BIDDER_ITEMS, 0x34D0 }, + { Opcode.CMSG_AUCTION_LIST_ITEMS, 0x34CD }, + { Opcode.CMSG_AUCTION_LIST_OWNER_ITEMS, 0x34CF }, + { Opcode.CMSG_AUCTION_LIST_PENDING_SALES, 0x34D2 }, + { Opcode.CMSG_AUCTION_PLACE_BID, 0x34D1 }, + { Opcode.CMSG_AUCTION_REMOVE_ITEM, 0x34CC }, + { Opcode.CMSG_AUCTION_REPLICATE_ITEMS, 0x34CE }, + { Opcode.CMSG_AUCTION_SELL_ITEM, 0x34CB }, + { Opcode.CMSG_AUTH_CONTINUED_SESSION, 0x377A }, + { Opcode.CMSG_AUTH_SESSION, 0x3779 }, + { Opcode.CMSG_AUTOBANK_ITEM, 0x3997 }, + { Opcode.CMSG_AUTOSTORE_BANK_ITEM, 0x3996 }, + { Opcode.CMSG_AUTO_EQUIP_ITEM, 0x3998 }, + { Opcode.CMSG_AUTO_EQUIP_ITEM_SLOT, 0x399D }, + { Opcode.CMSG_AUTO_GUILD_BANK_ITEM, 0x34B6 }, + { Opcode.CMSG_AUTO_STORE_BAG_ITEM, 0x3999 }, + { Opcode.CMSG_AUTO_STORE_GUILD_BANK_ITEM, 0x34BF }, + { Opcode.CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER, 0x32F3 }, // NYI + { Opcode.CMSG_AZERITE_EMPOWERED_ITEM_VIEWED, 0x32E1 }, // NYI + { Opcode.CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE, 0x32F5 }, // NYI + { Opcode.CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE, 0x32F4 }, // NYI + { Opcode.CMSG_BANKER_ACTIVATE, 0x34B3 }, + { Opcode.CMSG_BATTLEFIELD_LEAVE, 0x3177 }, + { Opcode.CMSG_BATTLEFIELD_LIST, 0x3183 }, + { Opcode.CMSG_BATTLEFIELD_PORT, 0x3527 }, + { Opcode.CMSG_BATTLEMASTER_HELLO, 0x32B3 }, + { Opcode.CMSG_BATTLEMASTER_JOIN, 0x3520 }, + { Opcode.CMSG_BATTLEMASTER_JOIN_ARENA, 0x3521 }, + { Opcode.CMSG_BATTLEMASTER_JOIN_SKIRMISH, 0x3522 }, + { Opcode.CMSG_BATTLENET_CHALLENGE_RESPONSE, 0x36D7 }, // NYI + { Opcode.CMSG_BATTLENET_REQUEST, 0x36F9 }, + { Opcode.CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE, 0x36D1 }, + { Opcode.CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT, 0x3717 }, + { Opcode.CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE, 0x36D0 }, + { Opcode.CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET, 0x36C7 }, + { Opcode.CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS, 0x373E }, + { Opcode.CMSG_BATTLE_PAY_GET_PRODUCT_LIST, 0x36C0 }, + { Opcode.CMSG_BATTLE_PAY_GET_PURCHASE_LIST, 0x36C1 }, + { Opcode.CMSG_BATTLE_PAY_OPEN_CHECKOUT, 0x3710 }, + { Opcode.CMSG_BATTLE_PAY_REQUEST_PRICE_INFO, 0x370C }, + { Opcode.CMSG_BATTLE_PAY_START_PURCHASE, 0x36CF }, + { Opcode.CMSG_BATTLE_PAY_START_VAS_PURCHASE, 0x36F6 }, + { Opcode.CMSG_BATTLE_PET_CLEAR_FANFARE, 0x3126 }, + { Opcode.CMSG_BATTLE_PET_REQUEST_JOURNAL, 0x3621 }, + { Opcode.CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK, 0x3620 }, + { Opcode.CMSG_BATTLE_PET_SET_BATTLE_SLOT, 0x362A }, + { Opcode.CMSG_BATTLE_PET_SET_FLAGS, 0x362D }, + { Opcode.CMSG_BATTLE_PET_SUMMON, 0x3626 }, + { Opcode.CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY, 0x31E2 }, // NYI + { Opcode.CMSG_BATTLE_PET_UPDATE_NOTIFY, 0x31E1 }, + { Opcode.CMSG_BEGIN_TRADE, 0x3158 }, + { Opcode.CMSG_BINDER_ACTIVATE, 0x34B2 }, + { Opcode.CMSG_BLACK_MARKET_OPEN, 0x352D }, + { Opcode.CMSG_BUG_REPORT, 0x3683 }, + { Opcode.CMSG_BUSY_TRADE, 0x3159 }, + { Opcode.CMSG_BUY_BACK_ITEM, 0x34A4 }, + { Opcode.CMSG_BUY_BANK_SLOT, 0x34B4 }, + { Opcode.CMSG_BUY_ITEM, 0x34A3 }, + { Opcode.CMSG_BUY_STABLE_SLOT, 0x316C }, // NYI + { Opcode.CMSG_CALENDAR_ADD_EVENT, 0x367B }, + { Opcode.CMSG_CALENDAR_COMMUNITY_INVITE, 0x366F }, + { Opcode.CMSG_CALENDAR_COMPLAIN, 0x3677 }, + { Opcode.CMSG_CALENDAR_COPY_EVENT, 0x3676 }, + { Opcode.CMSG_CALENDAR_EVENT_SIGN_UP, 0x3679 }, + { Opcode.CMSG_CALENDAR_GET, 0x366D }, + { Opcode.CMSG_CALENDAR_GET_EVENT, 0x366E }, + { Opcode.CMSG_CALENDAR_GET_NUM_PENDING, 0x3678 }, + { Opcode.CMSG_CALENDAR_INVITE, 0x3670 }, + { Opcode.CMSG_CALENDAR_MODERATOR_STATUS, 0x3674 }, + { Opcode.CMSG_CALENDAR_REMOVE_EVENT, 0x3675 }, + { Opcode.CMSG_CALENDAR_REMOVE_INVITE, 0x3671 }, + { Opcode.CMSG_CALENDAR_RSVP, 0x3672 }, + { Opcode.CMSG_CALENDAR_STATUS, 0x3673 }, + { Opcode.CMSG_CALENDAR_UPDATE_EVENT, 0x367C }, + { Opcode.CMSG_CANCEL_AURA, 0x31B1 }, + { Opcode.CMSG_CANCEL_AUTO_REPEAT_SPELL, 0x34E7 }, + { Opcode.CMSG_CANCEL_CAST, 0x32A1 }, + { Opcode.CMSG_CANCEL_CHANNELLING, 0x326C }, + { Opcode.CMSG_CANCEL_GROWTH_AURA, 0x3271 }, + { Opcode.CMSG_CANCEL_MOUNT_AURA, 0x3281 }, + { Opcode.CMSG_CANCEL_QUEUED_SPELL, 0x3184 }, + { Opcode.CMSG_CANCEL_TEMP_ENCHANTMENT, 0x34F2 }, + { Opcode.CMSG_CANCEL_TRADE, 0x315D }, + { Opcode.CMSG_CAN_DUEL, 0x3660 }, + { Opcode.CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE, 0x370B }, // NYI + { Opcode.CMSG_CAST_SPELL, 0x329E }, + { Opcode.CMSG_CHANGE_REALM_TICKET, 0x36FD }, + { Opcode.CMSG_CHANGE_SUB_GROUP, 0x364B }, + { Opcode.CMSG_CHARACTER_CHECK_UPGRADE, 0x36CA }, // NYI + { Opcode.CMSG_CHARACTER_RENAME_REQUEST, 0x36C5 }, + { Opcode.CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST, 0x36C8 }, // NYI + { Opcode.CMSG_CHARACTER_UPGRADE_START, 0x36C9 }, // NYI + { Opcode.CMSG_CHAR_CREATE_FINALIZE_REINCARNATION, 0x375B }, // NYI + { Opcode.CMSG_CHAR_CUSTOMIZE, 0x3688 }, + { Opcode.CMSG_CHAR_DELETE, 0x3699 }, + { Opcode.CMSG_CHAR_RACE_OR_FACTION_CHANGE, 0x368E }, + { Opcode.CMSG_CHAT_ADDON_MESSAGE, 0x3802 }, + { Opcode.CMSG_CHAT_ADDON_MESSAGE_TARGETED, 0x3803 }, + { Opcode.CMSG_CHAT_CHANNEL_ANNOUNCEMENTS, 0x37F7 }, + { Opcode.CMSG_CHAT_CHANNEL_BAN, 0x37F5 }, + { Opcode.CMSG_CHAT_CHANNEL_DECLINE_INVITE, 0x37FA }, + { Opcode.CMSG_CHAT_CHANNEL_DISPLAY_LIST, 0x37EA }, + { Opcode.CMSG_CHAT_CHANNEL_INVITE, 0x37F3 }, + { Opcode.CMSG_CHAT_CHANNEL_KICK, 0x37F4 }, + { Opcode.CMSG_CHAT_CHANNEL_LIST, 0x37E9 }, + { Opcode.CMSG_CHAT_CHANNEL_MODERATOR, 0x37EF }, + { Opcode.CMSG_CHAT_CHANNEL_OWNER, 0x37ED }, + { Opcode.CMSG_CHAT_CHANNEL_PASSWORD, 0x37EB }, + { Opcode.CMSG_CHAT_CHANNEL_SET_OWNER, 0x37EC }, + { Opcode.CMSG_CHAT_CHANNEL_SILENCE_ALL, 0x37F8 }, + { Opcode.CMSG_CHAT_CHANNEL_UNBAN, 0x37F6 }, + { Opcode.CMSG_CHAT_CHANNEL_UNMODERATOR, 0x37F0 }, + { Opcode.CMSG_CHAT_CHANNEL_UNSILENCE_ALL, 0x37F9 }, + { Opcode.CMSG_CHAT_JOIN_CHANNEL, 0x37DC }, + { Opcode.CMSG_CHAT_LEAVE_CHANNEL, 0x37DD }, + { Opcode.CMSG_CHAT_MESSAGE_AFK, 0x37E7 }, + { Opcode.CMSG_CHAT_MESSAGE_CHANNEL, 0x37E3 }, + { Opcode.CMSG_CHAT_MESSAGE_DND, 0x37E8 }, + { Opcode.CMSG_CHAT_MESSAGE_EMOTE, 0x37FC }, + { Opcode.CMSG_CHAT_MESSAGE_GUILD, 0x37E5 }, + { Opcode.CMSG_CHAT_MESSAGE_INSTANCE_CHAT, 0x3800 }, + { Opcode.CMSG_CHAT_MESSAGE_OFFICER, 0x37E6 }, + { Opcode.CMSG_CHAT_MESSAGE_PARTY, 0x37FE }, + { Opcode.CMSG_CHAT_MESSAGE_RAID, 0x37FF }, + { Opcode.CMSG_CHAT_MESSAGE_RAID_WARNING, 0x3801 }, + { Opcode.CMSG_CHAT_MESSAGE_SAY, 0x37FB }, + { Opcode.CMSG_CHAT_MESSAGE_WHISPER, 0x37E4 }, + { Opcode.CMSG_CHAT_MESSAGE_YELL, 0x37FD }, + { Opcode.CMSG_CHAT_REGISTER_ADDON_PREFIXES, 0x37E1 }, + { Opcode.CMSG_CHAT_REPORT_FILTERED, 0x37E0 }, // NYI + { Opcode.CMSG_CHAT_REPORT_IGNORED, 0x37DF }, + { Opcode.CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, 0x37E2 }, + { Opcode.CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID, 0x3249 }, + { Opcode.CMSG_CLEAR_NEW_APPEARANCE, 0x3129 }, // NYI + { Opcode.CMSG_CLEAR_RAID_MARKER, 0x31A9 }, + { Opcode.CMSG_CLEAR_TRADE_ITEM, 0x315F }, + { Opcode.CMSG_CLIENT_PORT_GRAVEYARD, 0x3529 }, + { Opcode.CMSG_CLOSE_INTERACTION, 0x3493 }, + { Opcode.CMSG_CLOSE_QUEST_CHOICE, 0x32A4 }, // NYI + { Opcode.CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION, 0x330F }, // NYI + { Opcode.CMSG_CLUB_FINDER_APPLICATION_RESPONSE, 0x3722 }, // NYI + { Opcode.CMSG_CLUB_FINDER_GET_APPLICANTS_LIST, 0x3720 }, // NYI + { Opcode.CMSG_CLUB_FINDER_POST, 0x371D }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA, 0x3724 }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST, 0x371E }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB, 0x371F }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST, 0x3723 }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS, 0x3725 }, // NYI + { Opcode.CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT, 0x3721 }, // NYI + { Opcode.CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST, 0x3740 }, // NYI + { Opcode.CMSG_CLUB_PRESENCE_SUBSCRIBE, 0x36FB }, // NYI + { Opcode.CMSG_COLLECTION_ITEM_SET_FAVORITE, 0x3630 }, + { Opcode.CMSG_COMMENTATOR_ENABLE, 0x35F0 }, // NYI + { Opcode.CMSG_COMMENTATOR_ENTER_INSTANCE, 0x35F4 }, // NYI + { Opcode.CMSG_COMMENTATOR_EXIT_INSTANCE, 0x35F5 }, // NYI + { Opcode.CMSG_COMMENTATOR_GET_MAP_INFO, 0x35F1 }, // NYI + { Opcode.CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS, 0x35F3 }, // NYI + { Opcode.CMSG_COMMENTATOR_GET_PLAYER_INFO, 0x35F2 }, // NYI + { Opcode.CMSG_COMMENTATOR_START_WARGAME, 0x35EF }, // NYI + { Opcode.CMSG_COMMERCE_TOKEN_GET_COUNT, 0x36E8 }, // NYI + { Opcode.CMSG_COMMERCE_TOKEN_GET_LOG, 0x36F2 }, + { Opcode.CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE, 0x36E9 }, + { Opcode.CMSG_COMPLAINT, 0x366A }, + { Opcode.CMSG_COMPLETE_CINEMATIC, 0x3547 }, + { Opcode.CMSG_COMPLETE_MOVIE, 0x34DD }, + { Opcode.CMSG_CONFIRM_BARBERS_CHOICE, 0x3210 }, + { Opcode.CMSG_CONFIRM_RESPEC_WIPE, 0x320F }, + { Opcode.CMSG_CONNECT_TO_FAILED, 0x35D4 }, + { Opcode.CMSG_CONSUMABLE_TOKEN_BUY, 0x36ED }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE, 0x36EE }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY, 0x36EC }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_REDEEM, 0x36F0 }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION, 0x36F1 }, // NYI + { Opcode.CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST, 0x355E }, // NYI + { Opcode.CMSG_CONVERSATION_LINE_STARTED, 0x3548 }, + { Opcode.CMSG_CONVERT_RAID, 0x364D }, + { Opcode.CMSG_CREATE_CHARACTER, 0x3641 }, + { Opcode.CMSG_DB_QUERY_BULK, 0x35E4 }, + { Opcode.CMSG_DECLINE_GUILD_INVITES, 0x351D }, + { Opcode.CMSG_DECLINE_PETITION, 0x3536 }, + { Opcode.CMSG_DELETE_EQUIPMENT_SET, 0x350A }, + { Opcode.CMSG_DEL_FRIEND, 0x36D5 }, + { Opcode.CMSG_DEL_IGNORE, 0x36D9 }, + { Opcode.CMSG_DESTROY_ITEM, 0x3295 }, + { Opcode.CMSG_DF_BOOT_PLAYER_VOTE, 0x3617 }, + { Opcode.CMSG_DF_GET_JOIN_STATUS, 0x3615 }, + { Opcode.CMSG_DF_GET_SYSTEM_INFO, 0x3614 }, + { Opcode.CMSG_DF_JOIN, 0x360A }, + { Opcode.CMSG_DF_LEAVE, 0x3613 }, + { Opcode.CMSG_DF_PROPOSAL_RESPONSE, 0x3608 }, + { Opcode.CMSG_DF_READY_CHECK_RESPONSE, 0x361B }, // NYI + { Opcode.CMSG_DF_SET_ROLES, 0x3616 }, + { Opcode.CMSG_DF_TELEPORT, 0x3618 }, + { Opcode.CMSG_DISCARDED_TIME_SYNC_ACKS, 0x3A41 }, // NYI + { Opcode.CMSG_DISMISS_CRITTER, 0x34F9 }, + { Opcode.CMSG_DO_COUNTDOWN, 0x371C }, // NYI + { Opcode.CMSG_DO_READY_CHECK, 0x3631 }, + { Opcode.CMSG_DUEL_RESPONSE, 0x34E2 }, + { Opcode.CMSG_EJECT_PASSENGER, 0x323E }, + { Opcode.CMSG_EMOTE, 0x3543 }, + { Opcode.CMSG_ENABLE_NAGLE, 0x377F }, + { Opcode.CMSG_ENABLE_TAXI_NODE, 0x34A9 }, + { Opcode.CMSG_ENGINE_SURVEY, 0x36E7 }, // NYI + { Opcode.CMSG_ENTER_ENCRYPTED_MODE_ACK, 0x377B }, + { Opcode.CMSG_ENUM_CHARACTERS, 0x35E8 }, + { Opcode.CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT, 0x36E1 }, + { Opcode.CMSG_FAR_SIGHT, 0x34E8 }, + { Opcode.CMSG_GAME_EVENT_DEBUG_DISABLE, 0x31B3 }, // NYI + { Opcode.CMSG_GAME_EVENT_DEBUG_ENABLE, 0x31B4 }, // NYI + { Opcode.CMSG_GAME_OBJ_REPORT_USE, 0x34EF }, + { Opcode.CMSG_GAME_OBJ_USE, 0x34EE }, + { Opcode.CMSG_GENERATE_RANDOM_CHARACTER_NAME, 0x35E7 }, + { Opcode.CMSG_GET_ACCOUNT_CHARACTER_LIST, 0x36BB }, // NYI + { Opcode.CMSG_GET_ACCOUNT_NOTIFICATIONS, 0x3738 }, // NYI + { Opcode.CMSG_GET_ITEM_PURCHASE_DATA, 0x3531 }, + { Opcode.CMSG_GET_MIRROR_IMAGE_DATA, 0x3299 }, + { Opcode.CMSG_GET_PVP_OPTIONS_ENABLED, 0x35EE }, + { Opcode.CMSG_GET_REMAINING_GAME_TIME, 0x36EF }, // NYI + { Opcode.CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS, 0x36E3 }, + { Opcode.CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST, 0x36F4 }, + { Opcode.CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST, 0x36F5 }, + { Opcode.CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY, 0x368C }, + { Opcode.CMSG_GM_TICKET_GET_CASE_STATUS, 0x368B }, + { Opcode.CMSG_GM_TICKET_GET_SYSTEM_STATUS, 0x368A }, + { Opcode.CMSG_GOSSIP_SELECT_OPTION, 0x3494 }, + { Opcode.CMSG_GUILD_ADD_BATTLENET_FRIEND, 0x5036 }, // NYI + { Opcode.CMSG_GUILD_ADD_RANK, 0x501B }, + { Opcode.CMSG_GUILD_ASSIGN_MEMBER_RANK, 0x5016 }, + { Opcode.CMSG_GUILD_AUTO_DECLINE_INVITATION, 0x5018 }, // NYI + { Opcode.CMSG_GUILD_BANK_ACTIVATE, 0x34B5 }, + { Opcode.CMSG_GUILD_BANK_BUY_TAB, 0x34C3 }, + { Opcode.CMSG_GUILD_BANK_DEPOSIT_MONEY, 0x34C5 }, + { Opcode.CMSG_GUILD_BANK_LOG_QUERY, 0x502F }, + { Opcode.CMSG_GUILD_BANK_QUERY_TAB, 0x34C2 }, + { Opcode.CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, 0x5030 }, + { Opcode.CMSG_GUILD_BANK_SET_TAB_TEXT, 0x5033 }, + { Opcode.CMSG_GUILD_BANK_TEXT_QUERY, 0x5034 }, + { Opcode.CMSG_GUILD_BANK_UPDATE_TAB, 0x34C4 }, + { Opcode.CMSG_GUILD_BANK_WITHDRAW_MONEY, 0x34C6 }, + { Opcode.CMSG_GUILD_CHALLENGE_UPDATE_REQUEST, 0x502D }, + { Opcode.CMSG_GUILD_CHANGE_NAME_REQUEST, 0x502E }, + { Opcode.CMSG_GUILD_DECLINE_INVITATION, 0x5017 }, + { Opcode.CMSG_GUILD_DELETE, 0x501F }, + { Opcode.CMSG_GUILD_DELETE_RANK, 0x501C }, + { Opcode.CMSG_GUILD_DEMOTE_MEMBER, 0x5015 }, + { Opcode.CMSG_GUILD_EVENT_LOG_QUERY, 0x5032 }, + { Opcode.CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS, 0x5028 }, + { Opcode.CMSG_GUILD_GET_RANKS, 0x5024 }, + { Opcode.CMSG_GUILD_GET_ROSTER, 0x502A }, + { Opcode.CMSG_GUILD_INVITE_BY_NAME, 0x3607 }, + { Opcode.CMSG_GUILD_LEAVE, 0x5019 }, + { Opcode.CMSG_GUILD_NEWS_UPDATE_STICKY, 0x5025 }, + { Opcode.CMSG_GUILD_OFFICER_REMOVE_MEMBER, 0x501A }, + { Opcode.CMSG_GUILD_PERMISSIONS_QUERY, 0x5031 }, + { Opcode.CMSG_GUILD_PROMOTE_MEMBER, 0x5014 }, + { Opcode.CMSG_GUILD_QUERY_MEMBER_RECIPES, 0x5020 }, // NYI + { Opcode.CMSG_GUILD_QUERY_NEWS, 0x5023 }, + { Opcode.CMSG_GUILD_QUERY_RECIPES, 0x5021 }, // NYI + { Opcode.CMSG_GUILD_REPLACE_GUILD_MASTER, 0x5035 }, + { Opcode.CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, 0x5026 }, + { Opcode.CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT, 0x5027 }, + { Opcode.CMSG_GUILD_SET_GUILD_MASTER, 0x36CC }, + { Opcode.CMSG_GUILD_SET_MEMBER_NOTE, 0x5029 }, + { Opcode.CMSG_GUILD_SET_RANK_PERMISSIONS, 0x501E }, + { Opcode.CMSG_GUILD_SHIFT_RANK, 0x501D }, + { Opcode.CMSG_GUILD_UPDATE_INFO_TEXT, 0x502C }, + { Opcode.CMSG_GUILD_UPDATE_MOTD_TEXT, 0x502B }, + { Opcode.CMSG_HEARTH_AND_RESURRECT, 0x3506 }, + { Opcode.CMSG_HOTFIX_REQUEST, 0x35E5 }, + { Opcode.CMSG_IGNORE_TRADE, 0x315A }, + { Opcode.CMSG_INITIATE_ROLE_POLL, 0x35DA }, + { Opcode.CMSG_INITIATE_TRADE, 0x3157 }, + { Opcode.CMSG_INSPECT, 0x352B }, + { Opcode.CMSG_INSPECT_PVP, 0x369F }, // NYI + { Opcode.CMSG_INSTANCE_LOCK_RESPONSE, 0x350B }, + { Opcode.CMSG_ITEM_PURCHASE_REFUND, 0x3532 }, + { Opcode.CMSG_ITEM_TEXT_QUERY, 0x32C6 }, + { Opcode.CMSG_JOIN_RATED_BATTLEGROUND, 0x317D }, // NYI + { Opcode.CMSG_KEEP_ALIVE, 0x367D }, + { Opcode.CMSG_KEYBOUND_OVERRIDE, 0x3225 }, + { Opcode.CMSG_LATENCY_REPORT, 0x3785 }, // NYI + { Opcode.CMSG_LEARN_PREVIEW_TALENTS, 0x3555 }, + { Opcode.CMSG_LEARN_PREVIEW_TALENTS_PET, 0x3557 }, // NYI + { Opcode.CMSG_LEARN_TALENT, 0x3554 }, + { Opcode.CMSG_LEAVE_GROUP, 0x3648 }, + { Opcode.CMSG_LFG_LIST_APPLY_TO_GROUP, 0x360E }, // NYI + { Opcode.CMSG_LFG_LIST_CANCEL_APPLICATION, 0x360F }, // NYI + { Opcode.CMSG_LFG_LIST_DECLINE_APPLICANT, 0x3610 }, // NYI + { Opcode.CMSG_LFG_LIST_GET_STATUS, 0x360C }, + { Opcode.CMSG_LFG_LIST_INVITE_APPLICANT, 0x3611 }, // NYI + { Opcode.CMSG_LFG_LIST_INVITE_RESPONSE, 0x3612 }, // NYI + { Opcode.CMSG_LFG_LIST_JOIN, 0x32F1 }, // NYI + { Opcode.CMSG_LFG_LIST_LEAVE, 0x360B }, // NYI + { Opcode.CMSG_LFG_LIST_SEARCH, 0x360D }, // NYI + { Opcode.CMSG_LFG_LIST_SET_ROLES, 0x3303 }, // NYI + { Opcode.CMSG_LFG_LIST_UPDATE_REQUEST, 0x32F2 }, // NYI + { Opcode.CMSG_LIST_INVENTORY, 0x34A1 }, + { Opcode.CMSG_LIVE_REGION_ACCOUNT_RESTORE, 0x36BE }, // NYI + { Opcode.CMSG_LIVE_REGION_CHARACTER_COPY, 0x36BD }, // NYI + { Opcode.CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST, 0x36BC }, // NYI + { Opcode.CMSG_LOADING_SCREEN_NOTIFY, 0x35F8 }, + { Opcode.CMSG_LOGOUT_CANCEL, 0x34D8 }, + { Opcode.CMSG_LOGOUT_INSTANT, 0x34D9 }, // NYI + { Opcode.CMSG_LOGOUT_REQUEST, 0x34D6 }, + { Opcode.CMSG_LOG_DISCONNECT, 0x377D }, + { Opcode.CMSG_LOG_STREAMING_ERROR, 0x3781 }, // NYI + { Opcode.CMSG_LOOT_ITEM, 0x3213 }, + { Opcode.CMSG_LOOT_MONEY, 0x3212 }, + { Opcode.CMSG_LOOT_RELEASE, 0x3215 }, + { Opcode.CMSG_LOOT_ROLL, 0x3216 }, + { Opcode.CMSG_LOOT_UNIT, 0x3211 }, + { Opcode.CMSG_LOW_LEVEL_RAID1, 0x3512 }, // NYI + { Opcode.CMSG_LOW_LEVEL_RAID2, 0x369D }, // NYI + { Opcode.CMSG_MAIL_CREATE_TEXT_ITEM, 0x353D }, + { Opcode.CMSG_MAIL_DELETE, 0x3227 }, + { Opcode.CMSG_MAIL_GET_LIST, 0x3538 }, + { Opcode.CMSG_MAIL_MARK_AS_READ, 0x353C }, + { Opcode.CMSG_MAIL_RETURN_TO_SENDER, 0x3654 }, + { Opcode.CMSG_MAIL_TAKE_ITEM, 0x353A }, + { Opcode.CMSG_MAIL_TAKE_MONEY, 0x3539 }, + { Opcode.CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT, 0x322A }, // NYI + { Opcode.CMSG_MASTER_LOOT_ITEM, 0x3214 }, + { Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, 0x34C0 }, + { Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM, 0x34BD }, + { Opcode.CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM, 0x34BB }, + { Opcode.CMSG_MINIMAP_PING, 0x364A }, + { Opcode.CMSG_MISSILE_TRAJECTORY_COLLISION, 0x318F }, + { Opcode.CMSG_MOUNT_CLEAR_FANFARE, 0x3127 }, // NYI + { Opcode.CMSG_MOUNT_SET_FAVORITE, 0x362F }, + { Opcode.CMSG_MOUNT_SPECIAL_ANIM, 0x3282 }, + { Opcode.CMSG_MOVE_ADD_IMPULSE_ACK, 0x3A50 }, // NYI + { Opcode.CMSG_MOVE_APPLY_INERTIA_ACK, 0x3A4E }, // NYI + { Opcode.CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, 0x3A15 }, + { Opcode.CMSG_MOVE_CHANGE_TRANSPORT, 0x3A2F }, + { Opcode.CMSG_MOVE_CHANGE_VEHICLE_SEATS, 0x3A34 }, + { Opcode.CMSG_MOVE_COLLISION_DISABLE_ACK, 0x3A39 }, + { Opcode.CMSG_MOVE_COLLISION_ENABLE_ACK, 0x3A3A }, + { Opcode.CMSG_MOVE_DISMISS_VEHICLE, 0x3A33 }, + { Opcode.CMSG_MOVE_DOUBLE_JUMP, 0x39EB }, + { Opcode.CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK, 0x3A1E }, + { Opcode.CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK, 0x3A24 }, + { Opcode.CMSG_MOVE_FALL_LAND, 0x39FB }, + { Opcode.CMSG_MOVE_FALL_RESET, 0x3A19 }, + { Opcode.CMSG_MOVE_FEATHER_FALL_ACK, 0x3A1C }, + { Opcode.CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, 0x3A2E }, + { Opcode.CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, 0x3A2D }, + { Opcode.CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, 0x3A32 }, + { Opcode.CMSG_MOVE_FORCE_ROOT_ACK, 0x3A0E }, + { Opcode.CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, 0x3A0C }, + { Opcode.CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK, 0x3A0B }, + { Opcode.CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, 0x3A22 }, + { Opcode.CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK, 0x3A0D }, + { Opcode.CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK, 0x3A23 }, + { Opcode.CMSG_MOVE_FORCE_UNROOT_ACK, 0x3A0F }, + { Opcode.CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK, 0x3A21 }, + { Opcode.CMSG_MOVE_GRAVITY_DISABLE_ACK, 0x3A35 }, + { Opcode.CMSG_MOVE_GRAVITY_ENABLE_ACK, 0x3A36 }, + { Opcode.CMSG_MOVE_GUILD_BANK_ITEM, 0x34BA }, + { Opcode.CMSG_MOVE_HEARTBEAT, 0x3A10 }, + { Opcode.CMSG_MOVE_HOVER_ACK, 0x3A13 }, + { Opcode.CMSG_MOVE_INERTIA_DISABLE_ACK, 0x3A37 }, + { Opcode.CMSG_MOVE_INERTIA_ENABLE_ACK, 0x3A38 }, + { Opcode.CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE, 0x3A46 }, + { Opcode.CMSG_MOVE_JUMP, 0x39EA }, + { Opcode.CMSG_MOVE_KNOCK_BACK_ACK, 0x3A12 }, + { Opcode.CMSG_MOVE_REMOVE_INERTIA_ACK, 0x3A4F }, // NYI + { Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCES, 0x3A17 }, + { Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK, 0x3A16 }, + { Opcode.CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE, 0x3A44 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLY, 0x3A52 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK, 0x3A58 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK, 0x3A53 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK, 0x3A59 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK, 0x3A56 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK, 0x3A57 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK, 0x3A60 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK, 0x3A55 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK, 0x3A54 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK, 0x3A5E }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK, 0x3A5A }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK, 0x3A5B }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK, 0x3A5D }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK, 0x3A5C }, // NYI + { Opcode.CMSG_MOVE_SET_CAN_ADV_FLY_ACK, 0x3A51 }, // NYI + { Opcode.CMSG_MOVE_SET_CAN_FLY_ACK, 0x3A27 }, + { Opcode.CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK, 0x3A25 }, + { Opcode.CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, 0x3A3B }, + { Opcode.CMSG_MOVE_SET_FACING, 0x3A09 }, + { Opcode.CMSG_MOVE_SET_FACING_HEARTBEAT, 0x3A5F }, + { Opcode.CMSG_MOVE_SET_FLY, 0x3A28 }, + { Opcode.CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK, 0x3A26 }, + { Opcode.CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK, 0x3A42 }, + { Opcode.CMSG_MOVE_SET_PITCH, 0x3A0A }, + { Opcode.CMSG_MOVE_SET_RUN_MODE, 0x39F2 }, + { Opcode.CMSG_MOVE_SET_VEHICLE_REC_ID_ACK, 0x3A14 }, + { Opcode.CMSG_MOVE_SET_WALK_MODE, 0x39F3 }, + { Opcode.CMSG_MOVE_SPLINE_DONE, 0x3A18 }, + { Opcode.CMSG_MOVE_START_ASCEND, 0x3A29 }, + { Opcode.CMSG_MOVE_START_BACKWARD, 0x39E5 }, + { Opcode.CMSG_MOVE_START_DESCEND, 0x3A30 }, + { Opcode.CMSG_MOVE_START_FORWARD, 0x39E4 }, + { Opcode.CMSG_MOVE_START_PITCH_DOWN, 0x39F0 }, + { Opcode.CMSG_MOVE_START_PITCH_UP, 0x39EF }, + { Opcode.CMSG_MOVE_START_STRAFE_LEFT, 0x39E7 }, + { Opcode.CMSG_MOVE_START_STRAFE_RIGHT, 0x39E8 }, + { Opcode.CMSG_MOVE_START_SWIM, 0x39FC }, + { Opcode.CMSG_MOVE_START_TURN_LEFT, 0x39EC }, + { Opcode.CMSG_MOVE_START_TURN_RIGHT, 0x39ED }, + { Opcode.CMSG_MOVE_STOP, 0x39E6 }, + { Opcode.CMSG_MOVE_STOP_ASCEND, 0x3A2A }, + { Opcode.CMSG_MOVE_STOP_PITCH, 0x39F1 }, + { Opcode.CMSG_MOVE_STOP_STRAFE, 0x39E9 }, + { Opcode.CMSG_MOVE_STOP_SWIM, 0x39FD }, + { Opcode.CMSG_MOVE_STOP_TURN, 0x39EE }, + { Opcode.CMSG_MOVE_TELEPORT_ACK, 0x39FA }, + { Opcode.CMSG_MOVE_TIME_SKIPPED, 0x3A1B }, + { Opcode.CMSG_MOVE_UPDATE_FALL_SPEED, 0x3A1A }, + { Opcode.CMSG_MOVE_WATER_WALK_ACK, 0x3A1D }, + { Opcode.CMSG_NEXT_CINEMATIC_CAMERA, 0x3546 }, + { Opcode.CMSG_OBJECT_UPDATE_FAILED, 0x3185 }, + { Opcode.CMSG_OBJECT_UPDATE_RESCUED, 0x3186 }, + { Opcode.CMSG_OFFER_PETITION, 0x32FE }, + { Opcode.CMSG_OPENING_CINEMATIC, 0x3545 }, + { Opcode.CMSG_OPEN_ITEM, 0x32C7 }, + { Opcode.CMSG_OPT_OUT_OF_LOOT, 0x34F6 }, + { Opcode.CMSG_OVERRIDE_SCREEN_FLASH, 0x351E }, + { Opcode.CMSG_PARTY_INVITE, 0x3603 }, + { Opcode.CMSG_PARTY_INVITE_RESPONSE, 0x3605 }, + { Opcode.CMSG_PARTY_UNINVITE, 0x3646 }, + { Opcode.CMSG_PETITION_BUY, 0x34C8 }, + { Opcode.CMSG_PETITION_RENAME_GUILD, 0x36CD }, + { Opcode.CMSG_PETITION_SHOW_LIST, 0x34C7 }, + { Opcode.CMSG_PETITION_SHOW_SIGNATURES, 0x34C9 }, + { Opcode.CMSG_PET_ABANDON, 0x348D }, + { Opcode.CMSG_PET_ACTION, 0x348B }, + { Opcode.CMSG_PET_CANCEL_AURA, 0x348E }, + { Opcode.CMSG_PET_CAST_SPELL, 0x329D }, + { Opcode.CMSG_PET_LEARN_TALENT, 0x3556 }, // NYI + { Opcode.CMSG_PET_RENAME, 0x3682 }, + { Opcode.CMSG_PET_SET_ACTION, 0x348A }, + { Opcode.CMSG_PET_SPELL_AUTOCAST, 0x348F }, + { Opcode.CMSG_PET_STOP_ATTACK, 0x348C }, + { Opcode.CMSG_PING, 0x377C }, + { Opcode.CMSG_PLAYER_LOGIN, 0x35EA }, + { Opcode.CMSG_PUSH_QUEST_TO_PARTY, 0x349F }, + { Opcode.CMSG_PVP_LOG_DATA, 0x3181 }, + { Opcode.CMSG_QUERY_ARENA_TEAM, 0x36A0 }, // NYI + { Opcode.CMSG_QUERY_BATTLE_PET_NAME, 0x3278 }, + { Opcode.CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT, 0x365E }, + { Opcode.CMSG_QUERY_CORPSE_TRANSPORT, 0x365F }, + { Opcode.CMSG_QUERY_COUNTDOWN_TIMER, 0x31AC }, + { Opcode.CMSG_QUERY_CREATURE, 0x3272 }, + { Opcode.CMSG_QUERY_GAME_OBJECT, 0x3273 }, + { Opcode.CMSG_QUERY_GUILD_INFO, 0x3687 }, + { Opcode.CMSG_QUERY_INSPECT_ACHIEVEMENTS, 0x3500 }, + { Opcode.CMSG_QUERY_NEXT_MAIL_TIME, 0x353B }, + { Opcode.CMSG_QUERY_NPC_TEXT, 0x3274 }, + { Opcode.CMSG_QUERY_PAGE_TEXT, 0x3276 }, + { Opcode.CMSG_QUERY_PETITION, 0x3279 }, + { Opcode.CMSG_QUERY_PET_NAME, 0x3277 }, + { Opcode.CMSG_QUERY_PLAYER_NAMES, 0x3786 }, + { Opcode.CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY, 0x3784 }, // NYI + { Opcode.CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID, 0x3783 }, // NYI + { Opcode.CMSG_QUERY_QUEST_COMPLETION_NPCS, 0x3179 }, + { Opcode.CMSG_QUERY_QUEST_INFO, 0x3275 }, + { Opcode.CMSG_QUERY_QUEST_ITEM_USABILITY, 0x317A }, // NYI + { Opcode.CMSG_QUERY_REALM_NAME, 0x3686 }, + { Opcode.CMSG_QUERY_TIME, 0x34D5 }, + { Opcode.CMSG_QUERY_TREASURE_PICKER, 0x32DD }, // NYI + { Opcode.CMSG_QUERY_VOID_STORAGE, 0x31A5 }, + { Opcode.CMSG_QUEST_CONFIRM_ACCEPT, 0x349E }, + { Opcode.CMSG_QUEST_GIVER_ACCEPT_QUEST, 0x3498 }, + { Opcode.CMSG_QUEST_GIVER_CHOOSE_REWARD, 0x349A }, + { Opcode.CMSG_QUEST_GIVER_CLOSE_QUEST, 0x354B }, + { Opcode.CMSG_QUEST_GIVER_COMPLETE_QUEST, 0x3499 }, + { Opcode.CMSG_QUEST_GIVER_HELLO, 0x3496 }, + { Opcode.CMSG_QUEST_GIVER_QUERY_QUEST, 0x3497 }, + { Opcode.CMSG_QUEST_GIVER_REQUEST_REWARD, 0x349B }, + { Opcode.CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY, 0x349D }, + { Opcode.CMSG_QUEST_GIVER_STATUS_QUERY, 0x349C }, + { Opcode.CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY, 0x356E }, + { Opcode.CMSG_QUEST_LOG_REMOVE_QUEST, 0x3530 }, + { Opcode.CMSG_QUEST_POI_QUERY, 0x36AE }, + { Opcode.CMSG_QUEST_PUSH_RESULT, 0x34A0 }, + { Opcode.CMSG_QUEUED_MESSAGES_END, 0x3780 }, + { Opcode.CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS, 0x3709 }, // NYI + { Opcode.CMSG_QUICK_JOIN_REQUEST_INVITE, 0x3708 }, // NYI + { Opcode.CMSG_QUICK_JOIN_RESPOND_TO_INVITE, 0x3707 }, // NYI + { Opcode.CMSG_RANDOM_ROLL, 0x3653 }, + { Opcode.CMSG_READY_CHECK_RESPONSE, 0x3632 }, + { Opcode.CMSG_READ_ITEM, 0x32C8 }, + { Opcode.CMSG_RECLAIM_CORPSE, 0x34DB }, + { Opcode.CMSG_REFORGE_ITEM, 0x3156 }, + { Opcode.CMSG_REMOVE_GLYPH, 0x3301 }, // NYI + { Opcode.CMSG_REMOVE_NEW_ITEM, 0x32E0 }, + { Opcode.CMSG_REORDER_CHARACTERS, 0x35E9 }, + { Opcode.CMSG_REPAIR_ITEM, 0x34EC }, + { Opcode.CMSG_REPOP_REQUEST, 0x3528 }, + { Opcode.CMSG_REPORT_CLIENT_VARIABLES, 0x3703 }, // NYI + { Opcode.CMSG_REPORT_ENABLED_ADDONS, 0x3702 }, // NYI + { Opcode.CMSG_REPORT_FROZEN_WHILE_LOADING_MAP, 0x36A6 }, // NYI + { Opcode.CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS, 0x3704 }, // NYI + { Opcode.CMSG_REPORT_PVP_PLAYER_AFK, 0x34F4 }, + { Opcode.CMSG_REPORT_SERVER_LAG, 0x32FC }, // NYI + { Opcode.CMSG_REQUEST_ACCOUNT_DATA, 0x3690 }, + { Opcode.CMSG_REQUEST_AREA_POI_UPDATE, 0x32DF }, // NYI + { Opcode.CMSG_REQUEST_BATTLEFIELD_STATUS, 0x35DC }, + { Opcode.CMSG_REQUEST_CEMETERY_LIST, 0x317B }, + { Opcode.CMSG_REQUEST_CROWD_CONTROL_SPELL, 0x352C }, // NYI + { Opcode.CMSG_REQUEST_FORCED_REACTIONS, 0x3207 }, + { Opcode.CMSG_REQUEST_GUILD_PARTY_STATE, 0x31AB }, + { Opcode.CMSG_REQUEST_GUILD_REWARDS_LIST, 0x31AA }, + { Opcode.CMSG_REQUEST_HONOR_STATS, 0x3180 }, // NYI + { Opcode.CMSG_REQUEST_LFG_LIST_BLACKLIST, 0x32A6 }, + { Opcode.CMSG_REQUEST_PARTY_JOIN_UPDATES, 0x35F7 }, + { Opcode.CMSG_REQUEST_PARTY_MEMBER_STATS, 0x3652 }, + { Opcode.CMSG_REQUEST_PET_INFO, 0x3490 }, + { Opcode.CMSG_REQUEST_PLAYED_TIME, 0x327C }, + { Opcode.CMSG_REQUEST_PVP_REWARDS, 0x3198 }, + { Opcode.CMSG_REQUEST_RAID_INFO, 0x36CE }, + { Opcode.CMSG_REQUEST_RATED_PVP_INFO, 0x35E3 }, + { Opcode.CMSG_REQUEST_SCHEDULED_PVP_INFO, 0x3199 }, // NYI + { Opcode.CMSG_REQUEST_STABLED_PETS, 0x3491 }, + { Opcode.CMSG_REQUEST_VEHICLE_EXIT, 0x3239 }, + { Opcode.CMSG_REQUEST_VEHICLE_NEXT_SEAT, 0x323B }, + { Opcode.CMSG_REQUEST_VEHICLE_PREV_SEAT, 0x323A }, + { Opcode.CMSG_REQUEST_VEHICLE_SWITCH_SEAT, 0x323C }, + { Opcode.CMSG_REQUEST_WORLD_QUEST_UPDATE, 0x32DE }, + { Opcode.CMSG_RESET_INSTANCES, 0x3666 }, + { Opcode.CMSG_RESURRECT_RESPONSE, 0x3681 }, + { Opcode.CMSG_RIDE_VEHICLE_INTERACT, 0x323D }, + { Opcode.CMSG_SAVE_ACCOUNT_DATA_EXPORT, 0x374D }, // NYI + { Opcode.CMSG_SAVE_CUF_PROFILES, 0x3190 }, + { Opcode.CMSG_SAVE_EQUIPMENT_SET, 0x3509 }, + { Opcode.CMSG_SAVE_GUILD_EMBLEM, 0x32AA }, + { Opcode.CMSG_SCENE_PLAYBACK_CANCELED, 0x3222 }, + { Opcode.CMSG_SCENE_PLAYBACK_COMPLETE, 0x3221 }, + { Opcode.CMSG_SCENE_TRIGGER_EVENT, 0x3223 }, + { Opcode.CMSG_SELF_RES, 0x3533 }, + { Opcode.CMSG_SELL_ITEM, 0x34A2 }, + { Opcode.CMSG_SEND_CONTACT_LIST, 0x36D3 }, + { Opcode.CMSG_SEND_MAIL, 0x35FA }, + { Opcode.CMSG_SEND_TEXT_EMOTE, 0x3488 }, + { Opcode.CMSG_SERVER_TIME_OFFSET_REQUEST, 0x3698 }, + { Opcode.CMSG_SET_ACTION_BAR_TOGGLES, 0x3534 }, + { Opcode.CMSG_SET_ACTION_BUTTON, 0x3560 }, + { Opcode.CMSG_SET_ACTIVE_MOVER, 0x3A3C }, + { Opcode.CMSG_SET_ADVANCED_COMBAT_LOGGING, 0x32B6 }, + { Opcode.CMSG_SET_AMMO, 0x3561 }, // NYI + { Opcode.CMSG_SET_ASSISTANT_LEADER, 0x364E }, + { Opcode.CMSG_SET_CONTACT_NOTES, 0x36D6 }, + { Opcode.CMSG_SET_CURRENCY_FLAGS, 0x316E }, // NYI + { Opcode.CMSG_SET_DIFFICULTY_ID, 0x3224 }, // NYI + { Opcode.CMSG_SET_DUNGEON_DIFFICULTY, 0x3680 }, + { Opcode.CMSG_SET_EVERYONE_IS_ASSISTANT, 0x3619 }, + { Opcode.CMSG_SET_FACTION_AT_WAR, 0x34DE }, + { Opcode.CMSG_SET_FACTION_INACTIVE, 0x34E0 }, + { Opcode.CMSG_SET_FACTION_NOT_AT_WAR, 0x34DF }, + { Opcode.CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE, 0x31BB }, // NYI + { Opcode.CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, 0x32CB }, // NYI + { Opcode.CMSG_SET_LOOT_METHOD, 0x3647 }, + { Opcode.CMSG_SET_PARTY_ASSIGNMENT, 0x3650 }, + { Opcode.CMSG_SET_PARTY_LEADER, 0x3649 }, + { Opcode.CMSG_SET_PET_SLOT, 0x316D }, + { Opcode.CMSG_SET_PLAYER_DECLINED_NAMES, 0x3685 }, + { Opcode.CMSG_SET_PREFERRED_CEMETERY, 0x317C }, // NYI + { Opcode.CMSG_SET_PRIMARY_TALENT_TREE, 0x3559 }, + { Opcode.CMSG_SET_PVP, 0x32AE }, + { Opcode.CMSG_SET_RAID_DIFFICULTY, 0x36DF }, + { Opcode.CMSG_SET_ROLE, 0x35D9 }, + { Opcode.CMSG_SET_SELECTION, 0x352A }, + { Opcode.CMSG_SET_SHEATHED, 0x3489 }, + { Opcode.CMSG_SET_TAXI_BENCHMARK_MODE, 0x34F3 }, + { Opcode.CMSG_SET_TITLE, 0x3280 }, + { Opcode.CMSG_SET_TRADE_GOLD, 0x3160 }, + { Opcode.CMSG_SET_TRADE_ITEM, 0x315E }, + { Opcode.CMSG_SET_WATCHED_FACTION, 0x34E1 }, + { Opcode.CMSG_SHOWING_CLOAK, 0x356C }, // NYI + { Opcode.CMSG_SHOWING_HELM, 0x356B }, // NYI + { Opcode.CMSG_SHOW_TRADE_SKILL, 0x36C6 }, // NYI + { Opcode.CMSG_SIGN_PETITION, 0x3535 }, + { Opcode.CMSG_SILENCE_PARTY_TALKER, 0x3651 }, // NYI + { Opcode.CMSG_SOCIAL_CONTRACT_REQUEST, 0x3748 }, + { Opcode.CMSG_SOCKET_GEMS, 0x34EB }, + { Opcode.CMSG_SPAWN_TRACKING_UPDATE, 0x3294 }, // NYI + { Opcode.CMSG_SPELL_CLICK, 0x3495 }, + { Opcode.CMSG_SPIRIT_HEALER_ACTIVATE, 0x34AF }, + { Opcode.CMSG_SPLIT_GUILD_BANK_ITEM, 0x34C1 }, + { Opcode.CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY, 0x34BE }, + { Opcode.CMSG_SPLIT_ITEM, 0x399C }, + { Opcode.CMSG_SPLIT_ITEM_TO_GUILD_BANK, 0x34BC }, + { Opcode.CMSG_STABLE_PET, 0x3169 }, // NYI + { Opcode.CMSG_STABLE_SWAP_PET, 0x316B }, // NYI + { Opcode.CMSG_STAND_STATE_CHANGE, 0x318E }, + { Opcode.CMSG_START_SPECTATOR_WAR_GAME, 0x35DF }, // NYI + { Opcode.CMSG_START_WAR_GAME, 0x35DE }, // NYI + { Opcode.CMSG_STORE_GUILD_BANK_ITEM, 0x34B7 }, + { Opcode.CMSG_SUBMIT_USER_FEEDBACK, 0x368F }, + { Opcode.CMSG_SUMMON_RESPONSE, 0x3668 }, + { Opcode.CMSG_SUPPORT_TICKET_SUBMIT_BUG, 0x3644 }, // NYI + { Opcode.CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, 0x3643 }, + { Opcode.CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION, 0x3645 }, // NYI + { Opcode.CMSG_SUSPEND_COMMS_ACK, 0x3778 }, + { Opcode.CMSG_SUSPEND_TOKEN_RESPONSE, 0x377E }, + { Opcode.CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, 0x34B9 }, + { Opcode.CMSG_SWAP_INV_ITEM, 0x399B }, + { Opcode.CMSG_SWAP_ITEM, 0x399A }, + { Opcode.CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM, 0x34B8 }, + { Opcode.CMSG_SWAP_SUB_GROUPS, 0x364C }, + { Opcode.CMSG_SWAP_VOID_ITEM, 0x31A7 }, + { Opcode.CMSG_TABARD_VENDOR_ACTIVATE, 0x32AB }, + { Opcode.CMSG_TALK_TO_GOSSIP, 0x3492 }, + { Opcode.CMSG_TAXI_NODE_STATUS_QUERY, 0x34A8 }, + { Opcode.CMSG_TAXI_QUERY_AVAILABLE_NODES, 0x34AA }, + { Opcode.CMSG_TAXI_REQUEST_EARLY_LANDING, 0x34AC }, + { Opcode.CMSG_TIME_ADJUSTMENT_RESPONSE, 0x3A40 }, // NYI + { Opcode.CMSG_TIME_SYNC_RESPONSE, 0x3A3D }, + { Opcode.CMSG_TIME_SYNC_RESPONSE_DROPPED, 0x3A3F }, // NYI + { Opcode.CMSG_TIME_SYNC_RESPONSE_FAILED, 0x3A3E }, // NYI + { Opcode.CMSG_TOGGLE_DIFFICULTY, 0x3655 }, // NYI + { Opcode.CMSG_TOGGLE_PVP, 0x32AD }, + { Opcode.CMSG_TOTEM_DESTROYED, 0x34F8 }, + { Opcode.CMSG_TOY_CLEAR_FANFARE, 0x3128 }, + { Opcode.CMSG_TRAINER_BUY_SPELL, 0x34AE }, + { Opcode.CMSG_TRAINER_LIST, 0x34AD }, + { Opcode.CMSG_TRAITS_COMMIT_CONFIG, 0x3304 }, // NYI + { Opcode.CMSG_TRANSMOGRIFY_ITEMS, 0x319A }, + { Opcode.CMSG_TURN_IN_PETITION, 0x3537 }, + { Opcode.CMSG_TUTORIAL, 0x36E0 }, + { Opcode.CMSG_UNACCEPT_TRADE, 0x315C }, + { Opcode.CMSG_UNDELETE_CHARACTER, 0x36E2 }, + { Opcode.CMSG_UNLEARN_SKILL, 0x34E5 }, + { Opcode.CMSG_UNLOCK_VOID_STORAGE, 0x31A4 }, + { Opcode.CMSG_UNSTABLE_PET, 0x316A }, // NYI + { Opcode.CMSG_UPDATE_AADC_STATUS, 0x373D }, + { Opcode.CMSG_UPDATE_ACCOUNT_DATA, 0x3691 }, + { Opcode.CMSG_UPDATE_AREA_TRIGGER_VISUAL, 0x32A0 }, // NYI + { Opcode.CMSG_UPDATE_CLIENT_SETTINGS, 0x3662 }, // NYI + { Opcode.CMSG_UPDATE_MISSILE_TRAJECTORY, 0x3A43 }, + { Opcode.CMSG_UPDATE_RAID_TARGET, 0x364F }, + { Opcode.CMSG_UPDATE_SPELL_VISUAL, 0x329F }, // NYI + { Opcode.CMSG_UPDATE_VAS_PURCHASE_STATES, 0x36F7 }, + { Opcode.CMSG_USED_FOLLOW, 0x318B }, // NYI + { Opcode.CMSG_USE_CRITTER_ITEM, 0x3243 }, + { Opcode.CMSG_USE_EQUIPMENT_SET, 0x3995 }, + { Opcode.CMSG_USE_ITEM, 0x329A }, + { Opcode.CMSG_USE_TOY, 0x329C }, + { Opcode.CMSG_VAS_CHECK_TRANSFER_OK, 0x370F }, + { Opcode.CMSG_VAS_GET_QUEUE_MINUTES, 0x370E }, + { Opcode.CMSG_VAS_GET_SERVICE_STATUS, 0x370D }, + { Opcode.CMSG_VIOLENCE_LEVEL, 0x3189 }, + { Opcode.CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST, 0x3713 }, // NYI + { Opcode.CMSG_VOICE_CHAT_JOIN_CHANNEL, 0x3714 }, // NYI + { Opcode.CMSG_VOICE_CHAT_LOGIN, 0x3712 }, // NYI + { Opcode.CMSG_VOID_STORAGE_TRANSFER, 0x31A6 }, + { Opcode.CMSG_WARDEN3_DATA, 0x35EC }, + { Opcode.CMSG_WHO, 0x367F }, + { Opcode.CMSG_WHO_IS, 0x367E }, + { Opcode.CMSG_WORLD_PORT_RESPONSE, 0x35F9 }, + { Opcode.CMSG_WRAP_ITEM, 0x3994 }, + }; + + private static readonly BiDictionary ServerOpcodes = new() + { + { Opcode.SMSG_ABORT_NEW_WORLD, 0x259A }, + { Opcode.SMSG_ACCOUNT_CRITERIA_UPDATE, 0x286A }, + { Opcode.SMSG_ACCOUNT_DATA_TIMES, 0x270E }, + { Opcode.SMSG_ACCOUNT_EXPORT_RESPONSE, 0x28AB }, // NYI + { Opcode.SMSG_ACCOUNT_HEIRLOOM_UPDATE, 0x25B3 }, + { Opcode.SMSG_ACCOUNT_MOUNT_REMOVED, 0x25B1 }, // NYI + { Opcode.SMSG_ACCOUNT_MOUNT_UPDATE, 0x25B0 }, + { Opcode.SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, 0x2885 }, // NYI + { Opcode.SMSG_ACCOUNT_TOY_UPDATE, 0x25B2 }, + { Opcode.SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE, 0x25B6 }, // NYI + { Opcode.SMSG_ACCOUNT_TRANSMOG_UPDATE, 0x25B5 }, // NYI + { Opcode.SMSG_ACHIEVEMENT_DELETED, 0x26EC }, // NYI + { Opcode.SMSG_ACHIEVEMENT_EARNED, 0x2645 }, + { Opcode.SMSG_ACTIVATE_TAXI_REPLY, 0x2681 }, + { Opcode.SMSG_ACTIVE_GLYPHS, 0x2C53 }, + { Opcode.SMSG_ADDON_LIST_REQUEST, 0x2644 }, // NYI + { Opcode.SMSG_ADD_BATTLENET_FRIEND_RESPONSE, 0x263F }, // NYI + { Opcode.SMSG_ADD_ITEM_PASSIVE, 0x25AC }, // NYI + { Opcode.SMSG_ADD_LOSS_OF_CONTROL, 0x2675 }, + { Opcode.SMSG_ADD_RUNE_POWER, 0x26BC }, + { Opcode.SMSG_ADJUST_SPLINE_DURATION, 0x25D2 }, + { Opcode.SMSG_AE_LOOT_TARGETS, 0x261A }, + { Opcode.SMSG_AE_LOOT_TARGET_ACK, 0x261B }, + { Opcode.SMSG_AI_REACTION, 0x26B9 }, + { Opcode.SMSG_ALLIED_RACE_DETAILS, 0x27FE }, + { Opcode.SMSG_ALL_ACCOUNT_CRITERIA, 0x2571 }, + { Opcode.SMSG_ALL_ACHIEVEMENT_DATA, 0x2570 }, + { Opcode.SMSG_ALL_GUILD_ACHIEVEMENTS, 0x29B8 }, + { Opcode.SMSG_ARCHAEOLOGY_SURVERY_CAST, 0x2587 }, + { Opcode.SMSG_AREA_POI_UPDATE_RESPONSE, 0x3010 }, + { Opcode.SMSG_AREA_SPIRIT_HEALER_TIME, 0x2744 }, + { Opcode.SMSG_AREA_TRIGGER_DENIED, 0x2903 }, + { Opcode.SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING, 0x2900 }, // NYI + { Opcode.SMSG_AREA_TRIGGER_MESSAGE, 0x2882 }, + { Opcode.SMSG_AREA_TRIGGER_NO_CORPSE, 0x271A }, + { Opcode.SMSG_AREA_TRIGGER_RE_PATH, 0x28FD }, + { Opcode.SMSG_AREA_TRIGGER_RE_SHAPE, 0x2902 }, // NYI + { Opcode.SMSG_AREA_TRIGGER_UNATTACH, 0x2901 }, // NYI + { Opcode.SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT, 0x2634 }, // NYI + { Opcode.SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, 0x264A }, // NYI + { Opcode.SMSG_ARENA_TEAM_COMMAND_RESULT, 0x2767 }, // NYI + { Opcode.SMSG_ARENA_TEAM_EVENT, 0x2766 }, // NYI + { Opcode.SMSG_ARENA_TEAM_INVITE, 0x2765 }, // NYI + { Opcode.SMSG_ARENA_TEAM_ROSTER, 0x2764 }, // NYI + { Opcode.SMSG_ARENA_TEAM_STATS, 0x2768 }, // NYI + { Opcode.SMSG_ATTACKER_STATE_UPDATE, 0x2952 }, + { Opcode.SMSG_ATTACK_START, 0x293D }, + { Opcode.SMSG_ATTACK_STOP, 0x293E }, + { Opcode.SMSG_ATTACK_SWING_ERROR, 0x294C }, + { Opcode.SMSG_ATTACK_SWING_LANDED_LOG, 0x294D }, // NYI + { Opcode.SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD, 0x27DA }, // NYI + { Opcode.SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE, 0x27D9 }, // NYI + { Opcode.SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED, 0x27D8 }, // NYI + { Opcode.SMSG_AUCTION_CLOSED_NOTIFICATION, 0x26F7 }, + { Opcode.SMSG_AUCTION_COMMAND_RESULT, 0x26F4 }, + { Opcode.SMSG_AUCTION_HELLO_RESPONSE, 0x26F2 }, + { Opcode.SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT, 0x287F }, + { Opcode.SMSG_AUCTION_LIST_ITEMS_RESULT, 0x2865 }, + { Opcode.SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT, 0x287E }, + { Opcode.SMSG_AUCTION_LIST_PENDING_SALES_RESULT, 0x26F9 }, + { Opcode.SMSG_AUCTION_OUTBID_NOTIFICATION, 0x26F6 }, + { Opcode.SMSG_AUCTION_OWNER_BID_NOTIFICATION, 0x26F8 }, + { Opcode.SMSG_AUCTION_REPLICATE_RESPONSE, 0x26F3 }, + { Opcode.SMSG_AUCTION_WON_NOTIFICATION, 0x26F5 }, + { Opcode.SMSG_AURA_POINTS_DEPLETED, 0x2C22 }, // NYI + { Opcode.SMSG_AURA_UPDATE, 0x2C21 }, + { Opcode.SMSG_AUTH_CHALLENGE, 0x3048 }, + { Opcode.SMSG_AUTH_FAILED, 0x256C }, // NYI + { Opcode.SMSG_AUTH_RESPONSE, 0x256D }, + { Opcode.SMSG_AVAILABLE_HOTFIXES, 0x290F }, + { Opcode.SMSG_BAG_CLEANUP_FINISHED, 0x2DA7 }, + { Opcode.SMSG_BARBER_SHOP_RESULT, 0x26C2 }, + { Opcode.SMSG_BATCH_PRESENCE_SUBSCRIPTION, 0x2848 }, // NYI + { Opcode.SMSG_BATTLEFIELD_LIST, 0x2927 }, + { Opcode.SMSG_BATTLEFIELD_PORT_DENIED, 0x292D }, + { Opcode.SMSG_BATTLEFIELD_STATUS_ACTIVE, 0x2923 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_FAILED, 0x2926 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, 0x2922 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_NONE, 0x2925 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_QUEUED, 0x2924 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS, 0x292F }, // NYI + { Opcode.SMSG_BATTLEGROUND_INFO_THROTTLED, 0x292E }, // NYI + { Opcode.SMSG_BATTLEGROUND_INIT, 0x294F }, // NYI + { Opcode.SMSG_BATTLEGROUND_PLAYER_JOINED, 0x292B }, + { Opcode.SMSG_BATTLEGROUND_PLAYER_LEFT, 0x292C }, + { Opcode.SMSG_BATTLEGROUND_PLAYER_POSITIONS, 0x2928 }, + { Opcode.SMSG_BATTLEGROUND_POINTS, 0x294E }, // NYI + { Opcode.SMSG_BATTLENET_CHALLENGE_ABORT, 0x2793 }, // NYI + { Opcode.SMSG_BATTLENET_CHALLENGE_START, 0x2792 }, // NYI + { Opcode.SMSG_BATTLENET_NOTIFICATION, 0x280A }, + { Opcode.SMSG_BATTLENET_RESPONSE, 0x2809 }, + { Opcode.SMSG_BATTLE_NET_CONNECTION_STATUS, 0x280B }, + { Opcode.SMSG_BATTLE_PAY_ACK_FAILED, 0x278C }, + { Opcode.SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED, 0x2781 }, + { Opcode.SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED, 0x2782 }, + { Opcode.SMSG_BATTLE_PAY_CONFIRM_PURCHASE, 0x278B }, + { Opcode.SMSG_BATTLE_PAY_DELIVERY_ENDED, 0x277F }, + { Opcode.SMSG_BATTLE_PAY_DELIVERY_STARTED, 0x277E }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE, 0x288A }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED, 0x277C }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE, 0x277D }, + { Opcode.SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE, 0x277B }, + { Opcode.SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE, 0x2779 }, + { Opcode.SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE, 0x277A }, + { Opcode.SMSG_BATTLE_PAY_MOUNT_DELIVERED, 0x2780 }, + { Opcode.SMSG_BATTLE_PAY_PURCHASE_UPDATE, 0x278A }, + { Opcode.SMSG_BATTLE_PAY_START_CHECKOUT, 0x2826 }, + { Opcode.SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, 0x2788 }, + { Opcode.SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE, 0x2787 }, + { Opcode.SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE, 0x281A }, + { Opcode.SMSG_BATTLE_PETS_HEALED, 0x25F5 }, // NYI + { Opcode.SMSG_BATTLE_PET_CAGE_DATE_ERROR, 0x267C }, // NYI + { Opcode.SMSG_BATTLE_PET_DELETED, 0x25F2 }, + { Opcode.SMSG_BATTLE_PET_ERROR, 0x263A }, + { Opcode.SMSG_BATTLE_PET_JOURNAL, 0x25F1 }, + { Opcode.SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED, 0x25EF }, + { Opcode.SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED, 0x25F0 }, + { Opcode.SMSG_BATTLE_PET_RESTORED, 0x25F4 }, // NYI + { Opcode.SMSG_BATTLE_PET_REVOKED, 0x25F3 }, // NYI + { Opcode.SMSG_BATTLE_PET_TRAP_LEVEL, 0x25ED }, // NYI + { Opcode.SMSG_BATTLE_PET_UPDATES, 0x25EC }, + { Opcode.SMSG_BIND_POINT_UPDATE, 0x257D }, + { Opcode.SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT, 0x262A }, + { Opcode.SMSG_BLACK_MARKET_OUTBID, 0x262B }, + { Opcode.SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT, 0x2629 }, + { Opcode.SMSG_BLACK_MARKET_WON, 0x262C }, + { Opcode.SMSG_BONUS_ROLL_EMPTY, 0x2647 }, // NYI + { Opcode.SMSG_BOSS_KILL, 0x2951 }, + { Opcode.SMSG_BREAK_TARGET, 0x293C }, + { Opcode.SMSG_BROADCAST_ACHIEVEMENT, 0x2BBC }, + { Opcode.SMSG_BROADCAST_LEVELUP, 0x2BBD }, // NYI + { Opcode.SMSG_BUY_FAILED, 0x26CB }, + { Opcode.SMSG_BUY_SUCCEEDED, 0x26CA }, + { Opcode.SMSG_CACHE_INFO, 0x291D }, + { Opcode.SMSG_CACHE_VERSION, 0x291C }, + { Opcode.SMSG_CALENDAR_CLEAR_PENDING_ACTION, 0x26A1 }, + { Opcode.SMSG_CALENDAR_COMMAND_RESULT, 0x26A2 }, + { Opcode.SMSG_CALENDAR_COMMUNITY_INVITE, 0x2691 }, + { Opcode.SMSG_CALENDAR_EVENT_REMOVED_ALERT, 0x2699 }, + { Opcode.SMSG_CALENDAR_EVENT_UPDATED_ALERT, 0x269A }, + { Opcode.SMSG_CALENDAR_INVITE_ADDED, 0x2692 }, + { Opcode.SMSG_CALENDAR_INVITE_ALERT, 0x2696 }, + { Opcode.SMSG_CALENDAR_INVITE_NOTES, 0x269B }, + { Opcode.SMSG_CALENDAR_INVITE_NOTES_ALERT, 0x269C }, + { Opcode.SMSG_CALENDAR_INVITE_REMOVED, 0x2693 }, + { Opcode.SMSG_CALENDAR_INVITE_REMOVED_ALERT, 0x2698 }, + { Opcode.SMSG_CALENDAR_INVITE_STATUS, 0x2694 }, + { Opcode.SMSG_CALENDAR_INVITE_STATUS_ALERT, 0x2697 }, + { Opcode.SMSG_CALENDAR_MODERATOR_STATUS, 0x2695 }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_ADDED, 0x269D }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_REMOVED, 0x269E }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_UPDATED, 0x269F }, + { Opcode.SMSG_CALENDAR_SEND_CALENDAR, 0x268F }, + { Opcode.SMSG_CALENDAR_SEND_EVENT, 0x2690 }, + { Opcode.SMSG_CALENDAR_SEND_NUM_PENDING, 0x26A0 }, + { Opcode.SMSG_CAMERA_EFFECT, 0x272A }, // NYI + { Opcode.SMSG_CANCEL_AUTO_REPEAT, 0x26E2 }, + { Opcode.SMSG_CANCEL_COMBAT, 0x294B }, + { Opcode.SMSG_CANCEL_ORPHAN_SPELL_VISUAL, 0x2C45 }, + { Opcode.SMSG_CANCEL_PRELOAD_WORLD, 0x2598 }, // NYI + { Opcode.SMSG_CANCEL_SCENE, 0x2639 }, + { Opcode.SMSG_CANCEL_SPELL_VISUAL, 0x2C43 }, + { Opcode.SMSG_CANCEL_SPELL_VISUAL_KIT, 0x2C47 }, + { Opcode.SMSG_CAN_DUEL_RESULT, 0x2947 }, + { Opcode.SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE, 0x2819 }, // NYI + { Opcode.SMSG_CAST_FAILED, 0x2C56 }, + { Opcode.SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT, 0x3004 }, // NYI + { Opcode.SMSG_CHANGE_REALM_TICKET_RESPONSE, 0x280C }, + { Opcode.SMSG_CHANNEL_LIST, 0x2BC4 }, + { Opcode.SMSG_CHANNEL_NOTIFY, 0x2BC1 }, + { Opcode.SMSG_CHANNEL_NOTIFY_JOINED, 0x2BC2 }, + { Opcode.SMSG_CHANNEL_NOTIFY_LEFT, 0x2BC3 }, + { Opcode.SMSG_CHARACTER_CHECK_UPGRADE_RESULT, 0x27C5 }, // NYI + { Opcode.SMSG_CHARACTER_LOGIN_FAILED, 0x2709 }, + { Opcode.SMSG_CHARACTER_OBJECT_TEST_RESPONSE, 0x2791 }, // NYI + { Opcode.SMSG_CHARACTER_RENAME_RESULT, 0x276B }, + { Opcode.SMSG_CHARACTER_UPGRADE_ABORTED, 0x27C4 }, // NYI + { Opcode.SMSG_CHARACTER_UPGRADE_COMPLETE, 0x27C3 }, // NYI + { Opcode.SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT, 0x27C6 }, // NYI + { Opcode.SMSG_CHARACTER_UPGRADE_STARTED, 0x27C2 }, // NYI + { Opcode.SMSG_CHAR_CUSTOMIZE_FAILURE, 0x26E6 }, + { Opcode.SMSG_CHAR_CUSTOMIZE_SUCCESS, 0x26E7 }, + { Opcode.SMSG_CHAR_FACTION_CHANGE_RESULT, 0x27AF }, + { Opcode.SMSG_CHAT, 0x2BAD }, + { Opcode.SMSG_CHAT_AUTO_RESPONDED, 0x2BB8 }, // NYI + { Opcode.SMSG_CHAT_DOWN, 0x2BBE }, // NYI + { Opcode.SMSG_CHAT_IGNORED_ACCOUNT_MUTED, 0x2BAC }, // NYI + { Opcode.SMSG_CHAT_IS_DOWN, 0x2BBF }, // NYI + { Opcode.SMSG_CHAT_NOT_IN_PARTY, 0x2BB2 }, // NYI + { Opcode.SMSG_CHAT_PLAYER_AMBIGUOUS, 0x2BB0 }, + { Opcode.SMSG_CHAT_PLAYER_NOTFOUND, 0x2BB7 }, + { Opcode.SMSG_CHAT_RECONNECT, 0x2BC0 }, // NYI + { Opcode.SMSG_CHAT_RESTRICTED, 0x2BB3 }, + { Opcode.SMSG_CHAT_SERVER_MESSAGE, 0x2BC5 }, + { Opcode.SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, 0x2C12 }, // NYI + { Opcode.SMSG_CHECK_WARGAME_ENTRY, 0x2592 }, // NYI + { Opcode.SMSG_CLEAR_ALL_SPELL_CHARGES, 0x2C26 }, + { Opcode.SMSG_CLEAR_BOSS_EMOTES, 0x25BD }, + { Opcode.SMSG_CLEAR_COOLDOWN, 0x26BE }, + { Opcode.SMSG_CLEAR_COOLDOWNS, 0x2C25 }, + { Opcode.SMSG_CLEAR_SPELL_CHARGES, 0x2C27 }, + { Opcode.SMSG_CLEAR_TARGET, 0x2948 }, + { Opcode.SMSG_COIN_REMOVED, 0x2619 }, + { Opcode.SMSG_COMBAT_EVENT_FAILED, 0x293F }, // NYI + { Opcode.SMSG_COMMENTATOR_MAP_INFO, 0x270B }, // NYI + { Opcode.SMSG_COMMENTATOR_PLAYER_INFO, 0x270C }, // NYI + { Opcode.SMSG_COMMENTATOR_STATE_CHANGED, 0x270A }, // NYI + { Opcode.SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE, 0x27D5 }, // NYI + { Opcode.SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE, 0x27E1 }, + { Opcode.SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE, 0x27D7 }, + { Opcode.SMSG_COMMERCE_TOKEN_UPDATE, 0x27D6 }, + { Opcode.SMSG_COMPLAINT_RESULT, 0x26AF }, + { Opcode.SMSG_COMPRESSED_PACKET, 0x3052 }, + { Opcode.SMSG_CONFIRM_BARBERS_CHOICE, 0x26C1 }, // NYI + { Opcode.SMSG_CONFIRM_PARTY_INVITE, 0x2818 }, // NYI + { Opcode.SMSG_CONNECT_TO, 0x304D }, + { Opcode.SMSG_CONSOLE_WRITE, 0x2637 }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE, 0x27DD }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED, 0x27DC }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE, 0x27DB }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED, 0x27DF }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE, 0x27E0 }, // NYI + { Opcode.SMSG_CONTACT_LIST, 0x278F }, + { Opcode.SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE, 0x281F }, // NYI + { Opcode.SMSG_CONTROL_UPDATE, 0x2649 }, + { Opcode.SMSG_CONVERT_RUNE, 0x2C5F }, + { Opcode.SMSG_COOLDOWN_CHEAT, 0x273D }, // NYI + { Opcode.SMSG_COOLDOWN_EVENT, 0x26BD }, + { Opcode.SMSG_CORPSE_LOCATION, 0x2651 }, + { Opcode.SMSG_CORPSE_RECLAIM_DELAY, 0x274E }, + { Opcode.SMSG_CORPSE_TRANSPORT_QUERY, 0x2716 }, + { Opcode.SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE, 0x2AA3 }, + { Opcode.SMSG_CREATE_CHAR, 0x2705 }, + { Opcode.SMSG_CRITERIA_DELETED, 0x26EB }, + { Opcode.SMSG_CRITERIA_UPDATE, 0x26E5 }, + { Opcode.SMSG_CROSSED_INEBRIATION_THRESHOLD, 0x26C6 }, + { Opcode.SMSG_CUSTOM_LOAD_SCREEN, 0x25CD }, + { Opcode.SMSG_DAILY_QUESTS_RESET, 0x2A80 }, + { Opcode.SMSG_DAMAGE_CALC_LOG, 0x2C61 }, // NYI + { Opcode.SMSG_DB_REPLY, 0x290E }, + { Opcode.SMSG_DEATH_RELEASE_LOC, 0x26D7 }, + { Opcode.SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE, 0x2659 }, // NYI + { Opcode.SMSG_DEFENSE_MESSAGE, 0x2BB6 }, + { Opcode.SMSG_DELETE_CHAR, 0x2706 }, + { Opcode.SMSG_DESTROY_ARENA_UNIT, 0x2746 }, + { Opcode.SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 0x26FD }, + { Opcode.SMSG_DIFFERENT_INSTANCE_FROM_PARTY, 0x258A }, // NYI + { Opcode.SMSG_DISENCHANT_CREDIT, 0x25A9 }, // NYI + { Opcode.SMSG_DISMOUNT, 0x26B5 }, // NYI + { Opcode.SMSG_DISMOUNT_RESULT, 0x257C }, // NYI + { Opcode.SMSG_DISPEL_FAILED, 0x2C2F }, + { Opcode.SMSG_DISPLAY_GAME_ERROR, 0x259F }, + { Opcode.SMSG_DISPLAY_PLAYER_CHOICE, 0x2FFC }, + { Opcode.SMSG_DISPLAY_PROMOTION, 0x264E }, + { Opcode.SMSG_DISPLAY_QUEST_POPUP, 0x2A9E }, // NYI + { Opcode.SMSG_DISPLAY_TOAST, 0x2626 }, + { Opcode.SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, 0x25E3 }, // NYI + { Opcode.SMSG_DROP_NEW_CONNECTION, 0x304C }, // NYI + { Opcode.SMSG_DUEL_ARRANGED, 0x2941 }, // NYI + { Opcode.SMSG_DUEL_COMPLETE, 0x2945 }, + { Opcode.SMSG_DUEL_COUNTDOWN, 0x2944 }, + { Opcode.SMSG_DUEL_IN_BOUNDS, 0x2943 }, + { Opcode.SMSG_DUEL_OUT_OF_BOUNDS, 0x2942 }, + { Opcode.SMSG_DUEL_REQUESTED, 0x2940 }, + { Opcode.SMSG_DUEL_WINNER, 0x2946 }, + { Opcode.SMSG_DURABILITY_DAMAGE_DEATH, 0x2749 }, + { Opcode.SMSG_EMOTE, 0x27CC }, + { Opcode.SMSG_ENABLE_BARBER_SHOP, 0x26C0 }, + { Opcode.SMSG_ENCHANTMENT_LOG, 0x2717 }, + { Opcode.SMSG_ENCOUNTER_END, 0x2786 }, // NYI + { Opcode.SMSG_ENCOUNTER_START, 0x2785 }, // NYI + { Opcode.SMSG_END_LIGHTNING_STORM, 0x26AC }, + { Opcode.SMSG_ENSURE_WORLD_LOADED, 0x288B }, // NYI + { Opcode.SMSG_ENTER_ENCRYPTED_MODE, 0x3049 }, + { Opcode.SMSG_ENUM_CHARACTERS_RESULT, 0x2584 }, + { Opcode.SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE, 0x27F7 }, + { Opcode.SMSG_ENVIRONMENTAL_DAMAGE_LOG, 0x2C1E }, + { Opcode.SMSG_EQUIPMENT_SET_ID, 0x26B6 }, + { Opcode.SMSG_EXPECTED_SPAM_RECORDS, 0x2BB1 }, // NYI + { Opcode.SMSG_EXPLORATION_EXPERIENCE, 0x2763 }, + { Opcode.SMSG_FACTION_BONUS_INFO, 0x2729 }, + { Opcode.SMSG_FAILED_PLAYER_CONDITION, 0x2FFA }, // NYI + { Opcode.SMSG_FAILED_QUEST_TURN_IN, 0x2815 }, // NYI + { Opcode.SMSG_FEATURE_SYSTEM_STATUS, 0x25C1 }, + { Opcode.SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, 0x25C2 }, + { Opcode.SMSG_FEIGN_DEATH_RESISTED, 0x2748 }, // NYI + { Opcode.SMSG_FISH_ESCAPED, 0x26D4 }, + { Opcode.SMSG_FISH_NOT_HOOKED, 0x26D3 }, + { Opcode.SMSG_FLIGHT_SPLINE_SYNC, 0x2E2B }, + { Opcode.SMSG_FORCED_DEATH_UPDATE, 0x26D8 }, // NYI + { Opcode.SMSG_FORCE_ANIM, 0x2755 }, // NYI + { Opcode.SMSG_FORCE_OBJECT_RELINK, 0x264D }, // NYI + { Opcode.SMSG_FORCE_RANDOM_TRANSMOG_TOAST, 0x25B4 }, // NYI + { Opcode.SMSG_FRIEND_STATUS, 0x2790 }, + { Opcode.SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, 0x25C5 }, + { Opcode.SMSG_GAME_OBJECT_BASE, 0x282C }, // NYI + { Opcode.SMSG_GAME_OBJECT_CLOSE_INTERACTION, 0x288E }, + { Opcode.SMSG_GAME_OBJECT_CUSTOM_ANIM, 0x25C6 }, + { Opcode.SMSG_GAME_OBJECT_DESPAWN, 0x25C7 }, + { Opcode.SMSG_GAME_OBJECT_INTERACTION, 0x288D }, + { Opcode.SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, 0x2C4A }, + { Opcode.SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT, 0x2C49 }, // NYI + { Opcode.SMSG_GAME_OBJECT_RESET_STATE, 0x2722 }, // NYI + { Opcode.SMSG_GAME_OBJECT_SET_STATE_LOCAL, 0x2808 }, + { Opcode.SMSG_GAME_OBJECT_UI_LINK, 0x271E }, // NYI + { Opcode.SMSG_GAME_SPEED_SET, 0x2685 }, // NYI + { Opcode.SMSG_GAME_TIME_SET, 0x2710 }, // NYI + { Opcode.SMSG_GAME_TIME_UPDATE, 0x270F }, // NYI + { Opcode.SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT, 0x2586 }, + { Opcode.SMSG_GENERATE_SSO_TOKEN_RESPONSE, 0x2820 }, // NYI + { Opcode.SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT, 0x2769 }, + { Opcode.SMSG_GET_REALM_HIDDEN_RESULT, 0x28B0 }, // NYI + { Opcode.SMSG_GET_REMAINING_GAME_TIME_RESPONSE, 0x27DE }, // NYI + { Opcode.SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT, 0x27F3 }, + { Opcode.SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT, 0x27F4 }, + { Opcode.SMSG_GM_PLAYER_INFO, 0x3005 }, // NYI + { Opcode.SMSG_GM_REQUEST_PLAYER_INFO, 0x2FFB }, // NYI + { Opcode.SMSG_GM_TICKET_CASE_STATUS, 0x26A7 }, + { Opcode.SMSG_GM_TICKET_SYSTEM_STATUS, 0x26A6 }, + { Opcode.SMSG_GOD_MODE, 0x2700 }, // NYI + { Opcode.SMSG_GOSSIP_COMPLETE, 0x2A97 }, + { Opcode.SMSG_GOSSIP_MESSAGE, 0x2A98 }, + { Opcode.SMSG_GOSSIP_OPTION_NPC_INTERACTION, 0x2AA7 }, + { Opcode.SMSG_GOSSIP_POI, 0x279B }, + { Opcode.SMSG_GOSSIP_QUEST_UPDATE, 0x2A99 }, // NYI + { Opcode.SMSG_GROUP_ACTION_THROTTLED, 0x258F }, // NYI + { Opcode.SMSG_GROUP_AUTO_KICK, 0x2798 }, // NYI + { Opcode.SMSG_GROUP_DECLINE, 0x2794 }, + { Opcode.SMSG_GROUP_DESTROYED, 0x2797 }, + { Opcode.SMSG_GROUP_NEW_LEADER, 0x262F }, + { Opcode.SMSG_GROUP_REQUEST_DECLINE, 0x2795 }, // NYI + { Opcode.SMSG_GROUP_UNINVITE, 0x2796 }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_DELETED, 0x29C6 }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_EARNED, 0x29C5 }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_MEMBERS, 0x29C8 }, + { Opcode.SMSG_GUILD_BANK_LOG_QUERY_RESULTS, 0x29E0 }, + { Opcode.SMSG_GUILD_BANK_QUERY_RESULTS, 0x29DF }, + { Opcode.SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY, 0x29E1 }, + { Opcode.SMSG_GUILD_BANK_TEXT_QUERY_RESULT, 0x29E4 }, // NYI + { Opcode.SMSG_GUILD_CHALLENGE_COMPLETED, 0x29D4 }, // NYI + { Opcode.SMSG_GUILD_CHALLENGE_UPDATE, 0x29D3 }, + { Opcode.SMSG_GUILD_CHANGE_NAME_RESULT, 0x29DE }, // NYI + { Opcode.SMSG_GUILD_COMMAND_RESULT, 0x29BA }, + { Opcode.SMSG_GUILD_CRITERIA_DELETED, 0x29C7 }, + { Opcode.SMSG_GUILD_CRITERIA_UPDATE, 0x29C4 }, + { Opcode.SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED, 0x29F9 }, + { Opcode.SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, 0x29F8 }, + { Opcode.SMSG_GUILD_EVENT_DISBANDED, 0x29EE }, + { Opcode.SMSG_GUILD_EVENT_LOG_QUERY_RESULTS, 0x29E3 }, + { Opcode.SMSG_GUILD_EVENT_MOTD, 0x29EF }, + { Opcode.SMSG_GUILD_EVENT_NEW_LEADER, 0x29ED }, + { Opcode.SMSG_GUILD_EVENT_PLAYER_JOINED, 0x29EB }, + { Opcode.SMSG_GUILD_EVENT_PLAYER_LEFT, 0x29EC }, + { Opcode.SMSG_GUILD_EVENT_PRESENCE_CHANGE, 0x29F0 }, + { Opcode.SMSG_GUILD_EVENT_RANKS_UPDATED, 0x29F2 }, + { Opcode.SMSG_GUILD_EVENT_RANK_CHANGED, 0x29F3 }, + { Opcode.SMSG_GUILD_EVENT_STATUS_CHANGE, 0x29F1 }, + { Opcode.SMSG_GUILD_EVENT_TAB_ADDED, 0x29F4 }, + { Opcode.SMSG_GUILD_EVENT_TAB_DELETED, 0x29F5 }, // NYI + { Opcode.SMSG_GUILD_EVENT_TAB_MODIFIED, 0x29F6 }, + { Opcode.SMSG_GUILD_EVENT_TAB_TEXT_CHANGED, 0x29F7 }, + { Opcode.SMSG_GUILD_FLAGGED_FOR_RENAME, 0x29DD }, + { Opcode.SMSG_GUILD_HARDCORE_MEMBER_DEATH, 0x29BD }, + { Opcode.SMSG_GUILD_INVITE, 0x29CB }, + { Opcode.SMSG_GUILD_INVITE_DECLINED, 0x29E9 }, // NYI + { Opcode.SMSG_GUILD_INVITE_EXPIRED, 0x29EA }, // NYI + { Opcode.SMSG_GUILD_ITEM_LOOTED_NOTIFY, 0x29D5 }, // NYI + { Opcode.SMSG_GUILD_KNOWN_RECIPES, 0x29BF }, // NYI + { Opcode.SMSG_GUILD_MEMBERS_WITH_RECIPE, 0x29C0 }, // NYI + { Opcode.SMSG_GUILD_MEMBER_DAILY_RESET, 0x29E5 }, + { Opcode.SMSG_GUILD_MEMBER_RECIPES, 0x29BE }, // NYI + { Opcode.SMSG_GUILD_MEMBER_UPDATE_NOTE, 0x29CA }, + { Opcode.SMSG_GUILD_MOVED, 0x29DB }, // NYI + { Opcode.SMSG_GUILD_MOVE_STARTING, 0x29DA }, // NYI + { Opcode.SMSG_GUILD_NAME_CHANGED, 0x29DC }, + { Opcode.SMSG_GUILD_NEWS, 0x29C2 }, + { Opcode.SMSG_GUILD_NEWS_DELETED, 0x29C3 }, // NYI + { Opcode.SMSG_GUILD_PARTY_STATE, 0x29CC }, + { Opcode.SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, 0x29E2 }, + { Opcode.SMSG_GUILD_RANKS, 0x29C9 }, + { Opcode.SMSG_GUILD_REPUTATION_REACTION_CHANGED, 0x29CD }, // NYI + { Opcode.SMSG_GUILD_RESET, 0x29D9 }, // NYI + { Opcode.SMSG_GUILD_REWARD_LIST, 0x29C1 }, + { Opcode.SMSG_GUILD_ROSTER, 0x29BB }, + { Opcode.SMSG_GUILD_ROSTER_UPDATE, 0x29BC }, + { Opcode.SMSG_GUILD_SEND_RANK_CHANGE, 0x29B9 }, + { Opcode.SMSG_HARDCORE_DEATH_ALERT, 0x28B5 }, + { Opcode.SMSG_HEALTH_UPDATE, 0x26D5 }, + { Opcode.SMSG_HIGHEST_THREAT_UPDATE, 0x26DD }, + { Opcode.SMSG_HOTFIX_CONNECT, 0x2911 }, + { Opcode.SMSG_HOTFIX_MESSAGE, 0x2910 }, + { Opcode.SMSG_INITIALIZE_FACTIONS, 0x2728 }, + { Opcode.SMSG_INITIAL_SETUP, 0x2580 }, + { Opcode.SMSG_INIT_WORLD_STATES, 0x274A }, + { Opcode.SMSG_INSPECT_HONOR_STATS, 0x2933 }, // NYI + { Opcode.SMSG_INSPECT_PVP, 0x2726 }, // NYI + { Opcode.SMSG_INSPECT_RESULT, 0x2633 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY, 0x27B5 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT, 0x27B4 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_END, 0x27BD }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT, 0x27B3 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE, 0x27BF }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION, 0x27BE }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE, 0x27B8 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START, 0x27B7 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE, 0x27BC }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED, 0x27C0 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_START, 0x27B9 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_TIMER_START, 0x27B6 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS, 0x27BB }, // NYI + { Opcode.SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE, 0x27BA }, // NYI + { Opcode.SMSG_INSTANCE_GROUP_SIZE_CHANGED, 0x26FE }, // NYI + { Opcode.SMSG_INSTANCE_INFO, 0x2636 }, + { Opcode.SMSG_INSTANCE_RESET, 0x268A }, + { Opcode.SMSG_INSTANCE_RESET_FAILED, 0x268B }, + { Opcode.SMSG_INSTANCE_SAVE_CREATED, 0x2784 }, + { Opcode.SMSG_INTERRUPT_POWER_REGEN, 0x2C58 }, + { Opcode.SMSG_INVALIDATE_PAGE_TEXT, 0x2918 }, // NYI + { Opcode.SMSG_INVALIDATE_PLAYER, 0x2FFF }, + { Opcode.SMSG_INVALID_PROMOTION_CODE, 0x2757 }, // NYI + { Opcode.SMSG_INVENTORY_CHANGE_FAILURE, 0x2DA5 }, + { Opcode.SMSG_INVENTORY_FIXUP_COMPLETE, 0x2817 }, // NYI + { Opcode.SMSG_INVENTORY_FULL_OVERFLOW, 0x2828 }, + { Opcode.SMSG_ISLAND_AZERITE_GAIN, 0x2760 }, // NYI + { Opcode.SMSG_ISLAND_COMPLETE, 0x2761 }, // NYI + { Opcode.SMSG_IS_QUEST_COMPLETE_RESPONSE, 0x2A84 }, // NYI + { Opcode.SMSG_ITEM_CHANGED, 0x26EF }, // NYI + { Opcode.SMSG_ITEM_COOLDOWN, 0x27CB }, + { Opcode.SMSG_ITEM_ENCHANT_TIME_UPDATE, 0x2759 }, + { Opcode.SMSG_ITEM_EXPIRE_PURCHASE_REFUND, 0x259E }, + { Opcode.SMSG_ITEM_PURCHASE_REFUND_RESULT, 0x259C }, + { Opcode.SMSG_ITEM_PUSH_RESULT, 0x2625 }, + { Opcode.SMSG_ITEM_TIME_UPDATE, 0x2758 }, + { Opcode.SMSG_KICK_REASON, 0x268D }, // NYI + { Opcode.SMSG_LATENCY_REPORT_PING, 0x2886 }, // NYI + { Opcode.SMSG_LEARNED_SPELLS, 0x2C4C }, + { Opcode.SMSG_LEARN_PVP_TALENT_FAILED, 0x25D6 }, // NYI + { Opcode.SMSG_LEARN_TALENT_FAILED, 0x25D5 }, + { Opcode.SMSG_LEGACY_LOOT_RULES, 0x282D }, + { Opcode.SMSG_LEVEL_UP_INFO, 0x26ED }, + { Opcode.SMSG_LFG_BOOT_PLAYER, 0x2A35 }, + { Opcode.SMSG_LFG_DISABLED, 0x2A33 }, + { Opcode.SMSG_LFG_EXPAND_SEARCH_PROMPT, 0x2A3B }, // NYI + { Opcode.SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN, 0x2A25 }, // NYI + { Opcode.SMSG_LFG_JOIN_RESULT, 0x2A1C }, + { Opcode.SMSG_LFG_LIST_APPLICANT_LIST_UPDATE, 0x2A2B }, // NYI + { Opcode.SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE, 0x2A28 }, // NYI + { Opcode.SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT, 0x2A29 }, // NYI + { Opcode.SMSG_LFG_LIST_JOIN_RESULT, 0x2A1D }, // NYI + { Opcode.SMSG_LFG_LIST_SEARCH_RESULTS, 0x2A1E }, // NYI + { Opcode.SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE, 0x2A2C }, // NYI + { Opcode.SMSG_LFG_LIST_SEARCH_STATUS, 0x2A1F }, // NYI + { Opcode.SMSG_LFG_LIST_UPDATE_BLACKLIST, 0x2A2A }, + { Opcode.SMSG_LFG_LIST_UPDATE_EXPIRATION, 0x2A27 }, // NYI + { Opcode.SMSG_LFG_LIST_UPDATE_STATUS, 0x2A26 }, // NYI + { Opcode.SMSG_LFG_OFFER_CONTINUE, 0x2A34 }, + { Opcode.SMSG_LFG_PARTY_INFO, 0x2A36 }, + { Opcode.SMSG_LFG_PLAYER_INFO, 0x2A37 }, + { Opcode.SMSG_LFG_PLAYER_REWARD, 0x2A38 }, + { Opcode.SMSG_LFG_PROPOSAL_UPDATE, 0x2A2D }, + { Opcode.SMSG_LFG_QUEUE_STATUS, 0x2A20 }, + { Opcode.SMSG_LFG_READY_CHECK_RESULT, 0x2A3A }, // NYI + { Opcode.SMSG_LFG_READY_CHECK_UPDATE, 0x2A22 }, // NYI + { Opcode.SMSG_LFG_ROLE_CHECK_UPDATE, 0x2A21 }, + { Opcode.SMSG_LFG_SLOT_INVALID, 0x2A30 }, // NYI + { Opcode.SMSG_LFG_TELEPORT_DENIED, 0x2A32 }, + { Opcode.SMSG_LFG_UPDATE_STATUS, 0x2A24 }, + { Opcode.SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, 0x2776 }, // NYI + { Opcode.SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, 0x2775 }, // NYI + { Opcode.SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, 0x276A }, // NYI + { Opcode.SMSG_LOAD_CUF_PROFILES, 0x25BE }, + { Opcode.SMSG_LOAD_EQUIPMENT_SET, 0x2712 }, + { Opcode.SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER, 0x2890 }, // NYI + { Opcode.SMSG_LOBBY_MATCHMAKER_PARTY_INFO, 0x2891 }, // NYI + { Opcode.SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED, 0x2892 }, // NYI + { Opcode.SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE, 0x2893 }, // NYI + { Opcode.SMSG_LOGIN_SET_TIME_SPEED, 0x2711 }, + { Opcode.SMSG_LOGIN_VERIFY_WORLD, 0x2599 }, + { Opcode.SMSG_LOGOUT_CANCEL_ACK, 0x2689 }, + { Opcode.SMSG_LOGOUT_COMPLETE, 0x2688 }, + { Opcode.SMSG_LOGOUT_RESPONSE, 0x2687 }, + { Opcode.SMSG_LOG_XP_GAIN, 0x26E9 }, + { Opcode.SMSG_LOOT_ALL_PASSED, 0x2623 }, + { Opcode.SMSG_LOOT_LIST, 0x2745 }, + { Opcode.SMSG_LOOT_MONEY_NOTIFY, 0x261E }, + { Opcode.SMSG_LOOT_RELEASE, 0x261D }, + { Opcode.SMSG_LOOT_RELEASE_ALL, 0x261C }, + { Opcode.SMSG_LOOT_REMOVED, 0x2617 }, + { Opcode.SMSG_LOOT_RESPONSE, 0x2616 }, + { Opcode.SMSG_LOOT_ROLL, 0x2620 }, + { Opcode.SMSG_LOOT_ROLLS_COMPLETE, 0x2622 }, + { Opcode.SMSG_LOOT_ROLL_WON, 0x2624 }, + { Opcode.SMSG_LOSS_OF_CONTROL_AURA_UPDATE, 0x2674 }, // NYI + { Opcode.SMSG_MAIL_COMMAND_RESULT, 0x263D }, + { Opcode.SMSG_MAIL_LIST_RESULT, 0x275A }, + { Opcode.SMSG_MAIL_QUERY_NEXT_TIME_RESULT, 0x275B }, + { Opcode.SMSG_MAP_OBJECTIVES_INIT, 0x2950 }, // NYI + { Opcode.SMSG_MAP_OBJ_EVENTS, 0x25C8 }, // NYI + { Opcode.SMSG_MASTER_LOOT_CANDIDATE_LIST, 0x2621 }, + { Opcode.SMSG_MESSAGE_BOX, 0x2576 }, // NYI + { Opcode.SMSG_MINIMAP_PING, 0x26D2 }, + { Opcode.SMSG_MIRROR_IMAGE_COMPONENTED_DATA, 0x2C14 }, + { Opcode.SMSG_MIRROR_IMAGE_CREATURE_DATA, 0x2C13 }, + { Opcode.SMSG_MISSILE_CANCEL, 0x25C9 }, + { Opcode.SMSG_MODIFY_COOLDOWN, 0x276C }, + { Opcode.SMSG_MOUNT_RESULT, 0x257B }, + { Opcode.SMSG_MOVEMENT_ENFORCEMENT_ALERT, 0x2849 }, // NYI + { Opcode.SMSG_MOVE_APPLY_INERTIA, 0x2E2E }, // NYI + { Opcode.SMSG_MOVE_APPLY_MOVEMENT_FORCE, 0x2E15 }, + { Opcode.SMSG_MOVE_DISABLE_COLLISION, 0x2E11 }, + { Opcode.SMSG_MOVE_DISABLE_DOUBLE_JUMP, 0x2DFD }, + { Opcode.SMSG_MOVE_DISABLE_GRAVITY, 0x2E0D }, + { Opcode.SMSG_MOVE_DISABLE_INERTIA, 0x2E0F }, + { Opcode.SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 0x2E0C }, + { Opcode.SMSG_MOVE_ENABLE_COLLISION, 0x2E12 }, + { Opcode.SMSG_MOVE_ENABLE_DOUBLE_JUMP, 0x2DFC }, + { Opcode.SMSG_MOVE_ENABLE_GRAVITY, 0x2E0E }, + { Opcode.SMSG_MOVE_ENABLE_INERTIA, 0x2E10 }, + { Opcode.SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 0x2E0B }, + { Opcode.SMSG_MOVE_KNOCK_BACK, 0x2E03 }, + { Opcode.SMSG_MOVE_REMOVE_INERTIA, 0x2E2F }, // NYI + { Opcode.SMSG_MOVE_REMOVE_MOVEMENT_FORCE, 0x2E16 }, + { Opcode.SMSG_MOVE_ROOT, 0x2DF9 }, + { Opcode.SMSG_MOVE_SET_ACTIVE_MOVER, 0x2DD5 }, + { Opcode.SMSG_MOVE_SET_CAN_FLY, 0x2E05 }, + { Opcode.SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING, 0x2E07 }, + { Opcode.SMSG_MOVE_SET_COLLISION_HEIGHT, 0x2E13 }, + { Opcode.SMSG_MOVE_SET_COMPOUND_STATE, 0x2E17 }, + { Opcode.SMSG_MOVE_SET_FEATHER_FALL, 0x2DFF }, + { Opcode.SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 0x2DF5 }, + { Opcode.SMSG_MOVE_SET_FLIGHT_SPEED, 0x2DF4 }, + { Opcode.SMSG_MOVE_SET_HOVERING, 0x2E01 }, + { Opcode.SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, 0x2E09 }, + { Opcode.SMSG_MOVE_SET_LAND_WALK, 0x2DFE }, + { Opcode.SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE, 0x2DE6 }, + { Opcode.SMSG_MOVE_SET_NORMAL_FALL, 0x2E00 }, + { Opcode.SMSG_MOVE_SET_PITCH_RATE, 0x2DF8 }, + { Opcode.SMSG_MOVE_SET_RUN_BACK_SPEED, 0x2DF1 }, + { Opcode.SMSG_MOVE_SET_RUN_SPEED, 0x2DF0 }, + { Opcode.SMSG_MOVE_SET_SWIM_BACK_SPEED, 0x2DF3 }, + { Opcode.SMSG_MOVE_SET_SWIM_SPEED, 0x2DF2 }, + { Opcode.SMSG_MOVE_SET_TURN_RATE, 0x2DF7 }, + { Opcode.SMSG_MOVE_SET_VEHICLE_REC_ID, 0x2E14 }, + { Opcode.SMSG_MOVE_SET_WALK_SPEED, 0x2DF6 }, + { Opcode.SMSG_MOVE_SET_WATER_WALK, 0x2DFB }, + { Opcode.SMSG_MOVE_SKIP_TIME, 0x2E18 }, + { Opcode.SMSG_MOVE_SPLINE_DISABLE_COLLISION, 0x2E1D }, + { Opcode.SMSG_MOVE_SPLINE_DISABLE_GRAVITY, 0x2E1B }, + { Opcode.SMSG_MOVE_SPLINE_ENABLE_COLLISION, 0x2E1E }, + { Opcode.SMSG_MOVE_SPLINE_ENABLE_GRAVITY, 0x2E1C }, + { Opcode.SMSG_MOVE_SPLINE_ROOT, 0x2E19 }, + { Opcode.SMSG_MOVE_SPLINE_SET_FEATHER_FALL, 0x2E1F }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED, 0x2DEC }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED, 0x2DEB }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLYING, 0x2E29 }, + { Opcode.SMSG_MOVE_SPLINE_SET_HOVER, 0x2E21 }, + { Opcode.SMSG_MOVE_SPLINE_SET_LAND_WALK, 0x2E24 }, + { Opcode.SMSG_MOVE_SPLINE_SET_NORMAL_FALL, 0x2E20 }, + { Opcode.SMSG_MOVE_SPLINE_SET_PITCH_RATE, 0x2DEF }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED, 0x2DE8 }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_MODE, 0x2E27 }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_SPEED, 0x2DE7 }, + { Opcode.SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED, 0x2DEA }, + { Opcode.SMSG_MOVE_SPLINE_SET_SWIM_SPEED, 0x2DE9 }, + { Opcode.SMSG_MOVE_SPLINE_SET_TURN_RATE, 0x2DEE }, + { Opcode.SMSG_MOVE_SPLINE_SET_WALK_MODE, 0x2E28 }, + { Opcode.SMSG_MOVE_SPLINE_SET_WALK_SPEED, 0x2DED }, + { Opcode.SMSG_MOVE_SPLINE_SET_WATER_WALK, 0x2E23 }, + { Opcode.SMSG_MOVE_SPLINE_START_SWIM, 0x2E25 }, + { Opcode.SMSG_MOVE_SPLINE_STOP_SWIM, 0x2E26 }, + { Opcode.SMSG_MOVE_SPLINE_UNROOT, 0x2E1A }, + { Opcode.SMSG_MOVE_SPLINE_UNSET_FLYING, 0x2E2A }, + { Opcode.SMSG_MOVE_SPLINE_UNSET_HOVER, 0x2E22 }, + { Opcode.SMSG_MOVE_TELEPORT, 0x2E04 }, + { Opcode.SMSG_MOVE_UNROOT, 0x2DFA }, + { Opcode.SMSG_MOVE_UNSET_CAN_FLY, 0x2E06 }, + { Opcode.SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING, 0x2E08 }, + { Opcode.SMSG_MOVE_UNSET_HOVERING, 0x2E02 }, + { Opcode.SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES, 0x2E0A }, + { Opcode.SMSG_MOVE_UPDATE, 0x2DE0 }, + { Opcode.SMSG_MOVE_UPDATE_APPLY_INERTIA, 0x2E30 }, // NYI + { Opcode.SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE, 0x2DE4 }, + { Opcode.SMSG_MOVE_UPDATE_COLLISION_HEIGHT, 0x2DDF }, + { Opcode.SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, 0x2DDC }, + { Opcode.SMSG_MOVE_UPDATE_FLIGHT_SPEED, 0x2DDB }, + { Opcode.SMSG_MOVE_UPDATE_KNOCK_BACK, 0x2DE2 }, + { Opcode.SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE, 0x2DE3 }, + { Opcode.SMSG_MOVE_UPDATE_PITCH_RATE, 0x2DDE }, + { Opcode.SMSG_MOVE_UPDATE_REMOVE_INERTIA, 0x2E31 }, // NYI + { Opcode.SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, 0x2DE5 }, + { Opcode.SMSG_MOVE_UPDATE_RUN_BACK_SPEED, 0x2DD7 }, + { Opcode.SMSG_MOVE_UPDATE_RUN_SPEED, 0x2DD6 }, + { Opcode.SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, 0x2DDA }, + { Opcode.SMSG_MOVE_UPDATE_SWIM_SPEED, 0x2DD9 }, + { Opcode.SMSG_MOVE_UPDATE_TELEPORT, 0x2DE1 }, + { Opcode.SMSG_MOVE_UPDATE_TURN_RATE, 0x2DDD }, + { Opcode.SMSG_MOVE_UPDATE_WALK_SPEED, 0x2DD8 }, + { Opcode.SMSG_MULTIPLE_PACKETS, 0x3051 }, + { Opcode.SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, 0x25DE }, // NYI + { Opcode.SMSG_NEW_DATA_BUILD, 0x28AF }, // NYI + { Opcode.SMSG_NEW_TAXI_PATH, 0x2682 }, + { Opcode.SMSG_NEW_WORLD, 0x2596 }, + { Opcode.SMSG_NOTIFY_DEST_LOC_SPELL_CAST, 0x2C42 }, // NYI + { Opcode.SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, 0x26AE }, + { Opcode.SMSG_NOTIFY_MONEY, 0x259B }, // NYI + { Opcode.SMSG_NOTIFY_RECEIVED_MAIL, 0x263E }, + { Opcode.SMSG_NPC_INTERACTION_OPEN_RESULT, 0x288C }, + { Opcode.SMSG_OFFER_PETITION_ERROR, 0x26BA }, + { Opcode.SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, 0x26EA }, + { Opcode.SMSG_ON_MONSTER_MOVE, 0x2DD4 }, + { Opcode.SMSG_OPEN_CONTAINER, 0x2DA6 }, // NYI + { Opcode.SMSG_OPEN_LFG_DUNGEON_FINDER, 0x2A31 }, // NYI + { Opcode.SMSG_OVERRIDE_LIGHT, 0x26BF }, + { Opcode.SMSG_PAGE_TEXT, 0x271D }, + { Opcode.SMSG_PARTY_COMMAND_RESULT, 0x2799 }, + { Opcode.SMSG_PARTY_INVITE, 0x25BF }, + { Opcode.SMSG_PARTY_KILL_LOG, 0x275E }, + { Opcode.SMSG_PARTY_MEMBER_FULL_STATE, 0x275D }, + { Opcode.SMSG_PARTY_MEMBER_PARTIAL_STATE, 0x275C }, // NYI + { Opcode.SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE, 0x2879 }, // NYI + { Opcode.SMSG_PARTY_UPDATE, 0x25F6 }, + { Opcode.SMSG_PAUSE_MIRROR_TIMER, 0x2714 }, + { Opcode.SMSG_PENDING_RAID_LOCK, 0x26FC }, + { Opcode.SMSG_PETITION_ALREADY_SIGNED, 0x25A1 }, + { Opcode.SMSG_PETITION_RENAME_GUILD_RESPONSE, 0x29FB }, + { Opcode.SMSG_PETITION_SHOW_LIST, 0x26C3 }, + { Opcode.SMSG_PETITION_SHOW_SIGNATURES, 0x26C4 }, + { Opcode.SMSG_PETITION_SIGN_RESULTS, 0x2750 }, + { Opcode.SMSG_PET_ACTION_FEEDBACK, 0x274D }, + { Opcode.SMSG_PET_ACTION_SOUND, 0x26A4 }, + { Opcode.SMSG_PET_BATTLE_SLOT_UPDATES, 0x25EE }, + { Opcode.SMSG_PET_CAST_FAILED, 0x2C57 }, + { Opcode.SMSG_PET_CLEAR_SPELLS, 0x2C23 }, // NYI + { Opcode.SMSG_PET_DISMISS_SOUND, 0x26A5 }, // NYI + { Opcode.SMSG_PET_GOD_MODE, 0x267F }, // NYI + { Opcode.SMSG_PET_GUIDS, 0x2708 }, // NYI + { Opcode.SMSG_PET_LEARNED_SPELLS, 0x2C4E }, + { Opcode.SMSG_PET_MODE, 0x2589 }, + { Opcode.SMSG_PET_NAME_INVALID, 0x26C8 }, + { Opcode.SMSG_PET_NEWLY_TAMED, 0x2588 }, // NYI + { Opcode.SMSG_PET_SPELLS_MESSAGE, 0x2C24 }, + { Opcode.SMSG_PET_STABLE_RESULT, 0x2595 }, + { Opcode.SMSG_PET_TAME_FAILURE, 0x26B7 }, + { Opcode.SMSG_PET_UNLEARNED_SPELLS, 0x2C4F }, + { Opcode.SMSG_PHASE_SHIFT_CHANGE, 0x2578 }, + { Opcode.SMSG_PLAYED_TIME, 0x26D9 }, + { Opcode.SMSG_PLAYER_ACKNOWLEDGE_ARROW_CALLOUT, 0x3022 }, // NYI + { Opcode.SMSG_PLAYER_BATTLEFIELD_AUTO_QUEUE, 0x301C }, // NYI + { Opcode.SMSG_PLAYER_BONUS_ROLL_FAILED, 0x3016 }, // NYI + { Opcode.SMSG_PLAYER_BOUND, 0x2FF8 }, + { Opcode.SMSG_PLAYER_CHOICE_CLEAR, 0x2FFE }, // NYI + { Opcode.SMSG_PLAYER_CHOICE_DISPLAY_ERROR, 0x2FFD }, // NYI + { Opcode.SMSG_PLAYER_CONDITION_RESULT, 0x300A }, // NYI + { Opcode.SMSG_PLAYER_HIDE_ARROW_CALLOUT, 0x3021 }, // NYI + { Opcode.SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, 0x3009 }, + { Opcode.SMSG_PLAYER_SAVE_GUILD_EMBLEM, 0x29FA }, + { Opcode.SMSG_PLAYER_SHOW_ARROW_CALLOUT, 0x3020 }, // NYI + { Opcode.SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY, 0x301E }, // NYI + { Opcode.SMSG_PLAYER_SHOW_PARTY_POSE_UI, 0x301F }, // NYI + { Opcode.SMSG_PLAYER_SHOW_UI_EVENT_TOAST, 0x3019 }, // NYI + { Opcode.SMSG_PLAYER_SKINNED, 0x3006 }, // NYI + { Opcode.SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL, 0x300D }, // NYI + { Opcode.SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL, 0x300C }, // NYI + { Opcode.SMSG_PLAYER_WORLD_PVP_QUEUE, 0x301D }, // NYI + { Opcode.SMSG_PLAY_MUSIC, 0x2771 }, + { Opcode.SMSG_PLAY_OBJECT_SOUND, 0x2772 }, + { Opcode.SMSG_PLAY_ONE_SHOT_ANIM_KIT, 0x2735 }, + { Opcode.SMSG_PLAY_ORPHAN_SPELL_VISUAL, 0x2C46 }, + { Opcode.SMSG_PLAY_SCENE, 0x2638 }, + { Opcode.SMSG_PLAY_SOUND, 0x2770 }, + { Opcode.SMSG_PLAY_SPEAKERBOT_SOUND, 0x2773 }, + { Opcode.SMSG_PLAY_SPELL_VISUAL, 0x2C44 }, + { Opcode.SMSG_PLAY_SPELL_VISUAL_KIT, 0x2C48 }, + { Opcode.SMSG_PONG, 0x304E }, + { Opcode.SMSG_POWER_UPDATE, 0x26D6 }, + { Opcode.SMSG_PRELOAD_CHILD_MAP, 0x2579 }, // NYI + { Opcode.SMSG_PRELOAD_WORLD, 0x2597 }, // NYI + { Opcode.SMSG_PREPOPULATE_NAME_CACHE, 0x284C }, // NYI + { Opcode.SMSG_PRE_RESSURECT, 0x276F }, + { Opcode.SMSG_PRINT_NOTIFICATION, 0x25CC }, + { Opcode.SMSG_PROC_RESIST, 0x275F }, + { Opcode.SMSG_PROPOSE_LEVEL_GRANT, 0x26E1 }, // NYI + { Opcode.SMSG_PUSH_SPELL_TO_ACTION_BAR, 0x2C50 }, // NYI + { Opcode.SMSG_PVP_CREDIT, 0x294A }, + { Opcode.SMSG_PVP_LOG_DATA, 0x2934 }, + { Opcode.SMSG_PVP_MATCH_INITIALIZE, 0x2956 }, + { Opcode.SMSG_PVP_MATCH_START, 0x2953 }, + { Opcode.SMSG_PVP_OPTIONS_ENABLED, 0x2938 }, + { Opcode.SMSG_PVP_SEASON, 0x25C3 }, + { Opcode.SMSG_QUERY_ARENA_TEAM_RESPONSE, 0x2920 }, + { Opcode.SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, 0x291A }, + { Opcode.SMSG_QUERY_CREATURE_RESPONSE, 0x2914 }, + { Opcode.SMSG_QUERY_GAME_OBJECT_RESPONSE, 0x2915 }, + { Opcode.SMSG_QUERY_GUILD_INFO_RESPONSE, 0x29E6 }, + { Opcode.SMSG_QUERY_ITEM_TEXT_RESPONSE, 0x291E }, + { Opcode.SMSG_QUERY_NPC_TEXT_RESPONSE, 0x2916 }, + { Opcode.SMSG_QUERY_PAGE_TEXT_RESPONSE, 0x2917 }, + { Opcode.SMSG_QUERY_PETITION_RESPONSE, 0x291B }, + { Opcode.SMSG_QUERY_PET_NAME_RESPONSE, 0x2919 }, + { Opcode.SMSG_QUERY_PLAYER_NAMES_RESPONSE, 0x301B }, + { Opcode.SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE, 0x3002 }, // NYI + { Opcode.SMSG_QUERY_QUEST_INFO_RESPONSE, 0x2A96 }, + { Opcode.SMSG_QUERY_TIME_RESPONSE, 0x26E8 }, + { Opcode.SMSG_QUEST_COMPLETION_NPC_RESPONSE, 0x2A81 }, + { Opcode.SMSG_QUEST_CONFIRM_ACCEPT, 0x2A8F }, + { Opcode.SMSG_QUEST_FORCE_REMOVED, 0x2A9C }, + { Opcode.SMSG_QUEST_GIVER_INVALID_QUEST, 0x2A85 }, + { Opcode.SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, 0x2A94 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_COMPLETE, 0x2A83 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_DETAILS, 0x2A92 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_FAILED, 0x2A86 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE, 0x2A9A }, + { Opcode.SMSG_QUEST_GIVER_REQUEST_ITEMS, 0x2A93 }, + { Opcode.SMSG_QUEST_GIVER_STATUS, 0x2A9B }, + { Opcode.SMSG_QUEST_GIVER_STATUS_MULTIPLE, 0x2A91 }, + { Opcode.SMSG_QUEST_ITEM_USABILITY_RESPONSE, 0x2A82 }, // NYI + { Opcode.SMSG_QUEST_LOG_FULL, 0x2A87 }, + { Opcode.SMSG_QUEST_NON_LOG_UPDATE_COMPLETE, 0x2A88 }, + { Opcode.SMSG_QUEST_POI_QUERY_RESPONSE, 0x2A9D }, + { Opcode.SMSG_QUEST_POI_UPDATE_RESPONSE, 0x2A9F }, // NYI + { Opcode.SMSG_QUEST_PUSH_RESULT, 0x2A90 }, + { Opcode.SMSG_QUEST_SESSION_READY_CHECK, 0x285D }, // NYI + { Opcode.SMSG_QUEST_SESSION_READY_CHECK_RESPONSE, 0x285E }, // NYI + { Opcode.SMSG_QUEST_SESSION_RESULT, 0x285C }, // NYI + { Opcode.SMSG_QUEST_UPDATE_ADD_CREDIT, 0x2A8C }, + { Opcode.SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, 0x2A8D }, + { Opcode.SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, 0x2A8E }, + { Opcode.SMSG_QUEST_UPDATE_COMPLETE, 0x2A89 }, + { Opcode.SMSG_QUEST_UPDATE_FAILED, 0x2A8A }, // NYI + { Opcode.SMSG_QUEST_UPDATE_FAILED_TIMER, 0x2A8B }, + { Opcode.SMSG_QUEUE_SUMMARY_UPDATE, 0x2816 }, // NYI + { Opcode.SMSG_RAID_DIFFICULTY_SET, 0x27B0 }, + { Opcode.SMSG_RAID_GROUP_ONLY, 0x27B2 }, + { Opcode.SMSG_RAID_INSTANCE_MESSAGE, 0x2BB4 }, + { Opcode.SMSG_RAID_MARKERS_CHANGED, 0x25A2 }, + { Opcode.SMSG_RANDOM_ROLL, 0x2632 }, + { Opcode.SMSG_RATED_PVP_INFO, 0x2931 }, + { Opcode.SMSG_READY_CHECK_COMPLETED, 0x25FA }, + { Opcode.SMSG_READY_CHECK_RESPONSE, 0x25F9 }, + { Opcode.SMSG_READY_CHECK_STARTED, 0x25F8 }, + { Opcode.SMSG_READ_ITEM_RESULT_FAILED, 0x27AC }, + { Opcode.SMSG_READ_ITEM_RESULT_OK, 0x27A4 }, + { Opcode.SMSG_REALM_QUERY_RESPONSE, 0x2913 }, + { Opcode.SMSG_REATTACH_RESURRECT, 0x274F }, // NYI + { Opcode.SMSG_RECRUIT_A_FRIEND_FAILURE, 0x26C5 }, + { Opcode.SMSG_REFER_A_FRIEND_EXPIRED, 0x2727 }, // NYI + { Opcode.SMSG_REFORGE_RESULT, 0x2581 }, // NYI + { Opcode.SMSG_REFRESH_COMPONENT, 0x2653 }, // NYI + { Opcode.SMSG_REFRESH_SPELL_HISTORY, 0x2C2B }, + { Opcode.SMSG_REMOVE_ITEM_PASSIVE, 0x25AD }, + { Opcode.SMSG_REPORT_PVP_PLAYER_AFK_RESULT, 0x3001 }, + { Opcode.SMSG_REQUEST_CEMETERY_LIST_RESPONSE, 0x2590 }, + { Opcode.SMSG_REQUEST_PVP_REWARDS_RESPONSE, 0x2939 }, + { Opcode.SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE, 0x293A }, // NYI + { Opcode.SMSG_RESET_COMPRESSION_CONTEXT, 0x304F }, // NYI + { Opcode.SMSG_RESET_FAILED_NOTIFY, 0x26BB }, + { Opcode.SMSG_RESET_QUEST_POI, 0x2AA0 }, // NYI + { Opcode.SMSG_RESET_RANGED_COMBAT_TIMER, 0x2949 }, // NYI + { Opcode.SMSG_RESET_WEEKLY_CURRENCY, 0x2575 }, + { Opcode.SMSG_RESPEC_WIPE_CONFIRM, 0x2614 }, + { Opcode.SMSG_RESPOND_INSPECT_ACHIEVEMENTS, 0x2572 }, + { Opcode.SMSG_RESUME_CAST, 0x2C3A }, // NYI + { Opcode.SMSG_RESUME_CAST_BAR, 0x2C3D }, // NYI + { Opcode.SMSG_RESUME_COMMS, 0x304B }, + { Opcode.SMSG_RESUME_TOKEN, 0x25AB }, + { Opcode.SMSG_RESURRECT_REQUEST, 0x257E }, + { Opcode.SMSG_RESYNC_RUNES, 0x2C5E }, + { Opcode.SMSG_ROLE_CHANGED_INFORM, 0x258B }, + { Opcode.SMSG_ROLE_CHOSEN, 0x2A39 }, + { Opcode.SMSG_ROLE_POLL_INFORM, 0x258C }, + { Opcode.SMSG_RUNE_REGEN_DEBUG, 0x25B8 }, // NYI + { Opcode.SMSG_SCENARIO_COMPLETED, 0x27F0 }, + { Opcode.SMSG_SCENARIO_POIS, 0x2635 }, + { Opcode.SMSG_SCENARIO_PROGRESS_UPDATE, 0x262E }, + { Opcode.SMSG_SCENARIO_SHOW_CRITERIA, 0x2806 }, // NYI + { Opcode.SMSG_SCENARIO_STATE, 0x262D }, + { Opcode.SMSG_SCENARIO_UI_UPDATE, 0x2805 }, // NYI + { Opcode.SMSG_SCENARIO_VACATE, 0x27AD }, + { Opcode.SMSG_SCENE_OBJECT_EVENT, 0x25E4 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND, 0x25E9 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED, 0x25EA }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND, 0x25E6 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE, 0x25E5 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE, 0x25E8 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT, 0x25E7 }, // NYI + { Opcode.SMSG_SCRIPT_CAST, 0x2C55 }, // NYI + { Opcode.SMSG_SELL_RESPONSE, 0x26C9 }, + { Opcode.SMSG_SEND_ITEM_PASSIVES, 0x25AE }, + { Opcode.SMSG_SEND_KNOWN_SPELLS, 0x2C29 }, + { Opcode.SMSG_SEND_RAID_TARGET_UPDATE_ALL, 0x2630 }, + { Opcode.SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, 0x2631 }, + { Opcode.SMSG_SEND_SPELL_CHARGES, 0x2C2C }, + { Opcode.SMSG_SEND_SPELL_HISTORY, 0x2C2A }, + { Opcode.SMSG_SEND_UNLEARN_SPELLS, 0x2C2D }, + { Opcode.SMSG_SERVER_FIRST_ACHIEVEMENTS, 0x2650 }, // NYI + { Opcode.SMSG_SERVER_TIME, 0x2686 }, // NYI + { Opcode.SMSG_SERVER_TIME_OFFSET, 0x2718 }, + { Opcode.SMSG_SETUP_CURRENCY, 0x2573 }, + { Opcode.SMSG_SET_AI_ANIM_KIT, 0x2734 }, + { Opcode.SMSG_SET_ANIM_TIER, 0x2738 }, + { Opcode.SMSG_SET_CHR_UPGRADE_TIER, 0x25E1 }, // NYI + { Opcode.SMSG_SET_CURRENCY, 0x2574 }, + { Opcode.SMSG_SET_DF_FAST_LAUNCH_RESULT, 0x2A2E }, // NYI + { Opcode.SMSG_SET_DUNGEON_DIFFICULTY, 0x26A8 }, + { Opcode.SMSG_SET_FACTION_AT_WAR, 0x2704 }, // NYI + { Opcode.SMSG_SET_FACTION_NOT_VISIBLE, 0x272F }, + { Opcode.SMSG_SET_FACTION_STANDING, 0x2730 }, + { Opcode.SMSG_SET_FACTION_VISIBLE, 0x272E }, + { Opcode.SMSG_SET_FLAT_SPELL_MODIFIER, 0x2C35 }, + { Opcode.SMSG_SET_FORCED_REACTIONS, 0x2721 }, + { Opcode.SMSG_SET_FORGE_MASTER, 0x2591 }, + { Opcode.SMSG_SET_ITEM_PURCHASE_DATA, 0x259D }, + { Opcode.SMSG_SET_LOOT_METHOD_FAILED, 0x27D4 }, // NYI + { Opcode.SMSG_SET_MAX_WEEKLY_QUANTITY, 0x25A0 }, // NYI + { Opcode.SMSG_SET_MELEE_ANIM_KIT, 0x2737 }, + { Opcode.SMSG_SET_MOVEMENT_ANIM_KIT, 0x2736 }, + { Opcode.SMSG_SET_PCT_SPELL_MODIFIER, 0x2C36 }, + { Opcode.SMSG_SET_PET_SPECIALIZATION, 0x2627 }, + { Opcode.SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, 0x3003 }, + { Opcode.SMSG_SET_PLAY_HOVER_ANIM, 0x25BC }, + { Opcode.SMSG_SET_PROFICIENCY, 0x2739 }, + { Opcode.SMSG_SET_SPELL_CHARGES, 0x2C28 }, + { Opcode.SMSG_SET_TIME_ZONE_INFORMATION, 0x267B }, + { Opcode.SMSG_SET_VEHICLE_REC_ID, 0x26FB }, + { Opcode.SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI, 0x25DD }, // NYI + { Opcode.SMSG_SHOW_QUEST_COMPLETION_TEXT, 0x2A95 }, // NYI + { Opcode.SMSG_SHOW_TAXI_NODES, 0x26D1 }, + { Opcode.SMSG_SHOW_TRADE_SKILL_RESPONSE, 0x2778 }, // NYI + { Opcode.SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE, 0x2895 }, + { Opcode.SMSG_SOCKET_GEMS_FAILURE, 0x272C }, // NYI + { Opcode.SMSG_SOCKET_GEMS_SUCCESS, 0x272B }, + { Opcode.SMSG_SOR_START_EXPERIENCE_INCOMPLETE, 0x25DF }, // NYI + { Opcode.SMSG_SPECIAL_MOUNT_ANIM, 0x26A3 }, + { Opcode.SMSG_SPEC_INVOLUNTARILY_CHANGED, 0x271C }, // NYI + { Opcode.SMSG_SPELL_ABSORB_LOG, 0x2C1C }, + { Opcode.SMSG_SPELL_CATEGORY_COOLDOWN, 0x2C16 }, // NYI + { Opcode.SMSG_SPELL_CHANNEL_START, 0x2C33 }, + { Opcode.SMSG_SPELL_CHANNEL_UPDATE, 0x2C34 }, + { Opcode.SMSG_SPELL_COOLDOWN, 0x2C15 }, + { Opcode.SMSG_SPELL_DAMAGE_SHIELD, 0x2C30 }, + { Opcode.SMSG_SPELL_DELAYED, 0x2C3E }, + { Opcode.SMSG_SPELL_DISPELL_LOG, 0x2C17 }, + { Opcode.SMSG_SPELL_ENERGIZE_LOG, 0x2C19 }, + { Opcode.SMSG_SPELL_EXECUTE_LOG, 0x2C3F }, + { Opcode.SMSG_SPELL_FAILED_OTHER, 0x2C54 }, + { Opcode.SMSG_SPELL_FAILURE, 0x2C52 }, + { Opcode.SMSG_SPELL_FAILURE_MESSAGE, 0x2C59 }, // NYI + { Opcode.SMSG_SPELL_GO, 0x2C38 }, + { Opcode.SMSG_SPELL_HEAL_ABSORB_LOG, 0x2C1B }, + { Opcode.SMSG_SPELL_HEAL_LOG, 0x2C1A }, + { Opcode.SMSG_SPELL_INSTAKILL_LOG, 0x2C32 }, + { Opcode.SMSG_SPELL_INTERRUPT_LOG, 0x2C1D }, + { Opcode.SMSG_SPELL_MISS_LOG, 0x2C40 }, + { Opcode.SMSG_SPELL_NON_MELEE_DAMAGE_LOG, 0x2C31 }, + { Opcode.SMSG_SPELL_OR_DAMAGE_IMMUNE, 0x2C2E }, + { Opcode.SMSG_SPELL_PERIODIC_AURA_LOG, 0x2C18 }, + { Opcode.SMSG_SPELL_PREPARE, 0x2C37 }, + { Opcode.SMSG_SPELL_START, 0x2C39 }, + { Opcode.SMSG_SPELL_VISUAL_LOAD_SCREEN, 0x25CE }, + { Opcode.SMSG_STAND_STATE_UPDATE, 0x2720 }, + { Opcode.SMSG_START_ELAPSED_TIMER, 0x2606 }, // NYI + { Opcode.SMSG_START_ELAPSED_TIMERS, 0x2608 }, // NYI + { Opcode.SMSG_START_LIGHTNING_STORM, 0x26AB }, + { Opcode.SMSG_START_LOOT_ROLL, 0x261F }, + { Opcode.SMSG_START_MIRROR_TIMER, 0x2713 }, + { Opcode.SMSG_START_TIMER, 0x25A7 }, + { Opcode.SMSG_STOP_ELAPSED_TIMER, 0x2607 }, // NYI + { Opcode.SMSG_STOP_MIRROR_TIMER, 0x2715 }, + { Opcode.SMSG_STOP_SPEAKERBOT_SOUND, 0x2774 }, + { Opcode.SMSG_STREAMING_MOVIES, 0x25A6 }, // NYI + { Opcode.SMSG_SUGGEST_INVITE_INFORM, 0x279A }, // NYI + { Opcode.SMSG_SUMMON_CANCEL, 0x26B4 }, // NYI + { Opcode.SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, 0x258E }, // NYI + { Opcode.SMSG_SUMMON_REQUEST, 0x2725 }, + { Opcode.SMSG_SUPERCEDED_SPELLS, 0x2C4B }, + { Opcode.SMSG_SUSPEND_COMMS, 0x304A }, + { Opcode.SMSG_SUSPEND_TOKEN, 0x25AA }, + { Opcode.SMSG_SYNC_WOW_ENTITLEMENTS, 0x286D }, // NYI + { Opcode.SMSG_TALENTS_INVOLUNTARILY_RESET, 0x271B }, // NYI + { Opcode.SMSG_TALENT_GROUP_ROLE_CHANGED, 0x258D }, // NYI + { Opcode.SMSG_TAXI_NODE_STATUS, 0x2680 }, + { Opcode.SMSG_TEXT_EMOTE, 0x267E }, + { Opcode.SMSG_THREAT_CLEAR, 0x26E0 }, + { Opcode.SMSG_THREAT_REMOVE, 0x26DF }, + { Opcode.SMSG_THREAT_UPDATE, 0x26DE }, + { Opcode.SMSG_TIME_ADJUSTMENT, 0x2DD3 }, // NYI + { Opcode.SMSG_TIME_SYNC_REQUEST, 0x2DD2 }, + { Opcode.SMSG_TITLE_EARNED, 0x26DB }, + { Opcode.SMSG_TITLE_LOST, 0x26DC }, + { Opcode.SMSG_TOTEM_CREATED, 0x26CC }, + { Opcode.SMSG_TOTEM_MOVED, 0x26CE }, + { Opcode.SMSG_TRADE_STATUS, 0x2583 }, + { Opcode.SMSG_TRADE_UPDATED, 0x2582 }, + { Opcode.SMSG_TRAINER_BUY_FAILED, 0x26E4 }, + { Opcode.SMSG_TRAINER_LIST, 0x26E3 }, + { Opcode.SMSG_TRAIT_CONFIG_COMMIT_FAILED, 0x25D3 }, + { Opcode.SMSG_TRANSFER_ABORTED, 0x2707 }, + { Opcode.SMSG_TRANSFER_PENDING, 0x25CF }, + { Opcode.SMSG_TREASURE_PICKER_RESPONSE, 0x291F }, // NYI + { Opcode.SMSG_TRIGGER_CINEMATIC, 0x27CD }, + { Opcode.SMSG_TRIGGER_MOVIE, 0x26CF }, + { Opcode.SMSG_TURN_IN_PETITION_RESULT, 0x2752 }, + { Opcode.SMSG_TUTORIAL_FLAGS, 0x27C1 }, + { Opcode.SMSG_UNDELETE_CHARACTER_RESPONSE, 0x27CF }, + { Opcode.SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, 0x27D0 }, + { Opcode.SMSG_UNLEARNED_SPELLS, 0x2C4D }, + { Opcode.SMSG_UNLOAD_CHILD_MAP, 0x257A }, // NYI + { Opcode.SMSG_UPDATE_AADC_STATUS_RESPONSE, 0x2888 }, + { Opcode.SMSG_UPDATE_ACCOUNT_DATA, 0x270D }, + { Opcode.SMSG_UPDATE_ACTION_BUTTONS, 0x25E2 }, + { Opcode.SMSG_UPDATE_BNET_SESSION_KEY, 0x2827 }, + { Opcode.SMSG_UPDATE_CELESTIAL_BODY, 0x2823 }, // NYI + { Opcode.SMSG_UPDATE_CHARACTER_FLAGS, 0x27C7 }, // NYI + { Opcode.SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN, 0x276E }, // NYI + { Opcode.SMSG_UPDATE_COOLDOWN, 0x276D }, // NYI + { Opcode.SMSG_UPDATE_EXPANSION_LEVEL, 0x2648 }, // NYI + { Opcode.SMSG_UPDATE_GAME_TIME_STATE, 0x282A }, // NYI + { Opcode.SMSG_UPDATE_INSTANCE_OWNERSHIP, 0x26AD }, + { Opcode.SMSG_UPDATE_LAST_INSTANCE, 0x268C }, + { Opcode.SMSG_UPDATE_OBJECT, 0x27CE }, + { Opcode.SMSG_UPDATE_PRIMARY_SPEC, 0x25DA }, // NYI + //{ Opcode.SMSG_UPDATE_TALENT_DATA, 0x25D8 }, + { Opcode.SMSG_UPDATE_TALENT_DATA, 0x25D9 }, // RETAIL + { Opcode.SMSG_UPDATE_WORLD_STATE, 0x274C }, + { Opcode.SMSG_USERLIST_ADD, 0x2BB9 }, + { Opcode.SMSG_USERLIST_REMOVE, 0x2BBA }, + { Opcode.SMSG_USERLIST_UPDATE, 0x2BBB }, + { Opcode.SMSG_USE_EQUIPMENT_SET_RESULT, 0x2753 }, + { Opcode.SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE, 0x281E }, + { Opcode.SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE, 0x281C }, + { Opcode.SMSG_VAS_GET_SERVICE_STATUS_RESPONSE, 0x281B }, + { Opcode.SMSG_VAS_PURCHASE_COMPLETE, 0x27F6 }, + { Opcode.SMSG_VAS_PURCHASE_STATE_UPDATE, 0x27F5 }, + { Opcode.SMSG_VENDOR_INVENTORY, 0x25BA }, + { Opcode.SMSG_VIGNETTE_UPDATE, 0x3008 }, + { Opcode.SMSG_VOICE_CHANNEL_INFO_RESPONSE, 0x2822 }, // NYI + { Opcode.SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE, 0x2884 }, // NYI + { Opcode.SMSG_VOICE_LOGIN_RESPONSE, 0x2821 }, // NYI + { Opcode.SMSG_VOID_ITEM_SWAP_RESPONSE, 0x2DA4 }, + { Opcode.SMSG_VOID_STORAGE_CONTENTS, 0x2DA1 }, + { Opcode.SMSG_VOID_STORAGE_FAILED, 0x2DA0 }, + { Opcode.SMSG_VOID_STORAGE_TRANSFER_CHANGES, 0x2DA2 }, + { Opcode.SMSG_VOID_TRANSFER_RESULT, 0x2DA3 }, + { Opcode.SMSG_WAIT_QUEUE_FINISH, 0x256F }, + { Opcode.SMSG_WAIT_QUEUE_UPDATE, 0x256E }, + { Opcode.SMSG_WARDEN3_DATA, 0x2577 }, + { Opcode.SMSG_WARDEN3_DISABLED, 0x2825 }, // NYI + { Opcode.SMSG_WARDEN3_ENABLED, 0x2824 }, + { Opcode.SMSG_WARFRONT_COMPLETE, 0x2762 }, // NYI + { Opcode.SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE, 0x2937 }, // NYI + { Opcode.SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, 0x2935 }, // NYI + { Opcode.SMSG_WEATHER, 0x26AA }, + { Opcode.SMSG_WHO, 0x2BAE }, + { Opcode.SMSG_WHO_IS, 0x26A9 }, + { Opcode.SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME, 0x2829 }, // NYI + { Opcode.SMSG_WORLD_QUEST_UPDATE_RESPONSE, 0x300F }, + { Opcode.SMSG_WORLD_SERVER_INFO, 0x25AF }, + { Opcode.SMSG_WOW_ENTITLEMENT_NOTIFICATION, 0x286E }, // NYI + { Opcode.SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END, 0x2896 }, // NYI + { Opcode.SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED, 0x2897 }, // NYI + { Opcode.SMSG_WOW_LABS_PARTY_ERROR, 0x289E }, // NYI + { Opcode.SMSG_WOW_LABS_SET_PREDICTION_CIRCLE, 0x2898 }, // NYI + { Opcode.SMSG_XP_GAIN_ABORTED, 0x25CB }, // NYI + { Opcode.SMSG_XP_GAIN_ENABLED, 0x27B1 }, // NYI + { Opcode.SMSG_ZONE_UNDER_ATTACK, 0x2BB5 }, + }; + + private static readonly BiDictionary MiscOpcodes = new(); + } +} diff --git a/WowPacketParser/Enums/Version/V1_15_4_56738/Opcodes.cs b/WowPacketParser/Enums/Version/V1_15_4_56738/Opcodes.cs new file mode 100644 index 0000000000..62eae9dba1 --- /dev/null +++ b/WowPacketParser/Enums/Version/V1_15_4_56738/Opcodes.cs @@ -0,0 +1,1684 @@ +using WowPacketParser.Misc; + +namespace WowPacketParser.Enums.Version.V1_15_4_56738 +{ + public static class Opcodes_1_15_4 + { + public static BiDictionary Opcodes(Direction direction) + { + switch (direction) + { + case Direction.ClientToServer: + return ClientOpcodes; + case Direction.ServerToClient: + return ServerOpcodes; + default: + return MiscOpcodes; + } + } + + private static readonly BiDictionary ClientOpcodes = new() + { + { Opcode.CMSG_ACCEPT_GUILD_INVITE, 0x35FD }, + { Opcode.CMSG_ACCEPT_SOCIAL_CONTRACT, 0x3749 }, // NYI + { Opcode.CMSG_ACCEPT_TRADE, 0x315B }, + { Opcode.CMSG_ACCEPT_WARGAME_INVITE, 0x35E0 }, // NYI + { Opcode.CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED, 0x3739 }, // NYI + { Opcode.CMSG_ACTIVATE_TAXI, 0x34AB }, + { Opcode.CMSG_ADDON_LIST, 0x35D8 }, + { Opcode.CMSG_ADD_BATTLENET_FRIEND, 0x3658 }, // NYI + { Opcode.CMSG_ADD_FRIEND, 0x36D4 }, + { Opcode.CMSG_ADD_IGNORE, 0x36D8 }, + { Opcode.CMSG_ADD_TOY, 0x329B }, + { Opcode.CMSG_ADVENTURE_MAP_START_QUEST, 0x32DA }, + { Opcode.CMSG_ALTER_APPEARANCE, 0x34F5 }, + { Opcode.CMSG_AREA_SPIRIT_HEALER_QUERY, 0x34B0 }, + { Opcode.CMSG_AREA_SPIRIT_HEALER_QUEUE, 0x34B1 }, + { Opcode.CMSG_AREA_TRIGGER, 0x31D8 }, + { Opcode.CMSG_ARENA_TEAM_ACCEPT, 0x36B5 }, // NYI + { Opcode.CMSG_ARENA_TEAM_DECLINE, 0x36B6 }, // NYI + { Opcode.CMSG_ARENA_TEAM_DISBAND, 0x36B9 }, // NYI + { Opcode.CMSG_ARENA_TEAM_LEADER, 0x36BA }, // NYI + { Opcode.CMSG_ARENA_TEAM_LEAVE, 0x36B7 }, // NYI + { Opcode.CMSG_ARENA_TEAM_REMOVE, 0x36B8 }, // NYI + { Opcode.CMSG_ARENA_TEAM_ROSTER, 0x36B4 }, + { Opcode.CMSG_ASSIGN_EQUIPMENT_SET_SPEC, 0x3209 }, // NYI + { Opcode.CMSG_ATTACK_STOP, 0x3258 }, + { Opcode.CMSG_ATTACK_SWING, 0x3257 }, + { Opcode.CMSG_AUCTIONABLE_TOKEN_SELL, 0x36EA }, // NYI + { Opcode.CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE, 0x36EB }, // NYI + { Opcode.CMSG_AUCTION_HELLO_REQUEST, 0x34CA }, + { Opcode.CMSG_AUCTION_LIST_BIDDER_ITEMS, 0x34D0 }, + { Opcode.CMSG_AUCTION_LIST_ITEMS, 0x34CD }, + { Opcode.CMSG_AUCTION_LIST_OWNER_ITEMS, 0x34CF }, + { Opcode.CMSG_AUCTION_LIST_PENDING_SALES, 0x34D2 }, + { Opcode.CMSG_AUCTION_PLACE_BID, 0x34D1 }, + { Opcode.CMSG_AUCTION_REMOVE_ITEM, 0x34CC }, + { Opcode.CMSG_AUCTION_REPLICATE_ITEMS, 0x34CE }, + { Opcode.CMSG_AUCTION_SELL_ITEM, 0x34CB }, + { Opcode.CMSG_AUTH_CONTINUED_SESSION, 0x377A }, + { Opcode.CMSG_AUTH_SESSION, 0x3779 }, + { Opcode.CMSG_AUTOBANK_ITEM, 0x3997 }, + { Opcode.CMSG_AUTOSTORE_BANK_ITEM, 0x3996 }, + { Opcode.CMSG_AUTO_EQUIP_ITEM, 0x3998 }, + { Opcode.CMSG_AUTO_EQUIP_ITEM_SLOT, 0x399D }, + { Opcode.CMSG_AUTO_GUILD_BANK_ITEM, 0x34B6 }, + { Opcode.CMSG_AUTO_STORE_BAG_ITEM, 0x3999 }, + { Opcode.CMSG_AUTO_STORE_GUILD_BANK_ITEM, 0x34BF }, + { Opcode.CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER, 0x32F3 }, // NYI + { Opcode.CMSG_AZERITE_EMPOWERED_ITEM_VIEWED, 0x32E1 }, // NYI + { Opcode.CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE, 0x32F5 }, // NYI + { Opcode.CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE, 0x32F4 }, // NYI + { Opcode.CMSG_BANKER_ACTIVATE, 0x34B3 }, + { Opcode.CMSG_BATTLEFIELD_LEAVE, 0x3177 }, + { Opcode.CMSG_BATTLEFIELD_LIST, 0x3183 }, + { Opcode.CMSG_BATTLEFIELD_PORT, 0x3527 }, + { Opcode.CMSG_BATTLEMASTER_HELLO, 0x32B3 }, + { Opcode.CMSG_BATTLEMASTER_JOIN, 0x3520 }, + { Opcode.CMSG_BATTLEMASTER_JOIN_ARENA, 0x3521 }, + { Opcode.CMSG_BATTLEMASTER_JOIN_SKIRMISH, 0x3522 }, + { Opcode.CMSG_BATTLENET_CHALLENGE_RESPONSE, 0x36D7 }, // NYI + { Opcode.CMSG_BATTLENET_REQUEST, 0x36F9 }, + { Opcode.CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE, 0x36D1 }, + { Opcode.CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT, 0x3717 }, + { Opcode.CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE, 0x36D0 }, + { Opcode.CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET, 0x36C7 }, + { Opcode.CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS, 0x373E }, + { Opcode.CMSG_BATTLE_PAY_GET_PRODUCT_LIST, 0x36C0 }, + { Opcode.CMSG_BATTLE_PAY_GET_PURCHASE_LIST, 0x36C1 }, + { Opcode.CMSG_BATTLE_PAY_OPEN_CHECKOUT, 0x3710 }, + { Opcode.CMSG_BATTLE_PAY_REQUEST_PRICE_INFO, 0x370C }, + { Opcode.CMSG_BATTLE_PAY_START_PURCHASE, 0x36CF }, + { Opcode.CMSG_BATTLE_PAY_START_VAS_PURCHASE, 0x36F6 }, + { Opcode.CMSG_BATTLE_PET_CLEAR_FANFARE, 0x3126 }, + { Opcode.CMSG_BATTLE_PET_REQUEST_JOURNAL, 0x3621 }, + { Opcode.CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK, 0x3620 }, + { Opcode.CMSG_BATTLE_PET_SET_BATTLE_SLOT, 0x362A }, + { Opcode.CMSG_BATTLE_PET_SET_FLAGS, 0x362D }, + { Opcode.CMSG_BATTLE_PET_SUMMON, 0x3626 }, + { Opcode.CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY, 0x31E2 }, // NYI + { Opcode.CMSG_BATTLE_PET_UPDATE_NOTIFY, 0x31E1 }, + { Opcode.CMSG_BEGIN_TRADE, 0x3158 }, + { Opcode.CMSG_BINDER_ACTIVATE, 0x34B2 }, + { Opcode.CMSG_BLACK_MARKET_OPEN, 0x352D }, + { Opcode.CMSG_BUG_REPORT, 0x3683 }, + { Opcode.CMSG_BUSY_TRADE, 0x3159 }, + { Opcode.CMSG_BUY_BACK_ITEM, 0x34A4 }, + { Opcode.CMSG_BUY_BANK_SLOT, 0x34B4 }, + { Opcode.CMSG_BUY_ITEM, 0x34A3 }, + { Opcode.CMSG_BUY_STABLE_SLOT, 0x316C }, // NYI + { Opcode.CMSG_CALENDAR_ADD_EVENT, 0x367B }, + { Opcode.CMSG_CALENDAR_COMMUNITY_INVITE, 0x366F }, + { Opcode.CMSG_CALENDAR_COMPLAIN, 0x3677 }, + { Opcode.CMSG_CALENDAR_COPY_EVENT, 0x3676 }, + { Opcode.CMSG_CALENDAR_EVENT_SIGN_UP, 0x3679 }, + { Opcode.CMSG_CALENDAR_GET, 0x366D }, + { Opcode.CMSG_CALENDAR_GET_EVENT, 0x366E }, + { Opcode.CMSG_CALENDAR_GET_NUM_PENDING, 0x3678 }, + { Opcode.CMSG_CALENDAR_INVITE, 0x3670 }, + { Opcode.CMSG_CALENDAR_MODERATOR_STATUS, 0x3674 }, + { Opcode.CMSG_CALENDAR_REMOVE_EVENT, 0x3675 }, + { Opcode.CMSG_CALENDAR_REMOVE_INVITE, 0x3671 }, + { Opcode.CMSG_CALENDAR_RSVP, 0x3672 }, + { Opcode.CMSG_CALENDAR_STATUS, 0x3673 }, + { Opcode.CMSG_CALENDAR_UPDATE_EVENT, 0x367C }, + { Opcode.CMSG_CANCEL_AURA, 0x31B1 }, + { Opcode.CMSG_CANCEL_AUTO_REPEAT_SPELL, 0x34E7 }, + { Opcode.CMSG_CANCEL_CAST, 0x32A1 }, + { Opcode.CMSG_CANCEL_CHANNELLING, 0x326C }, + { Opcode.CMSG_CANCEL_GROWTH_AURA, 0x3271 }, + { Opcode.CMSG_CANCEL_MOUNT_AURA, 0x3281 }, + { Opcode.CMSG_CANCEL_QUEUED_SPELL, 0x3184 }, + { Opcode.CMSG_CANCEL_TEMP_ENCHANTMENT, 0x34F2 }, + { Opcode.CMSG_CANCEL_TRADE, 0x315D }, + { Opcode.CMSG_CAN_DUEL, 0x3660 }, + { Opcode.CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE, 0x370B }, // NYI + { Opcode.CMSG_CAST_SPELL, 0x329E }, + { Opcode.CMSG_CHANGE_REALM_TICKET, 0x36FD }, + { Opcode.CMSG_CHANGE_SUB_GROUP, 0x364B }, + { Opcode.CMSG_CHARACTER_CHECK_UPGRADE, 0x36CA }, // NYI + { Opcode.CMSG_CHARACTER_RENAME_REQUEST, 0x36C5 }, + { Opcode.CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST, 0x36C8 }, // NYI + { Opcode.CMSG_CHARACTER_UPGRADE_START, 0x36C9 }, // NYI + { Opcode.CMSG_CHAR_CREATE_FINALIZE_REINCARNATION, 0x375B }, // NYI + { Opcode.CMSG_CHAR_CUSTOMIZE, 0x3688 }, + { Opcode.CMSG_CHAR_DELETE, 0x3699 }, + { Opcode.CMSG_CHAR_RACE_OR_FACTION_CHANGE, 0x368E }, + { Opcode.CMSG_CHAT_ADDON_MESSAGE, 0x3802 }, + { Opcode.CMSG_CHAT_ADDON_MESSAGE_TARGETED, 0x3803 }, + { Opcode.CMSG_CHAT_CHANNEL_ANNOUNCEMENTS, 0x37F7 }, + { Opcode.CMSG_CHAT_CHANNEL_BAN, 0x37F5 }, + { Opcode.CMSG_CHAT_CHANNEL_DECLINE_INVITE, 0x37FA }, + { Opcode.CMSG_CHAT_CHANNEL_DISPLAY_LIST, 0x37EA }, + { Opcode.CMSG_CHAT_CHANNEL_INVITE, 0x37F3 }, + { Opcode.CMSG_CHAT_CHANNEL_KICK, 0x37F4 }, + { Opcode.CMSG_CHAT_CHANNEL_LIST, 0x37E9 }, + { Opcode.CMSG_CHAT_CHANNEL_MODERATOR, 0x37EF }, + { Opcode.CMSG_CHAT_CHANNEL_OWNER, 0x37ED }, + { Opcode.CMSG_CHAT_CHANNEL_PASSWORD, 0x37EB }, + { Opcode.CMSG_CHAT_CHANNEL_SET_OWNER, 0x37EC }, + { Opcode.CMSG_CHAT_CHANNEL_SILENCE_ALL, 0x37F8 }, + { Opcode.CMSG_CHAT_CHANNEL_UNBAN, 0x37F6 }, + { Opcode.CMSG_CHAT_CHANNEL_UNMODERATOR, 0x37F0 }, + { Opcode.CMSG_CHAT_CHANNEL_UNSILENCE_ALL, 0x37F9 }, + { Opcode.CMSG_CHAT_JOIN_CHANNEL, 0x37DC }, + { Opcode.CMSG_CHAT_LEAVE_CHANNEL, 0x37DD }, + { Opcode.CMSG_CHAT_MESSAGE_AFK, 0x37E7 }, + { Opcode.CMSG_CHAT_MESSAGE_CHANNEL, 0x37E3 }, + { Opcode.CMSG_CHAT_MESSAGE_DND, 0x37E8 }, + { Opcode.CMSG_CHAT_MESSAGE_EMOTE, 0x37FC }, + { Opcode.CMSG_CHAT_MESSAGE_GUILD, 0x37E5 }, + { Opcode.CMSG_CHAT_MESSAGE_INSTANCE_CHAT, 0x3800 }, + { Opcode.CMSG_CHAT_MESSAGE_OFFICER, 0x37E6 }, + { Opcode.CMSG_CHAT_MESSAGE_PARTY, 0x37FE }, + { Opcode.CMSG_CHAT_MESSAGE_RAID, 0x37FF }, + { Opcode.CMSG_CHAT_MESSAGE_RAID_WARNING, 0x3801 }, + { Opcode.CMSG_CHAT_MESSAGE_SAY, 0x37FB }, + { Opcode.CMSG_CHAT_MESSAGE_WHISPER, 0x37E4 }, + { Opcode.CMSG_CHAT_MESSAGE_YELL, 0x37FD }, + { Opcode.CMSG_CHAT_REGISTER_ADDON_PREFIXES, 0x37E1 }, + { Opcode.CMSG_CHAT_REPORT_FILTERED, 0x37E0 }, // NYI + { Opcode.CMSG_CHAT_REPORT_IGNORED, 0x37DF }, + { Opcode.CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, 0x37E2 }, + { Opcode.CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID, 0x3249 }, + { Opcode.CMSG_CLEAR_NEW_APPEARANCE, 0x3129 }, // NYI + { Opcode.CMSG_CLEAR_RAID_MARKER, 0x31A9 }, + { Opcode.CMSG_CLEAR_TRADE_ITEM, 0x315F }, + { Opcode.CMSG_CLIENT_PORT_GRAVEYARD, 0x3529 }, + { Opcode.CMSG_CLOSE_INTERACTION, 0x3493 }, + { Opcode.CMSG_CLOSE_QUEST_CHOICE, 0x32A4 }, // NYI + { Opcode.CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION, 0x330F }, // NYI + { Opcode.CMSG_CLUB_FINDER_APPLICATION_RESPONSE, 0x3722 }, // NYI + { Opcode.CMSG_CLUB_FINDER_GET_APPLICANTS_LIST, 0x3720 }, // NYI + { Opcode.CMSG_CLUB_FINDER_POST, 0x371D }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA, 0x3724 }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST, 0x371E }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB, 0x371F }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST, 0x3723 }, // NYI + { Opcode.CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS, 0x3725 }, // NYI + { Opcode.CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT, 0x3721 }, // NYI + { Opcode.CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST, 0x3740 }, // NYI + { Opcode.CMSG_CLUB_PRESENCE_SUBSCRIBE, 0x36FB }, // NYI + { Opcode.CMSG_COLLECTION_ITEM_SET_FAVORITE, 0x3630 }, + { Opcode.CMSG_COMMENTATOR_ENABLE, 0x35F0 }, // NYI + { Opcode.CMSG_COMMENTATOR_ENTER_INSTANCE, 0x35F4 }, // NYI + { Opcode.CMSG_COMMENTATOR_EXIT_INSTANCE, 0x35F5 }, // NYI + { Opcode.CMSG_COMMENTATOR_GET_MAP_INFO, 0x35F1 }, // NYI + { Opcode.CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS, 0x35F3 }, // NYI + { Opcode.CMSG_COMMENTATOR_GET_PLAYER_INFO, 0x35F2 }, // NYI + { Opcode.CMSG_COMMENTATOR_START_WARGAME, 0x35EF }, // NYI + { Opcode.CMSG_COMMERCE_TOKEN_GET_COUNT, 0x36E8 }, // NYI + { Opcode.CMSG_COMMERCE_TOKEN_GET_LOG, 0x36F2 }, + { Opcode.CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE, 0x36E9 }, + { Opcode.CMSG_COMPLAINT, 0x366A }, + { Opcode.CMSG_COMPLETE_CINEMATIC, 0x3547 }, + { Opcode.CMSG_COMPLETE_MOVIE, 0x34DD }, + { Opcode.CMSG_CONFIRM_BARBERS_CHOICE, 0x3210 }, + { Opcode.CMSG_CONFIRM_RESPEC_WIPE, 0x320F }, + { Opcode.CMSG_CONNECT_TO_FAILED, 0x35D4 }, + { Opcode.CMSG_CONSUMABLE_TOKEN_BUY, 0x36ED }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE, 0x36EE }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY, 0x36EC }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_REDEEM, 0x36F0 }, // NYI + { Opcode.CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION, 0x36F1 }, // NYI + { Opcode.CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST, 0x355E }, // NYI + { Opcode.CMSG_CONVERSATION_LINE_STARTED, 0x3548 }, + { Opcode.CMSG_CONVERT_RAID, 0x364D }, + { Opcode.CMSG_CREATE_CHARACTER, 0x3641 }, + { Opcode.CMSG_DB_QUERY_BULK, 0x35E4 }, + { Opcode.CMSG_DECLINE_GUILD_INVITES, 0x351D }, + { Opcode.CMSG_DECLINE_PETITION, 0x3536 }, + { Opcode.CMSG_DELETE_EQUIPMENT_SET, 0x350A }, + { Opcode.CMSG_DEL_FRIEND, 0x36D5 }, + { Opcode.CMSG_DEL_IGNORE, 0x36D9 }, + { Opcode.CMSG_DESTROY_ITEM, 0x3295 }, + { Opcode.CMSG_DF_BOOT_PLAYER_VOTE, 0x3617 }, + { Opcode.CMSG_DF_GET_JOIN_STATUS, 0x3615 }, + { Opcode.CMSG_DF_GET_SYSTEM_INFO, 0x3614 }, + { Opcode.CMSG_DF_JOIN, 0x360A }, + { Opcode.CMSG_DF_LEAVE, 0x3613 }, + { Opcode.CMSG_DF_PROPOSAL_RESPONSE, 0x3608 }, + { Opcode.CMSG_DF_READY_CHECK_RESPONSE, 0x361B }, // NYI + { Opcode.CMSG_DF_SET_ROLES, 0x3616 }, + { Opcode.CMSG_DF_TELEPORT, 0x3618 }, + { Opcode.CMSG_DISCARDED_TIME_SYNC_ACKS, 0x3A41 }, // NYI + { Opcode.CMSG_DISMISS_CRITTER, 0x34F9 }, + { Opcode.CMSG_DO_COUNTDOWN, 0x371C }, // NYI + { Opcode.CMSG_DO_READY_CHECK, 0x3631 }, + { Opcode.CMSG_DUEL_RESPONSE, 0x34E2 }, + { Opcode.CMSG_EJECT_PASSENGER, 0x323E }, + { Opcode.CMSG_EMOTE, 0x3543 }, + { Opcode.CMSG_ENABLE_NAGLE, 0x377F }, + { Opcode.CMSG_ENABLE_TAXI_NODE, 0x34A9 }, + { Opcode.CMSG_ENGINE_SURVEY, 0x36E7 }, // NYI + { Opcode.CMSG_ENTER_ENCRYPTED_MODE_ACK, 0x377B }, + { Opcode.CMSG_ENUM_CHARACTERS, 0x35E8 }, + { Opcode.CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT, 0x36E1 }, + { Opcode.CMSG_FAR_SIGHT, 0x34E8 }, + { Opcode.CMSG_GAME_EVENT_DEBUG_DISABLE, 0x31B3 }, // NYI + { Opcode.CMSG_GAME_EVENT_DEBUG_ENABLE, 0x31B4 }, // NYI + { Opcode.CMSG_GAME_OBJ_REPORT_USE, 0x34EF }, + { Opcode.CMSG_GAME_OBJ_USE, 0x34EE }, + { Opcode.CMSG_GENERATE_RANDOM_CHARACTER_NAME, 0x35E7 }, + { Opcode.CMSG_GET_ACCOUNT_CHARACTER_LIST, 0x36BB }, // NYI + { Opcode.CMSG_GET_ACCOUNT_NOTIFICATIONS, 0x3738 }, // NYI + { Opcode.CMSG_GET_ITEM_PURCHASE_DATA, 0x3531 }, + { Opcode.CMSG_GET_MIRROR_IMAGE_DATA, 0x3299 }, + { Opcode.CMSG_GET_PVP_OPTIONS_ENABLED, 0x35EE }, + { Opcode.CMSG_GET_REMAINING_GAME_TIME, 0x36EF }, // NYI + { Opcode.CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS, 0x36E3 }, + { Opcode.CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST, 0x36F4 }, + { Opcode.CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST, 0x36F5 }, + { Opcode.CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY, 0x368C }, + { Opcode.CMSG_GM_TICKET_GET_CASE_STATUS, 0x368B }, + { Opcode.CMSG_GM_TICKET_GET_SYSTEM_STATUS, 0x368A }, + { Opcode.CMSG_GOSSIP_SELECT_OPTION, 0x3494 }, + { Opcode.CMSG_GUILD_ADD_BATTLENET_FRIEND, 0x5036 }, // NYI + { Opcode.CMSG_GUILD_ADD_RANK, 0x501B }, + { Opcode.CMSG_GUILD_ASSIGN_MEMBER_RANK, 0x5016 }, + { Opcode.CMSG_GUILD_AUTO_DECLINE_INVITATION, 0x5018 }, // NYI + { Opcode.CMSG_GUILD_BANK_ACTIVATE, 0x34B5 }, + { Opcode.CMSG_GUILD_BANK_BUY_TAB, 0x34C3 }, + { Opcode.CMSG_GUILD_BANK_DEPOSIT_MONEY, 0x34C5 }, + { Opcode.CMSG_GUILD_BANK_LOG_QUERY, 0x502F }, + { Opcode.CMSG_GUILD_BANK_QUERY_TAB, 0x34C2 }, + { Opcode.CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, 0x5030 }, + { Opcode.CMSG_GUILD_BANK_SET_TAB_TEXT, 0x5033 }, + { Opcode.CMSG_GUILD_BANK_TEXT_QUERY, 0x5034 }, + { Opcode.CMSG_GUILD_BANK_UPDATE_TAB, 0x34C4 }, + { Opcode.CMSG_GUILD_BANK_WITHDRAW_MONEY, 0x34C6 }, + { Opcode.CMSG_GUILD_CHALLENGE_UPDATE_REQUEST, 0x502D }, + { Opcode.CMSG_GUILD_CHANGE_NAME_REQUEST, 0x502E }, + { Opcode.CMSG_GUILD_DECLINE_INVITATION, 0x5017 }, + { Opcode.CMSG_GUILD_DELETE, 0x501F }, + { Opcode.CMSG_GUILD_DELETE_RANK, 0x501C }, + { Opcode.CMSG_GUILD_DEMOTE_MEMBER, 0x5015 }, + { Opcode.CMSG_GUILD_EVENT_LOG_QUERY, 0x5032 }, + { Opcode.CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS, 0x5028 }, + { Opcode.CMSG_GUILD_GET_RANKS, 0x5024 }, + { Opcode.CMSG_GUILD_GET_ROSTER, 0x502A }, + { Opcode.CMSG_GUILD_INVITE_BY_NAME, 0x3607 }, + { Opcode.CMSG_GUILD_LEAVE, 0x5019 }, + { Opcode.CMSG_GUILD_NEWS_UPDATE_STICKY, 0x5025 }, + { Opcode.CMSG_GUILD_OFFICER_REMOVE_MEMBER, 0x501A }, + { Opcode.CMSG_GUILD_PERMISSIONS_QUERY, 0x5031 }, + { Opcode.CMSG_GUILD_PROMOTE_MEMBER, 0x5014 }, + { Opcode.CMSG_GUILD_QUERY_MEMBER_RECIPES, 0x5020 }, // NYI + { Opcode.CMSG_GUILD_QUERY_NEWS, 0x5023 }, + { Opcode.CMSG_GUILD_QUERY_RECIPES, 0x5021 }, // NYI + { Opcode.CMSG_GUILD_REPLACE_GUILD_MASTER, 0x5035 }, + { Opcode.CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, 0x5026 }, + { Opcode.CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT, 0x5027 }, + { Opcode.CMSG_GUILD_SET_GUILD_MASTER, 0x36CC }, + { Opcode.CMSG_GUILD_SET_MEMBER_NOTE, 0x5029 }, + { Opcode.CMSG_GUILD_SET_RANK_PERMISSIONS, 0x501E }, + { Opcode.CMSG_GUILD_SHIFT_RANK, 0x501D }, + { Opcode.CMSG_GUILD_UPDATE_INFO_TEXT, 0x502C }, + { Opcode.CMSG_GUILD_UPDATE_MOTD_TEXT, 0x502B }, + { Opcode.CMSG_HEARTH_AND_RESURRECT, 0x3506 }, + { Opcode.CMSG_HOTFIX_REQUEST, 0x35E5 }, + { Opcode.CMSG_IGNORE_TRADE, 0x315A }, + { Opcode.CMSG_INITIATE_ROLE_POLL, 0x35DA }, + { Opcode.CMSG_INITIATE_TRADE, 0x3157 }, + { Opcode.CMSG_INSPECT, 0x352B }, + { Opcode.CMSG_INSPECT_PVP, 0x369F }, // NYI + { Opcode.CMSG_INSTANCE_LOCK_RESPONSE, 0x350B }, + { Opcode.CMSG_ITEM_PURCHASE_REFUND, 0x3532 }, + { Opcode.CMSG_ITEM_TEXT_QUERY, 0x32C6 }, + { Opcode.CMSG_JOIN_RATED_BATTLEGROUND, 0x317D }, // NYI + { Opcode.CMSG_KEEP_ALIVE, 0x367D }, + { Opcode.CMSG_KEYBOUND_OVERRIDE, 0x3225 }, + { Opcode.CMSG_LATENCY_REPORT, 0x3785 }, // NYI + { Opcode.CMSG_LEARN_PREVIEW_TALENTS, 0x3555 }, + { Opcode.CMSG_LEARN_PREVIEW_TALENTS_PET, 0x3557 }, // NYI + { Opcode.CMSG_LEARN_TALENT, 0x3554 }, + { Opcode.CMSG_LEAVE_GROUP, 0x3648 }, + { Opcode.CMSG_LFG_LIST_APPLY_TO_GROUP, 0x360E }, // NYI + { Opcode.CMSG_LFG_LIST_CANCEL_APPLICATION, 0x360F }, // NYI + { Opcode.CMSG_LFG_LIST_DECLINE_APPLICANT, 0x3610 }, // NYI + { Opcode.CMSG_LFG_LIST_GET_STATUS, 0x360C }, + { Opcode.CMSG_LFG_LIST_INVITE_APPLICANT, 0x3611 }, // NYI + { Opcode.CMSG_LFG_LIST_INVITE_RESPONSE, 0x3612 }, // NYI + { Opcode.CMSG_LFG_LIST_JOIN, 0x32F1 }, // NYI + { Opcode.CMSG_LFG_LIST_LEAVE, 0x360B }, // NYI + { Opcode.CMSG_LFG_LIST_SEARCH, 0x360D }, // NYI + { Opcode.CMSG_LFG_LIST_SET_ROLES, 0x3303 }, // NYI + { Opcode.CMSG_LFG_LIST_UPDATE_REQUEST, 0x32F2 }, // NYI + { Opcode.CMSG_LIST_INVENTORY, 0x34A1 }, + { Opcode.CMSG_LIVE_REGION_ACCOUNT_RESTORE, 0x36BE }, // NYI + { Opcode.CMSG_LIVE_REGION_CHARACTER_COPY, 0x36BD }, // NYI + { Opcode.CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST, 0x36BC }, // NYI + { Opcode.CMSG_LOADING_SCREEN_NOTIFY, 0x35F8 }, + { Opcode.CMSG_LOGOUT_CANCEL, 0x34D8 }, + { Opcode.CMSG_LOGOUT_INSTANT, 0x34D9 }, // NYI + { Opcode.CMSG_LOGOUT_REQUEST, 0x34D6 }, + { Opcode.CMSG_LOG_DISCONNECT, 0x377D }, + { Opcode.CMSG_LOG_STREAMING_ERROR, 0x3781 }, // NYI + { Opcode.CMSG_LOOT_ITEM, 0x3213 }, + { Opcode.CMSG_LOOT_MONEY, 0x3212 }, + { Opcode.CMSG_LOOT_RELEASE, 0x3215 }, + { Opcode.CMSG_LOOT_ROLL, 0x3216 }, + { Opcode.CMSG_LOOT_UNIT, 0x3211 }, + { Opcode.CMSG_LOW_LEVEL_RAID1, 0x3512 }, // NYI + { Opcode.CMSG_LOW_LEVEL_RAID2, 0x369D }, // NYI + { Opcode.CMSG_MAIL_CREATE_TEXT_ITEM, 0x353D }, + { Opcode.CMSG_MAIL_DELETE, 0x3227 }, + { Opcode.CMSG_MAIL_GET_LIST, 0x3538 }, + { Opcode.CMSG_MAIL_MARK_AS_READ, 0x353C }, + { Opcode.CMSG_MAIL_RETURN_TO_SENDER, 0x3654 }, + { Opcode.CMSG_MAIL_TAKE_ITEM, 0x353A }, + { Opcode.CMSG_MAIL_TAKE_MONEY, 0x3539 }, + { Opcode.CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT, 0x322A }, // NYI + { Opcode.CMSG_MASTER_LOOT_ITEM, 0x3214 }, + { Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, 0x34C0 }, + { Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM, 0x34BD }, + { Opcode.CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM, 0x34BB }, + { Opcode.CMSG_MINIMAP_PING, 0x364A }, + { Opcode.CMSG_MISSILE_TRAJECTORY_COLLISION, 0x318F }, + { Opcode.CMSG_MOUNT_CLEAR_FANFARE, 0x3127 }, // NYI + { Opcode.CMSG_MOUNT_SET_FAVORITE, 0x362F }, + { Opcode.CMSG_MOUNT_SPECIAL_ANIM, 0x3282 }, + { Opcode.CMSG_MOVE_ADD_IMPULSE_ACK, 0x3A50 }, // NYI + { Opcode.CMSG_MOVE_APPLY_INERTIA_ACK, 0x3A4E }, // NYI + { Opcode.CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, 0x3A15 }, + { Opcode.CMSG_MOVE_CHANGE_TRANSPORT, 0x3A2F }, + { Opcode.CMSG_MOVE_CHANGE_VEHICLE_SEATS, 0x3A34 }, + { Opcode.CMSG_MOVE_COLLISION_DISABLE_ACK, 0x3A39 }, + { Opcode.CMSG_MOVE_COLLISION_ENABLE_ACK, 0x3A3A }, + { Opcode.CMSG_MOVE_DISMISS_VEHICLE, 0x3A33 }, + { Opcode.CMSG_MOVE_DOUBLE_JUMP, 0x39EB }, + { Opcode.CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK, 0x3A1E }, + { Opcode.CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK, 0x3A24 }, + { Opcode.CMSG_MOVE_FALL_LAND, 0x39FB }, + { Opcode.CMSG_MOVE_FALL_RESET, 0x3A19 }, + { Opcode.CMSG_MOVE_FEATHER_FALL_ACK, 0x3A1C }, + { Opcode.CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, 0x3A2E }, + { Opcode.CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, 0x3A2D }, + { Opcode.CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, 0x3A32 }, + { Opcode.CMSG_MOVE_FORCE_ROOT_ACK, 0x3A0E }, + { Opcode.CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, 0x3A0C }, + { Opcode.CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK, 0x3A0B }, + { Opcode.CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, 0x3A22 }, + { Opcode.CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK, 0x3A0D }, + { Opcode.CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK, 0x3A23 }, + { Opcode.CMSG_MOVE_FORCE_UNROOT_ACK, 0x3A0F }, + { Opcode.CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK, 0x3A21 }, + { Opcode.CMSG_MOVE_GRAVITY_DISABLE_ACK, 0x3A35 }, + { Opcode.CMSG_MOVE_GRAVITY_ENABLE_ACK, 0x3A36 }, + { Opcode.CMSG_MOVE_GUILD_BANK_ITEM, 0x34BA }, + { Opcode.CMSG_MOVE_HEARTBEAT, 0x3A10 }, + { Opcode.CMSG_MOVE_HOVER_ACK, 0x3A13 }, + { Opcode.CMSG_MOVE_INERTIA_DISABLE_ACK, 0x3A37 }, + { Opcode.CMSG_MOVE_INERTIA_ENABLE_ACK, 0x3A38 }, + { Opcode.CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE, 0x3A46 }, + { Opcode.CMSG_MOVE_JUMP, 0x39EA }, + { Opcode.CMSG_MOVE_KNOCK_BACK_ACK, 0x3A12 }, + { Opcode.CMSG_MOVE_REMOVE_INERTIA_ACK, 0x3A4F }, // NYI + { Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCES, 0x3A17 }, + { Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK, 0x3A16 }, + { Opcode.CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE, 0x3A44 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLY, 0x3A52 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK, 0x3A58 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK, 0x3A53 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK, 0x3A59 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK, 0x3A56 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK, 0x3A57 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK, 0x3A60 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK, 0x3A55 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK, 0x3A54 }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK, 0x3A5E }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK, 0x3A5A }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK, 0x3A5B }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK, 0x3A5D }, // NYI + { Opcode.CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK, 0x3A5C }, // NYI + { Opcode.CMSG_MOVE_SET_CAN_ADV_FLY_ACK, 0x3A51 }, // NYI + { Opcode.CMSG_MOVE_SET_CAN_FLY_ACK, 0x3A27 }, + { Opcode.CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK, 0x3A25 }, + { Opcode.CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, 0x3A3B }, + { Opcode.CMSG_MOVE_SET_FACING, 0x3A09 }, + { Opcode.CMSG_MOVE_SET_FACING_HEARTBEAT, 0x3A5F }, + { Opcode.CMSG_MOVE_SET_FLY, 0x3A28 }, + { Opcode.CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK, 0x3A26 }, + { Opcode.CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK, 0x3A42 }, + { Opcode.CMSG_MOVE_SET_PITCH, 0x3A0A }, + { Opcode.CMSG_MOVE_SET_RUN_MODE, 0x39F2 }, + { Opcode.CMSG_MOVE_SET_VEHICLE_REC_ID_ACK, 0x3A14 }, + { Opcode.CMSG_MOVE_SET_WALK_MODE, 0x39F3 }, + { Opcode.CMSG_MOVE_SPLINE_DONE, 0x3A18 }, + { Opcode.CMSG_MOVE_START_ASCEND, 0x3A29 }, + { Opcode.CMSG_MOVE_START_BACKWARD, 0x39E5 }, + { Opcode.CMSG_MOVE_START_DESCEND, 0x3A30 }, + { Opcode.CMSG_MOVE_START_FORWARD, 0x39E4 }, + { Opcode.CMSG_MOVE_START_PITCH_DOWN, 0x39F0 }, + { Opcode.CMSG_MOVE_START_PITCH_UP, 0x39EF }, + { Opcode.CMSG_MOVE_START_STRAFE_LEFT, 0x39E7 }, + { Opcode.CMSG_MOVE_START_STRAFE_RIGHT, 0x39E8 }, + { Opcode.CMSG_MOVE_START_SWIM, 0x39FC }, + { Opcode.CMSG_MOVE_START_TURN_LEFT, 0x39EC }, + { Opcode.CMSG_MOVE_START_TURN_RIGHT, 0x39ED }, + { Opcode.CMSG_MOVE_STOP, 0x39E6 }, + { Opcode.CMSG_MOVE_STOP_ASCEND, 0x3A2A }, + { Opcode.CMSG_MOVE_STOP_PITCH, 0x39F1 }, + { Opcode.CMSG_MOVE_STOP_STRAFE, 0x39E9 }, + { Opcode.CMSG_MOVE_STOP_SWIM, 0x39FD }, + { Opcode.CMSG_MOVE_STOP_TURN, 0x39EE }, + { Opcode.CMSG_MOVE_TELEPORT_ACK, 0x39FA }, + { Opcode.CMSG_MOVE_TIME_SKIPPED, 0x3A1B }, + { Opcode.CMSG_MOVE_UPDATE_FALL_SPEED, 0x3A1A }, + { Opcode.CMSG_MOVE_WATER_WALK_ACK, 0x3A1D }, + { Opcode.CMSG_NEXT_CINEMATIC_CAMERA, 0x3546 }, + { Opcode.CMSG_OBJECT_UPDATE_FAILED, 0x3185 }, + { Opcode.CMSG_OBJECT_UPDATE_RESCUED, 0x3186 }, + { Opcode.CMSG_OFFER_PETITION, 0x32FE }, + { Opcode.CMSG_OPENING_CINEMATIC, 0x3545 }, + { Opcode.CMSG_OPEN_ITEM, 0x32C7 }, + { Opcode.CMSG_OPT_OUT_OF_LOOT, 0x34F6 }, + { Opcode.CMSG_OVERRIDE_SCREEN_FLASH, 0x351E }, + { Opcode.CMSG_PARTY_INVITE, 0x3603 }, + { Opcode.CMSG_PARTY_INVITE_RESPONSE, 0x3605 }, + { Opcode.CMSG_PARTY_UNINVITE, 0x3646 }, + { Opcode.CMSG_PETITION_BUY, 0x34C8 }, + { Opcode.CMSG_PETITION_RENAME_GUILD, 0x36CD }, + { Opcode.CMSG_PETITION_SHOW_LIST, 0x34C7 }, + { Opcode.CMSG_PETITION_SHOW_SIGNATURES, 0x34C9 }, + { Opcode.CMSG_PET_ABANDON, 0x348D }, + { Opcode.CMSG_PET_ACTION, 0x348B }, + { Opcode.CMSG_PET_CANCEL_AURA, 0x348E }, + { Opcode.CMSG_PET_CAST_SPELL, 0x329D }, + { Opcode.CMSG_PET_LEARN_TALENT, 0x3556 }, // NYI + { Opcode.CMSG_PET_RENAME, 0x3682 }, + { Opcode.CMSG_PET_SET_ACTION, 0x348A }, + { Opcode.CMSG_PET_SPELL_AUTOCAST, 0x348F }, + { Opcode.CMSG_PET_STOP_ATTACK, 0x348C }, + { Opcode.CMSG_PING, 0x377C }, + { Opcode.CMSG_PLAYER_LOGIN, 0x35EA }, + { Opcode.CMSG_PUSH_QUEST_TO_PARTY, 0x349F }, + { Opcode.CMSG_PVP_LOG_DATA, 0x3181 }, + { Opcode.CMSG_QUERY_ARENA_TEAM, 0x36A0 }, // NYI + { Opcode.CMSG_QUERY_BATTLE_PET_NAME, 0x3278 }, + { Opcode.CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT, 0x365E }, + { Opcode.CMSG_QUERY_CORPSE_TRANSPORT, 0x365F }, + { Opcode.CMSG_QUERY_COUNTDOWN_TIMER, 0x31AC }, + { Opcode.CMSG_QUERY_CREATURE, 0x3272 }, + { Opcode.CMSG_QUERY_GAME_OBJECT, 0x3273 }, + { Opcode.CMSG_QUERY_GUILD_INFO, 0x3687 }, + { Opcode.CMSG_QUERY_INSPECT_ACHIEVEMENTS, 0x3500 }, + { Opcode.CMSG_QUERY_NEXT_MAIL_TIME, 0x353B }, + { Opcode.CMSG_QUERY_NPC_TEXT, 0x3274 }, + { Opcode.CMSG_QUERY_PAGE_TEXT, 0x3276 }, + { Opcode.CMSG_QUERY_PETITION, 0x3279 }, + { Opcode.CMSG_QUERY_PET_NAME, 0x3277 }, + { Opcode.CMSG_QUERY_PLAYER_NAMES, 0x3786 }, + { Opcode.CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY, 0x3784 }, // NYI + { Opcode.CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID, 0x3783 }, // NYI + { Opcode.CMSG_QUERY_QUEST_COMPLETION_NPCS, 0x3179 }, + { Opcode.CMSG_QUERY_QUEST_INFO, 0x3275 }, + { Opcode.CMSG_QUERY_QUEST_ITEM_USABILITY, 0x317A }, // NYI + { Opcode.CMSG_QUERY_REALM_NAME, 0x3686 }, + { Opcode.CMSG_QUERY_TIME, 0x34D5 }, + { Opcode.CMSG_QUERY_TREASURE_PICKER, 0x32DD }, // NYI + { Opcode.CMSG_QUERY_VOID_STORAGE, 0x31A5 }, + { Opcode.CMSG_QUEST_CONFIRM_ACCEPT, 0x349E }, + { Opcode.CMSG_QUEST_GIVER_ACCEPT_QUEST, 0x3498 }, + { Opcode.CMSG_QUEST_GIVER_CHOOSE_REWARD, 0x349A }, + { Opcode.CMSG_QUEST_GIVER_CLOSE_QUEST, 0x354B }, + { Opcode.CMSG_QUEST_GIVER_COMPLETE_QUEST, 0x3499 }, + { Opcode.CMSG_QUEST_GIVER_HELLO, 0x3496 }, + { Opcode.CMSG_QUEST_GIVER_QUERY_QUEST, 0x3497 }, + { Opcode.CMSG_QUEST_GIVER_REQUEST_REWARD, 0x349B }, + { Opcode.CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY, 0x349D }, + { Opcode.CMSG_QUEST_GIVER_STATUS_QUERY, 0x349C }, + { Opcode.CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY, 0x356E }, + { Opcode.CMSG_QUEST_LOG_REMOVE_QUEST, 0x3530 }, + { Opcode.CMSG_QUEST_POI_QUERY, 0x36AE }, + { Opcode.CMSG_QUEST_PUSH_RESULT, 0x34A0 }, + { Opcode.CMSG_QUEUED_MESSAGES_END, 0x3780 }, + { Opcode.CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS, 0x3709 }, // NYI + { Opcode.CMSG_QUICK_JOIN_REQUEST_INVITE, 0x3708 }, // NYI + { Opcode.CMSG_QUICK_JOIN_RESPOND_TO_INVITE, 0x3707 }, // NYI + { Opcode.CMSG_RANDOM_ROLL, 0x3653 }, + { Opcode.CMSG_READY_CHECK_RESPONSE, 0x3632 }, + { Opcode.CMSG_READ_ITEM, 0x32C8 }, + { Opcode.CMSG_RECLAIM_CORPSE, 0x34DB }, + { Opcode.CMSG_REFORGE_ITEM, 0x3156 }, + { Opcode.CMSG_REMOVE_GLYPH, 0x3301 }, // NYI + { Opcode.CMSG_REMOVE_NEW_ITEM, 0x32E0 }, + { Opcode.CMSG_REORDER_CHARACTERS, 0x35E9 }, + { Opcode.CMSG_REPAIR_ITEM, 0x34EC }, + { Opcode.CMSG_REPOP_REQUEST, 0x3528 }, + { Opcode.CMSG_REPORT_CLIENT_VARIABLES, 0x3703 }, // NYI + { Opcode.CMSG_REPORT_ENABLED_ADDONS, 0x3702 }, // NYI + { Opcode.CMSG_REPORT_FROZEN_WHILE_LOADING_MAP, 0x36A6 }, // NYI + { Opcode.CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS, 0x3704 }, // NYI + { Opcode.CMSG_REPORT_PVP_PLAYER_AFK, 0x34F4 }, + { Opcode.CMSG_REPORT_SERVER_LAG, 0x32FC }, // NYI + { Opcode.CMSG_REQUEST_ACCOUNT_DATA, 0x3690 }, + { Opcode.CMSG_REQUEST_AREA_POI_UPDATE, 0x32DF }, // NYI + { Opcode.CMSG_REQUEST_BATTLEFIELD_STATUS, 0x35DC }, + { Opcode.CMSG_REQUEST_CEMETERY_LIST, 0x317B }, + { Opcode.CMSG_REQUEST_CROWD_CONTROL_SPELL, 0x352C }, // NYI + { Opcode.CMSG_REQUEST_FORCED_REACTIONS, 0x3207 }, + { Opcode.CMSG_REQUEST_GUILD_PARTY_STATE, 0x31AB }, + { Opcode.CMSG_REQUEST_GUILD_REWARDS_LIST, 0x31AA }, + { Opcode.CMSG_REQUEST_HONOR_STATS, 0x3180 }, // NYI + { Opcode.CMSG_REQUEST_LFG_LIST_BLACKLIST, 0x32A6 }, + { Opcode.CMSG_REQUEST_PARTY_JOIN_UPDATES, 0x35F7 }, + { Opcode.CMSG_REQUEST_PARTY_MEMBER_STATS, 0x3652 }, + { Opcode.CMSG_REQUEST_PET_INFO, 0x3490 }, + { Opcode.CMSG_REQUEST_PLAYED_TIME, 0x327C }, + { Opcode.CMSG_REQUEST_PVP_REWARDS, 0x3198 }, + { Opcode.CMSG_REQUEST_RAID_INFO, 0x36CE }, + { Opcode.CMSG_REQUEST_RATED_PVP_INFO, 0x35E3 }, + { Opcode.CMSG_REQUEST_SCHEDULED_PVP_INFO, 0x3199 }, // NYI + { Opcode.CMSG_REQUEST_STABLED_PETS, 0x3491 }, + { Opcode.CMSG_REQUEST_VEHICLE_EXIT, 0x3239 }, + { Opcode.CMSG_REQUEST_VEHICLE_NEXT_SEAT, 0x323B }, + { Opcode.CMSG_REQUEST_VEHICLE_PREV_SEAT, 0x323A }, + { Opcode.CMSG_REQUEST_VEHICLE_SWITCH_SEAT, 0x323C }, + { Opcode.CMSG_REQUEST_WORLD_QUEST_UPDATE, 0x32DE }, + { Opcode.CMSG_RESET_INSTANCES, 0x3666 }, + { Opcode.CMSG_RESURRECT_RESPONSE, 0x3681 }, + { Opcode.CMSG_RIDE_VEHICLE_INTERACT, 0x323D }, + { Opcode.CMSG_SAVE_ACCOUNT_DATA_EXPORT, 0x374D }, // NYI + { Opcode.CMSG_SAVE_CUF_PROFILES, 0x3190 }, + { Opcode.CMSG_SAVE_EQUIPMENT_SET, 0x3509 }, + { Opcode.CMSG_SAVE_GUILD_EMBLEM, 0x32AA }, + { Opcode.CMSG_SCENE_PLAYBACK_CANCELED, 0x3222 }, + { Opcode.CMSG_SCENE_PLAYBACK_COMPLETE, 0x3221 }, + { Opcode.CMSG_SCENE_TRIGGER_EVENT, 0x3223 }, + { Opcode.CMSG_SELF_RES, 0x3533 }, + { Opcode.CMSG_SELL_ITEM, 0x34A2 }, + { Opcode.CMSG_SEND_CONTACT_LIST, 0x36D3 }, + { Opcode.CMSG_SEND_MAIL, 0x35FA }, + { Opcode.CMSG_SEND_TEXT_EMOTE, 0x3488 }, + { Opcode.CMSG_SERVER_TIME_OFFSET_REQUEST, 0x3698 }, + { Opcode.CMSG_SET_ACTION_BAR_TOGGLES, 0x3534 }, + { Opcode.CMSG_SET_ACTION_BUTTON, 0x3560 }, + { Opcode.CMSG_SET_ACTIVE_MOVER, 0x3A3C }, + { Opcode.CMSG_SET_ADVANCED_COMBAT_LOGGING, 0x32B6 }, + { Opcode.CMSG_SET_AMMO, 0x3561 }, // NYI + { Opcode.CMSG_SET_ASSISTANT_LEADER, 0x364E }, + { Opcode.CMSG_SET_CONTACT_NOTES, 0x36D6 }, + { Opcode.CMSG_SET_CURRENCY_FLAGS, 0x316E }, // NYI + { Opcode.CMSG_SET_DIFFICULTY_ID, 0x3224 }, // NYI + { Opcode.CMSG_SET_DUNGEON_DIFFICULTY, 0x3680 }, + { Opcode.CMSG_SET_EVERYONE_IS_ASSISTANT, 0x3619 }, + { Opcode.CMSG_SET_FACTION_AT_WAR, 0x34DE }, + { Opcode.CMSG_SET_FACTION_INACTIVE, 0x34E0 }, + { Opcode.CMSG_SET_FACTION_NOT_AT_WAR, 0x34DF }, + { Opcode.CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE, 0x31BB }, // NYI + { Opcode.CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, 0x32CB }, // NYI + { Opcode.CMSG_SET_LOOT_METHOD, 0x3647 }, + { Opcode.CMSG_SET_PARTY_ASSIGNMENT, 0x3650 }, + { Opcode.CMSG_SET_PARTY_LEADER, 0x3649 }, + { Opcode.CMSG_SET_PET_SLOT, 0x316D }, + { Opcode.CMSG_SET_PLAYER_DECLINED_NAMES, 0x3685 }, + { Opcode.CMSG_SET_PREFERRED_CEMETERY, 0x317C }, // NYI + { Opcode.CMSG_SET_PRIMARY_TALENT_TREE, 0x3559 }, + { Opcode.CMSG_SET_PVP, 0x32AE }, + { Opcode.CMSG_SET_RAID_DIFFICULTY, 0x36DF }, + { Opcode.CMSG_SET_ROLE, 0x35D9 }, + { Opcode.CMSG_SET_SELECTION, 0x352A }, + { Opcode.CMSG_SET_SHEATHED, 0x3489 }, + { Opcode.CMSG_SET_TAXI_BENCHMARK_MODE, 0x34F3 }, + { Opcode.CMSG_SET_TITLE, 0x3280 }, + { Opcode.CMSG_SET_TRADE_GOLD, 0x3160 }, + { Opcode.CMSG_SET_TRADE_ITEM, 0x315E }, + { Opcode.CMSG_SET_WATCHED_FACTION, 0x34E1 }, + { Opcode.CMSG_SHOWING_CLOAK, 0x356C }, // NYI + { Opcode.CMSG_SHOWING_HELM, 0x356B }, // NYI + { Opcode.CMSG_SHOW_TRADE_SKILL, 0x36C6 }, // NYI + { Opcode.CMSG_SIGN_PETITION, 0x3535 }, + { Opcode.CMSG_SILENCE_PARTY_TALKER, 0x3651 }, // NYI + { Opcode.CMSG_SOCIAL_CONTRACT_REQUEST, 0x3748 }, + { Opcode.CMSG_SOCKET_GEMS, 0x34EB }, + { Opcode.CMSG_SPAWN_TRACKING_UPDATE, 0x3294 }, // NYI + { Opcode.CMSG_SPELL_CLICK, 0x3495 }, + { Opcode.CMSG_SPIRIT_HEALER_ACTIVATE, 0x34AF }, + { Opcode.CMSG_SPLIT_GUILD_BANK_ITEM, 0x34C1 }, + { Opcode.CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY, 0x34BE }, + { Opcode.CMSG_SPLIT_ITEM, 0x399C }, + { Opcode.CMSG_SPLIT_ITEM_TO_GUILD_BANK, 0x34BC }, + { Opcode.CMSG_STABLE_PET, 0x3169 }, // NYI + { Opcode.CMSG_STABLE_SWAP_PET, 0x316B }, // NYI + { Opcode.CMSG_STAND_STATE_CHANGE, 0x318E }, + { Opcode.CMSG_START_SPECTATOR_WAR_GAME, 0x35DF }, // NYI + { Opcode.CMSG_START_WAR_GAME, 0x35DE }, // NYI + { Opcode.CMSG_STORE_GUILD_BANK_ITEM, 0x34B7 }, + { Opcode.CMSG_SUBMIT_USER_FEEDBACK, 0x368F }, + { Opcode.CMSG_SUMMON_RESPONSE, 0x3668 }, + { Opcode.CMSG_SUPPORT_TICKET_SUBMIT_BUG, 0x3644 }, // NYI + { Opcode.CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, 0x3643 }, + { Opcode.CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION, 0x3645 }, // NYI + { Opcode.CMSG_SUSPEND_COMMS_ACK, 0x3778 }, + { Opcode.CMSG_SUSPEND_TOKEN_RESPONSE, 0x377E }, + { Opcode.CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, 0x34B9 }, + { Opcode.CMSG_SWAP_INV_ITEM, 0x399B }, + { Opcode.CMSG_SWAP_ITEM, 0x399A }, + { Opcode.CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM, 0x34B8 }, + { Opcode.CMSG_SWAP_SUB_GROUPS, 0x364C }, + { Opcode.CMSG_SWAP_VOID_ITEM, 0x31A7 }, + { Opcode.CMSG_TABARD_VENDOR_ACTIVATE, 0x32AB }, + { Opcode.CMSG_TALK_TO_GOSSIP, 0x3492 }, + { Opcode.CMSG_TAXI_NODE_STATUS_QUERY, 0x34A8 }, + { Opcode.CMSG_TAXI_QUERY_AVAILABLE_NODES, 0x34AA }, + { Opcode.CMSG_TAXI_REQUEST_EARLY_LANDING, 0x34AC }, + { Opcode.CMSG_TIME_ADJUSTMENT_RESPONSE, 0x3A40 }, // NYI + { Opcode.CMSG_TIME_SYNC_RESPONSE, 0x3A3D }, + { Opcode.CMSG_TIME_SYNC_RESPONSE_DROPPED, 0x3A3F }, // NYI + { Opcode.CMSG_TIME_SYNC_RESPONSE_FAILED, 0x3A3E }, // NYI + { Opcode.CMSG_TOGGLE_DIFFICULTY, 0x3655 }, // NYI + { Opcode.CMSG_TOGGLE_PVP, 0x32AD }, + { Opcode.CMSG_TOTEM_DESTROYED, 0x34F8 }, + { Opcode.CMSG_TOY_CLEAR_FANFARE, 0x3128 }, + { Opcode.CMSG_TRAINER_BUY_SPELL, 0x34AE }, + { Opcode.CMSG_TRAINER_LIST, 0x34AD }, + { Opcode.CMSG_TRAITS_COMMIT_CONFIG, 0x3304 }, // NYI + { Opcode.CMSG_TRANSMOGRIFY_ITEMS, 0x319A }, + { Opcode.CMSG_TURN_IN_PETITION, 0x3537 }, + { Opcode.CMSG_TUTORIAL, 0x36E0 }, + { Opcode.CMSG_UNACCEPT_TRADE, 0x315C }, + { Opcode.CMSG_UNDELETE_CHARACTER, 0x36E2 }, + { Opcode.CMSG_UNLEARN_SKILL, 0x34E5 }, + { Opcode.CMSG_UNLOCK_VOID_STORAGE, 0x31A4 }, + { Opcode.CMSG_UNSTABLE_PET, 0x316A }, // NYI + { Opcode.CMSG_UPDATE_AADC_STATUS, 0x373D }, + { Opcode.CMSG_UPDATE_ACCOUNT_DATA, 0x3691 }, + { Opcode.CMSG_UPDATE_AREA_TRIGGER_VISUAL, 0x32A0 }, // NYI + { Opcode.CMSG_UPDATE_CLIENT_SETTINGS, 0x3662 }, // NYI + { Opcode.CMSG_UPDATE_MISSILE_TRAJECTORY, 0x3A43 }, + { Opcode.CMSG_UPDATE_RAID_TARGET, 0x364F }, + { Opcode.CMSG_UPDATE_SPELL_VISUAL, 0x329F }, // NYI + { Opcode.CMSG_UPDATE_VAS_PURCHASE_STATES, 0x36F7 }, + { Opcode.CMSG_USED_FOLLOW, 0x318B }, // NYI + { Opcode.CMSG_USE_CRITTER_ITEM, 0x3243 }, + { Opcode.CMSG_USE_EQUIPMENT_SET, 0x3995 }, + { Opcode.CMSG_USE_ITEM, 0x329A }, + { Opcode.CMSG_USE_TOY, 0x329C }, + { Opcode.CMSG_VAS_CHECK_TRANSFER_OK, 0x370F }, + { Opcode.CMSG_VAS_GET_QUEUE_MINUTES, 0x370E }, + { Opcode.CMSG_VAS_GET_SERVICE_STATUS, 0x370D }, + { Opcode.CMSG_VIOLENCE_LEVEL, 0x3189 }, + { Opcode.CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST, 0x3713 }, // NYI + { Opcode.CMSG_VOICE_CHAT_JOIN_CHANNEL, 0x3714 }, // NYI + { Opcode.CMSG_VOICE_CHAT_LOGIN, 0x3712 }, // NYI + { Opcode.CMSG_VOID_STORAGE_TRANSFER, 0x31A6 }, + { Opcode.CMSG_WARDEN3_DATA, 0x35EC }, + { Opcode.CMSG_WHO, 0x367F }, + { Opcode.CMSG_WHO_IS, 0x367E }, + { Opcode.CMSG_WORLD_PORT_RESPONSE, 0x35F9 }, + { Opcode.CMSG_WRAP_ITEM, 0x3994 }, + }; + + private static readonly BiDictionary ServerOpcodes = new() + { + { Opcode.SMSG_ABORT_NEW_WORLD, 0x259A }, + { Opcode.SMSG_ACCOUNT_CRITERIA_UPDATE, 0x286A }, + { Opcode.SMSG_ACCOUNT_DATA_TIMES, 0x270E }, + { Opcode.SMSG_ACCOUNT_EXPORT_RESPONSE, 0x28AB }, // NYI + { Opcode.SMSG_ACCOUNT_HEIRLOOM_UPDATE, 0x25B3 }, + { Opcode.SMSG_ACCOUNT_MOUNT_REMOVED, 0x25B1 }, // NYI + { Opcode.SMSG_ACCOUNT_MOUNT_UPDATE, 0x25B0 }, + { Opcode.SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, 0x2885 }, // NYI + { Opcode.SMSG_ACCOUNT_TOY_UPDATE, 0x25B2 }, + { Opcode.SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE, 0x25B6 }, // NYI + { Opcode.SMSG_ACCOUNT_TRANSMOG_UPDATE, 0x25B5 }, // NYI + { Opcode.SMSG_ACHIEVEMENT_DELETED, 0x26ED }, // NYI + { Opcode.SMSG_ACHIEVEMENT_EARNED, 0x2645 }, + { Opcode.SMSG_ACTIVATE_TAXI_REPLY, 0x2682 }, + { Opcode.SMSG_ACTIVE_GLYPHS, 0x2C53 }, + { Opcode.SMSG_ADDON_LIST_REQUEST, 0x2644 }, // NYI + { Opcode.SMSG_ADD_BATTLENET_FRIEND_RESPONSE, 0x263F }, // NYI + { Opcode.SMSG_ADD_ITEM_PASSIVE, 0x25AC }, // NYI + { Opcode.SMSG_ADD_LOSS_OF_CONTROL, 0x2675 }, + { Opcode.SMSG_ADD_RUNE_POWER, 0x26BC }, + { Opcode.SMSG_ADJUST_SPLINE_DURATION, 0x25D2 }, + { Opcode.SMSG_AE_LOOT_TARGETS, 0x261A }, + { Opcode.SMSG_AE_LOOT_TARGET_ACK, 0x261B }, + { Opcode.SMSG_AI_REACTION, 0x26B9 }, + { Opcode.SMSG_ALLIED_RACE_DETAILS, 0x27FE }, + { Opcode.SMSG_ALL_ACCOUNT_CRITERIA, 0x2571 }, + { Opcode.SMSG_ALL_ACHIEVEMENT_DATA, 0x2570 }, + { Opcode.SMSG_ALL_GUILD_ACHIEVEMENTS, 0x29B8 }, + { Opcode.SMSG_ARCHAEOLOGY_SURVERY_CAST, 0x2587 }, + { Opcode.SMSG_AREA_POI_UPDATE_RESPONSE, 0x3010 }, + { Opcode.SMSG_AREA_SPIRIT_HEALER_TIME, 0x2744 }, + { Opcode.SMSG_AREA_TRIGGER_DENIED, 0x2903 }, + { Opcode.SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING, 0x2900 }, // NYI + { Opcode.SMSG_AREA_TRIGGER_MESSAGE, 0x2882 }, + { Opcode.SMSG_AREA_TRIGGER_NO_CORPSE, 0x271A }, + { Opcode.SMSG_AREA_TRIGGER_RE_PATH, 0x28FD }, + { Opcode.SMSG_AREA_TRIGGER_RE_SHAPE, 0x2902 }, // NYI + { Opcode.SMSG_AREA_TRIGGER_UNATTACH, 0x2901 }, // NYI + { Opcode.SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT, 0x2634 }, // NYI + { Opcode.SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, 0x264A }, // NYI + { Opcode.SMSG_ARENA_TEAM_COMMAND_RESULT, 0x2767 }, // NYI + { Opcode.SMSG_ARENA_TEAM_EVENT, 0x2766 }, // NYI + { Opcode.SMSG_ARENA_TEAM_INVITE, 0x2765 }, // NYI + { Opcode.SMSG_ARENA_TEAM_ROSTER, 0x2764 }, // NYI + { Opcode.SMSG_ARENA_TEAM_STATS, 0x2768 }, // NYI + { Opcode.SMSG_ATTACKER_STATE_UPDATE, 0x2952 }, + { Opcode.SMSG_ATTACK_START, 0x293D }, + { Opcode.SMSG_ATTACK_STOP, 0x293E }, + { Opcode.SMSG_ATTACK_SWING_ERROR, 0x294C }, + { Opcode.SMSG_ATTACK_SWING_LANDED_LOG, 0x294D }, // NYI + { Opcode.SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD, 0x27DA }, // NYI + { Opcode.SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE, 0x27D9 }, // NYI + { Opcode.SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED, 0x27D8 }, // NYI + { Opcode.SMSG_AUCTION_CLOSED_NOTIFICATION, 0x26F7 }, + { Opcode.SMSG_AUCTION_COMMAND_RESULT, 0x26F4 }, + { Opcode.SMSG_AUCTION_HELLO_RESPONSE, 0x26F2 }, + { Opcode.SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT, 0x287F }, + { Opcode.SMSG_AUCTION_LIST_ITEMS_RESULT, 0x2865 }, + { Opcode.SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT, 0x287E }, + { Opcode.SMSG_AUCTION_LIST_PENDING_SALES_RESULT, 0x26F9 }, + { Opcode.SMSG_AUCTION_OUTBID_NOTIFICATION, 0x26F6 }, + { Opcode.SMSG_AUCTION_OWNER_BID_NOTIFICATION, 0x26F8 }, + { Opcode.SMSG_AUCTION_REPLICATE_RESPONSE, 0x26F3 }, + { Opcode.SMSG_AUCTION_WON_NOTIFICATION, 0x26F5 }, + { Opcode.SMSG_AURA_POINTS_DEPLETED, 0x2C22 }, // NYI + { Opcode.SMSG_AURA_UPDATE, 0x2C21 }, + { Opcode.SMSG_AUTH_CHALLENGE, 0x3048 }, + { Opcode.SMSG_AUTH_FAILED, 0x256C }, // NYI + { Opcode.SMSG_AUTH_RESPONSE, 0x256D }, + { Opcode.SMSG_AVAILABLE_HOTFIXES, 0x290F }, + { Opcode.SMSG_BAG_CLEANUP_FINISHED, 0x2DA7 }, + { Opcode.SMSG_BARBER_SHOP_RESULT, 0x26C2 }, + { Opcode.SMSG_BATCH_PRESENCE_SUBSCRIPTION, 0x2848 }, // NYI + { Opcode.SMSG_BATTLEFIELD_LIST, 0x2927 }, + { Opcode.SMSG_BATTLEFIELD_PORT_DENIED, 0x292D }, + { Opcode.SMSG_BATTLEFIELD_STATUS_ACTIVE, 0x2923 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_FAILED, 0x2926 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, 0x2922 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_NONE, 0x2925 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_QUEUED, 0x2924 }, + { Opcode.SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS, 0x292F }, // NYI + { Opcode.SMSG_BATTLEGROUND_INFO_THROTTLED, 0x292E }, // NYI + { Opcode.SMSG_BATTLEGROUND_INIT, 0x294F }, // NYI + { Opcode.SMSG_BATTLEGROUND_PLAYER_JOINED, 0x292B }, + { Opcode.SMSG_BATTLEGROUND_PLAYER_LEFT, 0x292C }, + { Opcode.SMSG_BATTLEGROUND_PLAYER_POSITIONS, 0x2928 }, + { Opcode.SMSG_BATTLEGROUND_POINTS, 0x294E }, // NYI + { Opcode.SMSG_BATTLENET_CHALLENGE_ABORT, 0x2793 }, // NYI + { Opcode.SMSG_BATTLENET_CHALLENGE_START, 0x2792 }, // NYI + { Opcode.SMSG_BATTLENET_NOTIFICATION, 0x280A }, + { Opcode.SMSG_BATTLENET_RESPONSE, 0x2809 }, + { Opcode.SMSG_BATTLE_NET_CONNECTION_STATUS, 0x280B }, + { Opcode.SMSG_BATTLE_PAY_ACK_FAILED, 0x278C }, + { Opcode.SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED, 0x2781 }, + { Opcode.SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED, 0x2782 }, + { Opcode.SMSG_BATTLE_PAY_CONFIRM_PURCHASE, 0x278B }, + { Opcode.SMSG_BATTLE_PAY_DELIVERY_ENDED, 0x277F }, + { Opcode.SMSG_BATTLE_PAY_DELIVERY_STARTED, 0x277E }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE, 0x288A }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED, 0x277C }, + { Opcode.SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE, 0x277D }, + { Opcode.SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE, 0x277B }, + { Opcode.SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE, 0x2779 }, + { Opcode.SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE, 0x277A }, + { Opcode.SMSG_BATTLE_PAY_MOUNT_DELIVERED, 0x2780 }, + { Opcode.SMSG_BATTLE_PAY_PURCHASE_UPDATE, 0x278A }, + { Opcode.SMSG_BATTLE_PAY_START_CHECKOUT, 0x2826 }, + { Opcode.SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, 0x2788 }, + { Opcode.SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE, 0x2787 }, + { Opcode.SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE, 0x281A }, + { Opcode.SMSG_BATTLE_PETS_HEALED, 0x25F5 }, // NYI + { Opcode.SMSG_BATTLE_PET_CAGE_DATE_ERROR, 0x267C }, // NYI + { Opcode.SMSG_BATTLE_PET_DELETED, 0x25F2 }, + { Opcode.SMSG_BATTLE_PET_ERROR, 0x263A }, + { Opcode.SMSG_BATTLE_PET_JOURNAL, 0x25F1 }, + { Opcode.SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED, 0x25EF }, + { Opcode.SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED, 0x25F0 }, + { Opcode.SMSG_BATTLE_PET_RESTORED, 0x25F4 }, // NYI + { Opcode.SMSG_BATTLE_PET_REVOKED, 0x25F3 }, // NYI + { Opcode.SMSG_BATTLE_PET_TRAP_LEVEL, 0x25ED }, // NYI + { Opcode.SMSG_BATTLE_PET_UPDATES, 0x25EC }, + { Opcode.SMSG_BIND_POINT_UPDATE, 0x257D }, + { Opcode.SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT, 0x262A }, + { Opcode.SMSG_BLACK_MARKET_OUTBID, 0x262B }, + { Opcode.SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT, 0x2629 }, + { Opcode.SMSG_BLACK_MARKET_WON, 0x262C }, + { Opcode.SMSG_BONUS_ROLL_EMPTY, 0x2647 }, // NYI + { Opcode.SMSG_BOSS_KILL, 0x2951 }, + { Opcode.SMSG_BREAK_TARGET, 0x293C }, + { Opcode.SMSG_BROADCAST_ACHIEVEMENT, 0x2BBC }, + { Opcode.SMSG_BROADCAST_LEVELUP, 0x2BBD }, // NYI + { Opcode.SMSG_BUY_FAILED, 0x26CB }, + { Opcode.SMSG_BUY_SUCCEEDED, 0x26CA }, + { Opcode.SMSG_CACHE_INFO, 0x291D }, + { Opcode.SMSG_CACHE_VERSION, 0x291C }, + { Opcode.SMSG_CALENDAR_CLEAR_PENDING_ACTION, 0x26A1 }, + { Opcode.SMSG_CALENDAR_COMMAND_RESULT, 0x26A2 }, + { Opcode.SMSG_CALENDAR_COMMUNITY_INVITE, 0x2691 }, + { Opcode.SMSG_CALENDAR_EVENT_REMOVED_ALERT, 0x2699 }, + { Opcode.SMSG_CALENDAR_EVENT_UPDATED_ALERT, 0x269A }, + { Opcode.SMSG_CALENDAR_INVITE_ADDED, 0x2692 }, + { Opcode.SMSG_CALENDAR_INVITE_ALERT, 0x2696 }, + { Opcode.SMSG_CALENDAR_INVITE_NOTES, 0x269B }, + { Opcode.SMSG_CALENDAR_INVITE_NOTES_ALERT, 0x269C }, + { Opcode.SMSG_CALENDAR_INVITE_REMOVED, 0x2693 }, + { Opcode.SMSG_CALENDAR_INVITE_REMOVED_ALERT, 0x2698 }, + { Opcode.SMSG_CALENDAR_INVITE_STATUS, 0x2694 }, + { Opcode.SMSG_CALENDAR_INVITE_STATUS_ALERT, 0x2697 }, + { Opcode.SMSG_CALENDAR_MODERATOR_STATUS, 0x2695 }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_ADDED, 0x269D }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_REMOVED, 0x269E }, + { Opcode.SMSG_CALENDAR_RAID_LOCKOUT_UPDATED, 0x269F }, + { Opcode.SMSG_CALENDAR_SEND_CALENDAR, 0x268F }, + { Opcode.SMSG_CALENDAR_SEND_EVENT, 0x2690 }, + { Opcode.SMSG_CALENDAR_SEND_NUM_PENDING, 0x26A0 }, + { Opcode.SMSG_CAMERA_EFFECT, 0x272A }, // NYI + { Opcode.SMSG_CANCEL_AUTO_REPEAT, 0x26E2 }, + { Opcode.SMSG_CANCEL_COMBAT, 0x294B }, + { Opcode.SMSG_CANCEL_ORPHAN_SPELL_VISUAL, 0x2C45 }, + { Opcode.SMSG_CANCEL_PRELOAD_WORLD, 0x2598 }, // NYI + { Opcode.SMSG_CANCEL_SCENE, 0x2639 }, + { Opcode.SMSG_CANCEL_SPELL_VISUAL, 0x2C43 }, + { Opcode.SMSG_CANCEL_SPELL_VISUAL_KIT, 0x2C47 }, + { Opcode.SMSG_CAN_DUEL_RESULT, 0x2947 }, + { Opcode.SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE, 0x2819 }, // NYI + { Opcode.SMSG_CAST_FAILED, 0x2C56 }, + { Opcode.SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT, 0x3004 }, // NYI + { Opcode.SMSG_CHANGE_REALM_TICKET_RESPONSE, 0x280C }, + { Opcode.SMSG_CHANNEL_LIST, 0x2BC4 }, + { Opcode.SMSG_CHANNEL_NOTIFY, 0x2BC1 }, + { Opcode.SMSG_CHANNEL_NOTIFY_JOINED, 0x2BC2 }, + { Opcode.SMSG_CHANNEL_NOTIFY_LEFT, 0x2BC3 }, + { Opcode.SMSG_CHARACTER_CHECK_UPGRADE_RESULT, 0x27C5 }, // NYI + { Opcode.SMSG_CHARACTER_LOGIN_FAILED, 0x2709 }, + { Opcode.SMSG_CHARACTER_OBJECT_TEST_RESPONSE, 0x2791 }, // NYI + { Opcode.SMSG_CHARACTER_RENAME_RESULT, 0x276B }, + { Opcode.SMSG_CHARACTER_UPGRADE_ABORTED, 0x27C4 }, // NYI + { Opcode.SMSG_CHARACTER_UPGRADE_COMPLETE, 0x27C3 }, // NYI + { Opcode.SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT, 0x27C6 }, // NYI + { Opcode.SMSG_CHARACTER_UPGRADE_STARTED, 0x27C2 }, // NYI + { Opcode.SMSG_CHAR_CUSTOMIZE_FAILURE, 0x26E7 }, + { Opcode.SMSG_CHAR_CUSTOMIZE_SUCCESS, 0x26E8 }, + { Opcode.SMSG_CHAR_FACTION_CHANGE_RESULT, 0x27AF }, + { Opcode.SMSG_CHAT, 0x2BAD }, + { Opcode.SMSG_CHAT_AUTO_RESPONDED, 0x2BB8 }, // NYI + { Opcode.SMSG_CHAT_DOWN, 0x2BBE }, // NYI + { Opcode.SMSG_CHAT_IGNORED_ACCOUNT_MUTED, 0x2BAC }, // NYI + { Opcode.SMSG_CHAT_IS_DOWN, 0x2BBF }, // NYI + { Opcode.SMSG_CHAT_NOT_IN_PARTY, 0x2BB2 }, // NYI + { Opcode.SMSG_CHAT_PLAYER_AMBIGUOUS, 0x2BB0 }, + { Opcode.SMSG_CHAT_PLAYER_NOTFOUND, 0x2BB7 }, + { Opcode.SMSG_CHAT_RECONNECT, 0x2BC0 }, // NYI + { Opcode.SMSG_CHAT_RESTRICTED, 0x2BB3 }, + { Opcode.SMSG_CHAT_SERVER_MESSAGE, 0x2BC5 }, + { Opcode.SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, 0x2C12 }, // NYI + { Opcode.SMSG_CHECK_WARGAME_ENTRY, 0x2592 }, // NYI + { Opcode.SMSG_CLEAR_ALL_SPELL_CHARGES, 0x2C26 }, + { Opcode.SMSG_CLEAR_BOSS_EMOTES, 0x25BD }, + { Opcode.SMSG_CLEAR_COOLDOWN, 0x26BE }, + { Opcode.SMSG_CLEAR_COOLDOWNS, 0x2C25 }, + { Opcode.SMSG_CLEAR_SPELL_CHARGES, 0x2C27 }, + { Opcode.SMSG_CLEAR_TARGET, 0x2948 }, + { Opcode.SMSG_COIN_REMOVED, 0x2619 }, + { Opcode.SMSG_COMBAT_EVENT_FAILED, 0x293F }, // NYI + { Opcode.SMSG_COMMENTATOR_MAP_INFO, 0x270B }, // NYI + { Opcode.SMSG_COMMENTATOR_PLAYER_INFO, 0x270C }, // NYI + { Opcode.SMSG_COMMENTATOR_STATE_CHANGED, 0x270A }, // NYI + { Opcode.SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE, 0x27D5 }, // NYI + { Opcode.SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE, 0x27E1 }, + { Opcode.SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE, 0x27D7 }, + { Opcode.SMSG_COMMERCE_TOKEN_UPDATE, 0x27D6 }, + { Opcode.SMSG_COMPLAINT_RESULT, 0x26AF }, + { Opcode.SMSG_COMPRESSED_PACKET, 0x3052 }, + { Opcode.SMSG_CONFIRM_BARBERS_CHOICE, 0x26C1 }, // NYI + { Opcode.SMSG_CONFIRM_PARTY_INVITE, 0x2818 }, // NYI + { Opcode.SMSG_CONNECT_TO, 0x304D }, + { Opcode.SMSG_CONSOLE_WRITE, 0x2637 }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE, 0x27DD }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED, 0x27DC }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE, 0x27DB }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED, 0x27DF }, // NYI + { Opcode.SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE, 0x27E0 }, // NYI + { Opcode.SMSG_CONTACT_LIST, 0x278F }, + { Opcode.SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE, 0x281F }, // NYI + { Opcode.SMSG_CONTROL_UPDATE, 0x2649 }, + { Opcode.SMSG_CONVERT_RUNE, 0x2C5F }, + { Opcode.SMSG_COOLDOWN_CHEAT, 0x273D }, // NYI + { Opcode.SMSG_COOLDOWN_EVENT, 0x26BD }, + { Opcode.SMSG_CORPSE_LOCATION, 0x2651 }, + { Opcode.SMSG_CORPSE_RECLAIM_DELAY, 0x274E }, + { Opcode.SMSG_CORPSE_TRANSPORT_QUERY, 0x2716 }, + { Opcode.SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE, 0x2AA3 }, + { Opcode.SMSG_CREATE_CHAR, 0x2705 }, + { Opcode.SMSG_CRITERIA_DELETED, 0x26EC }, + { Opcode.SMSG_CRITERIA_UPDATE, 0x26E5 }, + { Opcode.SMSG_CROSSED_INEBRIATION_THRESHOLD, 0x26C6 }, + { Opcode.SMSG_CUSTOM_LOAD_SCREEN, 0x25CD }, + { Opcode.SMSG_DAILY_QUESTS_RESET, 0x2A80 }, + { Opcode.SMSG_DAMAGE_CALC_LOG, 0x2C61 }, // NYI + { Opcode.SMSG_DB_REPLY, 0x290E }, + { Opcode.SMSG_DEATH_RELEASE_LOC, 0x26D7 }, + { Opcode.SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE, 0x2659 }, // NYI + { Opcode.SMSG_DEFENSE_MESSAGE, 0x2BB6 }, + { Opcode.SMSG_DELETE_CHAR, 0x2706 }, + { Opcode.SMSG_DESTROY_ARENA_UNIT, 0x2746 }, + { Opcode.SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 0x26FD }, + { Opcode.SMSG_DIFFERENT_INSTANCE_FROM_PARTY, 0x258A }, // NYI + { Opcode.SMSG_DISENCHANT_CREDIT, 0x25A9 }, // NYI + { Opcode.SMSG_DISMOUNT, 0x26B5 }, // NYI + { Opcode.SMSG_DISMOUNT_RESULT, 0x257C }, // NYI + { Opcode.SMSG_DISPEL_FAILED, 0x2C2F }, + { Opcode.SMSG_DISPLAY_GAME_ERROR, 0x259F }, + { Opcode.SMSG_DISPLAY_PLAYER_CHOICE, 0x2FFC }, + { Opcode.SMSG_DISPLAY_PROMOTION, 0x264E }, + { Opcode.SMSG_DISPLAY_QUEST_POPUP, 0x2A9E }, // NYI + { Opcode.SMSG_DISPLAY_TOAST, 0x2626 }, + { Opcode.SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, 0x25E3 }, // NYI + { Opcode.SMSG_DROP_NEW_CONNECTION, 0x304C }, // NYI + { Opcode.SMSG_DUEL_ARRANGED, 0x2941 }, // NYI + { Opcode.SMSG_DUEL_COMPLETE, 0x2945 }, + { Opcode.SMSG_DUEL_COUNTDOWN, 0x2944 }, + { Opcode.SMSG_DUEL_IN_BOUNDS, 0x2943 }, + { Opcode.SMSG_DUEL_OUT_OF_BOUNDS, 0x2942 }, + { Opcode.SMSG_DUEL_REQUESTED, 0x2940 }, + { Opcode.SMSG_DUEL_WINNER, 0x2946 }, + { Opcode.SMSG_DURABILITY_DAMAGE_DEATH, 0x2749 }, + { Opcode.SMSG_EMOTE, 0x27CC }, + { Opcode.SMSG_ENABLE_BARBER_SHOP, 0x26C0 }, + { Opcode.SMSG_ENCHANTMENT_LOG, 0x2717 }, + { Opcode.SMSG_ENCOUNTER_END, 0x2786 }, // NYI + { Opcode.SMSG_ENCOUNTER_START, 0x2785 }, // NYI + { Opcode.SMSG_END_LIGHTNING_STORM, 0x26AC }, + { Opcode.SMSG_ENSURE_WORLD_LOADED, 0x288B }, // NYI + { Opcode.SMSG_ENTER_ENCRYPTED_MODE, 0x3049 }, + { Opcode.SMSG_ENUM_CHARACTERS_RESULT, 0x2584 }, + { Opcode.SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE, 0x27F7 }, + { Opcode.SMSG_ENVIRONMENTAL_DAMAGE_LOG, 0x2C1E }, + { Opcode.SMSG_EQUIPMENT_SET_ID, 0x26B6 }, + { Opcode.SMSG_EXPECTED_SPAM_RECORDS, 0x2BB1 }, // NYI + { Opcode.SMSG_EXPLORATION_EXPERIENCE, 0x2763 }, + { Opcode.SMSG_FACTION_BONUS_INFO, 0x2729 }, + { Opcode.SMSG_FAILED_PLAYER_CONDITION, 0x2FFA }, // NYI + { Opcode.SMSG_FAILED_QUEST_TURN_IN, 0x2815 }, // NYI + { Opcode.SMSG_FEATURE_SYSTEM_STATUS, 0x25C1 }, + { Opcode.SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, 0x25C2 }, + { Opcode.SMSG_FEIGN_DEATH_RESISTED, 0x2748 }, // NYI + { Opcode.SMSG_FISH_ESCAPED, 0x26D4 }, + { Opcode.SMSG_FISH_NOT_HOOKED, 0x26D3 }, + { Opcode.SMSG_FLIGHT_SPLINE_SYNC, 0x2E2B }, + { Opcode.SMSG_FORCED_DEATH_UPDATE, 0x26D8 }, // NYI + { Opcode.SMSG_FORCE_ANIM, 0x2755 }, // NYI + { Opcode.SMSG_FORCE_OBJECT_RELINK, 0x264D }, // NYI + { Opcode.SMSG_FORCE_RANDOM_TRANSMOG_TOAST, 0x25B4 }, // NYI + { Opcode.SMSG_FRIEND_STATUS, 0x2790 }, + { Opcode.SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, 0x25C5 }, + { Opcode.SMSG_GAME_OBJECT_BASE, 0x282C }, // NYI + { Opcode.SMSG_GAME_OBJECT_CLOSE_INTERACTION, 0x288E }, + { Opcode.SMSG_GAME_OBJECT_CUSTOM_ANIM, 0x25C6 }, + { Opcode.SMSG_GAME_OBJECT_DESPAWN, 0x25C7 }, + { Opcode.SMSG_GAME_OBJECT_INTERACTION, 0x288D }, + { Opcode.SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, 0x2C4A }, + { Opcode.SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT, 0x2C49 }, // NYI + { Opcode.SMSG_GAME_OBJECT_RESET_STATE, 0x2722 }, // NYI + { Opcode.SMSG_GAME_OBJECT_SET_STATE_LOCAL, 0x2808 }, + { Opcode.SMSG_GAME_OBJECT_UI_LINK, 0x271E }, // NYI + { Opcode.SMSG_GAME_SPEED_SET, 0x2685 }, // NYI + { Opcode.SMSG_GAME_TIME_SET, 0x2710 }, // NYI + { Opcode.SMSG_GAME_TIME_UPDATE, 0x270F }, // NYI + { Opcode.SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT, 0x2586 }, + { Opcode.SMSG_GENERATE_SSO_TOKEN_RESPONSE, 0x2820 }, // NYI + { Opcode.SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT, 0x2769 }, + { Opcode.SMSG_GET_REALM_HIDDEN_RESULT, 0x28B0 }, // NYI + { Opcode.SMSG_GET_REMAINING_GAME_TIME_RESPONSE, 0x27DE }, // NYI + { Opcode.SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT, 0x27F3 }, + { Opcode.SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT, 0x27F4 }, + { Opcode.SMSG_GM_PLAYER_INFO, 0x3005 }, // NYI + { Opcode.SMSG_GM_REQUEST_PLAYER_INFO, 0x2FFB }, // NYI + { Opcode.SMSG_GM_TICKET_CASE_STATUS, 0x26A7 }, + { Opcode.SMSG_GM_TICKET_SYSTEM_STATUS, 0x26A6 }, + { Opcode.SMSG_GOD_MODE, 0x2700 }, // NYI + { Opcode.SMSG_GOSSIP_COMPLETE, 0x2A97 }, + { Opcode.SMSG_GOSSIP_MESSAGE, 0x2A98 }, + { Opcode.SMSG_GOSSIP_OPTION_NPC_INTERACTION, 0x2AA7 }, + { Opcode.SMSG_GOSSIP_POI, 0x279B }, + { Opcode.SMSG_GOSSIP_QUEST_UPDATE, 0x2A99 }, // NYI + { Opcode.SMSG_GROUP_ACTION_THROTTLED, 0x258F }, // NYI + { Opcode.SMSG_GROUP_AUTO_KICK, 0x2798 }, // NYI + { Opcode.SMSG_GROUP_DECLINE, 0x2794 }, + { Opcode.SMSG_GROUP_DESTROYED, 0x2797 }, + { Opcode.SMSG_GROUP_NEW_LEADER, 0x262F }, + { Opcode.SMSG_GROUP_REQUEST_DECLINE, 0x2795 }, // NYI + { Opcode.SMSG_GROUP_UNINVITE, 0x2796 }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_DELETED, 0x29C6 }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_EARNED, 0x29C5 }, + { Opcode.SMSG_GUILD_ACHIEVEMENT_MEMBERS, 0x29C8 }, + { Opcode.SMSG_GUILD_BANK_LOG_QUERY_RESULTS, 0x29E0 }, + { Opcode.SMSG_GUILD_BANK_QUERY_RESULTS, 0x29DF }, + { Opcode.SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY, 0x29E1 }, + { Opcode.SMSG_GUILD_BANK_TEXT_QUERY_RESULT, 0x29E4 }, // NYI + { Opcode.SMSG_GUILD_CHALLENGE_COMPLETED, 0x29D4 }, // NYI + { Opcode.SMSG_GUILD_CHALLENGE_UPDATE, 0x29D3 }, + { Opcode.SMSG_GUILD_CHANGE_NAME_RESULT, 0x29DE }, // NYI + { Opcode.SMSG_GUILD_COMMAND_RESULT, 0x29BA }, + { Opcode.SMSG_GUILD_CRITERIA_DELETED, 0x29C7 }, + { Opcode.SMSG_GUILD_CRITERIA_UPDATE, 0x29C4 }, + { Opcode.SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED, 0x29F9 }, + { Opcode.SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, 0x29F8 }, + { Opcode.SMSG_GUILD_EVENT_DISBANDED, 0x29EE }, + { Opcode.SMSG_GUILD_EVENT_LOG_QUERY_RESULTS, 0x29E3 }, + { Opcode.SMSG_GUILD_EVENT_MOTD, 0x29EF }, + { Opcode.SMSG_GUILD_EVENT_NEW_LEADER, 0x29ED }, + { Opcode.SMSG_GUILD_EVENT_PLAYER_JOINED, 0x29EB }, + { Opcode.SMSG_GUILD_EVENT_PLAYER_LEFT, 0x29EC }, + { Opcode.SMSG_GUILD_EVENT_PRESENCE_CHANGE, 0x29F0 }, + { Opcode.SMSG_GUILD_EVENT_RANKS_UPDATED, 0x29F2 }, + { Opcode.SMSG_GUILD_EVENT_RANK_CHANGED, 0x29F3 }, + { Opcode.SMSG_GUILD_EVENT_STATUS_CHANGE, 0x29F1 }, + { Opcode.SMSG_GUILD_EVENT_TAB_ADDED, 0x29F4 }, + { Opcode.SMSG_GUILD_EVENT_TAB_DELETED, 0x29F5 }, // NYI + { Opcode.SMSG_GUILD_EVENT_TAB_MODIFIED, 0x29F6 }, + { Opcode.SMSG_GUILD_EVENT_TAB_TEXT_CHANGED, 0x29F7 }, + { Opcode.SMSG_GUILD_FLAGGED_FOR_RENAME, 0x29DD }, + { Opcode.SMSG_GUILD_HARDCORE_MEMBER_DEATH, 0x29BD }, + { Opcode.SMSG_GUILD_INVITE, 0x29CB }, + { Opcode.SMSG_GUILD_INVITE_DECLINED, 0x29E9 }, // NYI + { Opcode.SMSG_GUILD_INVITE_EXPIRED, 0x29EA }, // NYI + { Opcode.SMSG_GUILD_ITEM_LOOTED_NOTIFY, 0x29D5 }, // NYI + { Opcode.SMSG_GUILD_KNOWN_RECIPES, 0x29BF }, // NYI + { Opcode.SMSG_GUILD_MEMBERS_WITH_RECIPE, 0x29C0 }, // NYI + { Opcode.SMSG_GUILD_MEMBER_DAILY_RESET, 0x29E5 }, + { Opcode.SMSG_GUILD_MEMBER_RECIPES, 0x29BE }, // NYI + { Opcode.SMSG_GUILD_MEMBER_UPDATE_NOTE, 0x29CA }, + { Opcode.SMSG_GUILD_MOVED, 0x29DB }, // NYI + { Opcode.SMSG_GUILD_MOVE_STARTING, 0x29DA }, // NYI + { Opcode.SMSG_GUILD_NAME_CHANGED, 0x29DC }, + { Opcode.SMSG_GUILD_NEWS, 0x29C2 }, + { Opcode.SMSG_GUILD_NEWS_DELETED, 0x29C3 }, // NYI + { Opcode.SMSG_GUILD_PARTY_STATE, 0x29CC }, + { Opcode.SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, 0x29E2 }, + { Opcode.SMSG_GUILD_RANKS, 0x29C9 }, + { Opcode.SMSG_GUILD_REPUTATION_REACTION_CHANGED, 0x29CD }, // NYI + { Opcode.SMSG_GUILD_RESET, 0x29D9 }, // NYI + { Opcode.SMSG_GUILD_REWARD_LIST, 0x29C1 }, + { Opcode.SMSG_GUILD_ROSTER, 0x29BB }, + { Opcode.SMSG_GUILD_ROSTER_UPDATE, 0x29BC }, + { Opcode.SMSG_GUILD_SEND_RANK_CHANGE, 0x29B9 }, + { Opcode.SMSG_HARDCORE_DEATH_ALERT, 0x28B5 }, + { Opcode.SMSG_HEALTH_UPDATE, 0x26D5 }, + { Opcode.SMSG_HIGHEST_THREAT_UPDATE, 0x26DD }, + { Opcode.SMSG_HOTFIX_CONNECT, 0x2911 }, + { Opcode.SMSG_HOTFIX_MESSAGE, 0x2910 }, + { Opcode.SMSG_INITIALIZE_FACTIONS, 0x2728 }, + { Opcode.SMSG_INITIAL_SETUP, 0x2580 }, + { Opcode.SMSG_INIT_WORLD_STATES, 0x274A }, + { Opcode.SMSG_INSPECT_HONOR_STATS, 0x2933 }, // NYI + { Opcode.SMSG_INSPECT_PVP, 0x2726 }, // NYI + { Opcode.SMSG_INSPECT_RESULT, 0x2633 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY, 0x27B5 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT, 0x27B4 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_END, 0x27BD }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT, 0x27B3 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE, 0x27BF }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION, 0x27BE }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE, 0x27B8 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START, 0x27B7 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE, 0x27BC }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED, 0x27C0 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_START, 0x27B9 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_TIMER_START, 0x27B6 }, + { Opcode.SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS, 0x27BB }, // NYI + { Opcode.SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE, 0x27BA }, // NYI + { Opcode.SMSG_INSTANCE_GROUP_SIZE_CHANGED, 0x26FE }, // NYI + { Opcode.SMSG_INSTANCE_INFO, 0x2636 }, + { Opcode.SMSG_INSTANCE_RESET, 0x268A }, + { Opcode.SMSG_INSTANCE_RESET_FAILED, 0x268B }, + { Opcode.SMSG_INSTANCE_SAVE_CREATED, 0x2784 }, + { Opcode.SMSG_INTERRUPT_POWER_REGEN, 0x2C58 }, + { Opcode.SMSG_INVALIDATE_PAGE_TEXT, 0x2918 }, // NYI + { Opcode.SMSG_INVALIDATE_PLAYER, 0x2FFF }, + { Opcode.SMSG_INVALID_PROMOTION_CODE, 0x2757 }, // NYI + { Opcode.SMSG_INVENTORY_CHANGE_FAILURE, 0x2DA5 }, + { Opcode.SMSG_INVENTORY_FIXUP_COMPLETE, 0x2817 }, // NYI + { Opcode.SMSG_INVENTORY_FULL_OVERFLOW, 0x2828 }, + { Opcode.SMSG_ISLAND_AZERITE_GAIN, 0x2760 }, // NYI + { Opcode.SMSG_ISLAND_COMPLETE, 0x2761 }, // NYI + { Opcode.SMSG_IS_QUEST_COMPLETE_RESPONSE, 0x2A84 }, // NYI + { Opcode.SMSG_ITEM_CHANGED, 0x26EF }, // NYI + { Opcode.SMSG_ITEM_COOLDOWN, 0x27CB }, + { Opcode.SMSG_ITEM_ENCHANT_TIME_UPDATE, 0x2759 }, + { Opcode.SMSG_ITEM_EXPIRE_PURCHASE_REFUND, 0x259E }, + { Opcode.SMSG_ITEM_PURCHASE_REFUND_RESULT, 0x259C }, + { Opcode.SMSG_ITEM_PUSH_RESULT, 0x2625 }, + { Opcode.SMSG_ITEM_TIME_UPDATE, 0x2758 }, + { Opcode.SMSG_KICK_REASON, 0x268D }, // NYI + { Opcode.SMSG_LATENCY_REPORT_PING, 0x2886 }, // NYI + { Opcode.SMSG_LEARNED_SPELLS, 0x2C4C }, + { Opcode.SMSG_LEARN_PVP_TALENT_FAILED, 0x25D6 }, // NYI + { Opcode.SMSG_LEARN_TALENT_FAILED, 0x25D5 }, + { Opcode.SMSG_LEGACY_LOOT_RULES, 0x282D }, + { Opcode.SMSG_LEVEL_UP_INFO, 0x26EE }, + { Opcode.SMSG_LFG_BOOT_PLAYER, 0x2A35 }, + { Opcode.SMSG_LFG_DISABLED, 0x2A33 }, + { Opcode.SMSG_LFG_EXPAND_SEARCH_PROMPT, 0x2A3B }, // NYI + { Opcode.SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN, 0x2A25 }, // NYI + { Opcode.SMSG_LFG_JOIN_RESULT, 0x2A1C }, + { Opcode.SMSG_LFG_LIST_APPLICANT_LIST_UPDATE, 0x2A2B }, // NYI + { Opcode.SMSG_LFG_LIST_APPLICATION_STATUS_UPDATE, 0x2A28 }, // NYI + { Opcode.SMSG_LFG_LIST_APPLY_TO_GROUP_RESULT, 0x2A29 }, // NYI + { Opcode.SMSG_LFG_LIST_JOIN_RESULT, 0x2A1D }, // NYI + { Opcode.SMSG_LFG_LIST_SEARCH_RESULTS, 0x2A1E }, // NYI + { Opcode.SMSG_LFG_LIST_SEARCH_RESULTS_UPDATE, 0x2A2C }, // NYI + { Opcode.SMSG_LFG_LIST_SEARCH_STATUS, 0x2A1F }, // NYI + { Opcode.SMSG_LFG_LIST_UPDATE_BLACKLIST, 0x2A2A }, + { Opcode.SMSG_LFG_LIST_UPDATE_EXPIRATION, 0x2A27 }, // NYI + { Opcode.SMSG_LFG_LIST_UPDATE_STATUS, 0x2A26 }, // NYI + { Opcode.SMSG_LFG_OFFER_CONTINUE, 0x2A34 }, + { Opcode.SMSG_LFG_PARTY_INFO, 0x2A36 }, + { Opcode.SMSG_LFG_PLAYER_INFO, 0x2A37 }, + { Opcode.SMSG_LFG_PLAYER_REWARD, 0x2A38 }, + { Opcode.SMSG_LFG_PROPOSAL_UPDATE, 0x2A2D }, + { Opcode.SMSG_LFG_QUEUE_STATUS, 0x2A20 }, + { Opcode.SMSG_LFG_READY_CHECK_RESULT, 0x2A3A }, // NYI + { Opcode.SMSG_LFG_READY_CHECK_UPDATE, 0x2A22 }, // NYI + { Opcode.SMSG_LFG_ROLE_CHECK_UPDATE, 0x2A21 }, + { Opcode.SMSG_LFG_SLOT_INVALID, 0x2A30 }, // NYI + { Opcode.SMSG_LFG_TELEPORT_DENIED, 0x2A32 }, + { Opcode.SMSG_LFG_UPDATE_STATUS, 0x2A24 }, + { Opcode.SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, 0x2776 }, // NYI + { Opcode.SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, 0x2775 }, // NYI + { Opcode.SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, 0x276A }, // NYI + { Opcode.SMSG_LOAD_CUF_PROFILES, 0x25BE }, + { Opcode.SMSG_LOAD_EQUIPMENT_SET, 0x2712 }, + { Opcode.SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER, 0x2890 }, // NYI + { Opcode.SMSG_LOBBY_MATCHMAKER_PARTY_INFO, 0x2891 }, // NYI + { Opcode.SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED, 0x2892 }, // NYI + { Opcode.SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE, 0x2893 }, // NYI + { Opcode.SMSG_LOGIN_SET_TIME_SPEED, 0x2711 }, + { Opcode.SMSG_LOGIN_VERIFY_WORLD, 0x2599 }, + { Opcode.SMSG_LOGOUT_CANCEL_ACK, 0x2689 }, + { Opcode.SMSG_LOGOUT_COMPLETE, 0x2688 }, + { Opcode.SMSG_LOGOUT_RESPONSE, 0x2687 }, + { Opcode.SMSG_LOG_XP_GAIN, 0x26EA }, + { Opcode.SMSG_LOOT_ALL_PASSED, 0x2623 }, + { Opcode.SMSG_LOOT_LIST, 0x2745 }, + { Opcode.SMSG_LOOT_MONEY_NOTIFY, 0x261E }, + { Opcode.SMSG_LOOT_RELEASE, 0x261D }, + { Opcode.SMSG_LOOT_RELEASE_ALL, 0x261C }, + { Opcode.SMSG_LOOT_REMOVED, 0x2617 }, + { Opcode.SMSG_LOOT_RESPONSE, 0x2616 }, + { Opcode.SMSG_LOOT_ROLL, 0x2620 }, + { Opcode.SMSG_LOOT_ROLLS_COMPLETE, 0x2622 }, + { Opcode.SMSG_LOOT_ROLL_WON, 0x2624 }, + { Opcode.SMSG_LOSS_OF_CONTROL_AURA_UPDATE, 0x2674 }, // NYI + { Opcode.SMSG_MAIL_COMMAND_RESULT, 0x263D }, + { Opcode.SMSG_MAIL_LIST_RESULT, 0x275A }, + { Opcode.SMSG_MAIL_QUERY_NEXT_TIME_RESULT, 0x275B }, + { Opcode.SMSG_MAP_OBJECTIVES_INIT, 0x2950 }, // NYI + { Opcode.SMSG_MAP_OBJ_EVENTS, 0x25C8 }, // NYI + { Opcode.SMSG_MASTER_LOOT_CANDIDATE_LIST, 0x2621 }, + { Opcode.SMSG_MESSAGE_BOX, 0x2576 }, // NYI + { Opcode.SMSG_MINIMAP_PING, 0x26D2 }, + { Opcode.SMSG_MIRROR_IMAGE_COMPONENTED_DATA, 0x2C14 }, + { Opcode.SMSG_MIRROR_IMAGE_CREATURE_DATA, 0x2C13 }, + { Opcode.SMSG_MISSILE_CANCEL, 0x25C9 }, + { Opcode.SMSG_MODIFY_COOLDOWN, 0x276C }, + { Opcode.SMSG_MOUNT_RESULT, 0x257B }, + { Opcode.SMSG_MOVEMENT_ENFORCEMENT_ALERT, 0x2849 }, // NYI + { Opcode.SMSG_MOVE_APPLY_INERTIA, 0x2E2E }, // NYI + { Opcode.SMSG_MOVE_APPLY_MOVEMENT_FORCE, 0x2E15 }, + { Opcode.SMSG_MOVE_DISABLE_COLLISION, 0x2E11 }, + { Opcode.SMSG_MOVE_DISABLE_DOUBLE_JUMP, 0x2DFD }, + { Opcode.SMSG_MOVE_DISABLE_GRAVITY, 0x2E0D }, + { Opcode.SMSG_MOVE_DISABLE_INERTIA, 0x2E0F }, + { Opcode.SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 0x2E0C }, + { Opcode.SMSG_MOVE_ENABLE_COLLISION, 0x2E12 }, + { Opcode.SMSG_MOVE_ENABLE_DOUBLE_JUMP, 0x2DFC }, + { Opcode.SMSG_MOVE_ENABLE_GRAVITY, 0x2E0E }, + { Opcode.SMSG_MOVE_ENABLE_INERTIA, 0x2E10 }, + { Opcode.SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 0x2E0B }, + { Opcode.SMSG_MOVE_KNOCK_BACK, 0x2E03 }, + { Opcode.SMSG_MOVE_REMOVE_INERTIA, 0x2E2F }, // NYI + { Opcode.SMSG_MOVE_REMOVE_MOVEMENT_FORCE, 0x2E16 }, + { Opcode.SMSG_MOVE_ROOT, 0x2DF9 }, + { Opcode.SMSG_MOVE_SET_ACTIVE_MOVER, 0x2DD5 }, + { Opcode.SMSG_MOVE_SET_CAN_FLY, 0x2E05 }, + { Opcode.SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING, 0x2E07 }, + { Opcode.SMSG_MOVE_SET_COLLISION_HEIGHT, 0x2E13 }, + { Opcode.SMSG_MOVE_SET_COMPOUND_STATE, 0x2E17 }, + { Opcode.SMSG_MOVE_SET_FEATHER_FALL, 0x2DFF }, + { Opcode.SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 0x2DF5 }, + { Opcode.SMSG_MOVE_SET_FLIGHT_SPEED, 0x2DF4 }, + { Opcode.SMSG_MOVE_SET_HOVERING, 0x2E01 }, + { Opcode.SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, 0x2E09 }, + { Opcode.SMSG_MOVE_SET_LAND_WALK, 0x2DFE }, + { Opcode.SMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE, 0x2DE6 }, + { Opcode.SMSG_MOVE_SET_NORMAL_FALL, 0x2E00 }, + { Opcode.SMSG_MOVE_SET_PITCH_RATE, 0x2DF8 }, + { Opcode.SMSG_MOVE_SET_RUN_BACK_SPEED, 0x2DF1 }, + { Opcode.SMSG_MOVE_SET_RUN_SPEED, 0x2DF0 }, + { Opcode.SMSG_MOVE_SET_SWIM_BACK_SPEED, 0x2DF3 }, + { Opcode.SMSG_MOVE_SET_SWIM_SPEED, 0x2DF2 }, + { Opcode.SMSG_MOVE_SET_TURN_RATE, 0x2DF7 }, + { Opcode.SMSG_MOVE_SET_VEHICLE_REC_ID, 0x2E14 }, + { Opcode.SMSG_MOVE_SET_WALK_SPEED, 0x2DF6 }, + { Opcode.SMSG_MOVE_SET_WATER_WALK, 0x2DFB }, + { Opcode.SMSG_MOVE_SKIP_TIME, 0x2E18 }, + { Opcode.SMSG_MOVE_SPLINE_DISABLE_COLLISION, 0x2E1D }, + { Opcode.SMSG_MOVE_SPLINE_DISABLE_GRAVITY, 0x2E1B }, + { Opcode.SMSG_MOVE_SPLINE_ENABLE_COLLISION, 0x2E1E }, + { Opcode.SMSG_MOVE_SPLINE_ENABLE_GRAVITY, 0x2E1C }, + { Opcode.SMSG_MOVE_SPLINE_ROOT, 0x2E19 }, + { Opcode.SMSG_MOVE_SPLINE_SET_FEATHER_FALL, 0x2E1F }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED, 0x2DEC }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED, 0x2DEB }, + { Opcode.SMSG_MOVE_SPLINE_SET_FLYING, 0x2E29 }, + { Opcode.SMSG_MOVE_SPLINE_SET_HOVER, 0x2E21 }, + { Opcode.SMSG_MOVE_SPLINE_SET_LAND_WALK, 0x2E24 }, + { Opcode.SMSG_MOVE_SPLINE_SET_NORMAL_FALL, 0x2E20 }, + { Opcode.SMSG_MOVE_SPLINE_SET_PITCH_RATE, 0x2DEF }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED, 0x2DE8 }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_MODE, 0x2E27 }, + { Opcode.SMSG_MOVE_SPLINE_SET_RUN_SPEED, 0x2DE7 }, + { Opcode.SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED, 0x2DEA }, + { Opcode.SMSG_MOVE_SPLINE_SET_SWIM_SPEED, 0x2DE9 }, + { Opcode.SMSG_MOVE_SPLINE_SET_TURN_RATE, 0x2DEE }, + { Opcode.SMSG_MOVE_SPLINE_SET_WALK_MODE, 0x2E28 }, + { Opcode.SMSG_MOVE_SPLINE_SET_WALK_SPEED, 0x2DED }, + { Opcode.SMSG_MOVE_SPLINE_SET_WATER_WALK, 0x2E23 }, + { Opcode.SMSG_MOVE_SPLINE_START_SWIM, 0x2E25 }, + { Opcode.SMSG_MOVE_SPLINE_STOP_SWIM, 0x2E26 }, + { Opcode.SMSG_MOVE_SPLINE_UNROOT, 0x2E1A }, + { Opcode.SMSG_MOVE_SPLINE_UNSET_FLYING, 0x2E2A }, + { Opcode.SMSG_MOVE_SPLINE_UNSET_HOVER, 0x2E22 }, + { Opcode.SMSG_MOVE_TELEPORT, 0x2E04 }, + { Opcode.SMSG_MOVE_UNROOT, 0x2DFA }, + { Opcode.SMSG_MOVE_UNSET_CAN_FLY, 0x2E06 }, + { Opcode.SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING, 0x2E08 }, + { Opcode.SMSG_MOVE_UNSET_HOVERING, 0x2E02 }, + { Opcode.SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES, 0x2E0A }, + { Opcode.SMSG_MOVE_UPDATE, 0x2DE0 }, + { Opcode.SMSG_MOVE_UPDATE_APPLY_INERTIA, 0x2E30 }, // NYI + { Opcode.SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE, 0x2DE4 }, + { Opcode.SMSG_MOVE_UPDATE_COLLISION_HEIGHT, 0x2DDF }, + { Opcode.SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, 0x2DDC }, + { Opcode.SMSG_MOVE_UPDATE_FLIGHT_SPEED, 0x2DDB }, + { Opcode.SMSG_MOVE_UPDATE_KNOCK_BACK, 0x2DE2 }, + { Opcode.SMSG_MOVE_UPDATE_MOD_MOVEMENT_FORCE_MAGNITUDE, 0x2DE3 }, + { Opcode.SMSG_MOVE_UPDATE_PITCH_RATE, 0x2DDE }, + { Opcode.SMSG_MOVE_UPDATE_REMOVE_INERTIA, 0x2E31 }, // NYI + { Opcode.SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, 0x2DE5 }, + { Opcode.SMSG_MOVE_UPDATE_RUN_BACK_SPEED, 0x2DD7 }, + { Opcode.SMSG_MOVE_UPDATE_RUN_SPEED, 0x2DD6 }, + { Opcode.SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, 0x2DDA }, + { Opcode.SMSG_MOVE_UPDATE_SWIM_SPEED, 0x2DD9 }, + { Opcode.SMSG_MOVE_UPDATE_TELEPORT, 0x2DE1 }, + { Opcode.SMSG_MOVE_UPDATE_TURN_RATE, 0x2DDD }, + { Opcode.SMSG_MOVE_UPDATE_WALK_SPEED, 0x2DD8 }, + { Opcode.SMSG_MULTIPLE_PACKETS, 0x3051 }, + { Opcode.SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, 0x25DE }, // NYI + { Opcode.SMSG_NEW_DATA_BUILD, 0x28AF }, // NYI + { Opcode.SMSG_NEW_TAXI_PATH, 0x2683 }, + { Opcode.SMSG_NEW_WORLD, 0x2596 }, + { Opcode.SMSG_NOTIFY_DEST_LOC_SPELL_CAST, 0x2C42 }, // NYI + { Opcode.SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, 0x26AE }, + { Opcode.SMSG_NOTIFY_MONEY, 0x259B }, // NYI + { Opcode.SMSG_NOTIFY_RECEIVED_MAIL, 0x263E }, + { Opcode.SMSG_NPC_INTERACTION_OPEN_RESULT, 0x288C }, + { Opcode.SMSG_OFFER_PETITION_ERROR, 0x26BA }, + { Opcode.SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, 0x26EB }, + { Opcode.SMSG_ON_MONSTER_MOVE, 0x2DD4 }, + { Opcode.SMSG_OPEN_CONTAINER, 0x2DA6 }, // NYI + { Opcode.SMSG_OPEN_LFG_DUNGEON_FINDER, 0x2A31 }, // NYI + { Opcode.SMSG_OVERRIDE_LIGHT, 0x26BF }, + { Opcode.SMSG_PAGE_TEXT, 0x271D }, + { Opcode.SMSG_PARTY_COMMAND_RESULT, 0x2799 }, + { Opcode.SMSG_PARTY_INVITE, 0x25BF }, + { Opcode.SMSG_PARTY_KILL_LOG, 0x275E }, + { Opcode.SMSG_PARTY_MEMBER_FULL_STATE, 0x275D }, + { Opcode.SMSG_PARTY_MEMBER_PARTIAL_STATE, 0x275C }, // NYI + { Opcode.SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE, 0x2879 }, // NYI + { Opcode.SMSG_PARTY_UPDATE, 0x25F6 }, + { Opcode.SMSG_PAUSE_MIRROR_TIMER, 0x2714 }, + { Opcode.SMSG_PENDING_RAID_LOCK, 0x26FC }, + { Opcode.SMSG_PETITION_ALREADY_SIGNED, 0x25A1 }, + { Opcode.SMSG_PETITION_RENAME_GUILD_RESPONSE, 0x29FB }, + { Opcode.SMSG_PETITION_SHOW_LIST, 0x26C3 }, + { Opcode.SMSG_PETITION_SHOW_SIGNATURES, 0x26C4 }, + { Opcode.SMSG_PETITION_SIGN_RESULTS, 0x2750 }, + { Opcode.SMSG_PET_ACTION_FEEDBACK, 0x274D }, + { Opcode.SMSG_PET_ACTION_SOUND, 0x26A4 }, + { Opcode.SMSG_PET_BATTLE_SLOT_UPDATES, 0x25EE }, + { Opcode.SMSG_PET_CAST_FAILED, 0x2C57 }, + { Opcode.SMSG_PET_CLEAR_SPELLS, 0x2C23 }, // NYI + { Opcode.SMSG_PET_DISMISS_SOUND, 0x26A5 }, // NYI + { Opcode.SMSG_PET_GOD_MODE, 0x267F }, // NYI + { Opcode.SMSG_PET_GUIDS, 0x2708 }, // NYI + { Opcode.SMSG_PET_LEARNED_SPELLS, 0x2C4E }, + { Opcode.SMSG_PET_MODE, 0x2589 }, + { Opcode.SMSG_PET_NAME_INVALID, 0x26C8 }, + { Opcode.SMSG_PET_NEWLY_TAMED, 0x2588 }, // NYI + { Opcode.SMSG_PET_SPELLS_MESSAGE, 0x2C24 }, + { Opcode.SMSG_PET_STABLE_RESULT, 0x2595 }, + { Opcode.SMSG_PET_TAME_FAILURE, 0x26B7 }, + { Opcode.SMSG_PET_UNLEARNED_SPELLS, 0x2C4F }, + { Opcode.SMSG_PHASE_SHIFT_CHANGE, 0x2578 }, + { Opcode.SMSG_PLAYED_TIME, 0x26D9 }, + { Opcode.SMSG_PLAYER_ACKNOWLEDGE_ARROW_CALLOUT, 0x3022 }, // NYI + { Opcode.SMSG_PLAYER_BATTLEFIELD_AUTO_QUEUE, 0x301C }, // NYI + { Opcode.SMSG_PLAYER_BONUS_ROLL_FAILED, 0x3016 }, // NYI + { Opcode.SMSG_PLAYER_BOUND, 0x2FF8 }, + { Opcode.SMSG_PLAYER_CHOICE_CLEAR, 0x2FFE }, // NYI + { Opcode.SMSG_PLAYER_CHOICE_DISPLAY_ERROR, 0x2FFD }, // NYI + { Opcode.SMSG_PLAYER_CONDITION_RESULT, 0x300A }, // NYI + { Opcode.SMSG_PLAYER_HIDE_ARROW_CALLOUT, 0x3021 }, // NYI + { Opcode.SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, 0x3009 }, + { Opcode.SMSG_PLAYER_SAVE_GUILD_EMBLEM, 0x29FA }, + { Opcode.SMSG_PLAYER_SHOW_ARROW_CALLOUT, 0x3020 }, // NYI + { Opcode.SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY, 0x301E }, // NYI + { Opcode.SMSG_PLAYER_SHOW_PARTY_POSE_UI, 0x301F }, // NYI + { Opcode.SMSG_PLAYER_SHOW_UI_EVENT_TOAST, 0x3019 }, // NYI + { Opcode.SMSG_PLAYER_SKINNED, 0x3006 }, // NYI + { Opcode.SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL, 0x300D }, // NYI + { Opcode.SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL, 0x300C }, // NYI + { Opcode.SMSG_PLAYER_WORLD_PVP_QUEUE, 0x301D }, // NYI + { Opcode.SMSG_PLAY_MUSIC, 0x2771 }, + { Opcode.SMSG_PLAY_OBJECT_SOUND, 0x2772 }, + { Opcode.SMSG_PLAY_ONE_SHOT_ANIM_KIT, 0x2735 }, + { Opcode.SMSG_PLAY_ORPHAN_SPELL_VISUAL, 0x2C46 }, + { Opcode.SMSG_PLAY_SCENE, 0x2638 }, + { Opcode.SMSG_PLAY_SOUND, 0x2770 }, + { Opcode.SMSG_PLAY_SPEAKERBOT_SOUND, 0x2773 }, + { Opcode.SMSG_PLAY_SPELL_VISUAL, 0x2C44 }, + { Opcode.SMSG_PLAY_SPELL_VISUAL_KIT, 0x2C48 }, + { Opcode.SMSG_PONG, 0x304E }, + { Opcode.SMSG_POWER_UPDATE, 0x26D6 }, + { Opcode.SMSG_PRELOAD_CHILD_MAP, 0x2579 }, // NYI + { Opcode.SMSG_PRELOAD_WORLD, 0x2597 }, // NYI + { Opcode.SMSG_PREPOPULATE_NAME_CACHE, 0x284C }, // NYI + { Opcode.SMSG_PRE_RESSURECT, 0x276F }, + { Opcode.SMSG_PRINT_NOTIFICATION, 0x25CC }, + { Opcode.SMSG_PROC_RESIST, 0x275F }, + { Opcode.SMSG_PROPOSE_LEVEL_GRANT, 0x26E1 }, // NYI + { Opcode.SMSG_PUSH_SPELL_TO_ACTION_BAR, 0x2C50 }, // NYI + { Opcode.SMSG_PVP_CREDIT, 0x294A }, + { Opcode.SMSG_PVP_LOG_DATA, 0x2934 }, + { Opcode.SMSG_PVP_MATCH_INITIALIZE, 0x2956 }, + { Opcode.SMSG_PVP_MATCH_START, 0x2953 }, + { Opcode.SMSG_PVP_OPTIONS_ENABLED, 0x2938 }, + { Opcode.SMSG_PVP_SEASON, 0x25C3 }, + { Opcode.SMSG_QUERY_ARENA_TEAM_RESPONSE, 0x2920 }, + { Opcode.SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, 0x291A }, + { Opcode.SMSG_QUERY_CREATURE_RESPONSE, 0x2914 }, + { Opcode.SMSG_QUERY_GAME_OBJECT_RESPONSE, 0x2915 }, + { Opcode.SMSG_QUERY_GUILD_INFO_RESPONSE, 0x29E6 }, + { Opcode.SMSG_QUERY_ITEM_TEXT_RESPONSE, 0x291E }, + { Opcode.SMSG_QUERY_NPC_TEXT_RESPONSE, 0x2916 }, + { Opcode.SMSG_QUERY_PAGE_TEXT_RESPONSE, 0x2917 }, + { Opcode.SMSG_QUERY_PETITION_RESPONSE, 0x291B }, + { Opcode.SMSG_QUERY_PET_NAME_RESPONSE, 0x2919 }, + { Opcode.SMSG_QUERY_PLAYER_NAMES_RESPONSE, 0x301B }, + { Opcode.SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE, 0x3002 }, // NYI + { Opcode.SMSG_QUERY_QUEST_INFO_RESPONSE, 0x2A96 }, + { Opcode.SMSG_QUERY_TIME_RESPONSE, 0x26E9 }, + { Opcode.SMSG_QUEST_COMPLETION_NPC_RESPONSE, 0x2A81 }, + { Opcode.SMSG_QUEST_CONFIRM_ACCEPT, 0x2A8F }, + { Opcode.SMSG_QUEST_FORCE_REMOVED, 0x2A9C }, + { Opcode.SMSG_QUEST_GIVER_INVALID_QUEST, 0x2A85 }, + { Opcode.SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, 0x2A94 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_COMPLETE, 0x2A83 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_DETAILS, 0x2A92 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_FAILED, 0x2A86 }, + { Opcode.SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE, 0x2A9A }, + { Opcode.SMSG_QUEST_GIVER_REQUEST_ITEMS, 0x2A93 }, + { Opcode.SMSG_QUEST_GIVER_STATUS, 0x2A9B }, + { Opcode.SMSG_QUEST_GIVER_STATUS_MULTIPLE, 0x2A91 }, + { Opcode.SMSG_QUEST_ITEM_USABILITY_RESPONSE, 0x2A82 }, // NYI + { Opcode.SMSG_QUEST_LOG_FULL, 0x2A87 }, + { Opcode.SMSG_QUEST_NON_LOG_UPDATE_COMPLETE, 0x2A88 }, + { Opcode.SMSG_QUEST_POI_QUERY_RESPONSE, 0x2A9D }, + { Opcode.SMSG_QUEST_POI_UPDATE_RESPONSE, 0x2A9F }, // NYI + { Opcode.SMSG_QUEST_PUSH_RESULT, 0x2A90 }, + { Opcode.SMSG_QUEST_SESSION_READY_CHECK, 0x285D }, // NYI + { Opcode.SMSG_QUEST_SESSION_READY_CHECK_RESPONSE, 0x285E }, // NYI + { Opcode.SMSG_QUEST_SESSION_RESULT, 0x285C }, // NYI + { Opcode.SMSG_QUEST_UPDATE_ADD_CREDIT, 0x2A8C }, + { Opcode.SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, 0x2A8D }, + { Opcode.SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, 0x2A8E }, + { Opcode.SMSG_QUEST_UPDATE_COMPLETE, 0x2A89 }, + { Opcode.SMSG_QUEST_UPDATE_FAILED, 0x2A8A }, // NYI + { Opcode.SMSG_QUEST_UPDATE_FAILED_TIMER, 0x2A8B }, + { Opcode.SMSG_QUEUE_SUMMARY_UPDATE, 0x2816 }, // NYI + { Opcode.SMSG_RAID_DIFFICULTY_SET, 0x27B0 }, + { Opcode.SMSG_RAID_GROUP_ONLY, 0x27B2 }, + { Opcode.SMSG_RAID_INSTANCE_MESSAGE, 0x2BB4 }, + { Opcode.SMSG_RAID_MARKERS_CHANGED, 0x25A2 }, + { Opcode.SMSG_RANDOM_ROLL, 0x2632 }, + { Opcode.SMSG_RATED_PVP_INFO, 0x2931 }, + { Opcode.SMSG_READY_CHECK_COMPLETED, 0x25FA }, + { Opcode.SMSG_READY_CHECK_RESPONSE, 0x25F9 }, + { Opcode.SMSG_READY_CHECK_STARTED, 0x25F8 }, + { Opcode.SMSG_READ_ITEM_RESULT_FAILED, 0x27AC }, + { Opcode.SMSG_READ_ITEM_RESULT_OK, 0x27A4 }, + { Opcode.SMSG_REALM_QUERY_RESPONSE, 0x2913 }, + { Opcode.SMSG_REATTACH_RESURRECT, 0x274F }, // NYI + { Opcode.SMSG_RECRUIT_A_FRIEND_FAILURE, 0x26C5 }, + { Opcode.SMSG_REFER_A_FRIEND_EXPIRED, 0x2727 }, // NYI + { Opcode.SMSG_REFORGE_RESULT, 0x2581 }, // NYI + { Opcode.SMSG_REFRESH_COMPONENT, 0x2653 }, // NYI + { Opcode.SMSG_REFRESH_SPELL_HISTORY, 0x2C2B }, + { Opcode.SMSG_REMOVE_ITEM_PASSIVE, 0x25AD }, + { Opcode.SMSG_REPORT_PVP_PLAYER_AFK_RESULT, 0x3001 }, + { Opcode.SMSG_REQUEST_CEMETERY_LIST_RESPONSE, 0x2590 }, + { Opcode.SMSG_REQUEST_PVP_REWARDS_RESPONSE, 0x2939 }, + { Opcode.SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE, 0x293A }, // NYI + { Opcode.SMSG_RESET_COMPRESSION_CONTEXT, 0x304F }, // NYI + { Opcode.SMSG_RESET_FAILED_NOTIFY, 0x26BB }, + { Opcode.SMSG_RESET_QUEST_POI, 0x2AA0 }, // NYI + { Opcode.SMSG_RESET_RANGED_COMBAT_TIMER, 0x2949 }, // NYI + { Opcode.SMSG_RESET_WEEKLY_CURRENCY, 0x2575 }, + { Opcode.SMSG_RESPEC_WIPE_CONFIRM, 0x2614 }, + { Opcode.SMSG_RESPOND_INSPECT_ACHIEVEMENTS, 0x2572 }, + { Opcode.SMSG_RESUME_CAST, 0x2C3A }, // NYI + { Opcode.SMSG_RESUME_CAST_BAR, 0x2C3D }, // NYI + { Opcode.SMSG_RESUME_COMMS, 0x304B }, + { Opcode.SMSG_RESUME_TOKEN, 0x25AB }, + { Opcode.SMSG_RESURRECT_REQUEST, 0x257E }, + { Opcode.SMSG_RESYNC_RUNES, 0x2C5E }, + { Opcode.SMSG_ROLE_CHANGED_INFORM, 0x258B }, + { Opcode.SMSG_ROLE_CHOSEN, 0x2A39 }, + { Opcode.SMSG_ROLE_POLL_INFORM, 0x258C }, + { Opcode.SMSG_RUNE_REGEN_DEBUG, 0x25B8 }, // NYI + { Opcode.SMSG_SCENARIO_COMPLETED, 0x27F0 }, + { Opcode.SMSG_SCENARIO_POIS, 0x2635 }, + { Opcode.SMSG_SCENARIO_PROGRESS_UPDATE, 0x262E }, + { Opcode.SMSG_SCENARIO_SHOW_CRITERIA, 0x2806 }, // NYI + { Opcode.SMSG_SCENARIO_STATE, 0x262D }, + { Opcode.SMSG_SCENARIO_UI_UPDATE, 0x2805 }, // NYI + { Opcode.SMSG_SCENARIO_VACATE, 0x27AD }, + { Opcode.SMSG_SCENE_OBJECT_EVENT, 0x25E4 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND, 0x25E9 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED, 0x25EA }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND, 0x25E6 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE, 0x25E5 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE, 0x25E8 }, // NYI + { Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT, 0x25E7 }, // NYI + { Opcode.SMSG_SCRIPT_CAST, 0x2C55 }, // NYI + { Opcode.SMSG_SELL_RESPONSE, 0x26C9 }, + { Opcode.SMSG_SEND_ITEM_PASSIVES, 0x25AE }, + { Opcode.SMSG_SEND_KNOWN_SPELLS, 0x2C29 }, + { Opcode.SMSG_SEND_RAID_TARGET_UPDATE_ALL, 0x2630 }, + { Opcode.SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, 0x2631 }, + { Opcode.SMSG_SEND_SPELL_CHARGES, 0x2C2C }, + { Opcode.SMSG_SEND_SPELL_HISTORY, 0x2C2A }, + { Opcode.SMSG_SEND_UNLEARN_SPELLS, 0x2C2D }, + { Opcode.SMSG_SERVER_FIRST_ACHIEVEMENTS, 0x2650 }, // NYI + { Opcode.SMSG_SERVER_TIME, 0x2686 }, // NYI + { Opcode.SMSG_SERVER_TIME_OFFSET, 0x2718 }, + { Opcode.SMSG_SETUP_CURRENCY, 0x2573 }, + { Opcode.SMSG_SET_AI_ANIM_KIT, 0x2734 }, + { Opcode.SMSG_SET_ANIM_TIER, 0x2738 }, + { Opcode.SMSG_SET_CHR_UPGRADE_TIER, 0x25E1 }, // NYI + { Opcode.SMSG_SET_CURRENCY, 0x2574 }, + { Opcode.SMSG_SET_DF_FAST_LAUNCH_RESULT, 0x2A2E }, // NYI + { Opcode.SMSG_SET_DUNGEON_DIFFICULTY, 0x26A8 }, + { Opcode.SMSG_SET_FACTION_AT_WAR, 0x2704 }, // NYI + { Opcode.SMSG_SET_FACTION_NOT_VISIBLE, 0x272F }, + { Opcode.SMSG_SET_FACTION_STANDING, 0x2730 }, + { Opcode.SMSG_SET_FACTION_VISIBLE, 0x272E }, + { Opcode.SMSG_SET_FLAT_SPELL_MODIFIER, 0x2C35 }, + { Opcode.SMSG_SET_FORCED_REACTIONS, 0x2721 }, + { Opcode.SMSG_SET_FORGE_MASTER, 0x2591 }, + { Opcode.SMSG_SET_ITEM_PURCHASE_DATA, 0x259D }, + { Opcode.SMSG_SET_LOOT_METHOD_FAILED, 0x27D4 }, // NYI + { Opcode.SMSG_SET_MAX_WEEKLY_QUANTITY, 0x25A0 }, // NYI + { Opcode.SMSG_SET_MELEE_ANIM_KIT, 0x2737 }, + { Opcode.SMSG_SET_MOVEMENT_ANIM_KIT, 0x2736 }, + { Opcode.SMSG_SET_PCT_SPELL_MODIFIER, 0x2C36 }, + { Opcode.SMSG_SET_PET_SPECIALIZATION, 0x2627 }, + { Opcode.SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, 0x3003 }, + { Opcode.SMSG_SET_PLAY_HOVER_ANIM, 0x25BC }, + { Opcode.SMSG_SET_PROFICIENCY, 0x2739 }, + { Opcode.SMSG_SET_SPELL_CHARGES, 0x2C28 }, + { Opcode.SMSG_SET_TIME_ZONE_INFORMATION, 0x267B }, + { Opcode.SMSG_SET_VEHICLE_REC_ID, 0x26FB }, + { Opcode.SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI, 0x25DD }, // NYI + { Opcode.SMSG_SHOW_QUEST_COMPLETION_TEXT, 0x2A95 }, // NYI + { Opcode.SMSG_SHOW_TAXI_NODES, 0x26D1 }, + { Opcode.SMSG_SHOW_TRADE_SKILL_RESPONSE, 0x2778 }, // NYI + { Opcode.SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE, 0x2895 }, + { Opcode.SMSG_SOCKET_GEMS_FAILURE, 0x272C }, // NYI + { Opcode.SMSG_SOCKET_GEMS_SUCCESS, 0x272B }, + { Opcode.SMSG_SOR_START_EXPERIENCE_INCOMPLETE, 0x25DF }, // NYI + { Opcode.SMSG_SPECIAL_MOUNT_ANIM, 0x26A3 }, + { Opcode.SMSG_SPEC_INVOLUNTARILY_CHANGED, 0x271C }, // NYI + { Opcode.SMSG_SPELL_ABSORB_LOG, 0x2C1C }, + { Opcode.SMSG_SPELL_CATEGORY_COOLDOWN, 0x2C16 }, // NYI + { Opcode.SMSG_SPELL_CHANNEL_START, 0x2C33 }, + { Opcode.SMSG_SPELL_CHANNEL_UPDATE, 0x2C34 }, + { Opcode.SMSG_SPELL_COOLDOWN, 0x2C15 }, + { Opcode.SMSG_SPELL_DAMAGE_SHIELD, 0x2C30 }, + { Opcode.SMSG_SPELL_DELAYED, 0x2C3E }, + { Opcode.SMSG_SPELL_DISPELL_LOG, 0x2C17 }, + { Opcode.SMSG_SPELL_ENERGIZE_LOG, 0x2C19 }, + { Opcode.SMSG_SPELL_EXECUTE_LOG, 0x2C3F }, + { Opcode.SMSG_SPELL_FAILED_OTHER, 0x2C54 }, + { Opcode.SMSG_SPELL_FAILURE, 0x2C52 }, + { Opcode.SMSG_SPELL_FAILURE_MESSAGE, 0x2C59 }, // NYI + { Opcode.SMSG_SPELL_GO, 0x2C38 }, + { Opcode.SMSG_SPELL_HEAL_ABSORB_LOG, 0x2C1B }, + { Opcode.SMSG_SPELL_HEAL_LOG, 0x2C1A }, + { Opcode.SMSG_SPELL_INSTAKILL_LOG, 0x2C32 }, + { Opcode.SMSG_SPELL_INTERRUPT_LOG, 0x2C1D }, + { Opcode.SMSG_SPELL_MISS_LOG, 0x2C40 }, + { Opcode.SMSG_SPELL_NON_MELEE_DAMAGE_LOG, 0x2C31 }, + { Opcode.SMSG_SPELL_OR_DAMAGE_IMMUNE, 0x2C2E }, + { Opcode.SMSG_SPELL_PERIODIC_AURA_LOG, 0x2C18 }, + { Opcode.SMSG_SPELL_PREPARE, 0x2C37 }, + { Opcode.SMSG_SPELL_START, 0x2C39 }, + { Opcode.SMSG_SPELL_VISUAL_LOAD_SCREEN, 0x25CE }, + { Opcode.SMSG_STAND_STATE_UPDATE, 0x2720 }, + { Opcode.SMSG_START_ELAPSED_TIMER, 0x2606 }, // NYI + { Opcode.SMSG_START_ELAPSED_TIMERS, 0x2608 }, // NYI + { Opcode.SMSG_START_LIGHTNING_STORM, 0x26AB }, + { Opcode.SMSG_START_LOOT_ROLL, 0x261F }, + { Opcode.SMSG_START_MIRROR_TIMER, 0x2713 }, + { Opcode.SMSG_START_TIMER, 0x25A7 }, + { Opcode.SMSG_STOP_ELAPSED_TIMER, 0x2607 }, // NYI + { Opcode.SMSG_STOP_MIRROR_TIMER, 0x2715 }, + { Opcode.SMSG_STOP_SPEAKERBOT_SOUND, 0x2774 }, + { Opcode.SMSG_STREAMING_MOVIES, 0x25A6 }, // NYI + { Opcode.SMSG_SUGGEST_INVITE_INFORM, 0x279A }, // NYI + { Opcode.SMSG_SUMMON_CANCEL, 0x26B4 }, // NYI + { Opcode.SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, 0x258E }, // NYI + { Opcode.SMSG_SUMMON_REQUEST, 0x2725 }, + { Opcode.SMSG_SUPERCEDED_SPELLS, 0x2C4B }, + { Opcode.SMSG_SUSPEND_COMMS, 0x304A }, + { Opcode.SMSG_SUSPEND_TOKEN, 0x25AA }, + { Opcode.SMSG_SYNC_WOW_ENTITLEMENTS, 0x286D }, // NYI + { Opcode.SMSG_TALENTS_INVOLUNTARILY_RESET, 0x271B }, // NYI + { Opcode.SMSG_TALENT_GROUP_ROLE_CHANGED, 0x258D }, // NYI + { Opcode.SMSG_TAXI_NODE_STATUS, 0x2680 }, + { Opcode.SMSG_TEXT_EMOTE, 0x2681 }, + { Opcode.SMSG_THREAT_CLEAR, 0x26E0 }, + { Opcode.SMSG_THREAT_REMOVE, 0x26DF }, + { Opcode.SMSG_THREAT_UPDATE, 0x26DE }, + { Opcode.SMSG_TIME_ADJUSTMENT, 0x2DD3 }, // NYI + { Opcode.SMSG_TIME_SYNC_REQUEST, 0x2DD2 }, + { Opcode.SMSG_TITLE_EARNED, 0x26DB }, + { Opcode.SMSG_TITLE_LOST, 0x26DC }, + { Opcode.SMSG_TOTEM_CREATED, 0x26CC }, + { Opcode.SMSG_TOTEM_MOVED, 0x26CE }, + { Opcode.SMSG_TRADE_STATUS, 0x2583 }, + { Opcode.SMSG_TRADE_UPDATED, 0x2582 }, + { Opcode.SMSG_TRAINER_BUY_FAILED, 0x26E4 }, + { Opcode.SMSG_TRAINER_LIST, 0x26E6 }, + { Opcode.SMSG_TRAIT_CONFIG_COMMIT_FAILED, 0x25D3 }, + { Opcode.SMSG_TRANSFER_ABORTED, 0x2707 }, + { Opcode.SMSG_TRANSFER_PENDING, 0x25CF }, + { Opcode.SMSG_TREASURE_PICKER_RESPONSE, 0x291F }, // NYI + { Opcode.SMSG_TRIGGER_CINEMATIC, 0x27CD }, + { Opcode.SMSG_TRIGGER_MOVIE, 0x26CF }, + { Opcode.SMSG_TURN_IN_PETITION_RESULT, 0x2752 }, + { Opcode.SMSG_TUTORIAL_FLAGS, 0x27C1 }, + { Opcode.SMSG_UNDELETE_CHARACTER_RESPONSE, 0x27CF }, + { Opcode.SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, 0x27D1 }, + { Opcode.SMSG_UNLEARNED_SPELLS, 0x2C4D }, + { Opcode.SMSG_UNLOAD_CHILD_MAP, 0x257A }, // NYI + { Opcode.SMSG_UPDATE_AADC_STATUS_RESPONSE, 0x2888 }, + { Opcode.SMSG_UPDATE_ACCOUNT_DATA, 0x270D }, + { Opcode.SMSG_UPDATE_ACTION_BUTTONS, 0x25E2 }, + { Opcode.SMSG_UPDATE_BNET_SESSION_KEY, 0x2827 }, + { Opcode.SMSG_UPDATE_CELESTIAL_BODY, 0x2823 }, // NYI + { Opcode.SMSG_UPDATE_CHARACTER_FLAGS, 0x27C7 }, // NYI + { Opcode.SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN, 0x276E }, // NYI + { Opcode.SMSG_UPDATE_COOLDOWN, 0x276D }, // NYI + { Opcode.SMSG_UPDATE_EXPANSION_LEVEL, 0x2648 }, // NYI + { Opcode.SMSG_UPDATE_GAME_TIME_STATE, 0x282A }, // NYI + { Opcode.SMSG_UPDATE_INSTANCE_OWNERSHIP, 0x26AD }, + { Opcode.SMSG_UPDATE_LAST_INSTANCE, 0x268C }, + { Opcode.SMSG_UPDATE_OBJECT, 0x27D0 }, + { Opcode.SMSG_UPDATE_PRIMARY_SPEC, 0x25DA }, // NYI + //{ Opcode.SMSG_UPDATE_TALENT_DATA, 0x25D8 }, + { Opcode.SMSG_UPDATE_TALENT_DATA, 0x25D9 }, // RETAIL + { Opcode.SMSG_UPDATE_WORLD_STATE, 0x274C }, + { Opcode.SMSG_USERLIST_ADD, 0x2BB9 }, + { Opcode.SMSG_USERLIST_REMOVE, 0x2BBA }, + { Opcode.SMSG_USERLIST_UPDATE, 0x2BBB }, + { Opcode.SMSG_USE_EQUIPMENT_SET_RESULT, 0x2753 }, + { Opcode.SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE, 0x281E }, + { Opcode.SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE, 0x281C }, + { Opcode.SMSG_VAS_GET_SERVICE_STATUS_RESPONSE, 0x281B }, + { Opcode.SMSG_VAS_PURCHASE_COMPLETE, 0x27F6 }, + { Opcode.SMSG_VAS_PURCHASE_STATE_UPDATE, 0x27F5 }, + { Opcode.SMSG_VENDOR_INVENTORY, 0x25BA }, + { Opcode.SMSG_VIGNETTE_UPDATE, 0x3008 }, + { Opcode.SMSG_VOICE_CHANNEL_INFO_RESPONSE, 0x2822 }, // NYI + { Opcode.SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE, 0x2884 }, // NYI + { Opcode.SMSG_VOICE_LOGIN_RESPONSE, 0x2821 }, // NYI + { Opcode.SMSG_VOID_ITEM_SWAP_RESPONSE, 0x2DA4 }, + { Opcode.SMSG_VOID_STORAGE_CONTENTS, 0x2DA1 }, + { Opcode.SMSG_VOID_STORAGE_FAILED, 0x2DA0 }, + { Opcode.SMSG_VOID_STORAGE_TRANSFER_CHANGES, 0x2DA2 }, + { Opcode.SMSG_VOID_TRANSFER_RESULT, 0x2DA3 }, + { Opcode.SMSG_WAIT_QUEUE_FINISH, 0x256F }, + { Opcode.SMSG_WAIT_QUEUE_UPDATE, 0x256E }, + { Opcode.SMSG_WARDEN3_DATA, 0x2577 }, + { Opcode.SMSG_WARDEN3_DISABLED, 0x2825 }, // NYI + { Opcode.SMSG_WARDEN3_ENABLED, 0x2824 }, + { Opcode.SMSG_WARFRONT_COMPLETE, 0x2762 }, // NYI + { Opcode.SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE, 0x2937 }, // NYI + { Opcode.SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, 0x2935 }, // NYI + { Opcode.SMSG_WEATHER, 0x26AA }, + { Opcode.SMSG_WHO, 0x2BAE }, + { Opcode.SMSG_WHO_IS, 0x26A9 }, + { Opcode.SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME, 0x2829 }, // NYI + { Opcode.SMSG_WORLD_QUEST_UPDATE_RESPONSE, 0x300F }, + { Opcode.SMSG_WORLD_SERVER_INFO, 0x25AF }, + { Opcode.SMSG_WOW_ENTITLEMENT_NOTIFICATION, 0x286E }, // NYI + { Opcode.SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END, 0x2896 }, // NYI + { Opcode.SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED, 0x2897 }, // NYI + { Opcode.SMSG_WOW_LABS_PARTY_ERROR, 0x289E }, // NYI + { Opcode.SMSG_WOW_LABS_SET_PREDICTION_CIRCLE, 0x2898 }, // NYI + { Opcode.SMSG_XP_GAIN_ABORTED, 0x25CB }, // NYI + { Opcode.SMSG_XP_GAIN_ENABLED, 0x27B1 }, // NYI + { Opcode.SMSG_ZONE_UNDER_ATTACK, 0x2BB5 }, + }; + + private static readonly BiDictionary MiscOpcodes = new(); + } +} diff --git a/WowPacketParser/Misc/ClientVersion.cs b/WowPacketParser/Misc/ClientVersion.cs index 88ce0b6fc4..f685dbc171 100644 --- a/WowPacketParser/Misc/ClientVersion.cs +++ b/WowPacketParser/Misc/ClientVersion.cs @@ -1344,11 +1344,21 @@ public static ClientVersionBuild GetVersionDefiningBuild(ClientVersionBuild buil case ClientVersionBuild.V3_4_3_53622: case ClientVersionBuild.V3_4_3_53788: case ClientVersionBuild.V3_4_3_54261: + case ClientVersionBuild.V1_15_0_52146: + case ClientVersionBuild.V1_15_0_52186: + case ClientVersionBuild.V1_15_0_52212: case ClientVersionBuild.V1_15_0_52302: + case ClientVersionBuild.V1_15_0_52409: case ClientVersionBuild.V1_15_0_52610: case ClientVersionBuild.V1_15_1_53247: case ClientVersionBuild.V1_15_1_53495: + case ClientVersionBuild.V1_15_1_53623: case ClientVersionBuild.V1_15_2_54262: + case ClientVersionBuild.V1_15_2_54332: + case ClientVersionBuild.V1_15_2_54649: + case ClientVersionBuild.V1_15_2_54902: + case ClientVersionBuild.V1_15_2_55002: + case ClientVersionBuild.V1_15_2_55140: return ClientVersionBuild.V3_4_0_45166; case ClientVersionBuild.V4_4_0_54481: case ClientVersionBuild.V4_4_0_54500: @@ -1371,6 +1381,17 @@ public static ClientVersionBuild GetVersionDefiningBuild(ClientVersionBuild buil case ClientVersionBuild.V4_4_0_56489: case ClientVersionBuild.V4_4_0_56713: case ClientVersionBuild.V4_4_0_57244: + case ClientVersionBuild.V1_15_3_55515: + case ClientVersionBuild.V1_15_3_55563: + case ClientVersionBuild.V1_15_3_55646: + case ClientVersionBuild.V1_15_3_55917: + case ClientVersionBuild.V1_15_3_55488: + case ClientVersionBuild.V1_15_3_55626: + case ClientVersionBuild.V1_15_4_56738: + case ClientVersionBuild.V1_15_4_56760: + case ClientVersionBuild.V1_15_4_56817: + case ClientVersionBuild.V1_15_4_56857: + case ClientVersionBuild.V1_15_4_57134: case ClientVersionBuild.V4_4_1_57294: return ClientVersionBuild.V4_4_0_54481; case ClientVersionBuild.BattleNetV37165: @@ -1744,11 +1765,32 @@ public static bool IsSeasonOfDiscoveryClientVersionBuild(ClientVersionBuild buil { switch (build) { + case ClientVersionBuild.V1_15_0_52146: + case ClientVersionBuild.V1_15_0_52186: + case ClientVersionBuild.V1_15_0_52212: case ClientVersionBuild.V1_15_0_52302: + case ClientVersionBuild.V1_15_0_52409: case ClientVersionBuild.V1_15_0_52610: case ClientVersionBuild.V1_15_1_53247: case ClientVersionBuild.V1_15_1_53495: + case ClientVersionBuild.V1_15_1_53623: case ClientVersionBuild.V1_15_2_54262: + case ClientVersionBuild.V1_15_2_54332: + case ClientVersionBuild.V1_15_2_54649: + case ClientVersionBuild.V1_15_2_54902: + case ClientVersionBuild.V1_15_2_55002: + case ClientVersionBuild.V1_15_2_55140: + case ClientVersionBuild.V1_15_3_55515: + case ClientVersionBuild.V1_15_3_55563: + case ClientVersionBuild.V1_15_3_55646: + case ClientVersionBuild.V1_15_3_55917: + case ClientVersionBuild.V1_15_3_55488: + case ClientVersionBuild.V1_15_3_55626: + case ClientVersionBuild.V1_15_4_56738: + case ClientVersionBuild.V1_15_4_56760: + case ClientVersionBuild.V1_15_4_56817: + case ClientVersionBuild.V1_15_4_56857: + case ClientVersionBuild.V1_15_4_57134: return true; default: return false; diff --git a/WowPacketParserModule.V3_4_0_45166/Parsers/MovementHandler.cs b/WowPacketParserModule.V3_4_0_45166/Parsers/MovementHandler.cs index 5577cea982..b26184ada5 100644 --- a/WowPacketParserModule.V3_4_0_45166/Parsers/MovementHandler.cs +++ b/WowPacketParserModule.V3_4_0_45166/Parsers/MovementHandler.cs @@ -198,7 +198,7 @@ public static void ReadMovementMonsterSpline(Packet packet, Vector3 pos, params { PacketMonsterMove monsterMove = packet.Holder.MonsterMove; monsterMove.Id = packet.ReadUInt32("Id", indexes); - if (ClientVersion.RemovedInVersion(ClientBranch.Classic, ClientVersionBuild.V1_15_0_52302) || ClientVersion.Branch != ClientBranch.Classic) + if (ClientVersion.RemovedInVersion(ClientBranch.Classic, ClientVersionBuild.V1_15_0_52146) || ClientVersion.Branch != ClientBranch.Classic) monsterMove.Destination = packet.ReadVector3("Destination", indexes); packet.ResetBitReader(); @@ -232,7 +232,7 @@ public static void HandleNewWorld(Packet packet) packet.AddSniffData(StoreNameType.Map, (int)WowPacketParser.Parsing.Parsers.MovementHandler.CurrentMapId, "NEW_WORLD"); } - [Parser(Opcode.SMSG_ON_MONSTER_MOVE, ClientBranch.Classic, ClientVersionBuild.V1_15_0_52302)] + [Parser(Opcode.SMSG_ON_MONSTER_MOVE, ClientBranch.Classic, ClientVersionBuild.V1_15_0_52146)] [Parser(Opcode.SMSG_ON_MONSTER_MOVE, ClientBranch.WotLK, ClientVersionBuild.V3_4_3_51505)] public static void HandleOnMonsterMove(Packet packet) { diff --git a/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler115.cs b/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler115.cs index 7465c281c3..b693549159 100644 --- a/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler115.cs +++ b/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler115.cs @@ -7,7 +7,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class UpdateFieldHandler : UpdateFieldsHandlerBase { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ActivePlayerData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ActivePlayerData.cs index bdf374f902..19d862f628 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ActivePlayerData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ActivePlayerData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ActivePlayerData : IActivePlayerData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/AreaTriggerData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/AreaTriggerData.cs index f2c5811e38..95fe3521bf 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/AreaTriggerData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/AreaTriggerData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class AreaTriggerData : IAreaTriggerData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArenaCooldown.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArenaCooldown.cs index ba2d59bb19..03af0765ac 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArenaCooldown.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArenaCooldown.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ArenaCooldown : IArenaCooldown { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArtifactPower.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArtifactPower.cs index 98476e65f7..041924b792 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArtifactPower.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ArtifactPower.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ArtifactPower : IArtifactPower { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CategoryCooldownMod.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CategoryCooldownMod.cs index c0d03a1a76..6bb2231ee5 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CategoryCooldownMod.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CategoryCooldownMod.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class CategoryCooldownMod : ICategoryCooldownMod { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CharacterRestriction.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CharacterRestriction.cs index 14ca535ec9..b6a7c8c8fa 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CharacterRestriction.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CharacterRestriction.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class CharacterRestriction : ICharacterRestriction { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ChrCustomizationChoice.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ChrCustomizationChoice.cs index 19f62484b6..72a156242d 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ChrCustomizationChoice.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ChrCustomizationChoice.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ChrCustomizationChoice : IChrCustomizationChoice { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CompletedProject.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CompletedProject.cs index cb69b16342..bedd576491 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CompletedProject.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CompletedProject.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class CompletedProject : ICompletedProject { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ContainerData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ContainerData.cs index c60185f1db..ce4d230add 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ContainerData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ContainerData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ContainerData : IContainerData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationActor.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationActor.cs index a41d95450d..f1d834c737 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationActor.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationActor.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ConversationActor : IConversationActor { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationData.cs index f27a4e649e..0616207c0c 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ConversationData : IMutableConversationData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationLine.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationLine.cs index 42aa382251..f04ae8f149 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationLine.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ConversationLine.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ConversationLine : IConversationLine { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CorpseData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CorpseData.cs index 1e9684cc1f..3f9ff6788a 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CorpseData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/CorpseData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class CorpseData : ICorpseData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/DynamicObjectData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/DynamicObjectData.cs index df2fec45f0..51aa649089 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/DynamicObjectData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/DynamicObjectData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class DynamicObjectData : IDynamicObjectData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/GameObjectData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/GameObjectData.cs index cf8f84aa10..262200a534 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/GameObjectData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/GameObjectData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class GameObjectData : IMutableGameObjectData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemData.cs index 6e7ad884ea..d1f8812c53 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ItemData : IItemData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemEnchantment.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemEnchantment.cs index d743007b12..08c24222fd 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemEnchantment.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemEnchantment.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ItemEnchantment : IItemEnchantment { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemMod.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemMod.cs index 5a798b29a6..534128995d 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemMod.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemMod.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ItemMod : IItemMod { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemModList.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemModList.cs index 4e85b4cee1..1e1bb30f82 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemModList.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ItemModList.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ItemModList : IItemModList { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ObjectData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ObjectData.cs index fa4a5dedda..49061d51b3 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ObjectData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ObjectData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ObjectData : IMutableObjectData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PVPInfo.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PVPInfo.cs index 7bf3265e39..a71408778a 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PVPInfo.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PVPInfo.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class PVPInfo : IPVPInfo { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PassiveSpellHistory.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PassiveSpellHistory.cs index f19a22ac68..47078c240e 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PassiveSpellHistory.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PassiveSpellHistory.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class PassiveSpellHistory : IPassiveSpellHistory { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PlayerData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PlayerData.cs index 8c0349c7af..5a001e4ff2 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PlayerData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/PlayerData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class PlayerData : IPlayerData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/QuestLog.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/QuestLog.cs index b9b17de4b4..ef8700e8ce 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/QuestLog.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/QuestLog.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class QuestLog : IQuestLog { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/Research.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/Research.cs index ccf5199dda..e99db3e830 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/Research.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/Research.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class Research : IResearch { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ResearchHistory.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ResearchHistory.cs index 7ffa0699f0..c19695a846 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ResearchHistory.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ResearchHistory.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ResearchHistory : IResearchHistory { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/RestInfo.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/RestInfo.cs index a05d6450e8..25c77bb435 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/RestInfo.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/RestInfo.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class RestInfo : IRestInfo { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ScaleCurve.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ScaleCurve.cs index 7cb9e6142c..1f11371554 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ScaleCurve.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/ScaleCurve.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class ScaleCurve : IScaleCurve { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SceneObjectData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SceneObjectData.cs index 788a440fcc..4f4cff16b9 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SceneObjectData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SceneObjectData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class SceneObjectData : ISceneObjectData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SkillInfo.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SkillInfo.cs index 71e7e7d358..368b8b8677 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SkillInfo.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SkillInfo.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class SkillInfo : ISkillInfo { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SocketedGem.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SocketedGem.cs index 10db7110c7..15272b75b2 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SocketedGem.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SocketedGem.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class SocketedGem : ISocketedGem { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellFlatModByLabel.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellFlatModByLabel.cs index 88d6577403..9f3c96a549 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellFlatModByLabel.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellFlatModByLabel.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class SpellFlatModByLabel : ISpellFlatModByLabel { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellPctModByLabel.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellPctModByLabel.cs index 7efbe8ab0d..9522c2af2a 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellPctModByLabel.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/SpellPctModByLabel.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class SpellPctModByLabel : ISpellPctModByLabel { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StableInfo.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StableInfo.cs index b24f3cf0a2..761e025eaa 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StableInfo.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StableInfo.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class StableInfo : IStableInfo { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StablePetInfo.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StablePetInfo.cs index 2ba8b1f911..1b82591b5a 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StablePetInfo.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/StablePetInfo.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class StablePetInfo : IStablePetInfo { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitConfig.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitConfig.cs index 1c502fe2fb..dea2da2a3f 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitConfig.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitConfig.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class TraitConfig : ITraitConfig { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitEntry.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitEntry.cs index db9714d4ee..46ccf9ab06 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitEntry.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/TraitEntry.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class TraitEntry : ITraitEntry { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitChannel.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitChannel.cs index 93f39dbd02..50b22bc729 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitChannel.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitChannel.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class UnitChannel : IUnitChannel { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitData.cs index 06b6ee54de..91c7f8906f 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/UnitData.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class UnitData : IMutableUnitData { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisibleItem.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisibleItem.cs index 993305a41a..ba694fc465 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisibleItem.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisibleItem.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class VisibleItem : IMutableVisibleItem { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisualAnim.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisualAnim.cs index e52baa5607..7eac503443 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisualAnim.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/VisualAnim.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class VisualAnim : IVisualAnim { diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/WeeklySpellUse.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/WeeklySpellUse.cs index dca5307ceb..4ee59c6772 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/WeeklySpellUse.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V1_15_0_52302/WeeklySpellUse.cs @@ -3,7 +3,7 @@ // This file is automatically generated, DO NOT EDIT -namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52302 +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V1_15_0_52146 { public class WeeklySpellUse : IWeeklySpellUse { diff --git a/WowPacketParserModule.V4_4_0_54481/Parsers/ChatHandler.cs b/WowPacketParserModule.V4_4_0_54481/Parsers/ChatHandler.cs index 6fe91f7cee..de1f27599f 100644 --- a/WowPacketParserModule.V4_4_0_54481/Parsers/ChatHandler.cs +++ b/WowPacketParserModule.V4_4_0_54481/Parsers/ChatHandler.cs @@ -40,7 +40,7 @@ public static void HandleServerChatMessage(Packet packet) packet.ReadInt32("AchievementID"); uint chatFlags = 0; - if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_4_1_57294)) + if (ClientVersion.AddedInVersion(ClientBranch.Cata, ClientVersionBuild.V4_4_1_57294) || ClientVersion.AddedInVersion(ClientBranch.Classic, ClientVersionBuild.V1_15_3_55515)) chatFlags = packet.ReadUInt16("ChatFlags"); packet.ReadSingle("DisplayTime"); @@ -52,7 +52,7 @@ public static void HandleServerChatMessage(Packet packet) var channelLen = packet.ReadBits(7); var textLen = packet.ReadBits(12); - if (ClientVersion.RemovedInVersion(ClientVersionBuild.V4_4_1_57294)) + if (ClientVersion.RemovedInVersion(ClientBranch.Cata, ClientVersionBuild.V4_4_1_57294) || ClientVersion.RemovedInVersion(ClientBranch.Classic, ClientVersionBuild.V1_15_3_55515)) chatFlags = packet.ReadBits("ChatFlags", 15); packet.ReadBit("HideChatLog"); diff --git a/WowPacketParserModule.V4_4_0_54481/Parsers/UpdateFieldsHandler1153.cs b/WowPacketParserModule.V4_4_0_54481/Parsers/UpdateFieldsHandler1153.cs new file mode 100644 index 0000000000..c8537f4eb4 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/Parsers/UpdateFieldsHandler1153.cs @@ -0,0 +1,4567 @@ +// +// 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.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.Field_A = packet.ReadByte("Field_A", indexes); + data.Field_B = packet.ReadByte("Field_B", 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(6); + 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.Field_A = packet.ReadByte("Field_A", indexes); + } + if (changesMask[5]) + { + data.Field_B = packet.ReadByte("Field_B", indexes); + } + } + return data; + } + + public static IItemMod ReadCreateItemMod(Packet packet, params object[] indexes) + { + var data = new ItemMod(); + packet.ResetBitReader(); + data.Value = packet.ReadInt32("Value", indexes); + data.Type = packet.ReadByte("Type", indexes); + return data; + } + + public static IItemMod ReadUpdateItemMod(Packet packet, params object[] indexes) + { + var data = new ItemMod(); + packet.ResetBitReader(); + data.Value = packet.ReadInt32("Value", indexes); + data.Type = packet.ReadByte("Type", 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); + } + data.PropertySeed = packet.ReadInt32("PropertySeed", indexes); + data.RandomPropertiesID = packet.ReadInt32("RandomPropertiesID", indexes); + 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.ReadInt32("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.DynamicFlags2 = packet.ReadUInt32("DynamicFlags2", 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.PropertySeed = packet.ReadInt32("PropertySeed", indexes); + } + if (changesMask[11]) + { + data.RandomPropertiesID = packet.ReadInt32("RandomPropertiesID", indexes); + } + if (changesMask[12]) + { + data.Durability = packet.ReadUInt32("Durability", indexes); + } + if (changesMask[13]) + { + data.MaxDurability = packet.ReadUInt32("MaxDurability", indexes); + } + if (changesMask[14]) + { + data.CreatePlayedTime = packet.ReadUInt32("CreatePlayedTime", indexes); + } + if (changesMask[15]) + { + data.Context = packet.ReadInt32("Context", indexes); + } + if (changesMask[16]) + { + data.CreateTime = packet.ReadInt64("CreateTime", indexes); + } + if (changesMask[17]) + { + data.ArtifactXP = packet.ReadUInt64("ArtifactXP", indexes); + } + if (changesMask[18]) + { + data.ItemAppearanceModID = packet.ReadByte("ItemAppearanceModID", indexes); + } + if (changesMask[20]) + { + data.DynamicFlags2 = packet.ReadUInt32("DynamicFlags2", indexes); + } + if (changesMask[21]) + { + Substructures.ItemHandler.ReadItemBonusKey(packet, indexes, "ItemBonusKey"); + } + if (changesMask[22]) + { + data.DEBUGItemLevel = packet.ReadUInt16("DEBUGItemLevel", indexes); + } + if (changesMask[19]) + { + data.Modifiers = ReadUpdateItemModList(packet, indexes, "Modifiers"); + } + } + if (changesMask[23]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[24 + i]) + { + data.SpellCharges[i] = packet.ReadInt32("SpellCharges", indexes, i); + } + } + } + if (changesMask[29]) + { + for (var i = 0; i < 13; ++i) + { + if (changesMask[30 + 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 < 36; ++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[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); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.NumSlots = packet.ReadUInt32("NumSlots", indexes); + } + } + if (changesMask[2]) + { + for (var i = 0; i < 36; ++i) + { + if (changesMask[3 + i]) + { + data.Slots[i] = packet.ReadPackedGuid128("Slots", indexes, i); + } + } + } + return data; + } + + public static IUnitChannel ReadCreateUnitChannel(Packet packet, params object[] indexes) + { + var data = new UnitChannel(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + return data; + } + + public static IUnitChannel ReadUpdateUnitChannel(Packet packet, params object[] indexes) + { + var data = new UnitChannel(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + return data; + } + + public static IVisibleItem ReadCreateVisibleItem(Packet packet, params object[] indexes) + { + var data = new VisibleItem(); + packet.ResetBitReader(); + data.ItemID = packet.ReadInt32("ItemID", 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(4); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ItemID = packet.ReadInt32("ItemID", indexes); + } + if (changesMask[2]) + { + data.ItemAppearanceModID = packet.ReadUInt16("ItemAppearanceModID", indexes); + } + if (changesMask[3]) + { + 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.Health = packet.ReadInt64("Health", indexes); + data.MaxHealth = packet.ReadInt64("MaxHealth", indexes); + data.DisplayID = packet.ReadInt32("DisplayID", indexes); + for (var i = 0; i < 2; ++i) + { + data.NpcFlags[i] = packet.ReadUInt32("NpcFlags", indexes, i); + } + 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()]; + 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.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); + 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); + } + } + for (var i = 0; i < 10; ++i) + { + data.Power[i] = packet.ReadInt32("Power", indexes, i); + data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i); + data.ModPowerRegen[i] = packet.ReadSingle("ModPowerRegen", indexes, i); + } + 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.NativeDisplayID = packet.ReadInt32("NativeDisplayID", indexes); + data.NativeXDisplayScale = packet.ReadSingle("NativeXDisplayScale", indexes); + data.MountDisplayID = packet.ReadInt32("MountDisplayID", 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.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); + data.TrainingPointsUsed = packet.ReadInt16("TrainingPointsUsed", indexes); + data.TrainingPointsTotal = packet.ReadInt16("TrainingPointsTotal", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + for (var i = 0; i < 5; ++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); + } + } + 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.PowerCostModifier[i] = packet.ReadInt32("PowerCostModifier", indexes, i); + data.PowerCostMultiplier[i] = packet.ReadSingle("PowerCostMultiplier", indexes, i); + } + } + for (var i = 0; i < 7; ++i) + { + data.ResistanceBuffModsPositive[i] = packet.ReadInt32("ResistanceBuffModsPositive", indexes, i); + data.ResistanceBuffModsNegative[i] = packet.ReadInt32("ResistanceBuffModsNegative", 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.RangedAttackPower = packet.ReadInt32("RangedAttackPower", indexes); + data.RangedAttackPowerModPos = packet.ReadInt32("RangedAttackPowerModPos", indexes); + data.RangedAttackPowerModNeg = packet.ReadInt32("RangedAttackPowerModNeg", indexes); + data.RangedAttackPowerMultiplier = packet.ReadSingle("RangedAttackPowerMultiplier", 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.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.WildBattlePetLevel = packet.ReadInt32("WildBattlePetLevel", 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.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + data.PassiveSpells.Resize(packet.ReadUInt32()); + data.WorldEffects.Resize(packet.ReadUInt32()); + data.ChannelObjects.Resize(packet.ReadUInt32()); + data.SkinningOwnerGUID = packet.ReadPackedGuid128("SkinningOwnerGUID", indexes); + data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + data.GlideEventSpeedDivisor = packet.ReadSingle("GlideEventSpeedDivisor", indexes); + data.SilencedSchoolMask = packet.ReadUInt32("SilencedSchoolMask", indexes); + data.CurrentAreaID = packet.ReadUInt32("CurrentAreaID", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.ComboTarget = packet.ReadPackedGuid128("ComboTarget", 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); + } + return data; + } + + public override IUnitData ReadUpdateUnitData(Packet packet, params object[] indexes) + { + var data = new UnitData(); + packet.ResetBitReader(); + var rawChangesMask = new int[8]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(8); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 8; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + 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.PassiveSpells.ReadUpdateMask(packet); + } + if (changesMask[3]) + { + data.WorldEffects.ReadUpdateMask(packet); + } + if (changesMask[4]) + { + data.ChannelObjects.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + for (var i = 0; i < data.PassiveSpells.Count; ++i) + { + if (data.PassiveSpells.UpdateMask[i]) + { + data.PassiveSpells[i] = ReadUpdatePassiveSpellHistory(packet, indexes, "PassiveSpells", 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]) + { + for (var i = 0; i < data.ChannelObjects.Count; ++i) + { + if (data.ChannelObjects.UpdateMask[i]) + { + data.ChannelObjects[i] = packet.ReadPackedGuid128("ChannelObjects", indexes, i); + } + } + } + if (changesMask[5]) + { + data.Health = packet.ReadInt64("Health", indexes); + } + if (changesMask[6]) + { + data.MaxHealth = packet.ReadInt64("MaxHealth", indexes); + } + if (changesMask[7]) + { + data.DisplayID = packet.ReadInt32("DisplayID", indexes); + } + if (changesMask[8]) + { + data.StateSpellVisualID = packet.ReadUInt32("StateSpellVisualID", indexes); + } + if (changesMask[9]) + { + data.StateAnimID = packet.ReadUInt32("StateAnimID", indexes); + } + if (changesMask[10]) + { + data.StateAnimKitID = packet.ReadUInt32("StateAnimKitID", indexes); + } + if (changesMask[11]) + { + data.Charm = packet.ReadPackedGuid128("Charm", indexes); + } + if (changesMask[12]) + { + data.Summon = packet.ReadPackedGuid128("Summon", indexes); + } + if (changesMask[13]) + { + data.Critter = packet.ReadPackedGuid128("Critter", indexes); + } + if (changesMask[14]) + { + data.CharmedBy = packet.ReadPackedGuid128("CharmedBy", indexes); + } + if (changesMask[15]) + { + data.SummonedBy = packet.ReadPackedGuid128("SummonedBy", indexes); + } + if (changesMask[16]) + { + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + } + if (changesMask[17]) + { + data.DemonCreator = packet.ReadPackedGuid128("DemonCreator", indexes); + } + if (changesMask[18]) + { + data.LookAtControllerTarget = packet.ReadPackedGuid128("LookAtControllerTarget", indexes); + } + if (changesMask[19]) + { + data.Target = packet.ReadPackedGuid128("Target", indexes); + } + if (changesMask[20]) + { + data.BattlePetCompanionGUID = packet.ReadPackedGuid128("BattlePetCompanionGUID", indexes); + } + if (changesMask[21]) + { + data.BattlePetDBID = packet.ReadUInt64("BattlePetDBID", indexes); + } + if (changesMask[22]) + { + data.ChannelData = ReadUpdateUnitChannel(packet, indexes, "ChannelData"); + } + if (changesMask[23]) + { + data.SummonedByHomeRealm = packet.ReadUInt32("SummonedByHomeRealm", indexes); + } + if (changesMask[24]) + { + data.Race = packet.ReadByte("Race", indexes); + } + if (changesMask[25]) + { + data.ClassId = packet.ReadByte("ClassId", indexes); + } + if (changesMask[26]) + { + data.PlayerClassId = packet.ReadByte("PlayerClassId", indexes); + } + if (changesMask[27]) + { + data.Sex = packet.ReadByte("Sex", indexes); + } + if (changesMask[28]) + { + data.DisplayPower = packet.ReadByte("DisplayPower", indexes); + } + if (changesMask[29]) + { + data.OverrideDisplayPowerID = packet.ReadUInt32("OverrideDisplayPowerID", indexes); + } + if (changesMask[30]) + { + data.Level = packet.ReadInt32("Level", indexes); + } + if (changesMask[31]) + { + data.EffectiveLevel = packet.ReadInt32("EffectiveLevel", indexes); + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + data.ContentTuningID = packet.ReadInt32("ContentTuningID", indexes); + } + if (changesMask[34]) + { + data.ScalingLevelMin = packet.ReadInt32("ScalingLevelMin", indexes); + } + if (changesMask[35]) + { + data.ScalingLevelMax = packet.ReadInt32("ScalingLevelMax", indexes); + } + if (changesMask[36]) + { + data.ScalingLevelDelta = packet.ReadInt32("ScalingLevelDelta", indexes); + } + if (changesMask[37]) + { + data.ScalingFactionGroup = packet.ReadInt32("ScalingFactionGroup", indexes); + } +// todo + if (changesMask[40]) + { + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + } + if (changesMask[41]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[42]) + { + data.Flags2 = packet.ReadUInt32("Flags2", indexes); + } + if (changesMask[43]) + { + data.Flags3 = packet.ReadUInt32("Flags3", indexes); + } + if (changesMask[44]) + { + data.AuraState = packet.ReadUInt32("AuraState", indexes); + } + if (changesMask[45]) + { + data.RangedAttackRoundBaseTime = packet.ReadUInt32("RangedAttackRoundBaseTime", indexes); + } + if (changesMask[46]) + { + data.BoundingRadius = packet.ReadSingle("BoundingRadius", indexes); + } + if (changesMask[47]) + { + data.CombatReach = packet.ReadSingle("CombatReach", indexes); + } + if (changesMask[48]) + { + data.DisplayScale = packet.ReadSingle("DisplayScale", indexes); + } + if (changesMask[49]) + { + data.NativeDisplayID = packet.ReadInt32("NativeDisplayID", indexes); + } + if (changesMask[50]) + { + data.NativeXDisplayScale = packet.ReadSingle("NativeXDisplayScale", indexes); + } + if (changesMask[51]) + { + data.MountDisplayID = packet.ReadInt32("MountDisplayID", indexes); + } + if (changesMask[52]) + { + data.MinDamage = packet.ReadSingle("MinDamage", indexes); + } + if (changesMask[53]) + { + data.MaxDamage = packet.ReadSingle("MaxDamage", indexes); + } + if (changesMask[54]) + { + data.MinOffHandDamage = packet.ReadSingle("MinOffHandDamage", indexes); + } + if (changesMask[55]) + { + data.MaxOffHandDamage = packet.ReadSingle("MaxOffHandDamage", indexes); + } + if (changesMask[56]) + { + data.StandState = packet.ReadByte("StandState", indexes); + } + if (changesMask[57]) + { + data.PetTalentPoints = packet.ReadByte("PetTalentPoints", indexes); + } + if (changesMask[58]) + { + data.VisFlags = packet.ReadByte("VisFlags", indexes); + } + if (changesMask[59]) + { + data.AnimTier = packet.ReadByte("AnimTier", indexes); + } + if (changesMask[60]) + { + data.PetNumber = packet.ReadUInt32("PetNumber", indexes); + } + if (changesMask[61]) + { + data.PetNameTimestamp = packet.ReadUInt32("PetNameTimestamp", indexes); + } + if (changesMask[62]) + { + data.PetExperience = packet.ReadUInt32("PetExperience", indexes); + } + if (changesMask[63]) + { + data.PetNextLevelExperience = packet.ReadUInt32("PetNextLevelExperience", indexes); + } + } + if (changesMask[64]) + { + if (changesMask[65]) + { + data.ModCastingSpeed = packet.ReadSingle("ModCastingSpeed", indexes); + } + if (changesMask[66]) + { + data.ModSpellHaste = packet.ReadSingle("ModSpellHaste", indexes); + } + if (changesMask[67]) + { + data.ModHaste = packet.ReadSingle("ModHaste", indexes); + } + if (changesMask[68]) + { + data.ModRangedHaste = packet.ReadSingle("ModRangedHaste", indexes); + } + if (changesMask[69]) + { + data.ModHasteRegen = packet.ReadSingle("ModHasteRegen", indexes); + } + if (changesMask[70]) + { + data.ModTimeRate = packet.ReadSingle("ModTimeRate", indexes); + } + if (changesMask[71]) + { + data.CreatedBySpell = packet.ReadInt32("CreatedBySpell", indexes); + } + if (changesMask[72]) + { + data.EmoteState = packet.ReadInt32("EmoteState", indexes); + } + if (changesMask[73]) + { + data.TrainingPointsUsed = packet.ReadInt16("TrainingPointsUsed", indexes); + } + if (changesMask[74]) + { + data.TrainingPointsTotal = packet.ReadInt16("TrainingPointsTotal", indexes); + } + if (changesMask[75]) + { + data.BaseMana = packet.ReadInt32("BaseMana", indexes); + } + if (changesMask[76]) + { + data.BaseHealth = packet.ReadInt32("BaseHealth", indexes); + } + if (changesMask[77]) + { + data.SheatheState = packet.ReadByte("SheatheState", indexes); + } + if (changesMask[78]) + { + data.PvpFlags = packet.ReadByte("PvpFlags", indexes); + } + if (changesMask[79]) + { + data.PetFlags = packet.ReadByte("PetFlags", indexes); + } + if (changesMask[80]) + { + data.ShapeshiftForm = packet.ReadByte("ShapeshiftForm", indexes); + } + if (changesMask[81]) + { + data.AttackPower = packet.ReadInt32("AttackPower", indexes); + } + if (changesMask[82]) + { + data.AttackPowerModPos = packet.ReadInt32("AttackPowerModPos", indexes); + } + if (changesMask[83]) + { + data.AttackPowerModNeg = packet.ReadInt32("AttackPowerModNeg", indexes); + } + if (changesMask[84]) + { + data.AttackPowerMultiplier = packet.ReadSingle("AttackPowerMultiplier", indexes); + } + if (changesMask[85]) + { + data.RangedAttackPower = packet.ReadInt32("RangedAttackPower", indexes); + } + if (changesMask[86]) + { + data.RangedAttackPowerModPos = packet.ReadInt32("RangedAttackPowerModPos", indexes); + } + if (changesMask[87]) + { + data.RangedAttackPowerModNeg = packet.ReadInt32("RangedAttackPowerModNeg", indexes); + } + if (changesMask[88]) + { + data.RangedAttackPowerMultiplier = packet.ReadSingle("RangedAttackPowerMultiplier", indexes); + } + if (changesMask[89]) + { + data.SetAttackSpeedAura = packet.ReadInt32("SetAttackSpeedAura", indexes); + } + if (changesMask[90]) + { + data.Lifesteal = packet.ReadSingle("Lifesteal", indexes); + } + if (changesMask[91]) + { + data.MinRangedDamage = packet.ReadSingle("MinRangedDamage", indexes); + } + if (changesMask[92]) + { + data.MaxRangedDamage = packet.ReadSingle("MaxRangedDamage", indexes); + } + if (changesMask[93]) + { + data.MaxHealthModifier = packet.ReadSingle("MaxHealthModifier", indexes); + } + if (changesMask[94]) + { + data.HoverHeight = packet.ReadSingle("HoverHeight", indexes); + } + if (changesMask[95]) + { + data.MinItemLevelCutoff = packet.ReadInt32("MinItemLevelCutoff", indexes); + } + } + if (changesMask[96]) + { + if (changesMask[97]) + { + data.MinItemLevel = packet.ReadInt32("MinItemLevel", indexes); + } + if (changesMask[98]) + { + data.MaxItemLevel = packet.ReadInt32("MaxItemLevel", indexes); + } + if (changesMask[99]) + { + data.WildBattlePetLevel = packet.ReadInt32("WildBattlePetLevel", indexes); + } + if (changesMask[100]) + { + data.BattlePetCompanionNameTimestamp = packet.ReadUInt32("BattlePetCompanionNameTimestamp", indexes); + } + if (changesMask[101]) + { + data.InteractSpellID = packet.ReadInt32("InteractSpellID", indexes); + } + if (changesMask[102]) + { + data.ScaleDuration = packet.ReadInt32("ScaleDuration", indexes); + } + if (changesMask[103]) + { + data.LooksLikeMountID = packet.ReadInt32("LooksLikeMountID", indexes); + } + if (changesMask[104]) + { + data.LooksLikeCreatureID = packet.ReadInt32("LooksLikeCreatureID", indexes); + } + if (changesMask[105]) + { + data.LookAtControllerID = packet.ReadInt32("LookAtControllerID", indexes); + } + if (changesMask[106]) + { + data.PerksVendorItemID = packet.ReadInt32("PerksVendorItemID", indexes); + } + if (changesMask[107]) + { + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + } + if (changesMask[108]) + { + data.SkinningOwnerGUID = packet.ReadPackedGuid128("SkinningOwnerGUID", indexes); + } + if (changesMask[109]) + { + data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + } + if (changesMask[110]) + { + data.GlideEventSpeedDivisor = packet.ReadSingle("GlideEventSpeedDivisor", indexes); + } + if (changesMask[111]) + { + data.CurrentAreaID = packet.ReadUInt32("CurrentAreaID", indexes); + } + if (changesMask[112]) + { + data.ComboTarget = packet.ReadPackedGuid128("ComboTarget", indexes); + } + } + if (changesMask[113]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[114 + i]) + { + data.NpcFlags[i] = packet.ReadUInt32("NpcFlags", indexes, i); + } + } + } + if (changesMask[116]) + { + for (var i = 0; i < 10; ++i) + { + if (changesMask[117 + i]) + { + data.PowerRegenFlatModifier[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i); + } + if (changesMask[127 + i]) + { + data.PowerRegenInterruptedFlatModifier[i] = packet.ReadSingle("PowerRegenInterruptedFlatModifier", indexes, i); + } + if (changesMask[137 + i]) + { + data.Power[i] = packet.ReadInt32("Power", indexes, i); + } + if (changesMask[147 + i]) + { + data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i); + } + if (changesMask[157 + i]) + { + data.ModPowerRegen[i] = packet.ReadSingle("ModPowerRegen", indexes, i); + } + } + } + if (changesMask[167]) + { + for (var i = 0; i < 3; ++i) + { + if (changesMask[168 + i]) + { + data.VirtualItems[i] = ReadUpdateVisibleItem(packet, indexes, "VirtualItems", i); + } + } + } + if (changesMask[171]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[172 + i]) + { + data.AttackRoundBaseTime[i] = packet.ReadUInt32("AttackRoundBaseTime", indexes, i); + } + } + } + if (changesMask[174]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[175 + i]) + { + data.Stats[i] = packet.ReadInt32("Stats", indexes, i); + } + if (changesMask[180 + i]) + { + data.StatPosBuff[i] = packet.ReadInt32("StatPosBuff", indexes, i); + } + if (changesMask[185 + i]) + { + data.StatNegBuff[i] = packet.ReadInt32("StatNegBuff", indexes, i); + } + } + } + if (changesMask[190]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[191 + i]) + { + data.Resistances[i] = packet.ReadInt32("Resistances", indexes, i); + } + if (changesMask[198 + i]) + { + data.PowerCostModifier[i] = packet.ReadInt32("PowerCostModifier", indexes, i); + } + if (changesMask[205 + i]) + { + data.PowerCostMultiplier[i] = packet.ReadSingle("PowerCostMultiplier", indexes, i); + } + } + } + if (changesMask[212]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[213 + i]) + { + data.ResistanceBuffModsPositive[i] = packet.ReadInt32("ResistanceBuffModsPositive", indexes, i); + } + if (changesMask[220 + i]) + { + data.ResistanceBuffModsNegative[i] = packet.ReadInt32("ResistanceBuffModsNegative", 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); + for (var i = 0; i < 24; ++i) + { + data.ObjectiveProgress[i] = packet.ReadUInt16("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]) + { + for (var i = 0; i < 24; ++i) + { + if (changesMask[5 + i]) + { + data.ObjectiveProgress[i] = packet.ReadUInt16("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.ItemID = packet.ReadInt32("ItemID", 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(9); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.SpellID = packet.ReadInt32("SpellID", indexes); + } + if (changesMask[2]) + { + data.ItemID = packet.ReadInt32("ItemID", indexes); + } + if (changesMask[3]) + { + data.Charges = packet.ReadInt32("Charges", indexes); + } + if (changesMask[4]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[5]) + { + data.StartTime = packet.ReadUInt32("StartTime", indexes); + } + if (changesMask[6]) + { + data.EndTime = packet.ReadUInt32("EndTime", indexes); + } + if (changesMask[7]) + { + data.NextChargeTime = packet.ReadUInt32("NextChargeTime", indexes); + } + if (changesMask[8]) + { + data.MaxCharges = packet.ReadByte("MaxCharges", 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()); + for (var i = 0; i < 2; ++i) + { + data.PartyType[i] = packet.ReadByte("PartyType", indexes, i); + } + data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); + 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.PvpRank = packet.ReadByte("PvpRank", indexes); + data.Field_88 = packet.ReadInt32("Field_88", indexes); + data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes); + data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes); + if ((flags & UpdateFieldFlag.PartyMember) != UpdateFieldFlag.None) + { + for (var i = 0; i < 25; ++i) + { + data.QuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestLog", i); + } + } + 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()); + data.Field_13C = packet.ReadInt32("Field_13C", indexes); + data.Field_140 = packet.ReadInt32("Field_140", indexes); + data.CurrentBattlePetSpeciesID = packet.ReadInt32("CurrentBattlePetSpeciesID", 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.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); + } + data.Name = new string('*', (int)packet.ReadBits(6)); + hasDeclinedNames = packet.ReadBit("HasDeclinedNames", indexes); + Substructures.MythicPlusHandler.ReadDungeonScoreSummary(packet, indexes, "DungeonScore"); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + 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[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); + + var noQuestLogChangesMask = packet.ReadBit(); + var hasDeclinedNames = false; + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Customizations.ReadUpdateMask(packet); + } + if (changesMask[2]) + { + data.ArenaCooldowns.ReadUpdateMask(packet); + } + if (changesMask[3]) + { + data.VisualItemReplacements.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]) + { + for (var i = 0; i < data.ArenaCooldowns.Count; ++i) + { + if (data.ArenaCooldowns.UpdateMask[i]) + { + data.ArenaCooldowns[i] = ReadUpdateArenaCooldown(packet, indexes, "ArenaCooldowns", i); + } + } + } + if (changesMask[3]) + { + for (var i = 0; i < data.VisualItemReplacements.Count; ++i) + { + if (data.VisualItemReplacements.UpdateMask[i]) + { + data.VisualItemReplacements[i] = packet.ReadInt32("VisualItemReplacements", indexes, i); + } + } + } + if (changesMask[4]) + { + data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes); + } + if (changesMask[5]) + { + data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes); + } + if (changesMask[6]) + { + data.BnetAccount = packet.ReadPackedGuid128("BnetAccount", indexes); + } + if (changesMask[7]) + { + data.GuildClubMemberID = packet.ReadUInt64("GuildClubMemberID", indexes); + } + if (changesMask[8]) + { + data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes); + } + if (changesMask[9]) + { + data.PlayerFlags = packet.ReadUInt32("PlayerFlags", indexes); + } + if (changesMask[10]) + { + data.PlayerFlagsEx = packet.ReadUInt32("PlayerFlagsEx", indexes); + } + if (changesMask[11]) + { + data.GuildRankID = packet.ReadUInt32("GuildRankID", indexes); + } + if (changesMask[12]) + { + data.GuildDeleteDate = packet.ReadUInt32("GuildDeleteDate", indexes); + } + if (changesMask[13]) + { + data.GuildLevel = packet.ReadInt32("GuildLevel", indexes); + } + if (changesMask[14]) + { + data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); + } + if (changesMask[15]) + { + data.NativeSex = packet.ReadByte("NativeSex", indexes); + } + if (changesMask[16]) + { + data.Inebriation = packet.ReadByte("Inebriation", indexes); + } + if (changesMask[17]) + { + data.PvpTitle = packet.ReadByte("PvpTitle", indexes); + } + if (changesMask[18]) + { + data.ArenaFaction = packet.ReadByte("ArenaFaction", indexes); + } + if (changesMask[19]) + { + data.PvpRank = packet.ReadByte("PvpRank", indexes); + } + if (changesMask[20]) + { + data.Field_88 = packet.ReadInt32("Field_88", indexes); + } + if (changesMask[21]) + { + data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes); + } + if (changesMask[22]) + { + data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes); + } + if (changesMask[23]) + { + data.PlayerTitle = packet.ReadInt32("PlayerTitle", indexes); + } + if (changesMask[24]) + { + data.FakeInebriation = packet.ReadInt32("FakeInebriation", indexes); + } + if (changesMask[25]) + { + data.VirtualPlayerRealm = packet.ReadUInt32("VirtualPlayerRealm", indexes); + } + if (changesMask[26]) + { + data.CurrentSpecID = packet.ReadUInt32("CurrentSpecID", indexes); + } + if (changesMask[27]) + { + data.TaxiMountAnimKitID = packet.ReadInt32("TaxiMountAnimKitID", indexes); + } + if (changesMask[28]) + { + data.CurrentBattlePetBreedQuality = packet.ReadByte("CurrentBattlePetBreedQuality", indexes); + } + if (changesMask[29]) + { + data.HonorLevel = packet.ReadInt32("HonorLevel", indexes); + } + if (changesMask[30]) + { + data.LogoutTime = packet.ReadInt64("LogoutTime", indexes); + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + data.Field_13C = packet.ReadInt32("Field_13C", indexes); + } + if (changesMask[34]) + { + data.Field_140 = packet.ReadInt32("Field_140", indexes); + } + if (changesMask[35]) + { + data.CurrentBattlePetSpeciesID = packet.ReadInt32("CurrentBattlePetSpeciesID", indexes); + } + if (changesMask[38]) + { + data.PersonalTabard = ReadUpdateCustomTabardInfo(packet, indexes, "PersonalTabard"); + } + } + if (changesMask[0]) + { + if (changesMask[31]) + { + data.Name = new string('*', (int)packet.ReadBits(6)); + } + } + if (changesMask[32]) + { + hasDeclinedNames = packet.ReadBit("HasDeclinedNames", indexes); + packet.ResetBitReader(); + if (changesMask[36]) + { + Substructures.MythicPlusHandler.ReadDungeonScoreSummary(packet, indexes, "DungeonScore"); + } + } + if (changesMask[0]) + { + if (changesMask[31]) + { + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + } + } + if (changesMask[32]) + { + if (changesMask[37]) + { + if (hasDeclinedNames) + { + data.DeclinedNames = ReadUpdateDeclinedNames(packet, indexes, "DeclinedNames"); + } + } + } + if (changesMask[39]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[40 + i]) + { + data.PartyType[i] = packet.ReadByte("PartyType", indexes, i); + } + } + } + if (changesMask[42]) + { + for (var i = 0; i < 25; ++i) + { + if (changesMask[43 + i]) + { + if (noQuestLogChangesMask) + data.QuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestLog", i); + else + data.QuestLog[i] = ReadUpdateQuestLog(packet, indexes, "QuestLog", i); + } + } + } + if (changesMask[68]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[69 + i]) + { + data.VisibleItems[i] = ReadUpdateVisibleItem(packet, indexes, "VisibleItems", i); + } + } + } + if (changesMask[88]) + { + for (var i = 0; i < 6; ++i) + { + if (changesMask[89 + i]) + { + data.AvgItemLevel[i] = packet.ReadSingle("AvgItemLevel", indexes, i); + } + } + } + if (changesMask[95]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[96 + i]) + { + data.Field_3120[i] = packet.ReadUInt32("Field_3120", indexes, i); + } + } + } + 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 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 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 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 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 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()); + 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)); + 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(12); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + data.Entries.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]) + { + data.ID = packet.ReadInt32("ID", indexes); + } + } + if (changesMask[4]) + { + if (changesMask[5]) + { + data.Type = packet.ReadInt32("Type", indexes); + } + if (changesMask[6]) + { + if (data.Type == 2) + { + data.SkillLineID = packet.ReadInt32("SkillLineID", indexes); + } + } + if (changesMask[7]) + { + if (data.Type == 1) + { + data.ChrSpecializationID = packet.ReadInt32("ChrSpecializationID", indexes); + } + } + } + if (changesMask[8]) + { + if (changesMask[9]) + { + if (data.Type == 1) + { + data.CombatConfigFlags = packet.ReadInt32("CombatConfigFlags", indexes); + } + } + if (changesMask[10]) + { + if (data.Type == 1) + { + data.LocalIdentifier = packet.ReadInt32("LocalIdentifier", indexes); + } + } + if (changesMask[11]) + { + if (data.Type == 3) + { + data.TraitSystemID = packet.ReadInt32("TraitSystemID", indexes); + } + } + } + if (changesMask[0]) + { + if (changesMask[3]) + { + data.Name = new string('*', (int)packet.ReadBits(9)); + data.Name = packet.ReadWoWString("Name", data.Name.Length, 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.Field_96 = packet.ReadByte("Field_96", 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(9); + 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[8]) + { + data.Field_96 = packet.ReadByte("Field_96", 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 override IActivePlayerData ReadCreateActivePlayerData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new ActivePlayerData(); + packet.ResetBitReader(); + var hasPetStable = false; + for (var i = 0; i < 141; ++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.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); + for (var i = 0; i < 2; ++i) + { + data.TrackResourceMask[i] = packet.ReadUInt32("TrackResourceMask", indexes, i); + } + 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); + for (var i = 0; i < 7; ++i) + { + data.SpellCritPercentage[i] = packet.ReadSingle("SpellCritPercentage", indexes, 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.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); + for (var i = 0; i < 8; ++i) + { + data.DataFlags[i].Resize(packet.ReadUInt32()); + for (var j = 0; j < data.DataFlags[i].Count; ++j) + { + data.DataFlags[i][j] = packet.ReadUInt64("DataFlags", indexes, i, j); + } + } + for (var i = 0; i < 2; ++i) + { + data.RestInfo[i] = ReadCreateRestInfo(packet, indexes, "RestInfo", i); + } + data.ModHealingDonePos = packet.ReadInt32("ModHealingDonePos", indexes); + data.ModHealingPercent = packet.ReadSingle("ModHealingPercent", indexes); + data.ModHealingDonePercent = packet.ReadSingle("ModHealingDonePercent", 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.AmmoID = packet.ReadInt32("AmmoID", 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.TodayDishonorableKills = packet.ReadUInt16("TodayDishonorableKills", indexes); + data.YesterdayHonorableKills = packet.ReadUInt16("YesterdayHonorableKills", indexes); + data.YesterdayDishonorableKills = packet.ReadUInt16("YesterdayDishonorableKills", indexes); + data.LastWeekHonorableKills = packet.ReadUInt16("LastWeekHonorableKills", indexes); + data.LastWeekDishonorableKills = packet.ReadUInt16("LastWeekDishonorableKills", indexes); + data.ThisWeekHonorableKills = packet.ReadUInt16("ThisWeekHonorableKills", indexes); + data.ThisWeekDishonorableKills = packet.ReadUInt16("ThisWeekDishonorableKills", indexes); + data.ThisWeekContribution = packet.ReadUInt32("ThisWeekContribution", indexes); + data.LifetimeHonorableKills = packet.ReadUInt32("LifetimeHonorableKills", indexes); + data.LifetimeDishonorableKills = packet.ReadUInt32("LifetimeDishonorableKills", indexes); + data.Field_F24 = packet.ReadUInt32("Field_F24", indexes); + data.YesterdayContribution = packet.ReadUInt32("YesterdayContribution", indexes); + data.LastWeekContribution = packet.ReadUInt32("LastWeekContribution", indexes); + data.LastWeekRank = packet.ReadUInt32("LastWeekRank", indexes); + data.WatchedFactionIndex = packet.ReadInt32("WatchedFactionIndex", indexes); + for (var i = 0; i < 32; ++i) + { + data.CombatRatings[i] = packet.ReadInt32("CombatRatings", indexes, i); + } + 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.LocalRegenFlags = packet.ReadByte("LocalRegenFlags", indexes); + data.AuraVision = packet.ReadByte("AuraVision", indexes); + data.NumBackpackSlots = packet.ReadByte("NumBackpackSlots", indexes); + data.OverrideSpellsID = packet.ReadInt32("OverrideSpellsID", indexes); + data.LfgBonusFactionID = packet.ReadInt32("LfgBonusFactionID", indexes); + data.LootSpecID = packet.ReadUInt16("LootSpecID", indexes); + data.OverrideZonePVPType = packet.ReadUInt32("OverrideZonePVPType", indexes); + for (var i = 0; i < 4; ++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 < 875; ++i) + { + data.QuestCompleted[i] = packet.ReadUInt64("QuestCompleted", indexes, i); + } + data.Honor = packet.ReadInt32("Honor", indexes); + data.HonorNextLevel = packet.ReadInt32("HonorNextLevel", indexes); + data.Field_F74 = packet.ReadInt32("Field_F74", indexes); + data.PvpTierMaxFromWins = packet.ReadInt32("PvpTierMaxFromWins", indexes); + data.PvpLastWeeksTierMaxFromWins = packet.ReadInt32("PvpLastWeeksTierMaxFromWins", indexes); + data.PvpRankProgress = packet.ReadByte("PvpRankProgress", indexes); + data.PerksProgramCurrency = packet.ReadInt32("PerksProgramCurrency", 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.Field_1000.Resize(packet.ReadUInt32()); + data.Heirlooms.Resize(packet.ReadUInt32()); + data.HeirloomFlags.Resize(packet.ReadUInt32()); + data.Toys.Resize(packet.ReadUInt32()); + data.Transmog.Resize(packet.ReadUInt32()); + data.ConditionalTransmog.Resize(packet.ReadUInt32()); + data.SelfResSpells.Resize(packet.ReadUInt32()); + data.CharacterRestrictions.Resize(packet.ReadUInt32()); + data.SpellPctModByLabel.Resize(packet.ReadUInt32()); + data.SpellFlatModByLabel.Resize(packet.ReadUInt32()); + data.TaskQuests.Resize(packet.ReadUInt32()); + data.TransportServerTime = packet.ReadInt32("TransportServerTime", indexes); + data.TraitConfigs.Resize(packet.ReadUInt32()); + data.ActiveCombatTraitConfigID = packet.ReadUInt32("ActiveCombatTraitConfigID", indexes); + for (var i = 0; i < 9; ++i) + { + data.GlyphSlots[i] = packet.ReadUInt32("GlyphSlots", indexes, i); + data.Glyphs[i] = packet.ReadUInt32("Glyphs", indexes, i); + } + data.GlyphsEnabled = packet.ReadUInt16("GlyphsEnabled", indexes); + data.LfgRoles = packet.ReadByte("LfgRoles", indexes); + data.CategoryCooldownMods.Resize(packet.ReadUInt32()); + data.WeeklySpellUses.Resize(packet.ReadUInt32()); + data.NumStableSlots = packet.ReadByte("NumStableSlots", 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.Field_1000.Count; ++i) + { + data.Field_1000[i] = packet.ReadInt32("Field_1000", 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.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.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.TaskQuests.Count; ++i) + { + data.TaskQuests[i] = ReadCreateQuestLog(packet, indexes, "TaskQuests", 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 < 9; ++i) + { + data.PvpInfo[i] = ReadCreatePVPInfo(packet, indexes, "PvpInfo", i); + } + packet.ResetBitReader(); + data.SortBagsRightToLeft = packet.ReadBit("SortBagsRightToLeft", indexes); + data.InsertItemsLeftToRight = packet.ReadBit("InsertItemsLeftToRight", indexes); + hasPetStable = packet.ReadBit("HasPetStable", indexes); + packet.ResetBitReader(); + data.ResearchHistory = ReadCreateResearchHistory(packet, indexes, "ResearchHistory"); + Substructures.PerksProgramHandler.ReadPerksVendorItem(packet, indexes, "FrozenPerksVendorItem"); + 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); + } + if (hasPetStable) + { + data.PetStable = ReadCreateStableInfo(packet, indexes, "PetStable"); + } + return data; + } + + public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, params object[] indexes) + { + var data = new ActivePlayerData(); + packet.ResetBitReader(); + var rawChangesMask = new int[43]; + var rawMaskMask = new int[2]; + for (var i = 0; i < 1; ++i) + rawMaskMask[i] = packet.ReadInt32(); + rawMaskMask[1] = (int)packet.ReadBits(11); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 43; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + var hasPetStable = false; + if (changesMask[0]) + { + if (changesMask[1]) + { + data.SortBagsRightToLeft = packet.ReadBit("SortBagsRightToLeft", indexes); + } + if (changesMask[2]) + { + data.InsertItemsLeftToRight = packet.ReadBit("InsertItemsLeftToRight", indexes); + } + if (changesMask[3]) + { + data.KnownTitles.ReadUpdateMask(packet); + } + } + if (changesMask[20]) + { + for (var i = 0; i < 8; ++i) + { + if (changesMask[21]) + { + data.DataFlags[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[20]) + { + for (var i = 0; i < 8; ++i) + { + if (changesMask[21]) + { + for (var j = 0; j < data.DataFlags[i].Count; ++j) + { + if (data.DataFlags[i].UpdateMask[j]) + { + data.DataFlags[i][j] = packet.ReadUInt64("DataFlags", indexes, i, j); + } + } + } + } + } + if (changesMask[22]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[23]) + { + data.ResearchSites[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[24]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[25]) + { + data.ResearchSiteProgress[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[26]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[27]) + { + data.Research[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[22]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[23]) + { + 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[24]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[25]) + { + 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[26]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[27]) + { + 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[4]) + { + data.DailyQuestsCompleted.ReadUpdateMask(packet); + } + if (changesMask[5]) + { + data.AvailableQuestLineXQuestIDs.ReadUpdateMask(packet); + } + if (changesMask[6]) + { + data.Field_1000.ReadUpdateMask(packet); + } + if (changesMask[7]) + { + data.Heirlooms.ReadUpdateMask(packet); + } + if (changesMask[8]) + { + data.HeirloomFlags.ReadUpdateMask(packet); + } + if (changesMask[9]) + { + data.Toys.ReadUpdateMask(packet); + } + if (changesMask[10]) + { + data.Transmog.ReadUpdateMask(packet); + } + if (changesMask[11]) + { + data.ConditionalTransmog.ReadUpdateMask(packet); + } + if (changesMask[12]) + { + data.SelfResSpells.ReadUpdateMask(packet); + } + if (changesMask[13]) + { + data.CharacterRestrictions.ReadUpdateMask(packet); + } + if (changesMask[14]) + { + data.SpellPctModByLabel.ReadUpdateMask(packet); + } + if (changesMask[15]) + { + data.SpellFlatModByLabel.ReadUpdateMask(packet); + } + if (changesMask[16]) + { + data.TaskQuests.ReadUpdateMask(packet); + } + if (changesMask[17]) + { + data.TraitConfigs.ReadUpdateMask(packet); + } + if (changesMask[18]) + { + data.CategoryCooldownMods.ReadUpdateMask(packet); + } + if (changesMask[19]) + { + data.WeeklySpellUses.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + for (var i = 0; i < data.KnownTitles.Count; ++i) + { + if (data.KnownTitles.UpdateMask[i]) + { + data.KnownTitles[i] = packet.ReadUInt64("KnownTitles", indexes, i); + } + } + } + if (changesMask[4]) + { + for (var i = 0; i < data.DailyQuestsCompleted.Count; ++i) + { + if (data.DailyQuestsCompleted.UpdateMask[i]) + { + data.DailyQuestsCompleted[i] = packet.ReadInt32("DailyQuestsCompleted", indexes, i); + } + } + } + if (changesMask[5]) + { + for (var i = 0; i < data.AvailableQuestLineXQuestIDs.Count; ++i) + { + if (data.AvailableQuestLineXQuestIDs.UpdateMask[i]) + { + data.AvailableQuestLineXQuestIDs[i] = packet.ReadInt32("AvailableQuestLineXQuestIDs", indexes, i); + } + } + } + if (changesMask[6]) + { + for (var i = 0; i < data.Field_1000.Count; ++i) + { + if (data.Field_1000.UpdateMask[i]) + { + data.Field_1000[i] = packet.ReadInt32("Field_1000", indexes, i); + } + } + } + if (changesMask[7]) + { + for (var i = 0; i < data.Heirlooms.Count; ++i) + { + if (data.Heirlooms.UpdateMask[i]) + { + data.Heirlooms[i] = packet.ReadInt32("Heirlooms", indexes, i); + } + } + } + if (changesMask[8]) + { + for (var i = 0; i < data.HeirloomFlags.Count; ++i) + { + if (data.HeirloomFlags.UpdateMask[i]) + { + data.HeirloomFlags[i] = packet.ReadUInt32("HeirloomFlags", indexes, i); + } + } + } + if (changesMask[9]) + { + for (var i = 0; i < data.Toys.Count; ++i) + { + if (data.Toys.UpdateMask[i]) + { + data.Toys[i] = packet.ReadInt32("Toys", indexes, i); + } + } + } + if (changesMask[10]) + { + for (var i = 0; i < data.Transmog.Count; ++i) + { + if (data.Transmog.UpdateMask[i]) + { + data.Transmog[i] = packet.ReadUInt32("Transmog", indexes, i); + } + } + } + if (changesMask[11]) + { + for (var i = 0; i < data.ConditionalTransmog.Count; ++i) + { + if (data.ConditionalTransmog.UpdateMask[i]) + { + data.ConditionalTransmog[i] = packet.ReadInt32("ConditionalTransmog", indexes, i); + } + } + } + if (changesMask[12]) + { + for (var i = 0; i < data.SelfResSpells.Count; ++i) + { + if (data.SelfResSpells.UpdateMask[i]) + { + data.SelfResSpells[i] = packet.ReadInt32("SelfResSpells", indexes, i); + } + } + } + if (changesMask[14]) + { + for (var i = 0; i < data.SpellPctModByLabel.Count; ++i) + { + if (data.SpellPctModByLabel.UpdateMask[i]) + { + data.SpellPctModByLabel[i] = ReadUpdateSpellPctModByLabel(packet, indexes, "SpellPctModByLabel", i); + } + } + } + if (changesMask[15]) + { + for (var i = 0; i < data.SpellFlatModByLabel.Count; ++i) + { + if (data.SpellFlatModByLabel.UpdateMask[i]) + { + data.SpellFlatModByLabel[i] = ReadUpdateSpellFlatModByLabel(packet, indexes, "SpellFlatModByLabel", i); + } + } + } + if (changesMask[16]) + { + for (var i = 0; i < data.TaskQuests.Count; ++i) + { + if (data.TaskQuests.UpdateMask[i]) + { + data.TaskQuests[i] = ReadUpdateQuestLog(packet, indexes, "TaskQuests", i); + } + } + } + if (changesMask[18]) + { + for (var i = 0; i < data.CategoryCooldownMods.Count; ++i) + { + if (data.CategoryCooldownMods.UpdateMask[i]) + { + data.CategoryCooldownMods[i] = ReadUpdateCategoryCooldownMod(packet, indexes, "CategoryCooldownMods", i); + } + } + } + if (changesMask[19]) + { + for (var i = 0; i < data.WeeklySpellUses.Count; ++i) + { + if (data.WeeklySpellUses.UpdateMask[i]) + { + data.WeeklySpellUses[i] = ReadUpdateWeeklySpellUse(packet, indexes, "WeeklySpellUses", i); + } + } + } + if (changesMask[13]) + { + for (var i = 0; i < data.CharacterRestrictions.Count; ++i) + { + if (data.CharacterRestrictions.UpdateMask[i]) + { + data.CharacterRestrictions[i] = ReadUpdateCharacterRestriction(packet, indexes, "CharacterRestrictions", i); + } + } + } + if (changesMask[17]) + { + for (var i = 0; i < data.TraitConfigs.Count; ++i) + { + if (data.TraitConfigs.UpdateMask[i]) + { + data.TraitConfigs[i] = ReadUpdateTraitConfig(packet, indexes, "TraitConfigs", i); + } + } + } + if (changesMask[28]) + { + data.FarsightObject = packet.ReadPackedGuid128("FarsightObject", indexes); + } + if (changesMask[29]) + { + data.SummonedBattlePetGUID = packet.ReadPackedGuid128("SummonedBattlePetGUID", indexes); + } + if (changesMask[30]) + { + data.Coinage = packet.ReadUInt64("Coinage", indexes); + } + if (changesMask[31]) + { + data.XP = packet.ReadInt32("XP", indexes); + } + if (changesMask[32]) + { + data.NextLevelXP = packet.ReadInt32("NextLevelXP", indexes); + } + if (changesMask[33]) + { + data.TrialXP = packet.ReadInt32("TrialXP", indexes); + } + if (changesMask[34]) + { + data.Skill = ReadUpdateSkillInfo(packet, indexes, "Skill"); + } + if (changesMask[35]) + { + data.CharacterPoints = packet.ReadInt32("CharacterPoints", indexes); + } + if (changesMask[36]) + { + data.MaxTalentTiers = packet.ReadInt32("MaxTalentTiers", indexes); + } + if (changesMask[37]) + { + data.TrackCreatureMask = packet.ReadUInt32("TrackCreatureMask", indexes); + } + if (changesMask[38]) + { + data.MainhandExpertise = packet.ReadSingle("MainhandExpertise", indexes); + } + if (changesMask[39]) + { + data.OffhandExpertise = packet.ReadSingle("OffhandExpertise", indexes); + } + } + if (changesMask[40]) + { + if (changesMask[41]) + { + data.RangedExpertise = packet.ReadSingle("RangedExpertise", indexes); + } + if (changesMask[42]) + { + data.CombatRatingExpertise = packet.ReadSingle("CombatRatingExpertise", indexes); + } + if (changesMask[43]) + { + data.BlockPercentage = packet.ReadSingle("BlockPercentage", indexes); + } + if (changesMask[44]) + { + data.DodgePercentage = packet.ReadSingle("DodgePercentage", indexes); + } + if (changesMask[45]) + { + data.DodgePercentageFromAttribute = packet.ReadSingle("DodgePercentageFromAttribute", indexes); + } + if (changesMask[46]) + { + data.ParryPercentage = packet.ReadSingle("ParryPercentage", indexes); + } + if (changesMask[47]) + { + data.ParryPercentageFromAttribute = packet.ReadSingle("ParryPercentageFromAttribute", indexes); + } + if (changesMask[48]) + { + data.CritPercentage = packet.ReadSingle("CritPercentage", indexes); + } + if (changesMask[49]) + { + data.RangedCritPercentage = packet.ReadSingle("RangedCritPercentage", indexes); + } + if (changesMask[50]) + { + data.OffhandCritPercentage = packet.ReadSingle("OffhandCritPercentage", indexes); + } + if (changesMask[51]) + { + data.ShieldBlock = packet.ReadInt32("ShieldBlock", indexes); + } + if (changesMask[52]) + { + data.ShieldBlockCritPercentage = packet.ReadSingle("ShieldBlockCritPercentage", indexes); + } + if (changesMask[53]) + { + data.Mastery = packet.ReadSingle("Mastery", indexes); + } + if (changesMask[54]) + { + data.Speed = packet.ReadSingle("Speed", indexes); + } + if (changesMask[55]) + { + data.Avoidance = packet.ReadSingle("Avoidance", indexes); + } + if (changesMask[56]) + { + data.Sturdiness = packet.ReadSingle("Sturdiness", indexes); + } + if (changesMask[57]) + { + data.Versatility = packet.ReadInt32("Versatility", indexes); + } + if (changesMask[58]) + { + data.VersatilityBonus = packet.ReadSingle("VersatilityBonus", indexes); + } + if (changesMask[59]) + { + data.PvpPowerDamage = packet.ReadSingle("PvpPowerDamage", indexes); + } + if (changesMask[60]) + { + data.PvpPowerHealing = packet.ReadSingle("PvpPowerHealing", indexes); + } + if (changesMask[61]) + { + data.ModHealingDonePos = packet.ReadInt32("ModHealingDonePos", indexes); + } + if (changesMask[62]) + { + data.ModHealingPercent = packet.ReadSingle("ModHealingPercent", indexes); + } + if (changesMask[63]) + { + data.ModHealingDonePercent = packet.ReadSingle("ModHealingDonePercent", indexes); + } + if (changesMask[64]) + { + data.ModPeriodicHealingDonePercent = packet.ReadSingle("ModPeriodicHealingDonePercent", indexes); + } + if (changesMask[65]) + { + data.ModSpellPowerPercent = packet.ReadSingle("ModSpellPowerPercent", indexes); + } + if (changesMask[66]) + { + data.ModResiliencePercent = packet.ReadSingle("ModResiliencePercent", indexes); + } + if (changesMask[67]) + { + data.OverrideSpellPowerByAPPercent = packet.ReadSingle("OverrideSpellPowerByAPPercent", indexes); + } + if (changesMask[68]) + { + data.OverrideAPBySpellPowerPercent = packet.ReadSingle("OverrideAPBySpellPowerPercent", indexes); + } + if (changesMask[69]) + { + data.ModTargetResistance = packet.ReadInt32("ModTargetResistance", indexes); + } + if (changesMask[70]) + { + data.ModTargetPhysicalResistance = packet.ReadInt32("ModTargetPhysicalResistance", indexes); + } + if (changesMask[71]) + { + data.LocalFlags = packet.ReadUInt32("LocalFlags", indexes); + } + } + if (changesMask[72]) + { + if (changesMask[73]) + { + data.GrantableLevels = packet.ReadByte("GrantableLevels", indexes); + } + if (changesMask[74]) + { + data.MultiActionBars = packet.ReadByte("MultiActionBars", indexes); + } + if (changesMask[75]) + { + data.LifetimeMaxRank = packet.ReadByte("LifetimeMaxRank", indexes); + } + if (changesMask[76]) + { + data.NumRespecs = packet.ReadByte("NumRespecs", indexes); + } + if (changesMask[77]) + { + data.AmmoID = packet.ReadInt32("AmmoID", indexes); + } + if (changesMask[78]) + { + data.PvpMedals = packet.ReadUInt32("PvpMedals", indexes); + } + if (changesMask[79]) + { + data.TodayHonorableKills = packet.ReadUInt16("TodayHonorableKills", indexes); + } + if (changesMask[80]) + { + data.TodayDishonorableKills = packet.ReadUInt16("TodayDishonorableKills", indexes); + } + if (changesMask[81]) + { + data.YesterdayHonorableKills = packet.ReadUInt16("YesterdayHonorableKills", indexes); + } + if (changesMask[82]) + { + data.YesterdayDishonorableKills = packet.ReadUInt16("YesterdayDishonorableKills", indexes); + } + if (changesMask[83]) + { + data.LastWeekHonorableKills = packet.ReadUInt16("LastWeekHonorableKills", indexes); + } + if (changesMask[84]) + { + data.LastWeekDishonorableKills = packet.ReadUInt16("LastWeekDishonorableKills", indexes); + } + if (changesMask[85]) + { + data.ThisWeekHonorableKills = packet.ReadUInt16("ThisWeekHonorableKills", indexes); + } + if (changesMask[86]) + { + data.ThisWeekDishonorableKills = packet.ReadUInt16("ThisWeekDishonorableKills", indexes); + } + if (changesMask[87]) + { + data.ThisWeekContribution = packet.ReadUInt32("ThisWeekContribution", indexes); + } + if (changesMask[88]) + { + data.LifetimeHonorableKills = packet.ReadUInt32("LifetimeHonorableKills", indexes); + } + if (changesMask[89]) + { + data.LifetimeDishonorableKills = packet.ReadUInt32("LifetimeDishonorableKills", indexes); + } + if (changesMask[90]) + { + data.Field_F24 = packet.ReadUInt32("Field_F24", indexes); + } + if (changesMask[91]) + { + data.YesterdayContribution = packet.ReadUInt32("YesterdayContribution", indexes); + } + if (changesMask[92]) + { + data.LastWeekContribution = packet.ReadUInt32("LastWeekContribution", indexes); + } + if (changesMask[93]) + { + data.LastWeekRank = packet.ReadUInt32("LastWeekRank", indexes); + } + if (changesMask[94]) + { + data.WatchedFactionIndex = packet.ReadInt32("WatchedFactionIndex", indexes); + } + if (changesMask[95]) + { + data.MaxLevel = packet.ReadInt32("MaxLevel", indexes); + } + if (changesMask[96]) + { + data.ScalingPlayerLevelDelta = packet.ReadInt32("ScalingPlayerLevelDelta", indexes); + } + if (changesMask[97]) + { + data.MaxCreatureScalingLevel = packet.ReadInt32("MaxCreatureScalingLevel", indexes); + } + if (changesMask[98]) + { + data.PetSpellPower = packet.ReadInt32("PetSpellPower", indexes); + } + if (changesMask[99]) + { + data.UiHitModifier = packet.ReadSingle("UiHitModifier", indexes); + } + if (changesMask[100]) + { + data.UiSpellHitModifier = packet.ReadSingle("UiSpellHitModifier", indexes); + } + if (changesMask[101]) + { + data.HomeRealmTimeOffset = packet.ReadInt32("HomeRealmTimeOffset", indexes); + } + if (changesMask[102]) + { + data.ModPetHaste = packet.ReadSingle("ModPetHaste", indexes); + } + if (changesMask[103]) + { + data.LocalRegenFlags = packet.ReadByte("LocalRegenFlags", indexes); + } + } + if (changesMask[104]) + { + if (changesMask[105]) + { + data.AuraVision = packet.ReadByte("AuraVision", indexes); + } + if (changesMask[106]) + { + data.NumBackpackSlots = packet.ReadByte("NumBackpackSlots", indexes); + } + if (changesMask[107]) + { + data.OverrideSpellsID = packet.ReadInt32("OverrideSpellsID", indexes); + } + if (changesMask[108]) + { + data.LfgBonusFactionID = packet.ReadInt32("LfgBonusFactionID", indexes); + } + if (changesMask[109]) + { + data.LootSpecID = packet.ReadUInt16("LootSpecID", indexes); + } + if (changesMask[110]) + { + data.OverrideZonePVPType = packet.ReadUInt32("OverrideZonePVPType", indexes); + } + if (changesMask[111]) + { + data.Honor = packet.ReadInt32("Honor", indexes); + } + if (changesMask[112]) + { + data.HonorNextLevel = packet.ReadInt32("HonorNextLevel", indexes); + } + if (changesMask[113]) + { + data.Field_F74 = packet.ReadInt32("Field_F74", indexes); + } + if (changesMask[114]) + { + data.PvpTierMaxFromWins = packet.ReadInt32("PvpTierMaxFromWins", indexes); + } + if (changesMask[115]) + { + data.PvpLastWeeksTierMaxFromWins = packet.ReadInt32("PvpLastWeeksTierMaxFromWins", indexes); + } + if (changesMask[116]) + { + data.PvpRankProgress = packet.ReadByte("PvpRankProgress", indexes); + } + if (changesMask[117]) + { + data.PerksProgramCurrency = packet.ReadInt32("PerksProgramCurrency", indexes); + } + if (changesMask[120]) + { + data.TransportServerTime = packet.ReadInt32("TransportServerTime", indexes); + } + if (changesMask[121]) + { + data.ActiveCombatTraitConfigID = packet.ReadUInt32("ActiveCombatTraitConfigID", indexes); + } + if (changesMask[122]) + { + data.GlyphsEnabled = packet.ReadUInt16("GlyphsEnabled", indexes); + } + if (changesMask[123]) + { + data.LfgRoles = packet.ReadByte("LfgRoles", indexes); + } + if (changesMask[125]) + { + data.NumStableSlots = packet.ReadByte("NumStableSlots", indexes); + } + } + packet.ResetBitReader(); + if (changesMask[104]) + { + hasPetStable = packet.ReadBit("HasPetStable", indexes); + if (changesMask[118]) + { + data.ResearchHistory = ReadUpdateResearchHistory(packet, indexes, "ResearchHistory"); + } + if (changesMask[119]) + { + Substructures.PerksProgramHandler.ReadPerksVendorItem(packet, indexes, "FrozenPerksVendorItem"); + } + if (changesMask[124]) + { + if (hasPetStable) + { + data.PetStable = ReadUpdateStableInfo(packet, indexes, "PetStable"); + } + } + } + if (changesMask[126]) + { + for (var i = 0; i < 141; ++i) + { + if (changesMask[127 + i]) + { + data.InvSlots[i] = packet.ReadPackedGuid128("InvSlots", indexes, i); + } + } + } + if (changesMask[268]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[269 + i]) + { + data.TrackResourceMask[i] = packet.ReadUInt32("TrackResourceMask", indexes, i); + } + } + } + if (changesMask[271]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[272 + i]) + { + data.SpellCritPercentage[i] = packet.ReadSingle("SpellCritPercentage", indexes, i); + } + if (changesMask[279 + i]) + { + data.ModDamageDonePos[i] = packet.ReadInt32("ModDamageDonePos", indexes, i); + } + if (changesMask[286 + i]) + { + data.ModDamageDoneNeg[i] = packet.ReadInt32("ModDamageDoneNeg", indexes, i); + } + if (changesMask[293 + i]) + { + data.ModDamageDonePercent[i] = packet.ReadSingle("ModDamageDonePercent", indexes, i); + } + } + } + if (changesMask[300]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[301 + i]) + { + data.RestInfo[i] = ReadUpdateRestInfo(packet, indexes, "RestInfo", i); + } + } + } + if (changesMask[303]) + { + for (var i = 0; i < 3; ++i) + { + if (changesMask[304 + i]) + { + data.WeaponDmgMultipliers[i] = packet.ReadSingle("WeaponDmgMultipliers", indexes, i); + } + if (changesMask[307 + i]) + { + data.WeaponAtkSpeedMultipliers[i] = packet.ReadSingle("WeaponAtkSpeedMultipliers", indexes, i); + } + } + } + if (changesMask[310]) + { + for (var i = 0; i < 12; ++i) + { + if (changesMask[311 + i]) + { + data.BuybackPrice[i] = packet.ReadUInt32("BuybackPrice", indexes, i); + } + if (changesMask[323 + i]) + { + data.BuybackTimestamp[i] = packet.ReadInt64("BuybackTimestamp", indexes, i); + } + } + } + if (changesMask[335]) + { + for (var i = 0; i < 32; ++i) + { + if (changesMask[336 + i]) + { + data.CombatRatings[i] = packet.ReadInt32("CombatRatings", indexes, i); + } + } + } + if (changesMask[378]) + { + for (var i = 0; i < 4; ++i) + { + if (changesMask[379 + i]) + { + data.NoReagentCostMask[i] = packet.ReadUInt32("NoReagentCostMask", indexes, i); + } + } + } + if (changesMask[383]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[384 + i]) + { + data.ProfessionSkillLine[i] = packet.ReadInt32("ProfessionSkillLine", indexes, i); + } + } + } + if (changesMask[386]) + { + for (var i = 0; i < 4; ++i) + { + if (changesMask[387 + i]) + { + data.BagSlotFlags[i] = packet.ReadUInt32("BagSlotFlags", indexes, i); + } + } + } + if (changesMask[391]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[392 + i]) + { + data.BankBagSlotFlags[i] = packet.ReadUInt32("BankBagSlotFlags", indexes, i); + } + } + } + if (changesMask[399]) + { + for (var i = 0; i < 950; ++i) + { + if (changesMask[400 + i]) + { + data.QuestCompleted[i] = packet.ReadUInt64("QuestCompleted", indexes, i); + } + } + } + if (changesMask[1350]) + { + for (var i = 0; i < 9; ++i) + { + if (changesMask[1351 + i]) + { + data.GlyphSlots[i] = packet.ReadUInt32("GlyphSlots", indexes, i); + } + if (changesMask[1360 + i]) + { + data.Glyphs[i] = packet.ReadUInt32("Glyphs", indexes, i); + } + } + } + if (changesMask[368]) + { + for (var i = 0; i < 9; ++i) + { + if (changesMask[369 + i]) + { + data.PvpInfo[i] = ReadUpdatePVPInfo(packet, indexes, "PvpInfo", 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()]; + 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.Level = packet.ReadInt32("Level", 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.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(20); + 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.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + } + if (changesMask[10]) + { + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + } + if (changesMask[11]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[12]) + { + data.ParentRotation = packet.ReadQuaternion("ParentRotation", indexes); + } + if (changesMask[13]) + { + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + } + if (changesMask[14]) + { + data.Level = packet.ReadInt32("Level", 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); + } + } + 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.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + 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.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + } + 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); + 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[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.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]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[13 + 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.Field_C = packet.ReadBit("Field_C", 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.Field_C = packet.ReadBit("Field_C", 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.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + data.BoundsRadius2D = packet.ReadSingle("BoundsRadius2D", indexes); + data.DecalPropertiesID = packet.ReadUInt32("DecalPropertiesID", indexes); + data.CreatingEffectGUID = packet.ReadPackedGuid128("CreatingEffectGUID", indexes); + data.OrbitPathTarget = packet.ReadPackedGuid128("OrbitPathTarget", indexes); + data.ExtraScaleCurve = ReadCreateScaleCurve(packet, indexes, "ExtraScaleCurve"); + 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(20); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.OverrideScaleCurve = ReadUpdateScaleCurve(packet, indexes, "OverrideScaleCurve"); + } + if (changesMask[6]) + { + data.Caster = packet.ReadPackedGuid128("Caster", indexes); + } + if (changesMask[7]) + { + data.Duration = packet.ReadUInt32("Duration", indexes); + } + if (changesMask[8]) + { + data.TimeToTarget = packet.ReadUInt32("TimeToTarget", indexes); + } + if (changesMask[9]) + { + data.TimeToTargetScale = packet.ReadUInt32("TimeToTargetScale", indexes); + } + if (changesMask[10]) + { + data.TimeToTargetExtraScale = packet.ReadUInt32("TimeToTargetExtraScale", indexes); + } + if (changesMask[11]) + { + data.TimeToTargetPos = packet.ReadUInt32("TimeToTargetPos", indexes); + } + if (changesMask[12]) + { + data.SpellID = packet.ReadInt32("SpellID", indexes); + } + if (changesMask[13]) + { + data.SpellForVisuals = packet.ReadInt32("SpellForVisuals", indexes); + } + if (changesMask[14]) + { + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + } + if (changesMask[15]) + { + data.BoundsRadius2D = packet.ReadSingle("BoundsRadius2D", indexes); + } + if (changesMask[16]) + { + data.DecalPropertiesID = packet.ReadUInt32("DecalPropertiesID", indexes); + } + if (changesMask[17]) + { + data.CreatingEffectGUID = packet.ReadPackedGuid128("CreatingEffectGUID", indexes); + } + if (changesMask[18]) + { + data.OrbitPathTarget = packet.ReadPackedGuid128("OrbitPathTarget", indexes); + } + if (changesMask[2]) + { + data.ExtraScaleCurve = ReadUpdateScaleCurve(packet, indexes, "ExtraScaleCurve"); + } + if (changesMask[3]) + { + data.OverrideMoveCurveX = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveX"); + } + if (changesMask[4]) + { + data.OverrideMoveCurveY = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveY"); + } + if (changesMask[5]) + { + data.OverrideMoveCurveZ = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveZ"); + } + if (changesMask[19]) + { + 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.StartTime = packet.ReadUInt32("StartTime", indexes); + data.UiCameraID = packet.ReadInt32("UiCameraID", indexes); + data.ActorIndex = packet.ReadByte("ActorIndex", indexes); + data.Flags = packet.ReadByte("Flags", 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.StartTime = packet.ReadUInt32("StartTime", indexes); + data.UiCameraID = packet.ReadInt32("UiCameraID", indexes); + data.ActorIndex = packet.ReadByte("ActorIndex", indexes); + data.Flags = packet.ReadByte("Flags", indexes); + return data; + } + + public static IConversationActor ReadCreateConversationActor(Packet packet, params object[] indexes) + { + var data = new ConversationActor(); + packet.ResetBitReader(); + data.Type = packet.ReadBits("Type", 1, indexes); + data.Id = packet.ReadInt32("Id", indexes); + if (data.Type == 1) + { + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.CreatureDisplayInfoID = packet.ReadUInt32("CreatureDisplayInfoID", indexes); + } + if (data.Type == 0) + { + data.ActorGUID = packet.ReadPackedGuid128("ActorGUID", indexes); + } + return data; + } + + public static IConversationActor ReadUpdateConversationActor(Packet packet, params object[] indexes) + { + var data = new ConversationActor(); + packet.ResetBitReader(); + data.Type = packet.ReadBits("Type", 1, indexes); + data.Id = packet.ReadInt32("Id", indexes); + if (data.Type == 1) + { + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.CreatureDisplayInfoID = packet.ReadUInt32("CreatureDisplayInfoID", indexes); + } + if (data.Type == 0) + { + data.ActorGUID = packet.ReadPackedGuid128("ActorGUID", 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); + for (var i = 0; i < data.Lines.Length; ++i) + { + data.Lines[i] = ReadCreateConversationLine(packet, indexes, "Lines", i); + } + data.Actors.Resize(packet.ReadUInt32()); + 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(4); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + 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[2]) + { + data.Actors.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + for (var i = 0; i < data.Actors.Count; ++i) + { + if (data.Actors.UpdateMask[i]) + { + data.Actors[i] = ReadUpdateConversationActor(packet, indexes, "Actors", i); + } + } + } + if (changesMask[3]) + { + data.LastLineEndTime = packet.ReadInt32("LastLineEndTime", indexes); + } + } + return data; + } + + } +} diff --git a/WowPacketParserModule.V4_4_0_54481/Parsers/UpdateFieldsHandler1154.cs b/WowPacketParserModule.V4_4_0_54481/Parsers/UpdateFieldsHandler1154.cs new file mode 100644 index 0000000000..b045d1ee9b --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/Parsers/UpdateFieldsHandler1154.cs @@ -0,0 +1,4842 @@ +// +// 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.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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); + } + data.PropertySeed = packet.ReadInt32("PropertySeed", indexes); + data.RandomPropertiesID = packet.ReadInt32("RandomPropertiesID", indexes); + 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.DynamicFlags2 = packet.ReadUInt32("DynamicFlags2", 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.PropertySeed = packet.ReadInt32("PropertySeed", indexes); + } + if (changesMask[11]) + { + data.RandomPropertiesID = packet.ReadInt32("RandomPropertiesID", indexes); + } + if (changesMask[12]) + { + data.Durability = packet.ReadUInt32("Durability", indexes); + } + if (changesMask[13]) + { + data.MaxDurability = packet.ReadUInt32("MaxDurability", indexes); + } + if (changesMask[14]) + { + data.CreatePlayedTime = packet.ReadUInt32("CreatePlayedTime", indexes); + } + if (changesMask[15]) + { + data.Context = packet.ReadByte("Context", indexes); + } + if (changesMask[16]) + { + data.CreateTime = packet.ReadInt64("CreateTime", indexes); + } + if (changesMask[17]) + { + data.ArtifactXP = packet.ReadUInt64("ArtifactXP", indexes); + } + if (changesMask[18]) + { + data.ItemAppearanceModID = packet.ReadByte("ItemAppearanceModID", indexes); + } + if (changesMask[20]) + { + data.DynamicFlags2 = packet.ReadUInt32("DynamicFlags2", indexes); + } + if (changesMask[21]) + { + Substructures.ItemHandler.ReadItemBonusKey(packet, indexes, "ItemBonusKey"); + } + if (changesMask[22]) + { + data.DEBUGItemLevel = packet.ReadUInt16("DEBUGItemLevel", indexes); + } + if (changesMask[19]) + { + data.Modifiers = ReadUpdateItemModList(packet, indexes, "Modifiers"); + } + } + if (changesMask[23]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[24 + i]) + { + data.SpellCharges[i] = packet.ReadInt32("SpellCharges", indexes, i); + } + } + } + if (changesMask[29]) + { + for (var i = 0; i < 13; ++i) + { + if (changesMask[30 + 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 < 36; ++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[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); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.NumSlots = packet.ReadUInt32("NumSlots", indexes); + } + } + if (changesMask[2]) + { + for (var i = 0; i < 36; ++i) + { + if (changesMask[3 + i]) + { + data.Slots[i] = packet.ReadPackedGuid128("Slots", indexes, i); + } + } + } + return data; + } + + public static IUnitChannel ReadCreateUnitChannel(Packet packet, params object[] indexes) + { + var data = new UnitChannel(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + return data; + } + + public static IUnitChannel ReadUpdateUnitChannel(Packet packet, params object[] indexes) + { + var data = new UnitChannel(); + packet.ResetBitReader(); + data.SpellID = packet.ReadInt32("SpellID", indexes); + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + return data; + } + + public static IVisibleItem ReadCreateVisibleItem(Packet packet, params object[] indexes) + { + var data = new VisibleItem(); + packet.ResetBitReader(); + data.ItemID = packet.ReadInt32("ItemID", 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(4); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.ItemID = packet.ReadInt32("ItemID", indexes); + } + if (changesMask[2]) + { + data.ItemAppearanceModID = packet.ReadUInt16("ItemAppearanceModID", indexes); + } + if (changesMask[3]) + { + 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.Health = packet.ReadInt64("Health", indexes); + data.MaxHealth = packet.ReadInt64("MaxHealth", indexes); + 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()]; + 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.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); + 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); + } + } + for (var i = 0; i < 10; ++i) + { + data.Power[i] = packet.ReadInt32("Power", indexes, i); + data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i); + data.ModPowerRegen[i] = packet.ReadSingle("ModPowerRegen", indexes, i); + } + 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.NativeDisplayID = packet.ReadInt32("NativeDisplayID", indexes); + data.NativeXDisplayScale = packet.ReadSingle("NativeXDisplayScale", indexes); + data.MountDisplayID = packet.ReadInt32("MountDisplayID", 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.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); + data.TrainingPointsUsed = packet.ReadInt16("TrainingPointsUsed", indexes); + data.TrainingPointsTotal = packet.ReadInt16("TrainingPointsTotal", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + for (var i = 0; i < 5; ++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); + } + } + if ((flags & (UpdateFieldFlag.Owner | UpdateFieldFlag.Empath)) != UpdateFieldFlag.None) + { + for (var i = 0; i < 7; ++i) + { + data.Resistances[i] = packet.ReadInt32("Resistances", indexes, i); + } + } + for (var i = 0; i < 7; ++i) + { + data.ResistanceBuffModsPositive[i] = packet.ReadInt32("ResistanceBuffModsPositive", indexes, i); + data.ResistanceBuffModsNegative[i] = packet.ReadInt32("ResistanceBuffModsNegative", indexes, i); + } + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + for (var i = 0; i < 7; ++i) + { + data.PowerCostModifier[i] = packet.ReadInt32("PowerCostModifier", indexes, i); + data.PowerCostMultiplier[i] = packet.ReadSingle("PowerCostMultiplier", 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.RangedAttackPower = packet.ReadInt32("RangedAttackPower", indexes); + data.RangedAttackPowerModPos = packet.ReadInt32("RangedAttackPowerModPos", indexes); + data.RangedAttackPowerModNeg = packet.ReadInt32("RangedAttackPowerModNeg", indexes); + data.RangedAttackPowerMultiplier = packet.ReadSingle("RangedAttackPowerMultiplier", 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.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.WildBattlePetLevel = packet.ReadInt32("WildBattlePetLevel", 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.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + data.PassiveSpells.Resize(packet.ReadUInt32()); + data.WorldEffects.Resize(packet.ReadUInt32()); + data.ChannelObjects.Resize(packet.ReadUInt32()); + data.SkinningOwnerGUID = packet.ReadPackedGuid128("SkinningOwnerGUID", indexes); + data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + data.GlideEventSpeedDivisor = packet.ReadSingle("GlideEventSpeedDivisor", indexes); + data.SilencedSchoolMask = packet.ReadUInt32("SilencedSchoolMask", indexes); + data.CurrentAreaID = packet.ReadUInt32("CurrentAreaID", indexes); + if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) + { + data.ComboTarget = packet.ReadPackedGuid128("ComboTarget", indexes); + } + data.Field_2F0 = packet.ReadSingle("Field_2F0", indexes); + data.Field_2F4 = packet.ReadSingle("Field_2F4", 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); + } + return data; + } + + public override IUnitData ReadUpdateUnitData(Packet packet, params object[] indexes) + { + var data = new UnitData(); + packet.ResetBitReader(); + var rawChangesMask = new int[8]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(8); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 8; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + 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.PassiveSpells.ReadUpdateMask(packet); + } + if (changesMask[3]) + { + data.WorldEffects.ReadUpdateMask(packet); + } + if (changesMask[4]) + { + data.ChannelObjects.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + for (var i = 0; i < data.PassiveSpells.Count; ++i) + { + if (data.PassiveSpells.UpdateMask[i]) + { + data.PassiveSpells[i] = ReadUpdatePassiveSpellHistory(packet, indexes, "PassiveSpells", 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]) + { + for (var i = 0; i < data.ChannelObjects.Count; ++i) + { + if (data.ChannelObjects.UpdateMask[i]) + { + data.ChannelObjects[i] = packet.ReadPackedGuid128("ChannelObjects", indexes, i); + } + } + } + if (changesMask[5]) + { + data.Health = packet.ReadInt64("Health", indexes); + } + if (changesMask[6]) + { + data.MaxHealth = packet.ReadInt64("MaxHealth", indexes); + } + if (changesMask[7]) + { + data.DisplayID = packet.ReadInt32("DisplayID", indexes); + } + if (changesMask[8]) + { + data.NpcFlags = packet.ReadUInt32("NpcFlags", indexes); + } + if (changesMask[9]) + { + data.NpcFlags2 = packet.ReadUInt32("NpcFlags2", indexes); + } + if (changesMask[10]) + { + data.StateSpellVisualID = packet.ReadUInt32("StateSpellVisualID", indexes); + } + if (changesMask[11]) + { + data.StateAnimID = packet.ReadUInt32("StateAnimID", indexes); + } + if (changesMask[12]) + { + data.StateAnimKitID = packet.ReadUInt32("StateAnimKitID", indexes); + } + if (changesMask[13]) + { + data.Charm = packet.ReadPackedGuid128("Charm", indexes); + } + if (changesMask[14]) + { + data.Summon = packet.ReadPackedGuid128("Summon", indexes); + } + if (changesMask[15]) + { + data.Critter = packet.ReadPackedGuid128("Critter", indexes); + } + if (changesMask[16]) + { + data.CharmedBy = packet.ReadPackedGuid128("CharmedBy", indexes); + } + if (changesMask[17]) + { + data.SummonedBy = packet.ReadPackedGuid128("SummonedBy", indexes); + } + if (changesMask[18]) + { + data.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + } + if (changesMask[19]) + { + data.DemonCreator = packet.ReadPackedGuid128("DemonCreator", indexes); + } + if (changesMask[20]) + { + data.LookAtControllerTarget = packet.ReadPackedGuid128("LookAtControllerTarget", indexes); + } + if (changesMask[21]) + { + data.Target = packet.ReadPackedGuid128("Target", indexes); + } + if (changesMask[22]) + { + data.BattlePetCompanionGUID = packet.ReadPackedGuid128("BattlePetCompanionGUID", indexes); + } + if (changesMask[23]) + { + data.BattlePetDBID = packet.ReadUInt64("BattlePetDBID", indexes); + } + if (changesMask[24]) + { + data.ChannelData = ReadUpdateUnitChannel(packet, indexes, "ChannelData"); + } + if (changesMask[25]) + { + data.SummonedByHomeRealm = packet.ReadUInt32("SummonedByHomeRealm", indexes); + } + if (changesMask[26]) + { + data.Race = packet.ReadByte("Race", indexes); + } + if (changesMask[27]) + { + data.ClassId = packet.ReadByte("ClassId", indexes); + } + if (changesMask[28]) + { + data.PlayerClassId = packet.ReadByte("PlayerClassId", indexes); + } + if (changesMask[29]) + { + data.Sex = packet.ReadByte("Sex", indexes); + } + if (changesMask[30]) + { + data.DisplayPower = packet.ReadByte("DisplayPower", indexes); + } + if (changesMask[31]) + { + data.OverrideDisplayPowerID = packet.ReadUInt32("OverrideDisplayPowerID", indexes); + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + data.Level = packet.ReadInt32("Level", indexes); + } + if (changesMask[34]) + { + data.EffectiveLevel = packet.ReadInt32("EffectiveLevel", indexes); + } + if (changesMask[35]) + { + data.ContentTuningID = packet.ReadInt32("ContentTuningID", indexes); + } + if (changesMask[36]) + { + data.ScalingLevelMin = packet.ReadInt32("ScalingLevelMin", indexes); + } + if (changesMask[37]) + { + data.ScalingLevelMax = packet.ReadInt32("ScalingLevelMax", indexes); + } + if (changesMask[38]) + { + data.ScalingLevelDelta = packet.ReadInt32("ScalingLevelDelta", indexes); + } + if (changesMask[39]) + { + data.ScalingFactionGroup = packet.ReadInt32("ScalingFactionGroup", indexes); + } + if (changesMask[40]) + { + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + } + if (changesMask[41]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[42]) + { + data.Flags2 = packet.ReadUInt32("Flags2", indexes); + } + if (changesMask[43]) + { + data.Flags3 = packet.ReadUInt32("Flags3", indexes); + } + if (changesMask[44]) + { + data.AuraState = packet.ReadUInt32("AuraState", indexes); + } + if (changesMask[45]) + { + data.RangedAttackRoundBaseTime = packet.ReadUInt32("RangedAttackRoundBaseTime", indexes); + } + if (changesMask[46]) + { + data.BoundingRadius = packet.ReadSingle("BoundingRadius", indexes); + } + if (changesMask[47]) + { + data.CombatReach = packet.ReadSingle("CombatReach", indexes); + } + if (changesMask[48]) + { + data.DisplayScale = packet.ReadSingle("DisplayScale", indexes); + } + if (changesMask[49]) + { + data.NativeDisplayID = packet.ReadInt32("NativeDisplayID", indexes); + } + if (changesMask[50]) + { + data.NativeXDisplayScale = packet.ReadSingle("NativeXDisplayScale", indexes); + } + if (changesMask[51]) + { + data.MountDisplayID = packet.ReadInt32("MountDisplayID", indexes); + } + if (changesMask[52]) + { + data.MinDamage = packet.ReadSingle("MinDamage", indexes); + } + if (changesMask[53]) + { + data.MaxDamage = packet.ReadSingle("MaxDamage", indexes); + } + if (changesMask[54]) + { + data.MinOffHandDamage = packet.ReadSingle("MinOffHandDamage", indexes); + } + if (changesMask[55]) + { + data.MaxOffHandDamage = packet.ReadSingle("MaxOffHandDamage", indexes); + } + if (changesMask[56]) + { + data.StandState = packet.ReadByte("StandState", indexes); + } + if (changesMask[57]) + { + data.PetTalentPoints = packet.ReadByte("PetTalentPoints", indexes); + } + if (changesMask[58]) + { + data.VisFlags = packet.ReadByte("VisFlags", indexes); + } + if (changesMask[59]) + { + data.AnimTier = packet.ReadByte("AnimTier", indexes); + } + if (changesMask[60]) + { + data.PetNumber = packet.ReadUInt32("PetNumber", indexes); + } + if (changesMask[61]) + { + data.PetNameTimestamp = packet.ReadUInt32("PetNameTimestamp", indexes); + } + if (changesMask[62]) + { + data.PetExperience = packet.ReadUInt32("PetExperience", indexes); + } + if (changesMask[63]) + { + data.PetNextLevelExperience = packet.ReadUInt32("PetNextLevelExperience", indexes); + } + } + if (changesMask[64]) + { + if (changesMask[65]) + { + data.ModCastingSpeed = packet.ReadSingle("ModCastingSpeed", indexes); + } + if (changesMask[66]) + { + data.ModSpellHaste = packet.ReadSingle("ModSpellHaste", indexes); + } + if (changesMask[67]) + { + data.ModHaste = packet.ReadSingle("ModHaste", indexes); + } + if (changesMask[68]) + { + data.ModRangedHaste = packet.ReadSingle("ModRangedHaste", indexes); + } + if (changesMask[69]) + { + data.ModHasteRegen = packet.ReadSingle("ModHasteRegen", indexes); + } + if (changesMask[70]) + { + data.ModTimeRate = packet.ReadSingle("ModTimeRate", indexes); + } + if (changesMask[71]) + { + data.CreatedBySpell = packet.ReadInt32("CreatedBySpell", indexes); + } + if (changesMask[72]) + { + data.EmoteState = packet.ReadInt32("EmoteState", indexes); + } + if (changesMask[73]) + { + data.TrainingPointsUsed = packet.ReadInt16("TrainingPointsUsed", indexes); + } + if (changesMask[74]) + { + data.TrainingPointsTotal = packet.ReadInt16("TrainingPointsTotal", indexes); + } + if (changesMask[75]) + { + data.BaseMana = packet.ReadInt32("BaseMana", indexes); + } + if (changesMask[76]) + { + data.BaseHealth = packet.ReadInt32("BaseHealth", indexes); + } + if (changesMask[77]) + { + data.SheatheState = packet.ReadByte("SheatheState", indexes); + } + if (changesMask[78]) + { + data.PvpFlags = packet.ReadByte("PvpFlags", indexes); + } + if (changesMask[79]) + { + data.PetFlags = packet.ReadByte("PetFlags", indexes); + } + if (changesMask[80]) + { + data.ShapeshiftForm = packet.ReadByte("ShapeshiftForm", indexes); + } + if (changesMask[81]) + { + data.AttackPower = packet.ReadInt32("AttackPower", indexes); + } + if (changesMask[82]) + { + data.AttackPowerModPos = packet.ReadInt32("AttackPowerModPos", indexes); + } + if (changesMask[83]) + { + data.AttackPowerModNeg = packet.ReadInt32("AttackPowerModNeg", indexes); + } + if (changesMask[84]) + { + data.AttackPowerMultiplier = packet.ReadSingle("AttackPowerMultiplier", indexes); + } + if (changesMask[85]) + { + data.RangedAttackPower = packet.ReadInt32("RangedAttackPower", indexes); + } + if (changesMask[86]) + { + data.RangedAttackPowerModPos = packet.ReadInt32("RangedAttackPowerModPos", indexes); + } + if (changesMask[87]) + { + data.RangedAttackPowerModNeg = packet.ReadInt32("RangedAttackPowerModNeg", indexes); + } + if (changesMask[88]) + { + data.RangedAttackPowerMultiplier = packet.ReadSingle("RangedAttackPowerMultiplier", indexes); + } + if (changesMask[89]) + { + data.SetAttackSpeedAura = packet.ReadInt32("SetAttackSpeedAura", indexes); + } + if (changesMask[90]) + { + data.Lifesteal = packet.ReadSingle("Lifesteal", indexes); + } + if (changesMask[91]) + { + data.MinRangedDamage = packet.ReadSingle("MinRangedDamage", indexes); + } + if (changesMask[92]) + { + data.MaxRangedDamage = packet.ReadSingle("MaxRangedDamage", indexes); + } + if (changesMask[93]) + { + data.MaxHealthModifier = packet.ReadSingle("MaxHealthModifier", indexes); + } + if (changesMask[94]) + { + data.HoverHeight = packet.ReadSingle("HoverHeight", indexes); + } + if (changesMask[95]) + { + data.MinItemLevelCutoff = packet.ReadInt32("MinItemLevelCutoff", indexes); + } + } + if (changesMask[96]) + { + if (changesMask[97]) + { + data.MinItemLevel = packet.ReadInt32("MinItemLevel", indexes); + } + if (changesMask[98]) + { + data.MaxItemLevel = packet.ReadInt32("MaxItemLevel", indexes); + } + if (changesMask[99]) + { + data.WildBattlePetLevel = packet.ReadInt32("WildBattlePetLevel", indexes); + } + if (changesMask[100]) + { + data.BattlePetCompanionNameTimestamp = packet.ReadUInt32("BattlePetCompanionNameTimestamp", indexes); + } + if (changesMask[101]) + { + data.InteractSpellID = packet.ReadInt32("InteractSpellID", indexes); + } + if (changesMask[102]) + { + data.ScaleDuration = packet.ReadInt32("ScaleDuration", indexes); + } + if (changesMask[103]) + { + data.LooksLikeMountID = packet.ReadInt32("LooksLikeMountID", indexes); + } + if (changesMask[104]) + { + data.LooksLikeCreatureID = packet.ReadInt32("LooksLikeCreatureID", indexes); + } + if (changesMask[105]) + { + data.LookAtControllerID = packet.ReadInt32("LookAtControllerID", indexes); + } + if (changesMask[106]) + { + data.PerksVendorItemID = packet.ReadInt32("PerksVendorItemID", indexes); + } + if (changesMask[107]) + { + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + } + if (changesMask[108]) + { + data.SkinningOwnerGUID = packet.ReadPackedGuid128("SkinningOwnerGUID", indexes); + } + if (changesMask[109]) + { + data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + } + if (changesMask[110]) + { + data.GlideEventSpeedDivisor = packet.ReadSingle("GlideEventSpeedDivisor", indexes); + } + if (changesMask[111]) + { + data.SilencedSchoolMask = packet.ReadUInt32("SilencedSchoolMask", indexes); + } + if (changesMask[112]) + { + data.CurrentAreaID = packet.ReadUInt32("CurrentAreaID", indexes); + } + if (changesMask[113]) + { + data.ComboTarget = packet.ReadPackedGuid128("ComboTarget", indexes); + } + if (changesMask[114]) + { + data.Field_2F0 = packet.ReadSingle("Field_2F0", indexes); + } + if (changesMask[115]) + { + data.Field_2F4 = packet.ReadSingle("Field_2F4", indexes); + } + } + if (changesMask[116]) + { + for (var i = 0; i < 10; ++i) + { + if (changesMask[117 + i]) + { + data.PowerRegenFlatModifier[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i); + } + if (changesMask[127 + i]) + { + data.PowerRegenInterruptedFlatModifier[i] = packet.ReadSingle("PowerRegenInterruptedFlatModifier", indexes, i); + } + if (changesMask[137 + i]) + { + data.Power[i] = packet.ReadInt32("Power", indexes, i); + } + if (changesMask[147 + i]) + { + data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i); + } + if (changesMask[157 + i]) + { + data.ModPowerRegen[i] = packet.ReadSingle("ModPowerRegen", indexes, i); + } + } + } + if (changesMask[167]) + { + for (var i = 0; i < 3; ++i) + { + if (changesMask[168 + i]) + { + data.VirtualItems[i] = ReadUpdateVisibleItem(packet, indexes, "VirtualItems", i); + } + } + } + if (changesMask[171]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[172 + i]) + { + data.AttackRoundBaseTime[i] = packet.ReadUInt32("AttackRoundBaseTime", indexes, i); + } + } + } + if (changesMask[174]) + { + for (var i = 0; i < 5; ++i) + { + if (changesMask[175 + i]) + { + data.Stats[i] = packet.ReadInt32("Stats", indexes, i); + } + if (changesMask[180 + i]) + { + data.StatPosBuff[i] = packet.ReadInt32("StatPosBuff", indexes, i); + } + if (changesMask[185 + i]) + { + data.StatNegBuff[i] = packet.ReadInt32("StatNegBuff", indexes, i); + } + } + } + if (changesMask[190]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[191 + i]) + { + data.Resistances[i] = packet.ReadInt32("Resistances", indexes, i); + } + if (changesMask[198 + i]) + { + data.ResistanceBuffModsPositive[i] = packet.ReadInt32("ResistanceBuffModsPositive", indexes, i); + } + if (changesMask[205 + i]) + { + data.ResistanceBuffModsNegative[i] = packet.ReadInt32("ResistanceBuffModsNegative", indexes, i); + } + if (changesMask[212 + i]) + { + data.PowerCostModifier[i] = packet.ReadInt32("PowerCostModifier", indexes, i); + } + if (changesMask[219 + i]) + { + data.PowerCostMultiplier[i] = packet.ReadSingle("PowerCostMultiplier", 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); + for (var i = 0; i < 24; ++i) + { + data.ObjectiveProgress[i] = packet.ReadUInt16("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]) + { + for (var i = 0; i < 24; ++i) + { + if (changesMask[5 + i]) + { + data.ObjectiveProgress[i] = packet.ReadUInt16("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.ItemID = packet.ReadInt32("ItemID", 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(9); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.SpellID = packet.ReadInt32("SpellID", indexes); + } + if (changesMask[2]) + { + data.ItemID = packet.ReadInt32("ItemID", indexes); + } + if (changesMask[3]) + { + data.Charges = packet.ReadInt32("Charges", indexes); + } + if (changesMask[4]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[5]) + { + data.StartTime = packet.ReadUInt32("StartTime", indexes); + } + if (changesMask[6]) + { + data.EndTime = packet.ReadUInt32("EndTime", indexes); + } + if (changesMask[7]) + { + data.NextChargeTime = packet.ReadUInt32("NextChargeTime", indexes); + } + if (changesMask[8]) + { + 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 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(5); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + data.EmblemStyle = packet.ReadInt32("EmblemStyle", indexes); + } + if (changesMask[1]) + { + data.EmblemColor = packet.ReadInt32("EmblemColor", indexes); + } + if (changesMask[2]) + { + data.BorderStyle = packet.ReadInt32("BorderStyle", indexes); + } + if (changesMask[3]) + { + data.BorderColor = packet.ReadInt32("BorderColor", indexes); + } + if (changesMask[4]) + { + 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()); + for (var i = 0; i < 2; ++i) + { + data.PartyType[i] = packet.ReadByte("PartyType", indexes, i); + } + data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); + 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.PvpRank = packet.ReadByte("PvpRank", indexes); + data.Field_88 = packet.ReadInt32("Field_88", indexes); + data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes); + data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes); + if ((flags & UpdateFieldFlag.PartyMember) != UpdateFieldFlag.None) + { + for (var i = 0; i < 25; ++i) + { + data.QuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestLog", i); + } + } + 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_13C = packet.ReadInt32("Field_13C", indexes); + data.Field_140 = packet.ReadInt32("Field_140", indexes); + data.CurrentBattlePetSpeciesID = packet.ReadInt32("CurrentBattlePetSpeciesID", 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.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); + } + data.Name = new string('*', (int)packet.ReadBits(6)); + hasDeclinedNames = packet.ReadBit("HasDeclinedNames", indexes); + Substructures.MythicPlusHandler.ReadDungeonScoreSummary(packet, indexes, "DungeonScore"); + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + 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[5]; + var rawMaskMask = new int[1]; + rawMaskMask[0] = (int)packet.ReadBits(5); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 5; ++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.Customizations.ReadUpdateMask(packet); + } + if (changesMask[2]) + { + data.ArenaCooldowns.ReadUpdateMask(packet); + } + if (changesMask[3]) + { + data.VisualItemReplacements.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]) + { + for (var i = 0; i < data.ArenaCooldowns.Count; ++i) + { + if (data.ArenaCooldowns.UpdateMask[i]) + { + data.ArenaCooldowns[i] = ReadUpdateArenaCooldown(packet, indexes, "ArenaCooldowns", i); + } + } + } + if (changesMask[3]) + { + for (var i = 0; i < data.VisualItemReplacements.Count; ++i) + { + if (data.VisualItemReplacements.UpdateMask[i]) + { + data.VisualItemReplacements[i] = packet.ReadInt32("VisualItemReplacements", indexes, i); + } + } + } + if (changesMask[4]) + { + data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes); + } + if (changesMask[5]) + { + data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes); + } + if (changesMask[6]) + { + data.BnetAccount = packet.ReadPackedGuid128("BnetAccount", indexes); + } + if (changesMask[7]) + { + data.GuildClubMemberID = packet.ReadUInt64("GuildClubMemberID", indexes); + } + if (changesMask[8]) + { + data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes); + } + if (changesMask[9]) + { + data.PlayerFlags = packet.ReadUInt32("PlayerFlags", indexes); + } + if (changesMask[10]) + { + data.PlayerFlagsEx = packet.ReadUInt32("PlayerFlagsEx", indexes); + } + if (changesMask[11]) + { + data.GuildRankID = packet.ReadUInt32("GuildRankID", indexes); + } + if (changesMask[12]) + { + data.GuildDeleteDate = packet.ReadUInt32("GuildDeleteDate", indexes); + } + if (changesMask[13]) + { + data.GuildLevel = packet.ReadInt32("GuildLevel", indexes); + } + if (changesMask[14]) + { + data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); + } + if (changesMask[15]) + { + data.NativeSex = packet.ReadByte("NativeSex", indexes); + } + if (changesMask[16]) + { + data.Inebriation = packet.ReadByte("Inebriation", indexes); + } + if (changesMask[17]) + { + data.PvpTitle = packet.ReadByte("PvpTitle", indexes); + } + if (changesMask[18]) + { + data.ArenaFaction = packet.ReadByte("ArenaFaction", indexes); + } + if (changesMask[19]) + { + data.PvpRank = packet.ReadByte("PvpRank", indexes); + } + if (changesMask[20]) + { + data.Field_88 = packet.ReadInt32("Field_88", indexes); + } + if (changesMask[21]) + { + data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes); + } + if (changesMask[22]) + { + data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes); + } + if (changesMask[23]) + { + data.PlayerTitle = packet.ReadInt32("PlayerTitle", indexes); + } + if (changesMask[24]) + { + data.FakeInebriation = packet.ReadInt32("FakeInebriation", indexes); + } + if (changesMask[25]) + { + data.VirtualPlayerRealm = packet.ReadUInt32("VirtualPlayerRealm", indexes); + } + if (changesMask[26]) + { + data.CurrentSpecID = packet.ReadUInt32("CurrentSpecID", indexes); + } + if (changesMask[27]) + { + data.TaxiMountAnimKitID = packet.ReadInt32("TaxiMountAnimKitID", indexes); + } + if (changesMask[28]) + { + data.CurrentBattlePetBreedQuality = packet.ReadByte("CurrentBattlePetBreedQuality", indexes); + } + if (changesMask[29]) + { + data.HonorLevel = packet.ReadInt32("HonorLevel", indexes); + } + if (changesMask[30]) + { + data.LogoutTime = packet.ReadInt64("LogoutTime", indexes); + } + } + if (changesMask[32]) + { + if (changesMask[33]) + { + data.Field_13C = packet.ReadInt32("Field_13C", indexes); + } + if (changesMask[34]) + { + data.Field_140 = packet.ReadInt32("Field_140", indexes); + } + if (changesMask[35]) + { + data.CurrentBattlePetSpeciesID = packet.ReadInt32("CurrentBattlePetSpeciesID", indexes); + } + if (changesMask[38]) + { + data.PersonalTabard = ReadUpdateCustomTabardInfo(packet, indexes, "PersonalTabard"); + } + } + if (changesMask[0]) + { + if (changesMask[31]) + { + data.Name = new string('*', (int)packet.ReadBits(6)); + } + } + if (changesMask[32]) + { + hasDeclinedNames = packet.ReadBit("HasDeclinedNames", indexes); + packet.ResetBitReader(); + if (changesMask[36]) + { + Substructures.MythicPlusHandler.ReadDungeonScoreSummary(packet, indexes, "DungeonScore"); + } + } + if (changesMask[0]) + { + if (changesMask[31]) + { + data.Name = packet.ReadWoWString("Name", data.Name.Length, indexes); + } + } + if (changesMask[32]) + { + if (changesMask[37]) + { + if (hasDeclinedNames) + { + data.DeclinedNames = ReadUpdateDeclinedNames(packet, indexes, "DeclinedNames"); + } + } + } + if (changesMask[39]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[40 + i]) + { + data.PartyType[i] = packet.ReadByte("PartyType", indexes, i); + } + } + } + if (changesMask[42]) + { + for (var i = 0; i < 25; ++i) + { + if (changesMask[43 + i]) + { + if (noQuestLogChangesMask) + data.QuestLog[i] = ReadCreateQuestLog(packet, indexes, "QuestLog", i); + else + data.QuestLog[i] = ReadUpdateQuestLog(packet, indexes, "QuestLog", i); + } + } + } + if (changesMask[68]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[69 + i]) + { + data.VisibleItems[i] = ReadUpdateVisibleItem(packet, indexes, "VisibleItems", i); + } + } + } + if (changesMask[88]) + { + for (var i = 0; i < 6; ++i) + { + if (changesMask[89 + i]) + { + data.AvgItemLevel[i] = packet.ReadSingle("AvgItemLevel", indexes, i); + } + } + } + if (changesMask[95]) + { + for (var i = 0; i < 32; ++i) + { + if (changesMask[96 + i]) + { + data.ForcedReactions[i] = ReadUpdateZonePlayerForcedReaction(packet, indexes, "ForcedReactions", i); + } + } + } + if (changesMask[128]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[129 + i]) + { + data.Field_3120[i] = packet.ReadUInt32("Field_3120", indexes, i); + } + } + } + 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 IBitVectors ReadCreateBitVectors(Packet packet, params object[] indexes) + { + var data = new BitVectors(); + packet.ResetBitReader(); + for (var i = 0; i < 11; ++i) + { + data.Values[i].Resize(packet.ReadUInt32()); + for (var j = 0; j < data.Values[i].Count; ++j) + { + data.Values[i][j] = packet.ReadUInt64("Values", indexes, i, j); + } + } + return data; + } + + public static IBitVectors ReadUpdateBitVectors(Packet packet, params object[] indexes) + { + var data = new BitVectors(); + packet.ResetBitReader(); + var rawChangesMask = new int[1]; + rawChangesMask[0] = (int)packet.ReadBits(1); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + for (var i = 0; i < 11; ++i) + { + data.Values[i].ReadUpdateMask(packet); + } + } + if (changesMask[0]) + { + for (var i = 0; i < 11; ++i) + { + for (var j = 0; j < data.Values[i].Count; ++j) + { + if (data.Values[i].UpdateMask[j]) + { + data.Values[i][j] = packet.ReadUInt64("Values", indexes, i, j); + } + } + } + } + packet.ResetBitReader(); + 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 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 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 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 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.Field_96 = packet.ReadByte("Field_96", 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(9); + 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[8]) + { + data.Field_96 = packet.ReadByte("Field_96", 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 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 override IActivePlayerData ReadCreateActivePlayerData(Packet packet, UpdateFieldFlag flags, params object[] indexes) + { + var data = new ActivePlayerData(); + packet.ResetBitReader(); + var hasPetStable = false; + for (var i = 0; i < 146; ++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); + for (var i = 0; i < 2; ++i) + { + data.TrackResourceMask[i] = packet.ReadUInt32("TrackResourceMask", indexes, i); + } + 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); + for (var i = 0; i < 7; ++i) + { + data.SpellCritPercentage[i] = packet.ReadSingle("SpellCritPercentage", indexes, 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.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); + } + data.ModHealingDonePos = packet.ReadInt32("ModHealingDonePos", indexes); + data.ModHealingPercent = packet.ReadSingle("ModHealingPercent", indexes); + data.ModHealingDonePercent = packet.ReadSingle("ModHealingDonePercent", 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.AmmoID = packet.ReadInt32("AmmoID", 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.TodayDishonorableKills = packet.ReadUInt16("TodayDishonorableKills", indexes); + data.YesterdayHonorableKills = packet.ReadUInt16("YesterdayHonorableKills", indexes); + data.YesterdayDishonorableKills = packet.ReadUInt16("YesterdayDishonorableKills", indexes); + data.LastWeekHonorableKills = packet.ReadUInt16("LastWeekHonorableKills", indexes); + data.LastWeekDishonorableKills = packet.ReadUInt16("LastWeekDishonorableKills", indexes); + data.ThisWeekHonorableKills = packet.ReadUInt16("ThisWeekHonorableKills", indexes); + data.ThisWeekDishonorableKills = packet.ReadUInt16("ThisWeekDishonorableKills", indexes); + data.ThisWeekContribution = packet.ReadUInt32("ThisWeekContribution", indexes); + data.LifetimeHonorableKills = packet.ReadUInt32("LifetimeHonorableKills", indexes); + data.LifetimeDishonorableKills = packet.ReadUInt32("LifetimeDishonorableKills", indexes); + data.Field_F24 = packet.ReadUInt32("Field_F24", indexes); + data.YesterdayContribution = packet.ReadUInt32("YesterdayContribution", indexes); + data.LastWeekContribution = packet.ReadUInt32("LastWeekContribution", indexes); + data.LastWeekRank = packet.ReadUInt32("LastWeekRank", indexes); + data.WatchedFactionIndex = packet.ReadInt32("WatchedFactionIndex", indexes); + for (var i = 0; i < 32; ++i) + { + data.CombatRatings[i] = packet.ReadInt32("CombatRatings", indexes, i); + } + 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.LocalRegenFlags = packet.ReadByte("LocalRegenFlags", indexes); + data.AuraVision = packet.ReadByte("AuraVision", indexes); + data.NumBackpackSlots = packet.ReadByte("NumBackpackSlots", indexes); + data.OverrideSpellsID = packet.ReadInt32("OverrideSpellsID", indexes); + data.LfgBonusFactionID = packet.ReadInt32("LfgBonusFactionID", indexes); + data.LootSpecID = packet.ReadUInt16("LootSpecID", indexes); + data.OverrideZonePVPType = packet.ReadUInt32("OverrideZonePVPType", indexes); + for (var i = 0; i < 4; ++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 < 875; ++i) + { + data.QuestCompleted[i] = packet.ReadUInt64("QuestCompleted", indexes, i); + } + data.Honor = packet.ReadInt32("Honor", indexes); + data.HonorNextLevel = packet.ReadInt32("HonorNextLevel", indexes); + data.Field_F74 = packet.ReadInt32("Field_F74", indexes); + data.PvpTierMaxFromWins = packet.ReadInt32("PvpTierMaxFromWins", indexes); + data.PvpLastWeeksTierMaxFromWins = packet.ReadInt32("PvpLastWeeksTierMaxFromWins", indexes); + data.PvpRankProgress = packet.ReadByte("PvpRankProgress", indexes); + data.PerksProgramCurrency = packet.ReadInt32("PerksProgramCurrency", 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.Field_1000.Resize(packet.ReadUInt32()); + data.Heirlooms.Resize(packet.ReadUInt32()); + data.HeirloomFlags.Resize(packet.ReadUInt32()); + data.Toys.Resize(packet.ReadUInt32()); + data.Transmog.Resize(packet.ReadUInt32()); + data.ConditionalTransmog.Resize(packet.ReadUInt32()); + data.SelfResSpells.Resize(packet.ReadUInt32()); + data.CharacterRestrictions.Resize(packet.ReadUInt32()); + data.SpellPctModByLabel.Resize(packet.ReadUInt32()); + data.SpellFlatModByLabel.Resize(packet.ReadUInt32()); + data.TaskQuests.Resize(packet.ReadUInt32()); + data.TransportServerTime = packet.ReadInt32("TransportServerTime", indexes); + data.Field_15BC = packet.ReadInt32("Field_15BC", indexes); + data.TraitConfigs.Resize(packet.ReadUInt32()); + data.ActiveCombatTraitConfigID = packet.ReadUInt32("ActiveCombatTraitConfigID", indexes); + for (var i = 0; i < 9; ++i) + { + data.GlyphSlots[i] = packet.ReadUInt32("GlyphSlots", indexes, i); + data.Glyphs[i] = packet.ReadUInt32("Glyphs", indexes, i); + } + data.GlyphsEnabled = packet.ReadUInt16("GlyphsEnabled", indexes); + data.LfgRoles = packet.ReadByte("LfgRoles", indexes); + data.CategoryCooldownMods.Resize(packet.ReadUInt32()); + data.WeeklySpellUses.Resize(packet.ReadUInt32()); + data.NumStableSlots = packet.ReadByte("NumStableSlots", indexes); + for (var i = 0; i < 13; ++i) + { + data.Field_4348[i] = packet.ReadUInt64("Field_4348", indexes, i); + } + 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.Field_1000.Count; ++i) + { + data.Field_1000[i] = packet.ReadInt32("Field_1000", 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.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.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.TaskQuests.Count; ++i) + { + data.TaskQuests[i] = ReadCreateQuestLog(packet, indexes, "TaskQuests", 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 < 9; ++i) + { + data.PvpInfo[i] = ReadCreatePVPInfo(packet, indexes, "PvpInfo", i); + } + packet.ResetBitReader(); + data.SortBagsRightToLeft = packet.ReadBit("SortBagsRightToLeft", indexes); + data.InsertItemsLeftToRight = packet.ReadBit("InsertItemsLeftToRight", indexes); + hasPetStable = packet.ReadBit("HasPetStable", indexes); + data.AccountBankTabSettings.Resize(packet.ReadBits(3)); + data.ResearchHistory = ReadCreateResearchHistory(packet, indexes, "ResearchHistory"); + Substructures.PerksProgramHandler.ReadPerksVendorItem(packet, indexes, "FrozenPerksVendorItem"); + 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.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); + } + 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); + } + return data; + } + + public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, params object[] indexes) + { + var data = new ActivePlayerData(); + packet.ResetBitReader(); + var rawChangesMask = new int[44]; + var rawMaskMask = new int[2]; + for (var i = 0; i < 1; ++i) + rawMaskMask[i] = packet.ReadInt32(); + rawMaskMask[1] = (int)packet.ReadBits(12); + var maskMask = new BitArray(rawMaskMask); + for (var i = 0; i < 44; ++i) + if (maskMask[i]) + rawChangesMask[i] = (int)packet.ReadBits(32); + var changesMask = new BitArray(rawChangesMask); + + var hasPetStable = false; + if (changesMask[0]) + { + if (changesMask[1]) + { + data.SortBagsRightToLeft = packet.ReadBit("SortBagsRightToLeft", indexes); + } + if (changesMask[2]) + { + data.InsertItemsLeftToRight = packet.ReadBit("InsertItemsLeftToRight", indexes); + } + if (changesMask[3]) + { + data.KnownTitles.ReadUpdateMask(packet); + } + if (changesMask[4]) + { + data.CharacterDataElements.ReadUpdateMask(packet); + } + if (changesMask[5]) + { + data.AccountDataElements.ReadUpdateMask(packet); + } + } + if (changesMask[23]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[24]) + { + data.ResearchSites[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[25]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[26]) + { + data.ResearchSiteProgress[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[27]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[28]) + { + data.Research[i].ReadUpdateMask(packet); + } + } + } + if (changesMask[23]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[24]) + { + 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[25]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[26]) + { + 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[27]) + { + for (var i = 0; i < 1; ++i) + { + if (changesMask[28]) + { + 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[6]) + { + data.DailyQuestsCompleted.ReadUpdateMask(packet); + } + if (changesMask[7]) + { + data.AvailableQuestLineXQuestIDs.ReadUpdateMask(packet); + } + if (changesMask[8]) + { + data.Field_1000.ReadUpdateMask(packet); + } + if (changesMask[9]) + { + data.Heirlooms.ReadUpdateMask(packet); + } + if (changesMask[10]) + { + data.HeirloomFlags.ReadUpdateMask(packet); + } + if (changesMask[11]) + { + data.Toys.ReadUpdateMask(packet); + } + if (changesMask[12]) + { + data.Transmog.ReadUpdateMask(packet); + } + if (changesMask[13]) + { + data.ConditionalTransmog.ReadUpdateMask(packet); + } + if (changesMask[14]) + { + data.SelfResSpells.ReadUpdateMask(packet); + } + if (changesMask[15]) + { + data.CharacterRestrictions.ReadUpdateMask(packet); + } + if (changesMask[16]) + { + data.SpellPctModByLabel.ReadUpdateMask(packet); + } + if (changesMask[17]) + { + data.SpellFlatModByLabel.ReadUpdateMask(packet); + } + if (changesMask[18]) + { + data.TaskQuests.ReadUpdateMask(packet); + } + if (changesMask[19]) + { + data.TraitConfigs.ReadUpdateMask(packet); + } + if (changesMask[20]) + { + data.CategoryCooldownMods.ReadUpdateMask(packet); + } + if (changesMask[21]) + { + data.WeeklySpellUses.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[3]) + { + for (var i = 0; i < data.KnownTitles.Count; ++i) + { + if (data.KnownTitles.UpdateMask[i]) + { + data.KnownTitles[i] = packet.ReadUInt64("KnownTitles", indexes, i); + } + } + } + if (changesMask[6]) + { + for (var i = 0; i < data.DailyQuestsCompleted.Count; ++i) + { + if (data.DailyQuestsCompleted.UpdateMask[i]) + { + data.DailyQuestsCompleted[i] = packet.ReadInt32("DailyQuestsCompleted", indexes, i); + } + } + } + if (changesMask[7]) + { + for (var i = 0; i < data.AvailableQuestLineXQuestIDs.Count; ++i) + { + if (data.AvailableQuestLineXQuestIDs.UpdateMask[i]) + { + data.AvailableQuestLineXQuestIDs[i] = packet.ReadInt32("AvailableQuestLineXQuestIDs", indexes, i); + } + } + } + if (changesMask[8]) + { + for (var i = 0; i < data.Field_1000.Count; ++i) + { + if (data.Field_1000.UpdateMask[i]) + { + data.Field_1000[i] = packet.ReadInt32("Field_1000", indexes, i); + } + } + } + if (changesMask[9]) + { + for (var i = 0; i < data.Heirlooms.Count; ++i) + { + if (data.Heirlooms.UpdateMask[i]) + { + data.Heirlooms[i] = packet.ReadInt32("Heirlooms", indexes, i); + } + } + } + if (changesMask[10]) + { + for (var i = 0; i < data.HeirloomFlags.Count; ++i) + { + if (data.HeirloomFlags.UpdateMask[i]) + { + data.HeirloomFlags[i] = packet.ReadUInt32("HeirloomFlags", indexes, i); + } + } + } + if (changesMask[11]) + { + for (var i = 0; i < data.Toys.Count; ++i) + { + if (data.Toys.UpdateMask[i]) + { + data.Toys[i] = packet.ReadInt32("Toys", indexes, i); + } + } + } + if (changesMask[12]) + { + for (var i = 0; i < data.Transmog.Count; ++i) + { + if (data.Transmog.UpdateMask[i]) + { + data.Transmog[i] = packet.ReadUInt32("Transmog", indexes, i); + } + } + } + if (changesMask[13]) + { + for (var i = 0; i < data.ConditionalTransmog.Count; ++i) + { + if (data.ConditionalTransmog.UpdateMask[i]) + { + data.ConditionalTransmog[i] = packet.ReadInt32("ConditionalTransmog", indexes, i); + } + } + } + if (changesMask[14]) + { + for (var i = 0; i < data.SelfResSpells.Count; ++i) + { + if (data.SelfResSpells.UpdateMask[i]) + { + data.SelfResSpells[i] = packet.ReadInt32("SelfResSpells", indexes, i); + } + } + } + if (changesMask[16]) + { + for (var i = 0; i < data.SpellPctModByLabel.Count; ++i) + { + if (data.SpellPctModByLabel.UpdateMask[i]) + { + data.SpellPctModByLabel[i] = ReadUpdateSpellPctModByLabel(packet, indexes, "SpellPctModByLabel", i); + } + } + } + if (changesMask[17]) + { + for (var i = 0; i < data.SpellFlatModByLabel.Count; ++i) + { + if (data.SpellFlatModByLabel.UpdateMask[i]) + { + data.SpellFlatModByLabel[i] = ReadUpdateSpellFlatModByLabel(packet, indexes, "SpellFlatModByLabel", i); + } + } + } + if (changesMask[18]) + { + for (var i = 0; i < data.TaskQuests.Count; ++i) + { + if (data.TaskQuests.UpdateMask[i]) + { + data.TaskQuests[i] = ReadUpdateQuestLog(packet, indexes, "TaskQuests", i); + } + } + } + if (changesMask[20]) + { + for (var i = 0; i < data.CategoryCooldownMods.Count; ++i) + { + if (data.CategoryCooldownMods.UpdateMask[i]) + { + data.CategoryCooldownMods[i] = ReadUpdateCategoryCooldownMod(packet, indexes, "CategoryCooldownMods", i); + } + } + } + if (changesMask[21]) + { + for (var i = 0; i < data.WeeklySpellUses.Count; ++i) + { + if (data.WeeklySpellUses.UpdateMask[i]) + { + data.WeeklySpellUses[i] = ReadUpdateWeeklySpellUse(packet, indexes, "WeeklySpellUses", i); + } + } + } + if (changesMask[22]) + { + data.AccountBankTabSettings.ReadUpdateMask(packet, 3); + } + if (changesMask[4]) + { + for (var i = 0; i < data.CharacterDataElements.Count; ++i) + { + if (data.CharacterDataElements.UpdateMask[i]) + { + data.CharacterDataElements[i] = ReadUpdatePlayerDataElement(packet, indexes, "CharacterDataElements", i); + } + } + } + if (changesMask[5]) + { + for (var i = 0; i < data.AccountDataElements.Count; ++i) + { + if (data.AccountDataElements.UpdateMask[i]) + { + data.AccountDataElements[i] = ReadUpdatePlayerDataElement(packet, indexes, "AccountDataElements", i); + } + } + } + if (changesMask[15]) + { + for (var i = 0; i < data.CharacterRestrictions.Count; ++i) + { + if (data.CharacterRestrictions.UpdateMask[i]) + { + data.CharacterRestrictions[i] = ReadUpdateCharacterRestriction(packet, indexes, "CharacterRestrictions", i); + } + } + } + if (changesMask[19]) + { + for (var i = 0; i < data.TraitConfigs.Count; ++i) + { + if (data.TraitConfigs.UpdateMask[i]) + { + data.TraitConfigs[i] = ReadUpdateTraitConfig(packet, indexes, "TraitConfigs", i); + } + } + } + if (changesMask[22]) + { + for (var i = 0; i < data.AccountBankTabSettings.Count; ++i) + { + if (data.AccountBankTabSettings.UpdateMask[i]) + { + data.AccountBankTabSettings[i] = ReadUpdateBankTabSettings(packet, indexes, "AccountBankTabSettings", i); + } + } + } + if (changesMask[29]) + { + data.FarsightObject = packet.ReadPackedGuid128("FarsightObject", indexes); + } + if (changesMask[30]) + { + data.SummonedBattlePetGUID = packet.ReadPackedGuid128("SummonedBattlePetGUID", indexes); + } + if (changesMask[31]) + { + data.Coinage = packet.ReadUInt64("Coinage", indexes); + } + if (changesMask[32]) + { + data.AccountBankCoinage = packet.ReadUInt64("AccountBankCoinage", indexes); + } + if (changesMask[33]) + { + data.XP = packet.ReadInt32("XP", indexes); + } + if (changesMask[34]) + { + data.NextLevelXP = packet.ReadInt32("NextLevelXP", indexes); + } + if (changesMask[35]) + { + data.TrialXP = packet.ReadInt32("TrialXP", indexes); + } + if (changesMask[36]) + { + data.Skill = ReadUpdateSkillInfo(packet, indexes, "Skill"); + } + if (changesMask[37]) + { + data.CharacterPoints = packet.ReadInt32("CharacterPoints", indexes); + } + } + if (changesMask[38]) + { + if (changesMask[39]) + { + data.MaxTalentTiers = packet.ReadInt32("MaxTalentTiers", indexes); + } + if (changesMask[40]) + { + data.TrackCreatureMask = packet.ReadUInt32("TrackCreatureMask", indexes); + } + if (changesMask[41]) + { + data.MainhandExpertise = packet.ReadSingle("MainhandExpertise", indexes); + } + if (changesMask[42]) + { + data.OffhandExpertise = packet.ReadSingle("OffhandExpertise", indexes); + } + if (changesMask[43]) + { + data.RangedExpertise = packet.ReadSingle("RangedExpertise", indexes); + } + if (changesMask[44]) + { + data.CombatRatingExpertise = packet.ReadSingle("CombatRatingExpertise", indexes); + } + if (changesMask[45]) + { + data.BlockPercentage = packet.ReadSingle("BlockPercentage", indexes); + } + if (changesMask[46]) + { + data.DodgePercentage = packet.ReadSingle("DodgePercentage", indexes); + } + if (changesMask[47]) + { + data.DodgePercentageFromAttribute = packet.ReadSingle("DodgePercentageFromAttribute", indexes); + } + if (changesMask[48]) + { + data.ParryPercentage = packet.ReadSingle("ParryPercentage", indexes); + } + if (changesMask[49]) + { + data.ParryPercentageFromAttribute = packet.ReadSingle("ParryPercentageFromAttribute", indexes); + } + if (changesMask[50]) + { + data.CritPercentage = packet.ReadSingle("CritPercentage", indexes); + } + if (changesMask[51]) + { + data.RangedCritPercentage = packet.ReadSingle("RangedCritPercentage", indexes); + } + if (changesMask[52]) + { + data.OffhandCritPercentage = packet.ReadSingle("OffhandCritPercentage", indexes); + } + if (changesMask[53]) + { + data.ShieldBlock = packet.ReadInt32("ShieldBlock", indexes); + } + if (changesMask[54]) + { + data.ShieldBlockCritPercentage = packet.ReadSingle("ShieldBlockCritPercentage", indexes); + } + if (changesMask[55]) + { + data.Mastery = packet.ReadSingle("Mastery", indexes); + } + if (changesMask[56]) + { + data.Speed = packet.ReadSingle("Speed", indexes); + } + if (changesMask[57]) + { + data.Avoidance = packet.ReadSingle("Avoidance", indexes); + } + if (changesMask[58]) + { + data.Sturdiness = packet.ReadSingle("Sturdiness", indexes); + } + if (changesMask[59]) + { + data.Versatility = packet.ReadInt32("Versatility", indexes); + } + if (changesMask[60]) + { + data.VersatilityBonus = packet.ReadSingle("VersatilityBonus", indexes); + } + if (changesMask[61]) + { + data.PvpPowerDamage = packet.ReadSingle("PvpPowerDamage", indexes); + } + if (changesMask[62]) + { + data.PvpPowerHealing = packet.ReadSingle("PvpPowerHealing", indexes); + } + if (changesMask[63]) + { + data.BitVectors = ReadUpdateBitVectors(packet, indexes, "BitVectors"); + } + if (changesMask[64]) + { + data.ModHealingDonePos = packet.ReadInt32("ModHealingDonePos", indexes); + } + if (changesMask[65]) + { + data.ModHealingPercent = packet.ReadSingle("ModHealingPercent", indexes); + } + if (changesMask[66]) + { + data.ModHealingDonePercent = packet.ReadSingle("ModHealingDonePercent", indexes); + } + if (changesMask[67]) + { + data.ModPeriodicHealingDonePercent = packet.ReadSingle("ModPeriodicHealingDonePercent", indexes); + } + if (changesMask[68]) + { + data.ModSpellPowerPercent = packet.ReadSingle("ModSpellPowerPercent", indexes); + } + if (changesMask[69]) + { + data.ModResiliencePercent = packet.ReadSingle("ModResiliencePercent", indexes); + } + } + if (changesMask[70]) + { + if (changesMask[71]) + { + data.OverrideSpellPowerByAPPercent = packet.ReadSingle("OverrideSpellPowerByAPPercent", indexes); + } + if (changesMask[72]) + { + data.OverrideAPBySpellPowerPercent = packet.ReadSingle("OverrideAPBySpellPowerPercent", indexes); + } + if (changesMask[73]) + { + data.ModTargetResistance = packet.ReadInt32("ModTargetResistance", indexes); + } + if (changesMask[74]) + { + data.ModTargetPhysicalResistance = packet.ReadInt32("ModTargetPhysicalResistance", indexes); + } + if (changesMask[75]) + { + data.LocalFlags = packet.ReadUInt32("LocalFlags", indexes); + } + if (changesMask[76]) + { + data.GrantableLevels = packet.ReadByte("GrantableLevels", indexes); + } + if (changesMask[77]) + { + data.MultiActionBars = packet.ReadByte("MultiActionBars", indexes); + } + if (changesMask[78]) + { + data.LifetimeMaxRank = packet.ReadByte("LifetimeMaxRank", indexes); + } + if (changesMask[79]) + { + data.NumRespecs = packet.ReadByte("NumRespecs", indexes); + } + if (changesMask[80]) + { + data.AmmoID = packet.ReadInt32("AmmoID", indexes); + } + if (changesMask[81]) + { + data.PvpMedals = packet.ReadUInt32("PvpMedals", indexes); + } + if (changesMask[82]) + { + data.TodayHonorableKills = packet.ReadUInt16("TodayHonorableKills", indexes); + } + if (changesMask[83]) + { + data.TodayDishonorableKills = packet.ReadUInt16("TodayDishonorableKills", indexes); + } + if (changesMask[84]) + { + data.YesterdayHonorableKills = packet.ReadUInt16("YesterdayHonorableKills", indexes); + } + if (changesMask[85]) + { + data.YesterdayDishonorableKills = packet.ReadUInt16("YesterdayDishonorableKills", indexes); + } + if (changesMask[86]) + { + data.LastWeekHonorableKills = packet.ReadUInt16("LastWeekHonorableKills", indexes); + } + if (changesMask[87]) + { + data.LastWeekDishonorableKills = packet.ReadUInt16("LastWeekDishonorableKills", indexes); + } + if (changesMask[88]) + { + data.ThisWeekHonorableKills = packet.ReadUInt16("ThisWeekHonorableKills", indexes); + } + if (changesMask[89]) + { + data.ThisWeekDishonorableKills = packet.ReadUInt16("ThisWeekDishonorableKills", indexes); + } + if (changesMask[90]) + { + data.ThisWeekContribution = packet.ReadUInt32("ThisWeekContribution", indexes); + } + if (changesMask[91]) + { + data.LifetimeHonorableKills = packet.ReadUInt32("LifetimeHonorableKills", indexes); + } + if (changesMask[92]) + { + data.LifetimeDishonorableKills = packet.ReadUInt32("LifetimeDishonorableKills", indexes); + } + if (changesMask[93]) + { + data.Field_F24 = packet.ReadUInt32("Field_F24", indexes); + } + if (changesMask[94]) + { + data.YesterdayContribution = packet.ReadUInt32("YesterdayContribution", indexes); + } + if (changesMask[95]) + { + data.LastWeekContribution = packet.ReadUInt32("LastWeekContribution", indexes); + } + if (changesMask[96]) + { + data.LastWeekRank = packet.ReadUInt32("LastWeekRank", indexes); + } + if (changesMask[97]) + { + data.WatchedFactionIndex = packet.ReadInt32("WatchedFactionIndex", indexes); + } + if (changesMask[98]) + { + data.MaxLevel = packet.ReadInt32("MaxLevel", indexes); + } + if (changesMask[99]) + { + data.ScalingPlayerLevelDelta = packet.ReadInt32("ScalingPlayerLevelDelta", indexes); + } + if (changesMask[100]) + { + data.MaxCreatureScalingLevel = packet.ReadInt32("MaxCreatureScalingLevel", indexes); + } + if (changesMask[101]) + { + data.PetSpellPower = packet.ReadInt32("PetSpellPower", indexes); + } + } + if (changesMask[102]) + { + if (changesMask[103]) + { + data.UiHitModifier = packet.ReadSingle("UiHitModifier", indexes); + } + if (changesMask[104]) + { + data.UiSpellHitModifier = packet.ReadSingle("UiSpellHitModifier", indexes); + } + if (changesMask[105]) + { + data.HomeRealmTimeOffset = packet.ReadInt32("HomeRealmTimeOffset", indexes); + } + if (changesMask[106]) + { + data.ModPetHaste = packet.ReadSingle("ModPetHaste", indexes); + } + if (changesMask[107]) + { + data.LocalRegenFlags = packet.ReadByte("LocalRegenFlags", indexes); + } + if (changesMask[108]) + { + data.AuraVision = packet.ReadByte("AuraVision", indexes); + } + if (changesMask[109]) + { + data.NumBackpackSlots = packet.ReadByte("NumBackpackSlots", indexes); + } + if (changesMask[110]) + { + data.OverrideSpellsID = packet.ReadInt32("OverrideSpellsID", indexes); + } + if (changesMask[111]) + { + data.LfgBonusFactionID = packet.ReadInt32("LfgBonusFactionID", indexes); + } + if (changesMask[112]) + { + data.LootSpecID = packet.ReadUInt16("LootSpecID", indexes); + } + if (changesMask[113]) + { + data.OverrideZonePVPType = packet.ReadUInt32("OverrideZonePVPType", indexes); + } + if (changesMask[114]) + { + data.Honor = packet.ReadInt32("Honor", indexes); + } + if (changesMask[115]) + { + data.HonorNextLevel = packet.ReadInt32("HonorNextLevel", indexes); + } + if (changesMask[116]) + { + data.Field_F74 = packet.ReadInt32("Field_F74", indexes); + } + if (changesMask[117]) + { + data.PvpTierMaxFromWins = packet.ReadInt32("PvpTierMaxFromWins", indexes); + } + if (changesMask[118]) + { + data.PvpLastWeeksTierMaxFromWins = packet.ReadInt32("PvpLastWeeksTierMaxFromWins", indexes); + } + if (changesMask[119]) + { + data.PvpRankProgress = packet.ReadByte("PvpRankProgress", indexes); + } + if (changesMask[120]) + { + data.PerksProgramCurrency = packet.ReadInt32("PerksProgramCurrency", indexes); + } + if (changesMask[121]) + { + data.TransportServerTime = packet.ReadInt32("TransportServerTime", indexes); + } + if (changesMask[124]) + { + data.Field_15BC = packet.ReadInt32("Field_15BC", indexes); + } + if (changesMask[125]) + { + data.ActiveCombatTraitConfigID = packet.ReadUInt32("ActiveCombatTraitConfigID", indexes); + } + if (changesMask[126]) + { + data.GlyphsEnabled = packet.ReadUInt16("GlyphsEnabled", indexes); + } + if (changesMask[127]) + { + data.LfgRoles = packet.ReadByte("LfgRoles", indexes); + } + if (changesMask[129]) + { + data.NumStableSlots = packet.ReadByte("NumStableSlots", indexes); + } + packet.ResetBitReader(); + hasPetStable = packet.ReadBit("HasPetStable", indexes); + if (changesMask[121]) + { + data.ResearchHistory = ReadUpdateResearchHistory(packet, indexes, "ResearchHistory"); + } + if (changesMask[122]) + { + Substructures.PerksProgramHandler.ReadPerksVendorItem(packet, indexes, "FrozenPerksVendorItem"); + } + if (changesMask[128]) + { + if (hasPetStable) + { + data.PetStable = ReadUpdateStableInfo(packet, indexes, "PetStable"); + } + } + } + if (changesMask[130]) + { + for (var i = 0; i < 146; ++i) + { + if (changesMask[131 + i]) + { + data.InvSlots[i] = packet.ReadPackedGuid128("InvSlots", indexes, i); + } + } + } + if (changesMask[277]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[278 + i]) + { + data.TrackResourceMask[i] = packet.ReadUInt32("TrackResourceMask", indexes, i); + } + } + } + if (changesMask[280]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[281 + i]) + { + data.SpellCritPercentage[i] = packet.ReadSingle("SpellCritPercentage", indexes, i); + } + if (changesMask[288 + i]) + { + data.ModDamageDonePos[i] = packet.ReadInt32("ModDamageDonePos", indexes, i); + } + if (changesMask[295 + i]) + { + data.ModDamageDoneNeg[i] = packet.ReadInt32("ModDamageDoneNeg", indexes, i); + } + if (changesMask[302 + i]) + { + data.ModDamageDonePercent[i] = packet.ReadSingle("ModDamageDonePercent", indexes, i); + } + } + } + if (changesMask[309]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[310 + i]) + { + data.RestInfo[i] = ReadUpdateRestInfo(packet, indexes, "RestInfo", i); + } + } + } + if (changesMask[312]) + { + for (var i = 0; i < 3; ++i) + { + if (changesMask[313 + i]) + { + data.WeaponDmgMultipliers[i] = packet.ReadSingle("WeaponDmgMultipliers", indexes, i); + } + if (changesMask[316 + i]) + { + data.WeaponAtkSpeedMultipliers[i] = packet.ReadSingle("WeaponAtkSpeedMultipliers", indexes, i); + } + } + } + if (changesMask[319]) + { + for (var i = 0; i < 12; ++i) + { + if (changesMask[320 + i]) + { + data.BuybackPrice[i] = packet.ReadUInt32("BuybackPrice", indexes, i); + } + if (changesMask[332 + i]) + { + data.BuybackTimestamp[i] = packet.ReadInt64("BuybackTimestamp", indexes, i); + } + } + } + if (changesMask[344]) + { + for (var i = 0; i < 32; ++i) + { + if (changesMask[345 + i]) + { + data.CombatRatings[i] = packet.ReadInt32("CombatRatings", indexes, i); + } + } + } + if (changesMask[387]) + { + for (var i = 0; i < 4; ++i) + { + if (changesMask[388 + i]) + { + data.NoReagentCostMask[i] = packet.ReadUInt32("NoReagentCostMask", indexes, i); + } + } + } + if (changesMask[392]) + { + for (var i = 0; i < 2; ++i) + { + if (changesMask[393 + i]) + { + data.ProfessionSkillLine[i] = packet.ReadInt32("ProfessionSkillLine", indexes, i); + } + } + } + if (changesMask[395]) + { + for (var i = 0; i < 4; ++i) + { + if (changesMask[396 + i]) + { + data.BagSlotFlags[i] = packet.ReadUInt32("BagSlotFlags", indexes, i); + } + } + } + if (changesMask[400]) + { + for (var i = 0; i < 7; ++i) + { + if (changesMask[401 + i]) + { + data.BankBagSlotFlags[i] = packet.ReadUInt32("BankBagSlotFlags", indexes, i); + } + } + } + if (changesMask[408]) + { + for (var i = 0; i < 875; ++i) + { + if (changesMask[409 + i]) + { + data.QuestCompleted[i] = packet.ReadUInt64("QuestCompleted", indexes, i); + } + } + } + if (changesMask[1284]) + { + for (var i = 0; i < 9; ++i) + { + if (changesMask[1285 + i]) + { + data.GlyphSlots[i] = packet.ReadUInt32("GlyphSlots", indexes, i); + } + if (changesMask[1294 + i]) + { + data.Glyphs[i] = packet.ReadUInt32("Glyphs", indexes, i); + } + } + } + if (changesMask[1303]) + { + for (var i = 0; i < 13; ++i) + { + if (changesMask[1304 + i]) + { + data.Field_4348[i] = packet.ReadUInt64("Field_4348", indexes, i); + } + } + } + if (changesMask[377]) + { + for (var i = 0; i < 9; ++i) + { + if (changesMask[378 + i]) + { + data.PvpInfo[i] = ReadUpdatePVPInfo(packet, indexes, "PvpInfo", 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()]; + 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.Level = packet.ReadInt32("Level", 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.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(20); + 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.CreatedBy = packet.ReadPackedGuid128("CreatedBy", indexes); + } + if (changesMask[10]) + { + data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); + } + if (changesMask[11]) + { + data.Flags = packet.ReadUInt32("Flags", indexes); + } + if (changesMask[12]) + { + data.ParentRotation = packet.ReadQuaternion("ParentRotation", indexes); + } + if (changesMask[13]) + { + data.FactionTemplate = packet.ReadInt32("FactionTemplate", indexes); + } + if (changesMask[14]) + { + data.Level = packet.ReadInt32("Level", 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); + } + } + 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.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + 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.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + } + 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); + 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[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.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]) + { + for (var i = 0; i < 19; ++i) + { + if (changesMask[13 + 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.Field_C = packet.ReadBit("Field_C", 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.Field_C = packet.ReadBit("Field_C", 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.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + data.BoundsRadius2D = packet.ReadSingle("BoundsRadius2D", indexes); + data.DecalPropertiesID = packet.ReadUInt32("DecalPropertiesID", indexes); + data.CreatingEffectGUID = packet.ReadPackedGuid128("CreatingEffectGUID", indexes); + data.OrbitPathTarget = packet.ReadPackedGuid128("OrbitPathTarget", indexes); + data.ExtraScaleCurve = ReadCreateScaleCurve(packet, indexes, "ExtraScaleCurve"); + 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(20); + var changesMask = new BitArray(rawChangesMask); + + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data.OverrideScaleCurve = ReadUpdateScaleCurve(packet, indexes, "OverrideScaleCurve"); + } + if (changesMask[6]) + { + data.Caster = packet.ReadPackedGuid128("Caster", indexes); + } + if (changesMask[7]) + { + data.Duration = packet.ReadUInt32("Duration", indexes); + } + if (changesMask[8]) + { + data.TimeToTarget = packet.ReadUInt32("TimeToTarget", indexes); + } + if (changesMask[9]) + { + data.TimeToTargetScale = packet.ReadUInt32("TimeToTargetScale", indexes); + } + if (changesMask[10]) + { + data.TimeToTargetExtraScale = packet.ReadUInt32("TimeToTargetExtraScale", indexes); + } + if (changesMask[11]) + { + data.TimeToTargetPos = packet.ReadUInt32("TimeToTargetPos", indexes); + } + if (changesMask[12]) + { + data.SpellID = packet.ReadInt32("SpellID", indexes); + } + if (changesMask[13]) + { + data.SpellForVisuals = packet.ReadInt32("SpellForVisuals", indexes); + } + if (changesMask[14]) + { + data.SpellXSpellVisualID = packet.ReadInt32("SpellXSpellVisualID", indexes); + } + if (changesMask[15]) + { + data.BoundsRadius2D = packet.ReadSingle("BoundsRadius2D", indexes); + } + if (changesMask[16]) + { + data.DecalPropertiesID = packet.ReadUInt32("DecalPropertiesID", indexes); + } + if (changesMask[17]) + { + data.CreatingEffectGUID = packet.ReadPackedGuid128("CreatingEffectGUID", indexes); + } + if (changesMask[18]) + { + data.OrbitPathTarget = packet.ReadPackedGuid128("OrbitPathTarget", indexes); + } + if (changesMask[2]) + { + data.ExtraScaleCurve = ReadUpdateScaleCurve(packet, indexes, "ExtraScaleCurve"); + } + if (changesMask[3]) + { + data.OverrideMoveCurveX = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveX"); + } + if (changesMask[4]) + { + data.OverrideMoveCurveY = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveY"); + } + if (changesMask[5]) + { + data.OverrideMoveCurveZ = ReadUpdateScaleCurve(packet, indexes, "OverrideMoveCurveZ"); + } + if (changesMask[19]) + { + 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); + 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); + return data; + } + + public static IConversationActor ReadCreateConversationActor(Packet packet, params object[] indexes) + { + var data = new ConversationActor(); + packet.ResetBitReader(); + data.Type = packet.ReadBits("Type", 1, indexes); + data.Id = packet.ReadInt32("Id", indexes); + if (data.Type == 1) + { + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.CreatureDisplayInfoID = packet.ReadUInt32("CreatureDisplayInfoID", indexes); + } + if (data.Type == 0) + { + data.ActorGUID = packet.ReadPackedGuid128("ActorGUID", indexes); + } + return data; + } + + public static IConversationActor ReadUpdateConversationActor(Packet packet, params object[] indexes) + { + var data = new ConversationActor(); + packet.ResetBitReader(); + data.Type = packet.ReadBits("Type", 1, indexes); + data.Id = packet.ReadInt32("Id", indexes); + if (data.Type == 1) + { + data.CreatureID = packet.ReadUInt32("CreatureID", indexes); + data.CreatureDisplayInfoID = packet.ReadUInt32("CreatureDisplayInfoID", indexes); + } + if (data.Type == 0) + { + data.ActorGUID = packet.ReadPackedGuid128("ActorGUID", 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); + for (var i = 0; i < data.Lines.Length; ++i) + { + data.Lines[i] = ReadCreateConversationLine(packet, indexes, "Lines", i); + } + data.Actors.Resize(packet.ReadUInt32()); + 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(4); + var changesMask = new BitArray(rawChangesMask); + + if (changesMask[0]) + { + if (changesMask[1]) + { + 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[2]) + { + data.Actors.ReadUpdateMask(packet); + } + } + packet.ResetBitReader(); + if (changesMask[0]) + { + if (changesMask[2]) + { + for (var i = 0; i < data.Actors.Count; ++i) + { + if (data.Actors.UpdateMask[i]) + { + data.Actors[i] = ReadUpdateConversationActor(packet, indexes, "Actors", i); + } + } + } + if (changesMask[3]) + { + data.LastLineEndTime = packet.ReadInt32("LastLineEndTime", indexes); + } + } + return data; + } + + } +} diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ActivePlayerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ActivePlayerData.cs new file mode 100644 index 0000000000..143089c3b6 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ActivePlayerData.cs @@ -0,0 +1,153 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ActivePlayerData : IActivePlayerData + { + public WowGuid[] InvSlots { get; } = new WowGuid[141]; + public WowGuid FarsightObject { get; set; } + public WowGuid SummonedBattlePetGUID { get; set; } + public System.Nullable Coinage { 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[] TrackResourceMask { get; } = new System.Nullable[2]; + 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; } = new System.Nullable[7]; + 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 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 IRestInfo[] RestInfo { get; } = new IRestInfo[2]; + public System.Nullable ModHealingDonePos { get; set; } + public System.Nullable ModHealingPercent { get; set; } + public System.Nullable ModHealingDonePercent { 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 AmmoID { 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 TodayDishonorableKills { get; set; } + public System.Nullable YesterdayHonorableKills { get; set; } + public System.Nullable YesterdayDishonorableKills { get; set; } + public System.Nullable LastWeekHonorableKills { get; set; } + public System.Nullable LastWeekDishonorableKills { get; set; } + public System.Nullable ThisWeekHonorableKills { get; set; } + public System.Nullable ThisWeekDishonorableKills { get; set; } + public System.Nullable ThisWeekContribution { get; set; } + public System.Nullable LifetimeHonorableKills { get; set; } + public System.Nullable LifetimeDishonorableKills { get; set; } + public System.Nullable Field_F24 { get; set; } + public System.Nullable YesterdayContribution { get; set; } + public System.Nullable LastWeekContribution { get; set; } + public System.Nullable LastWeekRank { 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 LocalRegenFlags { get; set; } + public System.Nullable AuraVision { get; set; } + public System.Nullable NumBackpackSlots { get; set; } + public System.Nullable OverrideSpellsID { get; set; } + public System.Nullable LfgBonusFactionID { get; set; } + public System.Nullable LootSpecID { get; set; } + public System.Nullable OverrideZonePVPType { get; set; } + public System.Nullable[] BagSlotFlags { get; } = new System.Nullable[4]; + public System.Nullable[] BankBagSlotFlags { get; } = new System.Nullable[7]; + public System.Nullable[] QuestCompleted { get; } = new System.Nullable[875]; + public System.Nullable Honor { get; set; } + public System.Nullable HonorNextLevel { get; set; } + public System.Nullable Field_F74 { get; set; } + public System.Nullable PvpTierMaxFromWins { get; set; } + public System.Nullable PvpLastWeeksTierMaxFromWins { get; set; } + public System.Nullable PvpRankProgress { get; set; } + public System.Nullable PerksProgramCurrency { get; set; } + public IResearchHistory ResearchHistory { get; set; } + public System.Nullable TransportServerTime { get; set; } + public System.Nullable ActiveCombatTraitConfigID { get; set; } + public System.Nullable[] GlyphSlots { get; } = new System.Nullable[9]; + public System.Nullable[] Glyphs { get; } = new System.Nullable[9]; + public System.Nullable GlyphsEnabled { get; set; } + public System.Nullable LfgRoles { get; set; } + public IStableInfo PetStable { get; set; } + public System.Nullable NumStableSlots { get; set; } + public DynamicUpdateField>[] DataFlags { get; } = new DynamicUpdateField>[8] { new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>() }; + 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> Field_1000 { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Heirlooms { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> HeirloomFlags { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Toys { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Transmog { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> ConditionalTransmog { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> SelfResSpells { get; } = new DynamicUpdateField>(); + public DynamicUpdateField SpellPctModByLabel { get; } = new DynamicUpdateField(); + public DynamicUpdateField SpellFlatModByLabel { get; } = new DynamicUpdateField(); + public DynamicUpdateField TaskQuests { get; } = new DynamicUpdateField(); + public DynamicUpdateField CategoryCooldownMods { get; } = new DynamicUpdateField(); + public DynamicUpdateField WeeklySpellUses { get; } = new DynamicUpdateField(); + public IPVPInfo[] PvpInfo { get; } = new IPVPInfo[9]; + public System.Nullable SortBagsRightToLeft { get; set; } + public System.Nullable InsertItemsLeftToRight { get; set; } + public DynamicUpdateField CharacterRestrictions { get; } = new DynamicUpdateField(); + public DynamicUpdateField TraitConfigs { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/AreaTriggerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/AreaTriggerData.cs new file mode 100644 index 0000000000..7c4e5148d4 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/AreaTriggerData.cs @@ -0,0 +1,35 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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 System.Nullable SpellXSpellVisualID { get; set; } + public System.Nullable BoundsRadius2D { get; set; } + public System.Nullable DecalPropertiesID { get; set; } + public WowGuid CreatingEffectGUID { get; set; } + public WowGuid OrbitPathTarget { 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; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ArenaCooldown.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ArenaCooldown.cs new file mode 100644 index 0000000000..1fa47ac8a3 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ArenaCooldown.cs @@ -0,0 +1,24 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ArenaCooldown : IArenaCooldown + { + public System.Nullable SpellID { get; set; } + public System.Nullable ItemID { 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.V4_4_0_54481/UpdateFields/V1_15_3_55515/ArtifactPower.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ArtifactPower.cs new file mode 100644 index 0000000000..0ab934e45d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ArtifactPower.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/CategoryCooldownMod.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CategoryCooldownMod.cs new file mode 100644 index 0000000000..008498b239 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CategoryCooldownMod.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/CharacterRestriction.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CharacterRestriction.cs new file mode 100644 index 0000000000..49f846960d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CharacterRestriction.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/ChrCustomizationChoice.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ChrCustomizationChoice.cs new file mode 100644 index 0000000000..82d0d1498a --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ChrCustomizationChoice.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/CompletedProject.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CompletedProject.cs new file mode 100644 index 0000000000..e283b09503 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CompletedProject.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/ContainerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ContainerData.cs new file mode 100644 index 0000000000..b8909fe809 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ContainerData.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ContainerData : IContainerData + { + public WowGuid[] Slots { get; } = new WowGuid[36]; + public System.Nullable NumSlots { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationActor.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationActor.cs new file mode 100644 index 0000000000..fc1d35c2cb --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationActor.cs @@ -0,0 +1,24 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationActor : IConversationActor + { + public int Id { get; set; } + public uint CreatureID { get; set; } + public uint CreatureDisplayInfoID { get; set; } + public WowGuid ActorGUID { get; set; } + public uint Type { get; set; } + + // dummies required by interface + public uint NoActorObject { get; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationData.cs new file mode 100644 index 0000000000..53a675b5d0 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationData.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationData : IMutableConversationData + { + public System.Nullable LastLineEndTime { get; set; } + public IConversationLine[] Lines { get; set; } + public DynamicUpdateField Actors { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationLine.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationLine.cs new file mode 100644 index 0000000000..c9cbe8279f --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ConversationLine.cs @@ -0,0 +1,24 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + //[GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationLine : IConversationLine + { + public int ConversationLineID { get; set; } + public uint StartTime { get; set; } + public int UiCameraID { get; set; } + public byte ActorIndex { get; set; } + public byte Flags { get; set; } + + // dummies required by interface + public byte ChatType { get; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CorpseData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CorpseData.cs new file mode 100644 index 0000000000..0611055eeb --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CorpseData.cs @@ -0,0 +1,28 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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 DynamicUpdateField Customizations { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CustomTabardInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CustomTabardInfo.cs new file mode 100644 index 0000000000..1391be1b57 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/CustomTabardInfo.cs @@ -0,0 +1,21 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/DeclinedNames.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/DeclinedNames.cs new file mode 100644 index 0000000000..323002f30b --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/DeclinedNames.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class DeclinedNames : IDeclinedNames + { + public string[] Name { get; } = new string[5]; + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/DynamicObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/DynamicObjectData.cs new file mode 100644 index 0000000000..ce82dbdd8f --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/DynamicObjectData.cs @@ -0,0 +1,22 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class DynamicObjectData : IDynamicObjectData + { + public WowGuid Caster { get; set; } + public System.Nullable Type { get; set; } + public System.Nullable SpellXSpellVisualID { get; set; } + public System.Nullable SpellID { get; set; } + public System.Nullable Radius { get; set; } + public System.Nullable CastTime { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/GameObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/GameObjectData.cs new file mode 100644 index 0000000000..0416ec55a8 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/GameObjectData.cs @@ -0,0 +1,35 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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[] 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 Level { 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 DynamicUpdateField> EnableDoodadSets { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> WorldEffects { get; } = new DynamicUpdateField>(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemData.cs new file mode 100644 index 0000000000..dacaaf1cfb --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemData.cs @@ -0,0 +1,39 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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 PropertySeed { get; set; } + public System.Nullable RandomPropertiesID { get; set; } + 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 DynamicFlags2 { 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.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemEnchantment.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemEnchantment.cs new file mode 100644 index 0000000000..33fa41507a --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemEnchantment.cs @@ -0,0 +1,21 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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 Field_A { get; set; } + public System.Nullable Field_B { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemMod.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemMod.cs new file mode 100644 index 0000000000..ba1f0f7bf0 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemMod.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ItemMod : IItemMod + { + public int Value { get; set; } + public byte Type { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemModList.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemModList.cs new file mode 100644 index 0000000000..a13c39206a --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ItemModList.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ItemModList : IItemModList + { + public DynamicUpdateField Values { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ObjectData.cs new file mode 100644 index 0000000000..59d9cfb801 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ObjectData.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/PVPInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/PVPInfo.cs new file mode 100644 index 0000000000..6dc7a20e8e --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/PVPInfo.cs @@ -0,0 +1,34 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/PassiveSpellHistory.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/PassiveSpellHistory.cs new file mode 100644 index 0000000000..49b4e7a41d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/PassiveSpellHistory.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/PlayerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/PlayerData.cs new file mode 100644 index 0000000000..659ca8ee13 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/PlayerData.cs @@ -0,0 +1,57 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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 NumBankSlots { get; set; } + 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 PvpRank { get; set; } + public System.Nullable Field_88 { get; set; } + public System.Nullable DuelTeam { get; set; } + public System.Nullable GuildTimeStamp { get; set; } + public IQuestLog[] QuestLog { get; } = new IQuestLog[25]; + 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 System.Nullable Field_13C { get; set; } + public System.Nullable Field_140 { get; set; } + public System.Nullable CurrentBattlePetSpeciesID { get; set; } + 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 ArenaCooldowns { get; } = new DynamicUpdateField(); + public DynamicUpdateField> VisualItemReplacements { get; } = new DynamicUpdateField>(); + public string Name { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/QuestLog.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/QuestLog.cs new file mode 100644 index 0000000000..aecf94b5ca --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/QuestLog.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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[] ObjectiveProgress { get; } = new System.Nullable[24]; + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/Research.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/Research.cs new file mode 100644 index 0000000000..1d9bfff621 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/Research.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class Research : IResearch + { + public short ResearchProjectID { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ResearchHistory.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ResearchHistory.cs new file mode 100644 index 0000000000..766f90af88 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ResearchHistory.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ResearchHistory : IResearchHistory + { + public DynamicUpdateField CompletedProjects { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/RestInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/RestInfo.cs new file mode 100644 index 0000000000..e683d3bc3a --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/RestInfo.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/ScaleCurve.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ScaleCurve.cs new file mode 100644 index 0000000000..e209030387 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/ScaleCurve.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/SceneObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SceneObjectData.cs new file mode 100644 index 0000000000..347edf3a82 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SceneObjectData.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/SkillInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SkillInfo.cs new file mode 100644 index 0000000000..6612a04329 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SkillInfo.cs @@ -0,0 +1,23 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/SocketedGem.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SocketedGem.cs new file mode 100644 index 0000000000..0236dae364 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SocketedGem.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/SpellFlatModByLabel.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SpellFlatModByLabel.cs new file mode 100644 index 0000000000..676c982fee --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SpellFlatModByLabel.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/SpellPctModByLabel.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SpellPctModByLabel.cs new file mode 100644 index 0000000000..0a8f61064a --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/SpellPctModByLabel.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/StableInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/StableInfo.cs new file mode 100644 index 0000000000..328ada6a1f --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/StableInfo.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/StablePetInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/StablePetInfo.cs new file mode 100644 index 0000000000..2ae40bcd79 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/StablePetInfo.cs @@ -0,0 +1,24 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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 System.Nullable Field_96 { get; set; } + public string Name { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/TraitConfig.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/TraitConfig.cs new file mode 100644 index 0000000000..e18afd9e30 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/TraitConfig.cs @@ -0,0 +1,25 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/TraitEntry.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/TraitEntry.cs new file mode 100644 index 0000000000..53d3377d55 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/TraitEntry.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_3_55515/UnitChannel.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/UnitChannel.cs new file mode 100644 index 0000000000..281605c928 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/UnitChannel.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UnitChannel : IUnitChannel + { + public int SpellID { get; set; } + public int SpellXSpellVisualID { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/UnitData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/UnitData.cs new file mode 100644 index 0000000000..9b5e295626 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/UnitData.cs @@ -0,0 +1,144 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UnitData : IMutableUnitData + { + public System.Nullable Health { get; set; } + public System.Nullable MaxHealth { get; set; } + public System.Nullable DisplayID { get; set; } + public System.Nullable[] NpcFlags { get; } = new System.Nullable[2]; + public System.Nullable StateSpellVisualID { get; set; } + public System.Nullable StateAnimID { get; set; } + public System.Nullable StateAnimKitID { 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 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[] PowerRegenFlatModifier { get; } = new System.Nullable[10]; + public System.Nullable[] PowerRegenInterruptedFlatModifier { get; } = new System.Nullable[10]; + public System.Nullable[] Power { get; } = new System.Nullable[10]; + public System.Nullable[] MaxPower { get; } = new System.Nullable[10]; + public System.Nullable[] ModPowerRegen { get; } = new System.Nullable[10]; + 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 NativeDisplayID { get; set; } + public System.Nullable NativeXDisplayScale { get; set; } + public System.Nullable MountDisplayID { 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 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 TrainingPointsUsed { get; set; } + public System.Nullable TrainingPointsTotal { get; set; } + public System.Nullable[] Stats { get; } = new System.Nullable[5]; + public System.Nullable[] StatPosBuff { get; } = new System.Nullable[5]; + public System.Nullable[] StatNegBuff { get; } = new System.Nullable[5]; + public System.Nullable[] Resistances { get; } = new System.Nullable[7]; + public System.Nullable[] PowerCostModifier { get; } = new System.Nullable[7]; + public System.Nullable[] PowerCostMultiplier { get; } = new System.Nullable[7]; + public System.Nullable[] ResistanceBuffModsPositive { get; } = new System.Nullable[7]; + public System.Nullable[] ResistanceBuffModsNegative { 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 RangedAttackPower { get; set; } + public System.Nullable RangedAttackPowerModPos { get; set; } + public System.Nullable RangedAttackPowerModNeg { get; set; } + public System.Nullable RangedAttackPowerMultiplier { 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 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 WildBattlePetLevel { 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 WowGuid GuildGUID { get; set; } + public WowGuid SkinningOwnerGUID { get; set; } + public System.Nullable FlightCapabilityID { get; set; } + public System.Nullable GlideEventSpeedDivisor { get; set; } + public System.Nullable SilencedSchoolMask { get; set; } + public System.Nullable CurrentAreaID { get; set; } + public WowGuid ComboTarget { get; set; } + public DynamicUpdateField PassiveSpells { get; } = new DynamicUpdateField(); + public DynamicUpdateField> WorldEffects { get; } = new DynamicUpdateField>(); + public DynamicUpdateField ChannelObjects { get; } = new DynamicUpdateField(); + + // dummies required by interface + public int? CreatureFamily { get; set; } + public int? CreatureType { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/VisibleItem.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/VisibleItem.cs new file mode 100644 index 0000000000..27a84e314d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/VisibleItem.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class VisibleItem : IMutableVisibleItem + { + public System.Nullable ItemID { get; set; } + public System.Nullable ItemAppearanceModID { get; set; } + public System.Nullable ItemVisual { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/VisualAnim.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/VisualAnim.cs new file mode 100644 index 0000000000..2db3d2792d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/VisualAnim.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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 Field_C { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/WeeklySpellUse.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/WeeklySpellUse.cs new file mode 100644 index 0000000000..5e6b37e2e7 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_3_55515/WeeklySpellUse.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_3_55515 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ActivePlayerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ActivePlayerData.cs new file mode 100644 index 0000000000..255e708e45 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ActivePlayerData.cs @@ -0,0 +1,159 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ActivePlayerData : IActivePlayerData + { + public WowGuid[] InvSlots { get; } = new WowGuid[146]; + 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[] TrackResourceMask { get; } = new System.Nullable[2]; + 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; } = new System.Nullable[7]; + 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 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 ModHealingDonePos { get; set; } + public System.Nullable ModHealingPercent { get; set; } + public System.Nullable ModHealingDonePercent { 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 AmmoID { 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 TodayDishonorableKills { get; set; } + public System.Nullable YesterdayHonorableKills { get; set; } + public System.Nullable YesterdayDishonorableKills { get; set; } + public System.Nullable LastWeekHonorableKills { get; set; } + public System.Nullable LastWeekDishonorableKills { get; set; } + public System.Nullable ThisWeekHonorableKills { get; set; } + public System.Nullable ThisWeekDishonorableKills { get; set; } + public System.Nullable ThisWeekContribution { get; set; } + public System.Nullable LifetimeHonorableKills { get; set; } + public System.Nullable LifetimeDishonorableKills { get; set; } + public System.Nullable Field_F24 { get; set; } + public System.Nullable YesterdayContribution { get; set; } + public System.Nullable LastWeekContribution { get; set; } + public System.Nullable LastWeekRank { 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 LocalRegenFlags { get; set; } + public System.Nullable AuraVision { get; set; } + public System.Nullable NumBackpackSlots { get; set; } + public System.Nullable OverrideSpellsID { get; set; } + public System.Nullable LfgBonusFactionID { get; set; } + public System.Nullable LootSpecID { get; set; } + public System.Nullable OverrideZonePVPType { get; set; } + public System.Nullable[] BagSlotFlags { get; } = new System.Nullable[4]; + public System.Nullable[] BankBagSlotFlags { get; } = new System.Nullable[7]; + public System.Nullable[] QuestCompleted { get; } = new System.Nullable[875]; + public System.Nullable Honor { get; set; } + public System.Nullable HonorNextLevel { get; set; } + public System.Nullable Field_F74 { get; set; } + public System.Nullable PvpTierMaxFromWins { get; set; } + public System.Nullable PvpLastWeeksTierMaxFromWins { get; set; } + public System.Nullable PvpRankProgress { get; set; } + public System.Nullable PerksProgramCurrency { get; set; } + public IResearchHistory ResearchHistory { get; set; } + public System.Nullable TransportServerTime { get; set; } + public System.Nullable Field_15BC { get; set; } + public System.Nullable ActiveCombatTraitConfigID { get; set; } + public System.Nullable[] GlyphSlots { get; } = new System.Nullable[9]; + public System.Nullable[] Glyphs { get; } = new System.Nullable[9]; + public System.Nullable GlyphsEnabled { get; set; } + public System.Nullable LfgRoles { get; set; } + public IStableInfo PetStable { get; set; } + public System.Nullable NumStableSlots { get; set; } + public System.Nullable[] Field_4348 { get; } = new System.Nullable[13]; + 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> Field_1000 { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Heirlooms { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> HeirloomFlags { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Toys { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Transmog { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> ConditionalTransmog { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> SelfResSpells { get; } = new DynamicUpdateField>(); + public DynamicUpdateField SpellPctModByLabel { get; } = new DynamicUpdateField(); + public DynamicUpdateField SpellFlatModByLabel { get; } = new DynamicUpdateField(); + public DynamicUpdateField TaskQuests { get; } = new DynamicUpdateField(); + public DynamicUpdateField CategoryCooldownMods { get; } = new DynamicUpdateField(); + public DynamicUpdateField WeeklySpellUses { get; } = new DynamicUpdateField(); + public IPVPInfo[] PvpInfo { get; } = new IPVPInfo[9]; + public System.Nullable SortBagsRightToLeft { get; set; } + public System.Nullable InsertItemsLeftToRight { get; set; } + public DynamicUpdateField CharacterDataElements { get; } = new DynamicUpdateField(); + public DynamicUpdateField AccountDataElements { get; } = new DynamicUpdateField(); + public DynamicUpdateField CharacterRestrictions { get; } = new DynamicUpdateField(); + public DynamicUpdateField TraitConfigs { get; } = new DynamicUpdateField(); + public DynamicUpdateField AccountBankTabSettings { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/AreaTriggerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/AreaTriggerData.cs new file mode 100644 index 0000000000..b5605b1d8b --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/AreaTriggerData.cs @@ -0,0 +1,35 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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 System.Nullable SpellXSpellVisualID { get; set; } + public System.Nullable BoundsRadius2D { get; set; } + public System.Nullable DecalPropertiesID { get; set; } + public WowGuid CreatingEffectGUID { get; set; } + public WowGuid OrbitPathTarget { 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; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ArenaCooldown.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ArenaCooldown.cs new file mode 100644 index 0000000000..b22426631c --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ArenaCooldown.cs @@ -0,0 +1,24 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ArenaCooldown : IArenaCooldown + { + public System.Nullable SpellID { get; set; } + public System.Nullable ItemID { 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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ArtifactPower.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ArtifactPower.cs new file mode 100644 index 0000000000..d3e42af577 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ArtifactPower.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/BankTabSettings.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/BankTabSettings.cs new file mode 100644 index 0000000000..b4f524d6bb --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/BankTabSettings.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/BitVectors.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/BitVectors.cs new file mode 100644 index 0000000000..5a13a9a22d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/BitVectors.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class BitVectors : IBitVectors + { + public DynamicUpdateField>[] Values { get; } = new DynamicUpdateField>[11] { new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>(), new DynamicUpdateField>() }; + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CategoryCooldownMod.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CategoryCooldownMod.cs new file mode 100644 index 0000000000..2fdbb4b158 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CategoryCooldownMod.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/CharacterRestriction.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CharacterRestriction.cs new file mode 100644 index 0000000000..7f62c36795 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CharacterRestriction.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ChrCustomizationChoice.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ChrCustomizationChoice.cs new file mode 100644 index 0000000000..d961fa45b5 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ChrCustomizationChoice.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/CompletedProject.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CompletedProject.cs new file mode 100644 index 0000000000..db4dc9fa2e --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CompletedProject.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ContainerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ContainerData.cs new file mode 100644 index 0000000000..8cca5d105d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ContainerData.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ContainerData : IContainerData + { + public WowGuid[] Slots { get; } = new WowGuid[36]; + public System.Nullable NumSlots { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationActor.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationActor.cs new file mode 100644 index 0000000000..404fd21983 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationActor.cs @@ -0,0 +1,24 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationActor : IConversationActor + { + public int Id { get; set; } + public uint CreatureID { get; set; } + public uint CreatureDisplayInfoID { get; set; } + public WowGuid ActorGUID { get; set; } + public uint Type { get; set; } + + // dummies required by interface + public uint NoActorObject { get; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationData.cs new file mode 100644 index 0000000000..b21a98daf1 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationData.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ConversationData : IMutableConversationData + { + public System.Nullable LastLineEndTime { get; set; } + public IConversationLine[] Lines { get; set; } + public DynamicUpdateField Actors { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationLine.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationLine.cs new file mode 100644 index 0000000000..1bf4627990 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ConversationLine.cs @@ -0,0 +1,25 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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; } + + // dummies required by interface + public byte ChatType { get; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CorpseData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CorpseData.cs new file mode 100644 index 0000000000..ac620664da --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CorpseData.cs @@ -0,0 +1,28 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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 DynamicUpdateField Customizations { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CustomTabardInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CustomTabardInfo.cs new file mode 100644 index 0000000000..142cfa9e9d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/CustomTabardInfo.cs @@ -0,0 +1,21 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/DeclinedNames.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/DeclinedNames.cs new file mode 100644 index 0000000000..7245f363a7 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/DeclinedNames.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class DeclinedNames : IDeclinedNames + { + public string[] Name { get; } = new string[5]; + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/DynamicObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/DynamicObjectData.cs new file mode 100644 index 0000000000..974ba68a9f --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/DynamicObjectData.cs @@ -0,0 +1,22 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class DynamicObjectData : IDynamicObjectData + { + public WowGuid Caster { get; set; } + public System.Nullable Type { get; set; } + public System.Nullable SpellXSpellVisualID { get; set; } + public System.Nullable SpellID { get; set; } + public System.Nullable Radius { get; set; } + public System.Nullable CastTime { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/GameObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/GameObjectData.cs new file mode 100644 index 0000000000..ee06f817d5 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/GameObjectData.cs @@ -0,0 +1,35 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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[] 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 Level { 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 DynamicUpdateField> EnableDoodadSets { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> WorldEffects { get; } = new DynamicUpdateField>(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemData.cs new file mode 100644 index 0000000000..bf8b2e74d6 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemData.cs @@ -0,0 +1,39 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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 PropertySeed { get; set; } + public System.Nullable RandomPropertiesID { get; set; } + 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 DynamicFlags2 { 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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemEnchantment.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemEnchantment.cs new file mode 100644 index 0000000000..807737244f --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemEnchantment.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemMod.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemMod.cs new file mode 100644 index 0000000000..eb3ce9febc --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemMod.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemModList.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemModList.cs new file mode 100644 index 0000000000..6201352eb2 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ItemModList.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ItemModList : IItemModList + { + public DynamicUpdateField Values { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ObjectData.cs new file mode 100644 index 0000000000..ec1bd6ddf3 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ObjectData.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/PVPInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PVPInfo.cs new file mode 100644 index 0000000000..04a2a92093 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PVPInfo.cs @@ -0,0 +1,34 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/PassiveSpellHistory.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PassiveSpellHistory.cs new file mode 100644 index 0000000000..e10158895d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PassiveSpellHistory.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/PlayerData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PlayerData.cs new file mode 100644 index 0000000000..175baa15a5 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PlayerData.cs @@ -0,0 +1,58 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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 NumBankSlots { get; set; } + 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 PvpRank { get; set; } + public System.Nullable Field_88 { get; set; } + public System.Nullable DuelTeam { get; set; } + public System.Nullable GuildTimeStamp { get; set; } + public IQuestLog[] QuestLog { get; } = new IQuestLog[25]; + 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_13C { get; set; } + public System.Nullable Field_140 { get; set; } + public System.Nullable CurrentBattlePetSpeciesID { get; set; } + 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 ArenaCooldowns { get; } = new DynamicUpdateField(); + public DynamicUpdateField> VisualItemReplacements { get; } = new DynamicUpdateField>(); + public string Name { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PlayerDataElement.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PlayerDataElement.cs new file mode 100644 index 0000000000..0da516d57d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/PlayerDataElement.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/QuestLog.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/QuestLog.cs new file mode 100644 index 0000000000..5285eb96d2 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/QuestLog.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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[] ObjectiveProgress { get; } = new System.Nullable[24]; + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/Research.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/Research.cs new file mode 100644 index 0000000000..32ea17dab8 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/Research.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class Research : IResearch + { + public short ResearchProjectID { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ResearchHistory.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ResearchHistory.cs new file mode 100644 index 0000000000..fa86196054 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ResearchHistory.cs @@ -0,0 +1,17 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ResearchHistory : IResearchHistory + { + public DynamicUpdateField CompletedProjects { get; } = new DynamicUpdateField(); + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/RestInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/RestInfo.cs new file mode 100644 index 0000000000..68195bf94d --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/RestInfo.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ScaleCurve.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ScaleCurve.cs new file mode 100644 index 0000000000..8eae1bde27 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ScaleCurve.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/SceneObjectData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SceneObjectData.cs new file mode 100644 index 0000000000..51a8d70d29 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SceneObjectData.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/SkillInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SkillInfo.cs new file mode 100644 index 0000000000..6bf2d20823 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SkillInfo.cs @@ -0,0 +1,23 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/SocketedGem.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SocketedGem.cs new file mode 100644 index 0000000000..f0c7e81fc5 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SocketedGem.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/SpellFlatModByLabel.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SpellFlatModByLabel.cs new file mode 100644 index 0000000000..66f44e6dc5 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SpellFlatModByLabel.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/SpellPctModByLabel.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SpellPctModByLabel.cs new file mode 100644 index 0000000000..4af9800815 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/SpellPctModByLabel.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/StableInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/StableInfo.cs new file mode 100644 index 0000000000..e17003cab9 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/StableInfo.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/StablePetInfo.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/StablePetInfo.cs new file mode 100644 index 0000000000..7de90dffd0 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/StablePetInfo.cs @@ -0,0 +1,24 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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 System.Nullable Field_96 { get; set; } + public string Name { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitConfig.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitConfig.cs new file mode 100644 index 0000000000..f87496113a --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitConfig.cs @@ -0,0 +1,26 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitEntry.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitEntry.cs new file mode 100644 index 0000000000..f9a6d422b5 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitEntry.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitSubTreeCache.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitSubTreeCache.cs new file mode 100644 index 0000000000..ebe7101339 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/TraitSubTreeCache.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/UnitChannel.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/UnitChannel.cs new file mode 100644 index 0000000000..19beaa8c81 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/UnitChannel.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UnitChannel : IUnitChannel + { + public int SpellID { get; set; } + public int SpellXSpellVisualID { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/UnitData.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/UnitData.cs new file mode 100644 index 0000000000..8caf15b258 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/UnitData.cs @@ -0,0 +1,149 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class UnitData : IMutableUnitData + { + public System.Nullable Health { get; set; } + public System.Nullable MaxHealth { get; set; } + 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[] 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 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[] PowerRegenFlatModifier { get; } = new System.Nullable[10]; + public System.Nullable[] PowerRegenInterruptedFlatModifier { get; } = new System.Nullable[10]; + public System.Nullable[] Power { get; } = new System.Nullable[10]; + public System.Nullable[] MaxPower { get; } = new System.Nullable[10]; + public System.Nullable[] ModPowerRegen { get; } = new System.Nullable[10]; + 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 NativeDisplayID { get; set; } + public System.Nullable NativeXDisplayScale { get; set; } + public System.Nullable MountDisplayID { 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 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 TrainingPointsUsed { get; set; } + public System.Nullable TrainingPointsTotal { get; set; } + public System.Nullable[] Stats { get; } = new System.Nullable[5]; + public System.Nullable[] StatPosBuff { get; } = new System.Nullable[5]; + public System.Nullable[] StatNegBuff { get; } = new System.Nullable[5]; + public System.Nullable[] Resistances { get; } = new System.Nullable[7]; + public System.Nullable[] ResistanceBuffModsPositive { get; } = new System.Nullable[7]; + public System.Nullable[] ResistanceBuffModsNegative { get; } = new System.Nullable[7]; + public System.Nullable[] PowerCostModifier { get; } = new System.Nullable[7]; + public System.Nullable[] PowerCostMultiplier { 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 RangedAttackPower { get; set; } + public System.Nullable RangedAttackPowerModPos { get; set; } + public System.Nullable RangedAttackPowerModNeg { get; set; } + public System.Nullable RangedAttackPowerMultiplier { 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 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 WildBattlePetLevel { 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 WowGuid GuildGUID { get; set; } + public WowGuid SkinningOwnerGUID { get; set; } + public System.Nullable FlightCapabilityID { get; set; } + public System.Nullable GlideEventSpeedDivisor { get; set; } + public System.Nullable SilencedSchoolMask { get; set; } + public System.Nullable CurrentAreaID { get; set; } + public WowGuid ComboTarget { get; set; } + public System.Nullable Field_2F0 { get; set; } + public System.Nullable Field_2F4 { get; set; } + public DynamicUpdateField PassiveSpells { get; } = new DynamicUpdateField(); + public DynamicUpdateField> WorldEffects { get; } = new DynamicUpdateField>(); + public DynamicUpdateField ChannelObjects { get; } = new DynamicUpdateField(); + + uint?[] IUnitData.NpcFlags => new[] { NpcFlags, NpcFlags2 }; + + // dummies required by interface + public int? CreatureFamily { get; set; } + public int? CreatureType { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/VisibleItem.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/VisibleItem.cs new file mode 100644 index 0000000000..29c4dc7982 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/VisibleItem.cs @@ -0,0 +1,19 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class VisibleItem : IMutableVisibleItem + { + public System.Nullable ItemID { get; set; } + public System.Nullable ItemAppearanceModID { get; set; } + public System.Nullable ItemVisual { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/VisualAnim.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/VisualAnim.cs new file mode 100644 index 0000000000..00da2b7d95 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/VisualAnim.cs @@ -0,0 +1,20 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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 Field_C { get; set; } + } +} + diff --git a/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/WeeklySpellUse.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/WeeklySpellUse.cs new file mode 100644 index 0000000000..93cee6ecc0 --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/WeeklySpellUse.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [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.V4_4_0_54481/UpdateFields/V1_15_4_56738/ZonePlayerForcedReaction.cs b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ZonePlayerForcedReaction.cs new file mode 100644 index 0000000000..c433664fab --- /dev/null +++ b/WowPacketParserModule.V4_4_0_54481/UpdateFields/V1_15_4_56738/ZonePlayerForcedReaction.cs @@ -0,0 +1,18 @@ +// +// DO NOT EDIT +// + +using System.CodeDom.Compiler; +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +namespace WowPacketParserModule.V4_4_0_54481.UpdateFields.V1_15_4_56738 +{ + [GeneratedCode("UpdateFieldCodeGenerator.Formats.WowPacketParserHandler", "1.0.0.0")] + public class ZonePlayerForcedReaction : IZonePlayerForcedReaction + { + public System.Nullable FactionID { get; set; } + public System.Nullable Reaction { get; set; } + } +} +