ship-progression.ts
Cocytus — Purpose
Ship progression v4 — star-tier-from-XP curve plus mod-backpack grid sizing. XP is the count of duplicate hull pulls (each duplicate = 1 XP). Stars unlock mod-grid space only; per-star hull stats are not scaled.
Phlegethon — Exports
| Symbol | Kind | Signature / Value |
|---|---|---|
STAR_XP_THRESHOLDS | const number[] | [0, 0, 1, 3, 7, 17] |
GRID_DIMS_BY_STAR | ReadonlyArray<readonly [number, number]> | rows of (cols, rows) per star |
starFromXp(xp) | (xp: number) => number | returns star 1-5; throws on negative xp |
xpToNextStar(xp) | (xp: number) => number | XP delta to next star; 0 at ★5 |
gridForStar(star) | (star: number) => readonly [number, number] | throws if star < 1 or > 5 |
Lethe — XP Thresholds (cumulative duplicates)
| Star | XP threshold | Total pulls to reach |
|---|---|---|
| ★1 | 0 | 1 (first pull) |
| ★2 | 1 | 2 |
| ★3 | 3 | 4 |
| ★4 | 7 | 8 |
| ★5 | 17 | 18 |
Index 0 of STAR_XP_THRESHOLDS is unused (set to 0).
Acheron — Grid Dimensions
| Star | cols × rows | cells |
|---|---|---|
| ★1 | 3 × 3 | 9 |
| ★2 | 4 × 3 | 12 |
| ★3 | 4 × 4 | 16 |
| ★4 | 5 × 4 | 20 |
| ★5 | 5 × 5 | 25 |
Index 0 of GRID_DIMS_BY_STAR is unused (set to [0, 0]).
Styx — Behavior Notes
starFromXpcascade: highest threshold checked first; falls through to ★1 as the floor atxp >= 0.starFromXpthrowsErroron negative xp.xpToNextStarreturns0oncestarFromXp(xp) >= 5(capped, no overflow).gridForStarthrowsErrorforstar < 1orstar > 5. Does not accept0as the unused slot.- Comment on line 11 claims “★5 reached at xp >= 17 per the v4 plan curve” — matches
STAR_XP_THRESHOLDS[5] = 17. Docstring on line 5 states “★5 needs 37 cumulative dupes (38 total pulls)” — stale, contradicts the 17 in the array.
Tartarus — Drift / Risks
- Docstring (line 5) says ★5 = 38 pulls; code says 18 pulls. The data is the source of truth; docstring is stale.
STAR_XP_THRESHOLDS[0] = 0andSTAR_XP_THRESHOLDS[1] = 0both equal 0 — ★1 unlocks at 0 XP (first pull) by design.- No bounds check that
xpis an integer; floats would silently work but may produce unexpectedxpToNextStardeltas.
EXTRACT-CANDIDATE
- Star tier curve (
STAR_XP_THRESHOLDS) — load-bearing collection-progression knob; belongs in a metagame/star-progression concept page. - Mod grid sizing (
GRID_DIMS_BY_STAR) — load-bearing for mod-backpack UI and inventory; belongs in a mod-backpack concept page alongside grid rendering and slot-cell logic. - Duplicate-pull → XP mapping — the “1 dupe = 1 XP” rule is metagame-economy load-bearing; belongs in a collection/dupe-economy concept page.