#⚙・modding-general
1 messages · Page 10 of 1
G.hand.cards
im trying to iterate through held hands but i dont think im using the right call
oh
i guess i am
if context.cardarea == G.hand then
if self.ability.name == 'Alloyed Joker' then
for k, v in ipairs(G.hand.cards) do
if v.ability.name == 'Steel Card' then
G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + self.ability.extra.dollars
G.E_MANAGER:add_event(Event({func = (function() G.GAME.dollar_buffer = 0; return true end)}))
return {
dollars = self.ability.extra.dollars,
card = self
}
end
end
end
end```
am i stupid?
(i know theres no debuff check here, im just trying to get this to work at all)
you could also do context.end_of_round and context.individual, that's run on for every card in the hand at the end of round so wouldn't need a for loop, there's even an empty branch for it at line 2804.
ah its cropped out but it is under context.end_of_round and individual
any link to a sort of tutorial to get started on this type of coding in general?
oh so then you don't need to loop through cards, you should use context.other_card instead
i may have had a brain fart because i was copying the code from mime
i just did that and testing it right now
hmmm
nope
maybe check against golden ticket, since that also does stuff to individual cards with an ability
the ability checking isnt the problem since i used this code with other jokers
That’s just sandwiching
Maybe use sendDebugMessage to check if your code path is getting hit
havent used sendDebugMessage before tbh
i did get rid of the Steel Card check just to see if that was the issue and it wasnt
I’ve literally never used sendDebugMessage in my entire time working with mod loaders lol
I just print() it
where does it print to? is it just printed on screen?
you know
i think i have a different solution
looking through i figure i can just give steel cards h_dollars of 3
The way I use it is running the game from the command line with balatro --console
did not know this, thank you
question then, how would i go about giving steel cards h_dollars of 3 🤔
is there a way of passively giving a specific suite of cards a variable bonus?
how can i make it so the player starts with an eternal joker, just how to make a starting joker eternal?
oh, guess I need to reinstall my modloader again
update day
i really thought this would be easier than it is
wait it works

its REAL jank but it applies h_dollars to all steel cards when a hand is played
now i just need to figure out how to undo that when its destroyed
thinking about it the h_dollar method might be more cumbersome than checking end of round
okay yeah i have no clue whats going on with context.end_of_round
i keep getting crashes when im not in context.individual and context.individual does nothing
maybe i need check for context.cardarea == G.hand??
nope
heres the snippet im trying to do it with
elseif context.end_of_round then
if context.individual then
if self.ability.name == 'Alloyed Joker' then
G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + 5
G.E_MANAGER:add_event(Event({func = (function() G.GAME.dollar_buffer = 0; return true end)}))
end
end```
actual code in the middle doesnt really matter, im just trying to get the trigger as soon as the winning hand is played, but before it goes to the payout screen. my crashes actually seem to happen right around here so i think im in the right place but im not sure if im able to scan the hand during this context
hello friends im a frequent poster in fan-art & i am infiltrating the modding chat ask if are there any modders in here with a lot of ideas for mods but dont have the best artistic skills but want a way to bring their ideas to life? i am gauging interest for a project that might help programmers who cant art but want to practice to artists who cant code but want to make fun jokers haha react, reply or add me 🤝
scroll through #1155557846805643434 until you find something good
that’s a good idea! i figured i’d reach out here to trying to connect people who want to make some nice modpacks for the game but i will look through there too maybe for peeps that had are looking for the same thing
lmao fuck i was actually looking for a way to code in this effect for a joker idea i had, seems i took too long. really glad to see someone who is better at both code and art got to it though!!!
also it's weird that tag thing didn't work....
is there anyone working on multiplayer mods? I've never used lua before but it doesn't seem too bad to pick up
friend wanted me to make a mod similar to spire with friends which seems somewhat feasible if lua has decent networking capabilities
balatro already uses https.lua so maybe
yeah the thing is i havent actually made the end of round part work unfortunately lmao
lol that was my issue i was having too, so unfortunately i'm no help there
if i DO make any progress on figuring it out i'll let you know though!
how do i make a deck that has more cards than usual pls i want an actual answer ;-;
how many custom jokers have been made so far?
why is this not adding more cards?
dam
wait isn't cos 0-1
ah i didn't see the 7*
yeah it's not in the image
does it round up
because i forgot to add it
rounds to closest integer
ok i made it loop every 16 so there's no values next to each other that are the same
so it goes up to 17 mult?
what is misprints range even
0-23
kind of unrelated - is there a way to jump to the first post in a thread? trying to return to the OP on some of the mod threads is painful
you might also need to check that context.cardarea == G.hand like with jokers that act on individual cards during a played hand
hiya, folks. another night, another time where i look at code and ask it why it refuses to do what i want
so, i have a friend who made some cool dark mode cards, and they want me to turn it into a mod. i agreed to it, figured it'd be pretty easy
annnnnd it's not working--at least, not exactly? here's the code i have
the issue is that it only is keeping the bottom line. so, in this case, it only does high-contrast cards, but ignores the Enhancers and the regular cards
because you are overwriting sprite_card each time
change the variable names and register each one individually
yep that fixed it. thanks!!
hm
missing charm
no art yet
unlucky charm
anyone know how the acceleration works?
Hey I finally got something
oh yea you can mod in reversed tarots now
goes hard with 2s
reversed tarots...
reversed strength sounds kind of useful actually--both for 2s becoming aces, but also for things like making aces/kings/queens into kings/queens/jacks, for their respective synergies
not sure if any other reversed tarots would be useful though lol
7 to 6
doesn't necessarily have to be the opposite effect
Death let you duping
like death mixed with cryptid
see: tboi reversed tarots
that's true!
Idk, I will see later for the other cards
Maybe the hanged man? just creates two random cards
Or something like that
Sounds bad
Like, idk, just make reverse hangman weaker version of Cryptic?
Make 1 card copy
probably the best question to ask is like
when you get these
i'm assuming probably they can just show up in arcana packs?
so power-wise, if you're looking for balance, you'd wanna balance them around the others
but also you don't have to if you don't want to lmao, you can make them better if you want
I was thinking maybe create a new pack for reversed tarot cards that would be as rare as the spectral pack
ooh, fun
Yeah
Maybe the hanged man? can have a 50% chance of creating 3 copies of one selected card
wheel of misfortune
Reversed Wheel of Fortune
3 in 4 chance of making a random Joker Negative. Otherwise, destroy that Joker.
too high risk imho
wait no i misread that lmao
too good imho especially with Oops! All 6s!
mm i don't like modified save runs being posted here, kinda drowns out actual modding conversations
Oh yeah I like that
However, first of all I need to make the Reversed Strength working (its not)
im so screwed
oops! all walls
This is a huge reach of a question
but has anyone here had any luck developing mods that make Balatro network using WSS?
that's one of the first things i tried to do but i couldn't get it to work
that wasn't an answer to me, was it?
Damn, I coded my reversed strength and it works now, however when I try to use a normal strength card I get this error wich is wierd because it tells me that there's an error in card.lua
I think i can completely remove ante progression in the save file
from what i've seen the only way an ante progresses is from a completed boss blind
I literally cannot go to the final blind
i've done the 2nd boss blind 12 times
how'd you do that
also is there a way to find out which deck sprite is gonan be used when inputting the x y thing
i used a save file editing website to change the blinds
you have to do it manually
Alright I fixed it. Apparently I needed to define death and normal strength again for some reason
Is there any way to apply a status to a selected Joker ? We can apply a status to a selected card in hand or to a random Joker but I don't know if there's a function to apply something to a selected Joker
Anyone know how nicely any of the existing mod libraries play with external libraries?
Would I just have to copy library files to the mod folder or is there an easier way to do that
(I am new to Love2D and lua in general so I may be asking Very Dumb questions in here for the next while)
What I did is that I put the mod directly in my mod folder, works for now but I think the best way when you release it is that you tell people that your mod comes with dependencies so that they don't have to install the same mod 20 times for 20 different mods who uses it
What happens if you mod a card that destroys itself to be eternal? Like ice cream
But maybe I'm doing it the wrong way idk
For context, this dependency isn't another mod. It's an external lua library.
Ah, well sorry but I don't know
It looks like the lua injectors would allow me to change requires
so if any of the modloaders allow for additional .lua files (and not just editing the existing ones)
then it shouldn't be hard. I just need to make sure I have the right licensing to distribute whatever library I want and I should be good to go
Can someone send the sprite sheet for consumables?
pull it yourself. You can open your .exe like a .zip file and it's just in there
How do you put the description in green like the "1 in 4" here ?
Does anyone know the proper way to make sprite cards for the game?
This might help : https://github.com/Steamopollys/Steamodded/wiki/Add-or-Replace-a-Sprite
I meant as in how to make the sprites in an art program
Do I just edit the sprites currently setup?
Yeah I think this works
How do I know if I encroaching on another card?
You need to cut a grid
Divide the height of your image by 4 and the width by 13 and you get one square of the grid
Can someone look at their top-level Balatro install for me and tell me if there's any .dlls there?
I don't have the game installed on my work computer but I wanna test a theory
there's like 10
cool, thanks!
hiya folks! trying to figure out how to code a joker that's really weird: the Exact Opposite of Pareidolia. in specific, i want it to be "All cards count as all numbered cards." so, for instance, you can have Even Steven, Walkie Talkie, and Odd Todd all trigger on a 7 or a King
main issue i'm running into now: i looked at the code for Pareidolia, and that's like, in the function for if a card is a face card or not. meanwhile, for jokers like walkie talkie, they (logically) are just looking for the id of the card
so, pretty much, i'm trying to figure out if there's a way i can make it so a joker does something like, sets context.other_card:get_id() == 2, 3, 4, 5, 6, 7, 8, 9, 10 for every single card you play ((from what i can tell writing it like this does not work lol))
I would but I don't have access to my computer right now 😅
it is hardcoded to remove eternal from those cards even if you try to force it
It's against the rules to distribute Balatro source, so I think you are out of luck here
I figured it'd have to be. No other way to have them in the shop with the eternal stakes on otherwise
there's a specific flag for eternal compatibility
which is probably because that and higher stakes
you would have to overwrite the Card:is_face() function to check if your joker exists
if self.debuff and not from_boss or find_joker("YOUR_JOKER") then return end
local id = self:get_id()
if id == 11 or id == 12 or id == 13 or next(find_joker("Pareidolia")) then
return true
end
end```
something like that basically
there might be a few things checking not using that but that would cover most cases afaik
yeah, i assumed something with that function--but like, i'm less certain of how i'd approach it? from what i've tried, it doesn't seem that doing like, if id == 2 or id == 3 (etc.) then id == 2 and id == 3 (etc) works
since is_numbered isn't a thing, to my knowledge lol
Personally I think you'd just have to go back and edit all of the number-seeking jokers with or next(find_joker("Numberjoker"))
which is ugly, but
you can use that function as is_numbered it just returns the inverse
that IS a method i've considered, but i dislike the fact that would make it incompatible with other modded jokers
yeah
which is like. i can accept that if it's impossible to make it work with other mods? but if there's a method that WOULD also let other modded jokers work with it, i'd prefer that
I think your alternative is making it so that way cards can hold multiple ids
of which only the first will count for the purposes of -kinds and straights
oh, i don't care aboutchanging -kinds and straights
same as how Pareidolia doesn't change the value of cards; just that they count as face cards, for stuff like other jokers and boss blind abilities
yeah I know
i want to play Walkie Talkie with a 6 and have it work, for instance
that's why you'd have to do this
(I'm assuming at least that straights and kinds reference card ID, right? I don't know that snippet of code)
straights look for id yea
so blackbando you want every card to trigger every effect basically
every numbered effect
every numbered effect, yeah
hm
Hack, Walkie Talkie, Even Steven, Odd Todd, etc.
The reason this is more complicated is that this isn't the opposite of pareidolia
Pareidolia doesn't trigger things that specifically care about kings or queens
yeah had me slightly confused for a moment
just Face
mhm, yeah
"numbered" or "non-face" just isn't like, a thing the game cares about lol
i mean. that's checking for face
that's not it checking for numbers
yeah
that's checking for face and failing
which is the same thing
i suppose!
I mean, you could just have a joker that says "none of your cards count as face cards"
which would be interesting
god knows we need a second joker to make Ride the Bus viable 
pretty niche though--i think that'd only matter for The Plant boss blind and Ride the Bus lol
this would do that
niche cards/jokers are the most fun tbh
oh yeah, absolutely
but personally i prefer niche jokers which make really weird niche strategies, instead of like
this is nichely countering two very specific downsides lol
I think it'd be best on a joker alongside some other sort of minor buff
yeah, i could see it as part of a joker which does some other thing
Like "numbered cards grant double base chips" or w/e
i'm not opposed to also trying that
but i am a lot more interested in the initial idea still--i think it sounds very fun to have an entire deck work with some more niche stuff
Hey everyone, I'm really interested in making mods for this game. I've looked through the guides on this server but I'm still a little confused on what the full process is like for making mods. Like, is everything done by replacing code in the base game using the injection method, or do you make seprate files? How would I go about adding something like a new deck type? How do you go back to vanilla or switch mods i might be working on?
I'm on a M1 mac, so I've looked through the read me guide on github for balomod since thats the one thats compatible with mac.
I have pretty decent experience in multiple programming languages...except lua, but that isnt really what im having trouble getting. It's more about the process itself im unsure of. I also do not have much experience working with github or terminal commands either.
Can anyone recommend a guide or give some explanation of what the full process of making a mod is like? Thanks
8-ball and sixth sense are two big ones where i was like "oh hell yeah, these are kinda hard to get off normally but they could POP OFF with this joker"
You can use one of the modloaders
it'll manage the install/uninstall of mods as you like
the modloader's github repo also has various example mods
is that what balomod is
Steamodded and Balomod are both different modloader options
Balomod and Steamodded are the two major modloaders
You'll pick one of the two depending on which mods you wanna try out
i think rn steamodded is the one with more mods and such, since it came first
but really use whichever seems more appealing to you
It's is not right now
It was working with the old version of Mac, but not with the new one
rough
Balamod works well with Mac outside of the Mod Marketplace
Do either of the major modloaders manage dlls? Or if I'm gonna reference a dll, will I have to manually drop it in the install folder
To a look at lovely for this
Neither Balamod or Steamodded support dll on their own
fwiw the mod I'm working of developing would be one that would be expected to be played without the presence of any other mods by virtue of what it is
I don't need to have the mod externally managed, I'd mostly just be using the modloaders for dev use. Install instructions can be w/e
I don't exactly understand what you want to do, but Steamodded and Balamod will not load it sadly :/
For clarity, this mod would be an integration of the Archipelago randomizer into Balatro
I'd be referencing a WSS client dll
so it can connect to the server
Oh ok I see
I think Balatro will load it if you put it in your Gamedir ? If yes, Steamodded and (I think but I'm not sure) Balamod will be able to use it without any issue
I haven't looked at Balatro's code for imports myself
but I presume it'd have to call its imports by name in the lua code
in which case my mod will need to also inject that call
Hmmm, take a look at the lovely repo, it's kinda doing what you want to achieve I think
At least to load the .dll
okay, so, i AM going with this method
but i have now realized there's a snag: Mail-in-Rebate and The Idol can sometimes ask for numbered cards, but not always. i would want this joker to make it so the numbered options always work (well in idol's case work as long as the suit still matches lol) when they ask for numbers, but not when they ask for ace and face cards
I can write a patch to enable dll injection, but you would likely need to setup the lua registration yourself.
the patch files can handle this if you don't want to go through one of the modloaders.
Anyone knows how to put the text of the description of something in green ?
The library I'm referencing already has all the registrations I can just copy-paste
(I think)
(Very New to Lua)
{C:green} and then {} at the end
Alright thanks
so as an example, imagining bold as green here
Removes all Boss Blinds from the game instantly
would be
Removes all {C:green}Boss Blinds{} from the game instantly
And is it something like {C:Negative} for the negative description of the effect ?
{C:dark_edition}
we love the colors: green, red, blue, attention, and dark_edition!
Isn't there a {C:polychrome} for polychrome edition ?
uhhhh probably
i wasn't listing all the colors there i was just making a funny
i can check what polychrome uses
Guess I should try out
looking at the localization it looks like it also uses dark_edition
i'm not sure if there's ever rainbow text in this game...
Huh ?
Hello, I honestly love this game, but I was wondering how to make a texture pack like many people seem to do.
I wanted to make myself a personal texture pack (I mean that I might not publicly share it)
my favorite color is attention
attention is such a cool color
dark edition is my 2nd favorite color
so for my own coding woes: i attempted to try the numbered thing with walkie talkie as a basis, and it Did Not Work
i haven't ever made a mod which like. tries to edit a pre-existing joker before???? so i wouldn't be shocked if that's why it's not working
Bro is using Notepad++
yeah
I mean half of the work of coding is bug fixing
bro is a gender neutral term
ehhhhh
its not if she corrects you on it
it really depends on if you are okay with being called bro
i would not point it out if i was okay with being called bro lol
Open up your game in a .zip folder, rip the resource images out, edit them as you like, then put them in a modpack in one of the (two?) modloaders
I will respect that
Alright sorry then
anyways! my code was Not Good, and i don't know which parts were Not Good
it didn't crash or anything, it just didn't work
that's completely fine! everyone makes mistakes, and i like to think i'm pretty forgiving and laid-back lol
I do not know what's going on with the indenting here
me copy-and-pasting walkie talkie's code from the game without changing the indentation lol
if that's affecting it working or not then i can fix that, but to my knowledge it shouldn't in this case, right
What do I do with the balamod file after I download it? It wont open with anything
Can't I just put them back in the game's executable ?
If you have LOVE dev tools installed and can recompile the game, yes
What do you guys think
Oh that's fun
"you said you wanted another Joker slot. You didn't ask me how you wanted me to get it for you"
Uhhh
that's cool
It's a command line program at the moment, right click in the folder it's in to open a command prompt and then input the name of the file followed by a space and then -a to install it. There's also a batch script in balamod's repository called "One click install.bat" you can use to do this for you by putting it in the same folder as the file and then opening it. (Also you could use lovely to install balamod instead if neither work for you)
I don't, I didn't even know about Love2D before today lol. So how do I put my custom textures in a modpack ? (brb in about 30 minutes / 1 hour so won't reply soon)
LOL
cool idea
Pick either Balamod or Steamodded, go to their forum page, learn how they format their mods, and then make your mod
with Oops all 6s: guaranteed negative, 1/2 chance to destroy it?
I don't imagine it'll be all that long before someone's created a texture pack template for one of the two mod loaders that you can just dump assets into and then run
Assuming that doesn't exist already
Also what that says implies there's a chance for neither or both to apply either way
It's more like pick a random number between 1 and 4, if number = 4 then destroy joker, else add negative to it
"3 of 4 chance to add Negative to a selected Joker. If it doesn't become Negative, destroy it."
Try that
Now Oops All Sixes guarantees Negative, which is cool
nah oops all 6s should nerf it
Oops All Sixes should buff more things that card is bad
1 in 4 chance to destroy a selected joker. Otherwise, add negative to it
oh hell yeah, you implemented the thing i suggested!
Yeah
i can confirm you do not need to do this
you can open the game's executable as a zip, go into resources, and replace images by just dragging them in there
source: i did this before i found out about the modloader lmao
i was able to replace textures and they worked just fine
in fact this actually works for like. the entirety of the game? you don't need LOVE dev tools installed to change anything--you can just:
- drag out the code (or texture or w/e), copying it onto somewhere else outside of the zip file
- edit it however you want
- drag it back into the zip, replacing the old version
works for code, works for text, works for textures
I tried this, and it said permission denied. I looked at lovely, but it doesn’t seem to have a mac version
now, mind you, this isn't really a mod, so it's much better to just.... use the modloader and make it a mod lmao
but it's possible if you wanna do something personal and really don't care, i suppose? would be a pain to do it again each update though
oh you're on mac, run chmod +x on the file in the command line and then try again (this makes it executable)
What archive manager are you using that allows you to hotswap files without decompiling
I don't think 7z or the default windows manager allow you to do that
7-zip
Ah ok, it looks like everything worked...now what do I do😅
like in general if i were to start making a mod
and like, hotswapping files is not something i've been able to do with like... maybe any other game?
Balatro's engine just seems to be fine with it lol
i still don't think it's a very good option--it's much better to just use the modloader and make things into mods
but sometimes i find it's useful as a way to like, work backwards and figure out how something is coded
that way i can apply it to my future mod-making endeavors
Is there an equivalent of #G.hand.highlighted but for highlighted Jokers ?
Like, where is the code to sell the highlighted joker ?
Like #G.highlighted.jokers.cards ?
selling jokers is tied directly to each joker's sell button, so it doesn't check the selected joker. I'm not sure if there's anything gameplay wise that checks the selected jokers.
also, the game does this when I launch it now
Well, when you click on a joker it makes a sound, isn't there a way where I could setup a joker.highlighted variable there ?
maybe, there's probably something in functions/button_callbacks.lua you could inject into
that's a known issue, I think there's a fix that was discussed in https://discord.com/channels/1116389027176787968/1213838204491399218 the other day.
Anyone knows what function is called when you click on a Joker ? I can't find it
i like it
Yeah but for it to work...
I mean, I could do it to a random joker
I guess that works too
The rule is that we have to keep all code and discussion of it in modding (all I did was check pinned messages), I don't need the image anymore.
I would be hard pressed to say that the rules posted in the forum do not apply to this chatroom
It's probably related to clicking on any "sell-able" card. When you click on it, it likely gives information regarding the card that you could use to determine if it's a joker or not.
Probably this?
function G.UIDEF.use_and_sell_buttons(card)
If you need all situations, you likely need to do buy scenarios as well. That's gonna be in the UI_definitions.lua file also.
Alright I'll check this
Hey all! Is there a current mod, or one being worked on, that would allow me to manipulate the jokers available in a run? (Pick and choose basically which are unlocked)
If someone hasn't built that yet, I will need to build it for my project. If someone HAS built it, please let me know so I can scrap it for parts ;)
Awesome Rooby, could you keep me up-to-date. I was thinking about building it for some content Ideas I have, but I'm far from any kind of expert in modding
Neither am I!
I'm actually looking through the code right now to see if there is a pre-determined list of jokers that are available to a seed, as I just witnessed someone roll somewhere north of 300 times in one run without getting a specific rare one.
There are only a few cases like that
Some jokers have preconditions for you to see them in shops, but save for challenges there is no list of "banned" jokers just for that seed, although the joker order is dependent on the seed
Would making something count as a wild rank be possible?
Hypothetically yes it would be, and that's a plan that me and @rare hill have for down the road for ShamPack once we figure out a proper way to implement it
Awesome
I was trying to think of a better effect for the stone joker cuz just being chips per stone card is really sad, so I thought making Stones count as Any Rank instead would be an interesting effect
It was definitely unlocked, that's not the issue.
It depends on implementation but something like that can work
Is there a reason why Baron wouldn't have shown up besides that?
also it took me a moment to figure out why I recognized your name-- I played through Enigma mod with a couple of my buddies a few years back, so it's great to see that you're actively modding stuff
Eyo! That’s super cool!
Only if you have a copy of Baron already and don’t have Showman
Neither of those conditions were in place.
Enigma is kind of on the backburner, especially since even more terraria updates are coming, and I have lots of other projects I’m passionate about, but it might come back at some point! I have very cool ideas for it
But also it’s rare, so 300 rerolls without Baron is probably just bad luck
I already make a joker that (sorta) makes face cards a wild rank.
Interesting 🤔
Re-Logic simply cannot stop making final updates
Very true
The wording is a bit weird on that description, if I was to comment. I'd try to match the wording with that of "Smeared"
but yeah, initially we had the idea of an enhancement that would merge cards together and have them keep both ranks, but that evolved into sewing two jokers together and enabling some truly insane stuff
yup that'd be totally doable, you just have to inject code into stuff that checks rank
I was thinking more of like "If you play it with a pair, it becomes 3 of a kind, two pair becomes full house, a straight with one number missing becomes valid, etc"
and also it triggers all jokers that look for specific ranks ofc
I mean, that'd be a side effect of what I described
You probably know better than most. How hard would it be to create something to manipulate the availble jokers for a run? I have this content idea I'm burning to do, but we need to be able to basically limit the pool of jokers uniquely for each person
nice!
the hardest part would be the straights I think
I would probably have to look at how Shortcut does it
and we came to the conclusion that "sure it'd be fine for the base game, but what about Modded Ranks"
because once you start having to make it work with other people's mods
what are people cookin
that's when it starts to get really muddy
yeah I can imagine that
one moment I know where to send you
With a mod probably not too hard
You could do it with custom challenges
https://discord.com/channels/1116389027176787968/1210976027036352582 this for sure has modded ranks
Makes sense, I'll dive more into it
& then for ShamPack, we're doing goofy stuff like "Mild Cards" and putting an equivalent of Perish Song onto cards/jokers
is there a fully fleshed modloader yet?
uh oh
Balamod is the one that more people seem to be gravitating to as of late because it's more feature rich
i'd say 2 and a half, lovely is kind of like half a modloader
yeah, I used challenges to test when I was tweaking jokers
I think there's plans to merge them at some point
Yeah that's kinda why I said Imposter Syndrome sorta makes face cards a wild rank.
A mod like this would either check with all the jokers that check for specific ranks on cards and carve an exception for if those cards are wild values cards (incompatible with other mods but easier) OR you'd rework some other part of the code that all jokers rely on to check for a card's value (makes modded jokers work with this, but signifigantly harder to code).
ah nice
and, more importantly, it uses injection rather than overwriting entire functions, which is enormously better for compatibility
mmmhmmm
it's non-destructive which is going to be WAY better for the people actually writing the mods
I have experience patching stuff in slay the spire so injections should be easy to handle
I'm just an artist who has very surface level knowledge of programming
https://discord.com/channels/1116389027176787968/1215516228525760543 Community Joker Pack is open for contribution and would be a great way to get your feet wet
my only worry is I have zero Lua experience so this is gonna be tough to get into 😅
I think I will wait until the mod loaders merge before getting into stuff though
if you have programming experience it won't be too bad
lua is a ridiculously simple language.
well, depending on how ambitious the stuff you want to try is
Lua is actually easy. I literally picked it up for this game. But I've also been programming for work for 6 years now.
as with anything trying to do something crazy is gonna take some work :p
I have only done object oriented programming before
You done python? You can do Lua
I have parely done any but yes
Javascript?
honestly you should still be pretty okay for simpler stuff
with just fundamentals from those
nice
Yea, it's in reality simpler
I've only done programming in MATLAB and I can look at a lot of what has been made, and be able to loosely understand what is happening and why
Matlab is awful.
I have no context for how bad it is in comparison to other stuff :^)
If you ever have the need/desire, try python. It's incredibly easy.
I've done x86 Assembly, and I still was more annoyed with Matlab.
I've heard whispers that MATLAB is like, similar to python, but I have no clue how true that is

It looked similar to Python the last time I saw matlab code
do you guys often talk about game design stuff in here for things to make mods about?
there is also whispers of official steam workshop support, I don't know how true this is, but I think if you're interested in making mods for Balatro, it would probably be good to just make something and be ready to port it later; ShamPack was initially on Steamodded and it didn't take too long for it to get ported to Balamod
I'll believe it when I see it. People also saying r2modman support.
people come up with ideas in #1155557846805643434, in here, or in #🎨・fan-art, and then the aforementioned Community Jokers Pack is also a place where ideas are being shared, with external efforts being made to direct people towards it
well I mean, one of the devs of that is here and has been active iirc, so I think that one is more realistic
I feel like straights really need some support in the deckbuilding front
yeahh
the only real way to make your deck better at making straights rn is Jokers
tarot cards kind of
Stone cards could be a way to do that but idk how to phrase it
+50 Chips. When played, counts as any rank besides those of other scoring cards
Stone cards are dirt rn too
i thought about making rocks into an actual viable build but I'm going to wait until I can devote more attention to a project
Late game is dominated by red seal + hand retriggers.
yeah, and most good late game builds involve playing hands that need all 5 cards
i was going to add hand types with rocks but it would require rewriting some UI functions
and im not a front end person
Opposite really, High card builds are top. You want larger hand size to have more hand triggers.
oh yeah, besides the insane runs to get to the int limit
I meant for viably winning the game and getting a few ante's into endless
high card can get there sometimes but most of the time the way involves 5 card hands
ante 12+ roughly you can't do anything but hand triggers except maybe a crazy triboulet build
it depends on the jokers you see early
if you don't find any ways to buff high card early then it's very hard to do
I don't think it's a build you can force yourself into, but maybe I'm wrong
most you can do is spam roll for mine and baron
and work toward kingifying your deck throughout your run
you don't really get enough money early enough to be able to do that consistently without losing the run tho
yeah forcing builds in general is not the best
but there are a surprising number of jokers that support high card well
maybe we could fix this in shampack at some point, with our own strange ways of making stuff
early shoot the moon is my favorite way to approach it
(talking about ante 8/stakes btw not endless)
Gonna note for lua, it's pretty much "another language", but with a few oddities:
- Everything's either a basic value or a table. No arrays or dicts here, they're the same thing, a table.
- Arrays start at 1. I don't like it either.
- comments are
--stuffand--[[stuff]], optionally--[=[stuff]=]
oh, and a bunch of stuff is replaced by words - && is and, if(){} is if() then end, etc
is shampack a community pack or something you're working on yourself?
a little bit of both, if suggestions are REALLY good we'll consider adding them but I generally want to keep the mod balanced within itself
I'm currently making edits to my ideas list so I can post it and get feedback from folks
Anyone know what code I can point to that gives ❌ to cards when they are debuffed
Does anyone know if it's possible to convert a Balatro save from a modded Nintendo Switch to a PC save and vice versa? I've seen online for some other games it is possible if the devs use a similar format for storing save file data itself (just the wrapper/container the save data is inside is different from platform to platform.
check the blinds.lua file
not at a computer rn so I can't be more specific
does anyone know what mod includes math_homework.png? im apparently missing it
Why do custom challenges show up as locked for me?
ah i see, i missed the assets folder, thanks
Nvm, figured it out 👍
Hmm, so I'm trying to do something silly but I'm missing something. I am trying to make there be zero jokers available to play with. I have cleared the G.P_CENTER_POOLS['Joker'] table, and see that it is still empty when the first shop loads, but there are still jokers, and they still score correctly.
what jokers? If it's just the default Joker, then that's just the game using the default fallback for the joker pool
No, it's many jokers.
I'm not sure how to do this, but maybe take a look at what the jokerless challenge does
That just sets a flag. It doesn't actually remove them. There are specific "IF" checks for that I think.
I think theres a probabilty rate you can tweak to not get them to show up in shops
GAME.joker_rate
what happens if that's 0
It is a probability tweak, my bad, but that's not really what I'm going for. I'm working to remove them, to add only one back or something.
G.P_CENTER_POOLS['Joker'] seems to be what Steamo is using in his joker API. I'm wondering if it's conflicting with that.
are there any skin mods for the cards?
does anyone know if the steamodded_injector.exe is safe to use?
because it's wigging out my anti virus
it's safe, it only gets flagged due to how it works
it probably get's flagged because it's an executable made from a python program. a lot of malware is also distributed in that form so most antiviruses auto flag it just in case.
question, anyone have any sample implementation code for how to properly do legendary joker graphics? (i.e. the background, then the transparent joker)
how strong is this?
its a bit much
also not a fan tbh
would be neat if it instead it started as a small bonus that grows per skip though
tracks it like throwback does so it scales later
also yeehaw, i just need to figure out how to do legendary joker graphic implementation
It could be like Satellite, where you get money per round but get more per skip.
yeah thats what i was thinking
Or more per type of skip tag you've gotten in the run
that also could be neat
good idea, will implement
i like the idea of unique tags but that might be annoying to implement
but if you did that'd be neat with stuff like the tag jokers
Lemme see how Satellite works.
well if you didnt want to track tags you can just look at how throwback keeps tracks of skips
yeah i'm doing that
Should be super easy in that case
The game has an internal variable for how many times you've skipped a blind
It's annoying that lua doesn't have a built in json handler.
Just need to append the Card:calculate_dollar_bonus() function to give a set amount of money equal to base + (however much it increments)*G.GAME.skips
If I wanted to use json readers in a mod, I'd need to have the mod come with a install of some sort...
yeah its annoying
You could probably just reuse the save file stuff
but its not exactly safe
hm
is there any other code that showcases something being forced to discard besides the hook?
im trying to randomly discard 2 cards when played, like the blind, or even being able to discard the last two cards in the players hand when a hand is played
if anyone could help it'd be appreciated
i have the context correct im pretty sure, in g.Hand it's just getting the forced discard code to work is the problem
Is there a possibility for me to have a .exe for balamod and a .exe for Steamodded?
Oh geez, that's a lot of steps
I'll come back to that later
Has anyone else had the issue 'balamod-v0.1.10-windows.exe' is not recognized as an internal or external command,
operable program or batch file. when running the command in terminal?
Is that just the .exe file? I've been a little confused on the github page and I feel stupid lol
nah, i'm talking about the .cmd
it worked when i ran the "balamod-v0.1.10-windows.exe -a" string in .cmd with the .exe downloaded
Strange. I have the .exe downloaded and ran it with no luck
did you open up the .cmd in the downloads folder?
Not sure what you mean. Sorry, Im not familiar with doing my mods this way. The .exe is in my downloads, and I opened up .cmd through the search bar and ran that code.
yeah i did the same thing, dont know why its not working (I also have 0 clue how command prompt works)
I wonder if its a compatibility issue with the new update. But that wouldn't make sense why it wouldn't even run.
making this $3 per skip because it was strictly worse than rocket lmao
Hey, I'd like an opinion on something
When I have multiple cards with the same art in the Balatro Archived mod, would you like to have the version in the corner of the art like so, or would you like all of a version to have the same colored border
(Mind you, they'll have the version in the name: [Eight Ball (0.9.3)])
I thought so too. I wanted to have a small seal in the corner but It'd be too hard to read
have you gotten silver deck done yet?
unfortunately no
yeah it seems really difficult to make a random joker
because nothing does that base game
wait do you have access to the 0.8.8 code?
doesn't judgement do it?
I think they mean a joker with a completely random effect
unfortunate discovery tonight lads: emojis do NOT render in Balatro's text engine.
then make it
anyway it seems like actually implementing emojis would be WAY MORE WORK than it is worth
and it would all be for the sake of a really stupid and incomprehensible joker
debating on whether or not I want to put a bounty out for this. On one hand, it would be REALLY fucking funny, on the other hand, I don't know that it would be worth spending money on this joke in particular
I had an idea for a custom challenge and it was suggested I post it here, to see if it's worth trying
Here's Looking at You, Kid
Start with 4 Eternal, Pinned Blueprints
Negative jokers can't appear
Banned cards: (list of blueprint-incompatible jokers), Brainstorm, Blank Voucher, Antimatter Voucher
Banned tags: Negative tag
Credit to @woven sonnet for improving it from an idea to an actual format and suggesting I post it here
hm
this joker forgot to install Counter-Strike: Source 
that's what i have it set to if it doesn't have art yet
oh that's custom? kino
i like it a lot
does its job well of saying 'HEY DUMMY: THIS IS UNTEXTURED'
I might be stupid, but
If a mod says it needs Steamodded, does Balamod work
And do any mods say they need Balamod and if so, vice versa
they're two different modloaders
like fabric and forge
mods that work with one are incompatible with the other
i cry blood
why... in the infancy of this must the forge/fabric divide happen

thank you though
because that's the way the balatr os
i'd say more mods use steamodded rn but that could definitely change
i'm looking at Awesome Balatro and like
the balamod mods are literally
- sprite API
- French translation
- slutty joker
- straight hand renamed to 'gay'
okey dokey installing steamodded
it's funny like that
i expected sixsuits to be a lot more jarring but honestly it's a LOT of fun
reverse moon and star are clever additions
slight buff and art for blood pact
might make a website template for joker mods
that shows them
id use it
what are people's favorite gameplay altering mods (decks, jokers, etc) to play with right now...? having a hard time choosing which ones to install so i'm curious what people like to play with
mine 🙂
those are extremely cool looking :0
this is just a free win if it gets eternal lol
help im stupid
SixSuits imo
it adds some interesting strategies
i would imagine that this joker, much like all others that destroy themselves, would be coded to NEVER become eternal lol
I tried an all stone deck
Misery.
oh are foods not eternal compat dam
yeah, they're not
any joker which destroys itself cannot be eternal
i believe you can't even try to force eternal on through challenges or anything--they just instantly remove it
but i could be wrong there
yeah it is
ah shucks i should implement that for box of stuff
time to steal from myst

wait i forgor you register jokers differently
is it just as simple as sticking "eternal_compat = false" in there
recreated the bg for it by copying the shader from the code
it's not out yet
?
I mean like when they show in the shop theres a chance that they have effects
Like negatives poly foil
that's there by default
Sadly the design is currently bad
Specially the reverse moon
It would be better if they put it inside a circle
With diferrent color
Yo
Is it possible to make a joker card that do this effects -
1 joker card = if you have 0 discard you can still discard with a cost of 5 gold
Like that?
It would be also cool if theres a joker card x5 like bloodpact for spades clubs and diamonds
Then we just ask ai for a good name for spades, clubs and diamonds
Heart Card: Blood Pact
Clubs Card: Thorned Tribute
Diamond Card: Gemstone Offering
Spade Card: Dark Covenant
cool criticism! have you given it to the mod creator
Nope hahaha just got started using it but just hope to get it more better i found some really good gfx designer here
yo
groovy
Yo bro read
nah
My suggestiin
i don't think i will
Hahahaha
what does x y and z do
that is a good question
Cmon check out my suggestion hahahaha
i don't want to add them
Well someone might hahaha but still its really cool to have that
But the first question i have
Is it possible?
Is it possible to make a joker card that do this effects -
1 joker card = if you have 0 discard you can still discard with a cost of 5 gold
maybe dont ping and pester people for mod requests
oh this is for the website?
yeah
hell yeah
very stylish!
oh i should make it display rarity
i'm glad you chose to use among us for this
📮
the effect
yeah it's like. wretched, but in a positive way
it's wretched in that i look at it and just see red, but also i think it's a really interesting effect that fits what it's going for
didnt have the first hand limited before but a friend suggested it
oh hell yeah, another legendary!
did you get the like, floating visual effect to work properly?
i've been wanting to make my own legendary but have struggled to do that myself
alas!
uhh, like in what context
Faceless Joker comes to mind, but it depends on what exactly you're looking for
i thought faceless joker procs on discard?
im more refering to the action of discarding cards, like the hook blind
ohhhh
well, i know that Ramen tracks that
like if Hook discards 2 cards, ramen loses 0.01x mult twice
aye, i just want to figure out the code that discards the card in the first place
gotcha!
if i could replicate the hook effect on a joker thatd be swell
okay, yeah, now i understand lol
that's a tricky one. gimme a sec and i'll see if i have a decent answer for you
grepped for "hook" and got this
if self.name == "The Hook" then
G.E_MANAGER:add_event(Event({ func = function()
local any_selected = nil
local _cards = {}
for k, v in ipairs(G.hand.cards) do
_cards[#_cards+1] = v
end
for i = 1, 2 do
if G.hand.cards[i] then
local selected_card, card_key = pseudorandom_element(_cards, pseudoseed('hook'))
G.hand:add_to_highlighted(selected_card, true)
table.remove(_cards, card_key)
any_selected = true
play_sound('card1', 1)
end
end
if any_selected then G.FUNCS.discard_cards_from_highlighted(nil, true) end
return true end }))
self.triggered = true
delay(0.7)
return true
end
aye, yeah that was the code i was referencing
problems are two fold
- i am smallbrained
- it seems to be pretty tied to the blind itself (probably could chop out things like self.triggered true) and trying to jam variations of this code into my joker crashes the game multiple times and back
the hook isn't doing anything particularly special, it just uses the same functions the button callbacks use to highlight and discard cards, I imagine you could apply that to a joker too.
aye, i dont doubt that either, im just trying to figure out a way of making it not crash, and also figuring out the correct context to call it under
right now i have it under context.cardarea == G.hand and individual, and other little tests i ran seem to put it where it needs to proc, but ill go try to pull an error code from it
https://github.com/notmario/balatrowebsitetemplate anyways, this is on github now
yeah, works fine until i play my hand, then i get it screaming about trying to index a boolean value
i pretty much plugged this code in trimming some bits like self.triggered and things i dont think would affect what's being indexed here, all under individual and G.Hand, any idea why this might be screaming about trying to index a boolean? does it not see G.hand here?
i don't know
what values are you indexing to start with, since that's what the error's about.
trying to index the hand, and then trying to randomly pick from them
okay, so it seems to not be able to index G.hand.cards
alright yeah, tried to run a few tests, couldn't even get the game to startup on my end. turning boss blind code into joker code is some weird dark magic to me lmao
okay now im just confused
simple little debug code
if self.ability.name == 'Mind Mage' then
print("HELLO WORLD")
end```
console output after like 2-3 hands played
HELLO WORLD
HDHHELLO WORLD
HRLD
H

what??
you know i wonder if maybe this isn't dark magic to me, but just dark magic in general
what the christ is it grabbing
now i swapped it to
print(v.rank)
hand
121
2
3
4
5
6
7
8
1
2
3
i dont think im hooked into the right context
i can't believe you discovered the secret card rank of 121
stoocne card
ace^2
ohh???
i got it to work????
sort of?
i got the discard part down but now i am eternally discarding
uhm
suffer the consequences of your actions
okay so not eternally discarding, just discarding for 15 seconds
???
i didnt even select anything
this is some real cursed balatro hours
this is so strange
it really does take like 15 seconds to discard even if it seems likes its hung up
are you still proccing under context.individual, because that runs for each card and it would discard for a while if you where discarding 2 cards per card.
it is proccing under context individual, just not two cards at once
i did get what i wanted though, so ill just put in a simple counter
what is the effect you're after exactly?
mostly just the discard, discarding 2 at random would have been nice but i can work around with what i have
if you just want to discard 2 at random, context.individual is probably wrong. you're probably after context.before or just the standard on joker effect.
ill try moving it to before
hmm
well now moving it to context.before seems to not have it do anything at all
you might need to do the effect as an event for it to work properly, if you haven't
i'm calling it with add_event, yeh
ill try bumping it out to the normal joker trigger
back to triggering forever, but it seems to be working again
if self.ability.name == 'Mind Mage' then
for k, v in ipairs(G.hand.cards) do
G.E_MANAGER:add_event(Event({ func = function()
local any_selected = nil
G.hand:add_to_highlighted(v, true)
table.remove(G.hand.cards, 1)
any_selected = true
play_sound('card1', 1)
if any_selected then G.FUNCS.discard_cards_from_highlighted(nil, true) end
return true end }))
end
end``` code for context, i do recognize at the moment this does discard the entire hand
the for loop should be inside the event i think
also you shouldn't be removing from G.hand.cards, the hook removes from a local clone of G.hand.cards
so that one card isn't selected twice
where should i be removing it from?
a local clone of cards called _cards, that you can make with an additional for loop, I think you've mixed up the 2 for loops inside of the hook's implementation
ah, that explains why the hooks creates a local copy of it
yeah, for loop 1 creates a copy, then for loop 2 runs 2 iterations (1 for each card it selects)
my only question is what does the card key do here in this snippet?
local selected_card, card_key = pseudorandom_element(_cards, pseudoseed('hook'))
corresponding with table.remove(_cards, card_key)
it's the index of the selected card
ah, fair enough
alright, ive modified the hook code again to mostly work with my code, but now its still discarding my hand completely even with a counter
maybe ill move it back to context.before now?
can't hurt to try
discard still works but still discarding an ungodly amount of cards
trying now to get it to spit out a little message to see if its doing it for each card or just one instance
i sure picked a good day to pull an all nighter
you should be able to do that by adding a return statement to the calculate_joker branch.
you know it would help if i deleted my existing discard code and wondering why the heck nothings changed

happens to the best of us
okay yeah, so context.before does not do anything
you might need to add a check to the cardarea being G.jokers
thanks for the suggestion! very fun one
OH?
IT WORKED?
WORM?
almost works at least-
it discards the 1 and the 3
ill just have to do some index fixing
it ended up having to be in G.jokers and joker_main
you're probably after context.after, joker_main is what the observatory voucher uses
hmmmm
it only took 5 hours but another one down
wasnt sure on right most or left most honestly, left most is more punishing i think but
id like to hear what ya'll think
it doesn't really matter, since the player can change the order of the cards in their hand
very true
thinking about it this was 20% me not knowing what context to put things under and 80% me not knowing how to code lua for jack
I do think it would be more interesting if you could get it to happen in context.before though. because then it could synergize with raised fist
i appreciate your patience and help jo
ill do a little more digging to see if i can rig it into context.before
strange enough i cant get it to pop up a message at all in context.before even with some simple triggers
that's odd, midas mask happens in before and has a message so it should work.
full page of jokers! will release shortly
ah i think i might have had context.before not nested correctly
okay yup!
now it works with before
is self.rank 1-13 for playing cards?
unfortunately still doesnt work with raised fist but its the thought that counts
oh i can just check raised fist
iirc its 2-14
far too niche i think
it might be more terse if you instead just checked the chip value, since that already kind of corresponds to the hand's sum. not sure if it's exactly what you're after though
oh hmmm
that becomes harder to manipulate though
because you have to keep track of your chip buffers
i feel like this sounds more convoluted than it is because of the repeat of "the last digit of"
maybe "Earn $5 if your played hand score and current money have the same final digit"
true
assuming i'm understanding it right
i'm not a programmer yet but i am a writer so at least i can try to help on that front :,)
could also try "end on the same number," imo that's more intuitive sounding
could probably tweak further, i'm sleepy, but that description definitely made me scratch my head
yeah, good points
has anyone started working on a points preview mod?
"If the final number in your current money and the score for the played hand are the same, earn $5"
i'm too tired for this lol
good luck though! hope this helped
yeah thanks
yeah that's much clearer sounding
👍
well, actually, "sum of the played hand's values" is still throwing me...
question: wouldn't it be more overall useful if it was a smaller payout but multiplied for any matching digit? i feel that could be more fun since it'd be more likely to trigger and you could more easily manipulate/play around it (for instance, by ensuring you have double or triple digit money)
Ok finally got the injector to work
me when i make a joker but can't actually add it because i can't sprite it
rip
https://notmario.github.io/MoreFluff/ released my joker mod, has 15 jokers currently (also a demo of the joker mod webpage template thingy)
is jester not a strictly better sly joker?
Really cool webpage
... why is sly joker so weak
idk
Does anyone have a file example for a texture swap?
i even had the art ready
rip
Is this the file structure I need?
And then I just add "8BitDeck-negate.png" to both 1x and 2x right?
gonna try setting up the jonkler webpage
if you have any issues lmk
Because ultimately I just used the vanilla playing deck and change all the face cards
Anyone knows what causes the spectral cards to have this shiny effect ?
It'll be one of the shaders
likely one of the shaders yea
i never actually set up a github page before wew lad
oh wew
any particular way youd prefer to be credited btw
uhh
something at the bottom maybe
also; you can change the background colours and the way everything looks by editing these values
how can I support other languages? I'm using steamodded
Alright thanks
Nice nice thanks
oh that's unrelated to the question you asked
Maybe I'll use it too
if you do, use the files from
https://github.com/notmario/balatrowebsitetemplate instead
because i edited it a bit for my website
is that... comic sans mono?
i love it
yeah, comic mono
why have i never thought to look for a mono version, i only knew about the "stylized" version of it called comic neue
yeah comic neue is also nice
How do you make grey text ? ({C:grey}{} doesn't work)
{C:inactive} iirc
inactive
Like I know Joker is "jkr" but I don't know what 8bitdeck is
This is what I have so far
one of the best ways to learn is to look at existing mods and understand what they're doing

