Commit Graph
7 Commits
Author SHA1 Message Date
Fredrik JohanssonandClaude Sonnet 5 e449cba288 Content pass: give inflytande a purpose, branch the endings, deepen troende/Möllan/Universitet
Docker / build-and-push (push) Successful in 1m23s
Addresses the gaps flagged after surveying the existing game against the
new LORE-BIBLE.md:

- inflytande had exactly one spending sink in the whole game. Added
  favor_network (unlocks a bigger repeatable "call in a favor" upgrade)
  and neutralize_investigation, which pays off the previously-dead-end
  Kommissarie Fors thread from coc_investigator_dream -- she stops
  investigating, but why she was dreaming about the cult in the first
  place stays exactly as unexplained as the lore bible says it should.
- Lindqvist's and Hassan's event-chain flags (listened/silenced,
  empowered/sidelined) previously only rerouted flavor text on the way
  to identical win/lose copy. showOverlay() now picks a variant based on
  which flags are set, most-specific match first, so a run where both
  arcs resolved gets its own combined ending instead of falling through
  to whichever flag happened to be checked first.
- troende past nine was flavor-only even though the hard cap was removed
  in 0.3.0. Added troende_overflow (event) and bigger_venue (upgrade,
  gated behind nine_chairs_full + troende>=10) so outgrowing the
  basement has a real mechanical consequence, not just a stat that keeps
  climbing quietly.
- Möllan and Universitet (added in 0.6.0) had zero upgrade or event ties
  compared to Rosengård/Värnhem/Torso. Added mollan_regular +
  mollan_favor and universitet_seminar as a first pass -- lighter-touch
  than full area-gating (which would mean reshaping State.areas across
  engine/map/upgrades), but real content where there was none.
- Kaos events skewed entirely comic relief against standard events'
  near-total dread. Added four kaos entries in the heavier register
  (thirteen chimes, the mirror room, permanent lights on the Öresund
  seabed, the warm chair finally occupied) as a tonal counterweight,
  lower-weighted so they don't crowd out the existing jokes.

Added engine tests for all four new upgrades' gating and cost scaling.
21/21 tests pass, typecheck clean, build clean. Verified all six ending
variants (win base/hassan/lindqvist/combo/fors, lose base/hassan/
lindqvist) render correctly against a real build via injected save state.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 21:04:23 +02:00
Fredrik JohanssonandClaude Sonnet 5 aeedf0abb5 Add offline progress, tab haunting, character gallery, more flavor
Real depth additions, not a reskin of another idle game:

- applyOfflineProgress: the cult continues while the tab is closed or
  backgrounded (rAF throttles hard when hidden, so real time drifts
  well past simulated time). Approximates tick()'s per-second rates
  over the elapsed window, capped at 24h, with a narrative "while you
  were away" log line scaled to how long that was. Can end the game
  in a win or loss if the numbers would have gotten there. Re-checked
  on every tab-visibility return too, not just page load.
- Tab-title haunting: document.title cycles short eerie lines
  ("Han väntar…", "Havet kallar…") while the tab is hidden, restores
  on return.
- New late-game upgrade "Viskningen leder er" — once bought, the cult
  visits map locations on its own occasionally without a click. A
  small loss-of-agency horror beat, not just a QoL toggle.
- Log's newest line now types itself out, with characters
  occasionally swapped for occult symbols (☿☠ψ) at a rate scaled to
  current dread. Older lines stay static and legible — this never
  applies retroactively.
- New "Sällskapet" character gallery: cards for every named recurring
  character, locked to a silhouette + "???" until you've actually met
  them (checked against usedEventIds). Portraits are optional — missing
  art falls back to an initial-letter placeholder, so this works
  incrementally as art gets added. First five real portraits included.
- Real bug fix: several Kaos events referenced characters (Göran,
  Bengt-Åke, the Sydsvenskan journalist) as if already introduced,
  but had no ordering dependency on the Standard event that actually
  introduces them — so a fresh cultist could show up in the log
  already "familiar" before you'd ever met them. Gated with
  requires.completedEventId.
- More flavor text throughout: two new variants per location visit,
  6 new Standard events, 4 new Kaos events.

Evaluated three other ideas from the same source and declined them:
a generic milestone-triggered log (Djupet's log already reacts to
real state, not arbitrary point totals), an investigator combat
minigame (hemlighet draining to zero already does this job, and
tower-defense clicking would fight the game's actual tone), and a
node-sequencing ritual minigame (real scope for a twitch mechanic
that doesn't match the rest of the game's pacing).

Verified: 15/15 tests passing, clean typecheck and production build,
and a real headless-browser pass — offline catch-up after a
simulated 5-hour gap, tab-title cycling and restore, and the
character gallery rendering real portraits alongside locked cards.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 20:53:26 +02:00
Fredrik JohanssonandClaude Sonnet 5 bde809e862 Extend the endgame, add more content, make kaos events recur
Docker / build-and-push (push) Successful in 43s
Balance: an optimal-play simulation showed the game finishing in
under 3 minutes, mostly because torso_beacon + grand_ritual_prep
alone pushed ritualRate to 2.5 — enough to clear the last 50 ritual
points in 20 seconds. Softened those boosts (0.5→0.15, 2→0.35),
raised deepen_ritual's cost curve so it's a real endgame sink instead
of a one-off top-up, and added two new late-game upgrades (sunken
choir, nine filled chairs) between grand_ritual_prep and the win.
Re-simulated: a greedy optimal-play bot now takes ~5 minutes instead
of ~3 and surfaces ~40 distinct events instead of ~30 out of a much
larger pool — real (non-bot) play should run considerably longer.

Content: added 8 new high-dread late-game standard events (gated up
to minDread 400, since nothing previously escalated past 75) and 7
new kaos events, plus one more choice event.

Kaos events no longer get marked as permanently used — they're
chaos-relief flavor, not narrative progression, and a ~24-entry pool
(now 30) was depleting for good over a long game. Standard/chain
events remain single-use.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-13 19:29:04 +02:00
Fredrik JohanssonandClaude Sonnet 5 0efbe9d55b Add Inflytande resource, expand events, and balance the endgame
Docker / build-and-push (push) Successful in 42s
Adds an influence currency that scales with follower count and a new
"exert influence" action to trade it for secrecy, uncaps recruiting
with scaling cost, adds a late-game Andakt sink, and makes hemlighet
drain scale with dread/ritual progress so the endgame carries real
risk. Includes a Vitest suite that simulates play to check balance,
which caught the influence-accrual rate being too slow to be useful
early game.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-08 17:28:32 +02:00
Fredrik JohanssonandClaude Sonnet 4.6 f5776f269b Add lore depth, fix recruit click bug, add localStorage save
- 20+ new events drawing from Anders Fager, Kult, and Call of Cthulhu:
  ICA cashiers who never blink, SJ trains stopping in non-existent tunnels,
  Kult lictors as city officials, death servants finishing lectures, Deep Ones,
  investigators dreaming about us, stars being right over Lund Observatory
- Rewrite upgrade descriptions to match the register: mundane detail,
  matter-of-fact horror, no melodrama
- Add a new mid-game upgrade (Paktens Förnyelse) to smooth the progression
- Fix recruit button: was destroying DOM every 30fps tick, killing mousedown→click
  events; now only rebuilds when availability/affordability actually changes
- Fix double andakt deduction in recruit effect
- Fix map growing over log (proper flex constraints)
- Add localStorage save/load with versioned key (SAVE_VERSION bump invalidates
  old saves); autosaves every 10s and on upgrade purchase, clears on restart

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 23:25:44 +02:00
Fredrik JohanssonandClaude Sonnet 4.6 d091e7382a Fix recruit: always available, scaling cost; log newest-first at top
recruit_neighbor was gated behind !first_meeting so it vanished after
the first upgrade. Now a single repeatable recruit with scaling cost.
Log scrolls to top on new entries so most recent is always visible.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 23:13:54 +02:00
Fredrik JohanssonandClaude Sonnet 4.6 68a378bdd4 Initial commit — Djupet
Idle cult management game set in Malmö, Sweden. Manage Troende,
Andakt, Dread, Hemlighet and Kaos while completing the Grand Ritual
before investigators shut you down. Lovecraftian flavour, Henderson-
tier chaos events, OSM/Leaflet map with dread spread markers across
Rosengård, Värnhemstorget, Turning Torso and Øresundsbron.

Vanilla TypeScript + Vite, no framework.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 23:06:00 +02:00