context: using Server;
  using System;
  
  namespace Server.Items
  {
  	public class AncientFarmersKasa : Kasa
  	{
  		public override int LabelNumber{ get{ return 1070922; } } // Ancient Farmer's Kasa
  		public override int BaseColdResistance { get { return 19; } }
  
  		public override int InitMinHits{ get{ return 255; } }
  		public override int InitMaxHits{ get { return 255; } }
  
  		[Constructable]
  		public AncientFarmersKasa() : base()
  		{
  			Attributes.BonusStr = 5;
  			Attributes.BonusStam = 5;
  			Attributes.RegenStam = 5;
  
  			SkillBonuses.SetValues( 0, SkillName.AnimalLore, 5.0 );
  		}
  
  		public AncientFarmersKasa( Serial serial ) : base( serial )
  		{
  		}
  
  		public override void Serialize( GenericWriter writer )
  		{
  			base.Serialize( writer );
  
  			writer.Write( (int) 2 );
  		}
  		
  		public override void Deserialize(GenericReader reader)
  		{
  			base.Deserialize( reader );
  
  			int version = reader.ReadInt();
  
  			if ( version <= 1 )
  			{
  				MaxHitPoints = 255;
  				HitPoints = 255;
  			}
  
  			if( version == 0 )
  				SkillBonuses.SetValues( 0, SkillName.AnimalLore, 5.0 );
  		}
  	}
  
  	public class AncientSamuraiDo : PlateDo 
  	{
  		public override int LabelNumber { get { return 1070926; } } // Ancient Samurai Do
  
  		public override int BasePhysicalResistance { get { return 15; } }
  		public override int BaseFireResistance { get { return 12; } }
  		public override int BaseColdResistance { get { return 10; } }
  		public override int BasePoisonResistance { get { return 11; } }
  		public override int BaseEnergyResistance { get { return 8; } }
  
  		[Constructable]
  		public AncientSamuraiDo() : base()
  		{
  			ArmorAttributes.LowerStatReq = 100;
  			ArmorAttributes.MageArmor = 1;
  			SkillBonuses.SetValues( 0, SkillName.Parry, 10.0 );
  		}
  
  		public AncientSamuraiDo( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class ArmsOfTacticalExcellence : LeatherHiroSode
  	{
  		public override int LabelNumber { get { return 1070921; } } // Arms of Tactical Excellence
  
  		public override int BaseFireResistance { get { return 9; } }
  		public override int BaseColdResistance { get { return 13; } }
  		public override int BasePoisonResistance { get { return 8; } }
  
  		[Constructable]
  		public ArmsOfTacticalExcellence() : base()
  		{
  			Attributes.BonusDex = 5;
  			SkillBonuses.SetValues( 0, SkillName.Tactics, 12.0 );
  		}
  
  		public ArmsOfTacticalExcellence( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class BlackLotusHood : ClothNinjaHood
  	{
  		public override int LabelNumber { get { return 1070919; } } // Black Lotus Hood
  
  		public override int BasePhysicalResistance { get { return 0; } }
  		public override int BaseFireResistance { get { return 11; } }
  		public override int BaseColdResistance { get { return 15; } }
  		public override int BasePoisonResistance { get { return 11; } }
  		public override int BaseEnergyResistance { get { return 11; } }
  
  		public override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  
  		[Constructable]
  		public BlackLotusHood() : base()
  		{
  			Attributes.LowerManaCost = 6;
  			Attributes.AttackChance = 6;
  			ClothingAttributes.SelfRepair = 5;
  		}
  
  		public BlackLotusHood( Serial serial ) : base( serial )
  		{
  		}
  
  		public override void Serialize( GenericWriter writer )
  		{
  			base.Serialize( writer );
  
  			writer.Write( (int)1 );
  		}
  
  		public override void Deserialize( GenericReader reader )
  		{
  			base.Deserialize( reader );
  
  			int version = reader.ReadInt();
  
  			if ( version == 0 )
  			{
  				MaxHitPoints = 255;
  				HitPoints = 255;
  			}
  		}
  	}
  
  	public class DaimyosHelm : PlateBattleKabuto
  	{
  		public override int LabelNumber { get { return 1070920; } } // Daimyo's Helm
  
  		public override int BaseColdResistance { get { return 10; } }
  
  		[Constructable]
  		public DaimyosHelm() : base()
  		{
  			ArmorAttributes.LowerStatReq = 100;
  			ArmorAttributes.MageArmor = 1;
  			ArmorAttributes.SelfRepair = 3;
  			Attributes.WeaponSpeed = 10;
  		}
  
  		public DaimyosHelm( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class DemonForks : Sai
  	{
  		public override int LabelNumber{ get{ return 1070917; } } // Demon Forks
  
  		[Constructable]
  		public DemonForks() : base()
  		{
  			WeaponAttributes.ResistFireBonus = 10;
  			WeaponAttributes.ResistPoisonBonus = 10;
  
  			Attributes.ReflectPhysical = 10;
  			Attributes.WeaponDamage = 35;
  			Attributes.DefendChance = 10;
  		}
  
  		public DemonForks( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class DragonNunchaku : Nunchaku
  	{
  		public override int LabelNumber{ get{ return 1070914; } } // Dragon Nunchaku
  
  		[Constructable]
  		public DragonNunchaku() : base()
  		{
  			WeaponAttributes.ResistFireBonus = 5;
  			WeaponAttributes.SelfRepair = 3;
  			WeaponAttributes.HitFireball = 50;
  
  			Attributes.WeaponDamage = 40;
  			Attributes.WeaponSpeed = 20;
  		}
  
  		public DragonNunchaku( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class Exiler : Tetsubo
  	{
  		public override int LabelNumber{ get{ return 1070913; } } // Exiler
  
  		[Constructable]
  		public Exiler() : base()
  		{
  			WeaponAttributes.HitDispel = 33;
  			Slayer = SlayerName.Exorcism;
  
  			Attributes.WeaponDamage = 40;
  			Attributes.WeaponSpeed = 20;
  		}
  
  		public override void GetDamageTypes( Mobile wielder, out int phys, out int fire, out int cold, out int pois, out int nrgy )
  		{
  			phys = fire = cold = pois = 0;
  
  			nrgy = 100;
  		}
  
  
  		public Exiler( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class GlovesOfTheSun : LeatherNinjaMitts
  	{
  		public override int LabelNumber { get { return 1070924; } } // Gloves of the Sun
  
  		public override int BaseFireResistance { get { return 24; } }
  
  		[Constructable]
  		public GlovesOfTheSun() : base()
  		{
  			Attributes.RegenHits = 2;
  			Attributes.NightSight = 1;
  			Attributes.LowerManaCost = 5;
  			Attributes.LowerRegCost = 18;
  		}
  
  		public GlovesOfTheSun( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class HanzosBow : Yumi
  	{
  		public override int LabelNumber { get { return 1070918; } } // Hanzo's Bow
  
  		[Constructable]
  		public HanzosBow() : base()
  		{
  			WeaponAttributes.HitLeechHits = 40;
  			WeaponAttributes.SelfRepair = 3;
  
  			Attributes.WeaponDamage = 50;
  
  			SkillBonuses.SetValues( 0, SkillName.Ninjitsu, 10 );
  		}
  
  		public HanzosBow( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class LegsOfStability : PlateSuneate
  	{
  		public override int LabelNumber { get { return 1070925; } } // Legs of Stability
  
  		public override int BasePhysicalResistance { get { return 20; } }
  		public override int BasePoisonResistance { get { return 18; } }
  
  		[Constructable]
  		public LegsOfStability() : base()
  		{
  			Attributes.BonusStam = 5;
  
  			ArmorAttributes.SelfRepair = 3;
  			ArmorAttributes.LowerStatReq = 100;
  			ArmorAttributes.MageArmor = 1;
  		}
  
  		public LegsOfStability( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class PeasantsBokuto : Bokuto
  	{
  		public override int LabelNumber { get { return 1070912; } } // Peasant's Bokuto
  
  		[Constructable]
  		public PeasantsBokuto() : base()
  		{
  			WeaponAttributes.SelfRepair = 3;
  			WeaponAttributes.HitLowerDefend = 30;
  
  			Attributes.WeaponDamage = 35;
  			Attributes.WeaponSpeed = 10;
  			Slayer = SlayerName.SnakesBane;
  		}
  
  		public PeasantsBokuto( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class PilferedDancerFans : Tessen
  	{
  		public override int LabelNumber { get { return 1070916; } } // Pilfered Dancer Fans
  
  		[Constructable]
  		public PilferedDancerFans() : base()
  		{
  			Attributes.WeaponDamage = 20;
  			Attributes.WeaponSpeed = 20;
  			Attributes.CastRecovery = 2;
  			Attributes.DefendChance = 5;
  			Attributes.SpellChanneling = 1;
  		}
  
  		public PilferedDancerFans( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class TheDestroyer : NoDachi
  	{
  		public override int LabelNumber { get { return 1070915; } } // The Destroyer
  
  		[Constructable]
  		public TheDestroyer() : base()
  		{
  			WeaponAttributes.HitLeechStam = 40;
  
  			Attributes.BonusStr = 6;
  			Attributes.AttackChance = 10;
  			Attributes.WeaponDamage = 50;
  		}
  
  		public TheDestroyer( 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 override int InitMinHits { get { return 255; } }
  		public override int InitMaxHits { get { return 255; } }
  	}
  
  	public class TomeOfEnlightenment : Spellbook
  	{
  		public override int LabelNumber { get { return 1070934; } } // Tome of Enlightenment
  
  		[Constructable]
  		public TomeOfEnlightenment() : base()
  		{
  			LootType = LootType.Regular;
  			Hue = 0x455;
  
  			Attributes.BonusInt = 5;
  			Attributes.SpellDamage = 10;
  			Attributes.CastSpeed = 1;
  		}
  
  		public TomeOfEnlightenment( 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();
  		}
  	}
  
  	//Non weapon/armor ones:
  
  	public class AncientUrn : Item
  	{
  		private static string[] m_Names = new string[]
  			{
  				"Akira",
  				"Avaniaga",
  				"Aya",
  				"Chie",
  				"Emiko",
  				"Fumiyo",
  				"Gennai",
  				"Gennosuke", 
  				"Genjo",
  				"Hamato",
  				"Harumi",
  				"Ikuyo",
  				"Juri",
  				"Kaori",
  				"Kaoru",
  				"Kiyomori",
  				"Mayako",
  				"Motoki",
  				"Musashi",
  				"Nami",
  				"Nobukazu",
  				"Roku",
  				"Romi",
  				"Ryo",
  				"Sanzo",
  				"Sakamae",
  				"Satoshi",
  				"Takamori",
  				"Takuro",
  				"Teruyo",
  				"Toshiro",
  				"Yago",
  				"Yeijiro",
  				"Yoshi",
  				"Zeshin"
  			};
  
  		public static string[] Names { get { return m_Names; } }
  
  		private string m_UrnName;
  
  		[CommandProperty( AccessLevel.GameMaster )]
  		public string UrnName
  		{
  			get { return m_UrnName; }
  			set { m_UrnName = value; }
  		}
  
  		public override int LabelNumber { get { return 1071014; } } // Ancient Urn
  
  		[Constructable]
  		public AncientUrn( string urnName ) : base( 0x241D )
  		{
  			m_UrnName = urnName;
  			Weight = 1.0;
  		}
  
  		[Constructable]
  		public AncientUrn() : this( m_Names[Utility.Random( m_Names.Length )] )
  		{
  		}
  
  		public AncientUrn( Serial serial ) : base( serial )
  		{
  		}
  
  		public override void Serialize( GenericWriter writer )
  		{
  			base.Serialize( writer );
  
  			writer.Write( (int)0 );
  			writer.Write( m_UrnName );
  		}
  
  		public override void Deserialize( GenericReader reader )
  		{
  			base.Deserialize( reader );
  
  			int version = reader.ReadInt();
  			m_UrnName = reader.ReadString();
  
  			Utility.Intern( ref m_UrnName );
  		}
  
  		public override void AddNameProperty( ObjectPropertyList list )
  		{
  			list.Add( 1070935, m_UrnName ); // Ancient Urn of ~1_name~
  		}
  
  		public override void OnSingleClick( Mobile from )
  		{
  			LabelTo( from, 1070935, m_UrnName ); // Ancient Urn of ~1_name~
  		}
  
  	}
  
  	public class HonorableSwords : Item
  	{
  		private string m_SwordsName;
  
  
gt: 		[CommandProperty( AccessLevel.GameMaster )]