Core/Vehicles:
- Set MovementFlagsExtra (2) correctly depending on vehicle 'template' flags. This makes certain vehicles such as demolishers unable to jump/strafe (as intended) - Fix SMSG_MONSTER_MOVE_TRANSPORT stucture, prevents a client crash when entering certain vehicles, as well as *properly* broadcast position relative to the vehicle. - Send SMSG_BREAK_TARGET to player when entering vehicle. - Set MOVEMENTFLAG_ROOT on passenger when entering vehicle - Cleanup in affected code
This commit is contained in:
@@ -317,7 +317,7 @@ bool Vehicle::AddPassenger(Unit *unit, int8 seatId, bool byAura)
|
||||
if (seat->second.seatInfo->m_flags && !(seat->second.seatInfo->m_flags & VEHICLE_SEAT_FLAG_UNK11))
|
||||
unit->AddUnitState(UNIT_STAT_ONVEHICLE);
|
||||
|
||||
unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
|
||||
unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT | MOVEMENTFLAG_ROOT);
|
||||
VehicleSeatEntry const *veSeat = seat->second.seatInfo;
|
||||
unit->m_movementInfo.t_pos.m_positionX = veSeat->m_attachmentOffsetX;
|
||||
unit->m_movementInfo.t_pos.m_positionY = veSeat->m_attachmentOffsetY;
|
||||
@@ -449,3 +449,23 @@ void Vehicle::Dismiss()
|
||||
me->CombatStop();
|
||||
me->AddObjectToRemoveList();
|
||||
}
|
||||
|
||||
uint16 Vehicle::GetExtraMovementFlagsForBase() const
|
||||
{
|
||||
uint16 movementMask = MOVEMENTFLAG2_NONE;
|
||||
uint32 vehicleFlags = GetVehicleInfo()->m_flags;
|
||||
|
||||
if (vehicleFlags & VEHICLE_FLAG_NO_STRAFE)
|
||||
movementMask |= MOVEMENTFLAG2_NO_STRAFE;
|
||||
if (vehicleFlags & VEHICLE_FLAG_NO_JUMPING)
|
||||
movementMask |= MOVEMENTFLAG2_NO_JUMPING;
|
||||
if (vehicleFlags & VEHICLE_FLAG_FULLSPEEDTURNING)
|
||||
movementMask |= MOVEMENTFLAG2_FULL_SPEED_TURNING;
|
||||
if (vehicleFlags & VEHICLE_FLAG_ALLOW_PITCHING)
|
||||
movementMask |= MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING;
|
||||
if (vehicleFlags & VEHICLE_FLAG_FULLSPEEDPITCHING)
|
||||
movementMask |= MOVEMENTFLAG2_FULL_SPEED_PITCHING;
|
||||
|
||||
sLog->outDebug("Vehicle::GetExtraMovementFlagsForBase() returned %u", movementMask);
|
||||
return movementMask;
|
||||
}
|
||||
Reference in New Issue
Block a user