#💻・modding-dev
1 messages · Page 282 of 1
yeah
this would be in my main mod file, not in the joker file yes?
correct
how can i do it so in the text it says how many rounds the card havve left?
i mean you can put it in any file as long as is not inside an object
gotcha
and the normal contexts still apply within in
no
context is not passed to that function but you can still use SMODS.find_card
press tab
tyty
so i can couple this with G.jokers.cards
and check for an ability name
is it time for me to lock in and figure out how to force disable other mod's content while my specific challenge is active?
yeah
isnt it just passing the keys to the restrictions? i think lobcorp does that for other mods
Hi besties
where is the documentation for this stuff
Queens score again after scoring is totaled and carries over, I have no clue what's going wrong
passing which keys?
awesome
the keys for the jokers, consumables, etc
does this not require you to provide the specific key of every single thing? Which I can't do if I don't know what mods people may or may not have downloaded
How do configs work? If I update a mod.config property, does it stay that way permanently, like between turning off and on the game? How would I reset the config then?
maybe I can dynamically add it to the table at runtime based on the list of mods detected?
Why is the game not finding the global variable i made in G.GAME via lovly patch
shouldnt this return a table with the joker thats in my possession?
i think it doesnt care if you dont have it, but if not then you can do a check to see if the mod is loaded and add it
j_csmr_edgard
thank you
what did i do wrong here?
i feel like my mod devloping is going pretty good
∴⍑ᔑℸ ̣ ℸ ̣ ⍑ᒷ ⎓ꖎ⚍𝙹∷╎↸ᒷ
the intention is to disable all modded content that isn't my own for the specific challenge
okay this works, how do i check if the count is > 0 for this
#SMODS.find_Card() > 0
?
hmm then you might need to do it dynamically yeah
but i feel like thats a bit of a fool's errand because mods can add other stuff outside of objects lol
yes, or next(SMODS.find_card("key")) is a bit more efficient
he can check for consumables and jokers that come from outside his mod and disable those specifically right
fair point
so it would be if next(SMODS.find_card("key")) > 0 then
you coul make is so the challenge only works if it is the only mod running
awesome
without the > 0
oh cool
whhat is wrong here?
what are you trying to do
Not card.ability.extra, one of the variables you set in the config = {extra = {}} table, you just prefix it with card.ability.extra.yourvariablehere
its card.ability.extra.(name of variable in configs table here)
i feel like it would be easier to make it so that only your cards spawn in the shop instead
I was using card.ability.extra. as a placeholder because I thought you were aware of how card variables work
by patching create_card or get_current_pool
in configs table i only have "h_x_mult = 3"
a card that after 3 times being triggered is destroyed
local set_base_balatro = Card.set_base
Card.set_base = function(self, card, initial)
if next(SMODS.find_card('j_csmr_tensoon')) then
local tensoon = SMODS.find_card('j_csmr_tensoon')
tensoon.ability.extra.mult = tensoon.ability.extra.mult + tensoon.ability.extra.mult_mod
end
local ret = set_base_balatro(self, card, initial)
return ret
end
would this work, the local tensoon = SMODS.find_card('j_csmr_tensoon') part
What's the best place to put some kind of globally updating or random variable?
Make a new variable that stores the card uses in the config = {extra = {here}} table
Sorry, to clarify, I need an update loop independent of any jokers
then i use this variable intead of card.ability.extra right?
that would probably be the best way to do it. I'd been messing around with hooking get_current_pool() and trying to remove anything that didn't have my mod's key, so I might keep trying to figure out if that's the way to do it or if there's a better implementation
If you don't have an extra = {here} table then make it in the config table
Add .yourvariablehere at the end of card.ability.extra
would this not remove base game content?
no, SMODS.find_card('j_csmr_tensoon') is a list so you need to iterate through it
also I think it's more convenient if you make a context and then check on those jokers calculate
SMODS.calculate_context{csmr_changed_base = true, card = self}
anything that doesn't have my mod's key, or doesn't appear in the base game*
like that?
thats what i did initially for the config option i had to remove all other jokers except my mod's
Set uses to zero, it isn't currently a number, so it'll try to add 1 to nil and crash
So it'd be {uses = 0}
ooh okok
you can create contexts? sorry ik im asking a bunch of questions here
how does one do that now
and then i take out that "card.ability.extra.uses = 0"?
Also, remove the curly brackets on the card.ability.extra.uses = {card.ability.extra.uses + 1}
like i wrote in that message
okok
you can just initiate it as 3 then reduce it
oh cool i thought id have to define it somewhere else first
If you kept the card.ability.extra.uses = 0 then it would constantly be resetting itself to zero any time the game calculates anything
oh okok, ty!
my first joker
Duck star
yes
how would i do that?
oh just change from + to - ofc
config = {extra = {uses = 3}}
card.ability.extra.uses = card.ability.extra.uses - 1
any feedback on it?
if card.ability.extra.uses == 0 then
card:remove()
end
do you also know how i can make the uses show up in the text?
Looks pretty damn good, especially the planet below
thats so cool!!
Add card.ability.extra.uses to the loc_vars return table, and then use #1# in the description to show that variable in text
ty ty :3
wait i dont have a loc_vars in here, do i just add itt under the loc_txt?
So i use this where my comment is?
local set_base_balatro = Card.set_base
Card.set_base = function(self, card, initial)
if next(SMODS.find_card('j_csmr_tensoon')) then
--Need to increment the mult here by mult_mod that exists within the joker's ability.extra.mult_mod
end
local ret = set_base_balatro(self, card, initial)
return ret
end
loc_vars should look like this underneath the config line
oh okok, ty!
But replace card.ability.extra.mult with card.ability.extra.uses
if im putting custom sounds in do i just need SMODS.Sound:register_global() in my main lua or is there more i have to do to set it up?
apparently, get_current_pool() does not apply to booster packs
To show the held mult you can also add card.ability.h_x_mult to the vars table and then show that with #2# if it's the second variable
oh i was using {X:mult,C:white}X2{} mult
oh i get it, so i set the context to true and then check for if context.csmr_change_base in my joker right?
it handles tags, vouchers, jokers, planets, tarots, spectrals, seals
@red flower
I'd make it a variable so that it's compatible with modded jokers that can increase card values
Or if you wanna somehow modify the card as it degrades in uses you could do that
Hell maybe even upgrade it with uses
oooh thats true
I need get_pack() it seems
like that?
should i make the same for odds of something?
Is this how i would it? or would i put the mult mod in an update function within the joker?
how do i code a variable that can be tracked between context.before and context.joker_main? i have a condition in before that if returned it want it to score in jokermain
i would post code but im on break at work lol
you dont need to check for your joker in the hook
and you dont need calculate_context in your joker
that would probably cause an infinite loop
okay i removed the joker check in hook but how would i add the mult_mod in my joker?
just store it in the ability table and clear it after you use it
what you did was correct except for the calculate_context line
i dont have to set the context to false anymore?
could you pseudocode or break this down for me lol i am just a baby at this
I managed to change background music based on current deck using SMODS.Sound, but how would I got about changing background color as well? I don't need to change the shader effect, I just need to be able to change the color based on current deck. As far as I know you can use ease_background_colour on SMODS.Booster, but I'm not sure how to apply that to decks.
you could do smth like this to set them up outside the calculate
No, don't put the variables in parenthesis, put a comma between them
if thats what you are talking about
That's not how tables work in lua
@rapid stag Hey I almost got it working
oh okok
just so i understand this correctly for future
*Game event when suit or rank changes
*My context is set to true
*My joker automatically updates (but it doesnt need to be in update instead of calculate
*my context is automatically set to false until the game event where suit or rank changes?
if context.before then
card.ability.extra.active = true
end
if context.joker_main and card.ability.extra.active then
card.ability.extra.active = false
end
so vars = card.ability.extra.variable
?
I just need to figure out how to get it to not trigger on played cards
tysm!!!!!!!!!
vars = {variable1, variable2, variable3, etc...}
i see 
okok, ty!
the way calculate context works is that it calls all the calculate functions with what's inside that table, the table gets deleted after it's done so you don't have to set it to false or anything
Does anyone know how you would communicate between a lovely patch and the smods code? i.e. I have a psuedorandom condition in a lovely patch and want to know when that corresponding code runs so I can have the joker do something else if it ran?
inside what table exactly, since i havent passed any table in "SMODS.calculate_context{csmr_changed_base = true, card = self}"
{csmr_changed_base = true, card = self} is a table
Odds should be listed like this, and should be calculated like this
so it automatically goes to whichever calculate funtion calls upon that context checking whether its true?
oh okok, ty
it goes to all of them, it's just that the rest ignore it unless they have the check or they are coded wrong
gotcha okay so as long as my others dont use that context they wont trigger randomaly
okay this helps, thanks a lot!
How can i get the numbers of cards in hand in calculate
you can have a context run when the check passes
in the (G.GAME.probabilities.normal or 1), this 1 should be changed depending of the odd or?
Sorry, could you elaborate a bit more on this? What does "having a context run" look like/mean in this scenario?
G.GAME.probabilities.normal is just the 1 you see in every odds card, and it turns into a 2 if you have Oops All 6s, so the 1 in code is just there in case the game can't find the G.GAME.probabilities.normal variable, your odds should be the odds variable inside the extra table
can this break the main file from loading in?
okok, ty!
SMODS.calculate_context{name_of_your_context = true}
and then in you joker you check for context.name_of_your_context
does this imply it can be a custom context that is defined on the spot?
yes
I see, thank you!
i usually give my contexts my mod's prefix so they dont conflict with other mods tho
Anyone happen to know how to get the card object an SMODS seal is on?
I've hooked out modded booster packs for my challenge now 🫡
if G.GAME.challenge == "c_reverse_trial" then
local ret = pack_hook(_key, _type)
while ret.mod do
if ret.mod.id ~= "reverse_tarot" then
print(ret.mod.id)
ret = pack_hook(_key, _type)
else
break
end
end
else
ret = pack_hook(_key, _type)
end
return ret
end```
okay its definitely my hook thats crashing the game on launch, like it starts for a second then crashed
return ret won't be able to access the local ret = pack_hook(_key, _type) because it's one condition deeper than the return and thus the variable isn't defined
although idk what could be causing it
yk you're right I forgot about scope. I tested this before adding the challenge conditional
so, i changed everything to be like this and
whats the crash log
second image here
i commented out my hook and tried to launch the game and it worked but obviously will not update the mult mod for my joker
@red flower
The actual function should not have self, only the ret variable
okay let me try
That's how I have it set up
it should because it doesn't have :
nope still
im thinking the error is on the extra = {uses = 3}
Please post a screenshot of where that is
do a check for
if G.hand then
SMODS.calculate_context...
end
within the hook?
i think its because of the cards in the title screen
yes
ahhhh
the error was in the line with the return { vars = {card.ability.extra.h_x_mult, (G.GAME.probabilities.normal or 1), card.ability.extra.odds}}
odds is an extra variable
ooh, so extra = {odds = 3}?
It should not be in config = {here}, it should be in config = {extra = {here}}
Notice that you're referencing card.ability.extra.odds but you didn't put odds in the extra table, so it's not in card.ability.extra.odds
That's where the game gets confused
What's on line 407?
You have two periods at the end of it
no thats just when i press backspace and type nothing it shows up for some reason
but id doesnt affect in the code, there are some in different places and nothing happenes
Also what are you doing here? You need an end for the first if statement
You only have an end for the second one
thought it was 1 end for both
No, those are two separate statements
yeah thats just telling you you have trailing whitespace
Also you need to put the context.ability.extra.uses if statement inside of the context.main_scoring and context.cardarea == G.hand if statement
i still get the crash after adding the end
oh okok
That's not the crash problem specifically but it would crash if you didn't fix that part too
Is the crash actually referencing the lua file you're currently in?
so if context.main_scoring and context.cardarea and context.ability.extra.uses?
I'm trying to render a sprite on playing cards whenever you have a specific joker, does anyone know a mod that does something similar I could look at?
yeah i only have that file yet
No
then how?
Does it actually say your lua file in the crash screen?
yeah
Alright, just making sure
how do i do it?
Okay I'm actually getting annoyed at this point, please go take a crash course on how lua works
okay this worked but now for some reason it added 384 mult when i used strength 💀
Put in a print to see how many times it's triggering the context
how come when i try to access a card's ability.seal values in the seal's loc_vars, it returns the default values from the config? is there a way to access its actual values?
lol maybe it's called in more places than i thought it was
okay i think at the start of the game
it calls the hand thing
which is what causes the mult to be increased
i think i can just add another condition
to see if a run is ongoing
maybe that will fix
yeah it probably calls it when setting up the deck
For some reason I'm getting crashes trying to view editions in the collection?
what should I use to increase the sell value of a joker? I wanted to copy the code from Egg but I can't seem to make it work
I've removed all functions from it
Not the problem I'm used to then
My DebugPlus is also crashing whenever I try to manually discover an edition
But not if the edition has been discovered by other means
context.using_consumeable using this in joker should fix it i think?
let me try
same
its a few types of things that dont work
editions is one of them
nvm this makes it so it didnt even trigger
transgender woman on my screen
for seals, the card argument in loc_vars is a fake card made using the config data, is there any way to access the actual card's current data?
anyone know how custom sounds work? i've tried looking at the documentation but it keeps saying the sound doesn't exist in the default file (bc it doesn't)
Ooc how hard 1-10 is a balatro mod to make? I just had an AMAZING idea for a mod but idk what to expect. Ive coded games before, done minecraft, terraria, and and ror2 mods for reference.
lua is confuzzling
i'd say its fairly easy to pick up and make smth simple, just takes time to learn more complicated stuff bc the documentation isnt that extensive
in some areas its super simple, in others it makes you want to tear your hair out in why is this simple concept so complicated to implement
real
Ahhh yikes the idea I had was super complicated 
whats ur idea
i mean i have an idea for a mod but im lazymaxxing
Co-op mod.
multiplayer mod exists, so theres a possibility there
Theres a multiplayer race mod to my knowledge
but Co-op is much funnier
context.hand_drawn does this context get triggered even when you open an arcana pack?
love the Ace of Standard Packs!
can someone tell me what to change here pls?
i really should stop define from working on playing cards but i wanna make this work cause its so funny
define fyi:
well I don't know what I'm doing wrong but it's definitely wrong, the game crashes with "attempt to index field 'ability' (a nil value)"
you need to set up the variable, lemme send my whole thing so you have an example
did you add it to ability?
should be in ability.extra
Hello, I'm very new to modding as a whole, and am currently trying my hand at modding balatro. How would I make a joker that turns played face cards into stone, and one that turns stone cards into random face cards?
if you remove the first message = localize('k_again_ex'), you run into my problem where it does the message and then the two triggers
so i think we're approaching this from slightly the wrong angle since there's clearly a message = localize('k_again_ex') somewhere in the pipeline that we're not looking at
bump
okay so it adds 194 mult per consumable that is added to consumable slot
yeah I'm really not sure what exactly I'm getting wrong here
What obscure reference should i turn into a joker next
actually its a random value everytime
great art
dont need the config in there because of how you are doing it
mb forgot to reply
dont need the config in there bc of how you are doing it and use card instead of self on the self.ability parts
oh my god it was that simple 😭 thank you, it works now
bump
Im hatsune miku
sekaaaaai
smh another gay woman on balatro discord
cant be enough of us
the propagation
Well there are a lot of trans women who like code
So a place like this is bound to contain a good few
we will take over the server
national geographic stuff
what the fluoride
local set_base_balatro = Card.set_base
Card.set_base = function(self, card, initial)
local ret = set_base_balatro(self, card, initial)
if G.hand then
SMODS.calculate_context{csmr_changed_base = true, card = self}
end
return ret
end
does anyone know why G.hand is being called when a consumable card goes into your consumable area? I want this to only trigger when a rank or suit is changed (but also not trigger twice if both are changed)
would it be a bad idea to patch generate_card_ui to include the card's actual data for tooltips instead of the fake table?
wait why are there two scholars on the vanilla joker sheet
is my shit fucked up or is that how it always is
how do you lovely patch another mod?
I know this has been asked 1 million times but have there been successful patches/mods made that have the fabled "mult hiker" (permanent mult added to card)
scholar
EVIL scholar
Is this a good plays to ask for balance help? or would that be a different channel
I would probably go here https://discord.com/channels/1116389027176787968/1209506360987877408
How do I make enhancements trigger when other cards score? I want an enhanced card to gain X0.5 mult whenever another card is scored in a hand
to the best of my understanding, I believe this successfully removes modded jokers and consumeables (other than my own) from the shop
function get_current_pool(_type, _rarity, _legendary, _append)
local pool, pool_key = pool_hook(_type, _rarity, _legendary, _append)
if G.GAME.challenge == "c_reverse_trial" then
local pool_holder = ""
for k, v in ipairs(pool) do
if pool_holder == "" then
if G.P_CENTERS[v] then
pool_holder = "P_CENTERS"
elseif G.P_TAGS[v] then
pool_holder = "P_TAGS"
end
end
if pool_holder ~= "" then
if G[pool_holder][v] then
if G[pool_holder][v].mod and G[pool_holder][v].mod.id ~= "reverse_tarot" then
pool[k] = "UNAVAILABLE"
end
end
end
end
end
local valid = false
for k, v in ipairs(pool) do
if v ~= "UNAVAILABLE" then valid = true break end
end
if not valid then --failsafe if pool has no eligible members?
return get_current_pool("Tarot", _rarity, _legendary, _append)
end
return pool, pool_key
end```
i see
where is the deck code located
is there something wrong in here? its crashing the game in line 20 (the "vars" one
target = '''=[SMODS [TARGET MOD ID HERE (If it's Steamodded itself, do _ instead)] "[TARGET SCRIPT FILEPATH HERE]"]'''
It's not do return end it's just return
oh, didnt even see that, tyty
Also it's not return() it's return {}
And it's not p_dollars it's card.ability.extra.p_dollars
Also you need to put p_dollars into the extra table
You should also replace 'lucky' with a different identifier specifically for the joker / enhancement
in the "return" part right?
Also you do return {dollars = card.ability.extra.p_dollars} not return {p_dollars == 20}, you also you == to test if statement conditions, not to set variables, that's just a single =
Again, you should go watch / read a crash course on lua
god i did do a lot wrong
This is why I'm suggesting that, you are getting basic syntax completely wrong without even knowing it
Nothing will work if you don't know the very fundumentals of lua, we aren't here to teach you how lua coding works, we're here to help you with Balatro coding
Also bump
no yeah so far everything was turning out ok and working just now things started going bad, i was doing things right most of the time
okay, so i finished(probably not) the code and art for my joker, i did the .lua file, and the .json file, but it's not showing up in Balatro. the collection doesn't include the joker and the Mods tab doesn't show any mods installed. Is there something wrong with my .json file?
Are you on the most recent version of SMODS?
i mean maybe? all my other mods were working fine, i just moved them all(sans SMODS) out of the mods folder to test mine
Well those mods are made for that version of SMODS
If you're on an older version you may have to use the header instead of the json
okay, lemme try that, will report back
This is what a header looks like, your mod won't even register otherwise
can anyone tell me why the joker isn't scoring or costing money?
It's just chips not chip_mod, and it's dollars not money_mod
ohh okay, so if i install the newest version of SMODS it should work though?
mult_mod is the only one that uses _mod
also, for the Event, it's func instead of mock
when i put a single = i get 7 errors
It should, you may have to update all of your other installed mods
What are the errors?
most "should use == for equal"
If you do == it treats it as a condition instead of setting a variable, so it'll return true or false
is it the 1.0.0 beta (0323b)?
Whichever one is the most recent, I don't know which one specifically
oh okay
then what should i do? if i use only 1 get errors, if i use 2 it wont work
i just wanted to make sure it was supposed to say beta
change the parentheses () to braces {}
Send a screenshot of your code please
its already braces
You don't put card.ability.extra. into the extra table
It's trying to reference itself
And if it doesn't exist, it can't do that
The card.ability.extra. is referencing the value inside the config = {extra = {}} table
thank you @heady siren @marble flint could you explain why it only scores the chips?
so its config = {extra = {p_dollars = 20}}
try mult instead of mult_mod?
Yes, like I said a while ago
I believe mult will set the mult instead of add to it, but you can try that
mult, h_mult, and mult_mod should all do the same thing (except mult_mod doesn't automatically add the message)
i got the new version of SMODS installed but it still isn't showing up. could i put my .json file here so you can check and make sure i did it right?
that worked! thank you, weird since the example mods had mult_mod but I appreciate it
does mult_mod work just without showing the popup/message? just out of curiosity
Ah, that's the problem, it was adding mult, it just wasn't showing the message
So it didn't look like it was adding the mult
Ill do a quick check
I forgot that I added the message manually
seems I actually want to use Message instead of teh event manager as well
@regal wolf the bu language mod doesn't work with smods so i slapped this together so i can use it, idk what you want to do with it
Want "Dunce!" to pop up below the card when exiting a shop lol
2 questions
what is m_wild and what is context.other_card.gambling
brah
oh cola
the person im looking for
in extra credit mod there is a joker called luck 7 that makes 7 act as lucky cards
im trying to do that with queens but make them wild
thats quantum enhancement
haven't used it before though, u can try referencing their code
bump
question about how consumables behave when they are added to your card area^
what is a quantum enhancment mean?
allowing cards to "have" another enhancement
so like, you can technically get a card with all enhancement in the game
so they either do or dont have the enhanment until observed
well
scored in this case
im not messing with thatither
its documented
yeah but thats vague
welcome to the smods docs
doesn't really tell u how to apply enhancement now does it
i will argue that most of them do a pretty good job 😭
true
curse you 
which brings me to bumping this again
how would you create a random spectral card?
i accidentaly have overwrite all my code, i went from 380 lines to 70
is there a way to undo it?
ahh...
SMODS.add_card({key='Spectral'})
okay I think I'm close here attempting to have "Dunce!" appear below the card upon the trigger message appears to use variables in the source code so I tried building a string to call but get "Error" instead of the intended text I also tried directly entering a string into the message and that didn't work either can anyone tell me what I'm doing wrong?
anyone got docs for how the joker return works
localize () look at a file in your localization folder
???
So if I remove localize it should function as intended?
undo you overwriting your code?
yes
just ctrl z idk
already tried
say goodbye to your work then unless you have a version history
im not remaking everything, i give up modding
just do
message = "Dunce!"
message_card = cardyouwantthemessagetoappearon
^it puts the message on the joker by default
does anyone know how to get rid of the floating copy of the sprite?
the one that isn't tilting with the card

Thats actually what I wanted, Thank you!
balatro font coding what in the heck
yes
You can just put a string as the message, localize takes from your localization file (if you have one) and displays ERROR if it can't find anything
can someone help me with somethign quick? i don't think im using patches correctly. here is the patch for a voucher that i want to create
[[patches]]
[patches.pattern]
target = 'card.lua'
pattern = 'local seal_rate = 10'
position = "at"
match_indent = true
payload = '''
local seal_rate = 10
if G.GAME.used_vouchers and G.GAME.used_vouchers["v_rob_seal_the_deal"] then
print("Voucher active:", G.GAME.used_vouchers['v_rob_seal_the_deal'])
seal_rate = seal_rate * SMODS.Centers["v_rob_seal_the_deal"].config.extra
end
print("Seal Rate:", seal_rate)
'''
this is the voucher:
SMODS.Voucher{
key = "seal_the_deal",
loc_txt = {
name = "Seal the Deal",
text = {
"Cards with {C:attention}Seals{} appear",
"{C:attention}#1#X{} more frequently",
"in all card packs"
}
},
atlas = 'Vouchers',
pos = {x = 0, y = 0},
cost = 10,
config = {
extra = 5
},
loc_vars = function(self, info_queue)
return {vars = {self.config.extra}}
end
}
why don't i get any messages from prints and why isn't the probability that cards in packs have a seal 100%? i put 5 extra to get 100% probability for debugging
got it, thanks!
I just walked away from my PC lol
o
ok
It should be in jokers.lua

Ironic that I forgot
sad face
yay
local consumable_types = {'Tarot','Spectral','Planet'}
SMODS.add_card({set = pseudorandom_element(consumable_types, pseudoseed('Perkmentia')), area = G.consumeables, edition = 'e_negative' })
SMODS.add_card({set = pseudorandom_element(consumable_types, pseudoseed('Perkmentia')), area = G.consumeables, edition = 'e_negative' })
so it uses that
but
hey there, im trying to learn lua coding, does anyone have a video they watched that helped
so my mod still isn't showing up in the mods tab in-game, even after updating SMODS. Could it be something wrong with my .JSON
how do i get this "new" tag to go away
finally "fully" done with #define
i think you have to be in the server for a certain amount of time
bruhhhh
ikk it's so dumb lol
i havent been here long but i feel like i fit in already
oh absolutely
-# just another idot fumbling around
almost all of my talking has been here
what even is playing balatro
stg, i have not even played balatro all weekend, i've just been working on this mod XD
btw, for some reason it's not showing in the mods tab in balatro, any ideas?
yeah
a screenshot or smth
i'm very sure the code for the function of the joker is wrong
well i need to check somthing first
Should i bump up the rarity
i only have one joker in the mod
thats fine
i had a comment header on my .json and that was caausing it to not show up
that would do it
yeah
now it's crashing on open, but i can debug it myself
./i'm going to stare at it for 5 minutes then come back for help when i can't
lol
real asf
good morning chat
good evening
good afternoon
good night
goodbye
hey so you know how i said i would stare at the problem for 5 minutes and come back?
"i'm" is not an operable bash file
has it been 5 minutes yet?
XD
it's saying i'm missing a } on a line but i looked and from what i see i'm not missing anything
ya one sec
now
This is such a niche reference that 7 people would get
Im gonna go learn how to make an animated joker
lemme see the err msg
you can look at jimball from cryptid
There's a comma missing in loc_txt
Third description line
lmao
thank you
when you send code can you send it in text form
it didn't fix it, but it probably would have messed something up down the line
so i can plop it into vs
oh yeah fsfs
key = "Lotus",
path = "LotusPack.xcf",
px = 71,
px = 95
}
SMODS.Joker {
key = 'TypINC',
loc_txt = {
name = 'TypINC.',
text = {
"Gives {C:mult}+#1# {} Mult for each {c:attention}letter{} in Joker descriptions.",
"Gives {X:mult,C:white} X#2# {} Mult for each {C:attention}letter{} in joker titles",
"{C:inactive}(Currently {C:attention}#3#{C:inactive})",
"{C:inactive}(Currently {C:mult}+#3#{C:inactive} and {X:mult,C:white} X#1# {C:inactive})"
}
},
blueprint_compat = true,
perishable_compat = true,
eternal_compat = true,
rarity = 3,
cost = 8
config = { extra = { mult = 3, Xmult = 1 } },
atlas = 'Lotus'
pos = { x = 0, y = 0},
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.mult, card.ability.extra.Xmult } }
end,
for _, joker in ipairs(G.jokers.cards) do
local name = G.localization.descriptions["Joker"][joker.config.center.key].name
local text = G.localization.descriptions["Joker"][joker.config.center.key].text
for "E" in name do
Xmult =+1
end
for "E" in text do
mult =+3
end
end
}
```
atlas is missing a comma
Last line in a table doesn't need a comma
yeah, i basically copy/pasted that part in
if that's the part that's messed up, i'm gonna cry XD
Um what about that for loop down there? I'm not sure that's valid lua code, since its in a table
where tf is yor calculate function
this
yeah i was asking for someone to help me with that a few hours ago but no one helped and idk Lua language
how comment in Lua?
commented it out but it didn't help
What parts did you comment out?
It should be all lines from the for loop to the last end
SMODS.Atlas {
key = "Lotus",
path = "LotusPack.xcf",
px = 71,
px = 95
}
SMODS.Joker {
key = 'TypINC',
loc_txt = {
name = 'TypINC.',
text = {
"Gives {C:mult}+#1# {} Mult for each {c:attention}letter{} in Joker descriptions.",
"Gives {X:mult,C:white} X#2# {} Mult for each {C:attention}letter{} in joker titles",
"{C:inactive}(Currently {C:attention}#3#{C:inactive})",
"{C:inactive}(Currently {C:mult}+#3#{C:inactive} and {X:mult,C:white} X#1# {C:inactive})"
}
},
blueprint_compat = true,
perishable_compat = true,
eternal_compat = true,
rarity = 3,
cost = 8
config = { extra = { mult = 3, Xmult = 1 } },
atlas = 'Lotus'
pos = { x = 0, y = 0},
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.mult, card.ability.extra.Xmult } }
end,
-- for _, joker in ipairs(G.jokers.cards) do
--local name = G.localization.descriptions["Joker"][joker.config.center.key].name
--local text = G.localization.descriptions["Joker"][joker.config.center.key].text
-- for "E" in name do
--Xmult =+1
--end
-- for "E" in text do
--mult =+3
--end
--end
}
```
it still doesn't work
you need to add a calculate value to your joker
Is calculate really required?
SMODS.Joker{
key = 'PerkOlator',
atlas = 'jokers',
pos = {x = 0, y = 0},
soul_pos = { x = 0, y = 1 },
blueprint_compat = true,
rarity = 'Perkolator_Perkeo_R',
--calulate part
calculate = function (self,card,context)
if context.ending_shop then
G.E_MANAGER:add_event(Event({
func = function()
G.E_MANAGER:add_event(Event({
func = function()
SMODS.add_card({key='j_perkeo', edition='e_negative'})
return true
end
}))
return true
end
}))
return {
message = "Perkeo!",
colour = HEX('56a786')
}
end
end
}
no
The most important part here is the function definition and the end
Random shot in the dark here but
Maybe the period in the name is messing things up?
calculate instead of config?
nah, still didn't fix
Ok so what if you temporarily commented loc_txt out since that's the part its erroring at
See if it runs
what have i done wrong?
Most definitely for use in a calculate function
still doesn't run
Is there a different error this time?
SMODS.Atlas {
key = "Lotus",
path = "LotusPack.xcf",
px = 71,
px = 95
}
SMODS.Joker {
key = 'TypINC',
--loc_txt = {
-- name = 'TypINC',
-- text = {
-- "Gives {C:mult}+#1# {} Mult for each {c:attention}letter{} in Joker descriptions.",
-- "Gives {X:mult,C:white} X#2# {} Mult for each {C:attention}letter{} in joker titles",
-- "{C:inactive}(Currently {C:attention}#3#{C:inactive})",
-- "{C:inactive}(Currently {C:mult}+#3#{C:inactive} and {X:mult,C:white} X#1# {C:inactive})"
-- }
},
blueprint_compat = true,
perishable_compat = true,
eternal_compat = true,
rarity = 3,
cost = 8
config = { extra = { mult = 3, Xmult = 1 } },
atlas = 'Lotus'
pos = { x = 0, y = 0},
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.mult, card.ability.extra.Xmult } }
end,
-- for _, joker in ipairs(G.jokers.cards) do
--local name = G.localization.descriptions["Joker"][joker.config.center.key].name
--local text = G.localization.descriptions["Joker"][joker.config.center.key].text
-- for "E" in name do
--Xmult =+1
--end
-- for "E" in text do
--mult =+3
--end
--end
}
```
You forgot to comment out this }
that's the one for this one up here
No, that's what the one at the bottom is for
should i anyway?
Yes
ah okay
Huh
Is it just an error on.... your machine????
SMODS.Joker {
key = 'TypINC',
loc_txt = {
name = 'TypINC.',
text = {
"Gives {C:mult}+#1# {} Mult for each {c:attention}letter{} in Joker descriptions.",
"Gives {X:mult,C:white} X#2# {} Mult for each {C:attention}letter{} in joker titles",
"{C:inactive}(Currently {C:attention}#3#{C:inactive})",
"{C:inactive}(Currently {C:mult}+#3#{C:inactive} and {X:mult,C:white} X#1# {C:inactive})"
}
},
blueprint_compat = true,
perishable_compat = true,
eternal_compat = true,
rarity = 3,
cost = 8,
config = { extra = { mult = 3, Xmult = 1 } },
--atlas = 'Lotus',
--pos = { x = 0, y = 0},
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.mult, card.ability.extra.Xmult } }
end,
--calculate = function (self,card,context)
--for _, joker in ipairs(G.jokers.cards) do
-- local name = G.localization.descriptions["Joker"][joker.config.center.key].name
-- local text = G.localization.descriptions["Joker"][joker.config.center.key].text
--end
--for "E" in name do
-- Xmult =+1
-- end
-- for "E" in text do
-- mult =+3
-- end
}
i disabled the atlas because i dont have the rest of the mod
I was looking at this so closely and I thought there couldn't possibly any errors
idk i just rearanged shit
Is your json file set up correctly?
should be
What's it look like
--SMODS.Atlas {
-- key = "Lotus",
-- path = "LotusPack.xcf",
-- px = 71,
-- px = 95
--}
SMODS.Joker {
key = 'TypINC',
--loc_txt = {
-- name = 'TypINC',
-- text = {
-- "Gives {C:mult}+#1# {} Mult for each {c:attention}letter{} in Joker descriptions.",
-- "Gives {X:mult,C:white} X#2# {} Mult for each {C:attention}letter{} in joker titles",
-- "{C:inactive}(Currently {C:attention}#3#{C:inactive})",
-- "{C:inactive}(Currently {C:mult}+#3#{C:inactive} and {X:mult,C:white} X#1# {C:inactive})"
-- }
--},
blueprint_compat = true,
perishable_compat = true,
eternal_compat = true,
rarity = 3,
cost = 8
config = { extra = { mult = 3, Xmult = 1 } },
atlas = 'Lotus'
pos = { x = 0, y = 0},
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.mult, card.ability.extra.Xmult } }
end,
-- for _, joker in ipairs(G.jokers.cards) do
--local name = G.localization.descriptions["Joker"][joker.config.center.key].name
--local text = G.localization.descriptions["Joker"][joker.config.center.key].text
-- for "E" in name do
--Xmult =+1
--end
-- for "E" in text do
--mult =+3
--end
--end
}
try mine
{
"id": "LotusXDXD",
"name": "Lotus Pack",
"display_name": "NyxLotus's Incredible Mod!",
"author": ["NyxLotusXD"],
"description": "Just whatever i make is gonna go here prolly",
"prefix": "XDXDXD",
"main_file": "LotusPack.lua",
"priority": 0,
"badge_colour": "a929ea",
"badge_text_colour": "ffffff",
"version": "1.0.0",
"dependencies": [],
}```
You don't have steammodded as a dependency..... do you have steamodded installed?
Is there a way to quick restart balatro for new mod changes?
press and hold m
Thanks
Oh what you can do that
Microwave noises
yeah i have it installed, should i have it listed as a dependancy?
your mod no worky without it
how do?
its not related to your error
Try replacing dependencies with
"dependencies": [
"Steamodded (>=1.*)",
],
im tempted to have you just send me your mod lol
It's worth a shot either way
yeah
Who knows, maybe SMODS doesn't exist because no dependency
how do i make a joker perishable
also what are you using to edit
okay, one sec
let me port all my stuff over
actually i'm gponna do that after dinner
i'll be back
probably tonight
SMODS.Joker {
key = 'TypINC',
loc_txt = {
name = 'TypINC.',
text = {
"Gives {C:mult}+#1# {} Mult for each {c:attention}letter{} in Joker descriptions.",
"Gives {X:mult,C:white} X#2# {} Mult for each {C:attention}letter{} in joker titles",
"{C:inactive}(Currently {C:attention}#3#{C:inactive})",
"{C:inactive}(Currently {C:mult}+#3#{C:inactive} and {X:mult,C:white} X#1# {C:inactive})"
}
},
blueprint_compat = true,
perishable_compat = true,
eternal_compat = true,
rarity = 3,
cost = 8,
config = { extra = { mult = 3, Xmult = 1 } },
--commented this out to avoid errors
--atlas = 'Lotus',
--pos = { x = 0, y = 0},
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.mult, card.ability.extra.Xmult } }
end,
calculate = function (self,card,context)
--code you want it to exec
end,
}
well just use this for now
i need to stop using my mod to test other peoples mods
i should use my language pack mod insted
We are cuz I’m doing it via take over while you’re doing it via hook
this is frustrating hhhhhhhhhhhh
where is this happening, how is this happening
why is this happening
Coding in a shellnut
it especially doesn't make sense because seemingly every other instance of message = localize('k_again_ex') could possibly be occurring anywhere in this sequence is either not for jokers or for specific jokers
are you adding seal compat to jimbos?
so it especially doesn't make sense to me how something was able to solve it despite doing basically the same thing
i just wanna make red seals work on jokers 
you ever get it working
yes
did my code help?
absolutely
w
local ss = Card.set_sprites --uh oh
function Card:set_sprites(_center, _front)
ss(self,_center, _front)
if _front then
self.children.fossil = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS["cards_2"], {x = 12,y = 3})
self.children.fossil:set_role({major = self, role_type = 'Glued', draw_major = self})
end
end
SMODS.DrawStep{
key = 'fossilized',
order = 1,
func = function(self, layer)
if self.children.fossil then
self.children.fossil.states.visible = true
self.children.fossil:draw_shader(
'negative'
)
end
end
}
what in the
smods docs are very barebones on drawing sprites
what are you trying to do
display a sprite on top of stone cards when you have a specific joker
right now it's every card so it's easier to see
I've been looking at some other mods but none of them seem to do anything like this
yeah 100%
Bump
enhanced
what template should i use in VS?
so good news everyone!/sarc
i was editing the wrong damn file the whole time!!
i had a copy on my desktop and was editiing that one and not the one that's actually in my mods folder
i copied your solution to the right file and it worked perfectly
masterful gambit
Also, how do i make it to where i can see the joker in collectables without unlocking it?
also how do i get the names of the owned jokers in to a string?
i'm having a really strange bug right now with spectral packs
actually i should update steamodded before i complain about this
the steamodded update seems to have solved the problem
Get debug plus
There's a menu that lets you unlock and discover jimbos
in the seal's calculate?
yes
I unfortunately need to check what set the card is in to get the functionality I want. I'm trying to make seals compatible with Jokers
I'm confused, is the card arg in calculate(self, card, context) not the card object?
oh no, it's the seal
does anyone know the call for the blinds base score
I believe it's actually the card currently being calculated, which for some reason is agnostic to the card it is applied to
Here's my current implementation of it for Red Seals for a reference
how does one go about setting a config value for a joker at the time of its creation?
the value will be time dependent so it needs to be set when its created
do you mean get_blind_amount?
maybe set_ability?
maybe, this is the first time im trying to get make a joker based off of the blinds score
that or add_to_deck should probably work?
im still not sure where i would be calling this function from, all jokers ive created so far have their config values initialized in the call to SMODS.Joker
Ah. Maybe check out Mr Bones' code for that
didnt think of that thanks
Honestly looks pretty close... Could this be a weird take_ownership interaction?
do you want the chips required for a blind?
I sure hope not, I'd really like to do this without patches if possible jsut for compatibility's sake
how do i do use debug plus to discover my joker?
yep mr bones helped quite a bit i belive its G.Game.blind.chips
hold tab to see the debug menu
this is really cool
o shit that's cool af
yup thats the one, i just implemented a joker like that today lol
Also I just confirmed my theory of every card that gets calculated triggers the seal, as removing the context.other_card == card will retrigger every joker
Super odd
well this #💻・modding-dev message is with a calculate_seal() hook
and it's basically the same thing
okay so i got my joker in the game! now the only thing left is to
code the joker
this is gonna suck cuz i have no idea how Lua works, so i'm gonna have to build this from scratch
lua is fun and intuitive except when it isn't 
can someone help me take a look at how consumables and G.hand works
trying to use a hook for set_base
and its being affected by things...i didnt think would affect it
well, what kind of joker are you trying to create?
I finally got my first joker working successfully!
function Card:calculate_joker(context)
local obj = self.config.center
if self.ability.set ~= "Enhanced" and obj.calculate and type(obj.calculate) == 'function' then
local o, t = obj:calculate(self, context)
if o or t then return o, t end
end
<vanilla code>
judging by this code, maybe try returning an empty table?
or take a look at this code Nope provided, that also seemed promising
I have no idea what I'm looking at here 
Why tf is discard_size a nil value here? line 241 is crashing every time? Did i set it up wrong
lovely dump of Card:calculate_joker in Card.lua
smart people help me out here
how would i get the number for the amount of times a letter shows up in the name of jokers i own?
I mean in terms of functionality
smods lovely patches that function to add support for :calculate; it is implemented in such a way that if :calculate exists but doesn't return anything, it falls back to vanilla behaviour
Oh I see
so if you had a vanilla joker does something, and you use take_ownership to "overwrite" that behaviour using calculate, it doesn't always stop the vanilla behaviour
So I'd return an empty table in the else?
yeah that was my suggestion
giving a line number doesn't help if you don't include the line numbers in your screenshot 😭
anybody have any idea?
OH lol
Huh, same thing is happening here. I think the vanilla implementation of red seals just make it act like seltzer? 
third function
The “discard = discard minus discard size
The order of events is exactly the same as the original video
third event sorry
Huh, weird. Try Nope's code in that case then I guess
also wait
you don't always return {} with that code
not when the seal is on a joker
Did you try starting a new run?
Id try to help you but I'm in bed lol
So return in an else after the contexts instead of the set check?
oop wrong reply
Oh. No
Or am I misunderstanding that
Let me@tru that
just make sure it always returns {}, so outside all the if checks
ah ok
oh damn, sorryyy
i should prolly get to bed it is 11 lol
night then, prolly gonna keep working on this tomorrow at work XD
-# laughs in nearly 4 am
-# ...cries in nearly 4 am
lol
wtf go to sleep
i'm gonna, night yall
😭 🤝
Uh oh. That might be breaking because one of those contexts is expecting something lmao
Starting to look more and more like you'll need Nope's code
tbf it also makes more sense to put this stuff in calculate_seal
My vice with calculate_seal is that it doesn't do every seal (at least to my knowledge) cuz I don't see blue or gold in there
fixed
Its removing the disaards, but how do i do the "-1" animation on the discards?
like making the
this thing update
live time
like flash a big -1
check a joker that uses the animation
like drunkard
actually, burglar is better
drunkard is a bit hard to find the code for
where is burg?
how do i modify the mult and Xmult values?
cards.lua?
does somone here understand ease_dollar?
yeah in card.lua
increase cash by the amount you put in
ease_discards or smt
Looked at Nope's code, it's also doing the same exact thing lmao nvm forgot a return nil lol
is it a fuction or do i need to add it
Ding. Thanks
so this should work
what have i got wrong here?
well i got it somewhat working
what does your sounds folder look like
assets > sounds > chomp.ogg
well if i click on a card or anything it just gives me like - so much money
i should call it the current state of the economy

its checking for Test_chomp.ogg there
how do i add the names of owned jokers to a string?
/how do i find the names and make them a variable at all>
hmmm weird
...why on earth does me taking ownership of fortune teller remove its juice_up() function 
Ive ran out of creative juices to make jokers
where can i find the code for the buisness card joker
💔💔💔
you'll get your fake scam money when you help me fix this damn nonsense with the seals and everything breaking 
-# also give them their account back 
You should take reference from my mod: https://discord.com/channels/1116389027176787968/1355819401198178455
are we gonna ping the mods on that guy?
they've probably posted in all channels, so someone else probably already did
on the other hand, if everybody thinks someone else reported it, then nobody will
ive been working on this joker for a while can someone vc and help me fix it
eta: I checked and the mods got pinged in exactly one channel
specifically, the fan art channel
ahhh. thanks
i probably won't do exactly that because i don't want to make my mod need yours as a dependency, especially for one part of it, since this is a fan project for a streamer and that i don't want to unnecessarily overcomplicate
but i'll thumb through your solution and try to see what i'm doing wrong 
...ah. that's the problem.
its not in card.lua?
i found it but it didnt help me like i hoped it would
i want a joker to give money for each wild card in a played hand and remove money for each non wild card
local set_base_balatro = Card.set_base
Card.set_base = function(self, card, initial)
if G.hand and G.consumeables then
SMODS.calculate_context{csmr_changed_base = true, card = self}
end
local ret = set_base_balatro(self, card, initial)
return ret
end
why does G.hand and G.consumables along with set_base get triggered everytime i buy a tarot card or even win a blind, i just want it to trigger when a suit or rank changes on a card 😭
ok it works with wilds but it crashs when i dont play a wild
what ur code looks like rn
is says the error is on line 109 and that line has - money line
im stupid
i have a extra l
im actualy stupid holy
lmao
lol
Check where check_for_unlock({ modify_deck = true }) is called tbh
Its probably in card.lua
yup that was it
let me check
im actualy top 10 most stupid people ever
my bad i wasnt trying to take that seat
are you really stupid if you were able to recognize ur errors.
it only took me 3 hours
give or take
maybe more like 2 hour to fix my code
and when i say me i mean conke
now how tf do i word this joker
cant find this anywhere
Try just looking for "modify_deck"
okay i found a bunch of it, what about it
Is it called in multiple places
Only matters if it's passrd to check for unlock
first 4 times here
Game.lua is just definition
ok thats enough coding for today gn
Try seeing the spots it gets used at in card.lua, one of those two has to be for ranks changing
so thats why its being triggered a lot of times?
okay let me check
Naur, in game.lua you have joker definitions of vanilla, each one of those is a joker that uses that unlock condition
first one is used where function Card:set_base is defined and the second time is when function:set_ability is defined
Could you send a ss of the set base one
Those conditions are prob what u wanna use in your hook
Alongside your current ones
just the last line ofc
so i would do something like if G.hand and self.playing_card and not initial
instead of G.hand
if G.hand would just check that the hand area exists
I'd say for now try just the self.playing card and not initial
And see if it works like you intended
make sure to add not initial
unless u also want to includr when cards are created, if the name of that variable is to be trusted
OMG
IT WORKS
the only bug right now is
if a card is already jack of hearts
and i convert it to "hearts" with the tarot card
it still adds mult since it calls the set_base function
okay i tried using this but it didnt make a difference for when i used a sepctral cards that adds x enhanced cards, it still increases the mult
uhhhh
for this you could add a check before you call the original set_base func and store the current rank and suit, and thern after calling the original check if the new rank and suit are different
as for the spectral adding cards i'm not sure
okay makes sense
does someone know what consumables are qualified as when you use them?
if pseudorandom('Alchemy') < G.GAME.probabilities.normal / card.ability.extra.odds then
G.E_MANAGER:add_event(Event({
func = function()
local _card = copy_card(context.other_card,nil)
_card:add_to_deck()
G.consumeables:emplace(_card)
return true
end
}))
end
end
trying to duplicate it when you use a consumable
could i do something like "and not self.ability.name == 'SpectralCardName'
not really cus, self would be the card that is changing rank and suit
Is this part of a joker
yes
checking context.consumeable == card is always false cus card is your joker
what you should do is remove everything after your using_consumeable check
and inside your copy
use context.consumeable instead of other_card
true hmm
i suppose theres no way around it
going to scrap this idea
does SMODS.Atlas add the mod prefix or no 
wdym
when i call SMODS.Atlas() and specify a key -
does SMODS automatically prefix the mod prefix to that key
not for atlases no
you dont have to add the mod key there
at least i don't think
just put the atlas name
when i do it it doesn't
so everything but atlas and deckskin does 
it looks kinda off
That's op
1 in 3...
I’d word it the other way around personally whatever you go with
eg. 2 in 3 chance to create a random consumable whenever you use a consumable.
Hell yeah this is finally in a spot where I'm happy to show it off
what does a purple seal do on a Joker though if you can't discard it
or gold seal because you can't play it
now im getting this error, something with copy_card is creating an error with context.consumable
Both are changed to activate on trigger instead of discard/play when applied to a joker
and then this means you're guaranteed a planet from blue seal every single round
Indeed
very powerful
It's a rare for a reason
btw what do people think about these four effects as seals for jokers specifically
The last one is a permanent discard btw (passive effect)
i think i understand my issue, its trying to copy a card that doesn't exist because the card is gone when it trys to duplicat it
i jus tneed to find a way to save the value of the card before it destroys itself
SMODS.has_enhancement(context.other_card, 'm_lucky') this checks for if the card is a lucky card, how would i check for any enhancement without using "or" for every enhancement?
if context.other_card.config.center ~= G.P_CENTERS.c_base
awesome thank you
could you send your new code
-- useG.E_MANAGER:add_event(Event({
if context.using_consumeable then
if pseudorandom('Alchemy') < G.GAME.probabilities.normal / card.ability.extra.odds then
G.E_MANAGER:add_event(Event({
func = function()
local card = copy_card(context.consumable,nil)
card:add_to_deck()
G.consumeables:emplace(card)
return true
end
}))
end
end
when testing this it keeps trying to create the duplicate after it goes away, so i will need to create a temp value to save that cards value ir delay the destruction
nevermind wasn't that
Dayum Aseprite turned me into an artist lmao
Art is done
Now I gotta figure out how to make it a thing
like wat it gon do
if context.other_card.config.center ~= G.P_CENTERS.c_base then
would this work as a way to iterate over all the scoring cards
yooo that looks cool
on entering blind, create a negative diet cola :3
I like
I was thinking diet cola could be used, but I didn't have any ideas how
now I do
what rarity would that be you reckon?
i think rare, its a literal deck effect lol
the potential when u got this early and stacking up all the double tags is gonna be insane
🔥
tru tru
name the local inside the event _card or smt
and you typed consumable correctly
but it's context.consumeable
inside copy_card
i would have never found that its context.consumeable that fixed the issue, thank you so much
hmmm
i hope
putting a boss blind in the position of a small blind can be achieved
without patching
❤️
time to try
Yes
it can
the ante will advance however