diff options
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index ee59e2821af..f89a0650729 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -750,20 +750,42 @@ bool SpellMgr::_isPositiveEffect(uint32 spellId, uint32 effIndex, bool deep) con if (spellproto->Attributes & SPELL_ATTR_NEGATIVE_1) return false; - switch(spellId) + switch (spellproto->SpellFamilyName) { - //case 37675: // Chaos Blast removed from mangos - case 34700: // Allergic Reaction - case 61987: // Avenging Wrath Marker - case 61988: // Divine Shield exclude aura - case 50524: // Runic Power Feed - return false; - case 12042: // Arcane Power - case 30877: // Tag Murloc - return true; + case SPELLFAMILY_GENERIC: + switch (spellId) + { + case 34700: // Allergic Reaction + case 61987: // Avenging Wrath Marker + case 61988: // Divine Shield exclude aura + return false; + case 30877: // Tag Murloc + return true; + default: + break; + } + break; + case SPELLFAMILY_MAGE: + // Amplify Magic, Dampen Magic + if (spellproto->SpellFamilyFlags[0] == 0x00002000) + return true; + break; + case SPELLFAMILY_PRIEST: + switch (spellId) + { + case 64844: // Divine Hymn + case 64904: // Hymn of Hope + case 47585: // Dispersion + return true; + default: + break; + } + break; + default: + break; } - switch(spellproto->Mechanic) + switch (spellproto->Mechanic) { case MECHANIC_IMMUNE_SHIELD: return true; |