public static void ReadAllAchievementData(ref Packet packet) { while (true) { var id = packet.ReadInt32("Achievement ID"); if (id == -1) break; packet.ReadPackedTime("Achievement Time"); } while (true) { var id = packet.ReadInt32("Criteria ID"); if (id == -1) break; packet.ReadPackedUInt64("Criteria Counter"); packet.ReadPackedGuid("Player GUID"); packet.ReadInt32("Unk Int32"); // Unk flag, same as in SMSG_CRITERIA_UPDATE packet.ReadPackedTime("Criteria Time"); for (var i = 0; i < 2; i++) packet.ReadInt32("Timer " + i); } }