aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-10-20 14:27:17 +0200
committerShauren <shauren.trinity@gmail.com>2013-10-20 14:27:17 +0200
commitb6db622b52f5535683dbc2fd5a58647cb2668585 (patch)
tree05375634e61498e8ab80d853559d547c102cbd67 /src/server/game/Entities/Player
parentf8b1b264d11623eccfe5b125d1d3445f2b4aae1d (diff)
Core/Transports: Fixed crashes happening when passenger is removed from transport during teleport
Closes #11067
Diffstat (limited to 'src/server/game/Entities/Player')
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 40dbe6c2fe7..56719341855 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -923,9 +923,6 @@ void Player::CleanupsBeforeDelete(bool finalCleanup)
Unit::CleanupsBeforeDelete(finalCleanup);
- if (m_transport)
- m_transport->RemovePassenger(this);
-
// clean up player-instance binds, may unload some instance saves
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
for (BoundInstancesMap::iterator itr = m_boundInstances[i].begin(); itr != m_boundInstances[i].end(); ++itr)
@@ -2297,10 +2294,13 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
if (m_transport)
{
- final_x += m_movementInfo.transport.pos.GetPositionX();
- final_y += m_movementInfo.transport.pos.GetPositionY();
- final_z += m_movementInfo.transport.pos.GetPositionZ();
- final_o += m_movementInfo.transport.pos.GetOrientation();
+ float tx, ty, tz, to;
+ m_movementInfo.transport.pos.GetPosition(tx, ty, tz, to);
+
+ final_x = x + tx * std::cos(orientation) - ty * std::sin(orientation);
+ final_y = y + ty * std::cos(orientation) + tx * std::sin(orientation);
+ final_z = z + tz;
+ final_o = Position::NormalizeOrientation(orientation + m_movementInfo.transport.pos.GetOrientation());
}
m_teleport_dest = WorldLocation(mapid, final_x, final_y, final_z, final_o);