Skip to content

feat: Flash Courier — Splicer Terminal, Data Shards & Run Briefing engine#781

Draft
Copilot wants to merge 5 commits into
mainfrom
copilot/add-flash-courier-game-mechanic
Draft

feat: Flash Courier — Splicer Terminal, Data Shards & Run Briefing engine#781
Copilot wants to merge 5 commits into
mainfrom
copilot/add-flash-courier-game-mechanic

Conversation

Copilot AI commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Adds the Flash Courier mechanic: a narrative-driven "Run Briefing" layer that sits above the existing Card Forge and Missions systems. Players slot three Data Shards into a Splicer Terminal, trigger a compile animation, then receive a branching prose briefing driven by their Cover Identity, District, and shard selection — no action mini-game, no server round-trip.

Data layer (src/lib/flashCourier.ts)

  • DataShard, NavDeckSlots, CompiledNavDeck interfaces
  • 18 static shards across three kinds: Vector (approach), Ghost (camouflage), Payload (wild card modifier)

Narrative Router (src/lib/runBriefing.ts)

  • resolveRunBriefing(deck: CompiledNavDeck): StoryNode — maps the 5 variables to district-specific prose + tag-driven inserts + archetype coda + 2–3 branching choices with stealthDelta / speedDelta / rewardDelta / riskDelta hints
  • Uses canonical District type; falls back gracefully for future districts

Splicer Terminal (src/pages/flashCourier/SplicerTerminal.tsx)

  • Drag-and-drop slot zones per kind; click-to-slot as keyboard/touch fallback
  • useCompileAnimation hook: 4.2 s pseudo-terminal sequence (scrolling ICE-cracking log, progress bar, blinking cursor); timers and rAF cancelled on unmount via cleanup ref

Flash Courier page (src/pages/FlashCourier.tsx)

  • Identity + District pickers sourced from player's existing card collection
  • RunBriefingPanel renders prose + choice buttons with stat modifier chips; reset flow to re-compile

Wiring

  • FLASH_COURIER feature flag added (default true)
  • /flash-courier route registered behind ProtectedRoute
  • ~400 lines of CSS appended to index.css using existing theme variables; prefers-reduced-motion overrides included

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants