From a309ca972794f7282372b4302d6d0caddef7f745 Mon Sep 17 00:00:00 2001 From: Warpten Date: Fri, 25 Jul 2014 14:47:07 +0200 Subject: Core/Spells: Fixed issues with Death and Decay and similar spells not ticking if players stepping in the AoE are not in LoS with the caster. Not exactly sure if that behavior should *exactly* be as such, but until more informations ... --- src/server/game/Spells/Spell.cpp | 9 ++++++++- 1 file changed, 8 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 2bf9c0e0395..037242358da 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4793,8 +4793,15 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_NOT_INFRONT; if (m_caster->GetEntry() != WORLD_TRIGGER) // Ignore LOS for gameobjects casts (wrongly cast by a trigger) - if (!(m_spellInfo->AttributesEx2 & SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS) && !DisableMgr::IsDisabledFor(DISABLE_TYPE_SPELL, m_spellInfo->Id, NULL, SPELL_DISABLE_LOS) && !m_caster->IsWithinLOSInMap(target)) + { + WorldObject* losTarget = target; + if (IsTriggered() && m_triggeredByAuraSpell) + if (DynamicObject* dynObj = m_caster->GetDynObject(m_triggeredByAuraSpell)) + losTarget = dynObj; + + if (!(m_spellInfo->AttributesEx2 & SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS) && !DisableMgr::IsDisabledFor(DISABLE_TYPE_SPELL, m_spellInfo->Id, NULL, SPELL_DISABLE_LOS) && !target->IsWithinLOSInMap(losTarget)) return SPELL_FAILED_LINE_OF_SIGHT; + } } } -- cgit v1.2.3 From 8e385ca6d9ca1f03e2b86885edc2b5d27b6ccddd Mon Sep 17 00:00:00 2001 From: DDuarte Date: Fri, 25 Jul 2014 14:04:12 +0100 Subject: Core/Spells: Fix an issue with previous commit (a309ca97279) --- src/server/game/Spells/Spell.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 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 037242358da..10339a6ac3a 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4794,9 +4794,9 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_caster->GetEntry() != WORLD_TRIGGER) // Ignore LOS for gameobjects casts (wrongly cast by a trigger) { - WorldObject* losTarget = target; + WorldObject* losTarget = m_caster; if (IsTriggered() && m_triggeredByAuraSpell) - if (DynamicObject* dynObj = m_caster->GetDynObject(m_triggeredByAuraSpell)) + if (DynamicObject* dynObj = m_caster->GetDynObject(m_triggeredByAuraSpell->Id)) losTarget = dynObj; if (!(m_spellInfo->AttributesEx2 & SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS) && !DisableMgr::IsDisabledFor(DISABLE_TYPE_SPELL, m_spellInfo->Id, NULL, SPELL_DISABLE_LOS) && !target->IsWithinLOSInMap(losTarget)) -- cgit v1.2.3