76 lines
2.0 KiB
C#
76 lines
2.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server;
|
|
using Server.Mobiles;
|
|
using Server.Network;
|
|
|
|
|
|
/*
|
|
Use < [add SpeakingSign "enter custom name" > command to set name of item when creating it.
|
|
This allows you to set name with spaces between words,
|
|
*/
|
|
|
|
namespace Server.Items
|
|
{
|
|
[FlipableAttribute(0x0BCF, 0x0BD0, 0x0BD1, 0x0BD2, 0x1F28, 0x1F29, 0x1297, 0x1298, 0x1299, 0x129A, 0x129B, 0x129C, 0x129D, 0x129E)]
|
|
|
|
public class SpeakingSign : Item
|
|
{
|
|
private DateTime LastUse;
|
|
public virtual TimeSpan Delay { get { return TimeSpan.FromMinutes(2.0); } }
|
|
public string Message { get; set; }
|
|
|
|
[Constructable]
|
|
public SpeakingSign(string message) : base(0x0BCF)
|
|
{
|
|
Movable = false;
|
|
Name = "a sign";
|
|
Message = message;
|
|
}
|
|
|
|
public virtual void HeedWarning()
|
|
{
|
|
//PublicOverheadMessage( type, hue, number, "" );
|
|
PublicOverheadMessage(MessageType.Regular, 0x3B2, false, String.Format("{0}", Message));
|
|
}
|
|
|
|
public override bool HandlesOnMovement { get { return true; } }
|
|
|
|
public override void OnMovement(Mobile m, Point3D oldLocation)
|
|
{
|
|
if (m.AccessLevel > AccessLevel.Player && m.Hidden)
|
|
return;
|
|
|
|
if (m is PlayerMobile && m.InRange(this, 10))
|
|
{
|
|
if (LastUse + Delay > DateTime.Now)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
HeedWarning();
|
|
LastUse = DateTime.Now;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public SpeakingSign(Serial serial) : base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
}
|