aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorclick <none@none>2010-05-21 10:24:51 +0200
committerclick <none@none>2010-05-21 10:24:51 +0200
commitee507dd94504a3c072450842938d30741e7b698c (patch)
treec3323dae8db27502edaac55b9bb60624a5e07d8e /src
parent9c1c67d4fd977467425d8f9f164331f05cb3edad (diff)
Add additional castchecks for SPELL_EFFECT_LEAP_BACK
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Spell.cpp20
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;
}
}