From ee507dd94504a3c072450842938d30741e7b698c Mon Sep 17 00:00:00 2001 From: click Date: Fri, 21 May 2010 10:24:51 +0200 Subject: Add additional castchecks for SPELL_EFFECT_LEAP_BACK --HG-- branch : trunk --- src/game/Spell.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/game/Spell.cpp') diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index e551827459d..9535e98baa1 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -5196,14 +5196,22 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_EFFECT_LEAP_BACK: { - if (m_spellInfo->Id == 781) - if (!m_caster->isInCombat()) - return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; - if (m_caster->hasUnitState(UNIT_STAT_ROOT)) - return SPELL_FAILED_ROOTED; + // Spell 781 (Disengage) requires player to be in combat + if (m_caster->GetTypeId() == TYPEID_PLAYER && m_spellInfo->Id == 781 && !m_caster->isInCombat()) + return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; + + Unit* target = m_targets.getUnitTarget(); + if (m_caster == target && m_caster->hasUnitState(UNIT_STAT_ROOT)) + { + if (m_caster->GetTypeID() == TYPEID_PLAYER) + return SPELL_FAILED_ROOTED; + else + return SPELL_FAILED_DONT_REPORT; + } break; } - default:break; + default: + break; } } -- cgit v1.2.3