Added some missing SetFallInformation calls

Fixed HP drop bug on zeppelins
Fixed possible packet relocation problems on huge transports
This commit is contained in:
Aokromes committed 2017-02-17 09:39:09 +01:00
1 parent 00622f0ad9
commit 0748e7f820
5 files changed
+28 -4

No files matched your search

+10 -1
View File
@@ -89,6 +89,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
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);
@@ -248,6 +249,7 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recvPacket)
WorldLocation const& dest = plMover->GetTeleportDest();
plMover->UpdatePosition(dest, true);
plMover->SetFallInformation(0, GetPlayer()->GetPositionZ());
uint32 newzone, newarea;
plMover->GetZoneAndAreaId(newzone, newarea);
@@ -316,9 +318,16 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvPacket)
/* handle special cases */
if (movementInfo.transport.guid)
{
// 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)
{
recvPacket.rfinish(); // prevent warnings spam
return;