Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.ACC.CSS.Systems.Druid
|
||||
{
|
||||
public class SacredStone : Item
|
||||
{
|
||||
private Mobile m_Owner;
|
||||
private bool m_campSecure = false;
|
||||
private Timer m_campSecureTimer;
|
||||
private Timer m_Timer;
|
||||
|
||||
public override bool HandlesOnMovement{ get{ return true; } }
|
||||
public static int CampingRange{ get{ return 5; } }
|
||||
|
||||
[Constructable]
|
||||
public SacredStone( Mobile owner ) : base ( 0x8E3 )
|
||||
{
|
||||
Movable = false;
|
||||
Name="Sacred Stone";
|
||||
|
||||
m_Owner = owner;
|
||||
|
||||
m_Timer = new DecayTimer( this );
|
||||
m_Timer.Start();
|
||||
|
||||
m_campSecureTimer = new SecureTimer( m_Owner, this );
|
||||
m_campSecureTimer.Start();
|
||||
}
|
||||
|
||||
public SacredStone( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 ); // version
|
||||
|
||||
writer.Write( m_Owner );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch( version )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Owner = reader.ReadMobile();
|
||||
m_Timer = new DecayTimer( this );
|
||||
m_Timer.Start();
|
||||
m_campSecureTimer = new SecureTimer( m_Owner, this );
|
||||
m_campSecureTimer.Start();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnMovement( Mobile m, Point3D oldLocation )
|
||||
{
|
||||
if( ( m is PlayerMobile ) && ( m == m_Owner ) )
|
||||
{
|
||||
bool inOldRange = Utility.InRange( oldLocation, Location, CampingRange );
|
||||
bool inNewRange = Utility.InRange( m.Location, Location, CampingRange );
|
||||
|
||||
if ( inNewRange && !inOldRange )
|
||||
OnEnter( m );
|
||||
else if ( inOldRange && !inNewRange )
|
||||
OnExit( m );
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void OnEnter( Mobile m )
|
||||
{
|
||||
StartSecureTimer();
|
||||
}
|
||||
|
||||
public virtual void OnExit( Mobile m )
|
||||
{
|
||||
StopSecureTimer();
|
||||
m.SendMessage( "You have left the grove." );
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
if( m_Timer != null )
|
||||
m_Timer.Stop();
|
||||
}
|
||||
|
||||
private class DecayTimer : Timer
|
||||
{
|
||||
private SacredStone m_Owner;
|
||||
|
||||
public DecayTimer( SacredStone owner ) : base( TimeSpan.FromMinutes( 2.0 ) )
|
||||
{
|
||||
Priority = TimerPriority.FiveSeconds;
|
||||
m_Owner = owner;
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
m_Owner.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool CampSecure
|
||||
{
|
||||
get { return m_campSecure; }
|
||||
set { m_campSecure = value; }
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public Mobile Camper{ get { return m_Owner; } }
|
||||
|
||||
public void StartSecureTimer()
|
||||
{
|
||||
Camper.SendMessage( "You start to feel secure" ); // You feel it would take a few moments to secure your camp.
|
||||
if( m_campSecureTimer.Running == false )
|
||||
{
|
||||
m_campSecure = false;
|
||||
m_campSecureTimer.Start();
|
||||
}
|
||||
}
|
||||
|
||||
public void StopSecureTimer()
|
||||
{
|
||||
m_campSecure = false;
|
||||
m_campSecureTimer.Stop();
|
||||
}
|
||||
|
||||
public override void OnDelete()
|
||||
{
|
||||
base.OnDelete();
|
||||
if( m_campSecureTimer != null )
|
||||
StopSecureTimer();
|
||||
}
|
||||
|
||||
private class SecureTimer : Timer
|
||||
{
|
||||
private Mobile m_Owner;
|
||||
private SacredStone m_SacredStone;
|
||||
|
||||
public SecureTimer( Mobile owner , SacredStone SacredStone ) : base( TimeSpan.FromSeconds( 30.0 ) )
|
||||
{
|
||||
Priority = TimerPriority.FiveSeconds;
|
||||
m_SacredStone = SacredStone;
|
||||
m_Owner = owner;
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
m_SacredStone.CampSecure = true;
|
||||
m_Owner.SendMessage( "The power of the grove washes over you." );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user