Skip to content

Commit f5c13bf

Browse files
committed
Add basic 3.4.4 support
Additional sneaky 4.4.2 fixes for UpdateHandler442 (missing bit)
1 parent f87f398 commit f5c13bf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+9104
-4
lines changed

WowPacketParser/Enums/ClientVersionBuild.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,13 @@ public enum ClientVersionBuild
865865
V3_4_3_53788 = 53788, // live
866866
V3_4_3_54261 = 54261, // live
867867

868+
V3_4_4_59817 = 59817, // live
869+
V3_4_4_59853 = 59853, // live
870+
V3_4_4_59887 = 59887, // live
871+
V3_4_4_60003 = 60003, // live
872+
V3_4_4_60063 = 60063, // live
873+
V3_4_4_60190 = 60190, // live
874+
868875
V4_4_0_54481 = 54481, // both live and ptr
869876
V4_4_0_54500 = 54500, // both live and ptr
870877
V4_4_0_54501 = 54501, // both live and ptr

WowPacketParser/Enums/Opcode.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,7 @@ public enum Opcode
911911
CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS,
912912
CMSG_MYTHIC_PLUS_WEEKLY_REWARD_REQUEST,
913913
CMSG_NAME_QUERY,
914+
CMSG_NETEASE_ANTI_CHEAT_DATA,
914915
CMSG_NEUTRAL_PLAYER_SELECT_FACTION,
915916
CMSG_NEW_SPELL_SLOT,
916917
CMSG_NEXT_CINEMATIC_CAMERA,

WowPacketParser/Enums/Version/Opcodes.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using WowPacketParser.Enums.Version.V3_4_1_47014;
2222
using WowPacketParser.Enums.Version.V3_4_2_50129;
2323
using WowPacketParser.Enums.Version.V3_4_3_51666;
24+
using WowPacketParser.Enums.Version.V3_4_4_59817;
2425
using WowPacketParser.Enums.Version.V4_0_3_13329;
2526
using WowPacketParser.Enums.Version.V4_0_6_13596;
2627
using WowPacketParser.Enums.Version.V4_1_0_13914;
@@ -1054,6 +1055,13 @@ public static ClientVersionBuild GetOpcodeDefiningBuild(ClientVersionBuild build
10541055
case ClientVersionBuild.V1_15_7_60141:
10551056
case ClientVersionBuild.V1_15_7_60191:
10561057
return ClientVersionBuild.V1_15_7_60000;
1058+
case ClientVersionBuild.V3_4_4_59817:
1059+
case ClientVersionBuild.V3_4_4_59853:
1060+
case ClientVersionBuild.V3_4_4_59887:
1061+
case ClientVersionBuild.V3_4_4_60003:
1062+
case ClientVersionBuild.V3_4_4_60063:
1063+
case ClientVersionBuild.V3_4_4_60190:
1064+
return ClientVersionBuild.V3_4_4_59817;
10571065
case ClientVersionBuild.V4_4_2_59185:
10581066
case ClientVersionBuild.V4_4_2_59297:
10591067
case ClientVersionBuild.V4_4_2_59346:
@@ -1252,6 +1260,8 @@ public static BiDictionary<Opcode, int> GetOpcodeDictionary(ClientVersionBuild b
12521260
return Opcodes_3_4_2.Opcodes(direction);
12531261
case ClientVersionBuild.V3_4_3_51666:
12541262
return Opcodes_3_4_3.Opcodes(direction);
1263+
case ClientVersionBuild.V3_4_4_59817:
1264+
return Opcodes_3_4_4.Opcodes(direction);
12551265
case ClientVersionBuild.V4_4_0_54481:
12561266
return Opcodes_4_4_0.Opcodes(direction);
12571267
case ClientVersionBuild.V4_4_1_57294:

WowPacketParser/Enums/Version/UpdateFields.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,6 +1244,15 @@ private static string GetUpdateFieldDictionaryBuildName(ClientVersionBuild build
12441244
{
12451245
return "V3_4_3_51666";
12461246
}
1247+
case ClientVersionBuild.V3_4_4_59817:
1248+
case ClientVersionBuild.V3_4_4_59853:
1249+
case ClientVersionBuild.V3_4_4_59887:
1250+
case ClientVersionBuild.V3_4_4_60003:
1251+
case ClientVersionBuild.V3_4_4_60063:
1252+
case ClientVersionBuild.V3_4_4_60190:
1253+
{
1254+
return "V3_4_4_59817";
1255+
}
12471256
case ClientVersionBuild.V4_4_0_54481:
12481257
case ClientVersionBuild.V4_4_0_54500:
12491258
case ClientVersionBuild.V4_4_0_54501:

WowPacketParser/Enums/Version/V3_4_4_59817/Opcodes.cs

Lines changed: 1709 additions & 0 deletions
Large diffs are not rendered by default.

WowPacketParser/Enums/WowCSEntityFragments.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public static bool IsIndirect(WowCSEntityFragments fragment)
5858
return true;
5959
case WowCSEntityFragments.FVendor_C:
6060
return ClientVersion.AddedInVersion(ClientBranch.Retail, ClientVersionBuild.V11_0_7_58630) ||
61-
ClientVersion.AddedInVersion(ClientBranch.Cata, ClientVersionBuild.V4_4_2_59185);
61+
ClientVersion.AddedInVersion(ClientBranch.Cata, ClientVersionBuild.V4_4_2_59185) ||
62+
ClientVersion.AddedInVersion(ClientBranch.WotLK, ClientVersionBuild.V3_4_4_59817);
6263
default:
6364
return false;
6465
}

WowPacketParser/Misc/ClientVersion.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1401,6 +1401,12 @@ public static ClientVersionBuild GetVersionDefiningBuild(ClientVersionBuild buil
14011401
case ClientVersionBuild.V3_4_3_53622:
14021402
case ClientVersionBuild.V3_4_3_53788:
14031403
case ClientVersionBuild.V3_4_3_54261:
1404+
case ClientVersionBuild.V3_4_4_59817:
1405+
case ClientVersionBuild.V3_4_4_59853:
1406+
case ClientVersionBuild.V3_4_4_59887:
1407+
case ClientVersionBuild.V3_4_4_60003:
1408+
case ClientVersionBuild.V3_4_4_60063:
1409+
case ClientVersionBuild.V3_4_4_60190:
14041410
case ClientVersionBuild.V1_15_0_52146:
14051411
case ClientVersionBuild.V1_15_0_52186:
14061412
case ClientVersionBuild.V1_15_0_52212:
@@ -2010,6 +2016,12 @@ public static bool IsWotLKClientVersionBuild(ClientVersionBuild build)
20102016
case ClientVersionBuild.V3_4_3_53622:
20112017
case ClientVersionBuild.V3_4_3_53788:
20122018
case ClientVersionBuild.V3_4_3_54261:
2019+
case ClientVersionBuild.V3_4_4_59817:
2020+
case ClientVersionBuild.V3_4_4_59853:
2021+
case ClientVersionBuild.V3_4_4_59887:
2022+
case ClientVersionBuild.V3_4_4_60003:
2023+
case ClientVersionBuild.V3_4_4_60063:
2024+
case ClientVersionBuild.V3_4_4_60190:
20132025
return true;
20142026
default:
20152027
return false;

WowPacketParserModule.Substructures/PerksProgramHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ public static void ReadPerksVendorItem(Packet packet, params object[] indexes)
1717
packet.ReadInt32("TransmogIllusionID", indexes);
1818
packet.ReadInt32("ToyID", indexes);
1919
packet.ReadInt32("Price", indexes);
20-
if (ClientVersion.AddedInVersion(ClientBranch.Retail, ClientVersionBuild.V11_0_7_58123) || ClientVersion.AddedInVersion(ClientBranch.Classic, ClientVersionBuild.V1_15_6_58797))
20+
if (ClientVersion.AddedInVersion(ClientBranch.Retail, ClientVersionBuild.V11_0_7_58123) || ClientVersion.AddedInVersion(ClientBranch.Cata, ClientVersionBuild.V4_4_2_59185) || ClientVersion.AddedInVersion(ClientBranch.Classic, ClientVersionBuild.V1_15_6_58797) || ClientVersion.AddedInVersion(ClientBranch.WotLK, ClientVersionBuild.V3_4_4_59817))
2121
packet.ReadInt32("OriginalPrice", indexes);
2222
packet.ReadTime64("AvailableUntil", indexes);
2323
if (ClientVersion.AddedInVersion(ClientBranch.Retail, ClientVersionBuild.V11_1_0_59347))
2424
packet.ReadInt32("WarbandSceneID", indexes);
2525
packet.ReadBit("Disabled", indexes);
26-
if (ClientVersion.AddedInVersion(ClientBranch.Retail, ClientVersionBuild.V11_0_5_57171))
26+
if (ClientVersion.AddedInVersion(ClientBranch.Retail, ClientVersionBuild.V11_0_5_57171) || ClientVersion.AddedInVersion(ClientBranch.Cata, ClientVersionBuild.V4_4_2_59185) || ClientVersion.AddedInVersion(ClientBranch.WotLK, ClientVersionBuild.V3_4_4_59817))
2727
packet.ReadBit("DoesNotExpire", indexes);
2828
}
2929
}

WowPacketParserModule.V3_4_0_45166/Parsers/ActionBarHandler.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,50 @@ public static void HandleActionButton(Packet packet)
1717
packet.AddValue("ID", data & 0x00FFFFFF);
1818
packet.ReadByte("Button");
1919
}
20+
21+
[Parser(Opcode.SMSG_UPDATE_ACTION_BUTTONS, ClientVersionBuild.V3_4_4_59817)]
22+
public static void HandleActionButtons(Packet packet)
23+
{
24+
for (int i = 0; i < 180; ++i)
25+
{
26+
var packedData = packet.ReadUInt64();
27+
28+
if (packedData == 0)
29+
continue;
30+
31+
var actionVal = packedData & 0xFFFFFFFFFFFFFFu;
32+
var type = (byte)((packedData >> 56) & 0xFF);
33+
34+
packet.AddValue("Action", actionVal, i);
35+
packet.AddValue("Type", type, i);
36+
37+
if (type != 0)
38+
continue;
39+
40+
if (CoreParsers.SessionHandler.LoginGuid != null)
41+
{
42+
WoWObject character;
43+
if (Storage.Objects.TryGetValue(CoreParsers.SessionHandler.LoginGuid, out character))
44+
{
45+
Player player = character as Player;
46+
if (player != null && player.FirstLogin)
47+
{
48+
var action = new PlayerCreateInfoAction
49+
{
50+
Button = (uint)i,
51+
Action = (uint)actionVal,
52+
Race = player.Race,
53+
Class = player.Class,
54+
Type = (ActionButtonType)type
55+
};
56+
57+
Storage.StartActions.Add(action, packet.TimeSpan);
58+
}
59+
}
60+
}
61+
}
62+
63+
packet.ReadByte("Reason");
64+
}
2065
}
2166
}

WowPacketParserModule.V3_4_0_45166/Parsers/SpellHandler.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,16 @@ public static void ReadTalentInfoUpdate(Packet packet, params object[] idx)
252252
// SpecID 2 = Index 1 (SpecGroup)
253253
packet.ReadByte("SpecID", idx, i);
254254

255+
if (ClientVersion.AddedInVersion(ClientBranch.WotLK, ClientVersionBuild.V3_4_4_59817))
256+
packet.ReadUInt32("PrimarySpecialization", idx, i);
257+
255258
for (var j = 0; j < talentCount; ++j)
256259
{
257260
packet.ReadUInt32("TalentID", idx, i, "TalentInfo", j);
258-
packet.ReadByte("Rank", idx, i, "TalentInfo", j);
261+
if (ClientVersion.AddedInVersion(ClientBranch.WotLK, ClientVersionBuild.V3_4_4_59817))
262+
packet.ReadUInt32("Rank", idx, i, "TalentInfo", j);
263+
else
264+
packet.ReadByte("Rank", idx, i, "TalentInfo", j);
259265
}
260266

261267
for (var k = 0; k < glyphCount; ++k)

0 commit comments

Comments
 (0)