#💻・modding-dev
1 messages · Page 212 of 1
as long as whatever you are running :get_id() on is a playing card, it will work
whats the code
so context.before with G.play.cards with a for loop to run through all cards in your playing hand, for example, works
so it really just boils down to the timing you want
you just need to make a new localization file in your mod, and override the name
@wintry swallow
please don't mind the 52 lines of card code
i think it's T and not 10
oh, huh, neat
how are custom sized jokers done? should i bother?
my balatro corrupted ass will NOT concentrate...
Fool's Laboratory? Fool's Laboratory! Fool's Laboratory. Fool's Laboratory: Fool's Laboratory;
unlocked = true
make sense
obviously you can change the base probability, but would there be an easy way to double the actual denominator in the chance? for example turn a 1 in 3 to a 1 in 6 chance
i assume not because of how the only set-in-stone probability is the base 1, but figured i'd ask
Is this where I could ask to pay someone to make a mod for me?
i think you might just have to multiply the base probability by 0.5 because often jokers store their odds in variables and the variables that store those odds are different between implementations, for example vanilla just stores in extra, but mods usually store it in card.ability.extra.odds so
yea that's the way i went with it, it looks a little awkward but functions the same and won't lead to any annoying incompatibilities that are bound to occur when dealing with variables that absolutely would be different across jokers
Bruh why doesn't this work anymore 😭
This method worked just fine before SMODS went Beta
i have nothing to contribute unfortunately aside from the fact that i read that as "hammer and sickle" at first lol
raised fist moment
bruh
Is it possible to exclude a specific card from showing up in a booster pack?
But seriously, I dug through SMODS code and didn't find anything that suggests stone cards don't have a front either. DebugPlus confirmed this further. Soooooo confused
ive heard a couple people say that the smods update broke stuff, i wonder what all changed to make everything flop lol
did smods change it to where you cant use card.ability.name == (enhancement here)
oh wait
nvm
i think you need to change it to be a drawstep now
I'd be surprised cuz this is all that the patch does
and this worked perfectly well before lmao
SMODS.DrawStep overrides Card:draw
Ah shiiiiit
If this code relies on injecting there it will not work.
that would make sense
draw step was made so people didnt have to inject into Card:draw anymore
Well now I have to inject into drawstep since stone cards have a hardcoded check LMAO
There we go. Back to its cursed goodness
I’m specifically looking for someone to make a couple of custom decks for me, I am willing to pay.
Contact me if you’re interested in helping me out
you can probably make a forum thread in #1209506514763522108 so people can like show interest and stuff
Good idea
You could also add the idea to #1344877887982931968
i think i can bluff my way through this uhhhhhhh
bluff worked i'll take the win on literally ante 1 lmao
for those following my journey of reading the data from the cards on screen im gaining velocity and slowly getting closer to being done with reading the states.
#1346716313934102598 Any ideas are appreciated
added a suggestion, but i should be in bed so im heading out good night
boi wat da hell boi
how would I program the card “when a 2 and Ace are played in the same hand, reward the player with $2”?
Loop through context.scoring_hand and check if the currently iterated card is either an ace or a 2. Store the detection in one of two different local variables depending on the rank, and if both are true, run your reward code
Check the cards played for an ace and a two? I dont know which event it is but its a Game:event
me when the @sturdy compass
fr
I hate the new discord chNge
DUDE IT'S SO BAD
I wanted to valudate the usernMe but just spammed your name
Im sorry
Muscle memory
Nah your fine, I hate it too
So what i was trying to say was id try this first
Anyway that was my sign that i really need to sleep. Good night friends
working on the most simple mod of all time where it just randomises pretty much all the numbers in the game, and i've just replaced the values with math.random(), does anyone know how to make it random for every run? currently it only randomises whenever you open the game
pseudorandom()
ah ok thank you!
misprint deck in cryptid:
not only does it make it random for every run it also makes it so every time a seed is used it gives the same random output each time
!! no!!!! that's fine it was only for personal use anyway
is there a way to access the offered tag of a blind?
Well its three lines and its at the end of the alphabet
stupid question but do you code all your jokers in one single file or make seperate code for all of them
i have all my jokers in one file
It's up to preference
my file structure is like this, each card type has its own file
ok thanks
Right now i have all my mod in a single file but im planning on splitting it in 2-3 files later when im done working out most of the logic
i used to separate them by rarity but now I give them each their own individual file, but i still have folders for the associated rarities
I've done it but it definitely required jumping through some hoops
k
how'd you go about it?
I might come later to pick your brain on how you did it. I might need that info at some point in the development of my mod https://discord.com/channels/1116389027176787968/1343474630916182037
it's kinda hard to explain in text ngl
If you have code on a github repo that also works
goal is to access and run its apply function
i meant for the object representing Z
yeah i did this and now the second joker isn't showing up
I guessed it wasn’t relevant to what i had said i was just trolling
no like i was asking what object could represent Z
Yep I do. Take a look at both hopscotch.toml in lovely and hopscotch.lua in items/jokers. It looks deceptively simple but took some figuring out for my specific use case https://github.com/the-Astra/Maximus
Uh that is good, could be a zebra but if it needs to be an object i think you have the best choice
i don't want to draw another animal
reserved for cats and dogs and bees
have like a zombie card or something idk
I WILL HAVE TO DRAW ZOMBIE ANIME GIRL FOR REAL????
Added it to my thread for safe keepinh
fr
Not a bad idea tbh
or minecraft zombie
your other option is zinc
you also have Zero, sso just don't draw a card lol
all letter cards should have art
Zombie mentioned
nice
yeah but the joke would be it'd be zero, so nothing
just like an outline idk
i have an enhancement that has a countdown when a blind is started; but fsr it doesn't trigger?
(this is in the enhancement's calculate function)
Hello, I have a quick question about some code for a Malverk mod. I'm working on a toggle where the art for Justice and Strength switches between them at the same time. The new art are in separate sprites. I tried to add this code but it doesn't work.
AltTexture({
key = "justice_strength_alt",
set = "Tarot",
path = "justice_alt.png",
keys = {
"c_justice",
},
localization = {
"c_justice",
},
path = "strength_alt.png",
keys = {
"c_strength",
},
localization = {
"c_strength",
},
})
how do i make it so a card can summon any Uncommon jokers only
A bit too late to reply but my idea would be a zip.
Needs to be in two alt texture objects
Ok
DM?
I can stop yelling now, I just got very excited that the person I needed to give crash report to just... ✨ materialized ✨
ehh you can drop it here
Multiple people debugging can save the mistakes from someone failing to read the code they wrote 2 months ago
xdd

For some reason it decided not to copy paste as a .txt file so I gotta go grab it, throw it in a .txt, and then attach it here.
Gimme a sec
It might not even be my code 😂
That is ENTIRELY fair tbh
I had, like, three things from Orta all going at once in that one hand that crashed the game, all I know is that the crash came from an Ortalab file.
Wait...
I'm so fucking dumb, I literally JUST realized ortalab is balatro backwards
I'm going to go shred my 3.86 GPA diploma real quick, gimme a sec
Ah I see. I'll try that.
Why did I have to fucking PASTEBIN this shit to get it here oh my GOD
https://pastebin.com/jguhbFjE
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
There's my goddamn crash report, jeez
So I switched from an A-10 straight to a K-9 straight and it stopped crashing
uhhh yeah that'll be fixed in a new version
Is there a way to modify the end_of_round context to include checking the deck?
okey dokey
how does one accomplish the lil activation wiggle that some jokers do? dna, trading card, loyalty card etc
is it juice_card_until?
juice_card_until
idk im not on my pc
i will test
no, sorry
if I wanted to start a new project woul I need to move the source code filess from the game to the new project file?
No you shouldn't be editing the game files
Im actively reading all this
and I litterally do not see how I should START making a new mod
Probably first at the metadata
The examples are also probably good for file structure
check out the metadata portion and the example mods for an idea as to how to set it all up
then all the sidebars list all the SMODS objects and there's a guide to all of the different contexts (which are used for triggering effects during different portions of the game) in calculate functions
calculate = function(self, card, context)
if context.end_of_round and context.cardarea == G.jokers then
rand_joker = pseudorandom_element(G.jokers.cards, pseudoseed('seed'))
rand_joker_ret = rand_joker:calculate_joker(context)
for k, v in pairs(rand_joker_ret) do
if is_valid_effect(k) and type(v) == 'number' then
if k == "xmult" or k == "Xmult" or k == "x_mult" then
card.ability.extra.Xmult = card.ability.Xmult + v
end
if k == "mult" then
card.ability.extra.mult = card.ability.mult + v
return {
message = "Eaten"
}
end
if k == "chips" then
card.ability.extra.chips = card.ability.chips + v
end
return
end
end
rand_joker:start_dissolve()
end
anyone know what's wrong with this one? im getting the error:
bad argument #1 to 'pairs' (table expected, got nil)
the message is just for debugging
likely the joekr didn't return anything
okay so first check if rand_joker_ret exists
that is strange though, because the joker being dissolved has an xmult
it's unlikely to rtrigger at end of round
is there a way to have prints not do this
+54 more values.
shouldn't the xmult just be like an innate value?
you can try puttin the value in tprint
or adjust the DebugPlus code
I ont understand what the prefix stuff is
Wait it litterally tells me
dont answer that
a prefix is a wordlet that goes before a root word
doesn’t help that in SMODS it goes in-between words—an infix
what ddo I actually needdd to put in the dpendancies to not make it crash every bloody time
I think you could remove it
hmm yes I love me a first time ever I dont know what the fiuck is happening crash moment
I litterally just want it to show up without adding a main file to it
could you send your json config file?
i think a main file might be necessary? just make a blank file called "main.lua" and put "main.lua" as the main_file argument
if this is all I needed to ddo istg
It was lmao
there it is
where can I fin info about how to make a deck
example
does anyone know how to access the mult, xmult and/or chips of a specified joker? im getting a random one with pseudorandom_element of G.jokers.cards, but im struggling to get the values. using calculate_joker seems to return a null value even for jokers possessing mult, which is a bit puzzling.
I'm trying to make my first mod, but i get this error when launching.
I have no idea what I've done wrong, as I've just copied in the code for the joker from the steamodded example "ModdedVanilla"
Thanks in advance for any help.
can you screenshot your code?
missing an equals sign after loc_txt
OH MY GOD......
i feel stupid now xD
for the main file to be foundd what do I do?
all it does is add a comment to the function i'm targetting but it doesn't actually apply the payload
same thing here
looking through the source code, some jokers... dont even have calculate functions that return mult? i now have zero clue how to check.
i cant even check ability.extra since some jokers use ability.extra.(insert thing here) and some use ability.(insert thing here) to store their values. does anyone know what to do here?
Your context probably doesn't match what it expects
Also sometimes they are conditional
Things like loyalty card and mystic summit (If it's the one I'm thinking of)
yeah the one that gives mult only if you have no discards left
conditional mult is fine, i dont mind not being able to get that.
but i would like to be able to copy the xmult of constellation, but constellation does not seem to have a calculate function
would checking if calculate_joker exists first, then just accessing ability.(thing) maybe work?
if calculate_joker doesnt exist i mean
You probably want to call a joker_main context
Maybe hooking calculate would work better for your use case
might try that since im currently using end of round
Uhh.. #1346716313934102598 Please help
i havent done a lovely patch before in my life so im kinda lost here :(
targeting the entire function is usually a bad idea
this is a function that steamodded also patches, so you'd have to go off lovely dumps with smods patches applied
huh, i see
so uh
i thought the lovely dump im checking had all the patches applied already 🥲 is there something im missing
it's all in Mods/lovely/dump right
How do I make art for consumables?
this config stuff here for decks can be used in a mod right? I just need to know how to structure them in a way...
I'm pretty sure this pattern is the original though
yeah it is, i was using the source code as a base
you can use those and/or make your own apply effects that are not covered by them
but now i realised that my mod isn't the only one patching the game LOL
Was just looking at this because I wanted to make some more base game friendly decks
patching out a function in full doesn't help your case there lmao
it's good practice to minimize your patch targets
idk i'm kinda paranoid about accidentally changing parts of the code i don't mean to
that's literally what you're doing?
yup...
any mod with lesser priority just needs to touch the function in any way and your patch will whiff
so just to be sure i know what i'm doing, assuming a 100% vanilla game, this would work?
after, then technically yes
it would work for eliminating money from lucky cards
wait yeah that's what it does nvm
however i would do this in a less destructive way
that being, i would patch pseudorandom('lucky_money') < G.GAME.probabilities.normal/15 to false
okay so for context i have this joker that guarantees all lucky hits
right now i was just reimplementing the lucky card logic in a lua file but i could just do it in the patch right
in that case i would patch next(SMODS.find_card('j_prefix_thisjoker')) or before pseudorandom('lucky_money') < G.GAME.probabilities.normal/15
yeah that was my thought
using either regex or just changing the full line
regex is scary ...
probably just gonna replace the line because i'm a nooby ass noob
chat what control letter should this use
m
oh i think i saw someone implemented this themselves but i forgot which letter they used
M seems as good as any
@frosty dock have you looked at this PR? https://github.com/Steamodded/smods/pull/508
yeah I've looked at it. i still need to test it to make sure it doesn't break anything. but looks good for the most part, i can probably merge it today
gonna be boring and suggest B for border
or background
who says it needs to make sense, the text color version is literally V (for variable?)
but I've considered B as well
i always thought of it as variable yeah
running this thru here just to make sure i aint doing nothing stupid
i read the seals on challenges were 'g' for gold card yesterday that made me laugh
gold seal but yeah
holy shit it works tysm
i feel like a smart person for once
now i understand how patches work the world is my oyster
i can do anything
watch me i'm going on an evil supervillain arc
ah shit how do I makea deck start with a certain consumable
the coe im looking at does not help
that being the examplemod codde
put the keys in config.consumeables
does balatro have a like. cursor press function
how do I start that bit tho because I tried putting it in thiss but it had a crash when I booted the game up
config = { consumeables = { 'c_modprefix_the_duelist' } },
is discard size hard locked to the highlight-able cards? or am i able to properly separate the two? im noting that it seems selective on however many cards i have selected
then where would I put the consumable I want
inside the consumeables table
@robust jolt are you coding the stalagmite deck thingy
hola
has anyone ever noticed
Im tryna just learn how to add things like jokers and stuff to a starting deck
I am gaining the knowledge of lua
never tried this so nope
ah
i might just add the cave deck
I dont think thats how I should write it lol
WAIT HOLDD ON
I REALIZED
I FORGOT UNDERSCORE
😭
😭
the modprefix is a placeholder
for your mod prefix
i thought that was obvious
so down here?
the 98%
do you have the json file
yes
look in there
do you have anything called prefix
also why is it nested tables
yes
that's what you're supposed to replace my modprefix with
😭😭😭😭😭😭😭😭😭
{'c_ankh', 'c_prefixable_the_duelist'}
crazy mod prefix
ikr
i might be stupid actually
sometimes i forgot to return true in the event function
and it just causes infinite loop
now what
How do I add the Ankh consumable
😭😭😭
(this is so I know for future referance)
This is litterally my first time modding a game
i literally put what to do for that 😭
idk why your crying emoji me
config = { consumeables = { 'c_ankh', 'c_prefixable_the_duelist' } }, if you need me to make it even more clear
Ive just realized how stupid I look
I'm sorry 😭
that ddoes not work... the game runs fine but t wont show up in a game
oh shoot
it's one of those rare cases where it's not actually misspelt
it's consumables here
me when consumables vs consuemables
ddevs based
you can't spell consuemables without sue
which is what i will be doing to
or should i say
oh
is there any easy way to guarantee getting a joker for playtesting purposes? im assuming just create a deck but i can't find how to do it looking through the steamodded wiki
i can't spell
show how you're defining the consumable in question
i may have made some assumptions of your code that don't hold true
you can use debugplus
to spawn whatever you want
that's your deck's config
i want to see the code of the consumable itself
where did you define your duelist thing
that is the deck
have you actually created the consumable yet
Its litterally the ankh from thegame
you can't spawn a consumable that doesn't exist
how do i spawn a specific tarot card?
no but are you actually trying to make custom consumables
do I actually needd to fucking create the ankh card again
no
then you only put the c_ankh into the consumables table
you made it seem like there was a whole other consumable that you were making
spawn an ankh at the start of the game (thats the whole point of the duelist deck)
like with the Hex one
config = { consumeables = { 'c_ankh' } },
^
see how this was confusing? you never said what consumable you were trying to add nor what the duelist is to begin with
that deck texture is crazy
litterally first time doing this so yknow
Im thinking about making a different texture for it which is gonna be a whooooooooole other problem
i started my Balatro mod journey by making a locale
and then my first custom joker is the repeater
locale?
i will force you to a game of gartic phone
help
thats 2 decks done 
normal deck is funny
?
look at the past conversation here lol
okay ty
Ive been trying to do this for a bit
SMODS.add_card({key = 'c_whatever'})
isn't it just SMODS.create_card
use this
ohh okay
i was creating a random tarot card lmao
not for a deck
yea but dw it was a read the docs moment

how do i put value into a save file
i want to check if a player has discovered a mechanic
just use smods config as your save file
ah right
I should add a yughio nback for the Duelist deck just for the Funny referance
but what about per profile stuff
i guess i can just put them in a table
how do I get the back of cardd sprite sheet
wait I probs cant use thast to make sustom card backs
?
yknow back of deck at start of game
I want to create a back of deck
for my cards
decks*
get CMOS battery’d
make custom atlas
thats in the docs thank you
I wil read and come back for help because I know I wont understand it
I added a DeckSkin and it's showing up in game, but it seems to be using the default skin
fuck im hungry
gartic phone
garlic phone
☎️
can you show the code for your deck skin
local atlas_key = "birb_deck_skin" -- Format: PREFIX_KEY
-- See end of file for notes
local atlas_path = "birb_lc.png" -- Filename for the image in the asset folder
local atlas_path_hc = "birb_hc.png" -- Filename for the high-contrast version of the texture, if existing
local suits = {"hearts", "clubs", "diamonds", "spades"} -- Which suits to replace
local ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"} -- Which ranks to replace
local description = "The Spiciest Birbs!" -- English-language description, also used as default
-----------------------------------------------------------
-- You should only need to change things above this line --
-----------------------------------------------------------
SMODS.Atlas{
key = atlas_key .. "_lc",
px = 71,
py = 95,
path = atlas_path,
prefix_config = {key = false}, -- See end of file for notes
}
if atlas_path_hc then
SMODS.Atlas{
key = atlas_key .. "_hc",
px = 71,
py = 95,
path = atlas_path_hc,
prefix_config = {key = false}, -- See end of file for notes
}
end
for _, suit in ipairs(suits) do
SMODS.DeckSkin{
key = suit .. "_skin",
suit = suit:gsub("^%l", string.upper),
ranks = ranks,
lc_atlas = atlas_key .. "_lc",
hc_atlas = atlas_path_hc and atlas_key .. "_hc",
loc_txt = {
["en-us"] = description
},
posStyle = "deck"
}
end```
oh this might be useful too
Largely "borrowed" off another skin I found so that I can understand how it works 🙂
how did you make the acgtual skin?
in photoshop or smthn
Also what pixel size do I need
lmao
i love aseprite
any program cuts it
71x95
aseprite is good, photoshop is good
notepad for png
do you have the hc and lc vers in both 1x and 2x folders
u can steal the back of the yugioh card from my mod if u want
Yes, though currently it's just 4 copies of the same file
wait I nee 2 versions???
your working on a yughio mod????
HOLY SHIT
the ones in 2x should be scaled up
lowercase a
and that
assets should be all lowercase
lmao Id love to take it for the funny referance if that is alright
i think that's literally it
I will obviously credit
computers are dumnb
i just stole it from yugipedia
and resized it of course
Ill still take it
do people think I'm actual skilled or are they just trying to make me not feel bad
No change making it lowercase, and it wasn't throwing any errors before
you are
i think you're cracked
goated even
Yeah I thought
here's how i do ithttps://github.com/nh6574/JoyousSpring/blob/main/JoyousSpring.lua
This is the file structure right?
you're truly skilled at everything
what do your atlas images look like
yes
Yes
also why is everything in a folder named src
but because I already have a main file how would I code it into the file?
is that your mod's folder
you should be able to write your code in the same file no problem
you can also separate your code into several files but that's more advanced and doesn't change much other than making things easier to work with
ill do the easier version untilI feel the absolute need to do that
this is my first mod anyway
the mighty 3000 line balatro mod
because old habits die hard 🙂 but no src is not in the final mods folder
The main game code it 3.6k lines
do you guys not structure your project
jen's almanac doesn't
i do but ive seen them be that long in just a single file
try having your assets folder in the root folder for your mod
oh okay
notepad++ based
it's the same thing
it's in a different file....
I DIDNT SEE THAT DOCUMENT
do yall think this is good wording
eidolon
istg i jotted down their effects into a paper at class
now i dont have it
💀
rip
What does the second bullet point mean
like this? (i wanna spawn death at the end of shop)
if context.ending_shop then
G.E_MANAGER:add_event(Event({
func = function()
local newcard = create_card({set = 'Tarot', key = 'c_death'})
newcard:add_to_deck({set = 'Tarot', key = 'c_death'})
G.consumeables:emplace(newcard)
end
}))
end
end
}```
The second passives threshold gains +1
idk sound better to me
SMODS.create_card
what im trying to say is that instead of needing your hands to be lower (or equal) 1 to proc the second effect, it is 2 hands instead
Oh I hadn’t noticed the red underline.
Maybe use Japanese YGO templating
...whats that
But what does “hand lower than 1” mean
is there a reason why you can't be more direct and just say that hands need to be lower to 2
what is atlas
Something like (1) and (2)
it does the add to deck/emplace for you so all you need is SMODS.create_card({set = 'Tarot', area = G.consumeables, key = 'c_death'})
Could also give the passive a name
:3 hsr does it
the the ref key
put your altas key in there
where are the examples?
i know but you can change that
okay ty 🙏
i actually thought about that before, but to be honest, my joker's description is as long as it is 😭
should've made 3 traces with 3 different effects so you can name them smh
don't worry it never too long
but if you can sum it in less than 10 word thats great
using caveman speak of course
i also thought about that too, using cash to unlock traces for your jokers
Then use Japanese YGO templating maybe
Blind Requirements will keep increasing until your last hand
but then it becomes more work for me 💔
example
is that what the texture packs name is?
or smthn?
I simplified the wording of my complicated modded Jokers
/hj
ohhh yeah, i remember seeing cards with this, like uhh the one whose effects get better the more xyz materials it has
yeah i will do that, looks much simpler
thanks yall :D
why is it called joyous spring
That’s different
because its joy
Because the spring law applies to it
i remember it does have the (1) and (2) in front of their effects
The force is inversely proportional to the displacement
you know what I'm adding Aperture Science to my mod
and its in TCG too, pretty sure
It’s similar but different
does it HAVE to be in a new lua folder
Pog
visually the same ❤️
no, use the same lua file
the moment im adding dr ratio, im forcing yall to do maths
No in Japan they circle or parenthesize it
:D
I’m not the country of Japan
I am
you are indeed not the country of japan
that too
no way... John Japan
It’s true I was there I was the dog
did you dog
what the dog doin
does anyone know what property of a playing card do i have to change to make it count as a card in play
istg why the fuck 🇯🇵 cant be seen if you type in "japan" instead of "jp"
I’ll not respond to that with the joke that came to mind
damn get that bread
i've been trying to make a god damn sandwich
🗾
it creates the card but it doesnt emplace it in the consumabes
add_card I think
not sure but check G.FUNCS.evaluate_play (in the lovely dump)
oh wait no sorry the one that emplaces the card is add_card
my bad
oki ty
how would i even implement this as a balatro effect, if below 50% blind requirement?
😭
could print out the card and check it
you can print cards into the console ?
everything in lua is a table at this point
actually, how do i check for current score and score requirement
ffs
it now adds infinite of them lmao
did you put it in an event
yessir
did you forget to return true in event
also my aces turn into twos somehow, i thought the prefix for them was 'A'
otherwise it just loops infinitely
G.GAME.chips / G.GAME.blind.chips
don't worry i make that mistakes too one too many times
is the code ok or nah
oh sweet, thanks, i couldnt remember that even though i saw you (pretty sure) saying this some time ago 😭
probably not me i had to look it up yesterday
check for blueprint? maybe idk
i dont know if something is wrong with what iv done ive set everything out correctly but it will not work
show code
its an enhancement
oh my bad
why the fuck are card back sprites in base game stored in the same atlas as seals and enhancements 😭
code and files I dont know whatss wrong
that's correct
did you add the atlas to the deck
where else would you put deck sprites
no
they all are part of card sprites
do that
i mean they could have an atlas of their own
i guess it's less file size like this but shit threw me off so much
how...
what did they update in the docs
anything that important
where SPECIFICALLY in smodss back
anywhere just have that line i it
it crashes then
post the code
outside of loc_txt
post crash?
that's just Yu-Gi-Oh
that's just Yu-Gi-Oh 🔥
idk if im not seeing stuff but there's nothing there
yipee
the stuff to make them score is in there, you can use the modify_scoring_hand context for it
You can also score cards manually
now im really confused
which part
the part where the search is to find how the hell do i mark card as being played in the current playing hand
idk where the Splash code is
where i told you?

With an effect like that I don’t think you can
how does the balatro splash joker do it
Hardcoded
The thing is you’re adding cards to the hand after it’s played
But there’s no persistent effect to tell them to score
I don’t think you’d want to tag them as always scores either because they would then have that permanently
i mean the goal im trying to make is to have temporary cards that score and are then removed after a hand is played
though my intentions are to keep the card's enhancements so it makes it even more complicated
You’d also need to use an earlier context than before
there's a thing for that?
The modify scoring hand you were told about
the mult aint goin up
It still feels weird to me that localthunk uses "ja.lua" instead of "jp.lua".
decided to make this a deck rather than a challenge
First of all, you might need to take a look at this:
...sadly it crashes as soon as i start a run
figured
legends_pool is defined as a global in the main file
Secondly, in loc_txt you say "for each Moss Card in played hand", yet you iterated through G.playing_cards, which becomes "for each Moss Card in your full deck".
whats the crash
hmmm ok
will figure out how to change
Third thing is, you forgot to return {Xmult = card.ability.extra.x_mult}, hence why it didn't acually give xmult.
you might need an event to delay until the card area exists
never made a deck so I'm not sure
makes sense
tysm
For the last one, I'd recommend you say "Currently X#1# Mult" instead of "Starts at X#1# Mult".
found the code and the context but it doesnt seem to do anything if i just replace the context
am i missing something? it's selecting all cards rather than a random card
i mean, you are running a for loop through every card in your deck, and it seems bullshit is always the card it goes through, so it will select all the cards in your deck at the end of the loop
if you want to select a number of random cards from an area, you can do like what i did :D
(c is the area, while b is the number of cards you want to grab)
i see, though what i really want is for it to select from cards that are a) in the deck and b) aren't a specific enhancement
this modify_scoring_hand context not working is pissing me off 
in that case, you can first filter out all the cards without the enhancement inside a table, and use pseudorandom.element on that table
you need to return { vars = { colours = {...} } }
fun fact: pseudorandom_element returns the index as a second return value
Like this?
you forgot the colours
yeah
if you're going to use them a lot you can initialize them with the other localization colours and use them directly on the text
forcing all owned jokers to be legendary adds an interesting dynamic of buying certain jokers like mail-in or sixth sense and selling them before playing your good hand, but it also feels too limiting - should i also allow rares so you can have copy effects and such?
it really is limiting
and the x100 mult is honestly not even that good compared to a full rare/joker build, if im gonna be honest
like, the idol + socks and bussin, for example
i mean it can kinda carry you to ante 8 for free
its x2^10 mult, which is in the thousands already i think?
i think i got it working :o
yeah but its not fun :(
iunno its kinda like jokerless but with an extra buff rn
yeah
Hi
hi peak :D
i do wanna try and have some more synergies
maybe something like having no jokers of a specific rarity
Nvm than
💀
Anyways how’s your guys day going
thats significantly better than locking you out of all jokers except for legendary
hm
this mod kinda makes legendaries a bit more common so im thinking x100 mult if no other legendaries are owned
so like the complete opposite of what it is rn
but im not sure
or maybe just no commons
free x100 mult
yeah i think i'm gonna do if no commons are owned
or maybe if all other jokers are specifically uncommon
gonna have to do a lot of testing
which one
isn't this the latest
or is there a version that i somehow missed
there are more recent on the main branch but that context should work there
you're making a deck right?
but it doesnt.. this is on an enhancement does it not work on an enhancement
yeah it might not let me check
i don't think it does

you can set always_scores on enhancements if that's the idea
(or never_scores for that matter)
this is what im trying to accomplish
cards that are summoned and then scored on your playing hand
am i too ambitious for such a task that i thought would be simple
you may have to hook SMODS.always_scores for that
im tryna make a joker that adds a random lucky card to your hand when u succesfully trigger a lucky card, but when i play a succesful lucky card my game crashes, is this code alright?
SMODS.add_card doesn't add playing cards
ass lmaoo
u.u
it would be create_card then?
where's that part of the code located
create_playing_card()
okay ty :)
is there any context on a joker that is still ran even if the joker is debuffed?
install counter strike source 
if I only wanted sto have negative cards show up for a deck how would I do that
or is it hardcoded in the game and I cannot change it
what is this?
you forgot to install css
p sure cryptid has that
https://github.com/Steamodded/examples/blob/master/Mods/AbsoluteDeck.lua this example mod turns all cards in deck to polychrome glass, close to what you want
m
it doesn't work :( crashes and says:
attempted to call field "create_playing_card" [a nil value]
what can detect the modify_scoring_hand context?
miku cursor is fire
another fellow miku cursor user ❤️
sure
the one piece
found a potential solution to my sandwich problem
i could use a voucher that handles the functions instead of doing dark magic with code that i barely understand
I dunno your issue but yes invisible Jokers can do a lot
my issue is being able to use the modify_scoring_hand context for an enhancement
hoping that this doesn't fail because that would mean to scrap my delicious sandwich idea
i clicked Play, why's this happening? 😭
on vi.lua line 767 bad argument #3 to setColor because it expected a number but got nil
Do you guys think this sounds fun?
I almost want it to grant like + 10 mult when it upgrades. Otherwise just the permanent increase feels kind of bad
Also feel free to roast my art
with xmult, it doesn't scale hard enough
it also feels like an Uncommon to me
what counts as an increasing Three of a Kind?
First you need a three of a kind 2's, then a three of a kind 3's, then 4's, etc
@frosty dock hi! I sent in two small Wiki PR's for areas where I got stuck making my own mod, just a gentle head's up 🙂
https://github.com/Steamodded/Wiki/pulls?q=is%3Aopen+is%3Apr
Gains X0.1 Mult if played hand is a Three of a Kind in 2s, rank increases (Currently X1 Mult)
that's really clever because an ace is both the highest and lowest rank
The played hand could be a full house, or four of a kind or anything actually! And it wraps around too. So maybe it should go up to .3 per upgrade or something and be like square where you want to upgrade him early on
My wife is a pixel artist so she will replace my terrible art before I ship it 🙂
oh! lemme rework that then
i think .2 is fine!
Gains X0.2 Mult if played hand contains three scoring 2s, rank increases (Currently X1 Mult)
hey there everynyan, is the game doing something weird suddenly or am i fucking stupid
(bump)
Thanks! Looks good for the most part, I can have a closer look tonight. I'll probably end up rephrasing some things esp about the sound prefix note. Most importantly this is inaccurate:
Sounds can be loaded in any of your mod's json files.
it ate my reply, oops
methinks this is an oversight with the DeckSkin overhaul
I'll check it out
Yeah I don't love my phrasing with that part either... thanks for the mod. It's just delightful to have a good framework to work with, makes modding fun
TY @long sun
X0.2 should be colored, while Mult should be uncolored
like this
same goes with the stuff inside Currently too
what localization set are enhancements in
My guess is there’s a color field in your code somewhere that was set wrong
oh maybe
"{C:money}$#1#{} when played",
"and scored",
"{C:red,E:2}self destructs{}"```
it might be C:dollars, now that i think about it
no it is C:money
What is E:2?
i think what is wrong is the E;2
E:1 makes the text wavy
like the Probabilities in Oops All 6s
Oh interesting
E:2 is what self destructs uses
chat
i think it makes it wavy + bold?
is this diabolical
Wait it wouldn’t be a loc_txt thing if it’s happening on play
EVILLLLLLLLL
why did it go from 150 to 16
Asking the real questions
don't do SMODS.create_playing_card if that's what you're doing
it's just create_playing_card
its ok i found another way, ty
pretty sure it shows the stats of the joker now, should be updated whenever anything alters it
ah i see. this happens when unlocking the new... wait, what? i didn't make a Joker, i made an Enhancement
ah i see. i left a Joker in on accident
well at least it shows in game :)
i love being diabolical
still crashing on Play though :(
definitely a start!
i can tell...
Same crash?
mhm
What does the calculate for that enhancement look like
calculate = function(self, card, context)
if context.cardarea == G.play and context.main_scoring then
G.E_MANAGER:add_event(Event({
func = function()
card:start_dissolve()
G.E_MANAGER:add_event(Event {
func = function()
SMODS.calculate_context({
remove_playing_cards = true,
removed = { card }
})
return true
end
})
return true
end
}))
card.destroyed = true
end
end```
there might be a better way of doing this =w=
i think i ran out of ideas
Boss Blinds...
what this do????
debuffs all consumables
i really should pop in more, see more of your code... i wonder what context. means
why do i always think of stuff that other people do
still, sounds... quite hilarious :3
oh?
i just hate perkeo build nothing else
thank you!
agree to disagree :3
i wonder if i should post my Blinds... i have lots, but only a couple sprited as part of a proof-of-concept system
what's it called?
also, way cleaner icon
The Expiry
expired consumables
yep
that must smell awful
all consumables are forever debuffed
it could be Destroys all consumables?
the moment this shows up
yea it is only worth a dime now
the blind that debuffs barron, mime, and red seal steel kings:
no you can still sell them to recoup money
you can also sell them before the boss :)
The Meta
i already have it
(it's the Height)
evil blind
i literally wrote an unskippable The Wall
you can pass this normally by playing low ass hands
the wall is coming
and on final hand you can play whatever you wanna to score shitton
fair!
how git gud @ picel art
practice practice practice
great minds think alike
great! you made Chicot worse <3
🔥
make a blind in favor of chicot
the idea behind this particular Blind is that it's more dangerous than a typical Blind, but can only be encountered if you have encountered specific other Blinds during the run
a secret boss, so to speak
"We hate Chicot!" most balatro players say in unison
exponential growth blind sounds hilarious
imagine a deep Endless run getting that 💀
every Boss Blind except that one
I wonder what would happen with this one...
or i could commission the fuck out of everyone

you die lmao
also an option, though it can get expensive :3
use balatro cards as reference ig
not a problem for me !
you get to choose what you wish to do with it...
interesting!
(just so you knowwwwwwww i am opennnn soooooo)
i love my perfectly normal set
the first thing I did was start drawing them in a notebook, to see how the layout can even make sense




