#💻・modding-dev
1 messages · Page 453 of 1
i want a joker to crash the game
giving a message
if message aint possible then ill simply make it crash
like a message before crashing?
no, like changing the crash message
you can look up how cryptid did it tho with their crash card, they change the crash log message
ok
how do i check if a card has a seal on it
the entirety of the modding scene consists of people checking on other people's mod on how they did it And i like it
guys pls help me bcs chat gpt just make me unalive myself can someone help me with creating mod with only 1 card?
and that is?
never trust chatgpt
-# for modding balatro at least
i want to create a mod that adds one deck with only 1 king of hearts
gpt told me that balatro doesnt support modding decks but mods like cryptid adds a ton of decks
use this
thx mate
you can mod decks
ChatGPT doesn't know shit about balatro
now i know this
hey chatgpt helped me code a joker a few days ago
ChatGPT has probably not read SMODS Documentation
use deepseek :clueless
okay i will try using this deck creator and again thx for help guys ❤️
i got this crash with this. tbh i have no idea what i was doing, just saw something similar above and tried it ```lua
add_to_deck = function(self, card, from_debuff)
SMODS.Joker:take_ownership("j_smiley",{
calculate = function(self, card, context)
if context.joker_main then
return {dollars = 30}
end
end})
end,
no it's entirely people in the past asking questions and learning from them instead of asking the smae questions
the definition of insanity
don't do this
take ownership should not be put in any form of calculate
well well well
anyone?
how can you get the card id of a custom rank? (with get_id()) (as in how do you know what it is)
card.seal == "seal_key"
want to check if it has any seal
you could do a for loop that checks for each seal, i dont know if theres a way to check for any seal
umm i have 28 seals
would the take ownership work if i put it elsewhere or am i doing it wrong btw?
i think G.P_CENTER_POOLS.Sealhas all the seals keys, though maybe its not there
i know all seal keys are stored somewhere, same with jokers etc
i think it could yeah, thats easier lol
github copilot helped lol
is there docs on explaining how legendary art for jokers is done codewise? like i imagine it's just two separate images but does smods have a little page or article about this lol
oh perfect then, easier than I thought I thought it would be much more hands on
I LOVE SMODS
take_ownership should be outside your joker
just put it above your SMODS.Joker{} ... yada yada
actually what are you even trying to do
its retriggering all cards, not just ones with seals, what did i do wrong?
Why isn't the straight patch modifier work?
whenever I get to like have the american joker 95 additiona to it
Me when i can’t find something on the wiki but a real man never speaks ill of smods documentation
That's how I kinda felt except, somrtimes I point it out
smods is genuinely pretty great all things considered lol
No Seal is a seal. I believe you should be checking "Base"?
no seal is nil
ah right
How’s doing patches going
let me try that
my first two patches ever worked first try
do you mean if not card.ability
like this??
didnt work
Absolutely not
What do you want to do exactly
Nil isn’t a string nil means it doesn’t have a value
repeat cards with seals
nil as in nil not "nil"
like how u can retrigger face cards with sock and buskin
no wait I have an idea
im making a joker that retriggers cards with seals only
Context.individual and context.repetition and context.cardarea==G.play then
nope, stopped triggering all together
you are using card.seal
you should use card.ability
i think you also need other_card
one sec let me try that then
other_card.ability
If they’re using context.individual yes
how can i edit the blind req?
read docs
😭
what page?
are you changing a custom boss blind requirement or are you changing it directly
okay
this made it trigger for all cards again
Try .seal
added this and stoped triggering again
do both
Can you show code ?
How can you make a joker similar to the four fingers?
.seal doesn't exist
okay
Check joker code
I did check and it was actually hard coded.
I just need to use patches
ability.seal
lol
but what kind of patch would make it straight
Use ==
FUCK the smods docs
Not a gay patch
you clearly must be a woman
I wasn't even speaking about LGBTQ+ I meant this.
obviously 🙄
I mean there's no offense about LGBTQ or to anyone but honestly I was talking about code.
Ik 😭
so then?
G.GAME.blind.chips
it didnt work
how does this work?
you need to hook into that function and return how many cards
NO
show the code
AND NO
ughhhhh
why are you screaming
how?
and who said to add it at first lol
Yeah... not wokring either
Silly me :3
ok thanks
why did u spoil it?
i think this needs two contexts
N do you know how to check for card seals
isn't it like card.seal
Not a specific one , just a seal
what
that’s literally what i was saying 😭🙏
@red flower I tried that and it didn't function the way I needed. was there something wrong?
it's card.ability.seal no
Not sure if it worked tho
what's the code and also what smods version do you have
no idea
this.
no, its card.seal
tried that
both seem to be a thing
Its ability.seal yeah
Is there an easier way to make a joker forcibly enhance the first scoring card (like midas mask) and make it only trigger on the first scoring one (like photo)?
what smods version
this is how i check for seals and it works just fine
(First time modding btw)
if you have a copy of the code on your phone does that count as rule 4 🤔
⬆️
if you don't compile it probably no
im not modding it :3
Just do .seal 😭🙏
haven'T checked, maybe the latest?
what's the latest?
remove == nil?
Si
you might need to update
Also I just realized balatro is getting a v1.1 but no idea how
how?
That will check for seals so you might want to add not
remove the smods folder and replace it with the new one
People be reading lovely patches and not knowing how to update mods
Yeyyy
🎉
Add context.cardarea=G.discard and context.carearea=G.hand
OH! now it works!
5’4 straight
In different IF
#G.hand.cards
ok will try that
yes
self:?
why G.discard?
anyone knows why the thing to change description isn't working?
context.cardarea == G.hand
Purple seal
don't put it in its own table
umm
it should be vars = { ... }, key = "..."
u said that?
.
ah i see, the and wasn't a code and
draw card?
something that it would be filtered through.
like draw multiple images
what does bro mean
Add
context.cardarea == G.discardandcontext.cardarea == G.hand
omg ghostsalt
Nobody says omg heaven 😔
omg aikoyori
I’ll gain my recognition
omg heaven
heaven? like the place
It works now but doesn't seem to be respecting the condition for the other card to be present for it to change
omg heaven
the in hand worked
ya, because you haven't added that ^^
also when I update the Smods somehow the solitare.exe joker is off putting.
like suddently the offset changed
I'll try, No clue what I'm doing lmao
i'll give u all the recognition u want
it's always "why is your name cursed again" and not "how are you doing"
what's your card's ability?
the purple seal didnt give 2 tarots
can i see your code?
hold on I think I might need to record it
oh wait izz are you making a card that repeats seal effects?
a joker yeah
I think purple seal has a weird interaction with retriggers
let me check with another seal then
yeah i tried making one a while back but i am not smart so i couldn't figure out blue/purple seal retriggers
I think I got the position fixed
the best i got in the end was instead of retriggering the effects of the seals it would just retrigger any card that had a seal on it (held in hand or played)
which doesn't retrigger blue seal
but again i am very beginner at this
ah yeah no the discard condition is bogus ^^
use context.discard instead of context.cardarea == G.discard instead
Y'know even after fixing the position, how cna I make this effect to be mixed in with the shader itself.
what
how do i make a seal play 2 different sounds when it appears in the standard pack?
is there a way to draw? this effect than being blending in with the GUI?
Table with sound keys
And some pseudorandom magic
how do i do that?
Local tablename={“soundkey1”,”soundkey2”}
sadly no
@red flower Not sure if you have an idea on how like you can draw along with the shader?
hmm, i don't think you can retrigger that then
Pseudorandom(#tablename)
and see how it looks
i guess i can just make it played cards and cards in hand
You can but you need to make a calculate effect i think
You might
Keyword might
Add a random tarot
Manually
Instead of discard
Or copy a planet card
i have other discard seals so...
Oh
its okay
Bump
now i need to make it have a chance of destroying retriggered seals "not cards"
Pseudorandom
Drawstep
Which shader exactly?
for this right?
i have 0 clue about shaders sorry
wasn't asking about making a shader
Yes if you use normal game probabilities, no if you use fixed probabilities
in general
this is what i do right now
- retrigger played cards with seals
- retrigger cards in hand with seals
the cards themselves always get retriggered, gold seals get an extra $3 and blue and purple seals only retrigger the card with no planet or extra tarot
im making the seal play the sound when the base chip and mult is balanced. And that sound requires 2 sounds with different pitch and volume. Im new to modding i dont really know how to do this.
what are u doing
its exactly like mine lol
it's a bit wack but here
oh teacher, thank u for your teachings
i tried the g.discard thing someone mentioned above right now to see if purple discard would create a second tarot but it did not
yeah, i guess purple works in a unique way
Using G.discard or G.deck as cardareas requires you enabling their usage first as optional features.
in your case cause there is no custom seals like me, u can specify that if discarded and purple seal
create a tarot
which will create a tarot besides the purple seal one
i'm gonna try this for purple seal actually, this seems good to me?
ohhh ok
for some reason, i cant get my code to work with legendary joker overlays. the overlay is in atlas right next to the base joker image. the joker appears in game but is only showing the base image (red card)
-- FILE GENERATED BY JOKER FORGE
-- Mod: overlaytest
-- Author(s): overlaytest
-- Version: 1.0.0
-- Description: overlaytest
local mod = SMODS.current_mod
mod.config = {}
-- Atlas
SMODS.Atlas({
key = "CustomJokers",
path = "CustomJokers.png",
px = 71,
py = 95,
atlas_table = "ASSET_ATLAS"
}):register()
SMODS.Joker{ --legendary test
name = "legendary test",
key = "legendarytest",
config = {
extra = {
}
},
loc_txt = {
['name'] = 'legendary test',
['text'] = {
[1] = 'A {C:blue}custom{} joker',
[2] = 'with {C:red}unique{}',
[3] = 'effects.'
}
},
pos = {
x = 0,
y = 0
},
cost = 8,
rarity = 4,
blueprint_compat = true,
eternal_compat = true,
unlocked = true,
discovered = true,
atlas = 'CustomJokers',
soul_pos = {
x = 1,
y = 0
},
loc_vars = function(self, info_queue, card)
return {vars = {}}
end
}
return mod
why did i use create_card
like this?? if pseudorandom('waxjoker') < 0.25 then
how it looks in game. surely theres something silly im missing
how to i make a seal play the sound of the base chip and mult being balanced when it appears in a standard pack?
Yeah thats 1 in 4
Fixed
well then do G.GAME.probabilities.normal / 4
Where’s the soul ?
oh thx
Config
card.ability.extra.odds which you would define in your config
i see
config = { extra = { odds = 4 }}
if pseudorandom('vremade_gros_michel') < G.GAME.probabilities.normal / card.ability.extra.odds then
You can change the ‘’ string to whatever you want
the image that is meant to appear atop red card is the golden ticket, im just using random vanilla joker sprites for debug lol
the string barely matters
thanks
the only thing you should be worried about is how likely it is for another mod to have the same string
You’re doing wrong pos of x and y
so ideally you would put something unique, like the name of the card and the effect
Pos={x=1,y=0}
Soul_pos={x=2,y=0}
pseudorandom("my_cool_joker_mult")
Soul pos is the one on top
Your x,y pos (0,0) is empty
this weird in between state of having to recommend the old method for pseudorandom is annoying lol
will this work for config?
nono
No {}
i see
done
config = { extra = { odds = 4, repetitions = 1}
do i add the if pesudorandom before or after "return repeat"
and how do i remove just seal?
not destroy card?
does this work? [playing_card]:set_seal(nil)
Set_seal (nil ,nil?)
Thats what i thought
the x, y is the red card, it is 0,0 because it is the first image (the background). golden ticket is directly to the right in the atlas, therefore it has 1,0. the red card at 0,0 is the one displaying, the soul is not. do the foreground images need to be placed directly below the background images in the spritesheet?
It looked like (0.0) was an empty space
it does look like 0,0 is empty in the image
No
wait
maybe the red card was the soul graphic in this case lmao
Yup that’s what i was pointing
its not removing seals
thank u so much, i messed something up with my codegen file and it was adding an empty space before the first joker and i didnt even realise haha
how do you draw as a love.graphic.draw with Sprite ?

Use other card not card
Card reference the joker 😭

VSC suggested that and i ignored lol
i'm gonna assume i need something else than create card but i'm trying this and it didnt even print hello when i discarded a purple seal, any ideas?
Ad astra abesasq 🙏
Lmaoooo
well the context check is completely different so idk
does repetition accept discard? if it does do you have the optional feature enabled?
btw, which server are u on?
context.other_card:set_seal
i know 
Eu , but i haven’t played since Natlan lol
😭already?
Did they added quantum and imaginary ?
no lol
What
this is genshin not hsr
Then how did they added skirk
cryo
😭i mean same company
cryo is coming back strong
if u have escoffier and skirk
u have best cryo team in the game rn
and it does alot
i think i just left in those context checks from the previous thing i copied, i don't need it to be based on any repetitions i just wanna have it create a second tarot when discarded
just tried this and nothing happened
try copying the context check from the code i posted
oh i didnt even realize i used a different context check
not really sure what i'm missing here
@formal parrot teacher i ask for your help once again
what is this for, a joker?
yeah
Context.after
hmm no idea
it gives me this
btw that print hello is never going to work
Put the remove seal at the end
put it ouside the event
or inside the event function
not in the parameters
Yeah you can’t do conditions after the return
Gotcha
Because function end when you return
Can you put it inside the return ? 😭 (idk)
Yeah that sounds reasonable
yeah still nothing when i discard purple seal
You can check for discarded if it has purple seal add a random tarot
Manually
how would i do that check?
i thought thats what i was doing here 😭
i know why, lazy to think of a sol..
can i see the entire code for the joker
your pseudorandom code doesnt have any context
whats the goal
so when the chance procs, context.other_card might not exist
i know
added a chance to delete retriggered seals
just do it before the returns?
nah
good idea
They want it after
After triggering
diabolical indentation
indeed
they can do it in a func inside the return with an event
this is probably the messiest joker i have right now
please use an auto formatter T-T
we got a if statement thats a million years away from your code and a freaking tower of end
😭
yeah i wanted to see if anything is nested
and yeah, what N' said, this can be prevented by using an auto-formatter
i dont know what i'm doing so if i boot it up and it crashes i just add another end to the tower it's a very real method
Coding during covid
sob
how did u know my posture was not ideal??
youre coding
i think that guess is bound to be correct for like, 95% of people in here
hahahah
You looked frustrated >w<
oh u noticed
oh i think i already see the issue now lmaoooo
carearea
im gonna run it now but wanted to hear your opinions
just context.cardarea == G.hand alone wont suffice
wont work
but having an idea on your intended effect first would be useful
youre returning before the other condition triggers
why?
also context.cardarea == G.hand is not a robust context check
hmm i see
this will always return before the second if
nevermind i do not see the issue
i do, that if condition is super nested, you need to take it out of the other conditions
...why is your context.discard in context.cardarea == G.hand and context.repetition block?
i thought it was cuz the if statement for context discard was still part of the above one for context cardarea but i dont think it is
the effect i want is retriggering seals which is done
second effect is a chance of removing seals which worked to some extent but the code made it remove seal before retriggering
i do not know!
none of this will work
oh ok awesome
so what do u suggest?
that
i have vanilla remade open already
is the deck view a card area? and if so is it possible to check if a card is clicked in the deck view?
how do i make em work though
make them not nested
draw cards when clicked in the deck basically
so just move them left?
or do i need to add something
sorry i'm not the brightest when it comes to this 😭
i dont want to say yes out of fear this is not the same thing im thinking of when i say that
i would offer to help fixing your code but im in the bathroom rn, so if u havent got it fixed yet by the time im done then id love to help :p
@red flower context issue or something else?
much appreciated lmao
u are always somewhere when u are helping lol
the context cardarea repeats are working but the purple discards still are not
im not in my room 24/7 lol
last time i talked u where out with your bike and the tire broke or something
not the tire, the entire engine in it
before that its either supermarket or had people
:p what can i say, im everywhere
don't use context inside an event, save it to a local first
say, if i want to put my own jokers, should it be G.P_CENTERS.j_tngt_blabla?
local "sometext" = context.other_card??
yes
alright
not in quotes but yes
what do i put in default tho?
whatever you want the default card when you own all other cards to be
like, own all of the cards inside of the object type?
yes
alright
only when youre creating a card of that set tho
i see
... 
what about a custom consumable?
c_prefix_key?
yes
alright
code?
just context.other_card
sometimes i question if my brain is even working ...
it finally worked
thank u
i have something else i needed help with for the past few days but didnt see u online @red flower
what is it
fellas i fixed it
booster packs only show mod spectrals for some reason
what version of steamodded
oh dam i just finished taking a shower lol
hmm
gj!
try updating but if that doesnt work you might need to use the other method to inject them
also your default is wrong
other method?
??
like this
the default has to be a card key
could u send the full screenshot so i can show izz
nxkoo being a role model...
finally..
so "G.P_CENTERS." is it or something else?
so my object type code is wrong
i wouldn't say wrong, i think it's an smods bug
i made this mainly as a test of changing a jokers ability but it doesnt seem to be working, whats wrong?
SMODS.Joker:take_ownership("j_smiley",{
calculate = function(self, card, context)
if context.joker_main then
return {dollars = 30}
end
end})
so like this?
im gonna rest for today
continoue this tomorrow
see u
bye
have a nice rest of your day
can someone help me with this?
how do you change X and Y with screenshake?
why is this pooping itself
In that loop, do if v.seal instead.
You're also not checking if context.other_card itself exists before doing the seal check.
why aint this working?
wdym?
As in, context.other_card may not be a "valid" object in a given instance. If you are not using loops, just having if context.other_card and context.other_card.seal makes sure that you have a "card" to check over.
Darn can you not get the ability table of the target in the localize function?
sorry for asking again, i made this a while ago to test modifying a base game joker but it doesnt seem to be working. whats wrong with it? ```lua
SMODS.Joker:take_ownership("j_smiley",{
calculate = function(self, card, context)
if context.joker_main then
return {dollars = 30}
end
end})
Missing true
And i think its missing a )
where am i missing a true?
calculate = function(self, card, context)
if context.joker_main then
return {dollars = 30}
end
end},true)
doesnt seem to be working still
oh might be because i put j_smiley instead of just smiley, the documentation says the prefix isnt necessary
Maybe
Where should I start looking if I want to add custom options to my mod
nope still not working
Ui
Maybe config
Also hey flote :3
Are you sure your key is correct?
yeah, even just changed the key to "joker" andstill nothing
Not you silly :3
Oh, my bad, and hi
I have no idea
@red flower
Boss it’s all you
no idea
You know its cooked when N has no idea
@wintry solar
Sorry for ping , we need some help
to be fair my game has been having issues detecting stuff recently. i recently made a seal that worked for everyone but for me, so maybe its a me problem
Try updating the game
And smods
And lovely if you don’t have 0.8
how do i check the lovely version? cause its been the same for like a year now
I think I'm getting close to something, right now it just added an empty box, not sure why its not populated but it might be done elsewhere
(I'm modifying SMODS lovely patch directly cuz I'm lazy)
Doesn’t SMODS have multi-box built in already
is this dynamic multibox
Yes
Ooooooo
i need to add something like that to my mod too
If I somehow figure it out and polish it I could make it a SMODS util
but i would use generate_ui
i already have a dynamic multibox i added before multiboxes were a thing
https://github.com/nh6574/JoyousSpring/blob/bfe4f9bfc4d38135c652aeed94b0942ad0a1f736/src/card_ui.lua#L285
but i need to change the thing immediately after to use it too
Wdym by the last sentence?
and this only takes from a specific localization entry
Oh, that I don't really mind I think tbh
this adds things to the description dynamically but not with multiboxes
Yea I wish it was in a multibox, looks fancier
just updated lovely, i updated smods a few days ago and my base game is updated and still nothing
this adds the green box
I'd rather prefer it if it added it last tbh
I really don’t know, whats causing the issue your code looks fine
I saved my desc in AUT but I'm not sure exactly where I should add it (if it's even somewhere here)
thats just where i put it in the lovely patch
i want to switch to use multiboxes instead of a patch if i can
You and me
im too busy making new jokers
I want to deal with this now so future me doesn't have to
maybe if you add it to AUT.multi_box in generate_ui it just works
Does it still work if it isn't initiated in the func?
Both G.UIDEF.card_h_popup and localize it seems
the card_h_popup one is for the box creation part
Wonder if I could fill it out at this moment but idk which param I'm supposed to modify to add the desc in
yeah its a me problem, i copied the example code in the documentation and still nothing
dont know whats wrong with my game though
You might need to reinstall it or something
are you sure youre editing the correct code
This doesn’t happen
Theres noway
like maybe youre editing a copy
i literally made a joker while troubleshooting this and that works fine
its only some stuff thats broken
is it in the same file?
yeah
could you send the file?
it would be an entire mod, i have all the code in one file
hmmm i will try to do something when i get home from work
would that be a problem?
i mean, main problem would be atlas crashing, unless you meant sending the entire mod
how is it that im stuck at this more than figuring out how to check mouse circles 😭
just check if hoveredCard is the same as before before setting it to nil
oh fuck you are right
uhhhh
im sorry for being dumb
im not going to run it
oh, then here it is
ty let me check
How do i save the option the player made
SMODS.current_mod.config_tab = function()
return {n = G.UIT.ROOT, config = {
-- config values here, see 'Building a UI' page
}, nodes = {
{n = G.UIT.C, config = {align = "cm", padding = 0.1}, nodes = {
{n=G.UIT.R, config={minh=0.1}},
create_option_cycle({options = ralseichoices, current_option = 15, colour = G.C.RED, w = 5, scale = 1}),
}}
}}
end
immediately noticed the problem
So looking at this sprite sheet, how would I go about assigning each card position in the code? How do the legendaries work?
youre using the 0.9.8 syntax
combined with the new syntax
top left is x = 0, y = 0, going to the right increases x by 1 while going down increases y by 1
what would i need to change?
i didnt know there were two different sintaxes
ok, that makes a lot more sense. Thank you!
all the SMODS.INIT stuff is old
what would i need to change that for? i didnt code that part, it was done by the person who started the mod
you would change it for SMODS.Atlas i think
i never coded pre-1.0
idk why the take_ownership thing is not working tho
i dont think its that
did you code this part?
no, didnt code that either, almost every other thing is done by me though
thats replacing any take_ownership you do
Tried fetching the joker through G.P_CENTERS but its still an empty box
oh, i'll try commenting that out and checking if it works
yeah now it works
also fixed the problem i was having with the seal i made not working
ok i dont know how that caused the other problem but amazing
yeah that one doesnt make much sense but i'll take it
but for some reason is creating cards without a backsprite (for context the seal created two copies of itself when the card with it was destroyed)
i think that already happened before though, since some people that tested it had the same result
still doesnt make sense
Lovely art btw
not done by me, it was done by two of the other people im doing the mod with
Did you used copy card
Or other function ?
Probably should take a look at the code of cryptid (the spectral card )
Maybe certificate aswell
i didnt because i was told it was crashing when testing it, so i did this ```lua
G.E_MANAGER:add_event(Event({
func = function()
print(_suit)
print(_rank)
local _card = create_playing_card({
front = G.P_CARDS[suit..''.._rank],
center = G.P_CENTERS.c_base}, G.hand, nil, nil, {G.C.SECONDARY_SET.Enhanced})
SMODS.change_base(_card, _suit,_rank)
_card:set_edition(context.removed[i].edition or {}, nil, true)
_card:set_seal(context.removed[i].seal, true)
if next(SMODS.get_enhancements(context.removed[i])) then
_card:set_ability(context.removed[i].config.center)
end
SMODS.change_base(_card, _suit,_rank)
G.GAME.blind:debuff_card(_card)
G.hand:sort()
print(_suit)
print(_rank)
SMODS.change_base(_card, _suit,_rank)
G.E_MANAGER:add_event(Event({
func = function()
SMODS.calculate_context({ playing_card_added = true, cards = { _card } })
return true
end
}))
return true
end}))
like, in the current shop? or a future one?
current shop
sayy like
i want this joker to detect if there's this joker in this shop
or this item
G.shop_jokers is the cardarea for the shop
to fix this i'd have to fix the loc_vars of the joker right?
yes
ok thanks
elaborate?
fair
like how to do anything random
pseudorandom(pseudoseed('seed')) < G.GAME.probabilities.normal/odds
why is this not working?
hm?
i dont know how to be more clear than that
would you know how to make that work?
no idea
does anyone know how showman works? cant barely find it in the base game's code, only appears like 3 times
Basically hardcoded
in functions/misc_functions.lua in create_card, showman is hardcoded
😭
theres a util function for showman now

i was 1 second late
ok so, need some help, I'm trying to hook into end of round scoring to also score cards as if they were played (for secondary effects, like gold seal) and I'm having some trouble getting anything other than chips from the card working.
I've a rather large set of patches to make this work, so it's difficult to share succinctly. I can upload to github if need be, but the gist is, I think I should be in common_functions.lua, and I patched eval_card to reevaluate the area of the code that looks for editions, but I'm thinking there's an additional context check for something that's different between end_of_round and main_scoring, despite main_scoring being present in the context. What code actually controls whether or not an edition is applied? It's something that SMOD has patched, so I'm not seeing it in the lovely dumps, but it's not something that I've been able to find looking around the smod files.
can vanillaremade show me how to remake my life
no 😔
i already checked in vanilla remade, it just says "theres no good way of making it"
not with that attitude
thats old
check the new version
oh, i didnt know there was a new version
i update vanillaremade with every smods change
Couldn't you just use SMODS.score_card?
Huh, close enough?
showman's original key is ring master 💔
was?
I'm not actually sure.
I'll look into that, thanks
i mean is
Wdym was? It' ring_master still
hi sleepy
this function isn't detecting the Today & Tomorrow sleeve:
but #SMODS.find_card("sleeve_phanta_stormcaught") does
i dont think find_card detects sleeves
You can't use SMODS.find_card on sleeves.
this will always be 0
ya but #SMODS.find_card("sleeve_phanta_stormcaught") detects the Stormcaught sleeve correctly
unless i mistook something
double checking
Yes, because that will always return a number.
if G.GAME.selected_sleeve == "sleeve_modprefix_key"
cheers ^^
time to reroll a thousand times to see if the thing i did with showman works!!
Yoo I finally did it
Somethingcom, you seem to be reasonably knowledgeable about balatro mod development. May I ask for a code review before I start making a hash of things? I'm about 90% of the way through creating a rather complicated joker, and it's my first attempt at a mod, though I am a fairly experienced programmer.
if so https://github.com/OmnipotentEntity/DiscordVanilla/tree/main, otherwise please disregard
anyone here now the difference between
1__profile.jkr.data
and
1__meta.jkr.data
use \ in front of your _s
What’s the issue?
Trying to take ownership of a joker not working properly
.here
we found the issue
they were taking ownership of all jokers later in the code
we figured it out
Sorry for bothering eremel
No worries
well, not we, N figured it out lol
When will the smods font be documented?
@/aikoyori
And if there’s an example somewhere
i think breeze was working on it
Ohh
i use it in my mod if you want an example
Sweet i’ll look for it
btw N what do i have to put in card_key? the key of the card i want to be affected by showman? ```lua
local smods_showman_ref = SMODS.showman
function SMODS.showman(card_key<-)
if next(SMODS.find_card('key of joker that acts as showman')) then
return true
end
return smods_showman_ref(card_key<-)
end
Your card’s key
so if i wanted joker to be affected i'd put "j_joker"?
card_key is the name of the argument, you leave like that
then in the if condition you check if card_key == "key"
Crap it doesn't work if the desc isn't originally a multi_box one
oh that makes sense, thanks!
for my mod?
Yeah
we dont have a thread in this server no, we do in a different one
but the mod is in nexus mods if you want to try it out
its called neuratro
anyone know what "STATE": 5 means in save.jkr?
G.STATES value
yea dynamic multi_boxes doesn't seem possible if the description isn't a multi_box one in the first place
can you make all of them multiboxes
I tried to but I keep getting crashes on my attempts
Oh you meant manually? Yea I did that for my jokers
but it sucks if you want to make this work on vanilla jokers or sum
If it worked that would have made for a funny alternative FusionJoker API
Do you know what the number corresponds to?
how do you make it so a custom rank doesn't appear in every vanilla deck by default?
you could take ownership of every deck and just remake them to not have the ranks but i'd think there would be something easier
If when you try to implement your own solution tonight and figure out the solution to making a desc a multi_box one lmk
how do i check how much a reroll has cost?
how do i make a consumable that directly adds to the blind score?
Good schmorning chat
G.GAME.chips = G.GAME.chips + your_value
do you have to update the ui manually?
yes
hi dilly
no
Nope, I use it myself, didn't need to
Yea
what the hell is this inconsistency.
thunk moment
hi bepas
but can you add bepis petting
For every joker pet, gain x0.1 mult
Joker must be petted every round, else X0.5 Mult
where is the current blind's requirement stored?
G.GAME.blind.chips or smt
Nvm im ending myself
😭
well that's not so bad
stop
Lmfao
hm
how do i fix that
is there a way i can force the game to check if the round should be over
try
G.STATE = G.STATES.HAND_PLAYED
G.STATE_COMPLETE = true
👋 N
what's the name for the cost of a reroll?
does nothing
hmm you might need to do that if the chips are greater and then add end_round()
nvm i found it
how do i change this add_card to exclude cards that are not perishable-compatible
you would need to pick the key yourself or make an objecttype
Does anyone know what G.STATES.PLAY_TAROT does?(STATE 6)
I believe it's the state when for example you use The Wheel from your consumable slots
It flies to the middle of the screen, plays its animation, and then your controls are locked until it finishes
Ok
I think I finally have my first joker finished 🎉
gratss
just notice your video it's a very nice idea 🙂
Thanks, yeah it took a bit of doing to get it working
Very epical good job
Would you rather be a developer or a lawyer
Depends on the lawyer, my family is pretty ingrained in civil law but it does not much interest me
I find id think I'd rather be some form of detective if it was that side oriented than a lawyer though
What about you
I’d rather be a lawyer
What kind of lawyer
Hmmm
I really never thought about that
Maybe marriage related cases or drugs
Sounds fun
developer probably
Criminal always sounds interesting, my aunt considered it before she went civil and ended up saying she just didn't really like all the things she heard and saw people having done in trial
Which is fair
Yeah , you’ll suck as a lawyer
“Your honor my client doesnt have 3 sides therefore she’s not a triangle “
But doesn't everyone always have 3 sides if you think about it
Therefore everyone is innocent
Probably more than 3
???
Idk i tried counting once and stopped at 3
Can't figure out what's more than 3 though maybe thats why
actually more like !?
Triangle joke
yeah okay i understood that
Mr triangle is it true you like the triangle or is it a facade
Well chat that settles it
Couldn't face the reality of such a query
how do i get localization text to be a certain hex color
Not sure why it doesnt work, first time Im using merge_effects https://cdn.discordapp.com/attachments/1280196335089356951/1387118326156623923/image.png?ex=685c2e1c&is=685adc9c&hm=4aef62bf69986080897b61ef85abba36804aaff03bf92a418aa25364a9d8918c&
Calc and ret shows chips and xmult
try {calc, ret}
I will in a bit, not on pc rn
How would i get all jokers without an eternal seal?
local list = {}
for _, joker in ipairs(G.jokers.cards) do
if not joker.ability.eternal then
list[#list + 1] = joker
end
end
You guys ever think about how cool and awesome N is
i dont i think the opposite in fact
One always views themselves through jaded lens
Only an outsider can be truly impartial to the view of you
And all this outsider can see is delight and wonder
literally everyone steals your code, we wouldn’t do that if it was bad
ur awesome
pure poetry
😭
I agree
You also are
Gjfjdh thank you,,,,
N' cool, ye yeh
:)
AxyraaN'das... 
What is hapnin
how can i check when im in the shop and when im in a round?
N' appreciation ?

