diff options
author | ariel- <ariel-@users.noreply.github.com> | 2018-03-15 02:59:08 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2018-03-15 02:59:08 -0300 |
commit | 9e0a343f729eb7e172c447dccb066f4f236aa11e (patch) | |
tree | 157c5b6fb72126476f38cae647f00d9462ca815d | |
parent | a60728b3d2e145fa4b8dc1818bab9dcc91fc4c0f (diff) |
Core/Entities: don't skip immunity checks for positive spells
Closes #21626
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index de0bbf4d194..1ac2ca9f127 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2540,6 +2540,15 @@ SpellMissInfo WorldObject::MagicSpellHitResult(Unit* victim, SpellInfo const* sp // Resist SpellMissInfo WorldObject::SpellHitResult(Unit* victim, SpellInfo const* spellInfo, bool canReflect /*= false*/) const { + // Check for immune + if (victim->IsImmunedToSpell(spellInfo, this)) + return SPELL_MISS_IMMUNE; + + // Damage immunity is only checked if the spell has damage effects, this immunity must not prevent aura apply + // returns SPELL_MISS_IMMUNE in that case, for other spells, the SMSG_SPELL_GO must show hit + if (spellInfo->HasOnlyDamageEffects() && victim->IsImmunedToDamage(spellInfo)) + return SPELL_MISS_IMMUNE; + // All positive spells can`t miss /// @todo client not show miss log for this spells - so need find info for this in dbc and use it! if (spellInfo->IsPositive() && !IsHostileTo(victim)) // prevent from affecting enemy by "positive" spell @@ -2565,15 +2574,6 @@ SpellMissInfo WorldObject::SpellHitResult(Unit* victim, SpellInfo const* spellIn if (spellInfo->HasAttribute(SPELL_ATTR3_IGNORE_HIT_RESULT)) return SPELL_MISS_NONE; - // Check for immune - if (victim->IsImmunedToSpell(spellInfo, this)) - return SPELL_MISS_IMMUNE; - - // Damage immunity is only checked if the spell has damage effects, this immunity must not prevent aura apply - // returns SPELL_MISS_IMMUNE in that case, for other spells, the SMSG_SPELL_GO must show hit - if (spellInfo->HasOnlyDamageEffects() && victim->IsImmunedToDamage(spellInfo)) - return SPELL_MISS_IMMUNE; - switch (spellInfo->DmgClass) { case SPELL_DAMAGE_CLASS_RANGED: |