aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2023-03-24 12:27:01 +0100
committerGitHub <noreply@github.com>2023-03-24 12:27:01 +0100
commitcc57c9dad59a2eded2f7ea0471aa79c89b390559 (patch)
tree5eb6012786882808dab11f90ca93a5c619afa67c /src/server/game/Spells/Spell.cpp
parentd6d5d94ebe88e71b6250678f114d900871fcf054 (diff)
Core/Creatures: Improved movement interruption while casting spells (#28845)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 3fd216df5ae..6d6e5e7e44f 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -6875,6 +6875,12 @@ SpellCastResult Spell::CheckMovement() const
if (IsTriggered())
return SPELL_CAST_OK;
+ // Creatures (not controlled) give priority to spell casting over movement.
+ // We assume that the casting is always valid and the current movement
+ // is stopped by Unit:IsmovementPreventedByCasting to prevent casting interruption.
+ if (m_caster->IsCreature() && !m_caster->ToCreature()->IsControlledByPlayer())
+ return SPELL_CAST_OK;
+
if (Unit* unitCaster = m_caster->ToUnit())
{
if (!unitCaster->CanCastSpellWhileMoving(m_spellInfo))