diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala
index 9cb0057c5..909076b26 100644
--- a/pslogin/src/main/scala/WorldSessionActor.scala
+++ b/pslogin/src/main/scala/WorldSessionActor.scala
@@ -419,6 +419,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
log.info(s"DeployRequest: $obj has been Deployed")
sendResponse(PacketCoding.CreateGamePacket(0, DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, obj.Position)))
vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, obj.Position))
+ DeploymentActivities(obj)
//...
}
else {
@@ -2652,12 +2653,18 @@ class WorldSessionActor extends Actor with MDCContextAware {
/**
* Temporary function that iterates over vehicle permissions and turns them into `PlanetsideAttributeMessage` packets.
*
- * 2 November 2017
+ * 2 November 2017:
* Unexpected behavior causes seat mount points to become blocked when a new driver claims the vehicle.
* For the purposes of ensuring that other players are always aware of the proper permission state of the trunk and seats,
* packets are intentionally dispatched to the current client to update the states.
* Perform this action just after any instance where the client would initially gain awareness of the vehicle.
- * The most important examples include either the player or the vehicle itself spawning in for the first time.
+ * The most important examples include either the player or the vehicle itself spawning in for the first time.
+ *
+ * 20 February 2018:
+ * Occasionally, during deployment, local(?) vehicle seat access permissions may change.
+ * This results in players being locked into their own vehicle.
+ * Reloading vehicle permissions supposedly ensures the seats will be properly available.
+ * This is considered a client issue; but, somehow, it also impacts server operation somehow.
* @param vehicle the `Vehicle`
*/
def ReloadVehicleAccessPermissions(vehicle : Vehicle) : Unit = {
@@ -3009,6 +3016,19 @@ class WorldSessionActor extends Actor with MDCContextAware {
}
}
+ /**
+ * Perform specific operations depending on the target of deployment.
+ * @param obj the object that has deployed
+ */
+ def DeploymentActivities(obj : Deployment.DeploymentObject) : Unit = {
+ obj match {
+ case vehicle : Vehicle =>
+ //TODO we should not have to do this imho
+ ReloadVehicleAccessPermissions(vehicle)
+ case _ => ;
+ }
+ }
+
/**
* Common reporting behavior when a `Deployment` object fails to properly transition between states.
* @param obj the game object that could not