Fredrik JohanssonandClaude Sonnet 5 442c28e107 Content pass: fix a dead event/character, give eko a purpose, branch endings
Mirrors the depth pass djupet just got, but targeting this project's own
actual gaps (its Kodex/lore.ts was already well-built, confirmed via
survey -- left untouched):

- text_language required flag: 'has_language', which no choice anywhere
  ever set -- a genuinely dead, unreachable event. Worse: the character
  Maja unlocks via unlockEventId: 'text_language', so she was
  unreachable too. Added language_choice (learn to speak Thörnepherian
  vs. only understand it) to actually set the flag, fixing both at once.
- eko had exactly one spender (exert_echo, fixed 30 cost, no scaling).
  Added echo_network (unlock) -> call_in_echo (repeatable, scaling cost,
  restores fäste) plus erase_the_search, which pays off Jonna's
  disappearance thread (discord_erik_missing) by having the private
  investigator looking for her lose the trail permanently.
- researcher_joins (doktorand) was a flat effect event; converted to a
  choice (full trust vs. arm's length) mirroring djupet's Hassan arc.
- Neither new arc's flags touched the win/lose ending text -- same issue
  djupet had. showOverlay now picks a variant based on which flags are
  set, most-specific match first.
- barare past nine was flavor-only (nine_masks_carved exists but no
  event marks outgrowing it); added barare_overflow + bigger_mill,
  mirroring djupet's troende>9 branch.
- Campus (6 of 9 locations were flavor-only, same shape as djupet's
  Möllan/Universitet gap) got its first real tie: campus_regular event
  + campus_access upgrade.
- yra pool skewed entirely heavy/unsettling with no comic-relief beat
  (inverse of djupet's original all-comic kaos pool) -- added two
  lighter entries for tonal variety.

No test suite exists for this project (unlike djupet) -- verified via
typecheck, build, and real browser checks against injected save state:
all upgrade gating (echo_network -> call_in_echo/erase_the_search,
campus_regular -> campus_access) confirmed correct, call_in_echo's cost
scaling and faste restoration confirmed by inspecting state before/after
two real purchases, and all five new ending variants (plus the combined
doktorand+language case) render correctly with proper priority ordering.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-09 21:12:45 +02:00

Thön

Idle game about a small circle of "bärare" (carriers) weaving open a breach to Thön from a disused sawmill in Skellefteå, Sweden.

Inspired by the mythology, masks, and lyrics of the Swedish band Vildhjarta.

Stack

Vanilla TypeScript + Vite. No framework. Leaflet for the map.

Dev

npm install
npm run dev       # localhost:5682
npm run typecheck
npm run build

Mechanics

  • Sken — passive income, spend on upgrades
  • Eko — network-effect resource that scales with more bärare
  • Bräsch — grows as the weave deepens, unlocks areas and events
  • Fäste — your grip on this side; reaches zero and you lose
  • Yra — builds naturally, triggers chaotic events at 100
  • Väv — reach 100 to complete the weave; unlocked via Thörnepherian

Click locations on the Skellefteå map to visit them. There is a cooldown.

S
Description
No description provided
Readme
27 MiB
Languages
TypeScript 85.7%
CSS 13.6%
HTML 0.5%
Dockerfile 0.2%