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);
            m_MasterActive = true;
            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();
        }