Core/Movement: Handle move stop embedded in spell cast requests

This commit is contained in:
Shauren
2017-02-25 22:13:00 +01:00
parent 47b73fefc5
commit 047c6f072b
3 changed files with 9 additions and 4 deletions

View File

@@ -289,8 +289,11 @@ void WorldSession::HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck
void WorldSession::HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet)
{
OpcodeClient opcode = packet.GetOpcode();
HandleMovementOpcode(packet.GetOpcode(), packet.movementInfo);
}
void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movementInfo)
{
Unit* mover = _player->m_unitMovedByMe;
ASSERT(mover != nullptr); // there must always be a mover
@@ -301,9 +304,7 @@ void WorldSession::HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMov
if (plrMover && plrMover->IsBeingTeleported())
return;
GetPlayer()->ValidateMovementInfo(&packet.movementInfo);
MovementInfo& movementInfo = packet.movementInfo;
GetPlayer()->ValidateMovementInfo(&movementInfo);
// prevent tampered movement data
if (movementInfo.guid != mover->GetGUID())

View File

@@ -301,6 +301,9 @@ void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& cast)
spellInfo = actualSpellInfo;
}
if (cast.Cast.MoveUpdate)
HandleMovementOpcode(CMSG_MOVE_STOP, *cast.Cast.MoveUpdate);
Spell* spell = new Spell(caster, spellInfo, TRIGGERED_NONE, ObjectGuid::Empty, false);
WorldPackets::Spells::SpellPrepare spellPrepare;

View File

@@ -1262,6 +1262,7 @@ class TC_GAME_API WorldSession
void HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTokenResponse& suspendTokenResponse);
void HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet);
void HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movementInfo);
void HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveMover& packet);
void HandleMoveDismissVehicle(WorldPackets::Vehicle::MoveDismissVehicle& moveDismissVehicle);
void HandleRequestVehiclePrevSeat(WorldPackets::Vehicle::RequestVehiclePrevSeat& requestVehiclePrevSeat);