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 (zoning.zoningStatus == Zoning.Status.Deconstructing) {
stopDeconstructing()
} else {
} else if (zoning.zoningStatus != Zoning.Status.None) {
zoning.CancelZoningProcessWithDescriptiveReason("cancel_motion")
}
}

View file

@ -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)

View file

@ -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")