aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r--src/game/Unit.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 070cabbe563..915410430f3 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -10743,9 +10743,10 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo)
for (int i=0;i<3;++i)
{
// State/effect immunities applied by aura expect full spell immunity
- // However function also check for mechanic, so ignore that for now
- if (IsImmunedToSpellEffect(spellInfo, i, false))
- return true;
+ // Ignore effects with mechanic, they are supposed to be checked separately
+ if (!spellInfo->EffectMechanic[i])
+ if (IsImmunedToSpellEffect(spellInfo, i))
+ return true;
}
if (spellInfo->Id != 42292 && spellInfo->Id !=59752)
@@ -10761,7 +10762,7 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo)
return false;
}
-bool Unit::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index, bool checkMechanic) const
+bool Unit::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index) const
{
if (!spellInfo)
return false;
@@ -10772,15 +10773,12 @@ bool Unit::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index, boo
if (itr->type == effect)
return true;
- if (checkMechanic)
+ if (uint32 mechanic = spellInfo->EffectMechanic[index])
{
- if (uint32 mechanic = spellInfo->EffectMechanic[index])
- {
- SpellImmuneList const& mechanicList = m_spellImmune[IMMUNITY_MECHANIC];
- for (SpellImmuneList::const_iterator itr = mechanicList.begin(); itr != mechanicList.end(); ++itr)
- if (itr->type == spellInfo->EffectMechanic[index])
- return true;
- }
+ SpellImmuneList const& mechanicList = m_spellImmune[IMMUNITY_MECHANIC];
+ for (SpellImmuneList::const_iterator itr = mechanicList.begin(); itr != mechanicList.end(); ++itr)
+ if (itr->type == spellInfo->EffectMechanic[index])
+ return true;
}
if (uint32 aura = spellInfo->EffectApplyAuraName[index])