mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-01-19 18:14:44 +00:00
Fix Players getting unmounted but still appearing to be inside a Mountable
This commit is contained in:
parent
b5f15cd3d4
commit
e29f4e310b
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) 2021 PSForever
|
||||
package net.psforever.objects.serverobject.mount
|
||||
|
||||
import net.psforever.objects.Player
|
||||
import net.psforever.types.BailType
|
||||
|
||||
trait MountableSpace[A <: MountableEntity] {
|
||||
|
|
@ -92,6 +93,10 @@ trait MountableSpace[A <: MountableEntity] {
|
|||
case Some(p) if testToUnmount(p) =>
|
||||
_occupant = None
|
||||
p.BailProtection = bailable && (bailType == BailType.Bailed || bailType == BailType.Kicked)
|
||||
p match {
|
||||
case player: Player =>
|
||||
player.VehicleSeated = None
|
||||
}
|
||||
None
|
||||
case _ =>
|
||||
occupant
|
||||
|
|
|
|||
|
|
@ -18,16 +18,27 @@ trait CaptureTerminalAwareBehavior {
|
|||
case true => ; // CC is resecured
|
||||
case false => // CC is hacked
|
||||
// Remove seated occupants for mountables
|
||||
if (CaptureTerminalAwareObject.isInstanceOf[Mountable]) {
|
||||
CaptureTerminalAwareObject.asInstanceOf[Mountable].Seats.filter(x => x._2.isOccupied).foreach(x => {
|
||||
val (seat_num, seat) = x
|
||||
val user = seat.occupant.get
|
||||
CaptureTerminalAwareObject.Zone.VehicleEvents ! VehicleServiceMessage(
|
||||
CaptureTerminalAwareObject.Zone.id,
|
||||
VehicleAction.KickPassenger(user.GUID, seat_num, true, CaptureTerminalAwareObject.GUID)
|
||||
)
|
||||
seat.unmount(user)
|
||||
})
|
||||
CaptureTerminalAwareObject match {
|
||||
case mountable: Mountable =>
|
||||
|
||||
val guid = mountable.GUID
|
||||
val zone = mountable.Zone
|
||||
val zoneId = zone.id
|
||||
val events = zone.VehicleEvents
|
||||
|
||||
mountable.Seats.values.zipWithIndex.foreach {
|
||||
case (seat, seat_num) =>
|
||||
seat.occupant match {
|
||||
case Some(player) =>
|
||||
seat.unmount(player)
|
||||
player.VehicleSeated = None
|
||||
if (player.HasGUID) {
|
||||
events ! VehicleServiceMessage(zoneId, VehicleAction.KickPassenger(player.GUID, seat_num, true, guid))
|
||||
}
|
||||
case None => ;
|
||||
}
|
||||
}
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue