Show
Ignore:
Timestamp:
11/21/08 16:54:14 (17 years ago)
Author:
yumileroy
Message:

*Let creature search nearby target before enter evade mode
*Add function canStartAttack to reduce code in MoveInLineOfSight?
*Fix a bug that cancelling bind sight auras may crash the server

Original author: megamage
Date: 2008-11-21 10:07:11-06:00

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/GridNotifiers.h

    r266 r267  
    702702    { 
    703703        public: 
    704             explicit NearestHostileUnitInAttackDistanceCheck(Creature* creature, float dist = 0) : m_creature(creature)  
     704            explicit NearestHostileUnitInAttackDistanceCheck(Creature const* creature, float dist = 0) : m_creature(creature)  
    705705            { 
    706706                m_range = (dist == 0 ? 9999 : dist); 
     
    709709            bool operator()(Unit* u) 
    710710            { 
    711                 if(!u->isAlive() || !m_creature->IsHostileTo(u)) 
    712                     return false; 
    713  
    714                 float dist; 
    715                 if(m_force) dist = m_range; 
     711                // TODO: addthreat for every enemy in range? 
     712                if(!m_creature->IsWithinDistInMap(u, m_range)) 
     713                    return false; 
     714 
     715                if(m_force) 
     716                { 
     717                    if(!m_creature->canAttack(u)) 
     718                        return false; 
     719                } 
    716720                else 
    717721                { 
    718                     dist = m_creature->GetAttackDistance(u); 
    719                     if(dist > m_range) dist = m_range; 
     722                    if(!m_creature->canStartAttack(u)) 
     723                        return false; 
    720724                } 
    721                 if(!m_creature->IsWithinDistInMap(u, dist)) 
    722                     return false; 
    723  
    724                 if(!m_creature->canSeeOrDetect(u, true, false)) 
    725                     return false; 
    726725 
    727726                m_range = m_creature->GetDistance(u); 
     
    730729            float GetLastRange() const { return m_range; } 
    731730        private: 
    732             Creature* const m_creature; 
     731            Creature const *m_creature; 
    733732            float m_range; 
    734733            bool m_force;