From a7e0bd06b3a9bdfa11fe87f1043a62b7da7f6bbe Mon Sep 17 00:00:00 2001 From: Chaouki Dhib Date: Sun, 14 May 2017 21:34:37 +0200 Subject: Core/Spells: Change the radius of PBAoEs following the feedback received on (#16290) (cherry picked from commit 2ff76e828f7c757b5120aba41947a6d63e082e17) --- src/server/game/Spells/Spell.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index f9c6b64e7f3..270843e6e92 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1241,10 +1241,6 @@ void Spell::SelectImplicitAreaTargets(SpellEffIndex effIndex, SpellImplicitTarge return; float radius = effect->CalcRadius(m_caster) * m_spellValue->RadiusMod; - // if this is a proximity based aoe (Frost Nova, Psychic Scream, ...), include the caster's own combat reach - if (targetType.IsProximityBasedAoe()) - radius += GetCaster()->GetCombatReach(); - SearchAreaTargets(targets, radius, center, referer, targetType.GetObjectType(), targetType.GetCheckType(), effect->ImplicitTargetConditions); CallScriptObjectAreaTargetSelectHandlers(targets, effIndex, targetType); -- cgit v1.2.3 From 25f47e468060407610c14b46e857ba1b9cc94203 Mon Sep 17 00:00:00 2001 From: ariel- Date: Sat, 27 May 2017 01:40:14 -0300 Subject: Core/Spell: abort channeling if no valid targets are found after searching Closes #17624 (cherry picked from commit 2f19d97d210c70eade4fb87c1d86642d77bbcd69) --- src/server/game/Spells/Spell.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 270843e6e92..f0b84cc3c45 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -778,6 +778,14 @@ void Spell::SelectSpellTargets() if (m_spellInfo->IsChanneled()) { + // maybe do this for all spells? + if (m_UniqueTargetInfo.empty() && m_UniqueGOTargetInfo.empty() && m_UniqueItemInfo.empty()) + { + SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); + finish(false); + return; + } + uint32 mask = (1 << effect->EffectIndex); for (std::vector::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit) { -- cgit v1.2.3 From 250aef5186699fb9d31c3ba94754ad926c4f96af Mon Sep 17 00:00:00 2001 From: treeston Date: Sat, 27 May 2017 21:05:26 +0200 Subject: Quickfix a bug introduced by 2f19d97 which prevented GTAoE from being cast. (cherry picked from commit 1c528c30f8ca5717c5d9a88dbceb14c31d825036) --- src/server/game/Spells/Spell.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index f0b84cc3c45..483347d030a 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -779,7 +779,7 @@ void Spell::SelectSpellTargets() if (m_spellInfo->IsChanneled()) { // maybe do this for all spells? - if (m_UniqueTargetInfo.empty() && m_UniqueGOTargetInfo.empty() && m_UniqueItemInfo.empty()) + if (m_UniqueTargetInfo.empty() && m_UniqueGOTargetInfo.empty() && m_UniqueItemInfo.empty() && !m_targets.HasDst()) { SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); finish(false); -- cgit v1.2.3 From b1f1cc45147b445c9f05ad1f5d69234ba032b1bc Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 28 May 2017 18:19:15 -0300 Subject: Core/Spell: in case of immunity, check all effects to choose correct procFlags, as none has technically hit (cherry picked from commit 63e502a67dfdfb4edb8a84af630244ac13600b24) --- src/server/game/Spells/Spell.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 483347d030a..ca79aa1ac0e 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2346,7 +2346,8 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) { for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) { - if (!(target->effectMask & (1 << i))) + // in case of immunity, check all effects to choose correct procFlags, as none has technically hit + if (target->effectMask && !(target->effectMask & (1 << i))) continue; if (!m_spellInfo->IsPositiveEffect(i)) -- cgit v1.2.3