diff options
| author | Giuseppe Montesanto <montesanto.giuseppe@live.it> | 2011-12-14 16:13:10 +0100 |
|---|---|---|
| committer | Giuseppe Montesanto <montesanto.giuseppe@live.it> | 2011-12-14 16:13:10 +0100 |
| commit | 72e48ef8b3f0115dfa509c5e9a14d7738cb85b59 (patch) | |
| tree | 517e8ce9e7733b7592db1408053694ce20d53386 /src/server/game/Spells | |
| parent | f5b3553bb3e6cf9d055cfdc7f230e3ddaeea559b (diff) | |
Fix immunity system for many spells.
Diffstat (limited to 'src/server/game/Spells')
| -rwxr-xr-x | src/server/game/Spells/Spell.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellInfo.h | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 8a4c0a768d8..1edc3573e0a 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1562,7 +1562,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, const uint32 effectMask, bool } for (uint32 effectNumber = 0; effectNumber < MAX_SPELL_EFFECTS; ++effectNumber) - if (effectMask & (1 << effectNumber)) + if (effectMask & (1 << effectNumber) && !unit->IsImmunedToSpellEffect(m_spellInfo, effectNumber)) //Handle effect only if the target isn't immune. HandleEffects(unit, NULL, NULL, effectNumber, SPELL_EFFECT_HANDLE_HIT_TARGET); return SPELL_MISS_NONE; diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 972276c7d26..dae1b462880 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1755,6 +1755,14 @@ Mechanics SpellInfo::GetEffectMechanic(uint8 effIndex) const return MECHANIC_NONE; } +bool SpellInfo::HasAnyEffectMechanic() const +{ + for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) + if (Effects[i].Mechanic) + return true; + return false; +} + uint32 SpellInfo::GetDispelMask() const { return GetDispelMask(DispelType(Dispel)); diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 7faf0de890d..b38c1e0568e 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -446,6 +446,7 @@ public: uint32 GetEffectMechanicMask(uint8 effIndex) const; uint32 GetSpellMechanicMaskByEffectMask(uint32 effectMask) const; Mechanics GetEffectMechanic(uint8 effIndex) const; + bool HasAnyEffectMechanic() const; uint32 GetDispelMask() const; static uint32 GetDispelMask(DispelType type); uint32 GetExplicitTargetMask() const; |
