*Fix the behavior of mob assistance.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-08-27 13:54:57 -05:00
parent 72c18a7354
commit d91903e5b1
2 changed files with 14 additions and 7 deletions

View File

@@ -1706,8 +1706,16 @@ bool Creature::canStartAttack(Unit const* who, bool force) const
// TODO: should switch to range attack
return false;
if(!force && (IsNeutralToAll() || !IsWithinDistInMap(who, GetAttackDistance(who) + m_CombatDistance)))
return false;
if(!force)
{
if(who->isInCombat())
if(Unit *victim = who->getAttackerForHelper())
if(IsWithinDistInMap(victim, sWorld.getConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS)))
force = true;
if(!force && (IsNeutralToAll() || !IsWithinDistInMap(who, GetAttackDistance(who) + m_CombatDistance)))
return false;
}
if(!canCreatureAttack(who, force))
return false;

View File

@@ -110,11 +110,10 @@ void CreatureAI::MoveInLineOfSight(Unit *who)
if(me->canStartAttack(who, false))
AttackStart(who);
else if(who->getVictim() && me->IsFriendlyTo(who)
&& me->IsWithinDistInMap(who, sWorld.getConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS))
//&& me->canStartAttack(who->getVictim(), true))
&& me->canStartAttack(who->getVictim(), false)) // TODO: if we use true, it will not attack it when it arrives
me->GetMotionMaster()->MoveChase(who->getVictim());
//else if(who->getVictim() && me->IsFriendlyTo(who)
// && me->IsWithinDistInMap(who, sWorld.getConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS))
// && me->canStartAttack(who->getVictim(), true)) // TODO: if we use true, it will not attack it when it arrives
// me->GetMotionMaster()->MoveChase(who->getVictim());
}
void CreatureAI::SelectNearestTarget(Unit *who)