Fix an overly strict check that was causing guardians to evade loop. Also make players properly enter combat when their pets are engaged by a creature.

(cherry picked from commit 052fc24315ace866ea1cf610e85df119b68100c9)
This commit is contained in:
treeston
2020-07-16 22:00:30 +02:00
committed by Carbenium
parent ced4820252
commit 09027e5ccc
2 changed files with 9 additions and 2 deletions
-1
View File
@@ -66,7 +66,6 @@ void PetAI::_stopAttack()
{
if (!me->IsAlive())
{
TC_LOG_DEBUG("misc", "Creature stoped attacking cuz his dead [%s]", me->GetGUID().ToString().c_str());
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MoveIdle();
me->CombatStop();
+9 -1
View File
@@ -5618,7 +5618,7 @@ void Unit::_removeAttacker(Unit* pAttacker)
Unit* Unit::getAttackerForHelper() const // If someone wants to help, who to give them
{
if (Unit* victim = GetVictim())
if (!IsControlledByPlayer() || IsInCombatWith(victim) || victim->IsInCombatWith(this))
if ((!IsPet() && !GetPlayerMovingMe()) || IsInCombatWith(victim) || victim->IsInCombatWith(this))
return victim;
if (!m_attackers.empty())
@@ -5725,6 +5725,14 @@ bool Unit::Attack(Unit* victim, bool meleeAttack)
if (victim->GetTypeId() == TYPEID_PLAYER)
victim->SetInCombatWith(this);
if (Unit* owner = victim->GetOwner())
{
AddThreat(owner, 0.0f);
SetInCombatWith(owner);
if (owner->GetTypeId() == TYPEID_PLAYER)
owner->SetInCombatWith(this);
}
creature->SendAIReaction(AI_REACTION_HOSTILE);
creature->CallAssistance();