diff options
| author | Krudor <erikstrandberg93@hotmail.com> | 2016-10-15 16:32:18 +0200 | 
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-10-15 16:32:18 +0200 | 
| commit | 0e52a0e6b12a2977e1cde1bdb2d3e536dc494983 (patch) | |
| tree | 4cf9996ac6e947064fd6d87a636438b2e904228b | |
| parent | ad16014c7ddfef90a5ccc209ce35925e69684ef1 (diff) | |
[6.x] Core/Spells: Implement SPELL_AURA_INTERFERE_TARGETTING (#17566)
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 12 | 
3 files changed, 14 insertions, 2 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index e3d6799c1a5..5396a06d941 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -379,7 +379,7 @@ enum AuraType      SPELL_AURA_MOD_MELEE_HASTE_3                            = 319,      SPELL_AURA_MOD_RANGED_HASTE_2                           = 320,      SPELL_AURA_MOD_NO_ACTIONS                               = 321, -    SPELL_AURA_INTERFERE_TARGETTING                         = 322,  // NYI +    SPELL_AURA_INTERFERE_TARGETTING                         = 322,      SPELL_AURA_323                                          = 323,  // Not used in 4.3.4      SPELL_AURA_324                                          = 324,  // spell critical chance (probably by school mask)      SPELL_AURA_325                                          = 325,  // Not used in 4.3.4 diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 71d89d435ad..6b35400213c 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -381,7 +381,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=      &AuraEffect::HandleModMeleeSpeedPct,                          //319 SPELL_AURA_MOD_MELEE_HASTE_3      &AuraEffect::HandleAuraModRangedHaste,                        //320 SPELL_AURA_MOD_RANGED_HASTE_2      &AuraEffect::HandleAuraModNoActions,                          //321 SPELL_AURA_MOD_NO_ACTIONS -    &AuraEffect::HandleNULL,                                      //322 SPELL_AURA_INTERFERE_TARGETTING +    &AuraEffect::HandleNoImmediateEffect,                         //322 SPELL_AURA_INTERFERE_TARGETTING implemented in Spell::CheckCast      &AuraEffect::HandleUnused,                                    //323 unused (4.3.4)      &AuraEffect::HandleNULL,                                      //324 SPELL_AURA_324      &AuraEffect::HandleUnused,                                    //325 unused (4.3.4) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 9e733dbfdd2..9dc0fc5d67b 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4890,6 +4890,18 @@ SpellCastResult Spell::CheckCast(bool strict)          if (castResult != SPELL_CAST_OK)              return castResult; +        // If it's not a melee spell, check if vision is obscured by SPELL_AURA_INTERFERE_TARGETTING +        if (m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MELEE) +        { +            for (auto const& itr : m_caster->GetAuraEffectsByType(SPELL_AURA_INTERFERE_TARGETTING)) +                if (!m_caster->IsFriendlyTo(itr->GetCaster()) && !target->HasAura(itr->GetId(), itr->GetCasterGUID())) +                    return SPELL_FAILED_VISION_OBSCURED; + +            for (auto const& itr : target->GetAuraEffectsByType(SPELL_AURA_INTERFERE_TARGETTING)) +                if (!m_caster->IsFriendlyTo(itr->GetCaster()) && (!target->HasAura(itr->GetId(), itr->GetCasterGUID()) || !m_caster->HasAura(itr->GetId(), itr->GetCasterGUID()))) +                    return SPELL_FAILED_VISION_OBSCURED; +        } +          if (target != m_caster)          {              // Must be behind the target  | 
