aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordr.skull <dr.skull@centrum.sk>2012-06-17 02:21:40 +0200
committerdr.skull <dr.skull@centrum.sk>2012-06-17 02:23:47 +0200
commit3f8efb21cd46dcc0391c84916be6d8f9920aee23 (patch)
tree711a1155a20e2b009d6b289c18eeb4c9fc9de4bb /src
parent63dd6251540eb3e392d8789f92035b021fb773e2 (diff)
add IsEffect() check to correct IsImmunedToSpell
Signed-off-by: dr.skull <dr.skull@centrum.sk>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp6
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp4
2 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 07e8e37e82a..6857abde2bd 100755
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -1675,12 +1675,16 @@ bool Creature::IsImmunedToSpell(SpellInfo const* spellInfo)
// This check must be done instead of 'if (GetCreatureTemplate()->MechanicImmuneMask & (1 << (spellInfo->Mechanic - 1)))' for not break
// the check of mechanic immunity on DB (tested) because GetCreatureTemplate()->MechanicImmuneMask and m_spellImmune[IMMUNITY_MECHANIC] don't have same data.
bool immunedToAllEffects = true;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ {
+ if(!spellInfo->Effects[i].IsEffect())
+ break;
if (!IsImmunedToSpellEffect(spellInfo, i))
{
immunedToAllEffects = false;
break;
}
+ }
if (immunedToAllEffects)
return true;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index daa8c1e05de..0915f9ea3e9 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -11534,10 +11534,12 @@ bool Unit::IsImmunedToSpell(SpellInfo const* spellInfo)
}
bool immuneToAllEffects = true;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
// State/effect immunities applied by aura expect full spell immunity
// Ignore effects with mechanic, they are supposed to be checked separately
+ if(!spellInfo->Effects[i].IsEffect())
+ break;
if (!IsImmunedToSpellEffect(spellInfo, i))
{
immuneToAllEffects = false;