PSF-LoginServer/src/main/scala/net/psforever/objects/GlobalDefinitions.scala
2023-11-29 20:05:45 -05:00

10135 lines
450 KiB
Scala

// Copyright (c) 2017 PSForever
package net.psforever.objects
import net.psforever.objects.avatar.Certification
import net.psforever.objects.ballistics._
import net.psforever.objects.ce.{DeployableCategory, DeployedItem}
import net.psforever.objects.definition._
import net.psforever.objects.definition.converter._
import net.psforever.objects.equipment._
import net.psforever.objects.geometry.GeometryForm
import net.psforever.objects.inventory.InventoryTile
import net.psforever.objects.locker.LockerContainerDefinition
import net.psforever.objects.serverobject.aura.Aura
import net.psforever.objects.serverobject.doors.DoorDefinition
import net.psforever.objects.serverobject.generator.GeneratorDefinition
import net.psforever.objects.serverobject.locks.IFFLockDefinition
import net.psforever.objects.serverobject.mblocker.LockerDefinition
import net.psforever.objects.serverobject.mount._
import net.psforever.objects.serverobject.pad.VehicleSpawnPadDefinition
import net.psforever.objects.serverobject.painbox.PainboxDefinition
import net.psforever.objects.serverobject.terminals._
import net.psforever.objects.serverobject.tube.SpawnTubeDefinition
import net.psforever.objects.serverobject.resourcesilo.ResourceSiloDefinition
import net.psforever.objects.serverobject.structures.{AmenityDefinition, AutoRepairStats, BuildingDefinition, WarpGateDefinition}
import net.psforever.objects.serverobject.terminals.capture.CaptureTerminalDefinition
import net.psforever.objects.serverobject.terminals.implant.{ImplantTerminalDefinition, ImplantTerminalMechDefinition}
import net.psforever.objects.serverobject.turret.{FacilityTurretDefinition, TurretUpgrade}
import net.psforever.objects.vehicles.{DestroyedVehicle, InternalTelepadDefinition, UtilityType, VehicleSubsystemEntry}
import net.psforever.objects.vital.base.DamageType
import net.psforever.objects.vital.damage._
import net.psforever.objects.vital.etc.{ShieldAgainstRadiation => _, _}
import net.psforever.objects.vital.projectile._
import net.psforever.objects.vital.prop.DamageWithPosition
import net.psforever.objects.vital._
import net.psforever.types.{ExoSuitType, ImplantType, PlanetSideEmpire, Vector3}
import net.psforever.types._
import net.psforever.objects.serverobject.llu.{CaptureFlagDefinition, CaptureFlagSocketDefinition}
import net.psforever.objects.serverobject.terminals.tabs._
import net.psforever.objects.vital.collision.TrapCollisionDamageMultiplier
import scala.annotation.switch
import scala.collection.mutable
import scala.concurrent.duration._
object GlobalDefinitions {
/*
characters
*/
val avatar = new AvatarDefinition(121)
avatar.MaxHealth = 100
avatar.Damageable = true
avatar.DrownAtMaxDepth = true
avatar.MaxDepth = 1.609375f //Male, standing, not MAX
avatar.UnderwaterLifespan(suffocation = 60000L, recovery = 10000L)
avatar.collision.xy = CollisionXYData(Array((0.1f, 0), (0.2f, 5), (0.50f, 15), (0.75f, 20), (1f, 30))) //not in the ADB
avatar.collision.z = CollisionZData(Array((0.1f, 0), (5f, 1), (10f, 3), (20f, 5), (35f, 7), (50f, 10), (75f, 40), (100f, 100))) //not in the ADB
avatar.maxForwardSpeed = 27f //not in the ADB; running speed
/*
exo-suits
*/
val Standard = ExoSuitDefinition(ExoSuitType.Standard)
val Agile = ExoSuitDefinition(ExoSuitType.Agile)
val Reinforced = ExoSuitDefinition(ExoSuitType.Reinforced)
val Infiltration = ExoSuitDefinition(ExoSuitType.Infiltration)
val VSMAX = SpecialExoSuitDefinition(ExoSuitType.MAX)
val TRMAX = SpecialExoSuitDefinition(ExoSuitType.MAX)
val NCMAX = SpecialExoSuitDefinition(ExoSuitType.MAX)
init_exosuit()
/*
Implants
*/
val advanced_regen = new ImplantDefinition(ImplantType.AdvancedRegen) {
Name = "advanced_regen"
}
advanced_regen.InitializationDuration = 120
advanced_regen.StaminaCost = 2
advanced_regen.CostIntervalDefault = 500
val targeting = new ImplantDefinition(ImplantType.Targeting) {
Name = "targeting"
}
targeting.InitializationDuration = 60
val audio_amplifier = new ImplantDefinition(ImplantType.AudioAmplifier) {
Name = "audio_amplifier"
}
audio_amplifier.InitializationDuration = 60
audio_amplifier.StaminaCost = 1
audio_amplifier.CostIntervalDefault = 1000
val darklight_vision = new ImplantDefinition(ImplantType.DarklightVision) {
Name = "darklight_vision"
}
darklight_vision.InitializationDuration = 60
darklight_vision.ActivationStaminaCost = 3
darklight_vision.StaminaCost = 1
darklight_vision.CostIntervalDefault = 500
val melee_booster = new ImplantDefinition(ImplantType.MeleeBooster) {
Name = "melee_booster"
}
melee_booster.InitializationDuration = 120
melee_booster.StaminaCost = 10
val personal_shield = new ImplantDefinition(ImplantType.PersonalShield) {
Name = "personal_shield"
}
personal_shield.InitializationDuration = 120
personal_shield.StaminaCost = 1
personal_shield.CostIntervalDefault = 600
val range_magnifier = new ImplantDefinition(ImplantType.RangeMagnifier) {
Name = "range_magnifier"
}
range_magnifier.InitializationDuration = 60
val second_wind = new ImplantDefinition(ImplantType.SecondWind) {
Name = "second_wind"
}
second_wind.InitializationDuration = 180
val silent_run = new ImplantDefinition(ImplantType.SilentRun) {
Name = "silent_run"
}
silent_run.InitializationDuration = 90
silent_run.StaminaCost = 1
silent_run.CostIntervalDefault = 333
silent_run.CostIntervalByExoSuitHashMap(ExoSuitType.Infiltration) = 1000
val surge = new ImplantDefinition(ImplantType.Surge) {
Name = "surge"
}
surge.InitializationDuration = 90
surge.StaminaCost = 1
surge.CostIntervalDefault = 1000
surge.CostIntervalByExoSuitHashMap(ExoSuitType.Agile) = 500
surge.CostIntervalByExoSuitHashMap(ExoSuitType.Reinforced) = 333
/*
Projectiles
*/
val no_projectile = new ProjectileDefinition(0) //also called none in ADB
val bullet_105mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_105mm_projectile)
val bullet_12mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_12mm_projectile)
val bullet_12mm_projectileb = ProjectileDefinition(Projectiles.Types.bullet_12mm_projectileb)
val bullet_150mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_150mm_projectile)
val bullet_15mm_apc_projectile = ProjectileDefinition(Projectiles.Types.bullet_15mm_apc_projectile)
val bullet_15mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_15mm_projectile)
val bullet_20mm_apc_projectile = ProjectileDefinition(Projectiles.Types.bullet_20mm_apc_projectile)
val bullet_20mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_20mm_projectile)
val bullet_25mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_25mm_projectile)
val bullet_35mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_35mm_projectile)
val bullet_75mm_apc_projectile = ProjectileDefinition(Projectiles.Types.bullet_75mm_apc_projectile)
val bullet_75mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_75mm_projectile)
val bullet_9mm_AP_projectile = ProjectileDefinition(Projectiles.Types.bullet_9mm_AP_projectile)
val bullet_9mm_projectile = ProjectileDefinition(Projectiles.Types.bullet_9mm_projectile)
val anniversary_projectilea = ProjectileDefinition(Projectiles.Types.anniversary_projectilea)
val anniversary_projectileb = ProjectileDefinition(Projectiles.Types.anniversary_projectileb)
val aphelion_immolation_cannon_projectile = ProjectileDefinition(Projectiles.Types.aphelion_immolation_cannon_projectile)
val aphelion_laser_projectile = ProjectileDefinition(Projectiles.Types.aphelion_laser_projectile)
val aphelion_plasma_cloud = ProjectileDefinition(Projectiles.Types.aphelion_plasma_cloud)
val aphelion_plasma_rocket_projectile = ProjectileDefinition(Projectiles.Types.aphelion_plasma_rocket_projectile)
val aphelion_ppa_projectile = ProjectileDefinition(Projectiles.Types.aphelion_ppa_projectile)
val aphelion_starfire_projectile = ProjectileDefinition(Projectiles.Types.aphelion_starfire_projectile)
val bolt_projectile = ProjectileDefinition(Projectiles.Types.bolt_projectile)
val burster_projectile = ProjectileDefinition(Projectiles.Types.burster_projectile)
val chainblade_projectile = ProjectileDefinition(Projectiles.Types.chainblade_projectile)
val colossus_100mm_projectile = ProjectileDefinition(Projectiles.Types.colossus_100mm_projectile)
val colossus_burster_projectile = ProjectileDefinition(Projectiles.Types.colossus_burster_projectile)
val colossus_chaingun_projectile = ProjectileDefinition(Projectiles.Types.colossus_chaingun_projectile)
val colossus_cluster_bomb_projectile = ProjectileDefinition(Projectiles.Types.colossus_cluster_bomb_projectile)
val colossus_tank_cannon_projectile = ProjectileDefinition(Projectiles.Types.colossus_tank_cannon_projectile)
val comet_projectile = ProjectileDefinition(Projectiles.Types.comet_projectile)
val dualcycler_projectile = ProjectileDefinition(Projectiles.Types.dualcycler_projectile)
val dynomite_projectile = ProjectileDefinition(Projectiles.Types.dynomite_projectile)
val energy_cell_projectile = ProjectileDefinition(Projectiles.Types.energy_cell_projectile)
val energy_gun_nc_projectile = ProjectileDefinition(Projectiles.Types.energy_gun_nc_projectile)
val energy_gun_tr_projectile = ProjectileDefinition(Projectiles.Types.energy_gun_tr_projectile)
val energy_gun_vs_projectile = ProjectileDefinition(Projectiles.Types.energy_gun_vs_projectile)
val enhanced_energy_cell_projectile = ProjectileDefinition(Projectiles.Types.enhanced_energy_cell_projectile)
val enhanced_quasar_projectile = ProjectileDefinition(Projectiles.Types.enhanced_quasar_projectile)
val falcon_projectile = ProjectileDefinition(Projectiles.Types.falcon_projectile)
val firebird_missile_projectile = ProjectileDefinition(Projectiles.Types.firebird_missile_projectile)
val flail_projectile = ProjectileDefinition(Projectiles.Types.flail_projectile)
val flamethrower_fire_cloud = ProjectileDefinition(Projectiles.Types.flamethrower_fire_cloud)
val flamethrower_fireball = ProjectileDefinition(Projectiles.Types.flamethrower_fireball)
val flamethrower_projectile = ProjectileDefinition(Projectiles.Types.flamethrower_projectile)
val flux_cannon_apc_projectile = ProjectileDefinition(Projectiles.Types.flux_cannon_apc_projectile)
val flux_cannon_thresher_projectile = ProjectileDefinition(Projectiles.Types.flux_cannon_thresher_projectile)
val fluxpod_projectile = ProjectileDefinition(Projectiles.Types.fluxpod_projectile)
val forceblade_projectile = ProjectileDefinition(Projectiles.Types.forceblade_projectile)
val frag_cartridge_projectile = ProjectileDefinition(Projectiles.Types.frag_cartridge_projectile)
val frag_cartridge_projectile_b = ProjectileDefinition(Projectiles.Types.frag_cartridge_projectile_b)
val frag_grenade_projectile = ProjectileDefinition(Projectiles.Types.frag_grenade_projectile)
val frag_grenade_projectile_enh = ProjectileDefinition(Projectiles.Types.frag_grenade_projectile_enh)
val galaxy_gunship_gun_projectile = ProjectileDefinition(Projectiles.Types.galaxy_gunship_gun_projectile)
val gauss_cannon_projectile = ProjectileDefinition(Projectiles.Types.gauss_cannon_projectile)
val grenade_projectile = ProjectileDefinition(Projectiles.Types.grenade_projectile)
val heavy_grenade_projectile = ProjectileDefinition(Projectiles.Types.heavy_grenade_projectile)
val heavy_rail_beam_projectile = ProjectileDefinition(Projectiles.Types.heavy_rail_beam_projectile)
val heavy_sniper_projectile = ProjectileDefinition(Projectiles.Types.heavy_sniper_projectile)
val hellfire_projectile = ProjectileDefinition(Projectiles.Types.hellfire_projectile)
val hunter_seeker_missile_dumbfire = ProjectileDefinition(Projectiles.Types.hunter_seeker_missile_dumbfire)
val hunter_seeker_missile_projectile = ProjectileDefinition(Projectiles.Types.hunter_seeker_missile_projectile)
val jammer_cartridge_projectile = ProjectileDefinition(Projectiles.Types.jammer_cartridge_projectile)
val jammer_cartridge_projectile_b = ProjectileDefinition(Projectiles.Types.jammer_cartridge_projectile_b)
val jammer_grenade_projectile = ProjectileDefinition(Projectiles.Types.jammer_grenade_projectile)
val jammer_grenade_projectile_enh = ProjectileDefinition(Projectiles.Types.jammer_grenade_projectile_enh)
val katana_projectile = ProjectileDefinition(Projectiles.Types.katana_projectile)
val katana_projectileb = ProjectileDefinition(Projectiles.Types.katana_projectileb)
val lancer_projectile = ProjectileDefinition(Projectiles.Types.lancer_projectile)
val lasher_projectile = ProjectileDefinition(Projectiles.Types.lasher_projectile)
val lasher_projectile_ap = ProjectileDefinition(Projectiles.Types.lasher_projectile_ap)
val liberator_bomb_cluster_bomblet_projectile = ProjectileDefinition(
Projectiles.Types.liberator_bomb_cluster_bomblet_projectile
)
val liberator_bomb_cluster_projectile = ProjectileDefinition(Projectiles.Types.liberator_bomb_cluster_projectile)
val liberator_bomb_projectile = ProjectileDefinition(Projectiles.Types.liberator_bomb_projectile)
val maelstrom_grenade_damager = ProjectileDefinition(Projectiles.Types.maelstrom_grenade_damager)
val maelstrom_grenade_projectile = ProjectileDefinition(Projectiles.Types.maelstrom_grenade_projectile)
val maelstrom_grenade_projectile_contact = ProjectileDefinition(Projectiles.Types.maelstrom_grenade_projectile_contact)
val maelstrom_stream_projectile = ProjectileDefinition(Projectiles.Types.maelstrom_stream_projectile)
val magcutter_projectile = ProjectileDefinition(Projectiles.Types.magcutter_projectile)
val melee_ammo_projectile = ProjectileDefinition(Projectiles.Types.melee_ammo_projectile)
val meteor_common = ProjectileDefinition(Projectiles.Types.meteor_common)
val meteor_projectile_b_large = ProjectileDefinition(Projectiles.Types.meteor_projectile_b_large)
val meteor_projectile_b_medium = ProjectileDefinition(Projectiles.Types.meteor_projectile_b_medium)
val meteor_projectile_b_small = ProjectileDefinition(Projectiles.Types.meteor_projectile_b_small)
val meteor_projectile_large = ProjectileDefinition(Projectiles.Types.meteor_projectile_large)
val meteor_projectile_medium = ProjectileDefinition(Projectiles.Types.meteor_projectile_medium)
val meteor_projectile_small = ProjectileDefinition(Projectiles.Types.meteor_projectile_small)
val mine_projectile = ProjectileDefinition(Projectiles.Types.mine_projectile)
val mine_sweeper_projectile = ProjectileDefinition(Projectiles.Types.mine_sweeper_projectile)
val mine_sweeper_projectile_enh = ProjectileDefinition(Projectiles.Types.mine_sweeper_projectile_enh)
val oicw_projectile = ProjectileDefinition(Projectiles.Types.oicw_projectile)
val oicw_little_buddy = ProjectileDefinition(Projectiles.Types.oicw_little_buddy)
val pellet_gun_projectile = ProjectileDefinition(Projectiles.Types.pellet_gun_projectile)
val peregrine_dual_machine_gun_projectile = ProjectileDefinition(Projectiles.Types.peregrine_dual_machine_gun_projectile)
val peregrine_mechhammer_projectile = ProjectileDefinition(Projectiles.Types.peregrine_mechhammer_projectile)
val peregrine_particle_cannon_projectile = ProjectileDefinition(Projectiles.Types.peregrine_particle_cannon_projectile)
val peregrine_particle_cannon_radiation_cloud = ProjectileDefinition(Projectiles.Types.peregrine_particle_cannon_radiation_cloud)
val peregrine_rocket_pod_projectile = ProjectileDefinition(Projectiles.Types.peregrine_rocket_pod_projectile)
val peregrine_sparrow_projectile = ProjectileDefinition(Projectiles.Types.peregrine_sparrow_projectile)
val phalanx_av_projectile = ProjectileDefinition(Projectiles.Types.phalanx_av_projectile)
val phalanx_flak_projectile = ProjectileDefinition(Projectiles.Types.phalanx_flak_projectile)
val phalanx_projectile = ProjectileDefinition(Projectiles.Types.phalanx_projectile)
val phoenix_missile_guided_projectile = ProjectileDefinition(Projectiles.Types.phoenix_missile_guided_projectile)
val phoenix_missile_projectile = ProjectileDefinition(Projectiles.Types.phoenix_missile_projectile)
val plasma_cartridge_projectile = ProjectileDefinition(Projectiles.Types.plasma_cartridge_projectile)
val plasma_cartridge_projectile_b = ProjectileDefinition(Projectiles.Types.plasma_cartridge_projectile_b)
val plasma_grenade_projectile = ProjectileDefinition(Projectiles.Types.plasma_grenade_projectile)
val plasma_grenade_projectile_B = ProjectileDefinition(Projectiles.Types.plasma_grenade_projectile_B)
val pounder_projectile = ProjectileDefinition(Projectiles.Types.pounder_projectile)
val pounder_projectile_enh = ProjectileDefinition(Projectiles.Types.pounder_projectile_enh)
val ppa_projectile = ProjectileDefinition(Projectiles.Types.ppa_projectile)
val pulsar_ap_projectile = ProjectileDefinition(Projectiles.Types.pulsar_ap_projectile)
val pulsar_projectile = ProjectileDefinition(Projectiles.Types.pulsar_projectile)
val quasar_projectile = ProjectileDefinition(Projectiles.Types.quasar_projectile)
val radiator_cloud = ProjectileDefinition(Projectiles.Types.radiator_cloud)
val radiator_grenade_projectile = ProjectileDefinition(Projectiles.Types.radiator_grenade_projectile)
val radiator_sticky_projectile = ProjectileDefinition(Projectiles.Types.radiator_sticky_projectile)
val reaver_rocket_projectile = ProjectileDefinition(Projectiles.Types.reaver_rocket_projectile)
val rocket_projectile = ProjectileDefinition(Projectiles.Types.rocket_projectile)
val rocklet_flak_projectile = ProjectileDefinition(Projectiles.Types.rocklet_flak_projectile)
val rocklet_jammer_projectile = ProjectileDefinition(Projectiles.Types.rocklet_jammer_projectile)
val scattercannon_projectile = ProjectileDefinition(Projectiles.Types.scattercannon_projectile)
val scythe_projectile = ProjectileDefinition(Projectiles.Types.scythe_projectile)
val scythe_projectile_slave = ProjectileDefinition(Projectiles.Types.scythe_projectile_slave)
val shotgun_shell_AP_projectile = ProjectileDefinition(Projectiles.Types.shotgun_shell_AP_projectile)
val shotgun_shell_projectile = ProjectileDefinition(Projectiles.Types.shotgun_shell_projectile)
val six_shooter_projectile = ProjectileDefinition(Projectiles.Types.six_shooter_projectile)
val skyguard_flak_cannon_projectile = ProjectileDefinition(Projectiles.Types.skyguard_flak_cannon_projectile)
val sparrow_projectile = ProjectileDefinition(Projectiles.Types.sparrow_projectile)
val sparrow_secondary_projectile = ProjectileDefinition(Projectiles.Types.sparrow_secondary_projectile)
val spiker_projectile = ProjectileDefinition(Projectiles.Types.spiker_projectile)
val spitfire_aa_ammo_projectile = ProjectileDefinition(Projectiles.Types.spitfire_aa_ammo_projectile)
val spitfire_ammo_projectile = ProjectileDefinition(Projectiles.Types.spitfire_ammo_projectile)
val starfire_projectile = ProjectileDefinition(Projectiles.Types.starfire_projectile)
val striker_missile_projectile = ProjectileDefinition(Projectiles.Types.striker_missile_projectile)
val striker_missile_targeting_projectile = ProjectileDefinition(Projectiles.Types.striker_missile_targeting_projectile)
val trek_projectile = ProjectileDefinition(Projectiles.Types.trek_projectile)
val vanu_sentry_turret_projectile = ProjectileDefinition(Projectiles.Types.vanu_sentry_turret_projectile)
val vulture_bomb_projectile = ProjectileDefinition(Projectiles.Types.vulture_bomb_projectile)
val vulture_nose_bullet_projectile = ProjectileDefinition(Projectiles.Types.vulture_nose_bullet_projectile)
val vulture_tail_bullet_projectile = ProjectileDefinition(Projectiles.Types.vulture_tail_bullet_projectile)
val wasp_gun_projectile = ProjectileDefinition(Projectiles.Types.wasp_gun_projectile)
val wasp_rocket_projectile = ProjectileDefinition(Projectiles.Types.wasp_rocket_projectile)
val winchester_projectile = ProjectileDefinition(Projectiles.Types.winchester_projectile)
val armor_siphon_projectile = ProjectileDefinition(Projectiles.Types.trek_projectile) //fake projectile for storing damage information
val ntu_siphon_emp = ProjectileDefinition(Projectiles.Types.ntu_siphon_emp)
init_projectile()
/*
Equipment (locker_container, kits, ammunition, weapons)
*/
import net.psforever.packet.game.objectcreate.ObjectClass
val locker_container = new LockerContainerDefinition()
val medkit = KitDefinition(Kits.medkit)
val super_medkit = KitDefinition(Kits.super_medkit)
val super_armorkit = KitDefinition(Kits.super_armorkit)
val super_staminakit = KitDefinition(Kits.super_staminakit) //super stimpak
init_kit()
val melee_ammo = AmmoBoxDefinition(Ammo.melee_ammo)
val frag_grenade_ammo = AmmoBoxDefinition(Ammo.frag_grenade_ammo)
val plasma_grenade_ammo = AmmoBoxDefinition(Ammo.plasma_grenade_ammo)
val jammer_grenade_ammo = AmmoBoxDefinition(Ammo.jammer_grenade_ammo)
val bullet_9mm = AmmoBoxDefinition(Ammo.bullet_9mm)
val bullet_9mm_AP = AmmoBoxDefinition(Ammo.bullet_9mm_AP)
val shotgun_shell = AmmoBoxDefinition(Ammo.shotgun_shell)
val shotgun_shell_AP = AmmoBoxDefinition(Ammo.shotgun_shell_AP)
val energy_cell = AmmoBoxDefinition(Ammo.energy_cell)
val anniversary_ammo = AmmoBoxDefinition(Ammo.anniversary_ammo) //10mm multi-phase
val ancient_ammo_combo = AmmoBoxDefinition(Ammo.ancient_ammo_combo)
val maelstrom_ammo = AmmoBoxDefinition(Ammo.maelstrom_ammo)
val phoenix_missile = AmmoBoxDefinition(Ammo.phoenix_missile) //decimator missile
val striker_missile_ammo = AmmoBoxDefinition(Ammo.striker_missile_ammo)
val hunter_seeker_missile = AmmoBoxDefinition(Ammo.hunter_seeker_missile) //phoenix missile
val lancer_cartridge = AmmoBoxDefinition(Ammo.lancer_cartridge)
val rocket = AmmoBoxDefinition(Ammo.rocket)
val frag_cartridge = AmmoBoxDefinition(Ammo.frag_cartridge)
val plasma_cartridge = AmmoBoxDefinition(Ammo.plasma_cartridge)
val jammer_cartridge = AmmoBoxDefinition(Ammo.jammer_cartridge)
val bolt = AmmoBoxDefinition(Ammo.bolt)
val oicw_ammo = AmmoBoxDefinition(Ammo.oicw_ammo) //scorpion missile
val flamethrower_ammo = AmmoBoxDefinition(Ammo.flamethrower_ammo)
val winchester_ammo = AmmoBoxDefinition(Ammo.winchester_ammo)
val pellet_gun_ammo = AmmoBoxDefinition(Ammo.pellet_gun_ammo)
val six_shooter_ammo = AmmoBoxDefinition(Ammo.six_shooter_ammo)
val dualcycler_ammo = AmmoBoxDefinition(Ammo.dualcycler_ammo)
val pounder_ammo = AmmoBoxDefinition(Ammo.pounder_ammo)
val burster_ammo = AmmoBoxDefinition(Ammo.burster_ammo)
val scattercannon_ammo = AmmoBoxDefinition(Ammo.scattercannon_ammo)
val falcon_ammo = AmmoBoxDefinition(Ammo.falcon_ammo)
val sparrow_ammo = AmmoBoxDefinition(Ammo.sparrow_ammo)
val quasar_ammo = AmmoBoxDefinition(Ammo.quasar_ammo)
val comet_ammo = AmmoBoxDefinition(Ammo.comet_ammo)
val starfire_ammo = AmmoBoxDefinition(Ammo.starfire_ammo)
val health_canister = AmmoBoxDefinition(Ammo.health_canister)
val armor_canister = AmmoBoxDefinition(Ammo.armor_canister)
val upgrade_canister = AmmoBoxDefinition(Ammo.upgrade_canister)
val trek_ammo = AmmoBoxDefinition(Ammo.trek_ammo)
val bullet_35mm = AmmoBoxDefinition(Ammo.bullet_35mm) //liberator nosegun
val ancient_ammo_vehicle = AmmoBoxDefinition(Ammo.ancient_ammo_vehicle)
val aphelion_laser_ammo = AmmoBoxDefinition(Ammo.aphelion_laser_ammo)
val aphelion_immolation_cannon_ammo = AmmoBoxDefinition(Ammo.aphelion_immolation_cannon_ammo)
val aphelion_plasma_rocket_ammo = AmmoBoxDefinition(Ammo.aphelion_plasma_rocket_ammo)
val aphelion_ppa_ammo = AmmoBoxDefinition(Ammo.aphelion_ppa_ammo)
val aphelion_starfire_ammo = AmmoBoxDefinition(Ammo.aphelion_starfire_ammo)
val skyguard_flak_cannon_ammo = AmmoBoxDefinition(Ammo.skyguard_flak_cannon_ammo)
val firebird_missile = AmmoBoxDefinition(ObjectClass.firebird_missile)
val flux_cannon_thresher_battery = AmmoBoxDefinition(Ammo.flux_cannon_thresher_battery)
val fluxpod_ammo = AmmoBoxDefinition(Ammo.fluxpod_ammo)
val hellfire_ammo = AmmoBoxDefinition(Ammo.hellfire_ammo)
val liberator_bomb = AmmoBoxDefinition(Ammo.liberator_bomb)
val bullet_25mm = AmmoBoxDefinition(Ammo.bullet_25mm) //liberator tailgun
val bullet_75mm = AmmoBoxDefinition(Ammo.bullet_75mm) //lightning shell
val heavy_grenade_mortar = AmmoBoxDefinition(Ammo.heavy_grenade_mortar) //marauder and gal gunship
val pulse_battery = AmmoBoxDefinition(Ammo.pulse_battery)
val heavy_rail_beam_battery = AmmoBoxDefinition(Ammo.heavy_rail_beam_battery)
val reaver_rocket = AmmoBoxDefinition(Ammo.reaver_rocket)
val bullet_20mm = AmmoBoxDefinition(Ammo.bullet_20mm) //reaver nosegun
val bullet_12mm = AmmoBoxDefinition(Ammo.bullet_12mm) //common
val wasp_rocket_ammo = AmmoBoxDefinition(Ammo.wasp_rocket_ammo)
val wasp_gun_ammo = AmmoBoxDefinition(Ammo.wasp_gun_ammo) //wasp nosegun
val bullet_15mm = AmmoBoxDefinition(Ammo.bullet_15mm)
val colossus_100mm_cannon_ammo = AmmoBoxDefinition(Ammo.colossus_100mm_cannon_ammo)
val colossus_burster_ammo = AmmoBoxDefinition(Ammo.colossus_burster_ammo)
val colossus_cluster_bomb_ammo = AmmoBoxDefinition(Ammo.colossus_cluster_bomb_ammo) //colossus mortar launcher shells
val colossus_chaingun_ammo = AmmoBoxDefinition(Ammo.colossus_chaingun_ammo)
val colossus_tank_cannon_ammo = AmmoBoxDefinition(Ammo.colossus_tank_cannon_ammo)
val bullet_105mm = AmmoBoxDefinition(Ammo.bullet_105mm) //prowler 100mm cannon shell
val gauss_cannon_ammo = AmmoBoxDefinition(Ammo.gauss_cannon_ammo)
val peregrine_dual_machine_gun_ammo = AmmoBoxDefinition(Ammo.peregrine_dual_machine_gun_ammo)
val peregrine_mechhammer_ammo = AmmoBoxDefinition(Ammo.peregrine_mechhammer_ammo)
val peregrine_particle_cannon_ammo = AmmoBoxDefinition(Ammo.peregrine_particle_cannon_ammo)
val peregrine_rocket_pod_ammo = AmmoBoxDefinition(Ammo.peregrine_rocket_pod_ammo)
val peregrine_sparrow_ammo = AmmoBoxDefinition(Ammo.peregrine_sparrow_ammo)
val bullet_150mm = AmmoBoxDefinition(Ammo.bullet_150mm)
val phalanx_ammo = AmmoBoxDefinition(Ammo.phalanx_ammo)
val spitfire_ammo = AmmoBoxDefinition(Ammo.spitfire_ammo)
val spitfire_aa_ammo = AmmoBoxDefinition(Ammo.spitfire_aa_ammo)
val energy_gun_ammo = AmmoBoxDefinition(Ammo.energy_gun_ammo)
val armor_siphon_ammo = AmmoBoxDefinition(Ammo.armor_siphon_ammo)
val ntu_siphon_ammo = AmmoBoxDefinition(Ammo.ntu_siphon_ammo)
init_ammo()
val chainblade = ToolDefinition(ObjectClass.chainblade)
val magcutter = ToolDefinition(ObjectClass.magcutter)
val forceblade = ToolDefinition(ObjectClass.forceblade)
val katana = ToolDefinition(ObjectClass.katana)
val frag_grenade = ToolDefinition(ObjectClass.frag_grenade)
val plasma_grenade = ToolDefinition(ObjectClass.plasma_grenade)
val jammer_grenade = ToolDefinition(ObjectClass.jammer_grenade)
val repeater = ToolDefinition(ObjectClass.repeater)
val isp = ToolDefinition(ObjectClass.isp) //mag-scatter
val beamer = ToolDefinition(ObjectClass.beamer)
val ilc9 = ToolDefinition(ObjectClass.ilc9) //amp
val suppressor = ToolDefinition(ObjectClass.suppressor)
val punisher = ToolDefinition(ObjectClass.punisher)
val flechette = ToolDefinition(ObjectClass.flechette) //sweeper
val cycler = ToolDefinition(ObjectClass.cycler)
val gauss = ToolDefinition(ObjectClass.gauss)
val pulsar = ToolDefinition(ObjectClass.pulsar)
val anniversary_guna = ToolDefinition(ObjectClass.anniversary_guna) //tr stinger
val anniversary_gun = ToolDefinition(ObjectClass.anniversary_gun) //nc spear
val anniversary_gunb = ToolDefinition(ObjectClass.anniversary_gunb) //vs eraser
val spiker = ToolDefinition(ObjectClass.spiker)
val mini_chaingun = ToolDefinition(ObjectClass.mini_chaingun)
val r_shotgun = ToolDefinition(ObjectClass.r_shotgun) //jackhammer
val lasher = ToolDefinition(ObjectClass.lasher)
val maelstrom = ToolDefinition(ObjectClass.maelstrom)
val phoenix = ToolDefinition(ObjectClass.phoenix) //decimator
val striker = ToolDefinition(ObjectClass.striker)
val hunterseeker = ToolDefinition(ObjectClass.hunterseeker)
val lancer = ToolDefinition(ObjectClass.lancer)
val rocklet = ToolDefinition(ObjectClass.rocklet)
val thumper = ToolDefinition(ObjectClass.thumper)
val radiator = ToolDefinition(ObjectClass.radiator)
val heavy_sniper = ToolDefinition(ObjectClass.heavy_sniper) //hsr
val bolt_driver = ToolDefinition(ObjectClass.bolt_driver)
val oicw = ToolDefinition(ObjectClass.oicw)
val flamethrower = ToolDefinition(ObjectClass.flamethrower)
val winchester = ToolDefinition(ObjectClass.winchester)
val pellet_gun = ToolDefinition(ObjectClass.pellet_gun)
val six_shooter = ToolDefinition(ObjectClass.six_shooter)
val dynomite = ToolDefinition(ObjectClass.dynomite)
val trhev_dualcycler = new ToolDefinition(ObjectClass.trhev_dualcycler) {
Name = "trhev_dualcycler"
override def NextFireModeIndex(index: Int): Int = index
}
val trhev_pounder = new ToolDefinition(ObjectClass.trhev_pounder) {
Name = "trhev_pounder"
override def NextFireModeIndex(index: Int): Int = {
//TODO other modes
if (index == 0 || index == 3) {
if (index == 0) {
3 //3-second fuse
} else {
0 //explode on contact
}
} else if (index == 1 || index == 4) {
if (index == 1) {
4 //3-second fuse, anchored
} else {
1 //explode on contact, anchored
}
} else {
index
}
}
}
val trhev_burster = new ToolDefinition(ObjectClass.trhev_burster) {
Name = "trhev_burster"
override def NextFireModeIndex(index: Int): Int = index
}
val nchev_scattercannon = new ToolDefinition(ObjectClass.nchev_scattercannon) { Name = "nchev_scattercannon" }
val nchev_falcon = new ToolDefinition(ObjectClass.nchev_falcon) { Name = "nchev_falcon" }
val nchev_sparrow = new ToolDefinition(ObjectClass.nchev_sparrow) { Name = "nchev_sparrow" }
val vshev_quasar = new ToolDefinition(ObjectClass.vshev_quasar) { Name = "vshev_quasar" }
val vshev_comet = new ToolDefinition(ObjectClass.vshev_comet) { Name = "vshev_comet" }
val vshev_starfire = new ToolDefinition(ObjectClass.vshev_starfire) { Name = "vshev_starfire" }
val medicalapplicator = ToolDefinition(ObjectClass.medicalapplicator)
val nano_dispenser = ToolDefinition(ObjectClass.nano_dispenser)
val bank = ToolDefinition(ObjectClass.bank)
val boomer_trigger = SimpleItemDefinition(SItem.boomer_trigger)
val remote_electronics_kit = SimpleItemDefinition(SItem.remote_electronics_kit)
val trek = ToolDefinition(ObjectClass.trek)
val flail_targeting_laser = SimpleItemDefinition(SItem.flail_targeting_laser)
val command_detonater = SimpleItemDefinition(SItem.command_detonater)
val ace = ConstructionItemDefinition(CItem.ace)
val advanced_ace = ConstructionItemDefinition(CItem.advanced_ace)
val router_telepad = ConstructionItemDefinition(CItem.router_telepad)
val fury_weapon_systema = ToolDefinition(ObjectClass.fury_weapon_systema)
val quadassault_weapon_system = ToolDefinition(ObjectClass.quadassault_weapon_system)
val scythe = ToolDefinition(ObjectClass.scythe) //TODO resolve ammo slot/pool discrepancy
val chaingun_p = ToolDefinition(ObjectClass.chaingun_p)
val skyguard_weapon_system = ToolDefinition(ObjectClass.skyguard_weapon_system)
val grenade_launcher_marauder = ToolDefinition(ObjectClass.grenade_launcher_marauder)
val advanced_missile_launcher_t = ToolDefinition(ObjectClass.advanced_missile_launcher_t)
val flux_cannon_thresher = ToolDefinition(ObjectClass.flux_cannon_thresher)
val mediumtransport_weapon_systemA = ToolDefinition(ObjectClass.mediumtransport_weapon_systemA)
val mediumtransport_weapon_systemB = ToolDefinition(ObjectClass.mediumtransport_weapon_systemB)
val battlewagon_weapon_systema = ToolDefinition(ObjectClass.battlewagon_weapon_systema)
val battlewagon_weapon_systemb = ToolDefinition(ObjectClass.battlewagon_weapon_systemb)
val battlewagon_weapon_systemc = ToolDefinition(ObjectClass.battlewagon_weapon_systemc)
val battlewagon_weapon_systemd = ToolDefinition(ObjectClass.battlewagon_weapon_systemd)
val thunderer_weapon_systema = ToolDefinition(ObjectClass.thunderer_weapon_systema)
val thunderer_weapon_systemb = ToolDefinition(ObjectClass.thunderer_weapon_systemb)
val aurora_weapon_systema = ToolDefinition(ObjectClass.aurora_weapon_systema)
val aurora_weapon_systemb = ToolDefinition(ObjectClass.aurora_weapon_systemb)
val apc_weapon_systema = ToolDefinition(ObjectClass.apc_weapon_systema)
val apc_weapon_systemb = ToolDefinition(ObjectClass.apc_weapon_systemb)
val apc_ballgun_r = ToolDefinition(ObjectClass.apc_ballgun_r)
val apc_ballgun_l = ToolDefinition(ObjectClass.apc_ballgun_l)
val apc_weapon_systemc_tr = ToolDefinition(ObjectClass.apc_weapon_systemc_tr)
val apc_weapon_systemd_tr = ToolDefinition(ObjectClass.apc_weapon_systemd_tr)
val apc_weapon_systemc_nc = ToolDefinition(ObjectClass.apc_weapon_systemc_nc)
val apc_weapon_systemd_nc = ToolDefinition(ObjectClass.apc_weapon_systemd_nc)
val apc_weapon_systemc_vs = ToolDefinition(ObjectClass.apc_weapon_systemc_vs)
val apc_weapon_systemd_vs = ToolDefinition(ObjectClass.apc_weapon_systemd_vs)
val lightning_weapon_system = ToolDefinition(ObjectClass.lightning_weapon_system)
val prowler_weapon_systemA = ToolDefinition(ObjectClass.prowler_weapon_systemA)
val prowler_weapon_systemB = ToolDefinition(ObjectClass.prowler_weapon_systemB)
val vanguard_weapon_system = ToolDefinition(ObjectClass.vanguard_weapon_system)
val particle_beam_magrider = ToolDefinition(ObjectClass.particle_beam_magrider)
val heavy_rail_beam_magrider = ToolDefinition(ObjectClass.heavy_rail_beam_magrider)
val flail_weapon = ToolDefinition(ObjectClass.flail_weapon)
val rotarychaingun_mosquito = ToolDefinition(ObjectClass.rotarychaingun_mosquito)
val lightgunship_weapon_system = ToolDefinition(ObjectClass.lightgunship_weapon_system)
val wasp_weapon_system = new ToolDefinition(ObjectClass.wasp_weapon_system)
val liberator_weapon_system = ToolDefinition(ObjectClass.liberator_weapon_system)
val liberator_bomb_bay = ToolDefinition(ObjectClass.liberator_bomb_bay)
val liberator_25mm_cannon = ToolDefinition(ObjectClass.liberator_25mm_cannon)
val vulture_nose_weapon_system = ToolDefinition(ObjectClass.vulture_nose_weapon_system)
val vulture_bomb_bay = ToolDefinition(ObjectClass.vulture_bomb_bay)
val vulture_tail_cannon = ToolDefinition(ObjectClass.vulture_tail_cannon)
val cannon_dropship_20mm = ToolDefinition(ObjectClass.cannon_dropship_20mm)
val dropship_rear_turret = ToolDefinition(ObjectClass.dropship_rear_turret)
val galaxy_gunship_cannon = ToolDefinition(ObjectClass.galaxy_gunship_cannon)
val galaxy_gunship_tailgun = ToolDefinition(ObjectClass.galaxy_gunship_tailgun)
val galaxy_gunship_gun = ToolDefinition(ObjectClass.galaxy_gunship_gun)
val phalanx_sgl_hevgatcan = ToolDefinition(ObjectClass.phalanx_sgl_hevgatcan)
val phalanx_avcombo = ToolDefinition(ObjectClass.phalanx_avcombo)
val phalanx_flakcombo = ToolDefinition(ObjectClass.phalanx_flakcombo)
val vanu_sentry_turret_weapon = ToolDefinition(ObjectClass.vanu_sentry_turret_weapon)
val spitfire_weapon = ToolDefinition(ObjectClass.spitfire_weapon)
val spitfire_aa_weapon = ToolDefinition(ObjectClass.spitfire_aa_weapon)
val energy_gun = ToolDefinition(ObjectClass.energy_gun)
val energy_gun_nc = ToolDefinition(ObjectClass.energy_gun_nc)
val energy_gun_tr = ToolDefinition(ObjectClass.energy_gun_tr)
val energy_gun_vs = ToolDefinition(ObjectClass.energy_gun_vs)
val aphelion_armor_siphon = ToolDefinition(ObjectClass.aphelion_armor_siphon)
val aphelion_armor_siphon_left = ToolDefinition(ObjectClass.aphelion_armor_siphon_left)
val aphelion_armor_siphon_right = ToolDefinition(ObjectClass.aphelion_armor_siphon_right)
val aphelion_laser = ToolDefinition(ObjectClass.aphelion_laser)
val aphelion_laser_left = ToolDefinition(ObjectClass.aphelion_laser_left)
val aphelion_laser_right = ToolDefinition(ObjectClass.aphelion_laser_right)
val aphelion_ntu_siphon = ToolDefinition(ObjectClass.aphelion_ntu_siphon)
val aphelion_ntu_siphon_left = ToolDefinition(ObjectClass.aphelion_ntu_siphon_left)
val aphelion_ntu_siphon_right = ToolDefinition(ObjectClass.aphelion_ntu_siphon_right)
val aphelion_ppa = ToolDefinition(ObjectClass.aphelion_ppa)
val aphelion_ppa_left = ToolDefinition(ObjectClass.aphelion_ppa_left)
val aphelion_ppa_right = ToolDefinition(ObjectClass.aphelion_ppa_right)
val aphelion_starfire = ToolDefinition(ObjectClass.aphelion_starfire)
val aphelion_starfire_left = ToolDefinition(ObjectClass.aphelion_starfire_left)
val aphelion_starfire_right = ToolDefinition(ObjectClass.aphelion_starfire_right)
val aphelion_plasma_rocket_pod = ToolDefinition(ObjectClass.aphelion_plasma_rocket_pod)
val aphelion_immolation_cannon = ToolDefinition(ObjectClass.aphelion_immolation_cannon)
val colossus_armor_siphon = ToolDefinition(ObjectClass.colossus_armor_siphon)
val colossus_armor_siphon_left = ToolDefinition(ObjectClass.colossus_armor_siphon_left)
val colossus_armor_siphon_right = ToolDefinition(ObjectClass.colossus_armor_siphon_right)
val colossus_burster = ToolDefinition(ObjectClass.colossus_burster)
val colossus_burster_left = ToolDefinition(ObjectClass.colossus_burster_left)
val colossus_burster_right = ToolDefinition(ObjectClass.colossus_burster_right)
val colossus_chaingun = ToolDefinition(ObjectClass.colossus_chaingun)
val colossus_chaingun_left = ToolDefinition(ObjectClass.colossus_chaingun_left)
val colossus_chaingun_right = ToolDefinition(ObjectClass.colossus_chaingun_right)
val colossus_ntu_siphon = ToolDefinition(ObjectClass.colossus_ntu_siphon)
val colossus_ntu_siphon_left = ToolDefinition(ObjectClass.colossus_ntu_siphon_left)
val colossus_ntu_siphon_right = ToolDefinition(ObjectClass.colossus_ntu_siphon_right)
val colossus_tank_cannon = ToolDefinition(ObjectClass.colossus_tank_cannon)
val colossus_tank_cannon_left = ToolDefinition(ObjectClass.colossus_tank_cannon_left)
val colossus_tank_cannon_right = ToolDefinition(ObjectClass.colossus_tank_cannon_right)
val colossus_dual_100mm_cannons = ToolDefinition(ObjectClass.colossus_dual_100mm_cannons)
val colossus_cluster_bomb_pod = ToolDefinition(ObjectClass.colossus_cluster_bomb_pod)
val peregrine_armor_siphon = ToolDefinition(ObjectClass.peregrine_armor_siphon)
val peregrine_armor_siphon_left = ToolDefinition(ObjectClass.peregrine_armor_siphon_left)
val peregrine_armor_siphon_right = ToolDefinition(ObjectClass.peregrine_armor_siphon_right)
val peregrine_dual_machine_gun = ToolDefinition(ObjectClass.peregrine_dual_machine_gun)
val peregrine_dual_machine_gun_left = ToolDefinition(ObjectClass.peregrine_dual_machine_gun_left)
val peregrine_dual_machine_gun_right = ToolDefinition(ObjectClass.peregrine_dual_machine_gun_right)
val peregrine_mechhammer = ToolDefinition(ObjectClass.peregrine_mechhammer)
val peregrine_mechhammer_left = ToolDefinition(ObjectClass.peregrine_mechhammer_left)
val peregrine_mechhammer_right = ToolDefinition(ObjectClass.peregrine_mechhammer_right)
val peregrine_sparrow = ToolDefinition(ObjectClass.peregrine_sparrow)
val peregrine_sparrow_left = ToolDefinition(ObjectClass.peregrine_sparrow_left)
val peregrine_sparrow_right = ToolDefinition(ObjectClass.peregrine_sparrow_right)
val peregrine_particle_cannon = ToolDefinition(ObjectClass.peregrine_particle_cannon)
val peregrine_dual_rocket_pods = ToolDefinition(ObjectClass.peregrine_dual_rocket_pods)
val peregrine_ntu_siphon = ToolDefinition(ObjectClass.peregrine_ntu_siphon)
val peregrine_ntu_siphon_left = ToolDefinition(ObjectClass.peregrine_ntu_siphon_left)
val peregrine_ntu_siphon_right = ToolDefinition(ObjectClass.peregrine_ntu_siphon_right)
init_tools()
/*
Vehicles
*/
val fury = VehicleDefinition(ObjectClass.fury)
val quadassault = VehicleDefinition(ObjectClass.quadassault)
val quadstealth = VehicleDefinition(ObjectClass.quadstealth)
val two_man_assault_buggy = VehicleDefinition(ObjectClass.two_man_assault_buggy)
val skyguard = VehicleDefinition(ObjectClass.skyguard)
val threemanheavybuggy = VehicleDefinition(ObjectClass.threemanheavybuggy)
val twomanheavybuggy = VehicleDefinition(ObjectClass.twomanheavybuggy)
val twomanhoverbuggy = VehicleDefinition(ObjectClass.twomanhoverbuggy)
val mediumtransport = VehicleDefinition(ObjectClass.mediumtransport)
val battlewagon = VehicleDefinition(ObjectClass.battlewagon)
val thunderer = VehicleDefinition(ObjectClass.thunderer)
val aurora = VehicleDefinition(ObjectClass.aurora)
val apc_tr = VehicleDefinition.Apc(ObjectClass.apc_tr)
val apc_nc = VehicleDefinition.Apc(ObjectClass.apc_nc)
val apc_vs = VehicleDefinition.Apc(ObjectClass.apc_vs)
val lightning = VehicleDefinition(ObjectClass.lightning)
val prowler = VehicleDefinition(ObjectClass.prowler)
val vanguard = VehicleDefinition(ObjectClass.vanguard)
val magrider = VehicleDefinition(ObjectClass.magrider)
val ant = VehicleDefinition.Ant(ObjectClass.ant)
val ams = VehicleDefinition.Ams(ObjectClass.ams)
val router = VehicleDefinition.Router(ObjectClass.router)
val switchblade = VehicleDefinition.Deploying(ObjectClass.switchblade)
val flail = VehicleDefinition.Deploying(ObjectClass.flail)
val mosquito = VehicleDefinition(ObjectClass.mosquito)
val lightgunship = VehicleDefinition(ObjectClass.lightgunship)
val wasp = VehicleDefinition(ObjectClass.wasp)
val liberator = VehicleDefinition(ObjectClass.liberator)
val vulture = VehicleDefinition(ObjectClass.vulture)
val dropship = VehicleDefinition.Carrier(ObjectClass.dropship)
val galaxy_gunship = VehicleDefinition(ObjectClass.galaxy_gunship)
val lodestar = VehicleDefinition.Carrier(ObjectClass.lodestar)
val phantasm = VehicleDefinition(ObjectClass.phantasm)
val aphelion_gunner = VehicleDefinition.Bfr(ObjectClass.aphelion_gunner)
val colossus_gunner = VehicleDefinition.Bfr(ObjectClass.colossus_gunner)
val peregrine_gunner = VehicleDefinition.Bfr(ObjectClass.peregrine_gunner)
val aphelion_flight = VehicleDefinition.BfrFlight(ObjectClass.aphelion_flight) //Eclipse
val colossus_flight = VehicleDefinition.BfrFlight(ObjectClass.colossus_flight) //Invader
val peregrine_flight = VehicleDefinition.BfrFlight(ObjectClass.peregrine_flight) //Eagle
val droppod = VehicleDefinition(ObjectClass.droppod)
val orbital_shuttle = VehicleDefinition(ObjectClass.orbital_shuttle)
init_vehicles()
/*
combat engineering deployables
*/
val boomer = BoomerDeployableDefinition(DeployedItem.boomer)
val he_mine = ExplosiveDeployableDefinition(DeployedItem.he_mine)
val jammer_mine = ExplosiveDeployableDefinition(DeployedItem.jammer_mine)
val spitfire_turret = TurretDeployableDefinition(DeployedItem.spitfire_turret)
val spitfire_cloaked = TurretDeployableDefinition(DeployedItem.spitfire_cloaked)
val spitfire_aa = TurretDeployableDefinition(DeployedItem.spitfire_aa)
val motionalarmsensor = SensorDeployableDefinition(DeployedItem.motionalarmsensor)
val sensor_shield = SensorDeployableDefinition(DeployedItem.sensor_shield)
val tank_traps = TrapDeployableDefinition(DeployedItem.tank_traps)
val portable_manned_turret = TurretDeployableDefinition(DeployedItem.portable_manned_turret)
val portable_manned_turret_nc = TurretDeployableDefinition(DeployedItem.portable_manned_turret_nc)
val portable_manned_turret_tr = TurretDeployableDefinition(DeployedItem.portable_manned_turret_tr)
val portable_manned_turret_vs = TurretDeployableDefinition(DeployedItem.portable_manned_turret_vs)
val deployable_shield_generator = new ShieldGeneratorDefinition
val router_telepad_deployable = TelepadDeployableDefinition(DeployedItem.router_telepad_deployable)
//this is only treated like a deployable
val internal_router_telepad_deployable = InternalTelepadDefinition() //objectId: 744
init_deployables()
/*
Miscellaneous
*/
val ams_respawn_tube = new SpawnTubeDefinition(49)
val matrix_terminala = new MatrixTerminalDefinition(517)
val matrix_terminalb = new MatrixTerminalDefinition(518)
val matrix_terminalc = new MatrixTerminalDefinition(519)
val spawn_terminal = new MatrixTerminalDefinition(812)
val order_terminal = new OrderTerminalDefinition(612)
val order_terminala = new OrderTerminalDefinition(613)
val order_terminalb = new OrderTerminalDefinition(614)
val vanu_equipment_term = new OrderTerminalDefinition(933)
val cert_terminal = new OrderTerminalDefinition(171)
val implant_terminal_mech = new ImplantTerminalMechDefinition
val implant_terminal_interface = new OrderTerminalDefinition(409)
val ground_vehicle_terminal = new OrderTerminalDefinition(386)
val air_vehicle_terminal = new OrderTerminalDefinition(43)
val dropship_vehicle_terminal = new OrderTerminalDefinition(263)
val vehicle_terminal_combined = new OrderTerminalDefinition(952)
val vanu_air_vehicle_term = new OrderTerminalDefinition(928)
val vanu_vehicle_term = new OrderTerminalDefinition(949)
val bfr_terminal = new OrderTerminalDefinition(143)
val respawn_tube = new SpawnTubeDefinition(732)
val respawn_tube_sanctuary = new SpawnTubeDefinition(732) //respawn_tube for sanctuary VT_building_* structures
val respawn_tube_tower = new SpawnTubeDefinition(733)
val teleportpad_terminal = new OrderTerminalDefinition(853)
val adv_med_terminal = new MedicalTerminalDefinition(38)
val crystals_health_a = new MedicalTerminalDefinition(225)
val crystals_health_b = new MedicalTerminalDefinition(226)
val crystals_repair_a = new MedicalTerminalDefinition(227)
val crystals_repair_b = new MedicalTerminalDefinition(228)
val crystals_energy = new WeaponRechargeTerminalDefinition(222)
val crystals_energy_a = new WeaponRechargeTerminalDefinition(223)
val crystals_energy_b = new WeaponRechargeTerminalDefinition(224)
val crystals_vehicle_a = new MedicalTerminalDefinition(229)
val crystals_vehicle_b = new MedicalTerminalDefinition(230)
val crystals_damage_a = new MedicalTerminalDefinition(220)
//todo: make these work
val crystals_damage_b = new MedicalTerminalDefinition(221)
val medical_terminal = new MedicalTerminalDefinition(529)
val portable_med_terminal = new MedicalTerminalDefinition(689)
val pad_landing_frame = new MedicalTerminalDefinition(618)
val pad_landing_tower_frame = new MedicalTerminalDefinition(619)
val repair_silo = new MedicalTerminalDefinition(729)
val recharge_terminal = new WeaponRechargeTerminalDefinition(724)
val recharge_terminal_weapon_module = new WeaponRechargeTerminalDefinition(725)
val mb_pad_creation = new VehicleSpawnPadDefinition(525)
val dropship_pad_doors = new VehicleSpawnPadDefinition(261)
val vanu_vehicle_creation_pad = new VehicleSpawnPadDefinition(947)
val bfr_door = new VehicleSpawnPadDefinition(141)
val pad_create = new VehicleSpawnPadDefinition(615)
val pad_creation = new VehicleSpawnPadDefinition(616)
val spawnpoint_vehicle = new VehicleSpawnPadDefinition(816)
val mb_locker = new LockerDefinition
val lock_external = new IFFLockDefinition
val door = new DoorDefinition(242)
val door_spawn_mb = new DoorDefinition(257)
val gr_door_mb_orb = new DoorDefinition(368)
val spawn_tube_door = new DoorDefinition(813)
val resource_silo = new ResourceSiloDefinition
val capture_terminal = new CaptureTerminalDefinition(158) // Base CC
val secondary_capture = new CaptureTerminalDefinition(751) // Tower CC
val vanu_control_console = new CaptureTerminalDefinition(930) // Cavern CC
val llm_socket = new CaptureFlagSocketDefinition()
val capture_flag = new CaptureFlagDefinition()
capture_flag.Packet = new CaptureFlagConverter
val lodestar_repair_terminal = new MedicalTerminalDefinition(461)
val multivehicle_rearm_terminal = new OrderTerminalDefinition(576)
val bfr_rearm_terminal = new OrderTerminalDefinition(142)
val air_rearm_terminal = new OrderTerminalDefinition(42)
val ground_rearm_terminal = new OrderTerminalDefinition(384)
val manned_turret = new FacilityTurretDefinition(480)
val vanu_sentry_turret = new FacilityTurretDefinition(943)
val painbox = new PainboxDefinition(622)
val painbox_continuous = new PainboxDefinition(623)
val painbox_door_radius = new PainboxDefinition(624)
val painbox_door_radius_continuous = new PainboxDefinition(625)
val painbox_radius = new PainboxDefinition(626)
val painbox_radius_continuous = new PainboxDefinition(627)
val gen_control = new GeneratorTerminalDefinition(349)
val generator = new GeneratorDefinition(351)
val obbasemesh = new AmenityDefinition(598) {}
val targeting_laser_dispenser = new OrderTerminalDefinition(851)
initMiscellaneous()
/*
Buildings
*/
val amp_station = new BuildingDefinition(45) {
Name = "amp_station"
SOIRadius = 300
LatticeLinkBenefit = LatticeBenefit.AmpStation
}
val comm_station = new BuildingDefinition(211) {
Name = "comm_station"
SOIRadius = 300
LatticeLinkBenefit = LatticeBenefit.InterlinkFacility
}
val comm_station_dsp = new BuildingDefinition(212) {
Name = "comm_station_dsp"
SOIRadius = 300
LatticeLinkBenefit = LatticeBenefit.DropshipCenter
}
val cryo_facility = new BuildingDefinition(215) {
Name = "cryo_facility"
SOIRadius = 300
LatticeLinkBenefit = LatticeBenefit.BioLaboratory
}
val tech_plant = new BuildingDefinition(852) {
Name = "tech_plant"
SOIRadius = 300
LatticeLinkBenefit = LatticeBenefit.TechnologyPlant
}
val building = new BuildingDefinition(474) { Name = "building" } //borrows object id of entity mainbase1
val vanu_core = new BuildingDefinition(932) { Name = "vanu_core" }
val ground_bldg_a = new BuildingDefinition(474) { Name = "ground_bldg_a" } //borrows object id of entity mainbase1
val ground_bldg_b = new BuildingDefinition(474) { Name = "ground_bldg_b" } //borrows object id of entity mainbase1
val ground_bldg_c = new BuildingDefinition(474) { Name = "ground_bldg_c" } //borrows object id of entity mainbase1
val ground_bldg_d = new BuildingDefinition(474) { Name = "ground_bldg_d" } //borrows object id of entity mainbase1
val ground_bldg_e = new BuildingDefinition(474) { Name = "ground_bldg_e" } //borrows object id of entity mainbase1
val ground_bldg_f = new BuildingDefinition(474) { Name = "ground_bldg_f" } //borrows object id of entity mainbase1
val ground_bldg_g = new BuildingDefinition(474) { Name = "ground_bldg_g" } //borrows object id of entity mainbase1
val ground_bldg_h = new BuildingDefinition(474) { Name = "ground_bldg_h" } //borrows object id of entity mainbase1
val ground_bldg_i = new BuildingDefinition(474) { Name = "ground_bldg_i" } //borrows object id of entity mainbase1
val ground_bldg_j = new BuildingDefinition(474) { Name = "ground_bldg_j" } //borrows object id of entity mainbase1
val ground_bldg_z = new BuildingDefinition(474) { Name = "ground_bldg_z" } //borrows object id of entity mainbase1
val ceiling_bldg_a = new BuildingDefinition(474) { Name = "ceiling_bldg_a" } //borrows object id of entity mainbase1
val ceiling_bldg_b = new BuildingDefinition(474) { Name = "ceiling_bldg_b" } //borrows object id of entity mainbase1
val ceiling_bldg_c = new BuildingDefinition(474) { Name = "ceiling_bldg_c" } //borrows object id of entity mainbase1
val ceiling_bldg_d = new BuildingDefinition(474) { Name = "ceiling_bldg_d" } //borrows object id of entity mainbase1
val ceiling_bldg_e = new BuildingDefinition(474) { Name = "ceiling_bldg_e" } //borrows object id of entity mainbase1
val ceiling_bldg_f = new BuildingDefinition(474) { Name = "ceiling_bldg_f" } //borrows object id of entity mainbase1
val ceiling_bldg_g = new BuildingDefinition(474) { Name = "ceiling_bldg_g" } //borrows object id of entity mainbase1
val ceiling_bldg_h = new BuildingDefinition(474) { Name = "ceiling_bldg_h" } //borrows object id of entity mainbase1
val ceiling_bldg_i = new BuildingDefinition(474) { Name = "ceiling_bldg_i" } //borrows object id of entity mainbase1
val ceiling_bldg_j = new BuildingDefinition(474) { Name = "ceiling_bldg_j" } //borrows object id of entity mainbase1
val ceiling_bldg_z = new BuildingDefinition(474) { Name = "ceiling_bldg_z" } //borrows object id of entity mainbase1
val mainbase1 = new BuildingDefinition(474) { Name = "mainbase1" }
val mainbase2 = new BuildingDefinition(475) { Name = "mainbase2" }
val mainbase3 = new BuildingDefinition(476) { Name = "mainbase3" }
val meeting_center_nc = new BuildingDefinition(537) { Name = "meeting_center_nc" }
val meeting_center_tr = new BuildingDefinition(538) { Name = "meeting_center_tr" }
val meeting_center_vs = new BuildingDefinition(539) { Name = "meeting_center_vs" }
val minibase1 = new BuildingDefinition(557) { Name = "minibase1" }
val minibase2 = new BuildingDefinition(558) { Name = "minibase2" }
val minibase3 = new BuildingDefinition(559) { Name = "minibase3" }
val redoubt = new BuildingDefinition(726) { Name = "redoubt"; SOIRadius = 187 }
val tower_a = new BuildingDefinition(869) { Name = "tower_a"; SOIRadius = 50 }
val tower_b = new BuildingDefinition(870) { Name = "tower_b"; SOIRadius = 50 }
val tower_c = new BuildingDefinition(871) { Name = "tower_c"; SOIRadius = 50 }
val vanu_control_point = new BuildingDefinition(931) { Name = "vanu_control_point"; SOIRadius = 187 }
val vanu_vehicle_station = new BuildingDefinition(948) { Name = "vanu_vehicle_station"; SOIRadius = 187 }
val hst = new WarpGateDefinition(402)
hst.Name = "hst"
hst.UseRadius = 44.96882005f
hst.SOIRadius = 82
hst.VehicleAllowance = true
hst.NoWarp += dropship
hst.NoWarp += galaxy_gunship
hst.NoWarp += lodestar
hst.NoWarp += aphelion_gunner
hst.NoWarp += aphelion_flight
hst.NoWarp += colossus_gunner
hst.NoWarp += colossus_flight
hst.NoWarp += peregrine_gunner
hst.NoWarp += peregrine_flight
hst.SpecificPointFunc = SpawnPoint.CavernGate(innerRadius = 6f)
val warpgate = new WarpGateDefinition(993)
warpgate.Name = "warpgate"
warpgate.UseRadius = 67.81070029f
warpgate.SOIRadius = 302 //301.8713f
warpgate.VehicleAllowance = true
warpgate.SpecificPointFunc = SpawnPoint.Gate
val warpgate_cavern = new WarpGateDefinition(994)
warpgate_cavern.Name = "warpgate_cavern"
warpgate_cavern.UseRadius = 19.72639434f
warpgate_cavern.SOIRadius = 41
warpgate_cavern.VehicleAllowance = true
warpgate_cavern.SpecificPointFunc = SpawnPoint.CavernGate(innerRadius = 4.5f)
val warpgate_small = new WarpGateDefinition(995)
warpgate_small.Name = "warpgate_small"
warpgate_small.UseRadius = 69.03687655f
warpgate_small.SOIRadius = 103
warpgate_small.VehicleAllowance = true
warpgate_small.SpecificPointFunc = SpawnPoint.SmallGate(innerRadius = 27.60654127f, flightlessZOffset = 0.5f)
val bunker_gauntlet = new BuildingDefinition(150) { Name = "bunker_gauntlet" }
val bunker_lg = new BuildingDefinition(151) { Name = "bunker_lg" }
val bunker_sm = new BuildingDefinition(152) { Name = "bunker_sm" }
val orbital_building_nc = new BuildingDefinition(605) { Name = "orbital_building_nc" }
val orbital_building_tr = new BuildingDefinition(606) { Name = "orbital_building_tr" }
val orbital_building_vs = new BuildingDefinition(607) { Name = "orbital_building_vs" }
val VT_building_nc = new BuildingDefinition(978) { Name = "VT_building_nc" }
val VT_building_tr = new BuildingDefinition(979) { Name = "VT_building_tr" }
val VT_building_vs = new BuildingDefinition(980) { Name = "VT_building_vs" }
val vt_dropship = new BuildingDefinition(981) { Name = "vt_dropship" }
val vt_spawn = new BuildingDefinition(984) { Name = "vt_spawn" }
val vt_vehicle = new BuildingDefinition(985) { Name = "vt_vehicle" }
/**
* Given a faction, provide the standard assault melee weapon.
* @param faction the faction
* @return the `ToolDefinition` for the melee weapon
*/
def StandardMelee(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => chainblade
case PlanetSideEmpire.NC => magcutter
case PlanetSideEmpire.VS => forceblade
case PlanetSideEmpire.NEUTRAL => chainblade //do NOT hand out the katana
}
}
/**
* Given a faction, provide the satndard assault pistol.
* @param faction the faction
* @return the `ToolDefinition` for the pistol
*/
def StandardPistol(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => repeater
case PlanetSideEmpire.NC => isp
case PlanetSideEmpire.VS => beamer
case PlanetSideEmpire.NEUTRAL => ilc9
}
}
/**
* For a given faction, provide the ammunition for the standard assault pistol.
* The ammunition value here must work with the result of obtaining the pistol using the faction.
* @param faction the faction
* @return thr `AmmoBoxDefinition` for the pistol's ammo
* @see `GlobalDefinitions.StandardPistol`
*/
def StandardPistolAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => bullet_9mm
case PlanetSideEmpire.NC => shotgun_shell
case PlanetSideEmpire.VS => energy_cell
case PlanetSideEmpire.NEUTRAL => bullet_9mm
}
}
/**
* For a given faction, provide the medium assault pistol.
* The medium assault pistols all use the same ammunition so there is no point for a separate selection function.
* @param faction the faction
* @return the `ToolDefinition` for the pistol
*/
def MediumPistol(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => anniversary_guna
case PlanetSideEmpire.NC => anniversary_gun
case PlanetSideEmpire.VS => anniversary_gunb
case PlanetSideEmpire.NEUTRAL => ilc9 //do not hand out the spiker
}
}
/**
* For a given faction, provide the medium assault rifle.
* For `Neutral` or `Black Ops`, just return a Suppressor.
* @param faction the faction
* @return the `ToolDefinition` for the rifle
*/
def MediumRifle(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => cycler
case PlanetSideEmpire.NC => gauss
case PlanetSideEmpire.VS => pulsar
case PlanetSideEmpire.NEUTRAL => suppressor //the Punisher would be messy to have to code for
}
}
/**
* For a given faction, provide the ammunition for the medium assault rifle.
* The ammunition value here must work with the result of obtaining the rifle using the faction.
* @param faction the faction
* @return thr `AmmoBoxDefinition` for the rifle's ammo
* @see `GlobalDefinitions.MediumRifle`
*/
def MediumRifleAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => bullet_9mm
case PlanetSideEmpire.NC => bullet_9mm
case PlanetSideEmpire.VS => energy_cell
case PlanetSideEmpire.NEUTRAL => bullet_9mm
}
}
/**
* For a given faction, provide the AP ammunition for the medium assault rifle.
* The ammunition value here must work with the result of obtaining the rifle using the faction.
* @param faction the faction
* @return thr `AmmoBoxDefinition` for the rifle's ammo
* @see `GlobalDefinitions.MediumRifle`
*/
def MediumRifleAPAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => bullet_9mm_AP
case PlanetSideEmpire.NC => bullet_9mm_AP
case PlanetSideEmpire.VS => energy_cell
case PlanetSideEmpire.NEUTRAL => bullet_9mm_AP
}
}
/**
* For a given faction, provide the heavy assault rifle.
* For `Neutral` or `Black Ops`, just return a Suppressor.
* @param faction the faction
* @return the `ToolDefinition` for the rifle
*/
def HeavyRifle(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => mini_chaingun
case PlanetSideEmpire.NC => r_shotgun
case PlanetSideEmpire.VS => lasher
case PlanetSideEmpire.NEUTRAL => suppressor //do not hand out the maelstrom
}
}
/**
* For a given faction, provide the ammunition for the heavy assault rifle.
* The ammunition value here must work with the result of obtaining the rifle using the faction.
* @param faction the faction
* @return thr `AmmoBoxDefinition` for the rifle's ammo
* @see `GlobalDefinitions.HeavyRifle`
*/
def HeavyRifleAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => bullet_9mm
case PlanetSideEmpire.NC => shotgun_shell
case PlanetSideEmpire.VS => energy_cell
case PlanetSideEmpire.NEUTRAL => bullet_9mm
}
}
/**
* For a given faction, provide the AP ammunition for the heavy assault rifle.
* The ammunition value here must work with the result of obtaining the rifle using the faction.
* @param faction the faction
* @return thr `AmmoBoxDefinition` for the rifle's ammo
* @see `GlobalDefinitions.HeavyRifle`
*/
def HeavyRifleAPAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => bullet_9mm_AP
case PlanetSideEmpire.NC => shotgun_shell_AP
case PlanetSideEmpire.VS => energy_cell
case PlanetSideEmpire.NEUTRAL => bullet_9mm_AP
}
}
/**
* For a given faction, provide the anti-vehicular launcher.
* @param faction the faction
* @return the `ToolDefinition` for the launcher
*/
def AntiVehicularLauncher(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => striker
case PlanetSideEmpire.NC => hunterseeker
case PlanetSideEmpire.VS => lancer
case PlanetSideEmpire.NEUTRAL => phoenix
}
}
/**
* For a given faction, provide the ammunition for the anti-vehicular launcher.
* The ammunition value here must work with the result of obtaining the anti-vehicular launcher using the faction.
* @param faction the faction
* @return thr `AmmoBoxDefinition` for the launcher's ammo
* @see `GlobalDefinitions.AntiVehicular`
*/
def AntiVehicularAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => striker_missile_ammo
case PlanetSideEmpire.NC => hunter_seeker_missile
case PlanetSideEmpire.VS => lancer_cartridge
case PlanetSideEmpire.NEUTRAL => phoenix_missile //careful - does not exist as an AmmoBox normally
}
}
def MAXArms(subtype: Int, faction: PlanetSideEmpire.Value): ToolDefinition = {
if (subtype == 1) {
AA_MAX(faction)
} else if (subtype == 2) {
AI_MAX(faction)
} else if (subtype == 3) {
AV_MAX(faction)
} else {
suppressor // there are no common pool MAX arms
}
}
def isMaxArms(tdef: ToolDefinition): Boolean = {
tdef match {
case `trhev_dualcycler` | `nchev_scattercannon` | `vshev_quasar` | `trhev_pounder` | `nchev_falcon` |
`vshev_comet` | `trhev_burster` | `nchev_sparrow` | `vshev_starfire` =>
true
case _ =>
false
}
}
def AI_MAX(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => trhev_dualcycler
case PlanetSideEmpire.NC => nchev_scattercannon
case PlanetSideEmpire.VS => vshev_quasar
case PlanetSideEmpire.NEUTRAL => suppressor //there are no common pool MAX arms
}
}
def AI_MAXAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => dualcycler_ammo
case PlanetSideEmpire.NC => scattercannon_ammo
case PlanetSideEmpire.VS => quasar_ammo
case PlanetSideEmpire.NEUTRAL => bullet_9mm //there are no common pool MAX arms
}
}
def AV_MAX(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => trhev_pounder
case PlanetSideEmpire.NC => nchev_falcon
case PlanetSideEmpire.VS => vshev_comet
case PlanetSideEmpire.NEUTRAL => suppressor //there are no common pool MAX arms
}
}
def AV_MAXAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => pounder_ammo
case PlanetSideEmpire.NC => falcon_ammo
case PlanetSideEmpire.VS => comet_ammo
case PlanetSideEmpire.NEUTRAL => bullet_9mm //there are no common pool MAX arms
}
}
def AA_MAX(faction: PlanetSideEmpire.Value): ToolDefinition = {
faction match {
case PlanetSideEmpire.TR => trhev_burster
case PlanetSideEmpire.NC => nchev_sparrow
case PlanetSideEmpire.VS => vshev_starfire
case PlanetSideEmpire.NEUTRAL => suppressor //there are no common pool MAX arms
}
}
def AA_MAXAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = {
faction match {
case PlanetSideEmpire.TR => burster_ammo
case PlanetSideEmpire.NC => sparrow_ammo
case PlanetSideEmpire.VS => starfire_ammo
case PlanetSideEmpire.NEUTRAL => bullet_9mm //there are no common pool MAX arms
}
}
def PortableMannedTurret(faction: PlanetSideEmpire.Value): TurretDeployableDefinition = {
faction match {
case PlanetSideEmpire.TR => portable_manned_turret_tr
case PlanetSideEmpire.NC => portable_manned_turret_nc
case PlanetSideEmpire.VS => portable_manned_turret_vs
case PlanetSideEmpire.NEUTRAL => portable_manned_turret
}
}
/**
* Using the definition for a piece of `Equipment` determine if it is a grenade-type weapon.
* Only the normal grenades count; the grenade packs are excluded.
* @param edef the `EquipmentDefinition` of the item
* @return `true`, if it is a grenade-type weapon; `false`, otherwise
*/
def isGrenade(edef: EquipmentDefinition): Boolean = {
edef match {
case `frag_grenade` | `jammer_grenade` | `plasma_grenade` | `dynomite` =>
true
case _ =>
false
}
}
/**
* Using the definition for a piece of `Equipment` determine if it is a grenade-type weapon.
* Only the grenade packs count; the normal grenades are excluded.
* @param edef the `EquipmentDefinition` of the item
* @return `true`, if it is a grenade-type weapon; `false`, otherwise
*/
def isGrenadePack(edef: EquipmentDefinition): Boolean = {
edef match {
case `frag_cartridge` | `jammer_cartridge` | `plasma_cartridge` =>
true
case _ =>
false
}
}
/**
* Using the definition for a piece of `Equipment` determine with which faction it aligns if it is a weapon.
* Only checks `Tool` objects.
* Useful for determining if some item has to be dropped during an activity like `Loadout` switching.
* @param edef the `EquipmentDefinition` of the item
* @return the faction alignment, or `Neutral`
*/
def isFactionWeapon(edef: EquipmentDefinition): PlanetSideEmpire.Value = {
edef match {
case `chainblade` | `repeater` | `anniversary_guna` | `cycler` | `mini_chaingun` | `striker` |
`trhev_dualcycler` | `trhev_pounder` | `trhev_burster` =>
PlanetSideEmpire.TR
case `magcutter` | `isp` | `anniversary_gun` | `gauss` | `r_shotgun` | `hunterseeker` | `nchev_scattercannon` |
`nchev_falcon` | `nchev_sparrow` =>
PlanetSideEmpire.NC
case `forceblade` | `beamer` | `anniversary_gunb` | `pulsar` | `lasher` | `lancer` | `vshev_quasar` |
`vshev_comet` | `vshev_starfire` =>
PlanetSideEmpire.VS
case _ =>
PlanetSideEmpire.NEUTRAL
}
}
/**
* Using the definition for a piece of `Equipment` determine with which faction it aligns.
* Checks both `Tool` objects and unique `AmmoBox` objects.
* @param edef the `EquipmentDefinition` of the item
* @return the faction alignment, or `Neutral`
*/
def isFactionEquipment(edef: EquipmentDefinition): PlanetSideEmpire.Value = {
edef match {
case `chainblade` | `repeater` | `anniversary_guna` | `cycler` | `mini_chaingun` | `striker` |
`striker_missile_ammo` | `trhev_dualcycler` | `trhev_pounder` | `trhev_burster` | `dualcycler_ammo` |
`pounder_ammo` | `burster_ammo` =>
PlanetSideEmpire.TR
case `magcutter` | `isp` | `anniversary_gun` | `gauss` | `r_shotgun` | `hunterseeker` | `hunter_seeker_missile` |
`nchev_scattercannon` | `nchev_falcon` | `nchev_sparrow` | `scattercannon_ammo` | `falcon_ammo` |
`sparrow_ammo` =>
PlanetSideEmpire.NC
case `forceblade` | `beamer` | `anniversary_gunb` | `pulsar` | `lasher` | `lancer` | `energy_cell` |
`lancer_cartridge` | `vshev_quasar` | `vshev_comet` | `vshev_starfire` | `quasar_ammo` | `comet_ammo` |
`starfire_ammo` =>
PlanetSideEmpire.VS
case _ =>
PlanetSideEmpire.NEUTRAL
}
}
/**
* Using the definition for a piece of `Equipment` determine whether it is a "cavern weapon."
* Useful for determining if some item has to be dropped during an activity like `Loadout` switching.
* @param edef the `EquipmentDefinition` of the item
* @return `true`, if it is; otherwise, `false`
*/
def isCavernWeapon(edef: EquipmentDefinition): Boolean = {
edef match {
case `spiker` | `maelstrom` | `radiator` => true
case _ => false
}
}
/**
* Using the definition for a piece of `Equipment` determine whether it is "cavern equipment."
* @param edef the `EquipmentDefinition` of the item
* @return `true`, if it is; otherwise, `false`
*/
def isCavernEquipment(edef: EquipmentDefinition): Boolean = {
edef match {
case `spiker` | `maelstrom` | `radiator` | `ancient_ammo_combo` | `maelstrom_ammo` => true
case _ => false
}
}
/**
* Using the definition for a `Vehicle` determine whether it is a "cavern Vehicle."
* @param vdef the `VehicleDefinition` of the item
* @return `true`, if it is; otherwise, `false`
*/
def isCavernVehicle(vdef: VehicleDefinition): Boolean = {
vdef match {
case `router` | `switchblade` | `flail` => true
case _ => false
}
}
/**
* Using the definition for a piece of `Equipment` determine whether it is "special."
* "Special equipment" is any non-standard `Equipment` that, while it can be obtained from a `Terminal`, has artificial prerequisites.
* For example, the Kits are unlocked as rewards for holiday events and require possessing a specific `MeritCommendation`.
* @param edef the `EquipmentDefinition` of the item
* @return `true`, if it is; otherwise, `false`
*/
def isSpecialEquipment(edef: EquipmentDefinition): Boolean = {
edef match {
case `super_medkit` | `super_armorkit` | `super_staminakit` | `katana` =>
true
case _ =>
false
}
}
/**
* Given the the definition of a piece of equipment,
* determine whether it is a weapon to be installed on battle frame robotics units.
* @param tdef the `EquipmentDefinition` of the alleged weapon
* @return `true`, if the definition represents a battle frame robotics weapon;
* `false`, otherwise
*/
def isBattleFrameWeapon(tdef : EquipmentDefinition) : Boolean = {
isBattleFrameWeaponForVS(tdef) || isBattleFrameWeaponForTR(tdef) || isBattleFrameWeaponForNC(tdef)
}
/**
* Given the the definition of a battle frame robotics weapon, determine whether it is used by the specific faction.
* @param tdef the `EquipmentDefinition` of the alleged weapon
* @param faction the suggested alignment of the weapon
* @return `true`, if a battle frame robotics weapon and associated with the given faction;
* `false`, otherwise
*/
def isBattleFrameWeapon(tdef : EquipmentDefinition, faction : PlanetSideEmpire.Value) : Boolean = {
faction match {
case PlanetSideEmpire.VS =>
isBattleFrameWeaponForVS(tdef)
case PlanetSideEmpire.TR =>
isBattleFrameWeaponForTR(tdef)
case PlanetSideEmpire.NC =>
isBattleFrameWeaponForNC(tdef)
case _ =>
false
}
}
def isBattleFrameArmorSiphon(edef : EquipmentDefinition) : Boolean = {
edef match {
case `aphelion_armor_siphon` | `aphelion_armor_siphon_left` | `aphelion_armor_siphon_right` |
`colossus_armor_siphon` | `colossus_armor_siphon_left` | `colossus_armor_siphon_right` |
`peregrine_armor_siphon` | `peregrine_armor_siphon_left` | `peregrine_armor_siphon_right` =>
true
case _ =>
false
}
}
def isBattleFrameNTUSiphon(edef : EquipmentDefinition) : Boolean = {
edef match {
case `aphelion_ntu_siphon` | `aphelion_ntu_siphon_left` | `aphelion_ntu_siphon_right` |
`colossus_ntu_siphon` | `colossus_ntu_siphon_left` | `colossus_ntu_siphon_right` |
`peregrine_ntu_siphon` | `peregrine_ntu_siphon_left` | `peregrine_ntu_siphon_right` =>
true
case _ =>
false
}
}
/**
* Given the the definition of a battle frame robotics weapon, determine whether it is used by the Vanu Sovereignty.
* @param tdef the `EquipmentDefinition` of the alleged weapon
* @return `true`, if a battle frame robotics weapon and associated with the given faction;
* `false`, otherwise
*/
def isBattleFrameWeaponForVS(tdef : EquipmentDefinition) : Boolean = {
tdef match {
case `aphelion_armor_siphon` | `aphelion_armor_siphon_left` | `aphelion_armor_siphon_right` |
`aphelion_laser` | `aphelion_laser_left` | `aphelion_laser_right` |
`aphelion_ntu_siphon` | `aphelion_ntu_siphon_left` | `aphelion_ntu_siphon_right` |
`aphelion_ppa` | `aphelion_ppa_left` | `aphelion_ppa_right` |
`aphelion_starfire` | `aphelion_starfire_left` | `aphelion_starfire_right` |
`aphelion_immolation_cannon` | `aphelion_plasma_rocket_pod` =>
true
case _ =>
false
}
}
/**
* Given the the definition of a battle frame robotics weapon, determine whether it is used by the Terran Republic.
* @param tdef the `EquipmentDefinition` of the alleged weapon
* @return `true`, if a battle frame robotics weapon and associated with the given faction;
* `false`, otherwise
*/
def isBattleFrameWeaponForTR(tdef : EquipmentDefinition) : Boolean = {
tdef match {
case `colossus_armor_siphon` | `colossus_armor_siphon_left` | `colossus_armor_siphon_right` |
`colossus_burster` | `colossus_burster_left` | `colossus_burster_right` |
`colossus_chaingun` | `colossus_chaingun_left` | `colossus_chaingun_right` |
`colossus_ntu_siphon` | `colossus_ntu_siphon_left` | `colossus_ntu_siphon_right` |
`colossus_tank_cannon` | `colossus_tank_cannon_left` | `colossus_tank_cannon_right` |
`colossus_cluster_bomb_pod` | `colossus_dual_100mm_cannons` =>
true
case _ =>
false
}
}
/**
* Given the the definition of a battle frame robotics weapon, determine whether it is used by the New Conglomerate.
* @param tdef the `EquipmentDefinition` of the alleged weapon
* @return `true`, if a battle frame robotics weapon and associated with the given faction;
* `false`, otherwise
*/
def isBattleFrameWeaponForNC(tdef : EquipmentDefinition) : Boolean = {
tdef match {
case `peregrine_armor_siphon` | `peregrine_armor_siphon_left` | `peregrine_armor_siphon_right` |
`peregrine_dual_machine_gun` | `peregrine_dual_machine_gun_left` | `peregrine_dual_machine_gun_right` |
`peregrine_mechhammer` | `peregrine_mechhammer_left` | `peregrine_mechhammer_right` |
`peregrine_ntu_siphon` | `colossus_ntu_siphon_left` | `peregrine_ntu_siphon_right` |
`peregrine_sparrow` | `peregrine_sparrow_left` | `peregrine_sparrow_right` |
`peregrine_particle_cannon` | `peregrine_dual_rocket_pods` =>
true
case _ =>
false
}
}
/**
* 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
* @return `true`, if it is; `false`, otherwise
*/
def isFlightVehicle(vdef: VehicleDefinition): Boolean = {
vdef match {
case `mosquito` | `lightgunship` | `wasp` | `liberator` | `vulture` | `phantasm` | `lodestar` | `dropship` |
`galaxy_gunship` =>
true
case _ =>
false
}
}
/**
* Using the definition for a `Vehicle` determine whether it hovers.
* @param vdef the `VehicleDefinition` of the vehicle
* @return `true`, if it can; `false`, otherwise
*/
def isHoverVehicle(vdef: VehicleDefinition): Boolean = {
vdef match {
case `twomanhoverbuggy` | `magrider` | `router` | `flail` =>
true
case _ =>
false
}
}
/**
* Using the definition for a `Vehicle` determine whether it is a frame vehicle.
* @param vdef the `VehicleDefinition` of the vehicle
* @return `true`, if it is; `false`, otherwise
*/
def isBattleFrameVehicle(vdef : VehicleDefinition) : Boolean = {
isBattleFrameGunnerVehicle(vdef) || isBattleFrameFlightVehicle(vdef)
}
/**
* Using the definition for a `Vehicle` determine whether it is a frame vehicle,
* primarily a gunner-variant battleframe vehicle.
* @param vdef the `VehicleDefinition` of the vehicle
* @return `true`, if it is; `false`, otherwise
*/
def isBattleFrameGunnerVehicle(vdef: VehicleDefinition): Boolean = {
vdef match {
case `colossus_gunner` | `peregrine_gunner` | `aphelion_gunner` =>
true
case _ =>
false
}
}
/**
* Using the definition for a `Vehicle` determine whether it is a frame vehicle,
* primarily a flight-variant battleframe vehicle.
* @see `isFlightVehicle`
* @param vdef the `VehicleDefinition` of the vehicle
* @return `true`, if it is; `false`, otherwise
*/
def isBattleFrameFlightVehicle(vdef: VehicleDefinition): Boolean = {
vdef match {
case `colossus_flight` | `peregrine_flight` | `aphelion_flight` =>
true
case _ =>
false
}
}
/**
* Using the definition for a `Vehicle` determine whether it can rotate its body without forward acceleration.
* @param vdef the `VehicleDefinition` of the vehicle
* @return `true`, if it is; `false`, otherwise
*/
def canStationaryRotate(vdef: VehicleDefinition): Boolean = {
if (isFlightVehicle(vdef) || isHoverVehicle(vdef)) {
true
} else {
vdef match {
case `lightning` | `prowler` | `vanguard` =>
true
case _ =>
false
}
}
}
def MaxDepth(obj: PlanetSideGameObject): Float = {
obj match {
case p: Player =>
if (p.Crouching) {
1.093750f // same regardless of gender
} else if (p.ExoSuit == ExoSuitType.MAX) {
1.906250f // VS female MAX
} else if (p.Sex == CharacterSex.Male) {
obj.Definition.MaxDepth // male
} else {
1.546875f // female
}
case _ =>
obj.Definition.MaxDepth
}
}
/**
* Return projectiles that are the damage proxies of another projectile,
* if such a damage proxy is defined in the appropriate field by its unique object identifier.
* @see `ProjectileDefinition.DamageProxy`
* @param projectile the original projectile
* @return the damage proxy projectiles, if they can be produced
*/
def getDamageProxy(projectile: Projectile, hitPosition: Vector3): List[Projectile] = {
projectile
.Definition
.DamageProxy
.flatMap { uoid =>
((uoid: @switch) match {
case 96 => Some(aphelion_plasma_cloud)
case 301 => Some(projectile.profile) //'flamethrower_fire_cloud' can not be made into a packet
case 464 => Some(projectile.profile) //'maelstrom_grenade_damager' can not be made into a packet
case 601 => Some(oicw_little_buddy)
case 655 => Some(peregrine_particle_cannon_radiation_cloud)
case 717 => Some(radiator_cloud)
case _ => None
}) match {
case Some(proxy)
if proxy eq projectile.profile =>
List(projectile)
case Some(proxy) =>
List(Projectile(
proxy,
projectile.tool_def,
projectile.fire_mode,
projectile.owner,
projectile.attribute_to,
hitPosition,
Vector3.Zero
))
case None =>
Nil
}
}
}
/**
* Initialize `KitDefinition` globals.
*/
private def init_kit(): Unit = {
medkit.Name = "medkit"
super_medkit.Name = "super_medkit"
super_armorkit.Name = "super_armorkit"
super_staminakit.Name = "super_staminakit"
}
/**
* Initialize `ExoSuitType` globals.
*/
private def init_exosuit(): Unit = {
Standard.Name = "standard"
Standard.MaxArmor = 50
Standard.InventoryScale = InventoryTile.Tile96
Standard.InventoryOffset = 6
Standard.Holster(0, EquipmentSize.Pistol)
Standard.Holster(2, EquipmentSize.Rifle)
Standard.Holster(4, EquipmentSize.Melee)
Standard.ResistanceDirectHit = 4
Standard.ResistanceSplash = 15
Standard.ResistanceAggravated = 8
Standard.collision.forceFactor = 1.5f
Standard.collision.massFactor = 2f
Agile.Name = "lite_armor"
Agile.Descriptor = "agile"
Agile.MaxArmor = 100
Agile.InventoryScale = InventoryTile.Tile99
Agile.InventoryOffset = 6
Agile.Holster(0, EquipmentSize.Pistol)
Agile.Holster(1, EquipmentSize.Pistol)
Agile.Holster(2, EquipmentSize.Rifle)
Agile.Holster(4, EquipmentSize.Melee)
Agile.ResistanceDirectHit = 6
Agile.ResistanceSplash = 25
Agile.ResistanceAggravated = 10
Agile.collision.forceFactor = 1.5f
Agile.collision.massFactor = 2f
Reinforced.Name = "med_armor"
Reinforced.Descriptor = "reinforced"
Reinforced.Permissions = List(Certification.ReinforcedExoSuit)
Reinforced.MaxArmor = 200
Reinforced.InventoryScale = InventoryTile.Tile1209
Reinforced.InventoryOffset = 6
Reinforced.Holster(0, EquipmentSize.Pistol)
Reinforced.Holster(1, EquipmentSize.Pistol)
Reinforced.Holster(2, EquipmentSize.Rifle)
Reinforced.Holster(3, EquipmentSize.Rifle)
Reinforced.Holster(4, EquipmentSize.Melee)
Reinforced.ResistanceDirectHit = 10
Reinforced.ResistanceSplash = 35
Reinforced.ResistanceAggravated = 12
Reinforced.collision.forceFactor = 2f
Reinforced.collision.massFactor = 3f
Infiltration.Name = "infiltration_suit"
Infiltration.Permissions = List(Certification.InfiltrationSuit)
Infiltration.MaxArmor = 0
Infiltration.InventoryScale = InventoryTile.Tile66
Infiltration.InventoryOffset = 6
Infiltration.Holster(0, EquipmentSize.Pistol)
Infiltration.Holster(4, EquipmentSize.Melee)
def CommonMaxConfig(max: SpecialExoSuitDefinition): Unit = {
max.Permissions = List(Certification.AIMAX, Certification.AVMAX, Certification.AAMAX, Certification.UniMAX)
max.MaxArmor = 650
max.InventoryScale = InventoryTile.Tile1612
max.InventoryOffset = 6
max.Holster(0, EquipmentSize.Max)
max.Holster(4, EquipmentSize.Melee)
max.Subtract.Damage1 = 2
max.ResistanceDirectHit = 6
max.ResistanceSplash = 35
max.ResistanceAggravated = 10
max.RadiationShielding = 0.5f
max.collision.forceFactor = 4f
max.collision.massFactor = 10f
max.DamageUsing = DamageCalculations.AgainstMaxSuit
max.Model = MaxResolutions.calculate
}
CommonMaxConfig(VSMAX)
VSMAX.Name = "vshev"
VSMAX.MaxCapacitor = 50
VSMAX.CapacitorRechargeDelayMillis = 5000
VSMAX.CapacitorRechargePerSecond = 3
VSMAX.CapacitorDrainPerSecond = 20
CommonMaxConfig(TRMAX)
TRMAX.Name = "trhev"
TRMAX.MaxCapacitor = 300
TRMAX.CapacitorRechargeDelayMillis = 10000
TRMAX.CapacitorRechargePerSecond = 10
TRMAX.CapacitorDrainPerSecond = 30
CommonMaxConfig(NCMAX)
NCMAX.Name = "nchev"
NCMAX.MaxCapacitor = 400
NCMAX.CapacitorRechargeDelayMillis = 10000
NCMAX.CapacitorRechargePerSecond = 4
NCMAX.CapacitorDrainPerSecond = 4
}
/**
* Initialize `AmmoBoxDefinition` globals.
*/
private def init_ammo(): Unit = {
melee_ammo.Name = "melee_ammo"
melee_ammo.Size = EquipmentSize.Blocked
frag_grenade_ammo.Name = "frag_grenade_ammo"
frag_grenade_ammo.Size = EquipmentSize.Blocked
jammer_grenade_ammo.Name = "jammer_grenade_ammo"
jammer_grenade_ammo.Size = EquipmentSize.Blocked
plasma_grenade_ammo.Name = "plasma_grenade_ammo"
plasma_grenade_ammo.Size = EquipmentSize.Blocked
bullet_9mm.Name = "9mmbullet"
bullet_9mm.Capacity = 50
bullet_9mm.Tile = InventoryTile.Tile33
bullet_9mm_AP.Name = "9mmbullet_AP"
bullet_9mm_AP.Capacity = 50
bullet_9mm_AP.Tile = InventoryTile.Tile33
shotgun_shell.Name = "shotgun_shell"
shotgun_shell.Capacity = 16
shotgun_shell.Tile = InventoryTile.Tile33
shotgun_shell_AP.Name = "shotgun_shell_AP"
shotgun_shell_AP.Capacity = 16
shotgun_shell_AP.Tile = InventoryTile.Tile33
energy_cell.Name = "energy_cell"
energy_cell.Capacity = 50
energy_cell.Tile = InventoryTile.Tile33
anniversary_ammo.Name = "anniversary_ammo"
anniversary_ammo.Capacity = 30
anniversary_ammo.Tile = InventoryTile.Tile33
ancient_ammo_combo.Name = "ancient_ammo_combo"
ancient_ammo_combo.Capacity = 30
ancient_ammo_combo.Tile = InventoryTile.Tile33
maelstrom_ammo.Name = "maelstrom_ammo"
maelstrom_ammo.Capacity = 50
maelstrom_ammo.Tile = InventoryTile.Tile33
phoenix_missile.Name = "phoenix_missile"
phoenix_missile.Size = EquipmentSize.Blocked
striker_missile_ammo.Name = "striker_missile_ammo"
striker_missile_ammo.Capacity = 15
striker_missile_ammo.Tile = InventoryTile.Tile44
hunter_seeker_missile.Name = "hunter_seeker_missile"
hunter_seeker_missile.Capacity = 9
hunter_seeker_missile.Tile = InventoryTile.Tile44
lancer_cartridge.Name = "lancer_cartridge"
lancer_cartridge.Capacity = 18
lancer_cartridge.Tile = InventoryTile.Tile44
rocket.Name = "rocket"
rocket.Capacity = 15
rocket.Tile = InventoryTile.Tile33
frag_cartridge.Name = "frag_cartridge"
frag_cartridge.Capacity = 12
frag_cartridge.Tile = InventoryTile.Tile33
plasma_cartridge.Name = "plasma_cartridge"
plasma_cartridge.Capacity = 12
plasma_cartridge.Tile = InventoryTile.Tile33
jammer_cartridge.Name = "jammer_cartridge"
jammer_cartridge.Capacity = 12
jammer_cartridge.Tile = InventoryTile.Tile33
bolt.Name = "bolt"
bolt.Capacity = 10
bolt.Tile = InventoryTile.Tile33
oicw_ammo.Name = "oicw_ammo"
oicw_ammo.Capacity = 10
oicw_ammo.Tile = InventoryTile.Tile44
flamethrower_ammo.Name = "flamethrower_ammo"
flamethrower_ammo.Capacity = 100
flamethrower_ammo.Tile = InventoryTile.Tile44
winchester_ammo.Name = "winchester_ammo"
winchester_ammo.Capacity = 10
winchester_ammo.Tile = InventoryTile.Tile33
pellet_gun_ammo.Name = "pellet_gun_ammo"
pellet_gun_ammo.Capacity = 8
pellet_gun_ammo.Tile = InventoryTile.Tile33
six_shooter_ammo.Name = "six_shooter_ammo"
six_shooter_ammo.Capacity = 12
six_shooter_ammo.Tile = InventoryTile.Tile33
dualcycler_ammo.Name = "dualcycler_ammo"
dualcycler_ammo.Capacity = 100
dualcycler_ammo.Tile = InventoryTile.Tile44
pounder_ammo.Name = "pounder_ammo"
pounder_ammo.Capacity = 50
pounder_ammo.Tile = InventoryTile.Tile44
burster_ammo.Name = "burster_ammo"
burster_ammo.Capacity = 100
burster_ammo.Tile = InventoryTile.Tile44
scattercannon_ammo.Name = "scattercannon_ammo"
scattercannon_ammo.Capacity = 50
scattercannon_ammo.Tile = InventoryTile.Tile44
falcon_ammo.Name = "falcon_ammo"
falcon_ammo.Capacity = 50
falcon_ammo.Tile = InventoryTile.Tile44
sparrow_ammo.Name = "sparrow_ammo"
sparrow_ammo.Capacity = 50
sparrow_ammo.Tile = InventoryTile.Tile44
quasar_ammo.Name = "quasar_ammo"
quasar_ammo.Capacity = 60
quasar_ammo.Tile = InventoryTile.Tile44
comet_ammo.Name = "comet_ammo"
comet_ammo.Capacity = 50
comet_ammo.Tile = InventoryTile.Tile44
starfire_ammo.Name = "starfire_ammo"
starfire_ammo.Capacity = 50
starfire_ammo.Tile = InventoryTile.Tile44
health_canister.Name = "health_canister"
health_canister.Capacity = 100
health_canister.Tile = InventoryTile.Tile23
armor_canister.Name = "armor_canister"
armor_canister.Capacity = 100
armor_canister.repairAmount = 12f //ADB says 12.5, but 12 is better for the math
armor_canister.Tile = InventoryTile.Tile23
upgrade_canister.Name = "upgrade_canister"
upgrade_canister.Capacity = 1
upgrade_canister.Tile = InventoryTile.Tile23
trek_ammo.Name = "trek_ammo"
trek_ammo.Size = EquipmentSize.Blocked
bullet_35mm.Name = "35mmbullet"
bullet_35mm.Capacity = 100
bullet_35mm.Tile = InventoryTile.Tile44
aphelion_laser_ammo.Name = "aphelion_laser_ammo"
aphelion_laser_ammo.Capacity = 165
aphelion_laser_ammo.Tile = InventoryTile.Tile44
aphelion_immolation_cannon_ammo.Name = "aphelion_immolation_cannon_ammo"
aphelion_immolation_cannon_ammo.Capacity = 100
aphelion_immolation_cannon_ammo.Tile = InventoryTile.Tile55
aphelion_plasma_rocket_ammo.Name = "aphelion_plasma_rocket_ammo"
aphelion_plasma_rocket_ammo.Capacity = 195
aphelion_plasma_rocket_ammo.Tile = InventoryTile.Tile55
aphelion_ppa_ammo.Name = "aphelion_ppa_ammo"
aphelion_ppa_ammo.Capacity = 110
aphelion_ppa_ammo.Tile = InventoryTile.Tile44
aphelion_starfire_ammo.Name = "aphelion_starfire_ammo"
aphelion_starfire_ammo.Capacity = 132
aphelion_starfire_ammo.Tile = InventoryTile.Tile44
skyguard_flak_cannon_ammo.Name = "skyguard_flak_cannon_ammo"
skyguard_flak_cannon_ammo.Capacity = 200
skyguard_flak_cannon_ammo.Tile = InventoryTile.Tile44
firebird_missile.Name = "firebird_missile"
firebird_missile.Capacity = 50
firebird_missile.Tile = InventoryTile.Tile44
flux_cannon_thresher_battery.Name = "flux_cannon_thresher_battery"
flux_cannon_thresher_battery.Capacity = 150
flux_cannon_thresher_battery.Tile = InventoryTile.Tile44
fluxpod_ammo.Name = "fluxpod_ammo"
fluxpod_ammo.Capacity = 80
fluxpod_ammo.Tile = InventoryTile.Tile44
hellfire_ammo.Name = "hellfire_ammo"
hellfire_ammo.Capacity = 24
hellfire_ammo.Tile = InventoryTile.Tile44
liberator_bomb.Name = "liberator_bomb"
liberator_bomb.Capacity = 20
liberator_bomb.Tile = InventoryTile.Tile44
bullet_25mm.Name = "25mmbullet"
bullet_25mm.Capacity = 150
bullet_25mm.Tile = InventoryTile.Tile44
bullet_75mm.Name = "75mmbullet"
bullet_75mm.Capacity = 100
bullet_75mm.Tile = InventoryTile.Tile44
heavy_grenade_mortar.Name = "heavy_grenade_mortar"
heavy_grenade_mortar.Capacity = 100
heavy_grenade_mortar.Tile = InventoryTile.Tile44
pulse_battery.Name = "pulse_battery"
pulse_battery.Capacity = 100
pulse_battery.Tile = InventoryTile.Tile44
heavy_rail_beam_battery.Name = "heavy_rail_beam_battery"
heavy_rail_beam_battery.Capacity = 100
heavy_rail_beam_battery.Tile = InventoryTile.Tile44
reaver_rocket.Name = "reaver_rocket"
reaver_rocket.Capacity = 12
reaver_rocket.Tile = InventoryTile.Tile44
bullet_20mm.Name = "20mmbullet"
bullet_20mm.Capacity = 200
bullet_20mm.Tile = InventoryTile.Tile44
bullet_12mm.Name = "12mmbullet"
bullet_12mm.Capacity = 300
bullet_12mm.Tile = InventoryTile.Tile44
wasp_rocket_ammo.Name = "wasp_rocket_ammo"
wasp_rocket_ammo.Capacity = 6
wasp_rocket_ammo.Tile = InventoryTile.Tile44
wasp_gun_ammo.Name = "wasp_gun_ammo"
wasp_gun_ammo.Capacity = 150
wasp_gun_ammo.Tile = InventoryTile.Tile44
bullet_15mm.Name = "15mmbullet"
bullet_15mm.Capacity = 360
bullet_15mm.Tile = InventoryTile.Tile44
colossus_100mm_cannon_ammo.Name = "colossus_100mm_cannon_ammo"
colossus_100mm_cannon_ammo.Capacity = 90
colossus_100mm_cannon_ammo.Tile = InventoryTile.Tile55
colossus_burster_ammo.Name = "colossus_burster_ammo"
colossus_burster_ammo.Capacity = 235
colossus_burster_ammo.Tile = InventoryTile.Tile44
colossus_cluster_bomb_ammo.Name = "colossus_cluster_bomb_ammo"
colossus_cluster_bomb_ammo.Capacity = 150
colossus_cluster_bomb_ammo.Tile = InventoryTile.Tile55
colossus_chaingun_ammo.Name = "colossus_chaingun_ammo"
colossus_chaingun_ammo.Capacity = 600
colossus_chaingun_ammo.Tile = InventoryTile.Tile44
colossus_tank_cannon_ammo.Name = "colossus_tank_cannon_ammo"
colossus_tank_cannon_ammo.Capacity = 110
colossus_tank_cannon_ammo.Tile = InventoryTile.Tile44
bullet_105mm.Name = "105mmbullet"
bullet_105mm.Capacity = 100
bullet_105mm.Tile = InventoryTile.Tile44
gauss_cannon_ammo.Name = "gauss_cannon_ammo"
gauss_cannon_ammo.Capacity = 15
gauss_cannon_ammo.Tile = InventoryTile.Tile44
peregrine_dual_machine_gun_ammo.Name = "peregrine_dual_machine_gun_ammo"
peregrine_dual_machine_gun_ammo.Capacity = 240
peregrine_dual_machine_gun_ammo.Tile = InventoryTile.Tile44
peregrine_mechhammer_ammo.Name = "peregrine_mechhammer_ammo"
peregrine_mechhammer_ammo.Capacity = 30
peregrine_mechhammer_ammo.Tile = InventoryTile.Tile44
peregrine_particle_cannon_ammo.Name = "peregrine_particle_cannon_ammo"
peregrine_particle_cannon_ammo.Capacity = 40
peregrine_particle_cannon_ammo.Tile = InventoryTile.Tile55
peregrine_rocket_pod_ammo.Name = "peregrine_rocket_pod_ammo"
peregrine_rocket_pod_ammo.Capacity = 275
peregrine_rocket_pod_ammo.Tile = InventoryTile.Tile55
peregrine_sparrow_ammo.Name = "peregrine_sparrow_ammo"
peregrine_sparrow_ammo.Capacity = 150
peregrine_sparrow_ammo.Tile = InventoryTile.Tile44
bullet_150mm.Name = "150mmbullet"
bullet_150mm.Capacity = 50
bullet_150mm.Tile = InventoryTile.Tile44
phalanx_ammo.Name = "phalanx_ammo"
phalanx_ammo.Size = EquipmentSize.Inventory
spitfire_ammo.Name = "spitfire_ammo"
spitfire_ammo.Size = EquipmentSize.Inventory
spitfire_aa_ammo.Name = "spitfire_aa_ammo"
spitfire_aa_ammo.Size = EquipmentSize.Inventory
energy_gun_ammo.Name = "energy_gun_ammo"
energy_gun_ammo.Size = EquipmentSize.Inventory
armor_siphon_ammo.Name = "armor_siphon_ammo"
armor_siphon_ammo.Capacity = 0
armor_siphon_ammo.Size = EquipmentSize.Blocked
ntu_siphon_ammo.Name = "ntu_siphon_ammo"
ntu_siphon_ammo.Capacity = 0
ntu_siphon_ammo.Size = EquipmentSize.Blocked
}
/**
* Initialize `ProjectileDefinition` globals.
*/
private def init_projectile(): Unit = {
init_standard_projectile()
init_bfr_projectile()
}
/**
* Initialize `ProjectileDefinition` globals for most projectiles.
*/
private def init_standard_projectile(): Unit = {
val projectileConverter: ProjectileConverter = new ProjectileConverter
val radCloudConverter: RadiationCloudConverter = new RadiationCloudConverter
no_projectile.Name = "no_projectile"
no_projectile.DamageRadiusMin = 0f
ProjectileDefinition.CalculateDerivedFields(no_projectile)
no_projectile.Modifiers = Nil
bullet_105mm_projectile.Name = "105mmbullet_projectile"
bullet_105mm_projectile.Damage0 = 150
bullet_105mm_projectile.Damage1 = 300
bullet_105mm_projectile.Damage2 = 300
bullet_105mm_projectile.Damage3 = 300
bullet_105mm_projectile.Damage4 = 180
bullet_105mm_projectile.DamageAtEdge = 0.1f
bullet_105mm_projectile.DamageRadius = 7f
bullet_105mm_projectile.ProjectileDamageType = DamageType.Splash
bullet_105mm_projectile.InitialVelocity = 100
bullet_105mm_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(bullet_105mm_projectile)
bullet_12mm_projectile.Name = "12mmbullet_projectile"
bullet_12mm_projectile.Damage0 = 25
bullet_12mm_projectile.Damage1 = 10
bullet_12mm_projectile.Damage2 = 25
bullet_12mm_projectile.Damage3 = 10
bullet_12mm_projectile.Damage4 = 7
bullet_12mm_projectile.ProjectileDamageType = DamageType.Direct
bullet_12mm_projectile.DegradeDelay = .015f
bullet_12mm_projectile.DegradeMultiplier = 0.5f
bullet_12mm_projectile.InitialVelocity = 500
bullet_12mm_projectile.Lifespan = 0.5f
bullet_12mm_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(bullet_12mm_projectile)
bullet_12mm_projectileb.Name = "12mmbullet_projectileb"
// TODO for later, maybe : set_resource_parent 12mmbullet_projectileb game_objects 12mmbullet_projectile
bullet_12mm_projectileb.Damage0 = 25
bullet_12mm_projectileb.Damage1 = 10
bullet_12mm_projectileb.Damage2 = 25
bullet_12mm_projectileb.Damage3 = 10
bullet_12mm_projectileb.Damage4 = 7
bullet_12mm_projectileb.ProjectileDamageType = DamageType.Direct
bullet_12mm_projectileb.DegradeDelay = .015f
bullet_12mm_projectileb.DegradeMultiplier = 0.5f
bullet_12mm_projectileb.InitialVelocity = 500
bullet_12mm_projectileb.Lifespan = 0.5f
bullet_12mm_projectileb.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(bullet_12mm_projectileb)
bullet_150mm_projectile.Name = "150mmbullet_projectile"
bullet_150mm_projectile.Damage0 = 150
bullet_150mm_projectile.Damage1 = 450
bullet_150mm_projectile.Damage2 = 450
bullet_150mm_projectile.Damage3 = 450
bullet_150mm_projectile.Damage4 = 400
bullet_150mm_projectile.DamageAtEdge = 0.10f
bullet_150mm_projectile.DamageRadius = 8f
bullet_150mm_projectile.ProjectileDamageType = DamageType.Splash
bullet_150mm_projectile.InitialVelocity = 100
bullet_150mm_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(bullet_150mm_projectile)
bullet_150mm_projectile.Modifiers = RadialDegrade
bullet_15mm_apc_projectile.Name = "15mmbullet_apc_projectile"
// TODO for later, maybe : set_resource_parent 15mmbullet_apc_projectile game_objects 15mmbullet_projectile
bullet_15mm_apc_projectile.Damage0 = 12
bullet_15mm_apc_projectile.Damage1 = 20
bullet_15mm_apc_projectile.Damage2 = 30
bullet_15mm_apc_projectile.Damage3 = 20
bullet_15mm_apc_projectile.Damage4 = 16
bullet_15mm_apc_projectile.ProjectileDamageType = DamageType.Direct
bullet_15mm_apc_projectile.DegradeDelay = .015f
bullet_15mm_apc_projectile.DegradeMultiplier = 0.5f
bullet_15mm_apc_projectile.InitialVelocity = 500
bullet_15mm_apc_projectile.Lifespan = 0.5f
ProjectileDefinition.CalculateDerivedFields(bullet_15mm_apc_projectile)
bullet_15mm_projectile.Name = "15mmbullet_projectile"
bullet_15mm_projectile.Damage0 = 21
bullet_15mm_projectile.Damage1 = 18
bullet_15mm_projectile.Damage2 = 25
bullet_15mm_projectile.Damage3 = 18
bullet_15mm_projectile.Damage4 = 11
bullet_15mm_projectile.ProjectileDamageType = DamageType.Direct
bullet_15mm_projectile.DegradeDelay = .015f
bullet_15mm_projectile.DegradeMultiplier = 0.5f
bullet_15mm_projectile.InitialVelocity = 500
bullet_15mm_projectile.Lifespan = 0.5f
ProjectileDefinition.CalculateDerivedFields(bullet_15mm_projectile)
bullet_20mm_apc_projectile.Name = "20mmbullet_apc_projectile"
// TODO for later, maybe : set_resource_parent 20mmbullet_apc_projectile game_objects 20mmbullet_projectile
bullet_20mm_apc_projectile.Damage0 = 24
bullet_20mm_apc_projectile.Damage1 = 40
bullet_20mm_apc_projectile.Damage2 = 60
bullet_20mm_apc_projectile.Damage3 = 40
bullet_20mm_apc_projectile.Damage4 = 32
bullet_20mm_apc_projectile.ProjectileDamageType = DamageType.Direct
bullet_20mm_apc_projectile.DegradeDelay = .015f
bullet_20mm_apc_projectile.DegradeMultiplier = 0.5f
bullet_20mm_apc_projectile.InitialVelocity = 500
bullet_20mm_apc_projectile.Lifespan = 0.5f
ProjectileDefinition.CalculateDerivedFields(bullet_20mm_apc_projectile)
bullet_20mm_projectile.Name = "20mmbullet_projectile"
bullet_20mm_projectile.Damage0 = 20
bullet_20mm_projectile.Damage1 = 20
bullet_20mm_projectile.Damage2 = 40
bullet_20mm_projectile.Damage3 = 20
bullet_20mm_projectile.Damage4 = 16
bullet_20mm_projectile.ProjectileDamageType = DamageType.Direct
bullet_20mm_projectile.DegradeDelay = .015f
bullet_20mm_projectile.DegradeMultiplier = 0.5f
bullet_20mm_projectile.InitialVelocity = 500
bullet_20mm_projectile.Lifespan = 0.5f
ProjectileDefinition.CalculateDerivedFields(bullet_20mm_projectile)
bullet_25mm_projectile.Name = "25mmbullet_projectile"
bullet_25mm_projectile.Damage0 = 25
bullet_25mm_projectile.Damage1 = 35
bullet_25mm_projectile.Damage2 = 50
bullet_25mm_projectile.ProjectileDamageType = DamageType.Direct
bullet_25mm_projectile.DegradeDelay = .02f
bullet_25mm_projectile.DegradeMultiplier = 0.5f
bullet_25mm_projectile.InitialVelocity = 500
bullet_25mm_projectile.Lifespan = 0.6f
ProjectileDefinition.CalculateDerivedFields(bullet_25mm_projectile)
bullet_35mm_projectile.Name = "35mmbullet_projectile"
bullet_35mm_projectile.Damage0 = 40
bullet_35mm_projectile.Damage1 = 50
bullet_35mm_projectile.Damage2 = 60
bullet_35mm_projectile.ProjectileDamageType = DamageType.Direct
bullet_35mm_projectile.DegradeDelay = .015f
bullet_35mm_projectile.DegradeMultiplier = 0.5f
bullet_35mm_projectile.InitialVelocity = 200
bullet_35mm_projectile.Lifespan = 1.5f
ProjectileDefinition.CalculateDerivedFields(bullet_35mm_projectile)
bullet_75mm_apc_projectile.Name = "75mmbullet_apc_projectile"
// TODO for later, maybe : set_resource_parent 75mmbullet_apc_projectile game_objects 75mmbullet_projectile
bullet_75mm_apc_projectile.Damage0 = 85
bullet_75mm_apc_projectile.Damage1 = 155
bullet_75mm_apc_projectile.DamageAtEdge = 0.1f
bullet_75mm_apc_projectile.DamageRadius = 5f
bullet_75mm_apc_projectile.ProjectileDamageType = DamageType.Splash
bullet_75mm_apc_projectile.InitialVelocity = 100
bullet_75mm_apc_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(bullet_75mm_apc_projectile)
bullet_75mm_apc_projectile.Modifiers = RadialDegrade
bullet_75mm_projectile.Name = "75mmbullet_projectile"
bullet_75mm_projectile.Damage0 = 75
bullet_75mm_projectile.Damage1 = 125
bullet_75mm_projectile.DamageAtEdge = 0.1f
bullet_75mm_projectile.DamageRadius = 5f
bullet_75mm_projectile.ProjectileDamageType = DamageType.Splash
bullet_75mm_projectile.InitialVelocity = 100
bullet_75mm_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(bullet_75mm_projectile)
bullet_75mm_projectile.Modifiers = RadialDegrade
bullet_9mm_AP_projectile.Name = "9mmbullet_AP_projectile"
// TODO for later, maybe : set_resource_parent 9mmbullet_AP_projectile game_objects 9mmbullet_projectile
bullet_9mm_AP_projectile.Damage0 = 10
bullet_9mm_AP_projectile.Damage1 = 15
bullet_9mm_AP_projectile.ProjectileDamageType = DamageType.Direct
bullet_9mm_AP_projectile.DegradeDelay = 0.15f
bullet_9mm_AP_projectile.DegradeMultiplier = 0.25f
bullet_9mm_AP_projectile.InitialVelocity = 500
bullet_9mm_AP_projectile.Lifespan = 0.4f
bullet_9mm_AP_projectile.UseDamage1Subtract = true
bullet_9mm_AP_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(bullet_9mm_AP_projectile)
bullet_9mm_projectile.Name = "9mmbullet_projectile"
bullet_9mm_projectile.Damage0 = 18
bullet_9mm_projectile.Damage1 = 10
bullet_9mm_projectile.ProjectileDamageType = DamageType.Direct
bullet_9mm_projectile.DegradeDelay = 0.15f
bullet_9mm_projectile.DegradeMultiplier = 0.25f
bullet_9mm_projectile.InitialVelocity = 500
bullet_9mm_projectile.Lifespan = 0.4f
bullet_9mm_projectile.UseDamage1Subtract = true
bullet_9mm_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(bullet_9mm_projectile)
anniversary_projectilea.Name = "anniversary_projectilea"
anniversary_projectilea.Damage0 = 30
anniversary_projectilea.Damage1 = 15
anniversary_projectilea.Damage2 = 15
anniversary_projectilea.Damage3 = 45
anniversary_projectilea.Damage4 = 15
anniversary_projectilea.ProjectileDamageType = DamageType.Direct
anniversary_projectilea.DegradeDelay = 0.04f
anniversary_projectilea.DegradeMultiplier = 0.2f
anniversary_projectilea.InitialVelocity = 500
anniversary_projectilea.Lifespan = 0.5f
anniversary_projectilea.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(anniversary_projectilea)
anniversary_projectileb.Name = "anniversary_projectileb"
// TODO for later, maybe : set_resource_parent anniversary_projectileb game_objects anniversary_projectilea
anniversary_projectileb.Damage0 = 30
anniversary_projectileb.Damage1 = 15
anniversary_projectileb.Damage2 = 15
anniversary_projectileb.Damage3 = 45
anniversary_projectileb.Damage4 = 15
anniversary_projectileb.ProjectileDamageType = DamageType.Direct
anniversary_projectileb.DegradeDelay = 0.04f
anniversary_projectileb.DegradeMultiplier = 0.2f
anniversary_projectileb.InitialVelocity = 500
anniversary_projectileb.Lifespan = 0.5f
anniversary_projectileb.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(anniversary_projectileb)
bolt_projectile.Name = "bolt_projectile"
bolt_projectile.Damage0 = 100
bolt_projectile.Damage1 = 50
bolt_projectile.Damage2 = 50
bolt_projectile.Damage3 = 50
bolt_projectile.Damage4 = 75
bolt_projectile.ProjectileDamageType = DamageType.Splash
bolt_projectile.InitialVelocity = 500
bolt_projectile.Lifespan = 1.0f
bolt_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(bolt_projectile)
//TODO bolt_projectile.Modifiers = DistanceDegrade?
burster_projectile.Name = "burster_projectile"
burster_projectile.Damage0 = 18
burster_projectile.Damage1 = 25
burster_projectile.Damage2 = 50
burster_projectile.DamageAtEdge = 0.25f
burster_projectile.DamageRadius = 10f
burster_projectile.ProjectileDamageType = DamageType.Direct
burster_projectile.ProjectileDamageTypeSecondary = DamageType.Splash
burster_projectile.InitialVelocity = 125
burster_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(burster_projectile)
burster_projectile.Modifiers = List(
//FlakHit,
FlakBurst,
MaxDistanceCutoff
)
chainblade_projectile.Name = "chainblade_projectile"
// TODO for later, maybe : set_resource_parent chainblade_projectile game_objects melee_ammo_projectile
chainblade_projectile.Damage0 = 50
chainblade_projectile.Damage1 = 0
chainblade_projectile.ProjectileDamageType = DamageType.Direct
chainblade_projectile.InitialVelocity = 100
chainblade_projectile.Lifespan = .02f
ProjectileDefinition.CalculateDerivedFields(chainblade_projectile)
chainblade_projectile.Modifiers = List(MeleeBoosted, MaxDistanceCutoff)
comet_projectile.Name = "comet_projectile"
comet_projectile.Damage0 = 15
comet_projectile.Damage1 = 60
comet_projectile.Damage2 = 60
comet_projectile.Damage3 = 38
comet_projectile.Damage4 = 64
comet_projectile.Acceleration = 10
comet_projectile.AccelerationUntil = 2f
comet_projectile.DamageAtEdge = 0.45f
comet_projectile.DamageRadius = 1.0f
comet_projectile.ProjectileDamageType = DamageType.Aggravated
comet_projectile.Aggravated = AggravatedDamage(
AggravatedInfo(DamageType.Direct, 0.25f, 500), //originally, .2
Aura.Comet,
AggravatedTiming(2000, 3),
10f,
List(
TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player),
TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.Vehicle),
TargetValidation(EffectTarget.Category.Turret, EffectTarget.Validation.Turret)
)
)
comet_projectile.InitialVelocity = 80
comet_projectile.Lifespan = 3.1f
ProjectileDefinition.CalculateDerivedFields(comet_projectile)
comet_projectile.Modifiers = List(
CometAggravated,
CometAggravatedBurn
)
dualcycler_projectile.Name = "dualcycler_projectile"
dualcycler_projectile.Damage0 = 18
dualcycler_projectile.Damage1 = 10
dualcycler_projectile.ProjectileDamageType = DamageType.Direct
dualcycler_projectile.DegradeDelay = .025f
dualcycler_projectile.DegradeMultiplier = .5f
dualcycler_projectile.InitialVelocity = 500
dualcycler_projectile.Lifespan = 0.5f
dualcycler_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(dualcycler_projectile)
dynomite_projectile.Name = "dynomite_projectile"
// TODO for later, maybe : set_resource_parent dynomite_projectile game_objects frag_grenade_projectile_enh
dynomite_projectile.Damage0 = 75
dynomite_projectile.Damage1 = 175
dynomite_projectile.DamageAtEdge = 0.1f
dynomite_projectile.DamageRadius = 10f
dynomite_projectile.GrenadeProjectile = true
dynomite_projectile.ProjectileDamageType = DamageType.Splash
dynomite_projectile.InitialVelocity = 30
dynomite_projectile.Lifespan = 3f
ProjectileDefinition.CalculateDerivedFields(dynomite_projectile)
dynomite_projectile.Modifiers = RadialDegrade
energy_cell_projectile.Name = "energy_cell_projectile"
energy_cell_projectile.Damage0 = 18
energy_cell_projectile.Damage1 = 10
energy_cell_projectile.ProjectileDamageType = DamageType.Direct
energy_cell_projectile.DegradeDelay = 0.05f
energy_cell_projectile.DegradeMultiplier = 0.4f
energy_cell_projectile.InitialVelocity = 500
energy_cell_projectile.Lifespan = .4f
energy_cell_projectile.UseDamage1Subtract = true
energy_cell_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(energy_cell_projectile)
energy_gun_nc_projectile.Name = "energy_gun_nc_projectile"
energy_gun_nc_projectile.Damage0 = 10
energy_gun_nc_projectile.Damage1 = 13
energy_gun_nc_projectile.ProjectileDamageType = DamageType.Direct
energy_gun_nc_projectile.InitialVelocity = 500
energy_gun_nc_projectile.Lifespan = 0.5f
energy_gun_nc_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(energy_gun_nc_projectile)
energy_gun_tr_projectile.Name = "energy_gun_tr_projectile"
energy_gun_tr_projectile.Damage0 = 14
energy_gun_tr_projectile.Damage1 = 18
energy_gun_tr_projectile.ProjectileDamageType = DamageType.Direct
energy_gun_tr_projectile.DegradeDelay = .025f
energy_gun_tr_projectile.DegradeMultiplier = .5f
energy_gun_tr_projectile.InitialVelocity = 500
energy_gun_tr_projectile.Lifespan = 0.5f
energy_gun_tr_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(energy_gun_tr_projectile)
energy_gun_vs_projectile.Name = "energy_gun_vs_projectile"
energy_gun_vs_projectile.Damage0 = 25
energy_gun_vs_projectile.Damage1 = 35
energy_gun_vs_projectile.ProjectileDamageType = DamageType.Direct
energy_gun_vs_projectile.DegradeDelay = 0.045f
energy_gun_vs_projectile.DegradeMultiplier = 0.5f
energy_gun_vs_projectile.InitialVelocity = 500
energy_gun_vs_projectile.Lifespan = .5f
energy_gun_vs_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(energy_gun_vs_projectile)
enhanced_energy_cell_projectile.Name = "enhanced_energy_cell_projectile"
// TODO for later, maybe : set_resource_parent enhanced_energy_cell_projectile game_objects energy_cell_projectile
enhanced_energy_cell_projectile.Damage0 = 7
enhanced_energy_cell_projectile.Damage1 = 15
enhanced_energy_cell_projectile.ProjectileDamageType = DamageType.Direct
enhanced_energy_cell_projectile.DegradeDelay = 0.05f
enhanced_energy_cell_projectile.DegradeMultiplier = 0.4f
enhanced_energy_cell_projectile.InitialVelocity = 500
enhanced_energy_cell_projectile.Lifespan = .4f
enhanced_energy_cell_projectile.UseDamage1Subtract = true
enhanced_energy_cell_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(enhanced_energy_cell_projectile)
enhanced_quasar_projectile.Name = "enhanced_quasar_projectile"
// TODO for later, maybe : set_resource_parent enhanced_quasar_projectile game_objects quasar_projectile
enhanced_quasar_projectile.Damage1 = 12
enhanced_quasar_projectile.Damage0 = 10
enhanced_quasar_projectile.ProjectileDamageType = DamageType.Direct
enhanced_quasar_projectile.DegradeDelay = 0.045f
enhanced_quasar_projectile.DegradeMultiplier = 0.5f
enhanced_quasar_projectile.InitialVelocity = 500
enhanced_quasar_projectile.Lifespan = .4f
enhanced_quasar_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(enhanced_quasar_projectile)
falcon_projectile.Name = "falcon_projectile"
falcon_projectile.Damage0 = 35
falcon_projectile.Damage1 = 132
falcon_projectile.Damage2 = 132
falcon_projectile.Damage3 = 83
falcon_projectile.Damage4 = 144
falcon_projectile.Acceleration = 10
falcon_projectile.AccelerationUntil = 2f
falcon_projectile.DamageAtEdge = 0.2f
falcon_projectile.DamageRadius = 1f
falcon_projectile.ProjectileDamageType = DamageType.Splash
falcon_projectile.InitialVelocity = 120
falcon_projectile.Lifespan = 2.1f
ProjectileDefinition.CalculateDerivedFields(falcon_projectile)
falcon_projectile.Modifiers = RadialDegrade
firebird_missile_projectile.Name = "firebird_missile_projectile"
firebird_missile_projectile.Damage0 = 125
firebird_missile_projectile.Damage1 = 220
firebird_missile_projectile.Damage2 = 220
firebird_missile_projectile.Damage3 = 200
firebird_missile_projectile.Damage4 = 181
firebird_missile_projectile.Acceleration = 20
firebird_missile_projectile.AccelerationUntil = 2f
firebird_missile_projectile.DamageAtEdge = .1f
firebird_missile_projectile.DamageRadius = 5f
firebird_missile_projectile.ProjectileDamageType = DamageType.Splash
firebird_missile_projectile.InitialVelocity = 75
firebird_missile_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(firebird_missile_projectile)
firebird_missile_projectile.Modifiers = RadialDegrade
flail_projectile.Name = "flail_projectile"
flail_projectile.Damage0 = 75
flail_projectile.Damage1 = 200
flail_projectile.Damage2 = 200
flail_projectile.Damage3 = 200
flail_projectile.Damage4 = 300
flail_projectile.DamageAtEdge = 0.1f
flail_projectile.DamageRadius = 15f
flail_projectile.ProjectileDamageType = DamageType.Splash
flail_projectile.DegradeDelay = 1.5f
//a DegradeDelay of 1.5s equals a DistanceNoDegrade of 112.5m
flail_projectile.DegradeMultiplier = 5f
flail_projectile.InitialVelocity = 75
flail_projectile.Lifespan = 40f
ProjectileDefinition.CalculateDerivedFields(flail_projectile)
flail_projectile.Modifiers = List(
FlailDistanceDamageBoost,
RadialDegrade
)
flamethrower_fire_cloud.Name = "flamethrower_fire_cloud"
flamethrower_fire_cloud.Damage0 = 2
flamethrower_fire_cloud.Damage1 = 0
flamethrower_fire_cloud.Damage2 = 0
flamethrower_fire_cloud.Damage3 = 1
flamethrower_fire_cloud.Damage4 = 0
flamethrower_fire_cloud.DamageAtEdge = 0.1f
flamethrower_fire_cloud.DamageRadius = 5f
flamethrower_fire_cloud.ProjectileDamageType = DamageType.Aggravated
flamethrower_fire_cloud.Aggravated = AggravatedDamage(
List(AggravatedInfo(DamageType.Direct, -1.5f, 500), AggravatedInfo(DamageType.Splash, -4.0f, 500)),
Aura.Fire,
AggravatedTiming(5000, 10),
2.5f,
false,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
flamethrower_fire_cloud.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(flamethrower_fire_cloud)
flamethrower_fire_cloud.Modifiers = List(
InfantryAggravatedDirect,
InfantryAggravatedSplash,
RadialDegrade,
FireballAggravatedBurn
)
flamethrower_fireball.Name = "flamethrower_fireball"
flamethrower_fireball.Damage0 = 30
flamethrower_fireball.Damage1 = 0
flamethrower_fireball.Damage2 = 0
flamethrower_fireball.Damage3 = 20
flamethrower_fireball.Damage4 = 0
flamethrower_fireball.DamageToHealthOnly = true
flamethrower_fireball.DamageAtEdge = 0.15f
flamethrower_fireball.DamageRadius = 5f
flamethrower_fireball.ProjectileDamageType = DamageType.Aggravated
flamethrower_fireball.Aggravated = AggravatedDamage(
List(AggravatedInfo(DamageType.Direct, 0.9f, 500), AggravatedInfo(DamageType.Splash, 0.9f, 500)),
Aura.Fire,
AggravatedTiming(5000, 10),
0.1f,
false,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
flamethrower_fireball.InitialVelocity = 15
flamethrower_fireball.Lifespan = 1.2f
ProjectileDefinition.CalculateDerivedFields(flamethrower_fireball)
flamethrower_fireball.Modifiers = List(
InfantryAggravatedDirect,
InfantryAggravatedSplash,
RadialDegrade,
FireballAggravatedBurn
)
flamethrower_projectile.Name = "flamethrower_projectile"
flamethrower_projectile.Damage0 = 10
flamethrower_projectile.Damage1 = 0
flamethrower_projectile.Damage2 = 0
flamethrower_projectile.Damage3 = 4
flamethrower_projectile.Damage4 = 0
flamethrower_projectile.DamageToHealthOnly = true
flamethrower_projectile.Acceleration = -5
flamethrower_projectile.AccelerationUntil = 2f
flamethrower_projectile.ProjectileDamageType = DamageType.Aggravated
flamethrower_projectile.Aggravated = AggravatedDamage(
List(AggravatedInfo(DamageType.Direct, 0.5f, 500)),
Aura.Fire,
AggravatedTiming(5000, 10),
0.5f,
false,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
flamethrower_projectile.DegradeDelay = 1.0f
flamethrower_projectile.DegradeMultiplier = 0.5f
flamethrower_projectile.InitialVelocity = 10
flamethrower_projectile.Lifespan = 2.0f
ProjectileDefinition.CalculateDerivedFields(flamethrower_projectile)
flamethrower_projectile.Modifiers = List(
InfantryAggravatedDirect,
FireballAggravatedBurn,
MaxDistanceCutoff
)
flux_cannon_apc_projectile.Name = "flux_cannon_apc_projectile"
// TODO for later, maybe : set_resource_parent flux_cannon_apc_projectile game_objects flux_cannon_thresher_projectile
flux_cannon_apc_projectile.Damage0 = 14
flux_cannon_apc_projectile.Damage1 = 23
flux_cannon_apc_projectile.Damage2 = 35
flux_cannon_apc_projectile.Damage3 = 23
flux_cannon_apc_projectile.Damage4 = 18
flux_cannon_apc_projectile.DamageAtEdge = .5f
flux_cannon_apc_projectile.DamageRadius = 4f
flux_cannon_apc_projectile.ProjectileDamageType = DamageType.Direct
flux_cannon_apc_projectile.InitialVelocity = 300
flux_cannon_apc_projectile.Lifespan = 1f
ProjectileDefinition.CalculateDerivedFields(flux_cannon_apc_projectile)
flux_cannon_thresher_projectile.Name = "flux_cannon_thresher_projectile"
flux_cannon_thresher_projectile.Damage0 = 30
flux_cannon_thresher_projectile.Damage1 = 44
flux_cannon_thresher_projectile.Damage2 = 44
flux_cannon_thresher_projectile.Damage3 = 40
flux_cannon_thresher_projectile.Damage4 = 37
flux_cannon_thresher_projectile.DamageAtEdge = .5f
flux_cannon_thresher_projectile.DamageRadius = 4f
flux_cannon_thresher_projectile.ProjectileDamageType = DamageType.Splash
flux_cannon_thresher_projectile.InitialVelocity = 75
flux_cannon_thresher_projectile.Lifespan = 3f
ProjectileDefinition.CalculateDerivedFields(flux_cannon_thresher_projectile)
flux_cannon_thresher_projectile.Modifiers = RadialDegrade
fluxpod_projectile.Name = "fluxpod_projectile"
fluxpod_projectile.Damage0 = 110
fluxpod_projectile.Damage1 = 80
fluxpod_projectile.Damage2 = 125
fluxpod_projectile.Damage3 = 80
fluxpod_projectile.Damage4 = 52
fluxpod_projectile.DamageAtEdge = .3f
fluxpod_projectile.DamageRadius = 3f
fluxpod_projectile.ProjectileDamageType = DamageType.Splash
fluxpod_projectile.InitialVelocity = 80
fluxpod_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(fluxpod_projectile)
fluxpod_projectile.Modifiers = RadialDegrade
forceblade_projectile.Name = "forceblade_projectile"
// TODO for later, maybe : set_resource_parent forceblade_projectile game_objects melee_ammo_projectile
forceblade_projectile.Damage0 = 50
forceblade_projectile.Damage1 = 0
forceblade_projectile.ProjectileDamageType = DamageType.Direct
forceblade_projectile.InitialVelocity = 100
forceblade_projectile.Lifespan = .02f
ProjectileDefinition.CalculateDerivedFields(forceblade_projectile)
forceblade_projectile.Modifiers = List(MeleeBoosted, MaxDistanceCutoff)
frag_cartridge_projectile.Name = "frag_cartridge_projectile"
// TODO for later, maybe : set_resource_parent frag_cartridge_projectile game_objects frag_grenade_projectile
frag_cartridge_projectile.Damage0 = 75
frag_cartridge_projectile.Damage1 = 100
frag_cartridge_projectile.DamageAtEdge = 0.1f
frag_cartridge_projectile.DamageRadius = 7f
frag_cartridge_projectile.GrenadeProjectile = true
frag_cartridge_projectile.ProjectileDamageType = DamageType.Splash
frag_cartridge_projectile.InitialVelocity = 30
frag_cartridge_projectile.Lifespan = 15f
ProjectileDefinition.CalculateDerivedFields(frag_cartridge_projectile)
frag_cartridge_projectile.Modifiers = RadialDegrade
frag_cartridge_projectile_b.Name = "frag_cartridge_projectile_b"
// TODO for later, maybe : set_resource_parent frag_cartridge_projectile_b game_objects frag_grenade_projectile_enh
frag_cartridge_projectile_b.Damage0 = 75
frag_cartridge_projectile_b.Damage1 = 100
frag_cartridge_projectile_b.DamageAtEdge = 0.1f
frag_cartridge_projectile_b.DamageRadius = 5f
frag_cartridge_projectile_b.GrenadeProjectile = true
frag_cartridge_projectile_b.ProjectileDamageType = DamageType.Splash
frag_cartridge_projectile_b.InitialVelocity = 30
frag_cartridge_projectile_b.Lifespan = 2f
ProjectileDefinition.CalculateDerivedFields(frag_cartridge_projectile_b)
frag_cartridge_projectile_b.Modifiers = RadialDegrade
frag_grenade_projectile.Name = "frag_grenade_projectile"
frag_grenade_projectile.Damage0 = 75
frag_grenade_projectile.Damage1 = 100
frag_grenade_projectile.DamageAtEdge = 0.1f
frag_grenade_projectile.DamageRadius = 7f
frag_grenade_projectile.GrenadeProjectile = true
frag_grenade_projectile.ProjectileDamageType = DamageType.Splash
frag_grenade_projectile.InitialVelocity = 30
frag_grenade_projectile.Lifespan = 15f
ProjectileDefinition.CalculateDerivedFields(frag_grenade_projectile)
frag_grenade_projectile.Modifiers = RadialDegrade
frag_grenade_projectile_enh.Name = "frag_grenade_projectile_enh"
// TODO for later, maybe : set_resource_parent frag_grenade_projectile_enh game_objects frag_grenade_projectile
frag_grenade_projectile_enh.Damage0 = 75
frag_grenade_projectile_enh.Damage1 = 100
frag_grenade_projectile_enh.DamageAtEdge = 0.1f
frag_grenade_projectile_enh.DamageRadius = 7f
frag_grenade_projectile_enh.GrenadeProjectile = true
frag_grenade_projectile_enh.ProjectileDamageType = DamageType.Splash
frag_grenade_projectile_enh.InitialVelocity = 30
frag_grenade_projectile_enh.Lifespan = 2f
ProjectileDefinition.CalculateDerivedFields(frag_grenade_projectile_enh)
frag_grenade_projectile_enh.Modifiers = RadialDegrade
galaxy_gunship_gun_projectile.Name = "galaxy_gunship_gun_projectile"
// TODO for later, maybe : set_resource_parent galaxy_gunship_gun_projectile game_objects 35mmbullet_projectile
galaxy_gunship_gun_projectile.Damage0 = 40
galaxy_gunship_gun_projectile.Damage1 = 50
galaxy_gunship_gun_projectile.Damage2 = 80
galaxy_gunship_gun_projectile.ProjectileDamageType = DamageType.Direct
galaxy_gunship_gun_projectile.DegradeDelay = 0.4f
galaxy_gunship_gun_projectile.DegradeMultiplier = 0.6f
galaxy_gunship_gun_projectile.InitialVelocity = 400
galaxy_gunship_gun_projectile.Lifespan = 0.8f
ProjectileDefinition.CalculateDerivedFields(galaxy_gunship_gun_projectile)
gauss_cannon_projectile.Name = "gauss_cannon_projectile"
gauss_cannon_projectile.Damage0 = 190
gauss_cannon_projectile.Damage1 = 370
gauss_cannon_projectile.Damage2 = 370
gauss_cannon_projectile.Damage3 = 370
gauss_cannon_projectile.Damage4 = 240
gauss_cannon_projectile.DamageAtEdge = 0.3f
gauss_cannon_projectile.DamageRadius = 1.5f
gauss_cannon_projectile.ProjectileDamageType = DamageType.Splash
gauss_cannon_projectile.InitialVelocity = 150
gauss_cannon_projectile.Lifespan = 2.67f
ProjectileDefinition.CalculateDerivedFields(gauss_cannon_projectile)
gauss_cannon_projectile.Modifiers = RadialDegrade
grenade_projectile.Name = "grenade_projectile"
grenade_projectile.Damage0 = 50
grenade_projectile.DamageAtEdge = 0.2f
grenade_projectile.DamageRadius = 100f
grenade_projectile.ProjectileDamageType = DamageType.Splash
grenade_projectile.InitialVelocity = 15
grenade_projectile.Lifespan = 15f
ProjectileDefinition.CalculateDerivedFields(grenade_projectile)
grenade_projectile.Modifiers = RadialDegrade
heavy_grenade_projectile.Name = "heavy_grenade_projectile"
heavy_grenade_projectile.Damage0 = 50
heavy_grenade_projectile.Damage1 = 82
heavy_grenade_projectile.Damage2 = 82
heavy_grenade_projectile.Damage3 = 75
heavy_grenade_projectile.Damage4 = 66
heavy_grenade_projectile.DamageAtEdge = 0.1f
heavy_grenade_projectile.DamageRadius = 5f
heavy_grenade_projectile.GrenadeProjectile = true
heavy_grenade_projectile.ProjectileDamageType = DamageType.Splash
heavy_grenade_projectile.InitialVelocity = 75
heavy_grenade_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(heavy_grenade_projectile)
heavy_grenade_projectile.Modifiers = RadialDegrade
heavy_rail_beam_projectile.Name = "heavy_rail_beam_projectile"
heavy_rail_beam_projectile.Damage0 = 75
heavy_rail_beam_projectile.Damage1 = 215
heavy_rail_beam_projectile.Damage2 = 215
heavy_rail_beam_projectile.Damage3 = 215
heavy_rail_beam_projectile.Damage4 = 120
heavy_rail_beam_projectile.DamageAtEdge = 0.30f
heavy_rail_beam_projectile.DamageRadius = 5f
heavy_rail_beam_projectile.ProjectileDamageType = DamageType.Splash
heavy_rail_beam_projectile.InitialVelocity = 600
heavy_rail_beam_projectile.Lifespan = .5f
ProjectileDefinition.CalculateDerivedFields(heavy_rail_beam_projectile)
heavy_rail_beam_projectile.Modifiers = RadialDegrade
heavy_sniper_projectile.Name = "heavy_sniper_projectile"
heavy_sniper_projectile.Damage0 = 55
heavy_sniper_projectile.Damage1 = 28
heavy_sniper_projectile.Damage2 = 28
heavy_sniper_projectile.Damage3 = 28
heavy_sniper_projectile.Damage4 = 42
heavy_sniper_projectile.ProjectileDamageType = DamageType.Splash
heavy_sniper_projectile.InitialVelocity = 500
heavy_sniper_projectile.Lifespan = 1.0f
heavy_sniper_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(heavy_sniper_projectile)
heavy_sniper_projectile.Modifiers = RadialDegrade
hellfire_projectile.Name = "hellfire_projectile"
hellfire_projectile.Damage0 = 50
hellfire_projectile.Damage1 = 250
hellfire_projectile.Damage2 = 250
hellfire_projectile.Damage3 = 125
hellfire_projectile.Damage4 = 250
hellfire_projectile.Acceleration = 10
hellfire_projectile.AccelerationUntil = 2f
hellfire_projectile.DamageAtEdge = .25f
hellfire_projectile.DamageRadius = 3f
hellfire_projectile.ProjectileDamageType = DamageType.Splash
hellfire_projectile.InitialVelocity = 125
hellfire_projectile.Lifespan = 1.5f
ProjectileDefinition.CalculateDerivedFields(hellfire_projectile)
hellfire_projectile.Modifiers = RadialDegrade
hunter_seeker_missile_dumbfire.Name = "hunter_seeker_missile_dumbfire"
hunter_seeker_missile_dumbfire.Damage0 = 50
hunter_seeker_missile_dumbfire.Damage1 = 350
hunter_seeker_missile_dumbfire.Damage2 = 250
hunter_seeker_missile_dumbfire.Damage3 = 250
hunter_seeker_missile_dumbfire.Damage4 = 525
hunter_seeker_missile_dumbfire.DamageAtEdge = 0.1f
hunter_seeker_missile_dumbfire.DamageRadius = 1.5f
hunter_seeker_missile_dumbfire.ProjectileDamageType = DamageType.Splash
hunter_seeker_missile_dumbfire.InitialVelocity = 40
hunter_seeker_missile_dumbfire.Lifespan = 6.3f
ProjectileDefinition.CalculateDerivedFields(hunter_seeker_missile_dumbfire)
hunter_seeker_missile_dumbfire.Modifiers = RadialDegrade
hunter_seeker_missile_projectile.Name = "hunter_seeker_missile_projectile"
hunter_seeker_missile_projectile.Damage0 = 50
hunter_seeker_missile_projectile.Damage1 = 350
hunter_seeker_missile_projectile.Damage2 = 250
hunter_seeker_missile_projectile.Damage3 = 250
hunter_seeker_missile_projectile.Damage4 = 525
hunter_seeker_missile_projectile.DamageAtEdge = 0.1f
hunter_seeker_missile_projectile.DamageRadius = 1.5f
hunter_seeker_missile_projectile.ProjectileDamageType = DamageType.Splash
hunter_seeker_missile_projectile.InitialVelocity = 40
hunter_seeker_missile_projectile.Lifespan = 6.3f
hunter_seeker_missile_projectile.registerAs = "rc-projectiles"
hunter_seeker_missile_projectile.ExistsOnRemoteClients = true
hunter_seeker_missile_projectile.RemoteClientData = (39577, 201)
hunter_seeker_missile_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(hunter_seeker_missile_projectile)
hunter_seeker_missile_projectile.Modifiers = RadialDegrade
jammer_cartridge_projectile.Name = "jammer_cartridge_projectile"
// TODO for later, maybe : set_resource_parent jammer_cartridge_projectile game_objects jammer_grenade_projectile
jammer_cartridge_projectile.Damage0 = 0
jammer_cartridge_projectile.Damage1 = 0
jammer_cartridge_projectile.DamageAtEdge = 1.0f
jammer_cartridge_projectile.DamageRadius = 10f
jammer_cartridge_projectile.GrenadeProjectile = true
jammer_cartridge_projectile.ProjectileDamageType = DamageType.Splash
jammer_cartridge_projectile.InitialVelocity = 30
jammer_cartridge_projectile.Lifespan = 15f
jammer_cartridge_projectile.AdditionalEffect = true
jammer_cartridge_projectile.JammerProjectile = true
jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Player,
EffectTarget.Validation.Player
) -> 1000
jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.AMS
) -> 5000
jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.MotionSensor
) -> 30000
jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.Spitfire
) -> 30000
jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Turret,
EffectTarget.Validation.Turret
) -> 30000
jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.VehicleNotAMS
) -> 10000
ProjectileDefinition.CalculateDerivedFields(jammer_cartridge_projectile)
jammer_cartridge_projectile.Modifiers = MaxDistanceCutoff
jammer_cartridge_projectile_b.Name = "jammer_cartridge_projectile_b"
// TODO for later, maybe : set_resource_parent jammer_cartridge_projectile_b game_objects jammer_grenade_projectile_enh
jammer_cartridge_projectile_b.Damage0 = 0
jammer_cartridge_projectile_b.Damage1 = 0
jammer_cartridge_projectile_b.DamageAtEdge = 1.0f
jammer_cartridge_projectile_b.DamageRadius = 10f
jammer_cartridge_projectile_b.GrenadeProjectile = true
jammer_cartridge_projectile_b.ProjectileDamageType = DamageType.Splash
jammer_cartridge_projectile_b.InitialVelocity = 30
jammer_cartridge_projectile_b.Lifespan = 2f
jammer_cartridge_projectile_b.AdditionalEffect = true
jammer_cartridge_projectile_b.JammerProjectile = true
jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Player,
EffectTarget.Validation.Player
) -> 1000
jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.AMS
) -> 5000
jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.MotionSensor
) -> 30000
jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.Spitfire
) -> 30000
jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Turret,
EffectTarget.Validation.Turret
) -> 30000
jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.VehicleNotAMS
) -> 10000
ProjectileDefinition.CalculateDerivedFields(jammer_cartridge_projectile_b)
jammer_cartridge_projectile_b.Modifiers = MaxDistanceCutoff
jammer_grenade_projectile.Name = "jammer_grenade_projectile"
jammer_grenade_projectile.Damage0 = 0
jammer_grenade_projectile.Damage1 = 0
jammer_grenade_projectile.DamageAtEdge = 1.0f
jammer_grenade_projectile.DamageRadius = 10f
jammer_grenade_projectile.GrenadeProjectile = true
jammer_grenade_projectile.ProjectileDamageType = DamageType.Splash
jammer_grenade_projectile.InitialVelocity = 30
jammer_grenade_projectile.Lifespan = 15f
jammer_grenade_projectile.AdditionalEffect = true
jammer_grenade_projectile.JammerProjectile = true
jammer_grenade_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Player,
EffectTarget.Validation.Player
) -> 1000
jammer_grenade_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.AMS
) -> 5000
jammer_grenade_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.MotionSensor
) -> 30000
jammer_grenade_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.Spitfire
) -> 30000
jammer_grenade_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Turret,
EffectTarget.Validation.Turret
) -> 30000
jammer_grenade_projectile.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.VehicleNotAMS
) -> 10000
ProjectileDefinition.CalculateDerivedFields(jammer_grenade_projectile)
jammer_grenade_projectile.Modifiers = MaxDistanceCutoff
jammer_grenade_projectile_enh.Name = "jammer_grenade_projectile_enh"
// TODO for later, maybe : set_resource_parent jammer_grenade_projectile_enh game_objects jammer_grenade_projectile
jammer_grenade_projectile_enh.Damage0 = 0
jammer_grenade_projectile_enh.Damage1 = 0
jammer_grenade_projectile_enh.DamageAtEdge = 1.0f
jammer_grenade_projectile_enh.DamageRadius = 10f
jammer_grenade_projectile_enh.GrenadeProjectile = true
jammer_grenade_projectile_enh.ProjectileDamageType = DamageType.Splash
jammer_grenade_projectile_enh.InitialVelocity = 30
jammer_grenade_projectile_enh.Lifespan = 3f
jammer_grenade_projectile_enh.AdditionalEffect = true
jammer_grenade_projectile_enh.JammerProjectile = true
jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Player,
EffectTarget.Validation.Player
) -> 1000
jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.AMS
) -> 5000
jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.MotionSensor
) -> 30000
jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.Spitfire
) -> 30000
jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Turret,
EffectTarget.Validation.Turret
) -> 30000
jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.VehicleNotAMS
) -> 10000
ProjectileDefinition.CalculateDerivedFields(jammer_grenade_projectile_enh)
jammer_grenade_projectile_enh.Modifiers = MaxDistanceCutoff
katana_projectile.Name = "katana_projectile"
katana_projectile.Damage0 = 25
katana_projectile.Damage1 = 0
katana_projectile.ProjectileDamageType = DamageType.Direct
katana_projectile.InitialVelocity = 100
katana_projectile.Lifespan = .03f
ProjectileDefinition.CalculateDerivedFields(katana_projectile)
katana_projectileb.Name = "katana_projectileb"
// TODO for later, maybe : set_resource_parent katana_projectileb game_objects katana_projectile
katana_projectileb.Damage0 = 25
katana_projectileb.Damage1 = 0
katana_projectileb.ProjectileDamageType = DamageType.Direct
katana_projectileb.InitialVelocity = 100
katana_projectileb.Lifespan = .03f
ProjectileDefinition.CalculateDerivedFields(katana_projectileb)
lancer_projectile.Name = "lancer_projectile"
lancer_projectile.Damage0 = 25
lancer_projectile.Damage1 = 175
lancer_projectile.Damage2 = 125
lancer_projectile.Damage3 = 125
lancer_projectile.Damage4 = 263
lancer_projectile.ProjectileDamageType = DamageType.Direct
lancer_projectile.InitialVelocity = 500
lancer_projectile.Lifespan = 0.6f
ProjectileDefinition.CalculateDerivedFields(lancer_projectile)
lasher_projectile.Name = "lasher_projectile"
lasher_projectile.Damage0 = 30
lasher_projectile.Damage1 = 15
lasher_projectile.Damage2 = 15
lasher_projectile.Damage3 = 12
lasher_projectile.Damage4 = 12
lasher_projectile.ProjectileDamageType = DamageType.Direct
lasher_projectile.DegradeDelay = 0.012f
lasher_projectile.DegradeMultiplier = 0.3f
lasher_projectile.InitialVelocity = 120
lasher_projectile.LashRadius = 2.5f
lasher_projectile.Lifespan = 0.75f
lasher_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(lasher_projectile)
lasher_projectile.Modifiers = List(
DistanceDegrade,
Lash
)
lasher_projectile_ap.Name = "lasher_projectile_ap"
lasher_projectile_ap.Damage0 = 12
lasher_projectile_ap.Damage1 = 25
lasher_projectile_ap.Damage2 = 25
lasher_projectile_ap.Damage3 = 28
lasher_projectile_ap.Damage4 = 28
lasher_projectile_ap.ProjectileDamageType = DamageType.Direct
lasher_projectile_ap.DegradeDelay = 0.012f
lasher_projectile_ap.DegradeMultiplier = 0.3f
lasher_projectile_ap.InitialVelocity = 120
lasher_projectile_ap.LashRadius = 2.5f
lasher_projectile_ap.Lifespan = 0.75f
lasher_projectile_ap.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(lasher_projectile_ap)
lasher_projectile_ap.Modifiers = List(
DistanceDegrade,
Lash
)
liberator_bomb_cluster_bomblet_projectile.Name = "liberator_bomb_cluster_bomblet_projectile"
liberator_bomb_cluster_bomblet_projectile.Damage0 = 75
liberator_bomb_cluster_bomblet_projectile.Damage1 = 100
liberator_bomb_cluster_bomblet_projectile.DamageAtEdge = 0.25f
liberator_bomb_cluster_bomblet_projectile.DamageRadius = 3f
liberator_bomb_cluster_bomblet_projectile.ProjectileDamageType = DamageType.Splash
liberator_bomb_cluster_bomblet_projectile.InitialVelocity = 0
liberator_bomb_cluster_bomblet_projectile.Lifespan = 30f
ProjectileDefinition.CalculateDerivedFields(liberator_bomb_cluster_bomblet_projectile)
liberator_bomb_cluster_bomblet_projectile.Modifiers = RadialDegrade
liberator_bomb_cluster_projectile.Name = "liberator_bomb_cluster_projectile"
liberator_bomb_cluster_projectile.Damage0 = 75
liberator_bomb_cluster_projectile.Damage1 = 100
liberator_bomb_cluster_projectile.DamageAtEdge = 0.25f
liberator_bomb_cluster_projectile.DamageRadius = 3f
liberator_bomb_cluster_projectile.ProjectileDamageType = DamageType.Direct
liberator_bomb_cluster_projectile.InitialVelocity = 0
liberator_bomb_cluster_projectile.Lifespan = 30f
ProjectileDefinition.CalculateDerivedFields(liberator_bomb_cluster_projectile)
liberator_bomb_projectile.Name = "liberator_bomb_projectile"
liberator_bomb_projectile.Damage0 = 250
liberator_bomb_projectile.Damage1 = 1000
liberator_bomb_projectile.Damage2 = 1000
liberator_bomb_projectile.Damage3 = 1000
liberator_bomb_projectile.Damage4 = 600
liberator_bomb_projectile.DamageAtEdge = 0.1f
liberator_bomb_projectile.DamageRadius = 10f
liberator_bomb_projectile.ProjectileDamageType = DamageType.Splash
liberator_bomb_projectile.InitialVelocity = 0
liberator_bomb_projectile.Lifespan = 30f
ProjectileDefinition.CalculateDerivedFields(liberator_bomb_projectile)
liberator_bomb_projectile.Modifiers = RadialDegrade
maelstrom_grenade_damager.Name = "maelstrom_grenade_damager"
maelstrom_grenade_damager.ProjectileDamageType = DamageType.Direct
//the maelstrom_grenade_damage is something of a broken entity atm
maelstrom_grenade_projectile.Name = "maelstrom_grenade_projectile"
maelstrom_grenade_projectile.Damage0 = 32
maelstrom_grenade_projectile.Damage1 = 60
maelstrom_grenade_projectile.DamageRadius = 20f
maelstrom_grenade_projectile.LashRadius = 5f
maelstrom_grenade_projectile.GrenadeProjectile = true
maelstrom_grenade_projectile.ProjectileDamageType = DamageType.Direct
maelstrom_grenade_projectile.InitialVelocity = 30
maelstrom_grenade_projectile.Lifespan = 2f
maelstrom_grenade_projectile.DamageProxy = 464 //maelstrom_grenade_damager
ProjectileDefinition.CalculateDerivedFields(maelstrom_grenade_projectile)
maelstrom_grenade_projectile.Modifiers = RadialDegrade
maelstrom_grenade_projectile_contact.Name = "maelstrom_grenade_projectile_contact"
// TODO for later, maybe : set_resource_parent maelstrom_grenade_projectile_contact game_objects maelstrom_grenade_projectile
maelstrom_grenade_projectile_contact.Damage0 = 32
maelstrom_grenade_projectile_contact.Damage1 = 60
maelstrom_grenade_projectile_contact.DamageRadius = 20f
maelstrom_grenade_projectile_contact.LashRadius = 5f
maelstrom_grenade_projectile_contact.GrenadeProjectile = true
maelstrom_grenade_projectile_contact.ProjectileDamageType = DamageType.Direct
maelstrom_grenade_projectile_contact.InitialVelocity = 30
maelstrom_grenade_projectile_contact.Lifespan = 15f
maelstrom_grenade_projectile_contact.DamageProxy = 464 //maelstrom_grenade_damager
ProjectileDefinition.CalculateDerivedFields(maelstrom_grenade_projectile_contact)
maelstrom_grenade_projectile_contact.Modifiers = RadialDegrade
maelstrom_stream_projectile.Name = "maelstrom_stream_projectile"
maelstrom_stream_projectile.Damage0 = 15
maelstrom_stream_projectile.Damage1 = 6
maelstrom_stream_projectile.ProjectileDamageType = DamageType.Direct
maelstrom_stream_projectile.DegradeDelay = .075f
maelstrom_stream_projectile.DegradeMultiplier = 0.5f
maelstrom_stream_projectile.InitialVelocity = 200
maelstrom_stream_projectile.Lifespan = 0.2f
ProjectileDefinition.CalculateDerivedFields(maelstrom_stream_projectile)
maelstrom_stream_projectile.Modifiers = MaxDistanceCutoff
magcutter_projectile.Name = "magcutter_projectile"
// TODO for later, maybe : set_resource_parent magcutter_projectile game_objects melee_ammo_projectile
magcutter_projectile.Damage0 = 50
magcutter_projectile.Damage1 = 0
magcutter_projectile.ProjectileDamageType = DamageType.Direct
magcutter_projectile.InitialVelocity = 100
magcutter_projectile.Lifespan = .02f
ProjectileDefinition.CalculateDerivedFields(magcutter_projectile)
magcutter_projectile.Modifiers = List(MeleeBoosted, MaxDistanceCutoff)
melee_ammo_projectile.Name = "melee_ammo_projectile"
melee_ammo_projectile.Damage0 = 25
melee_ammo_projectile.Damage1 = 0
melee_ammo_projectile.ProjectileDamageType = DamageType.Direct
melee_ammo_projectile.InitialVelocity = 100
melee_ammo_projectile.Lifespan = .02f
ProjectileDefinition.CalculateDerivedFields(melee_ammo_projectile)
melee_ammo_projectile.Modifiers = List(MeleeBoosted, MaxDistanceCutoff)
meteor_common.Name = "meteor_common"
meteor_common.DamageAtEdge = .1f
meteor_common.ProjectileDamageType = DamageType.Splash
meteor_common.InitialVelocity = 0
meteor_common.Lifespan = 40
ProjectileDefinition.CalculateDerivedFields(meteor_common)
meteor_common.Modifiers = RadialDegrade
meteor_projectile_b_large.Name = "meteor_projectile_b_large"
// TODO for later, maybe : set_resource_parent meteor_projectile_b_large game_objects meteor_common
meteor_projectile_b_large.Damage0 = 2500
meteor_projectile_b_large.Damage1 = 5000
meteor_projectile_b_large.DamageRadius = 15f
meteor_projectile_b_large.DamageAtEdge = .1f
meteor_projectile_b_large.ProjectileDamageType = DamageType.Splash
meteor_projectile_b_large.InitialVelocity = 0
meteor_projectile_b_large.Lifespan = 40
ProjectileDefinition.CalculateDerivedFields(meteor_projectile_b_large)
meteor_projectile_b_large.Modifiers = RadialDegrade
meteor_projectile_b_medium.Name = "meteor_projectile_b_medium"
// TODO for later, maybe : set_resource_parent meteor_projectile_b_medium game_objects meteor_common
meteor_projectile_b_medium.Damage0 = 1250
meteor_projectile_b_medium.Damage1 = 2500
meteor_projectile_b_medium.DamageRadius = 10f
meteor_projectile_b_medium.DamageAtEdge = .1f
meteor_projectile_b_medium.ProjectileDamageType = DamageType.Splash
meteor_projectile_b_medium.InitialVelocity = 0
meteor_projectile_b_medium.Lifespan = 40
ProjectileDefinition.CalculateDerivedFields(meteor_projectile_b_medium)
meteor_projectile_b_medium.Modifiers = RadialDegrade
meteor_projectile_b_small.Name = "meteor_projectile_b_small"
// TODO for later, maybe : set_resource_parent meteor_projectile_b_small game_objects meteor_common
meteor_projectile_b_small.Damage0 = 625
meteor_projectile_b_small.Damage1 = 1250
meteor_projectile_b_small.DamageRadius = 5f
meteor_projectile_b_small.DamageAtEdge = .1f
meteor_projectile_b_small.ProjectileDamageType = DamageType.Splash
meteor_projectile_b_small.InitialVelocity = 0
meteor_projectile_b_small.Lifespan = 40
ProjectileDefinition.CalculateDerivedFields(meteor_projectile_b_small)
meteor_projectile_b_small.Modifiers = RadialDegrade
meteor_projectile_large.Name = "meteor_projectile_large"
// TODO for later, maybe : set_resource_parent meteor_projectile_large game_objects meteor_common
meteor_projectile_large.Damage0 = 2500
meteor_projectile_large.Damage1 = 5000
meteor_projectile_large.DamageRadius = 15f
meteor_projectile_large.DamageAtEdge = .1f
meteor_projectile_large.ProjectileDamageType = DamageType.Splash
meteor_projectile_large.InitialVelocity = 0
meteor_projectile_large.Lifespan = 40
ProjectileDefinition.CalculateDerivedFields(meteor_projectile_large)
meteor_projectile_large.Modifiers = RadialDegrade
meteor_projectile_medium.Name = "meteor_projectile_medium"
// TODO for later, maybe : set_resource_parent meteor_projectile_medium game_objects meteor_common
meteor_projectile_medium.Damage0 = 1250
meteor_projectile_medium.Damage1 = 2500
meteor_projectile_medium.DamageRadius = 10f
meteor_projectile_medium.DamageAtEdge = .1f
meteor_projectile_medium.ProjectileDamageType = DamageType.Splash
meteor_projectile_medium.InitialVelocity = 0
meteor_projectile_medium.Lifespan = 40
ProjectileDefinition.CalculateDerivedFields(meteor_projectile_medium)
meteor_projectile_medium.Modifiers = RadialDegrade
meteor_projectile_small.Name = "meteor_projectile_small"
// TODO for later, maybe : set_resource_parent meteor_projectile_small game_objects meteor_common
meteor_projectile_small.Damage0 = 625
meteor_projectile_small.Damage1 = 1250
meteor_projectile_small.DamageRadius = 5f
meteor_projectile_small.DamageAtEdge = .1f
meteor_projectile_small.ProjectileDamageType = DamageType.Splash
meteor_projectile_small.InitialVelocity = 0
meteor_projectile_small.Lifespan = 40
ProjectileDefinition.CalculateDerivedFields(meteor_projectile_small)
meteor_projectile_small.Modifiers = RadialDegrade
mine_projectile.Name = "mine_projectile"
mine_projectile.Lifespan = 0.01f
mine_projectile.InitialVelocity = 300
ProjectileDefinition.CalculateDerivedFields(mine_projectile)
mine_sweeper_projectile.Name = "mine_sweeper_projectile"
mine_sweeper_projectile.Damage0 = 0
mine_sweeper_projectile.Damage1 = 0
mine_sweeper_projectile.DamageAtEdge = .33f
mine_sweeper_projectile.DamageRadius = 25f
mine_sweeper_projectile.GrenadeProjectile = true
mine_sweeper_projectile.ProjectileDamageType = DamageType.Splash
mine_sweeper_projectile.InitialVelocity = 30
mine_sweeper_projectile.Lifespan = 15f
ProjectileDefinition.CalculateDerivedFields(mine_sweeper_projectile)
mine_sweeper_projectile.Modifiers = RadialDegrade
mine_sweeper_projectile_enh.Name = "mine_sweeper_projectile_enh"
mine_sweeper_projectile_enh.Damage0 = 0
mine_sweeper_projectile_enh.Damage1 = 0
mine_sweeper_projectile_enh.DamageAtEdge = 0.33f
mine_sweeper_projectile_enh.DamageRadius = 25f
mine_sweeper_projectile_enh.GrenadeProjectile = true
mine_sweeper_projectile_enh.ProjectileDamageType = DamageType.Splash
mine_sweeper_projectile_enh.InitialVelocity = 30
mine_sweeper_projectile_enh.Lifespan = 3f
ProjectileDefinition.CalculateDerivedFields(mine_sweeper_projectile_enh)
mine_sweeper_projectile_enh.Modifiers = RadialDegrade
oicw_projectile.Name = "oicw_projectile"
oicw_projectile.Damage0 = 50
oicw_projectile.Damage1 = 50
oicw_projectile.Acceleration = 15
oicw_projectile.AccelerationUntil = 5f
oicw_projectile.DamageAtEdge = 0.1f
oicw_projectile.DamageRadius = 10f
oicw_projectile.ProjectileDamageType = DamageType.Splash
oicw_projectile.InitialVelocity = 5
oicw_projectile.Lifespan = 6.1f
oicw_projectile.DamageProxy = List(601, 601, 601, 601, 601) //5 x oicw_little_buddy
oicw_projectile.registerAs = "rc-projectiles"
oicw_projectile.ExistsOnRemoteClients = true
oicw_projectile.RemoteClientData = (13107, 195)
oicw_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(oicw_projectile)
oicw_projectile.Modifiers = List(
//ExplodingRadialDegrade,
RadialDegrade
)
oicw_little_buddy.Name = "oicw_little_buddy"
oicw_little_buddy.Damage0 = 75
oicw_little_buddy.Damage1 = 75
oicw_little_buddy.DamageAtEdge = 0.1f
oicw_little_buddy.DamageRadius = 7.5f
oicw_little_buddy.ProjectileDamageType = DamageType.Splash
oicw_little_buddy.InitialVelocity = 40
oicw_little_buddy.Lifespan = 0.5f
oicw_little_buddy.registerAs = "rc-projectiles"
oicw_little_buddy.ExistsOnRemoteClients = true //does not use RemoteClientData
oicw_little_buddy.Packet = new LittleBuddyProjectileConverter
//add_property oicw_little_buddy multi_stage_spawn_server_side true ...
ProjectileDefinition.CalculateDerivedFields(oicw_little_buddy)
oicw_little_buddy.Modifiers = List(
ExplosionDamagesOnlyAbove
)
pellet_gun_projectile.Name = "pellet_gun_projectile"
// TODO for later, maybe : set_resource_parent pellet_gun_projectile game_objects shotgun_shell_projectile
pellet_gun_projectile.Damage0 = 12
pellet_gun_projectile.Damage1 = 8
pellet_gun_projectile.ProjectileDamageType = DamageType.Direct
pellet_gun_projectile.InitialVelocity = 400
pellet_gun_projectile.Lifespan = 0.1875f
pellet_gun_projectile.UseDamage1Subtract = false
ProjectileDefinition.CalculateDerivedFields(pellet_gun_projectile)
phalanx_av_projectile.Name = "phalanx_av_projectile"
phalanx_av_projectile.Damage0 = 60
phalanx_av_projectile.Damage1 = 140
phalanx_av_projectile.DamageAtEdge = 0.1f
phalanx_av_projectile.DamageRadius = 5f
phalanx_av_projectile.ProjectileDamageType = DamageType.Splash
phalanx_av_projectile.InitialVelocity = 100
phalanx_av_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(phalanx_av_projectile)
phalanx_av_projectile.Modifiers = RadialDegrade
phalanx_flak_projectile.Name = "phalanx_flak_projectile"
phalanx_flak_projectile.Damage0 = 15
phalanx_flak_projectile.Damage1 = 25
phalanx_flak_projectile.Damage2 = 70
phalanx_flak_projectile.DamageAtEdge = 1f
phalanx_flak_projectile.DamageRadius = 10f
phalanx_flak_projectile.ProjectileDamageType = DamageType.Direct
phalanx_flak_projectile.ProjectileDamageTypeSecondary = DamageType.Splash
phalanx_flak_projectile.InitialVelocity = 100
phalanx_flak_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(phalanx_flak_projectile)
phalanx_flak_projectile.Modifiers = List(
//FlakHit,
FlakBurst,
MaxDistanceCutoff
)
phalanx_projectile.Name = "phalanx_projectile"
phalanx_projectile.Damage0 = 20
phalanx_projectile.Damage1 = 30
phalanx_projectile.Damage2 = 30
phalanx_projectile.Damage3 = 30
phalanx_projectile.Damage4 = 18
phalanx_projectile.ProjectileDamageType = DamageType.Direct
phalanx_projectile.DegradeDelay = 0f
phalanx_projectile.DegradeMultiplier = 0.25f
phalanx_projectile.InitialVelocity = 400
phalanx_projectile.Lifespan = 1f
phalanx_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(phalanx_projectile)
phoenix_missile_guided_projectile.Name = "phoenix_missile_guided_projectile"
// TODO for later, maybe : set_resource_parent phoenix_missile_guided_projectile game_objects phoenix_missile_projectile
phoenix_missile_guided_projectile.Damage0 = 80
phoenix_missile_guided_projectile.Damage1 = 400
phoenix_missile_guided_projectile.Damage2 = 400
phoenix_missile_guided_projectile.Damage3 = 300
phoenix_missile_guided_projectile.Damage4 = 600
phoenix_missile_guided_projectile.Acceleration = 60
phoenix_missile_guided_projectile.AccelerationUntil = 2.5f
phoenix_missile_guided_projectile.DamageAtEdge = 0.3f
phoenix_missile_guided_projectile.DamageRadius = 1.5f
phoenix_missile_guided_projectile.ProjectileDamageType = DamageType.Splash
phoenix_missile_guided_projectile.InitialVelocity = 0
phoenix_missile_guided_projectile.Lifespan = 3f
//not naturally a remote projectile, but being governed as one for convenience
phoenix_missile_guided_projectile.registerAs = "rc-projectiles"
phoenix_missile_guided_projectile.ExistsOnRemoteClients = true
phoenix_missile_guided_projectile.RemoteClientData = (0, 63)
phoenix_missile_guided_projectile.Packet = projectileConverter
//
ProjectileDefinition.CalculateDerivedFields(phoenix_missile_guided_projectile)
phoenix_missile_guided_projectile.Modifiers = RadialDegrade
phoenix_missile_projectile.Name = "phoenix_missile_projectile"
phoenix_missile_projectile.Damage0 = 80
phoenix_missile_projectile.Damage1 = 400
phoenix_missile_projectile.Damage2 = 400
phoenix_missile_projectile.Damage3 = 300
phoenix_missile_projectile.Damage4 = 600
phoenix_missile_projectile.Acceleration = 60
phoenix_missile_projectile.AccelerationUntil = 2.5f
phoenix_missile_projectile.DamageAtEdge = 0.3f
phoenix_missile_projectile.DamageRadius = 1.5f
phoenix_missile_projectile.ProjectileDamageType = DamageType.Splash
phoenix_missile_projectile.InitialVelocity = 0
phoenix_missile_projectile.Lifespan = 3f
ProjectileDefinition.CalculateDerivedFields(phoenix_missile_projectile)
phoenix_missile_projectile.Modifiers = RadialDegrade
plasma_cartridge_projectile.Name = "plasma_cartridge_projectile"
// TODO for later, maybe : set_resource_parent plasma_cartridge_projectile game_objects plasma_grenade_projectile
plasma_cartridge_projectile.Damage0 = 20
plasma_cartridge_projectile.Damage1 = 15
plasma_cartridge_projectile.DamageAtEdge = 0.2f
plasma_cartridge_projectile.DamageRadius = 7f
plasma_cartridge_projectile.GrenadeProjectile = true
plasma_cartridge_projectile.ProjectileDamageType = DamageType.Aggravated
plasma_cartridge_projectile.Aggravated = AggravatedDamage(
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
Aura.Plasma,
AggravatedTiming(3000),
1.5f,
true,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
plasma_cartridge_projectile.InitialVelocity = 30
plasma_cartridge_projectile.Lifespan = 15f
ProjectileDefinition.CalculateDerivedFields(plasma_cartridge_projectile)
plasma_cartridge_projectile.Modifiers = List(
InfantryAggravatedDirect,
InfantryAggravatedDirectBurn,
InfantryAggravatedSplash,
InfantryAggravatedSplashBurn,
RadialDegrade
)
plasma_cartridge_projectile_b.Name = "plasma_cartridge_projectile_b"
// TODO for later, maybe : set_resource_parent plasma_cartridge_projectile_b game_objects plasma_grenade_projectile_B
plasma_cartridge_projectile_b.Damage0 = 20
plasma_cartridge_projectile_b.Damage1 = 15
plasma_cartridge_projectile_b.DamageAtEdge = 0.2f
plasma_cartridge_projectile_b.DamageRadius = 7f
plasma_cartridge_projectile_b.GrenadeProjectile = true
plasma_cartridge_projectile_b.ProjectileDamageType = DamageType.Aggravated
plasma_cartridge_projectile_b.Aggravated = AggravatedDamage(
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
Aura.Plasma,
AggravatedTiming(3000),
1.5f,
true,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
plasma_cartridge_projectile_b.InitialVelocity = 30
plasma_cartridge_projectile_b.Lifespan = 2f
ProjectileDefinition.CalculateDerivedFields(plasma_cartridge_projectile_b)
plasma_cartridge_projectile_b.Modifiers = List(
InfantryAggravatedDirect,
InfantryAggravatedDirectBurn,
InfantryAggravatedSplash,
InfantryAggravatedSplashBurn,
RadialDegrade
)
plasma_grenade_projectile.Name = "plasma_grenade_projectile"
plasma_grenade_projectile.Damage0 = 40
plasma_grenade_projectile.Damage1 = 30
plasma_grenade_projectile.DamageAtEdge = 0.1f
plasma_grenade_projectile.DamageRadius = 7f
plasma_grenade_projectile.GrenadeProjectile = true
plasma_grenade_projectile.ProjectileDamageType = DamageType.Aggravated
plasma_grenade_projectile.Aggravated = AggravatedDamage(
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
Aura.Plasma,
AggravatedTiming(3000),
1.5f,
true,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
plasma_grenade_projectile.InitialVelocity = 30
plasma_grenade_projectile.Lifespan = 15f
ProjectileDefinition.CalculateDerivedFields(plasma_grenade_projectile)
plasma_grenade_projectile.Modifiers = List(
InfantryAggravatedDirect,
InfantryAggravatedDirectBurn,
InfantryAggravatedSplash,
InfantryAggravatedSplashBurn,
RadialDegrade
)
plasma_grenade_projectile_B.Name = "plasma_grenade_projectile_B"
// TODO for later, maybe : set_resource_parent plasma_grenade_projectile_B game_objects plasma_grenade_projectile
plasma_grenade_projectile_B.Damage0 = 40
plasma_grenade_projectile_B.Damage1 = 30
plasma_grenade_projectile_B.DamageAtEdge = 0.1f
plasma_grenade_projectile_B.DamageRadius = 7f
plasma_grenade_projectile_B.GrenadeProjectile = true
plasma_grenade_projectile_B.ProjectileDamageType = DamageType.Aggravated
plasma_grenade_projectile_B.Aggravated = AggravatedDamage(
List(AggravatedInfo(DamageType.Direct, 0.25f, 750), AggravatedInfo(DamageType.Splash, 0.25f, 1000)),
Aura.Plasma,
AggravatedTiming(3000),
1.5f,
true,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
plasma_grenade_projectile_B.InitialVelocity = 30
plasma_grenade_projectile_B.Lifespan = 3f
ProjectileDefinition.CalculateDerivedFields(plasma_grenade_projectile_B)
plasma_grenade_projectile_B.Modifiers = List(
InfantryAggravatedDirect,
InfantryAggravatedDirectBurn,
InfantryAggravatedSplash,
InfantryAggravatedSplashBurn,
RadialDegrade
)
pounder_projectile.Name = "pounder_projectile"
pounder_projectile.Damage0 = 31
pounder_projectile.Damage1 = 120
pounder_projectile.Damage2 = 120
pounder_projectile.Damage3 = 75
pounder_projectile.Damage4 = 132
pounder_projectile.DamageAtEdge = 0.1f
pounder_projectile.DamageRadius = 1f
pounder_projectile.GrenadeProjectile = true
pounder_projectile.ProjectileDamageType = DamageType.Splash
pounder_projectile.InitialVelocity = 120
pounder_projectile.Lifespan = 2.5f
ProjectileDefinition.CalculateDerivedFields(pounder_projectile)
pounder_projectile.Modifiers = RadialDegrade
pounder_projectile_enh.Name = "pounder_projectile_enh"
// TODO for later, maybe : set_resource_parent pounder_projectile_enh game_objects pounder_projectile
pounder_projectile_enh.Damage0 = 31
pounder_projectile_enh.Damage1 = 120
pounder_projectile_enh.Damage2 = 120
pounder_projectile_enh.Damage3 = 75
pounder_projectile_enh.Damage4 = 132
pounder_projectile_enh.DamageAtEdge = 0.1f
pounder_projectile_enh.DamageRadius = 1f
pounder_projectile_enh.GrenadeProjectile = true
pounder_projectile_enh.ProjectileDamageType = DamageType.Splash
pounder_projectile_enh.InitialVelocity = 120
pounder_projectile_enh.Lifespan = 3.2f
ProjectileDefinition.CalculateDerivedFields(pounder_projectile_enh)
pounder_projectile_enh.Modifiers = RadialDegrade
ppa_projectile.Name = "ppa_projectile"
ppa_projectile.Damage0 = 20
ppa_projectile.Damage1 = 20
ppa_projectile.Damage2 = 40
ppa_projectile.Damage3 = 20
ppa_projectile.Damage4 = 13
ppa_projectile.ProjectileDamageType = DamageType.Direct
ppa_projectile.InitialVelocity = 400
ppa_projectile.Lifespan = .5f
ProjectileDefinition.CalculateDerivedFields(ppa_projectile)
pulsar_ap_projectile.Name = "pulsar_ap_projectile"
// TODO for later, maybe : set_resource_parent pulsar_ap_projectile game_objects pulsar_projectile
pulsar_ap_projectile.Damage0 = 7
pulsar_ap_projectile.Damage1 = 15
pulsar_ap_projectile.ProjectileDamageType = DamageType.Direct
pulsar_ap_projectile.DegradeDelay = 0.1f
pulsar_ap_projectile.DegradeMultiplier = 0.5f
pulsar_ap_projectile.InitialVelocity = 500
pulsar_ap_projectile.Lifespan = .4f
pulsar_ap_projectile.UseDamage1Subtract = true
pulsar_ap_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(pulsar_ap_projectile)
pulsar_projectile.Name = "pulsar_projectile"
pulsar_projectile.Damage0 = 20
pulsar_projectile.Damage1 = 10
pulsar_projectile.ProjectileDamageType = DamageType.Direct
pulsar_projectile.DegradeDelay = 0.1f
pulsar_projectile.DegradeMultiplier = 0.4f
pulsar_projectile.InitialVelocity = 500
pulsar_projectile.Lifespan = .4f
pulsar_projectile.UseDamage1Subtract = true
pulsar_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(pulsar_projectile)
quasar_projectile.Name = "quasar_projectile"
quasar_projectile.Damage0 = 18
quasar_projectile.Damage1 = 8
quasar_projectile.ProjectileDamageType = DamageType.Direct
quasar_projectile.DegradeDelay = 0.045f
quasar_projectile.DegradeMultiplier = 0.5f
quasar_projectile.InitialVelocity = 500
quasar_projectile.Lifespan = .4f
quasar_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(quasar_projectile)
radiator_cloud.Name = "radiator_cloud"
radiator_cloud.Damage0 = 1 //2
radiator_cloud.DamageAtEdge = 1.0f
radiator_cloud.DamageRadius = 5f
radiator_cloud.DamageToHealthOnly = true
radiator_cloud.radiation_cloud = true
radiator_cloud.ProjectileDamageType = DamageType.Radiation
//custom aggravated information
radiator_cloud.ProjectileDamageTypeSecondary = DamageType.Aggravated
radiator_cloud.Aggravated = AggravatedDamage(
AggravatedInfo(DamageType.Splash, 1f, 80),
Aura.None,
AggravatedTiming(250, 2),
0f,
false,
List(TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player))
)
radiator_cloud.Lifespan = 10.0f
ProjectileDefinition.CalculateDerivedFields(radiator_cloud)
radiator_cloud.registerAs = "rc-projectiles"
radiator_cloud.ExistsOnRemoteClients = true
radiator_cloud.Packet = radCloudConverter
//radiator_cloud.Geometry = GeometryForm.representProjectileBySphere()
radiator_cloud.Modifiers = List(
MaxDistanceCutoff,
InfantryAggravatedRadiation,
InfantryAggravatedRadiationBurn,
ShieldAgainstRadiation
)
radiator_grenade_projectile.Name = "radiator_grenade_projectile" // Todo : Radiator damages ?
radiator_grenade_projectile.GrenadeProjectile = true //not really, but technically yes
radiator_grenade_projectile.ProjectileDamageType = DamageType.Direct
radiator_grenade_projectile.InitialVelocity = 30
radiator_grenade_projectile.Lifespan = 3f
radiator_grenade_projectile.DamageProxy = 717 //radiator_cloud
ProjectileDefinition.CalculateDerivedFields(radiator_grenade_projectile)
radiator_sticky_projectile.Name = "radiator_sticky_projectile"
// TODO for later, maybe : set_resource_parent radiator_sticky_projectile game_objects radiator_grenade_projectile
radiator_sticky_projectile.GrenadeProjectile = true //not really, but technically yes
radiator_sticky_projectile.ProjectileDamageType = DamageType.Direct
radiator_sticky_projectile.InitialVelocity = 30
radiator_sticky_projectile.Lifespan = 4f
radiator_sticky_projectile.DamageProxy = 717 //radiator_cloud
ProjectileDefinition.CalculateDerivedFields(radiator_sticky_projectile)
reaver_rocket_projectile.Name = "reaver_rocket_projectile"
reaver_rocket_projectile.Damage0 = 25
reaver_rocket_projectile.Damage1 = 88
reaver_rocket_projectile.Damage2 = 75
reaver_rocket_projectile.Damage3 = 75
reaver_rocket_projectile.Damage4 = 88
reaver_rocket_projectile.Acceleration = 50
reaver_rocket_projectile.AccelerationUntil = 1f
reaver_rocket_projectile.DamageAtEdge = 0.1f
reaver_rocket_projectile.DamageRadius = 3f
reaver_rocket_projectile.ProjectileDamageType = DamageType.Splash
reaver_rocket_projectile.InitialVelocity = 100
reaver_rocket_projectile.Lifespan = 2.1f
ProjectileDefinition.CalculateDerivedFields(reaver_rocket_projectile)
reaver_rocket_projectile.Modifiers = RadialDegrade
rocket_projectile.Name = "rocket_projectile"
rocket_projectile.Damage0 = 50
rocket_projectile.Damage1 = 105
rocket_projectile.Damage2 = 75
rocket_projectile.Damage3 = 75
rocket_projectile.Damage4 = 75
rocket_projectile.Acceleration = 10
rocket_projectile.AccelerationUntil = 2f
rocket_projectile.DamageAtEdge = .5f
rocket_projectile.DamageRadius = 3f
rocket_projectile.ProjectileDamageType = DamageType.Splash
rocket_projectile.InitialVelocity = 50
rocket_projectile.Lifespan = 8f
ProjectileDefinition.CalculateDerivedFields(rocket_projectile)
rocket_projectile.Modifiers = RadialDegrade
rocklet_flak_projectile.Name = "rocklet_flak_projectile"
rocklet_flak_projectile.Damage0 = 20
rocklet_flak_projectile.Damage1 = 30
rocklet_flak_projectile.Damage2 = 57
rocklet_flak_projectile.Damage3 = 30
rocklet_flak_projectile.Damage4 = 50
rocklet_flak_projectile.DamageAtEdge = 0.25f
rocklet_flak_projectile.DamageRadius = 8f
rocklet_flak_projectile.ProjectileDamageType = DamageType.Direct
rocklet_flak_projectile.ProjectileDamageTypeSecondary = DamageType.Splash
rocklet_flak_projectile.InitialVelocity = 60
rocklet_flak_projectile.Lifespan = 3.2f
ProjectileDefinition.CalculateDerivedFields(rocklet_flak_projectile)
rocklet_flak_projectile.Modifiers = List(
//FlakHit,
FlakBurst,
MaxDistanceCutoff
)
rocklet_jammer_projectile.Name = "rocklet_jammer_projectile"
rocklet_jammer_projectile.Damage0 = 0
rocklet_jammer_projectile.Acceleration = 10
rocklet_jammer_projectile.AccelerationUntil = 2f
rocklet_jammer_projectile.DamageAtEdge = 1.0f
rocklet_jammer_projectile.DamageRadius = 10f
rocklet_jammer_projectile.ProjectileDamageType = DamageType.Splash
rocklet_jammer_projectile.InitialVelocity = 50
rocklet_jammer_projectile.Lifespan = 8f
ProjectileDefinition.CalculateDerivedFields(rocklet_jammer_projectile)
//TODO rocklet_jammer_projectile.Modifiers = RadialDegrade?
scattercannon_projectile.Name = "scattercannon_projectile"
scattercannon_projectile.Damage0 = 11
scattercannon_projectile.Damage1 = 5
scattercannon_projectile.ProjectileDamageType = DamageType.Direct
scattercannon_projectile.InitialVelocity = 400
scattercannon_projectile.Lifespan = 0.25f
scattercannon_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(scattercannon_projectile)
scythe_projectile.Name = "scythe_projectile"
scythe_projectile.Damage0 = 30
scythe_projectile.Damage1 = 20
scythe_projectile.ProjectileDamageType = DamageType.Direct
scythe_projectile.DegradeDelay = .015f
scythe_projectile.DegradeMultiplier = 0.35f
scythe_projectile.InitialVelocity = 60
scythe_projectile.Lifespan = 3f
ProjectileDefinition.CalculateDerivedFields(scythe_projectile)
scythe_projectile_slave.Name = "scythe_projectile_slave" // Todo how does it work ?
scythe_projectile_slave.InitialVelocity = 30
scythe_projectile_slave.Lifespan = 3f
ProjectileDefinition.CalculateDerivedFields(scythe_projectile_slave)
shotgun_shell_AP_projectile.Name = "shotgun_shell_AP_projectile"
// TODO for later, maybe : set_resource_parent shotgun_shell_AP_projectile game_objects shotgun_shell_projectile
shotgun_shell_AP_projectile.Damage0 = 5
shotgun_shell_AP_projectile.Damage1 = 10
shotgun_shell_AP_projectile.ProjectileDamageType = DamageType.Direct
shotgun_shell_AP_projectile.InitialVelocity = 400
shotgun_shell_AP_projectile.Lifespan = 0.25f
shotgun_shell_AP_projectile.UseDamage1Subtract = true
shotgun_shell_AP_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(shotgun_shell_AP_projectile)
shotgun_shell_projectile.Name = "shotgun_shell_projectile"
shotgun_shell_projectile.Damage0 = 12
shotgun_shell_projectile.Damage1 = 5
shotgun_shell_projectile.ProjectileDamageType = DamageType.Direct
shotgun_shell_projectile.InitialVelocity = 400
shotgun_shell_projectile.Lifespan = 0.25f
shotgun_shell_projectile.UseDamage1Subtract = true
shotgun_shell_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(shotgun_shell_projectile)
six_shooter_projectile.Name = "six_shooter_projectile"
// TODO for later, maybe : set_resource_parent six_shooter_projectile game_objects 9mmbullet_projectile
six_shooter_projectile.Damage0 = 22
six_shooter_projectile.Damage1 = 20
six_shooter_projectile.ProjectileDamageType = DamageType.Direct
six_shooter_projectile.DegradeDelay = 0.15f
six_shooter_projectile.DegradeMultiplier = 0.25f
six_shooter_projectile.InitialVelocity = 500
six_shooter_projectile.Lifespan = 0.4f
six_shooter_projectile.UseDamage1Subtract = false
ProjectileDefinition.CalculateDerivedFields(six_shooter_projectile)
skyguard_flak_cannon_projectile.Name = "skyguard_flak_cannon_projectile"
skyguard_flak_cannon_projectile.Damage0 = 15
skyguard_flak_cannon_projectile.Damage1 = 25
skyguard_flak_cannon_projectile.Damage2 = 50
skyguard_flak_cannon_projectile.DamageAtEdge = 1f
skyguard_flak_cannon_projectile.DamageRadius = 10f
skyguard_flak_cannon_projectile.ProjectileDamageType = DamageType.Direct
skyguard_flak_cannon_projectile.ProjectileDamageTypeSecondary = DamageType.Splash
skyguard_flak_cannon_projectile.InitialVelocity = 100
skyguard_flak_cannon_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(skyguard_flak_cannon_projectile)
skyguard_flak_cannon_projectile.Modifiers = List(
//FlakHit,
FlakBurst,
MaxDistanceCutoff
)
sparrow_projectile.Name = "sparrow_projectile"
sparrow_projectile.Damage0 = 35
sparrow_projectile.Damage1 = 50
sparrow_projectile.Damage2 = 125
sparrow_projectile.Acceleration = 12
sparrow_projectile.AccelerationUntil = 5f
sparrow_projectile.DamageAtEdge = 0.1f
sparrow_projectile.DamageRadius = 3f
sparrow_projectile.ProjectileDamageType = DamageType.Splash
sparrow_projectile.InitialVelocity = 60
sparrow_projectile.Lifespan = 5.85f
sparrow_projectile.registerAs = "rc-projectiles"
sparrow_projectile.ExistsOnRemoteClients = true
sparrow_projectile.RemoteClientData = (13107, 187)
sparrow_projectile.AutoLock = true
sparrow_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(sparrow_projectile)
sparrow_projectile.Modifiers = RadialDegrade
sparrow_secondary_projectile.Name = "sparrow_secondary_projectile"
// TODO for later, maybe : set_resource_parent sparrow_secondary_projectile game_objects sparrow_projectile
sparrow_secondary_projectile.Damage0 = 35
sparrow_secondary_projectile.Damage1 = 50
sparrow_secondary_projectile.Damage2 = 125
sparrow_secondary_projectile.Acceleration = 12
sparrow_secondary_projectile.AccelerationUntil = 5f
sparrow_secondary_projectile.DamageAtEdge = 0.1f
sparrow_secondary_projectile.DamageRadius = 3f
sparrow_secondary_projectile.ProjectileDamageType = DamageType.Splash
sparrow_secondary_projectile.InitialVelocity = 60
sparrow_secondary_projectile.Lifespan = 5.85f
sparrow_secondary_projectile.registerAs = "rc-projectiles"
sparrow_secondary_projectile.ExistsOnRemoteClients = true
sparrow_secondary_projectile.RemoteClientData = (13107, 187)
sparrow_secondary_projectile.AutoLock = true
sparrow_secondary_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(sparrow_secondary_projectile)
sparrow_secondary_projectile.Modifiers = RadialDegrade
spiker_projectile.Name = "spiker_projectile"
spiker_projectile.Charging = ChargeDamage(4, StandardDamageProfile(damage0 = Some(20), damage1 = Some(20)))
spiker_projectile.Damage0 = 75
spiker_projectile.Damage1 = 75
spiker_projectile.DamageAtEdge = 0.1f
spiker_projectile.DamageRadius = 5f
spiker_projectile.DamageRadiusMin = 1f
spiker_projectile.ProjectileDamageType = DamageType.Splash
spiker_projectile.InitialVelocity = 40
spiker_projectile.Lifespan = 5f
spiker_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(spiker_projectile)
spiker_projectile.Modifiers = List(
SpikerChargeDamage,
RadialDegrade
)
spitfire_aa_ammo_projectile.Name = "spitfire_aa_ammo_projectile"
spitfire_aa_ammo_projectile.Damage0 = 5
spitfire_aa_ammo_projectile.Damage1 = 15
spitfire_aa_ammo_projectile.Damage2 = 12
spitfire_aa_ammo_projectile.Damage3 = 5
spitfire_aa_ammo_projectile.Damage4 = 15
spitfire_aa_ammo_projectile.DamageAtEdge = 1f
spitfire_aa_ammo_projectile.DamageRadius = 10f
spitfire_aa_ammo_projectile.ProjectileDamageType = DamageType.Direct
spitfire_aa_ammo_projectile.ProjectileDamageTypeSecondary = DamageType.Splash
spitfire_aa_ammo_projectile.InitialVelocity = 100
spitfire_aa_ammo_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(spitfire_aa_ammo_projectile)
spitfire_aa_ammo_projectile.Modifiers = List(
//FlakHit,
FlakBurst,
MaxDistanceCutoff
)
spitfire_ammo_projectile.Name = "spitfire_ammo_projectile"
spitfire_ammo_projectile.Damage0 = 15
spitfire_ammo_projectile.Damage1 = 10
spitfire_ammo_projectile.ProjectileDamageType = DamageType.Direct
spitfire_ammo_projectile.DegradeDelay = .01f
spitfire_ammo_projectile.DegradeMultiplier = 0.5f
spitfire_ammo_projectile.InitialVelocity = 100
spitfire_ammo_projectile.Lifespan = .5f
spitfire_ammo_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(spitfire_ammo_projectile)
starfire_projectile.Name = "starfire_projectile"
starfire_projectile.Damage0 = 16
starfire_projectile.Damage1 = 20
starfire_projectile.Damage2 = 58
starfire_projectile.Acceleration = 12
starfire_projectile.AccelerationUntil = 5f
starfire_projectile.ProjectileDamageType = DamageType.Aggravated
starfire_projectile.Aggravated = AggravatedDamage(
AggravatedInfo(DamageType.Direct, 0.25f, 250),
Aura.Comet,
2000,
0f,
true,
List(
TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player),
TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.Vehicle),
TargetValidation(EffectTarget.Category.Turret, EffectTarget.Validation.Turret)
)
)
starfire_projectile.InitialVelocity = 45
starfire_projectile.Lifespan = 7.8f
starfire_projectile.registerAs = "rc-projectiles"
starfire_projectile.ExistsOnRemoteClients = true
starfire_projectile.RemoteClientData = (39577, 249)
starfire_projectile.AutoLock = true
starfire_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(starfire_projectile)
starfire_projectile.Modifiers = List(
StarfireAggravatedBurn,
RadialDegrade
)
striker_missile_projectile.Name = "striker_missile_projectile"
striker_missile_projectile.Damage0 = 35
striker_missile_projectile.Damage1 = 175
striker_missile_projectile.Damage2 = 125
striker_missile_projectile.Damage3 = 125
striker_missile_projectile.Damage4 = 263
striker_missile_projectile.Acceleration = 20
striker_missile_projectile.AccelerationUntil = 2f
striker_missile_projectile.DamageAtEdge = 0.1f
striker_missile_projectile.DamageRadius = 1.5f
striker_missile_projectile.ProjectileDamageType = DamageType.Splash
striker_missile_projectile.InitialVelocity = 30
striker_missile_projectile.Lifespan = 4.2f
ProjectileDefinition.CalculateDerivedFields(striker_missile_projectile)
striker_missile_projectile.Modifiers = RadialDegrade
striker_missile_targeting_projectile.Name = "striker_missile_targeting_projectile"
// TODO for later, maybe : set_resource_parent striker_missile_targeting_projectile game_objects striker_missile_projectile
striker_missile_targeting_projectile.Damage0 = 35
striker_missile_targeting_projectile.Damage1 = 175
striker_missile_targeting_projectile.Damage2 = 125
striker_missile_targeting_projectile.Damage3 = 125
striker_missile_targeting_projectile.Damage4 = 263
striker_missile_targeting_projectile.Acceleration = 20
striker_missile_targeting_projectile.AccelerationUntil = 2f
striker_missile_targeting_projectile.DamageAtEdge = 0.1f
striker_missile_targeting_projectile.DamageRadius = 1.5f
striker_missile_targeting_projectile.ProjectileDamageType = DamageType.Splash
striker_missile_targeting_projectile.InitialVelocity = 30
striker_missile_targeting_projectile.Lifespan = 4.2f
striker_missile_targeting_projectile.registerAs = "rc-projectiles"
striker_missile_targeting_projectile.ExistsOnRemoteClients = true
striker_missile_targeting_projectile.RemoteClientData = (26214, 134)
striker_missile_targeting_projectile.AutoLock = true
striker_missile_targeting_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(striker_missile_targeting_projectile)
striker_missile_targeting_projectile.Modifiers = RadialDegrade
trek_projectile.Name = "trek_projectile"
trek_projectile.Damage0 = 0
trek_projectile.Damage1 = 0
trek_projectile.Damage2 = 0
trek_projectile.Damage3 = 0
trek_projectile.Damage4 = 0
trek_projectile.Acceleration = -20
trek_projectile.AccelerationUntil = 1f
trek_projectile.ProjectileDamageType = DamageType.Direct
trek_projectile.InitialVelocity = 40
trek_projectile.Lifespan = 7f
trek_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(trek_projectile)
trek_projectile.Modifiers = MaxDistanceCutoff
vanu_sentry_turret_projectile.Name = "vanu_sentry_turret_projectile"
vanu_sentry_turret_projectile.Damage0 = 25
vanu_sentry_turret_projectile.Damage1 = 35
vanu_sentry_turret_projectile.Damage2 = 100
vanu_sentry_turret_projectile.DamageAtEdge = 0.1f
vanu_sentry_turret_projectile.DamageRadius = 3f
vanu_sentry_turret_projectile.ProjectileDamageType = DamageType.Splash
vanu_sentry_turret_projectile.InitialVelocity = 240
vanu_sentry_turret_projectile.Lifespan = 1.3f
ProjectileDefinition.CalculateDerivedFields(vanu_sentry_turret_projectile)
vanu_sentry_turret_projectile.Modifiers = RadialDegrade
vulture_bomb_projectile.Name = "vulture_bomb_projectile"
vulture_bomb_projectile.Damage0 = 175
vulture_bomb_projectile.Damage1 = 1750
vulture_bomb_projectile.Damage2 = 1000
vulture_bomb_projectile.Damage3 = 400
vulture_bomb_projectile.Damage4 = 1500
vulture_bomb_projectile.DamageAtEdge = 0.1f
vulture_bomb_projectile.DamageRadius = 10f
vulture_bomb_projectile.ProjectileDamageType = DamageType.Splash
vulture_bomb_projectile.InitialVelocity = 0
vulture_bomb_projectile.Lifespan = 30f
ProjectileDefinition.CalculateDerivedFields(vulture_bomb_projectile)
vulture_bomb_projectile.Modifiers = RadialDegrade
vulture_nose_bullet_projectile.Name = "vulture_nose_bullet_projectile"
vulture_nose_bullet_projectile.Damage0 = 12
vulture_nose_bullet_projectile.Damage1 = 15
vulture_nose_bullet_projectile.Damage2 = 10
vulture_nose_bullet_projectile.Damage3 = 10
vulture_nose_bullet_projectile.Damage4 = 15
vulture_nose_bullet_projectile.ProjectileDamageType = DamageType.Direct
vulture_nose_bullet_projectile.DegradeDelay = .4f
vulture_nose_bullet_projectile.DegradeMultiplier = 0.7f
vulture_nose_bullet_projectile.InitialVelocity = 500
vulture_nose_bullet_projectile.Lifespan = 0.46f
ProjectileDefinition.CalculateDerivedFields(vulture_nose_bullet_projectile)
vulture_tail_bullet_projectile.Name = "vulture_tail_bullet_projectile"
vulture_tail_bullet_projectile.Damage0 = 25
vulture_tail_bullet_projectile.Damage1 = 35
vulture_tail_bullet_projectile.Damage2 = 50
vulture_tail_bullet_projectile.ProjectileDamageType = DamageType.Direct
vulture_tail_bullet_projectile.DegradeDelay = .02f
vulture_tail_bullet_projectile.DegradeMultiplier = 0.5f
vulture_tail_bullet_projectile.InitialVelocity = 500
vulture_tail_bullet_projectile.Lifespan = 0.6f
ProjectileDefinition.CalculateDerivedFields(vulture_tail_bullet_projectile)
wasp_gun_projectile.Name = "wasp_gun_projectile"
wasp_gun_projectile.Damage0 = 10
wasp_gun_projectile.Damage1 = 15
wasp_gun_projectile.Damage2 = 25
wasp_gun_projectile.Damage3 = 17
wasp_gun_projectile.Damage4 = 7
wasp_gun_projectile.ProjectileDamageType = DamageType.Direct
wasp_gun_projectile.DegradeDelay = .015f
wasp_gun_projectile.DegradeMultiplier = 0.5f
wasp_gun_projectile.InitialVelocity = 500
wasp_gun_projectile.Lifespan = 0.5f
wasp_gun_projectile.DamageToBattleframeOnly = true
ProjectileDefinition.CalculateDerivedFields(wasp_gun_projectile)
wasp_rocket_projectile.Name = "wasp_rocket_projectile"
wasp_rocket_projectile.Damage0 = 35
wasp_rocket_projectile.Damage1 = 50
wasp_rocket_projectile.Damage2 = 300
wasp_rocket_projectile.Acceleration = 10
wasp_rocket_projectile.AccelerationUntil = 5f
wasp_rocket_projectile.DamageAtEdge = 0.1f
wasp_rocket_projectile.DamageRadius = 3f
wasp_rocket_projectile.ProjectileDamageType = DamageType.Splash
wasp_rocket_projectile.InitialVelocity = 60
wasp_rocket_projectile.Lifespan = 6.5f
wasp_rocket_projectile.registerAs = "rc-projectiles"
wasp_rocket_projectile.ExistsOnRemoteClients = true
wasp_rocket_projectile.RemoteClientData = (0, 208)
wasp_rocket_projectile.AutoLock = true
wasp_rocket_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(wasp_rocket_projectile)
wasp_rocket_projectile.Modifiers = RadialDegrade
winchester_projectile.Name = "winchester_projectile"
// TODO for later, maybe : set_resource_parent winchester_projectile game_objects bolt_projectile
winchester_projectile.Damage0 = 80
winchester_projectile.Damage1 = 40
winchester_projectile.Damage2 = 50
winchester_projectile.Damage3 = 50
winchester_projectile.Damage4 = 75
winchester_projectile.ProjectileDamageType = DamageType.Direct
winchester_projectile.InitialVelocity = 500
winchester_projectile.Lifespan = 0.6f
ProjectileDefinition.CalculateDerivedFields(winchester_projectile)
}
/**
* Initialize `ProjectileDefinition` globals for projectiles utilized by battleframe robotics.
*/
private def init_bfr_projectile(): Unit = {
val projectileConverter: ProjectileConverter = new ProjectileConverter
val radCloudConverter: RadiationCloudConverter = new RadiationCloudConverter
aphelion_immolation_cannon_projectile.Name = "aphelion_immolation_cannon_projectile"
aphelion_immolation_cannon_projectile.Damage0 = 55
aphelion_immolation_cannon_projectile.Damage1 = 225
aphelion_immolation_cannon_projectile.Damage2 = 210
aphelion_immolation_cannon_projectile.Damage3 = 135
aphelion_immolation_cannon_projectile.Damage4 = 140
aphelion_immolation_cannon_projectile.DamageAtEdge = 0.1f
aphelion_immolation_cannon_projectile.DamageRadius = 2.0f
aphelion_immolation_cannon_projectile.ProjectileDamageType = DamageType.Splash
aphelion_immolation_cannon_projectile.InitialVelocity = 250
aphelion_immolation_cannon_projectile.Lifespan = 1.4f
ProjectileDefinition.CalculateDerivedFields(aphelion_immolation_cannon_projectile)
aphelion_immolation_cannon_projectile.Modifiers = RadialDegrade
aphelion_laser_projectile.Name = "aphelion_laser_projectile"
aphelion_laser_projectile.Damage0 = 3
aphelion_laser_projectile.Damage1 = 5
aphelion_laser_projectile.Damage2 = 5
aphelion_laser_projectile.Damage3 = 4
aphelion_laser_projectile.Damage4 = 5
aphelion_laser_projectile.ProjectileDamageType = DamageType.Direct
aphelion_laser_projectile.DegradeDelay = .05f
aphelion_laser_projectile.DegradeMultiplier = 0.5f
aphelion_laser_projectile.InitialVelocity = 500
aphelion_laser_projectile.Lifespan = 0.35f
ProjectileDefinition.CalculateDerivedFields(aphelion_laser_projectile)
aphelion_plasma_cloud.Name = "aphelion_plasma_cloud"
aphelion_plasma_cloud.Damage0 = 3
aphelion_plasma_cloud.DamageAtEdge = 1.0f
aphelion_plasma_cloud.DamageRadius = 3f
aphelion_plasma_cloud.radiation_cloud = true
aphelion_plasma_cloud.ProjectileDamageType = DamageType.Aggravated
aphelion_plasma_cloud.Aggravated = AggravatedDamage(
AggravatedInfo(DamageType.Splash, 0.5f, 1000),
Aura.Napalm,
AggravatedTiming(10000, 2), //10000
10f, //aphelion_plasma_rocket_projectile.aggravated_damage_max_factor
true,
List(
TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player)
)
)
aphelion_plasma_cloud.Lifespan = 10.0f
ProjectileDefinition.CalculateDerivedFields(aphelion_plasma_cloud)
aphelion_plasma_cloud.registerAs = "rc-projectiles"
aphelion_plasma_cloud.ExistsOnRemoteClients = true
aphelion_plasma_cloud.Packet = radCloudConverter
//aphelion_plasma_cloud.Geometry = GeometryForm.representProjectileBySphere()
aphelion_plasma_cloud.Modifiers = List( //TODO placeholder values
MaxDistanceCutoff,
InfantryAggravatedRadiation,
InfantryAggravatedRadiationBurn,
ShieldAgainstRadiation
)
aphelion_plasma_rocket_projectile.Name = "aphelion_plasma_rocket_projectile"
//has property aggravated_damage_max_factor, but it's the aphelion_plasma_cloud that performs aggravated damage
aphelion_plasma_rocket_projectile.Damage0 = 38
aphelion_plasma_rocket_projectile.Damage1 = 70
aphelion_plasma_rocket_projectile.Damage2 = 95
aphelion_plasma_rocket_projectile.Damage3 = 55
aphelion_plasma_rocket_projectile.Damage4 = 60
aphelion_plasma_rocket_projectile.Acceleration = 20
aphelion_plasma_rocket_projectile.AccelerationUntil = 2f
aphelion_plasma_rocket_projectile.DamageAtEdge = .1f
aphelion_plasma_rocket_projectile.DamageRadius = 3f
aphelion_plasma_rocket_projectile.ProjectileDamageType = DamageType.Splash
aphelion_plasma_rocket_projectile.DamageProxy = 96 //aphelion_plama_cloud
aphelion_plasma_rocket_projectile.InitialVelocity = 75
aphelion_plasma_rocket_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(aphelion_plasma_rocket_projectile)
aphelion_plasma_rocket_projectile.Modifiers = RadialDegrade
aphelion_ppa_projectile.Name = "aphelion_ppa_projectile"
// TODO for later, maybe : set_resource_parent aphelion_ppa_projectile game_objects ppa_projectile
aphelion_ppa_projectile.Damage0 = 31
aphelion_ppa_projectile.Damage1 = 84
aphelion_ppa_projectile.Damage2 = 58
aphelion_ppa_projectile.Damage3 = 57
aphelion_ppa_projectile.Damage4 = 60
aphelion_ppa_projectile.DamageAtEdge = 0.10f
aphelion_ppa_projectile.DamageRadius = 1f
aphelion_ppa_projectile.ProjectileDamageType = DamageType.Splash
aphelion_ppa_projectile.DegradeDelay = .5f
aphelion_ppa_projectile.DegradeMultiplier = 0.55f
aphelion_ppa_projectile.InitialVelocity = 350
aphelion_ppa_projectile.Lifespan = .7f
ProjectileDefinition.CalculateDerivedFields(aphelion_ppa_projectile)
aphelion_ppa_projectile.Modifiers = RadialDegrade
aphelion_starfire_projectile.Name = "aphelion_starfire_projectile"
// TODO for later, maybe : set_resource_parent aphelion_starfire_projectile game_objects starfire_projectile
aphelion_starfire_projectile.Damage0 = 12
aphelion_starfire_projectile.Damage1 = 20
aphelion_starfire_projectile.Damage2 = 15
aphelion_starfire_projectile.Damage3 = 19
aphelion_starfire_projectile.Damage4 = 17
aphelion_starfire_projectile.Acceleration = 11
aphelion_starfire_projectile.AccelerationUntil = 5f
aphelion_starfire_projectile.InitialVelocity = 45
aphelion_starfire_projectile.Lifespan = 7f
aphelion_starfire_projectile.ProjectileDamageType = DamageType.Aggravated
aphelion_starfire_projectile.Aggravated = AggravatedDamage(
AggravatedInfo(DamageType.Direct, 0.25f, 250),
Aura.None,
2000,
0f,
true,
List(TargetValidation(EffectTarget.Category.Aircraft, EffectTarget.Validation.Aircraft))
)
aphelion_starfire_projectile.registerAs = "rc-projectiles"
aphelion_starfire_projectile.ExistsOnRemoteClients = true
aphelion_starfire_projectile.RemoteClientData = (39577, 249) //starfire_projectile data
aphelion_starfire_projectile.AutoLock = true
aphelion_starfire_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(aphelion_starfire_projectile)
aphelion_starfire_projectile.Modifiers = List(
StarfireAggravated,
StarfireAggravatedBurn
)
colossus_100mm_projectile.Name = "colossus_100mm_projectile"
colossus_100mm_projectile.Damage0 = 58
colossus_100mm_projectile.Damage1 = 330
colossus_100mm_projectile.Damage2 = 300
colossus_100mm_projectile.Damage3 = 165
colossus_100mm_projectile.Damage4 = 190
colossus_100mm_projectile.DamageAtEdge = 0.1f
colossus_100mm_projectile.DamageRadius = 5f
colossus_100mm_projectile.ProjectileDamageType = DamageType.Splash
colossus_100mm_projectile.InitialVelocity = 100
colossus_100mm_projectile.Lifespan = 4f
ProjectileDefinition.CalculateDerivedFields(colossus_100mm_projectile)
colossus_100mm_projectile.Modifiers = RadialDegrade
colossus_burster_projectile.Name = "colossus_burster_projectile"
// TODO for later, maybe : set_resource_parent colossus_burster_projectile game_objects burster_projectile
colossus_burster_projectile.Damage0 = 18
colossus_burster_projectile.Damage1 = 26
colossus_burster_projectile.Damage2 = 18
colossus_burster_projectile.Damage3 = 22
colossus_burster_projectile.Damage4 = 20
colossus_burster_projectile.DamageAtEdge = 0.1f
colossus_burster_projectile.DamageRadius = 7f
colossus_burster_projectile.ProjectileDamageType = DamageType.Direct
colossus_burster_projectile.ProjectileDamageTypeSecondary = DamageType.Splash
colossus_burster_projectile.InitialVelocity = 175
colossus_burster_projectile.Lifespan = 2.5f
ProjectileDefinition.CalculateDerivedFields(colossus_burster_projectile)
colossus_burster_projectile.Modifiers = List(
//FlakHit,
FlakBurst,
MaxDistanceCutoff
)
colossus_chaingun_projectile.Name = "colossus_chaingun_projectile"
// TODO for later, maybe : set_resource_parent colossus_chaingun_projectile game_objects 35mmbullet_projectile
colossus_chaingun_projectile.Damage0 = 15
colossus_chaingun_projectile.Damage1 = 14
colossus_chaingun_projectile.Damage2 = 15
colossus_chaingun_projectile.Damage3 = 13
colossus_chaingun_projectile.Damage4 = 11
colossus_chaingun_projectile.ProjectileDamageType = DamageType.Direct
colossus_chaingun_projectile.DegradeDelay = .100f
colossus_chaingun_projectile.DegradeMultiplier = 0.44f
colossus_chaingun_projectile.InitialVelocity = 500
colossus_chaingun_projectile.Lifespan = .50f
ProjectileDefinition.CalculateDerivedFields(colossus_chaingun_projectile)
colossus_cluster_bomb_projectile.Name = "colossus_cluster_bomb_projectile"
colossus_cluster_bomb_projectile.Damage0 = 40
colossus_cluster_bomb_projectile.Damage1 = 88
colossus_cluster_bomb_projectile.Damage2 = 100
colossus_cluster_bomb_projectile.Damage3 = 83
colossus_cluster_bomb_projectile.Damage4 = 88
colossus_cluster_bomb_projectile.DamageAtEdge = 0.1f
colossus_cluster_bomb_projectile.DamageRadius = 8f
colossus_cluster_bomb_projectile.ProjectileDamageType = DamageType.Splash
colossus_cluster_bomb_projectile.InitialVelocity = 75
colossus_cluster_bomb_projectile.Lifespan = 5f
ProjectileDefinition.CalculateDerivedFields(colossus_cluster_bomb_projectile)
colossus_cluster_bomb_projectile.Modifiers = RadialDegrade
colossus_tank_cannon_projectile.Name = "colossus_tank_cannon_projectile"
// TODO for later, maybe : set_resource_parent colossus_tank_cannon_projectile game_objects 75mmbullet_projectile
colossus_tank_cannon_projectile.Damage0 = 33
colossus_tank_cannon_projectile.Damage1 = 90
colossus_tank_cannon_projectile.Damage2 = 95
colossus_tank_cannon_projectile.Damage3 = 71
colossus_tank_cannon_projectile.Damage4 = 66
colossus_tank_cannon_projectile.DamageAtEdge = 0.1f
colossus_tank_cannon_projectile.DamageRadius = 2f
colossus_tank_cannon_projectile.ProjectileDamageType = DamageType.Splash
colossus_tank_cannon_projectile.InitialVelocity = 165
colossus_tank_cannon_projectile.Lifespan = 2f
ProjectileDefinition.CalculateDerivedFields(colossus_tank_cannon_projectile)
colossus_tank_cannon_projectile.Modifiers = RadialDegrade
peregrine_dual_machine_gun_projectile.Name = "peregrine_dual_machine_gun_projectile"
// TODO for later, maybe : set_resource_parent peregrine_dual_machine_gun_projectile game_objects 35mmbullet_projectile
peregrine_dual_machine_gun_projectile.Damage0 = 16
peregrine_dual_machine_gun_projectile.Damage1 = 44
peregrine_dual_machine_gun_projectile.Damage2 = 30
peregrine_dual_machine_gun_projectile.Damage3 = 27
peregrine_dual_machine_gun_projectile.Damage4 = 32
peregrine_dual_machine_gun_projectile.ProjectileDamageType = DamageType.Direct
peregrine_dual_machine_gun_projectile.DegradeDelay = .25f
peregrine_dual_machine_gun_projectile.DegradeMultiplier = 0.65f
peregrine_dual_machine_gun_projectile.InitialVelocity = 250
peregrine_dual_machine_gun_projectile.Lifespan = 1.1f
ProjectileDefinition.CalculateDerivedFields(peregrine_dual_machine_gun_projectile)
peregrine_mechhammer_projectile.Name = "peregrine_mechhammer_projectile"
peregrine_mechhammer_projectile.Damage0 = 5
peregrine_mechhammer_projectile.Damage1 = 4
peregrine_mechhammer_projectile.Damage2 = 4
peregrine_mechhammer_projectile.Damage3 = 5
peregrine_mechhammer_projectile.Damage4 = 3
peregrine_mechhammer_projectile.ProjectileDamageType = DamageType.Direct
peregrine_mechhammer_projectile.InitialVelocity = 500
peregrine_mechhammer_projectile.Lifespan = 0.4f
ProjectileDefinition.CalculateDerivedFields(peregrine_mechhammer_projectile)
peregrine_particle_cannon_projectile.Name = "peregrine_particle_cannon_projectile"
peregrine_particle_cannon_projectile.Damage0 = 70
peregrine_particle_cannon_projectile.Damage1 = 525
peregrine_particle_cannon_projectile.Damage2 = 350
peregrine_particle_cannon_projectile.Damage3 = 318
peregrine_particle_cannon_projectile.Damage4 = 310
peregrine_particle_cannon_projectile.DamageAtEdge = 0.1f
peregrine_particle_cannon_projectile.DamageRadius = 3f
peregrine_particle_cannon_projectile.ProjectileDamageType = DamageType.Splash
peregrine_particle_cannon_projectile.DamageProxy = 655 //peregrine_particle_cannon_radiation_cloud
peregrine_particle_cannon_projectile.InitialVelocity = 500
peregrine_particle_cannon_projectile.Lifespan = .6f
ProjectileDefinition.CalculateDerivedFields(peregrine_particle_cannon_projectile)
peregrine_particle_cannon_projectile.Modifiers = RadialDegrade
peregrine_particle_cannon_radiation_cloud.Name = "peregrine_particle_cannon_radiation_cloud"
peregrine_particle_cannon_radiation_cloud.Damage0 = 1
peregrine_particle_cannon_radiation_cloud.DamageAtEdge = 1.0f
peregrine_particle_cannon_radiation_cloud.DamageRadius = 3f
peregrine_particle_cannon_radiation_cloud.radiation_cloud = true
peregrine_particle_cannon_radiation_cloud.ProjectileDamageType = DamageType.Radiation
peregrine_particle_cannon_radiation_cloud.Lifespan = 5.0f
ProjectileDefinition.CalculateDerivedFields(peregrine_particle_cannon_radiation_cloud)
peregrine_particle_cannon_radiation_cloud.registerAs = "rc-projectiles"
peregrine_particle_cannon_radiation_cloud.ExistsOnRemoteClients = true
peregrine_particle_cannon_radiation_cloud.Packet = radCloudConverter
//peregrine_particle_cannon_radiation_cloud.Geometry = GeometryForm.representProjectileBySphere()
peregrine_particle_cannon_radiation_cloud.Modifiers = List(
MaxDistanceCutoff,
ShieldAgainstRadiation
)
peregrine_rocket_pod_projectile.Name = "peregrine_rocket_pod_projectile"
peregrine_rocket_pod_projectile.Damage0 = 30
peregrine_rocket_pod_projectile.Damage1 = 50
peregrine_rocket_pod_projectile.Damage2 = 50
peregrine_rocket_pod_projectile.Damage3 = 45
peregrine_rocket_pod_projectile.Damage4 = 40
peregrine_rocket_pod_projectile.Acceleration = 10
peregrine_rocket_pod_projectile.AccelerationUntil = 2f
peregrine_rocket_pod_projectile.DamageAtEdge = 0.1f
peregrine_rocket_pod_projectile.DamageRadius = 3f
peregrine_rocket_pod_projectile.ProjectileDamageType = DamageType.Splash
peregrine_rocket_pod_projectile.InitialVelocity = 200
peregrine_rocket_pod_projectile.Lifespan = 1.85f
ProjectileDefinition.CalculateDerivedFields(peregrine_rocket_pod_projectile)
peregrine_rocket_pod_projectile.Modifiers = RadialDegrade
peregrine_sparrow_projectile.Name = "peregrine_sparrow_projectile"
// TODO for later, maybe : set_resource_parent peregrine_sparrow_projectile game_objects sparrow_projectile
peregrine_sparrow_projectile.Damage0 = 20
peregrine_sparrow_projectile.Damage1 = 40
peregrine_sparrow_projectile.Damage2 = 30
peregrine_sparrow_projectile.Damage3 = 30
peregrine_sparrow_projectile.Damage4 = 31
peregrine_sparrow_projectile.Acceleration = 12
peregrine_sparrow_projectile.AccelerationUntil = 5f
peregrine_sparrow_projectile.DamageAtEdge = 0.1f
peregrine_sparrow_projectile.DamageRadius = 2f
peregrine_sparrow_projectile.ProjectileDamageType = DamageType.Splash
peregrine_sparrow_projectile.InitialVelocity = 45
peregrine_sparrow_projectile.Lifespan = 7.5f
peregrine_sparrow_projectile.registerAs = "rc-projectiles"
peregrine_sparrow_projectile.ExistsOnRemoteClients = true
peregrine_sparrow_projectile.RemoteClientData = (13107, 187) //sparrow_projectile data
peregrine_sparrow_projectile.AutoLock = true
peregrine_sparrow_projectile.Packet = projectileConverter
ProjectileDefinition.CalculateDerivedFields(peregrine_sparrow_projectile)
peregrine_sparrow_projectile.Modifiers = RadialDegrade
armor_siphon_projectile.Name = "armor_siphon_projectile"
armor_siphon_projectile.Damage0 = 0
armor_siphon_projectile.Damage1 = 20 //ground vehicles, siphon drain
armor_siphon_projectile.Damage2 = 20 //aircraft, siphon drain
armor_siphon_projectile.Damage3 = 0
armor_siphon_projectile.Damage4 = 20 //bfr's, siphon drain
armor_siphon_projectile.DamageToVehicleOnly = true
armor_siphon_projectile.DamageToBattleframeOnly = true
armor_siphon_projectile.DamageRadius = 35f
armor_siphon_projectile.ProjectileDamageType = DamageType.Siphon
ProjectileDefinition.CalculateDerivedFields(armor_siphon_projectile)
armor_siphon_projectile.Modifiers = List(
ArmorSiphonMaxDistanceCutoff,
ArmorSiphonRepairHost
)
ntu_siphon_emp.Name = "ntu_siphon_emp"
ntu_siphon_emp.Damage0 = 1
ntu_siphon_emp.Damage1 = 1
ntu_siphon_emp.DamageAtEdge = 0.1f
ntu_siphon_emp.DamageRadius = 50f
ntu_siphon_emp.ProjectileDamageType = DamageType.Splash
ntu_siphon_emp.AdditionalEffect = true
ntu_siphon_emp.SympatheticExplosion = true
ntu_siphon_emp.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Player,
EffectTarget.Validation.Player
) -> 1000
ntu_siphon_emp.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.AMS
) -> 5000
ntu_siphon_emp.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.MotionSensor
) -> 30000
ntu_siphon_emp.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.Spitfire
) -> 30000
ntu_siphon_emp.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Turret,
EffectTarget.Validation.Turret
) -> 30000
ntu_siphon_emp.JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.VehicleNotAMS
) -> 10000
ProjectileDefinition.CalculateDerivedFields(ntu_siphon_emp)
ntu_siphon_emp.Modifiers = MaxDistanceCutoff
}
/**
* Initialize `ToolDefinition` globals.
*/
private def init_tools(): Unit = {
init_infantry_tools()
init_vehicle_tools()
}
/**
* Initialize `ToolDefinition` globals.
*/
private def init_infantry_tools(): Unit = {
chainblade.Name = "chainblade"
chainblade.Size = EquipmentSize.Melee
chainblade.AmmoTypes += melee_ammo
chainblade.ProjectileTypes += melee_ammo_projectile
chainblade.ProjectileTypes += chainblade_projectile
chainblade.FireModes += new InfiniteFireModeDefinition
chainblade.FireModes.head.AmmoTypeIndices += 0
chainblade.FireModes.head.AmmoSlotIndex = 0
chainblade.FireModes.head.Magazine = 1
chainblade.FireModes += new InfiniteFireModeDefinition
chainblade.FireModes(1).AmmoTypeIndices += 0
chainblade.FireModes(1).ProjectileTypeIndices += 1
chainblade.FireModes(1).AmmoSlotIndex = 0
chainblade.FireModes(1).Magazine = 1
magcutter.Name = "magcutter"
magcutter.Size = EquipmentSize.Melee
magcutter.AmmoTypes += melee_ammo
magcutter.ProjectileTypes += melee_ammo_projectile
magcutter.ProjectileTypes += magcutter_projectile
magcutter.FireModes += new InfiniteFireModeDefinition
magcutter.FireModes.head.AmmoTypeIndices += 0
magcutter.FireModes.head.AmmoSlotIndex = 0
magcutter.FireModes.head.Magazine = 1
magcutter.FireModes += new InfiniteFireModeDefinition
magcutter.FireModes(1).AmmoTypeIndices += 0
magcutter.FireModes(1).ProjectileTypeIndices += 1
magcutter.FireModes(1).AmmoSlotIndex = 0
magcutter.FireModes(1).Magazine = 1
forceblade.Name = "forceblade"
forceblade.Size = EquipmentSize.Melee
forceblade.AmmoTypes += melee_ammo
forceblade.ProjectileTypes += melee_ammo_projectile
forceblade.ProjectileTypes += forceblade_projectile
forceblade.FireModes += new InfiniteFireModeDefinition
forceblade.FireModes.head.AmmoTypeIndices += 0
forceblade.FireModes.head.AmmoSlotIndex = 0
forceblade.FireModes.head.Magazine = 1
forceblade.FireModes += new InfiniteFireModeDefinition
forceblade.FireModes(1).AmmoTypeIndices += 0
forceblade.FireModes(1).ProjectileTypeIndices += 1
forceblade.FireModes(1).AmmoSlotIndex = 0
forceblade.FireModes(1).Magazine = 1
katana.Name = "katana"
katana.Size = EquipmentSize.Melee
katana.AmmoTypes += melee_ammo
katana.ProjectileTypes += katana_projectile
katana.ProjectileTypes += katana_projectileb
katana.FireModes += new InfiniteFireModeDefinition
katana.FireModes.head.AmmoTypeIndices += 0
katana.FireModes.head.AmmoSlotIndex = 0
katana.FireModes.head.Magazine = 1
katana.FireModes += new InfiniteFireModeDefinition
katana.FireModes(1).AmmoTypeIndices += 0
katana.FireModes(1).ProjectileTypeIndices += 1
katana.FireModes(1).AmmoSlotIndex = 0
katana.FireModes(1).Magazine = 1
frag_grenade.Name = "frag_grenade"
frag_grenade.Size = EquipmentSize.Pistol
frag_grenade.AmmoTypes += frag_grenade_ammo
frag_grenade.ProjectileTypes += frag_grenade_projectile
frag_grenade.FireModes += new FireModeDefinition
frag_grenade.FireModes.head.AmmoTypeIndices += 0
frag_grenade.FireModes.head.AmmoSlotIndex = 0
frag_grenade.FireModes.head.Magazine = 3
frag_grenade.FireModes += new FireModeDefinition
frag_grenade.FireModes(1).AmmoTypeIndices += 0
frag_grenade.FireModes(1).AmmoSlotIndex = 0
frag_grenade.FireModes(1).Magazine = 3
frag_grenade.Tile = InventoryTile.Tile22
plasma_grenade.Name = "plasma_grenade"
plasma_grenade.Size = EquipmentSize.Pistol
plasma_grenade.AmmoTypes += plasma_grenade_ammo
plasma_grenade.ProjectileTypes += plasma_grenade_projectile
plasma_grenade.FireModes += new FireModeDefinition
plasma_grenade.FireModes.head.AmmoTypeIndices += 0
plasma_grenade.FireModes.head.AmmoSlotIndex = 0
plasma_grenade.FireModes.head.Magazine = 3
plasma_grenade.FireModes += new FireModeDefinition
plasma_grenade.FireModes(1).AmmoTypeIndices += 0
plasma_grenade.FireModes(1).AmmoSlotIndex = 0
plasma_grenade.FireModes(1).Magazine = 3
plasma_grenade.Tile = InventoryTile.Tile22
jammer_grenade.Name = "jammer_grenade"
jammer_grenade.Size = EquipmentSize.Pistol
jammer_grenade.AmmoTypes += jammer_grenade_ammo
jammer_grenade.ProjectileTypes += jammer_grenade_projectile
jammer_grenade.FireModes += new FireModeDefinition
jammer_grenade.FireModes.head.AmmoTypeIndices += 0
jammer_grenade.FireModes.head.AmmoSlotIndex = 0
jammer_grenade.FireModes.head.Magazine = 3
jammer_grenade.FireModes += new FireModeDefinition
jammer_grenade.FireModes(1).AmmoTypeIndices += 0
jammer_grenade.FireModes(1).AmmoSlotIndex = 0
jammer_grenade.FireModes(1).Magazine = 3
jammer_grenade.Tile = InventoryTile.Tile22
repeater.Name = "repeater"
repeater.Size = EquipmentSize.Pistol
repeater.AmmoTypes += bullet_9mm
repeater.AmmoTypes += bullet_9mm_AP
repeater.ProjectileTypes += bullet_9mm_projectile
repeater.ProjectileTypes += bullet_9mm_AP_projectile
repeater.FireModes += new FireModeDefinition
repeater.FireModes.head.AmmoTypeIndices += 0
repeater.FireModes.head.AmmoTypeIndices += 1
repeater.FireModes.head.AmmoSlotIndex = 0
repeater.FireModes.head.Magazine = 20
repeater.FireModes.head.Add.Damage0 = 2
repeater.FireModes.head.Add.Damage1 = -3
repeater.FireModes.head.Add.Damage2 = -3
repeater.FireModes.head.Add.Damage3 = -3
repeater.FireModes.head.Add.Damage4 = -3
repeater.Tile = InventoryTile.Tile33
isp.Name = "isp"
isp.Size = EquipmentSize.Pistol
isp.AmmoTypes += shotgun_shell
isp.AmmoTypes += shotgun_shell_AP
isp.ProjectileTypes += shotgun_shell_projectile
isp.ProjectileTypes += shotgun_shell_AP_projectile
isp.FireModes += new PelletFireModeDefinition
isp.FireModes.head.AmmoTypeIndices += 0
isp.FireModes.head.AmmoTypeIndices += 1
isp.FireModes.head.AmmoSlotIndex = 0
isp.FireModes.head.Chamber = 6 //8 shells x 6 pellets = 36
isp.FireModes.head.Magazine = 8
isp.FireModes.head.Add.Damage0 = 1
isp.FireModes.head.Add.Damage2 = 1
isp.FireModes.head.Add.Damage3 = 1
isp.Tile = InventoryTile.Tile33
beamer.Name = "beamer"
beamer.Size = EquipmentSize.Pistol
beamer.AmmoTypes += energy_cell
beamer.ProjectileTypes += energy_cell_projectile
beamer.ProjectileTypes += enhanced_energy_cell_projectile
beamer.FireModes += new FireModeDefinition
beamer.FireModes.head.AmmoTypeIndices += 0
beamer.FireModes.head.AmmoSlotIndex = 0
beamer.FireModes.head.Magazine = 16
beamer.FireModes.head.Add.Damage0 = 4
beamer.FireModes.head.Add.Damage1 = -1
beamer.FireModes.head.Add.Damage2 = -1
beamer.FireModes.head.Add.Damage3 = -1
beamer.FireModes.head.Add.Damage4 = -1
beamer.FireModes += new FireModeDefinition
beamer.FireModes(1).AmmoTypeIndices += 0
beamer.FireModes(1).ProjectileTypeIndices += 1
beamer.FireModes(1).AmmoSlotIndex = 0
beamer.FireModes(1).Magazine = 16
beamer.FireModes(1).Add.Damage0 = -3
beamer.FireModes(1).Add.Damage1 = -3
beamer.FireModes(1).Add.Damage2 = -3
beamer.FireModes(1).Add.Damage3 = -3
beamer.FireModes(1).Add.Damage4 = -3
beamer.Tile = InventoryTile.Tile33
ilc9.Name = "ilc9"
ilc9.Size = EquipmentSize.Pistol
ilc9.AmmoTypes += bullet_9mm
ilc9.AmmoTypes += bullet_9mm_AP
ilc9.ProjectileTypes += bullet_9mm_projectile
ilc9.ProjectileTypes += bullet_9mm_AP_projectile
ilc9.FireModes += new FireModeDefinition
ilc9.FireModes.head.AmmoTypeIndices += 0
ilc9.FireModes.head.AmmoTypeIndices += 1
ilc9.FireModes.head.AmmoSlotIndex = 0
ilc9.FireModes.head.Magazine = 30
ilc9.FireModes.head.Add.Damage1 = -3
ilc9.FireModes.head.Add.Damage4 = -3
ilc9.Tile = InventoryTile.Tile33
suppressor.Name = "suppressor"
suppressor.Size = EquipmentSize.Rifle
suppressor.AmmoTypes += bullet_9mm
suppressor.AmmoTypes += bullet_9mm_AP
suppressor.ProjectileTypes += bullet_9mm_projectile
suppressor.ProjectileTypes += bullet_9mm_AP_projectile
suppressor.FireModes += new FireModeDefinition
suppressor.FireModes.head.AmmoTypeIndices += 0
suppressor.FireModes.head.AmmoTypeIndices += 1
suppressor.FireModes.head.AmmoSlotIndex = 0
suppressor.FireModes.head.Magazine = 25
suppressor.FireModes.head.Add.Damage0 = -1
suppressor.FireModes.head.Add.Damage1 = -1
suppressor.Tile = InventoryTile.Tile63
punisher.Name = "punisher"
punisher.Size = EquipmentSize.Rifle
punisher.AmmoTypes += bullet_9mm
punisher.AmmoTypes += bullet_9mm_AP
punisher.AmmoTypes += rocket
punisher.AmmoTypes += frag_cartridge
punisher.AmmoTypes += jammer_cartridge
punisher.AmmoTypes += plasma_cartridge
punisher.ProjectileTypes += bullet_9mm_projectile
punisher.ProjectileTypes += bullet_9mm_AP_projectile
punisher.ProjectileTypes += rocket_projectile
punisher.ProjectileTypes += frag_cartridge_projectile
punisher.ProjectileTypes += jammer_cartridge_projectile
punisher.ProjectileTypes += plasma_cartridge_projectile
punisher.FireModes += new FireModeDefinition
punisher.FireModes.head.AmmoTypeIndices += 0
punisher.FireModes.head.AmmoTypeIndices += 1
punisher.FireModes.head.AmmoSlotIndex = 0
punisher.FireModes.head.Magazine = 30
punisher.FireModes.head.Add.Damage0 = 1
punisher.FireModes.head.Add.Damage3 = 1
punisher.FireModes += new FireModeDefinition
punisher.FireModes(1).AmmoTypeIndices += 2
punisher.FireModes(1).AmmoTypeIndices += 3
punisher.FireModes(1).AmmoTypeIndices += 4
punisher.FireModes(1).AmmoTypeIndices += 5
punisher.FireModes(1).AmmoSlotIndex = 1
punisher.FireModes(1).Magazine = 1
punisher.Tile = InventoryTile.Tile63
flechette.Name = "flechette"
flechette.Size = EquipmentSize.Rifle
flechette.AmmoTypes += shotgun_shell
flechette.AmmoTypes += shotgun_shell_AP
flechette.ProjectileTypes += shotgun_shell_projectile
flechette.ProjectileTypes += shotgun_shell_AP_projectile
flechette.FireModes += new PelletFireModeDefinition
flechette.FireModes.head.AmmoTypeIndices += 0
flechette.FireModes.head.AmmoTypeIndices += 1
flechette.FireModes.head.AmmoSlotIndex = 0
flechette.FireModes.head.Magazine = 12
flechette.FireModes.head.Chamber = 8 //12 shells * 8 pellets = 96
flechette.Tile = InventoryTile.Tile63
cycler.Name = "cycler"
cycler.Size = EquipmentSize.Rifle
cycler.AmmoTypes += bullet_9mm
cycler.AmmoTypes += bullet_9mm_AP
cycler.ProjectileTypes += bullet_9mm_projectile
cycler.ProjectileTypes += bullet_9mm_AP_projectile
cycler.FireModes += new FireModeDefinition
cycler.FireModes.head.AmmoTypeIndices += 0
cycler.FireModes.head.AmmoTypeIndices += 1
cycler.FireModes.head.AmmoSlotIndex = 0
cycler.FireModes.head.Magazine = 50
cycler.Tile = InventoryTile.Tile63
gauss.Name = "gauss"
gauss.Size = EquipmentSize.Rifle
gauss.AmmoTypes += bullet_9mm
gauss.AmmoTypes += bullet_9mm_AP
gauss.ProjectileTypes += bullet_9mm_projectile
gauss.ProjectileTypes += bullet_9mm_AP_projectile
gauss.FireModes += new FireModeDefinition
gauss.FireModes.head.AmmoTypeIndices += 0
gauss.FireModes.head.AmmoTypeIndices += 1
gauss.FireModes.head.AmmoSlotIndex = 0
gauss.FireModes.head.Magazine = 30
gauss.FireModes.head.Add.Damage0 = 2
gauss.FireModes.head.Add.Damage3 = 2
gauss.Tile = InventoryTile.Tile63
pulsar.Name = "pulsar"
pulsar.Size = EquipmentSize.Rifle
pulsar.AmmoTypes += energy_cell
pulsar.ProjectileTypes += pulsar_projectile
pulsar.ProjectileTypes += pulsar_ap_projectile
pulsar.FireModes += new FireModeDefinition
pulsar.FireModes.head.AmmoTypeIndices += 0
pulsar.FireModes.head.AmmoSlotIndex = 0
pulsar.FireModes.head.Magazine = 40
pulsar.FireModes += new FireModeDefinition
pulsar.FireModes(1).AmmoTypeIndices += 0
pulsar.FireModes(1).ProjectileTypeIndices += 1
pulsar.FireModes(1).AmmoSlotIndex = 0
pulsar.FireModes(1).Magazine = 40
pulsar.Tile = InventoryTile.Tile63
anniversary_guna.Name = "anniversary_guna"
anniversary_guna.Size = EquipmentSize.Pistol
anniversary_guna.AmmoTypes += anniversary_ammo
anniversary_guna.ProjectileTypes += anniversary_projectilea
anniversary_guna.ProjectileTypes += anniversary_projectileb
anniversary_guna.FireModes += new FireModeDefinition
anniversary_guna.FireModes.head.AmmoTypeIndices += 0
anniversary_guna.FireModes.head.AmmoSlotIndex = 0
anniversary_guna.FireModes.head.Magazine = 6
anniversary_guna.FireModes += new FireModeDefinition
anniversary_guna.FireModes(1).AmmoTypeIndices += 0
anniversary_guna.FireModes(1).ProjectileTypeIndices += 1
anniversary_guna.FireModes(1).AmmoSlotIndex = 0
anniversary_guna.FireModes(1).Magazine = 6
anniversary_guna.Tile = InventoryTile.Tile33
anniversary_gun.Name = "anniversary_gun"
anniversary_gun.Size = EquipmentSize.Pistol
anniversary_gun.AmmoTypes += anniversary_ammo
anniversary_gun.ProjectileTypes += anniversary_projectilea
anniversary_gun.ProjectileTypes += anniversary_projectileb
anniversary_gun.FireModes += new FireModeDefinition
anniversary_gun.FireModes.head.AmmoTypeIndices += 0
anniversary_gun.FireModes.head.AmmoSlotIndex = 0
anniversary_gun.FireModes.head.Magazine = 6
anniversary_gun.FireModes += new FireModeDefinition
anniversary_gun.FireModes(1).AmmoTypeIndices += 0
anniversary_gun.FireModes(1).ProjectileTypeIndices += 1
anniversary_gun.FireModes(1).AmmoSlotIndex = 0
anniversary_gun.FireModes(1).Magazine = 6
anniversary_gun.Tile = InventoryTile.Tile33
anniversary_gunb.Name = "anniversary_gunb"
anniversary_gunb.Size = EquipmentSize.Pistol
anniversary_gunb.AmmoTypes += anniversary_ammo
anniversary_gunb.ProjectileTypes += anniversary_projectilea
anniversary_gunb.ProjectileTypes += anniversary_projectileb
anniversary_gunb.FireModes += new FireModeDefinition
anniversary_gunb.FireModes.head.AmmoTypeIndices += 0
anniversary_gunb.FireModes.head.AmmoSlotIndex = 0
anniversary_gunb.FireModes.head.Magazine = 6
anniversary_gunb.FireModes += new FireModeDefinition
anniversary_gunb.FireModes(1).AmmoTypeIndices += 0
anniversary_gunb.FireModes(1).ProjectileTypeIndices += 1
anniversary_gunb.FireModes(1).AmmoSlotIndex = 0
anniversary_gunb.FireModes(1).Magazine = 6
anniversary_gunb.Tile = InventoryTile.Tile33
spiker.Name = "spiker"
spiker.Size = EquipmentSize.Pistol
spiker.AmmoTypes += ancient_ammo_combo
spiker.ProjectileTypes += spiker_projectile
spiker.FireModes += new ChargeFireModeDefinition(time = 1000, drainInterval = 500)
spiker.FireModes.head.AmmoTypeIndices += 0
spiker.FireModes.head.AmmoSlotIndex = 0
spiker.FireModes.head.Magazine = 25
spiker.Tile = InventoryTile.Tile33
mini_chaingun.Name = "mini_chaingun"
mini_chaingun.Size = EquipmentSize.Rifle
mini_chaingun.AmmoTypes += bullet_9mm
mini_chaingun.AmmoTypes += bullet_9mm_AP
mini_chaingun.ProjectileTypes += bullet_9mm_projectile
mini_chaingun.ProjectileTypes += bullet_9mm_AP_projectile
mini_chaingun.FireModes += new FireModeDefinition
mini_chaingun.FireModes.head.AmmoTypeIndices += 0
mini_chaingun.FireModes.head.AmmoTypeIndices += 1
mini_chaingun.FireModes.head.AmmoSlotIndex = 0
mini_chaingun.FireModes.head.Magazine = 100
mini_chaingun.Tile = InventoryTile.Tile93
r_shotgun.Name = "r_shotgun"
r_shotgun.Size = EquipmentSize.Rifle
r_shotgun.AmmoTypes += shotgun_shell
r_shotgun.AmmoTypes += shotgun_shell_AP
r_shotgun.ProjectileTypes += shotgun_shell_projectile
r_shotgun.ProjectileTypes += shotgun_shell_AP_projectile
r_shotgun.FireModes += new PelletFireModeDefinition
r_shotgun.FireModes.head.AmmoTypeIndices += 0
r_shotgun.FireModes.head.AmmoTypeIndices += 1
r_shotgun.FireModes.head.AmmoSlotIndex = 0
r_shotgun.FireModes.head.Magazine = 16
r_shotgun.FireModes.head.Chamber = 8 //16 shells * 8 pellets = 128
r_shotgun.FireModes.head.Add.Damage0 = 1
r_shotgun.FireModes += new PelletFireModeDefinition
r_shotgun.FireModes(1).AmmoTypeIndices += 0
r_shotgun.FireModes(1).AmmoTypeIndices += 1
r_shotgun.FireModes(1).AmmoSlotIndex = 0
r_shotgun.FireModes(1).Magazine = 16
r_shotgun.FireModes(1).Chamber = 8 //16 shells * 8 pellets = 128
r_shotgun.FireModes(1).Add.Damage0 = -3
r_shotgun.Tile = InventoryTile.Tile93
lasher.Name = "lasher"
lasher.Size = EquipmentSize.Rifle
lasher.AmmoTypes += energy_cell
lasher.ProjectileTypes += lasher_projectile
lasher.ProjectileTypes += lasher_projectile_ap
lasher.FireModes += new FireModeDefinition
lasher.FireModes.head.AmmoTypeIndices += 0
lasher.FireModes.head.AmmoSlotIndex = 0
lasher.FireModes.head.Magazine = 35
lasher.FireModes += new FireModeDefinition
lasher.FireModes(1).AmmoTypeIndices += 0
lasher.FireModes(1).ProjectileTypeIndices += 1
lasher.FireModes(1).AmmoSlotIndex = 0
lasher.FireModes(1).Magazine = 35
lasher.Tile = InventoryTile.Tile93
maelstrom.Name = "maelstrom"
maelstrom.Size = EquipmentSize.Rifle
maelstrom.AmmoTypes += maelstrom_ammo
maelstrom.ProjectileTypes += maelstrom_stream_projectile
maelstrom.ProjectileTypes += maelstrom_grenade_projectile_contact
maelstrom.ProjectileTypes += maelstrom_grenade_projectile
maelstrom.FireModes += new FireModeDefinition
maelstrom.FireModes.head.AmmoTypeIndices += 0
maelstrom.FireModes.head.AmmoSlotIndex = 0
maelstrom.FireModes.head.Magazine = 150
maelstrom.FireModes += new FireModeDefinition
maelstrom.FireModes(1).AmmoTypeIndices += 0
maelstrom.FireModes(1).ProjectileTypeIndices += 1
maelstrom.FireModes(1).AmmoSlotIndex = 0
maelstrom.FireModes(1).Magazine = 150
maelstrom.FireModes(1).RoundsPerShot = 10
maelstrom.FireModes += new FireModeDefinition
maelstrom.FireModes(2).AmmoTypeIndices += 0
maelstrom.FireModes(2).ProjectileTypeIndices += 2
maelstrom.FireModes(2).AmmoSlotIndex = 0
maelstrom.FireModes(2).Magazine = 150
maelstrom.FireModes(2).RoundsPerShot = 10
maelstrom.Tile = InventoryTile.Tile93
phoenix.Name = "phoenix"
phoenix.Size = EquipmentSize.Rifle
phoenix.AmmoTypes += phoenix_missile
phoenix.ProjectileTypes += phoenix_missile_projectile
phoenix.ProjectileTypes += phoenix_missile_guided_projectile
phoenix.FireModes += new FireModeDefinition
phoenix.FireModes.head.AmmoTypeIndices += 0
phoenix.FireModes.head.AmmoSlotIndex = 0
phoenix.FireModes.head.Magazine = 3
phoenix.FireModes += new FireModeDefinition
phoenix.FireModes(1).AmmoTypeIndices += 0
phoenix.FireModes(1).ProjectileTypeIndices += 1
phoenix.FireModes(1).AmmoSlotIndex = 0
phoenix.FireModes(1).Magazine = 3
phoenix.Tile = InventoryTile.Tile93
striker.Name = "striker"
striker.Size = EquipmentSize.Rifle
striker.AmmoTypes += striker_missile_ammo
striker.ProjectileTypes += striker_missile_targeting_projectile
striker.ProjectileTypes += striker_missile_projectile
striker.FireModes += new FireModeDefinition
striker.FireModes.head.AmmoTypeIndices += 0
striker.FireModes.head.AmmoSlotIndex = 0
striker.FireModes.head.Magazine = 5
striker.FireModes += new FireModeDefinition
striker.FireModes(1).AmmoTypeIndices += 0
striker.FireModes(1).ProjectileTypeIndices += 1
striker.FireModes(1).AmmoSlotIndex = 0
striker.FireModes(1).Magazine = 5
striker.Tile = InventoryTile.Tile93
hunterseeker.Name = "hunterseeker"
hunterseeker.Size = EquipmentSize.Rifle
hunterseeker.AmmoTypes += hunter_seeker_missile
hunterseeker.ProjectileTypes += hunter_seeker_missile_projectile
hunterseeker.ProjectileTypes += hunter_seeker_missile_dumbfire
hunterseeker.FireModes += new FireModeDefinition
hunterseeker.FireModes.head.AmmoTypeIndices += 0
hunterseeker.FireModes.head.AmmoSlotIndex = 0
hunterseeker.FireModes.head.Magazine = 1
hunterseeker.FireModes += new FireModeDefinition
hunterseeker.FireModes(1).AmmoTypeIndices += 0
hunterseeker.FireModes(1).ProjectileTypeIndices += 1
hunterseeker.FireModes(1).AmmoSlotIndex = 0
hunterseeker.FireModes(1).Magazine = 1
hunterseeker.Tile = InventoryTile.Tile93
lancer.Name = "lancer"
lancer.Size = EquipmentSize.Rifle
lancer.AmmoTypes += lancer_cartridge
lancer.ProjectileTypes += lancer_projectile
lancer.FireModes += new FireModeDefinition
lancer.FireModes.head.AmmoTypeIndices += 0
lancer.FireModes.head.AmmoSlotIndex = 0
lancer.FireModes.head.Magazine = 6
lancer.Tile = InventoryTile.Tile93
rocklet.Name = "rocklet"
rocklet.Size = EquipmentSize.Rifle
rocklet.AmmoTypes += rocket
rocklet.AmmoTypes += frag_cartridge
rocklet.ProjectileTypes += rocket_projectile
rocklet.ProjectileTypes += rocklet_flak_projectile
rocklet.FireModes += new FireModeDefinition
rocklet.FireModes.head.AmmoTypeIndices += 0
rocklet.FireModes.head.AmmoTypeIndices += 1
rocklet.FireModes.head.AmmoSlotIndex = 0
rocklet.FireModes.head.Magazine = 6
rocklet.FireModes += new FireModeDefinition
rocklet.FireModes(1).AmmoTypeIndices += 0
rocklet.FireModes(1).AmmoTypeIndices += 1
rocklet.FireModes(1).AmmoSlotIndex = 0
rocklet.FireModes(1).Magazine = 6
rocklet.Tile = InventoryTile.Tile63
thumper.Name = "thumper"
thumper.Size = EquipmentSize.Rifle
thumper.AmmoTypes += frag_cartridge
thumper.AmmoTypes += plasma_cartridge
thumper.AmmoTypes += jammer_cartridge
thumper.ProjectileTypes += frag_cartridge_projectile_b
thumper.ProjectileTypes += plasma_cartridge_projectile_b
thumper.ProjectileTypes += jammer_cartridge_projectile_b
thumper.FireModes += new FireModeDefinition
thumper.FireModes.head.AmmoTypeIndices += 0
thumper.FireModes.head.AmmoTypeIndices += 1
thumper.FireModes.head.AmmoTypeIndices += 2
thumper.FireModes.head.AmmoSlotIndex = 0
thumper.FireModes.head.Magazine = 6
thumper.FireModes += new FireModeDefinition
thumper.FireModes(1).AmmoTypeIndices += 0
thumper.FireModes(1).AmmoTypeIndices += 1
thumper.FireModes(1).AmmoTypeIndices += 2
thumper.FireModes(1).AmmoSlotIndex = 0
thumper.FireModes(1).Magazine = 6
thumper.Tile = InventoryTile.Tile63
radiator.Name = "radiator"
radiator.Size = EquipmentSize.Rifle
radiator.AmmoTypes += ancient_ammo_combo
radiator.ProjectileTypes += radiator_grenade_projectile
radiator.ProjectileTypes += radiator_sticky_projectile
radiator.FireModes += new FireModeDefinition
radiator.FireModes.head.AmmoTypeIndices += 0
radiator.FireModes.head.AmmoSlotIndex = 0
radiator.FireModes.head.Magazine = 25
radiator.FireModes += new FireModeDefinition
radiator.FireModes(1).AmmoTypeIndices += 0
radiator.FireModes(1).ProjectileTypeIndices += 1
radiator.FireModes(1).AmmoSlotIndex = 0
radiator.FireModes(1).Magazine = 25
radiator.Tile = InventoryTile.Tile63
heavy_sniper.Name = "heavy_sniper"
heavy_sniper.Size = EquipmentSize.Rifle
heavy_sniper.AmmoTypes += bolt
heavy_sniper.ProjectileTypes += heavy_sniper_projectile
heavy_sniper.FireModes += new FireModeDefinition
heavy_sniper.FireModes.head.AmmoTypeIndices += 0
heavy_sniper.FireModes.head.AmmoSlotIndex = 0
heavy_sniper.FireModes.head.Magazine = 10
heavy_sniper.Tile = InventoryTile.Tile93
bolt_driver.Name = "bolt_driver"
bolt_driver.Size = EquipmentSize.Rifle
bolt_driver.AmmoTypes += bolt
bolt_driver.ProjectileTypes += bolt_projectile
bolt_driver.FireModes += new FireModeDefinition
bolt_driver.FireModes.head.AmmoTypeIndices += 0
bolt_driver.FireModes.head.AmmoSlotIndex = 0
bolt_driver.FireModes.head.Magazine = 1
bolt_driver.Tile = InventoryTile.Tile93
oicw.Name = "oicw"
oicw.Size = EquipmentSize.Rifle
oicw.AmmoTypes += oicw_ammo
oicw.ProjectileTypes += oicw_projectile
oicw.FireModes += new FireModeDefinition
oicw.FireModes.head.AmmoTypeIndices += 0
oicw.FireModes.head.AmmoSlotIndex = 0
oicw.FireModes.head.Magazine = 1
oicw.FireModes += new FireModeDefinition
oicw.FireModes(1).AmmoTypeIndices += 0
oicw.FireModes(1).AmmoSlotIndex = 0
oicw.FireModes(1).Magazine = 1
oicw.Tile = InventoryTile.Tile93
flamethrower.Name = "flamethrower"
flamethrower.Size = EquipmentSize.Rifle
flamethrower.AmmoTypes += flamethrower_ammo
flamethrower.ProjectileTypes += flamethrower_projectile
flamethrower.ProjectileTypes += flamethrower_fireball
flamethrower.FireModes += new FireModeDefinition
flamethrower.FireModes.head.AmmoTypeIndices += 0
flamethrower.FireModes.head.AmmoSlotIndex = 0
flamethrower.FireModes.head.Magazine = 100
flamethrower.FireModes += new FireModeDefinition
flamethrower.FireModes(1).AmmoTypeIndices += 0
flamethrower.FireModes(1).ProjectileTypeIndices += 1
flamethrower.FireModes(1).AmmoSlotIndex = 0
flamethrower.FireModes(1).Magazine = 100
flamethrower.FireModes(1).RoundsPerShot = 50
flamethrower.Tile = InventoryTile.Tile93
winchester.Name = "winchester"
winchester.Size = EquipmentSize.Rifle
winchester.AmmoTypes += winchester_ammo
winchester.ProjectileTypes += winchester_projectile
winchester.FireModes += new FireModeDefinition
winchester.FireModes.head.AmmoTypeIndices += 0
winchester.FireModes.head.AmmoSlotIndex = 0
winchester.FireModes.head.Magazine = 1
winchester.Tile = InventoryTile.Tile93
pellet_gun.Name = "pellet_gun"
pellet_gun.Size = EquipmentSize.Rifle
pellet_gun.AmmoTypes += pellet_gun_ammo
pellet_gun.ProjectileTypes += pellet_gun_projectile
pellet_gun.FireModes += new PelletFireModeDefinition
pellet_gun.FireModes.head.AmmoTypeIndices += 0
pellet_gun.FireModes.head.AmmoSlotIndex = 0
pellet_gun.FireModes.head.Magazine = 1 //what is this?
pellet_gun.FireModes.head.Chamber = 8 //1 shell * 8 pellets = 8
pellet_gun.Tile = InventoryTile.Tile63
six_shooter.Name = "six_shooter"
six_shooter.Size = EquipmentSize.Pistol
six_shooter.AmmoTypes += six_shooter_ammo
six_shooter.ProjectileTypes += six_shooter_projectile
six_shooter.FireModes += new FireModeDefinition
six_shooter.FireModes.head.AmmoTypeIndices += 0
six_shooter.FireModes.head.AmmoSlotIndex = 0
six_shooter.FireModes.head.Magazine = 6
six_shooter.Tile = InventoryTile.Tile33
dynomite.Name = "dynomite"
dynomite.Size = EquipmentSize.Pistol
dynomite.AmmoTypes += frag_grenade_ammo
dynomite.ProjectileTypes += dynomite_projectile
dynomite.FireModes += new FireModeDefinition
dynomite.FireModes.head.AmmoTypeIndices += 0
dynomite.FireModes.head.AmmoSlotIndex = 0
dynomite.FireModes.head.Magazine = 1
dynomite.Tile = InventoryTile.Tile22
trhev_dualcycler.Name = "trhev_dualcycler"
trhev_dualcycler.Descriptor = "trhev_antipersonnel"
trhev_dualcycler.Size = EquipmentSize.Max
trhev_dualcycler.AmmoTypes += dualcycler_ammo
trhev_dualcycler.ProjectileTypes += dualcycler_projectile
trhev_dualcycler.FireModes += new FireModeDefinition
trhev_dualcycler.FireModes.head.AmmoTypeIndices += 0
trhev_dualcycler.FireModes.head.AmmoSlotIndex = 0
trhev_dualcycler.FireModes.head.Magazine = 200
trhev_dualcycler.FireModes += new FireModeDefinition //anchored
trhev_dualcycler.FireModes(1).AmmoTypeIndices += 0
trhev_dualcycler.FireModes(1).AmmoSlotIndex = 0
trhev_dualcycler.FireModes(1).Magazine = 200
trhev_dualcycler.FireModes += new FireModeDefinition //overdrive?
trhev_dualcycler.FireModes(2).AmmoTypeIndices += 0
trhev_dualcycler.FireModes(2).AmmoSlotIndex = 0
trhev_dualcycler.FireModes(2).Magazine = 200
trhev_pounder.Name = "trhev_pounder"
trhev_pounder.Descriptor = "trhev_antivehicular"
trhev_pounder.Size = EquipmentSize.Max
trhev_pounder.AmmoTypes += pounder_ammo
trhev_pounder.ProjectileTypes += pounder_projectile
trhev_pounder.ProjectileTypes += pounder_projectile_enh
trhev_pounder.FireModes += new FireModeDefinition
trhev_pounder.FireModes.head.AmmoTypeIndices += 0 //explode on contact
trhev_pounder.FireModes.head.AmmoSlotIndex = 0
trhev_pounder.FireModes.head.Magazine = 30
trhev_pounder.FireModes += new FireModeDefinition //explode on contact, anchored
trhev_pounder.FireModes(1).AmmoTypeIndices += 0
trhev_pounder.FireModes(1).AmmoSlotIndex = 0
trhev_pounder.FireModes(1).Magazine = 30
trhev_pounder.FireModes += new FireModeDefinition //explode on contact, overdrive?
trhev_pounder.FireModes(2).AmmoTypeIndices += 0
trhev_pounder.FireModes(2).AmmoSlotIndex = 0
trhev_pounder.FireModes(2).Magazine = 30
trhev_pounder.FireModes += new FireModeDefinition //3-second fuse
trhev_pounder.FireModes(3).AmmoTypeIndices += 0
trhev_pounder.FireModes(3).ProjectileTypeIndices += 1
trhev_pounder.FireModes(3).AmmoSlotIndex = 0
trhev_pounder.FireModes(3).Magazine = 30
trhev_pounder.FireModes += new FireModeDefinition //3-second fuse, anchored
trhev_pounder.FireModes(4).AmmoTypeIndices += 0
trhev_pounder.FireModes(4).ProjectileTypeIndices += 1
trhev_pounder.FireModes(4).AmmoSlotIndex = 0
trhev_pounder.FireModes(4).Magazine = 30
trhev_pounder.FireModes += new FireModeDefinition //3-second fuse, overdrive?
trhev_pounder.FireModes(5).AmmoTypeIndices += 0
trhev_pounder.FireModes(5).ProjectileTypeIndices += 1
trhev_pounder.FireModes(5).AmmoSlotIndex = 0
trhev_pounder.FireModes(5).Magazine = 30
trhev_burster.Name = "trhev_burster"
trhev_burster.Descriptor = "trhev_antiaircraft"
trhev_burster.Size = EquipmentSize.Max
trhev_burster.AmmoTypes += burster_ammo
trhev_burster.ProjectileTypes += burster_projectile
trhev_burster.FireModes += new FireModeDefinition
trhev_burster.FireModes.head.AmmoTypeIndices += 0
trhev_burster.FireModes.head.AmmoSlotIndex = 0
trhev_burster.FireModes.head.Magazine = 40
nchev_scattercannon.Name = "nchev_scattercannon"
nchev_scattercannon.Descriptor = "nchev_antipersonnel"
nchev_scattercannon.Size = EquipmentSize.Max
nchev_scattercannon.AmmoTypes += scattercannon_ammo
nchev_scattercannon.ProjectileTypes += scattercannon_projectile
nchev_scattercannon.FireModes += new PelletFireModeDefinition
nchev_scattercannon.FireModes.head.AmmoTypeIndices += 0
nchev_scattercannon.FireModes.head.AmmoSlotIndex = 0
nchev_scattercannon.FireModes.head.Magazine = 40
nchev_scattercannon.FireModes.head.Chamber = 10 //40 shells * 10 pellets = 400
nchev_scattercannon.FireModes += new PelletFireModeDefinition
nchev_scattercannon.FireModes(1).AmmoTypeIndices += 0
nchev_scattercannon.FireModes(1).AmmoSlotIndex = 0
nchev_scattercannon.FireModes(1).Magazine = 40
nchev_scattercannon.FireModes(1).Chamber = 10 //40 shells * 10 pellets = 400
nchev_scattercannon.FireModes += new PelletFireModeDefinition
nchev_scattercannon.FireModes(2).AmmoTypeIndices += 0
nchev_scattercannon.FireModes(2).AmmoSlotIndex = 0
nchev_scattercannon.FireModes(2).Magazine = 40
nchev_scattercannon.FireModes(2).Chamber = 10 //40 shells * 10 pellets = 400
nchev_falcon.Name = "nchev_falcon"
nchev_falcon.Descriptor = "nchev_antivehicular"
nchev_falcon.Size = EquipmentSize.Max
nchev_falcon.AmmoTypes += falcon_ammo
nchev_falcon.ProjectileTypes += falcon_projectile
nchev_falcon.FireModes += new FireModeDefinition
nchev_falcon.FireModes.head.AmmoTypeIndices += 0
nchev_falcon.FireModes.head.AmmoSlotIndex = 0
nchev_falcon.FireModes.head.Magazine = 20
nchev_sparrow.Name = "nchev_sparrow"
nchev_sparrow.Descriptor = "nchev_antiaircraft"
nchev_sparrow.Size = EquipmentSize.Max
nchev_sparrow.AmmoTypes += sparrow_ammo
nchev_sparrow.ProjectileTypes += sparrow_projectile
nchev_sparrow.FireModes += new FireModeDefinition
nchev_sparrow.FireModes.head.AmmoTypeIndices += 0
nchev_sparrow.FireModes.head.AmmoSlotIndex = 0
nchev_sparrow.FireModes.head.Magazine = 12
vshev_quasar.Name = "vshev_quasar"
vshev_quasar.Descriptor = "vshev_antipersonnel"
vshev_quasar.Size = EquipmentSize.Max
vshev_quasar.AmmoTypes += quasar_ammo
vshev_quasar.ProjectileTypes += quasar_projectile
vshev_quasar.ProjectileTypes += enhanced_quasar_projectile
vshev_quasar.FireModes += new FireModeDefinition
vshev_quasar.FireModes.head.AmmoTypeIndices += 0
vshev_quasar.FireModes.head.AmmoSlotIndex = 0
vshev_quasar.FireModes.head.Magazine = 120
vshev_quasar.FireModes += new FireModeDefinition
vshev_quasar.FireModes(1).AmmoTypeIndices += 0
vshev_quasar.FireModes(1).ProjectileTypeIndices += 1
vshev_quasar.FireModes(1).AmmoSlotIndex = 0
vshev_quasar.FireModes(1).Magazine = 120
vshev_comet.Name = "vshev_comet"
vshev_comet.Descriptor = "vshev_antivehicular"
vshev_comet.Size = EquipmentSize.Max
vshev_comet.AmmoTypes += comet_ammo
vshev_comet.ProjectileTypes += comet_projectile
vshev_comet.FireModes += new FireModeDefinition
vshev_comet.FireModes.head.AmmoTypeIndices += 0
vshev_comet.FireModes.head.AmmoSlotIndex = 0
vshev_comet.FireModes.head.Magazine = 10
vshev_starfire.Name = "vshev_starfire"
vshev_starfire.Descriptor = "vshev_antiaircraft"
vshev_starfire.Size = EquipmentSize.Max
vshev_starfire.AmmoTypes += starfire_ammo
vshev_starfire.ProjectileTypes += starfire_projectile
vshev_starfire.FireModes += new FireModeDefinition
vshev_starfire.FireModes.head.AmmoTypeIndices += 0
vshev_starfire.FireModes.head.AmmoSlotIndex = 0
vshev_starfire.FireModes.head.Magazine = 8
medicalapplicator.Name = "medicalapplicator"
medicalapplicator.Size = EquipmentSize.Pistol
medicalapplicator.AmmoTypes += health_canister
medicalapplicator.ProjectileTypes += no_projectile
medicalapplicator.FireModes += new FireModeDefinition
medicalapplicator.FireModes.head.AmmoTypeIndices += 0
medicalapplicator.FireModes.head.AmmoSlotIndex = 0
medicalapplicator.FireModes.head.Magazine = 100
medicalapplicator.FireModes += new FireModeDefinition
medicalapplicator.FireModes(1).AmmoTypeIndices += 0
medicalapplicator.FireModes(1).AmmoSlotIndex = 0
medicalapplicator.FireModes(1).Magazine = 100
medicalapplicator.Tile = InventoryTile.Tile33
nano_dispenser.Name = "nano_dispenser"
nano_dispenser.Size = EquipmentSize.Rifle
nano_dispenser.AmmoTypes += armor_canister
nano_dispenser.AmmoTypes += upgrade_canister
nano_dispenser.ProjectileTypes += no_projectile
nano_dispenser.FireModes += new FireModeDefinition
nano_dispenser.FireModes.head.AmmoTypeIndices += 0
nano_dispenser.FireModes.head.AmmoTypeIndices += 1
nano_dispenser.FireModes.head.ProjectileTypeIndices += 0 //armor_canister
nano_dispenser.FireModes.head.ProjectileTypeIndices += 0 //upgrade_canister
nano_dispenser.FireModes.head.AmmoSlotIndex = 0
nano_dispenser.FireModes.head.Magazine = 100
nano_dispenser.FireModes.head.CustomMagazine = Ammo.upgrade_canister -> 1
nano_dispenser.FireModes.head.Add.Damage0 = 0
nano_dispenser.FireModes.head.Add.Damage1 = 20
nano_dispenser.FireModes.head.Add.Damage2 = 0
nano_dispenser.FireModes.head.Add.Damage3 = 0
nano_dispenser.FireModes.head.Add.Damage4 = 20
nano_dispenser.AddRepairMultiplier(level = 3, value = 2.0f)
nano_dispenser.AddRepairMultiplier(level = 2, value = 1.5f)
nano_dispenser.AddRepairMultiplier(level = 1, value = 1.0f)
nano_dispenser.Tile = InventoryTile.Tile63
bank.Name = "bank"
bank.Size = EquipmentSize.Pistol
bank.AmmoTypes += armor_canister
bank.ProjectileTypes += no_projectile
bank.FireModes += new FireModeDefinition
bank.FireModes.head.AmmoTypeIndices += 0
bank.FireModes.head.AmmoSlotIndex = 0
bank.FireModes.head.Magazine = 100
bank.FireModes += new FireModeDefinition
bank.FireModes(1).AmmoTypeIndices += 0
bank.FireModes(1).AmmoSlotIndex = 0
bank.FireModes(1).Magazine = 100
bank.AddRepairMultiplier(level = 3, value = 1.5f)
bank.AddRepairMultiplier(level = 2, value = 1.2f)
bank.AddRepairMultiplier(level = 1, value = 1.0f)
bank.Tile = InventoryTile.Tile33
remote_electronics_kit.Name = "remote_electronics_kit"
remote_electronics_kit.Packet = new REKConverter
remote_electronics_kit.Tile = InventoryTile.Tile33
boomer_trigger.Name = "boomer_trigger"
boomer_trigger.Packet = new BoomerTriggerConverter
boomer_trigger.Tile = InventoryTile.Tile22
trek.Name = "trek"
trek.Size = EquipmentSize.Pistol
trek.AmmoTypes += trek_ammo
trek.ProjectileTypes += trek_projectile
trek.FireModes += new FireModeDefinition
trek.FireModes.head.AmmoTypeIndices += 0
trek.FireModes.head.AmmoSlotIndex = 0
trek.FireModes.head.Magazine = 4
trek.FireModes += new InfiniteFireModeDefinition
trek.FireModes(1).AmmoTypeIndices += 0
trek.FireModes(1).AmmoSlotIndex = 0
trek.FireModes(1).Magazine = 1
trek.Tile = InventoryTile.Tile33
flail_targeting_laser.Name = "flail_targeting_laser"
flail_targeting_laser.Packet = new CommandDetonaterConverter
flail_targeting_laser.Tile = InventoryTile.Tile33
command_detonater.Name = "command_detonater"
command_detonater.Packet = new CommandDetonaterConverter
command_detonater.Tile = InventoryTile.Tile33
ace.Name = "ace"
ace.Size = EquipmentSize.Pistol
ace.Modes += new ConstructionFireMode {
Item(DeployedItem.boomer, Set(Certification.CombatEngineering))
}
ace.Modes += new ConstructionFireMode {
Item(DeployedItem.he_mine, Set(Certification.CombatEngineering))
Item(DeployedItem.jammer_mine, Set(Certification.AssaultEngineering))
}
ace.Modes += new ConstructionFireMode {
Item(DeployedItem.spitfire_turret, Set(Certification.CombatEngineering))
Item(DeployedItem.spitfire_cloaked, Set(Certification.FortificationEngineering))
Item(DeployedItem.spitfire_aa, Set(Certification.FortificationEngineering))
}
ace.Modes += new ConstructionFireMode {
Item(DeployedItem.motionalarmsensor, Set(Certification.CombatEngineering))
Item(DeployedItem.sensor_shield, Set(Certification.AdvancedHacking, Certification.CombatEngineering))
}
ace.Tile = InventoryTile.Tile33
advanced_ace.Name = "advanced_ace"
advanced_ace.Size = EquipmentSize.Rifle
advanced_ace.Modes += new ConstructionFireMode {
Item(DeployedItem.tank_traps, Set(Certification.FortificationEngineering))
}
advanced_ace.Modes += new ConstructionFireMode {
Item(DeployedItem.portable_manned_turret, Set(Certification.AssaultEngineering))
}
advanced_ace.Modes += new ConstructionFireMode {
Item(DeployedItem.deployable_shield_generator, Set(Certification.AssaultEngineering))
}
advanced_ace.Tile = InventoryTile.Tile93
router_telepad.Name = "router_telepad"
router_telepad.Size = EquipmentSize.Pistol
router_telepad.Modes += new ConstructionFireMode
router_telepad.Modes.head.Item(DeployedItem.router_telepad_deployable, Set(Certification.GroundSupport))
router_telepad.Tile = InventoryTile.Tile33
router_telepad.Packet = new TelepadConverter
}
/**
* Initialize `ToolDefinition` globals.
*/
private def init_vehicle_tools(): Unit = {
fury_weapon_systema.Name = "fury_weapon_systema"
fury_weapon_systema.Size = EquipmentSize.VehicleWeapon
fury_weapon_systema.AmmoTypes += hellfire_ammo
fury_weapon_systema.ProjectileTypes += hellfire_projectile
fury_weapon_systema.FireModes += new FireModeDefinition
fury_weapon_systema.FireModes.head.AmmoTypeIndices += 0
fury_weapon_systema.FireModes.head.AmmoSlotIndex = 0
fury_weapon_systema.FireModes.head.Magazine = 2
quadassault_weapon_system.Name = "quadassault_weapon_system"
quadassault_weapon_system.Size = EquipmentSize.VehicleWeapon
quadassault_weapon_system.AmmoTypes += bullet_12mm
quadassault_weapon_system.ProjectileTypes += bullet_12mm_projectile
quadassault_weapon_system.FireModes += new FireModeDefinition
quadassault_weapon_system.FireModes.head.AmmoTypeIndices += 0
quadassault_weapon_system.FireModes.head.AmmoSlotIndex = 0
quadassault_weapon_system.FireModes.head.Magazine = 150
scythe.Name = "scythe"
scythe.Size = EquipmentSize.VehicleWeapon
scythe.AmmoTypes += ancient_ammo_vehicle
scythe.AmmoTypes += ancient_ammo_vehicle
scythe.ProjectileTypes += scythe_projectile
scythe.FireModes += new FireModeDefinition
scythe.FireModes.head.AmmoTypeIndices += 0
scythe.FireModes.head.AmmoSlotIndex = 0
scythe.FireModes.head.Magazine = 250
scythe.FireModes += new FireModeDefinition
scythe.FireModes(1).AmmoTypeIndices += 0
scythe.FireModes(1).ProjectileTypeIndices += 0
scythe.FireModes(1).AmmoSlotIndex =
1 //note: the scythe has two magazines using a single pool; however, it can not ammo-switch or mode-switch
scythe.FireModes(1).Magazine = 250
chaingun_p.Name = "chaingun_p"
chaingun_p.Size = EquipmentSize.VehicleWeapon
chaingun_p.AmmoTypes += bullet_12mm
chaingun_p.ProjectileTypes += bullet_12mm_projectile
chaingun_p.FireModes += new FireModeDefinition
chaingun_p.FireModes.head.AmmoTypeIndices += 0
chaingun_p.FireModes.head.AmmoSlotIndex = 0
chaingun_p.FireModes.head.Magazine = 150
skyguard_weapon_system.Name = "skyguard_weapon_system"
skyguard_weapon_system.Size = EquipmentSize.VehicleWeapon
skyguard_weapon_system.AmmoTypes += skyguard_flak_cannon_ammo
skyguard_weapon_system.AmmoTypes += bullet_12mm
skyguard_weapon_system.ProjectileTypes += skyguard_flak_cannon_projectile
skyguard_weapon_system.ProjectileTypes += bullet_12mm_projectile
skyguard_weapon_system.FireModes += new FireModeDefinition
skyguard_weapon_system.FireModes.head.AmmoTypeIndices += 0
skyguard_weapon_system.FireModes.head.AmmoSlotIndex = 0
skyguard_weapon_system.FireModes.head.Magazine = 40
skyguard_weapon_system.FireModes += new FireModeDefinition
skyguard_weapon_system.FireModes(1).AmmoTypeIndices += 1
skyguard_weapon_system.FireModes(1).AmmoSlotIndex = 1
skyguard_weapon_system.FireModes(1).Magazine = 250
grenade_launcher_marauder.Name = "grenade_launcher_marauder"
grenade_launcher_marauder.Size = EquipmentSize.VehicleWeapon
grenade_launcher_marauder.AmmoTypes += heavy_grenade_mortar
grenade_launcher_marauder.ProjectileTypes += heavy_grenade_projectile
grenade_launcher_marauder.FireModes += new FireModeDefinition
grenade_launcher_marauder.FireModes.head.AmmoTypeIndices += 0
grenade_launcher_marauder.FireModes.head.AmmoSlotIndex = 0
grenade_launcher_marauder.FireModes.head.Magazine = 50
advanced_missile_launcher_t.Name = "advanced_missile_launcher_t"
advanced_missile_launcher_t.Size = EquipmentSize.VehicleWeapon
advanced_missile_launcher_t.AmmoTypes += firebird_missile
advanced_missile_launcher_t.ProjectileTypes += firebird_missile_projectile
advanced_missile_launcher_t.FireModes += new FireModeDefinition
advanced_missile_launcher_t.FireModes.head.AmmoTypeIndices += 0
advanced_missile_launcher_t.FireModes.head.AmmoSlotIndex = 0
advanced_missile_launcher_t.FireModes.head.Magazine = 40
flux_cannon_thresher.Name = "flux_cannon_thresher"
flux_cannon_thresher.Size = EquipmentSize.VehicleWeapon
flux_cannon_thresher.AmmoTypes += flux_cannon_thresher_battery
flux_cannon_thresher.ProjectileTypes += flux_cannon_thresher_projectile
flux_cannon_thresher.FireModes += new FireModeDefinition
flux_cannon_thresher.FireModes.head.AmmoTypeIndices += 0
flux_cannon_thresher.FireModes.head.AmmoSlotIndex = 0
flux_cannon_thresher.FireModes.head.Magazine = 100
mediumtransport_weapon_systemA.Name = "mediumtransport_weapon_systemA"
mediumtransport_weapon_systemA.Size = EquipmentSize.VehicleWeapon
mediumtransport_weapon_systemA.AmmoTypes += bullet_20mm
mediumtransport_weapon_systemA.ProjectileTypes += bullet_20mm_projectile
mediumtransport_weapon_systemA.FireModes += new FireModeDefinition
mediumtransport_weapon_systemA.FireModes.head.AmmoTypeIndices += 0
mediumtransport_weapon_systemA.FireModes.head.AmmoSlotIndex = 0
mediumtransport_weapon_systemA.FireModes.head.Magazine = 150
mediumtransport_weapon_systemB.Name = "mediumtransport_weapon_systemB"
mediumtransport_weapon_systemB.Size = EquipmentSize.VehicleWeapon
mediumtransport_weapon_systemB.AmmoTypes += bullet_20mm
mediumtransport_weapon_systemB.ProjectileTypes += bullet_20mm_projectile
mediumtransport_weapon_systemB.FireModes += new FireModeDefinition
mediumtransport_weapon_systemB.FireModes.head.AmmoTypeIndices += 0
mediumtransport_weapon_systemB.FireModes.head.AmmoSlotIndex = 0
mediumtransport_weapon_systemB.FireModes.head.Magazine = 150
battlewagon_weapon_systema.Name = "battlewagon_weapon_systema"
battlewagon_weapon_systema.Size = EquipmentSize.VehicleWeapon
battlewagon_weapon_systema.AmmoTypes += bullet_15mm
battlewagon_weapon_systema.ProjectileTypes += bullet_15mm_projectile
battlewagon_weapon_systema.FireModes += new FireModeDefinition
battlewagon_weapon_systema.FireModes.head.AmmoTypeIndices += 0
battlewagon_weapon_systema.FireModes.head.AmmoSlotIndex = 0
battlewagon_weapon_systema.FireModes.head.Magazine = 240
battlewagon_weapon_systemb.Name = "battlewagon_weapon_systemb"
battlewagon_weapon_systemb.Size = EquipmentSize.VehicleWeapon
battlewagon_weapon_systemb.AmmoTypes += bullet_15mm
battlewagon_weapon_systemb.ProjectileTypes += bullet_15mm_projectile
battlewagon_weapon_systemb.FireModes += new FireModeDefinition
battlewagon_weapon_systemb.FireModes.head.AmmoTypeIndices += 0
battlewagon_weapon_systemb.FireModes.head.AmmoSlotIndex = 0
battlewagon_weapon_systemb.FireModes.head.Magazine = 240
battlewagon_weapon_systemc.Name = "battlewagon_weapon_systemc"
battlewagon_weapon_systemc.Size = EquipmentSize.VehicleWeapon
battlewagon_weapon_systemc.AmmoTypes += bullet_15mm
battlewagon_weapon_systemc.ProjectileTypes += bullet_15mm_projectile
battlewagon_weapon_systemc.FireModes += new FireModeDefinition
battlewagon_weapon_systemc.FireModes.head.AmmoTypeIndices += 0
battlewagon_weapon_systemc.FireModes.head.AmmoSlotIndex = 0
battlewagon_weapon_systemc.FireModes.head.Magazine = 240
battlewagon_weapon_systemd.Name = "battlewagon_weapon_systemd"
battlewagon_weapon_systemd.Size = EquipmentSize.VehicleWeapon
battlewagon_weapon_systemd.AmmoTypes += bullet_15mm
battlewagon_weapon_systemd.ProjectileTypes += bullet_15mm_projectile
battlewagon_weapon_systemd.FireModes += new FireModeDefinition
battlewagon_weapon_systemd.FireModes.head.AmmoTypeIndices += 0
battlewagon_weapon_systemd.FireModes.head.AmmoSlotIndex = 0
battlewagon_weapon_systemd.FireModes.head.Magazine = 240
thunderer_weapon_systema.Name = "thunderer_weapon_systema"
thunderer_weapon_systema.Size = EquipmentSize.VehicleWeapon
thunderer_weapon_systema.AmmoTypes += gauss_cannon_ammo
thunderer_weapon_systema.ProjectileTypes += gauss_cannon_projectile
thunderer_weapon_systema.FireModes += new FireModeDefinition
thunderer_weapon_systema.FireModes.head.AmmoTypeIndices += 0
thunderer_weapon_systema.FireModes.head.AmmoSlotIndex = 0
thunderer_weapon_systema.FireModes.head.Magazine = 15
thunderer_weapon_systemb.Name = "thunderer_weapon_systemb"
thunderer_weapon_systemb.Size = EquipmentSize.VehicleWeapon
thunderer_weapon_systemb.AmmoTypes += gauss_cannon_ammo
thunderer_weapon_systemb.ProjectileTypes += gauss_cannon_projectile
thunderer_weapon_systemb.FireModes += new FireModeDefinition
thunderer_weapon_systemb.FireModes.head.AmmoTypeIndices += 0
thunderer_weapon_systemb.FireModes.head.AmmoSlotIndex = 0
thunderer_weapon_systemb.FireModes.head.Magazine = 15
aurora_weapon_systema.Name = "aurora_weapon_systema"
aurora_weapon_systema.Size = EquipmentSize.VehicleWeapon
aurora_weapon_systema.AmmoTypes += fluxpod_ammo
aurora_weapon_systema.ProjectileTypes += fluxpod_projectile
aurora_weapon_systema.FireModes += new FireModeDefinition
aurora_weapon_systema.FireModes.head.AmmoTypeIndices += 0
aurora_weapon_systema.FireModes.head.AmmoSlotIndex = 0
aurora_weapon_systema.FireModes.head.Magazine = 12
aurora_weapon_systema.FireModes += new FireModeDefinition
aurora_weapon_systema.FireModes(1).AmmoTypeIndices += 0
aurora_weapon_systema.FireModes(1).AmmoSlotIndex = 0
aurora_weapon_systema.FireModes(1).Magazine = 12
aurora_weapon_systemb.Name = "aurora_weapon_systemb"
aurora_weapon_systemb.Size = EquipmentSize.VehicleWeapon
aurora_weapon_systemb.AmmoTypes += fluxpod_ammo
aurora_weapon_systemb.ProjectileTypes += fluxpod_projectile
aurora_weapon_systemb.FireModes += new FireModeDefinition
aurora_weapon_systemb.FireModes.head.AmmoTypeIndices += 0
aurora_weapon_systemb.FireModes.head.AmmoSlotIndex = 0
aurora_weapon_systemb.FireModes.head.Magazine = 12
aurora_weapon_systemb.FireModes += new FireModeDefinition
aurora_weapon_systemb.FireModes(1).AmmoTypeIndices += 0
aurora_weapon_systemb.FireModes(1).AmmoSlotIndex = 0
aurora_weapon_systemb.FireModes(1).Magazine = 12
apc_weapon_systema.Name = "apc_weapon_systema"
apc_weapon_systema.Size = EquipmentSize.VehicleWeapon
apc_weapon_systema.AmmoTypes += bullet_75mm
apc_weapon_systema.ProjectileTypes += bullet_75mm_apc_projectile
apc_weapon_systema.FireModes += new FireModeDefinition
apc_weapon_systema.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systema.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systema.FireModes.head.Magazine = 50
apc_weapon_systemb.Name = "apc_weapon_systemb"
apc_weapon_systemb.Size = EquipmentSize.VehicleWeapon
apc_weapon_systemb.AmmoTypes += bullet_75mm
apc_weapon_systemb.ProjectileTypes += bullet_75mm_apc_projectile
apc_weapon_systemb.FireModes += new FireModeDefinition
apc_weapon_systemb.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systemb.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systemb.FireModes.head.Magazine = 50
apc_ballgun_r.Name = "apc_ballgun_r"
apc_ballgun_r.Size = EquipmentSize.VehicleWeapon
apc_ballgun_r.AmmoTypes += bullet_12mm
apc_ballgun_r.ProjectileTypes += bullet_12mm_projectile
apc_ballgun_r.FireModes += new FireModeDefinition
apc_ballgun_r.FireModes.head.AmmoTypeIndices += 0
apc_ballgun_r.FireModes.head.AmmoSlotIndex = 0
apc_ballgun_r.FireModes.head.Magazine = 150
apc_ballgun_l.Name = "apc_ballgun_l"
apc_ballgun_l.Size = EquipmentSize.VehicleWeapon
apc_ballgun_l.AmmoTypes += bullet_12mm
apc_ballgun_l.ProjectileTypes += bullet_12mm_projectile
apc_ballgun_l.FireModes += new FireModeDefinition
apc_ballgun_l.FireModes.head.AmmoTypeIndices += 0
apc_ballgun_l.FireModes.head.AmmoSlotIndex = 0
apc_ballgun_l.FireModes.head.Magazine = 150
apc_weapon_systemc_tr.Name = "apc_weapon_systemc_tr"
apc_weapon_systemc_tr.Size = EquipmentSize.VehicleWeapon
apc_weapon_systemc_tr.AmmoTypes += bullet_15mm
apc_weapon_systemc_tr.ProjectileTypes += bullet_15mm_apc_projectile
apc_weapon_systemc_tr.FireModes += new FireModeDefinition
apc_weapon_systemc_tr.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systemc_tr.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systemc_tr.FireModes.head.Magazine = 150
apc_weapon_systemd_tr.Name = "apc_weapon_systemd_tr"
apc_weapon_systemd_tr.Size = EquipmentSize.VehicleWeapon
apc_weapon_systemd_tr.AmmoTypes += bullet_15mm
apc_weapon_systemd_tr.ProjectileTypes += bullet_15mm_apc_projectile
apc_weapon_systemd_tr.FireModes += new FireModeDefinition
apc_weapon_systemd_tr.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systemd_tr.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systemd_tr.FireModes.head.Magazine = 150
apc_weapon_systemc_nc.Name = "apc_weapon_systemc_nc"
apc_weapon_systemc_nc.Size = EquipmentSize.VehicleWeapon
apc_weapon_systemc_nc.AmmoTypes += bullet_20mm
apc_weapon_systemc_nc.ProjectileTypes += bullet_20mm_apc_projectile
apc_weapon_systemc_nc.FireModes += new FireModeDefinition
apc_weapon_systemc_nc.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systemc_nc.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systemc_nc.FireModes.head.Magazine = 150
apc_weapon_systemd_nc.Name = "apc_weapon_systemd_nc"
apc_weapon_systemd_nc.Size = EquipmentSize.VehicleWeapon
apc_weapon_systemd_nc.AmmoTypes += bullet_20mm
apc_weapon_systemd_nc.ProjectileTypes += bullet_20mm_apc_projectile
apc_weapon_systemd_nc.FireModes += new FireModeDefinition
apc_weapon_systemd_nc.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systemd_nc.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systemd_nc.FireModes.head.Magazine = 150
apc_weapon_systemc_vs.Name = "apc_weapon_systemc_vs"
apc_weapon_systemc_vs.Size = EquipmentSize.VehicleWeapon
apc_weapon_systemc_vs.AmmoTypes += flux_cannon_thresher_battery
apc_weapon_systemc_vs.ProjectileTypes += flux_cannon_apc_projectile
apc_weapon_systemc_vs.FireModes += new FireModeDefinition
apc_weapon_systemc_vs.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systemc_vs.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systemc_vs.FireModes.head.Magazine = 100
apc_weapon_systemd_vs.Name = "apc_weapon_systemd_vs"
apc_weapon_systemd_vs.Size = EquipmentSize.VehicleWeapon
apc_weapon_systemd_vs.AmmoTypes += flux_cannon_thresher_battery
apc_weapon_systemd_vs.ProjectileTypes += flux_cannon_apc_projectile
apc_weapon_systemd_vs.FireModes += new FireModeDefinition
apc_weapon_systemd_vs.FireModes.head.AmmoTypeIndices += 0
apc_weapon_systemd_vs.FireModes.head.AmmoSlotIndex = 0
apc_weapon_systemd_vs.FireModes.head.Magazine = 100
lightning_weapon_system.Name = "lightning_weapon_system"
lightning_weapon_system.Size = EquipmentSize.VehicleWeapon
lightning_weapon_system.AmmoTypes += bullet_75mm
lightning_weapon_system.AmmoTypes += bullet_12mm
lightning_weapon_system.ProjectileTypes += bullet_75mm_projectile
lightning_weapon_system.ProjectileTypes += bullet_12mm_projectile
lightning_weapon_system.FireModes += new FireModeDefinition
lightning_weapon_system.FireModes.head.AmmoTypeIndices += 0
lightning_weapon_system.FireModes.head.AmmoSlotIndex = 0
lightning_weapon_system.FireModes.head.Magazine = 20
lightning_weapon_system.FireModes += new FireModeDefinition
lightning_weapon_system.FireModes(1).AmmoTypeIndices += 1
lightning_weapon_system.FireModes(1).AmmoSlotIndex = 1
lightning_weapon_system.FireModes(1).Magazine = 150
prowler_weapon_systemA.Name = "prowler_weapon_systemA"
prowler_weapon_systemA.Size = EquipmentSize.VehicleWeapon
prowler_weapon_systemA.AmmoTypes += bullet_105mm
prowler_weapon_systemA.ProjectileTypes += bullet_105mm_projectile
prowler_weapon_systemA.FireModes += new FireModeDefinition
prowler_weapon_systemA.FireModes.head.AmmoTypeIndices += 0
prowler_weapon_systemA.FireModes.head.AmmoSlotIndex = 0
prowler_weapon_systemA.FireModes.head.Magazine = 20
prowler_weapon_systemB.Name = "prowler_weapon_systemB"
prowler_weapon_systemB.Size = EquipmentSize.VehicleWeapon
prowler_weapon_systemB.AmmoTypes += bullet_15mm
prowler_weapon_systemB.ProjectileTypes += bullet_15mm_projectile
prowler_weapon_systemB.FireModes += new FireModeDefinition
prowler_weapon_systemB.FireModes.head.AmmoTypeIndices += 0
prowler_weapon_systemB.FireModes.head.AmmoSlotIndex = 0
prowler_weapon_systemB.FireModes.head.Magazine = 240
vanguard_weapon_system.Name = "vanguard_weapon_system"
vanguard_weapon_system.Size = EquipmentSize.VehicleWeapon
vanguard_weapon_system.AmmoTypes += bullet_150mm
vanguard_weapon_system.AmmoTypes += bullet_20mm
vanguard_weapon_system.ProjectileTypes += bullet_150mm_projectile
vanguard_weapon_system.ProjectileTypes += bullet_20mm_projectile
vanguard_weapon_system.FireModes += new FireModeDefinition
vanguard_weapon_system.FireModes.head.AmmoTypeIndices += 0
vanguard_weapon_system.FireModes.head.AmmoSlotIndex = 0
vanguard_weapon_system.FireModes.head.Magazine = 10
vanguard_weapon_system.FireModes += new FireModeDefinition
vanguard_weapon_system.FireModes(1).AmmoTypeIndices += 1
vanguard_weapon_system.FireModes(1).AmmoSlotIndex = 1
vanguard_weapon_system.FireModes(1).Magazine = 200
particle_beam_magrider.Name = "particle_beam_magrider"
particle_beam_magrider.Size = EquipmentSize.VehicleWeapon
particle_beam_magrider.AmmoTypes += pulse_battery
particle_beam_magrider.ProjectileTypes += ppa_projectile
particle_beam_magrider.FireModes += new FireModeDefinition
particle_beam_magrider.FireModes.head.AmmoTypeIndices += 0
particle_beam_magrider.FireModes.head.AmmoSlotIndex = 0
particle_beam_magrider.FireModes.head.Magazine = 150
heavy_rail_beam_magrider.Name = "heavy_rail_beam_magrider"
heavy_rail_beam_magrider.Size = EquipmentSize.VehicleWeapon
heavy_rail_beam_magrider.AmmoTypes += heavy_rail_beam_battery
heavy_rail_beam_magrider.ProjectileTypes += heavy_rail_beam_projectile
heavy_rail_beam_magrider.FireModes += new FireModeDefinition
heavy_rail_beam_magrider.FireModes.head.AmmoTypeIndices += 0
heavy_rail_beam_magrider.FireModes.head.AmmoSlotIndex = 0
heavy_rail_beam_magrider.FireModes.head.Magazine = 25
flail_weapon.Name = "flail_weapon"
flail_weapon.Size = EquipmentSize.VehicleWeapon
flail_weapon.AmmoTypes += ancient_ammo_vehicle
flail_weapon.ProjectileTypes += flail_projectile
flail_weapon.FireModes += new FireModeDefinition
flail_weapon.FireModes.head.AmmoTypeIndices += 0
flail_weapon.FireModes.head.AmmoSlotIndex = 0
flail_weapon.FireModes.head.Magazine = 100
rotarychaingun_mosquito.Name = "rotarychaingun_mosquito"
rotarychaingun_mosquito.Size = EquipmentSize.VehicleWeapon
rotarychaingun_mosquito.AmmoTypes += bullet_12mm
rotarychaingun_mosquito.ProjectileTypes += bullet_12mm_projectile
rotarychaingun_mosquito.FireModes += new FireModeDefinition
rotarychaingun_mosquito.FireModes.head.AmmoTypeIndices += 0
rotarychaingun_mosquito.FireModes.head.AmmoSlotIndex = 0
rotarychaingun_mosquito.FireModes.head.Magazine = 150
lightgunship_weapon_system.Name = "lightgunship_weapon_system"
lightgunship_weapon_system.Size = EquipmentSize.VehicleWeapon
lightgunship_weapon_system.AmmoTypes += bullet_20mm
lightgunship_weapon_system.AmmoTypes += reaver_rocket
lightgunship_weapon_system.ProjectileTypes += bullet_20mm_projectile
lightgunship_weapon_system.ProjectileTypes += reaver_rocket_projectile
lightgunship_weapon_system.FireModes += new FireModeDefinition
lightgunship_weapon_system.FireModes.head.AmmoTypeIndices += 0
lightgunship_weapon_system.FireModes.head.AmmoSlotIndex = 0
lightgunship_weapon_system.FireModes.head.Magazine = 245
lightgunship_weapon_system.FireModes += new FireModeDefinition
lightgunship_weapon_system.FireModes(1).AmmoTypeIndices += 1
lightgunship_weapon_system.FireModes(1).AmmoSlotIndex = 1
lightgunship_weapon_system.FireModes(1).Magazine = 16
wasp_weapon_system.Name = "wasp_weapon_system"
wasp_weapon_system.Size = EquipmentSize.VehicleWeapon
wasp_weapon_system.AmmoTypes += wasp_gun_ammo
wasp_weapon_system.AmmoTypes += wasp_rocket_ammo
wasp_weapon_system.ProjectileTypes += wasp_gun_projectile
wasp_weapon_system.ProjectileTypes += wasp_rocket_projectile
wasp_weapon_system.FireModes += new FireModeDefinition
wasp_weapon_system.FireModes.head.AmmoTypeIndices += 0
wasp_weapon_system.FireModes.head.AmmoSlotIndex = 0
wasp_weapon_system.FireModes.head.Magazine = 30
wasp_weapon_system.FireModes += new FireModeDefinition
wasp_weapon_system.FireModes(1).AmmoTypeIndices += 1
wasp_weapon_system.FireModes(1).AmmoSlotIndex = 1
wasp_weapon_system.FireModes(1).Magazine = 2
liberator_weapon_system.Name = "liberator_weapon_system"
liberator_weapon_system.Size = EquipmentSize.VehicleWeapon
liberator_weapon_system.AmmoTypes += bullet_35mm
liberator_weapon_system.ProjectileTypes += bullet_35mm_projectile
liberator_weapon_system.FireModes += new FireModeDefinition
liberator_weapon_system.FireModes.head.AmmoTypeIndices += 0
liberator_weapon_system.FireModes.head.AmmoSlotIndex = 0
liberator_weapon_system.FireModes.head.Magazine = 100
liberator_bomb_bay.Name = "liberator_bomb_bay"
liberator_bomb_bay.Size = EquipmentSize.VehicleWeapon
liberator_bomb_bay.AmmoTypes += liberator_bomb
liberator_bomb_bay.ProjectileTypes += liberator_bomb_projectile
liberator_bomb_bay.ProjectileTypes += liberator_bomb_cluster_projectile
liberator_bomb_bay.FireModes += new FireModeDefinition
liberator_bomb_bay.FireModes.head.AmmoTypeIndices += 0
liberator_bomb_bay.FireModes.head.AmmoSlotIndex = 0
liberator_bomb_bay.FireModes.head.Magazine = 10
liberator_bomb_bay.FireModes += new FireModeDefinition
liberator_bomb_bay.FireModes(1).AmmoTypeIndices += 0
liberator_bomb_bay.FireModes(1).ProjectileTypeIndices += 1
liberator_bomb_bay.FireModes(1).AmmoSlotIndex = 0
liberator_bomb_bay.FireModes(1).Magazine = 10
liberator_25mm_cannon.Name = "liberator_25mm_cannon"
liberator_25mm_cannon.Size = EquipmentSize.VehicleWeapon
liberator_25mm_cannon.AmmoTypes += bullet_25mm
liberator_25mm_cannon.ProjectileTypes += bullet_25mm_projectile
liberator_25mm_cannon.FireModes += new FireModeDefinition
liberator_25mm_cannon.FireModes.head.AmmoTypeIndices += 0
liberator_25mm_cannon.FireModes.head.AmmoSlotIndex = 0
liberator_25mm_cannon.FireModes.head.Magazine = 150
vulture_nose_weapon_system.Name = "vulture_nose_weapon_system"
vulture_nose_weapon_system.Size = EquipmentSize.VehicleWeapon
vulture_nose_weapon_system.AmmoTypes += bullet_35mm
vulture_nose_weapon_system.ProjectileTypes += vulture_nose_bullet_projectile
vulture_nose_weapon_system.FireModes += new FireModeDefinition
vulture_nose_weapon_system.FireModes.head.AmmoTypeIndices += 0
vulture_nose_weapon_system.FireModes.head.AmmoSlotIndex = 0
vulture_nose_weapon_system.FireModes.head.Magazine = 75
vulture_bomb_bay.Name = "vulture_bomb_bay"
vulture_bomb_bay.Size = EquipmentSize.VehicleWeapon
vulture_bomb_bay.AmmoTypes += liberator_bomb
vulture_bomb_bay.ProjectileTypes += vulture_bomb_projectile
vulture_bomb_bay.FireModes += new FireModeDefinition
vulture_bomb_bay.FireModes.head.AmmoTypeIndices += 0
vulture_bomb_bay.FireModes.head.AmmoSlotIndex = 0
vulture_bomb_bay.FireModes.head.Magazine = 10
vulture_tail_cannon.Name = "vulture_tail_cannon"
vulture_tail_cannon.Size = EquipmentSize.VehicleWeapon
vulture_tail_cannon.AmmoTypes += bullet_25mm
vulture_tail_cannon.ProjectileTypes += vulture_tail_bullet_projectile
vulture_tail_cannon.FireModes += new FireModeDefinition
vulture_tail_cannon.FireModes.head.AmmoTypeIndices += 0
vulture_tail_cannon.FireModes.head.AmmoSlotIndex = 0
vulture_tail_cannon.FireModes.head.Magazine = 100
cannon_dropship_20mm.Name = "cannon_dropship_20mm"
cannon_dropship_20mm.Size = EquipmentSize.VehicleWeapon
cannon_dropship_20mm.AmmoTypes += bullet_20mm
cannon_dropship_20mm.ProjectileTypes += bullet_20mm_projectile
cannon_dropship_20mm.FireModes += new FireModeDefinition
cannon_dropship_20mm.FireModes.head.AmmoTypeIndices += 0
cannon_dropship_20mm.FireModes.head.AmmoSlotIndex = 0
cannon_dropship_20mm.FireModes.head.Magazine = 250
dropship_rear_turret.Name = "dropship_rear_turret"
dropship_rear_turret.Size = EquipmentSize.VehicleWeapon
dropship_rear_turret.AmmoTypes += bullet_20mm
dropship_rear_turret.ProjectileTypes += bullet_20mm_projectile
dropship_rear_turret.FireModes += new FireModeDefinition
dropship_rear_turret.FireModes.head.AmmoTypeIndices += 0
dropship_rear_turret.FireModes.head.AmmoSlotIndex = 0
dropship_rear_turret.FireModes.head.Magazine = 250
galaxy_gunship_cannon.Name = "galaxy_gunship_cannon"
galaxy_gunship_cannon.Size = EquipmentSize.VehicleWeapon
galaxy_gunship_cannon.AmmoTypes += heavy_grenade_mortar
galaxy_gunship_cannon.ProjectileTypes += heavy_grenade_projectile
galaxy_gunship_cannon.FireModes += new FireModeDefinition
galaxy_gunship_cannon.FireModes.head.AmmoTypeIndices += 0
galaxy_gunship_cannon.FireModes.head.AmmoSlotIndex = 0
galaxy_gunship_cannon.FireModes.head.Magazine = 50
galaxy_gunship_cannon.FireModes.head.Add.Damage1 = 50
galaxy_gunship_cannon.FireModes.head.Add.Damage2 = 50
galaxy_gunship_cannon.FireModes.head.Add.Damage3 = 10
galaxy_gunship_cannon.FireModes.head.Add.Damage4 = 50
galaxy_gunship_tailgun.Name = "galaxy_gunship_tailgun"
galaxy_gunship_tailgun.Size = EquipmentSize.VehicleWeapon
galaxy_gunship_tailgun.AmmoTypes += bullet_35mm
galaxy_gunship_tailgun.ProjectileTypes += galaxy_gunship_gun_projectile
galaxy_gunship_tailgun.FireModes += new FireModeDefinition
galaxy_gunship_tailgun.FireModes.head.AmmoTypeIndices += 0
galaxy_gunship_tailgun.FireModes.head.AmmoSlotIndex = 0
galaxy_gunship_tailgun.FireModes.head.Magazine = 200
galaxy_gunship_gun.Name = "galaxy_gunship_gun"
galaxy_gunship_gun.Size = EquipmentSize.VehicleWeapon
galaxy_gunship_gun.AmmoTypes += bullet_35mm
galaxy_gunship_gun.ProjectileTypes += galaxy_gunship_gun_projectile
galaxy_gunship_gun.FireModes += new FireModeDefinition
galaxy_gunship_gun.FireModes.head.AmmoTypeIndices += 0
galaxy_gunship_gun.FireModes.head.AmmoSlotIndex = 0
galaxy_gunship_gun.FireModes.head.Magazine = 200
phalanx_sgl_hevgatcan.Name = "phalanx_sgl_hevgatcan"
phalanx_sgl_hevgatcan.Size = EquipmentSize.BaseTurretWeapon
phalanx_sgl_hevgatcan.AmmoTypes += phalanx_ammo
phalanx_sgl_hevgatcan.ProjectileTypes += phalanx_projectile
phalanx_sgl_hevgatcan.FireModes += new InfiniteFireModeDefinition
phalanx_sgl_hevgatcan.FireModes.head.AmmoTypeIndices += 0
phalanx_sgl_hevgatcan.FireModes.head.AmmoSlotIndex = 0
phalanx_sgl_hevgatcan.FireModes.head.Magazine = 4000
phalanx_avcombo.Name = "phalanx_avcombo"
phalanx_avcombo.Size = EquipmentSize.BaseTurretWeapon
phalanx_avcombo.AmmoTypes += phalanx_ammo
phalanx_avcombo.ProjectileTypes += phalanx_projectile
phalanx_avcombo.ProjectileTypes += phalanx_av_projectile
phalanx_avcombo.FireModes += new InfiniteFireModeDefinition
phalanx_avcombo.FireModes.head.AmmoTypeIndices += 0
phalanx_avcombo.FireModes.head.AmmoSlotIndex = 0
phalanx_avcombo.FireModes.head.Magazine = 4000
phalanx_avcombo.FireModes += new InfiniteFireModeDefinition
phalanx_avcombo.FireModes(1).AmmoTypeIndices += 0
phalanx_avcombo.FireModes(1).ProjectileTypeIndices += 1
phalanx_avcombo.FireModes(1).AmmoSlotIndex = 0
phalanx_avcombo.FireModes(1).Magazine = 4000
phalanx_flakcombo.Name = "phalanx_flakcombo"
phalanx_flakcombo.Size = EquipmentSize.BaseTurretWeapon
phalanx_flakcombo.AmmoTypes += phalanx_ammo
phalanx_flakcombo.ProjectileTypes += phalanx_projectile
phalanx_flakcombo.ProjectileTypes += phalanx_flak_projectile
phalanx_flakcombo.FireModes += new InfiniteFireModeDefinition
phalanx_flakcombo.FireModes.head.AmmoTypeIndices += 0
phalanx_flakcombo.FireModes.head.AmmoSlotIndex = 0
phalanx_flakcombo.FireModes.head.Magazine = 4000
phalanx_flakcombo.FireModes += new InfiniteFireModeDefinition
phalanx_flakcombo.FireModes(1).AmmoTypeIndices += 0
phalanx_flakcombo.FireModes(1).ProjectileTypeIndices += 1
phalanx_flakcombo.FireModes(1).AmmoSlotIndex = 0
phalanx_flakcombo.FireModes(1).Magazine = 4000
vanu_sentry_turret_weapon.Name = "vanu_sentry_turret_weapon"
vanu_sentry_turret_weapon.Size = EquipmentSize.BaseTurretWeapon
vanu_sentry_turret_weapon.AmmoTypes += ancient_ammo_vehicle
vanu_sentry_turret_weapon.ProjectileTypes += vanu_sentry_turret_projectile
vanu_sentry_turret_weapon.FireModes += new FireModeDefinition
vanu_sentry_turret_weapon.FireModes.head.AmmoTypeIndices += 0
vanu_sentry_turret_weapon.FireModes.head.AmmoSlotIndex = 0
vanu_sentry_turret_weapon.FireModes.head.Magazine = 100
spitfire_weapon.Name = "spitfire_weapon"
spitfire_weapon.Size = EquipmentSize.BaseTurretWeapon
spitfire_weapon.AmmoTypes += spitfire_ammo
spitfire_weapon.ProjectileTypes += spitfire_ammo_projectile
spitfire_weapon.FireModes += new InfiniteFireModeDefinition
spitfire_weapon.FireModes.head.AmmoTypeIndices += 0
spitfire_weapon.FireModes.head.AmmoSlotIndex = 0
spitfire_weapon.FireModes.head.Magazine = 4000
spitfire_aa_weapon.Name = "spitfire_aa_weapon"
spitfire_aa_weapon.Size = EquipmentSize.BaseTurretWeapon
spitfire_aa_weapon.AmmoTypes += spitfire_aa_ammo
spitfire_aa_weapon.ProjectileTypes += spitfire_aa_ammo_projectile
spitfire_aa_weapon.FireModes += new InfiniteFireModeDefinition
spitfire_aa_weapon.FireModes.head.AmmoTypeIndices += 0
spitfire_aa_weapon.FireModes.head.AmmoSlotIndex = 0
spitfire_aa_weapon.FireModes.head.Magazine = 4000
energy_gun.Name = "energy_gun"
energy_gun.Size = EquipmentSize.BaseTurretWeapon
energy_gun.AmmoTypes += energy_gun_ammo
energy_gun.ProjectileTypes += bullet_9mm_projectile //fallback
energy_gun.FireModes += new FireModeDefinition
energy_gun.FireModes.head.AmmoTypeIndices += 0
energy_gun.FireModes.head.AmmoSlotIndex = 0
energy_gun.FireModes.head.Magazine = 4000
energy_gun_nc.Name = "energy_gun_nc"
energy_gun_nc.Size = EquipmentSize.BaseTurretWeapon
energy_gun_nc.AmmoTypes += energy_gun_ammo
energy_gun_nc.ProjectileTypes += energy_gun_nc_projectile
energy_gun_nc.FireModes += new PelletFireModeDefinition
energy_gun_nc.FireModes.head.AmmoTypeIndices += 0
energy_gun_nc.FireModes.head.AmmoSlotIndex = 0
energy_gun_nc.FireModes.head.Magazine = 35
energy_gun_nc.FireModes.head.Chamber = 8 //35 shots * 8 pellets = 280
energy_gun_tr.Name = "energy_gun_tr"
energy_gun_tr.Size = EquipmentSize.BaseTurretWeapon
energy_gun_tr.AmmoTypes += energy_gun_ammo
energy_gun_tr.ProjectileTypes += energy_gun_tr_projectile
energy_gun_tr.FireModes += new FireModeDefinition
energy_gun_tr.FireModes.head.AmmoTypeIndices += 0
energy_gun_tr.FireModes.head.AmmoSlotIndex = 0
energy_gun_tr.FireModes.head.Magazine = 200
energy_gun_vs.Name = "energy_gun_vs"
energy_gun_vs.Size = EquipmentSize.BaseTurretWeapon
energy_gun_vs.AmmoTypes += energy_gun_ammo
energy_gun_vs.ProjectileTypes += energy_gun_tr_projectile
energy_gun_vs.FireModes += new FireModeDefinition
energy_gun_vs.FireModes.head.AmmoTypeIndices += 0
energy_gun_vs.FireModes.head.AmmoSlotIndex = 0
energy_gun_vs.FireModes.head.Magazine = 100
val battleFrameToolConverter = new BattleFrameToolConverter
aphelion_armor_siphon.Name = "aphelion_armor_siphon"
aphelion_armor_siphon.Size = EquipmentSize.BFRArmWeapon
aphelion_armor_siphon.AmmoTypes += armor_siphon_ammo
aphelion_armor_siphon.ProjectileTypes += armor_siphon_projectile
aphelion_armor_siphon.FireModes += new FireModeDefinition
aphelion_armor_siphon.FireModes.head.AmmoTypeIndices += 0
aphelion_armor_siphon.FireModes.head.AmmoSlotIndex = 0
aphelion_armor_siphon.FireModes.head.Magazine = 100
aphelion_armor_siphon.Packet = battleFrameToolConverter
aphelion_armor_siphon.Tile = InventoryTile.Tile84
aphelion_armor_siphon_left.Name = "aphelion_armor_siphon_left"
aphelion_armor_siphon_left.Size = EquipmentSize.BFRArmWeapon
aphelion_armor_siphon_left.AmmoTypes += armor_siphon_ammo
aphelion_armor_siphon_left.ProjectileTypes += armor_siphon_projectile
aphelion_armor_siphon_left.FireModes += new FireModeDefinition
aphelion_armor_siphon_left.FireModes.head.AmmoTypeIndices += 0
aphelion_armor_siphon_left.FireModes.head.AmmoSlotIndex = 0
aphelion_armor_siphon_left.FireModes.head.Magazine = 100
aphelion_armor_siphon_left.Packet = battleFrameToolConverter
aphelion_armor_siphon_left.Tile = InventoryTile.Tile84
aphelion_armor_siphon_right.Name = "aphelion_armor_siphon_right"
aphelion_armor_siphon_right.Size = EquipmentSize.BFRArmWeapon
aphelion_armor_siphon_right.AmmoTypes += armor_siphon_ammo
aphelion_armor_siphon_right.ProjectileTypes += armor_siphon_projectile
aphelion_armor_siphon_right.FireModes += new FireModeDefinition
aphelion_armor_siphon_right.FireModes.head.AmmoTypeIndices += 0
aphelion_armor_siphon_right.FireModes.head.AmmoSlotIndex = 0
aphelion_armor_siphon_right.FireModes.head.Magazine = 100
aphelion_armor_siphon_right.Packet = battleFrameToolConverter
aphelion_armor_siphon_right.Tile = InventoryTile.Tile84
aphelion_laser.Name = "aphelion_laser"
aphelion_laser.Size = EquipmentSize.BFRArmWeapon
aphelion_laser.AmmoTypes += aphelion_laser_ammo
aphelion_laser.ProjectileTypes += aphelion_laser_projectile
aphelion_laser.FireModes += new FireModeDefinition
aphelion_laser.FireModes.head.AmmoTypeIndices += 0
aphelion_laser.FireModes.head.AmmoSlotIndex = 0
aphelion_laser.FireModes.head.Magazine = 350
aphelion_laser.Packet = battleFrameToolConverter
aphelion_laser.Tile = InventoryTile.Tile84
aphelion_laser_left.Name = "aphelion_laser_left"
aphelion_laser_left.Size = EquipmentSize.BFRArmWeapon
aphelion_laser_left.AmmoTypes += aphelion_laser_ammo
aphelion_laser_left.ProjectileTypes += aphelion_laser_projectile
aphelion_laser_left.FireModes += new FireModeDefinition
aphelion_laser_left.FireModes.head.AmmoTypeIndices += 0
aphelion_laser_left.FireModes.head.AmmoSlotIndex = 0
aphelion_laser_left.FireModes.head.Magazine = 350
aphelion_laser_left.Packet = battleFrameToolConverter
aphelion_laser_left.Tile = InventoryTile.Tile84
aphelion_laser_right.Name = "aphelion_laser_right"
aphelion_laser_right.Size = EquipmentSize.BFRArmWeapon
aphelion_laser_right.AmmoTypes += aphelion_laser_ammo
aphelion_laser_right.ProjectileTypes += aphelion_laser_projectile
aphelion_laser_right.FireModes += new FireModeDefinition
aphelion_laser_right.FireModes.head.AmmoTypeIndices += 0
aphelion_laser_right.FireModes.head.AmmoSlotIndex = 0
aphelion_laser_right.FireModes.head.Magazine = 350
aphelion_laser_right.Packet = battleFrameToolConverter
aphelion_laser_right.Tile = InventoryTile.Tile84
aphelion_ntu_siphon.Name = "aphelion_ntu_siphon"
aphelion_ntu_siphon.Size = EquipmentSize.BFRArmWeapon
aphelion_ntu_siphon.AmmoTypes += ntu_siphon_ammo
aphelion_ntu_siphon.ProjectileTypes += no_projectile
aphelion_ntu_siphon.ProjectileTypes += ntu_siphon_emp
aphelion_ntu_siphon.FireModes += new FireModeDefinition
aphelion_ntu_siphon.FireModes.head.AmmoTypeIndices += 0
aphelion_ntu_siphon.FireModes.head.AmmoSlotIndex = 0
aphelion_ntu_siphon.FireModes.head.RoundsPerShot = 5
aphelion_ntu_siphon.FireModes.head.Magazine = 150
aphelion_ntu_siphon.FireModes.head.DefaultMagazine = 0
aphelion_ntu_siphon.FireModes += new FireModeDefinition
aphelion_ntu_siphon.FireModes(1).AmmoTypeIndices += 0
aphelion_ntu_siphon.FireModes(1).AmmoSlotIndex = 0
aphelion_ntu_siphon.FireModes(1).ProjectileTypeIndices += 1
aphelion_ntu_siphon.FireModes(1).RoundsPerShot = 30
aphelion_ntu_siphon.FireModes(1).Magazine = 150
aphelion_ntu_siphon.FireModes(1).DefaultMagazine = 0
aphelion_ntu_siphon.Packet = battleFrameToolConverter
aphelion_ntu_siphon.Tile = InventoryTile.Tile84
aphelion_ntu_siphon_left.Name = "aphelion_ntu_siphon_left"
aphelion_ntu_siphon_left.Size = EquipmentSize.BFRArmWeapon
aphelion_ntu_siphon_left.AmmoTypes += ntu_siphon_ammo
aphelion_ntu_siphon_left.ProjectileTypes += no_projectile
aphelion_ntu_siphon_left.ProjectileTypes += ntu_siphon_emp
aphelion_ntu_siphon_left.FireModes += new FireModeDefinition
aphelion_ntu_siphon_left.FireModes.head.AmmoTypeIndices += 0
aphelion_ntu_siphon_left.FireModes.head.AmmoSlotIndex = 0
aphelion_ntu_siphon_left.FireModes.head.RoundsPerShot = 5
aphelion_ntu_siphon_left.FireModes.head.Magazine = 150
aphelion_ntu_siphon_left.FireModes.head.DefaultMagazine = 0
aphelion_ntu_siphon_left.FireModes += new FireModeDefinition
aphelion_ntu_siphon_left.FireModes(1).AmmoTypeIndices += 0
aphelion_ntu_siphon_left.FireModes(1).AmmoSlotIndex = 0
aphelion_ntu_siphon_left.FireModes(1).ProjectileTypeIndices += 1
aphelion_ntu_siphon_left.FireModes(1).RoundsPerShot = 30
aphelion_ntu_siphon_left.FireModes(1).Magazine = 150
aphelion_ntu_siphon_left.FireModes(1).DefaultMagazine = 0
aphelion_ntu_siphon_left.Packet = battleFrameToolConverter
aphelion_ntu_siphon_left.Tile = InventoryTile.Tile84
aphelion_ntu_siphon_right.Name = "aphelion_ntu_siphon_right"
aphelion_ntu_siphon_right.Size = EquipmentSize.BFRArmWeapon
aphelion_ntu_siphon_right.AmmoTypes += ntu_siphon_ammo
aphelion_ntu_siphon_right.ProjectileTypes += no_projectile
aphelion_ntu_siphon_right.ProjectileTypes += ntu_siphon_emp
aphelion_ntu_siphon_right.FireModes += new FireModeDefinition
aphelion_ntu_siphon_right.FireModes.head.AmmoTypeIndices += 0
aphelion_ntu_siphon_right.FireModes.head.AmmoSlotIndex = 0
aphelion_ntu_siphon_right.FireModes.head.RoundsPerShot = 5
aphelion_ntu_siphon_right.FireModes.head.Magazine = 150
aphelion_ntu_siphon_right.FireModes.head.DefaultMagazine = 0
aphelion_ntu_siphon_right.FireModes += new FireModeDefinition
aphelion_ntu_siphon_right.FireModes(1).AmmoTypeIndices += 0
aphelion_ntu_siphon_right.FireModes(1).AmmoSlotIndex = 0
aphelion_ntu_siphon_right.FireModes(1).ProjectileTypeIndices += 1
aphelion_ntu_siphon_right.FireModes(1).RoundsPerShot = 30
aphelion_ntu_siphon_right.FireModes(1).Magazine = 150
aphelion_ntu_siphon_right.FireModes(1).DefaultMagazine = 0
aphelion_ntu_siphon_right.Packet = battleFrameToolConverter
aphelion_ntu_siphon_right.Tile = InventoryTile.Tile84
aphelion_ppa.Name = "aphelion_ppa"
aphelion_ppa.Size = EquipmentSize.BFRArmWeapon
aphelion_ppa.AmmoTypes += aphelion_ppa_ammo
aphelion_ppa.ProjectileTypes += aphelion_ppa_projectile
aphelion_ppa.FireModes += new FireModeDefinition
aphelion_ppa.FireModes.head.AmmoTypeIndices += 0
aphelion_ppa.FireModes.head.AmmoSlotIndex = 0
aphelion_ppa.FireModes.head.Magazine = 25
aphelion_ppa.Packet = battleFrameToolConverter
aphelion_ppa.Tile = InventoryTile.Tile84
aphelion_ppa_left.Name = "aphelion_ppa_left"
aphelion_ppa_left.Size = EquipmentSize.BFRArmWeapon
aphelion_ppa_left.AmmoTypes += aphelion_ppa_ammo
aphelion_ppa_left.ProjectileTypes += aphelion_ppa_projectile
aphelion_ppa_left.FireModes += new FireModeDefinition
aphelion_ppa_left.FireModes.head.AmmoTypeIndices += 0
aphelion_ppa_left.FireModes.head.AmmoSlotIndex = 0
aphelion_ppa_left.FireModes.head.Magazine = 25
aphelion_ppa_left.Packet = battleFrameToolConverter
aphelion_ppa_left.Tile = InventoryTile.Tile84
aphelion_ppa_right.Name = "aphelion_ppa_right"
aphelion_ppa_right.Size = EquipmentSize.BFRArmWeapon
aphelion_ppa_right.AmmoTypes += aphelion_ppa_ammo
aphelion_ppa_right.ProjectileTypes += aphelion_ppa_projectile
aphelion_ppa_right.FireModes += new FireModeDefinition
aphelion_ppa_right.FireModes.head.AmmoTypeIndices += 0
aphelion_ppa_right.FireModes.head.AmmoSlotIndex = 0
aphelion_ppa_right.FireModes.head.Magazine = 25
aphelion_ppa_right.Packet = battleFrameToolConverter
aphelion_ppa_right.Tile = InventoryTile.Tile84
aphelion_starfire.Name = "aphelion_starfire"
aphelion_starfire.Size = EquipmentSize.BFRArmWeapon
aphelion_starfire.AmmoTypes += aphelion_starfire_ammo
aphelion_starfire.ProjectileTypes += aphelion_starfire_projectile
aphelion_starfire.FireModes += new FireModeDefinition
aphelion_starfire.FireModes.head.AmmoTypeIndices += 0
aphelion_starfire.FireModes.head.AmmoSlotIndex = 0
aphelion_starfire.FireModes.head.Magazine = 20
aphelion_starfire.Packet = battleFrameToolConverter
aphelion_starfire.Tile = InventoryTile.Tile84
aphelion_starfire_left.Name = "aphelion_starfire_left"
aphelion_starfire_left.Size = EquipmentSize.BFRArmWeapon
aphelion_starfire_left.AmmoTypes += aphelion_starfire_ammo
aphelion_starfire_left.ProjectileTypes += aphelion_starfire_projectile
aphelion_starfire_left.FireModes += new FireModeDefinition
aphelion_starfire_left.FireModes.head.AmmoTypeIndices += 0
aphelion_starfire_left.FireModes.head.AmmoSlotIndex = 0
aphelion_starfire_left.FireModes.head.Magazine = 20
aphelion_starfire_left.Packet = battleFrameToolConverter
aphelion_starfire_left.Tile = InventoryTile.Tile84
aphelion_starfire_right.Name = "aphelion_starfire_right"
aphelion_starfire_right.Size = EquipmentSize.BFRArmWeapon
aphelion_starfire_right.AmmoTypes += aphelion_starfire_ammo
aphelion_starfire_right.ProjectileTypes += aphelion_starfire_projectile
aphelion_starfire_right.FireModes += new FireModeDefinition
aphelion_starfire_right.FireModes.head.AmmoTypeIndices += 0
aphelion_starfire_right.FireModes.head.AmmoSlotIndex = 0
aphelion_starfire_right.FireModes.head.Magazine = 20
aphelion_starfire_right.Packet = battleFrameToolConverter
aphelion_starfire_right.Tile = InventoryTile.Tile84
aphelion_plasma_rocket_pod.Name = "aphelion_plasma_rocket_pod"
aphelion_plasma_rocket_pod.Size = EquipmentSize.BFRGunnerWeapon
aphelion_plasma_rocket_pod.AmmoTypes += aphelion_plasma_rocket_ammo
aphelion_plasma_rocket_pod.ProjectileTypes += aphelion_plasma_rocket_projectile
aphelion_plasma_rocket_pod.FireModes += new FireModeDefinition
aphelion_plasma_rocket_pod.FireModes.head.AmmoTypeIndices += 0
aphelion_plasma_rocket_pod.FireModes.head.AmmoSlotIndex = 0
aphelion_plasma_rocket_pod.FireModes.head.Magazine = 40
aphelion_plasma_rocket_pod.Packet = battleFrameToolConverter
aphelion_plasma_rocket_pod.Tile = InventoryTile.Tile1004
aphelion_immolation_cannon.Name = "aphelion_immolation_cannon"
aphelion_immolation_cannon.Size = EquipmentSize.BFRGunnerWeapon
aphelion_immolation_cannon.AmmoTypes += aphelion_immolation_cannon_ammo
aphelion_immolation_cannon.ProjectileTypes += aphelion_immolation_cannon_projectile
aphelion_immolation_cannon.FireModes += new FireModeDefinition
aphelion_immolation_cannon.FireModes.head.AmmoTypeIndices += 0
aphelion_immolation_cannon.FireModes.head.AmmoSlotIndex = 0
aphelion_immolation_cannon.FireModes.head.Magazine = 25
aphelion_immolation_cannon.Packet = battleFrameToolConverter
aphelion_immolation_cannon.Tile = InventoryTile.Tile1004
colossus_armor_siphon.Name = "colossus_armor_siphon"
colossus_armor_siphon.Size = EquipmentSize.BFRArmWeapon
colossus_armor_siphon.AmmoTypes += armor_siphon_ammo
colossus_armor_siphon.ProjectileTypes += armor_siphon_projectile
colossus_armor_siphon.FireModes += new FireModeDefinition
colossus_armor_siphon.FireModes.head.AmmoTypeIndices += 0
colossus_armor_siphon.FireModes.head.AmmoSlotIndex = 0
colossus_armor_siphon.FireModes.head.Magazine = 100
colossus_armor_siphon.Packet = battleFrameToolConverter
colossus_armor_siphon.Tile = InventoryTile.Tile84
colossus_armor_siphon_left.Name = "colossus_armor_siphon_left"
colossus_armor_siphon_left.Size = EquipmentSize.BFRArmWeapon
colossus_armor_siphon_left.AmmoTypes += armor_siphon_ammo
colossus_armor_siphon_left.ProjectileTypes += armor_siphon_projectile
colossus_armor_siphon_left.FireModes += new FireModeDefinition
colossus_armor_siphon_left.FireModes.head.AmmoTypeIndices += 0
colossus_armor_siphon_left.FireModes.head.AmmoSlotIndex = 0
colossus_armor_siphon_left.FireModes.head.Magazine = 100
colossus_armor_siphon_left.Packet = battleFrameToolConverter
colossus_armor_siphon_left.Tile = InventoryTile.Tile84
colossus_armor_siphon_right.Name = "colossus_armor_siphon_right"
colossus_armor_siphon_right.Size = EquipmentSize.BFRArmWeapon
colossus_armor_siphon_right.AmmoTypes += armor_siphon_ammo
colossus_armor_siphon_right.ProjectileTypes += armor_siphon_projectile
colossus_armor_siphon_right.FireModes += new FireModeDefinition
colossus_armor_siphon_right.FireModes.head.AmmoTypeIndices += 0
colossus_armor_siphon_right.FireModes.head.AmmoSlotIndex = 0
colossus_armor_siphon_right.FireModes.head.Magazine = 100
colossus_armor_siphon_right.Packet = battleFrameToolConverter
colossus_armor_siphon_right.Tile = InventoryTile.Tile84
colossus_burster.Name = "colossus_burster"
colossus_burster.Size = EquipmentSize.BFRArmWeapon
colossus_burster.AmmoTypes += colossus_burster_ammo
colossus_burster.ProjectileTypes += colossus_burster_projectile
colossus_burster.FireModes += new FireModeDefinition
colossus_burster.FireModes.head.AmmoTypeIndices += 0
colossus_burster.FireModes.head.AmmoSlotIndex = 0
colossus_burster.FireModes.head.Magazine = 25
colossus_burster.Packet = battleFrameToolConverter
colossus_burster.Tile = InventoryTile.Tile84
colossus_burster_left.Name = "colossus_burster_left"
colossus_burster_left.Size = EquipmentSize.BFRArmWeapon
colossus_burster_left.AmmoTypes += colossus_burster_ammo
colossus_burster_left.ProjectileTypes += colossus_burster_projectile
colossus_burster_left.FireModes += new FireModeDefinition
colossus_burster_left.FireModes.head.AmmoTypeIndices += 0
colossus_burster_left.FireModes.head.AmmoSlotIndex = 0
colossus_burster_left.FireModes.head.Magazine = 25
colossus_burster_left.Packet = battleFrameToolConverter
colossus_burster_left.Tile = InventoryTile.Tile84
colossus_burster_right.Name = "colossus_burster_right"
colossus_burster_right.Size = EquipmentSize.BFRArmWeapon
colossus_burster_right.AmmoTypes += colossus_burster_ammo
colossus_burster_right.ProjectileTypes += colossus_burster_projectile
colossus_burster_right.FireModes += new FireModeDefinition
colossus_burster_right.FireModes.head.AmmoTypeIndices += 0
colossus_burster_right.FireModes.head.AmmoSlotIndex = 0
colossus_burster_right.FireModes.head.Magazine = 25
colossus_burster_right.Packet = battleFrameToolConverter
colossus_burster_right.Tile = InventoryTile.Tile84
colossus_chaingun.Name = "colossus_chaingun"
colossus_chaingun.Size = EquipmentSize.BFRArmWeapon
colossus_chaingun.AmmoTypes += colossus_chaingun_ammo
colossus_chaingun.ProjectileTypes += colossus_chaingun_projectile
colossus_chaingun.FireModes += new FireModeDefinition
colossus_chaingun.FireModes.head.AmmoTypeIndices += 0
colossus_chaingun.FireModes.head.AmmoSlotIndex = 0
colossus_chaingun.FireModes.head.Magazine = 125
colossus_chaingun.Packet = battleFrameToolConverter
colossus_chaingun.Tile = InventoryTile.Tile84
colossus_chaingun_left.Name = "colossus_chaingun_left"
colossus_chaingun_left.Size = EquipmentSize.BFRArmWeapon
colossus_chaingun_left.AmmoTypes += colossus_chaingun_ammo
colossus_chaingun_left.ProjectileTypes += colossus_chaingun_projectile
colossus_chaingun_left.FireModes += new FireModeDefinition
colossus_chaingun_left.FireModes.head.AmmoTypeIndices += 0
colossus_chaingun_left.FireModes.head.AmmoSlotIndex = 0
colossus_chaingun_left.FireModes.head.Magazine = 125
colossus_chaingun_left.Packet = battleFrameToolConverter
colossus_chaingun_left.Tile = InventoryTile.Tile84
colossus_chaingun_right.Name = "colossus_chaingun_right"
colossus_chaingun_right.Size = EquipmentSize.BFRArmWeapon
colossus_chaingun_right.AmmoTypes += colossus_chaingun_ammo
colossus_chaingun_right.ProjectileTypes += colossus_chaingun_projectile
colossus_chaingun_right.FireModes += new FireModeDefinition
colossus_chaingun_right.FireModes.head.AmmoTypeIndices += 0
colossus_chaingun_right.FireModes.head.AmmoSlotIndex = 0
colossus_chaingun_right.FireModes.head.Magazine = 125
colossus_chaingun_right.Packet = battleFrameToolConverter
colossus_chaingun_right.Tile = InventoryTile.Tile84
colossus_ntu_siphon.Name = "colossus_ntu_siphon"
colossus_ntu_siphon.Size = EquipmentSize.BFRArmWeapon
colossus_ntu_siphon.AmmoTypes += ntu_siphon_ammo
colossus_ntu_siphon.ProjectileTypes += no_projectile
colossus_ntu_siphon.ProjectileTypes += ntu_siphon_emp
colossus_ntu_siphon.FireModes += new FireModeDefinition
colossus_ntu_siphon.FireModes.head.AmmoTypeIndices += 0
colossus_ntu_siphon.FireModes.head.AmmoSlotIndex = 0
colossus_ntu_siphon.FireModes.head.RoundsPerShot = 5
colossus_ntu_siphon.FireModes.head.Magazine = 150
colossus_ntu_siphon.FireModes.head.DefaultMagazine = 0
colossus_ntu_siphon.FireModes += new FireModeDefinition
colossus_ntu_siphon.FireModes(1).AmmoTypeIndices += 0
colossus_ntu_siphon.FireModes(1).AmmoSlotIndex = 0
colossus_ntu_siphon.FireModes(1).ProjectileTypeIndices += 1
colossus_ntu_siphon.FireModes(1).RoundsPerShot = 30
colossus_ntu_siphon.FireModes(1).Magazine = 150
colossus_ntu_siphon.FireModes(1).DefaultMagazine = 0
colossus_ntu_siphon.FireModes(1).AmmoSlotIndex = 0
colossus_ntu_siphon.Packet = battleFrameToolConverter
colossus_ntu_siphon.Tile = InventoryTile.Tile84
colossus_ntu_siphon_left.Name = "colossus_ntu_siphon_left"
colossus_ntu_siphon_left.Size = EquipmentSize.BFRArmWeapon
colossus_ntu_siphon_left.AmmoTypes += ntu_siphon_ammo
colossus_ntu_siphon_left.ProjectileTypes += no_projectile
colossus_ntu_siphon_left.ProjectileTypes += ntu_siphon_emp
colossus_ntu_siphon_left.FireModes += new FireModeDefinition
colossus_ntu_siphon_left.FireModes.head.AmmoTypeIndices += 0
colossus_ntu_siphon_left.FireModes.head.AmmoSlotIndex = 0
colossus_ntu_siphon_left.FireModes.head.RoundsPerShot = 5
colossus_ntu_siphon_left.FireModes.head.Magazine = 150
colossus_ntu_siphon_left.FireModes.head.DefaultMagazine = 0
colossus_ntu_siphon_left.FireModes += new FireModeDefinition
colossus_ntu_siphon_left.FireModes(1).AmmoTypeIndices += 0
colossus_ntu_siphon_left.FireModes(1).AmmoSlotIndex = 0
colossus_ntu_siphon_left.FireModes(1).ProjectileTypeIndices += 1
colossus_ntu_siphon_left.FireModes(1).RoundsPerShot = 30
colossus_ntu_siphon_left.FireModes(1).Magazine = 150
colossus_ntu_siphon_left.FireModes(1).DefaultMagazine = 0
colossus_ntu_siphon_left.FireModes(1).AmmoSlotIndex = 0
colossus_ntu_siphon_left.Packet = battleFrameToolConverter
colossus_ntu_siphon_left.Tile = InventoryTile.Tile84
colossus_ntu_siphon_right.Name = "colossus_ntu_siphon_right"
colossus_ntu_siphon_right.Size = EquipmentSize.BFRArmWeapon
colossus_ntu_siphon_right.AmmoTypes += ntu_siphon_ammo
colossus_ntu_siphon_right.ProjectileTypes += no_projectile
colossus_ntu_siphon_right.ProjectileTypes += ntu_siphon_emp
colossus_ntu_siphon_right.FireModes += new FireModeDefinition
colossus_ntu_siphon_right.FireModes.head.AmmoTypeIndices += 0
colossus_ntu_siphon_right.FireModes.head.AmmoSlotIndex = 0
colossus_ntu_siphon_right.FireModes.head.RoundsPerShot = 5
colossus_ntu_siphon_right.FireModes.head.Magazine = 150
colossus_ntu_siphon_right.FireModes.head.DefaultMagazine = 0
colossus_ntu_siphon_right.FireModes += new FireModeDefinition
colossus_ntu_siphon_right.FireModes(1).AmmoTypeIndices += 0
colossus_ntu_siphon_right.FireModes(1).AmmoSlotIndex = 0
colossus_ntu_siphon_right.FireModes(1).ProjectileTypeIndices += 1
colossus_ntu_siphon_right.FireModes(1).RoundsPerShot = 30
colossus_ntu_siphon_right.FireModes(1).Magazine = 150
colossus_ntu_siphon_right.FireModes(1).DefaultMagazine = 0
colossus_ntu_siphon_right.FireModes(1).AmmoSlotIndex = 0
colossus_ntu_siphon_right.Packet = battleFrameToolConverter
colossus_ntu_siphon_right.Tile = InventoryTile.Tile84
colossus_tank_cannon.Name = "colossus_tank_cannon"
colossus_tank_cannon.Size = EquipmentSize.BFRArmWeapon
colossus_tank_cannon.AmmoTypes += colossus_tank_cannon_ammo
colossus_tank_cannon.ProjectileTypes += colossus_tank_cannon_projectile
colossus_tank_cannon.FireModes += new FireModeDefinition
colossus_tank_cannon.FireModes.head.AmmoTypeIndices += 0
colossus_tank_cannon.FireModes.head.AmmoSlotIndex = 0
colossus_tank_cannon.FireModes.head.Magazine = 25
colossus_tank_cannon.Packet = battleFrameToolConverter
colossus_tank_cannon.Tile = InventoryTile.Tile84
colossus_tank_cannon_left.Name = "colossus_tank_cannon_left"
colossus_tank_cannon_left.Size = EquipmentSize.BFRArmWeapon
colossus_tank_cannon_left.AmmoTypes += colossus_tank_cannon_ammo
colossus_tank_cannon_left.ProjectileTypes += colossus_tank_cannon_projectile
colossus_tank_cannon_left.FireModes += new FireModeDefinition
colossus_tank_cannon_left.FireModes.head.AmmoTypeIndices += 0
colossus_tank_cannon_left.FireModes.head.AmmoSlotIndex = 0
colossus_tank_cannon_left.FireModes.head.Magazine = 25
colossus_tank_cannon_left.Packet = battleFrameToolConverter
colossus_tank_cannon_left.Tile = InventoryTile.Tile84
colossus_tank_cannon_right.Name = "colossus_tank_cannon_right"
colossus_tank_cannon_right.Size = EquipmentSize.BFRArmWeapon
colossus_tank_cannon_right.AmmoTypes += colossus_tank_cannon_ammo
colossus_tank_cannon_right.ProjectileTypes += colossus_tank_cannon_projectile
colossus_tank_cannon_right.FireModes += new FireModeDefinition
colossus_tank_cannon_right.FireModes.head.AmmoTypeIndices += 0
colossus_tank_cannon_right.FireModes.head.AmmoSlotIndex = 0
colossus_tank_cannon_right.FireModes.head.Magazine = 25
colossus_tank_cannon_right.Packet = battleFrameToolConverter
colossus_tank_cannon_right.Tile = InventoryTile.Tile84
colossus_dual_100mm_cannons.Name = "colossus_dual_100mm_cannons"
colossus_dual_100mm_cannons.Size = EquipmentSize.BFRGunnerWeapon
colossus_dual_100mm_cannons.AmmoTypes += colossus_100mm_cannon_ammo
colossus_dual_100mm_cannons.ProjectileTypes += colossus_100mm_projectile
colossus_dual_100mm_cannons.FireModes += new FireModeDefinition
colossus_dual_100mm_cannons.FireModes.head.AmmoTypeIndices += 0
colossus_dual_100mm_cannons.FireModes.head.AmmoSlotIndex = 0
colossus_dual_100mm_cannons.FireModes.head.Magazine = 22
colossus_dual_100mm_cannons.Packet = battleFrameToolConverter
colossus_dual_100mm_cannons.Tile = InventoryTile.Tile1004
colossus_cluster_bomb_pod.Name = "colossus_cluster_bomb_pod"
colossus_cluster_bomb_pod.Size = EquipmentSize.BFRGunnerWeapon
colossus_cluster_bomb_pod.AmmoTypes += colossus_cluster_bomb_ammo
colossus_cluster_bomb_pod.ProjectileTypes += colossus_cluster_bomb_projectile
colossus_cluster_bomb_pod.FireModes += new FireModeDefinition
colossus_cluster_bomb_pod.FireModes.head.AmmoTypeIndices += 0
colossus_cluster_bomb_pod.FireModes.head.AmmoSlotIndex = 0
colossus_cluster_bomb_pod.FireModes.head.Magazine = 125
colossus_cluster_bomb_pod.FireModes += new FireModeDefinition
colossus_cluster_bomb_pod.FireModes(1).AmmoTypeIndices += 0
colossus_cluster_bomb_pod.FireModes(1).AmmoSlotIndex = 0
colossus_cluster_bomb_pod.FireModes(1).Magazine = 125
colossus_cluster_bomb_pod.Packet = battleFrameToolConverter
colossus_cluster_bomb_pod.Tile = InventoryTile.Tile1004
peregrine_armor_siphon.Name = "peregrine_armor_siphon"
peregrine_armor_siphon.Size = EquipmentSize.BFRArmWeapon
peregrine_armor_siphon.AmmoTypes += armor_siphon_ammo
peregrine_armor_siphon.ProjectileTypes += armor_siphon_projectile
peregrine_armor_siphon.FireModes += new FireModeDefinition
peregrine_armor_siphon.FireModes.head.AmmoTypeIndices += 0
peregrine_armor_siphon.FireModes.head.AmmoSlotIndex = 0
peregrine_armor_siphon.FireModes.head.Magazine = 100
peregrine_armor_siphon.Packet = battleFrameToolConverter
peregrine_armor_siphon.Tile = InventoryTile.Tile84
peregrine_armor_siphon_left.Name = "peregrine_armor_siphon_left"
peregrine_armor_siphon_left.Size = EquipmentSize.BFRArmWeapon
peregrine_armor_siphon_left.AmmoTypes += armor_siphon_ammo
peregrine_armor_siphon_left.ProjectileTypes += armor_siphon_projectile
peregrine_armor_siphon_left.FireModes += new FireModeDefinition
peregrine_armor_siphon_left.FireModes.head.AmmoTypeIndices += 0
peregrine_armor_siphon_left.FireModes.head.AmmoSlotIndex = 0
peregrine_armor_siphon_left.FireModes.head.Magazine = 100
peregrine_armor_siphon_left.Packet = battleFrameToolConverter
peregrine_armor_siphon_left.Tile = InventoryTile.Tile84
peregrine_armor_siphon_right.Name = "peregrine_armor_siphon_right"
peregrine_armor_siphon_right.Size = EquipmentSize.BFRArmWeapon
peregrine_armor_siphon_right.AmmoTypes += armor_siphon_ammo
peregrine_armor_siphon_right.ProjectileTypes += armor_siphon_projectile
peregrine_armor_siphon_right.FireModes += new FireModeDefinition
peregrine_armor_siphon_right.FireModes.head.AmmoTypeIndices += 0
peregrine_armor_siphon_right.FireModes.head.AmmoSlotIndex = 0
peregrine_armor_siphon_right.FireModes.head.Magazine = 100
peregrine_armor_siphon_right.Packet = battleFrameToolConverter
peregrine_armor_siphon_right.Tile = InventoryTile.Tile84
peregrine_dual_machine_gun.Name = "peregrine_dual_machine_gun"
peregrine_dual_machine_gun.Size = EquipmentSize.BFRArmWeapon
peregrine_dual_machine_gun.AmmoTypes += peregrine_dual_machine_gun_ammo
peregrine_dual_machine_gun.ProjectileTypes += peregrine_dual_machine_gun_projectile
peregrine_dual_machine_gun.FireModes += new FireModeDefinition
peregrine_dual_machine_gun.FireModes.head.AmmoTypeIndices += 0
peregrine_dual_machine_gun.FireModes.head.AmmoSlotIndex = 0
peregrine_dual_machine_gun.FireModes.head.Magazine = 55
peregrine_dual_machine_gun.Packet = battleFrameToolConverter
peregrine_dual_machine_gun.Tile = InventoryTile.Tile84
peregrine_dual_machine_gun_left.Name = "peregrine_dual_machine_gun_left"
peregrine_dual_machine_gun_left.Size = EquipmentSize.BFRArmWeapon
peregrine_dual_machine_gun_left.AmmoTypes += peregrine_dual_machine_gun_ammo
peregrine_dual_machine_gun_left.ProjectileTypes += peregrine_dual_machine_gun_projectile
peregrine_dual_machine_gun_left.FireModes += new FireModeDefinition
peregrine_dual_machine_gun_left.FireModes.head.AmmoTypeIndices += 0
peregrine_dual_machine_gun_left.FireModes.head.AmmoSlotIndex = 0
peregrine_dual_machine_gun_left.FireModes.head.Magazine = 55
peregrine_dual_machine_gun_left.Packet = battleFrameToolConverter
peregrine_dual_machine_gun_left.Tile = InventoryTile.Tile84
peregrine_dual_machine_gun_right.Name = "peregrine_dual_machine_gun_right"
peregrine_dual_machine_gun_right.Size = EquipmentSize.BFRArmWeapon
peregrine_dual_machine_gun_right.AmmoTypes += peregrine_dual_machine_gun_ammo
peregrine_dual_machine_gun_right.ProjectileTypes += peregrine_dual_machine_gun_projectile
peregrine_dual_machine_gun_right.FireModes += new FireModeDefinition
peregrine_dual_machine_gun_right.FireModes.head.AmmoTypeIndices += 0
peregrine_dual_machine_gun_right.FireModes.head.AmmoSlotIndex = 0
peregrine_dual_machine_gun_right.FireModes.head.Magazine = 55
peregrine_dual_machine_gun_right.Packet = battleFrameToolConverter
peregrine_dual_machine_gun_right.Tile = InventoryTile.Tile84
peregrine_mechhammer.Name = "peregrine_mechhammer"
peregrine_mechhammer.Size = EquipmentSize.BFRArmWeapon
peregrine_mechhammer.AmmoTypes += peregrine_mechhammer_ammo
peregrine_mechhammer.ProjectileTypes += peregrine_mechhammer_projectile
peregrine_mechhammer.FireModes += new PelletFireModeDefinition
peregrine_mechhammer.FireModes.head.AmmoTypeIndices += 0
peregrine_mechhammer.FireModes.head.AmmoSlotIndex = 0
peregrine_mechhammer.FireModes.head.Magazine = 30
peregrine_mechhammer.FireModes.head.Chamber = 16 //30 shells * 12 pellets = 480
peregrine_mechhammer.FireModes += new PelletFireModeDefinition
peregrine_mechhammer.FireModes(1).AmmoTypeIndices += 0
peregrine_mechhammer.FireModes(1).AmmoSlotIndex = 0
peregrine_mechhammer.FireModes(1).Magazine = 30
peregrine_mechhammer.FireModes(1).Chamber = 12 //30 shells * 12 pellets = 360
peregrine_mechhammer.Packet = battleFrameToolConverter
peregrine_mechhammer.Tile = InventoryTile.Tile84
peregrine_mechhammer_left.Name = "peregrine_mechhammer_left"
peregrine_mechhammer_left.Size = EquipmentSize.BFRArmWeapon
peregrine_mechhammer_left.AmmoTypes += peregrine_mechhammer_ammo
peregrine_mechhammer_left.ProjectileTypes += peregrine_mechhammer_projectile
peregrine_mechhammer_left.FireModes += new PelletFireModeDefinition
peregrine_mechhammer_left.FireModes.head.AmmoTypeIndices += 0
peregrine_mechhammer_left.FireModes.head.AmmoSlotIndex = 0
peregrine_mechhammer_left.FireModes.head.Magazine = 30
peregrine_mechhammer_left.FireModes.head.Chamber = 16 //30 shells * 12 pellets = 480
peregrine_mechhammer_left.FireModes += new PelletFireModeDefinition
peregrine_mechhammer_left.FireModes(1).AmmoTypeIndices += 0
peregrine_mechhammer_left.FireModes(1).AmmoSlotIndex = 0
peregrine_mechhammer_left.FireModes(1).Magazine = 30
peregrine_mechhammer_left.FireModes(1).Chamber = 12 //30 shells * 12 pellets = 360
peregrine_mechhammer_left.Packet = battleFrameToolConverter
peregrine_mechhammer_left.Tile = InventoryTile.Tile84
peregrine_mechhammer_right.Name = "peregrine_mechhammer_right"
peregrine_mechhammer_right.Size = EquipmentSize.BFRArmWeapon
peregrine_mechhammer_right.AmmoTypes += peregrine_mechhammer_ammo
peregrine_mechhammer_right.ProjectileTypes += peregrine_mechhammer_projectile
peregrine_mechhammer_right.FireModes += new PelletFireModeDefinition
peregrine_mechhammer_right.FireModes.head.AmmoTypeIndices += 0
peregrine_mechhammer_right.FireModes.head.AmmoSlotIndex = 0
peregrine_mechhammer_right.FireModes.head.Magazine = 30
peregrine_mechhammer_right.FireModes.head.Chamber = 16 //30 shells * 12 pellets = 480
peregrine_mechhammer_right.FireModes += new PelletFireModeDefinition
peregrine_mechhammer_right.FireModes(1).AmmoTypeIndices += 0
peregrine_mechhammer_right.FireModes(1).AmmoSlotIndex = 0
peregrine_mechhammer_right.FireModes(1).Magazine = 30
peregrine_mechhammer_right.FireModes(1).Chamber = 12 //30 shells * 12 pellets = 360
peregrine_mechhammer_right.Packet = battleFrameToolConverter
peregrine_mechhammer_right.Tile = InventoryTile.Tile84
peregrine_ntu_siphon.Name = "peregrine_ntu_siphon"
peregrine_ntu_siphon.Size = EquipmentSize.BFRArmWeapon
peregrine_ntu_siphon.AmmoTypes += ntu_siphon_ammo
peregrine_ntu_siphon.ProjectileTypes += no_projectile
peregrine_ntu_siphon.ProjectileTypes += ntu_siphon_emp
peregrine_ntu_siphon.FireModes += new FireModeDefinition
peregrine_ntu_siphon.FireModes.head.AmmoTypeIndices += 0
peregrine_ntu_siphon.FireModes.head.AmmoSlotIndex = 0
peregrine_ntu_siphon.FireModes.head.RoundsPerShot = 5
peregrine_ntu_siphon.FireModes.head.Magazine = 150
peregrine_ntu_siphon.FireModes.head.DefaultMagazine = 0
peregrine_ntu_siphon.FireModes += new FireModeDefinition
peregrine_ntu_siphon.FireModes(1).AmmoTypeIndices += 0
peregrine_ntu_siphon.FireModes(1).AmmoSlotIndex = 0
peregrine_ntu_siphon.FireModes(1).ProjectileTypeIndices += 1
peregrine_ntu_siphon.FireModes(1).RoundsPerShot = 30
peregrine_ntu_siphon.FireModes(1).Magazine = 150
peregrine_ntu_siphon.FireModes(1).DefaultMagazine = 0
peregrine_ntu_siphon.FireModes(1).AmmoSlotIndex = 0
peregrine_ntu_siphon.Packet = battleFrameToolConverter
peregrine_ntu_siphon.Tile = InventoryTile.Tile84
peregrine_ntu_siphon_left.Name = "peregrine_ntu_siphon_left"
peregrine_ntu_siphon_left.Size = EquipmentSize.BFRArmWeapon
peregrine_ntu_siphon_left.AmmoTypes += ntu_siphon_ammo
peregrine_ntu_siphon_left.ProjectileTypes += no_projectile
peregrine_ntu_siphon_left.ProjectileTypes += ntu_siphon_emp
peregrine_ntu_siphon_left.FireModes += new FireModeDefinition
peregrine_ntu_siphon_left.FireModes.head.AmmoTypeIndices += 0
peregrine_ntu_siphon_left.FireModes.head.AmmoSlotIndex = 0
peregrine_ntu_siphon_left.FireModes.head.RoundsPerShot = 5
peregrine_ntu_siphon_left.FireModes.head.Magazine = 150
peregrine_ntu_siphon_left.FireModes.head.DefaultMagazine = 0
peregrine_ntu_siphon_left.FireModes += new FireModeDefinition
peregrine_ntu_siphon_left.FireModes(1).AmmoTypeIndices += 0
peregrine_ntu_siphon_left.FireModes(1).AmmoSlotIndex = 0
peregrine_ntu_siphon_left.FireModes(1).ProjectileTypeIndices += 1
peregrine_ntu_siphon_left.FireModes(1).RoundsPerShot = 30
peregrine_ntu_siphon_left.FireModes(1).Magazine = 150
peregrine_ntu_siphon_left.FireModes(1).DefaultMagazine = 0
peregrine_ntu_siphon_left.FireModes(1).AmmoSlotIndex = 0
peregrine_ntu_siphon_left.Packet = battleFrameToolConverter
peregrine_ntu_siphon_left.Tile = InventoryTile.Tile84
peregrine_ntu_siphon_right.Name = "peregrine_ntu_siphon_right"
peregrine_ntu_siphon_right.Size = EquipmentSize.BFRArmWeapon
peregrine_ntu_siphon_right.AmmoTypes += ntu_siphon_ammo
peregrine_ntu_siphon_right.ProjectileTypes += no_projectile
peregrine_ntu_siphon_right.ProjectileTypes += ntu_siphon_emp
peregrine_ntu_siphon_right.FireModes += new FireModeDefinition
peregrine_ntu_siphon_right.FireModes.head.AmmoTypeIndices += 0
peregrine_ntu_siphon_right.FireModes.head.AmmoSlotIndex = 0
peregrine_ntu_siphon_right.FireModes.head.RoundsPerShot = 5
peregrine_ntu_siphon_right.FireModes.head.Magazine = 150
peregrine_ntu_siphon_right.FireModes.head.DefaultMagazine = 0
peregrine_ntu_siphon_right.FireModes += new FireModeDefinition
peregrine_ntu_siphon_right.FireModes(1).AmmoTypeIndices += 0
peregrine_ntu_siphon_right.FireModes(1).AmmoSlotIndex = 0
peregrine_ntu_siphon_right.FireModes(1).ProjectileTypeIndices += 1
peregrine_ntu_siphon_right.FireModes(1).RoundsPerShot = 30
peregrine_ntu_siphon_right.FireModes(1).Magazine = 150
peregrine_ntu_siphon_right.FireModes(1).DefaultMagazine = 0
peregrine_ntu_siphon_right.FireModes(1).AmmoSlotIndex = 0
peregrine_ntu_siphon_right.Packet = battleFrameToolConverter
peregrine_ntu_siphon_right.Tile = InventoryTile.Tile84
peregrine_sparrow.Name = "peregrine_sparrow"
peregrine_sparrow.Size = EquipmentSize.BFRArmWeapon
peregrine_sparrow.AmmoTypes += peregrine_sparrow_ammo
peregrine_sparrow.ProjectileTypes += peregrine_sparrow_projectile
peregrine_sparrow.FireModes += new FireModeDefinition
peregrine_sparrow.FireModes.head.AmmoTypeIndices += 0
peregrine_sparrow.FireModes.head.AmmoSlotIndex = 0
peregrine_sparrow.FireModes.head.Magazine = 12
peregrine_sparrow.Packet = battleFrameToolConverter
peregrine_sparrow.Tile = InventoryTile.Tile84
peregrine_sparrow_left.Name = "peregrine_sparrow_left"
peregrine_sparrow_left.Size = EquipmentSize.BFRArmWeapon
peregrine_sparrow_left.AmmoTypes += peregrine_sparrow_ammo
peregrine_sparrow_left.ProjectileTypes += peregrine_sparrow_projectile
peregrine_sparrow_left.FireModes += new FireModeDefinition
peregrine_sparrow_left.FireModes.head.AmmoTypeIndices += 0
peregrine_sparrow_left.FireModes.head.AmmoSlotIndex = 0
peregrine_sparrow_left.FireModes.head.Magazine = 12
peregrine_sparrow_left.Packet = battleFrameToolConverter
peregrine_sparrow_left.Tile = InventoryTile.Tile84
peregrine_sparrow_right.Name = "peregrine_sparrow_right"
peregrine_sparrow_right.Size = EquipmentSize.BFRArmWeapon
peregrine_sparrow_right.AmmoTypes += peregrine_sparrow_ammo
peregrine_sparrow_right.ProjectileTypes += peregrine_sparrow_projectile
peregrine_sparrow_right.FireModes += new FireModeDefinition
peregrine_sparrow_right.FireModes.head.AmmoTypeIndices += 0
peregrine_sparrow_right.FireModes.head.AmmoSlotIndex = 0
peregrine_sparrow_right.FireModes.head.Magazine = 12
peregrine_sparrow_right.Packet = battleFrameToolConverter
peregrine_sparrow_right.Tile = InventoryTile.Tile84
peregrine_particle_cannon.Name = "peregrine_particle_cannon"
peregrine_particle_cannon.Size = EquipmentSize.BFRGunnerWeapon
peregrine_particle_cannon.AmmoTypes += peregrine_particle_cannon_ammo
peregrine_particle_cannon.ProjectileTypes += peregrine_particle_cannon_projectile
peregrine_particle_cannon.FireModes += new FireModeDefinition
peregrine_particle_cannon.FireModes.head.AmmoTypeIndices += 0
peregrine_particle_cannon.FireModes.head.AmmoSlotIndex = 0
peregrine_particle_cannon.FireModes.head.Magazine = 10
peregrine_particle_cannon.Packet = battleFrameToolConverter
peregrine_particle_cannon.Tile = InventoryTile.Tile1004
peregrine_dual_rocket_pods.Name = "peregrine_dual_rocket_pods"
peregrine_dual_rocket_pods.Size = EquipmentSize.BFRGunnerWeapon
peregrine_dual_rocket_pods.AmmoTypes += peregrine_rocket_pod_ammo
peregrine_dual_rocket_pods.ProjectileTypes += peregrine_rocket_pod_projectile
peregrine_dual_rocket_pods.FireModes += new FireModeDefinition
peregrine_dual_rocket_pods.FireModes.head.AmmoTypeIndices += 0
peregrine_dual_rocket_pods.FireModes.head.AmmoSlotIndex = 0
peregrine_dual_rocket_pods.FireModes.head.Magazine = 24
peregrine_dual_rocket_pods.FireModes += new FireModeDefinition
peregrine_dual_rocket_pods.FireModes(1).AmmoTypeIndices += 0
peregrine_dual_rocket_pods.FireModes(1).AmmoSlotIndex = 0
peregrine_dual_rocket_pods.FireModes(1).Magazine = 24
peregrine_dual_rocket_pods.Packet = battleFrameToolConverter
peregrine_dual_rocket_pods.Tile = InventoryTile.Tile1004
}
/**
* Initialize `VehicleDefinition` globals.
*/
private def init_vehicles(): Unit = {
init_ground_vehicles()
init_flight_vehicles()
init_bfr_vehicles()
}
/**
* Initialize land-based `VehicleDefinition` globals.
*/
private def init_ground_vehicles(): Unit = {
val atvForm = GeometryForm.representByCylinder(radius = 1.1797f, height = 1.1875f) _
val delivererForm = GeometryForm.representByCylinder(radius = 2.46095f, height = 2.40626f) _ //TODO hexahedron
val apcForm = GeometryForm.representByCylinder(radius = 4.6211f, height = 3.90626f) _ //TODO hexahedron
val driverSeat = new SeatDefinition() {
restriction = NoReinforcedOrMax
}
val normalSeat = new SeatDefinition()
val bailableSeat = new SeatDefinition() {
bailable = true
}
val maxOnlySeat = new SeatDefinition() {
restriction = MaxOnly
}
val controlSubsystem = List(VehicleSubsystemEntry.Controls)
fury.Name = "fury"
fury.MaxHealth = 650
fury.Damageable = true
fury.Repairable = true
fury.RepairIfDestroyed = false
fury.MaxShields = 130
fury.Seats += 0 -> bailableSeat
fury.controlledWeapons(seat = 0, weapon = 1)
fury.Weapons += 1 -> fury_weapon_systema
fury.MountPoints += 1 -> MountInfo(0)
fury.MountPoints += 2 -> MountInfo(0)
fury.subsystems = controlSubsystem
fury.TrunkSize = InventoryTile.Tile1111
fury.TrunkOffset = 30
fury.TrunkLocation = Vector3(-1.71f, 0f, 0f)
fury.AutoPilotSpeeds = (24, 10)
fury.DestroyedModel = Some(DestroyedVehicle.QuadAssault)
fury.JackingDuration = Array(0, 10, 3, 2)
fury.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 225
DamageRadius = 5
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
fury.DrownAtMaxDepth = true
fury.MaxDepth = 1.3f
fury.UnderwaterLifespan(suffocation = 5000L, recovery = 2500L)
fury.Geometry = atvForm
fury.collision.avatarCollisionDamageMax = 35
fury.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 5), (0.5f, 20), (0.75f, 40), (1f, 60)))
fury.collision.z = CollisionZData(Array((8f, 1), (24f, 35), (40f, 100), (48f, 175), (52f, 350)))
fury.maxForwardSpeed = 90f
fury.mass = 32.1f
quadassault.Name = "quadassault" // Basilisk
quadassault.MaxHealth = 650
quadassault.Damageable = true
quadassault.Repairable = true
quadassault.RepairIfDestroyed = false
quadassault.MaxShields = 130
quadassault.Seats += 0 -> bailableSeat
quadassault.controlledWeapons(seat = 0, weapon = 1)
quadassault.Weapons += 1 -> quadassault_weapon_system
quadassault.MountPoints += 1 -> MountInfo(0)
quadassault.MountPoints += 2 -> MountInfo(0)
quadassault.subsystems = controlSubsystem
quadassault.TrunkSize = InventoryTile.Tile1111
quadassault.TrunkOffset = 30
quadassault.TrunkLocation = Vector3(-1.71f, 0f, 0f)
quadassault.AutoPilotSpeeds = (24, 10)
quadassault.DestroyedModel = Some(DestroyedVehicle.QuadAssault)
quadassault.JackingDuration = Array(0, 10, 3, 2)
quadassault.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 225
DamageRadius = 5
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
quadassault.DrownAtMaxDepth = true
quadassault.MaxDepth = 1.3f
quadassault.UnderwaterLifespan(suffocation = 5000L, recovery = 2500L)
quadassault.Geometry = atvForm
quadassault.collision.avatarCollisionDamageMax = 35
quadassault.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 5), (0.5f, 20), (0.75f, 40), (1f, 60)))
quadassault.collision.z = CollisionZData(Array((8f, 1), (24f, 35), (40f, 100), (48f, 175), (52f, 350)))
quadassault.maxForwardSpeed = 90f
quadassault.mass = 32.1f
quadstealth.Name = "quadstealth" // Wraith
quadstealth.MaxHealth = 650
quadstealth.Damageable = true
quadstealth.Repairable = true
quadstealth.RepairIfDestroyed = false
quadstealth.MaxShields = 130
quadstealth.CanCloak = true
quadstealth.Seats += 0 -> bailableSeat
quadstealth.CanCloak = true
quadstealth.MountPoints += 1 -> MountInfo(0)
quadstealth.MountPoints += 2 -> MountInfo(0)
quadstealth.subsystems = controlSubsystem
quadstealth.TrunkSize = InventoryTile.Tile1111
quadstealth.TrunkOffset = 30
quadstealth.TrunkLocation = Vector3(-1.71f, 0f, 0f)
quadstealth.AutoPilotSpeeds = (24, 10)
quadstealth.DestroyedModel = Some(DestroyedVehicle.QuadStealth)
quadstealth.JackingDuration = Array(0, 10, 3, 2)
quadstealth.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 225
DamageRadius = 5
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
quadstealth.DrownAtMaxDepth = true
quadstealth.MaxDepth = 1.25f
quadstealth.UnderwaterLifespan(suffocation = 5000L, recovery = 2500L)
quadstealth.Geometry = atvForm
quadstealth.collision.avatarCollisionDamageMax = 35
quadstealth.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 5), (0.5f, 20), (0.75f, 40), (1f, 60)))
quadstealth.collision.z = CollisionZData(Array((8f, 1), (24f, 35), (40f, 100), (48f, 175), (52f, 350)))
quadstealth.maxForwardSpeed = 90f
quadstealth.mass = 32.1f
two_man_assault_buggy.Name = "two_man_assault_buggy" // Harasser
two_man_assault_buggy.MaxHealth = 1250
two_man_assault_buggy.Damageable = true
two_man_assault_buggy.Repairable = true
two_man_assault_buggy.RepairIfDestroyed = false
two_man_assault_buggy.MaxShields = 250
two_man_assault_buggy.Seats += 0 -> bailableSeat
two_man_assault_buggy.Seats += 1 -> bailableSeat
two_man_assault_buggy.controlledWeapons(seat = 1, weapon = 2)
two_man_assault_buggy.Weapons += 2 -> chaingun_p
two_man_assault_buggy.MountPoints += 1 -> MountInfo(0)
two_man_assault_buggy.MountPoints += 2 -> MountInfo(1)
two_man_assault_buggy.subsystems = controlSubsystem
two_man_assault_buggy.TrunkSize = InventoryTile.Tile1511
two_man_assault_buggy.TrunkOffset = 30
two_man_assault_buggy.TrunkLocation = Vector3(-2.5f, 0f, 0f)
two_man_assault_buggy.AutoPilotSpeeds = (22, 8)
two_man_assault_buggy.DestroyedModel = Some(DestroyedVehicle.TwoManAssaultBuggy)
two_man_assault_buggy.RadiationShielding = 0.5f
two_man_assault_buggy.JackingDuration = Array(0, 15, 5, 3)
two_man_assault_buggy.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
two_man_assault_buggy.DrownAtMaxDepth = true
two_man_assault_buggy.MaxDepth = 1.5f
two_man_assault_buggy.UnderwaterLifespan(suffocation = 5000L, recovery = 2500L)
two_man_assault_buggy.Geometry = GeometryForm.representByCylinder(radius = 2.10545f, height = 1.59376f)
two_man_assault_buggy.collision.avatarCollisionDamageMax = 75
two_man_assault_buggy.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 5), (0.5f, 20), (0.75f, 40), (1f, 60)))
two_man_assault_buggy.collision.z = CollisionZData(Array((7f, 1), (21f, 50), (35f, 150), (42f, 300), (45.5f, 600)))
two_man_assault_buggy.maxForwardSpeed = 85f
two_man_assault_buggy.mass = 52.4f
skyguard.Name = "skyguard"
skyguard.MaxHealth = 1000
skyguard.Damageable = true
skyguard.Repairable = true
skyguard.RepairIfDestroyed = false
skyguard.MaxShields = 200
skyguard.Seats += 0 -> bailableSeat
skyguard.Seats += 1 -> bailableSeat
skyguard.controlledWeapons(seat = 1, weapon = 2)
skyguard.Weapons += 2 -> skyguard_weapon_system
skyguard.MountPoints += 1 -> MountInfo(0)
skyguard.MountPoints += 2 -> MountInfo(0)
skyguard.MountPoints += 3 -> MountInfo(1)
skyguard.subsystems = controlSubsystem
skyguard.TrunkSize = InventoryTile.Tile1511
skyguard.TrunkOffset = 30
skyguard.TrunkLocation = Vector3(2.5f, 0f, 0f)
skyguard.AutoPilotSpeeds = (22, 8)
skyguard.DestroyedModel = Some(DestroyedVehicle.Skyguard)
skyguard.JackingDuration = Array(0, 15, 5, 3)
skyguard.RadiationShielding = 0.5f
skyguard.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
skyguard.DrownAtMaxDepth = true
skyguard.MaxDepth = 1.5f
skyguard.UnderwaterLifespan(suffocation = 5000L, recovery = 2500L)
skyguard.Geometry = GeometryForm.representByCylinder(radius = 1.8867f, height = 1.4375f)
skyguard.collision.avatarCollisionDamageMax = 100
skyguard.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 5), (0.5f, 20), (0.75f, 40), (1f, 60)))
skyguard.collision.z = CollisionZData(Array((7f, 1), (21f, 50), (35f, 150), (42f, 300), (45.4f, 600)))
skyguard.maxForwardSpeed = 90f
skyguard.mass = 78.9f
threemanheavybuggy.Name = "threemanheavybuggy" // Marauder
threemanheavybuggy.MaxHealth = 1700
threemanheavybuggy.Damageable = true
threemanheavybuggy.Repairable = true
threemanheavybuggy.RepairIfDestroyed = false
threemanheavybuggy.MaxShields = 340
threemanheavybuggy.Seats += 0 -> bailableSeat
threemanheavybuggy.Seats += 1 -> bailableSeat
threemanheavybuggy.Seats += 2 -> bailableSeat
threemanheavybuggy.controlledWeapons(seat = 1, weapon = 3)
threemanheavybuggy.controlledWeapons(seat = 2, weapon = 4)
threemanheavybuggy.Weapons += 3 -> chaingun_p
threemanheavybuggy.Weapons += 4 -> grenade_launcher_marauder
threemanheavybuggy.MountPoints += 1 -> MountInfo(0)
threemanheavybuggy.MountPoints += 2 -> MountInfo(1)
threemanheavybuggy.MountPoints += 3 -> MountInfo(2)
threemanheavybuggy.subsystems = controlSubsystem
threemanheavybuggy.TrunkSize = InventoryTile.Tile1511
threemanheavybuggy.TrunkOffset = 30
threemanheavybuggy.TrunkLocation = Vector3(3.01f, 0f, 0f)
threemanheavybuggy.AutoPilotSpeeds = (22, 8)
threemanheavybuggy.DestroyedModel = Some(DestroyedVehicle.ThreeManHeavyBuggy)
threemanheavybuggy.Subtract.Damage1 = 5
threemanheavybuggy.JackingDuration = Array(0, 20, 7, 5)
threemanheavybuggy.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
threemanheavybuggy.DrownAtMaxDepth = true
threemanheavybuggy.MaxDepth = 1.83f
threemanheavybuggy.UnderwaterLifespan(suffocation = 5000L, recovery = 2500L)
threemanheavybuggy.Geometry = GeometryForm.representByCylinder(radius = 2.1953f, height = 2.03125f)
threemanheavybuggy.collision.avatarCollisionDamageMax = 100
threemanheavybuggy.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 15), (0.5f, 30), (0.75f, 60), (1f, 80)))
threemanheavybuggy.collision.z = CollisionZData(Array((6f, 1), (18f, 50), (30f, 150), (36f, 300), (39f, 900)))
threemanheavybuggy.maxForwardSpeed = 80f
threemanheavybuggy.mass = 96.3f
twomanheavybuggy.Name = "twomanheavybuggy" // Enforcer
twomanheavybuggy.MaxHealth = 1800
twomanheavybuggy.Damageable = true
twomanheavybuggy.Repairable = true
twomanheavybuggy.RepairIfDestroyed = false
twomanheavybuggy.MaxShields = 360
twomanheavybuggy.Seats += 0 -> bailableSeat
twomanheavybuggy.Seats += 1 -> bailableSeat
twomanheavybuggy.controlledWeapons(seat = 1, weapon = 2)
twomanheavybuggy.Weapons += 2 -> advanced_missile_launcher_t
twomanheavybuggy.MountPoints += 1 -> MountInfo(0)
twomanheavybuggy.MountPoints += 2 -> MountInfo(1)
twomanheavybuggy.subsystems = controlSubsystem
twomanheavybuggy.TrunkSize = InventoryTile.Tile1511
twomanheavybuggy.TrunkOffset = 30
twomanheavybuggy.TrunkLocation = Vector3(-0.23f, -2.05f, 0f)
twomanheavybuggy.AutoPilotSpeeds = (22, 8)
twomanheavybuggy.DestroyedModel = Some(DestroyedVehicle.TwoManHeavyBuggy)
twomanheavybuggy.RadiationShielding = 0.5f
twomanheavybuggy.Subtract.Damage1 = 5
twomanheavybuggy.JackingDuration = Array(0, 20, 7, 5)
twomanheavybuggy.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
twomanheavybuggy.DrownAtMaxDepth = true
twomanheavybuggy.MaxDepth = 1.95f
twomanheavybuggy.UnderwaterLifespan(suffocation = 5000L, recovery = 2500L)
twomanheavybuggy.Geometry = GeometryForm.representByCylinder(radius = 2.60935f, height = 1.79688f)
twomanheavybuggy.collision.avatarCollisionDamageMax = 100
twomanheavybuggy.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 12), (0.5f, 30), (0.75f, 55), (1f, 80)))
twomanheavybuggy.collision.z = CollisionZData(Array((6f, 1), (18f, 50), (30f, 150), (36f, 300), (39f, 900)))
twomanheavybuggy.maxForwardSpeed = 80f
twomanheavybuggy.mass = 83.2f
twomanhoverbuggy.Name = "twomanhoverbuggy" // Thresher
twomanhoverbuggy.MaxHealth = 1600
twomanhoverbuggy.Damageable = true
twomanhoverbuggy.Repairable = true
twomanhoverbuggy.RepairIfDestroyed = false
twomanhoverbuggy.MaxShields = 320
twomanhoverbuggy.Seats += 0 -> bailableSeat
twomanhoverbuggy.Seats += 1 -> bailableSeat
twomanhoverbuggy.controlledWeapons(seat = 1, weapon = 2)
twomanhoverbuggy.Weapons += 2 -> flux_cannon_thresher
twomanhoverbuggy.MountPoints += 1 -> MountInfo(0)
twomanhoverbuggy.MountPoints += 2 -> MountInfo(1)
twomanhoverbuggy.subsystems = controlSubsystem
twomanhoverbuggy.TrunkSize = InventoryTile.Tile1511
twomanhoverbuggy.TrunkOffset = 30
twomanhoverbuggy.TrunkLocation = Vector3(-3.39f, 0f, 0f)
twomanhoverbuggy.AutoPilotSpeeds = (22, 10)
twomanhoverbuggy.DestroyedModel = Some(DestroyedVehicle.TwoManHoverBuggy)
twomanhoverbuggy.RadiationShielding = 0.5f
twomanhoverbuggy.Subtract.Damage1 = 5
twomanhoverbuggy.JackingDuration = Array(0, 20, 7, 5)
twomanhoverbuggy.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
twomanhoverbuggy.DrownAtMaxDepth = false //true?
twomanhoverbuggy.MaxDepth = 2f
twomanhoverbuggy.UnderwaterLifespan(
suffocation = 45000L,
recovery = 5000L
) //but the thresher hovers over water, so ...?
twomanhoverbuggy.Geometry = GeometryForm.representByCylinder(radius = 2.1875f, height = 2.01563f)
twomanhoverbuggy.collision.avatarCollisionDamageMax = 125
twomanhoverbuggy.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 13), (0.5f, 35), (0.75f, 65), (1f, 90)))
twomanhoverbuggy.collision.z = CollisionZData(Array((6f, 1), (18f, 50), (30f, 150), (36f, 300), (39f, 900)))
twomanhoverbuggy.maxForwardSpeed = 85f
twomanhoverbuggy.mass = 55.5f
mediumtransport.Name = "mediumtransport" // Deliverer
mediumtransport.MaxHealth = 2500
mediumtransport.Damageable = true
mediumtransport.Repairable = true
mediumtransport.RepairIfDestroyed = false
mediumtransport.MaxShields = 500
mediumtransport.Seats += 0 -> driverSeat
mediumtransport.Seats += 1 -> normalSeat
mediumtransport.Seats += 2 -> normalSeat
mediumtransport.Seats += 3 -> normalSeat
mediumtransport.Seats += 4 -> normalSeat
mediumtransport.controlledWeapons(seat = 1, weapon = 5)
mediumtransport.controlledWeapons(seat = 2, weapon = 6)
mediumtransport.Weapons += 5 -> mediumtransport_weapon_systemA
mediumtransport.Weapons += 6 -> mediumtransport_weapon_systemB
mediumtransport.MountPoints += 1 -> MountInfo(0)
mediumtransport.MountPoints += 2 -> MountInfo(1)
mediumtransport.MountPoints += 3 -> MountInfo(2)
mediumtransport.MountPoints += 4 -> MountInfo(3)
mediumtransport.MountPoints += 5 -> MountInfo(4)
mediumtransport.subsystems = controlSubsystem
mediumtransport.TrunkSize = InventoryTile.Tile1515
mediumtransport.TrunkOffset = 30
mediumtransport.TrunkLocation = Vector3(-3.46f, 0f, 0f)
mediumtransport.AutoPilotSpeeds = (18, 6)
mediumtransport.DestroyedModel = Some(DestroyedVehicle.MediumTransport)
mediumtransport.Subtract.Damage1 = 7
mediumtransport.JackingDuration = Array(0, 25, 8, 5)
mediumtransport.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
mediumtransport.DrownAtMaxDepth = false
mediumtransport.MaxDepth = 2f
mediumtransport.UnderwaterLifespan(suffocation = -1, recovery = -1)
mediumtransport.Geometry = delivererForm
mediumtransport.collision.avatarCollisionDamageMax = 120
mediumtransport.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 35), (0.5f, 60), (0.75f, 110), (1f, 175)))
mediumtransport.collision.z = CollisionZData(Array((5f, 1), (15f, 50), (25f, 200), (30f, 750), (32.5f, 2000)))
mediumtransport.maxForwardSpeed = 70f
mediumtransport.mass = 108.5f
battlewagon.Name = "battlewagon" // Raider
battlewagon.MaxHealth = 2500
battlewagon.Damageable = true
battlewagon.Repairable = true
battlewagon.RepairIfDestroyed = false
battlewagon.MaxShields = 500
battlewagon.Seats += 0 -> driverSeat
battlewagon.Seats += 1 -> normalSeat
battlewagon.Seats += 2 -> normalSeat
battlewagon.Seats += 3 -> normalSeat
battlewagon.Seats += 4 -> normalSeat
battlewagon.controlledWeapons(seat = 1, weapon = 5)
battlewagon.controlledWeapons(seat = 2, weapon = 6)
battlewagon.controlledWeapons(seat = 3, weapon = 7)
battlewagon.controlledWeapons(seat = 4, weapon = 8)
battlewagon.Weapons += 5 -> battlewagon_weapon_systema
battlewagon.Weapons += 6 -> battlewagon_weapon_systemb
battlewagon.Weapons += 7 -> battlewagon_weapon_systemc
battlewagon.Weapons += 8 -> battlewagon_weapon_systemd
battlewagon.MountPoints += 1 -> MountInfo(0)
battlewagon.MountPoints += 2 -> MountInfo(1)
battlewagon.MountPoints += 3 -> MountInfo(2)
battlewagon.MountPoints += 4 -> MountInfo(3)
battlewagon.MountPoints += 5 -> MountInfo(4)
battlewagon.subsystems = controlSubsystem
battlewagon.TrunkSize = InventoryTile.Tile1515
battlewagon.TrunkOffset = 30
battlewagon.TrunkLocation = Vector3(-3.46f, 0f, 0f)
battlewagon.AutoPilotSpeeds = (18, 6)
battlewagon.DestroyedModel = Some(DestroyedVehicle.MediumTransport)
battlewagon.JackingDuration = Array(0, 25, 8, 5)
battlewagon.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
battlewagon.DrownAtMaxDepth = false
battlewagon.MaxDepth = 2f
battlewagon.UnderwaterLifespan(suffocation = -1, recovery = -1)
battlewagon.Geometry = delivererForm
battlewagon.collision.avatarCollisionDamageMax = 120
battlewagon.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 35), (0.5f, 60), (0.75f, 110), (1f, 175))) //inherited from mediumtransport
battlewagon.collision.z = CollisionZData(Array((5f, 1), (15f, 50), (25f, 200), (30f, 750), (32.5f, 2000))) //inherited from mediumtransport
battlewagon.maxForwardSpeed = 65f
battlewagon.mass = 108.5f
thunderer.Name = "thunderer"
thunderer.MaxHealth = 2500
thunderer.Damageable = true
thunderer.Repairable = true
thunderer.RepairIfDestroyed = false
thunderer.MaxShields = 500
thunderer.Seats += 0 -> driverSeat
thunderer.Seats += 1 -> normalSeat
thunderer.Seats += 2 -> normalSeat
thunderer.Seats += 3 -> normalSeat
thunderer.Seats += 4 -> normalSeat
thunderer.Weapons += 5 -> thunderer_weapon_systema
thunderer.Weapons += 6 -> thunderer_weapon_systemb
thunderer.controlledWeapons(seat = 1, weapon = 5)
thunderer.controlledWeapons(seat = 2, weapon = 6)
thunderer.MountPoints += 1 -> MountInfo(0)
thunderer.MountPoints += 2 -> MountInfo(1)
thunderer.MountPoints += 3 -> MountInfo(2)
thunderer.MountPoints += 4 -> MountInfo(3)
thunderer.MountPoints += 5 -> MountInfo(4)
thunderer.subsystems = controlSubsystem
thunderer.TrunkSize = InventoryTile.Tile1515
thunderer.TrunkOffset = 30
thunderer.TrunkLocation = Vector3(-3.46f, 0f, 0f)
thunderer.AutoPilotSpeeds = (18, 6)
thunderer.DestroyedModel = Some(DestroyedVehicle.MediumTransport)
thunderer.Subtract.Damage1 = 7
thunderer.JackingDuration = Array(0, 25, 8, 5)
thunderer.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
thunderer.DrownAtMaxDepth = false
thunderer.MaxDepth = 2f
thunderer.UnderwaterLifespan(suffocation = -1, recovery = -1)
thunderer.Geometry = delivererForm
thunderer.collision.avatarCollisionDamageMax = 120
thunderer.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 35), (0.5f, 60), (0.75f, 110), (1f, 175)))
thunderer.collision.z = CollisionZData(Array((5f, 1), (15f, 50), (25f, 200), (30f, 750), (32.5f, 2000)))
thunderer.maxForwardSpeed = 65f
thunderer.mass = 108.5f
aurora.Name = "aurora"
aurora.MaxHealth = 2500
aurora.Damageable = true
aurora.Repairable = true
aurora.RepairIfDestroyed = false
aurora.MaxShields = 500
aurora.Seats += 0 -> driverSeat
aurora.Seats += 1 -> normalSeat
aurora.Seats += 2 -> normalSeat
aurora.Seats += 3 -> normalSeat
aurora.Seats += 4 -> normalSeat
aurora.controlledWeapons(seat = 1, weapon = 5)
aurora.controlledWeapons(seat = 2, weapon = 6)
aurora.Weapons += 5 -> aurora_weapon_systema
aurora.Weapons += 6 -> aurora_weapon_systemb
aurora.MountPoints += 1 -> MountInfo(0)
aurora.MountPoints += 2 -> MountInfo(1)
aurora.MountPoints += 3 -> MountInfo(2)
aurora.MountPoints += 4 -> MountInfo(3)
aurora.MountPoints += 5 -> MountInfo(4)
aurora.subsystems = controlSubsystem
aurora.TrunkSize = InventoryTile.Tile1515
aurora.TrunkOffset = 30
aurora.TrunkLocation = Vector3(-3.46f, 0f, 0f)
aurora.AutoPilotSpeeds = (18, 6)
aurora.DestroyedModel = Some(DestroyedVehicle.MediumTransport)
aurora.Subtract.Damage1 = 7
aurora.JackingDuration = Array(0, 25, 8, 5)
aurora.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
aurora.DrownAtMaxDepth = false
aurora.MaxDepth = 2f
aurora.UnderwaterLifespan(suffocation = -1, recovery = -1)
aurora.Geometry = delivererForm
aurora.collision.avatarCollisionDamageMax = 120
aurora.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 35), (0.5f, 60), (0.75f, 110), (1f, 175)))
aurora.collision.z = CollisionZData(Array((5f, 1), (15f, 50), (25f, 200), (30f, 750), (32.5f, 2000)))
aurora.maxForwardSpeed = 65f
aurora.mass = 108.5f
apc_tr.Name = "apc_tr" // Juggernaut
apc_tr.MaxHealth = 6000
apc_tr.Damageable = true
apc_tr.Repairable = true
apc_tr.RepairIfDestroyed = false
apc_tr.MaxShields = 1200
apc_tr.Seats += 0 -> normalSeat
apc_tr.Seats += 1 -> normalSeat
apc_tr.Seats += 2 -> normalSeat
apc_tr.Seats += 3 -> normalSeat
apc_tr.Seats += 4 -> normalSeat
apc_tr.Seats += 5 -> normalSeat
apc_tr.Seats += 6 -> normalSeat
apc_tr.Seats += 7 -> normalSeat
apc_tr.Seats += 8 -> normalSeat
apc_tr.Seats += 9 -> maxOnlySeat
apc_tr.Seats += 10 -> maxOnlySeat
apc_tr.controlledWeapons(seat = 1, weapon = 11)
apc_tr.controlledWeapons(seat = 2, weapon = 12)
apc_tr.controlledWeapons(seat = 5, weapon = 15)
apc_tr.controlledWeapons(seat = 6, weapon = 16)
apc_tr.controlledWeapons(seat = 7, weapon = 13)
apc_tr.controlledWeapons(seat = 8, weapon = 14)
apc_tr.Weapons += 11 -> apc_weapon_systemc_tr
apc_tr.Weapons += 12 -> apc_weapon_systemb
apc_tr.Weapons += 13 -> apc_weapon_systema
apc_tr.Weapons += 14 -> apc_weapon_systemd_tr
apc_tr.Weapons += 15 -> apc_ballgun_r
apc_tr.Weapons += 16 -> apc_ballgun_l
apc_tr.MountPoints += 1 -> MountInfo(0)
apc_tr.MountPoints += 2 -> MountInfo(0)
apc_tr.MountPoints += 3 -> MountInfo(1)
apc_tr.MountPoints += 4 -> MountInfo(2)
apc_tr.MountPoints += 5 -> MountInfo(3)
apc_tr.MountPoints += 6 -> MountInfo(4)
apc_tr.MountPoints += 7 -> MountInfo(5)
apc_tr.MountPoints += 8 -> MountInfo(6)
apc_tr.MountPoints += 9 -> MountInfo(7)
apc_tr.MountPoints += 10 -> MountInfo(8)
apc_tr.MountPoints += 11 -> MountInfo(9)
apc_tr.MountPoints += 12 -> MountInfo(10)
apc_tr.subsystems = controlSubsystem
apc_tr.TrunkSize = InventoryTile.Tile2016
apc_tr.TrunkOffset = 30
apc_tr.TrunkLocation = Vector3(-5.82f, 0f, 0f)
apc_tr.AutoPilotSpeeds = (16, 6)
apc_tr.DestroyedModel = Some(DestroyedVehicle.Apc)
apc_tr.JackingDuration = Array(0, 45, 15, 10)
apc_tr.RadiationShielding = 0.5f
apc_tr.Subtract.Damage1 = 10
apc_tr.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 300
Damage1 = 450
DamageRadius = 15
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
apc_tr.DrownAtMaxDepth = true
apc_tr.MaxDepth = 3
apc_tr.UnderwaterLifespan(suffocation = 15000L, recovery = 7500L)
apc_tr.Geometry = apcForm
apc_tr.MaxCapacitor = 300
apc_tr.CapacitorRecharge = 1
apc_tr.collision.avatarCollisionDamageMax = 300
apc_tr.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 10), (0.5f, 40), (0.75f, 70), (1f, 110)))
apc_tr.collision.z = CollisionZData(Array((2f, 1), (6f, 50), (10f, 300), (12f, 1000), (13f, 3000)))
apc_tr.maxForwardSpeed = 60f
apc_tr.mass = 128.4f
apc_nc.Name = "apc_nc" // Vindicator
apc_nc.MaxHealth = 6000
apc_nc.Damageable = true
apc_nc.Repairable = true
apc_nc.RepairIfDestroyed = false
apc_nc.MaxShields = 1200
apc_nc.Seats += 0 -> normalSeat
apc_nc.Seats += 1 -> normalSeat
apc_nc.Seats += 2 -> normalSeat
apc_nc.Seats += 3 -> normalSeat
apc_nc.Seats += 4 -> normalSeat
apc_nc.Seats += 5 -> normalSeat
apc_nc.Seats += 6 -> normalSeat
apc_nc.Seats += 7 -> normalSeat
apc_nc.Seats += 8 -> normalSeat
apc_nc.Seats += 9 -> maxOnlySeat
apc_nc.Seats += 10 -> maxOnlySeat
apc_nc.controlledWeapons(seat = 1, weapon = 11)
apc_nc.controlledWeapons(seat = 2, weapon = 12)
apc_nc.controlledWeapons(seat = 5, weapon = 15)
apc_nc.controlledWeapons(seat = 6, weapon = 16)
apc_nc.controlledWeapons(seat = 7, weapon = 13)
apc_nc.controlledWeapons(seat = 8, weapon = 14)
apc_nc.Weapons += 11 -> apc_weapon_systemc_nc
apc_nc.Weapons += 12 -> apc_weapon_systemb
apc_nc.Weapons += 13 -> apc_weapon_systema
apc_nc.Weapons += 14 -> apc_weapon_systemd_nc
apc_nc.Weapons += 15 -> apc_ballgun_r
apc_nc.Weapons += 16 -> apc_ballgun_l
apc_nc.MountPoints += 1 -> MountInfo(0)
apc_nc.MountPoints += 2 -> MountInfo(0)
apc_nc.MountPoints += 3 -> MountInfo(1)
apc_nc.MountPoints += 4 -> MountInfo(2)
apc_nc.MountPoints += 5 -> MountInfo(3)
apc_nc.MountPoints += 6 -> MountInfo(4)
apc_nc.MountPoints += 7 -> MountInfo(5)
apc_nc.MountPoints += 8 -> MountInfo(6)
apc_nc.MountPoints += 9 -> MountInfo(7)
apc_nc.MountPoints += 10 -> MountInfo(8)
apc_nc.MountPoints += 11 -> MountInfo(9)
apc_nc.MountPoints += 12 -> MountInfo(10)
apc_nc.subsystems = controlSubsystem
apc_nc.TrunkSize = InventoryTile.Tile2016
apc_nc.TrunkOffset = 30
apc_nc.TrunkLocation = Vector3(-5.82f, 0f, 0f)
apc_nc.AutoPilotSpeeds = (16, 6)
apc_nc.DestroyedModel = Some(DestroyedVehicle.Apc)
apc_nc.JackingDuration = Array(0, 45, 15, 10)
apc_nc.RadiationShielding = 0.5f
apc_nc.Subtract.Damage1 = 10
apc_nc.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 300
Damage1 = 450
DamageRadius = 15
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
apc_nc.DrownAtMaxDepth = true
apc_nc.MaxDepth = 3
apc_nc.UnderwaterLifespan(suffocation = 15000L, recovery = 7500L)
apc_nc.Geometry = apcForm
apc_nc.MaxCapacitor = 300
apc_nc.CapacitorRecharge = 1
apc_nc.collision.avatarCollisionDamageMax = 300
apc_nc.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 10), (0.5f, 40), (0.75f, 70), (1f, 110)))
apc_nc.collision.z = CollisionZData(Array((2f, 1), (6f, 50), (10f, 300), (12f, 1000), (13f, 3000)))
apc_nc.maxForwardSpeed = 60f
apc_nc.mass = 128.4f
apc_vs.Name = "apc_vs" // Leviathan
apc_vs.MaxHealth = 6000
apc_vs.Damageable = true
apc_vs.Repairable = true
apc_vs.RepairIfDestroyed = false
apc_vs.MaxShields = 1200
apc_vs.Seats += 0 -> normalSeat
apc_vs.Seats += 1 -> normalSeat
apc_vs.Seats += 2 -> normalSeat
apc_vs.Seats += 3 -> normalSeat
apc_vs.Seats += 4 -> normalSeat
apc_vs.Seats += 5 -> normalSeat
apc_vs.Seats += 6 -> normalSeat
apc_vs.Seats += 7 -> normalSeat
apc_vs.Seats += 8 -> normalSeat
apc_vs.Seats += 9 -> maxOnlySeat
apc_vs.Seats += 10 -> maxOnlySeat
apc_vs.controlledWeapons(seat = 1, weapon = 11)
apc_vs.controlledWeapons(seat = 2, weapon = 12)
apc_vs.controlledWeapons(seat = 5, weapon = 15)
apc_vs.controlledWeapons(seat = 6, weapon = 16)
apc_vs.controlledWeapons(seat = 7, weapon = 13)
apc_vs.controlledWeapons(seat = 8, weapon = 14)
apc_vs.Weapons += 11 -> apc_weapon_systemc_vs
apc_vs.Weapons += 12 -> apc_weapon_systemb
apc_vs.Weapons += 13 -> apc_weapon_systema
apc_vs.Weapons += 14 -> apc_weapon_systemd_vs
apc_vs.Weapons += 15 -> apc_ballgun_r
apc_vs.Weapons += 16 -> apc_ballgun_l
apc_vs.MountPoints += 1 -> MountInfo(0)
apc_vs.MountPoints += 2 -> MountInfo(0)
apc_vs.MountPoints += 3 -> MountInfo(1)
apc_vs.MountPoints += 4 -> MountInfo(2)
apc_vs.MountPoints += 5 -> MountInfo(3)
apc_vs.MountPoints += 6 -> MountInfo(4)
apc_vs.MountPoints += 7 -> MountInfo(5)
apc_vs.MountPoints += 8 -> MountInfo(6)
apc_vs.MountPoints += 9 -> MountInfo(7)
apc_vs.MountPoints += 10 -> MountInfo(8)
apc_vs.MountPoints += 11 -> MountInfo(9)
apc_vs.MountPoints += 12 -> MountInfo(10)
apc_vs.subsystems = controlSubsystem
apc_vs.TrunkSize = InventoryTile.Tile2016
apc_vs.TrunkOffset = 30
apc_vs.TrunkLocation = Vector3(-5.82f, 0f, 0f)
apc_vs.AutoPilotSpeeds = (16, 6)
apc_vs.DestroyedModel = Some(DestroyedVehicle.Apc)
apc_vs.JackingDuration = Array(0, 45, 15, 10)
apc_vs.RadiationShielding = 0.5f
apc_vs.Subtract.Damage1 = 10
apc_vs.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 300
Damage1 = 450
DamageRadius = 15
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
apc_vs.DrownAtMaxDepth = true
apc_vs.MaxDepth = 3
apc_vs.UnderwaterLifespan(suffocation = 15000L, recovery = 7500L)
apc_vs.Geometry = apcForm
apc_vs.MaxCapacitor = 300
apc_vs.CapacitorRecharge = 1
apc_vs.collision.avatarCollisionDamageMax = 300
apc_vs.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 10), (0.5f, 40), (0.75f, 70), (1f, 110)))
apc_vs.collision.z = CollisionZData(Array((2f, 1), (6f, 50), (10f, 300), (12f, 1000), (13f, 3000)))
apc_vs.maxForwardSpeed = 60f
apc_vs.mass = 128.4f
lightning.Name = "lightning"
lightning.MaxHealth = 2000
lightning.Damageable = true
lightning.Repairable = true
lightning.RepairIfDestroyed = false
lightning.MaxShields = 400
lightning.Seats += 0 -> driverSeat
lightning.controlledWeapons(seat = 0, weapon = 1)
lightning.Weapons += 1 -> lightning_weapon_system
lightning.MountPoints += 1 -> MountInfo(0)
lightning.MountPoints += 2 -> MountInfo(0)
lightning.subsystems = controlSubsystem
lightning.TrunkSize = InventoryTile.Tile1511
lightning.TrunkOffset = 30
lightning.TrunkLocation = Vector3(-3f, 0f, 0f)
lightning.AutoPilotSpeeds = (20, 8)
lightning.DestroyedModel = Some(DestroyedVehicle.Lightning)
lightning.RadiationShielding = 0.5f
lightning.Subtract.Damage1 = 7
lightning.JackingDuration = Array(0, 20, 7, 5)
lightning.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 250
Damage1 = 375
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
lightning.DrownAtMaxDepth = true
lightning.MaxDepth = 1.38f
lightning.UnderwaterLifespan(suffocation = 12000L, recovery = 6000L)
lightning.Geometry = GeometryForm.representByCylinder(radius = 2.5078f, height = 1.79688f)
lightning.collision.avatarCollisionDamageMax = 150
lightning.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 10), (0.5f, 25), (0.75f, 50), (1f, 80)))
lightning.collision.z = CollisionZData(Array((6f, 1), (18f, 50), (30f, 150), (36f, 300), (39f, 750)))
lightning.maxForwardSpeed = 74f
lightning.mass = 100.2f
prowler.Name = "prowler"
prowler.MaxHealth = 4800
prowler.Damageable = true
prowler.Repairable = true
prowler.RepairIfDestroyed = false
prowler.MaxShields = 960
prowler.Seats += 0 -> driverSeat
prowler.Seats += 1 -> normalSeat
prowler.Seats += 2 -> normalSeat
prowler.controlledWeapons(seat = 1, weapon = 3)
prowler.controlledWeapons(seat = 2, weapon = 4)
prowler.Weapons += 3 -> prowler_weapon_systemA
prowler.Weapons += 4 -> prowler_weapon_systemB
prowler.MountPoints += 1 -> MountInfo(0)
prowler.MountPoints += 2 -> MountInfo(1)
prowler.MountPoints += 3 -> MountInfo(2)
prowler.subsystems = controlSubsystem
prowler.TrunkSize = InventoryTile.Tile1511
prowler.TrunkOffset = 30
prowler.TrunkLocation = Vector3(-4.71f, 0f, 0f)
prowler.AutoPilotSpeeds = (14, 6)
prowler.DestroyedModel = Some(DestroyedVehicle.Prowler)
prowler.RadiationShielding = 0.5f
prowler.Subtract.Damage1 = 9
prowler.JackingDuration = Array(0, 30, 10, 5)
prowler.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 250
Damage1 = 375
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
prowler.DrownAtMaxDepth = true
prowler.MaxDepth = 3
prowler.UnderwaterLifespan(suffocation = 12000L, recovery = 6000L)
prowler.Geometry = GeometryForm.representByCylinder(radius = 3.461f, height = 3.48438f)
prowler.collision.avatarCollisionDamageMax = 300
prowler.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 15), (0.5f, 40), (0.75f, 75), (1f, 100)))
prowler.collision.z = CollisionZData(Array((5f, 1), (15f, 50), (25f, 250), (30f, 600), (32.5f, 1500)))
prowler.maxForwardSpeed = 57f
prowler.mass = 510.5f
vanguard.Name = "vanguard"
vanguard.MaxHealth = 5400
vanguard.Damageable = true
vanguard.Repairable = true
vanguard.RepairIfDestroyed = false
vanguard.MaxShields = 1080
vanguard.Seats += 0 -> driverSeat
vanguard.Seats += 1 -> normalSeat
vanguard.controlledWeapons(seat = 1, weapon = 2)
vanguard.Weapons += 2 -> vanguard_weapon_system
vanguard.MountPoints += 1 -> MountInfo(0)
vanguard.MountPoints += 2 -> MountInfo(1)
vanguard.subsystems = controlSubsystem
vanguard.TrunkSize = InventoryTile.Tile1511
vanguard.TrunkOffset = 30
vanguard.TrunkLocation = Vector3(-4.84f, 0f, 0f)
vanguard.AutoPilotSpeeds = (16, 6)
vanguard.DestroyedModel = Some(DestroyedVehicle.Vanguard)
vanguard.RadiationShielding = 0.5f
vanguard.Subtract.Damage1 = 9
vanguard.JackingDuration = Array(0, 30, 10, 5)
vanguard.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 250
Damage1 = 375
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
vanguard.DrownAtMaxDepth = true
vanguard.MaxDepth = 2.7f
vanguard.UnderwaterLifespan(suffocation = 12000L, recovery = 6000L)
vanguard.Geometry = GeometryForm.representByCylinder(radius = 3.8554f, height = 2.60938f)
vanguard.collision.avatarCollisionDamageMax = 300
vanguard.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 5), (0.5f, 20), (0.75f, 40), (1f, 60)))
vanguard.collision.z = CollisionZData(Array((5f, 1), (15f, 50), (25f, 100), (30f, 250), (32.5f, 600)))
vanguard.maxForwardSpeed = 60f
vanguard.mass = 460.4f
magrider.Name = "magrider"
magrider.MaxHealth = 4200
magrider.Damageable = true
magrider.Repairable = true
magrider.RepairIfDestroyed = false
magrider.MaxShields = 840
magrider.Seats += 0 -> driverSeat
magrider.Seats += 1 -> normalSeat
magrider.controlledWeapons(seat = 0, weapon = 2)
magrider.controlledWeapons(seat = 1, weapon = 3)
magrider.Weapons += 2 -> particle_beam_magrider
magrider.Weapons += 3 -> heavy_rail_beam_magrider
magrider.MountPoints += 1 -> MountInfo(0)
magrider.MountPoints += 2 -> MountInfo(1)
magrider.subsystems = controlSubsystem
magrider.TrunkSize = InventoryTile.Tile1511
magrider.TrunkOffset = 30
magrider.TrunkLocation = Vector3(5.06f, 0f, 0f)
magrider.AutoPilotSpeeds = (18, 6)
magrider.DestroyedModel = Some(DestroyedVehicle.Magrider)
magrider.RadiationShielding = 0.5f
magrider.Subtract.Damage1 = 9
magrider.JackingDuration = Array(0, 30, 10, 5)
magrider.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 250
Damage1 = 375
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
magrider.DrownAtMaxDepth = true
magrider.MaxDepth = 2
magrider.UnderwaterLifespan(suffocation = 45000L, recovery = 5000L) //but the magrider hovers over water, so ...?
magrider.Geometry = GeometryForm.representByCylinder(radius = 3.3008f, height = 3.26562f)
magrider.collision.avatarCollisionDamageMax = 225
magrider.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 35), (0.5f, 70), (0.75f, 90), (1f, 120)))
magrider.collision.z = CollisionZData(Array((5f, 1), (15f, 50), (25f, 250), (30f, 600), (32.5f, 1500)))
magrider.maxForwardSpeed = 65f
magrider.mass = 75.3f
val utilityConverter = new UtilityVehicleConverter
ant.Name = "ant"
ant.MaxHealth = 2000
ant.Damageable = true
ant.Repairable = true
ant.RepairIfDestroyed = false
ant.MaxShields = 400
ant.Seats += 0 -> driverSeat
ant.MountPoints += 1 -> MountInfo(0)
ant.MountPoints += 2 -> MountInfo(0)
ant.subsystems = controlSubsystem
ant.Deployment = true
ant.DeployTime = 1500
ant.UndeployTime = 1500
ant.AutoPilotSpeeds = (18, 6)
ant.MaxNtuCapacitor = 1500
ant.Packet = utilityConverter
ant.DestroyedModel = Some(DestroyedVehicle.Ant)
ant.RadiationShielding = 0.5f
ant.Subtract.Damage1 = 5
ant.JackingDuration = Array(0, 60, 20, 15)
ant.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 300
Damage1 = 450
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
ant.DrownAtMaxDepth = true
ant.MaxDepth = 2
ant.UnderwaterLifespan(suffocation = 12000L, recovery = 6000L)
ant.Geometry = GeometryForm.representByCylinder(radius = 2.16795f, height = 2.09376f) //TODO hexahedron
ant.collision.avatarCollisionDamageMax = 50
ant.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 10), (0.5f, 30), (0.75f, 50), (1f, 70)))
ant.collision.z = CollisionZData(Array((2f, 1), (6f, 50), (10f, 250), (12f, 500), (13f, 750)))
ant.maxForwardSpeed = 65f
ant.mass = 80.5f
ams.Name = "ams"
ams.MaxHealth = 3000
ams.Damageable = true
ams.Repairable = true
ams.RepairIfDestroyed = false
ams.MaxShields = 600 + 1
ams.Seats += 0 -> driverSeat
ams.MountPoints += 1 -> MountInfo(0)
ams.MountPoints += 2 -> MountInfo(0)
ams.Utilities += 1 -> UtilityType.matrix_terminalc
ams.Utilities += 2 -> UtilityType.ams_respawn_tube
ams.Utilities += 3 -> UtilityType.order_terminala
ams.Utilities += 4 -> UtilityType.order_terminalb
ams.subsystems = controlSubsystem
ams.Deployment = true
ams.DeployTime = 2000
ams.UndeployTime = 2000
ams.DeconstructionTime = Some(20 minutes)
ams.AutoPilotSpeeds = (18, 6)
ams.Packet = utilityConverter
ams.DestroyedModel = Some(DestroyedVehicle.Ams)
ams.RadiationShielding = 0.5f
ams.Subtract.Damage1 = 10
ams.JackingDuration = Array(0, 60, 20, 15)
ams.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.Splash
Damage0 = 300
Damage1 = 450
DamageRadius = 15
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
ams.DrownAtMaxDepth = true
ams.MaxDepth = 3
ams.UnderwaterLifespan(suffocation = 5000L, recovery = 5000L)
ams.Geometry = GeometryForm.representByCylinder(radius = 3.0117f, height = 3.39062f) //TODO hexahedron
ams.collision.avatarCollisionDamageMax = 250
ams.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 10), (0.5f, 40), (0.75f, 60), (1f, 100)))
ams.collision.z = CollisionZData(Array((2f, 1), (6f, 50), (10f, 250), (12f, 805), (13f, 3000)))
ams.maxForwardSpeed = 70f
ams.mass = 136.8f
val variantConverter = new VariantVehicleConverter
router.Name = "router"
router.MaxHealth = 4000
router.Damageable = true
router.Repairable = true
router.RepairIfDestroyed = false
router.MaxShields = 800
router.Seats += 0 -> normalSeat
router.MountPoints += 1 -> MountInfo(0)
router.Utilities += 1 -> UtilityType.teleportpad_terminal
router.Utilities += 2 -> UtilityType.internal_router_telepad_deployable
router.subsystems = controlSubsystem
router.TrunkSize = InventoryTile.Tile1511
router.TrunkOffset = 30
router.TrunkLocation = Vector3(0f, 3.4f, 0f)
router.Deployment = true
router.DeployTime = 2000
router.UndeployTime = 2000
router.DeconstructionTime = Duration(20, "minutes")
router.AutoPilotSpeeds = (16, 6)
router.Packet = variantConverter
router.DestroyedModel = Some(DestroyedVehicle.Router)
router.RadiationShielding = 0.5f
router.Subtract.Damage1 = 5
router.JackingDuration = Array(0, 20, 7, 5)
router.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
router.DrownAtMaxDepth = true
router.MaxDepth = 2
router.UnderwaterLifespan(suffocation = 45000L, recovery = 5000L) //but the router hovers over water, so ...?
router.Geometry = GeometryForm.representByCylinder(radius = 3.64845f, height = 3.51563f) //TODO hexahedron
router.collision.avatarCollisionDamageMax = 150 //it has to bonk you on the head when it falls?
router.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 13), (0.5f, 35), (0.75f, 65), (1f, 90)))
router.collision.z = CollisionZData(Array((6f, 1), (18f, 50), (30f, 150), (36f, 350), (39f, 900)))
router.maxForwardSpeed = 60f
router.mass = 60f
switchblade.Name = "switchblade"
switchblade.MaxHealth = 1750
switchblade.Damageable = true
switchblade.Repairable = true
switchblade.RepairIfDestroyed = false
switchblade.MaxShields = 350
switchblade.Seats += 0 -> normalSeat
switchblade.controlledWeapons(seat = 0, weapon = 1)
switchblade.Weapons += 1 -> scythe
switchblade.MountPoints += 1 -> MountInfo(0)
switchblade.MountPoints += 2 -> MountInfo(0)
switchblade.subsystems = controlSubsystem
switchblade.TrunkSize = InventoryTile.Tile1511
switchblade.TrunkOffset = 30
switchblade.TrunkLocation = Vector3(-2.5f, 0f, 0f)
switchblade.Deployment = true
switchblade.DeployTime = 2000
switchblade.UndeployTime = 2000
switchblade.AutoPilotSpeeds = (22, 8)
switchblade.Packet = variantConverter
switchblade.DestroyedModel = Some(DestroyedVehicle.Switchblade)
switchblade.RadiationShielding = 0.5f
switchblade.Subtract.Damage0 = 5
switchblade.Subtract.Damage1 = 5
switchblade.JackingDuration = Array(0, 20, 7, 5)
switchblade.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
switchblade.DrownAtMaxDepth = true
switchblade.MaxDepth = 2
switchblade.UnderwaterLifespan(
suffocation = 45000L,
recovery = 5000L
) //but the switchblade hovers over water, so ...?
switchblade.Geometry = GeometryForm.representByCylinder(radius = 2.4335f, height = 2.73438f)
switchblade.collision.avatarCollisionDamageMax = 35
switchblade.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 13), (0.5f, 35), (0.75f, 65), (1f, 90)))
switchblade.collision.z = CollisionZData(Array((6f, 1), (18f, 50), (30f, 150), (36f, 350), (39f, 800)))
switchblade.maxForwardSpeed = 80f
switchblade.mass = 63.9f
flail.Name = "flail"
flail.MaxHealth = 2400
flail.Damageable = true
flail.Repairable = true
flail.RepairIfDestroyed = false
flail.MaxShields = 480
flail.Seats += 0 -> normalSeat
flail.controlledWeapons(seat = 0, weapon = 1)
flail.Weapons += 1 -> flail_weapon
flail.Utilities += 2 -> UtilityType.targeting_laser_dispenser
flail.MountPoints += 1 -> MountInfo(0)
flail.subsystems = controlSubsystem
flail.TrunkSize = InventoryTile.Tile1511
flail.TrunkOffset = 30
flail.TrunkLocation = Vector3(-3.75f, 0f, 0f)
flail.Deployment = true
flail.DeployTime = 5500
flail.UndeployTime = 5500
flail.AutoPilotSpeeds = (14, 6)
flail.Packet = variantConverter
flail.DestroyedModel = Some(DestroyedVehicle.Flail)
flail.RadiationShielding = 0.5f
flail.Subtract.Damage1 = 7
flail.JackingDuration = Array(0, 20, 7, 5)
flail.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
flail.DrownAtMaxDepth = true
flail.MaxDepth = 2
flail.UnderwaterLifespan(suffocation = 45000L, recovery = 5000L) //but the flail hovers over water, so ...?
flail.Geometry = GeometryForm.representByCylinder(radius = 2.1875f, height = 2.21875f)
flail.collision.avatarCollisionDamageMax = 175
flail.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 12), (0.5f, 35), (0.75f, 65), (1f, 90)))
flail.collision.z = CollisionZData(Array((6f, 1), (18f, 50), (30f, 150), (36f, 350), (39f, 900)))
flail.maxForwardSpeed = 55f
flail.mass = 73.5f
}
/**
* Initialize flight `VehicleDefinition` globals.
*/
private def init_flight_vehicles(): Unit = {
val liberatorForm = GeometryForm.representByCylinder(radius = 3.74615f, height = 2.51563f) _
val bailableSeat = new SeatDefinition() {
bailable = true
}
val flightSubsystems = List(VehicleSubsystemEntry.Controls, VehicleSubsystemEntry.Ejection)
val variantConverter = new VariantVehicleConverter
mosquito.Name = "mosquito"
mosquito.MaxHealth = 665
mosquito.Damageable = true
mosquito.Repairable = true
mosquito.RepairIfDestroyed = false
mosquito.MaxShields = 133
mosquito.CanFly = true
mosquito.Seats += 0 -> bailableSeat
mosquito.controlledWeapons(seat = 0, weapon = 1)
mosquito.Weapons += 1 -> rotarychaingun_mosquito
mosquito.MountPoints += 1 -> MountInfo(0)
mosquito.MountPoints += 2 -> MountInfo(0)
mosquito.subsystems = flightSubsystems :+ VehicleSubsystemEntry.MosquitoRadar
mosquito.TrunkSize = InventoryTile.Tile1111
mosquito.TrunkOffset = 30
mosquito.TrunkLocation = Vector3(-4.6f, 0f, 0f)
mosquito.AutoPilotSpeeds = (0, 6)
mosquito.Packet = variantConverter
mosquito.DestroyedModel = Some(DestroyedVehicle.Mosquito)
mosquito.JackingDuration = Array(0, 20, 7, 5)
mosquito.RadiationShielding = 0.5f
mosquito.DamageUsing = DamageCalculations.AgainstAircraft
mosquito.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
mosquito.DrownAtMaxDepth = true
mosquito.MaxDepth = 2 //flying vehicles will automatically disable
mosquito.Geometry = GeometryForm.representByCylinder(radius = 2.72108f, height = 2.5f)
mosquito.collision.avatarCollisionDamageMax = 50
mosquito.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 50), (0.5f, 100), (0.75f, 150), (1f, 200)))
mosquito.collision.z = CollisionZData(Array((3f, 1), (9f, 25), (15f, 50), (18f, 75), (19.5f, 100)))
mosquito.maxForwardSpeed = 120f
mosquito.mass = 53.6f
lightgunship.Name = "lightgunship" // Reaver
lightgunship.MaxHealth = 855 // Temporary - Correct Reaver Health from pre-"Coder Madness 2" Event
lightgunship.Damageable = true
lightgunship.Repairable = true
lightgunship.RepairIfDestroyed = false
lightgunship.MaxShields = 171 // Temporary - Correct Reaver Shields from pre-"Coder Madness 2" Event
lightgunship.CanFly = true
lightgunship.Seats += 0 -> bailableSeat
lightgunship.controlledWeapons(seat = 0, weapon = 1)
lightgunship.Weapons += 1 -> lightgunship_weapon_system
lightgunship.MountPoints += 1 -> MountInfo(0)
lightgunship.MountPoints += 2 -> MountInfo(0)
lightgunship.subsystems = flightSubsystems
lightgunship.TrunkSize = InventoryTile.Tile1511
lightgunship.TrunkOffset = 30
lightgunship.TrunkLocation = Vector3(-5.61f, 0f, 0f)
lightgunship.AutoPilotSpeeds = (0, 4)
lightgunship.Packet = variantConverter
lightgunship.DestroyedModel = Some(DestroyedVehicle.LightGunship)
lightgunship.RadiationShielding = 0.5f
lightgunship.Subtract.Damage1 = 3
lightgunship.JackingDuration = Array(0, 30, 10, 5)
lightgunship.DamageUsing = DamageCalculations.AgainstAircraft
lightgunship.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 250
Damage1 = 375
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
lightgunship.DrownAtMaxDepth = true
lightgunship.MaxDepth = 2 //flying vehicles will automatically disable
lightgunship.Geometry = GeometryForm.representByCylinder(radius = 2.375f, height = 1.98438f)
lightgunship.collision.avatarCollisionDamageMax = 75
lightgunship.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 60), (0.5f, 120), (0.75f, 180), (1f, 250)))
lightgunship.collision.z = CollisionZData(Array((3f, 1), (9f, 30), (15f, 60), (18f, 90), (19.5f, 125)))
lightgunship.maxForwardSpeed = 104f
lightgunship.mass = 51.1f
wasp.Name = "wasp"
wasp.MaxHealth = 515
wasp.Damageable = true
wasp.Repairable = true
wasp.RepairIfDestroyed = false
wasp.MaxShields = 103
wasp.CanFly = true
wasp.Seats += 0 -> bailableSeat
wasp.controlledWeapons(seat = 0, weapon = 1)
wasp.Weapons += 1 -> wasp_weapon_system
wasp.MountPoints += 1 -> MountInfo(0)
wasp.MountPoints += 2 -> MountInfo(0)
wasp.subsystems = flightSubsystems
wasp.TrunkSize = InventoryTile.Tile1111
wasp.TrunkOffset = 30
wasp.TrunkLocation = Vector3(-4.6f, 0f, 0f)
wasp.AutoPilotSpeeds = (0, 6)
wasp.Packet = variantConverter
wasp.DestroyedModel = Some(DestroyedVehicle.Mosquito) //set_resource_parent wasp game_objects mosquito
wasp.JackingDuration = Array(0, 20, 7, 5)
wasp.DamageUsing = DamageCalculations.AgainstAircraft
wasp.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
wasp.DrownAtMaxDepth = true
wasp.MaxDepth = 2 //flying vehicles will automatically disable
wasp.Geometry = GeometryForm.representByCylinder(radius = 2.88675f, height = 2.5f)
wasp.collision.avatarCollisionDamageMax = 50 //mosquito numbers
wasp.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 50), (0.5f, 100), (0.75f, 150), (1f, 200))) //mosquito numbers
wasp.collision.z = CollisionZData(Array((3f, 1), (9f, 25), (15f, 50), (18f, 75), (19.5f, 100))) //mosquito numbers
wasp.maxForwardSpeed = 120f
wasp.mass = 53.6f
liberator.Name = "liberator"
liberator.MaxHealth = 2500
liberator.Damageable = true
liberator.Repairable = true
liberator.RepairIfDestroyed = false
liberator.MaxShields = 500
liberator.CanFly = true
liberator.Seats += 0 -> bailableSeat //new SeatDefinition()
liberator.Seats += 1 -> bailableSeat
liberator.Seats += 2 -> bailableSeat
liberator.controlledWeapons(seat = 0, weapon = 3)
liberator.controlledWeapons(seat = 1, weapon = 4)
liberator.controlledWeapons(seat = 2, weapon = 5)
liberator.Weapons += 3 -> liberator_weapon_system
liberator.Weapons += 4 -> liberator_bomb_bay
liberator.Weapons += 5 -> liberator_25mm_cannon
liberator.MountPoints += 1 -> MountInfo(0)
liberator.MountPoints += 2 -> MountInfo(1)
liberator.MountPoints += 3 -> MountInfo(1)
liberator.MountPoints += 4 -> MountInfo(2)
liberator.subsystems = flightSubsystems
liberator.TrunkSize = InventoryTile.Tile1515
liberator.TrunkOffset = 30
liberator.TrunkLocation = Vector3(-0.76f, -1.88f, 0f)
liberator.AutoPilotSpeeds = (0, 4)
liberator.Packet = variantConverter
liberator.DestroyedModel = Some(DestroyedVehicle.Liberator)
liberator.RadiationShielding = 0.5f
liberator.Subtract.Damage1 = 5
liberator.JackingDuration = Array(0, 30, 10, 5)
liberator.DamageUsing = DamageCalculations.AgainstAircraft
liberator.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 250
Damage1 = 375
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
liberator.DrownAtMaxDepth = true
liberator.MaxDepth = 2 //flying vehicles will automatically disable
liberator.Geometry = liberatorForm
liberator.collision.avatarCollisionDamageMax = 100
liberator.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 60), (0.5f, 120), (0.75f, 180), (1f, 250)))
liberator.collision.z = CollisionZData(Array((3f, 1), (9f, 30), (15f, 60), (18f, 90), (19.5f, 125)))
liberator.maxForwardSpeed = 90f
liberator.mass = 82f
vulture.Name = "vulture"
vulture.MaxHealth = 2500
vulture.Damageable = true
vulture.Repairable = true
vulture.RepairIfDestroyed = false
vulture.MaxShields = 500
vulture.CanFly = true
vulture.Seats += 0 -> bailableSeat //new SeatDefinition()
vulture.Seats += 1 -> bailableSeat
vulture.Seats += 2 -> bailableSeat
vulture.controlledWeapons(seat = 0, weapon = 3)
vulture.controlledWeapons(seat = 1, weapon = 4)
vulture.controlledWeapons(seat = 2, weapon = 5)
vulture.Weapons += 3 -> vulture_nose_weapon_system
vulture.Weapons += 4 -> vulture_bomb_bay
vulture.Weapons += 5 -> vulture_tail_cannon
vulture.MountPoints += 1 -> MountInfo(0)
vulture.MountPoints += 2 -> MountInfo(1)
vulture.MountPoints += 3 -> MountInfo(1)
vulture.MountPoints += 4 -> MountInfo(2)
vulture.subsystems = flightSubsystems
vulture.TrunkSize = InventoryTile.Tile1611
vulture.TrunkOffset = 30
vulture.TrunkLocation = Vector3(-0.76f, -1.88f, 0f)
vulture.AutoPilotSpeeds = (0, 4)
vulture.Packet = variantConverter
vulture.DestroyedModel =
Some(DestroyedVehicle.Liberator) //add_property vulture destroyedphysics liberator_destroyed
vulture.RadiationShielding = 0.5f
vulture.Subtract.Damage1 = 5
vulture.JackingDuration = Array(0, 30, 10, 5)
vulture.DamageUsing = DamageCalculations.AgainstAircraft
vulture.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 250
Damage1 = 375
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
vulture.DrownAtMaxDepth = true
vulture.MaxDepth = 2 //flying vehicles will automatically disable
vulture.Geometry = liberatorForm
vulture.collision.avatarCollisionDamageMax = 100
vulture.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 60), (0.5f, 120), (0.75f, 180), (1f, 250)))
vulture.collision.z = CollisionZData(Array((3f, 1), (9f, 30), (15f, 60), (18f, 90), (19.5f, 125)))
vulture.maxForwardSpeed = 97f
vulture.mass = 82f
dropship.Name = "dropship" // Galaxy
dropship.MaxHealth = 5000
dropship.Damageable = true
dropship.Repairable = true
dropship.RepairDistance = 20
dropship.RepairIfDestroyed = false
dropship.MaxShields = 1000
dropship.CanFly = true
dropship.Seats += 0 -> bailableSeat //new SeatDefinition()
dropship.Seats += 1 -> bailableSeat
dropship.Seats += 2 -> bailableSeat
dropship.Seats += 3 -> bailableSeat
dropship.Seats += 4 -> bailableSeat
dropship.Seats += 5 -> bailableSeat
dropship.Seats += 6 -> bailableSeat
dropship.Seats += 7 -> bailableSeat
dropship.Seats += 8 -> bailableSeat
dropship.Seats += 9 -> new SeatDefinition() {
bailable = true
restriction = MaxOnly
}
dropship.Seats += 10 -> new SeatDefinition() {
bailable = true
restriction = MaxOnly
}
dropship.Seats += 11 -> bailableSeat
dropship.controlledWeapons(seat = 1, weapon = 12)
dropship.controlledWeapons(seat = 2, weapon = 13)
dropship.controlledWeapons(seat = 11, weapon = 14)
dropship.Weapons += 12 -> cannon_dropship_20mm
dropship.Weapons += 13 -> cannon_dropship_20mm
dropship.Weapons += 14 -> dropship_rear_turret
dropship.Cargo += 15 -> new CargoDefinition() {
restriction = SmallCargo
}
dropship.MountPoints += 1 -> MountInfo(0)
dropship.MountPoints += 2 -> MountInfo(11)
dropship.MountPoints += 3 -> MountInfo(1)
dropship.MountPoints += 4 -> MountInfo(2)
dropship.MountPoints += 5 -> MountInfo(3)
dropship.MountPoints += 6 -> MountInfo(4)
dropship.MountPoints += 7 -> MountInfo(5)
dropship.MountPoints += 8 -> MountInfo(6)
dropship.MountPoints += 9 -> MountInfo(7)
dropship.MountPoints += 10 -> MountInfo(8)
dropship.MountPoints += 11 -> MountInfo(9)
dropship.MountPoints += 12 -> MountInfo(10)
dropship.MountPoints += 13 -> MountInfo(15)
dropship.subsystems = flightSubsystems
dropship.TrunkSize = InventoryTile.Tile1612
dropship.TrunkOffset = 30
dropship.TrunkLocation = Vector3(-7.39f, -4.96f, 0f)
dropship.AutoPilotSpeeds = (0, 4)
dropship.Packet = variantConverter
dropship.DestroyedModel = Some(DestroyedVehicle.Dropship)
dropship.RadiationShielding = 0.5f
dropship.Subtract.Damage1 = 7
dropship.JackingDuration = Array(0, 60, 20, 10)
dropship.DamageUsing = DamageCalculations.AgainstAircraft
dropship.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 300
Damage1 = 450
DamageRadius = 30
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
dropship.DrownAtMaxDepth = true
dropship.MaxDepth = 2
dropship.Geometry = GeometryForm.representByCylinder(radius = 10.52202f, height = 6.23438f)
dropship.collision.avatarCollisionDamageMax = 300
dropship.collision.xy = CollisionXYData(Array((0.1f, 5), (0.25f, 125), (0.5f, 250), (0.75f, 500), (1f, 1000)))
dropship.collision.z = CollisionZData(Array((3f, 5), (9f, 125), (15f, 250), (18f, 500), (19.5f, 1000)))
dropship.maxForwardSpeed = 80f
dropship.mass = 133f
galaxy_gunship.Name = "galaxy_gunship"
galaxy_gunship.MaxHealth = 6000
galaxy_gunship.Damageable = true
galaxy_gunship.Repairable = true
galaxy_gunship.RepairDistance = 20
galaxy_gunship.RepairIfDestroyed = false
galaxy_gunship.MaxShields = 1200
galaxy_gunship.CanFly = true
galaxy_gunship.Seats += 0 -> bailableSeat //new SeatDefinition()
galaxy_gunship.Seats += 1 -> bailableSeat
galaxy_gunship.Seats += 2 -> bailableSeat
galaxy_gunship.Seats += 3 -> bailableSeat
galaxy_gunship.Seats += 4 -> bailableSeat
galaxy_gunship.Seats += 5 -> bailableSeat
galaxy_gunship.controlledWeapons(seat = 1, weapon = 6)
galaxy_gunship.controlledWeapons(seat = 2, weapon = 7)
galaxy_gunship.controlledWeapons(seat = 3, weapon = 8)
galaxy_gunship.controlledWeapons(seat = 4, weapon = 9)
galaxy_gunship.controlledWeapons(seat = 5, weapon = 10)
galaxy_gunship.Weapons += 6 -> galaxy_gunship_cannon
galaxy_gunship.Weapons += 7 -> galaxy_gunship_cannon
galaxy_gunship.Weapons += 8 -> galaxy_gunship_tailgun
galaxy_gunship.Weapons += 9 -> galaxy_gunship_gun
galaxy_gunship.Weapons += 10 -> galaxy_gunship_gun
galaxy_gunship.MountPoints += 1 -> MountInfo(0)
galaxy_gunship.MountPoints += 2 -> MountInfo(3)
galaxy_gunship.MountPoints += 3 -> MountInfo(1)
galaxy_gunship.MountPoints += 4 -> MountInfo(2)
galaxy_gunship.MountPoints += 5 -> MountInfo(4)
galaxy_gunship.MountPoints += 6 -> MountInfo(5)
galaxy_gunship.subsystems = flightSubsystems
galaxy_gunship.TrunkSize = InventoryTile.Tile1816
galaxy_gunship.TrunkOffset = 30
galaxy_gunship.TrunkLocation = Vector3(-9.85f, 0f, 0f)
galaxy_gunship.AutoPilotSpeeds = (0, 4)
galaxy_gunship.Packet = variantConverter
galaxy_gunship.DestroyedModel =
Some(DestroyedVehicle.Dropship) //the adb calls out a galaxy_gunship_destroyed but no such asset exists
galaxy_gunship.RadiationShielding = 0.5f
galaxy_gunship.Subtract.Damage1 = 7
galaxy_gunship.JackingDuration = Array(0, 60, 20, 10)
galaxy_gunship.DamageUsing = DamageCalculations.AgainstAircraft
galaxy_gunship.Modifiers = GalaxyGunshipReduction(0.63f)
galaxy_gunship.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 300
Damage1 = 450
DamageRadius = 30
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
galaxy_gunship.DrownAtMaxDepth = true
galaxy_gunship.MaxDepth = 2
galaxy_gunship.Geometry = GeometryForm.representByCylinder(radius = 9.2382f, height = 5.01562f)
galaxy_gunship.collision.avatarCollisionDamageMax = 300
galaxy_gunship.collision.xy = CollisionXYData(Array((0.1f, 5), (0.25f, 125), (0.5f, 250), (0.75f, 500), (1f, 1000)))
galaxy_gunship.collision.z = CollisionZData(Array((3f, 5), (9f, 125), (15f, 250), (18f, 500), (19.5f, 1000)))
galaxy_gunship.maxForwardSpeed = 85f
galaxy_gunship.mass = 133f
lodestar.Name = "lodestar"
lodestar.MaxHealth = 5000
lodestar.Damageable = true
lodestar.Repairable = true
lodestar.RepairDistance = 20
lodestar.RepairIfDestroyed = false
lodestar.MaxShields = 1000
lodestar.CanFly = true
lodestar.Seats += 0 -> bailableSeat
lodestar.MountPoints += 1 -> MountInfo(0)
lodestar.MountPoints += 2 -> MountInfo(1)
lodestar.Cargo += 1 -> new CargoDefinition()
lodestar.Utilities += 2 -> UtilityType.lodestar_repair_terminal
lodestar.UtilityOffset += 2 -> Vector3(0, 20, 0)
lodestar.Utilities += 3 -> UtilityType.lodestar_repair_terminal
lodestar.UtilityOffset += 3 -> Vector3(0, -20, 0)
lodestar.Utilities += 4 -> UtilityType.multivehicle_rearm_terminal
lodestar.UtilityOffset += 4 -> Vector3(0, 20, 0)
lodestar.Utilities += 5 -> UtilityType.multivehicle_rearm_terminal
lodestar.UtilityOffset += 5 -> Vector3(0, -20, 0)
lodestar.Utilities += 6 -> UtilityType.bfr_rearm_terminal
lodestar.UtilityOffset += 6 -> Vector3(0, 20, 0)
lodestar.Utilities += 7 -> UtilityType.bfr_rearm_terminal
lodestar.UtilityOffset += 7 -> Vector3(0, -20, 0)
lodestar.subsystems = flightSubsystems
lodestar.TrunkSize = InventoryTile.Tile1612
lodestar.TrunkOffset = 30
lodestar.TrunkLocation = Vector3(6.85f, -6.8f, 0f)
lodestar.AutoPilotSpeeds = (0, 4)
lodestar.Packet = variantConverter
lodestar.DestroyedModel = Some(DestroyedVehicle.Lodestar)
lodestar.RadiationShielding = 0.5f
lodestar.Subtract.Damage1 = 7
lodestar.JackingDuration = Array(0, 60, 20, 10)
lodestar.DamageUsing = DamageCalculations.AgainstAircraft
lodestar.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 300
Damage1 = 450
DamageRadius = 30
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
lodestar.DrownAtMaxDepth = true
lodestar.MaxDepth = 2
lodestar.Geometry = GeometryForm.representByCylinder(radius = 7.8671f, height = 6.79688f) //TODO hexahedron
lodestar.collision.avatarCollisionDamageMax = 300
lodestar.collision.xy = CollisionXYData(Array((0.1f, 5), (0.25f, 125), (0.5f, 250), (0.75f, 500), (1f, 1000)))
lodestar.collision.z = CollisionZData(Array((3f, 5), (9f, 125), (15f, 250), (18f, 500), (19.5f, 1000)))
lodestar.maxForwardSpeed = 80f
lodestar.mass = 128.2f
phantasm.Name = "phantasm"
phantasm.MaxHealth = 2500
phantasm.Damageable = true
phantasm.Repairable = true
phantasm.RepairIfDestroyed = false
phantasm.MaxShields = 500
phantasm.CanCloak = true
phantasm.CanFly = true
phantasm.Seats += 0 -> bailableSeat
phantasm.Seats += 1 -> bailableSeat
phantasm.Seats += 2 -> bailableSeat
phantasm.Seats += 3 -> bailableSeat
phantasm.Seats += 4 -> bailableSeat
phantasm.MountPoints += 1 -> MountInfo(0)
phantasm.MountPoints += 2 -> MountInfo(1)
phantasm.MountPoints += 3 -> MountInfo(2)
phantasm.MountPoints += 4 -> MountInfo(3)
phantasm.MountPoints += 5 -> MountInfo(4)
phantasm.subsystems = flightSubsystems
phantasm.TrunkSize = InventoryTile.Tile1107
phantasm.TrunkOffset = 30
phantasm.TrunkLocation = Vector3(-6.16f, 0f, 0f)
phantasm.AutoPilotSpeeds = (0, 6)
phantasm.Packet = variantConverter
phantasm.DestroyedModel = None //the adb calls out a phantasm_destroyed but no such asset exists
phantasm.JackingDuration = Array(0, 60, 20, 10)
phantasm.RadiationShielding = 0.5f
phantasm.DamageUsing = DamageCalculations.AgainstAircraft
phantasm.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 100
Damage1 = 150
DamageRadius = 12
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
phantasm.DrownAtMaxDepth = true
phantasm.MaxDepth = 2
phantasm.Geometry = GeometryForm.representByCylinder(radius = 5.2618f, height = 3f)
phantasm.collision.avatarCollisionDamageMax = 100
phantasm.collision.xy = CollisionXYData(Array((0.1f, 1), (0.25f, 60), (0.5f, 120), (0.75f, 180), (1f, 250)))
phantasm.collision.z = CollisionZData(Array((3f, 1), (9f, 30), (15f, 60), (18f, 90), (19.5f, 125)))
phantasm.maxForwardSpeed = 140f
phantasm.mass = 100f
droppod.Name = "droppod"
droppod.MaxHealth = 20000
droppod.Damageable = false
droppod.Repairable = false
droppod.CanFly = true
droppod.Seats += 0 -> new SeatDefinition {
restriction = Unrestricted
}
droppod.MountPoints += 1 -> MountInfo(0)
droppod.TrunkSize = InventoryTile.None
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.DamageUsing = DamageCalculations.AgainstAircraft
droppod.DrownAtMaxDepth = false
droppod.mass = 2500f
orbital_shuttle.Name = "orbital_shuttle"
orbital_shuttle.MaxHealth = 20000
orbital_shuttle.Damageable = false
orbital_shuttle.Repairable = false
orbital_shuttle.CanFly = true
orbital_shuttle.CanBeOwned = None
orbital_shuttle.undergoesDecay = false
orbital_shuttle.Seats += 0 -> new SeatDefinition {
occupancy = 300
restriction = Unrestricted
}
/*
these are close to the mount point offsets in the ADB;
physically, they correlate to positions in the HART building rather than with the shuttle model by itself;
set the shuttle pad based on the zonemap extraction values then position the shuttle relative to that pad;
rotation based on the shuttle should place these offsets in the HART lobby whose gantry hall corresponds to that mount index
*/
orbital_shuttle.MountPoints += 1 -> MountInfo(0, Vector3(-62, 4, -28.2f))
orbital_shuttle.MountPoints += 2 -> MountInfo(0, Vector3(-62, 28, -28.2f))
orbital_shuttle.MountPoints += 3 -> MountInfo(0, Vector3(-62, 4, -18.2f))
orbital_shuttle.MountPoints += 4 -> MountInfo(0, Vector3(-62, 28, -18.2f))
orbital_shuttle.MountPoints += 5 -> MountInfo(0, Vector3(62, 4, -28.2f))
orbital_shuttle.MountPoints += 6 -> MountInfo(0, Vector3(62, 28, -28.2f))
orbital_shuttle.MountPoints += 7 -> MountInfo(0, Vector3(62, 4, -18.2f))
orbital_shuttle.MountPoints += 8 -> MountInfo(0, Vector3(62, 28, -18.2f))
orbital_shuttle.TrunkSize = InventoryTile.None
orbital_shuttle.Packet = new OrbitalShuttleConverter
orbital_shuttle.DeconstructionTime = None
orbital_shuttle.DestroyedModel = None
orbital_shuttle.DamageUsing = DamageCalculations.AgainstNothing
orbital_shuttle.DrownAtMaxDepth = false
orbital_shuttle.mass = 25000f
}
private def init_bfr_vehicles(): Unit = {
val driverSeat = new SeatDefinition() {
restriction = NoReinforcedOrMax
}
val bailableSeat = new SeatDefinition() {
restriction = NoReinforcedOrMax
bailable = true
}
val normalSeat = new SeatDefinition()
val bfrSubsystems = List(
VehicleSubsystemEntry.BattleframeMovementServos,
VehicleSubsystemEntry.BattleframeSensorArray,
VehicleSubsystemEntry.BattleframeShieldGenerator,
VehicleSubsystemEntry.BattleframeTrunk
)
val bfrGunnerSubsystems = List(
VehicleSubsystemEntry.BattleframeLeftArm,
VehicleSubsystemEntry.BattleframeRightArm,
VehicleSubsystemEntry.BattleframeLeftWeapon,
VehicleSubsystemEntry.BattleframeRightWeapon,
VehicleSubsystemEntry.BattleframeGunnerWeapon
) ++ bfrSubsystems
val bfrFlightSubsystems = List(
VehicleSubsystemEntry.BattleframeFlightLeftArm,
VehicleSubsystemEntry.BattleframeFlightRightArm,
VehicleSubsystemEntry.BattleframeFlightLeftWeapon,
VehicleSubsystemEntry.BattleframeFlightRightWeapon
) ++ bfrSubsystems ++ List(
VehicleSubsystemEntry.BattleframeFlightPod
)
val battleFrameConverter = new BattleFrameRoboticsConverter
aphelion_gunner.Name = "aphelion_gunner"
aphelion_gunner.MaxHealth = 4500
aphelion_gunner.Damageable = true
aphelion_gunner.Repairable = true
aphelion_gunner.RepairIfDestroyed = false
aphelion_gunner.shieldUiAttribute = 79
aphelion_gunner.MaxShields = 3000
aphelion_gunner.ShieldPeriodicDelay = 500
aphelion_gunner.ShieldDamageDelay = 3500
aphelion_gunner.ShieldAutoRecharge = 45
aphelion_gunner.ShieldAutoRechargeSpecial = 85
aphelion_gunner.DefaultShields = aphelion_gunner.MaxShields
aphelion_gunner.Seats += 0 -> driverSeat
aphelion_gunner.Seats += 1 -> normalSeat
aphelion_gunner.controlledWeapons(seat = 0, weapons = Set(2, 3))
aphelion_gunner.controlledWeapons(seat = 1, weapon = 4)
aphelion_gunner.Weapons += 2 -> aphelion_ppa_left
aphelion_gunner.Weapons += 3 -> aphelion_ppa_right
aphelion_gunner.Weapons += 4 -> aphelion_plasma_rocket_pod
aphelion_gunner.MountPoints += 1 -> MountInfo(0)
aphelion_gunner.MountPoints += 2 -> MountInfo(1)
aphelion_gunner.subsystems = bfrGunnerSubsystems
aphelion_gunner.TrunkSize = InventoryTile.Tile1518
aphelion_gunner.TrunkOffset = 30
aphelion_gunner.TrunkLocation = Vector3(0f, -2f, 0f)
aphelion_gunner.AutoPilotSpeeds = (5, 1)
aphelion_gunner.Packet = battleFrameConverter
aphelion_gunner.DestroyedModel = None
aphelion_gunner.destructionDelay = Some(4000L)
aphelion_gunner.JackingDuration = Array(0, 62, 60, 30)
aphelion_gunner.RadiationShielding = 0.5f
aphelion_gunner.DamageUsing = DamageCalculations.AgainstBfr
aphelion_gunner.Model = BfrResolutions.calculate
aphelion_gunner.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 400
Damage1 = 500
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
aphelion_gunner.DrownAtMaxDepth = true
aphelion_gunner.MaxDepth = 5.09375f
aphelion_gunner.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
aphelion_gunner.Geometry = GeometryForm.representByCylinder(radius = 1.2618f, height = 6.01562f)
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.z = CollisionZData(Array((25f, 2), (40f, 4), (60f, 8), (85f, 16), (115f, 32)))
aphelion_gunner.maxForwardSpeed = 17
aphelion_gunner.mass = 615.1f
colossus_gunner.Name = "colossus_gunner"
colossus_gunner.MaxHealth = 4500
colossus_gunner.Damageable = true
colossus_gunner.Repairable = true
colossus_gunner.RepairIfDestroyed = false
colossus_gunner.shieldUiAttribute = 79
colossus_gunner.MaxShields = 3000
colossus_gunner.ShieldPeriodicDelay = 500
colossus_gunner.ShieldDamageDelay = 3500
colossus_gunner.ShieldAutoRecharge = 45
colossus_gunner.ShieldAutoRechargeSpecial = 85
colossus_gunner.DefaultShields = colossus_gunner.MaxShields
colossus_gunner.Seats += 0 -> driverSeat
colossus_gunner.Seats += 1 -> normalSeat
colossus_gunner.controlledWeapons(seat = 0, weapons = Set(2, 3))
colossus_gunner.controlledWeapons(seat = 1, weapon = 4)
colossus_gunner.Weapons += 2 -> colossus_tank_cannon_left
colossus_gunner.Weapons += 3 -> colossus_tank_cannon_right
colossus_gunner.Weapons += 4 -> colossus_dual_100mm_cannons
colossus_gunner.MountPoints += 1 -> MountInfo(0)
colossus_gunner.MountPoints += 2 -> MountInfo(1)
colossus_gunner.subsystems = bfrGunnerSubsystems
colossus_gunner.TrunkSize = InventoryTile.Tile1518
colossus_gunner.TrunkOffset = 30
colossus_gunner.TrunkLocation = Vector3(0f, -5f, 0f)
colossus_gunner.AutoPilotSpeeds = (5, 1)
colossus_gunner.Packet = battleFrameConverter
colossus_gunner.DestroyedModel = None
colossus_gunner.destructionDelay = Some(4000L)
colossus_gunner.JackingDuration = Array(0, 62, 60, 30)
colossus_gunner.RadiationShielding = 0.5f
colossus_gunner.DamageUsing = DamageCalculations.AgainstBfr
colossus_gunner.Model = BfrResolutions.calculate
colossus_gunner.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 400
Damage1 = 500
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
colossus_gunner.DrownAtMaxDepth = true
colossus_gunner.MaxDepth = 5.515625f
colossus_gunner.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
colossus_gunner.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 5.984375f)
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.z = CollisionZData(Array((25f, 2), (40f, 4), (60f, 8), (85f, 16), (115f, 32)))
colossus_gunner.maxForwardSpeed = 17
colossus_gunner.mass = 709.7f
peregrine_gunner.Name = "peregrine_gunner"
peregrine_gunner.MaxHealth = 4500
peregrine_gunner.Damageable = true
peregrine_gunner.Repairable = true
peregrine_gunner.RepairIfDestroyed = false
peregrine_gunner.shieldUiAttribute = 79
peregrine_gunner.MaxShields = 3000
peregrine_gunner.ShieldPeriodicDelay = 500
peregrine_gunner.ShieldDamageDelay = 3500
peregrine_gunner.ShieldAutoRecharge = 45
peregrine_gunner.ShieldAutoRechargeSpecial = 85
peregrine_gunner.DefaultShields = peregrine_gunner.MaxShields
peregrine_gunner.Seats += 0 -> driverSeat
peregrine_gunner.Seats += 1 -> normalSeat
peregrine_gunner.controlledWeapons(seat = 0, weapons = Set(2, 3))
peregrine_gunner.controlledWeapons(seat = 1, weapon = 4)
peregrine_gunner.Weapons += 2 -> peregrine_dual_machine_gun_left
peregrine_gunner.Weapons += 3 -> peregrine_dual_machine_gun_right
peregrine_gunner.Weapons += 4 -> peregrine_particle_cannon
peregrine_gunner.MountPoints += 1 -> MountInfo(0)
peregrine_gunner.MountPoints += 2 -> MountInfo(1)
peregrine_gunner.subsystems = bfrGunnerSubsystems
peregrine_gunner.TrunkSize = InventoryTile.Tile1518
peregrine_gunner.TrunkOffset = 30
peregrine_gunner.TrunkLocation = Vector3(0f, -5f, 0f)
peregrine_gunner.AutoPilotSpeeds = (5, 1)
peregrine_gunner.Packet = battleFrameConverter
peregrine_gunner.DestroyedModel = None
peregrine_gunner.destructionDelay = Some(4000L)
peregrine_gunner.JackingDuration = Array(0, 62, 60, 30)
peregrine_gunner.RadiationShielding = 0.5f
peregrine_gunner.DamageUsing = DamageCalculations.AgainstBfr
peregrine_gunner.Model = BfrResolutions.calculate
peregrine_gunner.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 400
Damage1 = 500
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
peregrine_gunner.DrownAtMaxDepth = true
peregrine_gunner.MaxDepth = 6.03125f
peregrine_gunner.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
peregrine_gunner.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 6.421875f)
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.z = CollisionZData(Array((25f, 2), (40f, 4), (60f, 8), (85f, 16), (115f, 32)))
peregrine_gunner.maxForwardSpeed = 17
peregrine_gunner.mass = 713f
val battleFrameFlightConverter = new BattleFrameFlightConverter
aphelion_flight.Name = "aphelion_flight"
aphelion_flight.MaxHealth = 3500
aphelion_flight.Damageable = true
aphelion_flight.Repairable = true
aphelion_flight.RepairIfDestroyed = false
aphelion_flight.CanFly = true
aphelion_flight.shieldUiAttribute = 79
aphelion_flight.MaxShields = 2500
aphelion_flight.ShieldPeriodicDelay = 500
aphelion_flight.ShieldDamageDelay = 3500
aphelion_flight.ShieldAutoRecharge = 12 //12.5
aphelion_flight.ShieldAutoRechargeSpecial = 25
aphelion_flight.ShieldDrain = 30
aphelion_flight.DefaultShields = aphelion_flight.MaxShields
aphelion_flight.Seats += 0 -> bailableSeat
aphelion_flight.controlledWeapons(seat = 0, weapons = Set(1, 2))
aphelion_flight.Weapons += 1 -> aphelion_ppa_left
aphelion_flight.Weapons += 2 -> aphelion_ppa_right
aphelion_flight.MountPoints += 1 -> MountInfo(0)
aphelion_flight.subsystems = bfrFlightSubsystems
aphelion_flight.TrunkSize = InventoryTile.Tile1511
aphelion_flight.TrunkOffset = 30
aphelion_flight.TrunkLocation = Vector3(0f, -2f, 0f)
aphelion_flight.AutoPilotSpeeds = (5, 1)
aphelion_flight.Packet = battleFrameFlightConverter
aphelion_flight.DestroyedModel = None
aphelion_flight.destructionDelay = Some(4000L)
aphelion_flight.JackingDuration = Array(0, 62, 60, 30)
aphelion_flight.RadiationShielding = 0.5f
aphelion_flight.DamageUsing = DamageCalculations.AgainstBfr
aphelion_flight.Model = BfrResolutions.calculate
aphelion_flight.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 400
Damage1 = 500
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
aphelion_flight.DrownAtMaxDepth = true
aphelion_flight.MaxDepth = 5.09375f
aphelion_flight.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
aphelion_flight.Geometry = GeometryForm.representByCylinder(radius = 1.98045f, height = 6.03125f)
aphelion_flight.MaxCapacitor = 156
aphelion_flight.DefaultCapacitor = aphelion_flight.MaxCapacitor
aphelion_flight.CapacitorDrain = 16
aphelion_flight.CapacitorDrainSpecial = 3
aphelion_flight.CapacitorRecharge = 42
aphelion_flight.collision.avatarCollisionDamageMax = 300
aphelion_flight.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60)))
aphelion_flight.collision.z = CollisionZData(Array((25f, 2), (40f, 4), (60f, 8), (85f, 16), (115f, 32)))
aphelion_flight.maxForwardSpeed = 35
aphelion_flight.mass = 615.1f
colossus_flight.Name = "colossus_flight"
colossus_flight.MaxHealth = 3500
colossus_flight.Damageable = true
colossus_flight.Repairable = true
colossus_flight.RepairIfDestroyed = false
colossus_flight.CanFly = true
colossus_flight.shieldUiAttribute = 79
colossus_flight.MaxShields = 2500
colossus_flight.ShieldPeriodicDelay = 500
colossus_flight.ShieldDamageDelay = 3500
colossus_flight.ShieldAutoRecharge = 12 //12.5
colossus_flight.ShieldAutoRechargeSpecial = 25
colossus_flight.ShieldDrain = 30
colossus_flight.DefaultShields = colossus_flight.MaxShields
colossus_flight.Seats += 0 -> bailableSeat
colossus_flight.controlledWeapons(seat = 0, weapons = Set(1, 2))
colossus_flight.Weapons += 1 -> colossus_tank_cannon_left
colossus_flight.Weapons += 2 -> colossus_tank_cannon_right
colossus_flight.MountPoints += 1 -> MountInfo(0)
colossus_flight.subsystems = bfrFlightSubsystems
colossus_flight.TrunkSize = InventoryTile.Tile1511
colossus_flight.TrunkOffset = 30
colossus_flight.TrunkLocation = Vector3(0f, -5f, 0f)
colossus_flight.AutoPilotSpeeds = (5, 1)
colossus_flight.Packet = battleFrameFlightConverter
colossus_flight.DestroyedModel = None
colossus_flight.destructionDelay = Some(4000L)
colossus_flight.JackingDuration = Array(0, 62, 60, 30)
colossus_flight.RadiationShielding = 0.5f
colossus_flight.DamageUsing = DamageCalculations.AgainstBfr
colossus_flight.Model = BfrResolutions.calculate
colossus_flight.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 400
Damage1 = 500
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
colossus_flight.DrownAtMaxDepth = true
colossus_flight.MaxDepth = 5.515625f
colossus_flight.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
colossus_flight.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 5.984375f)
colossus_flight.MaxCapacitor = 156
colossus_flight.DefaultCapacitor = colossus_flight.MaxCapacitor
colossus_flight.CapacitorDrain = 16
colossus_flight.CapacitorDrainSpecial = 3
colossus_flight.CapacitorRecharge = 42
colossus_flight.collision.avatarCollisionDamageMax = 300
colossus_flight.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60)))
colossus_flight.collision.z = CollisionZData(Array((25f, 2), (40f, 4), (60f, 8), (85f, 16), (115f, 32)))
colossus_flight.maxForwardSpeed = 34
colossus_flight.mass = 709.7f
peregrine_flight.Name = "peregrine_flight"
peregrine_flight.MaxHealth = 3500
peregrine_flight.Damageable = true
peregrine_flight.Repairable = true
peregrine_flight.RepairIfDestroyed = false
peregrine_flight.CanFly = true
peregrine_flight.shieldUiAttribute = 79
peregrine_flight.MaxShields = 2500
peregrine_flight.ShieldPeriodicDelay = 500
peregrine_flight.ShieldDamageDelay = 3500
peregrine_flight.ShieldAutoRecharge = 12 //12.5
peregrine_flight.ShieldAutoRechargeSpecial = 25
peregrine_flight.ShieldDrain = 30
peregrine_flight.DefaultShields = peregrine_flight.MaxShields
peregrine_flight.Seats += 0 -> bailableSeat
peregrine_flight.controlledWeapons(seat = 0, weapons = Set(1, 2))
peregrine_flight.Weapons += 1 -> peregrine_dual_machine_gun_left
peregrine_flight.Weapons += 2 -> peregrine_dual_machine_gun_right
peregrine_flight.MountPoints += 1 -> MountInfo(0)
peregrine_flight.subsystems = bfrFlightSubsystems
peregrine_flight.TrunkSize = InventoryTile.Tile1511
peregrine_flight.TrunkOffset = 30
peregrine_flight.TrunkLocation = Vector3(0f, -5f, 0f)
peregrine_flight.AutoPilotSpeeds = (5, 1)
peregrine_flight.Packet = battleFrameFlightConverter
peregrine_flight.DestroyedModel = None
peregrine_flight.destructionDelay = Some(4000L)
peregrine_flight.JackingDuration = Array(0, 62, 60, 30)
peregrine_flight.RadiationShielding = 0.5f
peregrine_flight.DamageUsing = DamageCalculations.AgainstBfr
peregrine_flight.Model = BfrResolutions.calculate
peregrine_flight.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 400
Damage1 = 500
DamageRadius = 10
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
peregrine_flight.DrownAtMaxDepth = true
peregrine_flight.MaxDepth = 6.03125f
peregrine_flight.UnderwaterLifespan(suffocation = 60000L, recovery = 30000L)
peregrine_flight.Geometry = GeometryForm.representByCylinder(radius = 3.60935f, height = 6.421875f)
peregrine_flight.MaxCapacitor = 156
peregrine_flight.DefaultCapacitor = peregrine_flight.MaxCapacitor
peregrine_flight.CapacitorDrain = 16
peregrine_flight.CapacitorDrainSpecial = 3
peregrine_flight.CapacitorRecharge = 42
peregrine_flight.collision.avatarCollisionDamageMax = 300
peregrine_flight.collision.xy = CollisionXYData(Array((0.2f, 1), (0.35f, 5), (0.55f, 20), (0.75f, 40), (1f, 60)))
peregrine_flight.collision.z = CollisionZData(Array((25f, 2), (40f, 4), (60f, 8), (85f, 16), (115f, 32)))
peregrine_flight.maxForwardSpeed = 35
peregrine_flight.mass = 713f
}
/**
* Initialize `Deployable` globals.
*/
private def init_deployables(): Unit = {
val mine = GeometryForm.representByCylinder(radius = 0.1914f, height = 0.0957f) _
val smallTurret = GeometryForm.representByCylinder(radius = 0.48435f, height = 1.23438f) _
val sensor = GeometryForm.representByCylinder(radius = 0.1914f, height = 1.21875f) _
val largeTurret = GeometryForm.representByCylinder(radius = 0.8437f, height = 2.29687f) _
boomer.Name = "boomer"
boomer.Descriptor = "Boomers"
boomer.MaxHealth = 100
boomer.Damageable = true
boomer.DamageableByFriendlyFire = false
boomer.Repairable = false
boomer.DeployCategory = DeployableCategory.Boomers
boomer.DeployTime = Duration.create(1000, "ms")
boomer.deployAnimation = DeployAnimation.Standard
boomer.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.Splash
SympatheticExplosion = true
Damage0 = 250
Damage1 = 750
Damage2 = 400
Damage3 = 400
Damage4 = 1850
DamageRadius = 5.1f
DamageAtEdge = 0.1f
Modifiers = ExplodingRadialDegrade
}
boomer.Geometry = mine
he_mine.Name = "he_mine"
he_mine.Descriptor = "Mines"
he_mine.MaxHealth = 100
he_mine.Damageable = true
he_mine.DamageableByFriendlyFire = false
he_mine.Repairable = false
he_mine.DeployTime = Duration.create(1000, "ms")
he_mine.deployAnimation = DeployAnimation.Standard
he_mine.triggerRadius = 3f
he_mine.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.Splash
SympatheticExplosion = true
Damage0 = 100
Damage1 = 750
Damage2 = 400
Damage3 = 565
Damage4 = 1600
DamageRadius = 6.6f
DamageAtEdge = 0.25f
Modifiers = ExplodingRadialDegrade
}
he_mine.Geometry = mine
jammer_mine.Name = "jammer_mine"
jammer_mine.Descriptor = "JammerMines"
jammer_mine.MaxHealth = 100
jammer_mine.Damageable = true
jammer_mine.DamageableByFriendlyFire = false
jammer_mine.Repairable = false
jammer_mine.DeployTime = Duration.create(1000, "ms")
jammer_mine.deployAnimation = DeployAnimation.Standard
jammer_mine.DetonateOnJamming = false
jammer_mine.triggerRadius = 3f
jammer_mine.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.Splash
Damage0 = 0
DamageRadius = 10f
DamageAtEdge = 1.0f
AdditionalEffect = true
JammedEffectDuration += TargetValidation(
EffectTarget.Category.Player,
EffectTarget.Validation.Player
) -> 1000
JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.AMS
) -> 5000
JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.MotionSensor
) -> 30000
JammedEffectDuration += TargetValidation(
EffectTarget.Category.Deployable,
EffectTarget.Validation.Spitfire
) -> 30000
JammedEffectDuration += TargetValidation(
EffectTarget.Category.Turret,
EffectTarget.Validation.Turret
) -> 30000
JammedEffectDuration += TargetValidation(
EffectTarget.Category.Vehicle,
EffectTarget.Validation.VehicleNotAMS
) -> 10000
}
jammer_mine.Geometry = mine
spitfire_turret.Name = "spitfire_turret"
spitfire_turret.Descriptor = "Spitfires"
spitfire_turret.MaxHealth = 100
spitfire_turret.Damageable = true
spitfire_turret.Repairable = true
spitfire_turret.RepairIfDestroyed = false
spitfire_turret.WeaponPaths += 1 -> new mutable.HashMap()
spitfire_turret.WeaponPaths(1) += TurretUpgrade.None -> spitfire_weapon
spitfire_turret.ReserveAmmunition = false
spitfire_turret.DeployCategory = DeployableCategory.SmallTurrets
spitfire_turret.DeployTime = Duration.create(5000, "ms")
spitfire_turret.Model = ComplexDeployableResolutions.calculate
spitfire_turret.deployAnimation = DeployAnimation.Standard
spitfire_turret.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
spitfire_turret.Geometry = smallTurret
spitfire_turret.collision.xy = CollisionXYData(Array((0.01f, 10), (0.02f, 40), (0.03f, 60), (0.04f, 80), (0.05f, 100)))
spitfire_turret.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
spitfire_turret.mass = 5f
spitfire_cloaked.Name = "spitfire_cloaked"
spitfire_cloaked.Descriptor = "CloakingSpitfires"
spitfire_cloaked.MaxHealth = 100
spitfire_cloaked.Damageable = true
spitfire_cloaked.Repairable = true
spitfire_cloaked.RepairIfDestroyed = false
spitfire_cloaked.WeaponPaths += 1 -> new mutable.HashMap()
spitfire_cloaked.WeaponPaths(1) += TurretUpgrade.None -> spitfire_weapon
spitfire_cloaked.ReserveAmmunition = false
spitfire_cloaked.DeployCategory = DeployableCategory.SmallTurrets
spitfire_cloaked.DeployTime = Duration.create(5000, "ms")
spitfire_cloaked.deployAnimation = DeployAnimation.Standard
spitfire_cloaked.Model = ComplexDeployableResolutions.calculate
spitfire_cloaked.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 50
Damage1 = 75
DamageRadius = 8
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
spitfire_cloaked.Geometry = smallTurret
spitfire_cloaked.collision.xy = CollisionXYData(Array((0.01f, 10), (0.02f, 40), (0.03f, 60), (0.04f, 80), (0.05f, 100)))
spitfire_cloaked.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
spitfire_cloaked.mass = 5f
spitfire_aa.Name = "spitfire_aa"
spitfire_aa.Descriptor = "FlakSpitfires"
spitfire_aa.MaxHealth = 100
spitfire_aa.Damageable = true
spitfire_aa.Repairable = true
spitfire_aa.RepairIfDestroyed = false
spitfire_aa.WeaponPaths += 1 -> new mutable.HashMap()
spitfire_aa.WeaponPaths(1) += TurretUpgrade.None -> spitfire_aa_weapon
spitfire_aa.ReserveAmmunition = false
spitfire_aa.DeployCategory = DeployableCategory.SmallTurrets
spitfire_aa.DeployTime = Duration.create(5000, "ms")
spitfire_aa.deployAnimation = DeployAnimation.Standard
spitfire_aa.Model = ComplexDeployableResolutions.calculate
spitfire_aa.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 200
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
spitfire_aa.Geometry = smallTurret
spitfire_aa.collision.xy = CollisionXYData(Array((0.01f, 10), (0.02f, 40), (0.03f, 60), (0.04f, 80), (0.05f, 100)))
spitfire_aa.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
spitfire_aa.mass = 5f
motionalarmsensor.Name = "motionalarmsensor"
motionalarmsensor.Descriptor = "MotionSensors"
motionalarmsensor.MaxHealth = 100
motionalarmsensor.Damageable = true
motionalarmsensor.Repairable = true
motionalarmsensor.RepairIfDestroyed = false
motionalarmsensor.DeployTime = Duration.create(1000, "ms")
motionalarmsensor.deployAnimation = DeployAnimation.Standard
motionalarmsensor.Geometry = sensor
sensor_shield.Name = "sensor_shield"
sensor_shield.Descriptor = "SensorShields"
sensor_shield.MaxHealth = 100
sensor_shield.Damageable = true
sensor_shield.Repairable = true
sensor_shield.RepairIfDestroyed = false
sensor_shield.DeployTime = Duration.create(5000, "ms")
sensor_shield.deployAnimation = DeployAnimation.Standard
sensor_shield.Geometry = sensor
tank_traps.Name = "tank_traps"
tank_traps.Descriptor = "TankTraps"
tank_traps.MaxHealth = 5000
tank_traps.Damageable = true
tank_traps.Repairable = true
tank_traps.RepairIfDestroyed = false
tank_traps.DeployCategory = DeployableCategory.TankTraps
tank_traps.DeployTime = Duration.create(6000, "ms")
tank_traps.deployAnimation = DeployAnimation.Fdu
//tank_traps do not explode
tank_traps.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 10
Damage1 = 10
DamageRadius = 8
DamageAtEdge = 0.2f
Modifiers = ExplodingRadialDegrade
}
tank_traps.Geometry = GeometryForm.representByCylinder(radius = 2.89680997f, height = 3.57812f)
tank_traps.collision.xy = CollisionXYData(Array((0.01f, 5), (0.02f, 10), (0.03f, 15), (0.04f, 20), (0.05f, 25)))
tank_traps.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
tank_traps.Modifiers = TrapCollisionDamageMultiplier(5f) //10f
tank_traps.mass = 600f
val fieldTurretConverter = new FieldTurretConverter
portable_manned_turret.Name = "portable_manned_turret"
portable_manned_turret.Descriptor = "FieldTurrets"
portable_manned_turret.MaxHealth = 1000
portable_manned_turret.Damageable = true
portable_manned_turret.Repairable = true
portable_manned_turret.RepairIfDestroyed = false
portable_manned_turret.controlledWeapons(seat = 0, weapon = 1)
portable_manned_turret.WeaponPaths += 1 -> new mutable.HashMap()
portable_manned_turret.WeaponPaths(1) += TurretUpgrade.None -> energy_gun
portable_manned_turret.MountPoints += 1 -> MountInfo(0)
portable_manned_turret.MountPoints += 2 -> MountInfo(0)
portable_manned_turret.ReserveAmmunition = true
portable_manned_turret.FactionLocked = true
portable_manned_turret.Packet = fieldTurretConverter
portable_manned_turret.DeployCategory = DeployableCategory.FieldTurrets
portable_manned_turret.DeployTime = Duration.create(6000, "ms")
portable_manned_turret.deployAnimation = DeployAnimation.Fdu
portable_manned_turret.Model = ComplexDeployableResolutions.calculate
portable_manned_turret.RadiationShielding = 0.5f
portable_manned_turret.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.1f
Modifiers = ExplodingRadialDegrade
}
portable_manned_turret.Geometry = largeTurret
portable_manned_turret.collision.xy = CollisionXYData(Array((0.01f, 10), (0.02f, 40), (0.03f, 60), (0.04f, 80), (0.05f, 100)))
portable_manned_turret.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
portable_manned_turret.mass = 100f
portable_manned_turret_nc.Name = "portable_manned_turret_nc"
portable_manned_turret_nc.Descriptor = "FieldTurrets"
portable_manned_turret_nc.MaxHealth = 1000
portable_manned_turret_nc.Damageable = true
portable_manned_turret_nc.Repairable = true
portable_manned_turret_nc.RepairIfDestroyed = false
portable_manned_turret_nc.WeaponPaths += 1 -> new mutable.HashMap()
portable_manned_turret_nc.WeaponPaths(1) += TurretUpgrade.None -> energy_gun_nc
portable_manned_turret_nc.controlledWeapons(seat = 0, weapon = 1)
portable_manned_turret_nc.MountPoints += 1 -> MountInfo(0)
portable_manned_turret_nc.MountPoints += 2 -> MountInfo(0)
portable_manned_turret_nc.ReserveAmmunition = true
portable_manned_turret_nc.FactionLocked = true
portable_manned_turret_nc.Packet = fieldTurretConverter
portable_manned_turret_nc.DeployCategory = DeployableCategory.FieldTurrets
portable_manned_turret_nc.DeployTime = Duration.create(6000, "ms")
portable_manned_turret_nc.deployAnimation = DeployAnimation.Fdu
portable_manned_turret_nc.Model = ComplexDeployableResolutions.calculate
portable_manned_turret_nc.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.1f
Modifiers = ExplodingRadialDegrade
}
portable_manned_turret_nc.Geometry = largeTurret
portable_manned_turret_nc.collision.xy = CollisionXYData(Array((0.01f, 10), (0.02f, 40), (0.03f, 60), (0.04f, 80), (0.05f, 100)))
portable_manned_turret_nc.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
portable_manned_turret_nc.mass = 100f
portable_manned_turret_tr.Name = "portable_manned_turret_tr"
portable_manned_turret_tr.Descriptor = "FieldTurrets"
portable_manned_turret_tr.MaxHealth = 1000
portable_manned_turret_tr.Damageable = true
portable_manned_turret_tr.Repairable = true
portable_manned_turret_tr.RepairIfDestroyed = false
portable_manned_turret_tr.WeaponPaths += 1 -> new mutable.HashMap()
portable_manned_turret_tr.WeaponPaths(1) += TurretUpgrade.None -> energy_gun_tr
portable_manned_turret_tr.controlledWeapons(seat = 0, weapon = 1)
portable_manned_turret_tr.MountPoints += 1 -> MountInfo(0)
portable_manned_turret_tr.MountPoints += 2 -> MountInfo(0)
portable_manned_turret_tr.ReserveAmmunition = true
portable_manned_turret_tr.FactionLocked = true
portable_manned_turret_tr.Packet = fieldTurretConverter
portable_manned_turret_tr.DeployCategory = DeployableCategory.FieldTurrets
portable_manned_turret_tr.DeployTime = Duration.create(6000, "ms")
portable_manned_turret_tr.deployAnimation = DeployAnimation.Fdu
portable_manned_turret_tr.Model = ComplexDeployableResolutions.calculate
portable_manned_turret_tr.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.1f
Modifiers = ExplodingRadialDegrade
}
portable_manned_turret_tr.Geometry = largeTurret
portable_manned_turret_tr.collision.xy = CollisionXYData(Array((0.01f, 10), (0.02f, 40), (0.03f, 60), (0.04f, 80), (0.05f, 100)))
portable_manned_turret_tr.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
portable_manned_turret_tr.mass = 100f
portable_manned_turret_vs.Name = "portable_manned_turret_vs"
portable_manned_turret_vs.Descriptor = "FieldTurrets"
portable_manned_turret_vs.MaxHealth = 1000
portable_manned_turret_vs.Damageable = true
portable_manned_turret_vs.Repairable = true
portable_manned_turret_vs.RepairIfDestroyed = false
portable_manned_turret_vs.WeaponPaths += 1 -> new mutable.HashMap()
portable_manned_turret_vs.WeaponPaths(1) += TurretUpgrade.None -> energy_gun_vs
portable_manned_turret_vs.controlledWeapons(seat = 0, weapon = 1)
portable_manned_turret_vs.MountPoints += 1 -> MountInfo(0)
portable_manned_turret_vs.MountPoints += 2 -> MountInfo(0)
portable_manned_turret_vs.ReserveAmmunition = true
portable_manned_turret_vs.FactionLocked = true
portable_manned_turret_vs.Packet = fieldTurretConverter
portable_manned_turret_vs.DeployCategory = DeployableCategory.FieldTurrets
portable_manned_turret_vs.DeployTime = Duration.create(6000, "ms")
portable_manned_turret_vs.deployAnimation = DeployAnimation.Fdu
portable_manned_turret_vs.Model = ComplexDeployableResolutions.calculate
portable_manned_turret_vs.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 300
DamageRadius = 8
DamageAtEdge = 0.1f
Modifiers = ExplodingRadialDegrade
}
portable_manned_turret_vs.Geometry = largeTurret
portable_manned_turret_vs.collision.xy = CollisionXYData(Array((0.01f, 10), (0.02f, 40), (0.03f, 60), (0.04f, 80), (0.05f, 100)))
portable_manned_turret_vs.collision.z = CollisionZData(Array((4f, 10), (4.25f, 40), (4.5f, 60), (4.75f, 80), (5f, 100)))
portable_manned_turret_vs.mass = 100f
deployable_shield_generator.Name = "deployable_shield_generator"
deployable_shield_generator.Descriptor = "ShieldGenerators"
deployable_shield_generator.MaxHealth = 1700
deployable_shield_generator.Damageable = true
deployable_shield_generator.Repairable = true
deployable_shield_generator.RepairIfDestroyed = false
deployable_shield_generator.DeployTime = Duration.create(6000, "ms")
deployable_shield_generator.deployAnimation = DeployAnimation.Fdu
deployable_shield_generator.Model = ComplexDeployableResolutions.calculate
deployable_shield_generator.Geometry = GeometryForm.representByCylinder(radius = 0.6562f, height = 2.17188f)
router_telepad_deployable.Name = "router_telepad_deployable"
router_telepad_deployable.MaxHealth = 100
router_telepad_deployable.Damageable = true
router_telepad_deployable.Repairable = false
router_telepad_deployable.DeployTime = Duration.create(1, "ms")
router_telepad_deployable.DeployCategory = DeployableCategory.Telepads
router_telepad_deployable.Packet = new TelepadDeployableConverter
router_telepad_deployable.Model = SimpleResolutions.calculate
router_telepad_deployable.Geometry = GeometryForm.representByRaisedSphere(radius = 1.2344f)
internal_router_telepad_deployable.Name = "router_telepad_deployable"
internal_router_telepad_deployable.MaxHealth = 1
internal_router_telepad_deployable.Damageable = false
internal_router_telepad_deployable.Repairable = false
internal_router_telepad_deployable.DeployTime = Duration.create(1, "ms")
internal_router_telepad_deployable.DeployCategory = DeployableCategory.Telepads
internal_router_telepad_deployable.Packet = new InternalTelepadDeployableConverter
}
/**
* Initialize `Miscellaneous` globals.
*/
private def initMiscellaneous(): Unit = {
val vterm = GeometryForm.representByCylinder(radius = 1.03515f, height = 1.09374f) _
ams_respawn_tube.Name = "ams_respawn_tube"
ams_respawn_tube.Delay = 10 // Temporary -- Default value is 15
ams_respawn_tube.SpecificPointFunc = SpawnPoint.AMS
ams_respawn_tube.Damageable = false
ams_respawn_tube.Repairable = false
matrix_terminala.Name = "matrix_terminala"
matrix_terminala.Damageable = false
matrix_terminala.Repairable = false
matrix_terminalb.Name = "matrix_terminalb"
matrix_terminalb.Damageable = false
matrix_terminalb.Repairable = false
matrix_terminalc.Name = "matrix_terminalc"
matrix_terminalc.Damageable = false
matrix_terminalc.Repairable = false
spawn_terminal.Name = "spawn_terminal"
spawn_terminal.Damageable = false
spawn_terminal.Repairable = false
spawn_terminal.autoRepair = AutoRepairStats(1, 5000, 200, 1)
order_terminal.Name = "order_terminal"
order_terminal.Tab += 0 -> {
val tab = EquipmentPage(
EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons
)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
order_terminal.Tab += 1 -> ArmorWithAmmoPage(
EquipmentTerminalDefinition.suits ++ EquipmentTerminalDefinition.maxSuits,
EquipmentTerminalDefinition.maxAmmo
)
order_terminal.Tab += 2 -> EquipmentPage(
EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons
)
order_terminal.Tab += 3 -> EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition)
order_terminal.Tab += 4 -> {
val tab = InfantryLoadoutPage()
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
order_terminal.SellEquipmentByDefault = true
order_terminal.MaxHealth = 500
order_terminal.Damageable = true
order_terminal.Repairable = true
order_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
order_terminal.RepairIfDestroyed = true
order_terminal.Subtract.Damage1 = 8
order_terminal.Geometry = GeometryForm.representByCylinder(radius = 0.8438f, height = 1.3f)
order_terminala.Name = "order_terminala"
order_terminala.Tab += 0 -> {
val tab = EquipmentPage(
EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons
)
tab.Exclude = List(NoCavernEquipmentRule)
tab
}
order_terminala.Tab += 1 -> ArmorWithAmmoPage(
EquipmentTerminalDefinition.suits,
EquipmentTerminalDefinition.maxAmmo
)
order_terminala.Tab += 2 -> EquipmentPage(
EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons
)
order_terminala.Tab += 3 -> EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition)
order_terminala.Tab += 4 -> {
val tab = InfantryLoadoutPage()
tab.Exclude = List(NoExoSuitRule(ExoSuitType.MAX), NoCavernEquipmentRule)
tab
}
order_terminala.SellEquipmentByDefault = true
order_terminala.Damageable = false
order_terminala.Repairable = false
order_terminalb.Name = "order_terminalb"
order_terminalb.Tab += 0 -> {
val tab = EquipmentPage(
EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons
)
tab.Exclude = List(NoCavernEquipmentRule)
tab
}
order_terminalb.Tab += 1 -> ArmorWithAmmoPage(
EquipmentTerminalDefinition.suits,
EquipmentTerminalDefinition.maxAmmo
)
order_terminalb.Tab += 2 -> EquipmentPage(
EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons
)
order_terminalb.Tab += 3 -> EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition)
order_terminalb.Tab += 4 -> {
val tab = InfantryLoadoutPage()
tab.Exclude = List(NoExoSuitRule(ExoSuitType.MAX), NoCavernEquipmentRule)
tab
}
order_terminalb.SellEquipmentByDefault = true
order_terminalb.Damageable = false
order_terminalb.Repairable = false
vanu_equipment_term.Name = "vanu_equipment_term"
vanu_equipment_term.Tab += 0 -> EquipmentPage(
EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons
)
vanu_equipment_term.Tab += 1 -> ArmorWithAmmoPage(
EquipmentTerminalDefinition.suits ++ EquipmentTerminalDefinition.maxSuits,
EquipmentTerminalDefinition.maxAmmo
)
vanu_equipment_term.Tab += 2 -> EquipmentPage(
EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons
)
vanu_equipment_term.Tab += 3 -> EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition)
vanu_equipment_term.Tab += 4 -> InfantryLoadoutPage()
vanu_equipment_term.SellEquipmentByDefault = true
vanu_equipment_term.Damageable = false
vanu_equipment_term.Repairable = false
cert_terminal.Name = "cert_terminal"
val certs = Certification.values.filter(_.cost != 0)
val page = CertificationPage(certs)
cert_terminal.Tab += 0 -> page
cert_terminal.MaxHealth = 500
cert_terminal.Damageable = true
cert_terminal.Repairable = true
cert_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
cert_terminal.RepairIfDestroyed = true
cert_terminal.Subtract.Damage1 = 8
cert_terminal.Geometry = GeometryForm.representByCylinder(radius = 0.66405f, height = 1.09374f)
implant_terminal_mech.Name = "implant_terminal_mech"
implant_terminal_mech.MaxHealth = 1500 //TODO 1000; right now, 1000 (mech) + 500 (interface)
implant_terminal_mech.Damageable = true
implant_terminal_mech.Repairable = true
implant_terminal_mech.autoRepair = AutoRepairStats(1.6f, 5000, 2400, 0.05f)
implant_terminal_mech.RepairIfDestroyed = true
implant_terminal_mech.RadiationShielding = 0.5f
implant_terminal_mech.Geometry = GeometryForm.representByCylinder(radius = 2.7813f, height = 6.4375f)
implant_terminal_interface.Name = "implant_terminal_interface"
implant_terminal_interface.Tab += 0 -> ImplantPage(ImplantTerminalDefinition.implants)
implant_terminal_interface.MaxHealth = 500
implant_terminal_interface.Damageable = false //TODO true
implant_terminal_interface.Repairable = true
implant_terminal_interface.autoRepair = AutoRepairStats(1, 5000, 200, 1)
implant_terminal_interface.RepairIfDestroyed = true
//TODO will need geometry when Damageable = true
ground_vehicle_terminal.Name = "ground_vehicle_terminal"
ground_vehicle_terminal.Tab += 46769 -> {
val tab = VehiclePage(
VehicleTerminalDefinition.groundVehicles,
VehicleTerminalDefinition.trunk
)
tab.Exclude = List(CavernVehicleQuestion)
tab
}
ground_vehicle_terminal.Tab += 4 -> {
val tab = VehicleLoadoutPage(10)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
ground_vehicle_terminal.MaxHealth = 500
ground_vehicle_terminal.Damageable = true
ground_vehicle_terminal.Repairable = true
ground_vehicle_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
ground_vehicle_terminal.RepairIfDestroyed = true
ground_vehicle_terminal.Subtract.Damage1 = 8
ground_vehicle_terminal.Geometry = vterm
air_vehicle_terminal.Name = "air_vehicle_terminal"
air_vehicle_terminal.Tab += 46769 -> VehiclePage(
VehicleTerminalDefinition.flight1Vehicles,
VehicleTerminalDefinition.trunk
)
air_vehicle_terminal.Tab += 4 -> {
val tab = VehicleLoadoutPage(10)
tab.Exclude = List(CavernVehicleQuestion, CavernEquipmentQuestion)
tab
}
air_vehicle_terminal.MaxHealth = 500
air_vehicle_terminal.Damageable = true
air_vehicle_terminal.Repairable = true
air_vehicle_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
air_vehicle_terminal.RepairIfDestroyed = true
air_vehicle_terminal.Subtract.Damage1 = 8
air_vehicle_terminal.Geometry = vterm
dropship_vehicle_terminal.Name = "dropship_vehicle_terminal"
dropship_vehicle_terminal.Tab += 46769 -> VehiclePage(
VehicleTerminalDefinition.flight1Vehicles ++ VehicleTerminalDefinition.flight2Vehicles,
VehicleTerminalDefinition.trunk
)
dropship_vehicle_terminal.Tab += 4 -> {
val tab = VehicleLoadoutPage(10)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
dropship_vehicle_terminal.MaxHealth = 500
dropship_vehicle_terminal.Damageable = true
dropship_vehicle_terminal.Repairable = true
dropship_vehicle_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
dropship_vehicle_terminal.RepairIfDestroyed = true
dropship_vehicle_terminal.Subtract.Damage1 = 8
dropship_vehicle_terminal.Geometry = vterm
vehicle_terminal_combined.Name = "vehicle_terminal_combined"
vehicle_terminal_combined.Tab += 46769 -> {
val tab = VehiclePage(
VehicleTerminalDefinition.flight1Vehicles ++ VehicleTerminalDefinition.groundVehicles,
VehicleTerminalDefinition.trunk
)
tab.Exclude = List(CavernVehicleQuestion)
tab
}
vehicle_terminal_combined.Tab += 4 -> {
val tab = VehicleLoadoutPage(10)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
vehicle_terminal_combined.MaxHealth = 500
vehicle_terminal_combined.Damageable = true
vehicle_terminal_combined.Repairable = true
vehicle_terminal_combined.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
vehicle_terminal_combined.RepairIfDestroyed = true
vehicle_terminal_combined.Subtract.Damage1 = 8
vehicle_terminal_combined.Geometry = vterm
vanu_air_vehicle_term.Name = "vanu_air_vehicle_term"
vanu_air_vehicle_term.Tab += 46769 -> VehiclePage(
VehicleTerminalDefinition.flight1Vehicles,
VehicleTerminalDefinition.trunk
)
vanu_air_vehicle_term.Tab += 4 -> VehicleLoadoutPage(10)
vanu_air_vehicle_term.MaxHealth = 500
vanu_air_vehicle_term.Damageable = true
vanu_air_vehicle_term.Repairable = true
vanu_air_vehicle_term.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
vanu_air_vehicle_term.RepairIfDestroyed = true
vanu_air_vehicle_term.Subtract.Damage1 = 8
vanu_vehicle_term.Name = "vanu_vehicle_term"
vanu_vehicle_term.Tab += 46769 -> VehiclePage(
VehicleTerminalDefinition.groundVehicles,
VehicleTerminalDefinition.trunk
)
vanu_vehicle_term.Tab += 4 -> VehicleLoadoutPage(10)
vanu_vehicle_term.MaxHealth = 500
vanu_vehicle_term.Damageable = true
vanu_vehicle_term.Repairable = true
vanu_vehicle_term.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
vanu_vehicle_term.RepairIfDestroyed = true
vanu_vehicle_term.Subtract.Damage1 = 8
bfr_terminal.Name = "bfr_terminal"
bfr_terminal.Tab += 0 -> VehiclePage(
VehicleTerminalDefinition.bfrVehicles,
VehicleTerminalDefinition.trunk
)
bfr_terminal.Tab += 1 -> EquipmentPage(
EquipmentTerminalDefinition.bfrAmmunition ++ EquipmentTerminalDefinition.bfrArmWeapons
) //inaccessible?
bfr_terminal.Tab += 2 -> EquipmentPage(
EquipmentTerminalDefinition.bfrAmmunition ++ EquipmentTerminalDefinition.bfrGunnerWeapons
) //inaccessible?
bfr_terminal.Tab += 3 -> {
val tab = BattleframeSpawnLoadoutPage(VehicleTerminalDefinition.bfrVehicles)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
bfr_terminal.MaxHealth = 500
bfr_terminal.Damageable = true
bfr_terminal.Repairable = true
bfr_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
bfr_terminal.RepairIfDestroyed = true
bfr_terminal.Subtract.Damage1 = 8
bfr_terminal.Geometry = GeometryForm.representByCylinder(radius = 0.92185f, height = 2.64693f)
respawn_tube.Name = "respawn_tube"
respawn_tube.Delay = 10
respawn_tube.SpecificPointFunc = SpawnPoint.Tube
respawn_tube.MaxHealth = 1000
respawn_tube.Damageable = true
respawn_tube.DamageableByFriendlyFire = false
respawn_tube.Repairable = true
respawn_tube.autoRepair = AutoRepairStats(1.6f, 10000, 2400, 1)
respawn_tube.RepairIfDestroyed = true
respawn_tube.Subtract.Damage1 = 8
respawn_tube.Geometry = GeometryForm.representByCylinder(radius = 0.9336f, height = 2.84375f)
respawn_tube_sanctuary.Name = "respawn_tube"
respawn_tube_sanctuary.Delay = 10
respawn_tube_sanctuary.SpecificPointFunc = SpawnPoint.Default
respawn_tube_sanctuary.MaxHealth = 1000
respawn_tube_sanctuary.Damageable = false //true?
respawn_tube_sanctuary.DamageableByFriendlyFire = false
respawn_tube_sanctuary.Repairable = true
respawn_tube_sanctuary.autoRepair = AutoRepairStats(1.6f, 10000, 2400, 1)
//TODO will need geometry when Damageable = true
respawn_tube_tower.Name = "respawn_tube_tower"
respawn_tube_tower.Delay = 10 // Temporary -- Default value is 20
respawn_tube_tower.SpecificPointFunc = SpawnPoint.Tube
respawn_tube_tower.MaxHealth = 1000
respawn_tube_tower.Damageable = true
respawn_tube_tower.DamageableByFriendlyFire = false
respawn_tube_tower.Repairable = true
respawn_tube_tower.autoRepair = AutoRepairStats(1.6f, 10000, 2400, 1)
respawn_tube_tower.RepairIfDestroyed = true
respawn_tube_tower.Subtract.Damage1 = 8
respawn_tube_tower.Geometry = GeometryForm.representByCylinder(radius = 0.9336f, height = 2.84375f)
teleportpad_terminal.Name = "teleportpad_terminal"
teleportpad_terminal.Tab += 0 -> EquipmentPage(EquipmentTerminalDefinition.routerTerminal)
teleportpad_terminal.Damageable = false
teleportpad_terminal.Repairable = false
targeting_laser_dispenser.Name = "targeting_laser_dispenser"
targeting_laser_dispenser.Tab += 0 -> EquipmentPage(EquipmentTerminalDefinition.flailTerminal)
targeting_laser_dispenser.Damageable = false
targeting_laser_dispenser.Repairable = false
medical_terminal.Name = "medical_terminal"
medical_terminal.Interval = 500
medical_terminal.HealAmount = 5
medical_terminal.ArmorAmount = 10
medical_terminal.UseRadius = 0.75f
medical_terminal.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.Medical
medical_terminal.MaxHealth = 500
medical_terminal.Damageable = true
medical_terminal.Repairable = true
medical_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
medical_terminal.RepairIfDestroyed = true
medical_terminal.Geometry = GeometryForm.representByCylinder(radius = 0.711f, height = 1.75f)
adv_med_terminal.Name = "adv_med_terminal"
adv_med_terminal.Interval = 500
adv_med_terminal.HealAmount = 8
adv_med_terminal.ArmorAmount = 15
adv_med_terminal.UseRadius = 0.75f
adv_med_terminal.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.Medical
adv_med_terminal.MaxHealth = 750
adv_med_terminal.Damageable = true
adv_med_terminal.Repairable = true
adv_med_terminal.autoRepair = AutoRepairStats(1.57894f, 5000, 2400, 0.05f)
adv_med_terminal.RepairIfDestroyed = true
adv_med_terminal.Geometry = GeometryForm.representByCylinder(radius = 0.8662125f, height = 3.47f)
crystals_health_a.Name = "crystals_health_a"
crystals_health_a.Interval = 500
crystals_health_a.HealAmount = 4
crystals_health_a.UseRadius = 5
crystals_health_a.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.HealthCrystal
crystals_health_a.Damageable = false
crystals_health_a.Repairable = false
crystals_health_b.Name = "crystals_health_b"
crystals_health_b.Interval = 500
crystals_health_b.HealAmount = 4
crystals_health_b.UseRadius = 5
crystals_health_b.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.HealthCrystal
crystals_health_b.Damageable = false
crystals_health_b.Repairable = false
crystals_repair_a.Name = "crystals_repair_a"
crystals_repair_a.Interval = 500
crystals_repair_a.ArmorAmount = 4
crystals_repair_a.UseRadius = 5
crystals_repair_a.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.RepairCrystal
crystals_repair_a.Damageable = false
crystals_repair_a.Repairable = false
crystals_repair_b.Name = "crystals_repair_b"
crystals_repair_b.Interval = 500
crystals_repair_b.ArmorAmount = 4
crystals_repair_b.UseRadius = 5
crystals_repair_b.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.RepairCrystal
crystals_repair_b.Damageable = false
crystals_repair_b.Repairable = false
crystals_vehicle_a.Name = "crystals_vehicle_a"
crystals_vehicle_a.Interval = 1000
crystals_vehicle_a.HealAmount = 60
crystals_vehicle_a.UseRadius = 15
crystals_vehicle_a.TargetValidation += EffectTarget.Category.Vehicle -> EffectTarget.Validation.VehicleCrystal
crystals_vehicle_a.Damageable = false
crystals_vehicle_a.Repairable = false
crystals_vehicle_b.Name = "crystals_vehicle_b"
crystals_vehicle_b.Interval = 1000
crystals_vehicle_b.HealAmount = 60
crystals_vehicle_b.UseRadius = 15
crystals_vehicle_b.TargetValidation += EffectTarget.Category.Vehicle -> EffectTarget.Validation.VehicleCrystal
crystals_vehicle_b.Damageable = false
crystals_vehicle_b.Repairable = false
crystals_energy_a.Name = "crystals_energy_a"
crystals_energy_a.Interval = 1000
crystals_energy_a.UseRadius = 5
crystals_energy_a.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.AncientWeaponRecharge
crystals_energy_a.Damageable = false
crystals_energy_a.Repairable = false
crystals_energy_b.Name = "crystals_energy_b"
crystals_energy_b.Interval = 1000
crystals_energy_b.UseRadius = 5
crystals_energy_b.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.AncientWeaponRecharge
crystals_energy_b.Damageable = false
crystals_energy_b.Repairable = false
crystals_energy.Name = "crystals_energy"
crystals_energy.Interval = 1000
crystals_energy.UseRadius = 5
crystals_energy.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.AncientWeaponRecharge
crystals_energy.Damageable = false
crystals_energy.Repairable = false
portable_med_terminal.Name = "portable_med_terminal"
portable_med_terminal.Interval = 500
portable_med_terminal.HealAmount = 5
portable_med_terminal.ArmorAmount = 10
portable_med_terminal.UseRadius = 3
portable_med_terminal.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.Medical
portable_med_terminal.MaxHealth = 500
portable_med_terminal.Damageable = false //TODO actually true
portable_med_terminal.Repairable = false
portable_med_terminal.autoRepair = AutoRepairStats(2.24215f, 5000, 3500, 0.05f)
pad_landing_frame.Name = "pad_landing_frame"
pad_landing_frame.Interval = 1000
pad_landing_frame.HealAmount = 60
pad_landing_frame.UseRadius = 20
pad_landing_frame.TargetValidation += EffectTarget.Category.Aircraft -> EffectTarget.Validation.PadLanding
pad_landing_frame.Damageable = false
pad_landing_frame.Repairable = false
pad_landing_tower_frame.Name = "pad_landing_tower_frame"
pad_landing_tower_frame.Interval = 1000
pad_landing_tower_frame.HealAmount = 60
pad_landing_tower_frame.UseRadius = 20
pad_landing_tower_frame.TargetValidation += EffectTarget.Category.Aircraft -> EffectTarget.Validation.PadLanding
pad_landing_tower_frame.Damageable = false
pad_landing_tower_frame.Repairable = false
repair_silo.Name = "repair_silo"
repair_silo.Interval = 1000
repair_silo.HealAmount = 60
repair_silo.UseRadius = 20
repair_silo.TargetValidation += EffectTarget.Category.Vehicle -> EffectTarget.Validation.RepairSilo
repair_silo.Damageable = false
repair_silo.Repairable = false
recharge_terminal.Name = "recharge_terminal"
recharge_terminal.Interval = 1000
recharge_terminal.UseRadius = 20
recharge_terminal.TargetValidation += EffectTarget.Category.Vehicle -> EffectTarget.Validation.AncientVehicleWeaponRecharge
recharge_terminal.Damageable = false
recharge_terminal.Repairable = false
recharge_terminal_weapon_module.Name = "recharge_terminal_weapon_module"
recharge_terminal_weapon_module.Interval = 1000
recharge_terminal_weapon_module.UseRadius = 300
recharge_terminal_weapon_module.TargetValidation += EffectTarget.Category.Player -> EffectTarget.Validation.AncientWeaponRecharge
recharge_terminal_weapon_module.Damageable = false
recharge_terminal_weapon_module.Repairable = false
mb_pad_creation.Name = "mb_pad_creation"
mb_pad_creation.Damageable = false
mb_pad_creation.Repairable = false
mb_pad_creation.VehicleCreationZOffset = 2.52604f
mb_pad_creation.killBox = VehicleSpawnPadDefinition.prepareKillBox(
forwardLimit = 14,
backLimit = 10,
sideLimit = 7.5f,
aboveLimit = 5 //double to 10 when spawning a flying vehicle
)
mb_pad_creation.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 99999
DamageRadiusMin = 14
DamageRadius = 14.5f
DamageAtEdge = 0.00002f
//damage is 99999 at 14m, dropping rapidly to ~1 at 14.5m
}
dropship_pad_doors.Name = "dropship_pad_doors"
dropship_pad_doors.Damageable = false
dropship_pad_doors.Repairable = false
dropship_pad_doors.VehicleCreationZOffset = 4.89507f
dropship_pad_doors.VehicleCreationZOrientOffset = -90f
dropship_pad_doors.killBox = VehicleSpawnPadDefinition.prepareKillBox(
forwardLimit = 14,
backLimit = 14,
sideLimit = 13.5f,
aboveLimit = 5 //doubles to 10
)
dropship_pad_doors.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 99999
DamageRadiusMin = 14
DamageRadius = 14.5f
DamageAtEdge = 0.00002f
//damage is 99999 at 14m, dropping rapidly to ~1 at 14.5m
}
vanu_vehicle_creation_pad.Name = "vanu_vehicle_creation_pad"
vanu_vehicle_creation_pad.Damageable = false
vanu_vehicle_creation_pad.Repairable = false
vanu_vehicle_creation_pad.killBox = VehicleSpawnPadDefinition.prepareVanuKillBox(
radius = 8.5f,
aboveLimit = 5
)
vanu_vehicle_creation_pad.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 99999
DamageRadiusMin = 14
DamageRadius = 14.5f
DamageAtEdge = 0.00002f
//damage is 99999 at 14m, dropping rapidly to ~1 at 14.5m
}
bfr_door.Name = "bfr_door"
bfr_door.Damageable = false
bfr_door.Repairable = false
//bfr_door.VehicleCreationZOffset = -4.5f
bfr_door.VehicleCreationZOrientOffset = 0f //90f
bfr_door.killBox = VehicleSpawnPadDefinition.prepareBfrShedKillBox(
radius = 10f,
aboveLimit = 10f
)
bfr_door.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 99999
DamageRadiusMin = 14 //TODO fix this
DamageRadius = 14.5f //TODO fix this
DamageAtEdge = 0.00002f
//damage is 99999 at 14m, dropping rapidly to ~1 at 14.5m
}
pad_create.Name = "pad_create"
pad_create.Damageable = false
pad_create.Repairable = false
//pad_create.killBox = ...
//pad_create.innateDamage = ...
pad_creation.Name = "pad_creation"
pad_creation.Damageable = false
pad_creation.Repairable = false
pad_creation.VehicleCreationZOffset = 1.70982f
//pad_creation.killBox = ...
//pad_creation.innateDamage = ...
spawnpoint_vehicle.Name = "spawnpoint_vehicle"
spawnpoint_vehicle.Damageable = false
spawnpoint_vehicle.Repairable = false
//spawnpoint_vehicle.killBox = ...
//spawnpoint_vehicle.innateDamage = ...
mb_locker.Name = "mb_locker"
mb_locker.Damageable = false
mb_locker.Repairable = false
lock_external.Name = "lock_external"
lock_external.Damageable = false
lock_external.Repairable = false
door.Name = "door"
door.Damageable = false
door.Repairable = false
door_spawn_mb.Name = "door_spawn_mb"
door_spawn_mb.Damageable = true
door_spawn_mb.Repairable = false
gr_door_mb_orb.Name = "gr_door_mb_orb"
gr_door_mb_orb.Damageable = false
gr_door_mb_orb.Repairable = false
spawn_tube_door.Name = "spawn_tube_door"
spawn_tube_door.Damageable = true
spawn_tube_door.Repairable = false
resource_silo.Name = "resource_silo"
resource_silo.Damageable = false
resource_silo.Repairable = false
resource_silo.MaxNtuCapacitor = 1000
resource_silo.ChargeTime = 105.seconds //from 0-100% in roughly 105s on live (~20%-100% https://youtu.be/veOWToR2nSk?t=1402)
capture_terminal.Name = "capture_terminal"
capture_terminal.Damageable = false
capture_terminal.Repairable = false
capture_terminal.FacilityHackTime = 15.minutes
secondary_capture.Name = "secondary_capture"
secondary_capture.Damageable = false
secondary_capture.Repairable = false
secondary_capture.FacilityHackTime = 1.millisecond
vanu_control_console.Name = "vanu_control_console"
vanu_control_console.Damageable = false
vanu_control_console.Repairable = false
vanu_control_console.FacilityHackTime = 10.minutes
lodestar_repair_terminal.Name = "lodestar_repair_terminal"
lodestar_repair_terminal.Interval = 1000
lodestar_repair_terminal.HealAmount = 60
lodestar_repair_terminal.UseRadius = 40
lodestar_repair_terminal.TargetValidation += EffectTarget.Category.Vehicle -> EffectTarget.Validation.LodestarRepair
lodestar_repair_terminal.Damageable = false
lodestar_repair_terminal.Repairable = false
multivehicle_rearm_terminal.Name = "multivehicle_rearm_terminal"
multivehicle_rearm_terminal.Tab += 3 -> EquipmentPage(
EquipmentTerminalDefinition.vehicleAmmunition
)
multivehicle_rearm_terminal.Tab += 4 -> {
val tab = VehicleLoadoutPage(10)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
multivehicle_rearm_terminal.SellEquipmentByDefault = true //TODO ?
multivehicle_rearm_terminal.Damageable = false
multivehicle_rearm_terminal.Repairable = false
bfr_rearm_terminal.Name = "bfr_rearm_terminal"
bfr_rearm_terminal.Tab += 1 -> EquipmentPage(
EquipmentTerminalDefinition.bfrAmmunition ++ EquipmentTerminalDefinition.bfrArmWeapons
)
bfr_rearm_terminal.Tab += 2 -> EquipmentPage(
EquipmentTerminalDefinition.bfrAmmunition ++ EquipmentTerminalDefinition.bfrGunnerWeapons
)
bfr_rearm_terminal.Tab += 3 -> {
val tab = VehicleLoadoutPage(15)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
bfr_rearm_terminal.SellEquipmentByDefault = true //TODO ?
bfr_rearm_terminal.Damageable = false
bfr_rearm_terminal.Repairable = false
air_rearm_terminal.Name = "air_rearm_terminal"
air_rearm_terminal.Tab += 3 -> EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition)
air_rearm_terminal.Tab += 4 -> {
val tab = VehicleLoadoutPage(10)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
air_rearm_terminal.SellEquipmentByDefault = true //TODO ?
air_rearm_terminal.Damageable = false
air_rearm_terminal.Repairable = false
ground_rearm_terminal.Name = "ground_rearm_terminal"
ground_rearm_terminal.Tab += 3 -> EquipmentPage(
EquipmentTerminalDefinition.vehicleAmmunition
)
ground_rearm_terminal.Tab += 4 -> {
val tab = VehicleLoadoutPage(10)
tab.Exclude = List(CavernEquipmentQuestion)
tab
}
ground_rearm_terminal.SellEquipmentByDefault = true //TODO ?
ground_rearm_terminal.Damageable = false
ground_rearm_terminal.Repairable = false
manned_turret.Name = "manned_turret"
manned_turret.MaxHealth = 3600
manned_turret.Damageable = true
manned_turret.DamageDisablesAt = 0
manned_turret.Repairable = true
manned_turret.autoRepair = AutoRepairStats(1.0909f, 10000, 1600, 0.05f)
manned_turret.RepairIfDestroyed = true
manned_turret.WeaponPaths += 1 -> new mutable.HashMap()
manned_turret.WeaponPaths(1) += TurretUpgrade.None -> phalanx_sgl_hevgatcan
manned_turret.WeaponPaths(1) += TurretUpgrade.AVCombo -> phalanx_avcombo
manned_turret.WeaponPaths(1) += TurretUpgrade.FlakCombo -> phalanx_flakcombo
manned_turret.controlledWeapons(seat = 0, weapon = 1)
manned_turret.MountPoints += 1 -> MountInfo(0)
manned_turret.FactionLocked = true
manned_turret.ReserveAmmunition = false
manned_turret.RadiationShielding = 0.5f
manned_turret.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 150
Damage1 = 300
DamageRadius = 5
DamageAtEdge = 0.1f
Modifiers = ExplodingRadialDegrade
}
manned_turret.Geometry = GeometryForm.representByCylinder(radius = 1.2695f, height = 4.042f)
vanu_sentry_turret.Name = "vanu_sentry_turret"
vanu_sentry_turret.MaxHealth = 1500
vanu_sentry_turret.Damageable = true
vanu_sentry_turret.DamageDisablesAt = 0
vanu_sentry_turret.Repairable = true
vanu_sentry_turret.autoRepair = AutoRepairStats(3.27272f, 10000, 1000, 0.05f)
vanu_sentry_turret.RepairIfDestroyed = true
vanu_sentry_turret.WeaponPaths += 1 -> new mutable.HashMap()
vanu_sentry_turret.WeaponPaths(1) += TurretUpgrade.None -> vanu_sentry_turret_weapon
vanu_sentry_turret.controlledWeapons(seat = 0, weapon = 1)
vanu_sentry_turret.MountPoints += 1 -> MountInfo(0)
vanu_sentry_turret.MountPoints += 2 -> MountInfo(0)
vanu_sentry_turret.FactionLocked = false
vanu_sentry_turret.ReserveAmmunition = false
vanu_sentry_turret.Geometry = GeometryForm.representByCylinder(radius = 1.76311f, height = 3.984375f)
painbox.Name = "painbox"
painbox.alwaysOn = false
painbox.sphereOffset = Vector3(0, 0, -0.4f)
painbox.Damageable = false
painbox.Repairable = false
painbox.innateDamage = new DamageWithPosition {
Damage0 = 2
DamageRadius = 0
DamageToHealthOnly = true
}
painbox_continuous.Name = "painbox_continuous"
painbox_continuous.sphereOffset = Vector3(0, 0, -0.4f)
painbox_continuous.Damageable = false
painbox_continuous.Repairable = false
painbox_continuous.innateDamage = new DamageWithPosition {
Damage0 = 2
DamageRadius = 0
DamageToHealthOnly = true
}
painbox_door_radius.Name = "painbox_door_radius"
painbox_door_radius.alwaysOn = false
painbox_door_radius.sphereOffset = Vector3(0, 0, -0.4f)
painbox_door_radius.hasNearestDoorDependency = true
painbox_door_radius.Damageable = false
painbox_door_radius.Repairable = false
painbox_door_radius.innateDamage = new DamageWithPosition {
Damage0 = 2
DamageRadius = 10f * 0.6928f
DamageToHealthOnly = true
}
painbox_door_radius_continuous.Name = "painbox_door_radius_continuous"
painbox_door_radius_continuous.sphereOffset = Vector3(0, 0, -0.4f)
painbox_door_radius_continuous.hasNearestDoorDependency = true
painbox_door_radius_continuous.Damageable = false
painbox_door_radius_continuous.Repairable = false
painbox_door_radius_continuous.innateDamage = new DamageWithPosition {
Damage0 = 2
DamageRadius = 10f * 0.6928f
DamageToHealthOnly = true
}
painbox_radius.Name = "painbox_radius"
painbox_radius.alwaysOn = false
painbox_radius.sphereOffset = Vector3(0, 0, -0.4f)
painbox_radius.Damageable = false
painbox_radius.Repairable = false
painbox_radius.innateDamage = new DamageWithPosition {
Damage0 = 2
DamageRadius = 10f * 0.6928f
DamageToHealthOnly = true
}
painbox_radius_continuous.Name = "painbox_radius_continuous"
painbox_radius_continuous.Damageable = false
painbox_radius_continuous.Repairable = false
painbox_radius_continuous.innateDamage = new DamageWithPosition {
Damage0 = 2
DamageRadius = 8.55f
DamageToHealthOnly = true
}
gen_control.Name = "gen_control"
gen_control.Damageable = false
gen_control.Repairable = false
generator.Name = "generator"
generator.MaxHealth = 4000
generator.Damageable = true
generator.DamageableByFriendlyFire = false
generator.Repairable = true
generator.autoRepair = AutoRepairStats(0.77775f, 5000, 875, 1)
generator.RepairDistance = 13.5f
generator.RepairIfDestroyed = true
generator.Subtract.Damage1 = 9
generator.innateDamage = new DamageWithPosition {
CausesDamageType = DamageType.One
Damage0 = 99999
DamageRadiusMin = 15
DamageRadius = 15.1f
DamageAtEdge = 0.000011f
Modifiers = ExplodingRadialDegrade
//damage is 99999 at 15m, dropping rapidly to ~1 at 15.1m
}
generator.Geometry = GeometryForm.representByCylinder(radius = 1.2617f, height = 9.14063f)
obbasemesh.Name = "obbasemesh"
obbasemesh.Descriptor = "orbital_shuttle_pad"
obbasemesh.Damageable = false
obbasemesh.Repairable = false
}
}