From 948c1f0fd666b2fdf6bcf98051d0e9a65f358d43 Mon Sep 17 00:00:00 2001 From: Shocker Date: Wed, 8 Sep 2010 04:15:41 +0300 Subject: Core/Spells: Add server-side check for not allowing non-instant spells with movement interrupt flag to be casted while moving --HG-- branch : trunk --- src/server/game/Spells/Spell.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (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 309ecfdd853..f412e594e33 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5732,6 +5732,13 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_needComboPoints && m_caster->ToPlayer() && !m_caster->ToPlayer()->GetComboPoints()) return SPELL_FAILED_NO_COMBO_POINTS; + // don't allow channeled spells / spells with cast time to be casted while moving + // (even if they are interrupted on moving, spells with almost immediate effect get to have their effect processed before movement interrupter kicks in) + if ((IsChanneledSpell(m_spellInfo) || GetSpellCastTime(m_spellInfo, this)) + && m_caster->GetTypeId() == TYPEID_PLAYER && m_caster->isMoving() + && m_spellInfo->InterruptFlags & SPELL_INTERRUPT_FLAG_MOVEMENT) + return SPELL_FAILED_MOVING; + // all ok return SPELL_CAST_OK; } -- cgit v1.2.3