mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Movement: Implement move time skipped handler (#22994)
* Implement CMSG_MOVE_TIME_SKIPPED handler and move it to MovementHandler.cpp
* Add better error handling
* Update MovementHandler.cpp
(cherry picked from commit f9ed72e351)
This commit is contained in:
@@ -651,10 +651,6 @@ void WorldSession::HandleMoveSetModMovementForceMagnitudeAck(WorldPackets::Movem
|
||||
mover->SendMessageToSet(updateModMovementForceMagnitude.Write(), false);
|
||||
}
|
||||
|
||||
void WorldSession::HandleMoveTimeSkippedOpcode(WorldPackets::Movement::MoveTimeSkipped& /*moveTimeSkipped*/)
|
||||
{
|
||||
}
|
||||
|
||||
void WorldSession::HandleMoveSplineDoneOpcode(WorldPackets::Movement::MoveSplineDone& moveSplineDone)
|
||||
{
|
||||
MovementInfo movementInfo = moveSplineDone.Status;
|
||||
@@ -696,3 +692,27 @@ void WorldSession::HandleMoveSplineDoneOpcode(WorldPackets::Movement::MoveSpline
|
||||
if (GetPlayer()->pvpInfo.IsHostile)
|
||||
GetPlayer()->CastSpell(GetPlayer(), 2479, true);
|
||||
}
|
||||
|
||||
void WorldSession::HandleMoveTimeSkippedOpcode(WorldPackets::Movement::MoveTimeSkipped& moveTimeSkipped)
|
||||
{
|
||||
Unit* mover = GetPlayer()->m_unitMovedByMe;
|
||||
if (!mover)
|
||||
{
|
||||
TC_LOG_WARN("entities.player", "WorldSession::HandleMoveTimeSkippedOpcode wrong mover state from the unit moved by %s", GetPlayer()->GetGUID().ToString().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
// prevent tampered movement data
|
||||
if (moveTimeSkipped.MoverGUID != mover->GetGUID())
|
||||
{
|
||||
TC_LOG_WARN("entities.player", "WorldSession::HandleMoveTimeSkippedOpcode wrong guid from the unit moved by %s", GetPlayer()->GetGUID().ToString().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
mover->m_movementInfo.time += moveTimeSkipped.TimeSkipped;
|
||||
|
||||
WorldPackets::Movement::MoveSkipTime moveSkipTime;
|
||||
moveSkipTime.MoverGUID = moveTimeSkipped.MoverGUID;
|
||||
moveSkipTime.TimeSkipped = moveTimeSkipped.TimeSkipped;
|
||||
mover->SendMessageToSet(moveSkipTime.Write(), _player);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user