mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 17:05:44 +01:00
Allow state/effect immunities ignore whole spell when one effect is immuned
(Fixes getting part of CC auras with some immunities) --HG-- branch : trunk
This commit is contained in:
@@ -10653,6 +10653,14 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo)
|
||||
if (itr->type == spellInfo->Mechanic)
|
||||
return true;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (spellInfo->Id != 42292 && spellInfo->Id !=59752)
|
||||
{
|
||||
@@ -10667,7 +10675,7 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Unit::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index) const
|
||||
bool Unit::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index, bool checkMechanic) const
|
||||
{
|
||||
if (!spellInfo)
|
||||
return false;
|
||||
@@ -10678,12 +10686,15 @@ bool Unit::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index) con
|
||||
if (itr->type == effect)
|
||||
return true;
|
||||
|
||||
if (uint32 mechanic = spellInfo->EffectMechanic[index])
|
||||
if (checkMechanic)
|
||||
{
|
||||
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 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;
|
||||
}
|
||||
}
|
||||
|
||||
if (uint32 aura = spellInfo->EffectApplyAuraName[index])
|
||||
|
||||
Reference in New Issue
Block a user