using Server; using System; using Server.Multis; using Server.Targeting; namespace Server.Items { public class BoatPaint : Item { public override int LabelNumber { get { return 1116236; } } public override double DefaultWeight { get { return 10.0; } } private bool m_Permanent; [CommandProperty(AccessLevel.GameMaster)] public bool Permanent { get { return m_Permanent; } set { m_Permanent = value; } } public BoatPaint(object hue) : this((int)hue) { } [Constructable] public BoatPaint(int hue) : base(4011) { Hue = hue; m_Permanent = false; } public override void OnDoubleClick(Mobile from) { if (IsChildOf(from.Backpack)) { from.Target = new InternalTarget(from, this); from.SendLocalizedMessage(1116613); //Select the main mast of the ship you wish to dye. } } private class InternalTarget : Target { private BoatPaint m_Paint; private Mobile m_From; public InternalTarget(Mobile from, BoatPaint paint) : base(5, false, TargetFlags.None) { m_From = from; m_Paint = paint; } protected override void OnTarget(Mobile from, object targeted) { if (targeted is IPoint3D) { IPoint3D pnt = (IPoint3D)targeted; BaseGalleon galleon = BaseGalleon.FindGalleonAt(pnt, from.Map); if (galleon == null || !galleon.Contains(from)) return; if (galleon.GetSecurityLevel(from) < SecurityLevel.Captain) from.SendMessage("You must be the captain to paint this ship!"); else if (galleon.Contains(pnt)/*&& boat.X == pnt.X && boat.Y == pnt.Y*/) { if (m_Paint.Permanent) { if (galleon.TryPermanentPaintBoat(from, m_Paint.Hue)) m_Paint.Delete(); } else { if (galleon.TryPaintBoat(from, m_Paint.Hue)) m_Paint.Delete(); } } else from.SendLocalizedMessage(1116612); //You must target the main mast of the ship you wish to dye. } } } public BoatPaint(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } public class PermanentBoatPaint : BoatPaint { public override int LabelNumber { get { return 1116768; } } [Constructable] public PermanentBoatPaint() : this(Utility.RandomMinMax(1954, 1997)) { } [Constructable] public PermanentBoatPaint(int hue) : base(hue) { Permanent = true; } public static PermanentBoatPaint DropRandom() { return new PermanentBoatPaint(Utility.RandomMinMax(1954, 1997)); } public PermanentBoatPaint(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } }