diff options
author | click <none@none> | 2010-05-21 10:24:51 +0200 |
---|---|---|
committer | click <none@none> | 2010-05-21 10:24:51 +0200 |
commit | ee507dd94504a3c072450842938d30741e7b698c (patch) | |
tree | c3323dae8db27502edaac55b9bb60624a5e07d8e /src/game/Spell.cpp | |
parent | 9c1c67d4fd977467425d8f9f164331f05cb3edad (diff) |
Add additional castchecks for SPELL_EFFECT_LEAP_BACK
--HG--
branch : trunk
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r-- | src/game/Spell.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
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; } } |