diff options
author | MitchesD <majklprofik@seznam.cz> | 2015-03-13 17:19:33 +0100 |
---|---|---|
committer | MitchesD <majklprofik@seznam.cz> | 2015-03-13 17:19:33 +0100 |
commit | 8c329aff72c405c9224b8040a282abcf45996f78 (patch) | |
tree | e9bec877e38a32ee0dad6d0a30f584ccbef01bc7 /src | |
parent | a860c62fed3a1670488cb256788c5efe4467c19a (diff) |
Core/PacketIO: updated and enabled CMSG_CANCEL_CAST
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/SpellHandler.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 11 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
5 files changed, 22 insertions, 9 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index b3a094b86c5..0553d99dd8f 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -324,15 +324,10 @@ void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& cast) spell->prepare(&targets); } -void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket) +void WorldSession::HandleCancelCastOpcode(WorldPackets::Spells::CancelCast& packet) { - uint32 spellId; - - recvPacket.read_skip<uint8>(); // counter, increments with every CANCEL packet, don't use for now - recvPacket >> spellId; - if (_player->IsNonMeleeSpellCast(false)) - _player->InterruptNonMeleeSpells(false, spellId, false); + _player->InterruptNonMeleeSpells(false, packet.SpellID, false); } void WorldSession::HandleCancelAuraOpcode(WorldPackets::Spells::CancelAura& cancelAura) diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index d840a4aae49..d91397bb3c5 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -620,3 +620,9 @@ WorldPacket const* WorldPackets::Spells::CancelSpellVisual::Write() return &_worldPacket; } + +void WorldPackets::Spells::CancelCast::Read() +{ + _worldPacket >> SpellID; + _worldPacket >> CastID; +} diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index f29e7599707..9408f7c3c2d 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -577,6 +577,17 @@ namespace WorldPackets ObjectGuid Source; int32 SpellVisualID = 0; }; + + class CancelCast final : public ClientPacket + { + public: + CancelCast(WorldPacket&& packet) : ClientPacket(CMSG_CANCEL_CAST, std::move(packet)) { } + + void Read() override; + + uint32 SpellID = 0; + uint8 CastID = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index f5f23bee02e..26a7189ce59 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -250,7 +250,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_UPDATE_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarUpdateEvent ); DEFINE_HANDLER(CMSG_CANCEL_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::CancelAura, &WorldSession::HandleCancelAuraOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_AUTO_REPEAT_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAutoRepeatSpellOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_CAST, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleCancelCastOpcode ); + DEFINE_HANDLER(CMSG_CANCEL_CAST, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Spells::CancelCast, &WorldSession::HandleCancelCastOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_CHANNELLING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelChanneling ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_GROWTH_AURA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelGrowthAuraOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 092827f96ec..3088ef7f64a 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -345,6 +345,7 @@ namespace WorldPackets namespace Spells { class CancelAura; + class CancelCast; class CastSpell; class PetCastSpell; class UseItem; @@ -1079,7 +1080,7 @@ class WorldSession void HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet); void HandleOpenItemOpcode(WorldPacket& recvPacket); void HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& castRequest); - void HandleCancelCastOpcode(WorldPacket& recvPacket); + void HandleCancelCastOpcode(WorldPackets::Spells::CancelCast& packet); void HandleCancelAuraOpcode(WorldPackets::Spells::CancelAura& cancelAura); void HandleCancelGrowthAuraOpcode(WorldPacket& recvPacket); void HandleCancelAutoRepeatSpellOpcode(WorldPacket& recvPacket); |