80 lines
1.7 KiB
C#
80 lines
1.7 KiB
C#
using System;
|
|
using Server.Network;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class PlagueBeastVein : PlagueBeastComponent
|
|
{
|
|
private bool m_Cut;
|
|
|
|
public bool Cut => m_Cut;
|
|
|
|
private Timer m_Timer;
|
|
|
|
public PlagueBeastVein( int itemID, int hue ) : base( itemID, hue )
|
|
{
|
|
m_Cut = false;
|
|
}
|
|
|
|
public override bool Scissor( Mobile from, Scissors scissors )
|
|
{
|
|
if ( IsAccessibleTo( from ) )
|
|
{
|
|
if ( !m_Cut && m_Timer == null )
|
|
{
|
|
m_Timer = Timer.DelayCall<Mobile>( TimeSpan.FromSeconds( 3 ), new TimerStateCallback<Mobile>( CuttingDone ), from );
|
|
scissors.PublicOverheadMessage( MessageType.Regular, 0x3B2, 1071899 ); // You begin cutting through the vein.
|
|
return true;
|
|
}
|
|
else
|
|
scissors.PublicOverheadMessage( MessageType.Regular, 0x3B2, 1071900 ); // // This vein has already been cut.
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public override void OnAfterDelete()
|
|
{
|
|
if ( m_Timer != null && m_Timer.Running )
|
|
m_Timer.Stop();
|
|
}
|
|
|
|
private void CuttingDone( Mobile from )
|
|
{
|
|
m_Cut = true;
|
|
|
|
if ( ItemID == 0x1B1C )
|
|
ItemID = 0x1B1B;
|
|
else
|
|
ItemID = 0x1B1C;
|
|
|
|
if ( Owner != null )
|
|
Owner.PlaySound( 0x199 );
|
|
|
|
if ( Organ is PlagueBeastRubbleOrgan organ )
|
|
organ.OnVeinCut( from, this );
|
|
}
|
|
|
|
public PlagueBeastVein( Serial serial ) : base( serial )
|
|
{
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.WriteEncodedInt( 0 ); // version
|
|
|
|
writer.Write( (bool) m_Cut );
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
|
|
m_Cut = reader.ReadBool();
|
|
}
|
|
}
|
|
}
|