using System; using Server; using Server.Network; namespace Server.Items { public class PlagueBeastBlood : PlagueBeastComponent { public bool Patched { get { return ItemID == 0x1765; } } public bool Starting { get { return ItemID == 0x122C; } } private Timer m_Timer; public PlagueBeastBlood() : base( 0x122C, 0 ) { m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 1.5 ), TimeSpan.FromSeconds( 1.5 ), 3, new TimerCallback( Hemorrhage ) ); } public override void OnAfterDelete() { if ( m_Timer != null && m_Timer.Running ) m_Timer.Stop(); } public override bool OnBandage( Mobile from ) { if ( IsAccessibleTo( from ) && !Patched ) { if ( m_Timer != null && m_Timer.Running ) m_Timer.Stop(); if ( Starting ) { X += 2; Y -= 9; if ( Organ is PlagueBeastRubbleOrgan ) Y -= 5; else if ( Organ is PlagueBeastBackupOrgan ) X += 7; } else { X -= 4; Y -= 2; } ItemID = 0x1765; if ( Owner != null ) { Container pack = Owner.Backpack; if ( pack != null ) { for ( int i = 0; i < pack.Items.Count; i++ ) { PlagueBeastMainOrgan main = pack.Items[ i ] as PlagueBeastMainOrgan; if ( main != null && main.Complete ) main.FinishOpening( from ); } } } PublicOverheadMessage( MessageType.Regular, 0x3B2, 1071916 ); // * You patch up the wound with a bandage * return true; } return false; } private void Hemorrhage() { if ( Patched ) return; if ( Owner != null ) Owner.PlaySound( 0x25 ); if ( ItemID == 0x122A ) { if ( Owner != null ) { Owner.Unfreeze(); Owner.Kill(); } } else { if ( Starting ) { X += 8; Y -= 10; } ItemID--; } } public PlagueBeastBlood( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.WriteEncodedInt( 0 ); // version } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadEncodedInt(); } } }