diff options
-rw-r--r-- | src/server/game/Spells/SpellScript.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Spells/SpellScript.h | 2 |
2 files changed, 4 insertions, 7 deletions
diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp index f8eb76085ab..d541c5f0a46 100644 --- a/src/server/game/Spells/SpellScript.cpp +++ b/src/server/game/Spells/SpellScript.cpp @@ -623,17 +623,14 @@ bool SpellScript::IsHitCrit() const } if (Unit* hitUnit = GetHitUnit()) { - auto itr = std::find_if(m_spell->m_UniqueTargetInfo.begin(), m_spell->m_UniqueTargetInfo.end(), [hitUnit](Spell::TargetInfo const& targetInfo) - { - return targetInfo.TargetGUID == hitUnit->GetGUID(); - }); + auto itr = std::ranges::find(m_spell->m_UniqueTargetInfo, hitUnit->GetGUID(), &Spell::TargetInfo::TargetGUID); ASSERT(itr != m_spell->m_UniqueTargetInfo.end()); return itr->IsCrit; } return false; } -Aura* SpellScript::GetHitAura(bool dynObjAura /*= false*/) const +Aura* SpellScript::GetHitAura(bool dynObjAura /*= false*/, bool withRemoved /*= false*/) const { if (!IsInTargetHook()) { @@ -645,7 +642,7 @@ Aura* SpellScript::GetHitAura(bool dynObjAura /*= false*/) const if (dynObjAura) aura = m_spell->_dynObjAura; - if (!aura || aura->IsRemoved()) + if (!aura || (aura->IsRemoved() && !withRemoved)) return nullptr; return aura; diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index ee962a29ec6..22b54191244 100644 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -1044,7 +1044,7 @@ public: bool IsHitCrit() const; Spell* GetSpell() const { return m_spell; } // returns current spell hit target aura - Aura* GetHitAura(bool dynObjAura = false) const; + Aura* GetHitAura(bool dynObjAura = false, bool withRemoved = false) const; // prevents applying aura on current spell hit target void PreventHitAura(); |