diff options
author | xinef1 <w.szyszko2@gmail.com> | 2017-02-13 21:05:32 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2017-02-13 21:05:32 +0100 |
commit | b3f04ec1570c7fd6ef0d1dacfb7ff9f8ab00a43d (patch) | |
tree | a6ed2772652e884ca9399ddf789d6bd035052bfd /src/server/game/Handlers/MovementHandler.cpp | |
parent | 2412886ef69d305df1bd6e6422ca3134c0ab1449 (diff) |
Added some missing SetFallInformation calls (#19121)
Fixed HP drop bug on zeppelins
Fixed possible packet relocation problems on huge transports
Diffstat (limited to 'src/server/game/Handlers/MovementHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 42b2db1cccd..69918e81555 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -88,6 +88,7 @@ void WorldSession::HandleMoveWorldportAck() if (GetPlayer()->HasUnitMovementFlag(MOVEMENTFLAG_HOVER)) z += GetPlayer()->GetFloatValue(UNIT_FIELD_HOVERHEIGHT); GetPlayer()->Relocate(loc.GetPositionX(), loc.GetPositionY(), z, loc.GetOrientation()); + GetPlayer()->SetFallInformation(0, GetPlayer()->GetPositionZ()); GetPlayer()->ResetMap(); GetPlayer()->SetMap(newMap); @@ -224,6 +225,7 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recvData) WorldLocation const& dest = plMover->GetTeleportDest(); plMover->UpdatePosition(dest, true); + plMover->SetFallInformation(0, GetPlayer()->GetPositionZ()); uint32 newzone, newarea; plMover->GetZoneAndAreaId(newzone, newarea); @@ -289,9 +291,16 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) /* handle special cases */ if (movementInfo.HasMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) { + // We were teleported, skip packets that were broadcast before teleport + if (movementInfo.pos.GetExactDist2d(mover) > SIZE_OF_GRIDS) + { + recvData.rfinish(); // prevent warnings spam + return; + } + // transports size limited // (also received at zeppelin leave by some reason with t_* as absolute in continent coordinates, can be safely skipped) - if (movementInfo.transport.pos.GetPositionX() > 50 || movementInfo.transport.pos.GetPositionY() > 50 || movementInfo.transport.pos.GetPositionZ() > 50) + if (fabs(movementInfo.transport.pos.GetPositionX()) > 75.0f || fabs(movementInfo.transport.pos.GetPositionY()) > 75.0f || fabs(movementInfo.transport.pos.GetPositionZ()) > 75.0f) { recvData.rfinish(); // prevent warnings spam return; |