Skip to content
This repository

4.3.0: fixed SMSG_UPDATE_OBJECT structure #48

Merged
merged 1 commit into from about 2 years ago

2 participants

Huri Kaelima
Huri
Huri commented

4.3.2: few corrections in SMSG_UPDATE_OBJECT structure

Huri 4.3.0: fixed SMSG_UPDATE_OBJECT structure
4.3.2: few corrections in SMSG_UPDATE_OBJECT structure
41a66dd
Kaelima kaelima merged commit b03f608 into from
Kaelima kaelima closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Showing 1 unique commit by 1 author.

Apr 09, 2012
Huri 4.3.0: fixed SMSG_UPDATE_OBJECT structure
4.3.2: few corrections in SMSG_UPDATE_OBJECT structure
41a66dd
This page is out of date. Refresh to see the latest.
411  WowPacketParser/Parsing/Parsers/UpdateHandler.cs
@@ -616,7 +616,7 @@ private static MovementInfo ReadMovementUpdateBlock432(ref Packet packet, Guid g
616 616
             var hasAnimKits = packet.ReadBit("Has AnimKits", index);
617 617
             var unkLoopCounter = packet.ReadBits(24);
618 618
             /*bool bit1 = */packet.ReadBit();
619  
-            bool unkInt = packet.ReadBit();
  619
+            bool hasTransportExtra = packet.ReadBit("Has Transport Extra", index);
620 620
             bool hasGORotation = packet.ReadBit("Has GameObject Rotation", index);
621 621
             bool living = packet.ReadBit("Living", index);
622 622
             bool hasGameObjectPosition = packet.ReadBit("Has GameObject Position", index);
@@ -890,7 +890,7 @@ private static MovementInfo ReadMovementUpdateBlock432(ref Packet packet, Guid g
890 890
                         packet.ReadInt32("Transport Time 2", index);
891 891
 
892 892
                     packet.ReadByte("Transport Seat", index);
893  
-                    tPos.X = packet.ReadSingle();
  893
+                    tPos.O = packet.ReadSingle();
894 894
                     if (transportGuid[7] != 0) transportGuid[7] ^= packet.ReadByte();
895 895
                     tPos.Y = packet.ReadSingle();
896 896
                     if (transportGuid[3] != 0) transportGuid[3] ^= packet.ReadByte();
@@ -900,9 +900,9 @@ private static MovementInfo ReadMovementUpdateBlock432(ref Packet packet, Guid g
900 900
                     packet.ReadInt32("Transport Time", index);
901 901
                     if (transportGuid[0] != 0) transportGuid[0] ^= packet.ReadByte();
902 902
                     if (transportGuid[1] != 0) transportGuid[1] ^= packet.ReadByte();
903  
-                    tPos.Z = packet.ReadSingle();
  903
+                    tPos.X = packet.ReadSingle();
904 904
                     if (transportGuid[4] != 0) transportGuid[4] ^= packet.ReadByte();
905  
-                    tPos.O = packet.ReadSingle();
  905
+                    tPos.Z = packet.ReadSingle();
906 906
                     if (transportGuid[5] != 0) transportGuid[5] ^= packet.ReadByte();
907 907
                     if (transportGuid[2] != 0) transportGuid[2] ^= packet.ReadByte();
908 908
 
@@ -1015,8 +1015,404 @@ private static MovementInfo ReadMovementUpdateBlock432(ref Packet packet, Guid g
1015 1015
                     packet.ReadUInt16("Anim Kit 2", index);
1016 1016
             }
1017 1017
 
1018  
-            if (unkInt)
1019  
-                packet.ReadInt32("Unk int32 +408", index);
  1018
+            if (hasTransportExtra)
  1019
+                packet.ReadInt32("Transport Time", index);
  1020
+
  1021
+            packet.ResetBitReader();
  1022
+            return moveInfo;
  1023
+        }
  1024
+
  1025
+        private static MovementInfo ReadMovementUpdateBlock430(ref Packet packet, Guid guid, int index)
  1026
+        {
  1027
+            var moveInfo = new MovementInfo();
  1028
+            bool hasAttackingTarget = packet.ReadBit("Has Attacking Target", index);
  1029
+            /*bool bit2 = */packet.ReadBit();
  1030
+            bool hasVehicleData = packet.ReadBit("Has Vehicle Data", index);
  1031
+            /*bool bit1 = */packet.ReadBit();
  1032
+            /*bool bit4 = */packet.ReadBit();
  1033
+            /*bool bit3 = */packet.ReadBit();
  1034
+            bool hasTransportExtra = packet.ReadBit("Has Transport Extra", index);
  1035
+            bool hasGameObjectPosition = packet.ReadBit("Has GameObject Position", index);
  1036
+            bool unkFloats = packet.ReadBit();
  1037
+            bool hasAnimKits = packet.ReadBit("Has AnimKits", index);
  1038
+            bool hasGORotation = packet.ReadBit("Has GameObject Rotation", index);
  1039
+            bool living = packet.ReadBit("Living", index);
  1040
+            bool hasStationaryPosition = packet.ReadBit("Has Stationary Position", index);
  1041
+            uint unkLoopCounter = packet.ReadBits(24);
  1042
+            /*bool bit0 = */packet.ReadBit();
  1043
+
  1044
+            bool unkFloat1 = false;
  1045
+            bool hasFallData = false;
  1046
+            bool unkFloat2 = false;
  1047
+            bool bit216 = false;
  1048
+            bool bit256 = false;
  1049
+            bool hasSplineDurationMult = false;
  1050
+            SplineType splineType = SplineType.Normal;
  1051
+            var facingTarget = new byte[8];
  1052
+            uint splineCount = 0u;
  1053
+            bool hasTransportData = false;
  1054
+            var transportGuid = new byte[8];
  1055
+            bool hasTransportTime2 = false;
  1056
+            bool hasTransportTime3 = false;
  1057
+            bool hasFallDirection = false;
  1058
+            bool hasUnkUInt = false;
  1059
+            bool hasOrientation = false;
  1060
+            var attackingTarget = new byte[8];
  1061
+            var goTransportGuid = new byte[8];
  1062
+            bool hasGOTransportTime2 = false;
  1063
+            bool hasGOTransportTime3 = false;
  1064
+            bool hasAnimKit1 = false;
  1065
+            bool hasAnimKit2 = false;
  1066
+            bool hasAnimKit3 = false;
  1067
+            var guid2 = new byte[8];
  1068
+
  1069
+            if (living)
  1070
+            {
  1071
+                hasTransportData = packet.ReadBit("Has Transport Data", index);
  1072
+                if (hasTransportData)
  1073
+                {
  1074
+                    transportGuid[2] = (byte)(packet.ReadBit() ? 1 : 0);
  1075
+                    transportGuid[7] = (byte)(packet.ReadBit() ? 1 : 0);
  1076
+                    transportGuid[5] = (byte)(packet.ReadBit() ? 1 : 0);
  1077
+                    hasTransportTime3 = packet.ReadBit();
  1078
+                    transportGuid[3] = (byte)(packet.ReadBit() ? 1 : 0);
  1079
+                    transportGuid[0] = (byte)(packet.ReadBit() ? 1 : 0);
  1080
+                    transportGuid[4] = (byte)(packet.ReadBit() ? 1 : 0);
  1081
+                    transportGuid[1] = (byte)(packet.ReadBit() ? 1 : 0);
  1082
+                    hasTransportTime2 = packet.ReadBit();
  1083
+                    transportGuid[6] = (byte)(packet.ReadBit() ? 1 : 0);
  1084
+                }
  1085
+
  1086
+                moveInfo.HasSplineData = packet.ReadBit("Has Spline Data", index);
  1087
+                guid2[7] = (byte)(packet.ReadBit() ? 1 : 0);
  1088
+                guid2[6] = (byte)(packet.ReadBit() ? 1 : 0);
  1089
+                guid2[5] = (byte)(packet.ReadBit() ? 1 : 0);
  1090
+                guid2[2] = (byte)(packet.ReadBit() ? 1 : 0);
  1091
+                guid2[4] = (byte)(packet.ReadBit() ? 1 : 0);
  1092
+                bool hasMovementFlags = !packet.ReadBit();
  1093
+                guid2[1] = (byte)(packet.ReadBit() ? 1 : 0);
  1094
+                /*bool bit148 = */packet.ReadBit();
  1095
+                hasUnkUInt = !packet.ReadBit();
  1096
+                bool hasExtraMovementFlags = !packet.ReadBit();
  1097
+                if (moveInfo.HasSplineData)
  1098
+                {
  1099
+                    bit216 = packet.ReadBit();
  1100
+                    if (bit216)
  1101
+                    {
  1102
+                        bit256 = packet.ReadBit();
  1103
+                        /*splineFlags = */packet.ReadEnum<SplineFlag422>("Spline flags", 25, index);
  1104
+                        /*splineMode = */packet.ReadBits(2);
  1105
+                        hasSplineDurationMult = packet.ReadBit();
  1106
+                        splineCount = packet.ReadBits(22);
  1107
+                        uint bits57 = packet.ReadBits(2);
  1108
+                        switch (bits57)
  1109
+                        {
  1110
+                            case 0:
  1111
+                                splineType = SplineType.FacingSpot;
  1112
+                                break;
  1113
+                            case 1:
  1114
+                                splineType = SplineType.Normal;
  1115
+                                break;
  1116
+                            case 2:
  1117
+                                splineType = SplineType.FacingTarget;
  1118
+                                break;
  1119
+                            case 3:
  1120
+                                splineType = SplineType.FacingAngle;
  1121
+                                break;
  1122
+                        }
  1123
+
  1124
+                        if (splineType == SplineType.FacingTarget)
  1125
+                        {
  1126
+                            facingTarget[7] = (byte)(packet.ReadBit() ? 1 : 0);
  1127
+                            facingTarget[3] = (byte)(packet.ReadBit() ? 1 : 0);
  1128
+                            facingTarget[4] = (byte)(packet.ReadBit() ? 1 : 0);
  1129
+                            facingTarget[2] = (byte)(packet.ReadBit() ? 1 : 0);
  1130
+                            facingTarget[1] = (byte)(packet.ReadBit() ? 1 : 0);
  1131
+                            facingTarget[6] = (byte)(packet.ReadBit() ? 1 : 0);
  1132
+                            facingTarget[0] = (byte)(packet.ReadBit() ? 1 : 0);
  1133
+                            facingTarget[5] = (byte)(packet.ReadBit() ? 1 : 0);
  1134
+                        }
  1135
+                    }
  1136
+                }
  1137
+
  1138
+                guid2[3] = (byte)(packet.ReadBit() ? 1 : 0);
  1139
+                if (hasMovementFlags)
  1140
+                    moveInfo.Flags = packet.ReadEnum<MovementFlag>("Movement Flags", 30, index);
  1141
+
  1142
+                unkFloat1 = !packet.ReadBit();
  1143
+                hasFallData = packet.ReadBit("Has Fall Data", index);
  1144
+                if (hasExtraMovementFlags)
  1145
+                    moveInfo.FlagsExtra = packet.ReadEnum<MovementFlagExtra>("Extra Movement Flags", 12, index);
  1146
+
  1147
+                guid2[0] = (byte)(packet.ReadBit() ? 1 : 0);
  1148
+                hasOrientation = !packet.ReadBit();
  1149
+                if (hasFallData)
  1150
+                    hasFallDirection = packet.ReadBit("Has Fall Direction", index);
  1151
+
  1152
+                unkFloat2 = !packet.ReadBit();
  1153
+            }
  1154
+
  1155
+            if (hasGameObjectPosition)
  1156
+            {
  1157
+                goTransportGuid[1] = (byte)(packet.ReadBit() ? 1 : 0);
  1158
+                hasGOTransportTime3 = packet.ReadBit();
  1159
+                goTransportGuid[3] = (byte)(packet.ReadBit() ? 1 : 0);
  1160
+                goTransportGuid[2] = (byte)(packet.ReadBit() ? 1 : 0);
  1161
+                goTransportGuid[6] = (byte)(packet.ReadBit() ? 1 : 0);
  1162
+                goTransportGuid[5] = (byte)(packet.ReadBit() ? 1 : 0);
  1163
+                goTransportGuid[0] = (byte)(packet.ReadBit() ? 1 : 0);
  1164
+                goTransportGuid[4] = (byte)(packet.ReadBit() ? 1 : 0);
  1165
+                hasGOTransportTime2 = packet.ReadBit();
  1166
+                goTransportGuid[7] = (byte)(packet.ReadBit() ? 1 : 0);
  1167
+            }
  1168
+
  1169
+            if (hasAnimKits)
  1170
+            {
  1171
+                hasAnimKit3 = !packet.ReadBit();
  1172
+                hasAnimKit1 = !packet.ReadBit();
  1173
+                hasAnimKit2 = !packet.ReadBit();
  1174
+            }
  1175
+
  1176
+            if (hasAttackingTarget)
  1177
+            {
  1178
+                attackingTarget[3] = (byte)(packet.ReadBit() ? 1 : 0);
  1179
+                attackingTarget[4] = (byte)(packet.ReadBit() ? 1 : 0);
  1180
+                attackingTarget[6] = (byte)(packet.ReadBit() ? 1 : 0);
  1181
+                attackingTarget[0] = (byte)(packet.ReadBit() ? 1 : 0);
  1182
+                attackingTarget[1] = (byte)(packet.ReadBit() ? 1 : 0);
  1183
+                attackingTarget[7] = (byte)(packet.ReadBit() ? 1 : 0);
  1184
+                attackingTarget[5] = (byte)(packet.ReadBit() ? 1 : 0);
  1185
+                attackingTarget[2] = (byte)(packet.ReadBit() ? 1 : 0);
  1186
+            }
  1187
+
  1188
+            // Reading data
  1189
+            for (var i = 0u; i < unkLoopCounter; ++i)
  1190
+                packet.ReadUInt32("Unk UInt32", index, (int)i);
  1191
+
  1192
+            if (hasStationaryPosition)
  1193
+            {
  1194
+                moveInfo.Position = new Vector3();
  1195
+                moveInfo.Position.Z = packet.ReadSingle();
  1196
+                moveInfo.Orientation = packet.ReadSingle();
  1197
+                moveInfo.Position.X = packet.ReadSingle();
  1198
+                moveInfo.Position.Y = packet.ReadSingle();
  1199
+                packet.WriteLine("[{0}] Stationary Position: {1}, O: {2}", index, moveInfo.Position, moveInfo.Orientation);
  1200
+            }
  1201
+
  1202
+            if (hasVehicleData)
  1203
+            {
  1204
+                moveInfo.VehicleId = packet.ReadUInt32("Vehicle Id", index);
  1205
+                packet.ReadSingle("Vehicle Orientation", index);
  1206
+            }
  1207
+
  1208
+            if (hasGameObjectPosition)
  1209
+            {
  1210
+                var tPos = new Vector4();
  1211
+                if (goTransportGuid[1] != 0) goTransportGuid[1] ^= packet.ReadByte();
  1212
+                if (goTransportGuid[4] != 0) goTransportGuid[4] ^= packet.ReadByte();
  1213
+                tPos.Z = packet.ReadSingle();
  1214
+                if (hasGOTransportTime3)
  1215
+                    packet.ReadInt32("GO Transport Time 3", index);
  1216
+
  1217
+                packet.ReadInt32("GO Transport Time", index);
  1218
+                if (goTransportGuid[5] != 0) goTransportGuid[5] ^= packet.ReadByte();
  1219
+                if (goTransportGuid[6] != 0) goTransportGuid[6] ^= packet.ReadByte();
  1220
+                tPos.X = packet.ReadSingle();
  1221
+                if (goTransportGuid[2] != 0) goTransportGuid[2] ^= packet.ReadByte();
  1222
+                if (hasGOTransportTime2)
  1223
+                    packet.ReadInt32("GO Transport Time 2", index);
  1224
+
  1225
+                packet.ReadByte("GO Transport Seat", index);
  1226
+                if (goTransportGuid[3] != 0) goTransportGuid[3] ^= packet.ReadByte();
  1227
+                tPos.Y = packet.ReadSingle();
  1228
+                tPos.O = packet.ReadSingle();
  1229
+                if (goTransportGuid[7] != 0) goTransportGuid[7] ^= packet.ReadByte();
  1230
+                if (goTransportGuid[0] != 0) goTransportGuid[0] ^= packet.ReadByte();
  1231
+
  1232
+                packet.WriteLine("[{0}] GO Transport Position: {1}", index, tPos);
  1233
+                packet.WriteLine("[{0}] GO Transport GUID {1}", index, new Guid(BitConverter.ToUInt64(goTransportGuid, 0)));
  1234
+            }
  1235
+
  1236
+            if (living)
  1237
+            {
  1238
+                if (moveInfo.HasSplineData)
  1239
+                {
  1240
+                    if (bit216)
  1241
+                    {
  1242
+                        for (var i = 0u; i < splineCount; ++i)
  1243
+                        {
  1244
+                            var wp = new Vector3
  1245
+                            {
  1246
+                                Y = packet.ReadSingle(),
  1247
+                                X = packet.ReadSingle(),
  1248
+                                Z = packet.ReadSingle(),
  1249
+                            };
  1250
+
  1251
+                            packet.WriteLine("[{0}][{1}] Spline Waypoint: {2}", index, i, wp);
  1252
+                        }
  1253
+
  1254
+                        if (hasSplineDurationMult)
  1255
+                            packet.ReadSingle("Spline Duration Modifier", index);
  1256
+
  1257
+                        packet.ReadSingle("Unknown Spline Float 2", index);
  1258
+                        if (splineType == SplineType.FacingTarget)
  1259
+                        {
  1260
+                            if (facingTarget[3] != 0) facingTarget[3] ^= packet.ReadByte();
  1261
+                            if (facingTarget[4] != 0) facingTarget[4] ^= packet.ReadByte();
  1262
+                            if (facingTarget[5] != 0) facingTarget[5] ^= packet.ReadByte();
  1263
+                            if (facingTarget[7] != 0) facingTarget[7] ^= packet.ReadByte();
  1264
+                            if (facingTarget[2] != 0) facingTarget[2] ^= packet.ReadByte();
  1265
+                            if (facingTarget[0] != 0) facingTarget[0] ^= packet.ReadByte();
  1266
+                            if (facingTarget[6] != 0) facingTarget[6] ^= packet.ReadByte();
  1267
+                            if (facingTarget[1] != 0) facingTarget[1] ^= packet.ReadByte();
  1268
+                            packet.WriteLine("[{0}] Facing Target GUID {1}", index, new Guid(BitConverter.ToUInt64(facingTarget, 0)));
  1269
+                        }
  1270
+
  1271
+                        if (bit256)
  1272
+                            packet.ReadUInt32("Unknown Spline Int32 3", index);
  1273
+
  1274
+                        packet.ReadSingle("Unknown Spline Float 1", index);
  1275
+                        packet.ReadUInt32("Unknown Spline Int32 1", index);
  1276
+                        if (splineType == SplineType.FacingSpot)
  1277
+                        {
  1278
+                            var point = new Vector3
  1279
+                            {
  1280
+                                Y = packet.ReadSingle(),
  1281
+                                Z = packet.ReadSingle(),
  1282
+                                X = packet.ReadSingle(),
  1283
+                            };
  1284
+
  1285
+                            packet.WriteLine("[{0}] Facing Spot: {1}", index, point);
  1286
+                        }
  1287
+
  1288
+                        packet.ReadUInt32("Unknown Spline Int32 2", index);
  1289
+                        if (splineType == SplineType.FacingAngle)
  1290
+                            packet.ReadSingle("Facing Angle", index);
  1291
+                    }
  1292
+
  1293
+                    var endPoint = new Vector3
  1294
+                    {
  1295
+                        Z = packet.ReadSingle(),
  1296
+                        Y = packet.ReadSingle(),
  1297
+                    };
  1298
+
  1299
+                    packet.ReadUInt32("Spline Full Time", index);
  1300
+                    endPoint.X = packet.ReadSingle();
  1301
+                    packet.WriteLine("[{0}] Spline Endpoint: {1}", index, endPoint);
  1302
+                }
  1303
+
  1304
+                packet.ReadSingle("Pitch Speed", index);
  1305
+                if (hasTransportData)
  1306
+                {
  1307
+                    var tPos = new Vector4();
  1308
+                    if (transportGuid[4] != 0) transportGuid[4] ^= packet.ReadByte();
  1309
+                    tPos.Z = packet.ReadSingle();
  1310
+                    if (transportGuid[7] != 0) transportGuid[7] ^= packet.ReadByte();
  1311
+                    if (transportGuid[5] != 0) transportGuid[5] ^= packet.ReadByte();
  1312
+                    if (transportGuid[1] != 0) transportGuid[1] ^= packet.ReadByte();
  1313
+                    tPos.X = packet.ReadSingle();
  1314
+                    if (transportGuid[3] != 0) transportGuid[3] ^= packet.ReadByte();
  1315
+                    if (transportGuid[6] != 0) transportGuid[6] ^= packet.ReadByte();
  1316
+                    if (hasTransportTime3)
  1317
+                        packet.ReadInt32("Transport Time 3", index);
  1318
+
  1319
+                    tPos.Y = packet.ReadSingle();
  1320
+                    packet.ReadByte("Transport Seat", index);
  1321
+                    tPos.O = packet.ReadSingle();
  1322
+                    if (hasTransportTime2)
  1323
+                        packet.ReadInt32("Transport Time 2", index);
  1324
+
  1325
+                    if (transportGuid[2] != 0) transportGuid[2] ^= packet.ReadByte();
  1326
+                    packet.ReadInt32("Transport Time", index);
  1327
+                    if (transportGuid[0] != 0) transportGuid[0] ^= packet.ReadByte();
  1328
+
  1329
+                    packet.WriteLine("[{0}] Transport Position: {1}", index, tPos);
  1330
+                }
  1331
+
  1332
+                packet.ReadSingle("FlyBack Speed", index);
  1333
+                moveInfo.Position = new Vector3();
  1334
+                moveInfo.Position.X = packet.ReadSingle();
  1335
+                if (unkFloat1)
  1336
+                    packet.ReadSingle("Unk float +28", index);
  1337
+
  1338
+                if (hasFallData)
  1339
+                {
  1340
+                    packet.ReadInt32("Time Fallen", index);
  1341
+                    if (hasFallDirection)
  1342
+                    {
  1343
+                        packet.ReadSingle("Jump Sin", index);
  1344
+                        packet.ReadSingle("Jump Velocity", index);
  1345
+                        packet.ReadSingle("Jump Cos", index);
  1346
+                    }
  1347
+                    packet.ReadSingle("Fall Start Velocity", index);
  1348
+                }
  1349
+
  1350
+                if (guid2[7] != 0) guid2[7] ^= packet.ReadByte();
  1351
+                packet.ReadSingle("SwimBack Speed", index);
  1352
+                if (guid2[0] != 0) guid2[0] ^= packet.ReadByte();
  1353
+                if (guid2[5] != 0) guid2[5] ^= packet.ReadByte();
  1354
+                if (hasUnkUInt)
  1355
+                    packet.ReadUInt32();
  1356
+
  1357
+                moveInfo.Position.Z = packet.ReadSingle();
  1358
+                packet.ReadSingle("Fly Speed", index);
  1359
+                if (guid2[1] != 0) guid2[1] ^= packet.ReadByte();
  1360
+                packet.ReadSingle("RunBack Speed", index);
  1361
+                packet.ReadSingle("Turn Speed", index);
  1362
+                packet.ReadSingle("Swim Speed", index);
  1363
+                moveInfo.WalkSpeed = packet.ReadSingle("Walk Speed", index) / 2.5f;
  1364
+                if (guid2[3] != 0) guid2[3] ^= packet.ReadByte();
  1365
+                if (guid2[4] != 0) guid2[4] ^= packet.ReadByte();
  1366
+                if (guid2[2] != 0) guid2[2] ^= packet.ReadByte();
  1367
+                if (guid2[6] != 0) guid2[6] ^= packet.ReadByte();
  1368
+                packet.WriteLine("[{0}] GUID 2 {1}", index, new Guid(BitConverter.ToUInt64(guid2, 0)));
  1369
+                if (unkFloat2)
  1370
+                    packet.ReadSingle("Unk float +36", index);
  1371
+
  1372
+                moveInfo.Position.Y = packet.ReadSingle();
  1373
+                if (hasOrientation)
  1374
+                    moveInfo.Orientation = packet.ReadSingle();
  1375
+
  1376
+                moveInfo.RunSpeed = packet.ReadSingle("Run Speed", index) / 7.0f;
  1377
+                packet.WriteLine("[{0}] Position: {1} Orientation: {2}", index, moveInfo.Position, moveInfo.Orientation);
  1378
+            }
  1379
+
  1380
+            if (unkFloats)
  1381
+            {
  1382
+                for (int i = 0; i < 16; ++i)
  1383
+                    packet.ReadSingle("Unk float 456", index, i);
  1384
+
  1385
+                packet.ReadByte("Unk byte 456", index);
  1386
+            }
  1387
+
  1388
+            if (hasTransportExtra)
  1389
+                packet.ReadInt32("Transport Time", index);
  1390
+
  1391
+            if (hasAnimKits)
  1392
+            {
  1393
+                if (hasAnimKit2)
  1394
+                    packet.ReadUInt16("Anim Kit 2", index);
  1395
+                if (hasAnimKit3)
  1396
+                    packet.ReadUInt16("Anim Kit 3", index);
  1397
+                if (hasAnimKit1)
  1398
+                    packet.ReadUInt16("Anim Kit 1", index);
  1399
+            }
  1400
+
  1401
+            if (hasGORotation)
  1402
+                moveInfo.Rotation = packet.ReadPackedQuaternion("GO Rotation", index);
  1403
+
  1404
+            if (hasAttackingTarget)
  1405
+            {
  1406
+                if (attackingTarget[3] != 0) attackingTarget[3] ^= packet.ReadByte();
  1407
+                if (attackingTarget[5] != 0) attackingTarget[5] ^= packet.ReadByte();
  1408
+                if (attackingTarget[0] != 0) attackingTarget[0] ^= packet.ReadByte();
  1409
+                if (attackingTarget[7] != 0) attackingTarget[7] ^= packet.ReadByte();
  1410
+                if (attackingTarget[2] != 0) attackingTarget[2] ^= packet.ReadByte();
  1411
+                if (attackingTarget[4] != 0) attackingTarget[4] ^= packet.ReadByte();
  1412
+                if (attackingTarget[6] != 0) attackingTarget[6] ^= packet.ReadByte();
  1413
+                if (attackingTarget[1] != 0) attackingTarget[1] ^= packet.ReadByte();
  1414
+                packet.WriteLine("[{0}] Attacking Target GUID {1}", index, new Guid(BitConverter.ToUInt64(attackingTarget, 0)));
  1415
+            }
1020 1416
 
1021 1417
             packet.ResetBitReader();
1022 1418
             return moveInfo;
@@ -1030,6 +1426,9 @@ private static MovementInfo ReadMovementUpdateBlock(ref Packet packet, Guid guid
1030 1426
             if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_3_2_15211))
1031 1427
                 return ReadMovementUpdateBlock432(ref packet, guid, index);
1032 1428
 
  1429
+            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_3_0_15005))
  1430
+                return ReadMovementUpdateBlock430(ref packet, guid, index);
  1431
+
1033 1432
             var moveInfo = new MovementInfo();
1034 1433
 
1035 1434
             var flagsTypeCode = ClientVersion.AddedInVersion(ClientVersionBuild.V3_1_0_9767) ? TypeCode.UInt16 : TypeCode.Byte;
Commit_comment_tip

Tip: You can add notes to lines in a file. Hover to the left of a line to make a note

Something went wrong with that request. Please try again.