cancel zoning, driver rejoin, implant

This commit is contained in:
ScrawnyRonnie 2023-12-12 12:21:33 -05:00
parent 46b446048d
commit 213943dc1d
3 changed files with 10 additions and 16 deletions

View file

@ -219,7 +219,7 @@ class SessionData(
if (isMovingPlus) { if (isMovingPlus) {
if (zoning.zoningStatus == Zoning.Status.Deconstructing) { if (zoning.zoningStatus == Zoning.Status.Deconstructing) {
stopDeconstructing() stopDeconstructing()
} else { } else if (zoning.zoningStatus != Zoning.Status.None) {
zoning.CancelZoningProcessWithDescriptiveReason("cancel_motion") zoning.CancelZoningProcessWithDescriptiveReason("cancel_motion")
} }
} }

View file

@ -2,6 +2,7 @@
package net.psforever.actors.session.support package net.psforever.actors.session.support
import akka.actor.{ActorContext, typed} import akka.actor.{ActorContext, typed}
import net.psforever.objects.zones.Zoning
import net.psforever.objects.zones.exp.ToDatabase import net.psforever.objects.zones.exp.ToDatabase
import scala.collection.mutable import scala.collection.mutable
@ -50,7 +51,8 @@ private[support] class WeaponAndProjectileOperations(
private[support] var shotsWhileDead: Int = 0 private[support] var shotsWhileDead: Int = 0
private val projectiles: Array[Option[Projectile]] = private val projectiles: Array[Option[Projectile]] =
Array.fill[Option[Projectile]](Projectile.rangeUID - Projectile.baseUID)(None) Array.fill[Option[Projectile]](Projectile.rangeUID - Projectile.baseUID)(None)
private var zoningOpt: Option[ZoningOperations] = None
def zoning: ZoningOperations = zoningOpt.orNull
/* packets */ /* packets */
def handleWeaponFire(pkt: WeaponFireMessage): Unit = { def handleWeaponFire(pkt: WeaponFireMessage): Unit = {
@ -536,7 +538,9 @@ private[support] class WeaponAndProjectileOperations(
weaponGUID: PlanetSideGUID, weaponGUID: PlanetSideGUID,
projectileGUID: PlanetSideGUID projectileGUID: PlanetSideGUID
): (Option[PlanetSideGameObject with Container], Option[Tool]) = { ): (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) { if (player.isShielded) {
// Cancel NC MAX shield if it's active // Cancel NC MAX shield if it's active
sessionData.toggleMaxSpecialState(enable = false) sessionData.toggleMaxSpecialState(enable = false)

View file

@ -889,7 +889,7 @@ class ZoningOperations(
def beginZoningCountdown(runnable: Runnable): Unit = { def beginZoningCountdown(runnable: Runnable): Unit = {
val descriptor = zoningType.toString.toLowerCase val descriptor = zoningType.toString.toLowerCase
if (zoningStatus == Zoning.Status.Request) { if (zoningStatus == Zoning.Status.Request) {
avatarActor ! AvatarActor.DeinitializeImplants() avatarActor ! AvatarActor.DeactivateActiveImplants()
zoningStatus = Zoning.Status.Countdown zoningStatus = Zoning.Status.Countdown
val (time, origin) = ZoningStartInitialMessageAndTimer() val (time, origin) = ZoningStartInitialMessageAndTimer()
zoningCounter = time zoningCounter = time
@ -2300,18 +2300,8 @@ class ZoningOperations(
//vehicle and driver/passenger //vehicle and driver/passenger
val vdef = vehicle.Definition val vdef = vehicle.Definition
val vguid = vehicle.GUID val vguid = vehicle.GUID
val vdata = if (seat == 0) { val vdata = vdef.Packet.ConstructorData(vehicle).get
val seat = vehicle.Seats(0) sendResponse(ObjectCreateMessage(vehicle.Definition.ObjectId, vguid, vdata))
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
}
Vehicles.ReloadAccessPermissions(vehicle, continent.id) Vehicles.ReloadAccessPermissions(vehicle, continent.id)
log.debug(s"AvatarCreate (vehicle): ${player.Name}'s ${vehicle.Definition.Name}") log.debug(s"AvatarCreate (vehicle): ${player.Name}'s ${vehicle.Definition.Name}")
log.trace(s"AvatarCreate (vehicle): ${player.Name}'s ${vehicle.Definition.Name} - $vguid -> $vdata") log.trace(s"AvatarCreate (vehicle): ${player.Name}'s ${vehicle.Definition.Name} - $vguid -> $vdata")