aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SpellHandler.cpp
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2022-06-08 20:40:35 +0200
committerGitHub <noreply@github.com>2022-06-08 20:40:35 +0200
commit5e8534767c66ca492bab929d91f2d86d18dd9aba (patch)
treeac8f4919af390ab85d9547cf926813c6627eb768 /src/server/game/Handlers/SpellHandler.cpp
parentf031c943b86ea4dc30419c6b587e60e212731992 (diff)
Core/PacketIO: Implement CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS (#27975)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Diffstat (limited to 'src/server/game/Handlers/SpellHandler.cpp')
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 1de96660fc5..a189a8022b1 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -450,6 +450,19 @@ void WorldSession::HandleCancelMountAuraOpcode(WorldPackets::Spells::CancelMount
});
}
+void WorldSession::HandleCancelModSpeedNoControlAuras(WorldPackets::Spells::CancelModSpeedNoControlAuras& cancelModSpeedNoControlAuras)
+{
+ Unit* mover = _player->GetUnitBeingMoved();
+ if (!mover || mover->GetGUID() != cancelModSpeedNoControlAuras.TargetGUID)
+ return;
+
+ _player->RemoveAurasByType(SPELL_AURA_MOD_SPEED_NO_CONTROL, [](AuraApplication const* aurApp)
+ {
+ SpellInfo const* spellInfo = aurApp->GetBase()->GetSpellInfo();
+ return !spellInfo->HasAttribute(SPELL_ATTR0_NO_AURA_CANCEL) && spellInfo->IsPositive() && !spellInfo->IsPassive();
+ });
+}
+
void WorldSession::HandleCancelAutoRepeatSpellOpcode(WorldPackets::Spells::CancelAutoRepeatSpell& /*cancelAutoRepeatSpell*/)
{
// may be better send SMSG_CANCEL_AUTO_REPEAT?