diff --git a/src/main/scala/net/psforever/actors/session/support/SessionData.scala b/src/main/scala/net/psforever/actors/session/support/SessionData.scala index 87c998a5..a4ca457d 100644 --- a/src/main/scala/net/psforever/actors/session/support/SessionData.scala +++ b/src/main/scala/net/psforever/actors/session/support/SessionData.scala @@ -219,7 +219,7 @@ class SessionData( if (isMovingPlus) { if (zoning.zoningStatus == Zoning.Status.Deconstructing) { stopDeconstructing() - } else { + } else if (zoning.zoningStatus != Zoning.Status.None) { zoning.CancelZoningProcessWithDescriptiveReason("cancel_motion") } } diff --git a/src/main/scala/net/psforever/actors/session/support/WeaponAndProjectileOperations.scala b/src/main/scala/net/psforever/actors/session/support/WeaponAndProjectileOperations.scala index 34c832e0..2e7c8484 100644 --- a/src/main/scala/net/psforever/actors/session/support/WeaponAndProjectileOperations.scala +++ b/src/main/scala/net/psforever/actors/session/support/WeaponAndProjectileOperations.scala @@ -2,6 +2,7 @@ package net.psforever.actors.session.support import akka.actor.{ActorContext, typed} +import net.psforever.objects.zones.Zoning import net.psforever.objects.zones.exp.ToDatabase import scala.collection.mutable @@ -50,7 +51,8 @@ private[support] class WeaponAndProjectileOperations( private[support] var shotsWhileDead: Int = 0 private val projectiles: Array[Option[Projectile]] = Array.fill[Option[Projectile]](Projectile.rangeUID - Projectile.baseUID)(None) - + private var zoningOpt: Option[ZoningOperations] = None + def zoning: ZoningOperations = zoningOpt.orNull /* packets */ def handleWeaponFire(pkt: WeaponFireMessage): Unit = { @@ -536,7 +538,9 @@ private[support] class WeaponAndProjectileOperations( weaponGUID: PlanetSideGUID, projectileGUID: PlanetSideGUID ): (Option[PlanetSideGameObject with Container], Option[Tool]) = { - sessionData.zoning.CancelZoningProcessWithDescriptiveReason("cancel_fire") + if (player.ZoningRequest != Zoning.Method.None) { + sessionData.zoning.CancelZoningProcessWithDescriptiveReason("cancel_fire") + } if (player.isShielded) { // Cancel NC MAX shield if it's active sessionData.toggleMaxSpecialState(enable = false) 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 ce23bd53..c678b180 100644 --- a/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala +++ b/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala @@ -889,7 +889,7 @@ class ZoningOperations( def beginZoningCountdown(runnable: Runnable): Unit = { val descriptor = zoningType.toString.toLowerCase if (zoningStatus == Zoning.Status.Request) { - avatarActor ! AvatarActor.DeinitializeImplants() + avatarActor ! AvatarActor.DeactivateActiveImplants() zoningStatus = Zoning.Status.Countdown val (time, origin) = ZoningStartInitialMessageAndTimer() zoningCounter = time @@ -2300,18 +2300,8 @@ class ZoningOperations( //vehicle and driver/passenger val vdef = vehicle.Definition val vguid = vehicle.GUID - val vdata = if (seat == 0) { - val seat = vehicle.Seats(0) - seat.unmount(player) - val _vdata = vdef.Packet.ConstructorData(vehicle).get - sendResponse(ObjectCreateMessage(vehicle.Definition.ObjectId, vguid, _vdata)) - seat.mount(player) - _vdata - } else { - val _vdata = vdef.Packet.ConstructorData(vehicle).get - sendResponse(ObjectCreateMessage(vehicle.Definition.ObjectId, vguid, _vdata)) - _vdata - } + val vdata = vdef.Packet.ConstructorData(vehicle).get + sendResponse(ObjectCreateMessage(vehicle.Definition.ObjectId, vguid, vdata)) Vehicles.ReloadAccessPermissions(vehicle, continent.id) log.debug(s"AvatarCreate (vehicle): ${player.Name}'s ${vehicle.Definition.Name}") log.trace(s"AvatarCreate (vehicle): ${player.Name}'s ${vehicle.Definition.Name} - $vguid -> $vdata")