85 lines
No EOL
2.1 KiB
C#
85 lines
No EOL
2.1 KiB
C#
using System;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public abstract class BaseTrap : Item
|
|
{
|
|
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; } }
|
|
|
|
private DateTime m_NextPassiveTrigger, m_NextActiveTrigger;
|
|
|
|
public virtual void OnTrigger( Mobile from )
|
|
{
|
|
}
|
|
|
|
public override bool HandlesOnMovement{ get{ return true; } } // Tell the core that we implement OnMovement
|
|
|
|
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 CheckRange( loc, range ) && !CheckRange( oldLoc, range );
|
|
}
|
|
|
|
public bool CheckRange( Point3D loc, int range )
|
|
{
|
|
return ( (this.Z + 8) >= loc.Z && (loc.Z + 16) > this.Z )
|
|
&& Utility.InRange( GetWorldLocation(), loc, range );
|
|
}
|
|
|
|
public override void OnMovement( Mobile m, Point3D oldLocation )
|
|
{
|
|
base.OnMovement( m, oldLocation );
|
|
|
|
if ( m.Location == oldLocation )
|
|
return;
|
|
|
|
if ( CheckRange( m.Location, oldLocation, 0 ) && DateTime.Now >= m_NextActiveTrigger )
|
|
{
|
|
m_NextActiveTrigger = m_NextPassiveTrigger = DateTime.Now + ResetDelay;
|
|
|
|
OnTrigger( m );
|
|
}
|
|
else if ( PassivelyTriggered && CheckRange( m.Location, oldLocation, PassiveTriggerRange ) && DateTime.Now >= m_NextPassiveTrigger )
|
|
{
|
|
m_NextPassiveTrigger = DateTime.Now + PassiveTriggerDelay;
|
|
|
|
OnTrigger( m );
|
|
}
|
|
}
|
|
|
|
public BaseTrap( int itemID ) : base( itemID )
|
|
{
|
|
Movable = false;
|
|
}
|
|
|
|
public BaseTrap( Serial serial ) : base( serial )
|
|
{
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
} |