From 3bf7ef27a4486b5ead2aa6b8e50fba25d1151c5a Mon Sep 17 00:00:00 2001 From: Fate-JH Date: Thu, 4 Dec 2025 18:03:35 -0500 Subject: [PATCH] radiation shielding of some vehicles and mountable entities restored --- .../objects/global/GlobalDefinitionsVehicle.scala | 2 ++ .../terminals/implant/ImplantTerminalMech.scala | 7 ++++++- .../objects/serverobject/turret/FacilityTurret.scala | 6 ++++++ .../vital/resistance/StandardResistanceProfile.scala | 6 +++--- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/scala/net/psforever/objects/global/GlobalDefinitionsVehicle.scala b/src/main/scala/net/psforever/objects/global/GlobalDefinitionsVehicle.scala index 50876dd42..f71e021e2 100644 --- a/src/main/scala/net/psforever/objects/global/GlobalDefinitionsVehicle.scala +++ b/src/main/scala/net/psforever/objects/global/GlobalDefinitionsVehicle.scala @@ -1634,6 +1634,7 @@ object GlobalDefinitionsVehicle { droppod.Packet = new DroppodConverter() droppod.DeconstructionTime = Some(5 seconds) droppod.DestroyedModel = None //the adb calls out a droppod; the cyclic nature of this confounds me + droppod.RadiationShielding = 1.0f droppod.DamageUsing = DamageCalculations.AgainstAircraft droppod.DrownAtMaxDepth = false droppod.mass = 2500f @@ -1667,6 +1668,7 @@ object GlobalDefinitionsVehicle { orbital_shuttle.Packet = new OrbitalShuttleConverter orbital_shuttle.DeconstructionTime = None orbital_shuttle.DestroyedModel = None + orbital_shuttle.RadiationShielding = 1.0f orbital_shuttle.DamageUsing = DamageCalculations.AgainstNothing orbital_shuttle.DrownAtMaxDepth = false orbital_shuttle.mass = 25000f diff --git a/src/main/scala/net/psforever/objects/serverobject/terminals/implant/ImplantTerminalMech.scala b/src/main/scala/net/psforever/objects/serverobject/terminals/implant/ImplantTerminalMech.scala index 1622650b5..d63b8070a 100644 --- a/src/main/scala/net/psforever/objects/serverobject/terminals/implant/ImplantTerminalMech.scala +++ b/src/main/scala/net/psforever/objects/serverobject/terminals/implant/ImplantTerminalMech.scala @@ -2,9 +2,11 @@ package net.psforever.objects.serverobject.terminals.implant import net.psforever.objects.serverobject.hackable.Hackable -import net.psforever.objects.serverobject.mount.{Mountable, Seat} +import net.psforever.objects.serverobject.mount.{InteractWithRadiationCloudsSeatedInEntity, Mountable, Seat} import net.psforever.objects.serverobject.structures.Amenity import net.psforever.objects.serverobject.terminals.capture.CaptureTerminalAware +import net.psforever.objects.vital.resistance.StandardResistanceProfile +import net.psforever.objects.zones.interaction.InteractsWithZone import net.psforever.packet.game.TriggeredSound import net.psforever.types.Vector3 @@ -17,7 +19,10 @@ class ImplantTerminalMech(private val idef: ImplantTerminalMechDefinition) extends Amenity with Mountable with Hackable + with StandardResistanceProfile + with InteractsWithZone with CaptureTerminalAware { + interaction(new InteractWithRadiationCloudsSeatedInEntity(obj = this, range = 50f)) seats = Map(0 -> new Seat(idef.Seats.head._2)) HackSound = TriggeredSound.HackTerminal diff --git a/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala b/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala index b3e81d0a2..28d975950 100644 --- a/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala +++ b/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala @@ -3,17 +3,23 @@ package net.psforever.objects.serverobject.turret import net.psforever.objects.equipment.JammableUnit import net.psforever.objects.serverobject.interior.Sidedness +import net.psforever.objects.serverobject.mount.InteractWithRadiationCloudsSeatedInEntity import net.psforever.objects.serverobject.structures.{Amenity, AmenityOwner, Building} import net.psforever.objects.serverobject.terminals.capture.CaptureTerminalAware import net.psforever.objects.serverobject.turret.auto.AutomatedTurret import net.psforever.objects.sourcing.SourceEntry +import net.psforever.objects.vital.resistance.StandardResistanceProfile +import net.psforever.objects.zones.interaction.InteractsWithZone import net.psforever.types.Vector3 class FacilityTurret(tDef: FacilityTurretDefinition) extends Amenity with AutomatedTurret + with StandardResistanceProfile with JammableUnit + with InteractsWithZone with CaptureTerminalAware { + interaction(new InteractWithRadiationCloudsSeatedInEntity(obj = this, range = 100f)) WeaponTurret.LoadDefinition(turret = this) WhichSide = Sidedness.OutsideOf diff --git a/src/main/scala/net/psforever/objects/vital/resistance/StandardResistanceProfile.scala b/src/main/scala/net/psforever/objects/vital/resistance/StandardResistanceProfile.scala index 4c943c2ef..d01359495 100644 --- a/src/main/scala/net/psforever/objects/vital/resistance/StandardResistanceProfile.scala +++ b/src/main/scala/net/psforever/objects/vital/resistance/StandardResistanceProfile.scala @@ -10,9 +10,9 @@ import net.psforever.objects.vital.damage.DamageProfile * based on the assumption that the implementing object's `Definition` is the primary `ResistanceProfile`. */ trait StandardResistanceProfile extends ResistanceProfile { - this: PlanetSideGameObject => + _: PlanetSideGameObject => //actually check that this will work for this implementing class - assert(Definition.isInstanceOf[ResistanceProfile], s"$this object definition must extend ResistanceProfile") + assert(Definition.isInstanceOf[ResistanceProfile], s"${this.getClass.getSimpleName} object definition must extend ResistanceProfile") private val resistDef = Definition.asInstanceOf[ResistanceProfile] //cast only once def Subtract: DamageProfile = resistDef.Subtract @@ -23,5 +23,5 @@ trait StandardResistanceProfile extends ResistanceProfile { def ResistanceAggravated: Int = resistDef.ResistanceDirectHit - def RadiationShielding: Float = resistDef.ResistanceDirectHit.toFloat + def RadiationShielding: Float = resistDef.RadiationShielding }