mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 08:28:32 +01:00
@@ -71,6 +71,8 @@ void PetAI::_stopAttack()
|
||||
}
|
||||
|
||||
me->AttackStop();
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->SendMeleeAttackStop(); // Should stop pet's attack button from flashing
|
||||
me->GetCharmInfo()->SetIsCommandAttack(false);
|
||||
HandleReturnMovement();
|
||||
}
|
||||
@@ -89,7 +91,8 @@ void PetAI::UpdateAI(const uint32 diff)
|
||||
m_updateAlliesTimer -= diff;
|
||||
|
||||
// me->getVictim() can't be used for check in case stop fighting, me->getVictim() clear at Unit death etc.
|
||||
if (me->getVictim())
|
||||
// Must also check if victim is alive
|
||||
if (me->getVictim() && me->getVictim()->isAlive())
|
||||
{
|
||||
// is only necessary to stop casting, the pet must not exit combat
|
||||
if (me->getVictim()->HasBreakableByDamageCrowdControlAura(me))
|
||||
@@ -121,10 +124,16 @@ void PetAI::UpdateAI(const uint32 diff)
|
||||
if (nextTarget)
|
||||
AttackStart(nextTarget);
|
||||
else
|
||||
{
|
||||
me->GetCharmInfo()->SetIsCommandAttack(false);
|
||||
HandleReturnMovement();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
me->GetCharmInfo()->SetIsCommandAttack(false);
|
||||
HandleReturnMovement();
|
||||
}
|
||||
}
|
||||
else if (owner && !me->HasUnitState(UNIT_STATE_FOLLOW)) // no charm info and no victim
|
||||
HandleReturnMovement();
|
||||
@@ -301,7 +310,7 @@ void PetAI::KilledUnit(Unit* victim)
|
||||
// Can't use _stopAttack() because that activates movement handlers and ignores
|
||||
// next target selection
|
||||
me->AttackStop();
|
||||
me->GetCharmInfo()->SetIsCommandAttack(false);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->SendMeleeAttackStop(); // Stops the pet's 'Attack' button from flashing
|
||||
|
||||
Unit* nextTarget = SelectNextTarget();
|
||||
@@ -309,7 +318,10 @@ void PetAI::KilledUnit(Unit* victim)
|
||||
if (nextTarget)
|
||||
AttackStart(nextTarget);
|
||||
else
|
||||
{
|
||||
me->GetCharmInfo()->SetIsCommandAttack(false);
|
||||
HandleReturnMovement(); // Return
|
||||
}
|
||||
}
|
||||
|
||||
void PetAI::AttackStart(Unit* target)
|
||||
|
||||
@@ -32,8 +32,6 @@ class PetAI : public CreatureAI
|
||||
explicit PetAI(Creature* c);
|
||||
|
||||
void EnterEvadeMode();
|
||||
void JustDied(Unit* /*who*/) { _stopAttack(); }
|
||||
|
||||
void UpdateAI(const uint32);
|
||||
static int Permissible(const Creature*);
|
||||
|
||||
|
||||
@@ -2121,8 +2121,6 @@ class npc_shadowfiend : public CreatureScript
|
||||
if (Unit* owner = me->ToTempSummon()->GetSummoner())
|
||||
if (owner->HasAura(GLYPH_OF_SHADOWFIEND))
|
||||
owner->CastSpell(owner, GLYPH_OF_SHADOWFIEND_MANA, true);
|
||||
|
||||
PetAI::JustDied(killer);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user