Merge pull request #1000 from Fate-JH/no-drown-bfr

Drown Better
This commit is contained in:
Fate-JH 2022-06-14 02:17:11 -04:00 committed by GitHub
commit 546a4e4f0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 10 deletions

View file

@ -1875,6 +1875,8 @@ object GlobalDefinitions {
/** /**
* Using the definition for a `Vehicle` determine whether it can fly. * Using the definition for a `Vehicle` determine whether it can fly.
* Does not count the flying battleframe robotics vehicles.
* @see `isBattleFrameFlightVehicle`
* @param vdef the `VehicleDefinition` of the vehicle * @param vdef the `VehicleDefinition` of the vehicle
* @return `true`, if it is; `false`, otherwise * @return `true`, if it is; `false`, otherwise
*/ */
@ -1929,6 +1931,7 @@ object GlobalDefinitions {
/** /**
* Using the definition for a `Vehicle` determine whether it is a frame vehicle, * Using the definition for a `Vehicle` determine whether it is a frame vehicle,
* primarily a flight-variant battleframe vehicle. * primarily a flight-variant battleframe vehicle.
* @see `isFlightVehicle`
* @param vdef the `VehicleDefinition` of the vehicle * @param vdef the `VehicleDefinition` of the vehicle
* @return `true`, if it is; `false`, otherwise * @return `true`, if it is; `false`, otherwise
*/ */
@ -8623,7 +8626,7 @@ object GlobalDefinitions {
} }
aphelion_gunner.DrownAtMaxDepth = true aphelion_gunner.DrownAtMaxDepth = true
aphelion_gunner.MaxDepth = 5.09375f aphelion_gunner.MaxDepth = 5.09375f
aphelion_gunner.UnderwaterLifespan(suffocation = 6000L, recovery = 6000L) aphelion_gunner.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
aphelion_gunner.Geometry = GeometryForm.representByCylinder(radius = 1.2618f, height = 6.01562f) aphelion_gunner.Geometry = GeometryForm.representByCylinder(radius = 1.2618f, height = 6.01562f)
aphelion_gunner.collision.avatarCollisionDamageMax = 300 aphelion_gunner.collision.avatarCollisionDamageMax = 300
aphelion_gunner.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60))) aphelion_gunner.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60)))
@ -8674,7 +8677,7 @@ object GlobalDefinitions {
} }
colossus_gunner.DrownAtMaxDepth = true colossus_gunner.DrownAtMaxDepth = true
colossus_gunner.MaxDepth = 5.515625f colossus_gunner.MaxDepth = 5.515625f
colossus_gunner.UnderwaterLifespan(suffocation = 6000L, recovery = 6000L) colossus_gunner.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
colossus_gunner.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 5.984375f) colossus_gunner.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 5.984375f)
colossus_gunner.collision.avatarCollisionDamageMax = 300 colossus_gunner.collision.avatarCollisionDamageMax = 300
colossus_gunner.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60))) colossus_gunner.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60)))
@ -8725,7 +8728,7 @@ object GlobalDefinitions {
} }
peregrine_gunner.DrownAtMaxDepth = true peregrine_gunner.DrownAtMaxDepth = true
peregrine_gunner.MaxDepth = 6.03125f peregrine_gunner.MaxDepth = 6.03125f
peregrine_gunner.UnderwaterLifespan(suffocation = 6000L, recovery = 6000L) peregrine_gunner.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
peregrine_gunner.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 6.421875f) peregrine_gunner.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 6.421875f)
peregrine_gunner.collision.avatarCollisionDamageMax = 300 peregrine_gunner.collision.avatarCollisionDamageMax = 300
peregrine_gunner.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60))) peregrine_gunner.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60)))
@ -8775,7 +8778,7 @@ object GlobalDefinitions {
} }
aphelion_flight.DrownAtMaxDepth = true aphelion_flight.DrownAtMaxDepth = true
aphelion_flight.MaxDepth = 5.09375f aphelion_flight.MaxDepth = 5.09375f
aphelion_flight.UnderwaterLifespan(suffocation = 6000L, recovery = 6000L) aphelion_flight.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
aphelion_flight.Geometry = GeometryForm.representByCylinder(radius = 1.98045f, height = 6.03125f) aphelion_flight.Geometry = GeometryForm.representByCylinder(radius = 1.98045f, height = 6.03125f)
aphelion_flight.MaxCapacitor = 156 aphelion_flight.MaxCapacitor = 156
aphelion_flight.DefaultCapacitor = aphelion_flight.MaxCapacitor aphelion_flight.DefaultCapacitor = aphelion_flight.MaxCapacitor
@ -8829,7 +8832,7 @@ object GlobalDefinitions {
} }
colossus_flight.DrownAtMaxDepth = true colossus_flight.DrownAtMaxDepth = true
colossus_flight.MaxDepth = 5.515625f colossus_flight.MaxDepth = 5.515625f
colossus_flight.UnderwaterLifespan(suffocation = 6000L, recovery = 6000L) colossus_flight.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
colossus_flight.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 5.984375f) colossus_flight.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 5.984375f)
colossus_flight.MaxCapacitor = 156 colossus_flight.MaxCapacitor = 156
colossus_flight.DefaultCapacitor = aphelion_flight.MaxCapacitor colossus_flight.DefaultCapacitor = aphelion_flight.MaxCapacitor
@ -8883,7 +8886,7 @@ object GlobalDefinitions {
} }
peregrine_flight.DrownAtMaxDepth = true peregrine_flight.DrownAtMaxDepth = true
peregrine_flight.MaxDepth = 6.03125f peregrine_flight.MaxDepth = 6.03125f
peregrine_flight.UnderwaterLifespan(suffocation = 6000L, recovery = 6000L) peregrine_flight.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
peregrine_flight.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 6.421875f) peregrine_flight.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 6.421875f)
peregrine_flight.MaxCapacitor = 156 peregrine_flight.MaxCapacitor = 156
peregrine_flight.DefaultCapacitor = aphelion_flight.MaxCapacitor peregrine_flight.DefaultCapacitor = aphelion_flight.MaxCapacitor

View file

@ -82,7 +82,7 @@ class VehicleControl(vehicle: Vehicle)
SetInteraction(EnvironmentAttribute.Lava, doInteractingWithLava) SetInteraction(EnvironmentAttribute.Lava, doInteractingWithLava)
SetInteraction(EnvironmentAttribute.Death, doInteractingWithDeath) SetInteraction(EnvironmentAttribute.Death, doInteractingWithDeath)
SetInteraction(EnvironmentAttribute.MovementFieldTrigger, doInteractingWithMovementTrigger) SetInteraction(EnvironmentAttribute.MovementFieldTrigger, doInteractingWithMovementTrigger)
if (!vehicle.Definition.CanFly || GlobalDefinitions.isBattleFrameFlightVehicle(vehicle.Definition)) { if (!GlobalDefinitions.isFlightVehicle(vehicle.Definition)) {
//can recover from sinking disability //can recover from sinking disability
SetInteractionStop(EnvironmentAttribute.Water, stopInteractingWithWater) SetInteractionStop(EnvironmentAttribute.Water, stopInteractingWithWater)
} }
@ -584,7 +584,7 @@ class VehicleControl(vehicle: Vehicle)
def doInteractingWithWater(obj: PlanetSideServerObject, body: PieceOfEnvironment, data: Option[OxygenStateTarget]): Unit = { def doInteractingWithWater(obj: PlanetSideServerObject, body: PieceOfEnvironment, data: Option[OxygenStateTarget]): Unit = {
val (effect: Boolean, time: Long, percentage: Float) = { val (effect: Boolean, time: Long, percentage: Float) = {
val (a, b, c) = RespondsToZoneEnvironment.drowningInWateryConditions(obj, submergedCondition, interactionTime) val (a, b, c) = RespondsToZoneEnvironment.drowningInWateryConditions(obj, submergedCondition, interactionTime)
if (a && vehicle.Definition.CanFly && !GlobalDefinitions.isBattleFrameFlightVehicle(vehicle.Definition)) { if (a && GlobalDefinitions.isFlightVehicle(vehicle.Definition)) {
(true, 0L, 0f) //no progress bar (true, 0L, 0f) //no progress bar
} else { } else {
(a, b, c) (a, b, c)
@ -594,7 +594,7 @@ class VehicleControl(vehicle: Vehicle)
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.ExecutionContext.Implicits.global
submergedCondition = Some(OxygenState.Suffocation) submergedCondition = Some(OxygenState.Suffocation)
interactionTime = System.currentTimeMillis() + time interactionTime = System.currentTimeMillis() + time
interactionTimer = context.system.scheduler.scheduleOnce(delay = time milliseconds, self, VehicleControl.Disable()) interactionTimer = context.system.scheduler.scheduleOnce(delay = time.milliseconds, self, VehicleControl.Disable())
doInteractingWithWaterToTargets( doInteractingWithWaterToTargets(
percentage, percentage,
body, body,
@ -760,7 +760,7 @@ class VehicleControl(vehicle: Vehicle)
case Some(body) => case Some(body) =>
val percentage: Float = { val percentage: Float = {
val (a, _, c) = RespondsToZoneEnvironment.drowningInWateryConditions(vehicle, submergedCondition, interactionTime) val (a, _, c) = RespondsToZoneEnvironment.drowningInWateryConditions(vehicle, submergedCondition, interactionTime)
if (a && vehicle.Definition.CanFly) { if (a && GlobalDefinitions.isFlightVehicle(vehicle.Definition)) {
0f //no progress bar 0f //no progress bar
} else { } else {
c c