30 TC_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_DISMISS_CONTROLLED_VEHICLE");
46 vehicleBase->SendPetDismissSound();
53 TC_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE");
66 TC_LOG_ERROR(
"network",
"HandleChangeSeatsOnControlledVehicle, Opcode: {}, Player {} tried to switch seats but current seatflags {} don't permit that.",
85 movementInfo.
guid = guid;
95 if (vehicle_base->
GetGUID() != guid)
102 if (
Vehicle* vehicle = vehUnit->GetVehicleKit())
103 if (vehicle->HasEmptySeat(seatId))
104 vehUnit->HandleSpellClick(
GetPlayer(), seatId);
116 if (vehicle_base->
GetGUID() == guid)
119 if (
Vehicle* vehicle = vehUnit->GetVehicleKit())
120 if (vehicle->HasEmptySeat(seatId))
121 vehUnit->HandleSpellClick(
GetPlayer(), seatId);
137 if (!player->GetVehicleKit())
139 if (!player->IsInRaidWith(
_player))
157 TC_LOG_ERROR(
"network",
"HandleEjectPassenger: {} is not in a vehicle!",
GetPlayer()->GetGUID().ToString());
169 TC_LOG_ERROR(
"network",
"{} tried to eject {} from vehicle, but the latter was not found in world!",
GetPlayer()->GetGUID().ToString(), guid.
ToString());
192 TC_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_REQUEST_VEHICLE_EXIT");
198 if (seat->CanEnterOrExit())
201 TC_LOG_ERROR(
"network",
"Player {} tried to exit vehicle, but seatflags {} (ID: {}) don't permit that.",
202 GetPlayer()->GetGUID().ToString(), seat->ID, seat->Flags);
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
#define INTERACTION_DISTANCE
bool IsBattleArena() const
std::string ToString() const
PackedGuidReader ReadAsPacked()
static ObjectGuid GetGUID(Object const *o)
void EnterVehicle(Unit *base, int8 seatId=-1)
Vehicle * GetVehicle() const
Unit * GetVehicleBase() const
bool IsOnVehicle(Unit const *vehicle) const
void ChangeSeat(int8 seatId, bool next=true)
Vehicle * GetVehicleKit() const
virtual void ExitVehicle(Position const *exitPosition=nullptr)
Unit * GetBase() const
May be called from scripts.
VehicleSeatEntry const * GetSeatForPassenger(Unit const *passenger) const
Returns information on the seat of specified passenger, represented by the format in VehicleSeat....
MovementInfo m_movementInfo
void HandleEnterPlayerVehicle(WorldPacket &data)
void HandleDismissControlledVehicle(WorldPacket &recvData)
Unit * ValidateAndGetUnitBeingMoved(ObjectGuid guid, bool forStatusAck) const
void HandleChangeSeatsOnControlledVehicle(WorldPacket &recvData)
void HandleEjectPassenger(WorldPacket &data)
uint32 AdjustClientMovementTime(uint32 time) const
Player * GetPlayer() const
bool ValidateMovementInfo(Unit const *mover, MovementInfo *mi) const
void HandleRequestVehicleExit(WorldPacket &recvData)
void ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
@ CMSG_REQUEST_VEHICLE_SWITCH_SEAT
@ CMSG_REQUEST_VEHICLE_NEXT_SEAT
@ CMSG_REQUEST_VEHICLE_PREV_SEAT
@ CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
bool CanSwitchFromSeat() const