aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellInfo.cpp
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2016-12-13 15:15:20 -0300
committerDoctorKraft <DoctorKraft@users.noreply.github.com>2018-03-12 16:39:40 +0100
commit536ae257c903decaa9e3528a03f1c87f08efa38e (patch)
treeb5177417359e24bf1f436cbe8f722b216bc10053 /src/server/game/Spells/SpellInfo.cpp
parent0449d3a83657436a3379c62d11259f3c83b4a431 (diff)
Core/Spell: partial revert of SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE immunity handling
- Bonus: without breaking Banish... yay! Closes #18370 (cherry picked from commit 560c882b364630bf95e1c6859ceaa6fa3cb6ed2e)
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r--src/server/game/Spells/SpellInfo.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 1cbf291c164..9d51d735e38 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -1615,6 +1615,17 @@ bool SpellInfo::CanPierceImmuneAura(SpellInfo const* auraSpellInfo) const
if (HasAttribute(SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY))
return true;
+ // these spells (Cyclone for example) can pierce all...
+ if (HasAttribute(SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE) || HasAttribute(SPELL_ATTR2_UNAFFECTED_BY_AURA_SCHOOL_IMMUNE))
+ {
+ // ...but not these (Divine shield, Ice block, Cyclone and Banish for example)
+ if (!auraSpellInfo ||
+ (auraSpellInfo->Mechanic != MECHANIC_IMMUNE_SHIELD &&
+ auraSpellInfo->Mechanic != MECHANIC_INVULNERABILITY &&
+ (auraSpellInfo->Mechanic != MECHANIC_BANISH || IsRankOf(auraSpellInfo)))) // Banish shouldn't be immune to itself
+ return true;
+ }
+
// Dispels other auras on immunity, check if this spell makes the unit immune to aura
if (HasAttribute(SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY) && CanSpellProvideImmunityAgainstAura(auraSpellInfo))
return true;