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>
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>
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>
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>
- 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>
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>
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>