if face_cards >= 5 then G.GAME.dollar.buffer = 1.5 return { G.GAME.dollars = (G.GAME.dollars) * G.GAME.dollar.buffer, func = function() G.E_MANAGER:add_event(Event({ func = function() G.GAME.dollar_buffer = 1 return true end })) } end } end
#💻・modding-dev
1 messages · Page 482 of 1
how did you do this?
(im curious)
why is it telling me that i need to close the { in 'return {'?
probably just one set of `
select text, click < >
wouldnt you need to put it into every colum then?
ohh
we are fwends now @sonic cedar 
i saw hwarhar
test test test
for next time put it into "``````"
But no, you would do:
```lua
-- Code here
whoops
I tried SMODS.change_base(card, nil, pseudorandom_element(SMODS.Ranks)) and still no cigar
Yes, it would be SMODS.change_base(card, nil, pseudorandom_element(SMODS.Ranks, "seed").key)
why did u comment on your own profile silly billy
no one else would
abt comments on profile, could I get some from you guys pls (I had many but got hacked and they deleted all my profle comments 😔 )
i will what is it
ive commented on tomas profile 
the key is the key for the joker I want to spawn yes?
it's linked
i have a few, some just bots, some actual friends
i forgot discord desktop doesnt show you the links in the preview
Yes, and modprefix is your mod prefix.
"a few" mhm
thnx
dawww thanks
welcome
´´´test´´´
lmfao it helps a good bit of them are from gmod, when you run servers and build strong communities you get comments
how did you menage to put tylda in reverse
or whatever its called
final 3 of the spreadsheet,,,
tilde is ~
then whats "`" called?
did you do all the Vanilla Jokers or no
uhuhuh it doesnt look good
it's in my keyboard
WAIT
I'M SUPPOSED TO PRESS SHIFT
test
huh
not all of them have custom stuff
but technically yeah
is this supposed to be like joker? from cryptposting?
id have to look at it
thanks
i need it to like also trigger a message AFTER this that says the last roll was unlucky or smth
hold
what should i hold
on
im fresh out of on
oh sweet ive got one more up
just looked
no lmao
Code?
what then?
the first error fixed itself (needed to resteart the run)
but this one shows up when the boss blind is selected
you ever play inscryption
peak game
and that the main color of the game is orange
whats po3
some character from inscryption
key = 'rbdj',
loc_txt = {
name = 'Return By Death',
text = {
"{X:mult,C:white} X#1# {} Mult",
}
},
blueprint_compat = true,
rarity = 4,
cost = 20,
pos = { x = 0, y = 1 },
config = { extra = { xmult = 1, xmult_gain = 1 } },
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.xmult_gain, card.ability.extra.xmult } }
end,
calculate = function(self, card, context)
if context.joker_main then
return { xmult = 1 + (G.GAME.deaths or 0) }
end
if context.setting_blind and context.blind.boss then
SMODS.add_card({key = "j_rbd_mr_bones"})
end
end,
}```

i guess you cant put 2 if's
oh so its like mario
No, remove the mod prefix.
wh
what
LMAO
did not predict the belly laugh
so the mod prefix is needed only when the joker is form a mod?
Yes.
And it would be from the mod it is from.
i love saying some game idk about is like mario or some other thing
another favorite is to say its similar to wii sports
something is such a nice fella
indeed
are you a nice fella or a fice nella
im a
all of you here are
not me im the biggest hater
no me
no me
nuh uh

wdym

you seem like a nice guy
if u check my message history im a big meanie to every single person in here
that is true
I dont care abt ur history, form what I saw with my own eyes you are a kind person
(I might be blind tho)
dilly you can redeem yourself rn
be evil
i can never be redeemed
shadow campaign
what the hell

that's not very evil of you
thank you dilly
cats are notoriously evil
we'll see you in 4 hours
therefore that was evil
like I said, he is not a bad guy at all
i wish you could reply to steam comments
sup gang im back
hello peanutz 9874
i commented something super mean on tomas account too
hi
let me check
look at SMODS.Rank in the wiki
so you WERE saying i have a staring problem i cant believe you 
toma doesnt have a wishlist i must explode
keep it private
ur funny, dont explode
make him explode
i see it
it's the third time i'm asking for help (this is only a part of the code)
G.GAME.dollar.buffer = 1.5
return {
G.GAME.dollars = (G.GAME.dollars) * G.GAME.dollar.buffer,
func = function()
G.E_MANAGER:add_event(Event({
func = function()
G.GAME.dollar_buffer = 1
return true
end
}))
}
end
}
end```
where is the tab on the antepenultimate line
hey i know her
thats wild because it doesnt show me
i really dont have a single ace attorney outside of the og collection im gonna shrivel
i was able toa ccess it through games though
What is the issue?
it's saying a { is open
i dont have the recent collections but i also played them all on the ds
are they epic on ds
specifically the one in 'return {'
i have a dslite
I see 2 { and 3 }
they were really faithful with it
icic
i need tos tart collecting handheld games, but they are so expensive
also i cant be a good person like dilly sadly
pokemon especially
on the who
get in my region mf
Change G.GAME.dollars = to dollars =
who were u tryin to give smth to
toma
gdi dilly

the same game too lmao
insane
i have a joker that subtracts chips every card. how do i make a custom popup that is slightly different from the original "+ something" chips
you would need to add it to a localization file

the extra } is because it said a { is open
erm what the freak
what do you use to code?
it should still let u accept
vis bug we're fine
Yes, remove that.
but he eludes me
another game to add to the pile of "get better processor"
wait i did
what am i doing
i need a better gpu soon
i got too used to the 4 i forgot i literally squared it
my 2080ti needs an upgrade, such as a 4090ti
can i have the 2080 when you get it
do not dox toma in the balatro modding chat
a state isnt a dox smh
ive leaked im in chicago like a bazillion times
lets all grab a pizza
ok
that's all the way over there...
i am more
i dont drink tho sorry
almost
the barcade is cool cause they have game themed drinks
what is it like to live in the US?
my friends and i got the triforce
dont come
its a mixed bag, good and bad parts like anywhere
yeah
Im not planing to
can't complain but also absolutely can
'unexpected symbol near '}''
its far from the worst and far from the absolute best, anyone who says its either extreme lies to themselves
someone keeps adding coal to the trail mix bag
what is this supposed to mean?
id love to move to Poland as thats where my family is from, but ive got alot of ties here
syntax error, you wrote the code wrong
show the code? +which line
guess where I live
so for now i settle on vacations
how do i use group_name strings in loc_text for SMODS.Booster?
if face_cards >= 5 then
G.GAME.dollar.buffer = 1.5
return {
dollars = (-G.GAME.dollars)+((G.GAME.dollars) * G.GAME.dollar.buffer),
func = function()
G.E_MANAGER:add_event(Event({
func = function()
G.GAME.dollar_buffer = 1
return true
end
}))
end
}
end
doesn't say which line
@scarlet imp i hope your still alive
is it a fellow pole
how did you do your halo of flies?
wdym? its not an error?
just got back from lunch
ofc, im a proud Pole
yummers
like would it just be the thing then 'EXAMPLENAME'?
I understand why anyone would want to leave, but by being a part of the imperial core, it's inherently a more privileged existence. So it's not terrible depending on your marginalized status and where you live
is there a way to make a custom info_queue appear on a condition
or specifically, the bottom text while on the pack opening screen
i still dont understand but you can check this https://github.com/nh6574/VanillaRemade/blob/main/src/boosters.lua
unfortunately true
hell yea
i was over there for about a month and a half for a summer
went all over
was at warsaw, krakow, tarnow, gdynia, malbork, and a bunch of other places lmao
I'm extremely privileged to have grown up in the us so I try not to complain too much. it's just an exhausting place to live
idk if you saw de la message, but how did you make your halo of flies
if BI.show_item_pools_check() then
local text = BI.generate_pool_text(card)
info_queue[#info_queue + 1] = {
set = "Other", key = "item_pool", vars = {
text.is_modded,
text.pool,
colours = {
text.colour
}
}
}
end
example from my mod
group_name = "text you want"
oh does it just work with if statements
and what would you say abt where is the best place to live in US?
js making sure thx
we had an opportunity to move to the Nordics earlier this year so we got out if there
great thanks
north east coast
imho
what was the transition like? thats prob my largest concern about relocation
like obviously i loved my time in poland but naturally a palce is diff in vacation vs living
so new york?
plus id have to convince my very american gf to go to a palce like poland lmao
Unfortunately the "best" places to live also have the highest housing costs due to a variety of factors, so there's an upward barrier to entry to be in places with better opportunities and services
my mod is in my profile description. Halo of Flies is in content/joker/page1
oh oki
i have decided to not live in a place, i am becoming an incorporeal being
i also have concerns regarding ym vet status here, being a vet in the US means i ahve good US perks, but i do fear how little my veteran status will matter in other nations
You can find cheaper living elsewhere... but at the cost of a general reduction in social services, public transportation, available jobs, and community support due to the nature of U.S. politics
tried that
would not recommend
paperwork takes centuries and i am not being figurative
"sovereign citizen" ahh statement
you are being figurative if youre incorporeal
went back
i'll give it a shot
is the easiest way to generate a booster pack with pools?
we moved to Finland which is relatively tough to get into, but it was on a work visa so we didn't have any trouble. we're shooting for citizenship so it's a long term thing.
transition hasn't been too bad but we have a very good support system here. language is an absolute brick wall, especially for native English speakers, so that's been a struggle. everyone speaks exceptional English though.
ight bet
would you mind if i copy your code?
(halo of flies)
wow, Im lucky to talk with a person like you
not at all. don't worry about crediting me either, idrc
I just do this for the fun of it at the end of the day
i will if i remember 
so how to make pools, SMODS.ObjectType docs arent helping super well
SMODS.ObjectType is a pool, which is something the docs kinda obfuscate I feel
You create a new object type and add a bunch of keys for cards to automatically be added to the pool
i understand it now
yeah you can only really get that hint from uhhh the api methods (i dont think i said hi to you today good morrow your highness)
Hello!!!!!!!!

Damn why do people keep referring to me in royal or divine terms. Like it's cool and hot but ?
vibes
Real
how do I put a variable in info queue again
i could've sworn i've done this before somewhere but i can't remember where it was or how I did it
info_queue[#info_queue + 1] = { set = "yourset", key = "yourkey" }
no but i need a variable from the joker to be in the info queue
info_queue[#info_queue + 1] = {key = "toga_kartjokerlist", set = 'Other', vars = { card.ability.extra.add_shop, card.ability.extra.add_shop*8 } }
not a good idea actually haha
how do I make the joker description say the current xmult?
you have a lot of variables that i dont
wait i was wondering just that the other day
ill do a different effect
the variables are just fot the flies, you don't need all that
can you do that with a joker using a different joker's effects
🤑
back in business 
spreadsheet first
if context.setting_blind and not context.blueprint and G.GAME.blind.boss then
if SMODS.pseudorandom_probability(card, "halo_of_flies", 1, card.ability.extra.odds) then
return {
func = function()
G.E_MANAGER:add_event(Event({
func = function()
G.E_MANAGER:add_event(Event({
func = function()
G.GAME.blind:disable()
play_sound("timpani")
delay(0.4)
return true
end
}))
SMODS.calculate_effect({ message = localize("ph_boss_disabled")}, card)
return true
end
}))
end
}
end
end
this is really the only necessary part
for the calculate
...maybe?
that wasnt directed toward me was it
bye sinkhole
youve earned a token of appreciation
thanks to yourself, you wrote the code my guy
ok so
don't discredit that
did we react at the same time
send crash?
I need to focus lol, I think I've written like 3 lines in the last hour
Code?
shit youre right
I have arbitrary deadlines I need to meet to feel productive
Use loc_vars
how?
twinning?
this is giving AM's "hate" speech vibes
some of it contains personal information so i'll crop it to just the meat and potatoes
but if it's really necessary i'll just censor the personal information
intentional
Crash logs in Balatro don't have personal info. I think.
by any chance, do you know from the top of your head if this card is blueprint compatible?
it works but it looks like sheet?
filepath
like why is it green
Ah right.
...green?
I have it as no, since every other card that disables Blinds is not blueprint compatible
its not?
Green?????? I think you mean red.
would you happen to be colorblind
i mean the text not the background
i dont think so
that's the crt filter
you can turn it off in settings
OK MODDING
MAKE FILE
DO CODE
Code?
holy shit (thats not what I ment)
my eyes hurt bcs of how clean this game look now
❓ should be a banned emote
nah
makes my skin crawl
DEVELOPMENT
GJKSDGLJ
ohh its supposed to be white not black (the +1)
why is it black in the first place tho
im having too much problems with the code
is says that pseudorandom_probability is a nil value
if SMODS.pseudorandom_probability(card, "halo_of_flies", 1, card.ability.extra.odds) then
SMODS.Joker{ --Headless Joker
name = "Headless Joker",
key = "headlessjoker",
config = {
extra = {
Face_Cards_Discarded = 0,
currentmoney = 0
}
},
loc_txt = {
['name'] = 'Headless Joker',
['text'] = {
[1] = 'If {C:attention}5{} or more {C:attention}face cards{} are discarded at the same time, {X:money,C:white}$x1.5{}.'
}
},
pos = {
x = 7,
y = 0
},
cost = 10,
rarity = 3,
blueprint_compat = true,
eternal_compat = true,
unlocked = true,
discovered = true,
atlas = 'CustomJokers',
loc_vars = function(self, info_queue, card)
return {vars = {}}
end,
calculate = function(self, card, context)
if context.discard and context.other_card == context.full_hand[#context.full_hand] then
local face_cards = 0
for _, discarded_card in ipairs(context.full_hand) do
if discarded_card:is_face() then face_cards = face_cards + 1 end
end
if face_cards >= 5 then
G.GAME.dollar.buffer = 1.5
return {
dollars = (-G.GAME.dollars)+((G.GAME.dollars) * G.GAME.dollar.buffer),
func = function()
G.E_MANAGER:add_event(Event({
func = function()
G.GAME.dollar_buffer = 1
return true
end
}))
end
}
end
end
end
}```
what smods version
It's G.GAME.dollar_buffer not G.GAME.dollar.buffer
this is not a released feature yet so you need smods dev
make sure you're on the probability branch. Otherwise, instead of the probability function, use:
G.GAME.probabilities_normal / card.ability.extra.odds < pseudorandom("halo_of_flies)
this is backwards
oh uh
brother, you need to a seperate drive
do I?
so wdym
pseudorandom("halo_of_flies") < card.ability.extra.odds?
yes
just flip the < to a > I'm pretty sure
is that 20tb?
No.
you have more then 800gb of steam games??
like 23 or smth
then what?
i ahve 1200 games installed so naturally
pseudorandom("halo_of_flies") < G.GAME.probabilities.normal / card.ability.extra.odds
ALL OF THEM ARE INSTALED?!
whats ur internet speed btw?
same thing as flipping the inequality lol
how to I put a value of an variable into ""
how to turn a variable into a string?
or wdym
nothing too significant
I have that much in kb/s
i need to put card.ability.extra.xmult instead of #2# in "{C:inactive}(Currently {X:mult,C:w}X#2#{C:inactive} Mult)"
symmetrical
Yeah that upload speed is bonkers
you put it in loc_vars
or so I have been told
I need a little bit of help. I've been trying to run this bit of code and it keeps crashing the game whenever the odds proc. I suspect I'm using the function create_card wrong - the error message says that I'm failing to pass the consumable type and it's handling it as a nil
use = function(self, card, area, copier) for i = 1, card.ability.extra.num_rewards do if pseudorandom('pot') < G.GAME.probabilities.normal / self.config.extra.b_odds then local new_card = SMODS.create_card({ 'RupeeConsumableType', G.consumeables, false, 0.0, false, false, key = 'b_rupee'}) new_card:add_to_deck() G.consumeables:emplace(new_card) elseif pseudorandom('pot') < G.GAME.probabilities.normal / self.config.extra.g_odds then local new_card = SMODS.create_card({ 'RupeeConsumableType', G.consumeables, false, 0.0, false, false, key = 'g_rupee'}) new_card:add_to_deck() G.consumeables:emplace(new_card) end endend
I mean I have it in there but how do I read the value and put it into the description of my joker
can info queues be dynamic like
like the queue changes on a button press
(last time I downloaded smth)
DynaText lol
how do I do that
put it like in the example
@scarlet imp is there any way to know if it works without having to test a billion times?
you can use dyna text on infoqueues?? like it's using one key before the press and another key after?
yes but i dont think that solves what you asked
im too stupid for this 😭, I dont see the example?
i was joking bc I hate DynaText, idk
put it like that, the first replaces #1#, the second replaces #2#
The code I wrote works fine, so there should be no need to test. That said, if its causing issues for you, trial and error is the only way to test Jokers since Balala doesn't have any kind of step functionality
like this?
You can add print statements to help with debugging if you need, thats usually what I do
could you check my code just to be sure?
and then just put #2# into the description?
why do I have to manually remake the entire HUD for the gradient chanes to take effect. I am going to scream
yeah, DM me so we don't have to keep spamming the chat tho
oki
Need them better speeds
the worst thing is that I cant
trying to do (gdi) a button that'll toggle between 2 target areas for copying on click (eg: deck <-> jokers) but i dont want the infoqueue to say deck while it's on joker targeting, and vice versa
I dont have cables in my house
*to my house
it just shows the defult 1x?
when its supposed to show x4
hmm i would need to see it working to know
remember earlier when I said you needed to put something in loc_vars too, that was it
ill try to get the targeting to work first then
this?
ok
the 1 + G.GAME.deaths thing
can i see the code
key = 'rbdj',
loc_txt = {
name = 'Return By Death',
text = {
"Gain {X:mult,C:white} X#1# {} Mult",
"everytime Mr. Bones is used",
"Base {X:mult,C:white} X#1# {} Mult",
"{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)"
}
},
blueprint_compat = true,
rarity = 4,
cost = 20,
pos = { x = 0, y = 1 },
config = { extra = { xmult = 1, xmult_gain = 1 } },
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.xmult_gain, { xmult = 1 + (G.GAME.deaths or 0) } } }
end,
calculate = function(self, card, context)
if context.joker_main then
return { xmult = 1 + (G.GAME.deaths or 0) }
end
if context.setting_blind and context.blind.boss then
SMODS.add_card({key = "j_mr_bones"})
end
end,
}```
it should be vars = { card.ability.extra.xmult_gain, 1 + (G.GAME.deaths or 0) }
how do you make the little legendary art thing
where something hovers over something
You use soul_pos
how would i use that?
soul_pos = { x = 1, y = 1 }
change the 1 to where the soul is located on ur spiritesheet
yes
easy
I'm trying to understand how to make a joker similar to Midas mask, but the vanilla remade code has a bunch of functions that I don't understand yet (this is my first mod attempt) is there a place where I can read on those specific functions more?
I've been looking through the smods wiki but I can't find it...
N' is literally the creator of VanillaRemade
he'd know
ask him
he is THE guy to ask
well i dont encourage people to ask me specifically there are many people who know haha
he's a contributor, it's a community effort
he is THE guy
Oh wow okay
though he does know
no it's me and astra's effort
yeah (wanted to say that but my brain stopped working)
oh I'm thinking of SMODS aren't I
probably
I would basically be asking "how do I do all of it" so that's why i was asking if there is more documentation
unrelated but does anyone know the ui values (like the w or maxw) for the bottom of the card?
doin a bottom button instead of a side one
elaborate?
personally (for me at least) i can write basic code and i dont know what half of it means lol i just know what to put where
want the button to be at maximum (in case other mods do this) the width of the card, because i'm putting the button at the bottom of it instead of on the right of it
like the "Redeem" button for Vouchers
oh give me a sec
forgot that existed actually but yeah
G.CARD_W
and then just dont do a minw right
yeah
sick
help, game is still crashing, now it's a table
talisman crash
what was the jokers size in 2x?
me?
How does one check if a file at a certain path exists?
it's a simple fix, really
do you know?
I'm trying to make the game load a custom sound and also have the sound play randomly
yea
142x190
is that a playing card in the consumables? How does that work?
also i prefer 1x more
thnx
its a bug, it's not supposed to be there. But you can put cards wherever you want if you assign it's cardarea directly
the 2x looks better for me (bcs it has more pixels)
ohhh okay
if NFS.getInfo(path) then should work i think
Honestly, if you're looking to copy or closely mimic something already done in the base game, you can often get away with copying bits of pieces of code in card.lua (decompile the balatro.exe with 7-zip to view this). That's how I got consumables to add money (copied hermit) and made a joker that decays like seltzer. It's not a replacement for documentation, but we got no documentation for vanilla stuff anyways (worst part is it isn't commented either, but it is what it is).
never expected the game to sell, let alone have anyone read its code
I do recommend using vanillaremade instead but yeah
probably an obscure mod
you know quantify from cryptid?
i use 1x because 2x has more size so it's harder to draw
its not my fault nobody wants to play it 😦
jk idc
I cant draw (I serch for imgs that arent copyrighted)
HOW (it stole a png from another mod...)
how do you even do that
wrong atlas maybe
This seems to work now:
it would make sense (i forgot that its the defult joker texutre now)
what if I only have 1 joker in the atlas, can It just be the size of the joker or do I need to do smt else
yes
the position of the first joker in the atlas is 0, 0?
is there a way to draw a specific card from the deck
by joker effect just on command
huh, thats pretty neat
Hi guys :D
How do i restart the game when a toggle has been changed in the config?
12 hours of silence accosianally interuppted by Xmult soundeffect
Hi! I have no idea but this would be very usefull knowlage...
alt F5 is the fastest way to restart
i know but many ppl using the mod dont :)
and it would be a nice touch
thats not the hard part. i just cant find out how to attach a function to a button
and run it whwen exiting config
"Restart Joker: X10 Mult, Restarts your game after defeating a blind (Locks you into an infinite loop)"
button = "function_name"
that would run G.FUNCS.function_name
what does that mean?
you did something the Talisman mod didn't like
Alright bye guys, I’ll probably be back later but I gotta go to work
guess what person uses create_toggle { col = true, label = "", scale = 1, w = 0, shadow = true, ref_table = reddit_config, ref_value = args.ref_value }, to create a toggle
how do i fix it, though?
i think that has a callback function too let me check
use to_number
but define to_number as a function if talisman is not enabled
No.
wut 😭
i have to use talisman
Use to_big
ye forgot
i forgotr
then just use to_big ¯_(ツ)_/¯
this is triggering no matter if waldo is owned or not, for some reason
if (context.joker_main and SMODS.find_card("j_crp_waldo")) or context.forcetrigger then
return {
emult = lenient_bignum(card.ability.extra.emult),
emult_message = {
message = "^" .. number_format(lenient_bignum(card.ability.extra.emult)) .. " Mult",
colour = G.C.DARK_EDITION,
sound = "talisman_emult"
}
}
end
SMODS.find_card returns a table with all instances of the card in it
welp context.forcetrigger is on?
or idfk
check if the length of that table is 1 or higher
uh, no lol
why doesnt my atlas work?
key = "RBDMod",
path = "RBD-sheet.png",
px = 71,
py = 95
}```
you can use callback = function and define function somewhere
i've had that issue before and Iii think that's how i fixed it
uhh what would be the command for that exactly?
the mod uses ^mult in a joker
#SMODS.find_card("j_crp_waldo") >= 1
the # operator is length
?
you forgot eval
eval #smods.find_card('j_crp_waldo') >= 1
debugplus you have to use eval
ah
also don't you need to use print
testing :)
nnoted
do eval print(#SMODS.find_card("j_crp_waldo"))
next(SMODS.find_card("j_crp_waldo"))?
remove the check (>= 1) bc you can see the result anyways
no need to put print :)
this returns nil
guys, anyone knows how balatro runs on nintendo switch?
including when scoring
i just know something
wdym how it runs?
nil
well, the official love2d does not has a distribuition to nintendo switch
just print out SMODS.find_card('j_crp_waldo')
bc it dosent work sadly
What happens if you just do SMODS.find_card("j_crp_waldo")?
it should work, maybe the file is misplaced or misnamed
i might have found out
👏?
this returns 0
wdym "clap ?"
Do you have the joker?
i ye idk this is mostly a channell for questions
ok explain rq
Yes, you need to replace it with next(SMODS.find_card("j_crp_waldo")) in the code.
i am too dumb
replace what exactly?
the reason why the game is crashing might be because like
SMODS.find_card("j_crp_waldo")
i still prefer the # method
next seems ✨nicer✨
theyre the same, technically next is a bit more performant but it doesnt matter
Quick question, should i specify atlas = ‘…’ in SMODS.joker {}
if you want a custom atlas, yes
what did i miss oh god
talisman might not have functionality for $x
Ah alr, was wondering why vanilla atlas had none
atlas being a sprite sheet
like
whats the prob
headless joker is a $x joker
the problem is probably that youre trying to return a value based on G.GAME.dollars
first image (no button)
so is there any way i can draw a specific card from the deck
what do i do then?
read the link i sent you
i want the card to move from G.playing.cards to G.hand.cards
without fucking everything up
👀 idk lmao
i've found smtn in talismans code tho you may try that?
what is talisman supposed to do 😭
how do i make a custom "saved by extra life" text when getting saved by it?
(see mr bones as example)
are you using a context?
saved = "localization key"
return {
message = 'text'
}
oh my god
i did this complicated ass lovely patch to do that
😭
what do you mean I can just do it like this
it is somewhat new
fucks sake
marie,,
makes me feel a bit better
i need to update that now
the old implementation was really scuffed
imma just not answer anymore since i am sometimes just saying dumb sheesh lmao
next smods release when
whats a localization key?
i dont remember how to but lob corp has this
How does create_card work?
the smods one or the vanilla one
disregard im stupid and forgot to click the damn card 😭
i found the button
the vanilla one, I need to be able to create a random joker from a specific thematic set that has its own SMODS.ObjectType
you can do that with the smods one more easily
SMODS.add_card { set = "objectypekey" }
SMODS.add_card({set = "objectypekey"})?
This functions doesn't support silent argument for editions and other things, that's a bummer I think
parenthesis or not it's the same
what kinda what 
Read ur button
Wap targets :b
you can PR it :3
Not really interested in SMODS development

it says swap
Nop I see no s
his big ass head is in the way
where do i make a localization key?
in what lua file?
just the en-us.lua?
Do I have to add to deck and emplace if I use this function to do it?
yes
ok
it does it for you
Actually I forgot that I need the spawned item to be a rare joker
ok but why is it up there if i definitely said bm
that looks a whole lot like tr
you can add rarity = "Rare" but idk how that works with objecttypes
Does this version of the function have that or do I have to make another object type?
you can do that in the function but idk if you need to add something to the objecttype to respect rarity
at least it works
Also where do I place an invisible joker-like juice card until function?
wherever you want it to start
right
I am making a video about it, can you help me?
I think they were just refering to the fact that the rules say you can't mod on switch
also
i remembered to say it but
i read the talisman notice
but what exactly do i do?
What talisman notice?
i know i have to do something with to_big()
what characters can be used in a mod prefix? any?
n' sent me something
the enhancement I added works like it's supposed to, how do I add the text with the enhancement info?
name
in loc_txt
I mean, i do not want to mod on switch, i just want to know how balatro was ported to switch, only for educational propuses, i have a youtube chanel about love, and I working on a video about it
progress......
idefk what i meant with something 😭
start with a letter then alphanumeric + undercase
and it has to be unique
Yeah sorry, I don't think there's anyone here that knows at the moment. Especially because we can't touch switch
I would try these discords that are more technically oriented
https://discord.gg/ZK2B3JUG
https://discord.gg/5bSnbQ5D
are those the inscryption cards you were talking about?
thx
pretty sure that's perkeo
I mean the extra text in the box like lucky cards, for example
not the name of the enhancement
don't scare me like that, i though it was a spam bot for a second
i thought you were posting perkeo? and not perkeo
oh got it, thank you for your answers!
i assumed name because error
my bad lol
ok so i'm making a joker that adds xmult for each debuffed card "scored" (counts as a part of the played hand) during boss blind. was looking things up and nothing seems to work so far. i know that debuffed cards don't call in the calculate function or smth. any useful info
yup
debuffed cards are still in context.full_hand as far as I know
Hi yall, I'm working on a Balatro mod that's my first venture into programming. I have a card that functions similarly to the non-custom suits version of the Pride Flag Joker from Paperback (Gains mult for each unique suit in scoring hand). I've noticed that Paperback has a function that checks for the number of unique scoring suits, and I'm wondering what the ethics are as far as simply copying the function exactly into my program. I feel like it's icky that i'm just copying the code exactly with very minimal changes (mostly cosmetic, to refer to my mod instead of Paperback), but maybe those feelings are unfounded.
oh ok thanks, also what is making the (currently x1) text reactive to change?
#1# and then you return it in the loc_vars
Legally, you can copy anything as long as you follow the license
Morally, you can always ask. Most devs here don't care if you copy small parts of code even without asking, I usually include a comment to say where I got it from and some notice in the credits of my mod
loc_vars = function(self, info_queue, card)
local x = card.ability.extra.xmult
return { vars = { x, root_calc(x) } }
end,
if context.end_of_round and not context.blueprint then
card.ability.invis_rounds = card.ability.invis_rounds + 1
if card.ability.invis_rounds == card.ability.total_rounds then
local eval = function(card) return not card.REMOVED end
juice_card_until(card, eval, true)
return {
message = "Active!",
colour = G.C.MONEY
}
elseif card.ability.invis_rounds < card.ability.total_rounds then
return {
message = card.ability.invis_rounds .. "/" .. card.ability.total_rounds,
colour = G.C.MONEY
}
end
end
you can always ask for help here aswell!
Why is this juicing at just one round?
alright, thanks! <3
tysm
when does it stop
can i see the config
wait no i know the issue
youre missing context.main_eval
oh my god i have them in the same child what am i doing
Does enhancements, seals support weight?
so close
yes for enhancements
dunno for seals lemme check
also
Don't see weight values in enhancement object
what do i do for the table to stop breaking?
i know it has to do with the to_big() function
but there is no money comparation in the function
there is only money arithmetic
I see, default is 5
are you doing dollars = something
what
i feel stupid now
yes
thats the issue, try doing ease_dollars(something) instead
else, ask in the cryptid discord
ok
Oh my god, basically smth similar to edition calculation junk
Except of no negative check
Can anyone explain why this crashes my game when I use it?
set = "Spectral",
name = "Test Sigil",
key = "testsigil",
config = {
-- How many cards can be selected.
max_highlighted = 3,
-- the key of the seal to change to
extra = 'red',
},
loc_vars = function(self, info_queue, card)
-- Handle creating a tooltip with seal args.
info_queue[#info_queue+1] = G.P_SEALS[(card.ability or self.config).extra]
-- Description vars
return {vars = {(card.ability or self.config).max_highlighted}}
end,
loc_txt = {
name = 'Test Sigil',
text = {
"Select up to {C:attention}#1#{} cards to",
"apply {C:attention}Test Sigil{}"
}
},
cost = 4,
atlas = "Sigils",
discovered = true,
pos = {x = 5, y = 2},
use = function(self, card, area, copier)
for i = 1, math.min(#G.hand.highlighted, card.ability.max_highlighted) do
G.E_MANAGER:add_event(Event({func = function()
play_sound('tarot1')
card:juice_up(0.3, 0.5)
return true end }))
G.E_MANAGER:add_event(Event({trigger = 'after',delay = 0.1,func = function()
G.hand.highlighted[i]:set_seal(card.ability.extra, nil, true)
return true end }))
delay(0.5)
end
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.2,func = function() G.hand:unhighlight_all(); return true end }))
end
}```
not without the crash
i know it's {C:something}{} but what do i write for this color?
attention
thanks!
The line referenced is code for an add_to_deck function but this just sets a seal
O: leave my polling functions alone! 😂
I’m sure you’d rather they’re all the same than each use some different method
double thanks
did you check the lovely dump, it says set_seal in the log
I'll try of course
I think I've finally escaped my UI color hell
Enhancements and seals are pretty hard coded for vanilla
@red flower SMODS.add_card is only adding the default card of the set
I know 
What I need is something that adds a random one
that means the set is not defined properly
or the cards are not injected properly rather
ough
ohhh looks nice
There's a minor issue with that flicker in the background which is the result of ease_value trying to act on the color while the reference is set to a gradient object and I'm trying to tie tht up
Otherwise it works pretty good (barring save states, which screw with it)
@red flower wouldn't it be like this?
i think so, can i see the objecttype
it might need to be defined first
Hold on
-# heads up, he's permabanned from the Cryptid discord


Oh well 
maybe the problem is that it's defined after the jokers
otherwise idk
It's defined long before
do you have debugplus
Yes that's how I figured out it only gives me the default
im distracted watching anime

does anyone know the func when starting a run :p
How do I open the terminal line again?
Also the set I'm worried about is rarepersonas
Oh wait I think I might know why
/
Game:start_run
I'll check your thing first but then I'll also tell you
What button would that be on an IT (Italian) keyboard?
no idea haha
so i've created a function in a separate file, but if I understand the crash log correctly, it won't call it because the global variable is nil?
do you have a LRG = {} somewhere?
nope, that'd be it lol
i figured it was something like that since even in the separate file, LRG is undefined
got it
thanks!
Since I can't open the console I'll tell you my idea
yes?
Every Persona Joker has this in_pool
ah yeah that's probably it
So what should I add to this to make it so that the selling a joker context is an additional condition of this?
you can add or (args and args.source == "personajoker") and then in add_card add key_append = "personajoker"
(or whatever string you want)
Add it to the in_pool?
yes
What does that do?
it checks if the source of add_card is the one with your key_append
you can do that to bypass in_pool when trying to add them manually
I think the better suitable string is something like "fromtwins"
Cause the joker that spawns a Rare Persona joker after 2 rounds is The Twins
is this how i correctly hook into Game:start_run
sorry for late message but
IT WORKED
thank you so much n'
i was going to ask you to fix blank joker as well but i felt like it'd overcharge you with tasks
so maybe later
youre missing the self in gsr()
also i have so many start_run hooks haha
<@&1133519078540185692>
what
what
N can you bring me some food im too lazy to depart the confines of my bed
I poked around with mu lang file now it says this when I start the game:
what is the second thing supposed to be
the "grown potato" thing
is it a message
It is when i upgrades each round
it goes in the dictionary
getting this error now
kay
Did you define that function?
i've had this issue before but i don't know how to solve it
for loop is simply not running
trying to do for index, value in ipairs(SuperContains) do
where SuperContains is a table made up of 13 other tables
does it run if you use pairs
thanks
no
I've tried to in a separate file, should I have connected to that other file somehow?
SuperContains is already indexed (i think that's what this means?)
Yes, you would load the file with the function before the other one.
is this a patch
i'm not doing any lovely patches here no
then that's not a problem with the loop
i just changed ipairs to pairs and got that crash when running the function containing the loop
it's something else
now i question why is this needed to be indexed like this
well i needed them to be in that order
this function should increment the value by 1 and loop around to the first one if it's on the last, like strength
just put the elements normally like an array :V
ipairs STOPS when it encounters a nil value
compared to pairs where it would just find the next non nil value instead
can we see the full code
uhhhhhh
it's gonna need some extra context first
(still getting the same crash either way now idk what i changed to cause this)
yeah that just seems unrelated to the loop
maybe the loop works now but the code inside doesn't
joker content mod where almost every joker has rank specific effects
except you can change the rank that their effects trigger on with other cards
i'm trying to make it work with a strength-like tarot that increases the mentioned card ranks by 1
Rankmagic_ContainsMod = function(_contains, _powerbool, _set)
local _mypos = 0
local _newindex = 0
print("mypos and newindex set to 0")
if _powerbool == true and _set == false then
print("Power mode checked")
for index, value in ipairs(SuperContains) do
print("loop")
if _contains[1] == value[1] then
print("joker's contains table value 1 matches found value 1 of ", SuperContains[index][1])
_mypos = SuperContains[index][1] + 1
print("incremented by 1 to ", _mypos)
end
end
if _mypos == 13 then
print("Existing value is an ace! Wrapping around to 2")
_newindex = 2
else
print("Existing value is not an ace. Value incremented to ", (_mypos + 1))
_newindex = _mypos + 1
end
print("Returning Supercontains index ", _newindex)
print(tprint(SuperContains[tostring(_newindex)]))
return SuperContains[tostring(_newindex)]
end
if _powerbool == false and _set == true then
return SuperContains[tostring(_set)]
end
end
the _set stuff is for when i use this function for things that aren't the power tarot and i need to set the card ranks to be a specific number
the input is _contains and that is a table of 4 values
{"14", "Ace", "n", boolean}
14 is the raw rank of the card for get_id, Ace is the display name, n is so I can have it say "An Ace" or "A 2" so it's gramatically correct in descriptions, and the boolean changes to true after the card rank has been changed at least 1 time so an info queue pops up that tells you that the card ranks were changed
i put those values in card.ability.contains inside the jokers
so they store the ranks they use there and access them later (i haven't coded it to work with effects that target multiple ranks yet)
and this is run by the power tarot to increment the values
by 1 wrapping around like strength
i'm not sure if this is going to be anywhere near as cool as I think it is
you know it might have something to do with me removing the string names for the ranks and then using tostring on the table calls hold on
there's a lot going on here
that worked
i fixed it
it's incrementing by 2 but it's actually incrementing so it's fine
explaining how my code works leads me to a solution once again
it now only crashes if the contains rank is an ace
that's better at least
but i put print statements in it so i can look at the lovely log to see what went wrong
and I immediately know what happened
I tried to start making my joker by just taking midas code and changing everything i thought was relevant to my new enhancement's key, but it crashed and I have no idea where to go from here...
needless to say i don't understand much yet
m_[your mod's prefix]_slobber
ohhhh okay, the midas code was just m_gold so i thought it didnt need that part
why was it like that in the vremade code?
for vanilla stuff you don't need the prefix
gotcha
are there any good ui people here rn im gonna lose my mind
doesnt work
I have the file as the exact name
emergencyfrog.ogg
that's not the exact name
is it in assets/sounds/
Probably could ask n or winter
I know winter was just dealing with some shenanigans
the one time somecom reacts with a different emoji 
sry
do not ask me i read the code and do not know :3
no idea then
make sure it's not something like it being called name.ogg.ogg
here's the code: duplicates itslef and plays the sound
i could
but n looks busy atm
and there is an 86% chance winter is fighting for her life rn
im watching anime
Winter is always fighting for her life because how on earth can you be in this world and be so perfect
If you want to duplicate you would use copy_card
somecom.
true true
which one
aim for the ace
dot com 515
Did they win
U should watch Lupin III 
does she look like shes winning
can you guess what i watched before this
im watching one anime per year since anime was a thing
Yes
lupin was 1971
oh my god.
Which part
1
Hell yeah
how do i make a joker always spawn with an eternal sticker?
i couldn't find any documentation for it
card:set_eternal(true) in set_ability
Ive only seen
Jojo up to part 5
Cowboy bebop
Evangelion
And like, arcane and edgerunners if those count
I dont watch much media
Part 1 is how Hayao Miyazaki started his director career, but I shan't say anything more because this isn't the chat for it
where are you GOING
he's going
home
