aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SpellHandler.cpp
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2016-02-03 15:10:58 +0100
committerCarbenium <carbenium@outlook.com>2016-02-03 15:10:58 +0100
commit6715a91907628a495deb9e2301d578537c82dce5 (patch)
treee6f97de17ad868b302038c9a4a39852f1a2f4977 /src/server/game/Handlers/SpellHandler.cpp
parentf269335bb2d95f486a8eb17a8a44fc5e1a5ee862 (diff)
Core/PacketIO: Updated and enabled CMSG_UPDATE_MISSILE_TRAJECTORY
Diffstat (limited to 'src/server/game/Handlers/SpellHandler.cpp')
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index bbce8bbd8ed..4d464e8d39d 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -585,6 +585,34 @@ void WorldSession::HandleMissileTrajectoryCollision(WorldPackets::Spells::Missil
caster->SendMessageToSet(&data, true);
}
+void WorldSession::HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet)
+{
+ Unit* caster = ObjectAccessor::GetUnit(*_player, packet.Guid);
+ Spell* spell = caster ? caster->GetCurrentSpell(CURRENT_GENERIC_SPELL) : NULL;
+ if (!spell || spell->m_spellInfo->Id != packet.SpellID || !spell->m_targets.HasDst() || !spell->m_targets.HasSrc())
+ return;
+
+ Position pos = *spell->m_targets.GetSrcPos();
+ pos.Relocate(packet.FirePos);
+ spell->m_targets.ModSrc(pos);
+
+ pos = *spell->m_targets.GetDstPos();
+ pos.Relocate(packet.ImpactPos);
+ spell->m_targets.ModDst(pos);
+
+ spell->m_targets.SetPitch(packet.Pitch);
+ spell->m_targets.SetSpeed(packet.Speed);
+
+ if (packet.Status.is_initialized())
+ {
+ GetPlayer()->ValidateMovementInfo(packet.Status.get_ptr());
+ /*uint32 opcode;
+ recvPacket >> opcode;
+ recvPacket.SetOpcode(CMSG_MOVE_STOP); // always set to CMSG_MOVE_STOP in client SetOpcode
+ //HandleMovementOpcodes(recvPacket);*/
+ }
+}
+
void WorldSession::HandleRequestCategoryCooldowns(WorldPackets::Spells::RequestCategoryCooldowns& /*requestCategoryCooldowns*/)
{
_player->SendSpellCategoryCooldowns();