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( TimeSpan.FromSeconds( 3 ), new TimerStateCallback( 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(); } } }