#💻・modding-dev
1 messages · Page 514 of 1
yo, where message = "Dingus!" is, how would i delete the card under those conditions
what's the effect supposed to be
what, like what my joker does?
yes
you need context.destroy_card for this instead of what you're doing
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?
You do not need to make config at all
Config is purely optional from what I understand
if context.destroy_card and context.cardarea == G.play and context.destroy_card.ability.perma_mult >= 5 then
return { remove = true }
end
ahhhh okay that makes sense
i forgot the cardarea check
another question: if I would ever have config options then does that mean that the values near the end of the script are custom options?
i mean setting_1, setting_2, etc.
if context.cardarea ?
These are basically the default settings for your mod
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
....so... by my mod default settings you mean, my own custom settings?
edited, sorry my internet is bad rn
Your mods settings yes
its okay, thanks for your help :)
then gotta get rid of my config since I have nothing too game changing
Ever just edited a whole code and wondered why its not working and then you realized you been editing the backup file
no
Well i did now
You should use GitHub if you're not already
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 )
yeah you can make it an smods atlas and create a sprite object
weird, it works without the card area check
it will destroy cards in hand too
ahh
How do i take ownership of a joker
read the docs
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
Yes, G.P_CENTERS.rd_SM_secun doesn't exist.
oh
You would do {key = "localizationkey", set = "localizationset"}
the set part kinda confuses me, what should I put in there?
"RespriteDescription"
aight
like this, right?
No, I meant you replace G.P_CENTERS.rd_SM_secun with that.
aight
um... for some reason it gives me error now:
instead of the name and description of the 2nd info queue
Yes, non-object localization entries don't require any prefixes or suffixes.
Remove rd_SM_
SM is the prefix of my mod btw
Yes, mod prefixes are prefixes, so they are not required here.
aight
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
now the name appears but for some reason the text doesn't:
Code?
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
try changing RespriteDescription to Other in both places
aight, now it works, thanks Something and N'!
i do recommend that you add the modprefix back (in both places) so it doesnt conflict with other mods
no, i mean in the key
oh aight
new N' pfp??
yes
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)
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
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
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/
ah in the actual releases, gracias
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
whats up
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
wdym special effect
I really don’t know
Tried implementing your graveyard but it turned to be hard so i gave up
no, but I don't understand what you mean by special effect
like a visual one? or an in-game effect
In game effect
How Can i disable effect of flipped jokers ? And add another effect
Like replacing the original effect
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
Rip
I can hook it into an edition technically
Can i make an edition debuff said joker
yeah
also keep in mind jokers are flipped face up after each blind
I noticed it
i think you can do it on edition apply
Shouldn’t really be a problem
Okay so how can i made a cardarea and make it contribute in scoring
*note: change the type to "joker" instead of "extra_deck"
make it score:
https://github.com/nh6574/JoyousSpring/blob/03e2109c3c7a8499c8bb3b7566ceb86e83f27879/lovely/zones.toml#L104
Do you save lives as your job
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
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
So new people who enter the server cant send links or media until 10 hours pass
Im guessing it was CaBT ?
normally the pfp gives it away, ai generated or one of the basic discord characters
Can you mod on Xbox game pass?
Can you?
idk
I play on Xbox so I was curious
I hear they’re working on making the gamepass balatro on pc work
Or maybe on Xbox app to manage your games
You can buy the game on steam and mod it if you wish
How much is balatro I don't have a pc they are making a new Xbox where you can use steam
Sadly you can’t mod it on xbox
Yeah sad
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
Hopefully
Is a rog ally with xbox app, that device is a pc handheald, is like a gaming laptop
Is from asus
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
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?
If they’re jokers you need to make a pool
If they’re a custom consumables you put the consumable set key
And how exactly do i do that?
You can make a local table and all your joker keys to it
Good schmorning chat
omg dilly
Omg its N
hii
Hihi how are you
im doing fine thank u wbu
I’m in agony coding shaders
normal
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
Weh
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
holy yap 💀
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
idk what dofile is but use SMODS.load_file instead
bet
Its an os thing
i didn't read all of it
holy there are letters of the alphabet helping us
thanks guys fr fr
ama check is this works
Omg
LES GOOGOGOG
Why are you guys editing on notepad
N MY GOATTT
navibga has lua
Ty we sat down like 2 h
i draw the crads so idc realy 😭
You saved us
Good luck modding guys

Wait let me check the code
is it bc youre looking for a subfolder in your load but theres no subfolder
We had subfolder
But we deleted beacuse doesnt work
you dont need to include the name of your main folder in the load
its searching from where your main.lua is located
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"
with a () at the end
to run the function
oh yeah that wasnt there
Bump
Oh ok
still ts dosent work
@crimson oracle
Missing () at the end
wdym
??
😭
SMODS.load_file(“file_name.lua()”)
SAME ONG
dosent work 🎣
bro i feel like fucking sisyphuss
what is this torture
Just put them all in one file …
Oh I’m sorry
Add /src/ if you have a subfolder
doesnt have to be src, just whatever the name of the folder is
I think thats common knowledge
you carry anyway man 😭
im just making it clear that it doesnt HAVE to be src
better to clarify that yk
Wallahi shaders are making me cry
^^^
oh
if you put it in src then yeah that wont work haha
Please don’t end yourself
There are more frustrating things in life
Like coding shaders
opps
Did it work?
I think ot works it dod an eror from the file
BUT THE THING DOES WORK
It
Great
Did
again
Ty bro
Np
If you have any other issues ask
Now its just the key I forgot
can we get this guy into the hall of fame bc he deserves all of it
no but jokes aside
thanks man
😭
damnnn
okay bet
More challenges today
You can start by making jokers there and learning from the code
Sounds good to me
I will do challenges for a few hours then be gay for a few hours then write for a few hours
Winter do you know where i can find any shader resources ?
I’m in agony
I’ve been coding shaders since morning
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
Honestly i just want to make a simple shader
The combat background from deltarune if you played it
Haven't, no
1 sec
i couldn't find this animation on youtube. You can use this in memes
How to download? Idk write "download YouTube video", y2mate or something like this
Ok yeah that's pretty simple
I’v been stuck since 9 am
It’s 5:41 pm
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
That is, uhh, certainly a username
When does this happen?
when we load the game
navbiga had some issues like forgetting , and stuff
but this is kinda new
,
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
I see
You want the second value in the name of the shader variable
That should contain the time
Ah I see. I typically don't use the default name shader variable
Nope
Shaders do not like unused values
I have multiple shaders that exclude it
It's just all the vanilla shaders do make use of it
Have you got an example I can look at?
Bump
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.
Huh, til
That said if it does have the key it'll pass it from uhh ARGS.send_to_shader or w/e
I thought if it was passed through you had to have something to receive it
It needs to be used if it's declared in the file
Yeah, I didn’t realise you didn’t need to declare it though
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)
And i am here unable to make a simple shader
wtf this is dope
When does this happen
when you launch the game
Also send full crash log
Can i see the code for the joker
early morning wilso appearance
did u set the main folder in .json to the file you're loading the files from.
hi wilsonn
hello jonh debug 🔥
@red flower can you help the gentleman
thank you lad 😭
i hate dealing with crash logs , sorry
pls do not ping me for troubleshooting
if i dont help its because idk or im busy
my apologies
Bump
rarity = 5,
But we added the rarity
rarity 5 isn't a thing
if its a custom rarity its modprefix_key
Oh there are some vanilla destroy effects that don’t use that context yet, will be fixed in a future smods update
so what what do i replace ? the "rarity"
what's your custom rarity key?
You can make a 5 rarity, it'd need to be a string '5' though
“Yourmodprefix_yourraritykey”
And like setting prefix config to false
FBPMod_Creators Rarity but im not sure if spaces work
YO
It even correctly interacts with the showman!
YIOEWHIOUWEDFYHUIOWEF
Omg
It works
LES FUCKING GOGOGOGO
Ty
GOAT
AND ALSO GOAT
THANK YALL HOLLYYYY SHOWEHUIHUIOERWHUO
my art for sprites needs work...
I didn’t notice the rarity being 5 mainly issues occur in the calculate function so that’s where i jumped
I haven’t done any
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
spelling gets all of us
Bump
whats the problem
I dont know what im doing wrong and it doesnt work
but what are you trying to do and what doesnt work
Oh dang I just got back from lunch lol
I figured it out finally
But i have some questions
Can i add a shader for the back of card ?
Do i use drawstep ?
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
Can you point me to it
I just want to draw this shader on cards that have this edition i’m making
Back and front
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' },
}```
Thanks a lot
Tryna make negative chance quintuple if i have the joker
try changing 'e_negative' for 'negative' in the take_ownership
also print('test1')
please dont override the print function lol
Oh ok thanks i was just following someones orders yesterday ill let you know when i test it out
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
Now by the way how do I make it not say ERROR at the bottom? Right now it looks like this
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
will try
why does cardsleeves have everything in one file
Does draw step update ?
is if context.setting_blind a valid context
drawstep runs every frame
Because it’s old
Before we split stuff up
yes
Galdur is the same
If Larswjin wants me to give it a facelift I can lol
ok then the set is invalid probably
can I just poll consumable types
did you try both
well try the one i said first
doesnt work
rip
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?
you have to mess with the pools but idk how to do it
hook create_card or get_current_pool
or wait for this https://github.com/Steamodded/smods/pull/828
this is what Entropy has
i put all the code in loc_txt lmfao
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
both answers are in the documentation https://github.com/Steamodded/smods/wiki/SMODS.Booster
…
Draw step keeps updating every frame so my shader doesn’t animate
@chrome widget any idea?
Question, would Epic be rarity = 4
4 is legendary
Well it should be calling draw_shader ever frame, that's what needs to be done to keep drawing your thing
Ik but calling it every frame resets the animation lol
if it's custom then rarity = 'modpref_epic'
cry_epic
basically means you wrote your shader wrong methinks
It would be updating/resetting some kind of time variable that should have advanced since the last frame
nods nods
I think it works thanks just gotta do math, do you know weight for negative by any chance?
🙂↕️
Great thanks
Time to add my own cararea
I say this a lot now for whatever reason lol
Its funny lol
Is there a way to make it stack?
i feel like it is certainly G.P_CENTER_POOLS.Booster for sure in one of the images
Is there a way to change a hook from the jokers code?
Greetings Dilly!!!!
already full rn but I appreciate the offer lol
no
damn
tumby full
i guess ill freaking explode
functions/misc_functions.lua:1812: attempt to get length of local 'line' (a boolean value)
anyone know what this error means
Something in your localization is formatted wrong
hiiii dilly
this is a utility thing so you can just use it whenever
hiiiii winter are you win ning
generally
awesomeness
what if i eat it
what if i eat you
i wont taste so yumby
What if i dont have a sense of taste
then i will become you

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
Complete opposite here
so if i pay u does that mean i get u and the other 4 wives
lmao
that said I need to get a stable job not draining somebody else's personal income 😭
what kinda job would you like, just anything or smth specific
just a game design or programming job
gotcha gotcha
Is this yuri chat
do you just have a farm of boobs out back
when is harvest season
With me, usually
thats all modding dev ever was
always

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
Guess im woman now
I mean like three of my partners are women, and one of them looks like they might be heading that direction
Can i sue you for forcefully assigning me a gender isn’t mine
women are so cool i love them, 10/10
you can try
congratulations
shouldve read the fine print
Real
winter is so cool
I love winter
She helped me fix my shader
i love winter
shes winter
girliepip i did nothing I had boneless wings from sonic drive-in
N’ my goat
say sike rn
Winter saved me from a burning apartment once
and you just didnt share ok wow
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
hm

also i cant believe winter lost coolness points for the travesty of 'boneless wings'
smh my head
sonic doesn't sell traditional wings
Ive never had sonic once
they sell Premium Chicken Bites™
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
Sonic would like sonic

lowkey i could take sonic in a fight
N could rule the world
i mean a restaraunt doesn't have to be smth special, just gotta fuel me
whats your favorite food ever winter
How can i change a joker’s cardarea ?
uhhhhhhhhhhhhhhhhhhhh probably pesto pasta
this is reasonable
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
Would recommend
like, move it?
my jokers have thin white outlines, does anyone have a fix to thi?
Yes
card.area:remove_card(card)
other_area:emplace(card)
Your spritesheet isn’t property done
Is there a way to change a thing in a hook or like a way to stack jokers for getweight?
Will this keep the values ?
in your hook you can just check how many of the joker you have
yes
Thanks a lot
Like just make a loop inside the hook?
they used to be fine until I added some more jokers to the spritesheet, the images are 71x95 and the atlas size is 71x95
#SMODS.find_card(...)
that gives you how many
Oh ok thanks
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(…))?
Prob like 5x weight per joker?
what's the original? 3?
Yes
...why not hook the actual get_weight instead of take_ownership?
or you can also remove the weight = part
return weight * 5 ^ #SMODS.find_card("key")
I dont understand hooks so i dont know much about what either are sorry
it's the same
...then what of other mods doing take_ownership?
if the other mods hook it the same way it will work
Ok thanks
same thing would happen with a normal hook
I suppose.
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?
remove the if condition completely and replace the return for what i said
how do i add a message thingy before the return?
in a joker
without just doing an extra msg in the return
Oh woops i forgot to do that part mb
Use SMODS.calculate_effect({})
I'll grab an example
i just looked at the smods wiki, but im not understanding how to create a new rarity
local oldenegativegetweight = G.P_CENTERS.e_negative.get_weight
print(oldenegativegetweight)
SMODS.Edition:take_ownership('negative', {
get_weight = function(self)
local weight = oldenegativegetweight(self)
print(weight)
return weight * 5 ^ #SMODS.find_card("j_btct_EvilAndTwisted2006ChevySilverado")
end
}, true)
This?
ty
Balatro uses Lua
But can work with any language code right?
no
no
no? you mod a game in the same language as it was made
Oh ok
yes
does it work

can someone explain it to me in crayon eating terms?
well you can transpile
From my friend it says the print just stays 3
yeah the print will be wrong now
Ok
you would need to print the whole return
did you look at vanillaremade
How would i do that?
-# sorry i stupid
copy the line after return and put it in the print
Ah ok thanks
i really dont want to sound rude, but how do you think this worked?
Like minecraft? (I don't really care btw)
you have to mod minecraft in java because it runs java???????
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)
It works thanks
why the hell would SMODS.load_file("content/music.lua")() be calling a nil value? It's there?
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'
}
“Modprefix_raritykey”
oki, thank you
is it there
yes!
thats what they called me in the old days
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```
Is modularous your mod?
yes
line 7 of modularous.lua is causing the crash
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")())
Show the line and your file structure
Oh that set of closed parenthesis is in the wrong place
put it outside of the assert
what's the joker area called? is it G.jokers and G.jokers.cards?
trying to get a retrigger joker ability
yes
the joker area is called G.jokers, G.jokers.cards is the table containing all the jokers
i have never asserted it and it works fine
ah, okay
why do you assert it
okay, now its saying theres a bad symbol here: if ~playing_card then
you dont need to, asserting gives you better errors
yeah ~ shouldn't be there
use not instead of ~
not is unary
well yes, but in every other language, you can just use !
and ~ is also not, as in ~=
and in every other language there is no word for throwing somebody out of a window
not python
python does have something like that i'm pretty sure
maybe im misremembering
i don't remember either
python does have !, because the people who made it are awake and present
i always use words if the language has them because they read better
they might read better, but they are also bad
you cant do ! before a boolean in an if statement though
for operators, anyway
thats only for !=
then it's what i said
because i learned java, and java uses standard statements for operators. Java, C++, C#, rust
all use operators that are interchangeable with each other
i hate java
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
evil
lawful good
how would i make a joker be reused? kinda like Mime but for jokers instead of playing cards
how do i animate a joker moving between different sprites?
Probably use Aura
aura?
i don't want to use a dependency mod
I mean, then you'll have to do like, direct drawing
you'll have to hook into Game:update then
oh
#1249486500811378718 message mathisfun posted his code for Jimball
ty
how do I ensure a joker that spawns in at the start of a run is editionless?
Wdym
is that a hook?
I have a deck spawning a joker immediately, sometimes it has an edition
yes
is there a way to make sure it is base edition
i think you can force editions on jokers
might be something for base
let me check
the way the joker is generated for a deck is odd
not sure where to apply an edition force
how do i hook
is it the loc-vars or the config that actually does the joker generation?
in SMODS.Back
You will likely have to play around with it in order to make it work properly, but yeah
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.
well yea lol, i'm not expecting jimball-specific code to work with my jokers
Adding jokers didn’t work sadly
if you wanted to ensure that the joker was editionless, you could instead create the joker in the apply function and then manually set the edition to e_base, maybe
that's just my guess though
in the config field in SMODS.Back I wonder if there is a way to access the edition for the joker you are generating
i keep getting lost, and a crash is not helping.
line 29: Unexpected Symbol near "="
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
which line is 29
what is 'retrigger' - it thinks its a local variable which you haven't defined
Why are you not returning them
Also please use HEX() instead of manually inputting a tablr
my brain is thinking the same thing, but what im trying to do is get the joker this calculate is in to retrigger a joker to it's immediate right
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
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
ohhhhh, that makes sense
ill have to figure out what apostles count as in paperback but that makes sense
if context.other_card == G.jokers.cards[i+1] then
return {
retrigger = 4,
colour = HEX("FFFFFF")
}
end
you can always do smth like eval G.hand.cards[1]:get_id()
and put the desired card first
Where i is the index of your joker
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```
i got the animation working but now the leg gets cut off
you'll probably need to futz around with drawing larger jokers n stuff
Amputate it
No more bleeding out
Problem solved!
?
like Mega in cryptid
the thing is i want to keep it centred like photo
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
the thing is
it works without the hook
the leg wasn't getting cut off until after i added it
I can't even check how others do it because for some reason there is literally no entry for boosters in localization files and I have zero idea where the localization for bossters is stored
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
really weird, huh
so mathisfun only made the it a square rather than a whole joker size
doesn't work, i tried replacing the previous code with it and adding it to the existing code.
this is what i have right now if i screwed up something
-# which is very likely.
oh my nesting
Why is it in joker_main all of a sudden
because that's when i need it to happen? it's been like that the entire time
is it possible to offset a joker's art in the draw thingy?
Okay, so it's checking if there's an ace, rather than rechecking each card's rank, which i think is odd. Am I doing something incorrectly? Or is there like a different context or a different way I'm supposed to do it?
Would you mind showing the hook you made? Something's telling me the pixel size for the card is getting messed with somehow
if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= card then
local my_index = nil
for i, joker in ipairs(G.jokers.cards) do
if joker == card then
my_index = i
end
end
if context.other_card == G.jokers.cards[i+1] then
return {repetitions = 4}
end
end
replace from line 20 and lower?
-- 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```
(i coded from intuition)
And the sprites for these are on their own atlas right?
i'll let you know if it works
Alright good
no retriggers after the first use.
im gonna take a break, this is starting to give me a headache.
see, i comment out the animation code and she regains her leg

?
I remember someone else today had this issue, but I will not try to go through all messages today
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
oh
something like this
does anyone know how to make consumables rarer in boosters
i didn't even register that i did that ty
mhm!
you mean like the soul?
or just
in general
and this
if not using localisation just
put group_name in loc_txt
not ultra-rare, but like 1 in every 25 packs
either way, still no idea how to fix the thingy
you can do hidden = true on the consumable, and then put whatever chance you want into the soul_rate. i assume its already the type of the consumable you want it to appear in packs of so you wont need to do anything with soul_set
basically itll behave like the soul but you can configure it to any chance you like
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)
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
}
But I literally did and it still shows ERROR for some reason
hrm
check G.GAME.dollars
do u have the loc_vars thing i circled
so if G.GAME.dollars <= 100
I do, but I don't return the key here, do I need to?
would be >= 100, but yeah
also i would do instead if G.GAME.dollars >= 100 + G.GAME.bankrupt_at so it works with stuff that allows debt
Do I see a talisman incompability 🙈
a) multiplers it's spelled "multipliers"
b) your joker has pos = { x = 1, y = 12 }, based on which part of the atlas you want it should either be pos = { x = 0, y = 0 } or pos = { x = 1, y = 0 }
who gaf talisman SUCKS!!! 🔥 💯
also like not hard to add in later
Nice gif
k
True
what happened to my sticker broken heart
could i avoid all the pixel size bs by moving the textures down a few pixels in the hook sopehow
How can i check if a card is facing back ?
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
I'm curious, do both (or either of the) cards have custom set pixel size values?
both of them do
Even when I added the key (even tho I don't use localization here) it still doesn't work 😭
71x81, to be specific
can i see the whole booster code
Sure
Is the atlas standard size then?
remove the group_key
you'd need to send it as a file
yes
Well I can even delete it now, I'll send as a file if it doesn't work
hrmm
and the leg dangles outside of the 71x81 range, which is why it gets cut off
i preferred the text because im on mobile lol
wdym
Talisman changes G.GAME.dollars to a table
...yet it's fine if i don't mess with the pos values
how do i make it actually work then
Honestly since that's the case, I think splitting them into two different atlases would be your solution (which sucks cuz I'd totally understand how that would be less than ideal)
That way you can accommodate for the different sizes
You wrap the other value in the to_big function
Also if you're going for talisman compatibility
how do I do that???
you could either not worry about it, or put to_big = to_big or function(x) return x end at the top of your main file and then put all numbers in <, >, => and =< comparisons inside a to_big function
bunp also i have the back set up I just need to put stuff in the code to make it work
Add
to_big = to_big or function(a) return a end
what is a to_big function and how do I put numbers in it
so instead of if x < y you would have if to_big(x) < to_big(y)
G.GAME.dollars == to_big(10)
As an example
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?
talisman function
just
Bepis please PR your joker animation atlas support soon 
do to_big(number) instead of just number in any comparisons where its needed
wait so then would it be if G.GAME.dollars == to_big(10) >= 100 then???
whuh
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
what
whats the 10 doing there
idk im confused
thats just
He took my example
an example
copied it from what someone else said
isn't that an Aure PR?
Someone told me it was Bepis 
you would just do your current comparison, but put both sides inside to_big()
aure did it but there were some things missing and then aure went missing as well /j
-# G.GAME.dollars is already big
i dont think you need to worry about if something is already a table
though
right?
like i just do it with everything
no but it also doesn't hurt
yeah
to_big() on a big num returns a big num
also unrelated my laptop caps naneinf at e308 even though talisman config max is set to OmegaNum
so turn off cryptid?
what are you even doing to get that high of a number man 💔
playing cryptid
i GUESS
average non balance branch run
very insane scaling jokers, for example one upgrades its Xmult by ^1.2 after every hand
thats a lot of mult
that's busted as hell 😭
another one increases end of round payout by 30% every round
yeah that's partially the point, big number = funni
sob
but yeah what you would have to do is to_big(G.GAME.dollars) >= to_big(100)
bunp
i did that
even better, made a custom deck with all steel red seal kings
you dont need it for == though i think
at least thats what modding dev told me
you dont need to do to_big on == comparisons if its true what i was told here
better safe than sorry ig
also society if talisman had actual documentation
I'm really thinking about this problem now and it's hurting my head lol
society if any api mod at all had docs
i swear none of them i've checked do
and like challenger deep is the only other one i can think of
Because smods is cool
and they're not even that great imo
unfinished docs 🎉
thats just me but idk
it dont give enough examples 💔
except like
3xcredits
but its not "docs" its just "an example in the readme"
Cuz I'm really not sure of any ways to make like an offset or smthn
jokerdisplay has docs thank you very much
what confuses me is that the pixel size stuff is only a problem when i try moving the atlas coords
and what else
okay but thats cheating youre like john docs
what else matters
Yeah and I get that confusion because me too
I can say that JokerDisplay docs are good enough
oh aikoshen has docs now as well
ok can i just not send stickers here is that a perms thing
no stickers
yeah stickers are automodded lol
gtk
interestingly, i can change the pixel_size and stuff just fine

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
it's may just be the pos that messes with things


