#💻・modding-dev
1 messages · Page 497 of 1
context.card
Same/difference
Ahhhh react. My old nemesis
hi winter!!
wait i thought this would work, it just returns nil
context.card.config.center.key
i've been scrolling through the auto-completer and it didn't show config :(
but now it does, tysm
vscode and vscodium is different things you know
i disagree
they are different, vscodium has telemetry disabled and no Microsoft branding 
Yes.
And yes, it is possible.
do i have to do the cryptid method of scanning for redeemed and unredeemed vouchers or is there another way
What is the Cryptid method?
I got this crash and I don't understand why. BTW it's a Partner that I try to make
local used_consumable = copier or card
local usable_vouchers = {}
for k, v in ipairs(G.vouchers.cards) do
local can_use = true
for kk, vv in ipairs(G.vouchers.cards) do
local center = G.P_CENTERS[vv.config.center.key]
if center.requires then
for _, vvv in pairs(center.requires) do
if vvv == v.config.center.key then
can_use = false
break
end
end
end
end
if v.ability.eternal then
can_use = false
end
if can_use then
usable_vouchers[#usable_vouchers + 1] = v
end
end```
other_card doesn't exist anywhere, also you misspelled it in the probability call
Then yes.
Yes.
im going to assume it's a yes to "do the cryptid method"
Do you want to redeem vouchers bypassing requirements?
ok so what I should use for checking the enhancement of card played
not really, just. give a random voucher
all i want
like
hm
it's the cryptid way, yknow, it gives a random unredeemed voucher, no repeats, could be any tier
how would i context call after a complete discard instead of per card discarded?
you're using the right function, you're not passing the right parameters, use context.other_card
You mean like a context.post_discard?
hi toma
yeah but that's not a thing is it
Yes.
oh right
[[patches]]
[patches.pattern]
target = 'functions/state_events.lua'
pattern = '''
G.GAME.current_round.discards_used = G.GAME.current_round.discards_used + 1
'''
position = "after"
payload = '''
SMODS.calculate_context({modprefix_post_discard = true})
'''
match_indent = true
my goat
hold on let me ask it in a more broader way
how do i redeem a voucher from a use function. any voucher, doesn't have to be random
Card.apply_to_run(nil, G.P_CENTERS.v_modprefix_key)
Coming back to this because I asked Aikoyori and the only thing they did was fix a bug for ranks
ok now the thing work but I want it to happen only on final scoring step. Like If I remove if context.final_scoring_step, it is working
yeah final_scoring_step and individual don't happen at the same time
if you want final_scoring_step then you will need to loop through context.scoring_hand instead
ok I'll try to do this
Also I'm having a problem with how I set up my ranks. Whenever I try to use certain Spectrals, they crash. I think the problem is that I'm disabling certain ranks for the suit
what does your in_pool function look like
If you have an in_pool you need to check that args is not nil
hello guys! is there a way to hook some kind of tag to a joker? something like,
SMODS.add_card({
key = "super sigma balatro card",
tag = {"blabla", "blabla"}
}]
and then for the ranks:
wdym tag
like just a specific tag that i can reference in code
like this
how do i do that? if args.suit == 'other' and args.suit != nil?
if args then <code> end
no but you can do
local added_card = SMODS.add_card({
key = "super sigma balatro card",
}]
added_card.my_tag = true
it won't be preserve on reload unless you save it to the card's ability table tho
yeah that works
https://github.com/Steamodded/smods/pull/809
@edgy reef you're marked as a reviewer on this pr, any thoughts?
can a joker's nil info queues be fixed to track the values of the joker mimicking the infoqueued's effect?
^mult is emult right?
what does this mean
Oh, just got another problem now
That should not be allowed
ignore the badge, i deleted that mod to make this
Idk why but it upgrade my thingy when I play my hand and not on final scoring step
Okay so Others is not supposed to go to the base ranks
You would hook Card:set_base to fix that.
I think.
Ugh. I can never understand hooking lol
gah i wasnt pinged hold on ill show you
@sonic cedar there, I pinged you
thanks n
what mean the words underlined in yellow?
insert red circle with arrow
A warning. Hover over it an it'll tell you the reason
(in this case an undeclared global)
How are you appending the info queues
also the_fool is not the key of the card
that's also not how you use the context
You mean you want to give a config to the info_queue?
Could also simplify this pretty heavily and do
return (args and args.suit == 'Other')
end```
when you put it like that yeah i guess itd be just that huh
I think you wouldn't use a center and you would input vars in the table.
Aight. Thanks. Now to figure out what to do with hooking or whatever to make sure none of the Other suits can change ranks to any of the base game ones
ah, this is cus joker stencil updates its values in the update method
it has an empty config by default
that'd normally work for most jokers, but i guess there has to always be an exception
Where i learn how use the context
also this is still funny
this is in fact still funny
ok but
can i
does that make it not possible
No.
oh phew
how can i do it then? is this a within the joker thing or am i gonna have to hook stuff
that is a good question
good thing i asked
oh my goodness a whole link
just to a previous message
oh i missed a ping no wonder
id have to exclude stencil specifically then right
would an if else work here
if you do that you'll have to calculate what the vars passed to the joker would be by yourself
No?
im assuming that i just cant do this and get away with it (thats probably not even how the table works)
the opposite, if it's stencil you do this, otherwise do the normal one
This works for anything that has variables.
and who knows what other jokers do their variables in update
thats what i was saying...
i guess i misinterpreted it
G.vouchers holds the current vouchers redeemed, not all of them
but are you saying just replace the G.P_CENTERS[v] with vars[v]
no, you append { set = 'Joker', key = key, vars = { 1 } } for example
instead of the center
So you don't want to give the joker values of the mimicked joker to the info_queue joker?
G.P_CENTER_POOLS.Voucher
no thats exactly what i wanna do lmao
i just havent worked with infoqueue before
let me throw someyhing together
Then you would do {set = "Joker", key = key, vars = placewherevaluesarelocated}
gotcha
ok so where are the vars usually located
also do i set key = key or do i do something else here
No, where are the values for the mimicked joker on the joker?
key would be the joker key.
i see so many besties in chat rn
im exploding hi dilly
which joker
why explode we've fixed so much smiley face
The mimicked joker?
so i AM doing an if else
No?
toma, just to clarify, you want the normal description of the mimicked joker right
guys isn't there easing for destroying jokers?
SMODS.destroy_cards(card)
im trying to have the description of stencil apply to the mimic's behavior instead of the nonexistent stencil
wdym no.,,,
does this also apply the animation? maybe i should've just tested mb
does your card change the behaviour of stencil in any way
Yes.
no its copying stencil
ok here's what i have right now
do i have to rebuild stencil's effect in the joker and put the variables it uses in the vars table
but no cause then itd only apply stencil's variables 
passing the center as you did previously would take care of most jokers' variables already
I have finally completed my alternate suit art yayyyy (not actually done because I need to make variations for combination Blind effects
you'd just have to make an exception for stencil... and any other joker that has this issue
you have all the information you need to solve the issue RN
go with what you think is right
...which is the if else
For modded jokers you would just do vars = G.P_CENTERS[v]:loc_vars({ability = whereyourestoringthevalues}, {}).vars I think.

what do values mean in this context
When you're copying the jokers where are the jokers values?
im very proud of you you are awesome and cool and rad keep it up
okay folks here's the error im quite sure it's something stupid but help would be greatly appreciated
somewhere in here i think
the effects table stores keys
So you're not storing the jokers values?
no, it's a merge_effects thing
No, I'm the one who provided you with that code.
i know
And I removed the parts that saved values.
mr somethingcom515, appending a center to info_queue already handles its loc_vars
does anyone know how to access the final score of a played hand?
Yes.
hand_chips * mult
Not with custom values.
in the case of stencil
i want the infoqueue to treat ijiraq
as stencil
when it comes to the desc
If Ijiraq was copying Wee Joker and it upgraded do you want the description to say the new values?
yes
otherwise the player wont know how much it gives
make every variable global this will have no effect on your performance
can confirm this had a negative effect on my performance
<--- dumbass
that's a different problem tho, the issue has been joker stencil showing Xnil
Then you would add back everything that saved the jokers values.
anyways hey yall scott the woz here
CENTER.
You need to change G.P_CENTERS.v_voucherKey to voucherKey.
and that
am I wrong @covert hamlet
wtf
@sonic cedar
wrong guy
what
im right here btw
hi tomato
hi tomato
the question
isn't that what local voucherKey = G.P.CENTER_POOLS.Voucher[pseudorandom('seed',1,32)] does
my initial question concerned the nils in general
not just stencil
i only pulled up stencil for the example
in the code
that is a line in the code
Which jokers did you have this nil issue with
local voucher = pseudorandom_element(G.P_CENTER_POOLS.Voucher, "seed")
Card.apply_to_run(nil, voucher)
literally any joker that requires saved values
because im not
saving the
Yes, and it's wrong.
oh okay!
So if it's copying wee joker, does it say +nil chips
what exactly does this do differently
It works.
How do you change the cash into a certain number
ease_dollars((-G.GAME.dollars)+number)
what does this mean
because i quite literally just got the same error
GUYS how do i get the amount of jokers that i have? is it just with SMODS.find_cards()?
#G.jokers.cards
and what is your code now
...let me write a debug function instead
You know you can just set it to j_wee right
thats what im doing
through debugplus
do they have to be in the same function? (in this case the function inside the event) because both of them are clearly there in the code
how would i do it through dp actually so i can recreate
was looking at MF code for hypercam
im confused on this since their config doesnt have any "mult"
No, because you did G.P_CENTERS.voucherkey
mult is a global for the current mult.
why would you need dp, just do eval G.GAME.current_round.fodder = 'j_wee'
or whatever the key is, it didn't fit in screenshot
oh shit okay
because you said i can do it through it
Oh you abbreviated debugplus as dp
i was applying the entire pool lmao okay i saw it thanks
I tried do something same observatory but in joker, but i dont understand what fill in "other_consumable"
It's context.other_consumeable
minor local thunk spelling mistake
but now the joker doesn't do anything, how do I make it detect the cards of 'the fool' in the consumables area?
context.other_consumeable.config.center.key == "c_fool"
What's the context for the joker being destroyed
Also remove the hand_type one.
worse
but that's because i forgot to revert my infoqueue code
The remove_from_deck function.
Oh yeah
context.card_added
and context.card.ability.set == "Joker"
yeah, you didn't setup the vars, but it doesn't say nil
wee doesnt use update
i swear something is wrong with my vsc man
i made you do all that just to prove this statement was wrong
im going to prove my foot up your ass
not all contexts are properly documented
this one should be in the wiki tho
No, it's just that context.card_added is never referenced directly.
okay it's back to doing absolutely nothing
ah, i see - thank you very much
somecom do you still have the patch with the value saving
Yes.
i just realized i gotta add context.forcetrigger to every one of my jokers for true compat
:despair
Is alive 😭
can you send
Why aren't you using DebugPlus to spawn the joker?
I have the mod but I don't understand how jokers spawn.
bro was struggling
You go into the collection and you hover over a joker and you press 3
Thanks
you can also hold TAB to see all the keybinds :D
I know, but i dont speak de languaje so i got very confued

You would access the values by doing G.GAME.quantum_saved_values[card.sort_id][key]
oh my god wait i literally have this saved in like the back of the shelf
it's this one
Yes, that is the old function.
yeah no after some tests (and changing some things) i can safely assure you that instead of crashing it now does nothing
I'm super new to modding, how do you destroy a certain card?
Code?
oh right thanks
You're missing a seed on pseudorandom_element
second
key would be v here.
oh still v ok
gotcha
otherwise good?
Perhaps.
gulp
Are you testing on a modded joker?
well yeah that's why i had the other one but then i changed it to the one you pinged
remember he uses a fodder joker
as his costume
and we had to make him store the values
idk it was a while ago you might not remember
but yeah it's the costume disguised as wee
that's
that's literally what i have
which is also where it's crashing
the only joker at the time in the table is wee
Yes, Wee Joker is not a modded joker.
so do i
if else
for whether the joker
is modded

No, you use if G.P_CENTERS[v].loc_vars
would this do the trick?
Yes.
cool because it's not doing anything
again
used two of them right now and look at how many vouchers i got
Is card.ability.extra.vouchers a number greater than 0?
Perhaps.
yeah! it's 1
Have you tried removing the event?
Yes, you need to try with modded jokers.
how would i check for stickers on a joker?
if card.ability.modprefix_key
You need to try with modded jokers that have loc_vars
would card.ability.eternal do it?
Yes.
tysmm
it has
locvars
yes, nothing happened
one sec, does G.GAME.rageEffects contain the keys, not the centers?
yes 
as i mentioned earlier 
Are you saving the file?
yes
So what does ijiraq mean
Ill be honest I just thought of Iraq
Google says its a creature of Inuit mythology and folklore which is cool
cryptid
i forgot to fix my 1 joker today 🪦
A tomorrow problem
(Thats what I tell myself since I did literally 0 things for my mod today)
true
not literal cryptid, it's a cryptid from some mythology idr which
"mitology" killing myself
Oh, interesting
Modding dev is so sleepy rn...
right? been searching this chat for answers. not sure if I want to ask anything yet.
Usually this chat is fairly active at my late hours, its only nearing 1 am
Ive been trying to sleep for the last couple of hours to no avail anyway lmfao
Its alright, my bestie something here will surely hit me with a frying pan or something
He's pretty helpful like that
Making one currently
Its almost done with the large exception of my artists taking their sweet time
Otherwise I chat here and help where I can
Much appreciated:D
If you wanna try some cool people's mods you have bepis who made balatro star rail, N who made joyous spring
Ice who made balatro goes kino
I have some cool combo and we'll balanced ideas for jokers and spectral cards. If some Wana add them to there mod then I can share these ideas (don't need any credits or something). Just let me play these ideas once they finished.
i have not seen those yet. ill definitely have a look.
Oh yea something here has seals on everything? I think it is
Or is it still seals on jokers?
Which as it sounds puts seals everywhere
It's called Seals On Everything but it does a lot more than that.
Forgive me my friend
how do i comment code?
-- This is a comment
--G.PROFILES[G.SETTINGS.profile].career_stats
haha ok
what did i do wrong?
and also, any ideas of what careers info are default on balatro? or where to find it?
ill comment the code
Cheers. Legend
I have some cool combo and we'll balanced ideas for jokers and spectral cards. If some Wana add them to there mod then I can share these ideas (don't need any credits or something). Just let me play these ideas once they finished.
If you want to create a multi-line code block, you can do so by wrapping your text in this with those dashes and itll look like this
calculate = function(self, card, context)
the dashes work for comments in your ide
return G.PROFILES[G.SETTINGS.profile].career_stats[args.statname] >= 300
AMAZING. you are a legend
you did it! good job
well, you awnsered my question anyway. so thanks
if you havent already some good resources to use are vanilla remade, obviously the smods wiki, and the starter pack
links are:
starter pack: https://discord.com/channels/1116389027176787968/1349064230825103441
wiki: https://github.com/Steamodded/smods/wiki
vanilla remade: https://github.com/nh6574/VanillaRemade
as well as this chat where some very smart people reside, something is one of the best helpers here imo =]
ill check it out. i feel like the card im trying to make is more than i can handle
its alright to start small, make some less ambitious cards and work your way up
and no questions here are stupid questions, we all started somewhere
Also mine whenever I finish it in two weeks
<--------- she also said this two weeks ago
No because I gotta copy paste your whole mod into mine and then they can play mine instead of yours 
Anyway I just received international femboy drugs or whatever so I'm yay!!!! Happy!!!!!!
It's liquid in a glass container so might not go well
Glass was actually made to be safe in your digestive system
hey everyone
how would i make my consumable set look unique
right now it just looks kinda like a palette swapped tarot set
I would say it looks pretty unique as it stands though if I had to say anything specific, probably doing some alternative to the screentone for background texture?
Since the default Tarots use them?
i should probably try to make a unique border
is there a way to FULLY override a card? like ankh, i've been trying to just remove what it does
for a specific deck**
Yeah the frame is gonna make a big difference in addition to the color
wtf arcade
Here's a stupid initial idea:
this looks realy pretty omg
you might want to patch the code
what kind of arcade
The letter at the top and the name at the bottom, why not make them tabs that kinda poke out the sides of the card? Let me make a mockup to describe what I mean
Yes.
timezon arcad
i wish i could play maimai right now
how to?? it seems like the original card's code takes priority over what i take ownership of
you'll have to patch the game's code
You would take ownership of it and either make its can_use return false or make its use function do nothing.
let me see if this works
for jokers it didn't work before for some reason
maybe i did something wrong
It should be returning if you have any of those functions.
So it doesn't get to the vanilla versions.
i could try this
Depending on how tall the tabs are it could unfortunately obscure some of the existing art however, so up to you
omg wait true... i never did this before
i do like the offset
i'll go test it
You could also do a fun depth effect where the top tab is long enough to be overlayed by the figure while the bottom tab still overlayed in front
-# I'm also adding maimai jokers because
Won't work for all of them ovs, not the ones that don't have cleared central figures or objects
i could
Hi, i'm making a joker that generates metal face cards using the marble joker as a base.
but like that takes effort
Very true
YES THIS WORKS thank you so very much
i already want it to shift colour
but i dont understand what put here
randomly
OwO how so?
i think you put Playing Cards there
"Playing Card"
yeah that
Oh no I know but how do they shift?
i want it to cycle between a few colours
definitely won't just be pride flag colours in disguise
do i just hook this up to the calculate code orrrr
And you would put rank = pseudorandom_element({"King", "Queen", "Jack"}, "seed")
Code?
here
Remove the left and right most "s
No.
I mean the ones on this segment.
Yes, No.
set would be "Playing Card" and rank would be not in set
SMODS.create_card{set = "Playing Card", rank = pseudorandom(...
AHHHH
i gonna try
according to the error mensaje and de program here is the error
expect near "King
SMODS.create_card { set = "Base", enhancement = "m_stone", area = G.discard, rank = pseudorandom_element({"King", "Queen", "Jack"}, "seed") }
at this point I'm crying inside
you at least have syntax highlighting
it probably takes a while but you can just tell by how they look what's wrong sometimes
Ohhh, thank you very much
now is working
while the mensaje say error
Whait a minute
i gonna send a video
Ignore the noises
i watch videos while i work
What's the problem?
In the menssage during the card is added
k_plus_face_steel doesn't exist
Oh, then what is the variable
No, you don't localize it.
You do message = "+1 Steel"
So, should I remove the part about 'localize' or remove the entire message?
Oh, sorry, sorry
Thank you very much
and thank you for your patience with me
i've been overthinking this, can i just do ```lua
if not v.eternal then
end
or is there
something different i should be thinking of
No, it's pairs(G.jokers.cards) also it's v.ability.eternal
ooh, alright thankies
Nowadays you should be using SMODS.is_eternal() instead I think
Is there an simpler way to check when a sticker is applied or do I have to hook every apply function?
Probably the latter unfortunately, since stickers are a lot less supported
Get everybody to use Card:add_sticker
hi eremel
how do you mess with card sell value
Hook Card:set_cost
hi
I think I just call “blueprint effect on the most recent card bought” balanced at uncommon, that’s probably fine yeah?
Can game it with packs but ultimately you’re going to have to buy more jokers some time
Hai fox
does anyone know how to make values for a seal scale? the card.ability.seal (witch is a copy of the seals config) seems to clear, im not quite sure and not very experienced ;-;
Yes.
could i pretty please have an example of how?
card.ability.seal.value = card.ability.seal.value + number
ah
and how would i make that update for the tooltip / loc_vars? id doesnt apear to be updating, or ive done something wrong
You return {vars = {card.ability.seal.value}}
im doing that, but it doesnt apear to be updating? i feel like im missing something incredibly obvious,,,
how can i replace all of 1 letter in a string into another letter
(urgent, nxkoo will kill me soon)
https://www.lua.org/pil/20.html, then use format or something?
how do you make it so that you pull cards in booster packs intead of using them
Booster have a field called can_select I think? Check the SMODS wiki
ok
select_card is what it’s called
Or its consumable idr
Is is possible to recreate __len in the version of Lua that Balatro uses?
Is this a good joker?
at least for vanilla
It's just unpack
ohhh
Balatro uses Lua 5.1 where it still uses unpack
lsp lied to me
It thinks you're using new Lua.
probably
Hey! Is there any way to add new small and big blinds through SMODS?
check Ortalab code
Thanks mate
Coming soon to smods
Never mind, it seems to just work now, also it seems to also not work for what I'm using it for.
what i have to use instead of context.consumeable.key it makes a random planet card
Just have only set = 'Planet'.
i dont want to make random planet i wanna make planet that used
but because of idk what it makes random planet
What about just keeping key?
i found it but now i've a new problem
because of using last planet key it make's last planet(before this planet now i used)
i think a little delay can fix it
what is the area of the shop
G.shop_jokers, G.shop_vouchers and G.shop_booster
thanks
Remove center also it's context.consumeable.config.center.key
why is vouchers plural despite there only being one of them
and why is booster singular despite there being two of them
booster packs without the packs ig? also there can be more than one voucher there
New UI mod by me incoming??
i understand balatro ui better than this code tbh
if context.ending_shop and card.ability.active and not context.blueprint then
local current_dollars = G.GAME.dollars
G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + current_dollars * (card.ability.extra.multiplier - 1)
return {
dollars = current_dollars * (card.ability.extra.multiplier - 1),
message = "LOCK THE FUCK IN!",
colour = G.C.MONEY,
message_card = card,
func = function()
G.E_MANAGER:add_event(Event({
func = function()
G.GAME.dollar_buffer = 0
return true
end
}))
end
}
end
end,
causes a talisman incompat somehow
where should i wrap to_big
Log?
hold on
fixed it myself, now i have a new problem on this
calculate = function(self, card, context)
if (context.joker_main) then
local hand = G.GAME.current_round.current_hand
local hand_score = get_numeric(hand.chips) * get_numeric(hand.mult)
local blind = get_numeric(G.GAME.blind.chips)
print("hand_score:", hand_score, "blind:", blind)
if hand_score >= blind then
ease_dollars(card.ability.extra.dollars)
return {
message = "$" .. card.ability.extra.dollars,
colour = G.C.MONEY,
}
elseif pseudorandom("BAZINGA!") < G.GAME.probabilities.normal / 6 then
return {
message = "WRONG!",
mult = - -math.huge,
colour = G.C.DARK_EDITION,
}
end
end
end,
so basically you removed the defining of fields?
-# what i mean by this is removing config = , n = , nodes =
It's only beginning of course
Yes, get_numeric doesn't exist.
fuck
isn't - -math.huge just instant win? because of the double negation
and if it was meant as a single negation then its an instant loss
why is there a print("hand_score:", hand_score, "blind:", blind)
probably debugging
^
so like
just -math.huge?
that just throws your run no?
you should probably switch to the new probability system of smods
i am on it
instead of
pseudorandom("BAZINGA!") < G.GAME.probabilities.normal / 6 you do
SMODS.pseudorandom_probability(card, "BAZINGA!", 1, 6, "identifier)
What is the goal?
give you $25 if your score exceeded the requirements, has 1 in 6 chances to set your score to false infinite
So it's just a delayed loss?
What about this?
somewhat yeah
it just punishes you for being greedy by keeping the joker
why not just make the player instantly lose instead
-# anticlimatic dont you think
I'm not sure but isn't white text color G.C.UI.TEXT_LIGHT ?
I'm also upset about local C = SUI.R()
More than easy I guess
It was simple one, harder thing - attach some callbacks, control states
wdym??
return {
vars = { card.ability.extra.xmult, card.ability.extra.xmult_mod }
}
end,```
where do i move this into in the localization file
anyone experienced in love getTime
loc_vars = function(self, card, context) vs loc_vars = function(self, info_queue, card)
misc.dictionary.b_key_cards
misc.labels.key
descriptions.Other.undiscovered_key
at least thats what i have in vremade
calculate = function(self, card, context)
if context.skipping_booster and not context.blueprint and
context.booster and context.booster.config.center.kind == "Celestial" then
card.ability.extra.total_xchips = (card.ability.extra.total_xchips or 0) + card.ability.extra.xchips_per_skip
return {
message = localize{type='variable', key='a_xchips', vars={card.ability.extra.xchips_per_skip}},
colour = G.C.CHIPS,
card = card
}
end
if context.joker_main then
return {
xchips = card.ability.extra.base_xchips + (card.ability.extra.total_xchips or 0)
}
end
end
}
crashes the game somehow
is SMODS.restart_game() stable
thats a thing???
it seems to leave the lovely log up
no mod prefix?
does not work with both
in vanilla it's super funny
yep it was k_raw_key
bump
whats the crash
can you add if context.skipping_booster then print(context.booster) end at the beginning and send me the log
sure
wait like this?
nvm i think i found the issue
oh
sure
replacing which
context.booster.config.center.kind
is there a way to detect when a card retriggers?
Hey! I'm trying to create custom small and big blinds following the same structure as Ortalab. But whenever I select the new blind I keep getting this error:
Oops! The game crashed:
functions/common_events.lua:354: attempt to index field 'boss' (a nil value)
(3) Lua global 'ease_background_colour_blind' at file 'functions/common_events.lua:354'
Any idea?
it works, thanks
I have managed to solve it by setting the boss value to each of them but this makes it so they can appear also as bosses, thing that I don't want
candy cane from cryptid does that, you could try looking at how that does it
will do
i dont think theres a specific context for it though so youll probably have to do some shenanigans
yo folks so like remember yesterday when i was trying to fix the voucher ticket
yeah it's back to doing nothing
here's the code (with the voucher value because it might be important idk). any ideas of what i did wrong?
someone pinged me?
I want to make a joker that is destroyed if the base mult does not improve after the effects of the other jokers or cards, and when the base mult improves, it becomes x3
i tried everything
somebody help me
It’ll be easier to wait for the proper smods functionality than jumping through all the hoops to make it work
@red flower Could you send me the details of that patch to prevent that crash?
it was just a hook like this
i recently removed it because the crash doesnt seem to happen anymore
I fully suspect it happening due to how I've set the cardarea up, somehow, but the details aren't for me to figure out now, haha
Thanks!
I might be stupid but the only thing I can see that triggers the money (a re trigger) is context.other_card.candy_caned, so I'm cluless
okay i looked at it myself and yeah i have no clue what they actually do there
is there a way to check if a certain joker (lets say the leftmost one) triggers? thinking of a joker that gives xmult whenever the leftmost joker triggers as maybe one of the legendaries
context.post_trigger (it's an opt-in optional feature)
wdym by opt in? does that just mean like i need specific lines to make it work earlier
sick ok
just so i get what this code is doing, this gives 2x mult anytime any joker triggers?
oh i didnt read the rest of the code
i was just pointing to the optional feature line
is there anywhere where you can find a list of all the optional smods features?
i found out whats going on
it's redeeming from the pool of the vouchers youve already redeemed
thats supposed to be impossible but here i am with 5 shop slots
and once again, i have NO idea how to fix this
Good schmorning chat
morning!
How are you N
Im still waking up so unsure
But i feel okay ish
I have some cool combo and we'll balanced ideas for jokers and spectral cards(I think so). If some Wana add them to there mod then I can share these ideas (don't need any credits or something). Just let me play these ideas once they finished.
i really hate to be this guy, but youve sent this message alot and it seems nobody has taken your offer
id recommend having a thread or something and if someone agrees there then thats the wave, but just sending the message here all the time has been ineffective
Ok I try this way from now on
Can you tell me how to make a thread please
create_card("Joker", G.jokers, nil, nil, nil, nil, "j_silly_momcard", nil, true, "Negative", "Eternal")
would this create a negative eternal "j_silly_momcard?"
idk but this will SMODS.add_card{ key = "j_silly_momcard", edition = "e_negative", stickers = { "eternal" } }
thanks N'
Is it possible for a custom joker to check what joker is the one on its right? Or the next one sth like that, then can do stuff or not
im only just glancing at this, is this a joker that is meant to redeem a random voucher every round or something?
yes, check what blueprint does
a consumable that redeems a random voucher
Ok thx!
alright give me a second
Cuz up to know ive only checked basic jokers coding and some joker forge for stuff i don’t know but the last one I think can’t check that as a condition
Thx
use = function()
local voucher_key = get_next_voucher_key(true)
local new_card = create_card("Voucher", G.play, nil, nil, nil, nil, voucher_key, nil)
new_card:start_materialize()
new_card.cost = 0
new_card.from_tag = true
new_card:redeem()
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.2,
func = function()
new_card:start_dissolve()
return true
end
}))
end,
put this as your consumable use
hi toma
why was I so happy to see you
cause we are besties and i help u and we watch the moon rise together
did my other fix for the sun work for you
i waited for u to dm me a confirmation or a failure but u never did
Yeah uh things happened yesterday I’ll
cant believe youh isnt here after i gave them what they needed..
does anyone wanna help me out with a new joker
is it possible to apply stickers to playing cards
it's probably very complicated
oops
pretend i didnt forget to set the extra variable
i coiuld consume you
just copy paste what i gave u gosh
that easy
smh my head shaking my head smh
delightful
i will now take over your mod with the malware i have placed hidden in all the things ive done
ggwp
jarvis, explode

yummy info queue
dilly do you want to see what it looks like rn
now whats the problem

youre not gonna know what to do i promise
when you take a soundcloud
I think I gotcha
now trigger it
yes?
im pissed
how can i temporarily disable discarding and playing, in a boss blind.
loc_vars = function (self, info_queue, card)
return{
vars = {
card.ability.extra.mult,
card.area and card.area == G.jokers and "...?" or ""
}
}
end,
generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table)
full_UI_table.name = localize {
type = 'name',
set = "Joker",
key = card.ability and card.ability.extra.new_key or "j_hpfx_take_the_sun",
nodes = {}
}
SMODS.Center.generate_ui(self, info_queue, card, desc_nodes, specific_vars, full_UI_table)
end,
this is everything there
...this is take the sun
oop
right
my b
one sec
loc_vars = function(self, info_queue, card)
return {
vars = {
card.ability.extra.interest,
card.area and card.area == G.jokers and "...?" or ""
}
}
end,
generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table)
full_UI_table.name = localize {
type = 'name',
set = "Joker",
key = card.ability and card.ability.extra.new_key or "j_hpfx_take_the_moon",
nodes = {}
}
SMODS.Center.generate_ui(self, info_queue, card, desc_nodes, specific_vars, full_UI_table)
end,
im not seeing a difference in a quick scan
but its not failing me
wait what are we tlakin about, this turns into it doesnt it
which means it becomes it
im asking for IJIRAQ's info queue
so go to the file
with his name 😭
its
actually was it he or it
loc_vars = function(self, info_queue, card)
for _, v in pairs(G.GAME.raqeffects) do
info_queue[#info_queue + 1] = G.P_CENTERS[v]
end
return {
main_end = main_end,
vars = {
card.ability.extra.jkey
}
}
end,
hm
thank you
i didnt touch this file that i remember
yeah this is the old infoqueue
im trying to have the infoqueue link with ijiraq
so itll actually save values
ex: stencil not being nil
idk how to any o dat cause i be dum
i said you wouldnt know 😭
you dont know what i know
i know my abcs
what about your sets and keys 🎵
i cant even spell those
also cause i was distracted you just paste that into your consumable, nothin else to worry about really
id probably make sure you have your can_use and such
but just plugging that in will work because it worked for me
i cant spell rhyme
you just did
no
yuh huh
i just deleted your github
its voer for you
Are you sure ?

I fucking love you toma
find out in 7
7 what
i think to balance this out though im gonna ahve to say i hate you toma
its only fair
justified
underlined text for smods?
hi eremel
granted it's like triple damage when it comes from you
i like the underline ooo
i was gonna ask if it was possible or planned
i need this
what do you know
im not sure why it invoked this reaction from me, but i wanted to post the tow mater 'i want you' gif in response until i remembered we cant post gifs
we will call it character building
I'm just a wizard guys remember
dilly its a still frame why do you need the gif
how high ont he totem pole as a wizard
we like seeing tow mater talk where im from
dont you dare silence him
i still need to figure out how to do this with multiboxes
just like yugioh,,,,
i love yugioh
---> guy whos never seen or played yugioh
why does it say 1 in 1
other way dilly
what other way

true you are

wtf????
im i being silly why is the shader not showing up in game
SMODS.ConsumableType {
key = 'testies',
shader = 'spectral',
primary_colour = HEX('9013fe'),
secondary_colour = HEX('9013fe'),
collection_rows = { 4, 5 },
shop_rate = 1,
cards = {
['c_mycustom_createcavendishnegative'] = true,
['c_mycustom_createrandom'] = true,
['c_mycustom_createrandomrare'] = true
},
loc_txt = {
name = "testies",
collection = "testies Cards",
}
}
can you also add strikethrough
consumabletypes can have shaders????
yeah I could do strikethrough with this I guess
youve silenced him
i was looking at the grab bag code and they do and i swear ive had it working with consumable types before
ill look into adding more styling options
pretty sure every individual card needs the shader draw code stuff, vanillaremade does so too
u for underline, st for strikethrough?
sure
yea that should make sense
the parameter should be width
no the parameter is colour
oh
aww, i thought it was easy and you could just set the consumable type to have a shader then every consumable with that type gets it
smods team get on this
smods team make my mod, get on it
can you hear him
i mean if its not in vremade maybe its because i didnt know :3
smods mods team, release balatro content update 2025
?
i normally can yes
youre not rotted enough ig
no cause im flourishing
eremel unrelated but are you good enough at infoqueue
what's the problem?
trying to make it use saved values of jokers in its table, the current results in no infoqueue period
forgot to explain the value saving
it's the same thing with how it can copy the abilities, but with stuff like scaling values or updating ones they're saved in this thing here (thanks somecom):
is v definitely a key?
only joker keys get added to the raqeffects table
maybe i spelled something wrong? idk i was doing this with somecom before since he did most of this type of thing with SEALS
but we didnt figure it out so
why not ask a steamodded guy
hmmm
apparently its somethign to do with modded jokers using different things
try removing the loc vars check








