using System; using Server.Mobiles; using Server.Targeting; namespace Server.Items { public class OilCloth : Item, IScissorable, IDyable { public override int LabelNumber { get { return 1041498; } }// oil cloth public override double DefaultWeight { get { return 1.0; } } [Constructable] public OilCloth() : base(0x175D) { Hue = 2001; } public bool Dye(Mobile from, DyeTub sender) { if (Deleted) return false; Hue = sender.DyedHue; return true; } public bool Scissor(Mobile from, Scissors scissors) { if (Deleted || !from.CanSee(this)) return false; base.ScissorHelper(from, new Bandage(), 1); return true; } public override void OnDoubleClick(Mobile from) { if (IsChildOf(from.Backpack)) { from.BeginTarget(-1, false, TargetFlags.None, new TargetCallback(OnTarget)); from.SendLocalizedMessage(1005424); // Select the weapon or armor you wish to use the cloth on. } else { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } } public void OnTarget(Mobile from, object obj) { // TODO: Need details on how oil cloths should get consumed here if (!IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } else if (obj is Item && ((Item)obj).RootParent != from) { from.SendLocalizedMessage(1005425); // You may only wipe down items you are holding or carrying. } else if (obj is BaseWeapon) { BaseWeapon weapon = (BaseWeapon)obj; if (weapon.Poison == null || weapon.PoisonCharges <= 0) { from.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, 1005422); // Hmmmm... this does not need to be cleaned. } else { if (weapon.PoisonCharges < 2) weapon.PoisonCharges = 0; else weapon.PoisonCharges -= 2; if (weapon.PoisonCharges > 0) from.SendLocalizedMessage(1005423); // You have removed some of the caustic substance, but not all. else from.SendLocalizedMessage(1010497); // You have cleaned the item. } } else if (obj == from && obj is PlayerMobile) { PlayerMobile pm = (PlayerMobile)obj; if (pm.BodyMod == 183 || pm.BodyMod == 184) { pm.SavagePaintExpiration = TimeSpan.Zero; pm.BodyMod = 0; pm.HueMod = -1; from.SendLocalizedMessage(1040006); // You wipe away all of your body paint. Consume(); } else { from.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, 1005422); // Hmmmm... this does not need to be cleaned. } } #region Firebomb else if (obj is BaseBeverage) { BaseBeverage beverage = (BaseBeverage)obj; if (beverage.Content == BeverageType.Liquor) { Firebomb bomb = new Firebomb(beverage.ItemID); bomb.Name = beverage.Name; beverage.ReplaceWith(bomb); from.SendLocalizedMessage(1060580); // You prepare a firebomb. Consume(); } } else if (obj is Meteorite && !((Meteorite)obj).Polished) { ((Meteorite)obj).TryPolish(from); } else if (obj is Firebomb) { from.SendLocalizedMessage(1060579); // That is already a firebomb! } #endregion else { from.SendLocalizedMessage(1005426); // The cloth will not work on that. } } public OilCloth(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(); } } }