diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2016-12-11 15:01:13 -0300 |
|---|---|---|
| committer | DoctorKraft <DoctorKraft@users.noreply.github.com> | 2018-03-12 16:39:37 +0100 |
| commit | f07a746321dce26381e3d14456ab22839ddc6861 (patch) | |
| tree | ade323a771374711adca9f1a6456f0ab6d079b31 /src/server/game/Spells/Spell.cpp | |
| parent | 1f2bb1d793090bc6bae7c6d43448ab7910c7bf2d (diff) | |
Core/Spell: improved immunity logic for dispels
(cherry picked from commit 01d272d6cb348c968c531620c341f760e50cb97b)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 9cf3e557581..0234b16fec0 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1223,7 +1223,7 @@ void Spell::SelectImplicitAreaTargets(SpellEffIndex effIndex, SpellImplicitTarge // find last added target for this effect for (std::vector<TargetInfo>::reverse_iterator ihit = m_UniqueTargetInfo.rbegin(); ihit != m_UniqueTargetInfo.rend(); ++ihit) { - if (ihit->effectMask & (1<<effIndex)) + if (ihit->effectMask & (1 << effIndex)) { referer = ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID); break; @@ -2135,7 +2135,7 @@ void Spell::AddUnitTarget(Unit* target, uint32 effectMask, bool checkIfValid /*= // Check for effect immune skip if immuned for (SpellEffectInfo const* effect : GetEffects()) - if (effect && target->IsImmunedToSpellEffect(m_spellInfo, effect->EffectIndex)) + if (effect && target->IsImmunedToSpellEffect(m_spellInfo, effect->EffectIndex, m_caster)) effectMask &= ~(1 << effect->EffectIndex); ObjectGuid targetGUID = target->GetGUID(); @@ -2611,14 +2611,14 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA return SPELL_MISS_EVADE; // For delayed spells immunity may be applied between missile launch and hit - check immunity for that case - if (m_spellInfo->Speed && unit->IsImmunedToSpell(m_spellInfo)) + if (m_spellInfo->Speed && unit->IsImmunedToSpell(m_spellInfo, m_caster)) return SPELL_MISS_IMMUNE; // disable effects to which unit is immune SpellMissInfo returnVal = SPELL_MISS_IMMUNE; for (SpellEffectInfo const* effect : GetEffects()) if (effect && (effectMask & (1 << effect->EffectIndex))) - if (unit->IsImmunedToSpellEffect(m_spellInfo, effect->EffectIndex)) + if (unit->IsImmunedToSpellEffect(m_spellInfo, effect->EffectIndex, m_caster)) effectMask &= ~(1 << effect->EffectIndex); if (!effectMask) |
