Fix a backwards clash, and add 19 verified traps

Every entry here was checked against the running Steamodded source in
Mods/lovely/dump, not from memory.

The headline is a correction: the shipped CLASHES table warned that
Smeared Joker + Flower Pot "cannot make all four" suits. It is backwards.
Flower Pot fills its four suit slots with a greedy if/elseif chain
(card.lua:4256) and SMODS.smeared_check makes Hearts answer for Diamonds
and Spades for Clubs, so the second Heart falls through into the Diamond
slot: any two red + two black cards fill the pot. It is one of the
strongest combos in the game and the mod was steering players away from
it -- while simultaneously scoring the pair +2 via suit_flex, which
should have been the tell. It is now a famous pair.

New clashes (4 -> 22), all traced to the mechanism:
* Burglar zeroes discards_left on blind select (card.lua:2905), which
  switches off every discard-gated joker for the rest of the run: Banner,
  Delayed Gratification, Castle, Yorick, Hit the Road, Burnt, Mail-In
  Rebate, Faceless, Trading Card, and it wipes the discards Drunkard and
  Merry Andy hand you. Delayed Gratification is the cruellest -- "no
  discards used" reads like a synergy, but the code also requires
  discards_left > 0, so it pays exactly $0.
* Vampire strips enhancements in the `before` pass, ahead of the
  per-card `individual` pass where enhancement payoffs are read, so it
  eats what Golden Ticket, Glass, Stone Joker, Marble and Driver's
  License are counting.
* Joker Stencil scales on EMPTY slots, so Riff-Raff and Abstract Joker
  fight it.
* Splash makes every played card score, so a face card that used to be a
  harmless kicker now resets Ride the Bus.

New cautions (3 -> 15): the positional traps (Blueprint dead in the
rightmost slot, Brainstorm in the leftmost), Mime doing nothing without a
held-card payoff, and the decay timers, whose numbers are exact from
game.lua (Ice Cream 100/5 = 20 hands, Popcorn 20/4 = 5 rounds).

Also corrects the stale game path in CLAUDE.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
funman300
2026-07-14 11:22:35 -07:00
parent 07cada9e49
commit 47721d1acf
2 changed files with 76 additions and 6 deletions
+14 -3
View File
@@ -46,9 +46,9 @@ To poke at the engine by hand, copy the stub block from the top of `test.lua`.
`~/.local/share/Balatro/Mods/JokerComboAdvisor -> ~/Documents/JokerComboAdvisor`
(this repo). Edits here go live on next game launch — do not copy files anywhere.
Lovely reads that folder as `C:\users\steamuser\AppData\Roaming\Balatro\Mods`.
- Game: Steam/Proton at `/mnt/games/Steam/steamapps/common/Balatro` (note: second
Steam library, not the default paths). Lovely injector + Steamodded 1.0.0-beta
are already installed; mods are managed via Balatro Mod Manager.
- Game: Steam/Proton at `~/.local/share/Steam/steamapps/common/Balatro`. Lovely
injector + Steamodded 1.0.0-beta are already installed; mods are managed via
Balatro Mod Manager.
- Crash/load logs: `~/.local/share/Balatro/Mods/lovely/log/` (newest file).
- Remote: `https://git.aleshym.co/funman300/JokerComboAdvisor` (private, user's
Gitea). Pushes authenticate via the repo-local credential helper, which
@@ -165,5 +165,16 @@ Three-layer split; `JCA` is the single global namespace:
`CLASHES` (pairwise, red "Clashes -" tooltip line vs owned jokers) and
`CAUTIONS` (per-joker, buy-area "Caution:" line) in `synergies.lua`, same
~34-char blurb budget as `PAIRS`. Learning mode keeps warnings visible.
**Verify every new trap against the dump before adding it** — a warning that
is merely plausible is worse than none. The mod once shipped a `j_smeared` +
`j_flower_pot` clash that was exactly backwards: Flower Pot fills its four
suit slots with a greedy `if/elseif` chain (`card.lua:4256`) and Smeared makes
Hearts answer for Diamonds, so any two red + two black cards fill the pot. It
is one of the best combos in the game, and the mod was warning players off it.
Most traps hinge on the scoring-pipeline order in `functions/state_events.lua`
(`before` → per-card `individual``joker_main`): Vampire strips enhancements
in `before`, so every enhancement payoff that reads them in `individual`
Golden Ticket, Glass, Stone, Driver's License — is looking at cards it has
already eaten.
- The UI hooks are the only untested-in-game surface; if a tooltip regression is
reported, suspect the `aut.info` entry format first and check the lovely log.