diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 4 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 16 |
3 files changed, 16 insertions, 8 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 0bd91797019..f9c2201fac4 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -406,7 +406,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_MELEE_HASTE_3 = 319, SPELL_AURA_320 = 320, SPELL_AURA_MOD_NO_ACTIONS = 321, - SPELL_AURA_INTERFERE_TARGETTING = 322, + SPELL_AURA_INTERFERE_ENEMY_TARGETING = 322, SPELL_AURA_323 = 323, // Not used in 4.3.4 SPELL_AURA_OVERRIDE_UNLOCKED_AZERITE_ESSENCE_RANK = 324, // testing aura SPELL_AURA_LEARN_PVP_TALENT = 325, // NYI @@ -570,7 +570,7 @@ enum AuraType : uint32 SPELL_AURA_SUPPRESS_TRANSFORMS = 483, // NYI SPELL_AURA_ALLOW_INTERRUPT_SPELL = 484, SPELL_AURA_MOD_MOVEMENT_FORCE_MAGNITUDE = 485, - SPELL_AURA_486 = 486, + SPELL_AURA_INTERFERE_ALL_TARGETING = 486, SPELL_AURA_COSMETIC_MOUNTED = 487, SPELL_AURA_DISABLE_GRAVITY = 488, SPELL_AURA_MOD_ALTERNATIVE_DEFAULT_LANGUAGE = 489, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index ed0e87ddc8f..9cb6d4da85d 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -391,7 +391,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleModMeleeSpeedPct, //319 SPELL_AURA_MOD_MELEE_HASTE_3 &AuraEffect::HandleNULL, //320 SPELL_AURA_320 &AuraEffect::HandleAuraModNoActions, //321 SPELL_AURA_MOD_NO_ACTIONS - &AuraEffect::HandleNoImmediateEffect, //322 SPELL_AURA_INTERFERE_TARGETTING implemented in Spell::CheckCast + &AuraEffect::HandleNoImmediateEffect, //322 SPELL_AURA_INTERFERE_ENEMY_TARGETING implemented in Spell::CheckCast &AuraEffect::HandleUnused, //323 unused (4.3.4) &AuraEffect::HandleNULL, //324 SPELL_AURA_OVERRIDE_UNLOCKED_AZERITE_ESSENCE_RANK &AuraEffect::HandleUnused, //325 SPELL_AURA_LEARN_PVP_TALENT @@ -555,7 +555,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //483 SPELL_AURA_SUPPRESS_TRANSFORMS &AuraEffect::HandleNoImmediateEffect, //484 SPELL_AURA_ALLOW_INTERRUPT_SPELL implemented in SpellInfo::CanBeInterrupted &AuraEffect::HandleModMovementForceMagnitude, //485 SPELL_AURA_MOD_MOVEMENT_FORCE_MAGNITUDE - &AuraEffect::HandleNULL, //486 + &AuraEffect::HandleNoImmediateEffect, //486 SPELL_AURA_INTERFERE_ALL_TARGETING implemented in Spell::CheckCast &AuraEffect::HandleCosmeticMounted, //487 SPELL_AURA_COSMETIC_MOUNTED &AuraEffect::HandleAuraDisableGravity, //488 SPELL_AURA_DISABLE_GRAVITY &AuraEffect::HandleModAlternativeDefaultLanguage, //489 SPELL_AURA_MOD_ALTERNATIVE_DEFAULT_LANGUAGE diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index cd4299d8bf6..b4e5711d7f2 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6039,17 +6039,25 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 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 it's not a melee spell, check if vision is obscured by SPELL_AURA_INTERFERE_ENEMY_TARGETING if (m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MELEE) { if (Unit const* unitCaster = m_caster->ToUnit()) { - for (AuraEffect const* auraEff : unitCaster->GetAuraEffectsByType(SPELL_AURA_INTERFERE_TARGETTING)) + for (AuraEffect const* auraEff : unitCaster->GetAuraEffectsByType(SPELL_AURA_INTERFERE_ENEMY_TARGETING)) if (!unitCaster->IsFriendlyTo(auraEff->GetCaster()) && !target->HasAura(auraEff->GetId(), auraEff->GetCasterGUID())) return SPELL_FAILED_VISION_OBSCURED; - for (AuraEffect const* auraEff : target->GetAuraEffectsByType(SPELL_AURA_INTERFERE_TARGETTING)) - if (!unitCaster->IsFriendlyTo(auraEff->GetCaster()) && (!target->HasAura(auraEff->GetId(), auraEff->GetCasterGUID()) || !unitCaster->HasAura(auraEff->GetId(), auraEff->GetCasterGUID()))) + for (AuraEffect const* auraEff : target->GetAuraEffectsByType(SPELL_AURA_INTERFERE_ENEMY_TARGETING)) + if (!unitCaster->IsFriendlyTo(auraEff->GetCaster()) && !unitCaster->HasAura(auraEff->GetId(), auraEff->GetCasterGUID())) + return SPELL_FAILED_VISION_OBSCURED; + + for (AuraEffect const* auraEff : unitCaster->GetAuraEffectsByType(SPELL_AURA_INTERFERE_ALL_TARGETING)) + if (!target->HasAura(auraEff->GetId(), auraEff->GetCasterGUID())) + return SPELL_FAILED_VISION_OBSCURED; + + for (AuraEffect const* auraEff : target->GetAuraEffectsByType(SPELL_AURA_INTERFERE_ALL_TARGETING)) + if (!unitCaster->HasAura(auraEff->GetId(), auraEff->GetCasterGUID())) return SPELL_FAILED_VISION_OBSCURED; } } |