diff --git a/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala b/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala index 1553d932..949cd80d 100644 --- a/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala +++ b/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala @@ -1442,8 +1442,22 @@ class ZoningOperations( if (player.avatar.vehicle.nonEmpty && player.VehicleSeated != player.avatar.vehicle) { continent.GUID(player.avatar.vehicle) match { case Some(vehicle: Vehicle) if vehicle.Actor != Default.Actor => - sessionData.vehicles.TotalDriverVehicleControl(vehicle) + + // allow AMS, router, ANT and BFR siphon to remain deployed when owner leaves the zone + // TODO: do we need to check for left/right siphon? + vehicle.Definition match { + case GlobalDefinitions.ams | GlobalDefinitions.ant | GlobalDefinitions.router | + GlobalDefinitions.aphelion_ntu_siphon | //GlobalDefinitions.aphelion_ntu_siphon_left | GlobalDefinitions.aphelion_ntu_siphon_right | + GlobalDefinitions.colossus_ntu_siphon | //GlobalDefinitions.colossus_ntu_siphon_left | GlobalDefinitions.colossus_ntu_siphon_right | + GlobalDefinitions.peregrine_ntu_siphon //| GlobalDefinitions.peregrine_ntu_siphon_left | GlobalDefinitions.peregrine_ntu_siphon_right + => // do noting to keep them deployed + + case _ => sessionData.vehicles.TotalDriverVehicleControl(vehicle) + } + + // remove owner vehicle.Actor ! Vehicle.Ownership(None) + case _ => ; } avatarActor ! AvatarActor.SetVehicle(None)