Fix enabler phrasing, wake two silent jokers, read the board order
* The tooltip mis-taught every pure enabler. JCA.explain used a cluster tag's `both` text whenever EITHER side was a full member, so Four Fingers next to Runner claimed "both reward Straights" -- Four Fingers does not reward Straights, it makes them reachable. `both` now requires both sides, and every cluster tag carries give/want phrasings. * Blue Joker and Abstract Joker scored 0 against all 150 jokers. Blue Joker scales on #G.deck.cards, so it wants card_gen (DNA, Marble, Certificate); Abstract scales on #G.jokers.cards, so it wants joker_gen (Riff-Raff is +6 Mult on its own). Both verified in card.lua. Steel and Glass Joker look like the same fix but are NOT: they need Steel/Glass specifically, and the only enhance_gen givers make Gold and Stone, so tagging them would invent a synergy that does not exist. * Copy jokers are positional and the board order was there all along. JCA.copy_source reports what an owned Blueprint/Brainstorm is actually copying, including when the target is one of the 29 centers vanilla refuses to copy (blueprint_compat = false), or when it is copying nothing at all. * The sell advisor now counts clashes when ranking what to cut. JCA.score stays pure -- a trap must never make a card look like a combo -- but a joker eating another one's payoff is exactly the one to sell. The suite caught a real bug while writing this: `(mode == 'right') and cards[idx+1] or cards[1]` falls through to the LEFTMOST joker when the right-hand slot is nil, so a rightmost Blueprint would have named the wrong card. 673 pass here, 9 in-game via the smoke harness. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+37
-15
@@ -54,7 +54,9 @@ j('j_misprint', {'mult'})
|
||||
j('j_raised_fist', {'mult'}, {'retrig_held','hand_size'})
|
||||
j('j_chaos', {})
|
||||
j('j_scary_face', {'chips'}, {'faces','retrig_scoring'})
|
||||
j('j_abstract', {'mult'})
|
||||
-- Abstract Joker's Mult is the joker count (`#G.jokers.cards`, card.lua:4119), so
|
||||
-- anything that hands you spare Jokers feeds it. Riff-Raff is +6 Mult on its own.
|
||||
j('j_abstract', {'mult'}, {'joker_gen'})
|
||||
j('j_delayed_grat', {'money'})
|
||||
j('j_gros_michel', {'mult'})
|
||||
j('j_even_steven', {'mult'}, {'retrig_scoring'})
|
||||
@@ -67,7 +69,9 @@ j('j_egg', {'sell_value'})
|
||||
j('j_runner', {'chips','straight'}, {'straight'})
|
||||
j('j_ice_cream', {'chips'})
|
||||
j('j_splash', {'retrig_scoring'}) -- makes every played card score
|
||||
j('j_blue_joker', {'chips'})
|
||||
-- Blue Joker's Chips scale with the cards left in the deck (`#G.deck.cards`,
|
||||
-- card.lua:4311), so every joker that permanently adds cards grows it.
|
||||
j('j_blue_joker', {'chips'}, {'card_gen'})
|
||||
j('j_faceless', {'money'}, {'faces','discards_up'})
|
||||
j('j_green_joker', {'mult'})
|
||||
j('j_superposition', {'tarot_gen','straight'}, {'straight'})
|
||||
@@ -323,26 +327,44 @@ local TAG_TEXT = {
|
||||
probability = {give = 'improves listed odds', want = 'relies on listed odds'},
|
||||
money = {give = 'earns money', want = 'scales with your money'},
|
||||
tarot_gen = {give = 'creates Tarot cards', want = 'rewards Tarot use'},
|
||||
planet = {both = 'shares the Planet economy'},
|
||||
spectral_gen = {both = 'shares the Spectral theme'},
|
||||
planet = {both = 'shares the Planet economy',
|
||||
give = 'creates Planet cards', want = 'rewards Planet use'},
|
||||
spectral_gen = {both = 'shares the Spectral theme',
|
||||
give = 'creates Spectral cards', want = 'rewards Spectral use'},
|
||||
gold_gen = {give = 'creates Gold cards', want = 'pays off Gold cards'},
|
||||
stone_gen = {give = 'adds Stone cards', want = 'pays off Stone cards'},
|
||||
enhance_gen = {give = 'enhances cards', want = 'feeds on enhancements'},
|
||||
card_gen = {give = 'adds cards to the deck', want = 'grows as the deck grows'},
|
||||
joker_gen = {give = 'creates spare Jokers', want = 'profits when Jokers sell'},
|
||||
-- The want text has to fit every wanter: Campfire sells the spares, Swashbuckler
|
||||
-- sums their sell value, Abstract Joker just counts them.
|
||||
joker_gen = {give = 'creates spare Jokers', want = 'rewards spare Jokers'},
|
||||
sell_value = {give = 'raises sell values', want = 'turns sell value into Mult'},
|
||||
copy_target = {give = 'is a prime copy target', want = 'copies your best Joker'},
|
||||
suit_flex = {give = 'makes suits count as others', want = 'cares which suits score'},
|
||||
pair = {both = 'both reward Pairs'},
|
||||
two_pair = {both = 'both reward Two Pair'},
|
||||
three_kind = {both = 'both reward Three of a Kind'},
|
||||
four_kind = {both = 'both reward Four of a Kind'},
|
||||
straight = {both = 'both reward Straights'},
|
||||
flush = {both = 'both reward Flushes'},
|
||||
hearts = {both = 'both love Hearts'},
|
||||
diamonds = {both = 'both love Diamonds'},
|
||||
spades = {both = 'both love Spades'},
|
||||
clubs = {both = 'both love Clubs'},
|
||||
-- Cluster tags need all three phrasings. `both` is only right when BOTH jokers
|
||||
-- sit on both sides of the tag; a pure enabler (Four Fingers, DNA) gives the
|
||||
-- tag without wanting it, and "both reward Straights" would be a lie -- Four
|
||||
-- Fingers does not reward Straights, it makes them reachable.
|
||||
pair = {both = 'both reward Pairs',
|
||||
give = 'makes Pairs easier', want = 'rewards Pairs'},
|
||||
two_pair = {both = 'both reward Two Pair',
|
||||
give = 'makes Two Pair easier', want = 'rewards Two Pair'},
|
||||
three_kind = {both = 'both reward Three of a Kind',
|
||||
give = 'makes Three of a Kind easier', want = 'rewards Three of a Kind'},
|
||||
four_kind = {both = 'both reward Four of a Kind',
|
||||
give = 'makes Four of a Kind easier', want = 'rewards Four of a Kind'},
|
||||
straight = {both = 'both reward Straights',
|
||||
give = 'makes Straights easier', want = 'rewards Straights'},
|
||||
flush = {both = 'both reward Flushes',
|
||||
give = 'makes Flushes easier', want = 'rewards Flushes'},
|
||||
hearts = {both = 'both love Hearts',
|
||||
give = 'turns cards into Hearts', want = 'rewards Hearts'},
|
||||
diamonds = {both = 'both love Diamonds',
|
||||
give = 'turns cards into Diamonds', want = 'rewards Diamonds'},
|
||||
spades = {both = 'both love Spades',
|
||||
give = 'turns cards into Spades', want = 'rewards Spades'},
|
||||
clubs = {both = 'both love Clubs',
|
||||
give = 'turns cards into Clubs', want = 'rewards Clubs'},
|
||||
}
|
||||
|
||||
-- Order in which tags are considered when picking the one reason to show;
|
||||
|
||||
Reference in New Issue
Block a user