mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/PacketIO: Implement CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS (#27975)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
@@ -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?
|
||||
|
||||
@@ -25,18 +25,23 @@ void WorldPackets::Spells::CancelAura::Read()
|
||||
_worldPacket >> CasterGUID;
|
||||
}
|
||||
|
||||
void WorldPackets::Spells::PetCancelAura::Read()
|
||||
{
|
||||
_worldPacket >> PetGUID;
|
||||
_worldPacket >> SpellID;
|
||||
}
|
||||
|
||||
void WorldPackets::Spells::CancelChannelling::Read()
|
||||
{
|
||||
_worldPacket >> ChannelSpell;
|
||||
_worldPacket >> Reason;
|
||||
}
|
||||
|
||||
void WorldPackets::Spells::CancelModSpeedNoControlAuras::Read()
|
||||
{
|
||||
_worldPacket >> TargetGUID;
|
||||
}
|
||||
|
||||
void WorldPackets::Spells::PetCancelAura::Read()
|
||||
{
|
||||
_worldPacket >> PetGUID;
|
||||
_worldPacket >> SpellID;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Spells::CategoryCooldown::Write()
|
||||
{
|
||||
_worldPacket.reserve(4 + 8 * CategoryCooldowns.size());
|
||||
|
||||
@@ -82,6 +82,16 @@ namespace WorldPackets
|
||||
void Read() override { }
|
||||
};
|
||||
|
||||
class CancelModSpeedNoControlAuras final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
CancelModSpeedNoControlAuras(WorldPacket&& packet) : ClientPacket(CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid TargetGUID;
|
||||
};
|
||||
|
||||
class PetCancelAura final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -257,7 +257,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_CANCEL_CHANNELLING, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCancelChanneling);
|
||||
DEFINE_HANDLER(CMSG_CANCEL_GROWTH_AURA, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCancelGrowthAuraOpcode);
|
||||
DEFINE_HANDLER(CMSG_CANCEL_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCancelModSpeedNoControlAuras);
|
||||
DEFINE_HANDLER(CMSG_CANCEL_MOUNT_AURA, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCancelMountAuraOpcode);
|
||||
DEFINE_HANDLER(CMSG_CANCEL_QUEUED_SPELL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_CANCEL_TEMP_ENCHANTMENT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCancelTempEnchantmentOpcode);
|
||||
|
||||
@@ -708,6 +708,7 @@ namespace WorldPackets
|
||||
class CancelChannelling;
|
||||
class CancelGrowthAura;
|
||||
class CancelMountAura;
|
||||
class CancelModSpeedNoControlAuras;
|
||||
class PetCancelAura;
|
||||
class RequestCategoryCooldowns;
|
||||
class CancelCast;
|
||||
@@ -1503,6 +1504,7 @@ class TC_GAME_API WorldSession
|
||||
void HandleCancelAuraOpcode(WorldPackets::Spells::CancelAura& cancelAura);
|
||||
void HandleCancelGrowthAuraOpcode(WorldPackets::Spells::CancelGrowthAura& cancelGrowthAura);
|
||||
void HandleCancelMountAuraOpcode(WorldPackets::Spells::CancelMountAura& cancelMountAura);
|
||||
void HandleCancelModSpeedNoControlAuras(WorldPackets::Spells::CancelModSpeedNoControlAuras& cancelModSpeedNoControlAuras);
|
||||
void HandleCancelAutoRepeatSpellOpcode(WorldPackets::Spells::CancelAutoRepeatSpell& cancelAutoRepeatSpell);
|
||||
void HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet);
|
||||
void HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet);
|
||||
|
||||
Reference in New Issue
Block a user