mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-02-13 11:43:40 +00:00
working comet calculations
This commit is contained in:
parent
80c1a34fb0
commit
a79fc6bd2f
5 changed files with 107 additions and 26 deletions
|
|
@ -2,7 +2,7 @@
|
|||
package net.psforever.objects
|
||||
|
||||
import net.psforever.objects.avatar.Certification
|
||||
import net.psforever.objects.ballistics.{AggravatedDamage, AggravatedInfo, Projectiles}
|
||||
import net.psforever.objects.ballistics.{AggravatedDamage, AggravatedInfo, AggravatedTiming, Projectiles}
|
||||
import net.psforever.objects.ce.{DeployableCategory, DeployedItem}
|
||||
import net.psforever.objects.definition._
|
||||
import net.psforever.objects.definition.converter._
|
||||
|
|
@ -2454,7 +2454,7 @@ object GlobalDefinitions {
|
|||
comet_projectile.Aggravated = AggravatedDamage(
|
||||
AggravatedInfo(DamageType.Direct, 0.2f, 500),
|
||||
Aura.Comet,
|
||||
2000,
|
||||
AggravatedTiming(2000, 4),
|
||||
10f,
|
||||
List(
|
||||
TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player),
|
||||
|
|
@ -2464,6 +2464,10 @@ object GlobalDefinitions {
|
|||
comet_projectile.InitialVelocity = 80
|
||||
comet_projectile.Lifespan = 3.1f
|
||||
ProjectileDefinition.CalculateDerivedFields(comet_projectile)
|
||||
comet_projectile.Modifiers = List(
|
||||
DamageModifiers.CometAggravated,
|
||||
DamageModifiers.CometAggravatedBurn
|
||||
)
|
||||
|
||||
dualcycler_projectile.Name = "dualcycler_projectile"
|
||||
dualcycler_projectile.Damage0 = 18
|
||||
|
|
@ -2611,7 +2615,7 @@ object GlobalDefinitions {
|
|||
flamethrower_fireball.Aggravated = AggravatedDamage(
|
||||
List(AggravatedInfo(DamageType.Direct, 0.9f, 500), AggravatedInfo(DamageType.Splash, 0.9f, 500)),
|
||||
Aura.Fire,
|
||||
5000,
|
||||
AggravatedTiming(5000),
|
||||
0.1f,
|
||||
false,
|
||||
false,
|
||||
|
|
@ -2641,7 +2645,7 @@ object GlobalDefinitions {
|
|||
flamethrower_projectile.Aggravated = AggravatedDamage(
|
||||
List(AggravatedInfo(DamageType.Direct, 0.5f, 500)),
|
||||
Aura.Fire,
|
||||
5000,
|
||||
AggravatedTiming(5000),
|
||||
0.5f,
|
||||
false,
|
||||
false,
|
||||
|
|
@ -3507,7 +3511,7 @@ object GlobalDefinitions {
|
|||
plasma_cartridge_projectile.Aggravated = AggravatedDamage(
|
||||
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
|
||||
Aura.Plasma,
|
||||
3000,
|
||||
AggravatedTiming(3000),
|
||||
1.5f,
|
||||
true,
|
||||
false,
|
||||
|
|
@ -3535,7 +3539,7 @@ object GlobalDefinitions {
|
|||
plasma_cartridge_projectile_b.Aggravated = AggravatedDamage(
|
||||
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
|
||||
Aura.Plasma,
|
||||
3000,
|
||||
AggravatedTiming(3000),
|
||||
1.5f,
|
||||
true,
|
||||
false,
|
||||
|
|
@ -3562,7 +3566,7 @@ object GlobalDefinitions {
|
|||
plasma_grenade_projectile.Aggravated = AggravatedDamage(
|
||||
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
|
||||
Aura.Plasma,
|
||||
3000,
|
||||
AggravatedTiming(3000),
|
||||
1.5f,
|
||||
true,
|
||||
false,
|
||||
|
|
@ -3590,7 +3594,7 @@ object GlobalDefinitions {
|
|||
plasma_grenade_projectile_B.Aggravated = AggravatedDamage(
|
||||
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
|
||||
Aura.Plasma,
|
||||
3000,
|
||||
AggravatedTiming(3000),
|
||||
1.5f,
|
||||
true,
|
||||
false,
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ object Damageable {
|
|||
*/
|
||||
def CanDamage(obj: Vitality with FactionAffinity, damage: Int, data: ResolvedProjectile): Boolean = {
|
||||
val definition = obj.Definition
|
||||
damage > 0 &&
|
||||
(damage > 0 || data.projectile.profile.Aggravated.nonEmpty) &&
|
||||
definition.Damageable &&
|
||||
(definition.DamageableByFriendlyFire ||
|
||||
(data.projectile.owner.Faction != obj.Faction ||
|
||||
|
|
|
|||
|
|
@ -269,4 +269,33 @@ object DamageModifiers {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
case object CometAggravated extends Mod {
|
||||
def Calculate: DamageModifiers.Format = formula
|
||||
|
||||
private def formula(damage: Int, data: ResolvedProjectile): Int = {
|
||||
if (data.resolution == ProjectileResolution.AggravatedDirect) {
|
||||
0
|
||||
} else {
|
||||
damage
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case object CometAggravatedBurn extends Mod {
|
||||
def Calculate: DamageModifiers.Format = formula
|
||||
|
||||
private def formula(damage: Int, data: ResolvedProjectile): Int = {
|
||||
if (data.resolution == ProjectileResolution.AggravatedDirectBurn) {
|
||||
data.projectile.profile.Aggravated match {
|
||||
case Some(_) =>
|
||||
(damage * data.projectile.quality) toInt
|
||||
case _ =>
|
||||
0
|
||||
}
|
||||
} else {
|
||||
damage
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue