Merge pull request #15501 from Treeston/3.3.5-proximitycombat

Creature/SmartAI: Fix creature aggression behavior
This commit is contained in:
Shauren committed 2015-10-10 11:41:39 +02:00
commit 15f2706aca
2 files changed
+11 -33

No files matched your search

+8
View File
@@ -29,7 +29,15 @@
void UnitAI::AttackStart(Unit* victim)
{
if (victim && me->Attack(victim, true))
{
// Clear distracted state on attacking
if (me->HasUnitState(UNIT_STATE_DISTRACTED))
{
me->ClearUnitState(UNIT_STATE_DISTRACTED);
me->GetMotionMaster()->Clear();
}
me->GetMotionMaster()->MoveChase(victim);
}
}
void UnitAI::AttackStartCaster(Unit* victim, float dist)
+3 -33
View File
@@ -453,45 +453,15 @@ void SmartAI::MoveInLineOfSight(Unit* who)
GetScript()->OnMoveInLineOfSight(who);
if (me->HasReactState(REACT_PASSIVE) || AssistPlayerInCombat(who))
if (AssistPlayerInCombat(who))
return;
if (!CanAIAttack(who))
return;
if (!me->CanStartAttack(who, false))
return;
if (me->IsHostileTo(who))
{
float fAttackRadius = me->GetAttackDistance(who);
if (me->IsWithinDistInMap(who, fAttackRadius) && me->IsWithinLOSInMap(who))
{
if (!me->GetVictim())
{
// Clear distracted state on combat
if (me->HasUnitState(UNIT_STATE_DISTRACTED))
{
me->ClearUnitState(UNIT_STATE_DISTRACTED);
me->GetMotionMaster()->Clear();
}
AttackStart(who);
}
else/* if (me->GetMap()->IsDungeon())*/
{
who->SetInCombatWith(me);
me->AddThreat(who, 0.0f);
}
}
}
CreatureAI::MoveInLineOfSight(who);
}
bool SmartAI::CanAIAttack(const Unit* /*who*/) const
{
if (me->GetReactState() == REACT_PASSIVE)
return false;
return true;
return !(me->HasReactState(REACT_PASSIVE));
}
bool SmartAI::AssistPlayerInCombat(Unit* who)