fix(Core/AI): improve npc_escortAI (#4980)

This commit is contained in:
Kitzunu
2021-03-26 14:27:00 +01:00
committed by GitHub
parent 877e394e04
commit 5a770d2945
2 changed files with 36 additions and 1 deletions

View File

@@ -62,19 +62,54 @@ void npc_escortAI::AttackStart(Unit* who)
bool npc_escortAI::AssistPlayerInCombat(Unit* who)
{
if (!who || !who->GetVictim())
{
return false;
}
if (me->HasReactState(REACT_PASSIVE))
{
return false;
}
//experimental (unknown) flag not present
if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPE_FLAG_CAN_ASSIST))
{
return false;
}
//not a player
if (!who->GetVictim()->GetCharmerOrOwnerPlayerOrPlayerItself())
{
return false;
}
if (!who->isInAccessiblePlaceFor(me))
{
return false;
}
if (!CanAIAttack(who))
{
return false;
}
// we cannot attack in evade mode
if (me->IsInEvadeMode())
{
return false;
}
// or if enemy is in evade mode
if (who->GetTypeId() == TYPEID_UNIT && who->ToCreature()->IsInEvadeMode())
{
return false;
}
//never attack friendly
if (!me->IsValidAttackTarget(who))
{
return false;
}
//too far away and no free sight?
if (me->IsWithinDistInMap(who, GetMaxPlayerDistance()) && me->IsWithinLOSInMap(who))

View File

@@ -9,7 +9,7 @@
#include "ScriptSystem.h"
#include "ScriptedCreature.h"
#define DEFAULT_MAX_PLAYER_DISTANCE 50
#define DEFAULT_MAX_PLAYER_DISTANCE 100
struct Escort_Waypoint
{