context: // Created by Script Creator
  
  using System;
  using Server.Items;
  
  namespace Server.Mobiles
  
                {
                [CorpseName( " corpse of Creed" )]
                public class VictorCreed: BaseCreature
                {
  				private Timer m_Timer;
                                   [Constructable]
                                      public VictorCreed() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
                              {
                                                 Name = "Victor Creed";
  					                  Body = 400;
  						         Female = false; 
  						        Hue = 33775;
  						       Title = "The Master Assassin";
                                                 //Body = 149; // Uncomment these lines and input values
                                                 //BaseSoundID = 0x4B0; // To use your own custom body and sound.
                                                 SetStr( 3500 );
                                                 SetDex( 2500 );
                                                 SetInt( 4500 );
                                                 SetHits( 125000, 150000 );
                                                 SetDamage( 45, 65 );
                                                 SetDamageType( ResistanceType.Cold, 199 );
                                                 SetDamageType( ResistanceType.Fire, 199 );
                                                 SetDamageType( ResistanceType.Energy, 199 );
                                                 SetDamageType( ResistanceType.Poison, 199 );
  
                                                 SetResistance( ResistanceType.Physical, 60 );
                                                 SetResistance( ResistanceType.Cold, 90 );
                                                 SetResistance( ResistanceType.Fire, 90 );
                                                 SetResistance( ResistanceType.Energy, 90 );
                                                 SetResistance( ResistanceType.Poison, 90 );
  
  			SetSkill( SkillName.EvalInt, 320.1, 330.0 );
  			SetSkill( SkillName.Magery, 290.1, 300.0 );
  			SetSkill( SkillName.Meditation, 200.1, 301.0 );
  			SetSkill( SkillName.Poisoning, 400.1, 601.0 );
  			SetSkill( SkillName.MagicResist, 575.2, 600.0 );
  			SetSkill( SkillName.Tactics, 690.1, 800.0 );
  			SetSkill( SkillName.Wrestling, 675.1, 800.0 );
  			SetSkill( SkillName.Swords, 375.1, 400.0 );
  			SetSkill( SkillName.Anatomy, 575.1, 600.0 );
  			SetSkill( SkillName.Parry, 775.1, 800.0 );
  
  
  			m_Timer = new TeleportTimer( this );
  			m_Timer.Start();
  
  
  
              Fame = 15000;
              Karma = -15000;
              VirtualArmor = 65;
  
  			PackGold( 11120, 11130 );
  
  
  
  			Item HakamaShita = new HakamaShita(); 
  			HakamaShita.Movable = false;
  			HakamaShita.Hue = 1109; 
  			AddItem( HakamaShita );
  
  			Item TattsukeHakama = new TattsukeHakama(); 
  			TattsukeHakama.Movable = false;
  			TattsukeHakama.Hue = 1109; 
  			AddItem( TattsukeHakama );
  
  			Item Bandana = new Bandana(); 
  			Bandana.Movable = false;
  			Bandana.Hue = 1109; 
  			AddItem( Bandana );
  
  			Item SamuraiTabi = new SamuraiTabi(); 
  			SamuraiTabi.Movable = false;
  			SamuraiTabi.Hue = 1109; 
  			AddItem( SamuraiTabi );
  
  			Item NeptuneShirt = new NeptuneShirt(); 
  			NeptuneShirt.Movable = false;
  			NeptuneShirt.Hue = 1109; 
  			AddItem( NeptuneShirt );
  
  
  
  
  
                              }
                                   public override void GenerateLoot()
  		{
  			switch ( Utility.Random( 5 ))
  			{
  				case 0: PackItem( new AssassinStaff() ); break;
  				
  
  				
  		 }
  		}
  		
  		        public override bool HasBreath{ get{ return true ; } }
  				public override int BreathFireDamage{ get{ return 11; } }
  				public override int BreathColdDamage{ get{ return 11; } }
  //                public override bool IsScaryToPets{ get{ return true; } }
  				public override bool AutoDispel{ get{ return true; } }
                  public override bool BardImmune{ get{ return true; } }
                  public override bool Unprovokable{ get{ return true; } }
                  public override Poison HitPoison{ get{ return Poison. Lethal ; } }
                  public override bool AlwaysMurderer{ get{ return true; } }
  //				public override bool IsScaredOfScaryThings{ get{ return false; } }
  
  
  
  
  
  
  		public override void AlterMeleeDamageFrom( Mobile from, ref int damage )
  		{
  			if ( from is BaseCreature )
  			{
  				BaseCreature bc = (BaseCreature)from;
  
  				if ( bc.Controlled || bc.BardTarget == this )
  					damage = 0; // Immune to pets and provoked creatures
  			}
  		}
  		private class TeleportTimer : Timer
  		{
  			private Mobile m_Owner;
  
  			private static int[] m_Offsets = new int[]
  			{
  				-1, -1,
  				-1,  0,
  				-1,  1,
  				0, -1,
  				0,  1,
  				1, -1,
  				1,  0,
  				1,  1
  			};
  
  			public TeleportTimer( Mobile owner ) : base( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 1.1 ) )
  			{
  				m_Owner = owner;
  			}
  
  			protected override void OnTick()
  			{
  				if ( m_Owner.Deleted )
  				{
  					Stop();
  					return;
  				}
  
  				Map map = m_Owner.Map;
  
  				if ( map == null )
  					return;
  
  				if ( 0.5 < Utility.RandomDouble() )
  					return;
  
  				Mobile toTeleport = null;
  
  				foreach ( Mobile m in m_Owner.GetMobilesInRange( 16 ) )
  				{
  					if ( m != m_Owner && m.Player && m_Owner.CanBeHarmful( m ) && m_Owner.CanSee( m ) )
  					{
  						toTeleport = m;
  						break;
  					}
  				}
  
  				if ( toTeleport != null )
  				{
  					int offset = Utility.Random( 8 ) * 2;
  
  					Point3D to = m_Owner.Location;
  
  					for ( int i = 0; i < m_Offsets.Length; i += 2 )
  					{
  						int x = m_Owner.X + m_Offsets[(offset + i) % m_Offsets.Length];
  						int y = m_Owner.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length];
  
  						if ( map.CanSpawnMobile( x, y, m_Owner.Z ) )
  						{
  							to = new Point3D( x, y, m_Owner.Z );
  							break;
  						}
  						else
  						{
  							int z = map.GetAverageZ( x, y );
  
  							if ( map.CanSpawnMobile( x, y, z ) )
  							{
  
gt: 								to = new Point3D( x, y, z );