diff options
Diffstat (limited to 'src/game/Spell.cpp')
| -rw-r--r-- | src/game/Spell.cpp | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 8752bf41b41..5d7e57d2c34 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4464,19 +4464,34 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_LINE_OF_SIGHT; } - else if (m_caster->GetTypeId() == TYPEID_PLAYER) // Target - is player caster + else if (m_caster == target) { - // Additional check for some spells - // If 0 spell effect empty - client not send target data (need use selection) - // TODO: check it on next client version - if (m_targets.m_targetMask == TARGET_FLAG_SELF && - m_spellInfo->EffectImplicitTargetA[1] == TARGET_UNIT_TARGET_ENEMY) + + if (m_caster->GetTypeId() == TYPEID_PLAYER) // Target - is player caster { - if (target = m_caster->GetUnit(*m_caster, ((Player *)m_caster)->GetSelection())) - m_targets.setUnitTarget(target); - else - return SPELL_FAILED_BAD_TARGETS; + // Additional check for some spells + // If 0 spell effect empty - client not send target data (need use selection) + // TODO: check it on next client version + if (m_targets.m_targetMask == TARGET_FLAG_SELF && + m_spellInfo->EffectImplicitTargetA[1] == TARGET_UNIT_TARGET_ENEMY) + { + if (target = m_caster->GetUnit(*m_caster, ((Player *)m_caster)->GetSelection())) + m_targets.setUnitTarget(target); + else + return SPELL_FAILED_BAD_TARGETS; + } } + + // Some special spells with non-caster only mode + + // Fire Shield + if (m_spellInfo->SpellFamilyName == SPELLFAMILY_WARLOCK && + m_spellInfo->SpellIconID == 16) + return SPELL_FAILED_BAD_TARGETS; + + // Focus Magic (main spell) + if (m_spellInfo->Id == 54646) + return SPELL_FAILED_BAD_TARGETS; } // check pet presents @@ -6631,7 +6646,6 @@ void Spell::SelectTrajTargets() } #define CHECK_DIST {\ - //sLog.outError("Spell::SelectTrajTargets: dist %f, height %f.", dist, height); if(dist < objDist2d + size && dist > objDist2d - size)\ { bestDist = dist; break; }\ } |
