public SleeperBedBodyContent(Mobile beholder, SleepingBodies beheld) : base(0x3C)
        {
            ArrayList items = beheld.EquipItems;
            int       count = items.Count;

            EnsureCapacity(5 + (count * 19));

            long pos = m_Stream.Position;

            int written = 0;

            m_Stream.Write((ushort)0);

            for (int i = 0; i < count; ++i)
            {
                Item child = (Item)items[i];

                if (!child.Deleted && child.Parent == beheld && beholder.CanSee(child))
                {
                    m_Stream.Write((int)child.Serial);
                    m_Stream.Write((ushort)child.ItemID);
                    m_Stream.Write((byte)0);
                    m_Stream.Write((ushort)child.Amount);
                    m_Stream.Write((short)child.X);
                    m_Stream.Write((short)child.Y);
                    m_Stream.Write((int)beheld.Serial);
                    m_Stream.Write((ushort)child.Hue);
                    ++written;
                }
            }

            m_Stream.Seek(pos, SeekOrigin.Begin);
            m_Stream.Write((ushort)written);
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            m_SleepingBodies = (SleepingBodies)reader.ReadItem();
            m_Player         = reader.ReadMobile();

            m_Active   = reader.ReadBool();
            m_Location = reader.ReadPoint3D();
            m_Sleeping = reader.ReadBool();
            m_Owner    = reader.ReadMobile();

            m_Debug = false;
        }
        public SleeperBedBodyEquip(Mobile beholder, SleepingBodies beheld) : base(0x89)
        {
            ArrayList list = beheld.EquipItems;

            EnsureCapacity(8 + (list.Count * 5));

            m_Stream.Write((int)beheld.Serial);

            for (int i = 0; i < list.Count; ++i)
            {
                Item item = (Item)list[i];

                if (!item.Deleted && beholder.CanSee(item) && item.Parent == beheld)
                {
                    m_Stream.Write((byte)(item.Layer + 1));
                    m_Stream.Write((int)item.Serial);
                }
            }

            m_Stream.Write((byte)Layer.Invalid);
        }
        public void DoubleClick(Mobile from)
        {
            Mobile m_Player = from as PlayerMobile;

            if (!m_Player.CanSee(this) || !m_Player.InLOS(this))
            {
                m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "You are too far from the bed!");
                return;
            }

            if (m_Player.CantWalk && !m_Sleeping)
            {
                m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "You are already sleeping somewhere!");
            }
            else
            {
                if (!m_Sleeping)
                {
                    m_Owner = m_Player;

                    m_Player.Hidden    = true;
                    m_Player.Squelched = true;
                    m_Player.Frozen    = true;
                    m_wakeup           = 0;
                    m_Player.CantWalk  = true;
                    m_Sleeping         = true;
                    m_Player.Blessed   = true;

                    m_SleepingBodies = new SleepingBodies(m_Player, false, false);

                    #region Sleeping Body Position

                    Point3D m_Location = new Point3D(this.Location.X, this.Location.Y + 2, this.Location.Z + 14);

                    #endregion

                    m_SleepingBodies.Direction = Direction.South;
                    m_SleepingBodies.MoveToWorld(m_Location, this.Map);
                }
                else
                {
                    if (m_Owner == m_Player)
                    {
                        m_Player.Hidden    = false;
                        m_Player.Squelched = false;
                        m_Player.Frozen    = false;
                        m_wakeup           = 0;
                        m_Player.CantWalk  = false;
                        m_Sleeping         = false;
                        m_Player.Blessed   = false;

                        if (m_SleepingBodies != null)
                        {
                            m_SleepingBodies.Delete();
                        }
                        m_SleepingBodies = null;

                        switch (Utility.RandomMinMax(1, 3))
                        {
                        case 1:
                            m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "You wake up and feel strong and well rested.");
                            break;

                        case 2:
                            m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "You spring out of bed, ready for another day!");
                            break;

                        case 3:
                            m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "You fall out of bed and crack your knee on the wooden bedframe!");
                            m_Player.Hits = m_Player.Hits - 25;
                            break;
                        }
                    }
                    else
                    {
                        switch (m_wakeup)
                        {
                        case 0:
                            m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "Shhh, don't wake them up. They really need their beauty rest!");
                            m_wakeup = m_wakeup + 1;
                            break;

                        case 1:
                            m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "You really should NOT bother someone that is sleeping. Bad things might happen.");
                            m_wakeup = m_wakeup + 1;
                            break;

                        case 2:
                            m_Player.LocalOverheadMessage(MessageType.Regular, 0x33, true, "You were warned!! Now leave them alone.");
                            m_Player.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.Head);
                            m_Player.PlaySound(0x208);
                            m_Player.Hits = m_Player.Hits - 40;
                            break;
                        }
                    }
                }
            }
        }