using System; using Server; using Server.Targeting; using Server.Items; namespace Server.Items { public class EnchantedArmorPolish : Item { private int m_Uses; [CommandProperty( AccessLevel.GameMaster )] public int Uses { get { return m_Uses; } set { m_Uses = value; InvalidateProperties(); } } [Constructable] public EnchantedArmorPolish() : base( 0xE28 ) { Name = "a tin of enchanted armor polish"; Hue = 1150; Weight = 1.0; m_Uses = 3; } public override void OnDoubleClick( Mobile from ) { if ( !IsChildOf( from.Backpack ) ) { from.SendLocalizedMessage( 1042001 ); return; } from.SendMessage( "Target the armor or shield you wish to flawlessly repair." ); from.Target = new InternalTarget( this ); } public override void OnSingleClick( Mobile from ) { base.OnSingleClick( from ); this.LabelTo( from, String.Format( "[Charges: {0}]", m_Uses ) ); } private class InternalTarget : Target { private EnchantedArmorPolish m_Polish; public InternalTarget( EnchantedArmorPolish polish ) : base( 1, false, TargetFlags.None ) { m_Polish = polish; } protected override void OnTarget( Mobile from, object targeted ) { if ( m_Polish.Deleted ) return; if ( !m_Polish.IsChildOf( from.Backpack ) ) { from.SendLocalizedMessage( 1042001 ); return; } if ( targeted is BaseArmor ) { BaseArmor armor = (BaseArmor)targeted; if ( armor.HitPoints >= armor.MaxHitPoints ) { from.SendMessage( 33, "That piece of armor is already in perfect condition." ); return; } armor.HitPoints = armor.MaxHitPoints; from.PlaySound( 0x55 ); from.SendMessage( 63, "You magically mend the armor, restoring it to maximum durability!" ); m_Polish.Uses--; if ( m_Polish.Uses <= 0 ) { from.SendMessage( 33, "You scrape the last of the polish from the tin and discard it." ); m_Polish.Delete(); } } else { from.SendMessage( 33, "This polish can only be used on armor and shields." ); } } } public EnchantedArmorPolish( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); // version writer.Write( (int) m_Uses ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Uses = reader.ReadInt(); } } }