*Do not allow to cast cyclone on divine shielded target.

--HG--
branch : trunk
This commit is contained in:
QAston
2009-05-08 00:37:13 +02:00
parent 51d4303d55
commit e8474f3291
2 changed files with 17 additions and 12 deletions
+15
View File
@@ -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;
}
+2 -12
View File
@@ -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)