#Balatro Calculator

889 messages · Page 1 of 1 (latest)

dark pier
#

I've been working on a Balatro Calculator where you can go to the webpage, put in any hand + jokers, and it'll calculate the score.
It also optionally will look for the optimal order for the cards/jokers to maximize the score.

#

Please let me know (either here or via DM) about:

  • questions about the calculator
  • bugs you find with it / incorrect calculation
  • changes / additions you'd like to see with it
bright cloud
#

I would love the addition of the plasma deck

dark pier
#

I just looked into it; should be easy to add.

bright cloud
#

That would be nice since going into high score endless runs with plasma is so much easier

#

Also I think @junior cairn would be great here with his knowledge of the game, if anyone could spot something wrong it would be him

#

And while I know negative jokers don't have any effect on score calculations besides the base joker effect I think visually it would be nice if you could fully match the joker setup you have

#

Also some edge cases I noticed here that need to be added: first of all a money score for bull/bootstraps and planet cards for observatory voucher giving 1.5x per planet card

#

Also decaying and scaling jokers like popcorn/ice cream or square joker

#

And ceremonial dagger

#

Sorry for the incoming spam of messages but I'll try to spot all the jokers with changing values I can see

#

Well you know what I won't spam but instead just try and find all the jokers with values that can change

restive jolt
#

Misprint goes to 23 btw

#

u have it listed as 0-20

hushed cove
#

This is pretty neat

#

The optimizer doesn't seem to move cardd sharp if its not active (I also am not sure how to activate it)

#

I was mostly messing around but here

#

where it would be optmial to have the normal joker before card sharp

restive jolt
dark pier
dark pier
junior cairn
#

not an error, but...

dark pier
junior cairn
#

wanted to try the WR strat on this calculator, but Baron is calculated based on played kings, not held in hand

#

calculator also appears to crash when the numbers get too big

#

when I try to place the second RPG 2 of hearts it bugs out

hushed cove
#

also a joker search would be nice (even like a jokers.filter(j => j.name.toLowerCase().includes(search.toLowerCase())) would be nice)

dark pier
versed roost
#

Chipps

#

Retriger

#

that should be all

dark pier
dark pier
narrow arch
#

For the joker "Crafty Joker" nothing happens. When I open the console, I got :

dark pier
narrow arch
#

When I reload the page, I obtain the same error.

junior cairn
#

It could be cached

dark pier
#

refresh again.
CTRL+SHIFT+R to hard-refresh (in chrome at least) but normal refresh should be enough.

narrow arch
#

Yes, that works. Thanks 🙂 ❤️

dark pier
#

You probably just refreshed before it was actually live; it takes a minute for Jekyll to update things.

dense elk
#

Two suggestions: Add text saying what the played hand is (ex: full house), and being able to edit jokers you already added by clicking on them (to add an edition or change the value).

#

It's really nice though!

dark pier
#

I added the name of played hand, I'll hold off on the "editing jokers when clicked" since it's a little more complicated.

bright cloud
#

also i think some of the scaling is wrong, a level 2 straight is 60x6 and not 50x7

golden sluice
#

Jokers don't have negative values anymore

#

Also unless it got changed, this is incorrect

#

Holo and foil trigger before joker effect (if it wasn't changed)

#

Polychrome after joker effect

#

Does not apply to playing cards

#

This is what I believe the complete order for stuff to trigger (but I'm not 100% sure about editions and seals order, does not usually matter tho)
#1202386969867595827 message

dark pier
bright cloud
#

Also the planet scaling is wrong

#

I said it in the chat before but idk if it was fixed

dark pier
bright cloud
#

I mean all I know is that I had a level 2 straight as 50x7 while it's 60x6

golden sluice
#

30x4 base
+30 +2 saturn

#

not sure what it is in calculator

bright cloud
#

I remember someone posted an image

dark pier
bright cloud
#

I'll try to make a list of things that need to be added since they can add score when I get back home

#

Like observatory voucher is the simplest example

#

Pair that up with perkeo and you can make use of that

warped walrus
#

i suggest that when Plasma Deck is enabled show the “balanced” values as well

warped walrus
#

ooh i see

hybrid pewter
#

Very impressive!

bright cloud
#

very nice

#

another suggestion i have is being able to change the value to a specified value, not only being able to up it by one

#

and maybe being able to change per joker

dark pier
bright cloud
#

yeah aight if its on the list ill move on

#

also idk if it really matters but like i thought about swashbuckler and liquidation, since it makes jokers buy price lower it also makes their sell value lower so its also a nerf

#

swashbuckler with value changing jokers is the basic category

#

like swashbuckler and egg or gift card

dark pier
#

Right now, Swashbuckler doesn't automatically calculate its mult, but it'd probably be nice if it did.

bright cloud
#

wait i guess you can just input the final value into the site

#

not really a problem but rather something players will have to keep track of

#

also misprint, it shows the range on the card but doesnt show the range of possible score like how lucky cards do

#

same with copying it

dark pier
#

It's possible you encountered a different bug which caused it to break (there would be an error in the console)
and refreshing would fix it.

bright cloud
#

ok now it works

#

yeah idk why it happened

dark pier
warped walrus
#

you can make the “lvl.” part show up after input

#

like when inputting you only see the numeric value

dark pier
#

I think I know a way I could make that work.

warped walrus
#

it’s definitely possible but im not expert in coding field so

dark pier
warped walrus
#

nice

static aurora
#

i may have missed it, but if the function doesn't exist then support for negative jokers would be nice. matters for stencil and swash at least

junior cairn
#

Speaking of Swash you could also have a way to edit the sell value

dark pier
dark pier
junior cairn
#

Uhh idk

dark pier
junior cairn
#

Spawn Chariot and Deja Vu from the collection and use them

#

@dark pier

dark pier
junior cairn
#

Shoot the moon applying before steel is kinda sad

static aurora
#

so, another tricky thing: shoot the moon executes before the xmult does visually, but in the code it happens second. there may be inconsistencies

#

im not sure if it makes score display incorrectly or what

#

(to verify, check the order h_mult and h_x_mult execute in eval_card and card_eval_status_text in common_events)

dark pier
static aurora
#

i ended up checking yesterday after i had a steel queen/shoot the moon run

dark pier
#

I just went through frame by frame, and cross referenced with new code in my calculator, and it's definitely calculating it with shoot the moon first.

#

The final round score is consistant with that.

golden sluice
#

I was 100% sure about that one - that's exactly how it happens for played cards, so I don't see why would it be different for held in hand stuff

#

the only thing I am not 100% sure are seals, but that shouldnt matter

dark pier
bright cloud
#

Another suggestion I have is to the actual hand in observatory

dark pier
bright cloud
#

You can have both

dark pier
bright cloud
#

Saturn (Straight) for example

dark pier
#

That looks clunky to me though

bright cloud
#

Seems fine to me

#

Oh it's saturn not venus

#

Another reason to have hand names

dark pier
#

I guess this is acceptable.

dark pier
#

Low-ace straights, four-card straights & flushes, and 4-card straight flushes weren't implemented correctly before, but now they should be:

bright cloud
#

I wonder if anyone here knows rust or any fast coding language to make the site into a fast application, that way maybe the optimization part could be done faster and not slow down your browser to a crawl when dealing with really high scores

#

It's just js isn't a fast enough language I think for all the calculations people might wanna do

dark pier
dark pier
#

As an example of an algorithmic optimization I'd like to implement, right now, when optimizing Joker order, it tries every possible ordering, but that could be minimized a lot given that the order of many jokers doesn't matter outside of some edge cases where another joker's position relative to it matters. In many cases, just putting x_mult jokers on the right is the only thing to optimize, and that can be optimized easily via sorting them like that.

bright cloud
#

Well good to know it isn't language related problems

bright cloud
#

another suggestion i have is to show the effect you have on a joker while hovering

#

and on the cards

dark pier
#

Baseball should be working correctly now.

versed roost
#

found a bug with the boots

#

i put in a 53 for it to simulate the +106 someone got with their hand, but looking at the breakdown it seems to be giving +108 for some reason

dark pier
versed roost
#

👍

somber arch
#

I'm just popping in here to say thank you for this <3

#

The calculator is really useful <3

dark pier
#

This also means that clicking jokers no longer removes them. Instead, on hover, you get a red tab which, when clicked, removes the joker.

dark pier
#

The next things I'm planning to implement are:

  • modifier tooltips
  • boss blinds
    • The Flint
    • disabled joker modifier (Crimson Heart)
    • force card to be played (Cerulean Bell)
    • disallow hand types (The Mouth/They Eye or when building for Supernova)
bright cloud
#

a possible suggestion from the high score nerd in me: to add the score you would get even if you went past infinity. idk how hard that would be on the system to keep the score written down when already dealing with such higher numbers but if its not something that effects performance that would be nice

junior cairn
bright cloud
#

well lets hope

dark pier
frank granite
bright cloud
#

cant imagine it wouldnt meaning it would?

bright cloud
#

big rip

dark pier
#

It don't know by how much, and it could be a toggle/falback-only.

bright cloud
#

i mean a toggle would probably be good

#

theres no need for it for 99% of cases

#

only in extreme cases

full phoenix
#

@dark pier made a PR to fix a bug :)

dark pier
full phoenix
#

Just a silly little typo squashed
Will definitely try breaking it some more

dark pier
bright cloud
#

random thing i noticed: while i dont think it matters too much popcorn and ice cream overflow into negative numbers when the value number is above their actual lifespan

dark pier
bright cloud
#

yeah it aint too serious so makes sense

bright cloud
#

I think the balatro wiki isn't up to date since I just noticed flush 5 isn't scaling properly, level 9 is 480x40 not 430x38

#

@junior cairn can you just find the scaling from the game code in an easy way to paste?

dark pier
#

You can figure it out pretty easily with the debug mode

bright cloud
#

I'm not on my computer

#

So I'm asking him to help

dark pier
#

(weird choice of place to ask, but makes sense besides that)

bright cloud
#

Why would it be weird, the main use of a table like that is in a calculator site if anything

dark pier
#

I think all of these are correct (except maybe flush 5, flush house, or five of a kind):

#

I don't think I tested flush 5, flush house, or five of a kind, but I'm pretty sure I did for the rest

junior cairn
#

And won’t be for a bit

bright cloud
#

Rip

swift barn
#

can you add some sort of "reset" button? i usually only use it on bosses, so by the time i want to use it again, im already in completely different setup and clicking on everything is no ideal

#

also, how am i supposed to setup ramen? figured out, but im not sure if doing it by number of discards is better or no

#

walkie talkie?

swift barn
#

another suggestion - add some way to compare the jokers, i want to test whether scholar or fib would be better (assuming perfect hand), but rn there is no fast way to check it. either "disable" joker, or some way to weight pair of jokers
*fib doesnt work aswell

dark pier
dark pier
frank harness
#

Does this add a draw chance for specific cards?

#

Like % chance to draw 9 of clubs, or % chance to draw any club or any 9

dark pier
# frank harness Like % chance to draw 9 of clubs, or % chance to draw *any* club or any 9

No. This calculator only considers what you currently have in your hand; not what you have in your deck.

If you want the chance to draw a specific card/set of cards, you need to look at the cards remaining in your deck, how many cards would satisfy what you want, and how many cards you're going to draw.

I could probably make a different calculator which, given a deck-state and hand-state could tell you the odds of drawing various types of hands with various discards, but it'd be a very different kind of thing.

frank harness
#

I just am bit probability nerd, so i do that calculation in my head all day, but it does get tedious doing it every draw

dark pier
#

As a general rule of thumb; just count how many cards would satisfy what you want (if you're looking for a single card) and divide that number by the number of cards remaining in your deck. That's your A in B chance of drawing it. You do A / B to get the % chance of drawing the card. If you're looking for multiple cards, a rough approximation is to do that same thing for both types of cards and multiply the odds; e.g. 10% x 20% = 2%. Keep in mind that if there's overlap, e.g. you're looking for 2 Aces, you can't draw the same card twice so subtract 1 from the second count.

dark pier
frank harness
#

useful info nontheless

#

even if not for me

#

i even attempt to do game wide ones in my head

#

like if i add any card to my hand what boost that does to my deck in the long run ect

dark pier
#

I personally do that part almost all by intuition. I don't bother doing much more than checking how many cards there are to satisfy a certain hand.

dark pier
#

I did what I could to try and make it so that the URL doesn't get too long.

dark pier
frank harness
#

have you been working with the game itself with this or just seperately with a web app?

#

im currently trying to modify the tooltip to show a chance %

dark pier
frank harness
#

ive been studying the code for the last few hours trying to work out where/how i would mess with the tooltips

lucid sparrow
dark pier
#

I made it so that for Raised Fist, it puts the lowest cards on the left (with preference for red stamps & red stamps with steel being on the right so that they trigger twice) so that Raised Fist triggers first, and it doesn't do so if you don't have raised fist so that Shoot the Moon can gets maximum effect from steel cards:

#

P.S. Raised Fist triggers (as far as I can tell) the right-most of the cards of the lowest value.

#

btw, I was already putting queens on the left of kings and aces for Shoot the Moon.

dark pier
#

I think it'd be ideal if I did it the other way around; doing queens on the left, then low card(s), then the rest.

#

brb

wind merlin
#

godspeed edward, thank you for this wonderful creation

exotic berry
#

My goodness, @dark pier. This is absolutely incredible!

dark pier
#

This also made me notice a slight mistake with Sock and Buskin triggering too early

full phoenix
#

Tbh the average isn't a great metric either, is it ?
A median would be a better indicator since it wouldn't be skewed by higher scores

#

Tho it wouldn't be nice to compute especially for all the combinations

dark pier
# full phoenix Tbh the average isn't a great metric either, is it ? A median would be a better ...

When I said average, what I was thinking was really EV (expected value) which is basically the same thing as the mean weighted by how probable an outcome is.
The median would be the thing you want to optimize for a single hand, but the mean (EV) is what you'd want to optimize for many hands. For something in-between (the 3-6 hands you generally have), the actual thing to optimize is probably somewhere in-between 🤔.

restive jolt
#

maybe counting the random events averaging it?

dark pier
#

Oops! All 6s is annoying to have to consider. (especially since it's blueprint compatible)

restive jolt
#

true

full phoenix
dark pier
#

For labeling them; does it make sense to call them: Long-term EV and Short-term EV for mean and median respectively? I imagine most people don't know or remember the difference between mean and median.

full phoenix
#

I think that's rather good names 👌

bright cloud
dark pier
#

Now I have to change things from having 1 optimizer (minimax) to having 4 (minimax, meanmax, medianmax, and maximax)

golden sluice
bright cloud
#

Is it really blueprint compatible but not brainstorm?

#

I don't think it is

dark pier
golden sluice
#

Pretty sure that's outside the effects blueprint would affect

bright cloud
#

I'll test blueprint but I'm certain brainstorm

full phoenix
#

👍

dark pier
dark pier
hushed cove
dark pier
hushed cove
#

I'm reading the comment and it seems to make sense

#

also my thing is also in js so I coild probaly just yoink the js file and use your code

#

I guess I need to see how jokers are formatted

dark pier
dark pier
hushed cove
#

Yeah I feel that

#

Looks like I'll have to make some id map, but that shouldn't be too bad

#

and then I'll have to convert how things are storing their value

#

a few values seem like they might be a bit difficult

#

like card sharp

dark pier
# hushed cove like card sharp

The value for Card sharp is just a boolean; you can probably just default it to false until/unless you want to actually check for if it's enabled.

hushed cove
#

well the issue is I don't know what hand will be played

#

so I can't know if it should be enabled

dark pier
hushed cove
#

yeah

#

the user being able to toggle it without readding it would be nice

#

oh wait did you add that?

#

oh you did

#

I missed that

#

in that case its not a big deal

#

the user can do that

dark pier
#

Swashbuckler and Obelisk are the other two that aren't really implemented correctly

hushed cove
#

yeah swashbuckler would be nice

#

if you implement sell value, the save reader could export that as well

#

same with plays on each hand

dark pier
hushed cove
#

I mean iirc the discount voucher can even change sell values

#

and modifiers

#

its annoying

#

but it might be nice to be able to add it in the edit/add menu

#

just for when using swashbucler

#

side not it might be smart to add a version field to your binary format

#

so you can add stuff to it without breaking loading older url's

dark pier
hushed cove
#

yeah fair enough

#

but yeah you could keep backwards compat with an version field, just don't do the new stuff when parsing

#

otherwise, looking good

#

I guess you can still append data to the end of the format now

hushed cove
#

ok I will see if I can make a quick proof of concept for this

dark pier
bright cloud
#

Yeah I know they stack but they can't be copied

dark pier
#

news to me

hushed cove
#

can confirm multiple oops all 6's stack

#

(they double each other's values)

hushed cove
#

just want to confirm, number of cards is cards held - cards selected , and number of cards in hand is cards selected, right?

#

also seems a bit odd you push the size of the hand then the size of the seleected but then you push the selected first and the hand second

dark pier
# dark pier

I just did some back-of-the-napkin math and, to find the median of this would require checking 2^26 = 67,108,864 possible outcomes. For context, calculating 40,000 takes over a second, lets call it 1 second, so that'd be roughly 27 minutes per hand-calculation plus the optimizer does upward of a few hundred hand-calculations per hand when one optimizer is enabled and upward of tens of thousands when both are enabled.

#

TLDR; I don't think we're getting a mean/median optimizer.

bright cloud
#

Let's first start with performance before we start calculating random effects

#

Like I ain't trying to rush or anything but imo it would be better to work on multithreading for example

#

Rather than the median of lucky card or something

dark pier
#

Fine, I'll do the boring thing and implement multithreading
grumble grumble programmer grumble

hushed cove
#

good news

#

I think cards should work too, but I wasn't in the right state to check

#

right now any custom values aren't implemented

dark pier
hushed cove
#

yeah I was just buying things in the shop

#

is nice it worked though

#

I will mess with it a bit more later

#

theres still a few todos

#

yeah cards seem to work

bright cloud
dark pier
bright cloud
#

I mean it definitely tanks when I try calculating near inf scores

#

And I know that's the extreme but I think that's a use case that will be used more than you think

bright cloud
#

I mean I don't have links but it's easy to make

#

Just like 4 barons and 4 mimes and a bunch of red steel kings

dark pier
bright cloud
#

I mean I think performance optimization in general should be put first

#

Instead of such niche cases

#

I ain't a dev so I ain't gonna judge on the pace but it's just my 2 cents

dark pier
#

In general, multithreading is going to get you like one or two more cards. algorithmic improvements are going to either be unhelpful because the improvement isn't universal or orders of magnitude faster.

#

They're both worth doing.

lunar topaz
#

it doesn't correctly count the midas mask + vampire + pareidolia combo

dark pier
lunar topaz
#

Card Sharp isn't capitalized correctly

#

also why is 'Tarot' in superposition's description that color

bright cloud
#

Like I think if people want to help more to the site right now besides like finding cases where score isn't being calculated correctly (like vampire right now) i think they also need to try and "stress test" the site for different ways to help make it perform better under different situations

lunar topaz
#

if you use many blueprints and split them evenly among a retriggerer joker and a scoring joker it takes a noticeable amount of time to calculate

dark pier
# lunar topaz if you use many blueprints and split them evenly among a retriggerer joker and a...

Well yeah, scoring takes time & retriggering takes time; if the normal situation is 5 cards scored by 5 jokers for one trigger = 25 scorings, doing 5 cards scored by 5 jokers for 5 triggers = 125 scorings, it's going to take about 5 times longer, not to mention that blueprints have overheard in finding who they represent (that bit might be able to be done as a one-time thing per calculation but isn't a high priority).

dark pier
dark pier
dark pier
#

What are the default sell values of cards?

rigid bone
#

is there a way to input hiker chip bonuses on cards?

dark pier
hushed cove
#

although iirc, the cost can change

#

like the discount voucher changes the sell cost

dark pier
#

Yes, the cost can change, but having a default value that's at least right some of the time is better than nothing.

hushed cove
#

I think this should be the defaults for each joker

#

being the buy cost not the sell cost

#

it seems inconsistant across rarieties

#

with the exception of legendaries

#

who are all 20 cost (10 sell cost)

dark pier
dark pier
#

Okay, I guess I was looking at the demo's code on accident. That explains why I kept finding discrepencies.

hushed cove
#

oh yeah that would do it

#

btw do you have a list of jokers your thing supports that support custom values?

hushed cove
#

fun

#

do all of the ones that "actually" use it have it in their decription?

dark pier
# hushed cove do all of the ones that "actually" use it have it in their decription?

I believe so; I was just getting a list via checking which use it in their description:
Stone Joker, Acrobat, Banner, Mystic Summit, Loyalty Card, Steel Joker, Glass Joker, Abstract Joker, Wee Joker, Supernova, Joker Stencil, Ceremonial Dagger, Fortune Teller, Hit the Road, Ride the Bus, Driver's License, Invisible Joker, Dusk, Throwback, The Idol, Satellite, Caino, Yorick, Bootstraps, Egg, Runner, Ice Cream, Blue Joker, Constellation, Green Joker, Card Sharp, Red Card, Madness, Square Joker, Vampire, Hologram, Cloud 9, Rocket, Obelisk, Erosion, Mail-In Rebate, Lucky Cat, Bull, Flash Card, Popcorn, Ramen, Seltzer, Spare Trousers, Campfire, Ancient Joker, Castle

hushed cove
#

ok that'll work

dark pier
hushed cove
#

sounds good

#

I'll have to check how the save does it but I think it just tells me the sell value

dark pier
#

new url query parameter is h=, the old one is backwards compatible via using hand=

hushed cove
#

ok

#

also I think theres something weird with your index map for the jokers that have seperrate head and backgrounds

#

probably a missmatch between what you use for type and what the game uses

#

theres only 6 of them so I'll just fix it manually

dark pier
#

Yeah, I use the background as the canonical position, I guess they're using the head as the canonical position.

hushed cove
#

yeah I guess

#

I just copied from the code and did a bit of find replacing

dark pier
#

You found my WIP fallback, lol

hushed cove
#

imma put this here so I don't lose it js [ 'j_stone', 'j_acrobat', 'j_banner', 'j_mystic_summit', 'j_loyalty_card', 'j_steel_joker', 'j_glass', 'j_abstract', 'j_scholar', 'j_supernova', 'j_stencil', 'j_ceremonial', 'j_fortune_teller', 'j_hit_the_road', 'j_ride_the_bus', 'j_drivers_license', 'j_invisible', 'j_dusk', 'j_throwback', 'j_idol', 'j_satellite', 'j_caino', 'j_yorick', 'j_bootstraps', 'j_egg', 'j_runner', 'j_ice_cream', 'j_blue_joker', 'j_constellation', 'j_green_joker', 'j_card_sharp', 'j_red_card', 'j_madness', 'j_square', 'j_vampire', 'j_hologram', 'j_cloud_9', 'j_rocket', 'j_obelisk', 'j_erosion', 'j_mail', 'j_lucky_cat', 'j_bull', 'j_flash', 'j_popcorn', 'j_ramen', 'j_selzer', 'j_trousers', 'j_campfire', 'j_ancient', 'j_castle' ]

#

list of ones that use abilities

#

wait why is egg in here

#

with the sell value being supported, it shouldn't need that anymore

#

We've gotten out first joker value transfered over

#

oh ice cream has the (Currently +90 chips) but it should just say +90 chips at the top (like popcorn)

dark pier
#

I put it there more to remind me that egg is anoying

hushed cove
#

ok fair enough

dark pier
hushed cove
#

👍

#

man this game is inconsistant with how it handles custom values

dark pier
hushed cove
#

yeah

hushed cove
#

oh bruh the planets even have a spot for total usage where the tarots have

dark pier
dark pier
hushed cove
#

No I meant the one uses the global varible and the other loops over and counts

hushed cove
#

ok a couple things

#
  1. queens seem to be sorted as the highest cards, when they should be between kind and jack
#
  1. I can't seem to select any kind of modifiers in the card GUI
hushed cove
hushed cove
#

This says +mult but its actually +chips (it does the math right though

#

theres a slight inconsistancy here

#

let me investiagte

#

oh I think I made a mistake

#

oh it was floating point aritmatic

dark pier
hushed cove
#

why would you do it that way with baron?

dark pier
#

err not baron

#

Shoot the moon

hushed cove
#

ah

#

so more like the baron shoot the moon combo?

dark pier
hushed cove
#

okay makes sense

dark pier
#

Raised fist makes things more complicated to optimize though, which was annoying.

dark pier
hushed cove
#

(joker.ability.x_mult - 1.0) / 0.1 when x_mult is 1.2 this is 1.9999999999999996

#

I then just converted that to an int which is 1 and not 2

dark pier
hushed cove
#

ah thats smart

#

I just stuck a round on the function calling all of the conversions just in case

dark pier
#

That relies on the 1.2 not having floating point error already though, which might not be safe.

hushed cove
#

I belive this value should be whatever the card is visably displaying so it should be fine

#

also is abstract something the calculator can do itself?

#

oh also are hiker upgraded cards something I can do?

dark pier
#

I chose to have it as a value just for if you're putting in only some of the jokers

hushed cove
#

I guess

dark pier
#

If you have some cards that you know are useless, it makes the optimizer faster to omit them.

hushed cove
#

oh how do I do supernova?

dark pier
#

I forgot that supernova's not implemented properly. It's currently a static mult, but there's no UI to add times hands have been played.

dark pier
dark pier
# hushed cove oh how do I do supernova?

I'll append hand counts to the end of the URL format, here's an outline:

/*
include hand counts? - 1 bit
for each hand type:
  played this round? - 1 bit
  is non-zero? - 1 bit
  count if non-zero - 16 bit unsigned int
*/
  // hand counts (for supernova/obelisk/card sharp) - 1 bit
  if(false) {
    binary.push(1);

    for(let i = 0; i < hands.length; i++) {
      // played this round? - 1 bit
      binary.push(hands[i].playedThisRound ? 0 : 1);

      // is non-zero? - 1 bit
      binary.push(hands[i].played ? 1 : 0);
      if(hands[i].played) {
        // count if non-zero - 16 bit unsigned int
        binary.push(...intToBinary(hands[i].played, 16));
      }
    }
  }
  else {
    binary.push(0);
  }
hushed cove
#

oh this will allow obelisk to work better too

#

also it might be nice to get a hand thing for card shaerp

dark pier
hushed cove
#

Why is seltzer an active/deactive joker?

#

also hows castle work with it having a chip and suit?

dark pier
dark pier
hushed cove
#

I guess

#

oh I just pushed my changes

#

everything should work now

#

its a tiny bit clunky to use, but I'll fix that later

#

its bed time

bright cloud
#

5oak: 120x12 not 100x10
flush house: 140x14 not 120x12
flush 5 is correct

#

@dark pier just tested all in game

raven thorn
#

i could see this being in a balatro sandbox thing

bright cloud
#

i wish we had a sandbox but it ended up not being done for full game

#

so now we make the sandbox

raven thorn
#

well that's where mods come in

bright cloud
#

i guess

dark pier
#

fixed

dreamy crescent
#

How hard would it to be to port the efforts here into an in-game score preview? That's definitely the single thing I find most missing from the game that I'd love to see modded in.

dark pier
hushed cove
#

I mean I think a save state kind of system would be possible

#

Just save the game, play the hand then save the score and load it

#

I guess you don't have the optimization then

dreamy crescent
#

I don't care about the optimization feature; I care about constantly having to do the math myself. Specifically, I would want a preview of exactly how much score I'm about to get with my currently selected hand + the current jokers I have automatically show up when I select the hand. Would literally save me a good 20 minutes per run compared to constantly doing the math manually. (Randomized factors can just show min/max as this Calc currently does.)

left lark
#

Does this account for DNA with Brainstorm causing 2 of said cards being in your hand during scoring?

hushed cove
dark pier
#

I hadn't considered that niche scenario

dark pier
#

I'm basically rewriting the entire simulation code, so it's going to be a while (probably like a week) before I have any significant changes, but when it's done, I should have significant raw performance improvement, significant algorithmic performance improvement, multithreading, and Monte Carlo based mean/median calculation. I'll also be implementing a few of the things currently unimplemented while I'm at it.

bright cloud
#

Letsgo

#

Hype

dark pier
#

I'm testing to see what the performance hit for using a big-float (mantissa & exponent stored separately as float64) would be.
There's a JS library, break_infinity.js that does that, but I only really need add and multiply, so I was able to make a custom implementation that's about twice as fast as it:

#

Still about 2.5 times slower than float64 (while not breaking until around 10 ^ (9 x 10 ^ 15)), though that's doing exclusively math operations so the full simulation probably won't quite be 2.5 times slower.

dark pier
#

My array of test values was getting too long; I cleaned that up, and it's normal again.
Making my version only occasionally normalize the mantissa sped things up a little.

bright cloud
#

I mean if we have all the other performance improvements I doubt the slowness would be that much of a problem

dark pier
#

Maybe, but I expect this to be one of the main possible bottlenecks, so I want to make sure it's optimized before it would be a lot more annoying to change.

bright cloud
#

Makes sense

left lark
#

In your rewrite could you have it show us the E value as well so we know "Yeah... thats e13", without me having to count?

left lark
#

oh okay, last time I used it it didn't.

dark pier
#

I also use x 10^exp since that's easier to understand

versed roost
#

e is basically a replacement for x10^

left lark
#

I understand that. Its just last time I used it I recall it having shown the whole number

dark pier
left lark
#

Yeah I heard you. Was talking to nick

versed roost
#

yea the switch to e numbers happens at trillion ingame

#

actually wait

#

the lowest one is e11 i believe, so that would be 100 billion

dark pier
#

There, now the threshold is 1e11

dark pier
#

My code was so unnecessarily verbose

raven thorn
# dark pier

i wanna take a guess at what the if statement means

#

"if card[3] is equal to 5 and is not card[6]"

#

i only have decent coding knowledge lmao

junior cairn
#

I assume that list stores attributes of a card

#

I’d guess “if card is steel and not debuffed”

raven thorn
#

makes sense

#

this is way out of my field

#

though i've never seen a triple =

dark pier
dark pier
# junior cairn I’d guess “if card is steel and not debuffed”

Yeah, card is an array with the indecies meaning:

[rank, suit, edition, enhancement, seal, extraChips, disabled]

so card[3] === 5 means card enhancement equals 5 and 5 happens to represent steel. Similarly card[6] means card disabled is falsey aka card not debuffed.

I realize the readability isn't great, but I think it's fine for this.

#

Some notable differences (besides the card format being a 1D array of numbers and a Boolean rather than an object of objects of Booleans or numbers) is the triggerCardInHand function only taking 1 parameter instead of 9 and the steel card check taking 2 conditions instead of 4 (one of which was a slow indexOf() check).

junior cairn
#

lol when making my seed searcher I had to completely rework a lot

dark pier
#

Yeah, performance probably matters even more for that kind of application.

junior cairn
#

There’s probably a lot you can optimize still for that

#

Wouldn’t be surprised if someone comes along and makes a pull request that triples the speed of the searcher or something like that

dark pier
#

I've been meaning to check out you seed searcher, but I don't really want to do seed searching until I've beaten most of the game and I only just beat my first run on gold stake today.

junior cairn
#

makes sense

#

If I wasn’t involved in the technical aspect of the game I would probably be playing a lot of runs for 100% completion

dark pier
#

I swear I've spent more time programming this calculator than I have playing the game.

hushed cove
#

Yeah I feel that

dark pier
#

Multiple times, I've been hanging out with friends who all are playing the game and I'm just programming in the background.

hushed cove
#

I mean at least I enjoy programming

dark pier
#

I love programming so much that I quit a programming job and left the software field so that work wouldn't ruin the fun for me.

hushed cove
#

wow

#

qctually I can check how much time I've been programming this thing

#

oh wait actually theres a bit more if I expand the search

junior cairn
#

If I were to estimate I’ve probably spent 30-60 hours on Immolate

#

Haven’t kept track though and it was across a very long period of time (since the beginning of January, and going back to October if you consider really old versions)

#

Like it started out in October as a program that looked at the screen to manually search seeds

#

A literal hold R simulator

raven thorn
#

lel

dark pier
#

Incase anyone's curious; one of the major algorithmic improvements I'm making is, for optimization searches where cards played and joker order are being optimized, right now it checks every combination and permutation in a fairly straightforward way of just checking their score, but what I'm working on changing is making it so that it precomputes as much as possible, so:
First it'll pre-compute everything that it can knowing only what jokers are played (not joker order, cards played, or cards played-order)
then it'll loop through all permutations of jokers and pre-compute what it can using that new information, e.g. pre-determining what card blueprint and brainstorm are copying and how much Swashbuckler's multiplier is
Then it'll loop through all n choose k combinations of choosing cards to be played and pre-compute what it can with that information, e.g. what type of hand it is, vampire, obelisk. It'll also pre-compute triggering cards-in-hand effects at this time.
Lastly, it'll go through all the permutations of the order to play cards and compute the final score.

I also want to prune redundant permutations, but I haven't spent too much time thinking about that bit.

All told, I'm expecting that to increase performance by multiple order of magnitude in some cases.

raven thorn
#

im ashamed i got jumpscared by your paragraph

dark pier
#

Hey, it calculated a thing

hushed cove
#

nice

dark pier
#

Only took 1000 lines of code with none of the jokers implemented (a lot of the structure is done though; jokers are basically the only thing left)

raven thorn
#

thing is calculated, seal of approval granted

swift barn
full phoenix
# dark pier

I wonder if it'd be possible to use, for example const ENHANCEMENT = 3; const STEEL = 5 at top level and then use card[ENHANCEMENT] === STEEL
would JS be able to optimise that ? 🤔

#

but yeah I guess having them commented all at one place is easy and doesn't make reviewing the code too bad

#

pet peeve material right here

dark pier
#

I do have them all defined in-code:

full phoenix
#

I see
I did specifically use consts because I do not trust optimisation being done if we try getting them from an object, I guess the correct method would be to measure it

dark pier
dark pier
#

And the card function just builds an array.

#

In this context, Balatro.suits.clubs being unoptimized doesn't matter because it's only run once compared to the potentially many, many, many times it's used.

dark pier
#

I don't think I wont to do this for joker names, but this should be fine.

#

I always find it a little jarring that the ranks are offset by two, but whatever.

junior cairn
#

I did this for literally everything in Immolate lol

#

Just stuck it in a massive enum

#

Also you forgot Ace

dark pier
#

There is a conflict in that disabled joker is a different index than disabled card, but their edition is the same index.

dark pier
#

regex replace is great

hushed cove
dark pier
#

Improved editions styling

warped walrus
#

looks nice

hushed cove
#

that's pretty good

#

oh yeah next time you make a breaking change in the url format you should add gold card's

hushed cove
#

👍

dark pier
#

IIRC, gold matters in the event of vampire and that's it.

versed roost
#

the only other time it would trigger when played is with the gold ticket and that just lets you get the money

dark pier
hushed cove
#

Unless you have bull/bootstraps

dark pier
#

That's such a niche case, why

hushed cove
#

I mean theres a few other jokers that could increase money before bull/bootstraps

versed roost
#

I didn’t even think of that lol

hushed cove
#

also gold seal

versed roost
#

Lucky cards

hushed cove
#

I think business card

dark pier
#

I'm not implementing money tracking for the sake of this niche case.
At least not right now.

hushed cove
#

tbh money tracking would be nice so you change all bull and bootstraps at once

dark pier
#

That's not even a good build.

#

I'll maybe look into after the big update I'm working on, but not before.

golden sluice
#

bull is a good build wym, bootstraps can sometimes be useful for the lack of other scaling

bright cloud
#

Bull + bootstraps only run or bust

fickle marten
#

how do you activate dusk on this

#

nvm

#

i figured it out

#

i crashed the calc by accident

dark pier
#

I'll try and make it harder for that to happen later, but just try and be mindful for the time being.

fickle marten
#

nah, it just straight up crashed

#

its fine, it makes sense

#

it also may just be my laptop being shitty

dark pier
#

The engine rewrite is nearing completion. It's fully functional for pretty much everything except some jokers

dark pier
heady swan
#

Idk if you've done this already, but if you make it an api, it wouldn't be too hard to incorporate this into a mod to show calculations in game.

cold raven
#

I'm sure this has been asked before (and if so I'm sorry), but do you think an in-game calculator would ever be possible?

bright cloud
full phoenix
golden sluice
bright cloud
#

seems like someone implemented a calculator in the form of a joker

hushed cove
#

Oh that's neat

#

If that is actually accurate, it shouldn't be too hard to add as a mod that shows it

bright cloud
#

It is accurate from what I saw

#

But at the same time I was doing inf tests so I didn't really see low numbers

hushed cove
#

I'm wondering if it's calculating things like gold seal incrementing bull a bunch of other smaller interactions

dark pier
#

(also, the engine rewrite is done, now I just have to integrate it)

bright cloud
#

Hype

junior cairn
#

Nice

brisk stump
#

will you update it to calculate seeds?

junior cairn
#

If you integrate this with something like Immolate, then you’ve pretty much just created a clone of the game lol

#

So I don’t think that will be something that happens (although I wouldn’t mind helping if you are interested lol)

brisk stump
#

nah im good lol

#

actually is it possible to add immolate to it? @junior cairn

junior cairn
#

Possible but difficult

#

Since both tools are written in different languages (OpenCL vs JavaScript)

brisk stump
#

ah

#

well i wouldn't mind seeing it ;)

junior cairn
#

The best way to do that would probably be to port Immolate to WebCL

#

Since those could both run in a browser

brisk stump
#

im way too dumb to figure this out lol

dark pier
# brisk stump actually is it possible to add immolate to it? <@668187864424775686>

What would be the advantage of having them together in one tool that you don't get from using them separately?
They try to accomplish completely different goals; one being finding the best seed meeting certain conditions, the other being finding the best hand given certain cards/jokers.
I don't see how you could easily combine the two in a meaningful way besides just having the convenience of things being in one place.

junior cairn
#

At that point just recreate the entire game

bright cloud
#

soon we'll just make a tas to play the game for you

junior cairn
#

I was actually thinking of making a TAS mod at some point

dark pier
#

I've made game-playing AI before

bright cloud
#

Why play the game when you can get the game to play for you

dark pier
#

In Soviet Russia, the game plays you

bright cloud
#

btw, will the new engine show you the number if you get past inf? cuz i imagine if you have like a new library that can go past inf it wouldnt be hard to just show the number also on the site

dark pier
#

aka 1 x 10 ^ 9,007,199,254,740,992

#

(The limiting factor there is that the exponent is stored as a JS number (aka 64 bit float) and 64 bit floats can only store up to 52 bit integers before losing precision. It won't completely break at 1e(9e15) but it won't reliably be correct)

hushed cove
#

The calculator doesn't seem to count DNA rn

#

it can matter if the cloned card is then has an in hand effect

dark pier
hushed cove
#

fair

#

it does impact a few things you don't actually check

dark pier
#

high priority is getting the new engine integrated, which is proving anoying.

hushed cove
#

like cloud 9

static aurora
#

DNA matters with cards in hand shenanigans mostly I think

golden sluice
#

Steel, yeah

dark pier
bright cloud
#

big hype

hushed cove
#

Huge

dark pier
#

The new engine is live.
I expect there to be lots of bugs

bright cloud
#

well i can easily tell the site is using my cpu by just the sound the fans make when i try to add more jokers lmao

dark pier
#

Yeah, before it would be nice and only use a small amount of resources but be slow, now it's a greedy little guy taking all it can get.

bright cloud
#

little is an understatement, i have a 7800x3d and 32gb of ram and its making chrome crash with like 6-8gb ram usage

#

its crashing when its getting near 100% cpu usage

dark pier
#

How many cards/jokers are you trying to optimize?

bright cloud
#

im doing a stress test but im having like 14 jokers

#

i know its alot but like thats what im interested in

dark pier
#

Well yeah, the amount of work there is follows a factorial curve based on the number of jokers so 14 jokers would be 87,178,291,200 permutations.

bright cloud
#

so what needs to be done is the permutation reduction thing you said?

dark pier
#

Yeah. I haven't implemented the pruning I talked about earlier.

bright cloud
#

yeah pruning that was it

dark pier
#

I wanted to get this out since it's already significantly faster.

bright cloud
#

also is it just me or is the breakdown looking weird in the site?

bright cloud
dark pier
#

It's just you
The breakdown is completely borked right now since I had to rewrite that too, though I don't know what breakdown you're seeing.

bright cloud
#

alot of them are broken but this is the best example

#

it has jumps of like 26 it seems

#

it jumps from 0 to 26 to 52

#

yeah 26 each time

dark pier
#

Yeah, I forgot to normalize the exponent before rendering (The number is correct, it's just not normalized to between 0.1 e x - 1 e x)
I also need to add styling so that polychrome is transparent.

bright cloud
#

also idk if itll be easy to add or not, but the joker arrows you have seem so unintuitive, would it be hard or not to maybe do like joker dragging or something?

dark pier
bright cloud
#

aight if its on the list its fine

dark pier
dark pier
dark pier
#

Do you find yourself being too good?
Do you wish you could get another hand played for Ride The Bus?
Well have I got the toggle switch for you!
Introducing: Minimize Score!

dark pier
hushed cove
#

are you sure about that?

#

oh wait I think it does but the breakdown doesn't seem to do it

dark pier
#

Check this out

deft palm
#

this is a great discovery, I was always with my calculator on the side, specially when avoiding too many points with ride the bus or vagabond

random grove
lunar topaz
dark pier
#

yes

#

(Long-term is mean, short-term is median)

lunar topaz
dark pier
#

much better

hushed cove
#

oh does this use the new properites in the url now?

#

the one's for card sharp and uhhhh

#

that one card

dark pier
hushed cove
#

does it actually use them?

#

I guess I could test it

dark pier
#

I don't know

dark pier
hushed cove
dark pier
#

I didn't have the parsing of it written, but I just added it, so it should work now (as in in about 2 minutes)

#

Actually, Card Sharp still uses the Boolean even though everything is in place for him not to.
I probably won't change that until I have the UI for him setup.

hushed cove
#

fair enough

#

ui is hard, all users should just write data into a custom binary format by hand

dark pier
#

Obelisk should work though

hushed cove
#

oh neat

#

I swear there was another

dark pier
#

Right now, Obelisk always is X1 because the "most played hand" is always a tie with every hand.

hushed cove
#

oh yeah supernova

dark pier
#

Supernova

#

Yeah, it should also work

hushed cove
#

cool

#

I guess this is the part where I see if my code works

dark pier
#

Supernova currently (for normal users) always gives +1 Mult because every hand type has been played 0 times by default.

hushed cove
#

tbh just add the ui in the hands section like how the game already has it

dark pier
#

I want to, but I also want to maintain a semblance of mobile support

#

And there's no room

hushed cove
#

scroll bar go brrr

dark pier
#

On mobile, you already can't read the score at level 500

hushed cove
#

supernova seems to work

#

card sharp and obelisc don't seem to

#

also supernova's description doesn't show properly

#

This is what the above's game state looks like

#

pair was already played this blind

#

theres also a non-zero chance I messed up something somewhere

#

in case me messing with something made the calculator mess something up

#

Yeah looks like the played this round is properly parsed

hushed cove
#

also my adding cards ui is still broken unless i zoom

dark pier
#

There's no reason that the times played (the 3rd number in the arrays) should be less than the times played this round

hushed cove
#

wait did I switch the played this round or is that just how its parsed?

#

I thought played this round was a bool

dark pier
#

It is

hushed cove
#

ok so I must've made my bool backwards

#

pair is the only one played this round

dark pier
hushed cove
#

oh yeah I just got to that bit

#

let me fix that

#

That looks better

#

ok fixed build pushed

#

new url

dark pier
#

I'm getting all 0s from that URL

hushed cove
#

I think the calculator might've deleted those parts

hushed cove
#

I mean try that one

dark pier
hushed cove
#

yeah it looks like the calcuaotr does not save the changes of those values rn

#

oh obolisc works now

#

wait

#

no it just seems to always reset now?

#

oh wait

#

nvm this is the wrong thing

#

:3head:

#

obolisc seems to not reset on the one with proper values, but does on the one with all 0 values

dark pier
dark pier
hushed cove
#

yeah but if everythng is not, then I paly my most played hand, it doesn't reset

dark pier
#

In this for loop, I forgot to put the .length in this.hands.length

#

It should be fixed now

hushed cove
dark pier
#

I have no idea what's going on there.

hushed cove
#

truely a css moment

#

I just thought of a really niche interaction

#

actually I don't think it matters

#

yeah

dark pier
#

Either I'm look at the wrong line or CSS is being wonky.

hushed cove
#

Does the URL support gold cards?

#

doesn't look like it cause if I put one in and refresh it loses it's gold status

#

vampire and midas mask don't seem to behave quite right

#

iif the mask is after the vampire, it makes them gold after the vampire strips them, so the vamprie doesn't get xmult and the cards stay gold

#

but your's just has the vampire get xmult no matter which side

dark pier
#

Vampire and Midas have their own phase? arg...

#

That means that, hypothetically, if you had multiple vampires and midases, you could alternate them:

#

And the successive vampires would all get additional X_mult

hushed cove
#

yeah

#

it also means if you have a bunch of gold cards already, you can jput vampire first and eat them, then re gold them

#

actually

#

thats odd

#

only one ate it

#

Sounds like a bug to me

hollow oak
dark pier
hollow oak
#

@dark pier

#

oh yes thanks!

#

i hit refresh

#

love your work on this btw, so helpful!! 🙂

dark pier
# hushed cove

I do wonder if this is intended.
Let me know if you make a bug report about it somewhere.

#

Even just getting LocalThunk's response from seeing that would be interesting.

hollow oak
#

hm interesting, optimize hand is pretty broken with steel cards
optimize jokers puts my vampire first and copies it, and it seems to be huge

hushed cove
#

not thunk response though

hollow oak
#

I did the thing and pressed play and got a billion points 🙂
The calculator was slightly lower than actual, I will post screenshots in case it helps.
before pressing go - 5 cards selected.

my points gained off that press, and the calculator (calculator didn't have +3 gold from playing Ace with golden coin on it, but that doesn't make up the difference. I The numbers seem to work out if this is the bug: One of my vampires gained the +5 ranks from 5 cards played properly in the calculator and the other one did not (Brainstorm)

dark pier
hollow oak
#

i had some cards that were double buffed so that is hard to see visually

warped walrus
#

your link that you sent is missing a fortune teller

hollow oak
#

oops i will fix

warped walrus
#

i think i see the issue

#

vampire isn't sucking the enhancements? no indicator

#

the enhancements are not scoring as if they weren't there tho

hollow oak
#

i think one of the 2 vampires was getting the buffs in the calc but not both of them

warped walrus
#

oh yea

#

brainstorm shows x12 but vampire shows x13

hollow oak
#

yep that is the bug

warped walrus
hollow oak
#

I learned a lot about how the math works from this website, so handy

dark pier
#

Yeah, that seems to make up the difference

hollow oak
#

yep the only other differnce was the 3 gold I gained on the minotaur

warped walrus
#

why is mime retriggering those cards

warped walrus
#

wait im dumb

#

imma get some sleep

#

getting some abilities confused

golden sluice
dark pier
golden sluice
#

You can only remove enhancement once

#

After it's removed, another copy of vampire cannot remove it

hollow oak
#

brainstorm copies the vampire....

golden sluice
#

Brainstorm can only copy the Xmult effect

hollow oak
#

right

#

why are you named stupid?

golden sluice
hollow oak
#

the point is vampire grows to 13 when it eats and then we copy the 13

dark pier
#

That was nasty to try and fix, but it should be fixed.
I'm slightly concerned that there are other minor problems related to Blueprint/Brainstorm though.

golden sluice
#

like BP on runner and you play straight?

#

actually it does not even scale from playing straight

dark pier
dark pier
hushed cove
golden sluice
#

yea and that's what happens, is it not?

hushed cove
#

No

golden sluice
#

so if you have midas -> vampire -> midas -> vampire
first midas +1.0X to first vampire
second midas +1.0X to second vampire. So they scale separately

#

that's the intended behaviour

hushed cove
#

Yeah but in the video, only the first vampire removes the gold and scales, and the others do nothing

golden sluice
#

oh, my bad, I didn't see the video, thought it was unrelated probably

hollow oak
#

is the intent to put the calculator into the game to automatically do this stuff eventually? or just on the website?

dark pier
hollow oak
#

it has been really useful for telling my friends what i was doing, a screen shot doesn't really help people learn since you can't mouse over anything and read it and see the math in action etc.
I also learned a lot of the rules. I originally didn't realize that xmult was not all counted up like mult is, but indeed multiplied together like real math.

dark pier
#

Yeah, it's definitely become a good tool for understanding how the game works, especially with the breakdown

dark pier
dark pier
#

Okay, it's live.
Card Sharp, Obelisk, and Supernova should all work now.

dark pier
#

These buttons are hopefully helpful

#

The Play hand button should increment the values of relevant jokers (that don't involve tracking money).

golden sluice
#

does idol not support rank change?

#

oh I see

#

they're going in order

dark pier
#

Yeah. That one's admittadly a little clunky

dark pier
#

Ever wonder what would happen if you had every joker?

#

Baseball Card is a significant contributor to the score.

bright cloud
#

i wonder how long will it take to optimize jokers xd

dark pier
#

150! calculations, aka longer than the heat death of the universe.

#

optimizing around 81 jokers is where it gets to taking longer than the heat death of the universe.

bright cloud
#

When there are videos on how 52! Is big and here we got 150! Lmao

lunar topaz
#

i feel like you could just put all the +mult before all the xmult, put the uncommon +mults after the other +mults, sort the uncommon +mults by their +mult value, put blueprint and brainstorm both copying baseball card. this is easy

dark pier
hushed cove
#

I was thinking how theres quite a few jokers that don't affect anything position wise, (things like oops! all 6's, egg, gift card, golden joker, burnt joker, smeared, etc.) and most of these don't matter if blueprinted, so you could just always put them on the left, (so they can still be swashbuklered)

#

but I worry if theres more cases I can't think of

hushed cove
#

wee?

warped walrus
hushed cove
#

I'm probbaly blind then

warped walrus
#

notice the gap

hushed cove
#

ah yeah

warped walrus
#

also the four sinful joker art is outdated

dark pier
#

Should be fixed now.

lunar topaz
#

long term expected value doesn't consider that in the long term scaling jokers will scale

dark pier
#

long term expected value is the mean

#

It's not supposed to take that into account; I just figured most people aren't going to remember the difference between mean and median.

#

The long term EV of anything with scaling jokers taking into account scaling would be Infinity.

dark pier
#

I finally got a solid run, but forgot to reroll the boss.

dense elk
#

I believe there is an issue with raised fist - iirc, debuffed cards don't work with it, so the value is 0 when the lowest card held in hand is debuffed

#

Also, when adding cards, some of the cards held in hand don't show up at all (but will reappear once they would be in the played hand).

dense elk
# hushed cove wee?

to mee, it looks like it's using the art for the scholar right now, not sure why

dark pier
#

should be fixed now

golden sluice
#

plus all debuffed cards still trigger held in hand jokers

dark pier
#

This is known, see the github issues.

golden sluice
#

Is it possible that for jokers like square, castle etc. you specify value as the final mult/chips value? manually removing the base and dividing chips on the joker is super annoying

#

and first time I used it, got super confused, since I assumed it already takes the final chips value ^ so the results were incorrect