aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-04-12 02:53:25 -0300
committerfunjoker <funjoker109@gmail.com>2020-04-27 12:25:52 +0200
commitfc0a037eef2a6a1dd1cc43f0233aaa1d400393be (patch)
tree39b7c021adbf030d8058e9d159d2ef70d114f996
parent070c2483f381067a242e26dcdd50aa57f5676d68 (diff)
Core/Spell: fix SPELL_ATTR3_IGNORE_HIT_RESULT bypassing reflects
Closes #19440 (cherry picked from commit 83177e771a373514913d066e14d5a7f9775407fe)
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index d522deddc03..93ea45dc476 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2616,18 +2616,6 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit* victim, SpellInfo const* spellInfo
// Resist
SpellMissInfo Unit::SpellHitResult(Unit* victim, SpellInfo const* spellInfo, bool canReflect /*= false*/)
{
- 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;
-
// 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
@@ -2650,6 +2638,18 @@ SpellMissInfo Unit::SpellHitResult(Unit* victim, SpellInfo const* spellInfo, boo
return SPELL_MISS_REFLECT;
}
+ 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: