progress-keys.ts
What it does
Defines the canonical list of cumulative-stat keys tracked by the achievement system and Rookie Week (prologue) progression. achievementStore.progress is keyed by these strings, with each entry storing a lifetime cumulative total or a max value.
Exports
PROGRESS_KEYS—readonlytuple (as const) of all 15 stat-key string literals.ProgressKey— type aliastypeof PROGRESS_KEYS[number]; union of the 15 literal strings.
Keys
| Key | Semantics |
|---|---|
total_arcade_runs | Lifetime arcade-mode runs started. |
total_kills | Lifetime enemy kills across all runs. |
elite_kills | Lifetime elite-tier enemy kills. |
boss_kills | Lifetime boss kills. |
events_completed | Lifetime world-events completed. |
crates_destroyed | Lifetime destructible crates destroyed. |
max_survival_seconds | Max value — longest single-run survival time in seconds. |
missions_deployed | Lifetime missions deployed from the metagame hub. |
missions_claimed | Lifetime mission rewards claimed. |
pulls_made | Lifetime gacha pulls performed. |
merges_done | Lifetime merges performed (duplicate-ship merges). |
buildings_placed | Lifetime buildings placed in the base/hub. |
ships_owned | Distinct ships currently owned (snapshot, not cumulative). |
max_run_level | Max value — highest run-level reached in a single run. |
weapon_chests_opened | Lifetime weapon chests opened during runs. |
Counter semantics
- Most keys are lifetime cumulative counters (monotonically increasing).
max_survival_secondsandmax_run_levelare max-value trackers (only increase when a new best is set).ships_ownedis a current snapshot of distinct-ship inventory.
Consumers
data/prologue-config.ts— Rookie Week milestones declaretracking: ProgressKeyper goal (currently usestotal_kills,max_run_level,events_completed,pulls_made).stores/challengeStore.ts— challenge progress uses several of the same key names (total_kills,events_completed).services/runProgressionService.ts— emits run-end stats (total_kills,events_completed) keyed by these names for server-side aggregation.
Notes
- Tuple is frozen via
as constsoProgressKeyis a closed string-literal union; adding a new tracked stat requires editing this file and is type-checked at every callsite. - File contains no logic — it is a pure-constant declaration module.