#💻・modding-dev

1 messages · Page 514 of 1

slim ferry
#

it shouldnt need that normalyl

cursive gazelle
#

Fixed the ui

#

Finally

distant junco
#

yo, where message = "Dingus!" is, how would i delete the card under those conditions

red flower
distant junco
#

what, like what my joker does?

red flower
#

yes

distant junco
red flower
#

you need context.destroy_card for this instead of what you're doing

distant junco
#

oh right

#

how do i do that

thorn basin
#

Small question: if I don't have any configuration options (since my mod just adds jokers, consumables, enhancements and nothing revolutionary like Aikoyori's letter cards) does that mean that I'ts not necessary to make configuration options?

spice wadi
thorn basin
#

oh

#

aight

red flower
# distant junco how do i do that
if context.destroy_card and context.cardarea == G.play and context.destroy_card.ability.perma_mult >= 5 then
     return { remove = true }
end
distant junco
#

ahhhh okay that makes sense

red flower
#

i forgot the cardarea check

thorn basin
#

i mean setting_1, setting_2, etc.

distant junco
spice wadi
#

It's stored in smth like [your mod].config

#

You still need to make a menu if you want people to be able to change them

#

It's not too hard

thorn basin
red flower
spice wadi
thorn basin
#

aight

#

thx

distant junco
thorn basin
#

then gotta get rid of my config since I have nothing too game changing

cursive gazelle
#

Ever just edited a whole code and wondered why its not working and then you realized you been editing the backup file

red flower
#

no

cursive gazelle
#

Well i did now

spice wadi
#

You should use GitHub if you're not already

cursive gazelle
#

Like edit on github ?

#

Or save backup

#

Btw have you noticed that the config tab has no black background but other tabs do
(I added it anyways )

#

Can i insert a png to this ? (I assume i can since mod icons are images )

red flower
#

yeah you can make it an smods atlas and create a sprite object

distant junco
red flower
#

it will destroy cards in hand too

distant junco
#

ahh

cursive gazelle
#

How do i take ownership of a joker

red flower
#

read the docs

thorn basin
#

I made a resprite description in the localization file but for some reason it doesn't appear in the info queue

#

only the first one appears

daring fern
thorn basin
#

oh

daring fern
thorn basin
daring fern
thorn basin
#

aight

daring fern
thorn basin
#

aight

thorn basin
#

instead of the name and description of the 2nd info queue

daring fern
thorn basin
#

oh so I should remove the "rd" in the third screenshot?

#

or the whole "rd_SM_secun"?

daring fern
thorn basin
#

SM is the prefix of my mod btw

daring fern
thorn basin
#

aight

spice wadi
# cursive gazelle Or save backup

It's not really a backup, it's where your code should be stored
Not only for keeping it safe but also for security reasons when getting people to download/use it
Instead of saving copies of your files when you change things, it just remembers the changes you made

cursive gazelle
#

I see

#

Thanks

thorn basin
red flower
#

im pretty sure using your own custom descriptions table doesnt parse the descriptions

#

you need to use Other or hook the code that does it

thorn basin
red flower
#

try changing RespriteDescription to Other in both places

thorn basin
red flower
#

i do recommend that you add the modprefix back (in both places) so it doesnt conflict with other mods

thorn basin
#

so like "modprefix.Other"

#

right?

red flower
#

no, i mean in the key

thorn basin
#

oh aight

lament agate
#

new N' pfp??

red flower
#

yes

cursive gazelle
#

Trying to make a flip mechanic like joyous spring
I don’t know how to assign effect based on flipped or not or how to punish them (yet)

arctic lion
#

Has anyone tried editing probabilities using skip tags before? I've tried smushing the oops logic (from vanillaremade) into a tag but it doesn't work (since numerator is nil), don't really know how else to fudge it, is it missing functionality in SMODS? I've checked the documentation and I can't really see a way to make it work directly

red flower
#

tags dont have the same contexts or functions as other objects so you cant use the same logic

#

you would need to hook the new smods probability functions

arctic lion
#

is there any documentation on that? checked all the ones that seem relevant on here but nothing about probability https://github.com/Steamodded/smods/wiki/

GitHub

A Balatro Modding Framework. Contribute to Steamodded/smods development by creating an account on GitHub.

red flower
arctic lion
#

ah in the actual releases, gracias

red flower
#

i dont think the functions are actually explained there tho

#

you would need to check the code

#

ah no they are i just skipped over them lol

cursive gazelle
#

N i’m losing it

#

This is unreasonably hard

red flower
#

whats up

cursive gazelle
#

Trying to ass a spectral card that adds a button to jokers / cards simultaneously
This button will flip the card
Also added a flip all if you have multiple cards selected
I want this effect to add a shader (maybe ) to cards in the future to indicate they can be flipped
My issue is i
Want to add a special effect to flipped cards

#

And idk how

red flower
#

wdym special effect

cursive gazelle
#

I really don’t know

#

Tried implementing your graveyard but it turned to be hard so i gave up

red flower
#

no, but I don't understand what you mean by special effect

#

like a visual one? or an in-game effect

cursive gazelle
#

How Can i disable effect of flipped jokers ? And add another effect

#

Like replacing the original effect

red flower
#

You would probably have to hook calculate_joker

#

In my mod I do it manually for each joker because its a mechanic that only affects them

cursive gazelle
#

I can apply my mechanic to cards and jokers

#

Thats why

red flower
#

yeah you will need to look into smods's calculate logic

#

and stuff

cursive gazelle
#

Rip

#

I can hook it into an edition technically

#

Can i make an edition debuff said joker

red flower
#

yeah

cursive gazelle
#

Thats 1/5 the way there

#

Do i need to patch the debuff

red flower
#

also keep in mind jokers are flipped face up after each blind

cursive gazelle
red flower
cursive gazelle
#

Shouldn’t really be a problem

#

Okay so how can i made a cardarea and make it contribute in scoring

cursive gazelle
red flower
#

also <@&1133519078540185692>

#

ty mods

stoic void
#

these bots are getting out of hand

#

I have a server that i only send the invites to myself, 9 people are on it and 3 bots have joined

cursive gazelle
#

There’s a moderation bot , they can set a role that gives you access to sending images /links to new people who join after 10 hours or so
But they can just stay in the server and send the scam later

cursive gazelle
stoic void
#

Im guessing it was CaBT ?

#

normally the pfp gives it away, ai generated or one of the basic discord characters

magic trellis
#

Can you mod on Xbox game pass?

stoic void
#

Can you?
idk

cursive gazelle
#

Modding only for steam version

magic trellis
#

I play on Xbox so I was curious

cursive gazelle
#

I hear they’re working on making the gamepass balatro on pc work

magic trellis
#

Or maybe on Xbox app to manage your games

cursive gazelle
#

You can buy the game on steam and mod it if you wish

magic trellis
#

How much is balatro I don't have a pc they are making a new Xbox where you can use steam

cursive gazelle
#

Sadly you can’t mod it on xbox

magic trellis
#

Yeah sad

spice wadi
#

Balatro is like $10

#

I don't know enough about this new Xbox to tell you if modding the steam version on that is possible

magic trellis
#

Yeah my friend told me about it on a group chat on cbox

#

*Xbox

spice wadi
#

I know of it

#

I just don't know the specifics of it

#

maybe you can mod games on it

magic trellis
#

Hopefully

teal yoke
#

Is from asus

cold willow
#

Been brainstorming joker ideas while I cant actually mod Balatro

#

One im fond of is some sort of cultist or mage that just gives playes cards a random enhancement, like tags or editions

#

But only when cards dont have those

#

Another fun one would be an "overload", that has a high chance of giving 1.5x mult and a low chance of giving 0.5x mult

trail tide
#

How do I create a booster pack with some of my custom jokers? I already created the booster pack, but what do I put into create_card so it contains jokers I need?

cursive gazelle
#

If they’re jokers you need to make a pool

#

If they’re a custom consumables you put the consumable set key

trail tide
cursive gazelle
#

You can make a local table and all your joker keys to it

modern kindle
#

Good schmorning chat

red flower
#

omg dilly

modern kindle
#

Omg its N

red flower
#

hii

modern kindle
#

Hihi how are you

red flower
#

im doing fine thank u wbu

cursive gazelle
#

I’m in agony coding shaders

red flower
#

normal

modern kindle
#

Im still waking up but feeling alright
I think i somehow caused a bruise on my leg in my sleep cause I can kinda feel something on my leg when I move it

chrome widget
#

Weh

marsh crane
#

Hello every1 i need help with my mod, i have problems with dofile i dont know how but it always crashes beacuse my main cant find the lua files. I tried everything even Chat gpt or Gemini couldnt help i even reinstaled smods pls someone help

crimson oracle
#

anyway i am w this guy

#

guyse pls help us

#

we lvl 1 noobs we need help form lvl 100 boss

#

please 🙏 😭

#

aye N sup

red flower
#

idk what dofile is but use SMODS.load_file instead

crimson oracle
#

bet

marsh crane
#

Thats all

#

?

cursive gazelle
red flower
#

i didn't read all of it

crimson oracle
#

holy there are letters of the alphabet helping us

#

thanks guys fr fr

#

ama check is this works

marsh crane
#

Omg

crimson oracle
#

LES GOOGOGOG

cursive gazelle
#

Why are you guys editing on notepad

crimson oracle
#

N MY GOATTT

crimson oracle
marsh crane
#

Ty we sat down like 2 h

crimson oracle
marsh crane
#

Im not gome

#

Home

#

So

crimson oracle
#

and navbiga iant home

#

BUT HOLY SHIT THANKS YALL

marsh crane
#

You saved us

cursive gazelle
#

Good luck modding guys

crimson oracle
#

nvm ts dosent work 😭

#

no jokers

#

fduckckcxk

frigid cargo
crimson oracle
#

so guys sorry for beggin anyone anything? 😭

cursive gazelle
#

Wait let me check the code

hybrid shadow
# crimson oracle

is it bc youre looking for a subfolder in your load but theres no subfolder

marsh crane
#

We had subfolder

crimson oracle
#

cook*

marsh crane
#

But we deleted beacuse doesnt work

hybrid shadow
#

you dont need to include the name of your main folder in the load

#

its searching from where your main.lua is located

cursive gazelle
#

SMODS.load_file(“filename.lua”)

#

I believe this is the syntax

hybrid shadow
#

youd only need "folder/filename.lua" if you had a subfolder, like if you put the files in a subfolder called src it would be "src/filename.lua"

red flower
#

to run the function

hybrid shadow
#

oh yeah that wasnt there

crimson oracle
#

ts dosent work

frigid cargo
#

Bump

marsh crane
#

Oh ok

crimson oracle
#

still ts dosent work

spice wadi
crimson oracle
#

yea?

#

yep it dosent work

#

shows this

#

even w the () at the end

#

:(((

cursive gazelle
crimson oracle
#

wdym

marsh crane
#

??

crimson oracle
#

😭

cursive gazelle
#

SMODS.load_file(“file_name.lua()”)

crimson oracle
#

oh

#

bet

marsh crane
#

Ohhh

#

I feel like an idiot

crimson oracle
#

SAME ONG

#

dosent work 🎣

#

bro i feel like fucking sisyphuss

#

what is this torture

cursive gazelle
#

Just put them all in one file …

crimson oracle
#

😭

#

I HAVE IT THERE 😭

cursive gazelle
#

Oh I’m sorry

crimson oracle
#

wait

#

navbiga yapping tru call rn

#

holup i might be the dumb one here

cursive gazelle
#

assert(SMODS.load_file("file.lua"))()

#

Try this

crimson oracle
#

bro lowky S you the goat man

#

bet

cursive gazelle
#

Add /src/ if you have a subfolder

spice wadi
#

doesnt have to be src, just whatever the name of the folder is

cursive gazelle
#

I think thats common knowledge

crimson oracle
#

you carry anyway man 😭

spice wadi
cursive gazelle
#

Wallahi shaders are making me cry

crimson oracle
#

i will kms

#

💔

cursive gazelle
#

You styped scr dude

spice wadi
#

^^^

crimson oracle
#

oh

spice wadi
#

if you put it in src then yeah that wont work haha

cursive gazelle
#

Please don’t end yourself

#

There are more frustrating things in life

#

Like coding shaders

crimson oracle
#

opps

cursive gazelle
#

Did it work?

crimson oracle
#

EYSYSYYEE

#

okay

#

it did

#

its navbigas fault now he forgor to code smthn

marsh crane
#

I think ot works it dod an eror from the file

crimson oracle
#

BUT THE THING DOES WORK

marsh crane
#

It

cursive gazelle
#

Great

marsh crane
#

Did

crimson oracle
#

again

marsh crane
#

Ty bro

crimson oracle
#

man

#

thank you S

#

you the absolute goat

cursive gazelle
#

Np
If you have any other issues ask

marsh crane
#

Now its just the key I forgot

cursive gazelle
#

If you can’t code properly
There’s a website called joker forge

#

Helps a lot

crimson oracle
#

no but jokes aside

#

thanks man

#

😭

chrome widget
#

More challenges today

cursive gazelle
#

You can start by making jokers there and learning from the code

cursive gazelle
chrome widget
#

I will do challenges for a few hours then be gay for a few hours then write for a few hours

cursive gazelle
#

Winter do you know where i can find any shader resources ?

#

I’m in agony
I’ve been coding shaders since morning

chrome widget
#

The love.graphics.newShader API page and googling "[thing you need to do] GLSL" is basically what I've used

#

Otherwise I'm fairly good at shaders and might be able to help a little myself, but no guarantees

cursive gazelle
#

The combat background from deltarune if you played it

chrome widget
#

Haven't, no

cursive gazelle
#

1 sec

chrome widget
#

Ok yeah that's pretty simple

cursive gazelle
#

I’v been stuck since 9 am
It’s 5:41 pm

chrome widget
#

I have a shader I use that does a similar thing, I can get back to you on it once I'm back from lunch

cursive gazelle
#

@ me then and enjoy your lunch

#

Thanks for the help beforehand

crimson oracle
#

ref what is this please there aint nothign like this in my folder 😭

chrome widget
#

That is, uhh, certainly a username

cursive gazelle
crimson oracle
#

when we load the game

#

navbiga had some issues like forgetting , and stuff

#

but this is kinda new

marsh crane
#

,

chrome widget
# cursive gazelle @ me then and enjoy your lunch

Basic overview

  • in whatever draw step handles the shader, you need to set a specific shader wrap mode that love enables to get the correct result you want
  • you need to pass in a time variable to get the scrolling effect (template Balatro shaders do this, but I've had trouble using the time variable it passes for whatever reason?)
  • you do a modulo operation while "stepping" the coordinates of the texture you want to draw, so it slowly shifts in one direction, the wrapping mode makes it fill in where it moves away, and the mod wraps the timer mode so it doesn't get to an excessively high number
#

I think the time variable passed by default is a static number actually

#

It's used in the dissolve effect though

cursive gazelle
#

I see

wintry solar
#

You want the second value in the name of the shader variable

#

That should contain the time

chrome widget
#

Ah I see. I typically don't use the default name shader variable

wintry solar
#

You have to use it somewhere

#

Otherwise it’ll crash

chrome widget
#

Nope

wintry solar
#

Shaders do not like unused values

chrome widget
#

I have multiple shaders that exclude it

#

It's just all the vanilla shaders do make use of it

wintry solar
#

Have you got an example I can look at?

chrome widget
#

Sure

cold willow
#

ok question

#

do you guys use LOVE2D for the edits or smthg else?

frigid cargo
#

Bump

chrome widget
#

Every shader, if you retain the dissolve effect and call draw_shader, does need a dissolve value (as well as the others used in the dissolve_mask() function). But shaders don't need their own names variables and I rarely use them because they're automatic and I like having more control. The vanilla ones all use their named one is their effect function and I just don't.

wintry solar
chrome widget
#

That said if it does have the key it'll pass it from uhh ARGS.send_to_shader or w/e

wintry solar
#

I thought if it was passed through you had to have something to receive it

chrome widget
#

It needs to be used if it's declared in the file

wintry solar
#

Yeah, I didn’t realise you didn’t need to declare it though

chrome widget
#

GLSL is weird and bullshit

#

But hey 20 smth year old shader standard so what can ya do

#

The shader in action is this: perspective transformation on the passed in texture so I can apply the blind chip visuals to these card that apply permanent Blind effects

#

(conversational excuse to flex)

cursive gazelle
#

And i am here unable to make a simple shader

crimson oracle
#

heyyy

#

s

#

man

#

sorry for begging like thisd

#

😭

cursive gazelle
crimson oracle
#

when you launch the game

cursive gazelle
#

Also send full crash log

crimson oracle
#

bet

#

here

cursive gazelle
#

Can i see the code for the joker

crimson oracle
#

yes ofc

rough furnace
#

early morning wilso appearance

cursive gazelle
#

did u set the main folder in .json to the file you're loading the files from.

red flower
#

hi wilsonn

crimson oracle
#

yea?

crimson oracle
cursive gazelle
crimson oracle
#

thank you lad 😭

cursive gazelle
#

i hate dealing with crash logs , sorry

red flower
#

pls do not ping me for troubleshooting
if i dont help its because idk or im busy

cursive gazelle
#

my apologies

frigid cargo
#

Bump

rotund sable
marsh crane
#

But we added the rarity

rotund sable
#

rarity 5 isn't a thing

crimson oracle
#

we coded it

#

it is now

rotund sable
#

if its a custom rarity its modprefix_key

wintry solar
#

Oh there are some vanilla destroy effects that don’t use that context yet, will be fixed in a future smods update

crimson oracle
rotund sable
#

what's your custom rarity key?

chrome widget
#

You can make a 5 rarity, it'd need to be a string '5' though

cursive gazelle
chrome widget
#

And like setting prefix config to false

rotund sable
#

FBPMod_Creators Rarity but im not sure if spaces work

trail tide
trail tide
crimson oracle
#

YIOEWHIOUWEDFYHUIOWEF

marsh crane
#

Omg

crimson oracle
#

YOOO

#

IT WORKSSS

#

LES FUVCKIILWD LVHIBILDVYH

marsh crane
#

It works

crimson oracle
#

LES FUCKING GOGOGOGO

marsh crane
#

Ty

crimson oracle
#

THANK YALL HOLLYYYY SHOWEHUIHUIOERWHUO

errant arrow
#

my art for sprites needs work...

cursive gazelle
#

I didn’t notice the rarity being 5 mainly issues occur in the calculate function so that’s where i jumped

cursive gazelle
errant arrow
#

im getting the first set of joker sprites ready just so my brain doesn't get confused with 6 jimbo

#

well, the sprites get imported... but they bleed into each other.

#

fixed it

rotund sable
#

to be honest, is this my fault or handy's fault?

#

-# it was mine, i forgot an s

errant arrow
#

spelling gets all of us

frigid cargo
#

Bump

red flower
cursive gazelle
#

My shader is working

#

Finally

#

It took

#

The whole day

frigid cargo
red flower
#

but what are you trying to do and what doesnt work

chrome widget
cursive gazelle
#

I figured it out finally

#

But i have some questions

#

Can i add a shader for the back of card ?

#

Do i use drawstep ?

chrome widget
#

Sure!!

#

there's a DrawStep for card backs already if you just want to hook that'

#

or you can make your own and take example of what it does to specify only drawing for back facing cards

cursive gazelle
cursive gazelle
#

Back and front

chrome widget
#

From smods/src/card_draw.lua at line 385

    key = 'back',
    order = 0,
    func = function(self)
        local overlay = G.C.WHITE
        if self.area and self.area.config.type == 'deck' and self.rank > 3 then
            self.back_overlay = self.back_overlay or {}
            self.back_overlay[1] = 0.5 + ((#self.area.cards - self.rank)%7)/50
            self.back_overlay[2] = 0.5 + ((#self.area.cards - self.rank)%7)/50
            self.back_overlay[3] = 0.5 + ((#self.area.cards - self.rank)%7)/50
            self.back_overlay[4] = 1
            overlay = self.back_overlay
        end

        if self.area and self.area.config.type == 'deck' then
            self.children.back:draw(overlay)
        else
            self.children.back:draw_shader('dissolve')
        end
    end,
    conditions = { vortex = false, facing = 'back' },
}```
cursive gazelle
#

Thanks a lot

frigid cargo
red flower
#

also print('test1')

#

please dont override the print function lol

frigid cargo
#

Oh ok thanks i was just following someones orders yesterday ill let you know when i test it out

chrome widget
#

Having trouble figuring out if an issue I'm having with the mod_probability context is user error, a CardSleeves bug, or an SMODS bug

trail tide
# trail tide YO

Now by the way how do I make it not say ERROR at the bottom? Right now it looks like this

proven belfry
#

is set in SMODS.add_card for consumables the consumable type or just Consumable?

#

making a joker that makes a random consumable of any kind

red flower
#

i think "Consumeable"

#

it might be "Consumable"

proven belfry
#

will try

red flower
#

why does cardsleeves have everything in one file

cursive gazelle
#

Does draw step update ?

proven belfry
#

is if context.setting_blind a valid context

red flower
#

drawstep runs every frame

wintry solar
#

Before we split stuff up

wintry solar
#

Galdur is the same

chrome widget
#

If Larswjin wants me to give it a facelift I can lol

proven belfry
#

can I just poll consumable types

red flower
#

did you try both

proven belfry
#

no

#

just set = 'Consumable'

red flower
#

well try the one i said first

proven belfry
#

doesnt work

red flower
#

rip

severe quarry
#

hi, i want to make a mod that removes all jokers and consumables and adds new ones, is there a template to remove everything or how can i do it?

proven belfry
red flower
proven belfry
#

im dumb

#

can I fix the fact that inside my custom booster there is text that says "ERROR" at the bottom of the screen

#

also how do I make boosters more common

frosty rampart
cursive gazelle
#

#

Draw step keeps updating every frame so my shader doesn’t animate

#

@chrome widget any idea?

errant arrow
#

Question, would Epic be rarity = 4

cursive gazelle
#

4 is legendary

chrome widget
errant arrow
#

Huh

#

Okay.

cursive gazelle
proven belfry
red flower
#

cry_epic

chrome widget
#

It would be updating/resetting some kind of time variable that should have advanced since the last frame

cursive gazelle
#

Oh nevermind

#

I fixed it

#

Yeah it was the time variable lol

chrome widget
#

nods nods

frigid cargo
cursive gazelle
red flower
cursive gazelle
#

Time to add my own cararea

chrome widget
cursive gazelle
#

Its funny lol

frigid cargo
sonic cedar
modern kindle
#

i feel like it is certainly G.P_CENTER_POOLS.Booster for sure in one of the images

frigid cargo
#

Is there a way to change a hook from the jokers code?

chrome widget
#

Greetings Dilly!!!!

modern kindle
#

winter the almighty beauty

#

how are you

chrome widget
#

hehehehehehehehe ❤️

#

doing okay

modern kindle
#

im glad to hear

#

i made myself a burger if u would like one

chrome widget
#

already full rn but I appreciate the offer lol

modern kindle
#

okay but what if i say its a very good burger

#

does that change ur answer

chrome widget
#

no

modern kindle
#

damn

chrome widget
#

tumby full

modern kindle
#

i guess ill freaking explode

stiff locust
#

functions/misc_functions.lua:1812: attempt to get length of local 'line' (a boolean value)
anyone know what this error means

chrome widget
#

Something in your localization is formatted wrong

stiff locust
#

oh shit

#

I used a < instead of a , to end a line

sonic cedar
#

hiiiii winter are you win ning

chrome widget
#

generally

sonic cedar
#

awesomeness

sonic cedar
modern kindle
#

i wont taste so yumby

frigid cargo
#

What if i dont have a sense of taste

modern kindle
#

then i will become you

frigid cargo
chrome widget
#

im good at programming, I'm kind, I have an nice butt and boobs I grew myself, and I have four wives. can't get much better than that
-# having an income would be nice

modern kindle
chrome widget
#

I mean

#

shrug I flirt with my friends and I typically mean it lol

modern kindle
#

lmao

chrome widget
#

that said I need to get a stable job not draining somebody else's personal income 😭

modern kindle
#

what kinda job would you like, just anything or smth specific

chrome widget
#

just a game design or programming job

modern kindle
#

gotcha gotcha

frigid cargo
sonic cedar
chrome widget
#

With me, usually

modern kindle
#

thats all modding dev ever was

sonic cedar
frigid cargo
modern kindle
#

traditionally theres no such thing as a woman on the internet, in here theres no such thing as men
we are all women in this chat and we all love each other

chrome widget
#

I mean like three of my partners are women, and one of them looks like they might be heading that direction

cursive gazelle
#

Can i sue you for forcefully assigning me a gender isn’t mine

modern kindle
#

women are so cool i love them, 10/10

sonic cedar
frigid cargo
red flower
#

winter is so cool

modern kindle
#

N my goat

#

love that guy

cursive gazelle
#

I love winter
She helped me fix my shader

modern kindle
#

i love winter

shes winter

red flower
#

i hate n

#

terrible guy

chrome widget
#

girliepip i did nothing I had boneless wings from sonic drive-in

frigid cargo
#

N’ my goat

modern kindle
frigid cargo
#

Winter saved me from a burning apartment once

sonic cedar
modern kindle
#

winter once shot me, brought me back, then nursed me back to health and gave me a high five after saying 'eh, you couldve done better'

#

my goat

chrome widget
#

hm

modern kindle
#

also i cant believe winter lost coolness points for the travesty of 'boneless wings'

#

smh my head

chrome widget
#

sonic doesn't sell traditional wings

frigid cargo
#

Ive never had sonic once

chrome widget
#

they sell Premium Chicken Bites™

modern kindle
#

i think the thing i like from sonic is the fuckin..chili dogs?

#

weirdly ive been liking those

#

theyre nothing special

#

but theyre nice to me

frigid cargo
modern kindle
#

lowkey i could take sonic in a fight

frigid cargo
#

N’ could also take sonic in a fight

#

N’ my goat

modern kindle
#

N could rule the world

chrome widget
#

i mean a restaraunt doesn't have to be smth special, just gotta fuel me

modern kindle
#

whats your favorite food ever winter

cursive gazelle
#

How can i change a joker’s cardarea ?

chrome widget
modern kindle
#

this is reasonable

frigid cargo
#

Valid

#

Winter whats ur thoughts on carbonara pasta

chrome widget
#

never actually had carbonara and never tried cooking it myself because people fearmonger about how hard the immulsion is

#

it's probably not but I haven't bothered yet

frigid cargo
#

Would recommend

red flower
proven belfry
#

my jokers have thin white outlines, does anyone have a fix to thi?

cursive gazelle
red flower
cursive gazelle
frigid cargo
#

Is there a way to change a thing in a hook or like a way to stack jokers for getweight?

cursive gazelle
red flower
red flower
cursive gazelle
#

Thanks a lot

frigid cargo
proven belfry
red flower
#

that gives you how many

frigid cargo
#
local oldenegativegetweight = G.P_CENTERS.e_negative.get_weight
print(oldenegativegetweight)
SMODS.Edition:take_ownership('negative', {
    get_weight = function(self)
        local weight = oldenegativegetweight(self)
        if next(SMODS.find_card("j_btct_EvilAndTwisted2006ChevySilverado")) then weight = 15 end
        print(weight)
        return weight
    end
}, true)

How would i implement that in this?

#

Would i do next#(SMODS.find_card(…))?

red flower
#

no

#

how do you want it to stack

frigid cargo
#

Prob like 5x weight per joker?

red flower
#

what's the original? 3?

frigid cargo
#

Yes

faint yacht
red flower
#

or you can also remove the weight = part
return weight * 5 ^ #SMODS.find_card("key")

frigid cargo
faint yacht
#

...then what of other mods doing take_ownership?

red flower
#

if the other mods hook it the same way it will work

red flower
#

same thing would happen with a normal hook

faint yacht
#

I suppose.

frigid cargo
#
local oldenegativegetweight = G.P_CENTERS.e_negative.get_weight
print(oldenegativegetweight)
SMODS.Edition:take_ownership('negative', {
    get_weight = function(self)
        local weight = oldenegativegetweight(self)
        if next(SMODS.find_card("j_btct_EvilAndTwisted2006ChevySilverado")) then weight = 3 end
        print(weight)
        return weight
    end
}, true)

Is this correct?

red flower
#

remove the if condition completely and replace the return for what i said

dapper sun
#

how do i add a message thingy before the return?

#

in a joker

#

without just doing an extra msg in the return

frigid cargo
sturdy compass
#

I'll grab an example

errant arrow
#

i just looked at the smods wiki, but im not understanding how to create a new rarity

frigid cargo
sturdy compass
dapper sun
#

ty

teal yoke
#

What coding language is that?

#

👀

sturdy compass
#

Balatro uses Lua

teal yoke
dapper sun
#

no

sturdy compass
#

no

dapper sun
#

why would it

#

that's not how programming works

slim ferry
#

no? you mod a game in the same language as it was made

errant arrow
red flower
frigid cargo
red flower
#

yeah the print will be wrong now

frigid cargo
#

Ok

red flower
#

you would need to print the whole return

frigid cargo
red flower
#

copy the line after return and put it in the print

frigid cargo
#

Ah ok thanks

distant junco
teal yoke
distant junco
#

you have to mod minecraft in java because it runs java???????

ocean sinew
#

if a.b < 3
if 3<a.b
if 5<2
how do I match these expressions and then gsub it to something like
if to_big(a.b) <to_big(3)

frigid cargo
vernal path
#

why the hell would SMODS.load_file("content/music.lua")() be calling a nil value? It's there?

errant arrow
#

once i have the custom rarity code, do i just put the key of the rarity in place of a number?
like:

SMODS.Joker{
  key = 'example'
  rarity = 'example rarity'
}
cursive gazelle
#

“Modprefix_raritykey”

errant arrow
#

oki, thank you

slim ferry
#

is modprefix necessary?

#

i didnt need it myself

vernal path
#

yes!

red flower
#

wrap the load_file call in assert

#

so it tells you the error

sonic cedar
vernal path
#

okay, this is the stuff leading up to the crash, after it finds the smods

INFO - [G] 2025-07-29 13:18:39 :: DEBUG :: DebugConsole :: Steamodded Debug Socket started !
INFO - [G] 2025-07-29 13:18:39 :: INFO  :: SMODS :: Steamodded v1.0.0~BETA-0711a
INFO - [♥] Applied 9 patches to 'engine/sound_manager.lua'
INFO - [♥] Applied 1 patch to 'engine/save_manager.lua'
INFO - [G] 2025-07-29 13:18:41 :: INFO  :: Loader :: Valid JSON file found
INFO - [G] 2025-07-29 13:18:41 :: INFO  :: Loader :: Valid JSON file found
INFO - [G] line not found
INFO - [G] file not found: main.lua: No such file or directory
INFO - [G] file not found: main.lua: No such file or directory
INFO - [G] line not found
INFO - [G] line not found
INFO - [G] file not found: main.lua: No such file or directory
INFO - [G] 2025-07-29 13:18:41 :: ERROR :: StackTrace :: Oops! The game crashed
[SMODS modularous "modularous.lua"]:7: attempt to call a nil value```
sturdy compass
#

Is modularous your mod?

vernal path
#

yes

sturdy compass
#

line 7 of modularous.lua is causing the crash

vernal path
#

i am well aware, thanks

#

its loading a file, that exists, but smods doesnt think so

#

line 7: assert(SMODS.load_file("content/music.lua")())

sturdy compass
#

Show the line and your file structure

vernal path
sturdy compass
#

Oh that set of closed parenthesis is in the wrong place

#

put it outside of the assert

errant arrow
#

what's the joker area called? is it G.jokers and G.jokers.cards?
trying to get a retrigger joker ability

stiff locust
#

why are you asserting it

#

are you supposed to do that

sturdy compass
#

yes

vernal path
#

because its crashing and its not saying anything about it

#

ah, there we go

stiff locust
stiff locust
errant arrow
#

ah, okay

stiff locust
#

why do you assert it

vernal path
#

okay, now its saying theres a bad symbol here: if ~playing_card then

red flower
red flower
sturdy compass
vernal path
#

oh, right i forgot lua SUCKS

#

unary operators, who's she

red flower
#

not is unary

vernal path
#

well yes, but in every other language, you can just use !

#

and ~ is also not, as in ~=

stiff locust
#

and in every other language there is no word for throwing somebody out of a window

stiff locust
#

python does have something like that i'm pretty sure

red flower
#

maybe im misremembering

stiff locust
#

i don't remember either

vernal path
#

python does have !, because the people who made it are awake and present

stiff locust
#

all the python got pushed out of my brain

#

when i picked up lua for balatro

red flower
#

i always use words if the language has them because they read better

vernal path
#

they might read better, but they are also bad

slim ferry
vernal path
#

for operators, anyway

slim ferry
#

thats only for !=

red flower
#

then it's what i said

slim ferry
#

also why wouldnt you just use not

#

thats like way more readable

vernal path
#

because i learned java, and java uses standard statements for operators. Java, C++, C#, rust

#

all use operators that are interchangeable with each other

red flower
#

i hate java

vernal path
#

i hate it too, but at least its consistent with other languages

#

gonna write a lua compiler that just replaces all && with and, || with or, and ! with not

red flower
#

evil

vernal path
#

lawful good

errant arrow
#

how would i make a joker be reused? kinda like Mime but for jokers instead of playing cards

dapper sun
#

how do i animate a joker moving between different sprites?

vernal path
#

Probably use Aura

dapper sun
#

aura?

dapper sun
#

i don't want to use a dependency mod

vernal path
#

I mean, then you'll have to do like, direct drawing

timid zinc
dapper sun
#

oh

vernal path
dapper sun
#

ty

wooden badge
#

how do I ensure a joker that spawns in at the start of a run is editionless?

cursive gazelle
#

Wdym

wooden badge
#

I have a deck spawning a joker immediately, sometimes it has an edition

vernal path
wooden badge
#

is there a way to make sure it is base edition

timid zinc
#

might be something for base

#

let me check

wooden badge
#

the way the joker is generated for a deck is odd

#

not sure where to apply an edition force

dapper sun
#

how do i hook

vernal path
#

and it hooks it

dapper sun
#

ah ok

#

so it just works?

wooden badge
#

is it the loc-vars or the config that actually does the joker generation?

#

in SMODS.Back

vernal path
#
calculate = function(self, card, context)
    if context.end_of_round and context.individual then
        if context.other_card:get_id() == 'T' then
            card.config.ability.extra.cashout = card.config.ability.extra.cashout + card.config.ability.extra.add
            return {
                message = "Faith!"
            }
        end
    end
end,```
I feel like this should work, adding `add` to `cashout` after the round is beaten (per apostle), but it doesn't do anything.
dapper sun
cursive gazelle
#

Adding jokers didn’t work sadly

timid zinc
#

that's just my guess though

wooden badge
#

in the config field in SMODS.Back I wonder if there is a way to access the edition for the joker you are generating

errant arrow
#

i keep getting lost, and a crash is not helping.
line 29: Unexpected Symbol near "="

trail tide
#

How do I make my booster pack not show this ERROR on the bottom thing? I tried doing group_name = { "Pile pack" } but it didn't work

#

Wiki says I just need the group_name string in loc_txt

errant arrow
#

retrigger = 4

#

forgot to grab the line numbers-

wooden badge
#

what is 'retrigger' - it thinks its a local variable which you haven't defined

rotund sable
#

Also please use HEX() instead of manually inputting a tablr

errant arrow
timid zinc
#

is there a built-in way in smods to create consumables that animate like the soul? i know cryptid does it but i took a look at its code and i dont see how

vernal path
# vernal path ```lua calculate = function(self, card, context) if context.end_of_round and...

okay, here's where i've gotten, i think im nearly there, but it's never entering the if block, even when there are aces in the hand

if context.end_of_round and context.individual then
    for _, v in ipairs(G.hand.cards) do
        if v:get_id() == 'A' then
            card.config.ability.extra.cashout = card.config.ability.extra.cashout + card.config.ability.extra.add
            return {
                message = "Faith!"
            }
        end 
    end
end
limber blaze
#

the id would be 14 not A afaik

#

14 as a number that is

vernal path
#

ill have to figure out what apostles count as in paperback but that makes sense

rotund sable
limber blaze
#

you can always do smth like eval G.hand.cards[1]:get_id()

#

and put the desired card first

rotund sable
vernal path
#

uhhh okay, so it adds to the cashout now, but it does it for each card held in hand, not only aces.

for _, v in ipairs(G.hand.cards) do
            if v:get_id() == 14 then
                card.ability.extra.cashout = card.ability.extra.cashout + card.ability.extra.add
                return {
                    message = "Faith!"
                }
            end
        end
end```
dapper sun
#

i got the animation working but now the leg gets cut off

vernal path
#

you'll probably need to futz around with drawing larger jokers n stuff

misty radish
dapper sun
#

?

vernal path
#

like Mega in cryptid

dapper sun
#

the thing is i want to keep it centred like photo

vernal path
#

because by default i'd assume it has a boundary the size of a normal joker, so you can't necessarily display one thats larger

#

Yeah, so you just make a new atlas that has each sprite be larger

dapper sun
#

the thing is

#

it works without the hook

#

the leg wasn't getting cut off until after i added it

trail tide
vernal path
#

yes, the hooked function changes how the joker is drawn

#

you need to futz around with it, like i said

#

Because Jimball is 100% a circle

sturdy compass
vernal path
#

so mathisfun only made the it a square rather than a whole joker size

errant arrow
dapper sun
#

oh my nesting

rotund sable
#

Why is it in joker_main all of a sudden

errant arrow
#

because that's when i need it to happen? it's been like that the entire time

dapper sun
#

is it possible to offset a joker's art in the draw thingy?

vernal path
sturdy compass
rotund sable
errant arrow
#

replace from line 20 and lower?

rotund sable
#

this is the calculate function

#

should work

dapper sun
# sturdy compass Would you mind showing the hook you made? Something's telling me the pixel size ...
-- Add spearmint animations
local upd = Game.update
anim_elle_spearmint_dt = 0
anim_elle_spearmint_f = 0

function Game:update(dt)
    upd(self,dt)
    anim_elle_spearmint_dt = anim_elle_spearmint_dt + dt
    if G.P_CENTERS and G.P_CENTERS.j_elle_spearmint and anim_elle_spearmint_dt > 0.2 then
        anim_elle_spearmint_dt = 0
        
        -- spearmint.prog animation
        local obj = G.P_CENTERS.j_elle_spearmint
        obj.pos.x = (obj.pos.x + 1) % 2
        
        -- Spearmint animation
        local obj = G.P_CENTERS.j_elle_spearmint2
        anim_elle_spearmint_f = (anim_elle_spearmint_f + 1) % 4 -- Taking extra steps to ping-pong the middle frame
        obj.pos.x = anim_elle_spearmint_f > 2 and 2-(anim_elle_spearmint_f-2) or anim_elle_spearmint_f
    end
end```
rotund sable
#

(i coded from intuition)

sturdy compass
errant arrow
#

i'll let you know if it works

sturdy compass
#

Alright good

dapper sun
errant arrow
dapper sun
#

see, i comment out the animation code and she regains her leg

sturdy compass
dapper sun
#

?

trail tide
sturdy compass
#

Not sure how consequential this is (it probably isn't), but you're running both animation sequences under the same check for G.P_CENTERS.j_elle_spearmint. Using the same dt values for both feels a little wrong too

dapper sun
#

oh

proven belfry
#

does anyone know how to make consumables rarer in boosters

dapper sun
sturdy compass
#

mhm!

slim ferry
#

or just

#

in general

median veldt
proven belfry
dapper sun
#

either way, still no idea how to fix the thingy

slim ferry
#

basically itll behave like the soul but you can configure it to any chance you like

proven belfry
#

also how do I check if the player has over a certain amount of money (making a consumable that gives a legendary for 100 dollars but i dont want it to go to negatives)

pastel maple
#

My joker's sprite kinda doesn't appear on the shop thing can someone help me? Also it's like the "Bass-Bamb" one that doesnt appear. Here's the code and stuff if you need that to help. (also the file structure and stuff also the reason why the second box doesnt have all the stuff is because discord's message limit 😭) ```SMODS.Joker {
key = 'bass',
loc_txt = {
name = 'Bass-Bamb',
text = {
"You Create 1",
"{C:attention} Uncommon",
"Joker"
}
},

config = { extra = {creates = 1} },
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.creates } }
end,
rarity = 2,
atlas = 'MoreXMultiplers',
pos = { x = 1, y = 12 },
cost = 8,
calculate = function(self, card, context)
if context.setting_blind and #G.jokers.cards + G.GAME.joker_buffer < G.jokers.config.card_limit then
local jokers_to_create = math.min(card.ability.extra.creates,
G.jokers.config.card_limit - (#G.jokers.cards + G.GAME.joker_buffer))
G.GAME.joker_buffer = G.GAME.joker_buffer + jokers_to_create
G.E_MANAGER:add_event(Event({
func = function()
for _ = 1, jokers_to_create do
SMODS.add_card {
set = 'Joker',
rarity = 'Uncommon',
}
G.GAME.joker_buffer = 0
end
return true
end
}))
return {
message = localize('k_plus_joker'),
colour = G.C.GREEN,
}
end
end,
}```

key = "MoreXMultiplers",
path = "MoreXMultiplers.png",
px = 71,
py = 95
}

trail tide
median veldt
#

hrm

median veldt
#

do u have the loc_vars thing i circled

proven belfry
trail tide
slim ferry
#

also i would do instead if G.GAME.dollars >= 100 + G.GAME.bankrupt_at so it works with stuff that allows debt

rotund sable
median veldt
slim ferry
#

also like not hard to add in later

rotund sable
#

Nice gif

rotund sable
median veldt
#

what happened to my sticker broken heart

dapper sun
#

could i avoid all the pixel size bs by moving the textures down a few pixels in the hook sopehow

cursive gazelle
#

How can i check if a card is facing back ?

red flower
#

card.facing == "back"

#

literally

median veldt
#

if i were to make a deck that has 13 each of 6 new ranks and none of the vanilla ranks how would i go about that
maybe even go the extra mile and cause the vanilla ranks to not be drawn in boosters or anything

sturdy compass
dapper sun
#

both of them do

trail tide
dapper sun
#

71x81, to be specific

red flower
trail tide
#

Sure

sturdy compass
trail tide
#

Oh

#

Why didn't it collapse 😭

red flower
#

remove the group_key

median veldt
dapper sun
trail tide
sturdy compass
#

hrmm

dapper sun
#

and the leg dangles outside of the 71x81 range, which is why it gets cut off

red flower
trail tide
#

Thanks

proven belfry
rotund sable
dapper sun
proven belfry
sturdy compass
#

That way you can accommodate for the different sizes

dapper sun
#

?

#

what

#

that's not the problem???

rotund sable
#

Also if you're going for talisman compatibility

proven belfry
slim ferry
median veldt
rotund sable
proven belfry
slim ferry
rotund sable
frigid cargo
#

I want to make the joker check if a suit is part of the played hand, i tried hardcoding but it failed cause i suck and yes

if context.other_card:is_suit("Spades") then
                isSpades = true
            elseif context.other_car...
card.ability.extra.mult = 0
        if isSpades then
            card.ability.extra.mult = card.ability.extra.mult + 1
        end
        if isHea...

kinda like this cause i dont know what other way to do it. How can i fix or improve this?

slim ferry
#

just

sturdy compass
#

Bepis please PR your joker animation atlas support soon Prayge

slim ferry
#

do to_big(number) instead of just number in any comparisons where its needed

proven belfry
slim ferry
#

whuh

dapper sun
#

the sprites are 71x95, the joker is set to 71x81 to center the window part of the sprite. the leg, which is outside of the 71x81 range, is cut off by the game ONLY when i modify the pos values in the draw hook

slim ferry
#

what

slim ferry
proven belfry
slim ferry
#

thats just

rotund sable
slim ferry
#

an example

proven belfry
sturdy compass
#

Someone told me it was Bepis Shrug

slim ferry
red flower
#

aure did it but there were some things missing and then aure went missing as well /j

rotund sable
slim ferry
#

i dont think you need to worry about if something is already a table

#

though

#

right?

#

like i just do it with everything

red flower
#

no but it also doesn't hurt

slim ferry
#

yeah

rotund sable
proven belfry
#

also unrelated my laptop caps naneinf at e308 even though talisman config max is set to OmegaNum

slim ferry
#

cryptid breaks talisman score limit currently lmao

#

i think it should be fixed soon

proven belfry
slim ferry
#

yeah then it should work

#

or update it if its already fixed

median veldt
#

what are you even doing to get that high of a number man 💔

slim ferry
#

playing cryptid

median veldt
#

i GUESS

slim ferry
#

average non balance branch run

proven belfry
slim ferry
#

thats a lot of mult

median veldt
#

that's busted as hell 😭

proven belfry
proven belfry
median veldt
#

sob

slim ferry
proven belfry
slim ferry
#

at least thats what modding dev told me

rotund sable
#

?

#

Huh

slim ferry
#

you dont need to do to_big on == comparisons if its true what i was told here

rotund sable
#

¯_(ツ)_/¯

#

Never tested that deep

median veldt
#

better safe than sorry ig

slim ferry
#

also society if talisman had actual documentation

sturdy compass
median veldt
#

society if any api mod at all had docs

slim ferry
#

FR

#

why does like only smods have docs

median veldt
#

i swear none of them i've checked do

slim ferry
#

and like challenger deep is the only other one i can think of

rotund sable
#

Because smods is cool

median veldt
slim ferry
#

unfinished docs 🎉

median veldt
#

thats just me but idk
it dont give enough examples 💔

median veldt
#

but its not "docs" its just "an example in the readme"

sturdy compass
red flower
dapper sun
#

what confuses me is that the pixel size stuff is only a problem when i try moving the atlas coords

median veldt
slim ferry
red flower
#

what else matters

sturdy compass
rotund sable
#

I can say that JokerDisplay docs are good enough

red flower
#

oh aikoshen has docs now as well

median veldt
#

ok can i just not send stickers here is that a perms thing

dapper sun
#

no stickers

sturdy compass
#

yeah stickers are automodded lol

median veldt
#

gtk

dapper sun
#

interestingly, i can change the pixel_size and stuff just fine

proven belfry
#

could anyone help me with a consumable that has a 50/50 chance to give x4 cash and 50/50 chance to set money to 0

dapper sun
#

it's may just be the pos that messes with things