Files
abysmal-isle/Scripts/Items/Functional/BaseTrap.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

114 lines
2.8 KiB
C#

using System;
namespace Server.Items
{
public abstract class BaseTrap : Item
{
private DateTime m_NextPassiveTrigger, m_NextActiveTrigger;
public BaseTrap(int itemID)
: base(itemID)
{
this.Movable = false;
}
public BaseTrap(Serial serial)
: base(serial)
{
}
public virtual bool PassivelyTriggered
{
get
{
return false;
}
}
public virtual TimeSpan PassiveTriggerDelay
{
get
{
return TimeSpan.Zero;
}
}
public virtual int PassiveTriggerRange
{
get
{
return -1;
}
}
public virtual TimeSpan ResetDelay
{
get
{
return TimeSpan.Zero;
}
}
public override bool HandlesOnMovement
{
get
{
return true;
}
}// Tell the core that we implement OnMovement
public virtual void OnTrigger(Mobile from)
{
}
public virtual int GetEffectHue()
{
int hue = this.Hue & 0x3FFF;
if (hue < 2)
return 0;
return hue - 1;
}
public bool CheckRange(Point3D loc, Point3D oldLoc, int range)
{
return this.CheckRange(loc, range) && !this.CheckRange(oldLoc, range);
}
public bool CheckRange(Point3D loc, int range)
{
return ((this.Z + 8) >= loc.Z && (loc.Z + 16) > this.Z) &&
Utility.InRange(this.GetWorldLocation(), loc, range);
}
public override void OnMovement(Mobile m, Point3D oldLocation)
{
base.OnMovement(m, oldLocation);
if (m.Location == oldLocation)
return;
if (this.CheckRange(m.Location, oldLocation, 0) && DateTime.UtcNow >= this.m_NextActiveTrigger)
{
this.m_NextActiveTrigger = this.m_NextPassiveTrigger = DateTime.UtcNow + this.ResetDelay;
this.OnTrigger(m);
}
else if (this.PassivelyTriggered && this.CheckRange(m.Location, oldLocation, this.PassiveTriggerRange) && DateTime.UtcNow >= this.m_NextPassiveTrigger)
{
this.m_NextPassiveTrigger = DateTime.UtcNow + this.PassiveTriggerDelay;
this.OnTrigger(m);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}