#💻・modding-dev
1 messages · Page 11 of 1
it was changed
I talked to the mods directly to see if that could be an exception to deter cheating, but they said
so the code was unobfuscated after that rule was made
it's also disorganized and uncommented so good luck trying to cheat successfully with it
I mean i had cheated with the older steamodded version cause I found a silly bug but then it was obuscated so I didn't feel like testing if it still worked after that
only difference is that the source isn't on GitHub because I don't want potential cheaters to see exactly what changes are made each time
but you can still just open the lua files
fair
lyman do i make a tangle buddies joker perhaps
like here's a random section, have fun figuring out what any of this means
are there any mods I can look at to see how to add a section to the collection?
I think someone was messing with it, but noit sure if it was releasdd
not sanely
Balatro doesn't have any sane standards as of yet
The only thing we have is Steamodded
Making your own collection type is uh, not a good idea (from person making 2 consumeable types)
o
why aren't you WORKING
I am going to pull my hair out
All I want is to not have to manually add restricted joker to this challenge
but nooo, let's just NOT RUN THE CODE AT ALL
:DDD
Got "Reach the stars" and "Damocles" codded, eepy time
At least it works (after switching save files and using init_item_prototypes)
Whoops I missed Cartomancer
Also why is the name ERROR
ugh
also oops the banned joker count is doubled
How do I migrate to the lovely patcher? That's what everyone uses now right? Do I need to make any changes to my existing mods?
I guess im done, should i release now?
the injector just crashes for me
(I have new hands and their planet cards) and i forgetting anything ultra important
why is this in modded-dev
Where is it supposed to be?
that dialog box literally tells you the solution
it gives an exact response of what you should do
no it doesn't, it's incorrect
no no do not encourage them
It's a fresh steam install
yea im moving to modding chat
And the other question?
Do I need to make any changes to my existing mods to migrate them to the injector?
how so
You can see all of the joker showing up twice
Also, what controls the descriptions in challenges?
look up challenge_description_tab
it shouldn't be that incorrect
if it thinks the file exists then it's there
it was my skill issue, my bad. Didn't realize steam didn't nuke it itself on uninstall.
no worries :-)
its always ok to ask
funnily enough I think that's the only really descriptive error message in lovely
everything else is a "things are fucked good luck"
thats... not right
deck of diamonds
damn, the whole red deck?
ERROR rarity Red Deck 5 of diamonds from the blue seal mod
man maybe i should tone it down with the chaos
balatro chaos mod would be a very fun idea
balatro but every slot can hold jokers, consumables, playing cards, packs, vouchers, etc
Balatro but the card area position is randomized
man, I sure am screwing this up, and I could use some help with a deck backer image, I got it to finally display something but not the proper image
yea
it can't be that hard... right?
well, uhh, actually:
re;shuffled....
it almost works
but also kinda doesnt
the only MAJOR issue is that nested packs sends you to the shadow realm
other than that, its pretty ok
i mean technically
how do you check all played cards rather then all scored cards?
nvm, i figured it out
least powerful Rare joker
Hack Fibonacci strat in shambles
Chippers
imagine that with pareidolia and baron
every single card is a king
howdy Balatro modders. I have no idea how to turn my texture pack into a lua mod that will work with steamdecked. It's a simple change to the enhancement/8bitdecks, and am tired of having to do the 7-ZIP texture replace method every update as of late :P
Any help would be appreciated!
how does suit work?(in this context)
any one piece fans?
that gets the first letter of the suit name
Mihawk!
with custom suits, it doesnt
it really doesn't
literally just
SMODS.Card.SUITS[self.base.suit].prefix
that'll give you what you need
slightly different for 1.0 btw
SMODS.Suits[self.base.suit].card_key
(it's card_key because that allows me to reuse more code across suits and ranks)
- Do not redistribute the Balatro source code.
would distributing modifications to the source code using git patch files go against this rule since they contain a small amount of the source file to locate where in a file things are added/changed?
Im pretty sure it just means dont redistribute the game's code as is
On the accout of yknow
Someone can just compile it
Which balatro mod loader have people decided on to be used for making mods
or is it still between multiple
Steamodded is the main one
me on my way to make my own mod loader because i dont like the existing options 
i will kill you
do not even dare
is someone else doing it
we do not need 200 competing standards
xkcd
we have steamodded, thats all we need
i don't think anything could overtake steamodded at this point
no a modding framework would be a mod on top of steammodded
that lets you add jokers/cards more easily
cause as far as I have understood steammodded gives you nothing
so.. an API?
but maybe im wrong
i see
“There are now 15 competing standards”
In my eyes a mod loader is not the same as a mod framework
well, they can be
but they don't have to be
i might just be bad with terms tho ngl
but yea what i meant was a mod that other mods can use to easily add suits, cards, jokers etc
which is something that prob should be in steammodded
but also this is a bad first project and i have no idea what im doing so yea never happening
nice
Is it possible to force a joker to show up in the shop?
don't make this a forge vs fabric vs quilt 😭
yeah if anything, it'd be much better to try to help build on top of one of the two modloaders
lord knows we would still be in the stone age without feder's apis
crisis averted
one of my principles with steamodded has been that coremods shouldn't need to exist
are there any major balamod mods that haven't been ported to steamodded?
aure have you basically just become the main person since steamo's been busy
i think it's pretty much just arachneii's stuff
if you count rewriting literally the entire thing, sure?
so ... steamodded
there's not much more you can simplify it without turning it into scratch or something
i had no lua knowledge a couple weeks ago and now i'm making balatrotale
me with all my mods
speaking of balatrotale i think i need to make a trello or something to keep track of what else needs to be done for the initial release
i had barely enough lua knowledge a couple weeks ago and now i'm going insane
Planners don't work for me for solo work
its just too much effort for what, a board of stuff
just wing it
have fun with it
balatrostuck's design changes every 3 days
there is no plan
the plan is whatever i decide is the plan at the moment
i dont wanna end up accidentally releasing the mod in an unfinished state
My planners are bantering with other people and just record my ideas in conversations
but i guess its also good motivation to have a list of exactly what i need to do
but thats more of a me thing ig
when i add the stuff ive done already it makes me realize damn ive pretty much already gotten the majority of the work done when it comes to the mod as a whole
Most of the plans for codex, fusion and [boon pack mod] are all just feder and I having convos
Oh shit I can finally say it's called fools fables now
a lot of the joker ideas for balatrotale just came from me randomly thinking "hey what if a joker did [x unique thing]" and writing it down if i don't immediately realize it'd be impossible
like undyne the undying, tile puzzle, tasque manager, mtt resort, the knight, most of the souls
undercards... fr..
i haven't even talked about tile puzzle yet but the idea is that it'll change color each hand and each color has a different effect
undercards...
the effects aren't explained at all you just have to find out
we out here being real ones today
but that's why it requires a shader
i'm probably just gonna color the screen black and do some shit like if tex.r + tex.g + tex.b = 0. then [cases for each state setting it to a specific color]
the one time balatro not using black is actually useful practically
...god you know what's tempting for that joker actually
explaining every single effect in the description in detail
but adding like {s:0.1} to each line
so it's impossible to read
you just have to be like "well i mean it can't hurt right"
artistic rendition
save yourself
Actually based
Reading the card explains the card.
i think it's fun to have a card that you don't really know what it does anyway
i'll PROBABLY add a config option to only show the description for the current color but it's pussy mode
From when I tried, I couldn’t get the small size by writing it normally, but I could if I manually added the small text at another point
But maybe I did something wrong
that's weird
wdym
@silent sinew take it from someone who's been through trello hell, you're using it wrong because you're using it in the enterprise way
there's no point in making individual tasks for each and every sprite, every mechanic, everything
tasks should inform specific goals and desires, not mechanical parts of a whole
i'm using it in a way that's effective for what i want
which is literally just remembering everything so i dont release an unfinished mod
there's a better way though
like watch i'll make a trello to show you
this is how i would do it
i didn't really know trello could be used like that tbh
honestly though i like how visual the way i'm using it is so that's probably what i'll stick with at least for this project
maybe in the future when i need to be more organized though
you're creating more work for yourself
literally
every additional minute you spend managing the trello is a minute you could be spending actually making things
i mean now that i've set it up not really
and if i switched to this that'd take even longer
basically if you plan to update the mod you should like
consider that structure
it'll take up less space
i will
also labels are meant to remove redundancies from your task descriptions
so I'd make Sprite and Effect a label
and remove the art and programming labels
Back again with another round of questions most likely, how do I use the pseudorandom/pseudoseed functions?
pseudoseed just generates a value between 0 and 1 based on a string
pseudorandom just uses a pseudoseed to select one element of a list at random
in the end i'm using this in a way that's convenient for me specifically but may not be as convenient for others
either way i appreciate you telling me about this format and i'll definitely consider it for future projects/updates
you should just read the source code
I may or may not have been getting an error because I mistyped psuedo instead of pseudo and pulled my hair out over nothing lol
yeah thats fair also still, read the source
i feel like at least 50% of the questions new modders ask in here could be answered by "how do they do it in the source code"
I have been, I just couldn't figure out why my random gens weren't working (see above)
and this is why you should be registering everything highlighted in yellow in VSCode's global Lua variable registry
because then when you mistype it gives you a meaningful error
not trying to be mean in saying that it's just genuinely a good thing to check when you're not sure how to do something because it'll usually have exactly what you're looking for
no its not mean to say that people should think for themselves and not waste other people's time
I have been! I have the actual functionality of the jokers down now due to reading it, it's more so the LUA side where I fall down (forgetting thens and ends), but the error I was getting didn't make sense (because I was dumb and didn't check my spellings lol)
i don't really believe in getting pissy when someone asks one or two "stupid" questions about something i'm knowledgable of but there does really come a point where you should just look it up (speaking in general not about you twostickmen)
what code editor do you use
VSCode
do you have the Lua extension?
the lua extension will just let you autocomplete the ends and thens
yeah that's completely fair lmao lua has been kind of a difficult transition for me too with the different operators and such
Especially seeing as I'm coming from Python where we don't even need declarations lmao
me when i can press tab
the only language i knew before this was GML which has literally no applications outside of a specific program so it's probably good that i'm expanding to something more practical
imagine autocompleting your code
its called language grammars sweaty
< manually writes if then end
Assuming this is the correct one?
yes
ya
then you just type in like
for or if or fun and hit tab
and it'll take care of the fluff
Life saver
icl it's kinda annoying sometimes like when i select something and type " and i'm expecting it to delete everything i have selected but it just surrounds it instead
that's just a me problem though LOL
if you expect it to delete everything you press backspace
thats how it always worked
the surround behavior is more important
i'm just used to selected stuff being deleted when i start typing regardless of what it is
surround behaviors are useful
i'm not saying it's a bad thing i'm just being a bitch because i'm not used to it lol
it'll still be deleted if you start typing afterwards lmao
Actually quite proud of getting this to work first iteration without any major problems https://outplayed.tv/media/wXY8aK
To capture and share your gaming highlights, download the Outplayed app on Overwolf
oh that's pretty cool
is there any easy way to generally get the default localization for an object? either from a center or slug?
that would be G.localization.descriptions[center.set][center.key]
how could i add the loc_vars though
(not sure if center.key exists for vanilla objects, might need something like ability.center_key) off the card
?
the descriptions will have the #1#s and such
yeah? if you want to have it as displayed, you'd need to have the game parse it or replicate that behavior
thats what im looking for
would it be possible to, with just a center, get the default localization, as it appears in the collection.
I want to make a mod that repositions some UI elements, where should I start?
Why are "EDITION" and "DARK_EDITION" not hex codes but these lists/arrays?
they're animated
HEX actually just outputs a table like that
if you look at them ingame i believe they loop through grey, blue, grey, red?
it converts your hex string to an RGBA array
I see, do I need to do something special to use these in my text then?
you should look at the loc_colour function, it defines all colours and keys for them to use in loc text
or if you need any others, you can add them by patching that function
General format is like {C:red}Mult{}
Do you happen to know where I can find that function? I'm ctrl+f ing through the files I'd expect it in but can't see it haha
likely functions/misc_functions.lua, but it's easiest to use a global search function like in vscode
Is there a state changing when I switch from end of turn to shop?
Kinda trying to add a context when entering shop
Why specifically entering shop and not just end of round?
i think you should be able to hook into Game:update_shop(dt)
Because I have a custom context for ease_dollars but it triggers too soon on payout
And end of round triggers before payout iirc
would tags be relevant to this? like d6 or coupon tag for example
Oh true I could look at that too
Have looked at the function and can't figure out why this isn't making the text the right colour, am I just missing something super obvious?
looks like coupon is called in update_shop so that's almost definitely what you're looking for
Once again, defeateed by Not Paying Attention Enough
That did the trick, ty 🙂

Coded half the jokers I wanted to make so far
i just remembered to check and it looks like edition shaders dont work on the knight.... hmm
i wonder how hard that'll be to fix
...i wonder if i should fix the soul not having any shader
...NAAAH
base refactor is up on github
Why is context.end_of_round triggering 15 times? Am I using the wrong context? I'm basically just copying what I see on invisible joker
onto PRs
There are more context under context.end_of_round, I recommend using if SMODS.end_calculate_context(context) then instead
ur supposed to make a big show out of it man
steamodded 1.0 beta out now!!! type deal
it's not out until i make a release for it
wow it's disgusting
i can't bring myself to deviate from vanilla behavior and i hate it
just making sure i'm not misunderstanding, the main rewrite portion of the steamodded update is currently available on github? and the rest of the update will come later officially in a release
the release will include all currently open PRs being handled
Just had a thought, could you technically make a joker who's functionality changes with its edition? Whenever it triggers you do an if/else tree for the editions?
you can use what's up on github now as reference to start rewriting your mods, but I reserve to change anything until the release
I ask because I have made the Gay Joker (Gains mult when hand is not Straight, resets on a Straight), and I think it'd be funny to invert its effects if negative
ahhhh i see
You can check the card's edition if it has one and make it do something else
Excellent
sound api becoming a part of smods is huge
The new crash handler just got merged to upstream steamodded
Huge
That means there's now a new api for mods
Kinda
I'll be adapting it slightly to where debug info is declared directly on the mod object
That makes sense
As long as it can be changed any time after the mod is initialized, then it should be pretty handy
yep, that should well be possible
all modded objects keep a reference of the mod they're created by
so such code shouldn't even need to make any assumptions about the current mod's ID
what could this be useful for just out of curiosity
like, would a mod be able to say "Make your you have X API installed!" when you crash
sorry what
maybe if you throw an error with this error code
idk if lua supports that
i'm just not really sure what the debug info stuff is useful for
that was my first assumption
I can't decide if I want to start making a mod that adds jokers with a coherent theme, or if I want to go with a completely random "whatever ideas you have" type mod
Any kind of info that might make reading crash logs more useful. Things like version, if something had gone wrong, or just additional info about why something is crashing
ohhh ok, that makes sense
When I was testing, I had a mod to manually crash, so it set a thing when it manually crashsed,
it also had a version field
For starters, I recommend making a mod to learn how to mod.
So true, honestly
I've started poking around in the game files and looking into how other mods do things
Does anyone have a Joker that uses the second output of Steamodded's loc_def function?
@frosty dock?
#1210728178201526373 spectral fool
Thanks
np
Sorry this is more of a lua question but is there a easier way to type this return hands[1], hands[2], hands[3] hand is a table
return hands doesn't work
return hands should return a table, can you change whatever receives the output to receive a table?
I did!
do you like them
Did you see the Lucky 8r8k combo?
Yes! I wonder if we'll get Grimdark Jimbo
but yeah Tangle Buddies follow factorial increase
I didn't see the actual effect tho
they what
they give +Mult based on factorial scaling
So if you score 5OAK it grants +5! Mult?
does anyone have any idea how i could force this card to be aligned by the top rather than the middle
no idea
Maybe there's an offset option somewhere?
Alternatively, make a sprite that has a lot of invisible space above
that's how CSS does it in morefluff
but yeah Victin wanna see what it gives at 10 total duplicates scored?
I feel like the smaller terms tend to 0 but for O(5) it's close still
Wait does it scale over time?
but wouldn't that make the hitbox stick out a ton
Maybe? Probably? Definitely?
i might try hooking into align_cards
it scales with each duplicate scored, red seal and sock work
Oh right
… Sock?
sock and buskin
Ah
What was the inspiration for the effect?
squiddles
it appears to be like, just a silly little early game joker that scales on pairs and 3oaks
maybe 4oaks if you're lucky
but in reality it's an eldritch horror wearing plush flesh
Will you make a long dog card?
I see
That gives me an idea
yeah?
i love that
lmao you can see the tris
how did that happen xd
the sprite being taller makes the distortion more visible i guess
no
i dont think i can fix this it seems basically hardcoded
LMAO
keep it for the memes
Not sure if i should ask here or in Modding chat but, i'm looking forward to start learning how to mod, is there anything you'd recommend to start with or to check out as a beginner?
Right now i've only done a little bit of modding before when trying to mod Slay the Spire, i know a bit of coding but i'm still a noob
set a goal to make a joker or something, search up similar jokers in the game's source code, look at the code he used, and see what you can do
also steamodded
That works
What's that?
its a mod (or api or something) that lets you add stuff easier
ok the solution made me feel stupid
this is exactly what i wanted lmao
the hitbox is the same as the original, it acts the exact same as a normal card but with That
the one issue is that it kinda sticks up off the card which i dont really like
it's more obvious when i move it near the edge
@edgy reef anything on updating payout arg API? iirc you said you had some things to update?
(conversion to lovely would be much appreciated, I'm not going through full function overrides I didn't even write myself haha)
aight no need to rush
hey wait a minute... ive seen this one
i can get started on sticker API though, right?
does anyone happen to know why this happens
Does anyone have a reference image with all the Balatro colors'? I know Balatro has a very specific color palette and I want to reference it for spriting n stuff
Thank you!
lvl 5 2 rank sign (retrig every 2) + flush five of 2s + this = e32 ez clap
@strong plume @broken vine hey you guys are much smarter than me can you help me figure out what's wrong in #⚙・modding-general
sorry for the ping
btw
I have literally never written a single piece of code in my life
Sorry
aw
i've written like 2 lines of code, so not much better. will give it a crack, though
Just need to check I'm not crazy - Invisible joker is slightly animated/has a subtle shader right?
It's not just the semi-transparent colouring
Yup
Hey, just a simple question. Does anyone know whether, there is a documentation available for modding?
like, for creating mods?
yup
does anyone know if you can combine size and color modifiers to text at the same time
There shouldn't be any issue
you only need one {} right
What if you split it?
what if swapped?
splitting did not work
does the color work without the size change?
Swap should work, I'm seeing a desc that does it
Uh
I'm having issues merging into the refactor, can you merge the latest commit on main on your end?
oh its the space
that fixed it
i have opted, due to the nature of fusion jokers and a lot of them being very wordy, to simply shrink any parentheses text
like so
@shell timber Compat between codex and colors.
An alchemical that automatically sets the turn timer of all color cards held to 0
i wish i had literally ANY idea why this was happening
Wdym?
made a few joker textures of my ocs
uhh idk
Trying to use this code to apply the shader to a joker, getting this error any idea what I've done wrong?
your main branch seems to be what i need for the sticker API now, though I think that was payout args before??
I accidentally synced up the Payout Arg API instead of the Sticker API
Thank god I have it downloaded already
oh lmao
delete lines 138 and 139
Oh I must have not understood the comment, I assumed it meant I had to keep the lines or it wouldn't draw properly lol
Wait no I just straight up didn't read LMAO
https://outplayed.tv/media/ojJgZ1 Using the same shader as Invisible ("voucher") do you guys reckon it's just the colour making it seem way more shiny or is there a value I need to tweak somewhere (I notice the self.ARGS.send_to_shader in the code that seems like a starter but not sure if that's me reading too much into the name)
To capture and share your gaming highlights, download the Outplayed app on Overwolf
Sorry, Idk about shaders. It does seem a bit too purple, but rather than making it less purple I think I'd try to add some rainbow-y colors in the light, so that it shows up in the edges, to make it feel more imaginary
New Joker: Wildheart! What do you think?
It's funny it has a lot of lines of code but it's mostly because it has a lot of conditionals
The purple was more for it to be a "shadowy" invisible joker but will take on board!
I installed steamodded through lovely and now I always have the debug window, is it possible to get rid of it?
i have spent fucking hours trying to get this stupid bird to look right
add --disable-console to steam command flags
this should not be this hard
ty!
np
can someone help me with some code? i'm trying to make it so whenever you play a straight, a variable goes up by one
Try Runner
oh yeah thats a good idea
i fucking hate troubleshooting this front positioning so much
i'm actually gonna lose my mind
genuinely why is it so convoluted to make a card's sprite bigger without giving it a bigger hitbox
WHY
well i hope you figure it out
i'm so close to giving up on this idea because i've been in the glsl trenches for half the fucking day and i've made no progress because all these variables have literally no indication as to what they do and i just have to guess
and it's just SO convenient that i have to restart the game completely and menu just to see the effect of a single change
you could probably force the card on the title screen to be the card you are working on
would still need to restart but thats not easily avoidable
i think theres ways to hot reload lua but i dont know for sure
yo for those of you who is doing additional suits
how do i get a list of suits that's supported?
i am curious if anyone knows of a way to make a joker's hitbox different from its sprite because if so then maybe the joker i was struggling with earlier could be salvaged
actually nvm i forgot that version still had the issue of the card floating way too high
this game just does not like long cards whatsoever
I'm pretty sure there were a few big cards?
actually i talked to my friend about it and they helped me realize i could probably just make the jank look intentional if i leaned into it considering reaper bird is an amalgamate
i think i'll give it another try tomorrow
I have been trying to work on the code for my portion of the into the jokerverse set, and I have failed miserabley. I am going to bed, but before I do, I will leave you all with a sticker summarizing my session today
is it possible to have a soul image that is an arbitary size?
Most likely
if you're able to get your change in the save file, you can install a debug mode mod and press l the second the game loads to load your save
i never thought about that
debug mode also has some handy stuff like spawning jokers and stuff
either im insane or the line self.children.floating_sprite = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS['Joker'], self.config.center.soul_pos) has 5 args that litterally dont do anything
wait how does my code work at all?
...why does my loc_def not update when variables increase...?
they might do things idk
either way floating_sprite and floating_sprite2 work in my code
3-layer cards look rly cool (art by Mystic Misclick)
The Soul hardcodes soul_pos which is really annoying
if self.ability.name == 'Gateway' and (self.config.center.discovered or self.bypass_discovery_center) then
local scale_mod2 = 0.07-- + 0.02*math.cos(1.8*G.TIMERS.REAL) + 0.00*math.cos((G.TIMERS.REAL - math.floor(G.TIMERS.REAL))*math.pi*14)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^3
local rotate_mod2 = 0--0.05*math.cos(1.219*G.TIMERS.REAL) + 0.00*math.cos((G.TIMERS.REAL)*math.pi*5)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^2
self.children.floating_sprite2:draw_shader('dissolve',0, nil, nil, self.children.center,scale_mod2, rotate_mod2,nil, 0.1--[[ + 0.03*math.cos(1.8*G.TIMERS.REAL)--]],nil, 0.6)
self.children.floating_sprite2:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod2, rotate_mod2)
local scale_mod = 0.05 + 0.05*math.sin(1.8*G.TIMERS.REAL) + 0.07*math.sin((G.TIMERS.REAL - math.floor(G.TIMERS.REAL))*math.pi*14)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^3
local rotate_mod = 0.1*math.sin(1.219*G.TIMERS.REAL) + 0.07*math.sin((G.TIMERS.REAL)*math.pi*5)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^2
self.children.floating_sprite.role.draw_major = self
self.children.floating_sprite:draw_shader('dissolve',0, nil, nil, self.children.center,scale_mod, rotate_mod,nil, 0.1 + 0.03*math.sin(1.8*G.TIMERS.REAL),nil, 0.6)
self.children.floating_sprite:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod, rotate_mod)
end
My code pretty much does that too (there's another section initializing the sprites)
im just trying to get the thing to render without being cut off
rip
that might be an atlas sizing thing
also the cool thing is that editions only affect the bottom layer leading to some cool effects
which is why i was messing with this
bingo
no seriously, why is it that a joker that i've taken ownership of isn't updating its tooltip to reflect its scaling?
oh thats very weird
and you are hooking things up with the loc_def function properly?
clearly this is out of my expertise
#2# should update unless the 2nd element is a static value
i assume that ability.extra.chip_mod is being incremented by 2 each time?
idk how to solve it right now sorry
Cool
Also cool
If the internal variables are correct then the tooltip isn't getting the new variables. Try printing when the tooltip should be rendered and what values it has when it is
yeah, it's tracking the variables just fine
This… almost works
The Joker yes, but obviously not the tooltip
So print during the tooltip
mhm
it could access the variables during the tooltip
i'm just not sure how to force it to do so
That's what loc_def does
maybe i need to clear name_parsed, and text_parsed?
Now I only need to make it so the player can't take actions while the animation is playing, and I would like to remove the small delay after the last trigger
wheres my mod that unsquares square joker
joke's on you, i'm gonna make him even squarier
the endgame is just one pixel joker but alas i think it already exists
https://gyazo.com/f07f78daf0a49e7a40007b50da22c8b4.mp4
Collabs are fun, and here's the first one from Codex: a new alchemical that only appears with @shell timber's MoreFluff: Ink!
there's also Tan in morefluff that spawns a negative alchemical for every 2 rounds you've had it!
this is so awesome sauce
agh, god damn
i square to god
i thought you can just concatenate the word "Chips" to the number if its greater than 1 no?
#3##4#, 3 is Chip, 4 is Chips. Leave the one you don't need blank
Probably a hacky way to do it is something like
function loc_def(self)
return {self.ability.extra.value, (self.ability.extra.value > 1 and "Chips") or "Chip"}
end
Or that
hm that also works
i like victin's better
Blank is "" right?
yeah
what if you do Chip#2# where 2 is "s" or ""
oh wait
aure just said that
i will now leave
yeah, also
y'all are forgetting that the increment value is itself a loc_var
and it gets incremented too
so yeah, Chip#3# would be correct, if i didn't already get it my jank way
probably correct outright, but i'm proud of the way i figured it out
also, this is fucking amazing testing luck haha
see above
i mentioned that whoever said this got it right
Yes but no one forgot it was a loc_var
okay, i guess only one person forgot
I don’t see anyone who did
hi chat
I'm thinking init functions are kinda redundant
what if we just thanos snap them
are u ready to reference vanilla code before they might be defined
What would it be replaced by?
like, metadata is already parsed for all mods before the file contents are loaded
So we'll just have to remove the init funcs?
there isn't really a point for each file to be loaded in order, then to run init funcs in that same order
that would also get rid of any confusion about what you need to put or not put in init functions
So true
i think having optional init would be nice
i think you can have them be empty
what would it be useful for?
{s:0}
I also tried that lmao
but it doesn't work inside a variable
what do I do?
god, people were right about this~
I wonder if I can use variable as argument for size
EDIT: 
but tbh, i really think it's fine as a 9-cost rare
which ties into its theming of squares anyway
its cost is a perfect square, its base sell value is a perfect square, it involves playing exactly 4 cards (which is the number of sides a square has AND one of the only two perfect squares you can play)
and this effect really justifies being the most expensive base joker in the entire game
...i think.
oh, it's tied for that with another borderline broken joker
I think Castle or Idol or something uses a variable argument for color
But you can also manually add the rows to the tooltip
I really like just loading all the mods that I have and testing the consumable patch with them
4 more colours coming today btw
ooh nice! What colors
where are notes
yes
what are you going to do for color and ink?
um.
I'm thinking this should be a settings option in steamodded
we are planning on it
I have basic collection support in for the refactor (you can specify the number of cards in each row, and tarots/planets/spectrals are patched to use it), but rn it will just shove everything where things normally are
i see
the problem with this patch is that it its supposed to run after all of the other patches were implemented
have a look at my ConsumableType API if you want
will do
(help with testing is appreciated)
purple
and why he ourple 😂
I still need to add support for shop rates and soul type cards and whatnot
New Joker: Moody!
i'll check out the new steamodded stuff tonight and start porting the mods
same
but I also wanna do some cross compat with Codex and other mods today XD
BTW @frosty dock do you have an example of a new consumable?
uh i don't think I have one ready
let me port something, one sec
wait no i do
SMODS.Consumable {
set = 'Spectral',
key = 'dummy',
name = 'Dummy',
atlas = 'my_tarots',
pos = { x = 9, y = 2 },
can_use = function() return true end,
loc_txt = {
name = 'Dummy',
text = { 'Does nothing!' }
}
}:register()
does it also have a use function?
yeah, this one just happens to do nothing
Can you make custom sets?
yeah
no need to call me that ;P
that part is still missing a few features (shop stuff), but it should be mostly working
historical revisionism moment
💀
that was literally just a keyboard accident moment
I'll compile a list of all supported functions somewhere, I just haven't done that yet
does key automatically add c_ before it?
yo
niiiice
it does
I'm just being silly ^^
keys follow the format prefix_mod_key where prefix is usually specified by the class as whatever it needs to be, and mod is a mod prefix defaulting to the first 4 chars of the mod id
you just shove it in the constructor
can i register it after the fact?
Oh so there will be auto mod prefixes?
it automatically adds the mod prefix?
yeah
unless it's told not to via omit_prefix, in which case it just uses the provided key
(it's best not to touch that value for individual objects)
does it still add all of the optional fields in the register table?
you could change it after injection by modifying the object in SMODS.Centers
these first values at the top like unlocked and discovered act as default values, these will be set on any object created using that class unless otherwise specified
required_params must be present or the game crashes, any additional params are only present if you provide them
i see that you also change the way to add consumable tabs
since my tab not longer works
I'll try to incorporate an option that separates modded sets out to their own page
but did you change it in the base loader?
wdym
hm something might be missing
okay found the issue
for some reason NFS decided it won't work anymore
oh well
there might well be another patch or two needed, so far this is only tested with the vanilla sets
builtin optional dependencies btw
for your error tag thing, i made the loader find itself during loading, we should be able to use this to load sprites without making assumptions about the name of the directory we're in
Hi, is it possible to trigger something whenever you draw a card ?
Probably yes, but I don’t think natively
you can hook generate uibox ability table and table.remove(ref.main, 1) i think
I have some code that edits the UI after it’s been created, maybe that can help
now that i'm done with nightly dishes, i'm just wondering where jokers and such would be initialized, if not in init()
what is ref.main here?
Thx
whatever the old generate uibox ability table returned
weird, it should be a table
If you want I can send you my code that edits the table after it’s created
I think I made a Joker that’s compatible with Blueprint but not Brainstorm 🤔
yes please!
What you want is to remove generate_UIBox_ability_table_val.main[1], I believe
I can probably refactor it. Currently it adds subtitles to Jokers with subtitles, adds a special tooltip to Cow, makes the text in Starfish smaller, and displays bonus Chips and Mult in Jokers that they gain Hiker-style
I created generate_UIBox_ability_table_val value based on this but I think it causes the titles of jokers to appear in the corner of the screen
superposition is done. and of COURSE it would choose the 20% chance to spawn a spectral here.
make it local
Another hack which might be easier is to have an empty description but write the description inside main_end (second output of loc_def in Steamodded) and opt to skip the first line
it is local
hmmm, when I had that issue I fixed it by making it local
@night pagoda you can try this too
It sounds easier
oh yeah I'll try it rn
very cool
will it actually register the colors and such?
You need to manually build the objects
doesn't seem easier in that case lol
It's easier because that's all you need to do
No hooking, nothing else
I have a function that can help
Lemme just edit it
I mean I already have hooks anyways
local _generate_main_end = function(self)
local content = {{n=G.UIT.R,config={align = "cm"},nodes={}}}
content[1].nodes={
{n=G.UIT.T, config={text = "+"..tostring(self.ability.extra.enhancements.Bonus.chips) ,colour = G.C.CHIPS, scale = 0.32}},
{n=G.UIT.T, config={text = " Chips",colour = G.C.L_BLACK, scale = 0.32}},
}
return {{n=G.UIT.C, config={align = "bm", minh = 0.4}, nodes=content}}
And then you do
joker.loc_def = function(self)
return {}, _generate_main_end(self)
end
ty, will try
odds for superposition have now been adjusted to 45% for tarot, 45% for planet, and 10% for spectral
does it have support for mods that add new consumables?
All the incoming jokers are coded 🥳
Gonna have to do a lot of spriting and polishing now
all cards are flipped
neat
kid named retcon:
Kid named chicot
if you consider the wall and the needle, it should have 12X base
So twice that of violet vessel
but just taking the highest works ig
yeah chicot destroys this 💀
chicot being actually useful for once
the house + the water + the needle is already brutal
a more balanced version of this would be "combines 3 random boss blind effects" or for scaling "applies 1 random boss blind effect per hand played"
the current effect would work really well as the last blind of endless mode before naneinf, though
ante 40 mega-showdown boss lmao
The Blind
All cards are face down(Acorn + Mark + Wheel + Fish + House)
All cards are debuffed(Suit bosses + Verdant + Pillar + Crimson)
1 hand(Needle) | 0 discards(Water) | -1 hand size(Manacle)
1 card always selected(Bell) | X6 blind req(Violet)
Discards 2 cards every hand(Hook) | Lose $ per card played(Tooth)
Decrease level of played hand(Arm) | Must play 5 cards(Psychic)
Can only play 1 hand type(Mouth) | No repeat hand types(Eye)
Base chip/mult is halved(Flint) | Most played hand sets money to 0(Ox)```
yeah that wasn't meant to be balanced to begin with
well it would be balanced if you did this
run would end anyway so might as well put it there and if you either somehow manage to beat it or you have chicot then you win endless mode
Boss: The Coffin Dancer
also 1 random joker is disabled every hand and your most common hand removes all money
everything is already disabled
everything?
crimson disables 1 random joker per hand
i haven't seen verdant in so long i forgot if it disabled everything
verdant debuffs all cards until 1 joker is sold during it
joker is called a card by campfire so
does verdant include jokers? i dont think it did but idr
following terminology joker = card, verdant disables all cards so
I think it would be interesting if inside the same Blind it started another Blind
yeah it doesnt seem like it does
So basically the deck doesn’t refresh and you can’t go to the shop
But you get new hands and discards
thats a boss blind concept isnt it?
Everything is a card, I think, except maybe Tags and Blinds
imagine the modded blinds combining
To me that’s just a mod concept
most cryptid mod combos would be near impossible
Where every boss is like that
verdant doesnt debuff jokers in screenshots i found of it debuffing cards
oh ok cool
true
Violet Vessel + Rage = high blind req that scales even higher
The Tax + The Needle is impossible without boss disabling shenanigans or burglar
needle is just op in combination blinds tbh
currently brainstorming deck stuff for cryptid
and if you get wall or water with it then your run is basically just over at that point
need the last 3 sins
What is the text thingy to make letters slightly bounce like in joker's titles?
I believe it’s E
ty!
It’s usually E:1, Idk what changes if you change it
I ended up with this as a solution for removing lines btw
That’s about what I had
I keep seeing “exotic” what does it mean 🤔
mod
Balatro Modding Cinematic Universe?
cryptid mod
"exotic" refers to exotic suits in bunco
I'll show in a sec
dang that sec kinda long
not another sec
shit, I can't show you
I'll do it later
sorry!
😔
urghhh
how do I check where the card is in generate_card_ui
I thought it'd be _c.area but it is nil
Take a look at my code
I think sometimes it gets called when a card object doesn’t exist or something
I’d write it as self.whatever = self.whatever or self.area.config
yuck, when I remove from table it creates what it removed
...I don't have any idea for the direction to go to get rid of this
@zealous glen @formal viper exactly two seconds passed ✅
not a fan of animation; it gets applied to each word separately
the {E:1} I mean
I think it depends on the position of the character in the line
Which gives it a wavy movement
yeah but because of the colors I needed to write that multiple times
hmm, then maybe it depends on the position of the specific string
Do you know what the 1 means?
nope!
it does something?
I looked at the code and didn't found any E: with different number other than 1
I imagine it’s either amplitude or offset
But maybe it just needs to have a number
If it’s offset you can use it to make it look right, I believe
ahh no that's not what I mean
look how the words appear when I hover
normally it would appear as one whole thing
and instead of that each word has appearing animation separately
Ah, doesn’t it look like that normally for colored text?
No
Hmmm
Maybe the 1 is the time it takes to show up? I had forgotten about that possibility
set it to zero and the effect now isn't even there lol
honestly maybe I'm fine with no effect at all
Try 100
also no effect
hi chat
hi
new Balatrostuck logo dropped
yes
4 days
I like the green
if i wanted to make a deck that works with cards and potentially debuffs them anyone know how i could figure out how to do that
i'd need to know what cards are scored
how to debuff cards
how to remove debuff after a blind is finished

i have no idea how you mod for this
-find something that passes through a scoring_hand
-Card.debuff = true
-all blinds automatically remove normal debuffs
the debuffs from the challenge are permanent debuffs
where can i go through the code
is there some program to let you do that easily
(i thought it wasn't allowed ngl)
no idea how you mod without it though
Maybe Balatrostuck had some Joker debuff cards. It's not out, but try asking the creator
7zip
is the .exe just a 7zip
basically
Tangle Buddies!! :D
gimme a clip with retriggered 5oak
i really thought long and hard about the equation of the given mult
then i realized it's literally factorials
tangle buddies moment
Love it
Here's a proof-of-concept. Don't take the numbers and animations too seriously.
Wild
lmfao
When I first saw the ||deck just vanish|| I laughed out loud
whats with the soul_pos consumables?
Ah, I made some as a test. I think I'll release a mod to make Planet cards use soul_pos but it's not really a priority
sounds really cool
Even better
Do you think 11 hands would be a reasonable number?
is that thematic?
i think 11 would be kinda ok, a little slow
It's a strong effect—if you could control when it happens
3 rounds is fine but you might not be playing every hand each round
You can always play High Card
true
optimizing
bro's cooking pretty hard
Does anyone have an example of creating a specific tarot on [Condition]? Closest I can think is blue seal?
there's bad legal defense from morefluff
(spawns a death tarot when boss blind is selected)
What do you mean?
There's a create_card and I think you can just ask it to create a specifically named card
I want to create specifically a Lovers tarot when a specific hand is played
I think you can just pass the slug to the second to last entry of create_card
I create specifically cows and specific kinds of milk
Yeah, wanted to check if it was a different entry for tarot than it was for planets
you can check the slugs in the localization table
I think that's the easiest way
Has anyone tried to flip cards in the deck?
Yeah got it to work for this very dumb joke
Wildheart synergy! Nice!
☝️
Together they would be unstoppable!
Works with multiple hand types as well, can obviously play 2pair/full house/flush but also 9 and 10 high straights which I think is neat
The One
I also implemented that Joker (suggested by EggSlashEther)
Nice
It's a little different (these jokers are meant mostly as jokes for my friend to play so obviously it's not properly balanced)
small nitpick, the x in x1.5 and x0.1 should be capitalized
Here's The One @ruby geyser
Yeah imma rewrite the text anyway
I do like Purple One
also Pride Jimbo
