Index: src/game/Spell.cpp =================================================================== --- src/game/Spell.cpp (revision 5328) +++ src/game/Spell.cpp (working copy) @@ -3417,13 +3417,16 @@ //Check if the spell grants school or mechanic immunity. //We use bitmasks so the loop is done only once and not on every aura check below. - for(int i = 0;i < 3; i ++) - { - if(m_spellInfo->EffectApplyAuraName[i] == SPELL_AURA_SCHOOL_IMMUNITY) - school_immune |= m_spellInfo->EffectMiscValue[i]; - else if(m_spellInfo->EffectApplyAuraName[i] == SPELL_AURA_MECHANIC_IMMUNITY) - mechanic_immune |= 1 << m_spellInfo->EffectMiscValue[i]; - } + if ( m_spellInfo->AttributesEx & 0x8000LL ) + { + for(int i = 0;i < 3; i ++) + { + if(m_spellInfo->EffectApplyAuraName[i] == SPELL_AURA_SCHOOL_IMMUNITY) + school_immune |= m_spellInfo->EffectMiscValue[i]; + else if(m_spellInfo->EffectApplyAuraName[i] == SPELL_AURA_MECHANIC_IMMUNITY) + mechanic_immune |= 1 << m_spellInfo->EffectMiscValue[i]; + } + } //immune movement impairement and loss of control if(m_spellInfo->Id==(uint32)42292)mechanic_immune=0x9967da6; Index: src/game/SpellAuras.cpp =================================================================== --- src/game/SpellAuras.cpp (revision 5328) +++ src/game/SpellAuras.cpp (working copy) @@ -2793,7 +2793,7 @@ if(GetId()==42292) mechanic=0x9967da6; - if(apply) + if(apply && GetSpellProto()->AttributesEx & 0x8000LL) { Unit::AuraMap& Auras = m_target->GetAuras(); for(Unit::AuraMap::iterator iter = Auras.begin(), next; iter != Auras.end(); iter = next) @@ -2871,7 +2871,7 @@ void Aura::HandleAuraModStateImmunity(bool apply, bool Real) { - if(apply && Real) + if(apply && Real && GetSpellProto()->AttributesEx & 0x8000LL) { Unit::AuraList const& auraList = m_target->GetAurasByType(AuraType(m_modifier.m_miscvalue)); while(!auraList.empty()) @@ -2885,7 +2885,7 @@ { m_target->ApplySpellImmune(GetId(),IMMUNITY_SCHOOL,m_modifier.m_miscvalue,apply); - if(Real && apply) + if(Real && apply && GetSpellProto()->AttributesEx & 0x8000LL) { if(IsPositiveSpell(GetId())) //Only positive immunity removes auras {