aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston <none@none>2009-07-30 14:13:19 +0200
committerQAston <none@none>2009-07-30 14:13:19 +0200
commit2095daca858d75348e3e111cf874bb3e9e4de9f3 (patch)
tree8a45c36afc3a86883f8cd92aff82f9f12930b412
parent74d6ea4efb8a325bfabd9075403117be7a0f5e0d (diff)
*Fix exploit with preventing creature enter evade mode.
--HG-- branch : trunk
-rw-r--r--src/game/Unit.cpp13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 8002a5cf078..f48d23bd3dd 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -11406,16 +11406,11 @@ Unit* Creature::SelectVictim()
// it in combat but attacker not make any damage and not enter to aggro radius to have record in threat list
// for example at owner command to pet attack some far away creature
// Note: creature not have targeted movement generator but have attacker in this case
- if(m_attackers.size() && CanHaveThreatList() && m_ThreatManager.isThreatListEmpty()) //there are some cases null target are always returned,so creature evade can not be called at all. such as pull creature at a distance beyond the attackdist to the attacker
- return NULL;
- /*if( GetMotionMaster()->GetCurrentMovementGeneratorType() != TARGETED_MOTION_TYPE )
+ for(AttackerSet::const_iterator itr = m_attackers.begin(); itr != m_attackers.end(); ++itr)
{
- for(AttackerSet::const_iterator itr = m_attackers.begin(); itr != m_attackers.end(); ++itr)
- {
- if( (*itr)->IsInMap(this) && canAttack(*itr) && (*itr)->isInAccessiblePlaceFor((Creature*)this) )
- return NULL;
- }
- }*/
+ if( (*itr)->IsInMap(this) && canAttack(*itr) && (*itr)->isInAccessiblePlaceFor((Creature*)this) && ((*itr)->GetTypeId() != TYPEID_PLAYER && (!((Creature*)(*itr))->HasSummonMask(SUMMON_MASK_CONTROLABLE_GUARDIAN))))
+ return NULL;
+ }
// search nearby enemy before enter evade mode
if(HasReactState(REACT_AGGRESSIVE))