rendered paste bodyIndex: 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
{