Skip to content

Commit a76e59b

Browse files
committed
Improve 3.4.1 and 3.4.2 update field parsing
1 parent 1b77266 commit a76e59b

3 files changed

Lines changed: 109 additions & 113 deletions

File tree

‎WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler341.cs‎

Lines changed: 76 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,7 @@ public override IUnitData ReadCreateUnitData(Packet packet, UpdateFieldFlag flag
719719
data.WorldEffects.Resize(packet.ReadUInt32());
720720
data.ChannelObjects.Resize(packet.ReadUInt32());
721721
data.SkinningOwnerGUID = packet.ReadPackedGuid128("SkinningOwnerGUID", indexes);
722+
data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes);
722723
if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None)
723724
{
724725
data.Unk340_3 = packet.ReadPackedGuid128("Unk340_3", indexes);
@@ -741,7 +742,6 @@ public override IUnitData ReadCreateUnitData(Packet packet, UpdateFieldFlag flag
741742
public override IUnitData ReadUpdateUnitData(Packet packet, params object[] indexes)
742743
{
743744
var data = new UnitData();
744-
/*
745745
var rawChangesMask = new int[7];
746746
var rawMaskMask = new int[1];
747747
rawMaskMask[0] = (int)packet.ReadBits(7);
@@ -1221,117 +1221,120 @@ public override IUnitData ReadUpdateUnitData(Packet packet, params object[] inde
12211221
data.SkinningOwnerGUID = packet.ReadPackedGuid128("SkinningOwnerGUID", indexes);
12221222
}
12231223
if (changesMask[108])
1224+
{
1225+
data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes);
1226+
}
1227+
if (changesMask[109])
12241228
{
12251229
data.Unk340_3 = packet.ReadPackedGuid128("Unk340_3", indexes);
12261230
}
12271231
}
1228-
if (changesMask[109])
1232+
if (changesMask[110])
12291233
{
12301234
for (var i = 0; i < 2; ++i)
12311235
{
1232-
if (changesMask[110 + i])
1236+
if (changesMask[111 + i])
12331237
{
12341238
data.NpcFlags[i] = packet.ReadUInt32("NpcFlags", indexes, i);
12351239
}
12361240
}
12371241
}
1238-
if (changesMask[112])
1242+
if (changesMask[113])
12391243
{
12401244
for (var i = 0; i < 7; ++i)
12411245
{
1242-
if (changesMask[113 + i])
1246+
if (changesMask[114 + i])
12431247
{
12441248
data.Unk340[i] = packet.ReadSingle("Unk340", indexes, i);
12451249
}
1246-
if (changesMask[120 + i])
1250+
if (changesMask[121 + i])
12471251
{
12481252
data.Unk340_2[i] = packet.ReadSingle("Unk340_2", indexes, i);
12491253
}
1250-
if (changesMask[127 + i])
1254+
if (changesMask[128 + i])
12511255
{
12521256
data.Power[i] = packet.ReadInt32("Power", indexes, i);
12531257
}
1254-
if (changesMask[134 + i])
1258+
if (changesMask[135 + i])
12551259
{
12561260
data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i);
12571261
}
1258-
if (changesMask[141 + i])
1262+
if (changesMask[142 + i])
12591263
{
12601264
data.PowerRegenFlatModifier[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i);
12611265
}
12621266
}
12631267
}
1264-
if (changesMask[148])
1268+
if (changesMask[149])
12651269
{
12661270
for (var i = 0; i < 3; ++i)
12671271
{
1268-
if (changesMask[149 + i])
1272+
if (changesMask[150 + i])
12691273
{
12701274
data.VirtualItems[i] = ReadUpdateVisibleItem(packet, data.VirtualItems[i] as VisibleItem, indexes, "VirtualItems", i);
12711275
}
12721276
}
12731277
}
1274-
if (changesMask[152])
1278+
if (changesMask[153])
12751279
{
12761280
for (var i = 0; i < 2; ++i)
12771281
{
1278-
if (changesMask[153 + i])
1282+
if (changesMask[154 + i])
12791283
{
12801284
data.AttackRoundBaseTime[i] = packet.ReadUInt32("AttackRoundBaseTime", indexes, i);
12811285
}
12821286
}
12831287
}
1284-
if (changesMask[155])
1288+
if (changesMask[156])
12851289
{
12861290
for (var i = 0; i < 5; ++i)
12871291
{
1288-
if (changesMask[156 + i])
1292+
if (changesMask[157 + i])
12891293
{
12901294
data.Stats[i] = packet.ReadInt32("Stats", indexes, i);
12911295
}
1292-
if (changesMask[161 + i])
1296+
if (changesMask[162 + i])
12931297
{
12941298
data.StatPosBuff[i] = packet.ReadInt32("StatPosBuff", indexes, i);
12951299
}
1296-
if (changesMask[166 + i])
1300+
if (changesMask[167 + i])
12971301
{
12981302
data.StatNegBuff[i] = packet.ReadInt32("StatNegBuff", indexes, i);
12991303
}
13001304
}
13011305
}
1302-
if (changesMask[171])
1306+
if (changesMask[172])
13031307
{
13041308
for (var i = 0; i < 7; ++i)
13051309
{
1306-
if (changesMask[172 + i])
1310+
if (changesMask[173 + i])
13071311
{
13081312
data.Resistances[i] = packet.ReadInt32("Resistances", indexes, i);
13091313
}
1310-
if (changesMask[179 + i])
1314+
if (changesMask[180 + i])
13111315
{
13121316
data.PowerCostModifier[i] = packet.ReadInt32("PowerCostModifier", indexes, i);
13131317
}
1314-
if (changesMask[186 + i])
1318+
if (changesMask[187 + i])
13151319
{
13161320
data.PowerCostMultiplier[i] = packet.ReadSingle("PowerCostMultiplier", indexes, i);
13171321
}
13181322
}
13191323
}
1320-
if (changesMask[193])
1324+
if (changesMask[194])
13211325
{
13221326
for (var i = 0; i < 7; ++i)
13231327
{
1324-
if (changesMask[194 + i])
1328+
if (changesMask[195 + i])
13251329
{
13261330
data.ResistanceBuffModsPositive[i] = packet.ReadInt32("ResistanceBuffModsPositive", indexes, i);
13271331
}
1328-
if (changesMask[201 + i])
1332+
if (changesMask[202 + i])
13291333
{
13301334
data.ResistanceBuffModsNegative[i] = packet.ReadInt32("ResistanceBuffModsNegative", indexes, i);
13311335
}
13321336
}
13331337
}
1334-
*/
13351338
return data;
13361339
}
13371340

@@ -1472,8 +1475,6 @@ public static IArenaCooldown ReadUpdateArenaCooldown(Packet packet, params objec
14721475
public override IPlayerData ReadCreatePlayerData(Packet packet, UpdateFieldFlag flags, params object[] indexes)
14731476
{
14741477
var data = new PlayerData();
1475-
data.DuelArbiter = packet.ReadPackedGuid128("Bla", indexes); // TODO
1476-
data.DuelArbiter = packet.ReadPackedGuid128("Bla2", indexes);
14771478
data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes);
14781479
data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes);
14791480
data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes);
@@ -1535,7 +1536,6 @@ public override IPlayerData ReadCreatePlayerData(Packet packet, UpdateFieldFlag
15351536
public override IPlayerData ReadUpdatePlayerData(Packet packet, params object[] indexes)
15361537
{
15371538
var data = new PlayerData();
1538-
/*
15391539
var rawChangesMask = new int[3];
15401540
var rawMaskMask = new int[1];
15411541
rawMaskMask[0] = (int)packet.ReadBits(3);
@@ -1555,6 +1555,10 @@ public override IPlayerData ReadUpdatePlayerData(Packet packet, params object[]
15551555
{
15561556
data.ArenaCooldowns.ReadUpdateMask(packet);
15571557
}
1558+
if (changesMask[3])
1559+
{
1560+
data.VisualItemReplacements.ReadUpdateMask(packet);
1561+
}
15581562
}
15591563
packet.ResetBitReader();
15601564
if (changesMask[0])
@@ -1581,131 +1585,145 @@ public override IPlayerData ReadUpdatePlayerData(Packet packet, params object[]
15811585
}
15821586
if (changesMask[3])
15831587
{
1584-
data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes);
1588+
for (var i = 0; i < data.VisualItemReplacements.Count; ++i)
1589+
{
1590+
if (data.VisualItemReplacements.UpdateMask[i])
1591+
{
1592+
data.VisualItemReplacements[i] = packet.ReadInt32("VisualItemReplacements", indexes, i);
1593+
}
1594+
}
15851595
}
15861596
if (changesMask[4])
15871597
{
1588-
data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes);
1598+
data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes);
15891599
}
15901600
if (changesMask[5])
15911601
{
1592-
data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes);
1602+
data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes);
15931603
}
15941604
if (changesMask[6])
15951605
{
1596-
data.PlayerFlags = packet.ReadUInt32("PlayerFlags", indexes);
1606+
data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes);
15971607
}
15981608
if (changesMask[7])
15991609
{
1600-
data.PlayerFlagsEx = packet.ReadUInt32("PlayerFlagsEx", indexes);
1610+
data.PlayerFlags = packet.ReadUInt32("PlayerFlags", indexes);
16011611
}
16021612
if (changesMask[8])
16031613
{
1604-
data.GuildRankID = packet.ReadUInt32("GuildRankID", indexes);
1614+
data.PlayerFlagsEx = packet.ReadUInt32("PlayerFlagsEx", indexes);
16051615
}
16061616
if (changesMask[9])
16071617
{
1608-
data.GuildDeleteDate = packet.ReadUInt32("GuildDeleteDate", indexes);
1618+
data.GuildRankID = packet.ReadUInt32("GuildRankID", indexes);
16091619
}
16101620
if (changesMask[10])
16111621
{
1612-
data.GuildLevel = packet.ReadInt32("GuildLevel", indexes);
1622+
data.GuildDeleteDate = packet.ReadUInt32("GuildDeleteDate", indexes);
16131623
}
16141624
if (changesMask[11])
16151625
{
1616-
data.PartyType = packet.ReadByte("PartyType", indexes);
1626+
data.GuildLevel = packet.ReadInt32("GuildLevel", indexes);
16171627
}
16181628
if (changesMask[12])
16191629
{
1620-
data.NativeSex = packet.ReadByte("NativeSex", indexes);
1630+
data.PartyType = packet.ReadByte("PartyType", indexes);
16211631
}
16221632
if (changesMask[13])
16231633
{
1624-
data.Inebriation = packet.ReadByte("Inebriation", indexes);
1634+
data.NativeSex = packet.ReadByte("NativeSex", indexes);
16251635
}
16261636
if (changesMask[14])
16271637
{
1628-
data.PvpTitle = packet.ReadByte("PvpTitle", indexes);
1638+
data.Inebriation = packet.ReadByte("Inebriation", indexes);
16291639
}
16301640
if (changesMask[15])
16311641
{
1632-
data.ArenaFaction = packet.ReadByte("ArenaFaction", indexes);
1642+
data.PvpTitle = packet.ReadByte("PvpTitle", indexes);
16331643
}
16341644
if (changesMask[16])
16351645
{
1636-
data.PvpRank = packet.ReadByte("PvpRank", indexes);
1646+
data.ArenaFaction = packet.ReadByte("ArenaFaction", indexes);
16371647
}
16381648
if (changesMask[17])
16391649
{
1640-
data.Unk254 = packet.ReadByte("Unk254", indexes);
1650+
data.PvpRank = packet.ReadByte("PvpRank", indexes);
16411651
}
16421652
if (changesMask[18])
16431653
{
1644-
data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes);
1654+
data.Unk254 = packet.ReadByte("Unk254", indexes);
16451655
}
16461656
if (changesMask[19])
16471657
{
1648-
data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes);
1658+
data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes);
16491659
}
16501660
if (changesMask[20])
16511661
{
1652-
data.PlayerTitle = packet.ReadInt32("PlayerTitle", indexes);
1662+
data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes);
16531663
}
16541664
if (changesMask[21])
16551665
{
1656-
data.FakeInebriation = packet.ReadInt32("FakeInebriation", indexes);
1666+
data.PlayerTitle = packet.ReadInt32("PlayerTitle", indexes);
16571667
}
16581668
if (changesMask[22])
16591669
{
1660-
data.VirtualPlayerRealm = packet.ReadUInt32("VirtualPlayerRealm", indexes);
1670+
data.FakeInebriation = packet.ReadInt32("FakeInebriation", indexes);
16611671
}
16621672
if (changesMask[23])
16631673
{
1664-
data.CurrentSpecID = packet.ReadUInt32("CurrentSpecID", indexes);
1674+
data.VirtualPlayerRealm = packet.ReadUInt32("VirtualPlayerRealm", indexes);
16651675
}
16661676
if (changesMask[24])
16671677
{
1668-
data.TaxiMountAnimKitID = packet.ReadInt32("TaxiMountAnimKitID", indexes);
1678+
data.CurrentSpecID = packet.ReadUInt32("CurrentSpecID", indexes);
16691679
}
16701680
if (changesMask[25])
16711681
{
1672-
data.CurrentBattlePetBreedQuality = packet.ReadByte("CurrentBattlePetBreedQuality", indexes);
1682+
data.TaxiMountAnimKitID = packet.ReadInt32("TaxiMountAnimKitID", indexes);
16731683
}
16741684
if (changesMask[26])
1685+
{
1686+
data.CurrentBattlePetBreedQuality = packet.ReadByte("CurrentBattlePetBreedQuality", indexes);
1687+
}
1688+
if (changesMask[27])
16751689
{
16761690
data.HonorLevel = packet.ReadInt32("HonorLevel", indexes);
16771691
}
1692+
if (changesMask[28])
1693+
{
1694+
data.LogoutTime = packet.ReadInt64("LogoutTime", indexes);
1695+
}
16781696
}
1679-
if (changesMask[27])
1697+
if (changesMask[29])
16801698
{
16811699
for (var i = 0; i < 25; ++i)
16821700
{
1683-
if (changesMask[28 + i])
1701+
if (changesMask[30 + i])
16841702
{
16851703
data.QuestLog[i] = ReadUpdateQuestLog(packet, data.QuestLog[i] as QuestLog, indexes, "QuestLog", i);
16861704
}
16871705
}
16881706
}
1689-
if (changesMask[53])
1707+
if (changesMask[55])
16901708
{
16911709
for (var i = 0; i < 19; ++i)
16921710
{
1693-
if (changesMask[54 + i])
1711+
if (changesMask[56 + i])
16941712
{
16951713
data.VisibleItems[i] = ReadUpdateVisibleItem(packet, data.VisibleItems[i] as VisibleItem, indexes, "VisibleItems", i);
16961714
}
16971715
}
16981716
}
1699-
if (changesMask[73])
1717+
if (changesMask[75])
17001718
{
17011719
for (var i = 0; i < 6; ++i)
17021720
{
1703-
if (changesMask[74 + i])
1721+
if (changesMask[76 + i])
17041722
{
17051723
data.AvgItemLevel[i] = packet.ReadSingle("AvgItemLevel", indexes, i);
17061724
}
17071725
}
1708-
}*/
1726+
}
17091727
return data;
17101728
}
17111729

0 commit comments

Comments
 (0)