From 4e01b95777f5f3ecb41c5d2d1cad6676cea466af Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 28 Jan 2023 10:57:52 +0100 Subject: [PATCH] =?UTF-8?q?fix(Core/Combat):=20Pets=20should=20put=20their?= =?UTF-8?q?=20owners=20in=20combat=20only=20on=20init=E2=80=A6=20(#14682)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Entities/Unit/Unit.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 42c95ed74..8e8ae2276 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1064,7 +1064,7 @@ uint32 Unit::DealDamage(Unit* attacker, Unit* victim, uint32 damage, CleanDamage if (attacker) { - if (spellProto && !victim->IsInCombatWith(attacker)) + if (spellProto && victim->CanHaveThreatList() && !victim->HasUnitState(UNIT_STATE_EVADE) && !victim->IsInCombatWith(attacker)) { victim->CombatStart(attacker, !(spellProto->AttributesEx3 & SPELL_ATTR3_SUPRESS_TARGET_PROCS)); } @@ -13585,14 +13585,19 @@ void Unit::CombatStart(Unit* victim, bool initialAggro) } } + bool alreadyInCombat = IsInCombat(); + SetInCombatWith(victim); victim->SetInCombatWith(this); // Xinef: If pet started combat - put owner in combat - if (Unit* owner = GetOwner()) + if (!alreadyInCombat && IsInCombat()) { - owner->SetInCombatWith(victim); - victim->SetInCombatWith(owner); + if (Unit* owner = GetOwner()) + { + owner->SetInCombatWith(victim); + victim->SetInCombatWith(owner); + } } }