Merge pull request #1241 from Fate-JH/cerberus-off-damage

Unchained Dog Bite
This commit is contained in:
Fate-JH 2024-10-01 16:03:14 -04:00 committed by GitHub
commit b8da7e4981
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 2 deletions

View file

@ -1783,7 +1783,7 @@ object GlobalDefinitionsProjectile {
spitfire_aa_ammo_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(spitfire_aa_ammo_projectile)
spitfire_aa_ammo_projectile.Modifiers = List(
//FlakHit,
CerberusTurretWrongTarget,
FlakBurst,
MaxDistanceCutoff
)

View file

@ -1,9 +1,10 @@
// Copyright (c) 2020 PSForever
package net.psforever.objects.vital.projectile
import net.psforever.objects.GlobalDefinitions
import net.psforever.objects.ballistics._
import net.psforever.objects.equipment.ChargeFireModeDefinition
import net.psforever.objects.sourcing.PlayerSource
import net.psforever.objects.sourcing.{PlayerSource, VehicleSource}
import net.psforever.objects.vital.base._
import net.psforever.objects.vital.damage.DamageModifierFunctions
import net.psforever.objects.vital.interaction.DamageInteraction
@ -354,6 +355,19 @@ case object ShieldAgainstRadiation extends ProjectileDamageModifiers.Mod {
}
}
/** The Cerberus turret can not target any entities besides flying vehicles.
* An exception to this rule, however, happens when retaliating against something that damaged it first. */
case object CerberusTurretWrongTarget extends ProjectileDamageModifiers.Mod {
def calculate(damage: Int, data: DamageInteraction, cause: ProjectileReason): Int = {
data.target match {
case v: VehicleSource if GlobalDefinitions.isFlightVehicle(v.Definition) =>
damage
case _ =>
damage - (math.random() * 3d).toInt - 1
}
}
}
/* Functions */
object ProjectileDamageModifierFunctions {
/**