diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc
index 22a0a062c..e066e68b1 100644
--- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc
@@ -200,7 +200,6 @@
[8 mini torps target missiles]
[Will heal shields if it impacts]
[40 second reload]
- Caution, give it decent line of sight for better results
Textures\GUI\missile_defense.png
@@ -543,7 +542,7 @@
Z
Y
Light
- 240
+ 30
1
213
false
diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs
index bbd7af545..8add50cb4 100644
--- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs
@@ -167,7 +167,7 @@ partial class Parts
Damage = 0f,
Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
- Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
//.Curve drops off damage sharply as it approaches the max radius
//.InvCurve drops off sharply from the middle and tapers to max radius
@@ -179,9 +179,9 @@ partial class Parts
EndOfLife = new EndOfLifeDef
{
Enable = true,
- Radius = 8f, // Radius of AOE effect, in meters.
- Damage = 85000f,
- Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ Radius = 2f, // Radius of AOE effect, in meters.
+ Damage = 850f,
+ Depth = 2f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
@@ -194,7 +194,7 @@ partial class Parts
MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
NoVisuals = false,
NoSound = false,
- ParticleScale = 2,
+ ParticleScale = 1,
CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC
CustomSound = "", // SubtypeID from your Audio SBC, not a filename
Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
@@ -303,7 +303,7 @@ partial class Parts
},
AmmoGraphics = new GraphicDef
{
- ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ ModelName = "NecronEnergyProjectile", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
VisualProbability = 1f, // %
ShieldHitDraw = false,
Particles = new AmmoParticleDef
@@ -349,7 +349,7 @@ partial class Parts
Enable = true,
Length = 100f, //
Width = 1.25f, //
- Color = Color(red: 20, green: 40, blue: 40f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright.
+ Color = Color(red: 1, green: 2, blue: 2f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright.
VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color
VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible.
Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc..
@@ -380,8 +380,8 @@ partial class Parts
"WeaponLaser", // Please always have this Line set, if this Section is enabled.
},
TextureMode = Normal,
- DecayTime = 60, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
- Color = Color(red: 40, green: 20, blue: 5, alpha: 1),
+ DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 8, green: 4, blue: 1, alpha: 1),
Back = false,
CustomWidth = 0.35f,
UseWidthVariance = false,
@@ -462,7 +462,7 @@ partial class Parts
Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
{
AmmoRound = "", // AmmoRound field of the ammo to spawn.
- Fragments = 36, // Number of projectiles to spawn.
+ Fragments = 12, // Number of projectiles to spawn.
Degrees = 4, // Cone in which to randomize direction of spawned projectiles.
Reverse = false, // Spawn projectiles backward instead of forward.
DropVelocity = true, // fragments will not inherit velocity from parent.
@@ -527,7 +527,7 @@ partial class Parts
},
Shields = new ShieldDef
{
- Modifier = 0.85f, // Multiplier for damage against shields.
+ Modifier = 3.85f, // Multiplier for damage against shields.
Type = Default, // Damage vs healing against shields; Default, Heal
BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield.
},
@@ -565,7 +565,7 @@ partial class Parts
Damage = 3500f,
Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
- Falloff = Squeeze, //.NoFalloff applies the same damage to all blocks in radius
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
//.Curve drops off damage sharply as it approaches the max radius
//.InvCurve drops off sharply from the middle and tapers to max radius
@@ -578,7 +578,7 @@ partial class Parts
{
Enable = true,
Radius = 2.5f, // Radius of AOE effect, in meters.
- Damage = 1000f,
+ Damage = 5000f,
Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
@@ -590,10 +590,10 @@ partial class Parts
//.Exponential drops off exponentially. Does not scale to max radius
ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode.
MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
- NoVisuals = true,
+ NoVisuals = false,
NoSound = true,
- ParticleScale = 1,
- CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC
+ ParticleScale = 0.25f,
+ CustomParticle = "ExpanseBlueGoo",
CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename
Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
},
@@ -708,21 +708,21 @@ partial class Parts
{
Ammo = new ParticleDef
{
- Name = "", //ShipWelderArc
- Offset = Vector(x: 0, y: -50, z: 0),
+ Name = "Expanse_Trail", //ShipWelderArc
+ Offset = Vector(x: 0, y: 0, z: -0.21f),
Extras = new ParticleOptionDef
{
- Scale = 1,
+ Scale = 0.75f,
},
},
Hit = new ParticleDef
{
- Name = "",
+ Name = "Exp_Spark_FCC",
ApplyToShield = true,
Offset = Vector(x: 0, y: 0, z: 0),
Extras = new ParticleOptionDef
{
- Scale = 1,
+ Scale = 0.25f,
HitPlayChance = 1f,
},
},
@@ -775,10 +775,10 @@ partial class Parts
{
Enable = false,
Textures = new[] {
- "", // Please always have this Line set, if this Section is enabled.
+ "Expanse_Trail", // Please always have this Line set, if this Section is enabled.
},
TextureMode = Normal,
- DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
Color = Color(red: 0, green: 0, blue: 1, alpha: 1),
Back = false,
CustomWidth = 0,
@@ -833,7 +833,7 @@ partial class Parts
AmmoRound = "Smart Flak", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
HybridRound = false, // Use both a physical ammo magazine and energy per shot.
EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
- BaseDamage = 1000f, // Direct damage; one steel plate is worth 100.
+ BaseDamage = 13000f, // Direct damage; one steel plate is worth 100.
Mass = 0f, // In kilograms; how much force the impact will apply to the target.
Health = 5, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
BackKickForce = 0f, // Recoil. This is applied to the Parent Grid.
@@ -859,13 +859,13 @@ partial class Parts
Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
{
AmmoRound = "", // AmmoRound field of the ammo to spawn.
- Fragments = 1, // Number of projectiles to spawn.
+ Fragments = 5, // Number of projectiles to spawn.
Degrees = 0, // Cone in which to randomize direction of spawned projectiles.
Reverse = false, // Spawn projectiles backward instead of forward.
DropVelocity = false, // fragments will not inherit velocity from parent.
- Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
- Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
- MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
+ Offset = 15f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
+ Radial = 2f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
+ MaxChildren = 5, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
@@ -874,7 +874,7 @@ partial class Parts
Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life
MaxSpawns = 1, // Max number of fragment children to spawn
- Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
ParentDies = true, // Parent dies once after it spawns its last child.
PointAtTarget = false, // Start fragment direction pointing at Target
PointType = Direct, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
@@ -886,15 +886,19 @@ partial class Parts
Pattern = new PatternDef
{
Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo.
- "",
+ "Smart Flak",
+ "Smart Flak",
+ "Smart Flak",
+ "Smart Flak",
+ "Smart Flak",
},
Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
- TriggerChance = 1f, // This is %
+ TriggerChance = 100f, // This is %
Random = false, // This randomizes the number spawned at once, NOT the list order.
RandomMin = 1,
RandomMax = 1,
SkipParent = false, // Skip the Ammo itself, in the list
- PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
+ PatternSteps = 6, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
},
DamageScales = new DamageScaleDef
{
@@ -924,7 +928,7 @@ partial class Parts
},
Shields = new ShieldDef
{
- Modifier = 0.85f, // Multiplier for damage against shields.
+ Modifier = 4.85f, // Multiplier for damage against shields.
Type = Default, // Damage vs healing against shields; Default, Heal
BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield.
},
@@ -962,7 +966,7 @@ partial class Parts
Damage = 2500f,
Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
- Falloff = Squeeze, //.NoFalloff applies the same damage to all blocks in radius
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
//.Curve drops off damage sharply as it approaches the max radius
//.InvCurve drops off sharply from the middle and tapers to max radius
@@ -975,10 +979,10 @@ partial class Parts
{
Enable = true,
Radius = 2.5f, // Radius of AOE effect, in meters.
- Damage = 450,
+ Damage = 44500,
Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
- Falloff = NoFalloff, //.NoFalloff applies the same damage to all blocks in radius
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
//.Curve drops off damage sharply as it approaches the max radius
//.InvCurve drops off sharply from the middle and tapers to max radius
@@ -987,10 +991,10 @@ partial class Parts
//.Exponential drops off exponentially. Does not scale to max radius
ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode.
MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
- NoVisuals = true,
+ NoVisuals = false,
NoSound = true,
- ParticleScale = 1,
- CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC
+ ParticleScale = 0.25f,
+ CustomParticle = "ExpanseBlueGoo", // Particle SubtypeID, from your Particle SBC
CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename
Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
},
@@ -1063,7 +1067,7 @@ partial class Parts
TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
MaxLifeTime = 720, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
AccelPerSec = 0, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
- DesiredSpeed = 1250, // voxel phasing if you go above 5100
+ DesiredSpeed = 850, // voxel phasing if you go above 5100
MaxTrajectory = 3500f, // Max Distance the projectile or beam can Travel.
DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
@@ -1072,19 +1076,20 @@ partial class Parts
MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
Smarts = new SmartsDef
{
- Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
- Aggressiveness = 1f, // controls how responsive tracking is.
- MaxLateralThrust = 1.5, // controls how sharp the trajectile may turn
+ SteeringLimit = 40, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart.
+ Inaccuracy = 4f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
+ Aggressiveness = 4f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.35f, // controls how sharp the trajectile may turn
TrackingDelay = 0, // Measured in Shape diameter units traveled.
- MaxChaseTime = 120, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ MaxChaseTime = 180, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
OverideTarget = true, // when set to true ammo picks its own target, does not use hardpoint's.
CheckFutureIntersection = false, // Utilize obstacle avoidance for drones
MaxTargets = 6, // Number of targets allowed before ending, 0 = unlimited
NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
Roam = false, // Roam current area after target loss
KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
- OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1)
- OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
+ OffsetRatio = 0.75f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 10, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
},
Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
{
@@ -1097,7 +1102,7 @@ partial class Parts
},
AmmoGraphics = new GraphicDef
{
- ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ ModelName = "NecronEnergyProjectile", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
VisualProbability = 1f, // %
ShieldHitDraw = false,
Particles = new AmmoParticleDef
@@ -1169,13 +1174,13 @@ partial class Parts
},
Trail = new TrailDef
{
- Enable = false,
+ Enable = true,
Textures = new[] {
- "", // Please always have this Line set, if this Section is enabled.
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
},
TextureMode = Normal,
- DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
- Color = Color(red: 0, green: 0, blue: 1, alpha: 1),
+ DecayTime = 20, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 1, green: 0, blue: 1, alpha: 1),
Back = false,
CustomWidth = 0,
UseWidthVariance = false,
diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs
index 32ef9a59c..3066e4145 100644
--- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs
@@ -58,7 +58,7 @@ partial class Parts
HardPoint = new HardPointDef
{
PartName = "Flechette_Artillery", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons).
- DeviateShotAngle = 3f, // Projectile inaccuracy in degrees.
+ DeviateShotAngle = 1.25f, // Projectile inaccuracy in degrees.
AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle.
AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced
DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released - while a target is available.
@@ -121,9 +121,9 @@ partial class Parts
{
RateOfFire = 30, // Set this to 3600 for beam weapons. This is how fast your Gun fires.
BarrelsPerShot = 1, // How many muzzles will fire a projectile per fire event.
- TrajectilesPerBarrel = 5, // Number of projectiles per muzzle per fire event.
+ TrajectilesPerBarrel = 1, // Number of projectiles per muzzle per fire event.
SkipBarrels = 0, // Number of muzzles to skip after each fire event.
- ReloadTime = 480, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ ReloadTime = 240, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
MagsToLoad = 2, // Number of physical magazines to consume on reload.
DelayUntilFire = 0, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
HeatPerShot = 1, // Heat generated per shot.
diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs
index 8127e0e94..dbd843bd9 100644
--- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs
@@ -47,7 +47,7 @@ partial class Parts {
MinimumDiameter = 0, // Minimum radius of threat to engage.
MaximumDiameter = 0, // Maximum radius ofE threat to engage; 0 = unlimited.
MaxTargetDistance = 0, // Maximum distance at which targets will be automatically shot at; 0 = unlimited.
- MinTargetDistance = 1000, // Minimum distance at which targets will be automatically shot at.
+ MinTargetDistance = 0, // Minimum distance at which targets will be automatically shot at.
TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited.
TopBlocks = 8, // Maximum number of blocks to randomize between; 0 = unlimited.
StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited.
@@ -55,11 +55,11 @@ partial class Parts {
HardPoint = new HardPointDef
{
PartName = "Hercules MAC", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons).
- DeviateShotAngle = 0f, // Projectile inaccuracy in degrees.
- AimingTolerance = 1.5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle.
+ DeviateShotAngle = 0.1f, // Projectile inaccuracy in degrees.
+ AimingTolerance = 0f, // How many degrees off target a turret can fire at. 0 - 180 firing angle.
AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced
DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released - while a target is available.
- AddToleranceToTracking = true, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre.
+ AddToleranceToTracking = false, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre.
CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod.
Ui = new UiDef
@@ -71,10 +71,10 @@ partial class Parts {
},
Ai = new AiDef
{
- TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True.
- TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True.
- TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True.
- PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking.
+ TrackTargets = false, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True.
+ TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True.
+ TurretController = false, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True.
+ PrimaryTracking = false, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking.
LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0.
SuppressFire = false, // If enabled, weapon can only be fired manually.
OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets.
@@ -88,7 +88,7 @@ partial class Parts {
MinElevation = 0,
MaxElevation = 0,
HomeAzimuth = 0, // Default resting rotation angle
- HomeElevation = 0, // Default resting elevation
+ HomeElevation = 15, // Default resting elevation
InventorySize = 1f, // Inventory capacity in kL.
IdlePower = 0.25f, // Constant base power draw in MW.
FixedOffset = false, // Deprecated.
@@ -116,11 +116,11 @@ partial class Parts {
},
Loading = new LoadingDef
{
- RateOfFire = 120, // Set this to 3600 for beam weapons. This is how fast your Gun fires.
+ RateOfFire = 360, // Set this to 3600 for beam weapons. This is how fast your Gun fires.
BarrelsPerShot = 1, // How many muzzles will fire a projectile per fire event.
TrajectilesPerBarrel = 1, // Number of projectiles per muzzle per fire event.
SkipBarrels = 0, // Number of muzzles to skip after each fire event.
- ReloadTime = 900, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ ReloadTime = 1500, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
MagsToLoad = 3, // Number of physical magazines to consume on reload.
DelayUntilFire = 0, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
HeatPerShot = 1, // Heat generated per shot.
@@ -128,7 +128,7 @@ partial class Parts {
Cooldown = .95f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95
HeatSinkRate = 9000000, // Amount of heat lost per second.
DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat).
- ShotsInBurst = 0, // Use this if you don't want the weapon to fire an entire physical magazine in one go. Should not be more than your magazine capacity.
+ ShotsInBurst = 3, // Use this if you don't want the weapon to fire an entire physical magazine in one go. Should not be more than your magazine capacity.
DelayAfterBurst = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
FireFull = false, // Whether the weapon should fire the full magazine (or the full burst instead if ShotsInBurst > 0), even if the target is lost or the player stops firing prematurely.
GiveUpAfter = false, // Whether the weapon should drop its current target and reacquire a new target after finishing its magazine or burst.
@@ -192,7 +192,7 @@ partial class Parts {
SolHyp_HG_VFX3,
// Must list all primary, shrapnel, and pattern ammos.
},
- //Animations = FlakAnimation,
+ //Animations = Weapon75_Animation,
//Upgrades = UpgradeModules,
};
// Don't edit below this line.
diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.disabled b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.disabled
new file mode 100644
index 000000000..8127e0e94
--- /dev/null
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.disabled
@@ -0,0 +1,200 @@
+using static Scripts.Structure;
+using static Scripts.Structure.WeaponDefinition;
+using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef;
+using static Scripts.Structure.WeaponDefinition.HardPointDef;
+using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction;
+using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes;
+using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat;
+using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef;
+using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType;
+
+namespace Scripts {
+ partial class Parts {
+ // Don't edit above this line
+ WeaponDefinition SolHyp_MAC => new WeaponDefinition
+ {
+ Assignments = new ModelAssignmentsDef
+ {
+ MountPoints = new[] {
+ new MountPointDef {
+ SubtypeId = "SolHyp_Magnetic_Coilgun", // Block Subtypeid. Your Cubeblocks contain this information
+ SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks.
+ MuzzlePartId = "None", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks.
+ AzimuthPartId = "None", // Your Rotating Subpart, the bit that moves sideways.
+ ElevationPartId = "None",// Your Elevating Subpart, that bit that moves up.
+ DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken.
+ IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc.
+ },
+
+ },
+ Muzzles = new[] {
+ "muzzle_coil_EXT", // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A
+ },
+ Ejector = "", // Optional; empty from which to eject "shells" if specified.
+ Scope = "", // Where line of sight checks are performed from. Must be clear of block collision.
+ },
+ Targeting = new TargetingDef
+ {
+ Threats = new[] {
+ Grids, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals
+ },
+ SubSystems = new[] {
+ Thrust, Utility, Offense, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any
+ },
+ ClosestFirst = false, // Tries to pick closest targets first (blocks on grids, projectiles, etc...).
+ IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles.
+ LockedSmartOnly = false, // Only fire at smart projectiles that are locked on to parent grid.
+ MinimumDiameter = 0, // Minimum radius of threat to engage.
+ MaximumDiameter = 0, // Maximum radius ofE threat to engage; 0 = unlimited.
+ MaxTargetDistance = 0, // Maximum distance at which targets will be automatically shot at; 0 = unlimited.
+ MinTargetDistance = 1000, // Minimum distance at which targets will be automatically shot at.
+ TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited.
+ TopBlocks = 8, // Maximum number of blocks to randomize between; 0 = unlimited.
+ StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited.
+ },
+ HardPoint = new HardPointDef
+ {
+ PartName = "Hercules MAC", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons).
+ DeviateShotAngle = 0f, // Projectile inaccuracy in degrees.
+ AimingTolerance = 1.5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle.
+ AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced
+ DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released - while a target is available.
+ AddToleranceToTracking = true, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre.
+ CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod.
+
+ Ui = new UiDef
+ {
+ RateOfFire = false, // Enables terminal slider for changing rate of fire.
+ DamageModifier = false, // Enables terminal slider for changing damage per shot.
+ ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance.
+ EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat.
+ },
+ Ai = new AiDef
+ {
+ TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True.
+ TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True.
+ TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True.
+ PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking.
+ LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0.
+ SuppressFire = false, // If enabled, weapon can only be fired manually.
+ OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets.
+ },
+ HardWare = new HardwareDef
+ {
+ RotateRate = 0f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second).
+ ElevateRate = 0f, // Max traversal speed of elevation subpart in radians per tick.
+ MinAzimuth = 0,
+ MaxAzimuth = 0,
+ MinElevation = 0,
+ MaxElevation = 0,
+ HomeAzimuth = 0, // Default resting rotation angle
+ HomeElevation = 0, // Default resting elevation
+ InventorySize = 1f, // Inventory capacity in kL.
+ IdlePower = 0.25f, // Constant base power draw in MW.
+ FixedOffset = false, // Deprecated.
+ Offset = Vector(x: 0, y: 0, z: 0), // Offsets the aiming/firing line of the weapon, in metres.
+ Type = BlockWeapon, // What type of weapon this is; BlockWeapon, HandWeapon, Phantom
+ CriticalReaction = new CriticalDef
+ {
+ Enable = false, // Enables Warhead behaviour.
+ DefaultArmedTimer = 120, // Sets default countdown duration.
+ PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false.
+ TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation.
+ AmmoRound = "AmmoType2", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo.
+ },
+ },
+ Other = new OtherDef
+ {
+ ConstructPartCap = 0, // Maximum number of blocks with this weapon on a grid; 0 = unlimited.
+ RotateBarrelAxis = 0, // For spinning barrels, which axis to spin the barrel around; 0 = none.
+ EnergyPriority = 0, // Deprecated.
+ MuzzleCheck = false, // Whether the weapon should check LOS from each individual muzzle in addition to the scope.
+ Debug = false, // Force enables debug mode.
+ RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block.
+ CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre.
+ CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype.
+ },
+ Loading = new LoadingDef
+ {
+ RateOfFire = 120, // Set this to 3600 for beam weapons. This is how fast your Gun fires.
+ BarrelsPerShot = 1, // How many muzzles will fire a projectile per fire event.
+ TrajectilesPerBarrel = 1, // Number of projectiles per muzzle per fire event.
+ SkipBarrels = 0, // Number of muzzles to skip after each fire event.
+ ReloadTime = 900, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ MagsToLoad = 3, // Number of physical magazines to consume on reload.
+ DelayUntilFire = 0, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ HeatPerShot = 1, // Heat generated per shot.
+ MaxHeat = 70000, // Max heat before weapon enters cooldown (70% of max heat).
+ Cooldown = .95f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95
+ HeatSinkRate = 9000000, // Amount of heat lost per second.
+ DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat).
+ ShotsInBurst = 0, // Use this if you don't want the weapon to fire an entire physical magazine in one go. Should not be more than your magazine capacity.
+ DelayAfterBurst = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ FireFull = false, // Whether the weapon should fire the full magazine (or the full burst instead if ShotsInBurst > 0), even if the target is lost or the player stops firing prematurely.
+ GiveUpAfter = false, // Whether the weapon should drop its current target and reacquire a new target after finishing its magazine or burst.
+ BarrelSpinRate = 0, // Visual only, 0 disables and uses RateOfFire.
+ DeterministicSpin = false, // Spin barrel position will always be relative to initial / starting positions (spin will not be as smooth).
+ SpinFree = true, // Spin barrel while not firing.
+ StayCharged = false, // Will start recharging whenever power cap is not full.
+ MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers)
+ MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon
+ },
+ Audio = new HardPointAudioDef
+ {
+ PreFiringSound = "", // Audio for warmup effect.
+ FiringSound = "ArcMK1CoilCannonFCC", // Audio for firing.
+ FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing.
+ ReloadSound = "", // Sound SubtypeID, for when your Weapon is in a reloading state
+ NoAmmoSound = "",
+ HardPointRotationSound = "", // Audio played when turret is moving.
+ BarrelRotationSound = "",
+ FireSoundEndDelay = 120, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..).
+ FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst.
+ },
+ Graphics = new HardPointParticleDef
+ {
+ Effect1 = new ParticleDef
+ {
+ Name = "SolHyp_MAC_Muzzleflash", // SubtypeId of muzzle particle effect.
+ Color = Color(red: 15, green: 2, blue: 1, alpha: 0.8f), // Deprecated, set color in particle sbc.
+ Offset = Vector(x: 0, y: 0.22, z: -1.5), // Offsets the effect from the muzzle empty.
+
+ Extras = new ParticleOptionDef
+ {
+ Loop = false, // Deprecated, set this in particle sbc.
+ Restart = true, // Whether to end the previous effect early and spawn a new one.
+ MaxDistance = 5000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2!
+ MaxDuration = 0, // How many ticks the effect should be ended after, if it's still running.
+ Scale = 1f, // Scale of effect.
+ },
+ },
+ Effect2 = new ParticleDef
+ {
+ Name = "",
+ Color = Color(red: 0, green: 0, blue: 0, alpha: 1),
+ Offset = Vector(x: 0, y: 0, z: 0),
+
+ Extras = new ParticleOptionDef
+ {
+ Restart = false,
+ MaxDistance = 50,
+ MaxDuration = 0,
+ Scale = 1f,
+ },
+ },
+ },
+ },
+ Ammos = new[] {
+ SolHyp_HeavyMAC_Ammo,
+ SolHyp_HeavyMAC_Ammo_Shrap,
+ SolHyp_HG_VFX1,
+ SolHyp_HG_VFX2,
+ SolHyp_HG_VFX3,
+ // Must list all primary, shrapnel, and pattern ammos.
+ },
+ //Animations = FlakAnimation,
+ //Upgrades = UpgradeModules,
+ };
+ // Don't edit below this line.
+ }
+}
diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs
index 21be6e736..a4f23aa6f 100644
--- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs
@@ -11,6 +11,7 @@
using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef;
using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions;
using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo;
+
using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType;
using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef;
using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType;
@@ -26,11 +27,11 @@
using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef;
using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture;
using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef;
+
using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage;
namespace Scripts
{ // Don't edit above this line
-
partial class Parts
{
private AmmoDef SolHyp_HeavyMAC_Ammo => new AmmoDef // Your ID, for slotting into the Weapon CS
@@ -38,12 +39,14 @@ partial class Parts
AmmoMagazine = "MACmag", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
AmmoRound = "Heavy MAC Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
HybridRound = true, // Use both a physical ammo magazine and energy per shot.
- EnergyCost = 0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
+ EnergyCost = 0.055f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
BaseDamage = 75000f, // Direct damage; one steel plate is worth 100.
- Mass = 10f, // In kilograms; how much force the impact will apply to the target.
- Health = 200, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
+ Mass = 1000f, // In kilograms; how much force the impact will apply to the target.
+ Health = 0, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
BackKickForce = 500000f, // Recoil. This is applied to the Parent Grid.
- DecayPerShot = 0f, // Damage to the firing weapon itself.
+ DecayPerShot = 0f, // Damage to the firing weapon itself.
+ //float.MaxValue will drop the weapon to the first build state and destroy all components used for construction
+ //If greater than cube integrity it will remove the cube upon firing, without causing deformation (makes it look like the whole "block" flew away)
HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly.
EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading.
IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod.
@@ -63,28 +66,28 @@ partial class Parts
Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
{
AmmoRound = "SolHyp_HeavyMAC_Shrap", // AmmoRound field of the ammo to spawn.
- Fragments = 10, // Number of projectiles to spawn.
- Degrees = 4, // Cone in which to randomize direction of spawned projectiles.
+ Fragments = 4, // Number of projectiles to spawn.
+ Degrees = 65, // Cone in which to randomize direction of spawned projectiles.
Reverse = false, // Spawn projectiles backward instead of forward.
- DropVelocity = true, // fragments will not inherit velocity from parent.
+ DropVelocity = false, // fragments will not inherit velocity from parent.
Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
- Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
+ Radial = 10f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
{
- Enable = true, // Enables TimedSpawns mechanism
+ Enable = false, // Enables TimedSpawns mechanism
Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
- StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life
+ StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life
MaxSpawns = 1, // Max number of fragment children to spawn
- Proximity = 500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
ParentDies = true, // Parent dies once after it spawns its last child.
- PointAtTarget = false, // Start fragment direction pointing at Target
+ PointAtTarget = true, // Start fragment direction pointing at Target
PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
- DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees
- GroupSize = 1, // Number of spawns in each group
- GroupDelay = 1, // Delay between each group.
+ DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees
+ GroupSize = 5, // Number of spawns in each group
+ GroupDelay = 0, // Delay between each group.
},
},
Pattern = new PatternDef
@@ -95,7 +98,7 @@ partial class Parts
Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
TriggerChance = 1f, // This is %
Random = false, // This randomizes the number spawned at once, NOT the list order.
- RandomMin = 1,
+ RandomMin = 1,
RandomMax = 1,
SkipParent = false, // Skip the Ammo itself, in the list
PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
@@ -105,32 +108,32 @@ partial class Parts
MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled.
DamageVoxels = false, // Whether to damage voxels.
SelfDamage = false, // Whether to damage the weapon's own grid.
- HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
- VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less.
- Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less.
+ HealthHitModifier = 0.5f, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
+ VoxelHitModifier = 1f, // Voxel damage multiplier; defaults to 1 if zero or less.
+ Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less.
// For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage.
FallOff = new FallOffDef
{
Distance = 0f, // Distance at which damage begins falling off.
- MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
+ MinMultipler = 1.0f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
},
Grids = new GridSizeDef
{
Large = -1f, // Multiplier for damage against large grids.
- Small = 0.25f, // Multiplier for damage against small grids.
+ Small = -1f, // Multiplier for damage against small grids.
},
Armor = new ArmorDef
{
- Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
+ Armor = 1.5f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
Light = -1f, // Multiplier for damage against light armor.
Heavy = -1f, // Multiplier for damage against heavy armor.
NonArmor = 0.75f, // Multiplier for damage against every else.
},
Shields = new ShieldDef
{
- Modifier = 2f, // Multiplier for damage against shields.
+ Modifier = 8f, // Multiplier for damage against shields.
Type = Default, // Damage vs healing against shields; Default, Heal
- BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield.
+ BypassModifier = 0.5f, // If greater than zero, the percentage of damage that will penetrate the shield.
},
DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy
{
@@ -166,7 +169,7 @@ partial class Parts
Damage = 0f,
Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
- Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
//.Curve drops off damage sharply as it approaches the max radius
//.InvCurve drops off sharply from the middle and tapers to max radius
@@ -178,9 +181,9 @@ partial class Parts
EndOfLife = new EndOfLifeDef
{
Enable = true,
- Radius = 8f, // Radius of AOE effect, in meters.
- Damage = 85000f,
- Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ Radius = 1.5f, // Radius of AOE effect, in meters.
+ Damage = 6500f,
+ Depth = 1.5f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
@@ -193,8 +196,8 @@ partial class Parts
MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
NoVisuals = false,
NoSound = false,
- ParticleScale = 2,
- CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC
+ ParticleScale = 1,
+ CustomParticle = "Exp_Spark_large", // Particle SubtypeID, from your Particle SBC
CustomSound = "", // SubtypeID from your Audio SBC, not a filename
Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
},
@@ -262,34 +265,33 @@ partial class Parts
},
Trajectory = new TrajectoryDef
{
- Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
- TargetLossDegree = 0f, // Degrees, Is pointed forward
+ Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
+ TargetLossDegree = 80f, // Degrees, Is pointed forward
TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
- DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ DesiredSpeed = 3600, // voxel phasing if you go above 5100
MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
- GravityMultiplier = 25f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
+ GravityMultiplier = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards.
- RangeVariance = Random(start: 0, end: 200), // subtracts value from MaxTrajectory
+ RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory
MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
Smarts = new SmartsDef
{
Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
- Aggressiveness = 0.01f, // controls how responsive tracking is.
- MaxLateralThrust = 0.01f, // controls how sharp the trajectile may turn
+ Aggressiveness = 0.3f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.1, // controls how sharp the trajectile may turn
TrackingDelay = 0, // Measured in Shape diameter units traveled.
MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
- OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's.
+ OverideTarget = true, // when set to true ammo picks its own target, does not use hardpoint's.
CheckFutureIntersection = false, // Utilize obstacle avoidance?
MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited
NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
Roam = false, // Roam current area after target loss
KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
- OffsetRatio = 0f, // The ratio to offset the random direction (0 to 1)
- OffsetTime = 0, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
- NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets)
+ OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
},
Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
{
@@ -306,14 +308,14 @@ partial class Parts
VisualProbability = 1f, // %
ShieldHitDraw = false,
Particles = new AmmoParticleDef
- {
+ {
Ammo = new ParticleDef
{
Name = "", //ShipWelderArc
Offset = Vector(x: 0, y: 0, z: 0),
Extras = new ParticleOptionDef
{
- Scale = 1,
+ Scale = 1f,
},
},
Hit = new ParticleDef
@@ -323,7 +325,7 @@ partial class Parts
Offset = Vector(x: 0, y: 0, z: 0),
Extras = new ParticleOptionDef
{
- Scale = 1,
+ Scale = 1f,
HitPlayChance = 1f,
},
},
@@ -341,8 +343,8 @@ partial class Parts
},
Lines = new LineDef
{
- ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range.
- WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width)
+ ColorVariance = Random(start: 0.5f, end: 1f), // multiply the color by random values within range.
+ WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width)
Tracer = new TracerBaseDef
{
Enable = true,
@@ -388,7 +390,7 @@ partial class Parts
},
OffsetEffect = new OffsetEffectDef
{
- MaxOffset = 0,// 0 offset value disables this effect
+ MaxOffset = 0f,// 0 offset value disables this effect
MinLength = 1f,
MaxLength = 5f,
},
@@ -410,7 +412,7 @@ partial class Parts
{
Type = Particle, // Particle or Item (Inventory Component)
Speed = 100f, // Speed inventory is ejected from in dummy direction
- SpawnChance = 0f, // chance of triggering effect (0 - 1)
+ SpawnChance = 0.5f, // chance of triggering effect (0 - 1)
CompDef = new ComponentDef
{
ItemName = "", //InventoryComponent name
@@ -418,20 +420,22 @@ partial class Parts
Delay = 0, // delay in ticks after shot before ejected
}
}, // Don't edit below this line
- };
+ };
+
-
- private AmmoDef SolHyp_HeavyMAC_Ammo_Shrap => new AmmoDef // Your ID, for slotting into the Weapon CS
+ private AmmoDef SolHyp_HeavyMAC_Ammo_Shrap => new AmmoDef // Your ID, for slotting into the Weapon CS
{
AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
AmmoRound = "SolHyp_HeavyMAC_Shrap", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
HybridRound = false, // Use both a physical ammo magazine and energy per shot.
- EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
- BaseDamage = 10050f, // Direct damage; one steel plate is worth 100.
- Mass = 10f, // In kilograms; how much force the impact will apply to the target.
- Health = 0, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
+ EnergyCost = 0.01f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
+ BaseDamage = 15625f, // Direct damage; one steel plate is worth 100.
+ Mass = 50f, // In kilograms; how much force the impact will apply to the target.
+ Health = 40, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
BackKickForce = 0f, // Recoil. This is applied to the Parent Grid.
- DecayPerShot = 0f, // Damage to the firing weapon itself.
+ DecayPerShot = 0f, // Damage to the firing weapon itself.
+ //float.MaxValue will drop the weapon to the first build state and destroy all components used for construction
+ //If greater than cube integrity it will remove the cube upon firing, without causing deformation (makes it look like the whole "block" flew away)
HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly.
EnergyMagazineSize = 0, // For energy weapons, how many shots to fire before reloading.
IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod.
@@ -451,28 +455,28 @@ partial class Parts
Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
{
AmmoRound = "", // AmmoRound field of the ammo to spawn.
- Fragments = 36, // Number of projectiles to spawn.
- Degrees = 4, // Cone in which to randomize direction of spawned projectiles.
+ Fragments = 0, // Number of projectiles to spawn.
+ Degrees = 0, // Cone in which to randomize direction of spawned projectiles.
Reverse = false, // Spawn projectiles backward instead of forward.
- DropVelocity = true, // fragments will not inherit velocity from parent.
+ DropVelocity = false, // fragments will not inherit velocity from parent.
Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
- IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
+ IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
{
Enable = false, // Enables TimedSpawns mechanism
Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
- StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life
- MaxSpawns = 1, // Max number of fragment children to spawn
- Proximity = 800, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
- ParentDies = true, // Parent dies once after it spawns its last child.
- PointAtTarget = true, // Start fragment direction pointing at Target
- PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
- DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees
- GroupSize = 1, // Number of spawns in each group
- GroupDelay = 1, // Delay between each group.
+ StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life
+ MaxSpawns = 0, // Max number of fragment children to spawn
+ Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ ParentDies = false, // Parent dies once after it spawns its last child.
+ PointAtTarget = false, // Start fragment direction pointing at Target
+ PointType = Direct, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
+ DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees
+ GroupSize = 0, // Number of spawns in each group
+ GroupDelay = 0, // Delay between each group.
},
},
Pattern = new PatternDef
@@ -480,7 +484,7 @@ partial class Parts
Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo.
"",
},
- Mode = Never, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
+ Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
TriggerChance = 1f, // This is %
Random = false, // This randomizes the number spawned at once, NOT the list order.
RandomMin = 1,
@@ -493,14 +497,14 @@ partial class Parts
MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled.
DamageVoxels = false, // Whether to damage voxels.
SelfDamage = false, // Whether to damage the weapon's own grid.
- HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
+ HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less.
- Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less.
+ Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less.
// For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage.
FallOff = new FallOffDef
{
- Distance = 0f, // Distance at which damage begins falling off.
- MinMultipler = 0.5f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
+ Distance = 10f, // Distance at which damage begins falling off.
+ MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
},
Grids = new GridSizeDef
{
@@ -509,16 +513,16 @@ partial class Parts
},
Armor = new ArmorDef
{
- Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
+ Armor = 2.5f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
Light = -1f, // Multiplier for damage against light armor.
- Heavy = 0.8f, // Multiplier for damage against heavy armor.
- NonArmor = 0.6f, // Multiplier for damage against every else.
+ Heavy = -1f, // Multiplier for damage against heavy armor.
+ NonArmor = -1.5f, // Multiplier for damage against every else.
},
Shields = new ShieldDef
{
- Modifier = 2f, // Multiplier for damage against shields.
+ Modifier = 15f, // Multiplier for damage against shields.
Type = Default, // Damage vs healing against shields; Default, Heal
- BypassModifier = 0f, // If greater than zero, the percentage of damage that will penetrate the shield.
+ BypassModifier = 0.5f, // If greater than zero, the percentage of damage that will penetrate the shield.
},
DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy
{
@@ -554,7 +558,7 @@ partial class Parts
Damage = 0f,
Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
- Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
//.Curve drops off damage sharply as it approaches the max radius
//.InvCurve drops off sharply from the middle and tapers to max radius
@@ -565,12 +569,12 @@ partial class Parts
},
EndOfLife = new EndOfLifeDef
{
- Enable = false,
- Radius = 3f, // Radius of AOE effect, in meters.
- Damage = 500f,
- Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ Enable = true,
+ Radius = 1f, // Radius of AOE effect, in meters.
+ Damage = 1f,
+ Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
- Falloff = NoFalloff, //.NoFalloff applies the same damage to all blocks in radius
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
//.Linear drops evenly by distance from center out to max radius
//.Curve drops off damage sharply as it approaches the max radius
//.InvCurve drops off sharply from the middle and tapers to max radius
@@ -581,9 +585,9 @@ partial class Parts
MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
NoVisuals = false,
NoSound = false,
- ParticleScale = 2,
- CustomParticle = "", // Particle SubtypeID, from your Particle SBC
- CustomSound = "", // SubtypeID from your Audio SBC, not a filename
+ ParticleScale = 1,
+ CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC
+ CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename
Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
},
},
@@ -592,12 +596,12 @@ partial class Parts
Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!!
Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push,
Mode = Effect, // Effect , Field
- Strength = 100f,
- Radius = 5f, // Meters
- Duration = 100, // In Ticks
- StackDuration = true, // Combined Durations
- Depletable = true,
- MaxStacks = 10, // Max Debuffs at once
+ Strength = 0,
+ Radius = 0f, // Meters
+ Duration = 0, // In Ticks
+ StackDuration = false, // Combined Durations
+ Depletable = false,
+ MaxStacks = 0, // Max Debuffs at once
NoHitParticle = false,
/*
EnergySink : Targets & Shutdowns Power Supplies, such as Batteries & Reactor
@@ -651,33 +655,32 @@ partial class Parts
Trajectory = new TrajectoryDef
{
Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
- TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossDegree = 80f, // Degrees, Is pointed forward
TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
- MaxLifeTime = 280, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
+ MaxLifeTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
- DesiredSpeed = 1600, // voxel phasing if you go above 5100
- MaxTrajectory = 1150f, // Max Distance the projectile or beam can Travel.
+ DesiredSpeed = 500, // voxel phasing if you go above 5100
+ MaxTrajectory = 50f, // Max Distance the projectile or beam can Travel.
DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards.
- RangeVariance = Random(start: 0, end: 200), // subtracts value from MaxTrajectory
+ RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory
MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
Smarts = new SmartsDef
{
Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
- Aggressiveness = 1f, // controls how responsive tracking is.
- MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn
- TrackingDelay = 0, // Measured in Shape diameter units traveled.
+ Aggressiveness = 0.3f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.05, // controls how sharp the trajectile may turn
+ TrackingDelay = 10, // Measured in Shape diameter units traveled.
MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's.
- CheckFutureIntersection = false, // Utilize obstacle avoidance?
+ CheckFutureIntersection = false, // Utilize obstacle avoidance for drones
MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited
NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
Roam = false, // Roam current area after target loss
KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
- OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1)
- OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
- //NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets)
+ OffsetRatio = 0f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 0, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
},
Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
{
@@ -690,32 +693,28 @@ partial class Parts
},
AmmoGraphics = new GraphicDef
{
- ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ ModelName = "NecronEnergyProjectile", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
VisualProbability = 1f, // %
ShieldHitDraw = false,
Particles = new AmmoParticleDef
{
Ammo = new ParticleDef
{
- Name = "", //ShipWelderArc
+ Name = "NecronEnergyProjectile", //ShipWelderArc
Offset = Vector(x: 0, y: 0, z: 0),
Extras = new ParticleOptionDef
{
- Scale = 1,
+ Scale = 0.15f,
},
},
Hit = new ParticleDef
{
- Name = "",
+ Name = "Exp_Spark_FCC",
ApplyToShield = true,
-
Offset = Vector(x: 0, y: 0, z: 0),
Extras = new ParticleOptionDef
{
- Restart = false,
- MaxDistance = 5000,
- MaxDuration = 0,
- Scale = 1.0f,
+ Scale = 1,
HitPlayChance = 1f,
},
},
@@ -733,18 +732,18 @@ partial class Parts
},
Lines = new LineDef
{
- ColorVariance = Random(start: 0.5f, end: 1f), // multiply the color by random values within range.
- WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width)
+ ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range.
+ WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width)
Tracer = new TracerBaseDef
{
Enable = true,
- Length = 100f, //
- Width = 0.2f, //
- Color = Color(red: 0, green: 20, blue: 40f, alpha: 0.02f), // RBG 255 is Neon Glowing, 100 is Quite Bright.
- VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color
- VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible.
+ Length = 15f, //
+ Width = 0.45f, //
+ Color = Color(red: 1, green: 10, blue: 30f, alpha: 0.1f), // RBG 255 is Neon Glowing, 100 is Quite Bright.
+ VisualFadeStart = 1, // Number of ticks the weapon has been firing before projectiles begin to fade their color
+ VisualFadeEnd = 60, // How many ticks after fade began before it will be invisible.
Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc..
- "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled.
},
TextureMode = Normal, // Normal, Cycle, Chaos, Wave
Segmentation = new SegmentDef
@@ -756,7 +755,7 @@ partial class Parts
SegmentLength = 0f, // Uses the values below.
SegmentGap = 0f, // Uses Tracer textures and values
Speed = 1f, // meters per second
- Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 0.02f),
+ Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 0.1f),
WidthMultiplier = 1f,
Reverse = false,
UseLineVariance = true,
@@ -768,21 +767,21 @@ partial class Parts
{
Enable = true,
Textures = new[] {
- "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled.
},
TextureMode = Normal,
- DecayTime = 30, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
- Color = Color(red: 0, green: 2, blue: 1, alpha: 0.02f),
+ DecayTime = 60, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 25, green: 1, blue: 20f, alpha: 0.1f),
Back = false,
- CustomWidth = 1f,
+ CustomWidth = 0,
UseWidthVariance = false,
UseColorFade = true,
},
OffsetEffect = new OffsetEffectDef
{
- MaxOffset = 1f,// 0 offset value disables this effect
- MinLength = 10f,
- MaxLength = 20f,
+ MaxOffset = 0,// 0 offset value disables this effect
+ MinLength = 0.2f,
+ MaxLength = 4,
},
},
},
@@ -795,14 +794,14 @@ partial class Parts
PlayerHitSound = "",
VoxelHitSound = "",
FloatingHitSound = "",
- HitPlayChance = 1f,
+ HitPlayChance = 0.5f,
HitPlayShield = true,
},
Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection
{
Type = Particle, // Particle or Item (Inventory Component)
Speed = 100f, // Speed inventory is ejected from in dummy direction
- SpawnChance = 0f, // chance of triggering effect (0 - 1)
+ SpawnChance = 0.5f, // chance of triggering effect (0 - 1)
CompDef = new ComponentDef
{
ItemName = "", //InventoryComponent name
@@ -812,22 +811,7 @@ partial class Parts
}, // Don't edit below this line
};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
private AmmoDef SolHyp_HG_VFX1 => new AmmoDef // Your ID, for slotting into the Weapon CS
{
AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
@@ -1058,11 +1042,11 @@ partial class Parts
Trajectory = new TrajectoryDef
{
Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
- TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossDegree = 80f, // Degrees, Is pointed forward
TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
- DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ DesiredSpeed = 3600, // voxel phasing if you go above 5100
MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
GravityMultiplier = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
@@ -1448,11 +1432,11 @@ partial class Parts
Trajectory = new TrajectoryDef
{
Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
- TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossDegree = 80f, // Degrees, Is pointed forward
TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
- DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ DesiredSpeed = 3600, // voxel phasing if you go above 5100
MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
GravityMultiplier = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
@@ -1838,11 +1822,11 @@ partial class Parts
Trajectory = new TrajectoryDef
{
Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
- TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossDegree = 80f, // Degrees, Is pointed forward
TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
- DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ DesiredSpeed = 3600, // voxel phasing if you go above 5100
MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
GravityMultiplier = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.disabled b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.disabled
new file mode 100644
index 000000000..21be6e736
--- /dev/null
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.disabled
@@ -0,0 +1,2003 @@
+using static Scripts.Structure.WeaponDefinition;
+using static Scripts.Structure.WeaponDefinition.AmmoDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef;
+using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage;
+
+namespace Scripts
+{ // Don't edit above this line
+
+ partial class Parts
+ {
+ private AmmoDef SolHyp_HeavyMAC_Ammo => new AmmoDef // Your ID, for slotting into the Weapon CS
+ {
+ AmmoMagazine = "MACmag", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
+ AmmoRound = "Heavy MAC Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
+ HybridRound = true, // Use both a physical ammo magazine and energy per shot.
+ EnergyCost = 0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
+ BaseDamage = 75000f, // Direct damage; one steel plate is worth 100.
+ Mass = 10f, // In kilograms; how much force the impact will apply to the target.
+ Health = 200, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
+ BackKickForce = 500000f, // Recoil. This is applied to the Parent Grid.
+ DecayPerShot = 0f, // Damage to the firing weapon itself.
+ HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly.
+ EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading.
+ IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod.
+ IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels.
+ Synchronize = false, // For future use
+ HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot.
+ Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0.
+ {
+ Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision.
+ Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape.
+ },
+ ObjectsHit = new ObjectsHitDef
+ {
+ MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited.
+ CountBlocks = false, // Counts individual blocks, not just entities hit.
+ },
+ Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
+ {
+ AmmoRound = "SolHyp_HeavyMAC_Shrap", // AmmoRound field of the ammo to spawn.
+ Fragments = 10, // Number of projectiles to spawn.
+ Degrees = 4, // Cone in which to randomize direction of spawned projectiles.
+ Reverse = false, // Spawn projectiles backward instead of forward.
+ DropVelocity = true, // fragments will not inherit velocity from parent.
+ Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
+ Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
+ MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
+ IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
+ AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
+ TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
+ {
+ Enable = true, // Enables TimedSpawns mechanism
+ Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
+ StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life
+ MaxSpawns = 1, // Max number of fragment children to spawn
+ Proximity = 500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ ParentDies = true, // Parent dies once after it spawns its last child.
+ PointAtTarget = false, // Start fragment direction pointing at Target
+ PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
+ DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees
+ GroupSize = 1, // Number of spawns in each group
+ GroupDelay = 1, // Delay between each group.
+ },
+ },
+ Pattern = new PatternDef
+ {
+ Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo.
+ "HG_VFX1","HG_VFX2","HG_VFX3",
+ },
+ Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
+ TriggerChance = 1f, // This is %
+ Random = false, // This randomizes the number spawned at once, NOT the list order.
+ RandomMin = 1,
+ RandomMax = 1,
+ SkipParent = false, // Skip the Ammo itself, in the list
+ PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
+ },
+ DamageScales = new DamageScaleDef
+ {
+ MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled.
+ DamageVoxels = false, // Whether to damage voxels.
+ SelfDamage = false, // Whether to damage the weapon's own grid.
+ HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
+ VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less.
+ Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less.
+ // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage.
+ FallOff = new FallOffDef
+ {
+ Distance = 0f, // Distance at which damage begins falling off.
+ MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
+ },
+ Grids = new GridSizeDef
+ {
+ Large = -1f, // Multiplier for damage against large grids.
+ Small = 0.25f, // Multiplier for damage against small grids.
+ },
+ Armor = new ArmorDef
+ {
+ Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
+ Light = -1f, // Multiplier for damage against light armor.
+ Heavy = -1f, // Multiplier for damage against heavy armor.
+ NonArmor = 0.75f, // Multiplier for damage against every else.
+ },
+ Shields = new ShieldDef
+ {
+ Modifier = 2f, // Multiplier for damage against shields.
+ Type = Default, // Damage vs healing against shields; Default, Heal
+ BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield.
+ },
+ DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy
+ {
+ Base = Kinetic, // Base Damage uses this
+ AreaEffect = Kinetic,
+ Detonation = Kinetic,
+ Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line
+ },
+ Custom = new CustomScalesDef
+ {
+ SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive.
+ Types = new[] // List of blocks to apply custom damage multipliers to.
+ {
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test1",
+ Modifier = -1f,
+ },
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test2",
+ Modifier = -1f,
+ },
+ },
+ },
+ },
+ AreaOfDamage = new AreaOfDamageDef
+ {
+ ByBlockHit = new ByBlockHitDef
+ {
+ Enable = false,
+ Radius = 0f, // Meters
+ Damage = 0f,
+ Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ EndOfLife = new EndOfLifeDef
+ {
+ Enable = true,
+ Radius = 8f, // Radius of AOE effect, in meters.
+ Damage = 85000f,
+ Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode.
+ MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
+ NoVisuals = false,
+ NoSound = false,
+ ParticleScale = 2,
+ CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC
+ CustomSound = "", // SubtypeID from your Audio SBC, not a filename
+ Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ },
+ Ewar = new EwarDef
+ {
+ Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!!
+ Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push,
+ Mode = Effect, // Effect , Field
+ Strength = 100f,
+ Radius = 5f, // Meters
+ Duration = 100, // In Ticks
+ StackDuration = true, // Combined Durations
+ Depletable = true,
+ MaxStacks = 10, // Max Debuffs at once
+ NoHitParticle = false,
+ /*
+ EnergySink : Targets & Shutdowns Power Supplies, such as Batteries & Reactor
+ Emp : Targets & Shutdown any Block capable of being powered
+ Offense : Targets & Shutdowns Weaponry
+ Nav : Targets & Shutdown Gyros or Locks them down
+ Dot : Deals Damage to Blocks in radius
+ AntiSmart : Effects & Scrambles the Targeting List of Affected Missiles
+ JumpNull : Shutdown & Stops any Active Jumps, or JumpDrive Units in radius
+ Tractor : Affects target with Physics
+ Pull : Affects target with Physics
+ Push : Affects target with Physics
+ Anchor : Targets & Shutdowns Thrusters
+
+ */
+ Force = new PushPullDef
+ {
+ ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ ForceTo = HitPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ Position = TargetCenterOfMass, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ DisableRelativeMass = false,
+ TractorRange = 0,
+ ShooterFeelsForce = false,
+ },
+ Field = new FieldDef
+ {
+ Interval = 0, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60).
+ PulseChance = 0, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse.
+ GrowTime = 0, // How many ticks it should take the field to grow to full size.
+ HideModel = false, // Hide the default bubble, or other model if specified.
+ ShowParticle = true, // Show Block damage effect.
+ TriggerRange = 250f, //range at which fields are triggered
+ Particle = new ParticleDef // Particle effect to generate at the field's position.
+ {
+ Name = "", // SubtypeId of field particle effect.
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1, // Scale of effect.
+ },
+ },
+ },
+ },
+ Beams = new BeamDef
+ {
+ Enable = false, // Enable beam behaviour. Please have 3600 RPM, when this Setting is enabled. Please do not fire Beams into Voxels.
+ VirtualBeams = false, // Only one damaging beam, but with the effectiveness of the visual beams combined (better performance).
+ ConvergeBeams = false, // When using virtual beams, converge the visual beams to the location of the real beam.
+ RotateRealBeam = false, // The real beam is rotated between all visual beams, instead of centered between them.
+ OneParticle = false, // Only spawn one particle hit per beam weapon.
+ },
+ Trajectory = new TrajectoryDef
+ {
+ Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
+ TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
+ AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
+ DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
+ DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
+ GravityMultiplier = 25f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
+ SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards.
+ RangeVariance = Random(start: 0, end: 200), // subtracts value from MaxTrajectory
+ MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
+ Smarts = new SmartsDef
+ {
+ Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
+ Aggressiveness = 0.01f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.01f, // controls how sharp the trajectile may turn
+ TrackingDelay = 0, // Measured in Shape diameter units traveled.
+ MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's.
+ CheckFutureIntersection = false, // Utilize obstacle avoidance?
+ MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited
+ NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
+ Roam = false, // Roam current area after target loss
+ KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
+ OffsetRatio = 0f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 0, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
+ NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets)
+ },
+ Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
+ {
+ DetectRadius = 0,
+ DeCloakRadius = 0,
+ FieldTime = 0,
+ Cloak = false,
+ Persist = false,
+ },
+ },
+ AmmoGraphics = new GraphicDef
+ {
+ ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ VisualProbability = 1f, // %
+ ShieldHitDraw = false,
+ Particles = new AmmoParticleDef
+ {
+ Ammo = new ParticleDef
+ {
+ Name = "", //ShipWelderArc
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ },
+ },
+ Hit = new ParticleDef
+ {
+ Name = "Exp_Spark_FCC",
+ ApplyToShield = true,
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ HitPlayChance = 1f,
+ },
+ },
+ Eject = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ HitPlayChance = 1f,
+ },
+ },
+ },
+ Lines = new LineDef
+ {
+ ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range.
+ WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width)
+ Tracer = new TracerBaseDef
+ {
+ Enable = true,
+ Length = 100f, //
+ Width = 1.25f, //
+ Color = Color(red: 20, green: 40, blue: 40f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright.
+ VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color
+ VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible.
+ Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc..
+ "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal, // Normal, Cycle, Chaos, Wave
+ Segmentation = new SegmentDef
+ {
+ Enable = false, // If true Tracer TextureMode is ignored
+ Textures = new[] {
+ "", // Please always have this Line set, if this Section is enabled.
+ },
+ SegmentLength = 0f, // Uses the values below.
+ SegmentGap = 0f, // Uses Tracer textures and values
+ Speed = 1f, // meters per second
+ Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1),
+ WidthMultiplier = 1f,
+ Reverse = false,
+ UseLineVariance = true,
+ WidthVariance = Random(start: 0f, end: 0f),
+ ColorVariance = Random(start: 0f, end: 0f)
+ }
+ },
+ Trail = new TrailDef
+ {
+ Enable = true,
+ Textures = new[] {
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal,
+ DecayTime = 60, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 40, green: 20, blue: 5, alpha: 1),
+ Back = false,
+ CustomWidth = 0.35f,
+ UseWidthVariance = false,
+ UseColorFade = true,
+ },
+ OffsetEffect = new OffsetEffectDef
+ {
+ MaxOffset = 0,// 0 offset value disables this effect
+ MinLength = 1f,
+ MaxLength = 5f,
+ },
+ },
+ },
+ AmmoAudio = new AmmoAudioDef
+ {
+ TravelSound = "FCC_Whistle", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight
+ HitSound = "",
+ ShotSound = "",
+ ShieldHitSound = "",
+ PlayerHitSound = "",
+ VoxelHitSound = "",
+ FloatingHitSound = "",
+ HitPlayChance = 1f,
+ HitPlayShield = true,
+ },
+ Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection
+ {
+ Type = Particle, // Particle or Item (Inventory Component)
+ Speed = 100f, // Speed inventory is ejected from in dummy direction
+ SpawnChance = 0f, // chance of triggering effect (0 - 1)
+ CompDef = new ComponentDef
+ {
+ ItemName = "", //InventoryComponent name
+ ItemLifeTime = 0, // how long item should exist in world
+ Delay = 0, // delay in ticks after shot before ejected
+ }
+ }, // Don't edit below this line
+ };
+
+
+ private AmmoDef SolHyp_HeavyMAC_Ammo_Shrap => new AmmoDef // Your ID, for slotting into the Weapon CS
+ {
+ AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
+ AmmoRound = "SolHyp_HeavyMAC_Shrap", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
+ HybridRound = false, // Use both a physical ammo magazine and energy per shot.
+ EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
+ BaseDamage = 10050f, // Direct damage; one steel plate is worth 100.
+ Mass = 10f, // In kilograms; how much force the impact will apply to the target.
+ Health = 0, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
+ BackKickForce = 0f, // Recoil. This is applied to the Parent Grid.
+ DecayPerShot = 0f, // Damage to the firing weapon itself.
+ HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly.
+ EnergyMagazineSize = 0, // For energy weapons, how many shots to fire before reloading.
+ IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod.
+ IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels.
+ Synchronize = false, // For future use
+ HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot.
+ Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0.
+ {
+ Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision.
+ Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape.
+ },
+ ObjectsHit = new ObjectsHitDef
+ {
+ MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited.
+ CountBlocks = false, // Counts individual blocks, not just entities hit.
+ },
+ Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
+ {
+ AmmoRound = "", // AmmoRound field of the ammo to spawn.
+ Fragments = 36, // Number of projectiles to spawn.
+ Degrees = 4, // Cone in which to randomize direction of spawned projectiles.
+ Reverse = false, // Spawn projectiles backward instead of forward.
+ DropVelocity = true, // fragments will not inherit velocity from parent.
+ Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
+ Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
+ MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
+ IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
+ AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
+ TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
+ {
+ Enable = false, // Enables TimedSpawns mechanism
+ Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
+ StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life
+ MaxSpawns = 1, // Max number of fragment children to spawn
+ Proximity = 800, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ ParentDies = true, // Parent dies once after it spawns its last child.
+ PointAtTarget = true, // Start fragment direction pointing at Target
+ PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
+ DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees
+ GroupSize = 1, // Number of spawns in each group
+ GroupDelay = 1, // Delay between each group.
+ },
+ },
+ Pattern = new PatternDef
+ {
+ Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo.
+ "",
+ },
+ Mode = Never, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
+ TriggerChance = 1f, // This is %
+ Random = false, // This randomizes the number spawned at once, NOT the list order.
+ RandomMin = 1,
+ RandomMax = 1,
+ SkipParent = false, // Skip the Ammo itself, in the list
+ PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
+ },
+ DamageScales = new DamageScaleDef
+ {
+ MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled.
+ DamageVoxels = false, // Whether to damage voxels.
+ SelfDamage = false, // Whether to damage the weapon's own grid.
+ HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
+ VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less.
+ Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less.
+ // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage.
+ FallOff = new FallOffDef
+ {
+ Distance = 0f, // Distance at which damage begins falling off.
+ MinMultipler = 0.5f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
+ },
+ Grids = new GridSizeDef
+ {
+ Large = -1f, // Multiplier for damage against large grids.
+ Small = -1f, // Multiplier for damage against small grids.
+ },
+ Armor = new ArmorDef
+ {
+ Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
+ Light = -1f, // Multiplier for damage against light armor.
+ Heavy = 0.8f, // Multiplier for damage against heavy armor.
+ NonArmor = 0.6f, // Multiplier for damage against every else.
+ },
+ Shields = new ShieldDef
+ {
+ Modifier = 2f, // Multiplier for damage against shields.
+ Type = Default, // Damage vs healing against shields; Default, Heal
+ BypassModifier = 0f, // If greater than zero, the percentage of damage that will penetrate the shield.
+ },
+ DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy
+ {
+ Base = Kinetic, // Base Damage uses this
+ AreaEffect = Kinetic,
+ Detonation = Kinetic,
+ Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line
+ },
+ Custom = new CustomScalesDef
+ {
+ SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive.
+ Types = new[] // List of blocks to apply custom damage multipliers to.
+ {
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test1",
+ Modifier = -1f,
+ },
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test2",
+ Modifier = -1f,
+ },
+ },
+ },
+ },
+ AreaOfDamage = new AreaOfDamageDef
+ {
+ ByBlockHit = new ByBlockHitDef
+ {
+ Enable = false,
+ Radius = 0f, // Meters
+ Damage = 0f,
+ Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ EndOfLife = new EndOfLifeDef
+ {
+ Enable = false,
+ Radius = 3f, // Radius of AOE effect, in meters.
+ Damage = 500f,
+ Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = NoFalloff, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode.
+ MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
+ NoVisuals = false,
+ NoSound = false,
+ ParticleScale = 2,
+ CustomParticle = "", // Particle SubtypeID, from your Particle SBC
+ CustomSound = "", // SubtypeID from your Audio SBC, not a filename
+ Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ },
+ Ewar = new EwarDef
+ {
+ Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!!
+ Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push,
+ Mode = Effect, // Effect , Field
+ Strength = 100f,
+ Radius = 5f, // Meters
+ Duration = 100, // In Ticks
+ StackDuration = true, // Combined Durations
+ Depletable = true,
+ MaxStacks = 10, // Max Debuffs at once
+ NoHitParticle = false,
+ /*
+ EnergySink : Targets & Shutdowns Power Supplies, such as Batteries & Reactor
+ Emp : Targets & Shutdown any Block capable of being powered
+ Offense : Targets & Shutdowns Weaponry
+ Nav : Targets & Shutdown Gyros or Locks them down
+ Dot : Deals Damage to Blocks in radius
+ AntiSmart : Effects & Scrambles the Targeting List of Affected Missiles
+ JumpNull : Shutdown & Stops any Active Jumps, or JumpDrive Units in radius
+ Tractor : Affects target with Physics
+ Pull : Affects target with Physics
+ Push : Affects target with Physics
+ Anchor : Targets & Shutdowns Thrusters
+
+ */
+ Force = new PushPullDef
+ {
+ ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ ForceTo = HitPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ Position = TargetCenterOfMass, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ DisableRelativeMass = false,
+ TractorRange = 0,
+ ShooterFeelsForce = false,
+ },
+ Field = new FieldDef
+ {
+ Interval = 0, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60).
+ PulseChance = 0, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse.
+ GrowTime = 0, // How many ticks it should take the field to grow to full size.
+ HideModel = false, // Hide the default bubble, or other model if specified.
+ ShowParticle = true, // Show Block damage effect.
+ TriggerRange = 250f, //range at which fields are triggered
+ Particle = new ParticleDef // Particle effect to generate at the field's position.
+ {
+ Name = "", // SubtypeId of field particle effect.
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1, // Scale of effect.
+ },
+ },
+ },
+ },
+ Beams = new BeamDef
+ {
+ Enable = false, // Enable beam behaviour. Please have 3600 RPM, when this Setting is enabled. Please do not fire Beams into Voxels.
+ VirtualBeams = false, // Only one damaging beam, but with the effectiveness of the visual beams combined (better performance).
+ ConvergeBeams = false, // When using virtual beams, converge the visual beams to the location of the real beam.
+ RotateRealBeam = false, // The real beam is rotated between all visual beams, instead of centered between them.
+ OneParticle = false, // Only spawn one particle hit per beam weapon.
+ },
+ Trajectory = new TrajectoryDef
+ {
+ Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
+ TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ MaxLifeTime = 280, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
+ AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
+ DesiredSpeed = 1600, // voxel phasing if you go above 5100
+ MaxTrajectory = 1150f, // Max Distance the projectile or beam can Travel.
+ DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
+ GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
+ SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards.
+ RangeVariance = Random(start: 0, end: 200), // subtracts value from MaxTrajectory
+ MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
+ Smarts = new SmartsDef
+ {
+ Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
+ Aggressiveness = 1f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn
+ TrackingDelay = 0, // Measured in Shape diameter units traveled.
+ MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's.
+ CheckFutureIntersection = false, // Utilize obstacle avoidance?
+ MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited
+ NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
+ Roam = false, // Roam current area after target loss
+ KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
+ OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
+ //NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets)
+ },
+ Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
+ {
+ DetectRadius = 0,
+ DeCloakRadius = 0,
+ FieldTime = 0,
+ Cloak = false,
+ Persist = false,
+ },
+ },
+ AmmoGraphics = new GraphicDef
+ {
+ ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ VisualProbability = 1f, // %
+ ShieldHitDraw = false,
+ Particles = new AmmoParticleDef
+ {
+ Ammo = new ParticleDef
+ {
+ Name = "", //ShipWelderArc
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ },
+ },
+ Hit = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Restart = false,
+ MaxDistance = 5000,
+ MaxDuration = 0,
+ Scale = 1.0f,
+ HitPlayChance = 1f,
+ },
+ },
+ Eject = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ HitPlayChance = 1f,
+ },
+ },
+ },
+ Lines = new LineDef
+ {
+ ColorVariance = Random(start: 0.5f, end: 1f), // multiply the color by random values within range.
+ WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width)
+ Tracer = new TracerBaseDef
+ {
+ Enable = true,
+ Length = 100f, //
+ Width = 0.2f, //
+ Color = Color(red: 0, green: 20, blue: 40f, alpha: 0.02f), // RBG 255 is Neon Glowing, 100 is Quite Bright.
+ VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color
+ VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible.
+ Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc..
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal, // Normal, Cycle, Chaos, Wave
+ Segmentation = new SegmentDef
+ {
+ Enable = false, // If true Tracer TextureMode is ignored
+ Textures = new[] {
+ "", // Please always have this Line set, if this Section is enabled.
+ },
+ SegmentLength = 0f, // Uses the values below.
+ SegmentGap = 0f, // Uses Tracer textures and values
+ Speed = 1f, // meters per second
+ Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 0.02f),
+ WidthMultiplier = 1f,
+ Reverse = false,
+ UseLineVariance = true,
+ WidthVariance = Random(start: 0f, end: 0f),
+ ColorVariance = Random(start: 0f, end: 0f)
+ }
+ },
+ Trail = new TrailDef
+ {
+ Enable = true,
+ Textures = new[] {
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal,
+ DecayTime = 30, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 0, green: 2, blue: 1, alpha: 0.02f),
+ Back = false,
+ CustomWidth = 1f,
+ UseWidthVariance = false,
+ UseColorFade = true,
+ },
+ OffsetEffect = new OffsetEffectDef
+ {
+ MaxOffset = 1f,// 0 offset value disables this effect
+ MinLength = 10f,
+ MaxLength = 20f,
+ },
+ },
+ },
+ AmmoAudio = new AmmoAudioDef
+ {
+ TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight
+ HitSound = "",
+ ShotSound = "",
+ ShieldHitSound = "",
+ PlayerHitSound = "",
+ VoxelHitSound = "",
+ FloatingHitSound = "",
+ HitPlayChance = 1f,
+ HitPlayShield = true,
+ },
+ Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection
+ {
+ Type = Particle, // Particle or Item (Inventory Component)
+ Speed = 100f, // Speed inventory is ejected from in dummy direction
+ SpawnChance = 0f, // chance of triggering effect (0 - 1)
+ CompDef = new ComponentDef
+ {
+ ItemName = "", //InventoryComponent name
+ ItemLifeTime = 0, // how long item should exist in world
+ Delay = 0, // delay in ticks after shot before ejected
+ }
+ }, // Don't edit below this line
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ private AmmoDef SolHyp_HG_VFX1 => new AmmoDef // Your ID, for slotting into the Weapon CS
+ {
+ AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
+ AmmoRound = "HG_VFX1", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
+ HybridRound = true, // Use both a physical ammo magazine and energy per shot.
+ EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
+ BaseDamage = 4f, // Direct damage; one steel plate is worth 100.
+ Mass = 10f, // In kilograms; how much force the impact will apply to the target.
+ Health = 40, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
+ BackKickForce = 5000000f, // Recoil. This is applied to the Parent Grid.
+ DecayPerShot = 0f, // Damage to the firing weapon itself.
+ HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly.
+ EnergyMagazineSize = 0, // For energy weapons, how many shots to fire before reloading.
+ IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod.
+ IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels.
+ Synchronize = false, // For future use
+ HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot.
+ Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0.
+ {
+ Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision.
+ Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape.
+ },
+ ObjectsHit = new ObjectsHitDef
+ {
+ MaxObjectsHit = 2, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited.
+ CountBlocks = true, // Counts individual blocks, not just entities hit.
+ },
+ Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
+ {
+ AmmoRound = "", // AmmoRound field of the ammo to spawn.
+ Fragments = 0, // Number of projectiles to spawn.
+ Degrees = 1, // Cone in which to randomize direction of spawned projectiles.
+ Reverse = false, // Spawn projectiles backward instead of forward.
+ DropVelocity = false, // fragments will not inherit velocity from parent.
+ Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
+ Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
+ MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
+ IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
+ AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
+ TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
+ {
+ Enable = false, // Enables TimedSpawns mechanism
+ Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
+ StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life
+ MaxSpawns = 1, // Max number of fragment children to spawn
+ Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ ParentDies = true, // Parent dies once after it spawns its last child.
+ PointAtTarget = true, // Start fragment direction pointing at Target
+ PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
+ DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees
+ GroupSize = 5, // Number of spawns in each group
+ GroupDelay = 120, // Delay between each group.
+ },
+ },
+ Pattern = new PatternDef
+ {
+ Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo.
+ "",
+ },
+ Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
+ TriggerChance = 1f, // This is %
+ Random = false, // This randomizes the number spawned at once, NOT the list order.
+ RandomMin = 1,
+ RandomMax = 1,
+ SkipParent = false, // Skip the Ammo itself, in the list
+ PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
+ },
+ DamageScales = new DamageScaleDef
+ {
+ MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled.
+ DamageVoxels = false, // Whether to damage voxels.
+ SelfDamage = false, // Whether to damage the weapon's own grid.
+ HealthHitModifier = 1.0f, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
+ VoxelHitModifier = 0.1f, // Voxel damage multiplier; defaults to 1 if zero or less.
+ Characters = 0.2f, // Character damage multiplier; defaults to 1 if zero or less.
+ // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage.
+ FallOff = new FallOffDef
+ {
+ Distance = 0f, // Distance at which damage begins falling off.
+ MinMultipler = 1.0f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
+ },
+ Grids = new GridSizeDef
+ {
+ Large = -1f, // Multiplier for damage against large grids.
+ Small = 0.25f, // Multiplier for damage against small grids.
+ },
+ Armor = new ArmorDef
+ {
+ Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
+ Light = -1f, // Multiplier for damage against light armor.
+ Heavy = -1f, // Multiplier for damage against heavy armor.
+ NonArmor = -1f, // Multiplier for damage against every else.
+ },
+ Shields = new ShieldDef
+ {
+ Modifier = 1f, // Multiplier for damage against shields.
+ Type = Default, // Damage vs healing against shields; Default, Heal
+ BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield.
+ },
+ DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy
+ {
+ Base = Kinetic, // Base Damage uses this
+ AreaEffect = Energy,
+ Detonation = Energy,
+ Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line
+ },
+ Custom = new CustomScalesDef
+ {
+ SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive.
+ Types = new[] // List of blocks to apply custom damage multipliers to.
+ {
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test1",
+ Modifier = -1f,
+ },
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test2",
+ Modifier = -1f,
+ },
+ },
+ },
+ },
+ AreaOfDamage = new AreaOfDamageDef
+ {
+ ByBlockHit = new ByBlockHitDef
+ {
+ Enable = false,
+ Radius = 5f, // Meters
+ Damage = 5f,
+ Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ EndOfLife = new EndOfLifeDef
+ {
+ Enable = false,
+ Radius = 0f, // Radius of AOE effect, in meters.
+ Damage = 0f,
+ Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode.
+ MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
+ NoVisuals = false,
+ NoSound = false,
+ ParticleScale = 1,
+ CustomParticle = "Exp_Spark_large", // Particle SubtypeID, from your Particle SBC
+ CustomSound = "", // SubtypeID from your Audio SBC, not a filename
+ Shape = Round, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ },
+ Ewar = new EwarDef
+ {
+ Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!!
+ Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push,
+ Mode = Effect, // Effect , Field
+ Strength = 100f,
+ Radius = 5f, // Meters
+ Duration = 100, // In Ticks
+ StackDuration = true, // Combined Durations
+ Depletable = true,
+ MaxStacks = 10, // Max Debuffs at once
+ NoHitParticle = false,
+ /*
+ EnergySink : Targets & Shutdowns Power Supplies, such as Batteries & Reactor
+ Emp : Targets & Shutdown any Block capable of being powered
+ Offense : Targets & Shutdowns Weaponry
+ Nav : Targets & Shutdown Gyros or Locks them down
+ Dot : Deals Damage to Blocks in radius
+ AntiSmart : Effects & Scrambles the Targeting List of Affected Missiles
+ JumpNull : Shutdown & Stops any Active Jumps, or JumpDrive Units in radius
+ Tractor : Affects target with Physics
+ Pull : Affects target with Physics
+ Push : Affects target with Physics
+ Anchor : Targets & Shutdowns Thrusters
+
+ */
+ Force = new PushPullDef
+ {
+ ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ ForceTo = HitPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ Position = TargetCenterOfMass, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ DisableRelativeMass = false,
+ TractorRange = 0,
+ ShooterFeelsForce = false,
+ },
+ Field = new FieldDef
+ {
+ Interval = 0, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60).
+ PulseChance = 0, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse.
+ GrowTime = 0, // How many ticks it should take the field to grow to full size.
+ HideModel = false, // Hide the default bubble, or other model if specified.
+ ShowParticle = true, // Show Block damage effect.
+ TriggerRange = 250f, //range at which fields are triggered
+ Particle = new ParticleDef // Particle effect to generate at the field's position.
+ {
+ Name = "", // SubtypeId of field particle effect.
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1, // Scale of effect.
+ },
+ },
+ },
+ },
+ Beams = new BeamDef
+ {
+ Enable = false, // Enable beam behaviour. Please have 3600 RPM, when this Setting is enabled. Please do not fire Beams into Voxels.
+ VirtualBeams = false, // Only one damaging beam, but with the effectiveness of the visual beams combined (better performance).
+ ConvergeBeams = false, // When using virtual beams, converge the visual beams to the location of the real beam.
+ RotateRealBeam = false, // The real beam is rotated between all visual beams, instead of centered between them.
+ OneParticle = false, // Only spawn one particle hit per beam weapon.
+ },
+ Trajectory = new TrajectoryDef
+ {
+ Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
+ TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
+ AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
+ DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
+ DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
+ GravityMultiplier = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
+ SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards.
+ RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory
+ MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
+ Smarts = new SmartsDef
+ {
+ Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
+ Aggressiveness = 1f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn
+ TrackingDelay = 0, // Measured in Shape diameter units traveled.
+ MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ OverideTarget = true, // when set to true ammo picks its own target, does not use hardpoint's.
+ CheckFutureIntersection = false, // Utilize obstacle avoidance?
+ MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited
+ NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
+ Roam = false, // Roam current area after target loss
+ KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
+ OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
+ },
+ Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
+ {
+ DetectRadius = 0,
+ DeCloakRadius = 0,
+ FieldTime = 0,
+ Cloak = false,
+ Persist = false,
+ },
+ },
+ AmmoGraphics = new GraphicDef
+ {
+ ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ VisualProbability = 1f, // %
+ ShieldHitDraw = false,
+ Particles = new AmmoParticleDef
+ {
+ Ammo = new ParticleDef
+ {
+ Name = "", //ShipWelderArc
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ },
+ },
+ Hit = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Restart = false,
+ MaxDistance = 5000,
+ MaxDuration = 0,
+ Scale = 1.0f,
+ HitPlayChance = 1f,
+ },
+ },
+ Eject = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ HitPlayChance = 1f,
+ },
+ },
+ },
+ Lines = new LineDef
+ {
+ ColorVariance = Random(start: 0.5f, end: 1f), // multiply the color by random values within range.
+ WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width)
+ Tracer = new TracerBaseDef
+ {
+ Enable = true,
+ Length = 200f, //
+ Width = 0.45f, //
+ Color = Color(red: 0, green: 20, blue: 40f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright.
+ VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color
+ VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible.
+ Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc..
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal, // Normal, Cycle, Chaos, Wave
+ Segmentation = new SegmentDef
+ {
+ Enable = false, // If true Tracer TextureMode is ignored
+ Textures = new[] {
+ "", // Please always have this Line set, if this Section is enabled.
+ },
+ SegmentLength = 0f, // Uses the values below.
+ SegmentGap = 0f, // Uses Tracer textures and values
+ Speed = 1f, // meters per second
+ Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1),
+ WidthMultiplier = 1f,
+ Reverse = false,
+ UseLineVariance = true,
+ WidthVariance = Random(start: 0f, end: 0f),
+ ColorVariance = Random(start: 0f, end: 0f)
+ }
+ },
+ Trail = new TrailDef
+ {
+ Enable = true,
+ Textures = new[] {
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal,
+ DecayTime = 40, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 0, green: 2, blue: 1, alpha: 1),
+ Back = false,
+ CustomWidth = 1.5f,
+ UseWidthVariance = false,
+ UseColorFade = true,
+ },
+ OffsetEffect = new OffsetEffectDef
+ {
+ MaxOffset = 2f,// 0 offset value disables this effect
+ MinLength = 10f,
+ MaxLength = 20f,
+ },
+ },
+ },
+ AmmoAudio = new AmmoAudioDef
+ {
+ TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight
+ HitSound = "",
+ ShotSound = "",
+ ShieldHitSound = "",
+ PlayerHitSound = "",
+ VoxelHitSound = "",
+ FloatingHitSound = "",
+ HitPlayChance = 0.5f,
+ HitPlayShield = true,
+ },
+ Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection
+ {
+ Type = Particle, // Particle or Item (Inventory Component)
+ Speed = 100f, // Speed inventory is ejected from in dummy direction
+ SpawnChance = 0.5f, // chance of triggering effect (0 - 1)
+ CompDef = new ComponentDef
+ {
+ ItemName = "", //InventoryComponent name
+ ItemLifeTime = 0, // how long item should exist in world
+ Delay = 0, // delay in ticks after shot before ejected
+ }
+ }, // Don't edit below this line
+ };
+
+ private AmmoDef SolHyp_HG_VFX2 => new AmmoDef // Your ID, for slotting into the Weapon CS
+ {
+ AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
+ AmmoRound = "HG_VFX2", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
+ HybridRound = true, // Use both a physical ammo magazine and energy per shot.
+ EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
+ BaseDamage = 0.001f, // Direct damage; one steel plate is worth 100.
+ Mass = 1f, // In kilograms; how much force the impact will apply to the target.
+ Health = 40, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
+ BackKickForce = 5000000f, // Recoil. This is applied to the Parent Grid.
+ DecayPerShot = 0f, // Damage to the firing weapon itself.
+ HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly.
+ EnergyMagazineSize = 0, // For energy weapons, how many shots to fire before reloading.
+ IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod.
+ IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels.
+ Synchronize = false, // For future use
+ HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot.
+ Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0.
+ {
+ Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision.
+ Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape.
+ },
+ ObjectsHit = new ObjectsHitDef
+ {
+ MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited.
+ CountBlocks = false, // Counts individual blocks, not just entities hit.
+ },
+ Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
+ {
+ AmmoRound = "", // AmmoRound field of the ammo to spawn.
+ Fragments = 0, // Number of projectiles to spawn.
+ Degrees = 1, // Cone in which to randomize direction of spawned projectiles.
+ Reverse = false, // Spawn projectiles backward instead of forward.
+ DropVelocity = false, // fragments will not inherit velocity from parent.
+ Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
+ Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
+ MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
+ IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
+ AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
+ TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
+ {
+ Enable = false, // Enables TimedSpawns mechanism
+ Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
+ StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life
+ MaxSpawns = 1, // Max number of fragment children to spawn
+ Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ ParentDies = true, // Parent dies once after it spawns its last child.
+ PointAtTarget = true, // Start fragment direction pointing at Target
+ PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
+ DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees
+ GroupSize = 5, // Number of spawns in each group
+ GroupDelay = 120, // Delay between each group.
+ },
+ },
+ Pattern = new PatternDef
+ {
+ Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo.
+ "",
+ },
+ Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
+ TriggerChance = 1f, // This is %
+ Random = false, // This randomizes the number spawned at once, NOT the list order.
+ RandomMin = 1,
+ RandomMax = 1,
+ SkipParent = false, // Skip the Ammo itself, in the list
+ PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
+ },
+ DamageScales = new DamageScaleDef
+ {
+ MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled.
+ DamageVoxels = false, // Whether to damage voxels.
+ SelfDamage = false, // Whether to damage the weapon's own grid.
+ HealthHitModifier = 1.0f, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
+ VoxelHitModifier = 0.1f, // Voxel damage multiplier; defaults to 1 if zero or less.
+ Characters = 0.2f, // Character damage multiplier; defaults to 1 if zero or less.
+ // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage.
+ FallOff = new FallOffDef
+ {
+ Distance = 0f, // Distance at which damage begins falling off.
+ MinMultipler = 1.0f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
+ },
+ Grids = new GridSizeDef
+ {
+ Large = -1f, // Multiplier for damage against large grids.
+ Small = 0.25f, // Multiplier for damage against small grids.
+ },
+ Armor = new ArmorDef
+ {
+ Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
+ Light = -1f, // Multiplier for damage against light armor.
+ Heavy = -1f, // Multiplier for damage against heavy armor.
+ NonArmor = 0.75f, // Multiplier for damage against every else.
+ },
+ Shields = new ShieldDef
+ {
+ Modifier = 2f, // Multiplier for damage against shields.
+ Type = Default, // Damage vs healing against shields; Default, Heal
+ BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield.
+ },
+ DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy
+ {
+ Base = Kinetic, // Base Damage uses this
+ AreaEffect = Energy,
+ Detonation = Energy,
+ Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line
+ },
+ Custom = new CustomScalesDef
+ {
+ SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive.
+ Types = new[] // List of blocks to apply custom damage multipliers to.
+ {
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test1",
+ Modifier = -1f,
+ },
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test2",
+ Modifier = -1f,
+ },
+ },
+ },
+ },
+ AreaOfDamage = new AreaOfDamageDef
+ {
+ ByBlockHit = new ByBlockHitDef
+ {
+ Enable = false,
+ Radius = 5f, // Meters
+ Damage = 5f,
+ Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ EndOfLife = new EndOfLifeDef
+ {
+ Enable = false,
+ Radius = 0f, // Radius of AOE effect, in meters.
+ Damage = 0f,
+ Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode.
+ MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
+ NoVisuals = false,
+ NoSound = false,
+ ParticleScale = 1,
+ CustomParticle = "Exp_Spark_large", // Particle SubtypeID, from your Particle SBC
+ CustomSound = "", // SubtypeID from your Audio SBC, not a filename
+ Shape = Round, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ },
+ Ewar = new EwarDef
+ {
+ Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!!
+ Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push,
+ Mode = Effect, // Effect , Field
+ Strength = 100f,
+ Radius = 5f, // Meters
+ Duration = 100, // In Ticks
+ StackDuration = true, // Combined Durations
+ Depletable = true,
+ MaxStacks = 10, // Max Debuffs at once
+ NoHitParticle = false,
+ /*
+ EnergySink : Targets & Shutdowns Power Supplies, such as Batteries & Reactor
+ Emp : Targets & Shutdown any Block capable of being powered
+ Offense : Targets & Shutdowns Weaponry
+ Nav : Targets & Shutdown Gyros or Locks them down
+ Dot : Deals Damage to Blocks in radius
+ AntiSmart : Effects & Scrambles the Targeting List of Affected Missiles
+ JumpNull : Shutdown & Stops any Active Jumps, or JumpDrive Units in radius
+ Tractor : Affects target with Physics
+ Pull : Affects target with Physics
+ Push : Affects target with Physics
+ Anchor : Targets & Shutdowns Thrusters
+
+ */
+ Force = new PushPullDef
+ {
+ ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ ForceTo = HitPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ Position = TargetCenterOfMass, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ DisableRelativeMass = false,
+ TractorRange = 0,
+ ShooterFeelsForce = false,
+ },
+ Field = new FieldDef
+ {
+ Interval = 0, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60).
+ PulseChance = 0, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse.
+ GrowTime = 0, // How many ticks it should take the field to grow to full size.
+ HideModel = false, // Hide the default bubble, or other model if specified.
+ ShowParticle = true, // Show Block damage effect.
+ TriggerRange = 250f, //range at which fields are triggered
+ Particle = new ParticleDef // Particle effect to generate at the field's position.
+ {
+ Name = "", // SubtypeId of field particle effect.
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1, // Scale of effect.
+ },
+ },
+ },
+ },
+ Beams = new BeamDef
+ {
+ Enable = false, // Enable beam behaviour. Please have 3600 RPM, when this Setting is enabled. Please do not fire Beams into Voxels.
+ VirtualBeams = false, // Only one damaging beam, but with the effectiveness of the visual beams combined (better performance).
+ ConvergeBeams = false, // When using virtual beams, converge the visual beams to the location of the real beam.
+ RotateRealBeam = false, // The real beam is rotated between all visual beams, instead of centered between them.
+ OneParticle = false, // Only spawn one particle hit per beam weapon.
+ },
+ Trajectory = new TrajectoryDef
+ {
+ Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
+ TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
+ AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
+ DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
+ DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
+ GravityMultiplier = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
+ SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards.
+ RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory
+ MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
+ Smarts = new SmartsDef
+ {
+ Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
+ Aggressiveness = 1f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn
+ TrackingDelay = 0, // Measured in Shape diameter units traveled.
+ MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ OverideTarget = true, // when set to true ammo picks its own target, does not use hardpoint's.
+ CheckFutureIntersection = false, // Utilize obstacle avoidance?
+ MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited
+ NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
+ Roam = false, // Roam current area after target loss
+ KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
+ OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
+ },
+ Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
+ {
+ DetectRadius = 0,
+ DeCloakRadius = 0,
+ FieldTime = 0,
+ Cloak = false,
+ Persist = false,
+ },
+ },
+ AmmoGraphics = new GraphicDef
+ {
+ ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ VisualProbability = 1f, // %
+ ShieldHitDraw = false,
+ Particles = new AmmoParticleDef
+ {
+ Ammo = new ParticleDef
+ {
+ Name = "", //ShipWelderArc
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ },
+ },
+ Hit = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Restart = false,
+ MaxDistance = 5000,
+ MaxDuration = 0,
+ Scale = 1.0f,
+ HitPlayChance = 1f,
+ },
+ },
+ Eject = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ HitPlayChance = 1f,
+ },
+ },
+ },
+ Lines = new LineDef
+ {
+ ColorVariance = Random(start: 0.5f, end: 1f), // multiply the color by random values within range.
+ WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width)
+ Tracer = new TracerBaseDef
+ {
+ Enable = true,
+ Length = 300f, //
+ Width = 0.3f, //
+ Color = Color(red: 0, green: 20, blue: 40f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright.
+ VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color
+ VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible.
+ Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc..
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal, // Normal, Cycle, Chaos, Wave
+ Segmentation = new SegmentDef
+ {
+ Enable = false, // If true Tracer TextureMode is ignored
+ Textures = new[] {
+ "", // Please always have this Line set, if this Section is enabled.
+ },
+ SegmentLength = 0f, // Uses the values below.
+ SegmentGap = 0f, // Uses Tracer textures and values
+ Speed = 1f, // meters per second
+ Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1),
+ WidthMultiplier = 1f,
+ Reverse = false,
+ UseLineVariance = true,
+ WidthVariance = Random(start: 0f, end: 0f),
+ ColorVariance = Random(start: 0f, end: 0f)
+ }
+ },
+ Trail = new TrailDef
+ {
+ Enable = true,
+ Textures = new[] {
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal,
+ DecayTime = 30, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 0, green: 2, blue: 1, alpha: 1),
+ Back = false,
+ CustomWidth = 1.5f,
+ UseWidthVariance = false,
+ UseColorFade = true,
+ },
+ OffsetEffect = new OffsetEffectDef
+ {
+ MaxOffset = 1f,// 0 offset value disables this effect
+ MinLength = 10f,
+ MaxLength = 20f,
+ },
+ },
+ },
+ AmmoAudio = new AmmoAudioDef
+ {
+ TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight
+ HitSound = "",
+ ShotSound = "",
+ ShieldHitSound = "",
+ PlayerHitSound = "",
+ VoxelHitSound = "",
+ FloatingHitSound = "",
+ HitPlayChance = 1.0f,
+ HitPlayShield = true,
+ },
+ Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection
+ {
+ Type = Particle, // Particle or Item (Inventory Component)
+ Speed = 100f, // Speed inventory is ejected from in dummy direction
+ SpawnChance = 0.5f, // chance of triggering effect (0 - 1)
+ CompDef = new ComponentDef
+ {
+ ItemName = "", //InventoryComponent name
+ ItemLifeTime = 0, // how long item should exist in world
+ Delay = 0, // delay in ticks after shot before ejected
+ }
+ }, // Don't edit below this line
+ };
+
+ private AmmoDef SolHyp_HG_VFX3 => new AmmoDef // Your ID, for slotting into the Weapon CS
+ {
+ AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo.
+ AmmoRound = "HG_VFX3", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel.
+ HybridRound = true, // Use both a physical ammo magazine and energy per shot.
+ EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR.
+ BaseDamage = 0.001f, // Direct damage; one steel plate is worth 100.
+ Mass = 1f, // In kilograms; how much force the impact will apply to the target.
+ Health = 40, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable.
+ BackKickForce = 5000000f, // Recoil. This is applied to the Parent Grid.
+ DecayPerShot = 0f, // Damage to the firing weapon itself.
+ HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly.
+ EnergyMagazineSize = 0, // For energy weapons, how many shots to fire before reloading.
+ IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod.
+ IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels.
+ Synchronize = false, // For future use
+ HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot.
+ Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0.
+ {
+ Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision.
+ Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape.
+ },
+ ObjectsHit = new ObjectsHitDef
+ {
+ MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited.
+ CountBlocks = false, // Counts individual blocks, not just entities hit.
+ },
+ Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation).
+ {
+ AmmoRound = "", // AmmoRound field of the ammo to spawn.
+ Fragments = 0, // Number of projectiles to spawn.
+ Degrees = 1, // Cone in which to randomize direction of spawned projectiles.
+ Reverse = false, // Spawn projectiles backward instead of forward.
+ DropVelocity = false, // fragments will not inherit velocity from parent.
+ Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type.
+ Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path
+ MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited
+ IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions
+ AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type.
+ TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below
+ {
+ Enable = false, // Enables TimedSpawns mechanism
+ Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other
+ StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life
+ MaxSpawns = 1, // Max number of fragment children to spawn
+ Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance
+ ParentDies = true, // Parent dies once after it spawns its last child.
+ PointAtTarget = true, // Start fragment direction pointing at Target
+ PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit)
+ DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees
+ GroupSize = 5, // Number of spawns in each group
+ GroupDelay = 120, // Delay between each group.
+ },
+ },
+ Pattern = new PatternDef
+ {
+ Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo.
+ "",
+ },
+ Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both
+ TriggerChance = 1f, // This is %
+ Random = false, // This randomizes the number spawned at once, NOT the list order.
+ RandomMin = 1,
+ RandomMax = 1,
+ SkipParent = false, // Skip the Ammo itself, in the list
+ PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true.
+ },
+ DamageScales = new DamageScaleDef
+ {
+ MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled.
+ DamageVoxels = false, // Whether to damage voxels.
+ SelfDamage = false, // Whether to damage the weapon's own grid.
+ HealthHitModifier = 1.0f, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less.
+ VoxelHitModifier = 0.1f, // Voxel damage multiplier; defaults to 1 if zero or less.
+ Characters = 0.2f, // Character damage multiplier; defaults to 1 if zero or less.
+ // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage.
+ FallOff = new FallOffDef
+ {
+ Distance = 0f, // Distance at which damage begins falling off.
+ MinMultipler = 1.0f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage.
+ },
+ Grids = new GridSizeDef
+ {
+ Large = -1f, // Multiplier for damage against large grids.
+ Small = 0.25f, // Multiplier for damage against small grids.
+ },
+ Armor = new ArmorDef
+ {
+ Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy).
+ Light = -1f, // Multiplier for damage against light armor.
+ Heavy = -1f, // Multiplier for damage against heavy armor.
+ NonArmor = 0.75f, // Multiplier for damage against every else.
+ },
+ Shields = new ShieldDef
+ {
+ Modifier = 2f, // Multiplier for damage against shields.
+ Type = Default, // Damage vs healing against shields; Default, Heal
+ BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield.
+ },
+ DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy
+ {
+ Base = Kinetic, // Base Damage uses this
+ AreaEffect = Energy,
+ Detonation = Energy,
+ Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line
+ },
+ Custom = new CustomScalesDef
+ {
+ SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive.
+ Types = new[] // List of blocks to apply custom damage multipliers to.
+ {
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test1",
+ Modifier = -1f,
+ },
+ new CustomBlocksDef
+ {
+ SubTypeId = "Test2",
+ Modifier = -1f,
+ },
+ },
+ },
+ },
+ AreaOfDamage = new AreaOfDamageDef
+ {
+ ByBlockHit = new ByBlockHitDef
+ {
+ Enable = false,
+ Radius = 5f, // Meters
+ Damage = 5f,
+ Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ EndOfLife = new EndOfLifeDef
+ {
+ Enable = false,
+ Radius = 0f, // Radius of AOE effect, in meters.
+ Damage = 0f,
+ Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value
+ MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block.
+ Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius
+ //.Linear drops evenly by distance from center out to max radius
+ //.Curve drops off damage sharply as it approaches the max radius
+ //.InvCurve drops off sharply from the middle and tapers to max radius
+ //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius
+ //.Pooled damage behaves in a pooled manner that once exhausted damage ceases.
+ //.Exponential drops off exponentially. Does not scale to max radius
+ ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode.
+ MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning.
+ NoVisuals = false,
+ NoSound = false,
+ ParticleScale = 1,
+ CustomParticle = "Exp_Spark_large", // Particle SubtypeID, from your Particle SBC
+ CustomSound = "", // SubtypeID from your Audio SBC, not a filename
+ Shape = Round, // Round or Diamond shape. Diamond is more performance friendly.
+ },
+ },
+ Ewar = new EwarDef
+ {
+ Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!!
+ Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push,
+ Mode = Effect, // Effect , Field
+ Strength = 100f,
+ Radius = 5f, // Meters
+ Duration = 100, // In Ticks
+ StackDuration = true, // Combined Durations
+ Depletable = true,
+ MaxStacks = 10, // Max Debuffs at once
+ NoHitParticle = false,
+ /*
+ EnergySink : Targets & Shutdowns Power Supplies, such as Batteries & Reactor
+ Emp : Targets & Shutdown any Block capable of being powered
+ Offense : Targets & Shutdowns Weaponry
+ Nav : Targets & Shutdown Gyros or Locks them down
+ Dot : Deals Damage to Blocks in radius
+ AntiSmart : Effects & Scrambles the Targeting List of Affected Missiles
+ JumpNull : Shutdown & Stops any Active Jumps, or JumpDrive Units in radius
+ Tractor : Affects target with Physics
+ Pull : Affects target with Physics
+ Push : Affects target with Physics
+ Anchor : Targets & Shutdowns Thrusters
+
+ */
+ Force = new PushPullDef
+ {
+ ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ ForceTo = HitPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ Position = TargetCenterOfMass, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass
+ DisableRelativeMass = false,
+ TractorRange = 0,
+ ShooterFeelsForce = false,
+ },
+ Field = new FieldDef
+ {
+ Interval = 0, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60).
+ PulseChance = 0, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse.
+ GrowTime = 0, // How many ticks it should take the field to grow to full size.
+ HideModel = false, // Hide the default bubble, or other model if specified.
+ ShowParticle = true, // Show Block damage effect.
+ TriggerRange = 250f, //range at which fields are triggered
+ Particle = new ParticleDef // Particle effect to generate at the field's position.
+ {
+ Name = "", // SubtypeId of field particle effect.
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1, // Scale of effect.
+ },
+ },
+ },
+ },
+ Beams = new BeamDef
+ {
+ Enable = false, // Enable beam behaviour. Please have 3600 RPM, when this Setting is enabled. Please do not fire Beams into Voxels.
+ VirtualBeams = false, // Only one damaging beam, but with the effectiveness of the visual beams combined (better performance).
+ ConvergeBeams = false, // When using virtual beams, converge the visual beams to the location of the real beam.
+ RotateRealBeam = false, // The real beam is rotated between all visual beams, instead of centered between them.
+ OneParticle = false, // Only spawn one particle hit per beam weapon.
+ },
+ Trajectory = new TrajectoryDef
+ {
+ Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed
+ TargetLossDegree = 0f, // Degrees, Is pointed forward
+ TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ MaxLifeTime = 2400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things.
+ AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning.
+ DesiredSpeed = 2200, // voxel phasing if you go above 5100
+ MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel.
+ DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second)
+ GravityMultiplier = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only.
+ SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards.
+ RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory
+ MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
+ Smarts = new SmartsDef
+ {
+ Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
+ Aggressiveness = 1f, // controls how responsive tracking is.
+ MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn
+ TrackingDelay = 0, // Measured in Shape diameter units traveled.
+ MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..).
+ OverideTarget = true, // when set to true ammo picks its own target, does not use hardpoint's.
+ CheckFutureIntersection = false, // Utilize obstacle avoidance?
+ MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited
+ NoTargetExpire = false, // Expire without ever having a target at TargetLossTime
+ Roam = false, // Roam current area after target loss
+ KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss
+ OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1)
+ OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..)
+ },
+ Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues.
+ {
+ DetectRadius = 0,
+ DeCloakRadius = 0,
+ FieldTime = 0,
+ Cloak = false,
+ Persist = false,
+ },
+ },
+ AmmoGraphics = new GraphicDef
+ {
+ ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large"
+ VisualProbability = 1f, // %
+ ShieldHitDraw = false,
+ Particles = new AmmoParticleDef
+ {
+ Ammo = new ParticleDef
+ {
+ Name = "", //ShipWelderArc
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ },
+ },
+ Hit = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Restart = false,
+ MaxDistance = 5000,
+ MaxDuration = 0,
+ Scale = 1.0f,
+ HitPlayChance = 1f,
+ },
+ },
+ Eject = new ParticleDef
+ {
+ Name = "",
+ ApplyToShield = true,
+ Offset = Vector(x: 0, y: 0, z: 0),
+ Extras = new ParticleOptionDef
+ {
+ Scale = 1,
+ HitPlayChance = 1f,
+ },
+ },
+ },
+ Lines = new LineDef
+ {
+ ColorVariance = Random(start: 0.5f, end: 1f), // multiply the color by random values within range.
+ WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width)
+ Tracer = new TracerBaseDef
+ {
+ Enable = true,
+ Length = 300f, //
+ Width = 0.1f, //
+ Color = Color(red: 0, green: 0, blue: 0f, alpha: 0), // RBG 255 is Neon Glowing, 100 is Quite Bright.
+ VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color
+ VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible.
+ Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc..
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal, // Normal, Cycle, Chaos, Wave
+ Segmentation = new SegmentDef
+ {
+ Enable = false, // If true Tracer TextureMode is ignored
+ Textures = new[] {
+ "", // Please always have this Line set, if this Section is enabled.
+ },
+ SegmentLength = 0f, // Uses the values below.
+ SegmentGap = 0f, // Uses Tracer textures and values
+ Speed = 1f, // meters per second
+ Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1),
+ WidthMultiplier = 1f,
+ Reverse = false,
+ UseLineVariance = true,
+ WidthVariance = Random(start: 0f, end: 0f),
+ ColorVariance = Random(start: 0f, end: 0f)
+ }
+ },
+ Trail = new TrailDef
+ {
+ Enable = true,
+ Textures = new[] {
+ "WeaponLaser", // Please always have this Line set, if this Section is enabled.
+ },
+ TextureMode = Normal,
+ DecayTime = 20, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low.
+ Color = Color(red: 0, green: 1, blue: 2, alpha: 1),
+ Back = false,
+ CustomWidth = 1.25f,
+ UseWidthVariance = false,
+ UseColorFade = true,
+ },
+ OffsetEffect = new OffsetEffectDef
+ {
+ MaxOffset = 0f,// 0 offset value disables this effect
+ MinLength = 3f,
+ MaxLength = 5f,
+ },
+ },
+ },
+ AmmoAudio = new AmmoAudioDef
+ {
+ TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight
+ HitSound = "",
+ ShotSound = "",
+ ShieldHitSound = "",
+ PlayerHitSound = "",
+ VoxelHitSound = "",
+ FloatingHitSound = "",
+ HitPlayChance = 1.0f,
+ HitPlayShield = true,
+ },
+ Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection
+ {
+ Type = Particle, // Particle or Item (Inventory Component)
+ Speed = 100f, // Speed inventory is ejected from in dummy direction
+ SpawnChance = 0.5f, // chance of triggering effect (0 - 1)
+ CompDef = new ComponentDef
+ {
+ ItemName = "", //InventoryComponent name
+ ItemLifeTime = 0, // how long item should exist in world
+ Delay = 0, // delay in ticks after shot before ejected
+ }
+ }, // Don't edit below this line
+ };
+
+ }
+}
+
diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs
index 75ae25921..e3f100930 100644
--- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs
+++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs
@@ -272,7 +272,7 @@ partial class Parts
MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory.
Smarts = new SmartsDef
{
- SteeringLimit = 40, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart.
+ SteeringLimit = 30, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart.
Inaccuracy = 2.5f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value.
Aggressiveness = 2f, // controls how responsive tracking is.
MaxLateralThrust = 0.15, // controls how sharp the trajectile may turn