140 lines
3.6 KiB
C#
140 lines
3.6 KiB
C#
using System;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class Waystone : Item
|
|
{
|
|
public static int Animation = Config.Get("Waystone.Animation", 11);
|
|
public static int FrameCount = Config.Get("Waystone.FrameCount", 5);
|
|
public static int RepeatCount = Config.Get("Waystone.RepeatCount", 1);
|
|
public static int Delay = Config.Get("Waystone.Delay", 0);
|
|
private bool m_Marked;
|
|
private Point3D m_Target;
|
|
private Map m_TargetMap;
|
|
|
|
[Constructable]
|
|
public Waystone() : base(0x41BE)
|
|
{
|
|
Name = "a Waystone";
|
|
Movable = true;
|
|
|
|
m_Marked = false;
|
|
m_TargetMap = null;
|
|
|
|
}
|
|
|
|
public override void OnDoubleClick(Mobile from)
|
|
{
|
|
if (!IsChildOf(from.Backpack))
|
|
{
|
|
from.SendLocalizedMessage(1042001);
|
|
}
|
|
else if (m_Marked == false)
|
|
{
|
|
from.Animate(Animation, FrameCount, RepeatCount, true, false, Delay);
|
|
//from.Animate(16, 5, 1, true, false, 0);
|
|
from.PlaySound(0x1EB);
|
|
m_Target = from.Location;
|
|
m_TargetMap = from.Map;
|
|
m_Marked = true;
|
|
from.SendMessage("You Mark the stones location.");
|
|
|
|
}
|
|
else
|
|
{
|
|
from.Animate(17, 5, 1, true, false, 0);
|
|
from.PlaySound(0x0F6);
|
|
from.Location = m_Target;
|
|
from.Map = m_TargetMap;
|
|
from.SendMessage("You are sent to the Waystones saved location.");
|
|
}
|
|
}
|
|
|
|
public override void GetProperties(ObjectPropertyList list)
|
|
{
|
|
base.GetProperties(list);
|
|
//list.Add("Marked");
|
|
if (m_Marked == false)
|
|
{
|
|
list.Add("Not Marked");
|
|
}
|
|
else
|
|
{
|
|
list.Add("Marked");
|
|
}
|
|
}
|
|
|
|
public Waystone(Serial serial) : base(serial)
|
|
{
|
|
}
|
|
|
|
|
|
[CommandProperty(AccessLevel.Counselor, AccessLevel.GameMaster)]
|
|
public bool Marked
|
|
{
|
|
get
|
|
{
|
|
return m_Marked;
|
|
}
|
|
set
|
|
{
|
|
if (m_Marked != value)
|
|
{
|
|
m_Marked = value;
|
|
InvalidateProperties();
|
|
}
|
|
}
|
|
}
|
|
[CommandProperty(AccessLevel.Counselor, AccessLevel.GameMaster)]
|
|
public Point3D Target
|
|
{
|
|
get
|
|
{
|
|
return m_Target;
|
|
}
|
|
set
|
|
{
|
|
m_Target = value;
|
|
}
|
|
}
|
|
[CommandProperty(AccessLevel.Counselor, AccessLevel.GameMaster)]
|
|
public Map TargetMap
|
|
{
|
|
get
|
|
{
|
|
return m_TargetMap;
|
|
}
|
|
set
|
|
{
|
|
if (m_TargetMap != value)
|
|
{
|
|
m_TargetMap = value;
|
|
InvalidateProperties();
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.Write( (int) 0 ); // version
|
|
|
|
writer.Write((bool)m_Marked);
|
|
writer.Write((Point3D)m_Target);
|
|
writer.Write((Map)m_TargetMap);
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadInt();
|
|
|
|
m_Marked = reader.ReadBool();
|
|
m_Target = reader.ReadPoint3D();
|
|
m_TargetMap = reader.ReadMap();
|
|
}
|
|
}
|
|
}
|