public void WritePacket(PacketWriter writer)
        {
            var offset = 0x2A;
            writer.WriteInt32((int)LastVisit.TotalSeconds);
            writer.WriteInt32(Unknown1);
            writer.WriteInt32((int)DateTimeConverter.ToUnixTimestamp(Timestamp));
            writer.WriteInt32(Unknown2);
            writer.WriteInt64(UserID);
            writer.WriteInt32((int)ShieldDuration.TotalSeconds);
            writer.WriteInt32(Unknown3);
            writer.WriteInt32(Unknown4);
            writer.WriteBoolean(Compressed);
            Home.Write(writer);
            writer.WriteInt32(Unknown6);
            writer.WriteInt64(UserID1);
            writer.WriteInt64(UserID2);

            if (Avatar.Clan != null)
            {
                writer.WriteBoolean(true);
                writer.WriteInt64(Avatar.Clan.ID);
                writer.WriteString(Avatar.Clan.Name);
                writer.WriteInt64(Avatar.Clan.Badge);
                writer.WriteInt32(0); // TODO: Make unknown.
                writer.WriteInt64(Avatar.Clan.Level);
                offset += 1;
            }

            writer.WriteBoolean(Unknown7);
            if (Unknown7)
                writer.WriteInt64(Unknown8);
            writer.WriteBoolean(Unknown9);
            if (Unknown9)
                writer.WriteInt64(Unknown10);

            writer.Write(new byte[offset]);
            writer.WriteInt32(Unknown11);
            writer.WriteInt32(AllianceCastleLevel);
            writer.WriteInt32(AllianceCastleUnitCapacity);
            writer.WriteInt32(AllianceCastleUnitCount);
            writer.WriteInt32(Avatar.TownHallLevel);
            writer.WriteString(Avatar.Username);
            writer.WriteString(FacebookID);
            writer.WriteInt32(Unknown14);
            writer.WriteInt32(Unknown15);
            writer.WriteInt32(Avatar.Trophies);
            writer.WriteInt32(Avatar.AttacksWon);
            writer.WriteInt32(Avatar.AttacksLost);
            writer.WriteInt32(Avatar.DefencesWon);
            writer.WriteInt32(Avatar.DefencesLost);
            writer.WriteInt32(Unknown16);
            writer.WriteInt32(Unknown17);
            writer.WriteInt32(Unknown18);
            writer.WriteBoolean(Unknown19);
            if (Unknown19)
                writer.WriteInt64(Unknown20);
            writer.WriteByte(Unknown21);
            writer.WriteInt32(Unknown22);
            writer.WriteInt32(Unknown23);
            writer.WriteInt32(Unknown24);
            writer.WriteInt32(Unknown25);
            for (int i = 0; i < 16; i++)
                writer.WriteInt32(0);
        }