Skip to content

Commit c614a0a

Browse files
committed
Add 5.5.0 opcode handlers
SMSG_UPDATE_ACTION_BUTTONS SMSG_SEASON_INFO SMSG_BATTLE_PET_UPDATES SMSG_PET_BATTLE_SLOT_UPDATES SMSG_BATTLE_PET_JOURNAL SMSG_BATTLE_PET_DELETED SMSG_BATTLE_PET_REVOKED SMSG_BATTLE_PET_RESTORED SMSG_PET_BATTLE_REQUEST_FAILED SMSG_PET_BATTLE_PVP_CHALLENGE SMSG_PET_BATTLE_FINALIZE_LOCATION SMSG_PET_BATTLE_INITIAL_UPDATE SMSG_PET_BATTLE_FIRST_ROUND SMSG_PET_BATTLE_ROUND_RESULT SMSG_PET_BATTLE_REPLACEMENTS_MADE SMSG_PET_BATTLE_FINAL_ROUND SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED SMSG_BATTLE_PETS_HEALED SMSG_PET_BATTLE_FINISHED SMSG_PET_BATTLE_CHAT_RESTRICTED SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT SMSG_CHALLENGE_MODE_RESET SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD SMSG_XP_GAIN_ABORTED SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI SMSG_PRINT_NOTIFICATION SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT SMSG_GAME_OBJECT_CUSTOM_ANIM SMSG_GAME_OBJECT_DESPAWN SMSG_PARTY_INVITE SMSG_PARTY_UPDATE SMSG_READY_CHECK_STARTED SMSG_READY_CHECK_RESPONSE SMSG_READY_CHECK_COMPLETED SMSG_LOAD_CUF_PROFILES SMSG_LOOT_RESPONSE SMSG_LOOT_REMOVED SMSG_COIN_REMOVED SMSG_AE_LOOT_TARGETS SMSG_LOOT_RELEASE SMSG_LOOT_MONEY_NOTIFY SMSG_AE_LOOT_TARGET_ACK SMSG_LOOT_RELEASE_ALL SMSG_ACCOUNT_MOUNT_UPDATE SMSG_ACCOUNT_HEIRLOOM_UPDATE SMSG_SET_PLAY_HOVER_ANIM SMSG_FEATURE_SYSTEM_STATUS SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN SMSG_CUSTOM_LOAD_SCREEN SMSG_START_ELAPSED_TIMER SMSG_STOP_ELAPSED_TIMER SMSG_START_ELAPSED_TIMERS SMSG_CLEAR_BOSS_EMOTES SMSG_TRANSFER_PENDING SMSG_ADJUST_SPLINE_DURATION SMSG_MYTHIC_PLUS_SEASON_DATA SMSG_MYTHIC_PLUS_CURRENT_AFFIXES SMSG_VENDOR_INVENTORY SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED SMSG_MISSILE_CANCEL SMSG_SPELL_VISUAL_LOAD_SCREEN SMSG_LEARN_TALENT_FAILED SMSG_LEARN_PVP_TALENT_FAILED SMSG_UPDATE_TALENT_DATA SMSG_UPDATE_TALENT_DATA_CLASSIC SMSG_RESPEC_WIPE_CONFIRM SMSG_ACCOUNT_TOY_UPDATE SMSG_TRAIT_CONFIG_COMMIT_FAILED SMSG_ACCOUNT_TRANSMOG_UPDATE SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE SMSG_MAP_OBJ_EVENTS
1 parent d28ddff commit c614a0a

21 files changed

Lines changed: 1711 additions & 21 deletions

WowPacketParser/Enums/Version/V5_5_0_61735/Opcodes.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
776776
{ Opcode.SMSG_ACCOUNT_EXPORT_RESPONSE, 0x3C032C },
777777
{ Opcode.SMSG_ACCOUNT_HEIRLOOM_UPDATE, 0x3C004A },
778778
{ Opcode.SMSG_ACCOUNT_ITEM_COLLECTION_DATA, 0x3C0341 },
779-
{ Opcode.SMSG_ACCOUNT_MOUNT_REMOVED, 0x3C0048 },
779+
{ Opcode.SMSG_ACCOUNT_MOUNT_REMOVED, 0x3C0048 }, // NYI
780780
{ Opcode.SMSG_ACCOUNT_MOUNT_UPDATE, 0x3C0047 },
781781
{ Opcode.SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, 0x3C0309 },
782782
{ Opcode.SMSG_ACCOUNT_STORE_CURRENCY_UPDATE, 0x3C0323 },
@@ -786,7 +786,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
786786
{ Opcode.SMSG_ACCOUNT_TOY_UPDATE, 0x3C0049 },
787787
{ Opcode.SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE, 0x3C004D },
788788
{ Opcode.SMSG_ACCOUNT_TRANSMOG_UPDATE, 0x3C004C },
789-
{ Opcode.SMSG_ACCOUNT_WARBAND_SCENE_UPDATE, 0x3C004F },
789+
{ Opcode.SMSG_ACCOUNT_WARBAND_SCENE_UPDATE, 0x3C004F }, // NYI
790790
{ Opcode.SMSG_ACHIEVEMENT_DELETED, 0x3C0187 },
791791
{ Opcode.SMSG_ACHIEVEMENT_EARNED, 0x3C00DF },
792792
{ Opcode.SMSG_ACTIVATE_ESSENCE_FAILED, 0x4F0020 }, // NYI
@@ -892,7 +892,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
892892
{ Opcode.SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED, 0x3C0088 },
893893
{ Opcode.SMSG_BATTLE_PET_RESTORED, 0x3C008C },
894894
{ Opcode.SMSG_BATTLE_PET_REVOKED, 0x3C008B },
895-
{ Opcode.SMSG_BATTLE_PET_TRAP_LEVEL, 0x3C0085 },
895+
{ Opcode.SMSG_BATTLE_PET_TRAP_LEVEL, 0x3C0085 }, // NYI
896896
{ Opcode.SMSG_BATTLE_PET_UPDATES, 0x3C0084 },
897897
{ Opcode.SMSG_BATTLE_PETS_HEALED, 0x3C008D },
898898
{ Opcode.SMSG_BATTLEFIELD_LIST, 0x420005 },
@@ -966,12 +966,12 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
966966
{ Opcode.SMSG_CAST_FAILED, 0x520046 },
967967
{ Opcode.SMSG_CAUTIONARY_CHANNEL_MESSAGE, 0x410009 }, // NYI
968968
{ Opcode.SMSG_CAUTIONARY_CHAT_MESSAGE, 0x410008 }, // NYI
969-
{ Opcode.SMSG_CHAIN_MISSILE_BOUNCE, 0x3C0062 },
970-
{ Opcode.SMSG_CHALLENGE_MODE_COMPLETE, 0x3C00A4 },
971-
{ Opcode.SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD, 0x3C00A5 },
969+
{ Opcode.SMSG_CHAIN_MISSILE_BOUNCE, 0x3C0062 }, // NYI
970+
{ Opcode.SMSG_CHALLENGE_MODE_COMPLETE, 0x3C00A4 }, // NYI
971+
{ Opcode.SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD, 0x3C00A5 }, // NYI
972972
{ Opcode.SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, 0x3C00AB },
973973
{ Opcode.SMSG_CHALLENGE_MODE_RESET, 0x3C00A3 },
974-
{ Opcode.SMSG_CHALLENGE_MODE_START, 0x3C00A1 },
974+
{ Opcode.SMSG_CHALLENGE_MODE_START, 0x3C00A1 }, // NYI
975975
{ Opcode.SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT, 0x3C00A2 },
976976
{ Opcode.SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT, 0x4F000C },
977977
{ Opcode.SMSG_CHANGE_REALM_TICKET_RESPONSE, 0x3C02A7 },
@@ -1091,7 +1091,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
10911091
{ Opcode.SMSG_DISPLAY_QUEST_POPUP, 0x50001E }, // NYI
10921092
{ Opcode.SMSG_DISPLAY_TOAST, 0x3C00C0 },
10931093
{ Opcode.SMSG_DISPLAY_WORLD_TEXT, 0x3C028D },
1094-
{ Opcode.SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, 0x3C007B },
1094+
{ Opcode.SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, 0x3C007B }, // NYI
10951095
{ Opcode.SMSG_DROP_NEW_CONNECTION, 0x430004 },
10961096
{ Opcode.SMSG_DUEL_ARRANGED, 0x42001F }, // NYI
10971097
{ Opcode.SMSG_DUEL_COMPLETE, 0x420023 },
@@ -1130,7 +1130,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
11301130
{ Opcode.SMSG_FORCE_ANIM, 0x3C01F0 },
11311131
{ Opcode.SMSG_FORCE_ANIMATIONS, 0x3C01F1 },
11321132
{ Opcode.SMSG_FORCE_OBJECT_RELINK, 0x3C00E7 },
1133-
{ Opcode.SMSG_FORCE_RANDOM_TRANSMOG_TOAST, 0x3C004B },
1133+
{ Opcode.SMSG_FORCE_RANDOM_TRANSMOG_TOAST, 0x3C004B }, // NYI
11341134
{ Opcode.SMSG_FORCE_SPAWN_TRACKING_UPDATE, 0x500021 },
11351135
{ Opcode.SMSG_FORCED_DEATH_UPDATE, 0x3C0173 },
11361136
{ Opcode.SMSG_FRIEND_STATUS, 0x3C022C },
@@ -1552,7 +1552,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
15521552
{ Opcode.SMSG_MULTI_FLOOR_LEAVE_FLOOR, 0x3C027E },
15531553
{ Opcode.SMSG_MULTI_FLOOR_NEW_FLOOR, 0x3C027D },
15541554
{ Opcode.SMSG_MULTIPLE_PACKETS, 0x430009 },
1555-
{ Opcode.SMSG_MYTHIC_PLUS_ALL_MAP_STATS, 0x3C00A7 },
1555+
{ Opcode.SMSG_MYTHIC_PLUS_ALL_MAP_STATS, 0x3C00A7 }, // NYI
15561556
{ Opcode.SMSG_MYTHIC_PLUS_CURRENT_AFFIXES, 0x3C00A9 },
15571557
{ Opcode.SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD, 0x3C00AD },
15581558
{ Opcode.SMSG_MYTHIC_PLUS_SEASON_DATA, 0x3C00A8 },
@@ -1581,7 +1581,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
15811581
{ Opcode.SMSG_PARTY_MEMBER_PARTIAL_STATE, 0x3C01F7 },
15821582
{ Opcode.SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE, 0x3C02FE },
15831583
{ Opcode.SMSG_PARTY_UPDATE, 0x3C008E },
1584-
{ Opcode.SMSG_PAST_TIME_EVENTS, 0x3C005C },
1584+
{ Opcode.SMSG_PAST_TIME_EVENTS, 0x3C005C }, // NYI
15851585
{ Opcode.SMSG_PAUSE_MIRROR_TIMER, 0x3C01B0 },
15861586
{ Opcode.SMSG_PENDING_RAID_LOCK, 0x3C0197 },
15871587
{ Opcode.SMSG_PET_ACTION_FEEDBACK, 0x3C01E8 },
@@ -1761,7 +1761,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
17611761
{ Opcode.SMSG_RESPEC_WIPE_CONFIRM, 0x3C00AE },
17621762
{ Opcode.SMSG_RESPOND_INSPECT_ACHIEVEMENTS, 0x3C0006 },
17631763
{ Opcode.SMSG_RESTART_GLOBAL_COOLDOWN, 0x520050 },
1764-
{ Opcode.SMSG_RESTRICTED_ACCOUNT_WARNING, 0x3C0053 },
1764+
{ Opcode.SMSG_RESTRICTED_ACCOUNT_WARNING, 0x3C0053 }, // NYI
17651765
{ Opcode.SMSG_RESUME_CAST, 0x52002A },
17661766
{ Opcode.SMSG_RESUME_CAST_BAR, 0x52002D },
17671767
{ Opcode.SMSG_RESUME_COMMS, 0x430003 },
@@ -1773,7 +1773,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
17731773
{ Opcode.SMSG_ROLE_CHANGED_INFORM, 0x3C0021 },
17741774
{ Opcode.SMSG_ROLE_CHOSEN, 0x4A001D },
17751775
{ Opcode.SMSG_ROLE_POLL_INFORM, 0x3C0022 },
1776-
{ Opcode.SMSG_RUNE_REGEN_DEBUG, 0x3C0050 },
1776+
{ Opcode.SMSG_RUNE_REGEN_DEBUG, 0x3C0050 }, // NYI
17771777
{ Opcode.SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC, 0x3C029D },
17781778
{ Opcode.SMSG_SCENARIO_COMPLETED, 0x3C028B },
17791779
{ Opcode.SMSG_SCENARIO_POIS, 0x3C00CF },
@@ -1782,7 +1782,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
17821782
{ Opcode.SMSG_SCENARIO_STATE, 0x3C00C7 },
17831783
{ Opcode.SMSG_SCENARIO_UI_UPDATE, 0x3C02A0 },
17841784
{ Opcode.SMSG_SCENARIO_VACATE, 0x3C0249 },
1785-
{ Opcode.SMSG_SCENE_OBJECT_EVENT, 0x3C007C },
1785+
{ Opcode.SMSG_SCENE_OBJECT_EVENT, 0x3C007C }, // NYI
17861786
{ Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND, 0x3C0081 },
17871787
{ Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED, 0x3C0082 },
17881788
{ Opcode.SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND, 0x3C007E },
@@ -1805,7 +1805,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
18051805
{ Opcode.SMSG_SERVER_TIME_OFFSET, 0x3C01B4 },
18061806
{ Opcode.SMSG_SET_AI_ANIM_KIT, 0x3C01CF },
18071807
{ Opcode.SMSG_SET_ANIM_TIER, 0x3C01D3 },
1808-
{ Opcode.SMSG_SET_CHR_UPGRADE_TIER, 0x3C0079 },
1808+
{ Opcode.SMSG_SET_CHR_UPGRADE_TIER, 0x3C0079 }, // NYI
18091809
{ Opcode.SMSG_SET_CURRENCY, 0x3C0008 },
18101810
{ Opcode.SMSG_SET_DF_FAST_LAUNCH_RESULT, 0x4A0012 },
18111811
{ Opcode.SMSG_SET_DUNGEON_DIFFICULTY, 0x3C0143 },
@@ -1840,7 +1840,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
18401840
{ Opcode.SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE, 0x3C031B },
18411841
{ Opcode.SMSG_SOCKET_GEMS_FAILURE, 0x3C01C7 },
18421842
{ Opcode.SMSG_SOCKET_GEMS_SUCCESS, 0x3C01C6 },
1843-
{ Opcode.SMSG_SOR_START_EXPERIENCE_INCOMPLETE, 0x3C0077 },
1843+
{ Opcode.SMSG_SOR_START_EXPERIENCE_INCOMPLETE, 0x3C0077 }, // NYI
18441844
{ Opcode.SMSG_SPEC_INVOLUNTARILY_CHANGED, 0x3C01B8 },
18451845
{ Opcode.SMSG_SPECIAL_MOUNT_ANIM, 0x3C013E },
18461846
{ Opcode.SMSG_SPECTATE_END, 0x3C032F },
@@ -1878,7 +1878,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
18781878
{ Opcode.SMSG_START_LOOT_ROLL, 0x3C00B9 },
18791879
{ Opcode.SMSG_START_MIRROR_TIMER, 0x3C01AF },
18801880
{ Opcode.SMSG_START_TIMER, 0x3C003E },
1881-
{ Opcode.SMSG_STARTER_BUILD_ACTIVATE_FAILED, 0x3C006C },
1881+
{ Opcode.SMSG_STARTER_BUILD_ACTIVATE_FAILED, 0x3C006C }, // NYI
18821882
{ Opcode.SMSG_STOP_ELAPSED_TIMER, 0x3C009F },
18831883
{ Opcode.SMSG_STOP_MIRROR_TIMER, 0x3C01B1 },
18841884
{ Opcode.SMSG_STOP_SPEAKERBOT_SOUND, 0x3C0210 },
@@ -1941,8 +1941,8 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
19411941
{ Opcode.SMSG_UPDATE_INSTANCE_OWNERSHIP, 0x3C0148 },
19421942
{ Opcode.SMSG_UPDATE_LAST_INSTANCE, 0x3C0127 },
19431943
{ Opcode.SMSG_UPDATE_OBJECT, 0x4C0000 },
1944-
{ Opcode.SMSG_UPDATE_PRIMARY_SPEC, 0x3C0072 },
1945-
{ Opcode.SMSG_UPDATE_RECENT_PLAYER_GUIDS, 0x3C008F },
1944+
{ Opcode.SMSG_UPDATE_PRIMARY_SPEC, 0x3C0072 }, // NYI
1945+
{ Opcode.SMSG_UPDATE_RECENT_PLAYER_GUIDS, 0x3C008F }, // NYI
19461946
{ Opcode.SMSG_UPDATE_TALENT_DATA, 0x3C0070 },
19471947
{ Opcode.SMSG_UPDATE_TALENT_DATA_CLASSIC, 0x3C0071 },
19481948
{ Opcode.SMSG_UPDATE_WORLD_STATE, 0x3C01E7 },
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using WowPacketParser.Enums;
2+
using WowPacketParser.Misc;
3+
using WowPacketParser.Parsing;
4+
using WowPacketParser.Store;
5+
using WowPacketParser.Store.Objects;
6+
using CoreParsers = WowPacketParser.Parsing.Parsers;
7+
8+
namespace WowPacketParserModule.V5_5_0_61735.Parsers
9+
{
10+
public static class ActionBarHandler
11+
{
12+
[Parser(Opcode.SMSG_UPDATE_ACTION_BUTTONS)]
13+
public static void HandleActionButtons(Packet packet)
14+
{
15+
for (int i = 0; i < 180; ++i)
16+
{
17+
var packedData = packet.ReadUInt64();
18+
19+
if (packedData == 0)
20+
continue;
21+
22+
var actionVal = packedData & 0xFFFFFFFFFFFFFFu;
23+
var type = (byte)((packedData >> 56) & 0xFF);
24+
25+
packet.AddValue("Action", actionVal, i);
26+
packet.AddValue("Type", type, i);
27+
28+
if (type != 0)
29+
continue;
30+
31+
if (CoreParsers.SessionHandler.LoginGuid != null)
32+
{
33+
WoWObject character;
34+
if (Storage.Objects.TryGetValue(CoreParsers.SessionHandler.LoginGuid, out character))
35+
{
36+
Player player = character as Player;
37+
if (player != null && player.FirstLogin)
38+
{
39+
var action = new PlayerCreateInfoAction
40+
{
41+
Button = (uint)i,
42+
Action = (uint)actionVal,
43+
Race = player.Race,
44+
Class = player.Class,
45+
Type = (ActionButtonType)type
46+
};
47+
48+
Storage.StartActions.Add(action, packet.TimeSpan);
49+
}
50+
}
51+
}
52+
}
53+
54+
packet.ReadByte("Reason");
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)