Files
JokerComboAdvisor/AUDIT.md
T
funman300 ff71a8ef12 Split rank-limited retriggers so Hack stops courting face payoffs
Business Card claimed a synergy with Hack, but Hack only retriggers
2s-5s and Business Card only pays on faces. The single retrig_scoring
tag lumped every retriggerer with every retrigger payoff.

retrig_scoring now means rank-agnostic (Dusk, Seltzer, Hanging Chad,
Splash). Hack gives retrig_low; Sock and Buskin gives retrig_faces.
Payoffs want only the scopes their ranks can reach: low-rank payoffs
(Even Steven, Odd Todd, Walkie Talkie, Fibonacci, Wee) add retrig_low,
face payoffs (Scary Face, Business, Photograph, Triboulet) add
retrig_faces, rank-agnostic ones (Hiker, the suit gems, The Idol) add
both. Scholar keeps only retrig_scoring - no retriggerer targets Aces.

This also kills Hack+Scholar, Hack+Scary Face, Hack+Photograph,
Hack+Triboulet, and Sock and Buskin vs every low-rank payoff.

Both new tags are full themes (catalog page, label, teaching line) so
Hack and Sock and Buskin stay visible in the Engine tab.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:30:20 -07:00

5.4 KiB

Synergy database audit

Generated by lua audit.lua --write. Do not edit by hand.

test.lua is the gate (it fails on what is broken). This is the map: it reports what is merely suspicious, and records what we already decided so the analysis does not get redone from scratch every session.

Totals

Jokers in the database 150
Famous pairs 36
Clashes 25
Cautions 15
Themes 31
Jokers in no famous pair 102

Jokers the advisor is silent about

These give nothing but engine roles (Mult/Chips/xMult) and want nothing, so they score at most the generic +1 against any joker in the game. That is a legitimate answer for some of them -- but it should be a decision, not an accident.

count
Silent, reviewed, staying that way 25
Silent, but a lead worth chasing 0
Silent and never looked at 0

Leads worth chasing

Unverified. Check each against the Lovely dump before acting on it -- a wrong synergy is worse than a missing one.

Reviewed, and deliberately silent

  • j_baseball — xMult per Uncommon joker owned. A rarity tag would have exactly one payoff, and every giver would be "is uncommon" -- noise, not synergy.
  • j_card_sharp — REJECTED as a clash with Obelisk. Card Sharp rewards replaying a hand and Obelisk punishes replaying your MOST played hand -- but neither destroys the other precondition; the player's hand choice does. That is an opposed incentive, not an opposed effect. Flagging it would dilute the clash signal, which only earns trust while every entry is mechanical.
  • j_cavendish — the reward for Gros Michel dying, not a partner
  • j_ceremonial — RESOLVED: it destroys the joker to its right at blind select (card.lua:2945), skipping Eternals. JCA.dagger_victim now names the joker about to die, in the tooltip, while there is still time to reorder.
  • j_chicot — disables the boss blind; no joker interaction
  • j_credit_card — lets you go negative; a money buffer, not a combo
  • j_diet_cola — sell for a Double Tag; tags are outside our model
  • j_glass — wants GLASS cards, and no vanilla joker creates them. Same trap as Steel Joker: enhance_gen is too coarse a tag to use here.
  • j_gros_michel — self-destructs; the trap is a CAUTION
  • j_half — +Mult on small hands; no joker cares
  • j_ice_cream — decays; the trap is a CAUTION
  • j_joker — plain +Mult; interacts with nothing
  • j_loyalty_card — xMult every 6 hands; no joker interaction
  • j_luchador — sell to disable a boss; no joker interaction
  • j_misprint — random +Mult; interacts with nothing
  • j_mr_bones — death insurance; no joker interaction
  • j_obelisk — The trap is real but it is a CAUTION ("resets on your most played hand"), not a set of pairwise clashes. See j_card_sharp.
  • j_popcorn — decays; the trap is a CAUTION
  • j_red_card — +Mult per skipped booster; no joker interaction
  • j_ride_the_bus — scales on face-free hands; the traps are CLASHES
  • j_ring_master — Showman allows duplicates in the shop pool. We have no tag for pool effects, and one joker does not justify inventing one.
  • j_steel_joker — wants STEEL cards. The only enhance_gen givers make Gold (Midas) and Stone (Marble), so tagging it enhance_gen would invent a synergy that does not exist. No vanilla joker creates Steel cards. Leave it alone.
  • j_stuntman — big chips, -2 hand size; the trap is a CAUTION
  • j_supernova — REJECTED as an Obelisk clash for the same reason as j_card_sharp
  • j_throwback — xMult per skipped blind; no joker interaction

Tag health

A tag with one member can never fire (it takes two jokers to make a synergy). A tag with two is fragile: drop either joker and the theme dies.

tag givers wanters jokers theme?
card_gen 3 2 5 yes
clubs 3 4 4 yes
copy_target 10 3 13 yes
diamonds 2 2 2 yes
discards_up 2 8 10 yes
enhance_gen 2 2 4 yes
faces 1 9 10 yes
flush 5 4 6 yes
four_kind 2 1 2 yes
gold_gen 1 1 2 yes
hand_size 3 4 7 yes
hands_up 1 1 2 yes
hearts 2 2 2 yes
joker_gen 1 3 4 yes
money 15 3 17 yes
pair 4 3 4 yes
planet 3 3 3 yes
probability 1 7 8 yes
retrig_faces 1 10 11 yes
retrig_held 1 4 5 yes
retrig_low 1 11 12 yes
retrig_scoring 4 16 20 yes
sell_value 2 2 4 yes
spades 2 3 3 yes
spectral_gen 2 2 2 yes
stone_gen 1 1 2 yes
straight 7 6 8 yes
suit_flex 1 11 12 yes
tarot_gen 6 2 7 yes
three_kind 4 3 4 yes
two_pair 3 3 3 yes

Load-bearing jokers

The jokers that appear in the most scoring relationships. If one of these is mis-tagged, the error is spread across the whole database.

joker partners scoring >= 2
j_dusk 16
j_hanging_chad 16
j_selzer 16
j_smeared 16
j_splash 16
j_to_the_moon 16
j_bootstraps 15
j_bull 15
j_four_fingers 12
j_seance 12
j_sock_and_buskin 12
j_blueprint 11

Jokers with no partner scoring >= 2 anywhere in the game: 25