aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQAston <none@none>2009-05-08 00:37:13 +0200
committerQAston <none@none>2009-05-08 00:37:13 +0200
commite8474f32911ace12cc5fe11421c74dc7945f0e20 (patch)
treedc0333144fc3e75729c789810719ebe980d5d9cf /src
parent51d4303d550cb1ac8bfef86b2b053b6e7c0a0b6f (diff)
*Do not allow to cast cyclone on divine shielded target.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellMgr.cpp15
-rw-r--r--src/game/Unit.cpp14
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)