Put the known traps in the catalog, as an open book

A Traps tab joins the synergy catalog: clash duos rendered like the
Combos tab, then the per-joker cautions, one pager spanning both page
kinds. Deliberately no discovery gating and no Progress entry -- the
Combos tab hides pairs to keep the fun of finding them, but a warning
locked behind fielding the bad pair would reward exactly what it warns
against. register_clash now maintains JCA.clash_list alongside the blurb
map so third-party clashes appear on the tab, re-registration updates
without duplicating, and blurbs are read back through clash_blurb at
build time so the newest wording always wins.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-07-14 15:18:24 -07:00
parent 21995589df
commit 43e1ea2bc6
3 changed files with 137 additions and 6 deletions
+8 -2
View File
@@ -157,7 +157,7 @@ Three-layer split; `JCA` is the single global namespace:
- Config tab: registered on `SMODS.current_mod.config_tab`, guarded by
`if SMODS.current_mod` so standalone tests don't need full stubs.
- Synergy catalog: `SMODS.current_mod.extra_tabs` adds Combos/Engine/
Economy/Hands tabs (plus a text-only Progress tab with discovery
Economy/Hands/Traps tabs (plus a text-only Progress tab with discovery
completion bars) that render real `Card` objects in `CardArea`s
(collection-style, so hover shows each joker's own tooltip). One theme
per page; pagers swap the `tab_contents` UIBox from an option-cycle
@@ -183,7 +183,13 @@ Three-layer split; `JCA` is the single global namespace:
both sides needs a second joker). One toast per emplacement, famous
pair outranking theme. Badge/progress render in `theme_tab_def`; toast
names come from `JCA.theme_names` (filled after THEME_TABS, used only
at gameplay time).
at gameplay time). The Traps tab (clash duos, then caution jokers; one
pager spans both page kinds) is deliberately an **open book**: no
discovery gating and no Progress entry, because a warning locked behind
fielding the bad pair would reward exactly what it warns against.
`register_clash` keeps `JCA.clash_list` in sync (and sets
`JCA._traps_dirty`) so third-party clashes appear on the tab; blurbs are
read back through `clash_blurb` at build time so updates always win.
- Post-run recap: wraps `create_UIBox_game_over`/`create_UIBox_win` and
inserts a "Combos fielded this run" row (from `G.GAME.jca_run_combos`)
relative to vanilla button ids (`from_game_over`; `from_game_won` or