Exemplo n.º 1
0
        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();
        }
		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();
		}