diff options
author | QAston <none@none> | 2009-05-08 00:37:13 +0200 |
---|---|---|
committer | QAston <none@none> | 2009-05-08 00:37:13 +0200 |
commit | e8474f32911ace12cc5fe11421c74dc7945f0e20 (patch) | |
tree | dc0333144fc3e75729c789810719ebe980d5d9cf /src | |
parent | 51d4303d550cb1ac8bfef86b2b053b6e7c0a0b6f (diff) |
*Do not allow to cast cyclone on divine shielded target.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellMgr.cpp | 15 | ||||
-rw-r--r-- | src/game/Unit.cpp | 14 |
2 files changed, 17 insertions, 12 deletions
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index e0b346ce13e..87d5d844ba2 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -799,6 +799,21 @@ bool IsDispelableBySpell(SpellEntry const * dispelSpell, uint32 spellId, bool de else return false; } + else if (spellproto->Mechanic == MECHANIC_INVULNERABILITY) + { + if (dispelSpell->AttributesEx & SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE) + { + return true; + } + else + return false; + } + else + { + if ((dispelSpell->AttributesEx & SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE) + || (dispelSpell->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)) + return !def; + } return def; } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index d57ace725b1..67b15de5adb 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9449,13 +9449,8 @@ bool Unit::IsImmunedToDamage(SpellSchoolMask shoolMask) bool Unit::IsImmunedToDamage(SpellEntry const* spellInfo) { - if(spellInfo->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY) - return false; - uint32 shoolMask = GetSpellSchoolMask(spellInfo); - if(!(spellInfo->AttributesEx & - (SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE | SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)) // can remove immune (by dispell or immune it) - && spellInfo->Id != 42292) + if(spellInfo->Id != 42292 && spellInfo->Id !=59752) { //If m_immuneToSchool type contain this school type, IMMUNE damage. SpellImmuneList const& schoolList = m_spellImmune[IMMUNITY_SCHOOL]; @@ -9484,17 +9479,12 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo) if(itr->type == spellInfo->Id) return true; - if(spellInfo->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY) - return false; - SpellImmuneList const& dispelList = m_spellImmune[IMMUNITY_DISPEL]; for(SpellImmuneList::const_iterator itr = dispelList.begin(); itr != dispelList.end(); ++itr) if(itr->type == spellInfo->Dispel) return true; - if(!(spellInfo->AttributesEx & - (SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE | SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)) // can remove immune (by dispell or immune it) - && spellInfo->Id != 42292) + if(spellInfo->Id != 42292 && spellInfo->Id !=59752) { SpellImmuneList const& schoolList = m_spellImmune[IMMUNITY_SCHOOL]; for(SpellImmuneList::const_iterator itr = schoolList.begin(); itr != schoolList.end(); ++itr) |