#💻・modding-dev
1 messages · Page 234 of 1
completely unrelated note does anyone know how add_to_deck works? trying to setup a freeroll (think chaos)
okay I did a silly

i was tryna be smart
uhh i inserted the lovely dylib into the app bc im lazy to run the script all the time
:
😭
youll still have to run the script to patch stuff
yep yep got it
a free roll?
i don't know why lovely runs but doesn't load the mods
tragic
huh
so
mods button show up right
yeah i know that 😭
but it triggers on add_to_deck
because from your folder structure there doesn't seem to be one
what the fuck
selling Invisible Joker closes my game
💀
like, no crash
no nothing
it just closes my game
game invisible
so like
did it duplicate my game 💔
?
i mean does that not make sense
...it uh, triggers when the joker is added to G.jokers
you gain 1 free reroll per chaos
like i have this for the extra key already but
how would i setup the reroll part
you G.GAME.current_round.free_rerolls = G.GAME.current_round.free_rerolls + 1
the fuck happened to that blueprint
i didn't think it was gonna turn out that good ngl
for $3
i also have this joker which i dunno how to phrase better
:3
it goes from +25 to +50 + 75 and such
my head
cool art :o how did you draw it
i uh
hour drop
and yes, i have to specify it as a Follow-up Effect because some jokers will do certain shit when Follow-up Effects are triggered
like 1 min
Do I see free rerolls?
free rerolls in this economy is insane...
free rerolls
-# theres an utility function for that???
oh my
wtf there's a function for that
The way chaos works in vanilla is jank as fuck
me when i call god
oh, thats cool
would it be fun if there was a joker which can duplicate a joker, but also removes the original joker it copied from
allowing for add_to_deck synergies shit
does this work in place of add_to_deck or does this nest?
you still need it in add_to_deck
thought so
Yeah put it inside
how it works is that if i use SMODS.change_free_rerolls(1) then it gives 1 free reroll right :3
Yes
very nice
So in remove from deck you’d need the same with -1
It’ll also handle making the rerolls in your current shop free (and future shops ofc)
would you suggest using card_eval_status_text or SMODS.calculate_effect to make a message?
consider: permanent free reroll 
-# fuck
yeah good to know, thanks :D
i thought it would be unethical to use SMODS.calculate_effect just for messages for some reason, considering its main functionality is (probably) to allow adding mult/xmult, stuff like that without using return
It doesn’t matter though if you’ve used card eval
Nah it’s main function is just to evaluate effects consistently
It has stuff other than scoring in it
Does anyone see a missing symbol here? I don't see anything out of place
-# not loads but still some
Ah
miss anything or am i all good?
😭
Thats what I get for copying my own code
just add SMODS.change_free_rerolls(1)
oh, also
ahhhhhhhhhhhhhhhhhhhhh (im stupid)
this should be true, not True
and is "moth" the joker you want to add?
No, I want to create a random joker
oh i see
no clue what this is
-# i dont know much about create_card :3
are the words random everytime you check the poker hand
Im pretty sure the last bit is for the seed for generating a random card
oh
less foolish
eavesdropping
transformation
wuh
does anyone know what I need to put in the localization for the little labels here
i just realised this is a counter to the fish if you have the cards
Why isn’t it just in the ability table to begin with?
in the who

ohhh i see
probably because i dont have one
is there a boss blind trigger for post-scoring but while the cards are still in the played hand? or do I have to patch that in myself
I want to change the suit of played cards, but doing that on press_play changes them too early and recalculates your hand
isn't that final_scoring_step
unfortunately boss blinds dont use calculate contexts
oh I see
I kinda wish they did, I had to patch just so a boss blind could detect the player discarding
that's evil actually
aikoyori taking note rn
its even more evil when it does THIS
was it a bad idea to make my thread too early
bumping this
I checked the docs for SMODS.ConsumableType and it's not there either 😭
i thought it would be a good idea to post my progress there every once in a while
I'm being scammed in real time
but i think i was better off making one when its close to release or something
📔 📝
thats cool, i wont lie
I mean, that's what I did with mine
and it's been working out okat
*okay
I got the animation to look really nice, yeah

I used it for the blind that demotes all played cards by 1 rank as well
yep
oh okay
how long did it take for you to release your mod since then though
uh
I've been releasing alphas/betas for a while now
ever since it was just a concept and the mod still had 90% placeholder assets 😭
mhm, but i want to know how long did it take for you to release your mod for everyone to try, since i feel like i can cause some people to be too impatient :(
uh
I think it was near-immediate? at least, within the same week
how fast do yall code?
1 month and about 7k lines in total
very slow\
^ same
but I don't see an issue with just having a mod thread that's just concepts
if you release something, even if it's really rough, it's fine in my opinion too
at least you get feedback
I'm a slow ass coder sorry
I code pretty quickly, in my opinion
I just have to know what I'm doing
wtf you followed me on twitter
@fickle stag 😭
i keep my progress in my name to motivate myself
[mr krabs "day 15" image]
dmn
does someone know how i can patch other mods with lovely? i've done it with smods but not with other mods
perhaps you followed me for this
sure did
i always try to post progress on #1338562637453066240 every 3 day or so, so that people know im still working on my mod ❤️
REAL
ill add a few more things to this logo i think
ty
how'd u make it :o
hacking
good god ive only skipped four days of development go me??
Affinity Designer
at which point do you plan on releasing a playable alpha/beta, bepis?
probably when i finished adding all the jokers and 1/2 of the relics
definitely a legit copy
dont want to keep everyone waiting for too long
and besides, i need playtesters to properly balance out my mod anyways
damn, I wish I had your sense of patience. I was just like 'eh I guess people can play this at some point', and release a version with a bunch of broken mechanics every few days
im NOT trying out every team combination and relics
is modding very popular
good question
same
I'm mostly bug-free right now
making them or playing with them?
well im certainly becoming a bit impatient myself lol, but i dont want to rush my mod and release bad stuff
both
everyone only plays basegame ever im afraid
I've got some features turned off by default because they're too buggy and risky 🥲
if people have been waiting for my mod for a while then they deserve something quality
smh, they should be playing the siivagunner balatro mod.
the what.
the REAL siivagunner arg balatro mod
big enough that I think people that are deep into the balatro hole are into it, but not super huge or relevant in the scope of balatro as a hole, I reckon
i am doing it for the fun of it
And there's a scale difference between Cryptid and every other mod as well
i've only ever heard of cryptid
RE:SPH is a high-quality content mod created as part of SiIvagunner's RE:SPH ARG. It features new content themed around the ARG and SiIvagunner in general, as well as retextures of all the vanilla Tarot Cards.
yeah it does sound fun :p
saving this for later.....
but like drawing takes a while
look around the channels here and on the wiki and see what's out there! There's a lot of weird stuff. Best mod out there rn is probably Balatro Goes Kino though, of course of course
i will have to learn drawing for my own mod in the future
coding also t akes a while
thats so cute
like, i definitely mess around with paint every once in a while :3
Bepis, are you posting anywhere about your mod outside of this discord? I feel like if you show off your functional systems and jokers, you'll easily have another gacha-head willing to collab on some art
you gotta do a puzzle but that’s really easy
here is my mspaint drawing
nop
not now, at least
what did i do
i will definitely uhh plug my mod everywhere when i got the playtest release tho :3
basically
it's ok i don't know jackshit about neural network
same
-# what the fuck is neural network
(i study comsci)
same
neeeeerds
pixel art is fun, and while being amazing is a huge skill, I always feel like people can get to decent-enough results/programmer art levels quite quickly, as well
alright im having a lot of trouble with this cardsauce joker
are there any coding wizards in here who are down to help or give advice on this
Ask the question, and we'll see if someone can help 😛
yeah i just wanted to get that out of the way first cause its a bit complicated to explain
off to work on making suit rarity a thing i go.
we dont know what kinda trouble you have 💔
i know i know i shouldnt ask before specifying
nah i just like to be good
you SPOILED IT 
gonna take me a sec
💀
hahah god i feel that
the arg’s been over for months
every time I try to draw a person I scream and wished I could have retroactively practiced because I'm not gonna now, and I just want the ability
real
real
real
😭 this mf again
get him OUTTA here
i will definitely buy another one when i save enough money :3
so the concept here is a joker that each round takes on the ability of a random of joker in the pool. it's sprite does not change, but its calculation code and description do. at the end of the round it changes back to a base form with a misprint-like cycling description, which i've already coded.
problem is that i can't seem to find a good way to reliably implement this. i tried a method that involved making an invisible cardarea, which was promising but for one that wouldnt work for copying cards like blueprint and it wasnt really working in general. the main thing here is i'm struggling to find a reliable way to reference calculation, loc_vars, and other stuff without summoning an actual card on the screen
I'm plagued by the ERROR badge
I may be cooked guys
@sonic cedar will you try the space oddity challenge
how would you guys approach this concept?
isnt that just uhhh context.blueprint and stuff
but it chooses a card in the collection instead?
oh wait, boss blinds can't even destroy cards because there's no such thing as a destroy context to them, can they
my brain gravitates towards creating fake card area and run the calculate function inside the main calculate function
but i think you tried that
i'd say thats simplifying it a bit but more or less that is the idea. problem is that all blueprint-type jokers reference existing cards on the screen, whereas this is trying to reference cards that are not. plus, if the card it's taking the ability of is a blueprint-type that uses positioning, i need to make sure it's using the bootleg joker's position. this is a reason why the invisible cardarea idea wasnt working out cause if it copied a blueprint in some other cardarea it would just do nothing
I'm not sure how I'd go about this, but I think Ortalab has a chameleon joker that does something similar to this, that you maybe could look at. Or does that only copy other existing jokers?
since its not in G.jokers
what about actually changing the card into the card it's copying but replacing the sprite and description
<@&1133519078540185692>
pew pew
go mods go
chameleon joker was close but its not quite what im doing. its just a blueprint joker that randomly chooses a joker in possession
eggsploded instantly
you're faster this time
No, they got vonnegutted
so it goes
sent straight back in time, huh
how do I make a random number seed-friendly again
and the war between egg and vonnegut begins
pseudorandom()
explain further
pseudorandom("seed",min,max)
if you dont declare min and max then it will return a number from 0 to 1
thank you
the mods vs. steamncommunity
if you want it to be a whole number, use math.floor or smt
Aaah okay. My personal approach would be to see if I could create an invisible joker, or like N suggested a copy of the cloned joker that's showing a fake sprite and art, and store the 'real' joker in that fake card area you're after
begin the war
it's not a whole number??
god dammit
im thinking a way to make this work might involve some adaptation of ortalab's transforming code, which is something i've referenced before, where it changes a card directly into a different joker. thing is that it would have to have some method of changing back at the end of the round, keeping track of which joker was the bootleg joker
sure give me a sec
you should use math.floor(pseudorandom("seed",min,max)) if you want it to return a whole number
i woudn't even do that, I would just make a global function that transforms the copied card back every round (or whenever it needs to change)
that wouldn't be too difficult to do at all, I'd say
i thought you had to add more stuff to math.floor to make it round
nope
it works just as it is
maybe patching into the end of round effects thing to activate that? the function that randomizes the suits on cards like the idol? that could work
you know what, balatro: star rail playtest begins on wednesday next week
I think you could potentially even have it track which one is the right one by using some sticker logic, and just use a sticker without a sprite
or just a boolean, i think that would stay consistent if stored in the right spot on the card
maybe'
idk id have to look at the transform function i put together again and see what changes exactly
i need to remember removing this shit when i release the mod :3
honestly, mostly what a sticker is, just that a sticker has an easy and supported way to set and unset it that could have logic for the sprite and description take over
how do you exclude a suit from appearing in every deck
though a bool and some internal logic is also fully function, I reckon. Sticker's probably me being biased towards liking to hijack sticker functionality to become whatever I want
it sets the center, sprite, ability and cost, so there should be some spots on card that wouldnt be affected by that. alternatively I could also maybe use a custom shader/edition
stickers are entirely unaffected 😛
where is john smods when I need them 😔
in the smods mines mining more undocumented features
😭
localization is rough
I only need one more thing but I can't figure it out for the life of me
what are you trynna do?
the badge text up here
custom consumeable?
yeah
are you using a localization file? or is everything stored in every object?
I'm moving everything to a localization file
how do i make these specific suits not appear in the main decks
that's what I'm trying to figure out here
because in the loc_txt it's just label
😒
if it is I'm mad
k_[key] is basically the way to localize anything you're unsure about, I've learned
the localization wiki update is going to go nutty
I'm going to be adding
Impostor card modifier
should the player know of it's existence
-# what the fuck
initially
wtf is online Lua IDE
i only have one.
im running my automaticColoring function shit on there
replit
so that i can ctrl C + ctrl V the localized string and paste it into my localization
else it would be a headache to manually do this
❤️
you have to
guess im moving this to another compiler, fuck
im very tempted to try and create a program of my own now
oh yeah
I drew a Joker before as a joke but I have had zero use cases for it does anyone want the art for free
i love hibana
I mean, you could really just install lua
since I'm assuming you own a computer, since you're modding balala
hi
bruh moment
door stuck
yes
Me having fun in ESEA.
(the beginning is the lyrics to Snoop Dogg and Pharell's "Drop It Like It's Hot")
The phantom, exterior like fish eggs
interior like suicide wrist-red(rags?)
I could exercise you, this could be your phys-ed
cheat on your man homie AGHHH I tried to sneak through the door man!
Can't make it, can't make it, the shit's stuck...
...can i run it on a command prompt
somehow
yeah
lua's mainly run from the command line
i see
what if i just remove the in_pool section for the specific suits
why di you keep sobbing
@turbid maple yet again am i qualified to be a guest artist
😭
🙂
this goes hard
i have a shigure ui plushie
nope, they still appear in the main deck.
neat
That art is so rad, Aiko. Did you do that with a shader?
FURINA
plain old art
Oooh, that's smort
I CAN'T GET OVER NERD JIMBO
I am glad everything's in the localization file tho, since someone wants to translate my mod to chinese
the loc file in question:
oh!
i know it's possible but i have no idea how
well, doesn't that aspect of your mod only work in english anyway
can you make letter cards but in chinese thank you
I see
Use generation? Nah, copy-paste line 26 times much better!
That's so cool that someone wants to go through that effort!
i was lazy so moved to yet another online compiler :3
i am lazy rn
i was gonna do Japanese one
I just like the organization of a localization file honestly, haha
yeah I know
I was so surprised when they approached me 😭
this is also true
but it should be better documented tbh
Kuru Kuru!~
yeah you don't really know how much you need to localize until you start doing it
Localization leads to problem "fit unfittable in already small space" 
Kuru Kuru!~
@manic rune
"with"
I'd recommend starting with a loc file immediately if you're making a mod that adds more than like 5 jokers, haha, but I see why people don't
actually, considering a majority of hsr players is from china

I wish we could split loc files
...i think i should get into the localize stuff immediately 💔
mine are too long already
i made my mod when i first started modding as a practice project
i'm like
talking about removing specific suits from every deck
I made this mistake
this was after I added a total of 64 cards 
btw
Settings localization 
is there a way to unlock a card based on something about the current deck
😭
i am NOT localizing this card thing
Game dev attempts have thought me that localization is something you want to concern yourself with ASAP if you're planning on doing anything above day-long game jam scale haha
❌
damn.
Btw localization for Handy not planned 
There's no way I make settings page look good enough with even migger text
And imagine adding localization without steamodded
is it possible to unlock a joker based on some parameters of the current deck (specifically having at least a number of some rank) and if so, can you tell me how
...i just realized sometimes my CODE produces strings with {}{} at the end
luckily it doesnt seem to affect anything
so ig i can ignore it ❤️
BEPIS WEBSITE
-# no.
-# denied
i did have an idea of making a website purely for making joker descriptions
LIKE
it renders how the description will look like
with a bunch of qol stuff to speed up the process of making them
but i then realized i would need to learn new languages to achieve that
:3

anyone watches this show
I'm planning to make this stuff in Cryptid's future site
wrong challen
me
is the new season out
have i been missing out
Are you ready? New season of Game Changer premieres Spring 2025, only on Dropout.
Welcome to the Dropout channel! You can support us by signing up for Dropout.tv, our subscription video platform that features a ton of exclusive content and series for only $6/month (that's less than 17 cents a day). See tons of Um Actually, Game Changer, Dimensi...
still having no luck excluding suits from appearing
ah
i havent watched it yet, i literally sub to dropout for it and then cancel lol
😭
Only thing that keeps me sane
i think i see
allow_suits is being copied into in_pool
is allow_suits a function
i dont know
all i did was copy suit code from six suits and modify it to my liking
i feel like anyone who looks at this would be very confused by the extra things i add
i feel like thats an issue generate_ui collectively suffers from
Unless it dropped like today or yesterday I don't think it's out yet
Psst
-# is that what i think it is
sorry but how do i use check_for_unlock
oh shit
thats REALLY cool
how do i get that running :3
-# never used python in my life before
wait, i see. (snippet from six suits main lua)
It's also useless for Discord because Discord won't display user-submitted svg files
so allow_suits is just kinda a vestigial thing since there IS no function in my mod called allow_suits
Install python 3, then do py .\balatro_text_to_svg.py -h to see arguments
you need to set it to a function determining whether it should be in the pool
so i just create a function like common_suits and have in_pool use that
i
id add an explicit return false at the end
also sorry for being so incessant but how do i use check_for_unlock? i couldn't see very well how it works from the code
wait what
wouldn't that make return true moot then
also i don't know what you mean by end
like, the end of the local function? after the second end?
>py .\balatro_text_to_svg.py -s "{s:0.7,C:mult}+5{}{s:0.7} Mult{}"
>Exporting to +5_Mult.svg
after the first
no its just good practice
like this?
and how would i render this? sorry for probably asking a lot of dumb questions :(
im assuming you dont run it in a command prompt
I attached the exported .svg file, you can view it in a browser
i have no idea what the return false is doing but
l3
l2d2
do i do the opposite if i want a suit to NOT appear in the deck then
oh i see, thats fucking sick
just have it be return false instead of return true
> py .\balatro_text_to_svg.py -s "{E:1,C:spectral}Bepis{E:2,C:gold}Fever{}"
> Exporting to BepisFever.svg
:3 aw
I might add animated colour support to it one day, i know how to make it work in the SVG, just burned out when I realised how pointless it was
Hihi yall. I'm really excited cuz today I'm going to get the two core features of my mod figured out via lovely patching
What’re the features? 👀
Custom Modifiers + "Worlds"
is it possible to get a list of loaded hands
oh also
holy shit. that actually worked?
I should maybe get round to making my custom modifiers api
Worlds are like. Custom Areas. You can only obtain certain Jokers and cards within certain worlds.
They're meant for endless mode play
this is more like a proof of concept honestly lol
i doubt anyone will use this
Oh cool, I might wait for that then tbh
how do you get a list of all loaded hand types
It's really nifty. Would be great for double-checking and spotting errors in large joker packs
what does it do actually
does debug+ allow for spawning boosters
yes
only in shop menu, they appear in the booster slot
^ same way as jokers
well when in try to clone one it says "Trying to dup card without an area"
Hihi!!!
yeah only in the shop
i AM in the shop
weird then
you can't ctrl-C them, just spawn them in through the collection menu
that also doesn't work
what are you doing to spawn them?
Make sure you empty all the booster slots
thats not necessary
no you can have as many as you want, there's no slot limit
Oh
I just said you can't ctrl-c them, press 3 while hovering them in the collection menu and they'll go to their appropriate spot if one exists
im very inclined to use
rn
pleas dont that'll hurt my feelings
I do wish there was behavior for auto-opening or auto-redeeming a booster or voucher without having to spawn it in
:3

none of my modded suits appear in boosters though
huh?
moons and stars can appear in the boosters but not my puyo suits
-# are they fucking kissing
I think theyre kissing
is that wario and luigi kissing
that mario actually
that looks more like wario than mario
im gonna silently judge you for choosing that art.
Why are they kissing.
what impostor 😭
you cant just leave me hanging like that
i've opened a lot of mega standard packs, and not a single puyo in sight
cards can become impostor and they change suit and rank every round
this is um..... not cool
yeah i think thats pretty fun
imagine a deck full of Impostor cards :3
If you added code for them to appear in booster packs, remove that. They do that by default
well, back to the grind.
im so fucking hungry and my eyes immediately landed on that plate (or bowl?) of chips
i have no such code
😭
Huh...
Do I add custom Modifier functionality first or do I add World functionality first?
That's weird then
I think I'll add custom modifier functionality first
so like, what now
do i have to manually add code that allows them to appear in boosters?
I think so, unfortunately.
I believe having them not appear in the deck caused them not to appear in the boosters
is that a man carrying a big red ball
but before i go
this applies to suits that do appear in the deck too
Huh weird
it's not just the ones that don't
question: is it at all possible to get a list of all of the hand types currently active and loaded?
yeah thanks
Is there a way to increase the spawn rate of certain jokers, without creating a pool for those jokers to be tied to?
is there like, an arg that includes boosters
argggg... we be sailin
yo ho ho!!!
blow the man down!!!
idk how suits and stuff work but args.source == "sta" should be the standard pack for in_pool i think
source instead of soruce and the first if should be (args.initial_deck or args.source == "sta")
should probably check if args exists still
so if args and
yeah
still not appearing
sad
well that was worthless
Is this description clear enough? 
someone more knowlegable is gonna come in like "uh actually you should've done the wacky scoopy banoopy function thing in order to make your suits appear in booster packs"
My settings page so big omg, basically out of screen space
Already 5 
why does it not work.
i don't understand why it doesn't do what i intended it to do
❤️
I feel like this is too strong, I would welcome ideas for tuning this custom edition
you know it. I am working on a shader to color shift input cards into ghost rare as well! Right now, I have it do a smokey white + gold
please, i just want to impliment satan and marle already,
Well time to make some space 
im sorry jeff, as much as i REALLY want to help you, i havent touched suits before 💔
i mean, if that tarot card is somewhat rare then its fine?
figured out a way! this code is jank as fuck, it uses centers to get a random joker's calculation functions and whatnot. had to manually copy over loc_vars for vanilla object but for modded ones it just plugs into the loc_vars function and shit. it works great so far
it's a tarot card. I think I will drop it's payout down to $1 or $2 though
you are losing a lot of scoring benefits compared to X2 Mult from Glass Cards
if its as rare as a normal tarot card then i think that will definitely work
Wow that NES card looks amazing
gappie is very good at art :)
of course its gappie, they are always involved in good modded art 😭
Is there a way to do an Eaten/Extinct check?
Im trying to make a Joker that has a chance to prevent an Extinction or something from happening
In the game? Yes. You use 'joker_spawn_condition' or something like that to control whether it can or cannot appear. That does not work when you are using debug commands to special summon a jonkler
Thats for making something like Cavendish appear after Michel goes extinct though right?
Use in_pool for that
I want my card to detect when something like Michel goes extinct at the end of the round, and either spawn a new one in place or just prevent it from going extinct
zamn 💔
terribly sorry :(
you will probably need to take ownership of gros michel for that or check G.GAME.pool_flags.gros_michel_extinct for the easy version
ask me your suit question, I have done this
my ghost rare shader in action
how do i make them appear in boosters
Is there a pool for the foods too or will I have to take ownership of those?
what is that resolution :3
i dont think there is one by default
I think Gross Michel is the exception because it adds a flag to the pool, but other food jokers would need to be done with ownership for sure
because this is the code i have right now and they're still not appearing in standard packs
Ty guys
...oh, its not adding the money?
I’ll probably just take ownership of Gros Michel too then
this is because i want specific "rare" suits to appear only in boosters
it would make adding custom modifiers easy peasy
is there anything wroing with this code? please help
as in deck modifiers?
this has been a massive pain in the ass for me
eremel sweep????
as in things like enhancements, editions ,seals etc.
pls give example brain hurt
Custom modifiers :]
i realized i should've responded to you with all this
Let me know when it's done. I'd love to use it
can an enhancement have retriggers? trying to make this enhancement idea
Will there be options for what they can apply to (jokers, cards, decks, consumables)?
Hey does anyone know how to setup Steamodded [>=1.0.0~ALPHA-1424a] for Multiplayer Balatro?
you update to the latest version
if it can then im doing something wrong here cause this dont work
if config.oldcalccompat ~= false then
SMODS.Enhancement({
loc_txt = {
name = 'Shell Ammo',
text = {
'{X:mult,C:white}X#1#{} Mult',
'Retriggers once for every {C:chips}Hand{} used this round',
'Idea: BoiRowan',
},
},
key = "Shell",
atlas = "Jokers",
pos = {x = 1, y = 7},
discovered = false,
no_rank = false,
no_suit = false,
replace_base_card = false,
always_scores = false,
config = {extra = {base_x = 1.2, retriggers = 0}},
loc_vars = function(self, info_queue, card)
-- Set retriggers based on hands played
self.config.extra.retriggers = G.GAME.current_round.hands_played or 0
return {
vars = {
self.config.extra.base_x,
self.config.extra.retriggers
}
}
end,
calculate = function(self, card, context, effect)
if context.cardarea == G.play and not context.repetition then
-- Apply initial enhancement effect
effect.x_mult = self.config.extra.base_x
effect.retrigger = self.config.extra.retriggers
end
end
})
end
its just this whole "suits not appearing in boosters" thing is really getting on my nerves
what is this jank ass old calc code
miku got killed 😔
my code for anything ever is always jank
like heres old calc for cubic
if config.oldcalccompat ~= false then
SMODS.Enhancement({
loc_txt = {
name = "Cubic",
text = {
"{X:chips,C:white}X#1#{} Chips {X:mult,C:white}X#2#{} Mult",
"Idea: BoiRowan",
},
},
key = "Cubic",
atlas = "Jokers",
pos = { x = 1, y = 17 },
discovered = false,
no_rank = false,
no_suit = false,
replace_base_card = false,
always_scores = false,
config = { extra = { x_chips = 3, x_mult = 0.6 } },
loc_vars = function(self, info_queue, card)
return {
vars = {
card and card.ability.extra.x_chips or self.config.extra.x_chips,
card and card.ability.extra.x_mult or self.config.extra.x_mult
}
}
end,
calculate = function(self, card, context, effect)
if context.cardarea == G.play and not context.repetition then
effect.x_chips = card.ability.extra.x_chips
effect.x_mult = card.ability.extra.x_mult
end
end
})
end
and new calc
if config.newcalccompat ~= false then
Cubic = SMODS.Enhancement({
object_type = "Enhancement",
key = "Cubic",
loc_txt = {
name = "Cubic",
text = {
"{X:chips,C:white}X#1#{} Chips {X:mult,C:white}X#2#{} Mult",
"Idea: BoiRowan",
},
},
atlas = "Jokers",
pos = { x = 1, y = 17 },
config = { extra = { x_chips = 3, x_mult = 0.6 } },
weight = 0,
loc_vars = function(self, info_queue, card)
return {
vars = {
card.ability.extra.x_chips,
card.ability.extra.x_mult
}
}
end,
calculate = function(self, card, context)
if context.main_scoring and context.cardarea == G.play then
return {
x_chips = card.ability.extra.x_chips,
x_mult = card.ability.extra.x_mult
}
end
end
})
end
hey all
hi
do any of yall know how to make a simple mod that edits the stats of a joker? i want the basic +4 mult joker to be x12 mult and appear way more often?
hey
i’m… suffering.
dang
thats just what happens when you choose to mod balatro
seems like that would be really op but you'd have to figure out how to like take ownership of it? not sure i haven't done take_ownership stuff
you get literlally nowhere trying to make custom suits appear in booster packs
that gives me alot of hope xD
dang, if you know how to get me started atleast that would be great. just with a simple lua or sm
i mean you're free to look at the terrible code of my mod ive made a bunch of shit but i haven't done any take ownership stuff
😭
ill check it out!
😭
why would you not just make a new one
yeah that would probably be easier tbh
oh yeah yall right xD
im completely new to this though\
do yall know any resources to get me started?
https://www.youtube.com/watch?v=Zp-4U5TlbxY&ab_channel=artmuncher
https://github.com/Steamodded/smods/wiki/
STEAMODDED 1.0.0
A tutorial on how to make a modded Joker.
https://github.com/art-muncher/Example-Mod -- EXAMPLE MOD
https://github.com/Steamopollys/Steamodded -- STEAMODDED
https://github.com/WilsontheWolf/DebugPlus -- DEBUGPLUS
-----------------------------------------------------...
thanks!!
Ladies
but all of these enhancement ideas are retrigger so uh anyone know how to retrigger enhancement?
is there a reason why my edition is triggering +5 +10 +5 +10 chips?
(It should add chips and then increase its chips by 5 permanently, not the permavalue because this applies to jokers too)
trying to see if anyone elss knows why my suits don't actually appear in standard packs
i know not a lot of people know about suits
but its worth a shot
why does the post joker activate before the joker_main
what
no ok it activates after
but
the cards graphically are created before
the problem is that i don't even know if what i'm doing is correct
Ngl I kinda miss the Breaking Bad and Better Call Saul stings 😔
how do you debug yourself in a joker while it's hidden from the collection?
make it a config
for the funny 
Honestly yeah, I probably will

I would just set it to be unlocked for the time being while you're debugging it
may I ask for assistance
I have a card which runs a 1/6 chance to divide the blind's required score by 6 if the hand is exclusively a six, and if it triggers then it will destroy the six
however the way it is currently strutured means that it destroys the six instantly, before it plays the scoring animation
how do I make it so that it triggers after everything finishes scoring
local destroyed_cards = {}
if context.individual and context.cardarea == G.play then
if #context.full_hand == 1 and context.full_hand[1]:get_id() == 6 then
if pseudorandom("roulette") < G.GAME.probabilities.normal / card.ability.extra.odds then
for i = #context.scoring_hand, 1, -1 do
destroyed_cards[#destroyed_cards + 1] = context.scoring_hand[i]
end
print("<")
G.GAME.blind.chips = G.GAME.blind.chips / 6
if context.final_scoring_step then
for i = #destroyed_cards, 1, -1 do
local card = destroyed_cards[i]
if card.ability.name == 'Glass Card' then
card:shatter()
else
card:start_dissolve(nil, i == #destroyed_cards)
end
end
end
if context.destroying_card then
print('big amn')
return {
message = "BANG!",
}
end
else
print(">")
return {
message = "click...",
}
end
end
end
end,```
here is my code
Question: I want to make a Joker which changes the price of all items to 0 when you enter the shop (like the Coupon Tag). Which context should I use?
three more suits.
there is no such thing as too much puyo
I'm still trying to figure out how to make the worlds feature work
what's that
does anyone know how to modify/change blinds to be a different blind type
it's not
Worlds are run modifiers that give access to Jokers, Consumables, Blinds and other features as long as you are "in" that World.
I'm not sure if I need to patch for that to work, but I'm willing to do whatever I need to to make it work
I would just make a new joker-like object that represents the world
it's like the easiest thing
.... why didn't I think of that lmao
You will probably need to take ownership of things if you want to take them out of the pool while you're in certain worlds
Yeah I know that much
Thanks though!
I would've overcomplicated it if you hadn't helped.
Is there a way to put it in its own card area, though?
I should probably get it working first, actually, then work on putting it in it's own area.
you know its bad when i start venting in the comments
yes, I do that for field spells in my mod
i'm getting desperate at this point
how do i merge the new and old rank things
Is there a reliable database or other source of information on all jokers, blinds, tags, etc. and how they've changed in newer versions?
I wrote a Discord bot for Balatro a while back. At the time I manually scraped all the 1.0.0 jokers from the wiki. The information in the bot is now quite outdated, and I'd like to add support for more than just jokers. It would be great if there was a database I could use rather than trying to pull everything off the wiki again.
the game itself
Hey chat
is it return false that's causing the issue?
whats the issue
the issue is that my suits dont appear in boosters
True, I could modify the lua source to log the data. Was hoping someone had already dumped the data, but if not I can do that.
well the data is in the source already
I would check their code then
Nothing wrong with that
i just don't understand
are you coding with notepad or something
i probably have
my memory is failing me
i mean the function itself here allow_suit is fine
sharing the code snipped again
allow_suits is also not a pre-existing vanilla function so its gotta be called somewehere
where are those functions supposed to be called ?
Who is this...?
rare suit example
the common suits are intended to be in the base deck
what is args.source ?
when don't you want it to appear?
i have an issue.
all i'm trying to do is have them appear in standard packs
that's literally it
how do i have them display as discovered even tho they are not
if args and args.initial_deck return false looks wrong to me...
put discovered = true in the joker's attributes
then return true at the end
i don't want them to start unlocked tho
they just have to display correctly
N'? any ideas?
huh? me?
what's the question
then why did nif say to add return false at the end
idk lol
you can remove the args.source thing
How would I go about having jokers change music and background?
i was wrong on that
@/fakenifping you.
does anyone know how to modify/change blinds to be a different blind type
local function common_suits(self args)
if args and args.initial deck then
return true
end
return false
end
local function rare_suits(self, args)
if args.initial_deck then
return false
end
return true
end
im not sure what args.source is
i don't want the rare suits to appear in the deck
i dont think this does what they want
common suits should appear in boosters too right?
local function common_suits(self, args) -- you can get rid of this function too i guess
return true
end
local function rare_suits(self, args)
return not args.initial_deck
end
oh my god. it works now
a bit cleaner
rare suits also appear in boosters
nice !
these are playing cards?
yeah? they're custom suits
i don't get what you're trying to say here
That im dumb LMAO
well call me dumb as well
Design question, whats better
- A consumable adds an effect in a queue that is triggered before any other effects are applied. A custom card area is used to display them
- A consumable adds a (negative for no space, cant be sold) joker which gets their effect triggered before other jokers
first one kinda requires more work but i dont want the joker cardarea to become convoluted a lot
looks deprecated but I’ll try to check it out
I have this context on an edition. For whatever reason it triggers three times, once per context I believe. I want the edition to trigger just whenever the card is triggered, like you would expect foil to. How do I fix this?
I know it's possible, I just don't know how to do it
whats the calculate_effect call for ? I dont think it will get triggared since the function returns
I believe it gets triggered three times because calculate is called a lot of times
Im just confused about SMODS.calculate_effect in general. I looked through the wiki and the search bar for this channel Idk
like, an obcene amount of times
so it probably gets triggered once for pre_joker and twice with your () condition
resurrecting this - anyone know how to make a joker a custom size when using another atlas?
with px = 71,
py = 95, in atlas def
ok sooooo, how do I display a message for +chips, because Im using calculate_effect because Idk how to otherwise (cant figure out message)
Calculate_effect is mainly used for calculating during scenarios that don't normally have a calculate function
if you look at the screenshots in the original message, i have an atlas that's 76x76, but it isn't displaying my 76x76 sprite correctly
Ok I might be stupid but my understanding is that calculate calls whenever constantly, and context defines when the calculate function actually runs?
Yes
huh ok
in the return, have message("text")
But I have mine set to run during when a card plays or when a joker activates?
No wait I misunderstood
yeh but thats just normal orange message, Im trying to use the +chips one
So. SMODS.calculate_effect and the calculate function are two separate things
SMODS.calculate_effect is used during consumables or playing cards to give them calculation abilities, whereas the calculate function is used in cards that support it to do as you said.
oh wow you are right, somehow it i spopping up the money but not adding it