Server.Mobiles.BaseCreature.OnThink C# (CSharp) Method

OnThink() public method

public OnThink ( ) : void
return void
        public virtual void OnThink()
        {
            if ( EnableRummaging && CanRummageCorpses && !Summoned && !Controlled && DateTime.Now >= m_NextRummageTime )
            {
                double min, max;

                if ( ChanceToRummage > Utility.RandomDouble() && Rummage() )
                {
                    min = MinutesToNextRummageMin;
                    max = MinutesToNextRummageMax;
                }
                else
                {
                    min = MinutesToNextChanceMin;
                    max = MinutesToNextChanceMax;
                }

                double delay = min + (Utility.RandomDouble() * (max - min));
                m_NextRummageTime = DateTime.Now + TimeSpan.FromMinutes( delay );
            }

            if ( CanBreath && DateTime.Now >= m_NextBreathTime ) // tested: controlled dragons do breath fire, what about summoned skeletal dragons?
            {
                Mobile target = this.Combatant;

                if( target != null && target.Alive && !target.IsDeadBondedPet && CanBeHarmful( target ) && target.Map == this.Map && !IsDeadBondedPet && target.InRange( this, BreathRange ) && InLOS( target ) && !BardPacified )
                {
                    if( ( DateTime.Now - m_NextBreathTime ) < TimeSpan.FromSeconds( 30 ) )
                    {
                        BreathStart( target );
                    }

                    m_NextBreathTime = DateTime.Now + TimeSpan.FromSeconds( BreathMinDelay + ( Utility.RandomDouble() * BreathMaxDelay ) );
                }
            }

            if ( ( CanHeal || CanHealOwner ) && Alive && !IsHealing && !BardPacified )
            {
                Mobile owner = this.ControlMaster;

                if ( owner != null && CanHealOwner && DateTime.Now >= m_NextHealOwnerTime && CanBeBeneficial( owner, true, true ) && owner.Map == this.Map && InRange( owner, HealStartRange ) && InLOS( owner ) && owner.Hits < HealOwnerTrigger * owner.HitsMax )
                {
                    HealStart( owner );

                    m_NextHealOwnerTime = DateTime.Now + TimeSpan.FromSeconds( HealOwnerInterval );
                }
                else if ( CanHeal && DateTime.Now >= m_NextHealTime && CanBeBeneficial( this ) && ( Hits < HealTrigger * HitsMax || Poisoned ) )
                {
                    HealStart( this );

                    m_NextHealTime = DateTime.Now + TimeSpan.FromSeconds( HealInterval );
                }
            }
        }
BaseCreature