fix(Core/Unit): Fix dying from fall damage and incorrect flying on map teleport (#23465)

This commit is contained in:
killerwife
2025-10-30 13:30:13 +01:00
committed by GitHub
parent 8f1b08ae3b
commit b737fc8b59
6 changed files with 42 additions and 9 deletions

View File

@@ -105,6 +105,13 @@ void WorldSession::HandleMoveWorldportAck()
GetPlayer()->UpdatePositionData();
GetPlayer()->SendInitialPacketsBeforeAddToMap();
if (GetPlayer()->GetPendingFlightChange() <= GetPlayer()->GetMapChangeOrderCounter())
{
if (!GetPlayer()->HasIncreaseMountedFlightSpeedAura() && !GetPlayer()->HasFlyAura())
GetPlayer()->m_movementInfo.RemoveMovementFlag(MOVEMENTFLAG_CAN_FLY);
}
if (!GetPlayer()->GetMap()->AddPlayerToMap(GetPlayer()))
{
LOG_ERROR("network.opcode", "WORLD: failed to teleport player {} ({}) to map {} because of unknown reason!",
@@ -679,6 +686,10 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket& recvData)
return;
}
// old map - async processing, ignore
if (counter <= _player->GetMapChangeOrderCounter())
return;
if (!ProcessMovementInfo(movementInfo, mover, _player, recvData))
{
recvData.rfinish(); // prevent warnings spam
@@ -991,6 +1002,10 @@ void WorldSession::HandleMoveRootAck(WorldPacket& recvData)
return;
}
// old map - async processing, ignore
if (counter <= _player->GetMapChangeOrderCounter())
return;
if (!ProcessMovementInfo(movementInfo, mover, _player, recvData))
return;