#💻・modding-dev
1 messages · Page 24 of 1
...oh. uh.
now I can't quit, lol
you're now ready to use my mods! whenever i release them
at least with the quit button
oh yeah theres a quit button
The one here dead center doesn't work. it just injects the Steamodded again or something
device?
PC
then iunno, the quit button worked when i did the peak mod
i blame whatever balalib is
You have to play Balatro forever now, sorry I dont make the rules
Ok, so, now I'm using this on the "correct" version and it's throwing the same error as before [with my author name corected]
uh
cleaned up the mods folder, still gives the quit inject loop
@night meteor so just change the word "Sprite" to "Atlas" in that line and you'll be fine
[oh and sorry I did the wrong thing Myst]
Also remove atlas = 'ASSET_ALTAS', it's renamed to atlas_table and asset atlas is the default now
oh banger
aure when you get a chance can you hmu with that spectrum example
if possible
will be removed, think of it as a feature for now
🙏
oh sorry I forgot, will do once I'm home
you should be able to X out of the command prompt window right
delete lovely/reload.toml to disable
I'm a full screener
alt-tab
I saw peak mod and thought I'd have to do some trolling myself
canon
literal alternate tabulator
what the fuck
Steamodded/lovely
in the Steamod, yeah
gah, new error.
the images had to be renamed to j_FatLuckyCat, but after that error came this one
And this worked, btw for that issue
wait, when you said to remove it, did you mean to replace it with atlas = 'atlas_table' ?
wtf
no
FOUR
my keyboard did a funny
I meant just remove it
there's overlap with atlas on other objects
Ah, same crash, both removed and... ah
so you could do atlas_table = 'ASSET_ATLAS', but it would achieve nothing because that's the default value
it's in line 9, the .Atlas line is where the error is it seems.
nope, it's line 9 of an engine file
can you send the mod code my way?
??? oh sure
Most of this is Numbuh214's work
and the image assests are named j_FatLuckyCat.png as I got that error before this one.
you shouldn't be changing the key of a vanilla object, so remove that
and remove the register call on the atlas
actually it's probably my fault
so, remove the key= from the take ownership line?
yeah
that one can be whatever
Same crash with removing that.
if this is what I think it is, atlas = 'flcr_j_FatLuckyCat' will work, but that's not what's supposed to happen
let me fix that
atlases don't get prepended with 'j_'
well it didn't crash this time with this
you're the one adding that
well you're not changing the pos
oh yeah
and for lucky cat, it's wherever in a huge joker atlas
added, booting
Boys.
Thank you for all of the help.
We did it!
[spoiled due to something that is SFW but is a fetish to some]
[Furry and Fat stuff, as if the name didn't imply it]
anyway you're not supposed to need the prefix, I'm in the middle of fixing that
prefix?
oh ok, I'm going to step away for a bit now, your welcome to DM me or whatever or Ping me while I'm out
the flcr_ bit
I'm probably the one doing something wrong but just wanted to share this funny issue
yeah :register() isnt required anymore
register is done internally now
Yea I'm just seeing it in the code above
it should be foolproofed now to where calling it anyways does nothing
condemned to forever play balatro
it's a feature
(jk it's just a test requisite)
delete Steamodded/lovely/reload.toml to remove
Ok ok, If I change something and reload, does it take in count the changes ?
it reloads all mods, so it doesn't account for steamodded itself or other lovely stuff, but any changes in mods will take effect
Oh that"s nice !
There’s a difference between “capitalist fat cat” and deviant art
i wanna use this to disable mods on the fly, though as you can see it won't really work with anything that uses lovely, so these cases will still need a full restart
alright I think the take ownership atlas issue is resolved, it's just a bit more tricky than I thought with taking ownership multiple times
GG 🙌
i have to check if an atlas existed previously and if it changed
if it exists now and either didn't previously or was changed, I add the prefix
fix is upstream, should work without flcr_ now
hey guys i'm still trying to figure out how to make this calculate function transform the first played card into a wild card
SMODS.Jokers.j_astraleraser.calculate = function(self, context)
if self.ability.name == 'The Eraser' and not context.repetition then
if context.scoring_hand then
if context.other_card then
for k,v in pairs(context.scoring_hand) do
sendDebugMessage(k..": "..tostring(v))
end
if context.scoring_hand and context.other_card == context.scoring_hand[1] and context.cardarea == G.played then
local cardarea = {}
for k, v in ipairs(context.scoring_hand, context.other_card) do
v:set_ability(G.P_CENTERS.m_wild, nil, true)
G.E_MANAGER:add_event(Event({
func = function()
v:juice_up()
return true
end
}))
return {
message = localize('k_upgrade_ex'),
colour = G.C.BLUE,
card = self,
}
end
end
end
end
end
end```
oh as in a future update to steamodded I take? cool
Soon... (helping autumn with something)
Will it be the stamps on Jimbo or on the respective Jokers?
that's fun idea actually, but they will be on Jimbo for now
Steven stamp on Steven
steven stamp on todd
i like how ur teasing this like its a new mod but ppl already know what joker stamps are lol
game companies when they have to market a remake:
as in the current state of the main branch
the bleeding edge is ever changing
oh is that where all the blood came from last night
Can a Joker have multiple stamps?
oops ping sorry
could someone help me with this?
oh this is sick
eremel can you make an omori headspace shader please?
a what?
can set custom weights for consumable chances too, so this is a 50:50 chance
like that guy
saturated blue instead of darker colors and purple-ish in place of lighter colors pretty much
oh yeah that should be straight forward
with noise or something similar
I meant like, could it be theoretically possible?
XXChips
there should be a Chipmult mod that adds a third value called Chipmult that's suspended in a state of quantum uncertainty until scoring is done at which point it does a 1 in 2 roll to determine if the added value will be chips or mult
There should be a chimpmunk mod that adds a chimpmunk
those can be the same mod
all the chimpmunk does is store bananas in its cheeks for the winter
chipmult should be purple
Maybe Plasma color?
It's a bit tricky because the plasma color is defined by a function and not as a color itself IIRC
but why
oops all 6s makes it add to neither
Actually this might be it {0.8, 0.45, 0.85, 1}
will the 150 Chipmult you just made be added to Chips or Mult? only time will tell
as such the chipmult jokers can be allowed to be a bit silly
a bit stronger than mult jokers
you're gambling hard
either making big mult or average chips
@mellow crag @random sleet we should collab on chipmult mod
me when i lose the run to the needle (the +50 Chipmult was allocated to the Chips, not the Mult)
i'd be down to make chipmult jokers
what about chimpmunk jokers
monus card
cult card
sorry im not smart enough to be a collab dev
Gradient Red & Blue
praise the chimpmunk
a joker that is anti poker hands (if you play a full house the joker just dies)
Do the Jokers have actual benefits?
Tbf this could be interesting with the distinction of “contains XYZ hand” and “is XYZ hand”
yeah, if you play any other hand that was not chosen by him you get 100 chips and 40 mult
its one joker, i said jokers mb
yesssssss
Like if it contains a pair, you get buffed
If it IS a pair, adios joker
that but 5oak
Imagine something that’s like “if hand contains high card…”
if hand contains flush the joker dies
if hand contains high card the joker dies
Blushing Joker
Dies of embarrassment
also, i'm still trying to figure out why my joker doesn't work
:(
SMODS.Jokers.j_astraleraser.calculate = function(self, context)
if self.ability.name == 'The Eraser' and not context.repetition then
if context.scoring_hand then
if context.other_card then
for k,v in pairs(context.scoring_hand) do
sendDebugMessage(k..": "..tostring(v))
end
if context.scoring_hand and context.other_card == context.scoring_hand[1] and context.cardarea == G.played then
local cardarea = {}
for k, v in ipairs(context.scoring_hand) do
v:set_ability(G.P_CENTERS.m_wild, nil, true)
G.E_MANAGER:add_event(Event({
func = function()
v:juice_up()
return true
end
}))
return {
message = localize('k_upgrade_ex'),
colour = G.C.BLUE,
card = self,
}
end
end
end
end
end
end```
its not working
ahhhhhhh
i am making cursed stuff
head of the forbidden one
what error do you get
it just doesn't work
ojker
it's joever
but why xchips
cause it's funny
just updated this
making plasma deck more broken
not funny, didn't laugh >:(
tbh best reason to make anything ever
how are mod badges assigned? I can't get them showing up on editions atm
card_h_popup
that word sounds inappropriate somehow
dont be such a mipchult about it
mult stake
mult and chips get swapped when each card is scored
yes, each card
even jokers
what if just other design and make the lines thicker
yesssss
spicy chips
i can't.... i'm losing my mind with this joker
i think i made an idea that i can't execute
Why the black circle though
I feel like it’s just gonna get covered most of the time
also i can't understand how this is not working
That’s not Jimbo, that’s…
Ojimb
a submod for ortalab that turns every jokers name to literal reverse of it
Like Ksud for Dusk
Hsidnevac
Oekrep
Surprisingly Hsidnevac sounds like an actual word
try context.scoring_hand[1]:set_ability(G.P_CENTERS.m_wild, nil, true), rather than using the "for k, v" loop and the subsequent set_ability (it doesn't seem necessary and might be breaking it, as you only need to change the first card)
you could also try
if context.cardarea == G.jokers then if context.before and not context.blueprint then
instead of
if self.ability.name == 'The Eraser' and not context.repetition then
after that, you could then get rid of the if statement before the set_ability as the context spam is confusing and it may not meet all those contexts at the same time... ever (and also get rid of local cardarea = {} perhaps? it doesn't seem to be doing anything)
like this?
SMODS.Jokers.j_astraleraser.calculate = function(self, context)
if context.before and not context.blueprint then
if context.scoring_hand then
if context.other_card then
for k,v in pairs(context.scoring_hand) do
sendDebugMessage(k..": "..tostring(v))
end
if context.scoring_hand and context.other_card == context.scoring_hand[1] and context.cardarea == G.played then
context.scoring_hand[1]:set_ability(G.P_CENTERS.m_wild, nil, true)
G.E_MANAGER:add_event(Event({
func = function()
juice_up()
return true
end
}))
return {
message = localize('k_upgrade_ex'),
colour = G.C.BLUE,
card = self,
}
end
end
end
end
end```
should add if context.cardarea == G.jokers then at the start
context.scoring_hand[1]:juice_up() instead of juice_up() if you want the card itself to be juiced
and you should remove if context.scoring_hand and context.other_card == context.scoring_hand[1] and context.cardarea == G.played then i think?
there's no real reason to have that long if statement, you're not iterating through anything
oh
i fixed
you should move two ends to close this if context.scoring_hand here, before the main batch of code
just needed to remove the if context.other_card then
Hey so quick question: What mods are on 1.0.0 atm
its working now
tysm
👍
i'm still learning with this
i could start using this in future jokers
like a joker who transforms played cards into glass and etc
not many run on the newest commit
I just need like one or two to look at how it works is all
i love reusing code 😌
same
btw
here is the new sprite for the joker
The Eraser: The first played card gets turned into a Wild Card
is there a way i can make a joker work like the spare trousers?
it gets upgraded by one hand type
but it can work with any hand played
Updating the Steamodded 1.0.0 repo gives me this error now, did a new lovely update came too or I'm missing something?
I suspect it needs a lovely update
Yea I updated lovely and it fixed it
yep, I updated it to lovely beta3, which would scream at everyone if I didn't remove the deprecated overwrite fields (this breaks beta2 and below)
That's why the crash mentions it
any idea why this joker from the BBBalatro mod says +ERROR? running latest steamodded
Probably messed up the loc_def of this joker
I assume you separate the Chips/Mult from what scales the Chips/Mult in some way
heres the code for deaf joker, anything broken? I cant tell
Weird I don't see any loc_def, lemme look at the mod's file myself
It doesn't have a loc_def, just add this
loc_def = function(self) --defines variables to use in the UI. you can use #1# for example to show the mult variable, and #2# for x_mult
return { self.ability.extra.mult}
end
thanks, works fine now
should x1 art for a custom joker be redrawn for x2 folder? or just use some kind of tool
what are you using to make the art?
if you're on windows you should be able to rescale the images
okay ill rely that to the artist, because im not the one drawing it
you can right-click and open the image and the photos app lets you resize it
tbh, if you have asesprite you can export the image in 200% size
and it will contain the pixels and it will work in the game fine
I'm reverting this change
that's fine as long as it isn't required again
it's not, but we'll just make it a "it doesn't need to be there but we wont complain if it is"
I can't make that field functional because it can and will break backwards compatibility, so any future overwise-like features will be under a different field
yeah, I'm fairly confident that there are developers that have that field set to true and dont want stuff to be overwritten
so any functionality like that will be added to a new field
this wouldn've been nicer if previous versions made that field optional, which I thought it was, but that wasn't the case
sooo we're stuck here due to my fuckup
I mean that's whatever
But yeah, what did I mess up on. I'm doing Steamodded 1.0.0
deploying a new version
Remove atlast from SMODS.Atlas
Also make sure you have the most recent Steamodded and lovely version
it's SMODS.Sprite not Atlas
no it's Atlas, as of today
oh sorry i pinged
that one was discussed in #1209564621644505158
I'm not doing a full compare 0.9.8-1.0.0, but I'll be writing docs
you dont like the ojker?
I love it
should i make a "Feder's Cursed Balatro" mod?
sorry if it sounded rude
YES
XD all good
i can add Ore of a Kind and the minus/half rank cards
i might actually need ore of a kind for a mod
Feder collecting mods like I finite Stones
Btw Itay did you port Fusion Jokers to 1.0.0 yet?
yes
hm
but it's not out yet
card, info_queue or info_queue, card
I'm thinking the latter to avoid tags having a dead middle param
Neat, let me know when its out 🙂
chat should we rename loc_def to embrace the breakage?
Rename SMODS.Joker to SMODS.Cardarea_Joker_Card_Back 😎
yess
you should call it Baylaytro
woa what da
Bay-lay-tro is the only correct pronunciation of Balatro
no, it's Bah-lah-tro
fight me
i just say buh la tro
bahhlatruh
bahh?
Awesome
Btw Aure is the way Back sprites are handled changed in Steamodded 1.0? I remember the texture having to be put in an Enhancers.png iirc
any way to change the pos.x of a joker sprite locally rather than globally? so it doesn't apply to copies and such
that was changed super long ago to work like everything else's textures, so it prob works the same as that
Oh
it used to draw from config.atlas and was special in that regard, now that isn't the case
Does it uses a specific key in SMODS.Atlas? (like modicon)
it's not special at all, it uses the atlas that you give it, or else the default
Alright
is there a way to change the midas mask k_gold message to like k_wild?
Feder work update:
Since I’m very happy with the current states of Codex Arcanum and Fusion Jokers for 1.0 (which will release as soon as 1.0 comes out), I will putting them on a back burner for a bit, while focusing on some newer projects. They are not abandoned.
The new projects are:
A remake of the progress I did on Fool’s Fables,
Jimbo’s Garden,
Helping other people with migrating to 1.0 or adding new features (like autumn’s stamps),
Making random cursed additions (xchips, half ranks, ore of a kind)
help me feder the alchemist /hj
What do you need?
take ownership of it and use loc_def (loc_vars as of the cleanup I did today)
or just change that line with Lovely, idc
tbh I'm mostly waiting until Steamodded is more stable and I can reference other mods to port my mod to it
Makes sense
What changes did you have to make, in general?
I wanted to upgrade asap to help me get rid of work later
Wdym?
I mean, what was the main work of converting from 0.9.8 to 1.0
I mainly refactored my main mod file, changed how I register stuff, but most of the raw logic still stands
how do i do that?
latest commits might require some more changes if you use loc_def some places (also works with tags now)
Every loc_def needs to be changed to loc_vars?
a pattern patch should do, but do the other thing I said if you want to do it with steamodded
that and the expected structure of the return value is also changed
k
I have a loop for adding Jokers, so I imagine most of the behind-the-scenes is intact or I'd need to make the same change in each file so the format is consistent
What do you mean by the structure is changed?
I imagine the update doesn't break any hooks but maybe I could update them to make use of new functionality
it's no longer a list of values, but a table
And I have one consumable that depends on OddityAPI but I think there's a consumeable API I could use
Can I make a typeless consumeable?
return { vars = { 'vars' }, key = optional, main_start = optional, main_end = optional
@frosty dock I think they want a new Joker with that effect instead of changing Midas Mask, no?
no, that's not something the game would like that much
can I make a consumeable with a type that doesn't show up anywhere else
they did say change so
how exactly i take ownership of 'k_gold'?
What's the extra stuff for?
I think it was poor wording
idk a way to do this
do you want a new Joker that works like Midas Mask, or do you want to change Midas Mask
i want to make my joker display Wild instead of Gold
You can pass any message to it
Probably change the type to "Other"
same as before, main_start and main_end for arbitrary additional UI code like blueprint displays, key is new to allow using different loc text entries conditionally
That's the easy way unless you want to add localization support
huh
the type is after the SMODS right?
No it's in the return table
oh
nope it supports localization
you always give these a key to a localization entry
Not always, some the game handles internally
But I think the game can just take the message, at least when you call the card_eval_status_text directly
From the Faceless Joker code
Wait do I still need to put "card.ability.extra" or I just put "extra"? Because it crashes trying to index the field ability.
i tested, and the card shows nothing
is there a way i can make it show custom text?
like when it activates it shows Wild
first argument is always self, so the center now. generally self, info_queue, card
this is due to card being a dead param sometimes
Oh so I just need to replace every card with self
I mean "self.ability.x" instead of "card.ability.x"?
if you need the card, it's the third parameter
Oh I need to move the parameters
self.ability doesn't exist because self is a center
card is right, but it's the third parameter
jokers are no longer special here
np, I hope things go a good bit smoother once there's proper docs
I think this was one of the last breaking changes I need, I'm quite happy with the level of consistency of most other things
I feel bad for people who have more stuff in their mod or are less skilled when they'll have to update their code to fit SMODS 1.0.0, I hope you're ready for the pings lol
you bet my docs will have a "Migration guide" section that highlights key differences
I'm not explaining everything 50 million times
That's fully understandable, one of me must be already enough for you
i'm asking this again (because i don't know if its possible)
Can i make the game load custom text? like if i put k_wild for it to read, can it read from my mod?
a custom dictionary entry
If you're in 0.9.8 you can make one easily, check how other mods do it I'm sure there's plenty of examples
No
IIrc it should be initialized outside of the mod's INIT
its outside
Do you do "message = subtext" or "message = localize('k_wild')"
uh
Just put 'k_wild' inside the localize, also it should be between parenthesis
type = 'Other' draws from G localization.descriptions.Other
do what sdm said if you want to draw from dict
like this?
Yes
is there a way to change the colours (or any bits of code) in the shaders folder? and if so, how? i.e. gold_seal.fs or negative_shine.fs
you could insert a new shader over one that's already in the game fairly easily
G.SHADERS['foil'] = love.graphics.newShader(path_to_new_shader)```
this should replace the foil shader for example
thanks, i'll try this out later
do i need to define newShader beforehand? my code is just G.SHADERS['foil'] = love.graphics.newShader("GS-foil")
btw, how do i make a joker get a upgrade before playing all cards?
you need to put the whole path to your shader
try mod.path .. "/assets/shaders/GS-foil.fs"
thanks again, it worked
I got the badges working \o/
The squad
These are in 1.0.0. I won't be adding their effects in and letting someone who knows what they're doing do it.
I'm just making sure every joker is in with art
Any with that Shinku Virtue art is temporary art
how do i do this?
Every time you're wondering if you can do something the first thing you should do is check if a joker already does something similar and see how it works
Like for example what you're describing reminds me of Spare Trousers
RTB, Green Joker or DNA could also come to mind
it's fairly common behavior
best comparable might be midas mask
oh i was still thinking of the previous question for a sec there lmao
i say when like, i tried using the spare trousers for a joker i was doing
but it worked when i played the hand
but the effect of the chips i was expecting did not trigger
scaling jokers typically need two different contexts
pants, rtb, green joker and similar trigger their upgrade in context.before, then give their mult in context.joker_main
aka the else bottom of the tower of thunk
Tower of 
Tower
Btw Aure ever thought of doing a SMODS function of "eval_this" similarly to SMODS.end_calculate_context?
core.lua:1196
There is iirc
i added that like a week ago haha
Gotta love making git push summary
lmao
barbecue bacon burguer
Yep
spoiler alert: i didn't change it
Don't trust him, he did and it evaluates if your played hand is cool, if it's not it writes insults all over the screen!!!
i mean what i did to the quit button is basically another peak mod
Aure adding features from its community so cool 🫡
oh man im so behind on steamodded...
uh
yay another breaking change to fix
yeah, expect commits of the last 5 days to annihilate certain aspects of your code
loc def or Sprite/Atlas?
huh?
what changed about loc_def?
it's no longer inconsistent af
oh
oh is this the self, info_queue, card thing
it won't, it will just silently do nothing on you
(loc_def is also renamed to loc_vars)
Find and replace across multiple files in VS Code is what’s keeping me from going insane here
(not that the changes are bad though lol)
(just it makes it 20x easier to fix)
in short, there's this function here that replaces whatever localize call would otherwise happen in generate_card_ui (yes, joker vars are also in there now)
for centers, at least
Teach me, I need to not go insane editing 45 jokers files.
for tags, it's the same but card arg is dead
you can override this function, but using loc_vars should have you covered most the time
args order is always self, info_queue, card (where self is the center), return value is a table supporting everything that could be returned as a list before
one of my jokers worked with this but this one refuses to work.
SMODS.Jokers.j_lea.calculate = function(self, context)
if context.before then
if self.ability.name == 'Spheromancer Pride' and next(context.poker_hands['Two Pair']) then
if context.scoring_name == ("Two Pair") then
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_upgrade_ex'),colour = G.C.BLUE})
self.ability.extra.chip_mod = self.ability.extra.chip_mod + self.ability.extra.chips
end
end
end
end
it gets the upgrade
but it doesn't trigger
but why
@gaunt thistle Having weird problem with Lovely
The debug window isn't closing
even with trying to close with task manager
Your joker only has the upgrade part, not the final calculate one
may have to restart pc
i tried a end_calculate
and still no result
random from X1-X2 Mult?
Depends where you put the if cond for sure
uhhhhhh
if the window says Select just right click it
that's a new one
*window title
restart
I did restart
hmm
oh yeah check if the window title of the command like says Select
it's not starting at all?
that’s something that happens
I load balatro and it closes after initializing
ok nevermind
below the first end
what happens if you run it without lovely?
okay that's weird
I accidentally opened the other window for balatro i had
and now it's loading
this can happen if the game locks up and stops responding to Windows messages
are you on Linux?
This is how the code is
SMODS.Jokers.j_lea.calculate = function(self, context)
if context.before then
if self.ability.name == 'Spheromancer Pride' and next(context.poker_hands['Two Pair']) then
if context.scoring_name == ("Two Pair") then
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_upgrade_ex'),colour = G.C.BLUE})
self.ability.extra.chip_mod = self.ability.extra.chip_mod + self.ability.extra.chips
end
if SMODS.end_calculate_context(context) then
return {
message = localize{type='variable',key='a_chips',vars={self.ability.extra.chip_mod}},
chip_mod = self.ability.extra.chip_mod,
card = self,
}
end
end
end
end```
Well thats wrong
I know oom can cause shit to explode
windows
Oh its different
I figured it out myself and thank god I did.
gotcha
30 minutes later (I forgot to open some joker .lua files so they weren't replaced immediately xdd) and it's done.
maybe an io deadlock? no clue
Pretty sure card = self doesn't work in this context
Please ignore that the "card" variable is named "center" as I am not manually renaming variables
updated
new idea: lovely will insult the user at random if they are using steamodded
sorta like the overwrite warning
jk jk.. unless?
Oh yea then the SMODS.end_calculate is placed wrong
Haven't you made other jokers before? I feel like you need hand-holding for every step, you'll never learn that way, sorry if it's harsh
the end_calculate should be on the same level as context.before
silly me
oh that could work maybe. i was thinking like random selection of 1/1.5X mult or 1.5X
yep
Fun fact, seems game devs also have trouble spelling, good to know.
@frosty dock [sorry to ping you for this, but]
Is there documentation for Alpha Custom Joker making? Seeing as older joker mods are incompatibale.
uhhhh
is something different about how you set blind atlases now
oh nvm i had atlas_array instead of atlas_table
and then i also hadnt capitalized the table name
uhhhhh
i feel like it shouldn't be required to have a loc_vars
Why in the world is Tag generate_ui different from how it's written in SMODS.Center what
elaboration?
--- STEAMODDED HEADER
--- MOD_NAME: Talisman
--- MOD_ID: Talisman
--- PREFIX: talisman
--- MOD_AUTHOR: [MathIsFun_]
--- MOD_DESCRIPTION: A mod that increases Balatro's score limit.
--- ICON_ATLAS: icon
----------------------------------------------
------------MOD CODE -------------------------
-- This code doesn't do anything besides making Talisman appear in Steamodded and show a profile icon in v1.0.0+
if SMODS.Atlas then
SMODS.Atlas({
key = "icon",
path = "icon.png",
px = 32,
py = 32
})
end
----------------------------------------------
------------MOD CODE END----------------------
why doesn't this change my mod icon?
or is it literally just 8 suits
modicon not icon
ICON_ATLAS isnt real
minor arcana!
what does that mean?
ok, but why doesn't it show up at all in smods 0.9.8
i thought icons were a new feature
yeah they are
I want it to appear in 1.0.0 and 0.9.8 though (it isn't loading the code through steamodded, it'll just appear in thet list)
figured it out
it was because my header wasn't in the same order as 0.9.8 mods
estrogen oddity real
it is tho
yeah
anybody here know of anything I look at to make my own jokers for the Alpha Build?
attempting to set cards to a modded suit
loc_vars is a function and it has to return a table
the vars field of the table loc_vars returns is what loc_def would return before
minor arcana update:
does this mod effect arcana packs? at all
it adds Page of Cups, Page of Swords, Page of Wands, Page of Coins to turn cards into these
the special "center" sprite only applies to unenhanced minor arcana cards
i may look into overriding specifically bonus, mult, and wild, but for the meantime
now im just confused
i remember mentions of these before, super interesting to see them for the first time
are they straightforward new suits?
flushes of these suits have special effects
unfortunately they're kinda caught up with the rest of thac in 1.0 update limbo
these are functionally complete
ooh, suits designed for flushes only. that's interesting.
they wont be in your starting deck except for a deck where they replace the standard 52
cups gives +1 Hand this round
swords gives X2 Mult
wands give permanent chips to each scoring card (i forget rhe number)
coins gives $5
very curious how it'll play. your mods are always super fun just to think about!
my mods are 🗑️ but thanks ig
btw the sprites for these are So Bad
i really oughta poke at making or acquiring nicer ones :3¢ hm
terrible take
the only take i take is taking out the trash
what
sorry you had to be there
Good morning!!
they have a special one
And how does it function with enhancements?
Hmm I see
And if people wanna make their own enhancements that go over the default card?
XD
i dont even have it set up as a function of the suit its hardcoded
how do I setup mod dependencies
just doing this isn't working
--- DEPENDENICES: [Talisman]
oh wait
I can't spell

wait apparently trying to load the missing dependency error sprite crashes the game]
why smods.atlas({}) and not smods.atlas{}
...Is it possible to rename base jokers in the Aplha Build?
I've tried adding ast part of the things in the SMODS.Joker:take_ownership as [ name = 'the name' ] and it doesn't seem to work
@frosty dock
So, I'm trying to reskin the Dagger [and also rename it]
- Renaming isn't working [but I haven't tried another thing.]
But - It seems doing this code here breaks the dagger.
It breaks the description and also the interaction with other cards [scribbled due to being a bit out of some peoples taste]
.............ok wait
Now it's working fine?
...I guess it was me, going back in and continuing a run. starting a fresh run with it made it work again fine.
I will make documentation available soon
Ah, thank you. sorry for bugging.
(I just have to write it first, and the more questions y'all ask, the long that's gonna take) no worries
I- I forgot to change that
Think of the name field as what the game uses to identify Jokers. If you change the name, the game will no longer recognize its effect as dagger and the card will be effectless
the displayed name has to be changed through localization
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhhhh
haaaa so my issue is just relevant for tags ig
any way i can add local variables into the name and sprite pos of a joker?
(Initially posted this in the wrong channel, woops)
On a different note, I seem to be cursed with the ability to get so many different ideas for Jokers, yet don't know how to code nor properly balance/word them out- the most recent idea I had was a mod based on the Stick Fighting community, like GildedGuy, Hyun's Dojo, RHG (if anybody still remembers them), etc
I... assume I can't just modify the files in the 7zip viewer to do that.
you can do that, but it's very fragile
this was a headache to get right
for 1.0, you can specify a loc_txt table when you take ownership
ah, cool
related code
this is so unbelievably fragile and precarious it is actually sickening
instead of the if-elseif stuff like
getting this fundamentally working was a nightmare
the center = _center or self.config.center is required
the weirdness around the local suit line is required
that looks jank as hell
it is
but it's because set_sprites is called at inconsistent af timings based on what's happening to the card
but so is thunk code so
yeah this really be a thunk moment
if the center or suit detection stuff is any different, the card will not change when it should (or will change when it shouldnt)
oh yeah
aure have you tried making a tarot that sets things to modded suits
cuz i got a crash earlier from that
not on 1.0 actually
lemme uhhh grab a stacktrace
but it should be same-ish since it directly used vanilla code before iirc
(with the relevant block of card.lua just in case my line numbers are different from yours)
it might have to do with the fact that it seems like suits get registered with a :lower()'d key?
well somewhere "Cups" is turning into "cups"
is it?
yeah, and it's not in my code
what does it say in the logs the key is?
thats the thing
it's trying to set it to "Wands"
but it's registered as "wands"
so it indexes SMODS.Suits for "Wands" which doesn't exist
its why i have to self.base.suit:lower() here
thank you inspect function your services are incredible
....
🙏 sorry
what was the issue?
it's setting the key based on the key in the array i'm calling from
so the key is lowercase from there
oh lmao
there is no :lower() i am just using the wrong information
that's how i handle the keys for everything else i just neglected to realize suits would need to be different
ok suit conv tarot work now
it's literally just that i need to hire a better rubber duck
now all i need to do is ✨ tooltips ✨
Aure are you interested in updated example mods or its too soon?
I will
Alright
ofc any contributions to example mods are welcome though
Should it be heavily descriptive or I just make something simple?
ok so steamodded, how do you get the game to like, recognise your mod even exists
i've copied an existing mod [with permission] but it does not seem to want to register
relatively painless actually
and it plays nice with others
If the mod was functional and in your mods folder it should be automatic
Do you know if Steamodded installed correctly?
there should both be simple examples and more complex ones
whatever you see fit, really
looking at it, i think i forgot the square brackets around the MOD_AUTHOR field
I see, noted
all i need to do now is figure out how to make a joker use a specific part of a texture atlas instead of an individual file and i can start the... long process of adding 300 individual jonklers
i have bad ideas
you should divide the effects by 5 and have them trigger per card
🔴
nooooo that's what makes them cool
that they trigger all on their own after the cards score~~~
Oh that’s neat
x and y
you know what, fair and based
also is there a list of all the IDs of the vanilla jokers lying around since I will need those I think
You can extract the .exe in steamapps/common/Balatro
ah here we are
its almost custom playing cards
if you ignore all the ways that it isn't custom playing cards
i'm a little confused, self.config.center.pos.x affects the sprite globally but self.ability.extra affects the card locally?
config.center is the same table as the one in G.P_CENTERS
like, literally is the same table
both are references to the same table
instead you can do something akin to this to manipulate the pos of a sprite. here im doing it in set_sprites but depending on what you need to do it'll have to be in different places i think
thank you so much looking at this code just flipped a switch
😭👍
note: make spam email joker
code so bad that mods had to step in
#💻・modding-dev user makes worst mod ever, asked to leave Balatro server
mod that leaves the play and quit buttons in the same place
mod that makes quit button functional
mod that makes every button the quit button
no that's a good mod
You're a good mod
thanks
@frosty dock most recent steamodded commit crashes when trying to peek abandoned deck during plant
probably a more complex cause, but that's a way to recreate it
holy shit peak mod 2
how to wipe language selection to make it fall back to English
I broke my modded Balatro completely, and removing the mod doesn't solve the issue
man
I hate not being able to wait for Language API instructions
go ahead, pick one
Maybe verifying file integrity or just reinstalling would help?
remove steamodded
like just put it somewhere else
huh, I think I've seen something similar but forgot about it? I'm on it
this is baffling to me
oh don't worry, it's just because 1.0 is unreleased
I will soon catch up once it's released
assuming i dont get a crateful dumped on my toes when i release thac 1.0
English
gosh, is this just me messing up operator precedence?
no i'm pretty sure it's the copy_card func
no it's this exact comparison that's crashing
because is_face looks fine to me
wait
id and rank are both nil
it
uh
it works fine without my Card:is_face() override
i guess the original function doesn't compare any values, it just checks equality
yeah no i just have to check for falsy IDs
oh great, taking ownership breaks blind atlases
The Plant is a lie
alright we good, the plant is real again
guys how can i get the name(string) and desc(table) of a joker? i tired
G.localization.descriptions.Joker['j_joker'].name/.text (j_joker as an example)but it says attempt to index a nil value so idk if its related to priority or sum
are you on 1.0.0?
that should always work, maybe there's a typo?
so im actually trying to modify fusion jokers' FusionJokers.fusions:add_fusion function a little, table.insert a line making use of joker1 and joker2 parameters to both jokers' desc, to help me easily find the matches, before the author chooses to add similar feature officially. so i guess it will be a bit more tricky than i thought
oh, in that case you need to load after that mod
fusion jokers got its priority set to -10000 so im afraid it'll break things. maybe i gotta type em manually 
-10000 means it'll load very early, so neutral priority should just work
i do not recommend using this btw: after about an hour of using this, i encountered several head-scratching bugs that disappeared upon a full reload
it's mostly a test and likely to be scrapped, but could you tell me about what kind of issues you ran into?
👀
Are those enhancements or do the modded suits just have whacky backgrounds
wacky backgrounds
i was using it to test out changing edition shader code variables; whatever was shown to me was getting confusing and inconsistent
also, applying the custom edition played the edition noise an absurd amount of times, likely the amount of times i quick-reloaded (this is what finally tipped it off, as i hadn't touched this part of the code)
i feel like this is easier to look at
I would assume this is because I'm not reloading all files, as I wasn't sure how to do that
i ❤️ love ❤️ custom ❤️ suits
i love when i make new api hooks that are jank af and then use them to excessive degrees
can I get some feedback on this?
That do look dope
should mention requiring git for command line
hm sure
oh fucks sake what happened
loc_def is now loc_vars and the return value needs to be wrapped in { vars = ... } for consistency reasons
thanks aure
np
like this?
yeah
looks good to me
okay the one in collections is still saying error
and the atlas in round end is still wrong
What have you guys worked on today?
@frosty dock in Blind:debuff_hand, should have a check for obj.debuff_hand's return
returning true in the object's function does not actually do anything
right.. it's a good thing we have a blindomancer around here
i am the one who blinds
where can i find logs for game crashes from a mod?
If you have the most recent lovely update you can find it in Mods/lovely/log
Otherwise I don’t think there are any crash logs
where does background.fs draw its colours from? changing RED and BLUE affects it, but i've noticed that there's a slight blue tint to the swirl
same picture but greyscaled to show the colour difference
what else should this include?
Maybe specify the {vars = {... in loc_vars since it's not in loc_def
I'll leave that as a 'refer to docs'
i did also add Tarot/Planet/Spectral -> Consumable
Does it make modding custom consumable easier that way?
boilerplate removal, the code for the three of these were always basically identical
and it supports custom consumable types that way
nice
Huh, I guess I'll have to do a few more things for this to display properly.
(I'm adding this into Ortalab just in case Chameleon Joker decides to break again)
Ok so now the custom error message pops up with the stack trace but it's also recursive somehow?
An example but there’s probably one somewhere
Hey guys I'm trying to get 1.0 to work but when I use lovely injector I get this (also here's all the folders)
Also I'll get the same error but with deck.lua instead of lua_reload.lua
yeah there'll be proper docs, this is just meant to outline the changes
that looks like an incorrect installation of 1.0
download the source from the main branch on github (press the green code button, then download zip)
Did that
delete the steamodded folder and re-extract that download into mods
latest 1.0 doesn't have a lovely.toml file, but a lovely directory with multiple files
and you seem to be missing some other files too
heyo, is there a google doc or something for guides on writing balatro mods?
i.e. like a breakdown of the script?
currently updating this for steamodded 1.0, but it has a good bit of information on 0.9.8
Alright the game loaded but
word awesome, ty! Also, the one thing im worried about is mod software corrupting my steam game file, is there any protections against this? obvi just stressed bc of the malware notifications
and/or is steammodded approved by thunk?
get the latest commit, this looks outdated
the classic injector is not recommended anymore - it's safe to use, but it brings too much hassle dealing with antivirus software
there's a much better solution fortunately
Lovely uses runtime injection to mod the game without touching the game files directly
either is safe to use - steamodded is open source, you could build the injector yourself if you wanted
oh thats awesome, thank you!
All good, please do ask if anything else is unclear
Ermmm where is that 😅
just go on github and download the code again
ye I really wanna make a casino-themed mod but my coding is only like python data processing and bash for my job so im tryna see how complicated it is lol
lua really isn't too bad to get the hang of, it just has a few quirks here and there
like 1-indexed arrays, or that basically everything is a table if it's not primitive
Same thing
Lua is fun until you have weird table shenanigans or nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]...
exact same crash where it says something with LOAD_LOC?
Correct
word ill just read thru the source code to get a hang of it
last time i looked at it looked really clea
*clean
thunk is such an orgnaized coder it makes me so happy lol
something's wrong then, what's the contents of Mods/Steamodded?
This is mods
mods should have the Steamodded code in a folder called Steamodded
(although at least you have the Cryptid code in its own folder 👍 )
there's quite a few annoying inconsistencies that get uncovered when needing to change certain things at a fundamental level
(but make sure you download the latest source code of Steamodded to use that)
very preview