#💻・modding-dev

1 messages · Page 128 of 1

sonic cedar
#

yeah 💀

#

it doesnt even update the text either smh

wooden badge
#

lemme have a look. its current function suggests you are referencing the cards held in your hand somewhere

sonic cedar
#

got it

wooden badge
#

makes a nice little tune though when they trigger lol

sonic cedar
#

it does lmao

wooden badge
#

what I wrote there was bollocks. I thought the held-in-hand cards were giving +3

sonic cedar
#

yeah they are except +2

#

and also only after the blind is over

wooden badge
#

ah sorry

sonic cedar
#

they still shouldnt be doing it regardless though

wooden badge
#

they are doing it three times though

#

where else would they be getting the number of times to do that other than the round count in card.ability.extra.rounds I assume

sonic cedar
#

right i should show those actually

wooden badge
#

yeah please

sonic cedar
#
        text = {
            "{C:mult}+#1#{} Mult in",
            "final hand of",
            "the round",
            "This Joker gains",
            "{C:mult}+#2#{} Mult every",
            "#4#{} rounds",
            "{C:inactive}(Currently {C:mult}+#1#{}{C:inactive} Mult)"
        }
    loc_vars = function (self, info_queue, card)
        return{vars = {card.ability.extra.mult, card.ability.extra.mult_gain, card.ability.extra.c_rounds, card.ability.extra.rounds}}
    end,
wooden badge
#

having c_rounds and rounds could be dangerous

sonic cedar
#

config = {extra = {mult = 8, mult_gain = 2, rounds = 3, c_rounds = 0}},
forgot the conf

bold sleet
#

I ask once again: Is there a way to check if someone is in a run or in the main menu?

wooden badge
#

because you could accidentally do the other one accidentally

#

check if that's right

sonic cedar
#

got you

wooden badge
bold sleet
#

What to check against?

#

i.e. wtf am I looking for?

worthy stirrup
#

^

wooden badge
sudden dew
wooden badge
#

you need to go into the game's source code if you havent got it already

bold sleet
sudden dew
#

It will be nil if there isn't a current run

wooden badge
wooden badge
gilded narwhal
#

guys am I being silly

wooden badge
#

so I see you are ticking it up every round

sonic cedar
worthy stirrup
#

Am I doing this right, it causes a crash when I load up the deck

  apply = function()
      G.E_MANAGER:add_event(Event({
          func = function()
            local SuitChosen = PickRandomRank()
            local NumberChosen = PickRandomCard()
              for i = #G.playing_cards, 1, -1 do
                  SMODS.change_base(G.playing_cards[i], SuitChosen, NumberChosen)
              end
              return true
          end
      }))
  end
}
#

btw this is what is done for the suit and Numbering choosing

Cardnumber = SMODS.Suits
Rankchoose = SMODS.Ranks

function PickRandomCard()
    local index = math.random(#Cardnumber) -- Get a random index
    return Cardnumber[index] -- Return the card at that index
end

function PickRandomRank()
    local index = math.random(#Rankchoose) -- Get a random index
    return Rankchoose[index] -- Return the card at that index
end
sonic cedar
worthy stirrup
#
SMODS.Back{
  name = "One Card Deck",
  key = "absolute",
  pos = {x = 0, y = 3},
  config = {polyglass = true},
  loc_txt = {
      name = "One of a Kind Deck",
      text ={
          "Start with a deck with", 
          "only one kind of card."
      },
  },
  apply = function()
      G.E_MANAGER:add_event(Event({
          func = function()
            local SuitChosen = PickRandomRank()
            local NumberChosen = PickRandomCard()
              for i = #G.playing_cards, 1, -1 do
                  SMODS.change_base(G.playing_cards[i], SuitChosen, NumberChosen)
              end
              return true
          end
      }))
  end
}
#

yea

sonic cedar
#

can i see the crash log?

worthy stirrup
#

oh yea, 1s

#

no wait, thats an out dated one

#

1s

sonic cedar
#

oh ok

worthy stirrup
#

No crash happens, the cards just dont change

sonic cedar
#

oh 1s

wooden badge
#

@sonic cedar Id be so much more useful if I'd made a joker, I've just done consumables and seals so far

sonic cedar
#

its no bigggieee this is literally my fourth day of modding this game i didnt expect it to be easy

minor magnet
#

are current chips and mult stored somewhere? if so, what variable are they

worthy stirrup
#

do i gotta call the function?

#

or does it do that by itself

minor magnet
#

i know G.GAME.Chips is final chips

#

but like

#

what if i want the current amount of chips

night pagoda
#

for the chips (it's a global value)

#

and for current mult it's mult

wooden badge
#

@sonic cedar Something useful for debugging I've found is to just put print('test') after an if statement you want to check is querying properly.

sonic cedar
#

ill try that then!

sonic cedar
#

your cards arent polyglass

stiff locust
violet void
#

what does evaluating a print do

wooden badge
#

@sonic cedar can't see anything glaringly wrong atm, sorry! Might try and make it myself and see where I get to.

hardy viper
stiff locust
#

well yeah but it helps with checking if a value or a table has the right thing in it

worthy stirrup
sonic cedar
violet void
stiff locust
#

what

sonic cedar
hardy viper
stiff locust
#

oh neat

hardy viper
#

prints card info

stiff locust
#

that would've been helpful a while ago

worthy stirrup
#

ill see if i can

stiff locust
#

but right now i need to debug something absolutely awful that i don't understand

#

i've got a function in my mod that does something completely different on my computer than on elbe's computer and I don't understand why

#

cryomancer is making fused jokers for me but for elbe it makes fusion materials like it's supposed to

wooden badge
sonic cedar
sonic cedar
wooden badge
#

@sonic cedar also, this check doesn't really make sense with what you want. This checks if it's your last hand, not your final one (as in the one that breaches the blind score).

frosty dock
#

I should make more deck examples

stiff locust
#

can you make enhancement example

wooden badge
#

Oh sorry you want final hand as in what Dusk does @sonic cedar

stiff locust
#

take a shot every time bigfact pings toma

worthy stirrup
#

how did i do this

stiff locust
#

well it's a deck of nils

worthy stirrup
#

Is it Rank_Suit or Suit_Rank

#

YES FINALLY

rough furnace
# worthy stirrup

I did this earlier but that was because I deleted the cards manuakly and then put invalid cards into it

worthy stirrup
#

IT WORKS

rough furnace
#

Should be 10 of spades tbh

tall wharf
#

that one seed for erratic deck:

sudden dew
#

Is there an existing way to prevent jokers from ever appearing in the collection?

#

Like, not just never getting unlocked, but never showing up at all

stiff locust
#

delete the collection

hardy viper
sudden dew
hardy viper
#

now that i think about it im pretty sure tmj doesn't respect that

#

ill add that to my todo list

nocturne estuary
#

how would I check if a certain voucher has already been redeemed this run in code?

nocturne estuary
worthy stirrup
glass scaffold
#

Anyone know how to find the code for Hanging Chad?
-# and maybe how to convert a card to a Lucky Card?

worthy stirrup
#

Im thinking about adding support for enhancments and stuff

bold sleet
#

Quick question: How does the game determine if a joker is compatible with blueprint and brainstorm?

sudden dew
glass scaffold
bold sleet
#

ok

sonic cedar
stiff locust
#

alcohol poisoning

sonic cedar
sudden dew
# bold sleet ok

blueprint_compat == true only controls whether blueprint says "compatible" or not. To actually make your joker not compatible, you have to add a check at the start of calculate, something like if context.blueprint return end

frosty dock
sudden dew
night pagoda
glass scaffold
stiff locust
#

yeah you have to manually exclude code from blueprint compat

frosty dock
sonic cedar
#

1000% thunk coding

frosty dock
#

there could be an automatic check to exclude blueprints when it's set to false and just handle the other cases manually, but thunk didn't do that

stiff locust
#

it'd be super cool if smods had that

#

if only we had an smods rep somewhere around here we could forward it to

cedar stream
#

am i doing something wrong, cuz the enhancment is not giving 1.25 X mult

glass scaffold
frosty dock
sonic cedar
#

but what if it did… true

glass scaffold
#

no more syntax for this (signed from a person who does Java)

tall wharf
#

snippet from my latest code

frosty dock
sonic cedar
frosty dock
#

assuming new calc

tall wharf
#

(no)

glass scaffold
frosty dock
sonic cedar
#

what have you done

tall wharf
frosty dock
#

Something something graph algorithms

sudden dew
#

Is there a neat way to add the little side boxes that display by a joker while hovering, like the one on perkeo that explains what negative is?

tall wharf
#

😭

#

graph

cedar stream
stiff locust
glass scaffold
sudden dew
frosty dock
hardy viper
#

meow

tall wharf
#

i wish

stiff locust
# sudden dew Thank you
loc_vars = function(self, info_queue, center)
        info_queue[#info_queue+1] = {key = 'e_negative_consumable', set = 'Edition', config = {extra = 1}}
end,

this is how it looks for perkeo's

tall wharf
#

no i really do wish it was that simple

hardy viper
stiff locust
night pagoda
hardy viper
night pagoda
#

prolly would require to modify all vanilla jokers accordingly tho 💀

tall wharf
night pagoda
#

would worth it at the end (100+ mods with wild rank enhancement)

graceful magnet
#

hey where do I go to ask about modding/ game crash errors?

tall wharf
#

i am using recursion so it supports the "next" card attribute

stiff locust
#
  1. get all highlighted cards
  2. sort them by rank
  3. start from the left, if next card is +1 rank, keep going, else end, no straight
  4. if next card is same suit or wildcard, keep going for suit check, else end, no straight flush
  5. if reach end of list and straight check didn't fail, it's a straight, if suit check didn't fail, straight flush

is it not this easy?

hardy viper
#

cards aren't guaranteed to be in ascending order for straights

sonic cedar
#

where would i put my prints for this function?

stiff locust
#

well that's why you sort them in ascending order

frosty dock
tall wharf
#

my algorithm assumed that i have already sorted the card which is the case

hardy viper
#

yeah idk better to sort the ids

stiff locust
#

oh, right, i didn't account for shortcut

frosty dock
#

arbitrary ranks can have any kind of structure connecting them

tall wharf
#

btw don't forget to account for shortcut joker

frosty dock
#

and shortcut exists

hardy viper
#

just copy steamodded get_straight and modify it imo

tall wharf
#

i was doing recursion so it supports the "next" card property

stiff locust
#

if smods find card shortcut and next rank is +2 then straight continues
else if next rank is +1 then straight continues
else straight ends

#

there we go

frosty dock
stiff locust
#

oh I got so distracted i was here to ask about adding permanent +mult to playing cards

#

is that a thing

frosty dock
#

-# iirc the current implementation doesn't handle split paths correctly for relatively small straights in larger hands, so I do need to rework that one even if not for quantum ranks I think

tall wharf
#

how would you do straight with x cards in a row

#

like not just 5

#

but like

#

12

cedar stream
#

add a for loop?

tall wharf
#

and then double that with two straight flushes from different suits

stiff locust
#

what

#

okay well that second part is confusing

#

but it shouldn't be that hard

tall wharf
#

this was the broken code

#

but the concept is there

stiff locust
#

what the actual shit

#

this is some cryptid nonsense

frosty dock
#

alright so straights of any length

stiff locust
#

quantum thirteen straight flush

tall wharf
#

Quadruple

#

AKA The Deck™️

stiff locust
#

oh

sonic cedar
stiff locust
# tall wharf AKA The Deck™️

cryptid spoilers (you babies)
||The Entire Fucking Deck is a secret cryptid hand that contains every card in a 52 card deck||
so it's just that

tall wharf
#

yes i know

#

i am not original

#

however

stiff locust
#

so if you add straight wrapping to this

tall wharf
#

programmatically implementing these straight flushes

stiff locust
#

infinity straight when

tall wharf
#

or straight for that matter

#

has been a bit problematic

stiff locust
#

i have no idea

#

havent done it yet

nocturne estuary
#

ok so I am having a weird issue where if I redeem a voucher while in the round, the buttons below the cards don't come back up...

tall wharf
#

time for a new approach

#

mayvbe

stiff locust
#

so does anyone know anything about adding permanent +mult to playing cards

tall wharf
tall wharf
#

uh

#

look at runner code

#

in example

stiff locust
#

that has

#

nothing to do with anything i just said

#

runner is a scaling joker that scales its own chips

tall wharf
#

oh

#

playing card

#

ok

stiff locust
#

I want the hiker effect but it adds mult instead of chips

#

but the value you increase for that is called perma_bonus so idk if there's an equivalent for mult

tall wharf
#

i'd start with makig custom card ability

elder vapor
#

there isn't but you can easily add your own permanent versions of stuff

tall wharf
#

liek playing card ability

elder vapor
#

thats what i did

stiff locust
violet void
#

you would need to add it after perma_bonus

elder vapor
#

its usually a few lovely patches

stiff locust
#

this is a lot for 1 showdown blind effect of 1 fusion but excessive is my middle name so i'm fine with it

elder vapor
stiff locust
# elder vapor

do you need to do anything else to make these functional

#

or do they just work

elder vapor
#

yeah you need to go to the respective Card:get functions to make them work

stiff locust
#

i don't know what that means

elder vapor
#

since you're doing mult you want to target this function

violet void
#

which then you call here

dreamy thunder
#

how can i make a joker have 2 luck factors? like "if 1 in 100 do this but if it hits 1 in 1000 do this"?

elder vapor
#

so using a pattern function, replace return self.ability.mult with return self.ability.mult + (self.ability.perma_mult or 0)

dreamy thunder
stiff locust
#

yeah i'm kinda stupid ii think that's too much

#

i can just make it give 1.25x mult when a card scores and not scale

dreamy thunder
#

nice

violet void
#

what does the third do

dreamy thunder
#

some unbalanced shit

stiff locust
#

why does it say print

violet void
dreamy thunder
sonic cedar
#

what else would it do

stiff locust
#

this is an effect that would trigger after you start a speciifc showdown blind with a specific fusion (that being the chicot fusion)
if it were a regular joker fusion and not a legendary one i'd consider it

violet void
stiff locust
#

even if you get the joker it's a 1 in 5 chance you get the showdown blind in question

violet void
#

showdown blind? thats a new term

dreamy thunder
#

nothing interesting

#

but i might tweak the numbers

tall wharf
stiff locust
weary jungle
violet void
#

oh I see

stiff locust
#

is that not the common name for them

dreamy thunder
dreamy thunder
weary jungle
stiff locust
#

the wiki says finisher blinds

violet void
#

what about boss blind

#

thats even shorter

stiff locust
#

.

#

the last blind of every ante is a boss blind

frosty dock
#

there's no "official" user-facing terminology

violet void
#

ah right

frosty dock
#

showdown is what the game code uses

violet void
#

true true

dreamy thunder
weary jungle
#

idk

dreamy thunder
#

ima figure somthing out

weary jungle
#

check cryptid

stiff locust
#

.

dreamy thunder
#

oh yeah

stiff locust
#

just make it win the game

crisp coral
tall wharf
#

is there a better way to debug

weary jungle
#

how do you make a consumable cound as any planet card for observatory

crisp coral
#

them normies use finisher

tall wharf
#

lmfao

#

other than 999 print calls

weary jungle
#

i use finisher 😢

crisp coral
tall wharf
#

😭

stiff locust
#

five hundred debug prints

tall wharf
#

why am i not debugging in normal lua environment to see if it would even work

weary jungle
#

print call every frame

tall wharf
#

why am i stupid

tall wharf
#

like

stiff locust
tall wharf
#

instead of desinging the algorithm in the game

sonic cedar
stiff locust
#

and that's a lot of work

tall wharf
#

like

#

algorithm design

#

why do i not do it in a normal lua file

dreamy thunder
#

watching some op mult going on is better

rough furnace
stiff locust
weary jungle
#

i love print statement

dreamy thunder
tall wharf
#

hello someone said op

#

maybe not this

weary jungle
#

way too much

#

theres a reason why cryptid gives only like ^3

runic pecan
#

What is the keyword in {C:} for grey text in loc_txt.text

tall wharf
#

inactive

weary jungle
#

inactive

stiff locust
#

inactive

sonic cedar
#

inactive

weary jungle
#

active

runic pecan
#

Thank you all

stiff locust
glass scaffold
tall wharf
#

we love some custom colours (does Steamodded have custom color hook because i missed it)

glass scaffold
crisp coral
#

you can just hook by yourself tho

glass scaffold
#

btw can jokers just not share the same atlas?

weary jungle
weary jungle
glass scaffold
dreamy thunder
gilded narwhal
#

hey gang ik there's a variable for money per hand but is there a variable for total money from hands? I want hand money to be fixed at 4 for an effect

weary jungle
weary jungle
glass scaffold
weary jungle
glass scaffold
#

I have both atlases going for the same texture

#

And they're correctly set.

dreamy thunder
weary jungle
#

^4.011

#

easy

crisp coral
#

guh i haven't opened balatro since 4 commits ago

#

i don't test stuff

weary jungle
#

uh oh

dreamy thunder
#

now gotta check cryptid

weary jungle
#

another rune DOWN!!!

#

7 to go

dark kite
#

chat am i supid

runic pecan
#

I want all last three lines to be grey.
Would this work or I have to add the modifier in each of the strings?

dreamy thunder
dark kite
#

okay yeah but consider

#
        name = "Prideful Joker",
        text = {
            "Played cards with",
            "{C:stars}#2#{} suit give",
            "{C:mult}+#1#{} Mult when scored",
        }
    },```
#

this is correct is it not

weary jungle
#

check your loc_vars

glass scaffold
#

Ah. You cannot use the same atlas and textures for 2 Jokers.

runic pecan
glass scaffold
weary jungle
weary jungle
glass scaffold
#

Fun fact: the bird is actually the Australasian Swamphen.

tall wharf
#

i love rhythm game

glass scaffold
#

-# and magpies are birds with confirmed kills.

crisp coral
runic pecan
weary jungle
#

where did i get g from

crisp coral
tall wharf
#

i might improve the art later rn i just want the straight algorithm working

runic pecan
#

Do I need to put them in separated brakets?
Or would this do?
(My brain automatically applied html logic, for some reason)

night pagoda
#

use double brackets whenever you want to use simple brackets

#

"this joker doesn't work"

viscid bough
#

greatest joker of all time 🔥🔥🔥

runic pecan
#

{C:inactive,s:0.6} or {C:inactive}{s:0.6}

stiff locust
night pagoda
bold sleet
#

Is there a way to do this but with the funny spinny animation thing?

nocturne estuary
#

is there some way to force the Bottom button row to reappear? (the play/discard button, etc)

dreamy thunder
#

yeah i aint understanding anything from cryptid

bold sleet
#

oh?

#

That's juice_up?

weary jungle
#

it does the wiggly thing

#

try :juice_up(0.8, 0.8)

#

after

#

so set ability, then juice up

bold sleet
#

ok

#

That ain't the spinning animation I am looking for.

#

I am looking for the one used when enhancing cards and stuff.

tepid crow
#

he means for e.g. sigil or ouija

#

where it shows the back of the card

bold sleet
#

ye

weary jungle
#

oh

#

:flip()

bold sleet
#

ah

#

thanks

weary jungle
#

then flip again afterwards iirc

tepid crow
#

and make sure to :flip() em back afterwards haha

weary jungle
#

we are so in sink

tepid crow
bold sleet
#

lmao

#

flip flop

weary jungle
bold sleet
#

now, how do I delay the second flip so it doesn't look weird as heck?

#

... or delay stuff in general.

hardy viper
#

event manager stuff

#

steamodded documents it on wiki

weary jungle
#

delay()?

hardy viper
hardy viper
bold sleet
#

Me when my stupidness kicks in

weary jungle
#

i saw it somewhere

wintry solar
#

Delay only delays events

#

If your code isn’t in an event it’ll evaluate straight away

dreamy thunder
#

gonna settle down with this

hardy viper
#

with my luck it'll go extinct immediately

weary jungle
dreamy thunder
#

it didnt show up

dreamy thunder
#

i mean i can just make it x4011

dreamy thunder
hardy viper
stiff locust
#

anyome know if there's a way to make a joker immune to having its values changed by things like cryptid oil lamp

rough furnace
#

i feel like theres a config otion you can set to tell cryptid to leave you alone

stiff locust
#

that'd be nice

#

but i'm not sure where i'd find it

glass scaffold
#

Jen's Almanac does this for Pokermon.

stiff locust
#

what

#

jen moment

rough furnace
#

generally my thought it to not break other mods with my mod

#

i'd probably ask in the cryptid thread or it's dev channel

#

probably morep eople who would know there

glass scaffold
#

But yes, ask the official dev.

stiff locust
#

classic jen moment I guess, christ

glass scaffold
rough furnace
#

time to lovely patch jen's in my mod

viscid bough
glass scaffold
#

Yep.

stiff locust
#

i guess i should ask in cryptid yeah

viscid bough
stiff locust
#

you can grab it fron the balatro code i think

#

resources/fonts

glass scaffold
tepid crow
rough furnace
#

I mena this could just be conflicts then with steamodded

glass scaffold
rough furnace
#

but this is code

glass scaffold
#

It'll tell you to either remove Jen's Almanac or the blacklisted mod.

tepid crow
#

yeah

rough furnace
#

ok

wintry solar
#

They don’t conflict though right? Isn’t it just jens personal choice that you shouldn’t use those mods?

stiff locust
#

fusionjokers/infinite fusion i could see actually conflicting

#

the rest, probably personal choice

#

cryptid discord scares me i ended up going and looking around and coming back

stiff locust
#

oh this is super nice

#

thanks

gilded narwhal
#

IM SO GOOD AT PROGRAMMING

#

sorry

#

that took like 30 minutes

viscid bough
cyan dune
#

Ah, I never even considered the implication of having that many hands on the first few antes

weak brook
#

@rough furnace hey i've got a lot of reports of awful glitches happening with our matador-like joker retriggering horribly, do you think you could add matador to ModdedVanilla example so I can see how to properly do the context filtering on it

#

even when i mimicked vanilla it retriggers like 5 times

gilded narwhal
rough furnace
viscid bough
weak brook
#

originally it looked like this which caused an infinite loop of upgrades due to it not returning

#

then i switched it to this

#

but it still retriggers way too many times

rough furnace
#

I feel like that context check is too narrow

weak brook
#

yeah

#

just not sure what im missing

#

i tried printing context to see if there were any to add but didnt really get too far with that

rough furnace
#

so when do you want this to trigger

weak brook
#

just like matador, it triggers when boss blind ability is triggered. once

#

but its a scaling joker that upgrades chips

rough furnace
#

oh wait I was thinking luchador

pine thunder
#

does anyone know how to make the upgrade message on a scaling joker display on the joker itself? i feel like this should work, but the "upgrade" message still appears above the cards rather than on the joker

    if context.cardarea == G.play and context.individual and not context.blueprint then
      if context.other_card.ability.effect == "Lucky Card" and not context.other_card.lucky_trigger then
        card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.chips_mod
        return { message = localize('k_upgrade_ex'), card = card, colour = G.C.Chips}
      end
    end

    if context.joker_main and context.cardarea == G.jokers then
      if card.ability.extra.chips > 0 then
        return 
        {
          chip_mod = card.ability.extra.chips,
          message = localize { type = 'variable', key = 'a_chips', vars = { card.ability.extra.chips } }
        }
      end
    end
  end```
rough furnace
weak brook
#

shit you're right

#

how did i miss that

#

think me and myst both missed that pretty sure they added the context filtering, might be misremembering though

rough furnace
#

looks like you still need the G.GAME.blind.triggered as well

rough furnace
weak brook
#

yeah i kept that there

pine thunder
#

card = card is already there

#

you can ignore the second half thats just about the final message when it scores that works fine

rough furnace
#

oh I was looing at the wrong return

#

just a sec

pine thunder
#

card = card and card = other card do the same thing which feels... wrong

weak brook
#

cause that doesnt account for all the other stuff

#

matador has two instances of the upgrade in the code

#

one for that context

rough furnace
weak brook
#

and one for else

rough furnace
#

it seems like its check is with context.before true

pine thunder
rough furnace
#

what does your return look like now?

pine thunder
#

return { message = localize('k_upgrade_ex'), juice_card = card, colour = G.C.Chips}

rough furnace
#

hmmm

pine thunder
#

the color isnt working either but who cares

rough furnace
#

I wonder if this is a new calc bug or not

#

@wintry solar is this a bug or do we just not know how to use calc?

weak brook
# weak brook and one for else

christ almighty we need a blind ability triggered context it seems like if i wanna make this work i have to actually filter out literally every context thats listed before the else in the code

sonic cedar
#

what am i LOOKING AT 😭

pine thunder
rough furnace
#

oh man theres another context for this

#

we really need new calc docs

pine thunder
#

the color still doesnt work but i can live with that i guess

sonic cedar
rough furnace
#

eval is a function

sonic cedar
#

eval is a function im stupid

#

i literally just set it to one am i foolish

tall wharf
#

i legitimately could not debug because print is going to crash the game

rough furnace
#

how would print crash your game?

tall wharf
#

printing too many times

rough furnace
#

I don't see how it would?

sonic cedar
rough furnace
#

I've printed like multile times per frames for a logn time and it was fine

tall wharf
#

i love modding

rough furnace
#

yikes

sonic cedar
#

i hate modding (i love modding)

rough furnace
tall wharf
dreamy thunder
#

y'all its holy banana time

bold sleet
#

Is there an extended guide on how to actually use this?

dreamy thunder
tall wharf
#

ill update debugplus in case that has something to do with ti

rough furnace
tall wharf
sonic cedar
tall wharf
#
showHUD=true
logLevel="WARN"
ctrlKeybinds=false
debugMode=true
showNewLogs=false
brittle stump
#

I want to make mod that enables negative card modificator as part of game

tall wharf
rough furnace
tall wharf
#

still having problems with that recursive shit i am talking about

brittle stump
#

Like, so i wouldn't need to use debug mod

rough furnace
#

I forgot to properly mark dev versions for the last bit so I can't tell if your on it rn

brittle stump
#

Do you have any advice how to do it

tall wharf
rough furnace
#

okay so thats weird

#

what are you printing?

tall wharf
#

a lot of recursion

#

that's probably why idk

#

nvm

#

i am stupid lmao

#

hold up

rough furnace
#

might be

thick panther
#

in SMODS.Blind, how is boss defined? Is it boss = { min = #, max = # }?

tall wharf
#

lemme limit the depth it prints

rough furnace
#

also if you upgrade DebugPlus you can just do print(table) and it will expand it for you

stiff locust
#

how do you do dump_loc with the new json metadata

tall wharf
#

yup limiting the streak depth fixed that

weary jungle
#

does glitched automatically change things or do you have to do other thins

rough furnace
stiff locust
#

iirc

weary jungle
#

like if i had a consumable with config.extra, do they get changed or do you have to specify that they will be changed

rough furnace
#

I think its autoamtic

frosty dock
rough furnace
#

hows the performance?

#

also aure hjow praticle do you think it is to not call a joker's update every time (for the vanilla ones)

frosty dock
frosty dock
rough furnace
#

I want to make a lazy_update where it will only be called in a few cases instead of every frame and I would want to make some vanilla jokers use it for performance

#

my thought for when it's called is

  • generating hover ui (loc_vars)
  • before calculate
  • before/after add_to_deck (not sure exactly)
  • remove_from_deck
  • I'd have to double check other places
sonic cedar
#

urgghh now it just crashes after the third round blind

cedar stream
#

how does one convert this to the new calc system

calculate = function(self, card, context, effect) if context.cardarea == G.play and not context.repetition and not card.debuff then effect.mult = pseudorandom_i_range(pseudoseed("mtg-squirrel"), 1, card.ability.extra.max) end end

thick panther
#

is there a way to set the boss blind using DebugPlus?

cedar stream
#

you can hit reroll boss blind

#

but there may also be a thing you can do in the console to do it

bold sleet
#

I ask again: how does one make a custom deck? mainly, what the heck do I put in config = {}?

maiden river
thick panther
maiden river
#

no problem

#

it works for cards & the like too

sonic cedar
warped mason
#

What language does Balatro use anyway

maiden river
#

lua

wooden badge
#

lua

sonic cedar
#

lua

warped mason
#

Oh good

#

I can learn two games at once jimbo_spin

viscid bough
#

anyone know how i could make a joker that counts all cards as wildcards?

maiden river
#

just made yet another joker

cedar stream
#

how does psuedorandom work with the new steamodded?

bold sleet
#

idk how this works. Is there a place where I can read more about whatever the heck this is?

sudden dew
#

Probably have to patch in a change to card.lua

nocturne estuary
#

is there a way to prevent the Play Hand/Discard Button row from not coming back up again after more than 1 voucher is redeemed at the same time?

warped mason
#

Now I want to figure out how to do art So I can try my hand at Balatro modding

thick panther
#

When making the SMODS.Atlas for SMODS.DeckSkin is the px and py the same as other cards (71x95)?

warped mason
cedar stream
#

if you use krita i have a template for the card size made

warped mason
#

is it all just pixel art?

thick panther
#

Does SMODS.DeckSkin want the skin images to be just one suit each (4 atlases total) or can they all be in one image?

dull saddle
wintry solar
#

I’ll take a look at the message location stuff

cedar stream
runic pecan
#

Where can I look up all the sound I can play with play_sound function?

#

nvm found them

late kindle
#

hey there, would it be possible to make a joker discard cards in hand, similar to how the hook does?

cedar stream
#

yes, but i dont know how it works, and expecially in new calc

late kindle
#

yeh i’m trying to wrap my brain around how the hook works rn

cedar stream
#

in the mod im helping work on, there is a card that discards your entire hand, but i have not tested if it works in better calc, so let me check on that

late kindle
#

sorry i’m brand new to modding, what’s better calc?

cedar stream
#

the new system for steamodded that was recently added

late kindle
#

ah okay ty

cedar stream
#

so it apears that it is not working with better calc, so im going to try and work on it

viscid bough
#

Idk if i used patching right or not but this doesnt seem to work.

#

Do i need to reference patches in the json file or smth? or put it in a specific folder

frosty dock
#

pattern patches can be tricky with multiline iirc

#

you don't need a lovely patch for this, we have quantum enhancements

viscid bough
#

will that wrok for what im attempting? i want my joker to make all cards work as wilds

frosty dock
#

you can just put this in your joker's calculate

if context.check_enhancement then return { m_wild = true } end
frosty dock
viscid bough
#

i see. Thanks! had no idea this was a thing

cedar stream
#

@frosty dock so do you know how pseudorandom works with ne calc? or where to find any refrence to work off of

frosty dock
#

pseudorandom isn't affected by new calc

cedar stream
#

calculate = function(self, card, context, effect) if context.cardarea == G.play and context.main_scoring then return {pseudorandom_i_range(pseudoseed("mtg-squirrel"), 1, card.ability.extra.max)} end end

#

as an enhancment

frosty dock
#

you're just returning a table with your random number at index 1

#

if you want it to be evaluated as an effect, you need to tell it what effect it is

#

mult? chips? dollars? hand levels? how would I know

cedar stream
#

object_type = "Enhancement", key = "squirrel", atlas = "mtg_atlas", pos = { x = 0, y = 6 }, config = { extra = {max = 6}}, overrides_base_rank = true, weight = 0, in_pool = function() return false end, loc_vars = function(self, info_queue, card) return { vars = { card.ability.extra.max} } end, calculate = function(self, card, context, effect) if context.cardarea == G.play and context.main_scoring then return {pseudorandom_i_range(pseudoseed("mtg-squirrel"), 1, card.ability.extra.max)} end end
full code

frosty dock
#

ion need the full code

#

I just need you to make your calculate function tell the game what it's doing

cedar stream
#

the effect is trying to do a random +mult on a D6 (+1d6 mult)

frosty dock
#

you're not telling the effect to be +mult

#

your effect's key currently is the number 1

cedar stream
#

oh, so its missing the effect

frosty dock
#

return { mult = yadayadayada }

cedar stream
#

also how do i change the suit of a card in a similar way to something like the sun or moon

#

was that changed?

sudden dew
cedar stream
stiff locust
#

is there anywhere internally that stores boss blinds you've defeated this run

#

i wasn't paying attention and my joker did an oopsie but i need to know which boss it was on

gilded narwhal
#

Check obsidian orb from cryptid

#

Pretty sure it uses something like that

#

Hey what's the context for playing a hand that I can use to activate like the second you push the button? Because I'm trying to make a joker that makes it so hands have a chance to use 2 hands instead of 1, but most of the contexts I normally use for jokers happen after ease_hands_played(-1).

stiff locust
#

cool thanks

stiff locust
#

triggers before the hand scores

gilded narwhal
#

Lemme try

sand oasis
#

is there an easy way to determine that you're on a boss blind?

stiff locust
cloud ore
#

hey there! is there an easy way to add collab face cards to the game or is there a public template that you can use to add em? thanks

sand oasis
brittle stump
#

Hi do you know mod code templates

#

I want to test something

thick panther
#

Balatro be looking a little sus

thick panther
cloud ore
#

yeah the collab skins

sand oasis
thick panther
thick panther
# cloud ore yeah the collab skins

This is what I did for mine. This is for all Spade cards. You can remove which ones you dont need in the ranks section:

-- Spades
SMODS.DeckSkin{
    key = 'skin_key',
    suit = 'Spades', --Spades, Hearts, Clubs, Diamonds
    ranks = { '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace' },
    lc_atlas = 'SkinAtlas',
    loc_txt = 'Skin Name Here'
}
sand oasis
brittle stump
#

I just want to make mod so you could find negatives modification in playing card booster packs

#

Given steammodded gave this thing functionality

#

I can't just leave it untouched, u know

cloud ore
stiff locust
thick panther
sand oasis
brittle stump
#

Like i don't want to make jokers or anything like that, i just want negative cards be available without debug

stiff locust
#

initalize with false

sand oasis
#

sick

#

thank you so much

thick panther
#

How would I replace the Ace of Spades on the title screen with a different card?

faint yacht
#

Talisman's lovely.toml patch has an influence on the card, you can check there?

brittle stump
#

So yeah, can anyone help me

#

Expecially those who have expirence with it

thick panther
faint yacht
#

Haven't seen a Lua example, so no.

violet void
#

do you guys know any mod that adds custom seals

thick panther
#

I think cryptid does

violet void
#

I checked, it doesn't

faint yacht
#

Green Seal, Code cards.

violet void
stiff locust
#

azure seal too

wintry solar
#

Cryptid just has a stupid file structure

#

They’re in there somewhere

faint yacht
#

Cryptid\Items\CodeCards.lua, search for local green_seal = {.

thick panther
#

for making a lovely patch, do I just create a lovely.toml file or do I need to do something in my main lua file for it to work?

faint yacht
#

Lovely checks for any .toml files.

thick panther
#

I see Talisman has a [manifest] header with dump_lua = true. What does that part do?

faint yacht
#

The lovely folder in Mods contains a dump folder with the changes to the .lua done by patches from what I can see.

#

Makes it easier to see if a given patch was applied, maybe? I just kept the dump_lua part as-is.

vagrant cedar
#

Is there a way to make hand size automatically equal your deck size? Or should I just make the handsize a massive number

#

I want a Joker called "52 card pickup" that just makes you draw every card in your deck

faint yacht
#

#G.playing_cards is the number of all cards.

thick panther
faint yacht
#

Effarcire, to be specific.

thick panther
#

would I be able to change the replace_card on the title screen to a modded suit with a lovely patch? it seems to crash when I do so.

vagrant cedar
#

What would I need to change here?

faint yacht
sonic cedar
#

where would i start in terms of creating a custom ability? gonna try a different approach with this joker's code

frosty dock
#

it can find invalid straights and even invalidate previously valid ones in some cases

tall wharf
frosty dock
#

yes

mortal arrow
#

hi guys !
i was wondering, how do you create a balatro mod ?

tall wharf
#

🔥

tall wharf
#

i am going to give up on this

frosty dock
#

what i have currently should work for arbitrary split paths on single rank cards

violet void
#

I've tried making it like cryptid but the localization doesnt work (it keeps showing "test")

frosty dock
#

try removing the loc_txt

violet void
#

that was in the example seal file

#

it was outdated I take it

frosty dock
#

you use either a loc_txt or a localization file

#

not both

violet void
#

mmm I see

#

ty

tall wharf
dreamy thunder
#

i hate everything about pools

tall wharf
#

can i like borrow yuor'e code or something i am so tired

frosty dock
#

esp given checking every subset is exponential w length

#

I think I'm holding off on quantum ranks for now

tall wharf
#

honestly not a big fan of math 😭

#

i am too stupid for this shit

violet void
frosty dock
#

i don't mind too much, I'm currently taking graph theory anyways

tall wharf
#

😭

#

i study com sci and i don't know shit

frosty dock
#

tbf the course I'm taking doesn't focus on the algorithms that much

edgy reef
#

I took the required math classes and dodged everything else

tall wharf
#

im sorry for yoinking the code i want to do something more fun than coding straight algorithm for 3 days straight

edgy reef
#

I barely remember physics and that’s honestly a good thing

#

😭

tall wharf
#

i tried 3 times

#

and it's all a giant mess

nocturne garnet
minor magnet
#

context.other_card.lucky_trigger is not working, is it the right variable for seeing if a lucky card triggered?

#

this is my code

#

it doesnt give money like, at all

#

even if it should

vagrant cedar
vagrant cedar
#

I just reworded that

nocturne estuary
#

does anyone know why the play/discard buttons don't come back up after redeeming more than 1 voucher at the same time?
is there some function to force it to show up again?

thick panther
#

if I have global vars defined in fileA.lua and I use SMODS.load_file on it in fileB.lua, would I be able to access those vars just by calling them?

minor magnet
vagrant cedar
sudden dew
#

Does smods have an API for adding global values for a run that should be saved when exiting the game?

cerulean rose
#

effarcire

#

@wintry solar how do i add info_queue stuff to decks in galdur?

frosty dock
#

or any cardarea or the ability table of a card in a cardarea

sudden dew
#

Ahh gotcha, i put it in G and not G.GAME

#

Thank you

wintry solar
tall wharf
#

mr john smods can we have a mod that just adds poker hands with more than 5 cards as like a reusable part for many mods

#

or does that already exist and i am just slow

frosty dock
#

i don't see why we couldn't have that, afaik there's no uniform system in place

#

cryptid has ascended hands, which wouldn't want to have anything to do with other hands with more cards

cerulean rose
#

could fuck up cryptid's ascended hands

tall wharf
#

maybe also for additional hand selection

gilded narwhal
#

Anything immediately jump out as wrong here? (hands_per_hand is in a patch)

nova scroll
#

disregard my message, person i'm working with figured it out

#

it's literally just {C:spades}

cerulean rose
nocturne estuary
cerulean rose
#

swear it wasn't working before

#

weird

sudden dew
nocturne estuary
# sudden dew What do you mean by more than one voucher at the same time?

if I redeem more than one voucher back to back using this code:

function redeem_voucher(voucher)
    G.E_MANAGER:add_event(Event({func = function()
        local voucher = create_card('Voucher', nil, false, nil, nil, nil, voucher, nil)
        voucher.cost = 0
        G.FUNCS.use_card({
            config = {
                ref_table = voucher
            }
        }, true)
        return true
    end
    }))
end

it will put the game into a state where the play/discard buttons are gone and the only thing I can do is select cards or do some other stuff

gilded narwhal
#

Okay guys for some reason this doesn't activate on the first hand of round

violet void
#

Someone is trying to download my mod but they keep getting this crash, on the other hand it's not happening to me

How do I troubleshoot this?

sudden dew
nocturne estuary
#

the code I sent is the voucher redeem code but I also have the other code pieces for picking the 5 random ones.
I can send that code too if needed

sudden dew
#

Is there a reason you're not calling `voucher:redeem()'?

thick panther
#

Does the wording make sense or can it be worded better? The X2 mult does not stack with the X3 mult.

nocturne estuary
sudden dew
#

Aren't you creating it with local voucher = create_card('Voucher', nil, false, nil, nil, nil, voucher, nil)?

nocturne estuary
#

ok so I tried your suggestion

#

it does redeem them correctly

#

but now there are copies of them on the screen

#

also is there a way to change their position?

sudden dew
#

What argument is getting passed in to function redeem_voucher(voucher)?

cerulean rose
#

how to get whether a consumable is owned or still in the shop?

wintry solar
#

do voucher:redeem() iirc

nocturne estuary
# sudden dew What argument is getting passed in to `function redeem_voucher(voucher)`?

a string of the vouchers name, stored in these two tables:

local base_vouchers = {
    'v_overstock_norm',
    'v_clearance_sale',
    'v_hone',
    'v_reroll_surplus',
    'v_crystal_ball',
    'v_telescope',
    'v_grabber',
    'v_wasteful',
    'v_tarot_merchant',
    'v_planet_merchant',
    'v_seed_money',
    'v_blank',
    'v_magic_trick',
    'v_hieroglyph',
    'v_directors_cut',
    'v_paint_brush'
}

local advanced_vouchers = {
    'v_overstock_plus',
    'v_liquidation',
    'v_glow_up',
    'v_reroll_glut',
    'v_omen_globe',
    'v_observatory',
    'v_nacho_tong',
    'v_recyclomancy',
    'v_tarot_tycoon',
    'v_planet_tycoon',
    'v_money_tree',
    'v_antimatter',
    'v_illusion',
    'v_petroglyph',
    'v_retcon',
    'v_palette'
}
sudden dew
wintry swallow
nocturne estuary
nocturne estuary
wintry swallow
#

oh vouchers are legally cards

mellow stirrup
nocturne estuary
wintry swallow
wintry swallow
mellow stirrup
#

thanks, I worked hard on my jokers

sudden dew
# nocturne estuary and how would I change where the voucher appears?

That's a more complicated question, because the game has different logic for putting cards in different places on the screen. What I would do if I were you is think of an effect in the game that puts a card where you want your vouchers to go, and then look at the code for that effect and copy whatever is moving the card to that place

wintry swallow
#

if i were implementing this i'd do an inordinate amount of bullshit for something nobody notices like making the joker's texture have its sell value on it

mellow stirrup
#

here's a not-yet-implemented joker I'm quite proud of (Foolproof)

nocturne estuary
mellow stirrup
#

another one I'm very proud of

cerulean rose
wintry swallow
cerulean rose
#

so i'm trying to account for the cost of buying the card in my can_use functions

wintry swallow
#

what's this one supposed to do

mellow stirrup
wintry swallow
#

oh wow

mellow stirrup
#

it's intended to be an emergency escape button

wintry swallow
#

kinda like mr bones but more impactful

mellow stirrup
#

pretty much yeah

wintry swallow
#

hmm

#

let me think, i think the single thing i'm proudest of in the mod i'm making is the bugfix i implemented for making madness (and other boss jokers) activate on the first two blinds on an ante even if they are bosses, like this

mellow stirrup
#

Foolproof's original idea isn't that great in all honesty so I'm probably going to do something else, but the original concept was that it stopped jokers from showing up while you had it and granted a x7 multiplier (minus 1x for every joker you had but it)

fleet mountain
mellow stirrup
fleet mountain
#

Is there any tutorial on how to make mods?

wintry swallow
wintry swallow
fleet mountain
#

i know its like simplified C#

mellow stirrup
#

I have a couple of joker arts I need to add code to so here's the others why not

wintry swallow
#

but anyway

wintry swallow
fleet mountain
#

My problem is i have 2 of 3 skills perfectly fine

#

pixel art and concepts

tall wharf
mellow stirrup
tall wharf
#

I'm crying

wintry swallow
#

in exchange, grabber/nacho tong/wasteful/recyclomancy are all banned

frosty dock
# rough furnace hows the performance?

removed the quantum rank jank because it wasn't working properly and would have to be a lot more inefficient. it looks to be about as fast as the previous implementation but slower with shortcut. Seems to be noticeable only when evaluating straights on larger amounts of cards, 28 cards gave me around 4x compared to previous, with 5 cards there's practically no difference

tall wharf
#

I'm going to make my own challenge

wintry swallow
#

i will probably be reusing this proxy object system a bunch because it's very useful for hooking values

wintry swallow
#

i just have a loop that loads a bunch of files and evals them, passing the result to SMODS.Challenge

#

like such:

-- Challenge loading
local challenges = {
    'test',
    'stencil_joker_1',
    'escort_mission',
    'the_lion',
    'power_scaling',
    'bleed',
    'low_selects',
    'eternal_egg_1',
    'eternal_egg_2',
    'low_hands_1',
    'low_hands_2',
    'grand_master',
    'bullshit',
    'power_scaling_2',
}

for _,i in pairs(challenges) do
    -- use a metatable here to swap out the challenge custom rules to provide a description if locked?
    local ch = SMODS.load_file('challenges/'..i..'.lua')()
    ch.key = i
    if not ch.deck then
        ch.deck = {}
    end
    ch.deck.type = 'Challenge Deck'

    if not ch.unlocked then
        ch.unlocked = function(self) return true end
    end
    if ch.debug and not NSC_DEBUG_MODE then goto continue end

    SMODS.Challenge(ch)
    ::continue::
end
fleet mountain
#

what if there was a boss blind called the floor where you have to score less than the actual blind or you lose

wintry swallow
#

ignore the comment about reworking the vanilla unlock system

#

that's on the roadmap, but i haven't done it quite yet

#

i am very confident i can pull it off though

tall wharf
#

i will be adding 30 stickers

cerulean rose
fleet mountain
cerulean rose
#

strange pencil

fleet mountain
#

sweet

#

I wanna do like

cerulean rose
#

didnt work out tho cus of balatro's ante skip glitch

wintry swallow
#

vanilla challenge definitions do not support adding rental or perishable stickers to jokers, nor do they support consumable editions, i have written lovely patches to add support for those things because i use them

fleet mountain
#

Jokers and stuff for mods but all i can really do is art and stuff

cerulean rose
#

if you ran out of cards it would just increment your ante forever

tall wharf
#

"cards not played previously this ante are debuffed"

wintry swallow
#

it is literally a one line patch though

[manifest]
version = "1.0.0"
priority = 0

# Make consumable editions appear in game
# The game technically already has support for this, but it's incomplete
# (they show up in the challenge select menu, but when entering a run they're default edition)
# Game#start_run
[[patches]]
[patches.pattern]
target = "game.lua"
pattern = "add_joker(v.id, nil, k ~= 1)"
position = "at"
payload = '''
add_joker(v.id, v.edition, k ~= 1)
'''
match_indent = true
tall wharf
#

must play 7 cards

wintry swallow
#

adding custom challenge modifiers also kinda sucks but i've got it down

#

(custom rules like "blinds don't give reward money")

#

especially if your rules want more than one locvar

cerulean rose
wintry swallow
#

that is in the base game yes, i was giving it as an example of what i'm talking about

cerulean rose
wintry swallow
#

my modifiers look like this

gilded narwhal
wintry swallow
#

internally they look like this

vagrant cedar
wintry swallow
#

that has the dump of the game's code with lovely patches applied so line numbers will be right

#

'attempt to compare number with nil' sounds like you should be returning a value someplace, but aren't

gilded narwhal
#

it's this line right here

if pseudorandom('troubadour') < G.GAME.probabilities.normal/4 and G.GAME.current_round.hands_remaining > 2 then

cerulean rose
#

is there a good way to find what cardarea a card is in

gilded narwhal
#

maybe current_round.hands_remaining is nil for some reason?

dreamy thunder
#

im finally out of ideas

wintry swallow
#

wait why are you using pseudorandom('troubadour')

#

are you trying to reimplement troubadour

#

oh

#

also

#

it's hands_left

#

not hands_remaining

gilded narwhal
wintry swallow
#

i use this variable here

#

hands_remaining does not exist therefore it's nil, the right variable is hands_left

gilded narwhal
#

Weird, it worked when I had it earlier

wintry swallow
#

it should never have worked

gilded narwhal
#

I mean

#

It did 😭

wintry swallow
#

the jimbo demons haunting the codebase

gilded narwhal
#

true...

#

Okay yeah that fixed it

#

ALSO

#

For some reason it's not proccing on the first hand of round even when the probability is 100%

wintry swallow
#

talking about pseudorandom has given me an idea for a challenge mod

#

"All probability-based effects are guaranteed to occur"

#

which would majorly buff eg bloodstone etc but it would also include things like michael/cavendish's chance to break

gilded narwhal
gilded narwhal
#

That would nullify any negative effect

wintry swallow
#

that gives me an interesting idea

#

make it an econ challenge

wintry solar
#

what is hands_per_hand

wintry swallow
#

"You lose 0.1x mult for every $20"

gilded narwhal
wintry swallow
#

so this has a 1 in 4 chance of using 2 hands to play one hand

#

if you have 3 or more hands remaining anyway

gilded narwhal
#

Yeah

#

It would be kinda bs for you to lose when you have 2 hands and troubador rolls into using 2 hands

sand oasis
#

I'm wracking my brains trying to understand why this doesn't work - it's modeled off the logic of The Idol and the Walkie Talkie and i can't nail it down

#

certainly not a spelling issue i hope but i'm guessing there's part of the syntax i don't actually understand so I'm not using it correctly

wintry swallow
#

what do you mean doesn't work

sand oasis
#

it doesn't provide Xmult and the message doesn't show up when the conditions are met

wintry solar
#

smods version?

sand oasis
#

should be 1.0.0 alpha

wintry swallow
#

which one

#

would bettercalc even break this

#

what does the upper right of your title screen say

wintry solar
#

no but I dont remember what the key should be in old calc

frosty dock
sand oasis
#

1.0.0~Alpha-1220a-STEAMODDED

wintry swallow
#

1220 is very out of date huh

#

for reference the latest version before bettercalc is 1303a

wintry solar
#

1304a*

frosty dock
#

1304a*

sand oasis
#

wow that's weird

wintry swallow
#

wasn't 1304 literally the bettercalc patch

wintry solar
#

no

#

1306 was better calc