Add anti-synergy warnings: CLASHES pairs and per-joker CAUTIONS

Warning-only data in synergies.lua — never touches the synergy score.
Tooltips gain a red 'Clashes - <owned joker>: <why>' line when a hovered
joker fights one you own (Ride the Bus + Pareidolia, Vampire vs Steel
Joker/Lucky Cat, Smeared vs Flower Pot), and a 'Caution:' line in the
buy area for jokers that harm a board you keep (Ceremonial Dagger,
Madness, Stencil). Learning mode keeps warnings — they teach.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-07-10 13:58:10 -07:00
parent e37b56471b
commit 4a882e8101
3 changed files with 54 additions and 4 deletions
+21 -2
View File
@@ -214,6 +214,25 @@ local PAIRS = {
{'j_oops', 'j_lucky_cat', 'better odds, more Lucky payoffs'},
}
-- Known traps: pairs that actively hurt each other. Warning-only — they
-- never subtract from the synergy score; the tooltip just flags them with
-- a red "Clashes" line. Keep warnings under ~34 chars (one tooltip row).
local CLASHES = {
{'j_ride_the_bus', 'j_pareidolia', 'every card counts as a face'},
{'j_vampire', 'j_steel_joker', 'drains the Steel it counts'},
{'j_vampire', 'j_lucky_cat', 'strips Lucky cards before they pay'},
{'j_smeared', 'j_flower_pot', 'merged suits cannot make all four'},
}
-- Per-joker cautions for the buy-area tooltip: the joker is fine on its
-- own, but it interacts badly with a board you want to keep. Same length
-- budget as clash warnings.
local CAUTIONS = {
j_ceremonial = 'eats the joker to its right',
j_madness = 'destroys a random joker each blind',
j_stencil = 'xMult grows with EMPTY joker slots',
}
-- How to phrase a tag link in the tooltip, from the partner's perspective:
-- `give` when the partner provides the tag, `want` when the partner consumes
-- it, `both` for cluster tags where the pair simply shares the theme.
@@ -307,5 +326,5 @@ for _, entry in pairs(J) do
entry.gives, entry.wants = g, w
end
return { jokers = J, pairs = PAIRS, tag_text = TAG_TEXT, tag_order = TAG_ORDER,
theme_info = THEME_INFO }
return { jokers = J, pairs = PAIRS, clashes = CLASHES, cautions = CAUTIONS,
tag_text = TAG_TEXT, tag_order = TAG_ORDER, theme_info = THEME_INFO }