diff options
-rw-r--r-- | src/server/game/Handlers/SpellHandler.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 12 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
4 files changed, 27 insertions, 8 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 3ee24ef401e..4a28c076ce6 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -569,13 +569,11 @@ void WorldSession::HandleMissileTrajectoryCollision(WorldPackets::Spells::Missil pos.Relocate(packet.CollisionPos); spell->m_targets.ModDst(pos); - WorldPacket data(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, 21); - data << packet.Target; - data << uint8(packet.CastID); - data << float(packet.CollisionPos.x); - data << float(packet.CollisionPos.y); - data << float(packet.CollisionPos.z); - caster->SendMessageToSet(&data, true); + WorldPackets::Spells::NotifyMissileTrajectoryCollision notify; + notify.Caster = packet.Target; + notify.CastID = packet.CastID; + notify.CollisionPos = packet.CollisionPos; + caster->SendMessageToSet(notify.Write(), true); } void WorldSession::HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet) diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index ff6ec903990..f1cb69c32db 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -808,6 +808,15 @@ void WorldPackets::Spells::MissileTrajectoryCollision::Read() _worldPacket >> CollisionPos; } +WorldPacket const * WorldPackets::Spells::NotifyMissileTrajectoryCollision::Write() +{ + _worldPacket << Caster; + _worldPacket << uint8(CastID); + _worldPacket << CollisionPos; + + return &_worldPacket; +} + void WorldPackets::Spells::UpdateMissileTrajectory::Read() { _worldPacket >> Guid; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 042c32ac66e..15a2ac34fc2 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -839,6 +839,18 @@ namespace WorldPackets G3D::Vector3 CollisionPos; }; + class NotifyMissileTrajectoryCollision : public ServerPacket + { + public: + NotifyMissileTrajectoryCollision() : ServerPacket(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, 8 + 1 + 12) { } + + WorldPacket const* Write() override; + + ObjectGuid Caster; + uint8 CastID = 0; + G3D::Vector3 CollisionPos; + }; + class UpdateMissileTrajectory final : public ClientPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index ed0feb6415b..6b9974da93c 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1380,7 +1380,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MONEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_RECEIVED_MAIL, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_OFFER_PETITION_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM); |