#💻・modding-dev

1 messages · Page 578 of 1

rotund sable
#

@glass scaffold

daring fern
#
SMODS.current_mod.optional_features = function()
    return {
        retrigger_joker = true,
    }
end
wild berry
#

kty

glass scaffold
rotund sable
#

after my patches it sets the number to value at G.GAME.SSS or to 10 if that one is nil

#
[manifest]
version = "0.1.0"
priority = 0


[[patches]]
[patches.pattern]
target = 'functions/UI_definitions.lua'
pattern = '''
function create_UIBox_blind_select()
'''
position = "after"
payload = '''
local boss_reroll_cost = G.GAME.SSS or 10
'''
match_indent = true


[[patches]]
[patches.pattern]
target = 'functions/UI_definitions.lua'
pattern = '''
UIBox_button({label = {localize('b_reroll_boss'), localize('$')..'10'}, button = "reroll_boss", func = 'reroll_boss_button'}) or nil
'''
position = "at"
payload = '''
UIBox_button({label = {localize('b_reroll_boss'), localize('$')..tostring(boss_reroll_cost)}, button = "reroll_boss", func = 'reroll_boss_button'}) or nil
'''
match_indent = true
glass scaffold
rotund sable
#

The first patch finds the line

function create_UIBox_blind_select()

as marked by the pattern (to search for)
position tells it to add the payload (new line) after the found line
The new line gets added there and it's indent is matched to the surrounding code thanks to match_indent = true

ashen drift
rotund sable
#

The second one patch finds the line specified in pattern, position tells it to replace the line with the payload

wispy falcon
#

What does remove_from_deck do?

daring fern
ashen drift
#

after setting up this patch you can modify G.GAME.SSS to change the display

rotund sable
ashen drift
#

its only ui tho doesn't actually change the function

rotund sable
rotund sable
#

as far as i know

ashen drift
#

oh mb

wispy falcon
daring fern
ashen drift
rotund sable
#

wanted to make sure

glass scaffold
ashen drift
#

fair

rotund sable
#

better safe than sorry

ashen drift
#

eval G.GAME.SSS = "my buthoel"

carmine chasm
#

Why won't is summon the hanging chad army Lua if context.setting_blind then for i = 1, 10 do local new_card = create_card('Hanging Chad', G.Jokers, nil,nil,nil,nil, 'J_joker') new_card:add_to_deck() G.jokers:emplace(new_card) end end end

glass scaffold
#

And all I need to do is change the G.GAME.SSS variable with logic?

ashen drift
#

probably

#

rename the variable

#

but yeah

rotund sable
glass scaffold
carmine chasm
daring fern
rotund sable
#

it'll update when you first render the blind select after each shop btw

carmine chasm
gusty iron
#

my first ever lovely patch 🥹

ashen drift
#

awesome

stiff locust
#

bump

gusty iron
#

on another note

🐱

stiff locust
#

itd better make an obnoxious miau sound every time it scores

carmine chasm
#

is there a good video online on how to make a config tab in steammodded

keen atlas
stiff locust
#

waiting

ashen drift
#

actually vr wiki

rotund sable
hardy viper
#

better to just copy someone else's

keen atlas
ashen drift
#

bruh

hardy viper
#

and replace whatever is necessary

carmine chasm
red flower
#

there are no videos on modding balatro

rotund sable
#

tutorial hell mindset

red flower
#

just to save you time

stiff locust
#

ohhhhhhhhh

#

I didn't

#

open the bracket

#

ah

stiff locust
ashen drift
#

singular

stiff locust
#

That One Guy made That One Video but it's super outdated now

red flower
#

old and not relevant

carmine chasm
ashen drift
#

anyways yeah whatever cg said

#

copy someone elses

red flower
#

even if videos starting coming out, UI stuff would be at the bottom of the priority list probably

sinful crown
#

can somebody tell me what I'm doing wrong? it just gives spectral cards constantly

stiff locust
red flower
stiff locust
#

and just have people copy paste it

rotund sable
ashen drift
red flower
sinful crown
rotund sable
#

I'm going to make an API mod to make config tabs easier :clueless:

stiff locust
#

that wouldnt require an API mod tbh

rotund sable
#

yes ik

red flower
#

i added tabs to my config and i had to do something stupid to recalculate it

stiff locust
#

why

#

cant you just run recalculate

wild berry
#

why does this not work?

daring fern
rotund sable
#

wait are you making the "same" joker as me

wild berry
daring fern
#

Also remove and context.retrigger_joker

wild berry
#

is there an alternative

red flower
rotund sable
wild berry
stiff locust
#

I recalulate my UI in curator right after it spawns and it works fine

red flower
#

i recalculate other UIs and it looks fine yes

keen atlas
red flower
#

for this one it looked bad

#

idk what to tell you

rotund sable
wild berry
#

is there a way to get a joker's english localized name

stiff locust
red flower
ashen drift
#

just use the key

stiff locust
#

the key won't work

daring fern
rotund sable
stiff locust
#

it could find the letter G inside the mod prefix the joker comes from

ashen drift
stiff locust
#

yes

ashen drift
#

i guess 90% of people use english anyways

stiff locust
#

you have to learn english to code

#

iirc

ashen drift
#

yes but you dont have to play balatro in english

stiff locust
#

thats not going to cause problems

wild berry
daring fern
wild berry
#

just that?

daring fern
wild berry
#

so what do i have to replace retrigger_joker with

carmine chasm
#

is there a way to just go down each joker instead of doing this ```Lua

return {
["setting_1"] = {
["option_1"] = 'joker',
["option_2"] = 'greedy joker',
["option_3"] = 'lusty joker'
["option_4"] = 'wrathful joker',
["option_5"] = 'gluttonous joker',
["option_6"] = 'jolly joker',
["option_7"] = 'zany joker',
}
}```

daring fern
wild berry
#

oh.

#

localize only returns error

daring fern
daring fern
wild berry
red flower
#

jokertotrigger.config.center_key

daring fern
wild berry
#

oh

#

it works now, ty

carmine chasm
#

what type of node is the one where you choose left or right and it will switch between options?

stiff locust
#

is there a way to change which boss you're against during a boss blind

alpine copper
#

I really want to mod Balatro (make my own mod), as in I want to make my own Jokers, decks, and other stuff for Balatro. How do I do that?

vale grove
carmine chasm
#

how would I make the slider node work. Lua SMODS.current_mod.config_tab = function() return {n = G.UIT.ROOT, config = { -- config values here, see 'Building a UI' page }, nodes = { {n = G.UIT.S, config = {align = "cm", padding = 0.1}, nodes = { {n = G.UIT.S, config = {text = "Hello, world!", colour = G.C.UI.TEXT_LIGHT, scale = 0.5}} }} }} end

primal robin
#

No one knows. Use create_slider instead

vale grove
carmine chasm
vale grove
#

i personally use VS code and i havent been having any issues with it so far

carmine chasm
#

should I do n = create_slider()

alpine copper
vale grove
red flower
vale grove
#

i also reccomend paint.net for creating the sprites

alpine copper
#

I mean, what LSP should I use

vale grove
red flower
#

everything is in that link

alpine copper
#

it doesn't specify an lsp that i should use (or maybe i wasn't reading it correctly)

rotund sable
#

basically autocomplete

#

+error detection ig

vale grove
#

oh i dont use any lol

vale grove
#

i boot up the game and if it doesnt work it doesnt work

alpine copper
rotund sable
#

with lsp errors still happen

vale grove
#

maybe i should also get on that lol

rotund sable
#

you can't tell me this isn't nice

vale grove
#

true i just kinda forgot about it lmao

gusty iron
#

random :)

#

im debating between these two abilities, and i want some thoughts:

Spawn between 1 and 5 Negative Jokers
Randomize the values of a selected card, joker or consumable.

primal robin
#

Just type definition is not enough. Usage of things can be very... unintuitive

ashen drift
#

pseudorandom moment

gusty iron
#

lua 😨

keen atlas
#

for

ashen drift
#

local fans when var comes in

gusty iron
# keen atlas for

for will probably be:

Gives you an extra life.
for i = 1, #1# do

#1# is how many lives you have

primal robin
gusty iron
primal robin
#

holy sh

#

You got me

ashen drift
#

ERROR in action number 1
of Step Event0 for object obj_fuck_everyone:
Variable obj_fuck_everyone.fuck_everyone(104147, -2147483648) not set before reading it.
at gml_Object_fuck_everyone_Step_0 (line 1) - fuck_everyone()

carmine chasm
#

why does my ui look this ugly

#

I want it to look something like this

ashen drift
#

that would be option cycle

keen atlas
#

use a create_option_cycle funtion

carmine chasm
#

should I keep this ```Lua
local config = {setting_1 = {}}
local option = 0
for k, v in pairs(G.P_CENTERS) do
if v.set == "Joker" then
option = option + 1
config.setting_1['option_'..option] = v.key
end
end

local current_option_index = 1

local function get_current_option()
local keys = {}
for k, v in pairs(config.setting_1) do table.insert(keys, v) end
return keys[current_option_index]
end

wild berry
#

how can i prevent a played hand from being scored in a blind

#

in the psychic kind of way that it just says not allowed

carmine chasm
#
    return {
        n = G.UIT.ROOT,
        config = {align = "cm", padding = 0.2, colour = G.C.BLACK, r = 0.05},
        nodes = {
            
            {n = G.UIT.R, config = {align = "cm", padding = 0.1}, nodes = {
                {n = G.UIT.T, config = {text = "Joker Selector", scale = 0.7, colour = G.C.UI.TEXT_LIGHT}}
            }},
            
            {n = G.UIT.R, config = {align = "cm", padding = 0.1}, nodes = {
                
                {n = G.UIT.C, config = {button = "joker_left", padding = 0.05}, nodes = {
                    {n = G.UIT.T, config = {text = "<", scale = 0.7, colour = G.C.UI.TEXT_LIGHT}}
                }},
            
                {n = G.UIT.C, config = {align = "cm", padding = 0.05}, nodes = {
                    {n = G.UIT.T, config = {ref_table = config.setting_1, ref_value = get_current_option(), scale = 0.7, colour = G.C.UI.TEXT_LIGHT}}
                }},
               
                {n = G.UIT.C, config = {button = "joker_right", padding = 0.05}, nodes = {
                    {n = G.UIT.T, config = {text = ">", scale = 0.7, colour = G.C.UI.TEXT_LIGHT}}
                }}
            }}
        }
    }
end


#
    local keys = {}
    for k, v in pairs(config.setting_1) do table.insert(keys, v) end
    current_option_index = current_option_index - 1
    if current_option_index < 1 then current_option_index = #keys end

    local text_node = e.parent.nodes[2].nodes[1].nodes[1]
    text_node.config.ref_value = keys[current_option_index]
    e.parent.UIBox:recalculate()
end

G.FUNCS.joker_right = function(e)
    local keys = {}
    for k, v in pairs(config.setting_1) do table.insert(keys, v) end
    current_option_index = current_option_index + 1
    if current_option_index > #keys then current_option_index = 1 end

    local text_node = e.parent.nodes[2].nodes[1].nodes[1]
    text_node.config.ref_value = keys[current_option_index]
    e.parent.UIBox:recalculate()
end```
daring fern
wild berry
#

oh ok ty

spice wadi
wild berry
#

how can i set the blind's current score

carmine chasm
slim ferry
#

why are you making a custom ui tab if you dont understand any of it

#

its like. really easy to just make a simple config for your purposes

ashen drift
#

how can i code in lua i dont understand if statements

ashen drift
#

i was cracking a joke

wild berry
#

oh

ashen drift
#

anyways jokes aside the documentation is already there

#

people are just gonna tell you the same thing as in the documentation if not worse in here

stiff locust
#

untrue

#

some of the documentation is bad

ashen drift
#

i guess

stiff locust
#

and it's not their fault most of the time

daring fern
floral marsh
#

how do I check if a joker is perishable and/or rental
just like SMODS:is_eternal() but SMODS:is_rental() does not exist

ashen drift
#

card.ability[sticker name]

#

sticker key

#

whatever

floral marsh
ashen drift
#

wdym

#

just check if card.ability["eternal"] is true

#

and rental and whatever sticker you want

floral marsh
#

if its not true it ends up being nil thats what I meant but yeah

#

thx

maiden phoenix
maiden phoenix
#

What

ashen drift
#

what

stiff locust
#

what

daring fern
stiff locust
#

quantum stickers 😭

maiden phoenix
daring fern
maiden phoenix
#

Not sure why you'd set rental/perish to a table

wild berry
#

is it possible to do a while loop for the entire duration of a blind

#

because i did this and it just froze the game

daring fern
maiden phoenix
#

Why would anyone do that? 😭

daring fern
wild berry
#

right

#

ty

gusty iron
#

mweheheheheheh

wild berry
slim ferry
#

yeah because you set blind.executing to true

#

which means it cant ever trigger again

wild berry
#

wait

#

i think i got it the wrong way

#

fuck

daring fern
wild berry
#

where do i have to hook it

#

in the blind or

daring fern
stiff locust
#

is there any way to do variable colours inside a uibox

#

I tried colours = G.C.BLUE and <condition> or G.C.RED and it crashed when opening the UI with "attempt to index colours (a boolean value)" so that didnt work
I tried colours = function() where the function checks the condition and returns G.C.BLUE or G.C.RED and that crashed when opening the UI with "attempt to compare number with nil" even though my print statements said all the checks passed perfectly fine

wild berry
stiff locust
#

remember to load the separate lua file if you havent already

wild berry
#

i already have a for loop that loads everything

#

dw

stiff locust
#

good

wild berry
#

smthing like this?

daring fern
# wild berry smthing like this?

No, it would be if G.GAME and G.GAME.blind and G.GAME.blind.config.blind.key == 'bl_modprefix_key' and not G.GAME.blind.disabled and dt >= 0.5

wild berry
#

done

#

but problem

daring fern
wild berry
#

works now, ty

#

......

vale grove
#

just curios hwo do i make a joker scaling like runner but with a different hand?

slim ferry
#

you can

#

link lines yk

daring fern
vale grove
#

thats actually very helpful

wild berry
wild berry
daring fern
wild berry
#

is there something that must have it to be like that?

#

no wait

#

deltatime can be larger than requested

#

i forgot

#

still crashes tho

#

and same error

vale grove
# wild berry np

btw is this formatting still accurate because the jokers i have already made are formatted very differently

slim ferry
#

wdym by formatting

vale grove
#

idk if formatting is the right word but like the order of the lines

slim ferry
#

the order in which you put the joker parameters doesnt matter

vale grove
#

than that answers my question thx

slim ferry
#

also vanillaremade is usually kept updated quite well so most things should be accurate

floral marsh
#

vanilla remade is peak ngl

slim ferry
#

vanillaremade is the best thing

#

like ever

wild berry
# wild berry

still, anyone know the solution to this hook crashing the game?

vale grove
#

the only issue i have now is that i dont know how to display it currently

#

like what chips mult and Xmult it has currently

wild berry
#

use loc_vars

#

look at this

normal crest
wild berry
#

you have to place

slim ferry
#

the game does that automatically

wild berry
#

oh

vale grove
#

yeah the effect works (except for Xmult but ill get to that) it just doesnt display it

slim ferry
#

thats like the point of the function

slim ferry
wild berry
#

and then in the description

#

put #(index)#

#

and the game

vale grove
#

this is what loc_vars looks like rn

wild berry
#

will replace it automatically

#

put #1# in the description and it would become the chips

spice wadi
vale grove
#

chips and mult work just fine from my testing

vale grove
slim ferry
spice wadi
#

Chips, chip_mod, mult, mult_mod, etc

Are those all set

slim ferry
spice wadi
#

Making sure it's intentional cos idk how complex the card it is

vale grove
vale grove
#

every highcard

#

the card gains +2 chips +1 mult and X1,1 mult

#

no wait

#

X0,1 mutl

slim ferry
slim ferry
#

also currently it goes on any hand that contains high card

vale grove
slim ferry
#

not every hand that is high card

vale grove
#

yeah

spice wadi
#

And you'd use 2, 4, and 6 to show the scaling amounts

vale grove
#

exactly that

#

you typed my thought before i even had it XD

slim ferry
#

you would have to replace next(context.poker_hands['High Card']) with context.scoring_name == 'High Card'

#

scoring_name being the key of the played hand

spice wadi
vale grove
#

maybe ive heard it but im learning programming in my native langauge

slim ferry
#

its like where the lines start

vale grove
#

so sometimes i dont know the exact term

vale grove
spice wadi
#

The spaces before the lines

slim ferry
#

you can do right click -> format document

#

and then it does automatic indentation

#

or alt shift F, that also works

spice wadi
#

Did not know that but that makes sense

vale grove
#

okay so now the issue is why doesnt Xmult work

#

display and everything else works

slim ferry
#

im pretty sure it has to be xmult

#

not capitalized

#

actually

#

wait

vale grove
#

h

#

no i think i see it

slim ferry
#

this is all the return things

spice wadi
#

there are functions related to scaling now right

slim ferry
#

maybe the issue is just that the xmult is going before

spice wadi
#

If so those should probably be added

vale grove
#

no no i just made a typo i think

vale grove
#

if context.before and not context.blueprint and context.scoring_name['High Card'] then
its currently like this

slim ferry
#

context.scoring_name == "High Card"

vale grove
#

if context.before and not context.blueprint and context.scoring_name == 'High Card' then
like this?

slim ferry
#

yeah

wild berry
#

now it doesnt crash anymore but it doesnt work either

#

only thing i see is that the key is always nil

floral marsh
#

huh? theres inflation in this game

wild berry
#

for more search balatro inflation

slim ferry
floral marsh
#

oh I see

#

so I could just

#

instead of hooking

#

modify that value

slim ferry
#

if you just want to make everything more expensive yeah

floral marsh
#

wait no I cant cuz I need it to be a multiplier

wild berry
#

does anyone know the solution?

#

i figured out this time

floral marsh
wild berry
#

i just used a wrong prefix lol

#

that was the issue

floral marsh
lavish elm
#

how to make my joker update it probability when an oops is present like in vanilla?

spice wadi
candid prism
pale holly
#

what's the way to detect the flame effect ? Tried to use
G.ARGS.chip_flames.real_intensity < 0.000001
but apparently chips_flames is Nil

wild berry
#

how can i check when a joker is added

daring fern
faint yacht
ocean sinew
#

how can I get all owned cards instead of looping through G.jokers.cards and G.consumeables.cards?

ocean sinew
#

ok thanks

wispy falcon
#

How do I return a message, without using return{}?

stiff locust
#

card_eval_status_text

#

i think there's another way (people keep correcting me by bringing it up)

slim ferry
stiff locust
#

but card_eval_status_text will work

slim ferry
#

SMODS.calculate_effect

#

which has less arguments

#

well

#

it uses a table

faint yacht
#

SMODS.calculate_effect({message = localize('k_upgrade_ex')}, card)

slim ferry
#

so your dont have like a whole bunch of nil, nil, nil, nil shit

wispy falcon
#

Got it

ocean sinew
wispy falcon
#

Can I also change how long a message stays?

pale holly
wild berry
#

blind doesnt work + context.after triggers too early

stiff locust
lavish elm
#

I have tried a bunch of other stuff but I can't get my text to update the probability so quick question does dynatext string need to be a table or it could just be a normal string?

slim ferry
#

you dont need dynatext for probability?

#

what are you doing

stiff locust
#

not quite

lavish elm
wild berry
wispy falcon
stiff locust
#
G.E_MANAGER:add_event(Event({
                blockable = true,
                blocking = true,
                func = function()
                    ---your code goes here
                    return true
                end
            }))
wild berry
stiff locust
#

are you changing the player's current chip amount

#

or the blind score requirement

wild berry
#

score req

stiff locust
#

ok you're missing some extra lines then

#

add G.GAME.blind.chip_text = number_format(G.GAME.blind.chips)

#

that makes the text update

lavish elm
wild berry
slim ferry
wild berry
#

ty

lavish elm
wispy falcon
stiff locust
#

it changes based on the game speed and hand scoring time

vale grove
#

is there a joker in vanilla balatro that empowers if you get a specific other joker?

stiff locust
#

not much we can do on that front ¯_(ツ)_/¯

#

no but it's really easy to make

vale grove
stiff locust
#

ive been wanting to leave that server for ages but they keep complaining about people who join just for the tag (me)

vale grove
#

lol

stiff locust
#

and I would feel like shit leaving it just to go to the p4 one that I didn't know about until now

pale holly
#

Hey so, trying to make a boss blind that double whenever the flames effects appear but it doesn't work at all

set_blind = function(self, card)
 if G.ARGS.score_intensity.flames >= 0.000001 then
      G.GAME.blind.chips = G.GAME.blind.chips * 2
    G.GAME.blind.chip_text = number_format(G.GAME.blind.chips)
        end
    end```

any idea how i could make it work ? and is there evena way for the score to show itself scalling to it ?
stiff locust
#

oh there you go

#

you figured it out

pale holly
#

yeah forgot an extra `

stiff locust
#

the flame effects appear if the current hand score is above the requirement

vale grove
stiff locust
#

you could check that

stiff locust
#

only returns true if you have the joker

#

just put the joker's key in joker_key

vale grove
#

oh

#

is it really that simple?

stiff locust
#

it'll be j_modprefix_jokerkey

stiff locust
vale grove
#

damn

#

wish I could implement that rn

stiff locust
#

you can

vale grove
#

chained down by a Birthday Party

stiff locust
#

ah

#

that means you can use birthday joker

#

obligatory jokebox plug

vale grove
#

lol

#

wish I could've skipped this one

#

haha

#

get it?

vale grove
#

anyway thx for the help tho

#

ignore the bad pun lol

stiff locust
#

ill forgive you if you play jokebox

wispy falcon
#

How would I return a table of strings through the loc_vars that changes in length depending on the index that got picked?

vale grove
#

had to pull out my inner joker for that one

vale grove
vale grove
#

oh

vale grove
#

when I'm home sure

#

rate this creation tho

pale holly
stiff locust
wispy falcon
# stiff locust a what in the what

I have a joker that chooses a random riddle that I want to show in their description. It picks from CSTORM.riddles which has riddles in them in different lengths. For example: { question = { "I have billions of eyes,", "yet I live in darkness.", "I have millions of ears,", "yet only four lobes.", "I have no muscle,", "yet I rule two hemispheres.", "What am I?" }, answer = "Human Brain" }, { question = "What gets wet while drying?", answer = "A Towel" }, How would I make it show the strings in the description every time with the right amount of lines?

stiff locust
#

uhhhhhhhhhhh

#

y a

wispy falcon
#

I was thinking about doing a for loop but don't know what that would do

stiff locust
#

I mean you can certainly do that

#

but it'd be a brute force method that would leave a million blank lines in your joker

vale grove
#

you give me very bad ideas

#

and I like it

wispy falcon
stiff locust
#

well with my new satanic abilities

#

I'd recommend putting UI boxes inside your joker description

stiff locust
#

user interface boxes

#

making menus show up

#

you can do it inside jokers (blueprint does it with the Compatible box)

vale grove
#

i dont think the mango needs that specifically does it?

stiff locust
#

no not you

#

the other guy

vale grove
#

oh mb twin

stiff locust
#

you could totally put a mango box in your mango though

#

that would be funny

vale grove
stiff locust
#

UI boxes are really

#

difficult though

vale grove
#

that would be funny

stiff locust
#

and i can get why you wouldnt wanna do them

wispy falcon
wispy falcon
stiff locust
#

in terms of ease of implementation to effectiveness

vale grove
#

also you should totally put a persona Reference in ur mod @stiff locust

stiff locust
#

tsunami has at least five

#

every legendary fusion is a persona character

vale grove
#

lol

stiff locust
#

i say at least five because I'll make more at some point idk

vale grove
#

tell me my goat junpei is one🙏 🙏

stiff locust
#

uhh he could be

#

not in base tsunami though

vale grove
#

you should make his chidori spring of life a mechanic

#

idk how

#

but

stiff locust
#

crossmod fusions probably

#

base tsunami is only p4(g)

stiff locust
#

and make the lines longer

vale grove
#

also I got a very bad idea relating to persona 2 innocent sin

#

if you've played it

stiff locust
#

it'll look kinda ugly with the wider description boxes but it shouldn't be too bad

#

you can scale down the text if it's too large anyway

wispy falcon
wispy falcon
stiff locust
#

did you see the one about The Glasses That Expose Your Eyes To The Unmatched Power Of The Sun

stiff locust
#

oh

#

you are definitely better off doing them over 2 lines with the #1# and #2# thingies though

#

check vanillaremade blueprint for its funny ui box

wispy falcon
#

Got it

vale grove
#

@stiff locust have you played persona 2 Innocent sin?

stiff locust
#

i have only played persona 4 golden and persona 4 arena ultimax

vale grove
#

aww

#

ultimax is peak tho

stiff locust
#

too bad it's dead as all hell

vale grove
#

true

#

but I got a really great idea relating to persona 2

#

you should play it twin trust

stiff locust
#

i will not be doing that

#

p4g taught me that I actually really don't like jrpgs

vale grove
#

the gameplay really isn't that bad trust (ive wanted to kms at least 20 times)

vale grove
stiff locust
#

it's so boring and slow and graagh

#

i sat through 40 minutes of intro for this

vale grove
#

okay but

#

persona 4 tutorial is just horrendous

stiff locust
#

I do the same thing like 50 times over in 1 session just to get to the 1 fun part

#

which is a boss

#

and then teddie steals the spotlight from rise's dungeon like

#

fuck off

vale grove
#

I like persona more for the social link and stories

stiff locust
#

p4 animation was peak

vale grove
stiff locust
#

p4 golden animation was also peak but lesser so

vale grove
#

but if you like good stories persona 2 and 3 are very recommended

stiff locust
#

i cant sit through another jrpg im sorry

vale grove
#

☹️

vale grove
#

I'm no expert on the genre in general

pale holly
#

OKay i would like to know but how do you check the score of the hand played ?

#

calculate = function(self, card)
 if G.GAME.chips > G.GAME.blind.chips then
      G.GAME.blind.chips = G.GAME.blind.chips * 2
    G.GAME.blind.chip_text = number_format(G.GAME.blind.chips)
        end
    end```

wanted to change so instead if the hand scored is equal to the chips requirement it would double but actually it doubles any time the score is reached lmao
frosty dock
pale holly
#

II should give it a read then, i did before but not for blinds directly

vale grove
pale holly
slim ferry
#

....

#

context.final_scoring_step is not a number

pale holly
#

ah oops

slim ferry
#

all 6s

twilit tundra
#

again still not sure where to even begin with this

ocean sinew
pale holly
#

it's a cryptid thing

twilit tundra
ocean sinew
stiff locust
twilit tundra
#

oh, is that sorted in order?

twilit tundra
ocean sinew
stiff locust
#

betmma's code is kinda

#

annoying though

#

but the gravity voucher set does this

pale holly
# slim ferry all 6s

lol
just really wanted to like, see how i could check the score of the current played hand, G.Chips doesn't work since it only count the total score

trim kite
pale holly
#

G.GAME.blind.chips (and not G.Chips my bad) is from what i get the total chips you scored in your blind, but what i search is the score just your hand is going to do

slim ferry
#

theres probably some function for it

#

because of the scoring parameters stuff

#

idk what its called though

frosty rampart
pale holly
frosty rampart
#

basically if SMODS.last_hand_oneshot is true then the condition you're looking for is true

slim ferry
#

whats the code for the food self destruct animation again? for some reason vanillaremade changed it to the generic SMODS.destroy_cards dissolve animation so i cant use that anymore

pale holly
#
calculate = function(self, card)
 if SMODS.last_hand_oneshot then
      G.GAME.blind.chips = G.GAME.blind.chips * 2
    G.GAME.blind.chip_text = number_format(G.GAME.blind.chips)
        end
    end```

i think this should work in that case
pale holly
slim ferry
#

yeah

#

but i forgor

#

what it does

#

in the event

frosty rampart
frosty rampart
pale holly
frosty rampart
#

context should work normally in boss blinds, your issue was because you were using it wrong

red flower
knotty copper
#

Question regarding SMODS.DeckSkin
Is it possible to have it so it uses two atlases and have each replace specific cards for the deckskin?
Like for a deckskin which replaces the joker, king, and queen but instead of using the default deckskin it uses a custom one?

stiff locust
#

your calculate doesn't have context in the brackets

#

for the function arguments

pale holly
#
SMODS.Blind {
    name = "boss_strong_eye",
    key = "boss_strongeyes",
    --atlas = "pseudoblinds",
    mult = 1,
    pos = { y = 0 },
    dollars = 5,
    loc_txt = {
        name = 'Strong Eyes',
        text = {
            'Chips requirement double if your hand score the requirement or more',
        },
    },
   boss = { min = 1, max = 2 },
    boss_colour = HEX('521844'),
    
calculate = function(self, card)
  if context.after and SMODS.last_hand_oneshot then
      G.GAME.blind.chips = G.GAME.blind.chips * 2
    G.GAME.blind.chip_text = number_format(G.GAME.blind.chips)
        end
    end
}```
stiff locust
#

where you put self, card make it self, card, context

#

I was right

pale holly
#

AH

#

alright

#

kind of surface trough this

#

thanks i'll try again

wind steppe
#

what's the cardarea for cards in the shop?

red flower
#

G.shop_jokers

stiff locust
red flower
#

that's me

pale holly
stiff locust
#

presents vanillaremade like a boss

pale holly
#

ngl the vanilla remade is probably the most handy thing for mod effects

#

-# I know that damn well since i rely on this a shit ton to code some of my jokers

compact valve
floral narwhal
#

it don't matter how many times i make these true they're always false

slim ferry
#

when do you make them true

#

and where

floral narwhal
carmine chasm
#

How would I save a create_option_cycle

floral narwhal
# floral narwhal

they come true in files im asserting (i made those true for test but they are false!)

carmine chasm
slim ferry
#

thats the same

carmine chasm
#

really

#

I didn't know

slim ferry
#

yeah

carmine chasm
floral narwhal
wispy falcon
#

How do I make a new line in this? Right now it shows them next to each other

                {
                    n = G.UIT.C,
                    config = { align = "bm", minh = 0.4 },
                    nodes = {
                        {
                            n = G.UIT.C,
                            config = { ref_table = card, align = "m", colour = G.C.GREY, r = 0.05, padding = 0.06 },
                            nodes = {
                                { n = G.UIT.T, config = { text = ' ' .. (Riddle or localize('chipstorm_none')) .. ' ', colour = G.C.UI.TEXT_LIGHT, scale = 0.32 * 0.8 } },
                                { n = G.UIT.T, config = { text = ' ' .. (Riddle or localize('chipstorm_none')) .. ' ', colour = G.C.UI.TEXT_LIGHT, scale = 0.32 * 0.8 } },
                            }
                        }
                    }
                }
            }```
#

-# I hate UI, too scary

carmine chasm
wispy falcon
carmine chasm
# wispy falcon Where?

try it in the quotes here { n = G.UIT.T, config = { text = ' ' .. (Riddle or localize('chipstorm_none'))

#

at text = '\n' ..

#

the bottom one

wispy falcon
carmine chasm
slim ferry
wispy falcon
carmine chasm
slim ferry
#

try putting the second piece of text in its own G.UIT.C

#

instead of having them both in the same

wispy falcon
slim ferry
#

nice

wispy falcon
#

Thank you

#

By the way, what is dyna text?

slim ferry
#

its like

#

text that can change while it already exists

#

like the E:whatever formatting options or like misprint description use it

#

<@&1133519078540185692>

#

i cant believe the real mmist or best would say thuis

#

thanks moderator!

wispy falcon
#

Thanks mods

#

Could I make it automatically add rows depending on how big a variable is? Like, instead of always adding

                            n = G.UIT.R,
                            config = { ref_table = card, align = "m", colour = G.C.GREY, r = 0.05, padding = 0.06 },
                            nodes = {
                                { n = G.UIT.T, config = { text = ' ' .. (Riddle or localize('chipstorm_none')) .. ' ', colour = G.C.UI.TEXT_LIGHT, scale = 0.32 * 0.8 } },
                            }
                        },``` myself, it would add 4 if the variable is 4, 6 if it is seven and so on?
spice wadi
wispy falcon
#

How do I have it in the second textbox though instead of the first?

#

In the one that says riddle instead of the top one?

hearty mesa
#

bump

#

nevermind

#

i removed the context.cardarea = G.jokers and it worked

lavish elm
#

ok I have 2 questions
1- what is an h_mult, h_chips, etc(saw it in the debug mod using the value command)
2- how to check for a specific char in jokers description

slim ferry
#

h_mult and h_chips is for unconditional held in hand mult/chips on enhancements

lavish elm
#

ok and for 2?

slim ferry
#

i dont know

#

thats why i only answered 1

lavish elm
#

oh ok thanks anyways

vale grove
#

when using paint.net if i resizethe joker for 1x/2x sprites, they always mush colors a little bit, is there a paint.net setting to prevent this?

frosty rampart
#

set Resampling to Nearest Neighbor

#

in the resize prompt

vale grove
#

hey yall im trying to recreate 8ball but slightly different and when i run the code it says this "get_probability_var" is a nil value,

cursive gazelle
vale grove
slim ferry
vale grove
slim ferry
#

that should be correct

vale grove
cursive gazelle
#

Is this the new probability stuff ?

slim ferry
#

yes

cursive gazelle
#

I liked pseudorandom more

clear ocean
#

is the colour scheme for the voucher good (will do the art later)

slim ferry
#

its just more limited

#

the old way

vale grove
#

most of this is copied straight from 8-ball i havent made many changes yet bcs i wanted it to work first

vale grove
red flower
#

title screen

slim ferry
#

on the crash screen it should say that

#

or there too

red flower
#

as well yes

vale grove
#

one sec

#

oh

#

i havent updated smods in awhile on this laptop lol

#

im assuming 1.0.0 beta is not the most recent version XD

slim ferry
#

well

#

the numbers after it

#

are what you should look at

vale grove
cursive gazelle
#

0827c

clear ocean
slim ferry
vale grove
#

yeah thats on me

#

lol

cursive gazelle
vale grove
#

havent touched it since on this laptop lmao

cursive gazelle
#

What about your lovely version

vale grove
slim ferry
#

crash screen and uhhhhhhhh

cursive gazelle
#

The console

slim ferry
#

oh or there

vale grove
#

oh crash screen is ez

#

im 2 clicks away lol

slim ferry
#

lmao

cursive gazelle
#

0.8.0 is the latest

vale grove
slim ferry
#

ah

#

yeah update lovely too

cursive gazelle
#

Ancient lovely

vale grove
#

that might be why another thingy i tried earlier didnt work

cursive gazelle
#

Update to windows 11 while you’re at it

vale grove
#

top 10 smart by me

vale grove
#

but this laptop came with it preinstalled

cursive gazelle
#

:(

vale grove
#

my main pc doesnt have it tho

#

thank god

slim ferry
#

binbows

cursive gazelle
#

Surely you have the latest balatro update

vale grove
#

i sure do hope so

slim ferry
#

1.0.1o is the latest yeah

cursive gazelle
#

1.1 in 2026

vale grove
#

how do i delete old SMODS

#

do i just remove it from my mods folder?

slim ferry
#

yeah

cursive gazelle
#

1.1 better be good

vale grove
#

considering hes delaying it

slim ferry
#

i trust thunk to cook with it

vale grove
#

a man wont work on an update for so long and still delay it if it isnt cinema

cursive gazelle
#

🙏

vale grove
#

do i update lovely in the same way as smods?

#

im assuming no right

clear ocean
#

even if it wasn't the best update, let thunk take his time. the fact he is willing to even update the game is honestly a good sign, as some folks would just take the money and run

vale grove
#

is bro from the future 😭

wooden nexus
#

How do i check if rank is a Jack, Queen, or King? (I want them individually not just face cards)

red flower
vale grove
#

bcs thats lovely

slim ferry
true jasper
slim ferry
#

it doesnt matter

red flower
clear ocean
slim ferry
#

wasnt implies the update is already out

vale grove
#

true that but i still am excited

wooden nexus
#

Okay thanks. I just wanted to make sure get id was 11-13 or j, q,k

clear ocean
#

and its good to be excited

vale grove
#

which does naturally come with expectations

#

but im very confident

#

that hell cook

wooden nexus
#

Trying to use my code for Pelters from Parallel Updates to make Blaze

vale grove
wooden nexus
#

Well a modified version of blaze

#

I feel like this is too easy to do so I decided JUST 1 of each

static valley
#

making a mod filled with inside jokes between myself and my friends. gonna implement a legendary joker that's just Vile from MegaMan X (adds a permenant *1 mult for every time you mess up [failing wheel of fortune, triggering boss blind effects, etc])

vocal helm
#

YOO hell yeah Mega Man X rep

#

(btw that would be busted as hell b/c lucky cards and cavendish exists)

static valley
#

yea that's why i made it legendary

#

now for the tricky part: actually coding it in-game

vocal helm
#

oh i did that with one of my jokers it's not too bad

static valley
#

the first thing I learned to code was a joker that adds 1% of the blind's requirement for every scored ace in a hand, so I sorta figured it out

vocal helm
#
    calculate = function(self, card, context)
        if context.pseudorandom_result then
        
            if not context.result then
                return {
                    message = "Message goes here",
                    colour = G.C.FILTER,
                    func = function()
                        -- change goes here

                    end
                }
            
            end
        
        end
    end
#

you'd have to add the xmult thing after this though

static valley
#

as for why the getting stronger for every time you mess up in a run, it's because Vile is a recurring boss in a friend's dnd campaign, and he keeps rage baiting the party (perfectly in-character tho)

vocal helm
#

lol awesome

vale grove
#

does someone happen to have that github page that explains how to do the correct color scheme for descriptions?

vocal helm
vale grove
#

thank yo utwin

mystic river
wild berry
#

applying a seal causes a crah

#

crash

ocean sinew
#

what crash

wild berry
#

game crashes after applying a seal

idle plaza
wild berry
#

nvm i made it work now

green mica
#

Oh dear, my meddling has had consequences beyond my understanding

rotund sable
#

Oh god

#

Have fun

green mica
#

Also whenever I discard a card it stays in my hand but counts as discarded so it's flipped and uninteractable

#

This is what I get for messing around in the event manager

slim ferry
#

small blinds and big blinds as bosses are

#

very broken lmao

green mica
#

What... is happening

#

I didn't have any jokers

slim ferry
#

doesnt the boss small blind crash the game when you beat it

distant junco
#

saved by the ghost of mr bones

slim ferry
#

Mr. Ghoul

distant junco
#

the ghost of christmas past

green mica
#

I'm trying to implement custom small and big blinds but there's a few places in the code I gotta change so that it doesn't check for specifically small and big blind, but hooking those functions is pretty tricky

#

Especially cause I'm getting weird stuff like this instead of crashes

slim ferry
#

steal from ortalab

green mica
#

I'm kinda having fun figuring it out myself though, I'm learning a lot about lua this way haha

slim ferry
#

yeah fair

vapid flume
#

jimbo will not stop spawning even when i have jimbo what in the world could be trying to spawn here im so confused

slim ferry
#

how...

red flower
#

did you make a rarity or comsumable type

vapid flume
#

that woul dexpla ina lot ohmy god

#

god damn yo ustupid rarities i made for vanity purposes blehhh

vale grove
pseudo furnace
#

Is there a way to count the times played of a certain card (like every 10th played 2)?

slim ferry
#

use a variable in the joker as a counter

frosty rampart
#

see VanillaRemade Yorick for similar behavior, it won't help with detecting played 2s but it does show how the counter works

pseudo furnace
#

On it thanks!

static valley
#

I plan on making this draw 2 additional cards at the start of a blind (2 playing cards of random ranks, suits, editions, and seals). What rarity should it be?

wild escarp
#

Is there a table with all playing cards?

red flower
#

all cards in a run or all prototypes or what

wild escarp
#

In a run I guess? Trying to destroy all but one random card in apply for a challenge.

red flower
#

G.playing_cards

wild escarp
#

hmm, I suppose that doesn't exist when the apply function for a challenge runs then? Because I'm getting a table expected, got nil crash when I use that.

wild berry
#

how can i check if a card has an enhancement at all

slim ferry
vale grove
#

i have a card that generates tarot cards (like 8-ball) but when i have multiple of the same joker proc at the same time it gives
this error

slim ferry
#

G.GAME.consumeable_buffer is a number that should be increased

#

its not a true/false

vale grove
#

G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1 and G.GAME.dollar_buffer == (G.GAME.dollar_buffer or 0) + card.ability.extra.dollars
this is currently what the line looks like

#

dollar also isnt working when it was before but im gonna fix that later

slim ferry
#

is the line exactly that?

vale grove
slim ferry
#

because and returns a true/false if both sides exist

loud summit
slim ferry
#

use a semicolon to do multiple things on a single line

vale grove
slim ferry
#

G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1; G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + card.ability.extra.dollars what your code would look like with that

vale grove
#

oh like that

#

but that doesnt fix my issue does it?

slim ferry
#

it should

#

since first you has == which returns true/false

#

rather than setting the value

vale grove
#

oh it does work

#

another relating issue how do i make it not generate a card if i dont have consumable room?

spice wadi
#

"and" doesn't do multiple things, it checks if the things on the left and the right are both true
At least from what I understand

true jasper
wild berry
#

how can i get a card's enhancement (like lucky card, or stone card)?

#

and is the base version "c_base"?

slim ferry
true jasper
wild berry
#

no like

#

get it

#

not a check

slim ferry
#

SMODS.get_enhancements(card)

#

returns a table because quantum enhancements exist

#

🥀

#

you can alternatively just check card.config.center.key

wild berry
#

oh ok ty

slim ferry
#

but using the function is probably better

vale grove
#

i put it in my function that adds the card itself but it doesnt work

#

am i supposed to do it at the start of the calculation?

slim ferry
#

if statement

#

if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then

wild berry
#

this good?

#

wait shit the pairs

slim ferry
#

its just a table of [enhancement key] = true

#

you dont need to pairs

wild berry
#

oh

slim ferry
#

well

#

you might need to

#

to find anything other than c_base

vale grove
#

that second part i removed is not true

slim ferry
#

did you remember to set G.GAME.consumeable_buffer back to 0 in the creation event

vale grove
#

i did not

slim ferry
#

thats probably it then

vale grove
#

i hope that works

#

than i can tackle the issue of why doesnt the money work XD

vale grove
slim ferry
#

whats the code look like?

vale grove
#

didnt mean to send that lap of txt lol

slim ferry
#

you should increase the consumabe buffer after the check for space

#

also currently the dollar buffer only gets reset if you have space

vale grove
#

so inbetween then and return on row 142 i should add consumeable_buffer +1?

vale grove
#

although theres a deeper issue with dollar

slim ferry
vale grove
#

bcs it didnt work even before trying to add this must have room

slim ferry
#

yeah because

#

you arent actually giving the money anywhere

#

you should add dollars = card.ability.extra.dollars to the return

wild berry
#

how can i remove a seal

vale grove
#

i tried removing the comma and replacing it with ; and both didnt work

slim ferry
#

G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1

#

like you did before

wild berry
#

yeah

#

you dont just do the variable plus 1

#

because youre assigning it to nothing

unkempt thicket
#

How do you check if or what challenge you're on?

vale grove
#

okay so i added it like this but now it stops generating at 1 again

#

oh nvm

#

figured it out

slim ferry
#

oh ok

vale grove
#

its the +1 that somehow flash stepped back

#

now the money

#

gulp

#

when i try to change the message and colour on it i get this

#

wait i might have fixed it myself

#

i have

#

okay so now why doesnt money work

slim ferry
#

are you actually adding money in the code

#

in some way

vale grove
slim ferry
#

whats the return look like

vale grove
slim ferry
#

yeah you

#

misspelled your own variable i think

#

isnt it card.ability.extra.dollars

vale grove
slim ferry
#

😭

vale grove
#

in some it uses dollars and in some dollar tho?

#

not in the one i just added

slim ferry
#

well

vale grove
#

are all of them supposed to be the same

iron steeple
#

is there a parameter to identify the area in which cards are created in context.create_card? i want to identify moments jokers are created by other cards like judgement/invisible joker, but not when they're created for the shop/booster pack

edit: whoops turns out i needed context.card_added for what i wanted, triggers when a card is added to the cards you own

slim ferry
vale grove
#

dollars

slim ferry
#

then you do card.ability.extra.dollars

vale grove
#

okay so it is just one letter thats missing

#

absolute peak

#

it doesnt work if i dont have space tho

slim ferry
#

well

#

because you have the dollars in the space check

#

uhhh

#

hold on

#

before the check for space add the following

vale grove
#

another thingy is it possible to include the money at the same moment as the tarot

#

bcs i want it to have one like " whoosh" proc bcs now it does +2 money and then woosh

slim ferry
#

oh i see

#

uh i have

#

no idea

vale grove
#

oh god

#

when you have no idea im cooked

slim ferry
#

it should like

#

do at the same time as the money

vale grove
#

if it helps i did copy some of this code from business card which triggers when playing a card

#

but first the issue of why doesnt it work if i dont have money

slim ferry
#

it should work just the same

#

whats the full code

#

currently