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; } } } } }