diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 542046213..8ec79f165 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -1300,7 +1300,7 @@ class WorldSessionActor extends Actor with MDCContextAware { else { Vector3(0, 0, (z - 90) % 360) } - pos = if(x >= 330) { + pos = if(x >= 330) { //leaning to the left pos + Vector3(0, 0, xsin) } else { diff --git a/pslogin/src/main/scala/services/vehicle/support/DeconstructionActor.scala b/pslogin/src/main/scala/services/vehicle/support/DeconstructionActor.scala index 906e7e9cc..2baa9c81c 100644 --- a/pslogin/src/main/scala/services/vehicle/support/DeconstructionActor.scala +++ b/pslogin/src/main/scala/services/vehicle/support/DeconstructionActor.scala @@ -2,7 +2,7 @@ package services.vehicle.support import akka.actor.{Actor, ActorRef, Cancellable} -import net.psforever.objects.{DefaultCancellable, Vehicle} +import net.psforever.objects.{DefaultCancellable, GlobalDefinitions, Vehicle} import net.psforever.objects.guid.TaskResolver import net.psforever.objects.vehicles.Seat import net.psforever.objects.zones.Zone @@ -96,9 +96,20 @@ class DeconstructionActor extends Actor { heapEmptyProcess.cancel val now : Long = System.nanoTime val (vehiclesToScrap, vehiclesRemain) = PartitionEntries(vehicles, now) - vehicles = vehiclesRemain //entries from original list before partition + vehicles = vehiclesRemain vehicleScrapHeap = vehicleScrapHeap ++ vehiclesToScrap //may include existing entries - vehiclesToScrap.foreach { RetirementTask } + vehiclesToScrap.foreach(entry => { + val vehicle = entry.vehicle + val zone = entry.zone + RetirementTask(entry) + if(vehicle.Definition == GlobalDefinitions.ams) { + import net.psforever.types.DriveState + vehicle.DeploymentState = DriveState.Mobile //internally undeployed //TODO this should be temporary? + context.parent ! VehicleServiceMessage.AMSDeploymentChange(zone) + } + taskResolver ! DeconstructionTask(vehicle, zone) + }) + if(vehiclesRemain.nonEmpty) { val short_timeout : FiniteDuration = math.max(1, DeconstructionActor.timeout_time - (now - vehiclesRemain.head.time)) nanoseconds import scala.concurrent.ExecutionContext.Implicits.global @@ -128,6 +139,7 @@ class DeconstructionActor extends Actor { def RetirementTask(entry : DeconstructionActor.VehicleEntry) : Unit = { val vehicle = entry.vehicle val zone = entry.zone + vehicle.Position = Vector3.Zero //somewhere it will not disturb anything zone.Transport ! Zone.Vehicle.Despawn(vehicle) context.parent ! DeconstructionActor.DeleteVehicle(vehicle.GUID, zone.Id) //call up to the main event system } @@ -135,7 +147,6 @@ class DeconstructionActor extends Actor { def DestructionTask(entry : DeconstructionActor.VehicleEntry) : Unit = { val vehicle = entry.vehicle val zone = entry.zone - vehicle.Position = Vector3.Zero //somewhere it will not disturb anything taskResolver ! DeconstructionTask(vehicle, zone) }