#💻・modding-dev

1 messages · Page 217 of 1

formal parrot
#

Nah thats vanilla friendly

#

I wanna make it good without frying my cpu

spring lantern
#

unlucky

formal parrot
#

X101 mult is crazy tho

#

Like i can only use this now and i’ll clear LMFAO

#

Anyways thanks guys i’ll tune it down a little

#

Love yall

spring lantern
sacred lily
#

how do i solve this

long sun
#

getting this error, do you know why?

#

the line:

card_eval_status_text(context.blueprint_card or card, "extra", nil, nil, nil, {
          message = localize{ type='variable', key='a_xmult', vars={number_format(to_big(card.ability.extra.current_xmult))}}
        })```
plush cove
#

talisman

long sun
#

ah i see

lyric wadi
#

wtf ktaner mod

#

bobm

long sun
#

:)))

lyric wadi
#

might steal

long sun
#

it's not ready yet but it's getting somewhere!

#

ya anyway

#

bit of a dilemma

#

either change what i'm doing with that line, or try to get Talisman to work again

spring lantern
#

help why are the booster pack game states hardcoded for each booster type what if i wanna check for a modded booster pack 😭

#

bro i just wanna add cool music to my booster pack why does this have to be so hard

sacred lily
# sacred lily

how do I correctly upgrade the randomly selected card to a gold card

spring lantern
lyric wadi
#

what is talisman

zealous stirrup
#

Anyone else getting a crash from smods when proccing sixth sense? (Currently happening when I only have lovely & smods loaded, nothing else)

spring lantern
#

big number mod

plush cove
sacred lily
#

thanks

#

I keep getting them confused for some reason

long sun
#

oh uh. suddenly Talisman works again?? wh??

lyric wadi
#

talisman

spring lantern
lyric wadi
#

imagine needing talisman for your mod

plush cove
spring lantern
#

so if to_big doesn't exist it gets replaced with a dummy function that just returns the same value

long sun
#

ah i see ^^

#

thanks!

edgy reef
# edgy reef few seconds, I'll draft mock code
select_music_track = function(self)
    if G.STATE == G.STATES.SMODS_BOOSTER_OPENED and SMODS.OPENED_BOOSTER.config.center.key == "your_booster_key" then
        return 1000 --idk how high this number should be, but 1000 should be enough
    end
end
#

This should work (I think?)

#

You can swap the key check for kind if there's multiple booster this musing should play for (as long as they're all the same).

spring lantern
#

thanks!!

formal parrot
#

Uhhhh

#

i fucking broke it already

edgy reef
#

Actually is booster_obj better?

spring lantern
#

so kind would be like group_key?

edgy reef
#

yea

#

Vanilla uses it to group Arcana packs together as the same type

formal parrot
#

For every face card scored with sock and buskin and pareidolia

#

Just created the perfect synergy for just testing the mod LOL

sacred lily
#

still not sure what's up with this.

spring lantern
formal parrot
#

Add a blueprint and a brainstorm and you’re done

#

Fuck it add red seal kings aswell

gleaming zealot
#

i have 0 progress on my mod cause i’m lazy !

formal parrot
#

Fuck it make them steel

#

How about that

formal parrot
#

Joking

#

I love you

gleaming zealot
gleaming zealot
gleaming zealot
#

only know rank 0 ideas rn

topaz monolith
#

I'm unsure if anyone answered my question, so I replied my question. I looked at other mods and some have this exact functionality, but have to create their own for it to work (Cryptid, Balatro +, etc). Just wondering how I go about to make my own

gleaming zealot
topaz monolith
#

Damn

spring lantern
topaz monolith
#

In that pool, those are all keys for each joker, correct?

sacred lily
#

well what does it want me to do? not call for an enhancement and just... not have one?

spring lantern
#

yeah, these are from my own mod but you can just add any joker you want

orchid thunder
spring lantern
faint plank
#

theres probably a better way of wording this

frosty dock
#

that would be set_ability

sacred lily
#

ok

frosty dock
#

also neither of these have any business being inside a return table

#

neither does the former make sense at all

sacred lily
#

what i'm trying to do is pick a random card and then enhance it, how would i actually do this?

frosty dock
#

pseudorandom_element(context.scoring_hand, pseudoseed('something_unique')):set_ability('m_gold')

#

outside of any return table

sacred lily
#

ah ok

frosty dock
#

but wtf is that usage of or

sacred lily
#

idk

frosty dock
#

stuff is evaluated inside out

#

so 'Flush' or 'Straight Flush' happens first and just evaluates to 'Flush' because that is not nil or false

#

lucky for you, every straight flush contains a flush so it makes absolutely zero difference

sacred lily
#

ok

spring lantern
#

having to speed up the song i made to then slow it down again because for some reason music in balatro uses 0.7 pitch and if i dont do that then the songs desync is just like

frosty dock
#

just don't make your music sync with vanilla jimbo_spin

spring lantern
#

it's a booster pack song tho so it just sounds weird when it desyncs 🥲

long sun
#

hi sorry, quick question

#

this returns true for every card in the deck:
if v.ability.name ~= G.P_CENTERS.c_base then enhancement_tally = enhancement_tally + 1 end

#

what-a-wrong with my code? :(

frosty dock
#

they are never equal

long sun
#

oh kay, thanks :D

#

how do i check if a card isn't "normal", then?

#

like, if it's unenhanced?

frosty dock
#

you're trying to check if a card is enhanced though?

sacred lily
#

how do i make the card move a little bit when it gets enhanced? like the jokers do when giving mult

frosty dock
#

if next(SMODS.get_enhancements(v)) then works for that

long sun
#

ah kay, thanks!!

frosty dock
#

this accounts for quantum enhancements stuff, to check for a base enhancement you can do v.ability.set == 'Enhanced'

topaz monolith
# spring lantern yeah, these are from my own mod but you can just add any joker you want

Sorry for probably the most basic question, could probably look it up somewhere in the wiki, but am too lazy to, but I had a look at your lucky legends mod and saw that you have the Jokers.lua file and a localisation file. How are you able to link the two files together, and also figure out how to link the correct description with the correct joker with no key?

frosty dock
#

localization files are loaded automatically by steamodded

spring lantern
#

yeah

#

thank you steamodded

frosty dock
#

every joker must have a key, that's what you refer to in the localization file including any prefixes

spring lantern
topaz monolith
#

My brain is being fried at the moment with all this information. If I see this correctly, for @spring lantern's lucky legends mod, I read this for the localization file:

j_l6_luckylegends _dex

j_ means its a joker card. Change it to 'p' for booster pack, etc
l6_luckylegends is the mod prefix from the json file
_dex is the key name to link to the joker in the jokers.lua

Am I assuming this correctly?

spring lantern
#

yeah pretty much

#

it goes objectprefix_modprefix_key

rancid otter
#

Do you have 1x and 2x textures?

glad osprey
#

i still require help making my legendary deck render thingy

sacred lily
#

the card always becomes gold at the very beginning of scoring (before it;s even been scored)

#

can it be made to turn gold at the end of scoring, when the message comes up?

long urchin
frosty dock
zealous glen
distant grove
#

Is your folder and images right?

#

Like the names

#

Check the property just to make sure

sacred lily
faint heron
# faint plank theres probably a better way of wording this

In my opinion I think you could slightly rework how this joker works to fit the game more. The way its presented now just makes unnecary rules when in the end, playing spade is the best option. what you could rather do instead is make each part random, ex. "Played cards give the following: {RandomSuit} and {RandomSuit} {RandomifFaceCardorNOt} {RandomMult}. Changes every round". that way it will lower the words and make things more compact, plus it gives it a more uncommon vibe, which is a decent advantage, but at a cost. but the concept overall seems cool

frosty dock
#

if you don't know the syntax well enough, you need to learn it

sacred lily
#

ok

rancid otter
#

local atlas_key uses Format: 'PREFIX_KEY'. So if your steamodded prefix is crew, try changing it to 'crew_atlas'

topaz monolith
#

In the calculate function for a joker, how do I check if there is room in the joker slots? I have a joker that gives a random joker upon reaching a boss blind, but I need to do a quick check if there is enough joker slots to summon one joker.

red flower
#

#G.jokers.cards + G.GAME.joker_buffer < G.jokers.config.card_limit

autumn seal
rigid dagger
#

hey anybody know whats up with this? im trying to add a joker that adds 2 times the value of the first selected card to the mult... shouldn't this work?

faint plank
#

how would i go about adding a card to the deck at then end of a round?

atomic hornet
#

Anyone know how to make a random number generate on blind select / on round end? I know context.setting_blind can be used as part of a joker/card, but I want it to activate everytime a round starts, not only when a certain thing is in play.

red flower
#

the way I do global effects that activate on contexts is just hooking SMODS.calculate_context

#

either that or hook into the same function setting_blind is called in

rapid stag
#

does anyone know if there's a function the game calls at the start of the shop phase? and which if so?

atomic hornet
topaz monolith
#

Bit of a pickle (And with 20 hours of no sleep, powered by coffee), trying to figure out, during calculating, it randomly picks a joker card from a custom pool I have, make it so it appears after selecting the boss blind. Currently, it gives an error when selecting the blind, which is most likely lying in here

red flower
#

what's the error

#

are the things in the random pool cards or are they keys/centers?

topaz monolith
#

They are keys I believe.

red flower
#

then you need to use
SMODS.add_card({key=new_joker})
you don't need emplace or add_to_deck

#

oh and delete copy_card too, keep the pseudorandom_element part

rich roost
#

How do I print to console the names of the jokers that are currently in my hand

#

I've been trying for so long for something so basic 😭

topaz monolith
red flower
red flower
#

add_card

rich roost
#

part of the process I guess

topaz monolith
atomic hornet
#

Now I'm getting this error upon opening the game with the SMODS.calculate_context added to my .lua.

#

Same error when using different contexts, or calling other functions.

pseudo cape
#

does anyone know if there's a way to give a deck design the same reflective shader spectral cards have?

#

I've got a basic deck made and as part of its bonuses, it gives you a spectral card, the deck design is also based on the spectral cards

#

m looking at the SMODS.DrawStep wiki, but it's not got a whole lot in it

pseudo cape
#

actually, can you even apply shaders to deck backs?

opal spade
#

through drawstep yeah

pseudo cape
#

do you know how I'd go about that?

opal spade
#

look at the code for center and back

#

what you want to do is add step with order >0 and <10 that draws the edition shader on the back of the card if it's your deck

#

conditions vortex = false and facing = 'back'

pseudo cape
#

whenever I try and call SMODS.DrawStep, the game crashes and it says it's a nil value

weak gate
#

is there support for conditionally preventing a consumable item from being sold?

plush cove
pseudo cape
#

I assume so, seeing as there are eternal jokers that can't be sold in the base game, the code might work with consumables too

old bane
#

how do i access the "allow_duplicates" field for consumabletypes?

opal spade
opal spade
pseudo cape
opal spade
pseudo cape
#

lemme see if vscode saved it, I kinda removed it already and was trying something else

#
SMODS.DrawStep {
    key = 'back',
    order = 5,
    func = function(self)
        local overlay = G.C.WHITE
        if self.area and self.area.config.type == 'deck' and self.rank == 16 then
            self.children.back:draw_shader('booster')
        end
    end,
    conditions = { Wdeck = true, facing = 'back' },
} 
#

already have the shader booster loaded, and the deck it's trying to be applied to is referenced as Wdeck in the code

#

let me like actually make sure steamodded is up to date rq

sonic cedar
#

does anyone know how fields like {0,0,0,1} work as a colour?

#

like what does each integer get translated to?

plush cove
sonic cedar
#

ALPHA ok that's what i was missing

opal spade
sonic cedar
#

thank you

pseudo cape
#

lemme try something more simple rq

opal spade
pseudo cape
#

ah alrighty

opal spade
#

also it would only draw on cards with rank 16?

pseudo cape
#

I am very tired

opal spade
#

i don't quite understand the conditions there

pseudo cape
#

but ye that's very wrong

#

neither do I catwaaaaah

#

ope

#

well uhm

#

shader works (?)

#

it's currently applying to every card in the game though which is less good

#

also shader works as in it doesn't crash, still doesn't look right

opal spade
#

conditions should include facing back, and the function should check if the viewed deck/selected deck is your deck

pseudo cape
#

I'm getting closer

#

shader only applies to the back of cards now, I just need it to only apply to the one deck

opal spade
#

these are the two things responsible for back rendering iirc

#

and each card stores which one of the two they're using through card.back (a string thats either "selected_back" or "viewed_back")

opal spade
placid frigate
#

is there a way I can have a challenge not have anyother jokers in the shop

tall wharf
pseudo cape
opal spade
pseudo cape
#

I'm kinda stuck

#

I dunno how to get it to only apply to my deck, been searching around for what I need to use and can't find anything

tall wharf
#

trust

vale lake
#

I'm trying to make the background color turn yellow for a couple of seconds, then turn back to normal, but ease_background_colour_blind is just making it so the background doesn't change, does anyone have any idea how to fix this?

pseudo cape
#

this is what I've got so far for the shader, but it still applies to the back of every card

        SMODS.DrawStep {
            key = 'Wdeck',
            order = 5,
            func = function(self)
                if self.area and self.area.config.type == 'deck' then
                        self.children.back:draw_shader('voucher')
                end
            end,
            conditions = {facing = 'back'}
        },
#

been searching for what to add to the if statement to make it only apply to the one specific deck but so far I've not found what I need

opal spade
vale lake
pseudo cape
opal spade
#

on an unrelated note I'll probably be opening a repo for magictrickAPI (my mod that makes jokers playable)
it's very unfinished but I'd rather have it out there so others could help

pseudo cape
#

makes jokers playable?

opal spade
pseudo cape
#

ooh cool!

opal spade
#

rn i got it to a state where it

  1. doesn't crash on playing a joker
  2. handles all non-scoring evals between jokers/playing cards
  3. handles jokers in playing card areas during scoring
#

there's a new context for playing jokers but if the joker doesn't respond to it the game will try to force a joker_main calc instead

pseudo cape
#

that's kinda cool

#

now I'm imagining a reverse balatro

#

you start with 52 jokers, and you have to buy playing cards in the shop to put in the joker slots and that counts as what would normally be your played hand

opal spade
#

if lusty joker isn't hearts then what is

pseudo cape
#

true

#

do you know what I'm missing here? I feel like I'm getting super close to getting it working but something just isn't working right

        SMODS.DrawStep {
            key = 'spectral',
            order = 5,
            func = function(self)
                -- if self.area and self.area.config.type == 'deck' then
                    if G.GAME.selected_back == 'Wdeck' then
                        self.children.back:draw_shader('foil')
                    end
                    if G.GAME.viewed_back == 'Wdeck' then
                        self.children.back:draw_shader('foil')
                    end
                -- end
            end,
            conditions = {facing = 'back'}
        },
opal spade
#

also I'd recommend checking G.GAME[self.back] instead

#

the way your code is written right now would turn all card backs shiny if your deck is selected or viewed in general

#

rather than that specific card back being the deck

pseudo cape
opal spade
#

SMODS.Back is your table

#

What you need to check is the key

#

So G.GAME[self.back].key == "mykey"

pseudo cape
#

oooh

opal spade
#

key being "b_modprefix_thingyouwroteintothekeyfieldofthesmodsback"

topaz monolith
#

I am working on a joker card show in the image. How can I do the random probabilities, first of all, and how do I increase the numerator of the chances so that it increase for every scored 7?

old bane
#
  1. pseudorandom('insert any string here') < (G.GAME.probabilities.normal / card.ability.extra.odds) where card.ability.extra.odds is a stat that you set in the joker's config = { extra = {} }
  2. if you want it to be affected by other jokers that effects probabilities, do
    pseudorandom('insert any string here') < ((G.GAME.probabilities.normal + card.ability.extra.numerator) / card.ability.extra.odds) instead. Then, you'll increase that numerator variable every time a 7 is scored
rich roost
#

I’m going to keep being annoying, ultimately im trying to collect all data available each hand played and store visited,I’m stuck now on poker hand level right now and I’m sure I’ll have many more to come

pseudo cape
#

okeokeokeokeoke

#

got it working in the game itself, just not in the menu

#

now to see if I can get it working in the menus without bugging out

#

I also need to switch the shader to the correct one, does anyone know what shader is used by the spectral cards?

#

it be work in menus

#

time to just try shaders till I find the right one

#

the shader also seems to hover over the card itself, and it rotates when you move the mouse over it, I think because it's trying to act like a normal card/joker even when it's on the deck

tall wharf
#

this is the third time I've seen deck that starts with a special cards that creates a joker

pseudo cape
#

hey it's my first deck it's not meant to be complicated

#

(I say after spending 5 hours trying to get a shader working)

tall wharf
#

not blaming

#

it's ok

#

shaders are not easy

pseudo cape
#

time to watch more acerola

tall wharf
#

please stop making procedurally generated water

faint heron
#

is there a way to quick restart balatro to apply code changes? or do you have to just close and open it every time

pseudo cape
#

if you've got the debug mod you could try pasting the code snippet into the game, assuming it's just like testing to find something or something simple

tall wharf
#

i think someone told me to hold M

pseudo cape
#

that's what I've been using to find variable names I should've known because I wrote them myself pikachucaprisun

topaz monolith
# topaz monolith I am working on a joker card show in the image. How can I do the random probabil...

Also, how do I make it so that if it triggers different effects, the joker gives the corresponding effect? For example, I triggered the "Earn $7" effect and trigger the "Gain X0.14 Mult" effect in-game. I want to trigger only those effect, but in different scenarios, it could also be "Retrigger Scored Cards" and "+77 Chips per 7". In my mind, I can only think of doing a bunch of IF ELSE statements

tall wharf
#

are you making a genshin impact mod

pseudo cape
plush cove
#

do you have your code files open

#

if so you should close them and then try the M trick again

pseudo cape
#

I'd rather spend the extra 2 seconds reopening the game, easier for me than closing all my code windows

tall wharf
#

still are you making a genshin mod because that description be looking very long

topaz monolith
#

Nah, someone wanted sevens to be useful since its the weakest in vanilla, so they gave me multiple ideas for it and I decided to just put them together

tall wharf
#

so my yona joker is finally useful

pseudo cape
pseudo cape
topaz monolith
sturdy compass
#

Those animated tooltips are super impressive fr

tall wharf
#

i like them a lot

#

that's why i show them a lot

tall wharf
sturdy compass
#

Oh I see I see

tall wharf
#

and i made a util function out of it

faint heron
#

how would I go about updating the mult mid-play? I am trying to create a joker that lowers by 5 mult every hand played, but I can't seem to update the mult variable at all

faint heron
tall wharf
#

that's not how you do it

#

there are like 3 things wrong with that code

#

first of all you put the card.ability.extra.mult BEFORE the return

#

you also use = to assign values and not ==

manic rune
#

good evening everyone

opal spade
tall wharf
#

you're basically returning a table of false

#

like my hope

#

for my future

manic rune
#

relatable...

faint heron
faint heron
tall wharf
#

no you don't put the thing in that line

topaz monolith
#

When I need to do the retrigger all cards from a probability chance, how do I make it so that it doesn't do the probability chances for each individual card (Example: Retrigger the first card, but not the second card), but retrigger the entire hand?

From what I understand at the moment, everytime it goes through each card, its repeating the probability check, causing different outcomes, which is not what I want

tall wharf
#

i know it's the worst example

#
        if context.before then
            
            for i, _card in ipairs(G.play.cards) do
                card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.extra
            end
            return {
                message = localize("k_akyrs_2fa_generate")
            }
        end
        if context.joker_main then
            return {
                chips = card.ability.extra.chips
            }
        end
        if context.end_of_round and context.cardarea == G.jokers  then
            return {
                message = localize("k_akyrs_2fa_reset"),
                func = function ()
                    card.ability.extra.chips = 0
                end
            }
        end
#

you don't put it in the table 😭

red flower
tall wharf
red flower
#

wdym

tall wharf
#

that changes the joker value directly

#

it doesn't use the up to date current value of the value i want it to update when it's calculating

#

I'll come back in like 3 hours or so

red flower
#

afaik it should, are you sure it's updating correctly on trigger_external? i wouldn't use ability.name to check for the card because I think that doesn't work for modded jokers, I would use config.center.key

manic rune
#

your bluetooth device is ready to pair

tall wharf
#

joker display displays the up to date value

#

maybe i should actually put those code in an event

atomic hornet
#

Currently trying to get a random number to change everytime a round ends, but when I add in the following code, it creates a crash in steammodded utils (screenshot). Anyone know a solution / a better way to generate random numbers every round? - same error happens with context.ending shop or blind select.

    calculate = function(self, card, context)
    if context.end_of_round then
        local rand4 = math.random(1, 289) 
    end
end
} ```
tall wharf
topaz monolith
# red flower Calculate the chance in context.before, apply it in context.repetition and reset...

I can see the vision, but would it get given the updated probability during the context.before state from a context.individual and context.cardarea == G.play state?

The image is what my code is at the moment. The image shows the main probability of the joker card being increased everytime it finds a scored 7. This is during the scoring state (afaik). Like increasing it to 3/5 if two '7' scored.

hard flume
#

Hi! I'm interested in making a Balatro mod-- where would I get started?

modern kindle
manic rune
#

do i send the balatro modding tutorial video again for the 4th time 😭

modern kindle
#

always resend

manic rune
#

yeah uh, wiat

#

this is a bit outdated, but generally does well at telling you what to do

hard flume
red flower
# tall wharf it is updating correctly i believe

oh ok maybe when you use the function in update() it already went through all the calculations
I would try hooking SMODS.calculate_context and doing what you're doing there in context.before

manic rune
hard flume
#

Gotcha. Thanks guys!

red flower
manic rune
#

im gonna save this and just send immediately whenever someone is new to modding

#

efficiency...

red flower
modern kindle
# manic rune

i wish we had a bot that people could just !mod and then it would send the messages for you

manic rune
atomic hornet
manic rune
#

just calling math.random() again will regen it

red flower
#

I don't think the random function is the problem

#

The problem is doing it each round

manic rune
#

oh, i think you can use context.end_of_round for that?

#

or the context that procs when you enter a blind (im not sure if that exists)

red flower
#

I think they said before they weren't using a joker, it was a global effect

atomic hornet
manic rune
#

oh

#

hm

manic rune
#

i have this dumb and inefficient idea, but you can use a loop and just check whenever round changes 😭

red flower
#

you can hook calculate_context and check for setting_blind and update your number there

I don't recommend math.random tho I would use pseudorandom

manic rune
#

a

red flower
manic rune
#

i wonder if its possible to code a progress bar

red flower
#

what about the progress bar when smods loads

manic rune
#

doesnt that come with balatro itself

red flower
#

well then the code is there

manic rune
#

my IT's pc with pirated balatro has it ❤️

manic rune
topaz monolith
manic rune
#

check G.hand and G.play (its the played hand)

#

or you can just do G.playing_cards if you are checking every 7 in your deck

red flower
#

no, context.scoring_hand is correct

manic rune
#

oh, i taomssdomio misread that 😭

#

i thought they meant how to check the hands, uhhh

go through the scoring hand with a for loop, then use :get_id() == 7

red flower
manic rune
#

why did you point at that 😭

red flower
#

i thought it was part of the same message

#

:3

manic rune
#

💔 not so sigma N'

manic rune
topaz monolith
atomic hornet
manic rune
#

well, im HAPPY hsr v1.0 didnt add any good break dps yet so i wont have to waste days getting that working 😭

red flower
manic rune
#

that can wait for bsr v1.1 i guess

red flower
atomic hornet
#

Yea, that's what I'll do

manic rune
#

math.floor(pseudorandom("seed", min, max))

i think you can do that

red flower
#

anyway im going back to sleep i literally just opened discord to check my mods thread

manic rune
#

oh lmfao, sleep well N'

topaz monolith
modern kindle
#

for enhancements, where am i looking at for the box that goes under the normal text box? im making some enhancements and im not sure where i find that

atomic hornet
#

Thanks for the help, I too am off to sleep, just thought I'd post here again for some ideas to mull over and try tomorrow

manic rune
#

😭

hard flume
#

Wait can you use psuedorandom to have it be random dependant on the combination of played cards?

modern kindle
#

its cause chips arent important..

dusk harness
#

question for the people. if you were to want descriptions during a live stream from a balatro streamer, when would you like the data to refresh. like following which input/action from the streamer should the descriptions be updated?

atomic hornet
#

Like audio descriptions? I'd guess on mouse click (excluding card selection), so click on play/discard it says what cards are affected and hand played / eventually score.
Would also suggest joker/card descriptions in shop and boss blind on selection.
I think there was an add-on that displayed joker effects on twitch so you could read them without the streamer hovering over them. Though if this is for audio transcription it'd probably be a mess to hook onto streamer actions if they are rerolling shop a bunch and dragging jokers around to re-order them.

iron iron
#

im gonna tweak the mult does go up, put in a print command and nothing printed

iron iron
dusk harness
crystal perch
iron iron
#

like so?

crystal perch
#

and does the joker fully work aside from the print command?

#

i don't see why it wouldn't be working, maybe try making the joker output a message instead

iron iron
#

for each other moss card you play it gives +0.1x mult

crystal perch
#

my bad i even read enhancement idk why i thought joker

iron iron
#

printing shows absolutely nothing in debug console, it doesnt even bother running the code

crystal perch
#

in both debug plus and lovely console?

dusk harness
topaz monolith
#

At the moment, I have most of the joker functionality working. Its just that whenever it triggers the $7 effect, it doesn't allow the XMult to trigger, pretty much making the Xmult useless. The +77 chip also is meant to be triggered if it won the probability chance. Image is my code. I may need to change something, but am dum

iron iron
tired pine
#

okay so! ive made a little sprite for the jack of spades. plan on adding more but before i do i wanna see how it looks in game. so! how does one input the sprite from a sprite sheet such as this (not this one ofc as it doesnt have the sprited jack of spades) into the game? i heard there was a small amount of code work involved

#

(i used this sprite sheet as a ref for making the sprite. so the sheet still has every other card, just the jack has been changed)

sturdy compass
#

I would’ve helped you get your mod stuff set up but I just got off my pc for the night 😭

tired pine
#

T~T

sturdy compass
#

If you don’t find anyone by tomorrow and you catch me online, ping me and I’d be happy to help out

lavish lake
sturdy compass
#

Ig queens are the only ones that don’t flip

tired pine
#

ive only just noticed that

#

thanks i hate it

sturdy compass
#

Same

tired pine
#

i wonder how hard it is to figure out ngl

sturdy compass
tired pine
#

allready am :3

sturdy compass
#

Hell yeah

plush cove
dusk harness
#

Was a out to ask if that was a thing so we all aligned

tired pine
#

jokers are a bit different to face card reskins no?

sturdy compass
tired pine
#

oh wait

plush cove
#

oh I completely missed that part and thought you were just posting that as a general advice for all modders

tired pine
#

this seems pretty easy

#

hold up :D

sturdy compass
#

Yeah lmao

tired pine
#

im bad at coding, but i might genuinely be okay for once

sturdy compass
#

Yeah it’s a relatively simple process for a DeckSkin

#

Just an atlas and a huge object telling the game what goes where

sturdy compass
#

Yes

tired pine
#

how would one get a 1x from that?

sturdy compass
#

Resize the image by 50%

#

Or smthn like that

tired pine
#

im now officially looking at lunemod.lua and figuring out where to even start

#

lmao

sturdy compass
#

First off you should create your atlas in that file

#

That’s basically the thing that partitions the designated image file into parts that the game can use

tired pine
#

trying to figure out what exactly an atlas is and how to create one

#

and is there anything in particular i should be calling the 1x and 2x sprite sheets?

sturdy compass
sturdy compass
tired pine
#

and this is what i have so far

#

need to figure out px/py

#

cause im unsure if thats the entire sprite sheet or just a single sprite

#

because if so thats the default value for the vanilla card sprites

sturdy compass
#

Ok so you’ve already gone wildly off the rails 😅

tired pine
#

huh? but its a "required parameter"

#

thats not my fault T~T

sturdy compass
#

Gimme a sec, lemme lay it out for ya rq

tired pine
#

or is it this >->

sturdy compass
#

No that’s just for applying an atlas

tired pine
#

a

#

sooo i need to create one

iron iron
sturdy compass
# tired pine huh? but its a "required parameter"

An atlas is structured like a list of sorts. The list is composed of items that give it properties. It looks something like this:

SMODS.Atlas {
   key = --Whatever you want to call the atlas,
   px = 71, --This is the width of a single card sprite
   py = 95, --This is the height of a single card sprite
   path = --This is the filename of your sprite sheet. It does NOT need to be the full path
}
#

For the path, in your case, just lunejack.png will do

topaz monolith
#

Kinda stuck with this error

tired pine
frosty dock
#

it happens all the time

#

it should all be inside the context.joker_main check I assume

sturdy compass
topaz monolith
tired pine
sturdy compass
#

No, same file as the one you made the atlas in

tired pine
#

oh huge

sturdy compass
#

You should be working in one lua file for this whole project

tired pine
#

after finishing that ( i havent ofc) will that be all?

sturdy compass
#

Basically yeah

#

I’m not insanely well versed in how DeckSkins are properly done but I do know that it is what you want. Positive of it

#

So I apologize if any help I give from here on is a bit shaky

tired pine
#

im just looking at this and dying lmao

sturdy compass
#

Yeah lmao

frosty dock
sturdy compass
#

Oh hey loc_txt is on the DeckSkin parameters twice lol

frosty dock
#

one is in palettes

sturdy compass
#

Oh bruh

#

It’s nested 😭

tired pine
#

gurl i dont have a loc_txt

#

can i just loc_txt = default

frosty dock
frosty dock
tired pine
#

i have no clue where a loc_txt file would be saved on my pc. let alone if i even have one. surely theres an english one somewhere

sturdy compass
#

You wouldn’t need a file

tired pine
#

oh then just en-us would work then

sturdy compass
#

Not even, you can just straight up put text there

topaz monolith
#

That's the issue. I can't have them in the same return table because if they are, that removes half of the functionality of the joker. For instance, it could give money and retriggers only, or money, gain mult and give chips. Its just getting the mult to activate during joker_main and chips if the probability is a success

frosty dock
#

in this case both the 1 in 5 and the 1 in 8 want to happen in joker_main

topaz monolith
#

So something like appending multiple data into a table and use that table to return afterwards, correct?

frosty dock
#

the 1 in 7 looks like context.cardarea == G.play and context.individual, while the 1 in 10 is context.cardarea == G.play and context.repetition, though you'd want to determine the chance roll for this before hand if it shouldn't be an individual chance for each card, i.e. save the result somewhere during context.before

frosty dock
topaz monolith
#

Appending as in like grabbing data from a variable and insert it into the table

frosty dock
#

alright sure

#

I just saw you're using context.pre_joker in there. that should only be used for editions

frosty dock
iron iron
frosty dock
#
  • when a played 7 is scored
  • when a 7 is played and scored
#

either of those

iron iron
#

increase the probabilities of the following chances by 1 when a played 7 is scored

topaz monolith
#

After reading what mine was, actually kinda confused someone that didn't know what it did. Thanks

orchid scaffold
#

i made my first balatro mod, did i do a great job?

iron iron
orchid scaffold
#

i made a deck with 10 red steel poly kings

iron iron
#

ahhh

#

i assume erosion works

topaz monolith
#

My original issue might not make sense so here is the summary:

What works

  • The joker gives $5
  • The joker gains Xmult
  • The joker can retrigger
  • Probability resets upon finishing the scoring of current played hand

What doesn't work

  • The joker doesn't grant chips upon successfully winning probability chance
  • The joker doesn't use the Xmult during joker_main

The image shows the code for the one that doesn't work. If needed, I can provide another screenshot of something else if it helps

maiden phoenix
#

If you're on one of the latest smods replace "Xmult_mod" by "Xmult"

#

Also the way you coded it, if one joker_main triggers, the others wont be checked

topaz monolith
#

If that's the case, how would I manage to get it to work? I assume something like appending data into a table for each one, then on the last bit, use the return function for the table?

frosty dock
#

not me having just tried to explain that

topaz monolith
#

Sorry, fried brain for the past few hours. From this and also the Australia Cyclone thats happening atm

frosty dock
#
if context.joker_main then
  local ret = {}
  ret.x_mult = card.ability.extra.Xmult 
  if pseudorandom('greek') < ... then
    ret.dollars = card.ability.extra.moneyget
  end
  if pseudorandom('greek') < ... then
    ret.chips = card.ability.extra.chipget
  end
  return ret
end
#

something like this

clear mason
#

Is it just me or does anyone else have an irrational hatred towards Lua?

#

Like not being able to concisely construct a table in a language about tables kinda sucks

frosty dock
#

wdym

long sun
#

I think it's okay. It's a bit like JavaScript

topaz monolith
#

I was about to message here and thank @frosty dock for the help as it worked, but wasn't expecting that statement when I come back

long sun
#

Being able to set properties of a table on the fly is a great feature, I think!

#

It's very malleable

clear mason
# frosty dock wdym

Like in python for example you can just make a list with generator, e.g. [ i**2 + 1 for i in range(16) ]. Here you init a table first and make an ugly loop which is supposed to fill it

long sun
#

Like I can just say table.thing = 1 and it'll do that :}

frosty dock
#

okay fair, but I don't think it's that bad, it's just a couple more characters to do effectively the same thing

#

also

clear mason
#

and the fact there's no in-house solution to concat two tables

paper zealot
clear mason
#

like it's procedural but unlike C it's ugly procedural

frosty dock
#

how do you like a lazy infinite table

local t = setmetatable({}, {__index = function(t, k) if type(k) == 'number' then return k^2+1 end end })
#

(it's just a function in disguise)

paper zealot
#

Or are functions just tables in disguise? 🤔

clear mason
#

all is table

tall tangle
#

(╯°□°)╯︵ ┻━┻

clear mason
#

JSON the programming language

#

JDSL

frosty dock
#

TABLE IS YOU

tall tangle
#

JASON DETECTED

#

shoots Jason

frosty dock
#

wtf what did you do to Jason

tall tangle
#

I shot him

#

he's dead now

#

no more Jason

clear mason
frosty dock
clear mason
#

called baba is you

#

or is there biu as a programming language? lol

frosty dock
#

there's also a baba esolang, but that's not what i mean

clear mason
#

oh I didn't see what you were replying to

frosty dock
clear mason
#

Nothing will surpass JDSL

frosty dock
lucid sun
#

trying to make it that if played hand is not least played hand, xmult increases. currently, the card says the xmult is increasing (even when it shouldnt), but it is also always returning error, does anyone have any ideas on what the code should look like?

frosty dock
#

oh no

tired pine
#

with enough banging your head against a wall, anything is possible

#

now to clean up the card

#

:D

tall wharf
#

sorry guys i was busy

tired pine
#

and the code cause holy is it messy

clear mason
pale temple
#

how do you guys change the mod badge text like cryptid does

tall wharf
#

i think you have to hook into it

rough basin
#

is there anyway to actively track the money through scoring?

tired pine
rough basin
#

im trying to make a joker that divides the score by the money the player has, but it seems to be taking the money at the start of the hand rather than the end of the hand

rough basin
#

using G.GAME.dollars

frosty dock
tired pine
#

yeah i realised im using an older version of smods

#

and instead of updating smods i just ended up figuring it out myself lmao

frosty dock
#

it also doesn't DeckSkin, it just replaces the base versions of the cards

#

so less choice

clear mason
tired pine
tired pine
clear mason
#

nah I'm shit at lua

#

like esp atlas loading just sucks

frosty dock
tired pine
#

yea i should test to see if it breaks the other mods i normally use

#

it doesnt break :D

frosty dock
#

what are they

clear mason
tired pine
#

ignore balatro multiplayer and smods main. everything else works here

tired pine
frosty dock
#

oh you have literally no reason to be using the old APIs

tired pine
#

if someone can throw me an example of DeckSkin so i can begin to understand what any of it actually means then go ahead, ill look through it and change it T~T

frosty dock
#

your steamodded is like 2 months out of date from current

tired pine
#

the old api makes sense

#

the newer one is... a bit much lmao

frosty dock
#

for just sprites it's not that different

#

if anything it's simpler

tired pine
#

honestly just wanna change the sprites of the face cards. thats all. nothin else lmao

clear mason
frosty dock
random sleet
#

rip deckskins

frosty dock
tired pine
#

do i ever need the json file

#

if its just personal use

frosty dock
#

it replaces the header at the top of the lua file. you don't need to switch to it

clear mason
#

whoever thought gray text on purple background looks good is wrong

#

like it's genuinely hard to read, why would you do this

frosty dock
#

i don't think it's hard to read but you have a point

clear mason
#

it kinda is when zoomed out

frosty dock
#

so what should it be changed to

clear mason
#

I guess like a lighter shade, idk lol

#

Maybe make it generic white but transculent if engine supports that, idk how that would look

frosty dock
#

i guess that works?

clear mason
#

yeah

clear mason
#

People underappreciate managing mods with git

plain wyvern
#

ong

clear mason
#

like You literally install everything with git clone [url] and then just use git pull to update without having to download a zip ech time

#

but I guess terminal scary or something...

spring lantern
#

you can also be like me and get github desktop so you don't even have to use the terminal :3

clear mason
#

who the fuck uses github desktop

spring lantern
#

me

#

(i like friendly interfaces

rose dragon
clear mason
#

Heavens, please grant me a flamethrower; I need to emplace just upon this world

spring lantern
#

damn bro chill im sorry 😭

clear mason
#

I mean the github-desktop, not you

spring lantern
#

nooo i wanna press buttons not write text

clear mason
#

Like I just don't get why are so many people afraid to write three words

#

It's literally like a discord bot except local

spring lantern
#

maybe for just pulling a mod it's fine but me i'm tryna do version control for my projects

zealous glen
#

I think the main issue with command line git is that it’s difficult/impossible to write long commits

spring lantern
#

i like having all the info readily accessible

zealous glen
#

So having to switch to a text editor, write, then use the file as a commit message can be annoying

clear mason
zealous glen
#

If I’m on Linux I don’t like vi or vim

clear mason
zealous glen
#

I know I don’t like the text editor it opens

#

Or the format

clear mason
#

tada

zealous glen
#

I’d rather it open a normal text editor

frosty dock
#

multiple -m:

clear mason
#

You can open a normal text editor with this

zealous glen
#

But also I mostly use command line git and use the commit message file as

#

-F?

#

I think that was the command

spring lantern
#

meanwhile all i gotta worry about is here

#

:v

clear mason
#

That's literally the same thing

zealous glen
#

I think handling patched commits can also be annoying

#

Well

#

Only the complicated patches

#

If it’s the “add” or “don’t add” patches then it’s easy

clear mason
spring lantern
#

okay but it's there already

#

ion gotta type a command to pull up an external program

#

it's just there

clear mason
#

You still need to click buttons

spring lantern
#

it's all about convenience

#

it's more convenient like this

clear mason
#

Typing on keyboard is more convenient than a clicky-clicky gui

spring lantern
#

it's just 1 button it ain't the end of the world

languid mirage
#

why do other people's preferences bother you so much

zealous glen
#

Command line git can do graphs though

#

You can’t click on the graphs tho

spring lantern
#

i mean graphs are cool i guess

zealous glen
#

It helps track the different branches of a project

#

And move between them

spring lantern
#

i do like having access to the commit history in a list like this without opening my browser

zealous glen
spring lantern
#

i don't really work with branches a lot of the time so for me it's enough

#

but if there was multiple branches then yeah it would get messy

zealous glen
#

you could also manage git from VSCode

plush cove
#

:3

zealous glen
spring lantern
#

think i'm just too normie for all this command shit and i rather just click le button and do the thing

#

save my programming brainpower for the actual code of the project yk

clear mason
#

Commands are normie too smh

#

You just type words to a thing

#

And a thing does what you want

zealous glen
#

I like a bit more buttons but not necessarily too many

paper zealot
spring lantern
zealous glen
#

I think PyCharm’s was slightly different

clear mason
#

also vscode sucks

languid mirage
zealous glen
spring lantern
#

bro what 😭

tall wharf
#

omg

#

alex

spring lantern
#

hi

tall wharf
#

i use vscode git thing

spring lantern
#

do you recommend

clear mason
zealous glen
# spring lantern bro what 😭

Same professor, from across the room, to a friend working on a project for another professor’s class: “your numerical model for the solar system is wrong”

tall wharf
languid mirage
zealous glen
languid mirage
#

brain explode emoji

spring lantern
#

just use movie maker at that point daym 😭

zealous glen
#

It was either

#

Applying a linear transformation to a drawing on screen

clear mason
zealous glen
#

Or it was showing that the person in the video was behind glass and drawing on it

languid mirage
#

lossless cut

clear mason
#

like "convert format to format" is literally just ffmpeg -i file.mkv file.mp3 and that's it

languid mirage
#

I mean yeah

#

but I use it for trimming clips

spring lantern
#

my goofy ass looking up mp4 to mp3 converter online:

clear mason
#

Trimming is of similar complexity

languid mirage
#

easier to preview and choose timestamps then click export

#

than copy timestamp into console

#

like why should I bother

zealous glen
clear mason
#

Also I'm that insane person that watches youtube through mpv

zealous glen
#

what’s mpv

clear mason
#

A very minimalistic media player

#

It supports video caching and yt-dlp

zealous glen
clear mason
#

so youu can just mpv 'https://youtube.com/watch?v=aksjdhasjkdh27 and it plays it

#

supports buffering and even video parts

plush cove
rose dragon
zealous glen
#

Me not committing my changes for my mod:

clear mason
zealous glen
#

“that looks unnecessarily simple” — someone about CLI git

clear mason
#

simple is good

plush cove
rose dragon
spring lantern
#

98% of balatro players are blind

plush cove
spring lantern
rose dragon
#

im in the 3%

clear mason
#

And also one of the reasons I use mpv is that it just plays audio right in the terminal

#

like look at this

#

so peak

languid mirage
# clear mason like You literally install everything with `git clone [url]` and then just use `...

Also to reply to this. When you are clueless about git or version control (which is like majority of people who aren't developers) then it doesn't look so simple.

Non-technical people are used to auto updates - e.g. when you have a steam game, it will just update automatically as soon as there's something new. No need to download zip files. No need to learn this new git thing and using console to run commands. No need to even check if there's an update.

And yeah, there are tools that can already run commands for you, but they aren't that wide spread, and it's still a few more button to push, which you shouldn't have to.

clear mason
#

but you can just add an entry to crontab

languid mirage
#

?

clear mason
#

actually though, if talking about linux balatro you can just hook it in AppRun

languid mirage
#

so someone who never heard about git, never did any version control. would see balatro modding and be like:

yup, git clone here, crontab there, git pull to update things yup, all very simple and intuitive

clear mason
#

yes

#

of course

clear mason
#

that's why linux should become more widespread

#

power of UNIX is undeniable

languid mirage
#

convenience > power

#

for majority of people

spring lantern
#

thas what im sayin

clear mason
#

I recently hooked ACPI to sleep on laptop lid close only if system update isn't running, you can't do that with "convenience"

languid mirage
#

🐧

clear mason
#

Took like 3 minutes

spring lantern
#

i dont think most people really care about doing specific things like that

clear mason
#

Yeah but if you get used to it you can just do it without hesitation which is what I'm getting at

plush cove
#

what's the best way I can make a script that goes into each of my mods and automatically does "git pull" if it has a .git folder?

languid mirage
#

on windows?

plush cove
#

yes

languid mirage
#

windows cmd supports IF so drspec2Innocente

clear mason
#

..oh

#

I got excited already

tall wharf
#

perkeo buff

clear mason
#

does windows support posix sh?

paper zealot
plush cove
languid mirage
#

could probably do like

FOR /d %%f IN (*) DO (
    cd %%f

    if exist .git\ (
        git pull
    )
    cd ../
)
clear mason
tall wharf
#

oh my god is that stupxd on git hub

languid mirage
#

copied a script I made the other day for cleaning up some files

paper zealot
clear mason
tall wharf
#

i get brutally killed

clear mason
clear mason
languid mirage
#

it's kinda ass yeah, but I'm just happy it at the very least supports conditional statements

clear mason
#

funny because IIRC git uses like a minimal unix environment because windows terminal is nonexistent

languid mirage
#

yeah

#

tbf I think you can do a bit more with powershell, but I never really learned that either

clear mason
#

alse here I am standing, realizing I probably needed a different query to get a GNU find tldr

languid mirage
#

never had the need

clear mason
#

IMO even if use non-posix-compliant shell for user interaction, at least use fish

#

At least fish has actual features and isn't microsoft branded bash

#

like pressing F1 while typing a command actually opens its manpage which is first funny but also genuinely useful

#

this is like the only time I actually use F1

#

or alt-s which adds/removes sudo to last/current command

#

Or interactive autocompletion

#

now compare that to powershell and weep

#

power in powershell stands for electrocution because that's as much torture as you get by working with powershell

plush cove
clear mason
#

oh exec is call in windows

clear mason
#

also does it async

plush cove
#

thank you for the useful script, I will definitely be using it!

orchid scaffold
#

how do I make a custom rarity, the wiki's documentation information is really scarce

iron iron
#

does this seem right to yall

frosty dock
iron iron
tall wharf
#

letter pack theme 2???

daring fern
#

How does one make a joker only trigger on a card once regardless of retriggers?

tall tangle
#

@random sleet, are Sand Cards part of your mod?

wintry solar
#

No they’re ortalab

tall tangle
#

Oh okay, because the Sand Joker only upgrades once regardless of retriggers.

wintry solar
#

I’m pretty sure it says per played cards rather than scored right?

tall tangle
#

Yep

#

So could you help this guy out with how to make a Joker trigger on play not on score?

wintry solar
#

Look at sandstone joker

daring fern
#

Okay.

wintry solar
#

Without more detail on what the intended effect is I can’t really provide much more help

daring fern
#

It is supposed to give mult and chips at the earliest part in the scoring.

wintry solar
#

Per card?

daring fern
#

No, only at the start.

wintry solar
#

So a joker that adds some chips and mult before the cards are scored?

daring fern
#

Basically yes.

wintry solar
#

You’ll have to inject your own context for that, we don’t have one supported

daring fern
#

How would one go about doing that?

gleaming zealot
#

ball so hard

spring lantern
#

remind me what the proper use of calculate_effect is

orchid scaffold
#

im stuck can someone help me ive been trying to solve this error

manic rune
#

probably an error from exotic jokers

orchid scaffold
#

ye ive check my code and referenced some popular mods but it still wouldnt work

manic rune
#

oh, its your mod?

maiden phoenix
orchid scaffold
#

omg im so stupid i forgot to add a description 💀

halcyon osprey
#

what are the variables for checking deck size and adding money and such

orchid scaffold
#

what is a pool, its not documented in the steamodded documentation

red flower
#

a pool is a list of objects available

orchid scaffold
#

i know its like a objects that can be picked from but how do i make one

red flower
orchid scaffold
#

thanks

red flower
#

deck size is #G.deck.cards and for adding money you use ease_dollars

manic rune
#

how do i add hands and it also shows the "+1" pop up thingy in the Hands counter too

red flower
#

ease_hands_played i believe

bold sleet
#

henlo good peploe. Is there a way to like, support modded jokers and entries for this?

manic rune
#

i think you can refer to your modded jokers there too

#

G.P_CENTERS.j_(your mod syntax)_(stuff)

#

could be wrong tho

bold sleet
#

tried

#

will try again just in case

red flower
#

should be the same, yeah

bold sleet
#

ok it works

#

ty

glad osprey
#

are you able to change the scale of playing cards

#

like how wee joker is just on a playing card

bold sleet
#

Uh... try making the sprite itself smaller in the atlas.

glad osprey
#

that's the boring way

lament agate
long urchin
#

alright, back to the ol grindstone

#

where was the thing someone said to me

red flower
# lament agate

I don't remember rn but I think dimserene's pack edits that too, maybe you can ask them

manic rune
#

i hate autofill.

waxen mesa
#

ok, time to fix a new bug

red flower
#

crew_ not just crew

#

in the string

long urchin
#

OH

#

no thats the name of the file

#

do i need to change it to 'crew_crew8bitdeck'?

red flower
#

probably, that's what zamos was saying anyway

waxen mesa
#

i suspect something is wrong with this here, any tips

red flower
#

colours should be G.C.GREEN and G.C.RED unless those are variables

manic rune
#

you should uhh do something to remove the yellow line from SMODS

#

i forgot what its called

#

:(

#

but its just a visual thing, so you can just ignore that

waxen mesa
lament agate
#

Ctrl + Shift + M

waxen mesa
#

ok didnt work but thanks for the tip

bold sleet
#

idk why it does that.

frosty dock
#

it does that because you don't have smods in your workspace

manic rune
#

i assume you do something like this?

#

(ignore everything, except for the "Lua.workspace.library" part)

waxen mesa
#

🤔

#

i assume thats not really the same?

waxen mesa
frosty dock
#

you can just open your mods folder in full

waxen mesa
#

here, thats it

frosty dock
#

that is not in your mods folder

waxen mesa
#

you mean that?

#

also found this thing here

frosty dock
#

I'm saying you can open the Mods folder instead of just the BalatroMod folder in vscode and then smods will be in your workspace

paper zealot
# waxen mesa

If you right-click on that left panel, you can add additional folders to the workspace with this:

gilded blaze
#

how do I render unlock condition text for custom decks 💀

tepid crow
#

define an unlock_condition

#

(at least, that's how the base game does it)

gilded blaze
#

I was asking how to render the text

#

unlock condition is already specified

tepid crow
#

custom unlock condition text?

gilded blaze
#

win the previous deck shown in any difficulty

#

as least based on vanilla

#

basically custom text

waxen mesa
#

Ok, why does it say there is a nil value despite there objectively not being a nil value?

gilded blaze
#

because it doesn't render vanilla

#

I've tried multiple stuff, from just unlock, to unlock containing just text, to unlock containing name and text

#

💀 painge

tepid crow
#

why do you need custom unlock text?

gilded blaze
#

Idk

#

the game refuses to render vanilla

tepid crow
#

just set the unlock stuff properly and it should work

    unlocked = false,
    unlock_condition = {type = 'win_deck', deck = 'b_red'},
gilded blaze
#

already

halcyon osprey
#

Soo how do i add money?

gilded blaze
#

wait

halcyon osprey
#

i have no clue how to use the ease_dollars

gilded blaze
#

unlock_condition is a separate variable?

tepid crow
gilded blaze
#

damn, I got trolled by vanilla

red flower
#

ease_dollars(amount)

tepid crow
gilded blaze
#

I saw the text in vanilla as unlock_condition staying inside config

#

for some fcking reason

tepid crow
#

rip

#

you figured it out tho, all good

gilded blaze
#

this is my very first mod minus VietnameseBalatro and LocFixer tho

#

those don't count because they're all localization-related

halcyon osprey
#

okay so, i want it to be at the end end where you get your money, and to be the total number of your deck

waxen mesa
#

can someone say where i do find "ref_table" in the documentation?

tepid crow
red flower
tepid crow
waxen mesa
frosty dock
#

as for the total number of cards in deck, #G.playing_cards

frosty dock
#

on cashout screen isn't a context that exists

tepid crow
red flower
waxen mesa
frosty dock
#

what about ref_table??

#

that doesn't mean anything by itself

tepid crow
#

I love misspelling emojis and then pressing enter

waxen mesa
#

it finds "nil" in ref_table, and i need to put something in it i guess

frosty dock
#

it's used in different places throughout game code to mark a "reference table"

halcyon osprey
tepid crow
#

that's a function signature, not a definition

#

a function signature has the name, arguments, and return type(s)

red flower
rapid stag
#

...this is a (custom) undiscovered legendary. i remember before when i added custom legendaries, it had the standard undiscovered legendary text "Find this Joker from the Soul card" but now it's the standard joker undiscovered joker text? how do i fix this?

also @wintry solar, does this undiscovered joker graphic have a key for malverk replacement or like locked jokers, is that also not planned? answered: as of writing, it's a planned future malverk feature cirBox

waxen mesa
tepid crow
#

Yayyyy

#

just post your code here haha

halcyon osprey
#

starting shop would be when you hit the cash out button

#

correct?

waxen mesa
rapid stag
#

oh right, i was also asking if anyone knew what function gets called at the start of a shop phase