Core/Movement: Implement move time skipped handler

Port From (https://github.com/TrinityCore/TrinityCore/commit/4507a02ada7ff2b30d1e82d4a111fc7143fd0823)
This commit is contained in:
hondacrx
2021-11-23 22:32:00 -05:00
parent e46fde9cdd
commit a752189bf5
2 changed files with 34 additions and 0 deletions
+20
View File
@@ -694,6 +694,26 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.MoveTimeSkipped, Processing = PacketProcessing.Inplace)]
void HandleMoveTimeSkipped(MoveTimeSkipped moveTimeSkipped)
{
Unit mover = GetPlayer().m_unitMovedByMe;
if (mover == null)
{
Log.outWarn(LogFilter.Player, $"WorldSession.HandleMoveTimeSkipped wrong mover state from the unit moved by {GetPlayer().GetGUID()}");
return;
}
// prevent tampered movement data
if (moveTimeSkipped.MoverGUID != mover.GetGUID())
{
Log.outWarn(LogFilter.Player, $"WorldSession.HandleMoveTimeSkipped wrong guid from the unit moved by {GetPlayer().GetGUID()}");
return;
}
mover.m_movementInfo.Time += moveTimeSkipped.TimeSkipped;
MoveSkipTime moveSkipTime = new();
moveSkipTime.MoverGUID = moveTimeSkipped.MoverGUID;
moveSkipTime.TimeSkipped = moveTimeSkipped.TimeSkipped;
mover.SendMessageToSet(moveSkipTime, _player);
}
[WorldPacketHandler(ClientOpcodes.MoveSplineDone, Processing = PacketProcessing.ThreadSafe)]