aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server/Protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Server/Protocol')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/MovementHandler.cpp28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp
index 08828f541d1..f6d5c038273 100755
--- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp
@@ -623,18 +623,34 @@ void WorldSession::HandleEnterPlayerVehicle(WorldPacket &data)
void WorldSession::HandleEjectPassenger(WorldPacket &data)
{
- if (_player->GetVehicleKit())
+ if (Vehicle* vehicle = _player->GetVehicleKit())
{
uint64 guid;
data >> guid;
- if (Player *plr = ObjectAccessor::FindPlayer(guid))
- plr->ExitVehicle();
- else if (Unit *unit = ObjectAccessor::GetUnit(*_player, guid)) // creatures can be ejected too from player mounts
+
+ if (IS_PLAYER_GUID(guid))
+ {
+ if (Player *plr = ObjectAccessor::FindPlayer(guid))
+ vehicle->EjectPassenger(plr);
+ else
+ sLog->outError("Player %u tried to eject player %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
+ }
+
+ else if (IS_CREATURE_GUID(guid))
{
- unit->ExitVehicle();
- unit->ToCreature()->ForcedDespawn(1000);
+ if (Unit *unit = ObjectAccessor::GetUnit(*_player, guid)) // creatures can be ejected too from player mounts
+ {
+ vehicle->EjectPassenger(unit);
+ unit->ToCreature()->ForcedDespawn(1000);
+ }
+ else
+ sLog->outError("Player %u tried to eject creature guid %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
}
+ else
+ sLog->outError("HandleEjectPassenger: Player %u tried to eject invalid GUID "UI64FMTD, GetPlayer()->GetGUIDLow(), guid);
}
+ else
+ sLog->outError("HandleEjectPassenger: Player %u is not in a vehicle!", GetPlayer()->GetGUIDLow());
}
void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data)