From 538fa8e97ff4b4e36a59e37fd74ea8958e6e30d2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 7 May 2022 23:31:55 +0200 Subject: Core/Spells: Cleanup movement checks in spells - use correct interrupt flags --- src/server/game/Entities/Unit/Unit.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/server/game/Entities/Unit') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 5ae10b11ca9..b4a689e6f4a 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2784,8 +2784,7 @@ void Unit::_UpdateAutoRepeatSpell() // check "realtime" interrupts // don't cancel spells which are affected by a SPELL_AURA_CAST_WHILE_WALKING effect - if (((GetTypeId() == TYPEID_PLAYER && ToPlayer()->isMoving()) || IsNonMeleeSpellCast(false, false, true, autoRepeatSpellInfo->Id == 75)) && - !CanCastSpellWhileMoving(autoRepeatSpellInfo)) + if ((isMoving() && m_currentSpells[CURRENT_AUTOREPEAT_SPELL]->CheckMovement() != SPELL_CAST_OK) || IsNonMeleeSpellCast(false, false, true, autoRepeatSpellInfo->Id == 75)) { // cancel wand shoot if (autoRepeatSpellInfo->Id != 75) @@ -3015,7 +3014,7 @@ bool Unit::IsMovementPreventedByCasting() const // channeled spells during channel stage (after the initial cast timer) allow movement with a specific spell attribute if (Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL]) if (spell->getState() != SPELL_STATE_FINISHED && spell->IsChannelActive()) - if (spell->GetSpellInfo()->IsMoveAllowedChannel()) + if (spell->GetSpellInfo()->IsMoveAllowedChannel() || CanCastSpellWhileMoving(spell->GetSpellInfo())) return false; // prohibit movement for all other spell casts -- cgit v1.2.3