public void DoMaster()
		{
			Map map = this.Map;

			if ( map == null )
				return;

			int newSpawned = 25;

      		for ( int i = 0; i < newSpawned; ++i )
      		{
         		ShadowMinion spawn = new ShadowMinion();

		        spawn.Team = this.Team;
            		        spawn.Map = map;
		        bool validLocation = false;
		        Point3D loc = this.Location;

		        for ( int j = 0; !validLocation && j < 10; ++j )
		        {
			        int x = X + Utility.Random( 5 );
			        int y = Y + Utility.Random( 5 );
			        int z = map.GetAverageZ( x, y );

			        if ( validLocation = map.CanFit( x, y, this.Z, 16, false, false ) )
				        loc = new Point3D( x, y, Z );
			        else if ( validLocation = map.CanFit( x, y, z, 16, false, false ) )
				        loc = new Point3D( x, y, z );
		        }

				spawn.MoveToWorld( loc, map );
			}
			DarkMaster ethy = new DarkMaster();
			ethy.Hits = this.Hits;
			ethy.Int = this.Int - 5000;
			ethy.Hidden = true;
			ethy.Team = this.Team;
			ethy.Blessed = true;
			ethy.Freeze(TimeSpan.FromSeconds(30.0));
			ethy.MoveToWorld( this.Location, this.Map );
			this.Delete();
		}
		public override void OnThink()
		{
            		if (DoElementalChamp && DateTime.Now >= m_NextElementalChampAbility)
			{
				Mobile combatant = this.Combatant;

                		if (combatant != null && combatant.Map == this.Map && combatant.InRange(this, 15) && this.Blessed == false)
               	 		{
                   			m_NextElementalChampAbility = DateTime.Now + TimeSpan.FromSeconds(90);

                    			int ability = Utility.Random(2);

                    			switch (ability)
                    			{
                        			case 0: DoAtomicBomb(combatant, "Flee mortals or the eternal heat of the Core will burn your bodies!"); break;
                        			case 1: DoSummon(combatant, "My burning sons! Emerge from our fiery lair and vanquish these mortals!"); break;
                    			}
                		}
			}

            		if (DoEightLeech && DateTime.Now >= m_NextEightLeech)
			{
				Mobile combatant = this.Combatant;

				if ( combatant != null && combatant.Map == this.Map && combatant.InRange( this, 15 ) )
				{
					m_NextEightLeech = DateTime.Now + TimeSpan.FromMinutes( Utility.RandomMinMax( 4, 6 ) );

					int ability = Utility.Random( 3 );

					switch ( ability )
					{
						case 0: EightLeech( combatant, "Time to die, mortals!" ); break;
						case 1: EightLeech( combatant, "Come to me my prey!" ); break;
						case 2: EightLeech( combatant, "Now is the time of demise!" ); break;
					}
				}
			}

			if ( DoDarkMasterMorph )
			{
				if ( this.Int == 10000 && this.Hits < this.Int - 5000 )
				{
					Map map = this.Map;

					if ( map == null )
					return;

					int newSpawned = 25;

                    for ( int i = 0; i < newSpawned; ++i )
                    {
	                    ShadowMinion spawn = new ShadowMinion();

                        spawn.Team = this.Team;
                        spawn.Map = map;
                        bool validLocation = false;
                        Point3D loc = this.Location;

                        for ( int j = 0; !validLocation && j < 10; ++j )
                        {
                            int x = X + Utility.Random( 5 );
                            int y = Y + Utility.Random( 5 );
                            int z = map.GetAverageZ( x, y );

                            if ( validLocation = map.CanFit( x, y, this.Z, 16, false, false ) )
	                            loc = new Point3D( x, y, Z );
                            else if ( validLocation = map.CanFit( x, y, z, 16, false, false ) )
	                            loc = new Point3D( x, y, z );
                        }

                        spawn.MoveToWorld( loc, map );
					}
					EthyDarkMaster ethy = new EthyDarkMaster();
					ethy.Hits = 7500;
					ethy.Team = this.Team;
					ethy.Hidden = true;
					ethy.Blessed = true;
					ethy.Freeze(TimeSpan.FromSeconds(30.0));
					ethy.MoveToWorld( this.Location, this.Map );
					this.Delete();
				}

				else if ( this.Int != 5000 && this.Hits < this.Int - 5000 )
				{
					this.Hidden = true;
					this.Freeze(TimeSpan.FromSeconds(30.0));
					int ability = Utility.Random( 3 );

					if ( this.BodyValue == 400 )
					{
						switch ( ability )
						{
							case 0: DoEthyThar(); break;
							case 1: DoEthyBork(); break;
							case 2: DoEthyLich(); break;
						}
					} else if ( this.BodyValue == 0x3E ) {
						switch ( ability )
						{
							case 0: DoEthyThar(); break;
							case 1: DoMaster(); break;
							case 2: DoEthyLich(); break;
						}
					} else if ( this.BodyValue == 0xF ) {
						switch ( ability )
						{
							case 0: DoMaster(); break;
							case 1: DoEthyBork(); break;
							case 2: DoEthyLich(); break;
						}
					} else if ( this.BodyValue == 0x4F ) {
						switch ( ability )
						{
							case 0: DoEthyThar(); break;
							case 1: DoEthyBork(); break;
							case 2: DoMaster(); break;
						}
					}
				}
			}
			base.OnThink();
		}