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_KEYSreadonly tuple (as const) of all 15 stat-key string literals.
  • ProgressKey — type alias typeof PROGRESS_KEYS[number]; union of the 15 literal strings.

Keys

KeySemantics
total_arcade_runsLifetime arcade-mode runs started.
total_killsLifetime enemy kills across all runs.
elite_killsLifetime elite-tier enemy kills.
boss_killsLifetime boss kills.
events_completedLifetime world-events completed.
crates_destroyedLifetime destructible crates destroyed.
max_survival_secondsMax value — longest single-run survival time in seconds.
missions_deployedLifetime missions deployed from the metagame hub.
missions_claimedLifetime mission rewards claimed.
pulls_madeLifetime gacha pulls performed.
merges_doneLifetime merges performed (duplicate-ship merges).
buildings_placedLifetime buildings placed in the base/hub.
ships_ownedDistinct ships currently owned (snapshot, not cumulative).
max_run_levelMax value — highest run-level reached in a single run.
weapon_chests_openedLifetime weapon chests opened during runs.

Counter semantics

  • Most keys are lifetime cumulative counters (monotonically increasing).
  • max_survival_seconds and max_run_level are max-value trackers (only increase when a new best is set).
  • ships_owned is a current snapshot of distinct-ship inventory.

Consumers

  • data/prologue-config.ts — Rookie Week milestones declare tracking: ProgressKey per goal (currently uses total_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 const so ProgressKey is 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.