#💻・modding-dev
1 messages · Page 79 of 1
I'd use card_eval_status_text for your message and then have the effect.repetitions = ...
and see if it retriggers
just replace message with card_eval_status_text?
there's a few parameters, look up some usage of it in the game code
gotcha, one second
this alright?
im gonna be honest, no clue what that extra, nil, nil, is
also need to change that self to card
no
take the effect line out of the eval_this function
in fact
take it all out the eval_this function
sure
i've tried a couple places, is there something specific i should put all that in?
just in the calc function
sorry, i know this is a stupid question but is there somewhere specific, in the calculate function? because either the ==, , or something else is throwing errors at me
tried above the local left, right, below it, inside the break, and it just does not like it 😭
(a better way to put it, i tried these)
Where ever you had the return before
Oh it’s single = too
You’re setting a value, not comparing
i presume you need to download it the git way to get the most recent one? because i got mine from the alpha download button 😭
you don't need git
but it's an easy way to update
also, Aure was working on an internal updater so I'm excited for that 👀
then how would i get the most recent version? /genq
the alpha download button
I'm assuming you downloaded it about 3 months ago
8 days ago 
well, that is the correct link
when unzipping the links you are giving me, its just saying "do you want to replace the [existing steamodded folder] files?"
did you actually install what you downloaded?
don't ever do the "replacing" of files when updating mods/etc
completely delete the old folder, drag the new one in
this is the copy thats in my documents, not the one thats in my balatro mods folder 😭
but sure
i've redownloaded it, if it does change the version i will be surprised
you can see the version in the top right on the main menu
thats new
OH
right
im stupid
forgot to take the folder out 😭
is this the newest version? 
yes
yea!
you probably updated something incorrectly last time 😵💫
somehow, but yeah sounds like me 😭
honestly? no fucking clue with this one either 😭
it happened after playing my enhanced cards, to be specific
could it be because im missing a not context.repition_only?
possibly yeah
oh @slow ocean can i use your oddity pack art for a rewrite of it for 1.0.0
move those two lines near the end up above one end
you could really do with learning to indent properly too
it'd make it much easier for you to read your code
good point 😭
it doesnt crash, but now nothing happens at all
they just play as if they had no enhancement
then perhaps enhancements dont support repetition
yes
any way to get the latest commit hash and/or modified date of a branch on a github repo without git (since at least some users won't have it installed on their systems and I don't plan to make it a requirement)? I'd prefer something that isn't the github api, unauthenticated ratelimits on there are horrendous
there's conditional requests which would only have requests on the repos that actually changed count, but I could see limits being exceeded even with that, if one were to have a large mod pack that's fallen a couple weeks out of date
yeah, the remote hash
I'd have to store the local one for comparison either way since I can't assume there's a git repo at all
balatro mod index has a "last updated" column, that I think Eremel made?
I'm not sure how it works though, maybe it uses github api under the hood
it doesn't
is there a way to run a piece of code after everything else has loaded
it just scrapes the page
to add "null oddities" if oddities of a certain rarity aren't registered
oh i guess i could scrape pages but idk how slow that is
how/why wouldn't they be registered?
the oddity api itself doesn't have any content
ah, I see
actually you know what you get five jimbos
if you have just oddityapi installed thats all you deserve
JimboPhone™️
Summons a Joker
another approach could be to create the null oddities within the api, but remove it if anything else gets registered?
anyways that was surprisingly easy with the 1.0.0 stuff
this is truly some odd shit....
do upgraded packs give jokers or is it just consumeables
Wouldn’t you just not spawn the packs if the pool is empty?
oddities are a new consumeable type
oh i thought it was just modded things
they were first made a while ago but the mod got cancelled and the creator left the server
damn
What? You mean oddity?
anyways oddities should be working now
scraping the page works but uh 😭
Ak negative joker?
is SMODS.fetch_index for all installed mods?
it grabs the entire index repo
yeah
anyways just scraping the hash and comparing turns out faster than using git to tell you you're already up to date
that's pretty fast then
though that might change if the amount of mods in the index start increasing by a factor ~100
That sounds much better than my cobbled together scraping
the index files are still really small, so I doubt that'd be an issue. I'm more worried about large mod lists
checking for updates on ~100 mods for 500ms each is still pretty bad
yeah I'm assuming/hoping most of the overhead is starting/ending the connection etc
couldn't you just thread that?
surely
surely it'd be as easy as that with no hidden drawbacks or issues 😏
maybe I can come up with something else to query that keeps track of updates/commits on each mod in the index and just sends that down whenever it's needed. I'm sure a lot of the overhead is just repeat connections
I mean yeah, some kind of server that can cache the latest version id of the mods would be best
but that would also require a server
unless github actions can do something like that 😬
never say never
if a static file on github that gets changed every so often can be considered a cache, that is
might be too spammy
yeah it's not... great
think we're getting somewhere
<@&1133519078540185692> again
Got to all servers just did clear messages on ban
thanks my god
well, now that I have free time, I am able to work on the mod I wanted to make for Balatro. However, there is one small problem during the time that I was not free. I completely forgot how to code in lua.
Well, you can see the example mods in steamodded and learn how balatro mods works
I think localization.lua has to return something?
or at least have a return statement
why is there an smods function for that isn't loadfile just a luajit function
anyways you probably need to do like
SMODS.load_file(SMODS.current_mod.path.."localization.lua")
SMODS does that for you
ah hm
maybe SMODS.load_file actually works like a dofile and executes the file instead of just compiling it into a function?
not sure what you mean, but if your final conclusion is "don't do the function call at the end", all the examples do include it (stuff like SMODS.load_file("utils.lua")())
odd
as you can see that is all i have for loading
you still haven't shown what localization.lua looks like?
OH
is localizations.lua in the same path as your main lua file
also a good question
probably just don't use SMODS.load_file here then idk
if normal loadfile doesn't work either then there's an issue
localization is done automatically as long as it's in a localization folder and the name is default.lua or a valid language (e.x. en-us.lua).
json with the same names also works
No need to do it yourself.
oh
yeah, are you trying to actually make a localization file? cuz steamodded will load that for you if properly located+named
the reason i want to do it myself is because all the content can be turned on or off and i'm pretty sure invalid localizations can cause issues
correct me if i'm wrong
localization won't cause issues if it goes unused if that's what you mean
thank you guys so much! 
a lot of what i know i outdated so i'm learning a lot
i don't know what this is referring to 😭
wait i fixed it :)
now i know what it's talking about
why is the text of the jokers still not showing :(
use the steamodded assigned key
[type]_[mod prefix]_[original key]
steamodded should really scream at you somewhere that you cannot use the original key to find the joker again
it's not though, the description just doesn't show
could i get an example? i can't visualize it's context
for a mod named "testing", a joker created with the original key example has the steamodded key of j_test_example iirc
also you don't need to do all the {["key"] = value, ...} stuff, you should be able to do {key = value, ...}
did you define a mod prefix in the steamodded header?
If you didn't the prefix is the first 4 chars lowercased by default iirc, in your case oddi
which would make the steamodded key for your joker j_oddi_squareroot
you should be able to confirm that by printing the center too I think 🤔
AW, it works now!
also i have unfished art completely unrelated
thank you again! so to my understanding my mod has a key that's the first four letters of the id
your mod has a prefix
you can define a custom one, or use the "by default" one
the default one is the first 4 letters of your id lowercased, yes
this if i don't define my own right?
that's the ID it takes the first 4 chars from
if you want a custom prefix, it's --- PREFIX: [pref]
i can get fancy
I'm not sure if there's an artificial limit on it, you'd have to check steamodded's code for that
I think you can just make it anything you want though
background 🤔
gonna make me sick bro 😭😭
is this every base game joker that can give flat mult?
supernova🤔
funny you say that, the challenge is about it
fibonacci
use card.ability instead of self.ability
🥹
yw
what's this
sorting hands
by rank?
omfg something is hella slow about my game 😭
Are there any good way to batch convert PNG files into transparent background
are they already perfectly cut out on a flat color background or do they need processing?
For the first, imagemagick can do it, for the second, you're gonna need an ai tool of some sort
well there is wiggle room if it isn't pixel-perfect for an algorithmic approach, aka imagemagick
I'm not quite sure, they are ripped from unity assets
then they should be ready to be "keyed"
Yeah they were txt files but extracted as PNG files
ok that actually worked i'm shocked
what I'd do is tell chatgpt to write me a bash script using imagemagic to take all png files in a folder, find their backgrounds, specifying it's a solid color, and give a copy with trasnparent bg
becasue I'm lazy
that sort of thing actually works surprisingly well tbh
so.... why all the jimbo stacking? I've seen it in other mods too
what purpose does it serve?
well this one's just a common test oddity
which i will probably keep
it's better than the $1 oddity which used to exist
I tried, but there's a white border around black lines
this is when I'd just try to get interactive with the AI and explain it
or you could learn imagemagick's commands yourself
I've done it befrore, before chatgpt existed
oh I see the problem
tell it the noise is in the background andwhat you want is very nearly pure black with sharp edges
vyt ut dies kiij oretty decebt even as is bh

Is there a way to dynamically set the loc_txt values for a jimbo while also using variables and formatting? I'm testing out ways to make tiered jimbos without having to make new jimmies for every tier.
This sort of works, but doesn't work with nested variables and formatting
loc_txt = {
name = 'My Jimmy',
text = {
"#1#",
"#2#"
}
},
config = {extra = {
tier = 2,
maxTier = 2,
txtTier1 = "Hello",
txtTier2 = "Goodbye",
}},
loc_vars = function(self, info_queue, card)
return {vars = { self.config.extra["txtTier" .. self.config.extra.tier], 'World!' }}
end,
you can have multiple localization entries (easiest to set up with loc files) and pass a key field in the return value of loc_vars
p.s. my mods will be on hold until I pull burnice kthxbai
I am never to be seen in this server again.
Cya
looking to code a sort of
"wild card for ranks"
has this already been achieved
basically an enhancement that counts as any rank
I think that's basically what https://github.com/Numbuh214/X-Card. Tried to do. But maybe not exactly. It also doesn't work on current smodded
basically that includes coming up with a better straights algorithm
and rework a bunch of other parts of that game that rely on cards having single ranks
Enhancement stacking?
tricky if it goes beyond stacking the same enhancement (which can often be done by modifying ability values), given it's the same as jokers structurally
I'll see anyway
does that mean that infinitefusion code could be used?
reurposed rather
I haven't actually looked at that code, but that very much seems possible
though perhaps not as smoothly, there's a lot of explicit checking for specific enhancements via ability.effect
it's stupidly hardcoded, yes
what x cards did was just be the rank that got you the best hand, idk how they managed that, seems like complicated math, bordering on simulations
but what wild cards do is just be all suits at once
in practice
idk the code
wild card always return true on any suit check with is_suit
the way infinifusion does things is by impersonating every card within itself and running whatever relevant function it needs multiple times, idk how that could be implemented for ranks considering most of what the game does with cards is done outside of the card itself
Add your own enhancement?
Manually?
that was for a seperate discussion about enhancements
not the rank one
Like all possible combinations lol
ah enhancements
more likely but theres still a lot of code that would break bcos it checks outside of the card code
but modded enhancements already exist
so support would be limited
for example glass cards would break by
not breaking at all
I still cannot get the localization to work -_- let me sanity check it
I have my jimbo defined in jokers/jimmy.lua, with key = "jimmy"
My mod header is
--- STEAMODDED HEADER
--- MOD_NAME: DogMod
--- MOD_ID: dogmod
--- MOD_AUTHOR: [dog]
--- DISPLAY_NAME: DogMod
--- PREFIX: dogmod
I define a key before the jimbo is loaded
G.localization.descriptions.Joker.j_dogmod_jimmy = {
name = "Hello",
text = {
"Cruel world",
}
}
Should the jimbo now be automatically populated with these values? I can't get the name or description to appear. It works if I manually reference the key using localize
bcos the code that breaks glass cards is in state_events and it breaks cards by checking if their ability.name is glass
you'd be much better off just pasting your whole code. people can't tell if stuff is missing or misformated
its recommended to define localization entries via localization files instead of code
has anyone made an smods glass card
I know, but it doesn't work either when in localization/default.lua
that's.... ungangly
Change name when glass is added?
for like small mods I mean
how did you define it in default.lua?
for big mods I get it
Just spitting out random ideas
return {
["descriptions"] = {
["Joker"] = {
['j_dogmod_jimmy'] = {
["name"] = "Cool Name",
["text"] = {
"Hello #1#",
}
},
},
}
}
well that should work
What's your mod prefix and your joker key?
there's ways to define entries via mod code but doing it by directly defining G.localization.etc is bad
SMODS.Joker({
key = "jimmy",
atlas = "jokers",
pos = {x = 0, y = 0},
rarity = 2,
cost = 7,
unlocked = true,
discovered = true,
blueprint_compat = false,
eternal_compat = true,
perishable_compat = true,
config = {
extra = {
foo = 1
}},
loc_vars = function(self, info_queue, card)
return {vars = { "world" }}
end,
calculate = function(self, card, context)
print("Hello Jimmy")
end -- end calculate
})
main.lua
--- STEAMODDED HEADER
--- MOD_NAME: DogMod
--- MOD_ID: dogmod
--- MOD_AUTHOR: [dog]
--- DISPLAY_NAME: DogMod
--- PREFIX: dogmod
Yeah im just trying to get something to load somehow
I mean, yeah, I just thought smods.joker and the like provided what you needed. from what I've seen of the api and other mods I'm still pretty sure that's the case
loc_txt still exists yes but it's better to keep things organized
I guess my sense of 'having everything in the same damn file I can scroll through' is a lot stronger than my sense of organization.
smods.joker doesnt provide a way to define extra entries afaik outside of hacking one in by writing a custom injection function afaik
I'm close to trying a fresh install of everything
I should first plan things out lol
idk man, if I'm defining jokers I just want every bit of code for the joker to be in one place if at all possible
Imight not have done so yet
But it's weird, cus the same structure works in other mods I've installed
can you send your entire file
but that's 100% the structure I'm gonna use in my mod when I finally make one
and how does it actually look ingame?
also, lmfao at this
infinite fusion's smods.joker is 500 lines long and thats excluding the api and a bunch of helper functions
its scary
tlttIes of code lmfao
my vocabluary can be odd
apperently odd enough to false positive the automod pretty regularly
what is up with the automod in this place anwyay
you cant swear per the rules but
the automod doesnt stop you
if you say fuck
it uses the default discord automod blacklist
What the fuck don't fucking swear in this fucking safe space
so normal swearing is fine but anything remotely nsfw is gone
normal untargeted swearing
its similar to smods.joker
like everything i've seen so far for the enhancements just
an effect in config
and no function for anything else
there's a calculate
there are also various tags you can turn on to give the card certain effects
SMOD has examples iirc?
like no_rank, no_suit and always_scores
I'm a furfag, wonder if I can say that
That or check Ortalab
lmfao, I can
and sorry for the ping
what do you put in the bracketes
the closest they have to a proper doc is the code in smods' game object file
Sent you a DM
lol i didnt see that
so i made this abomination
i think context should work close enough to smods.joker, but it would have a much more limited range of contexts
I was expecting mine to get blocked and forgot to turn off pings, my b
they shouldnt be pinging you, they should know :troll :
tbh we shouldn't know now that it's no longer in their name
like.... it made sense then
if i were you i would just start killing people tbh
i didnt even know people cared about pings ngl
now you just have to remember or guess
its probably because they dont know they can disable the sound
i'll read evaluate play to see what contexts are calced for enhancements
i just want a funny name without sacrificing half the letters man :c
it's in your bio at least, so that's smth
Ah shit
i'm always on dnd. i just always read pings and don't want to have to switch servers when i'm talking somewhere else
but yeah i just... don't usually check that
I like pings though personally because this is the only server I give a shit about and I like being responded to
lmfao
even if it's irrelevent nonsense
coonie you've been exposed, opinions on this.
anyways i genuinely have no idea why, but i can't go ingame rn to check
:gay:
🏳️🌈
anyway my policy with pings is
only check them if i care
i dont know how i choose if i care i just do
thanks anyway..! ill figure it out aaaat some point
maybe try using smods loc_text?
seems to be fine for your usecase
sanity check, what version of steamodded are you on
ok so
it works
kind of
it adds the mult and kills itself
but for some reason
it also kills
all other instances of the card
if i play an abstract 6; it kills itself
and all other abstract 6's held in hand
for some reason
Balatro Version: 1.0.1g-FULL
Modded Version: 1.0.0~ALPHA-1012b-STEAMODDED
Love2D Version: 11.5.0
Lovely Version: 0.5.0-beta7
context is wrong?
what
thennn i'm stumped
lovely beta 7 weirdness?
beta 6 seems to be the one that works as expected
repetition_only
cardarea == G.play
cardarea == G.hand
those are the three contexts enhancements calc
but yeah you're passing 'context' but not actually choosing any contexts
might be the issue
so how would i do what im trying to do here
what are you trying to do there?
have the card destroy itself but not other intstances therof held in hand
this
gives mult then has a 75% chance to kill itself
card destruction is handled outside of the enhancement code
what does that mean for me
Would that be as in this file?
https://github.com/SDM0/Joker-Evolution/blob/972a5aaf8e25ae00f7154d86016f41e4596a3923/main.lua
you'll need to patch the destruction check into functions/state_events.lua somewhere here before the for i=1, #cards_destroyed do line
do the check for your destruction effect then append the card to the cards_destroyed
oh I said I'd check out this localisation error the other day, lemme look now
probably, but here's a simplier example
yeah
so I think i was right about the lovely ver
I just got it working O_O
Gj
in fact it would be better to patch it within the for i=1, #scoring_hand do loop in this screenshot @tidal edge
i don't think beta7 woulda changed anything
but i'm using a different ver of lovely so i wouldn't know
it really really shouldn't, but it has bizzare effects from what I've seen
Im staying on 6 because its the most stable one currently
patching before if destroyed then is what I do
Brb telling Cryptid to add a Joker that makes 7s turns into 6s and call it "Lovely" 
I presume this can be done without a lovely patch if desired
ye thats the best place to do it at
it works but i dont know why yet 😄 it didnt work for me on the latest push to git at least. very strange.. ill have to reproduce and do a little postmortem
all I changed with what you sent me on git is the header should read PREFIX rather than MOD_PREFIX
ooh did not catch that
but the version you posted here had that changed already
idk if I was modding i'd probably do my best to do it in pure smodded, because steamodded is intended to be a full api
i thought i tried that ;_; been staring myself blind on this. i thought maybe it now was a conflict between the mod id and prefix
https://github.com/notmario/OddityAPI uh the oddityapi 1.0.0 port should be working now(?) probably still has a few bugs
and the fewer files and ways of doing things to manage the better for me, lol
smods is intended to be used alongside lovely
ODDITYAPI 2 WOOOOOOOOOOOO
fair enough, though kinda unsatisfying imo. idk maybe I just think about things weird. I guess I don't think people should have to use the api their api uses unless they're doing something weird and unsupported
and enhanced cards destroying themselves is vanillia behavior
yeah but vanilla is hard coded in all sorts of ways
this is the philosophy behind the implementation of balatro archipelago and its very limiting
i do try not to use lovely in my mods, but some stuff just gotta be patched with lovely otherwise it's gonna be a reimplementation mess
it's a fairly simple lovely patch too
steamodded requires lovely to be installed
hence why I called it the api their api uses. because ofc steamodded itself is a lovely mod
AP doesn't have any lovely patches??? i applaud yall
also wow
every day i thank thunk for leaving a couple of unused center tags that override the item description it made my life so much easier
lmaoo
we're getting closer 👀
well if I made a mod, it'd probably just add objects like jokers, tarots, enhancements, and the like, all of which afaik can be done without lovely. Maybe by putting vanillia code in a steamodded mod, but afaik that still works just fine
even if 'bad form'
ooh interesting
entirely depends on what you want the objects to do whether you need a lovely patch or not
fair, and implicit, though I didn't specify
i wish i had more time on my hands rn bcos i have an idea of how i could implement so many things but i have too much to do elsewhere
ofc if I wanted an idea that needed a lovely patch I'd just do one
I just would avoid it otherwise
speaking of lovely - how does the priority work anyway?
i never figured it out and i definitely should
it just determines the order the patches run in
yeah but like is it lowest first or highest first
lowest first but never negative
iirc
so you can't really force your patch to go first because everyone uses 0
i could swear it was an i32 now
i need to double check steamodded's lovely files bcos i never seem to be able to patch the smods lines
I do think that over time, steamodded should add support for things that currently need lovely, because well... it just seems like how it should be, being the main modding api. It uses lovely to load but shouldn't make its users use lovely themselves ideally (practically I get that's still a long way off, I mean it more in a philophical sense for something to shoot for)
you should be able to hit the smods patches with a priority of 1
if you don't like lovely then you can use balamod......
speaking of steamodded and lovely, wouldnt it make sense to patch overrides in? so other mods can patch the overrides?
I don't have any problem with lovely. I just think that an api designed to code balatro mods in lua has a sensible end-goal of being feature complete in that purpose
can't lovely beta7 patch smods files
I think it can, yeah
oh nice
pros:
- patch smods override files
cons: - beta7
are there any examples of such patches
idr
oh beta7 allows negative numbers for priority too i think
oh swag
the mod i need to smods file patching is in itself an incompat hell so i dont rlly worry much about that
I just dunno if anyone's bothered yet
yeah the priority got changed from u64 to i32 i think
I know flowwy said they had a seperate beta 6 and beta 7 version for one of their mods, so maybe look there?
I still didn't migrate my smods patches to that format, though
just waiting until beta7 is more stable
ty, will look into it later
and more people move to it
oh btw thats one of the pros of the patchless approach - as long as smods loads and is functional, balatroAP will work too
although idk why burndi added "update your lovely" to recent releases lol
that's actually the only one update that matters
the ap client up until that release had a major bug that got fixed after i reported it
well as major as broadcasting duplicate hints is, anyway
there's a couple issues to be fixed rn and unfortunately im kinda busy, although i'll try to get it sorted as soon as i can
0.1.9c should make the game stable enough to be used in APs again, and by now i have done most of the clientside work to start working on the challenge update
what even is that
show the code lines number
it gives 400 mult
saying this because thats not how a joker should be structured
yes it is
cryptid has its own strange joker format that i think i've completely succumed to
cryptid is an odd todd
cryptid's setup is really weird
how did this cause this though
i didnt add anything weird
nv i found out
nvm
i fucked up the localization
no wait
its still giving me the eof error
what'd i do
there is a list with all configs for jokers effect
Is cryptids set up a remnant of efficient 0.9.8 joker stuff?
it was made for 1.0
no
Or i have another question, there is template of all jokers redone for steamodded?
the vanilla jokers
not all, but the most important ones
i found this mod that stacks red seals, thats a start? https://discord.com/channels/1116389027176787968/1264020405400633354
that is not a start for fusing enhancements
im struggling to figure out why cryptid keeps crashing after barely doing anything in a run anyone have any ideas or more info about cryptid?
how do i make another tab for configs like crypted?
hook into the function that creates the ui box for whatever ui you want your config to be in, then insert a button into the ui with a callback to some function that will load up your custom config. alternatively, you can set <your smods mod table>.config_tab (might be something different, check smods example mods for something that makes a config) to a function that will return a ui for your config
(it'll be accessible from the Mods tab)
no need for that
you can just define an extra_tabs function on your mod object and return any number of tabs
I assumed so because cryptid has more than one config tab
I think they meant the SMODS.current_mod.config_tab yeah
is it possible to have a joker check a cards enhancements by just doing something like context.is_enhancement:(“enhancement”) to check for.. a specific enhancement?
currently on mobile and im super tired, so it might be a it off 😭
probably something like card.ability.effect == 'whatever the name is (ex "Stone Card")'
i have no idea tho tbh
sick
thats it, thank you :)
wait wait
if (card).config.center == G.P_CENTERS.m_stone then
end```
i think that would work
cool, ty
so my mod disables all other fusion jokers, why is that?
yours probably overrides the table
because uh
the way it's supposed to be registered is actually uhmm
FusionJokers.fusions:add_fusion()
The way you're doing it essentially redefines the whole table @loud citrus
i see, now i know why it wasn't working and someone else told me how to fix it :)
fuck I just thought of a stupid joker idea
Signal Search (Rare)
Creates a random negative non-Common Joker for every 10 Polychrome cards played
Will probably need way more balancing but lol
Ngl thats very niche
that gave me an idea
after each boss create a negative common joker, if this joker is sold or destroyed, destroy all common jokers you have
probably gonna only appear when a poly already there
Well at leats it wont be a shop bloat
so it doesn't work with h. chad etc?
im trying to made a joker works like half joker, but how i can check the size of the hand played for activate the condition?
Nice idea
thanks
thanks zzz
ZENLESS ZONE ZERO DAMN
Aaaa sorry
here zzz is sleep
Example (Los panqueques son zzz) (pancakes are boring)
I love pancakes
Good night
Do it
oke 
7zip superiority
honestly its not like its delete it self 🤦♂️
yeah tbh theres no reason not to just use 7zip
well it doesn't have any joker synergies
No, use cli unrar
Lmao
doesn't 7zip also have a CLI?
oh looks like unrar is available by default on linux I see
yes, I was mostly joking
I just use my distro's default gui archive manager usually in actuality
which has support for zip, rar, 7z, tar, etc etc
real programmers compress their bits manually
hehehe
I used butterflies to make my mods
reverie used a butterfly too!
in fact steamodded was made with butterflies™️
pseudorandom becomes truerandom
infact, it can go as fast as a cosmic rays!
2008?, nah you are wrong
truerandom_element(my_table, trueseed('myseed'))
instead of specifying a string seed you specify which butterfly you're calling
oh mb
if i remember correctly, you can create a new consumable with the SMODS.Consumable api thingy
you can look at other mods to see how they do it
I approve of that
mhm-
its too complicated 😭
how does lovely.toml work
i feel like we need a pinned post in #1209506514763522108 for common links and whatnot
oooh hell yeah
im trying to make a card that turns all face cards wild, but it seems to just be breaking the logic for suit calculation in general
im not sure what's going wrong
Your original reference function still needs all the parameters you've got up there
All you need to do is pass those in
i.e. card_is_suit(self, suit, bypass_debuff, flush_calc)
why hardcoding face detection instead of running :is_face
hey so i've been observing the tattered decks for a while, i was wondering what each of them did if you're able to say anything about that
like what each tattered deck's respective gimmick is
good question
jshdjshd
I just started modding and am kind of lost (never programmed in Lua before), and I'm trying to create a deck with a reduced number of cards. What's the best way to remove specific cards? I'm designing a deck that starts thin and grows over time, so I want a deck that starts with only face cards. My current mod file for reference. I feel like I'm doing stuff in all the wrong places.
That seems to match my admittedly non-modder understanding of the api
the code I wrote or the sentiment of being utterly lost?
Lol both I guess (the documentation is woefully incomplete but always improving) I meant the first though
To supplement the documentation I recommend looking how a mod like ortalab does it
Ortalab Demo 2. Contribute to Eremel/Ortalab-Demo development by creating an account on GitHub.
thanks, I think I found what I needed
Ayy nice :3
yeah one of the decks in there literally just starts with only face cards it looks like which is basically what I wanted
only I wanted to turn them all into rocks
yep it worked
i am trying to make my own flame shader right, but problem is i don't know how to load it, like how do "make it work" when the normal flame is happening
I presume a lovely patch of some description
i have no idea how to make a lovely patch 😭
do you know if someone made some documentasion on how to use lovely patches?
how does balatro handle hand types and stuff?
like which file specifically
im,, guessing it's in misc functions
sjdhsjdh wait actually just realised i can check myself
smods.PokerHand exists
kasi im trying to make a joker (that will not at all work with other mods)
that makes kings, queens, and jacks be treated the same (a king can substitute a queen in a straight, shoot the moon is activated with jacks, etc.)
ive done the second part through patching
but the first part where kings queens and jacks all fill each other's slots is a bit more difficult
I mean that /can/ be compat with other mods ngl. I've seen similar jokers
o really?
i think there's a joker in cryptid that does something like this
can you send an example of one for me to look at
oh maximised
but it also makes all number cards considered 10s
that one acts a bit differently, those cards just become 10s and Kings iirc
so like, queens dont active shoot the moon anymore and stuff
you could probably look at the code for smeared joker to see how that works
i think it might be a similar thing
oooh
but ngl I'm not sure it works atm
still good to look at for example of roughly how to do it
yeah exactly
here's the newest release of cheesyjokers
on my github because it was previously only on itch
,,,nevermind
sdfkjhsdfkjh
it does exactly what i intend for it to do with the joker part of things!
but, nothing about hand completion
what is it actually supposed to do? maybe that's why I feel like it did nothing for me, lol
also the way it's implemented makes it only work for vanilla jokers
ah explains why it felt like it did nothing, yes
yeahhh
Before I bark up all the wrong trees, is there any way to dynamically change the sprite/atlas coordinates for a Jimbo during gameplay?
I expected all face cards to be 5oak
unfortunately jsdhsdjh
,,,hmm
good question
i remember seeing people doing animations a while back
I think you just set the atlas pos again and it kinda just works
if not debugplus has a function to refresh atlases
and you can look at blueprint+ for examples of other dynamic changes?
Hmm ok I'll have to try again
radical
indubitably
Would you happen to have a link to it?
thank u
no problemo
Though, actually-
omg wait this is a much smarter implementation of the first idea at least
soo
thank you!!
there's also https://ptb.discord.com/channels/1116389027176787968/1249486500811378718 for actual animated sprites
The idea is toooo make the jimbo distinct when it levels up (still borrowing some assets please dont shoot me)
https://imgur.com/a/8DjTibh
yeah I think some of the sprites in Aura do something similar, idk how much code is actually implemented though
also how do you get discord out of full screen? damn cat walked on my keyboard
nvm I just closed it and reopened it and it's fixed
lmfao
ooo yea
https://imgur.com/a/IUoCGDp
self.children.center.sprite_pos = {x = 0, y = 0}
Now I just gotta figure out dynamic descriptions ;_;
I mean with line breaks and highlighting
isnt there Card:set_ability that accepts center
or is it the same center
but with different description
Same center with different description yes, unless I'm confused which I often am
tangential question, is 'center' a
ism, or does it actually come from somewhere?
you can use loc_vars for that
-- localization/default.lua
["dogmod_salary_man_t1"] = "Salary Man Tier 1",
["dogmod_salary_man_t2"] = "Salary Man Tier 2",
-- maybe im abusing "extra" here
config = {
extra = {
...
txtTier1 = "dogmod_salary_man_t1",
txtTier2 = "dogmod_salary_man_t2",
atlasPosXtier2 = 1,
atlasPosYtier2 = 1,
...
}},
...
loc_vars = function(self, info_queue, card)
return { vars = { localize(card.ability.extra["txtTier" .. card.ability.extra.tier]) } }
end,
But if I use e.g. {C:attention}Hello{} in that, it isn't parsed
given a different localization entry, you can pass that entry's key in the return table of loc_vars
where that entry is a full description in G.localization.descriptions.Joker
So something like this?
return {
["descriptions"] = {
["Joker"] = {
["j_dogmod_salary_man_t1"] = {
["name"] = "Salary Man",
["text"] = {
"{C:attention}Hello{}"
}
}
},
}
}
loc_vars = function(self, info_queue, card)
return { vars = { "j_dogmod_salary_man_t1" } }
end
yeees
yeeees
i could kiss ya
i was thinking more along the lines of return { key = 'j_dogmod_salary_man_t1' }
or whatever else you have conditionally
i am, foaming at the teeth
skdfjhgdksfhjkdhjsf
WHY DOES THE CODE WORK IF ITS IN ITS OWN FILE BUT NOT WHEN PATCHED INTO THE GAME?????
HELLO?? ksdfhjskdfhj
,,,okay
does next(find_joker()) not work in patches?
or like, work, differently
sdfjkhsdfkjh
It’s probably being patched in wrong, have you checked the dump to make sure it’s as expected?
Can you send the code in question?
sdjhsjdh sorry late reply, but here!
its a little weird looking, but the content should be the same
its fine anyways tho, just made it work in the joker itself
steamodded actually fully overrides the function
that means you'd be overriding steamodded's version of the function, completely breaking custom ranks
custom ranks are so unterutilized, it's sad
I don't think I have a single mod that has them
i mean there's not much you can really use them for
fair enough, they kinda just make rank-based poker hands harder
the most interesting use I can think of is making a tarot deck
with the 4 face cards
though idk if you can easily insert a rank within the normal order
i could port dankranks ¯_(ツ)_/¯
oh that'd be interesting
"no hands are played"
WAIT SO SCHMEVEN-NUMBERED CARDS ARE POSSIBLE
I MADE SCHMEVEN BIEVEN AS A JOKE BUT HE CAN THEORETICALLY EXIST AND FUNCTION
eldrich jokerpack when?
😭
oh wait that's just moar jokers <3
x1.5 mult whenever a schmeven numbered card is scored
54 seconds · Clipped by Larantula · Original video "The New Twitch Gambling Meta | Iron Bros" by SimpleFlips
😭
lmao
You are 20 pulls and a coin flip away from being a prophet
I'll be blaming you on every step of the way 
LMAO
WOW
Thank god i'm still earlygame so i can STILL get her
especially if i actually check out a... guide...
actually take this somewhere else since this is the modding chat
Schmeven is a number where the decimal number is even
And Schmodd is the same but if the decimal is odd
if the decimal is 0 then it's neither Scmeven or Scmodd
I think the schmparity transfers if the decimal is 0
How can I get a boss Blind to destroy all jokers
oh god when's it gonna do that?
My boss blind I'm making
I mean yeah but when's the boss blind gonna destroy all jokers?
It has a 30 second timer if you don't beat it in 30 seconds it destroys all jokers
oh god
The timer is the easy part
Oh and I'm evil so it's going to ignore eternal
what ante is it gonna start showing up at?
Because yes
Guys, does anyone know if there's a way to get the key of a sleeve applied to a deck the same way you can get the deck's key when calculating a sleeve with get_current_deck_key() ?
There should be a way, especially considering sleeves track stickers too
found it, it's G.GAME.selected_sleeve. I think it returns the sleeve's key in the format sleeve_pfx_sleevekey where pfx is the mod prefix and sleevekey is the sleeve's "key" string
Yup, that's correct. I'll have to add this in the wiki docs somewhere since you're not the first person to ask...
Anyone??
iterate through G.jokers and use card:start_dissolve()?
ok
@wintry solar just realized I've been in the wrong chat the whole time
it's chill, you see my other message?
lemme grab a snippet, hold on
try this one
local set_ability_ref = Card.set_ability
function Card:set_ability(center, initial, delay_sprites)
set_ability_ref(self, center, initial, delay_sprites)
if center == G.P_CENTERS['m_wild'] then
if not self.children.front then
self:set_sprites(nil, self.config.card)
end
self.children.front.atlas.name = 'new_atlas_key'
self.children.front:reset()
end
end
wait
now
atlas is a nil value?
thats probably on my end right
I think the code you sent is working just I don't have a working atlas
I forgot to rename new_atlas_key
1 min
yeah no crash but wild cards seem unchanged?
SMODS.Atlas {
key = "wild_cards",
path = "WildArt.png",
px = 71,
py = 95,
raw_key = true,
}
thats the atlas code I'm using
I'll keep testing
did you make a new card wild?
yep its taking a min to test it each time
seems to still be unchanged
I'm missing a 1x WildArt.png that might be it
I'll give it a try on my end
yeah works on my end
just not the deck menu
it also doesn't work on the face cards if you're using the new customise feature
but it's a start
you can also change the self.children.front.pos before called the reset function
just the alt art cards
so the position relates to where on your atlas the sprite is, when you use the alt art it changes the atlas of the face cards to be one that is just those 3 alternate pieces of art, so it becomes {x = 0-2, y = 0} instead of {x=0-12, y=0-3}
ohh I understand
so you'd just have to reverse engineer it
also you might want to have an else block hat sets it back to normal
okay
how do i add a keybind
as in like, i press a key on the keyboard and it runs a function
or something like htat
how do that
SMODS.Keybind
thank you
that's a thing?
yeah
is there a list of methods defined on smods
documentation? in this economy?
looking at the code and the core/game_object.lua specifically is your best shot
key = "openTMJ",
key_pressed = "t",
action = function(controller)
TMJ.FUNCS.OPENFROMKEYBIND()
end
})```
theres a usage for you
to reference
well that was easy
Why call error instead of print statement 😭🙏
because then it's blatantly obvious
lmao
is it nuclear? yes
is it funny? even more so
😭
this is like my one mod except it doesn;'t use the keybind api
oh btw how do you set up config?
look at my mod rebaloed, it has a simple config setup
if you want to learn about what certain values do you can ask, i know some of them
how do i put filters on sprites?
i want to put the same filter that is on gold seal onto a different seal i'm making
in a challange, how i can make start the challenge with a modded joker?
the same as starting with a vanilla one, though you will have to use the slug of the mod
j_[slug]_[joker name]
*prefix of the mod
for example j_cryptid_megg ?
cryptid's prefix is cry I think but yes
each mod can set it's own prefix so your close
how i can see the prefix
if it dosen't set one it's the first 4 leters
at the top of the mod's main code, in the area with it's name should be a line stating it's prefix, if there's non then it's the first 4 leters lowercase
?
do you know where it could have happened?
im trying to open the challenge i made
ah! so there is a button that loads or does the menu crash before you see any buttons
remove edition
can you send your challenge code?
ITS DONE LMAO
proof?
thank you
