@@ -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