ModernUO/Scripts/Items/Special/Mutation Core/PlagueBeastVein.cs
2018-09-14 08:46:14 -07:00

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();
}
}
}