/**********************************************************
RunUO 2.0 AoV C# script file
Official Age of Valor Script :: www.uovalor.com
Last modified by 
Filepath: scripts\_custom\engines\ML Peerless + misc areas\travesty\mobiles\BlackOrderHighExecutioner.cs
Lines of code: 122
***********************************************************/


using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;

namespace Server.Mobiles
{
	public class BlackOrderHighExecutioner : BaseCreature
	{

		[Constructable]
		public BlackOrderHighExecutioner() : base( AIType.AI_Super, FightMode.Closest, 10, 1, 0.2, 0.4 )
		{
			Name = "Black Order High Executioner of the Serpent Fang Sect";
			Hue = Utility.RandomSkinHue();

			if ( this.Female = Utility.RandomBool() )
			{
				Body = 0x191;
			}
			else
			{
				Body = 0x190;
			}
			
			Sai weapon = new Sai();
			
			JinBaori jinbaori = new JinBaori();
			jinbaori.Hue = 332;
			
			LightPlateJingasa lightplatejingasa = new LightPlateJingasa();
			lightplatejingasa.Hue = 697;
			
			FancyShirt fancyshirt = new FancyShirt();
			fancyshirt.Hue = 697;
			
			StuddedGloves studdedgloves = new StuddedGloves();
			studdedgloves.Hue = 332;
			
			StuddedMempo studdedmempo = new StuddedMempo();
			studdedmempo.Hue = 697;
			
			LeatherNinjaPants leatherninjapants = new LeatherNinjaPants();
			leatherninjapants.Hue = 697;
			
			ThighBoots thighboots = new ThighBoots();
			thighboots.Hue = 697;

			AddItem(weapon);
			AddItem(jinbaori);
			AddItem(lightplatejingasa);
			AddItem(fancyshirt);
			AddItem(studdedgloves);
			AddItem(studdedmempo);
			AddItem(leatherninjapants);
			AddItem(thighboots);

			SetStr( 426, 475 );
			SetDex( 231, 245 );
			SetInt( 201, 210 );

	        SetHits( 721, 800 );
			SetMana( 201, 210 );
			SetDamage( 17, 25 );

			SetResistance( ResistanceType.Physical, 55, 75 );
			SetResistance( ResistanceType.Fire, 50, 60 );
			SetResistance( ResistanceType.Cold, 25, 45 );
			SetResistance( ResistanceType.Poison, 55, 65 );
			SetResistance( ResistanceType.Energy, 35, 65 );

			SetSkill( SkillName.Anatomy, 105.0, 120.0 );
			SetSkill( SkillName.MagicResist, 80.0, 100.0 );
			SetSkill( SkillName.Tactics, 115.0, 130.0 );
			SetSkill( SkillName.Wrestling, 95.0, 120.0 );
			SetSkill( SkillName.Fencing, 120.0, 135.0 );
			SetSkill( SkillName.Ninjitsu, 120.0, 135.0 );
			SetSkill( SkillName.Bushido, 115.1, 125.0 );
			SetSkill( SkillName.Parry, 110.1, 125.0 );
			SetSkill( SkillName.Meditation, 90.1, 110.2 );
			SetSkill( SkillName.Focus, 100.1, 115.2 );
			
			Fame = 16000;
			Karma = -16000;

			Utility.AssignRandomHair( this );
		}

		public override void GenerateLoot()
		{
			AddLoot( LootPack.FilthyRich, 4 );
			AddLoot( LootPack.Rich, 3 );
			AddLoot( LootPack.Gems, 7 );
		}

		public override bool AlwaysMurderer{ get{ return true; } }

		public BlackOrderHighExecutioner( Serial serial ) : base( serial )
		{
		}
		
		public override void OnDamage( int amount, Mobile attacker, bool willKill ) 
		{
		
			if(attacker!=null)
			{
			int ReflectedDMG; 
			
			ReflectedDMG = (int)(amount * 0.5);
			AOS.Damage( attacker, this, ReflectedDMG, true, 0, 0, 0, 0, 0,0,100,false );
			}
			base.OnDamage(amount, attacker, willKill);	
		}
		
		public override Poison PoisonImmune{ get{ return Poison.Deadly; } }
		public override bool IsMLCreature { get { return true;} }
		public override bool Unprovokable{ get{ return true; } }
		public override bool Uncalmable{ get{ return true; } }
		public override bool ShowFameTitle{ get{ return false; } }
		
		public override void OnDeath( Container c )
		{
			if ( Utility.Random( 4 ) == 0 )
			{
			Item item;

				switch ( Utility.Random( 1 ))
				{
					default:
					case 1: item = new SerpentFangKey(); break;
				}

			c.DropItem( item );
			}
			base.OnDeath( c );
		}
		
		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.Write( (int) 0 ); // version
		}

		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
		}
	}
}