diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/MovementHandler.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index d018adb7e2e..741ad15b08a 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -262,7 +262,7 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) } } - if(!mover->GetTransport() || !mover->m_Vehicle) + if(!mover->GetTransport() && !mover->m_Vehicle) movementInfo.flags &= ~MOVEMENTFLAG_ONTRANSPORT; } else if (plMover && plMover->m_transport) // if we were on a transport, leave @@ -438,10 +438,12 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data) uint64 guid; recv_data >> guid; - if(_player->m_mover->GetGUID() != guid) + if(Unit *mover = ObjectAccessor::GetUnit(*GetPlayer(), guid)) + GetPlayer()->SetMover(mover); + else { - sLog.outError("HandleSetActiveMoverOpcode: incorrect mover guid: mover is " I64FMT " and should be " I64FMT, _player->m_mover->GetGUID(), guid); - return; + sLog.outError("HandleSetActiveMoverOpcode: incorrect mover guid: mover is " I64FMT " and should be " I64FMT, guid, _player->m_mover->GetGUID()); + GetPlayer()->SetMover(GetPlayer()); } } @@ -517,10 +519,12 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) { GetPlayer()->m_Vehicle = vehicle; GetPlayer()->SetClientControl(vehicle, 1); - WorldPacket data(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, 0); - GetPlayer()->GetSession()->SendPacket(&data); + if(!vehicle->AddPassenger(GetPlayer(), seatNum)) + assert(false); + //WorldPacket data(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, 0); + //GetPlayer()->GetSession()->SendPacket(&data); } - if(!vehicle->AddPassenger(GetPlayer(), seatNum)) + else if(!vehicle->AddPassenger(GetPlayer(), seatNum)) assert(false); } |