using System; using Server.Network; namespace Server.Items { public class PlagueBeastVein : PlagueBeastComponent { private bool _cutting; public PlagueBeastVein(int itemID, int hue) : base(itemID, hue) => Cut = false; public PlagueBeastVein(Serial serial) : base(serial) { } public bool Cut { get; private set; } public override bool Scissor(Mobile from, Scissors scissors) { if (IsAccessibleTo(from)) { if (!Cut && !_cutting) { _cutting = true; Timer.StartTimer(TimeSpan.FromSeconds(3), () => CuttingDone(from)); scissors.PublicOverheadMessage( MessageType.Regular, 0x3B2, 1071899 // You begin cutting through the vein. ); return true; } scissors.PublicOverheadMessage(MessageType.Regular, 0x3B2, 1071900); // // This vein has already been cut. } return false; } private void CuttingDone(Mobile from) { _cutting = false; Cut = true; ItemID = ItemID == 0x1B1C ? 0x1B1B : 0x1B1C; Owner?.PlaySound(0x199); if (Organ is PlagueBeastRubbleOrgan organ) { organ.OnVeinCut(from, this); } } public override void Serialize(IGenericWriter writer) { base.Serialize(writer); writer.WriteEncodedInt(0); // version writer.Write(Cut); } public override void Deserialize(IGenericReader reader) { base.Deserialize(reader); var version = reader.ReadEncodedInt(); Cut = reader.ReadBool(); } } }