Enumerates every field on the two ship stat blocks the engine consumes at run start: ShipCombatStats (engine physics + damage) and ShipMetaStats (non-combat progression modifiers). Both interfaces are defined in data/run-config.ts. The conversion functions toShipCombatStats(ship) and toShipMetaStats(ship) in data/ships.ts build these from a ShipDef row at mission assembly.
These are the baseline values frozen at run start. They are distinct from level-up modifiers — in-run upgrade cards stack on top of these as multiplicative or additive modifiers, but they do not mutate the source ShipCombatStats object.
ShipCombatStats — engine physics + damage
Hull / shield / regen
Field
Controls
hpMax
Maximum hull HP.
hpRegen
Passive HP regen per second.
shieldMax
Maximum shield pool.
shieldRegenRate
Shield points restored per second once delay elapses.
shieldRegenDelay
Seconds after taking damage before shield begins regenerating.
shieldRegenFillTime
Time (seconds) for shield to refill from 0 to max once regen starts. Hardcoded to 2 in toShipCombatStats.
damageReduction
Flat damage-reduction (armor). Subtracts from incoming damage.
Movement
Field
Controls
thrust
Acceleration force applied while thrust input is held. Sourced from ship.acceleration.
maxSpeed
Hard cap on ship velocity (u/s).
drag
Deceleration coefficient applied when thrust is released. Curve shape comes from dragCurve.
turnSpeed
Turn rate in radians per frame at 60 fps.
Heat / overheat / burnout
Field
Controls
overheatBurn
Hull damage per second when heat gauge is fully maxed (burnout damage rate).
overheatCool
Heat units shed per second when not building heat.
heatSpeedTarget
Speed at which heat stops accumulating. Hardcoded to 80 in toShipCombatStats.
heatBoostMult
Top-end speed multiplier from a full heat gauge. Hardcoded to 2.5 in toShipCombatStats.
heatCurve
How heat maps to boost across the gauge. One of: linear, front_loaded, back_loaded, explosive_tail, flat_plateau, surge_pulse.
These three fields stack with their combat-stat counterparts where applicable.
Field
Controls
luck
Luck bonus that stacks with combat luck.
currencyBonus
Currency bonus (additive %) stacking with combat currencyBonus.
objectiveSpeed
Objective completion speed bonus (additive %). Derived as round(ship.luck * 0.5) in toShipMetaStats.
Distinct from level-up modifiers
The fields above are the ship’s baseline kit — fixed at run assembly from the chosen ShipDef row. In-run progression layers on separately:
Reward cards (in-run level-ups) apply additive or multiplicative modifiers on top of the baseline. They do not write back to ShipCombatStats.
Passives, artifacts, and mods apply their own modifier stacks consumed by the engine alongside ShipCombatStats.
Facility bonuses (from metagame buildings, FacilityBonuses interface) and codex bonuses (CodexBonuses) are run-scoped bonus blocks separate from the ship’s own stats.
World knobs (WorldKnobs) scale enemy difficulty and rewards — they sit beside ship stats, not inside them.
A ship row is the floor. Level-ups, facilities, codex, and world knobs are what the engine compounds at compute time.
Where these are wired
Interfaces: src/starship-survivors/data/run-config.ts lines 65–166 (ShipCombatStats) and 169–176 (ShipMetaStats).
Conversion from ShipDef: src/starship-survivors/data/ships.tstoShipCombatStats (line 2488) and toShipMetaStats (line 2541).
Run assembly: the two blocks are placed onto RunDefinition.combatStats / RunDefinition.metaStats (see RunDefinition at the bottom of run-config.ts).