From c4d164e3fba6558426cd7414cb84d73e02af6267 Mon Sep 17 00:00:00 2001 From: ScrawnyRonnie Date: Sat, 6 Dec 2025 16:46:34 -0500 Subject: [PATCH] wall turrets ignore walking max --- .../net/psforever/actors/session/normal/GeneralLogic.scala | 4 ++++ .../actors/session/support/ZoningOperations.scala | 1 + src/main/scala/net/psforever/objects/Player.scala | 1 + .../net/psforever/objects/equipment/EffectTarget.scala | 7 ++++--- .../net/psforever/packet/game/GenericActionMessage.scala | 2 ++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/scala/net/psforever/actors/session/normal/GeneralLogic.scala b/src/main/scala/net/psforever/actors/session/normal/GeneralLogic.scala index 2041d88d6..449980c49 100644 --- a/src/main/scala/net/psforever/actors/session/normal/GeneralLogic.scala +++ b/src/main/scala/net/psforever/actors/session/normal/GeneralLogic.scala @@ -586,6 +586,10 @@ class GeneralLogic(val ops: GeneralOperations, implicit val context: ActorContex if (avatar.lookingForSquad && (sessionLogic.squad.squadUI.isEmpty || sessionLogic.squad.squadUI(player.CharId).index == 0)) { avatarActor ! AvatarActor.SetLookingForSquad(false) } + case GenericAction.MaxEnableAutoRun => + player.maxAutoRunEnabled = true + case GenericAction.MaxDisableAutoRun => + player.maxAutoRunEnabled = false case _ => log.warn(s"GenericActionMessage: ${player.Name} can't handle $action") } 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 6a467e262..11f039ee9 100644 --- a/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala +++ b/src/main/scala/net/psforever/actors/session/support/ZoningOperations.scala @@ -2221,6 +2221,7 @@ class ZoningOperations( if (zoningStatus == Zoning.Status.Deconstructing) { stopDeconstructing() } + player.maxAutoRunEnabled = false //reset flag in case max ran through a direct gate sessionLogic.avatarResponse.lastSeenStreamMessage.clear() upstreamMessageCount = 0 setAvatar = false diff --git a/src/main/scala/net/psforever/objects/Player.scala b/src/main/scala/net/psforever/objects/Player.scala index 1099c5bdf..e84a88baf 100644 --- a/src/main/scala/net/psforever/objects/Player.scala +++ b/src/main/scala/net/psforever/objects/Player.scala @@ -89,6 +89,7 @@ class Player(var avatar: Avatar) var outfit_id: Long = 0 var outfit_window_open: Boolean = false var outfit_list_open: Boolean = false + var maxAutoRunEnabled: Boolean = false /** From PlanetsideAttributeMessage */ var PlanetsideAttribute: Array[Long] = Array.ofDim(120) diff --git a/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala b/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala index 689fcf652..53aecdb94 100644 --- a/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala +++ b/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala @@ -282,8 +282,8 @@ object EffectTarget { def FacilityTurretValidateMaxTarget(target: PlanetSideGameObject): Boolean = target match { case p: Player - if p.ExoSuit == ExoSuitType.MAX && p.VehicleSeated.isEmpty => - val now = System.currentTimeMillis() + if p.ExoSuit == ExoSuitType.MAX && p.VehicleSeated.isEmpty && p.maxAutoRunEnabled => + /* val now = System.currentTimeMillis() val pos = p.Position val faction = p.Faction val sector = p.Zone.blockMap.sector(p.Position, range = 51f) @@ -293,7 +293,8 @@ object EffectTarget { if (radarCloakedAms(sector, pos) || radarCloakedAegis(sector, pos)) false else if (radarCloakedSensor(sector, pos, faction)) entityTookDamage(p, now) || usedEquipment else if (radarEnhancedInterlink(sector, pos, faction)) true - else p.isMoving(test = 15.5d) + else p.isMoving(test = 15.5d) */ + true case _ => false } diff --git a/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala b/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala index 39111f51a..1a50426ce 100644 --- a/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala +++ b/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala @@ -21,6 +21,8 @@ object GenericAction extends IntEnum[GenericAction] { final case object NewCharacterBasicTrainingPrompt extends GenericAction(value = 14) final case object MaxAnchorsExtend_RCV extends GenericAction(value = 15) final case object MaxAnchorsRelease_RCV extends GenericAction(value = 16) + final case object MaxEnableAutoRun extends GenericAction(value = 17) + final case object MaxDisableAutoRun extends GenericAction(value = 18) final case object MaxSpecialEffect_RCV extends GenericAction(value = 20) final case object StopMaxSpecialEffect_RCV extends GenericAction(value = 21) final case object CavernFacilityCapture extends GenericAction(value = 22)