public SOEPacket(byte[] data) { // Begin reading of SOE packet PacketReader reader = new PacketReader(data); SOEOpcode = reader.ReadShort(); // Setup SWG packet buffer and begin to read byte[] swgPacketBuffer = DecryptData(reader.ReadByteArray(data.Length - 4)); // - 4 b/c of (header + footer) PacketReader swgReader = new PacketReader(swgPacketBuffer); Sequence = swgReader.ReadShort(); Multi = swgReader.ReadShort(); while (swgReader.CanSeek()) { int length = swgReader.ReadByte(); if (length == 0) { break; } SWGPacket packet = PacketLookup.Find(swgReader.ReadByteArray(length)); childPackets.Add(packet); } this.ToArray(); }