diff options
author | dr.skull <dr.skull@centrum.sk> | 2012-06-17 02:21:40 +0200 |
---|---|---|
committer | dr.skull <dr.skull@centrum.sk> | 2012-06-17 02:23:47 +0200 |
commit | 3f8efb21cd46dcc0391c84916be6d8f9920aee23 (patch) | |
tree | 711a1155a20e2b009d6b289c18eeb4c9fc9de4bb /src | |
parent | 63dd6251540eb3e392d8789f92035b021fb773e2 (diff) |
add IsEffect() check to correct IsImmunedToSpell
Signed-off-by: dr.skull <dr.skull@centrum.sk>
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Creature/Creature.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 4 |
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; |