From a5b0cee7793bbc44ae1db795f349de2edec7253c Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Sun, 22 Mar 2026 09:28:42 -0500 Subject: [PATCH] fix(Core/Spells): Enter combat at spell launch for delayed spells (#25167) Co-authored-by: blinkysc Co-authored-by: Treeston --- src/server/game/Spells/Spell.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a61cb33c7..a901be115 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2593,6 +2593,9 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) m_spellAura = nullptr; // Set aura to null for every target-make sure that pointer is not used for unit without aura applied + if (m_originalCaster && missInfo != SPELL_MISS_EVADE && !m_originalCaster->IsFriendlyTo(effectUnit) && (!m_spellInfo->IsPositive() || m_spellInfo->HasEffect(SPELL_EFFECT_DISPEL)) && (m_spellInfo->HasInitialAggro() || effectUnit->IsEngaged())) + effectUnit->SetInCombatWith(m_originalCaster); + PrepareScriptHitHandlers(); CallScriptBeforeHitHandlers(missInfo); @@ -8289,6 +8292,13 @@ void Spell::HandleLaunchPhase() } } + if (m_originalCaster && target.missCondition != SPELL_MISS_EVADE) + { + Unit* targetUnit = m_caster->GetGUID() == target.targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, target.targetGUID); + if (targetUnit && !m_originalCaster->IsFriendlyTo(targetUnit) && (!m_spellInfo->IsPositive() || m_spellInfo->HasEffect(SPELL_EFFECT_DISPEL)) && (m_spellInfo->HasInitialAggro() || targetUnit->IsEngaged())) + m_originalCaster->SetInCombatWith(targetUnit, true); + } + DoAllEffectOnLaunchTarget(target, multiplier); }