mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-11 22:44:37 +00:00
introduction of aggravated damage properties and modification of damage pathways such that 'aggravated' is treated as a unique damage type
This commit is contained in:
parent
cf9e4ea194
commit
e5d0690c42
20 changed files with 696 additions and 371 deletions
|
|
@ -0,0 +1,37 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package net.psforever.objects.ballistics
|
||||
|
||||
import net.psforever.objects.vital.DamageType
|
||||
|
||||
object AggravatedEffect extends Enumeration {
|
||||
type Type = Value
|
||||
val Comet, Fire, Plasma, Napalm, None = Value
|
||||
}
|
||||
|
||||
final case class AggravatedInfo(damage_type : DamageType.Value,
|
||||
degradation_percentage : Float,
|
||||
infliction_rate : Long) {
|
||||
assert(damage_type == DamageType.Direct || damage_type == DamageType.Splash, s"aggravated damage is an unsupported type - $damage_type")
|
||||
}
|
||||
|
||||
final case class AggravatedDamage(info : List[AggravatedInfo],
|
||||
effect_type : AggravatedEffect.Value,
|
||||
duration : Long,
|
||||
max_factor : Float,
|
||||
cumulative_damage_degrade : Boolean,
|
||||
vanu_aggravated : Boolean)
|
||||
|
||||
object AggravatedDamage {
|
||||
def apply(info : AggravatedInfo,
|
||||
effect_type : AggravatedEffect.Value,
|
||||
duration : Long,
|
||||
max_factor : Float) : AggravatedDamage =
|
||||
AggravatedDamage(List(info), effect_type, duration, max_factor, cumulative_damage_degrade = true, vanu_aggravated = false)
|
||||
|
||||
def apply(info : AggravatedInfo,
|
||||
effect_type : AggravatedEffect.Value,
|
||||
duration : Long,
|
||||
max_factor : Float,
|
||||
vanu_aggravated : Boolean) : AggravatedDamage =
|
||||
AggravatedDamage(List(info), effect_type, duration, max_factor, cumulative_damage_degrade = true, vanu_aggravated)
|
||||
}
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
//package net.psforever.objects.vital
|
||||
//
|
||||
//import net.psforever.objects.vital.StandardAmenityDamage.None
|
||||
//import net.psforever.objects.vital.StandardDeployableDamage.None
|
||||
//import net.psforever.objects.vital.damage._
|
||||
//import net.psforever.objects.vital.damage.DamageCalculations._
|
||||
//import net.psforever.objects.vital.projectile.ProjectileCalculations
|
||||
//
|
||||
///**
|
||||
// * A protected super class for calculating "no damage."
|
||||
// * Used for `NoDamage` but also for the base of `*LashDamage` calculation objects
|
||||
// * to maintain the polymorphic identity of `DamageCalculations`.
|
||||
// */
|
||||
//protected class NoDamageBase
|
||||
// extends DamageCalculations(
|
||||
// DamageCalculations.NoDamage,
|
||||
// DamageWithModifiers(NoDamageAgainst),
|
||||
// TooFar
|
||||
// )
|
||||
//
|
||||
//object NoDamage extends NoDamageBase
|
||||
//
|
||||
//object InfantryHitDamage
|
||||
// extends DamageCalculations(
|
||||
// DirectHitDamageWithDegrade,
|
||||
// DamageWithModifiers(DamageAgainstExoSuit),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object MaxHitDamage
|
||||
// extends DamageCalculations(
|
||||
// DirectHitDamageWithDegrade,
|
||||
// DamageWithModifiers(DamageAgainstMaxSuit),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object VehicleHitDamage
|
||||
// extends DamageCalculations(
|
||||
// DirectHitDamageWithDegrade,
|
||||
// DamageWithModifiers(DamageAgainstVehicle),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object AircraftHitDamage
|
||||
// extends DamageCalculations(
|
||||
// DirectHitDamageWithDegrade,
|
||||
// DamageWithModifiers(DamageAgainstAircraft),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object InfantrySplashDamage
|
||||
// extends DamageCalculations(
|
||||
// SplashDamageWithRadialDegrade,
|
||||
// DamageWithModifiers(DamageAgainstExoSuit),
|
||||
// DistanceFromExplosionToTarget
|
||||
// )
|
||||
//
|
||||
//object MaxSplashDamage
|
||||
// extends DamageCalculations(
|
||||
// SplashDamageWithRadialDegrade,
|
||||
// DamageWithModifiers(DamageAgainstMaxSuit),
|
||||
// DistanceFromExplosionToTarget
|
||||
// )
|
||||
//
|
||||
//object VehicleSplashDamage
|
||||
// extends DamageCalculations(
|
||||
// SplashDamageWithRadialDegrade,
|
||||
// DamageWithModifiers(DamageAgainstVehicle),
|
||||
// DistanceFromExplosionToTarget
|
||||
// )
|
||||
//
|
||||
//object AircraftSplashDamage
|
||||
// extends DamageCalculations(
|
||||
// SplashDamageWithRadialDegrade,
|
||||
// DamageWithModifiers(DamageAgainstAircraft),
|
||||
// DistanceFromExplosionToTarget
|
||||
// )
|
||||
//
|
||||
//object InfantrySplashDamageDirect
|
||||
// extends DamageCalculations(
|
||||
// SplashDamageWithRadialDegrade,
|
||||
// DamageWithModifiers(DamageAgainstAircraft),
|
||||
// NoDistance
|
||||
// )
|
||||
//
|
||||
//object InfantryLashDamage
|
||||
// extends DamageCalculations(
|
||||
// LashDamage,
|
||||
// DamageWithModifiers(DamageAgainstExoSuit),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object MaxLashDamage
|
||||
// extends DamageCalculations(
|
||||
// LashDamage,
|
||||
// DamageWithModifiers(DamageAgainstMaxSuit),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object VehicleLashDamage
|
||||
// extends DamageCalculations(
|
||||
// LashDamage,
|
||||
// DamageWithModifiers(DamageAgainstVehicle),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object AircraftLashDamage
|
||||
// extends DamageCalculations(
|
||||
// LashDamage,
|
||||
// DamageWithModifiers(DamageAgainstAircraft),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object AmenityHitDamage
|
||||
// extends DamageCalculations(
|
||||
// DirectHitDamageWithDegrade,
|
||||
// DamageWithModifiers(DamageAgainstVehicle),
|
||||
// DistanceBetweenTargetandSource
|
||||
// )
|
||||
//
|
||||
//object AmenitySplashDamage
|
||||
// extends DamageCalculations(
|
||||
// SplashDamageWithRadialDegrade,
|
||||
// DamageWithModifiers(DamageAgainstVehicle),
|
||||
// DistanceFromExplosionToTarget
|
||||
// )
|
||||
//
|
||||
//object NoDamageSelection extends DamageSelection {
|
||||
// def Direct = None
|
||||
// def Splash = None
|
||||
// def Lash = None
|
||||
// def Aggravated : ProjectileCalculations.Form = None
|
||||
//}
|
||||
//
|
||||
//object StandardInfantryDamage extends DamageSelection {
|
||||
// def Direct : ProjectileCalculations.Form = InfantryHitDamage.Calculate
|
||||
// def Splash : ProjectileCalculations.Form = InfantrySplashDamage.Calculate
|
||||
// def Lash : ProjectileCalculations.Form = InfantryLashDamage.Calculate
|
||||
// def Aggravated : ProjectileCalculations.Form = InfantrySplashDamage.Calculate
|
||||
//}
|
||||
//
|
||||
//object StandardMaxDamage extends DamageSelection {
|
||||
// def Direct : ProjectileCalculations.Form = MaxHitDamage.Calculate
|
||||
// def Splash : ProjectileCalculations.Form = MaxSplashDamage.Calculate
|
||||
// def Lash : ProjectileCalculations.Form = MaxLashDamage.Calculate
|
||||
// def Aggravated : ProjectileCalculations.Form = None
|
||||
//}
|
||||
//
|
||||
//object StandardVehicleDamage extends DamageSelection {
|
||||
// def Direct : ProjectileCalculations.Form = VehicleHitDamage.Calculate
|
||||
// def Splash : ProjectileCalculations.Form = VehicleSplashDamage.Calculate
|
||||
// def Lash : ProjectileCalculations.Form = VehicleLashDamage.Calculate
|
||||
// def Aggravated : ProjectileCalculations.Form = None
|
||||
//}
|
||||
//
|
||||
//object StandardAircraftDamage extends DamageSelection {
|
||||
// def Direct : ProjectileCalculations.Form = AircraftHitDamage.Calculate
|
||||
// def Splash : ProjectileCalculations.Form = AircraftSplashDamage.Calculate
|
||||
// def Lash : ProjectileCalculations.Form = AircraftLashDamage.Calculate
|
||||
// def Aggravated : ProjectileCalculations.Form = None
|
||||
//}
|
||||
//
|
||||
//object StandardDeployableDamage extends DamageSelection {
|
||||
// def Direct : ProjectileCalculations.Form = VehicleHitDamage.Calculate
|
||||
// def Splash : ProjectileCalculations.Form = VehicleSplashDamage.Calculate
|
||||
// def Lash : ProjectileCalculations.Form = NoDamage.Calculate
|
||||
// def Aggravated : ProjectileCalculations.Form = None
|
||||
//}
|
||||
//
|
||||
//object StandardAmenityDamage extends DamageSelection {
|
||||
// def Direct : ProjectileCalculations.Form = AmenityHitDamage.Calculate
|
||||
// def Splash : ProjectileCalculations.Form = AmenitySplashDamage.Calculate
|
||||
// def Lash : ProjectileCalculations.Form = NoDamage.Calculate
|
||||
// def Aggravated : ProjectileCalculations.Form = None
|
||||
//}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
//package net.psforever.objects.vital.damage
|
||||
//
|
||||
//import net.psforever.objects.ballistics.ResolvedProjectile
|
||||
//import net.psforever.objects.vital.{DamageType, NoDamage}
|
||||
//import net.psforever.objects.vital.projectile.ProjectileCalculations
|
||||
//
|
||||
///**
|
||||
// * Maintain information about three primary forms of damage calculation
|
||||
// * and a means to test which calculation is valid in a given situation.
|
||||
// */
|
||||
//trait DamageSelection {
|
||||
// final def None: ProjectileCalculations.Form = NoDamage
|
||||
//
|
||||
// def Direct : ProjectileCalculations.Form
|
||||
// def Splash : ProjectileCalculations.Form
|
||||
// def Lash : ProjectileCalculations.Form
|
||||
// def Aggravated : ProjectileCalculations.Form
|
||||
//
|
||||
// def apply(data : ResolvedProjectile) : ProjectileCalculations.Form = data.projectile.profile.ProjectileDamageType match {
|
||||
// case DamageType.Direct => Direct
|
||||
// case DamageType.Splash => Splash
|
||||
// case DamageType.Lash => Lash
|
||||
// case DamageType.Aggravated => Aggravated
|
||||
// case _ => None
|
||||
// }
|
||||
//
|
||||
// def apply(res : DamageType.Value) : ProjectileCalculations.Form = res match {
|
||||
// case DamageType.Direct => Direct
|
||||
// case DamageType.Splash => Splash
|
||||
// case DamageType.Lash => Lash
|
||||
// case DamageType.Aggravated => Aggravated
|
||||
// case _ => None
|
||||
// }
|
||||
//}
|
||||
Loading…
Add table
Add a link
Reference in a new issue