#⚙・modding-general
1 messages · Page 12 of 1
I want to mod some jokers from #1210093881459216414 message into a mod, but I'm not sure where to start with very little experience in lua.
Do you have programming experience?
a bit, I'm majoring in Computer Science in college...
you can look at the source code for other mods
and also inspect the game's source code by opening it with winrar
Trying to make Unlucky crow's ability triggers to increase its xmult (wheel of fortune doesn't trigger, cards with a chance of destroying themselves (currently only glass cards) are destroyed)
if self.ability.set == "Joker" and not self.debuff then
if context.cards_destroyed then
if self.ability.name == 'Unlucky Crow' and not context.blueprint then
--if glass card destroyes itself, counts as a chance of destruction card being destroyed
local glasses = 0
for k, v in ipairs(context.glass_shattered) do
if v.shattered then
glasses = glasses + 1
end
end
if glasses > 0 then
G.E_MANAGER:add_event(Event({
func = function()
G.E_MANAGER:add_event(Event({
func = function()
self.ability.x_mult = self.ability.x_mult + self.ability.extra*glasses
return true
end
}))
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize{type = 'variable', key = 'a_xmult', vars = {self.ability.x_mult + self.ability.extra*glasses}}})
return true
end
end
elseif context.using_consumeable then
if self.ability.name == 'Unlucky Crow' and not context.blueprint
local bad_luck = 0
--if hanged man is used on glass cards, counts as a chance of destruction card being destroyed
if context.consumeable.ability.name == 'The Hanged Man' then
for k, val in ipairs(G.hand.highlighted) do
if val.ability.name == 'Unlucky Crow' then bad_luck = bad_luck + 1 end
end
end
--if wheel of fotrune is used, check if its ability failed ("Nope")
if context.consumeable.ability.name == 'The Wheel of Fortune' then
if
end
if bad_luck > 0 then
self.ability.x_mult = self.ability.x_mult + self.ability.extra*bad_luck
G.E_MANAGER:add_event(Event({
func = function() card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_xmult',vars={self.ability.x_mult}}}); return true
end}))
end
return
end
end
You probably want to piggyback off of the use_consumable, and do the wheel of fortune logic, as you see here. This will be different results.
yeah, if it's just affecting the mechanics of other things in the game you probably want to modify the code where those things are done, using next(find_joker('Unlucky Crow')) to check if the player has the joker (see get_straight in functions/misc_functions.lua for an example of that with shortcut and 4 fingers)
but won't that have a different result to the actual roll?
what is "most_used_hand_level"?
also which line is which
also is this for that one cut deck
I'm trying to figure out exactly what went wrong when porting the code
can you send the definition of the deck
fixed as of this commit, ended up being easier than I expected. https://github.com/ethangreen-dev/lovely-injector/commit/6a863adc8dbd21037f71dd8d1b7531040650cb2e
yeah that would do it
when writing the deck itself
maybe if i put it to 3 it'll work
I know the game loads, i just need to load into the thing
maybe figure out how exactly to show which hand is the most used hand
it's shown in the profile stats
Yeah, but i mean when selecting braided deck
This is from a screenshot from old YT videos
good news though
oh you can probably do something with localisation arguments
the (#1#) things in the other decks
The only problem with trying to convert the text of the card is that it's a different format altogether
I could try porting it just to see what happens
that got changed to first hand played before being removed btw #🕹・game-discussion message
ABBTHBAWJTHWBAWBTJHBTAW
Oh cool, there's two versions?
I'm archiving every version so that info's helpful
can't you just dig through all older game versions
I mean I can get some of them through SteamDB + steam console, but not every older version
yea thats what I meant
Furthest back you can go is 0.8.6b
I can't get anything before that, meaning I have to use videos for stuff like 0.8.3
I see
unless something like the holy grail of Balatro comes in
thunk does not use git so I doubt that lmao
I'm just trying to check if the Wheel Of Fortune tarot card says
and add xmult to Unlucky Crow if so.
I know how to code, but I don't know where to go or what to do to start modding can anyone help me with that?
Could someone help me make the sun?
I'm making celestial cards similar to back hole but not as strong/requires more set up
The effects of interested:
Stars: three random upgrades then one random down grade
Sun: enhances up to 2 selected cards into gravitated cards. When this card is picked from a pack, instead add it to your consumables.
Gravitated: levels up the hand it's scored in (can't be repeated) then the card is destroyed
I feel like if something affects playing cards it should be a tarot or spectral card, hacking it into a planet card just feels weird
In my mind i feel it could work because it increases the levels (also because there are so many more planets than tarot cards)
The celestial packs feel very dry
new joker just dropped
Motörhead
im thinking something like shoot the moon but for each ace of spades in hand
is there any quick crash course or template for adding a new card [a spectral card in particular] with steamodded
I'm trying to add a mod that I'm making to the game but am getting a crash report. I am trying to debug what's wrong and put the lua code below.
local localization = {
unlucky_crow = {
name = "Unlucky Crow",
text = {"gains {X:mult,C:white}X#2#{}mult",
"when Wheel of Fortune fails",
"or a card with listed probablilty to destroy itself is destroyed"[[[[MISSING COMMA]]]]
"currently {X:mult,C:white}X#1#{}mult"
}
}
}```
was just a missing comma yeah, the error log will usually point you to where it broke from the code
Would be cool if you could hijack jimmys speech bubble to animate an active joker or consumable card
Damn, I sometimes forget to realize that forgetting a small detail can cause something drastic like an error...
well its better than the program guessing what you meant, and doing stuff wrong, and then you figuring why its not behaving as expected
How do I make my custom joker a non-nil value? do I need to initialize/insert it into a table?
(The lua code so far...)
How do I actually get steammodded to work? I did the setup here: https://steamcommunity.com/sharedfiles/filedetails/?id=3175609191. All I've done is insert the lua debugmode mod thing into the mod folder and Balatro will start (I can see the loading bar) but then will immediately crash.
Even if I don't put a mod into the folder it still won't load so I'm wondering what's up
Where can i find the code for the main jokers
Someone really just said
, huh 😭
(my steammodded isn't working now and I need to reinstall it, meaning I have to mess with all the virus protector stuff again)
WE'RE BACK 🙏
When you define unlucky_crow joker the slug is empty.
This is what the game adds j_ to.
Also looks like the joker isn't registered but I'm not sure if that line of code is still needed
I fixed it before but now I have it displaying "xERROR mult instead of stuff"
🙏
The way that the config is set up is probably where the error is.
Although it's hard to know
Try extra = {x_mult = 1, extra = 0.1} and have all the references to those vars have extra at the start (like self.ability.extra.x_mult)
I kinda wanna make a mod but i have 0 experience scripting in lua and just like
modding in general
what im saying is i think a modding guide somewhere would be nice
Can someone please help me with the steammodded thing. I just redownloaded it and did all the steps again and it still doesn't work for some reason.
What happens when you open game
I just gives me the loading bar and before fully loading just closes
it'll load like halfway
Just uninstall from steam it reinstall it and mod it again
Make sure no red text in terminal thing
I've reinstalled it all already. What terminal exactly?
I'm new to the Balatro modding community, so I'm not sure how to make sure these lines of code don't cause the description text of the "Unlucky Crow" joker to display "xERROR"
Any stuff that popped up I just pressed "run anyway" on
Is this in a discription if a joker
Yep, it is.
I'd want the "x1 mult" to update when its mult increases, though...
Well idk then im new to lua
Took like 4 uninstalls and reinstalls but it works now! Thanks
It works as a read though
Ofc
What does your function Card.generate_UIBox_ability_table(self) look like?
Thats where youre supposed to initialize the local variables that get used for localization
it looks like this:
function Card.generate_UIBox_ability_table(self)
local card_type, hide_desc = self.ability.set or "None", nil
local loc_vars = nil
local main_start, main_end = nil, nil
local no_badge = nil
if self.config.center.unlocked == false and not self.bypass_lock then -- For everyting that is locked
elseif card_type == 'Undiscovered' and not self.bypass_discovery_ui then -- Any Joker or tarot/planet/voucher that is not yet discovered
elseif self.debuff then
elseif card_type == 'Default' or card_type == 'Enhanced' then
elseif self.ability.set == 'Joker' then
local customJoker = false
if self.ability.name == 'Unlucky Crow' then
loc_vars = {self.ability.config.x_mult, self.ability.config.extra}
customJoker = true
end
if customJoker then
local badges = {}
if (card_type ~= 'Locked' and card_type ~= 'Undiscovered' and card_type ~= 'Default') or self.debuff then
badges.card_type = card_type
end
if self.ability.set == 'Joker' and self.bypass_discovery_ui and (not no_badge) then
badges.force_rarity = true
end
if self.edition then
if self.edition.type == 'negative' and self.ability.consumeable then
badges[#badges + 1] = 'negative_consumable'
else
badges[#badges + 1] = (self.edition.type == 'holo' and 'holographic' or self.edition.type)
end
end
if self.seal then
badges[#badges + 1] = string.lower(self.seal) .. '_seal'
end
if self.ability.eternal then
badges[#badges + 1] = 'eternal'
end
if self.pinned then
badges[#badges + 1] = 'pinned_left'
end
if self.sticker then
loc_vars = loc_vars or {};
loc_vars.sticker = self.sticker
end
local center = self.config.center
return generate_card_ui(center, nil, loc_vars, card_type, badges, hide_desc, main_start, main_end)
end
end
return generate_UIBox_ability_tableref(self)
end
end
What about your localization
cultistJoker = {
name = "Cultist",
text = {
"{X:mult,C:white}X#2#{} Mult per hand played",
"Resets every round",
"{C:inactive}(Currently {X:mult,C:white}X#1#{C:inactive} Mult)"
}
}
And your joker definition
cultistJoker = {
ability_name = "Cultist",
slug = "mmc_cultist",
ability = { extra = { Xmult = 1, Xmult_add = 1 } },
sprite = { x = 8, y = 10 },
rarity = 3,
cost = 8,
unlocked = true,
discovered = true,
blueprint_compat = true,
eternal_compat = true
}
elseif self.ability.name == 'Cultist' then
loc_vars = { self.ability.extra.Xmult, self.ability.extra.Xmult_add }
else
This is my uibox function for reference, where the first one is #1# and the second one is #2#
quick question, is it possible to load both balamod and steamodded mods at once yet?
I mean i cant load forge and fabric at the same time so im assuming no
It took me so long but I finally found and fixed the bug in my code. I forgot to end the functions in the correct spots and the function Card.generate_UIBox_ability_table(self) was inside the function SMODS.INIT.BirdJokers().
Can I still progress up antes with the rebalance mod and stuff
Testing Unlucky Crow's functionality, I haven't coded in the Wheel of fortune interaction yet (It should gain x0.1 mult if wheel of fortune Displays "NOPE")...
How to INSTALL MOD
Look in the mod forums for the mod you wanna install, then figure out which modloader it uses
download that modloader according to the modloader's instructions
then put the mod in your modloader folder
Can anyone point me to wherever in the code base the Blind scores-to-beat are stored? Can't find them anywhere
if you grep for get_blind_amount you should find it
Just thought
Imagine you get the 1/200 on Murphy’s law to destroy all glass cards and you have Glass Joker
Glass Joker + Unlucky Crow is funny together
What’s unlucky crow?
I thought you brought this up in response to this video ^
I love we’re just coming up with mod combos
Mult scaling whenever Wheel of Fortune Fails, or whenever a "chance to destroy" triggers
how many modded jokers are there so far?
I found a strange quirk when trying to mod functionality for Unlucky Crow + Wheel of Fortune. sometimes Unlucky Crow triggers when a wheel of fortune succeeds (it also can fail to trigger when wheel says
)...
are you using this snippet?
ah.
I'm updating the effect a bit so that Murphy's law triggers at the beginning and end of round, but it's a 1/5 chance to get a glass ace of hearts and then a 1/200 chance (might make it a higher chance) to destroy all glass cards
if so, that does a second, unrelated roll for the wheel of fortune check
which looks like the exact behaviour that's occuring here
I'm using something close enough...
...
else if context.consumeable.ability.name == 'The Wheel of Fortune' then
--to be implemented
if pseudorandom('wheel_of_fortune') >= G.GAME.probabilities.normal/context.consumeable.ability.extra then
bad_luck = bad_luck + 1
end
end
...```
Apologies for the ping but what to you is the most notable "Steve" moment or something you think would be great to reference for his art? I was thinking immediately after he puts on The Big Stetson, or the part where he Naruto runs down the highway
No using that saying “fifth glyph” bruh…
having issues with center hook. i've added one joker (op joker) and it works completely fine, but when i do the exact same thing again for another joker it appears in game but just doesn't trigger. any idea what i'm doing wrong?
local mod_name = "Cheesy Jokers"
local mod_version = "1.0"
local mod_author = "ilikecheese"
local patched = false
-- A joker that basically just wins you the game. Just
-- for me to figure out how to add jokers in general
local function overpoweredJokerEffect(card, context)
if card.ability.name == "Overpowered Joker" and context.after and context.cardarea == G.play then
return {
Xmult = card.ability.Xmult,
card = card
}
end
end
local function aaaEffect(card, context)
if card.ability.name == "AAA" and context.after and context.cardarea == G.play then
return {
mult = card.ability.mult,
card = card
}
end
end
local function addNewJokers()
-- Overpowered Joker
centerHook.addJoker(
self,
"j_overpowered_joker",
"Overpowered Joker",
overpoweredJokerEffect,
nil, true, true, 1, nil, nil,
{Xmult = 999},
{"{X:mult,C:white} X999 {} Mult"},
1, true, true, nil, nil, nil, true)
-- AAA
centerHook.addJoker(
self,
"j_aaa",
"AAA",
aaaEffect,
nil, true, true, 1, nil, nil,
{mult = 10},
{"{C:mult}+10{} Mult"},
1, true, true, nil, nil, nil, true)
end
local function addNewBadge()
local file_name = "functions/UI_definitions.lua"
local fun_name = "G.UIDEF.card_h_popup"
local to_replace = "local badges = {}"
local replacement = [[
local badges = {}
if AUT.card_type == 'Joker' and card.ability.name == "Overpowered Joker" then
badges[#badges + 1] = create_badge(" Cheesy Jokers ", G.C.GOLD)
end
]]
inject(file_name, fun_name, to_replace, replacement)
end
table.insert(mods,
{
mod_id = mod_id,
name = mod_name,
version = mod_version,
author = mod_author,
enabled = true,
on_enable = function()
addNewJokers()
addNewBadge()
end
})```
does anyone know which mod makes fps display on top left? I want to disable that
debug thing
i didnt add that
it started to show up when I added green-seal and jellymod
any ideas?
is there no way to disable debug menu?
better name would be appreciated
IT'S BEAUTIFUL
nice
we do a little bit of trolling
The first time I tried to do this I messed up, and accidentally set the SHOP max_jokers to 100
Which messed up a bunch of stuff, haha.
Maybe "Engineer Joker"?
currently have it as magnifying glass
Expansion Box
yessss
expansion pack
i like tht
great idea
that's a great idea, yeah
for me it would definitely be him doing the naruto run with the giant sword, yeah. i'm not sure how easily that would translate to art for Balatro, though. maybe it could be him like, sort of surfing on the truck afterwards?
or, alternatively, it might be interesting to show him playing cards with "Michael" (you know, the elk), since that's the only time in the show that playing cards are referenced--and as you might know, Balatro happens to be a game which uses those
if all else fails, i think that using the Big Stetson could work alright--i think i would prefer when they're transformed into magic kettlebells though, myself, as i think that sounds a lot more distinct art-wise, instead of essentially being "Cowboy Joker"
Steam workshop (for potential future Balatro modding being there hopefully)
Workshop Joker, maybe?
i like expansion pack
How would one convert the Steamodded mod into a Balamod mod? I don't really want to publish a mod, that requires to install a launcher which .exe is giving false positive antivirus check. I have a mod ready and working with Steamodded, but would like to change it to make a support for Balamod
complete rewrite
well not complete but 75% of the code needs to be rewritten into balamod format
Well, the code is basically just 30 strings. But I'm not familiar with Balamod's format
the basics are that instead having a header mods are objects that you insert into a table called mods , and instead of overriding functions you inject into them using the provided functions: inject (find and replace), injectHead and injectTail
I've dm'ed you, please take a look if you have time 🙏
hello. ive installed a few mods/modpacks that include new decks and jokers. the problem is, the quality of all deck textures and even normal jokers seems to be lowered significantly. why?
what mods do you have installed?
alright, i think i found it. it was JellyMod pack. the image inside the folder 2x is the png with the arts (textures) for new cards, but the person incorrectly upscaled the image. if you upscale it in photoshop, u gotta change the resampling to "nearest neighbor (hard edges)" that makes it much better.
i just want to be absolutely sure: is the mod loader a virus?
Where do i see like the main code and descriptions for the vanila jokers
open up the balatro.exe with an unzipping program of your choice like 7-zip
code for most jokers are going to be in card.lua while descriptions are going to be in localizations/en-us
Is it really card lua
Because theres no description for the jokers
And like it doesnt seem correct yk
Didnt expect in localizations
localisations is where all of the text is stored
localizations just means the descriptions for a given language
en-us being us english
I'd like to inject code into this part of card.lua using an external .lua file:
...
if self.ability.name == 'The Wheel of Fortune' or self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex' then
local temp_pool = (self.ability.name == 'The Wheel of Fortune' and self.eligible_strength_jokers) or
((self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex') and self.eligible_editionless_jokers) or {}
if self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex' or pseudorandom('wheel_of_fortune') < G.GAME.probabilities.normal/self.ability.extra then
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.4, func = function()
local over = false
local eligible_card = pseudorandom_element(temp_pool, pseudoseed(
(self.ability.name == 'The Wheel of Fortune' and 'wheel_of_fortune') or
(self.ability.name == 'Ectoplasm' and 'ectoplasm') or
(self.ability.name == 'Hex' and 'hex')
))
local edition = nil
if self.ability.name == 'Ectoplasm' then
edition = {negative = true}
elseif self.ability.name == 'Hex' then
edition = {polychrome = true}
elseif self.ability.name == 'The Wheel of Fortune' then
edition = poll_edition('wheel_of_fortune', nil, true, true)
end
eligible_card:set_edition(edition, true)
if self.ability.name == 'The Wheel of Fortune' or self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex' then check_for_unlock({type = 'have_edition'}) end
if self.ability.name == 'Hex' then
local _first_dissolve = nil
for k, v in pairs(G.jokers.cards) do
if v ~= eligible_card and (not v.ability.eternal) then v:start_dissolve(nil, _first_dissolve);_first_dissolve = true end
end
end
if self.ability.name == 'Ectoplasm' then
G.GAME.ecto_minus = G.GAME.ecto_minus or 1
G.hand:change_size(-G.GAME.ecto_minus)
G.GAME.ecto_minus = G.GAME.ecto_minus + 1
end
used_tarot:juice_up(0.3, 0.5)
return true end }))
else
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.4, func = function()
attention_text({
text = localize('k_nope_ex'),
scale = 1.3,
hold = 1.4,
major = used_tarot,
backdrop_colour = G.C.SECONDARY_SET.Tarot,
align = (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK) and 'tm' or 'cm',
offset = {x = 0, y = (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK) and -0.2 or 0},
silent = true
})
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.06*G.SETTINGS.GAMESPEED, blockable = false, blocking = false, func = function()
play_sound('tarot2', 0.76, 0.4);return true end}))
play_sound('tarot2', 1, 0.4)
used_tarot:juice_up(0.3, 0.5)
return true end }))
end
...
How should I go about doing so?
it is time to go where nobody has gone before
for Steamodded, without rewriting the whole function, you can only add code before or after afaik
This is so funny, nice reference :)
Any tutorials on coding Jokers into the game? Tried looking in the discussion board and came up short 😅
Look at the example mods and other people's code, that's the best way to learn if you don't want to any kind of coding crash course
i am working on a guide for modding! and two other balatro projects and several non-balatro projects and midterms
i'll try to at least finalize adding jokers in the next few days
Good point ;P
I might still need a crash course on Lua, but that's more of a general problem lol
but for now yeah look at other people's code
My only modding/coding knowledge is some relatively baby stuff in GML xD
Otherwise I'm an art boy lol
From my experience Lua is one of the easier languages, but it still took me a long time to learn (and I'm still not good lol)
lua is like python if it was on crack
At least "baby" compared to what I've heard about modding in other games. Rivals of Aether modding isn't easy, but it's FAR from difficult
Because you can extract the game's .exe, it's easy to rearrange the code to make stuff, but I have immense respect for people who make custom code.
That's validdddddddddddd
Idk what's in the realm of possibility, but ik a few Jokers I can reference for some of the ideas I have in mind lol
Also, welcome to the community @upper granite, it's always nice to see new people, especially in the modding channels
Thanks! ^^
Had a lot of fun with the game, so I figured I might as well join the community Discord
There's a lot you can do with minimal knowledge, like texture packs, edit effects of existing things and especially make custom decks! I've found those are the simplest and jokers are slightly more advanced (slightly I mean very slight)
i've never done a custom deck actually lol
but a custom challenge isn't too far off a custom deck
Oh, that's good to know :)
That makes sense!
I get the vibe that the code might be a bit more difficult to navigate than what I'm used to, but it's WAY less work than making a whole fighting game character lol
Especially the art side obv - modding Rivals is like 80% art and 20% code
as long as you have fundamentals and patience you'll be good
and of course, mystjokers.lua open at all times
Yeye!
Noted ;P
yeaaa the characters have like 300 different attack frames
here you aren't gonna make 300 different jokers
(or are you?)
The code is a bit difficult to navigate, especially when you don't know where to look at
(or are we ?)
sob
Depends on how complex your character is, but there's like 40-50 animations per character lol
5d joker art btw
Mostly attacks, but also the smaller stuff like idles, walks/runs, dodges, etc
that's a mate in 3 blunder
take it as someone who failed his java classes way back yonder and knows barely jack about lua (i do know python though)
i used to mod slay the spire, which while agonizing, the games structured in a way that as long as you can string together building blocks from the games code you can accomplish a lot of the simpler things from frankensteining it from other places of code.
balatro is the same way (except having to wait 5 years to compile and test and run) and imo pretty straight forward
the only constant is you will spend 8 hours figuring out why your code doesnt work and its because you forgot to put a , somewhere

Actually y'know what might be a fun challenge? Trying to make a Joker for every base game Rivals character (there's 18 of them)
i already had experience patching an unity game with bepinex so this wasn't much more difficult
20 if you count the 2 coming in the sequel
absa joker wins you the game immediately
LMAO
@upper granite did you make art for the turnip boy games?
For the sequel, yea! ^^
aaaaaa
o shit?
tysm aaaaaaaaaa
🫡
i've heard of turnip boy and that's it lol
🫡
oh i should play that more
Actually funny thing-
After making a thing for social media of Turnip Boy in a bunch of different art styles, someone recommended Balatro and I made this lol
That is so cute!
Thank youuuuuu :D
he got da cash
Also the effect I had in mind is basically just Vampire, but you gain $2 for every card you remove enhancements from
Kinda like he's shaking the cards down for their money lol
all it does is disable the orange stake effect (he's evading pack tax)
LOL
I'm imagining the effects more related to robbing the shop, a random thing in every initial shop is free (because robbing)
LMAO
That could work too! There's a lot you can do with cards that evade taxes/commit crimes
Hell, the first thing I posted here was an idea for a C.E.O card that's just a better, but slightly riskier version of Egg
-$1 per hand played, but also gains $2-3 sell value (depends on what's more balanced)
Or a portable version of the tag that makes a shop free (that could go so hard)
joker that immediately sends you to hell
maybe it could convert all discards to $6 like burglar
I really like that
And I just imagine the card having a Joker with their feet kicked up on a desk and a fat cigar in their mouth lmao
oh wait delayed gratification
Stereotypical big greedy boss vibes
And the name tag on the desk is a big fat "joker"
Yea that kinda already exists lol
Was thinking either that, or the Joker letters are made of the cigar smoke
Ohhhh, that's good :)
Maybe if these ideas work well in practice.. kinda thought the Suggestions channel would be more for server suggestions, but it seems like you can suggest cards... 👀
Why are there multiple chunks of code like 500 lines apart for the same joker
Which one is real 😭
Why suggest cards when you can just mod them in?
ohwait
Yea like-
The modding is kind of a beta test for the idea ^^
And if it's pog, recommend it for the base game ;P
It's all silly food for thought - I should probably actually make something before I get too ahead of myself tho xD
:p
I'm sure there are people who are willing to help :)
do you see what I'm cooking
it's totally in character for steve to do this too
OH THAT'S FANTASTIC
hi guys can you help me with this error log?my game crashed when i tried to buy a card pack
There's a field called extra_gacha_pulls HUH
Also what mods do you have installed?
I believe this is referring to an error in a mod file
yeah that's an error in some mod
I think that has to do with the polydactyly joker in someone's mod
Is there a place here I can just find a list of mods?
yooooooooooo that was me who recommended balatro
i've been looking in the game's code for a while with no luck, how do I make a joker give each card scored a 1.5x mult effect (like ancient joker)? I'm using the centerhook api. right now it almost works except each card gives 1x mult. I eventually want to make this only trigger for stone cards too.
..
local function jokerEffect(card, context)
if card.ability.name == 'The Rock' and context.individual and context.cardarea == G.play then
return {
x_mult = card.ability.x_mult,
card = card
}
end
end
..
{x_mult = 1.5}, --config
{"Played stone cards", "gain {X:mult,C:white}X1.5{} Mult"}, --description text
..
hi, i'm having a bug with some mod that's switching the images for pretty much everything, jokers, packs, arcana, celestial... so it shows the image of something but the description of another joker or pack
with all these mods installed, any idea which one(s) could be causing it?
or maybe it's two mods interfering with each other
How do mods work with achievements?
Could try the minecraft strat of disabling one mod at a time and launching until it works
yea might try that, was asking in case it was a known bug with some mod
Though this wasn't added, https://github.com/XenoCHeart/Crimsons-Ultimate-Card-Collection
Modded in Lucky Swallow (gains xmult when wheel of fortune or cards with listed probabilities to give buffs successfully trigger) , wheel of fortune still independently rolls for Unlucky Crow and Lucky Swallow...
what if it looked at whether or not it generates the "Nope!" graphic for wheel of fortune?
if it does, that means it failed, and if it doesn't, that means it succeeded
Hey all, is there a way of getting crash logs that are more telling? Just crashed after adding a couple of mods so I wanted to see which it was to delete, but all I am given is functions/misc_functions.lua:1602: attempt to index a nil value
Any information would be great ty
Is there a video showing how to add mods to Balatro?
how do you check if the wheel works or not again?
I'm using this (and it’s inverse) as a placeholder for now...
...
else if context.consumeable.ability.name == 'The Wheel of Fortune' then
--to be implemented
if pseudorandom('wheel_of_fortune') >= G.GAME.probabilities.normal/context.consumeable.ability.extra then
bad_luck = bad_luck + 1
end
end
...```
right so I think the pseudorandom rerolls the randomness
let me find its implemtnation
function pseudorandom(seed, min, max)
if type(seed) == 'string' then seed = pseudoseed(seed) end
math.randomseed(seed)
if min and max then return math.random(min, max)
else return math.random() end
end
function pseudoseed(key)
if key == 'seed' then return math.random() end
if not G.GAME.pseudorandom[key] then
G.GAME.pseudorandom[key] = pseudohash(key..(G.GAME.pseudorandom.seed or ''))
end
G.GAME.pseudorandom[key] = math.abs(tonumber(string.format("%.13f", (2.134453429141+G.GAME.pseudorandom[key]*1.72431234)%1)))
return (G.GAME.pseudorandom[key] + (G.GAME.pseudorandom.hashed_seed or 0))/2
end```
so you should be able to reimplement pseudoseed without assigning and then reimplement pseudorandom using that new pseudoseed
I think
or maybe you can just hyjack where the game calls the wheel and have it tell you the result
what I'd do is just insert a boolean flag change into use_consumable depending on whether or not wheel hits, and then reference that in calculate joker. but I use balamod where it's not as challenging as it is in steamodded atm.
yeah I would probably just like in card.lua, add something where the arrows are for the check
either set a bool or just call some fucntion to let your things know
the upper half also triggers for ecto and hex, so you'd maybe need to add an extra check but yeah basically that.
Hello everyone. Is it normal that when you try to download tools for installing mods, a virus warning appears?
yes
the mod tools modify the game's exe which some virus's also might do
any of the mod tools in #1209506514763522108 should be safe
if they weren't, then they'd be called out and banned by now
Does anyone know if it's possible to return multiple messages? I'm trying to implement a joker that gives chips, mult and Xmult all in the same hand as follows
if SMODS.end_calculate_context(context) then
return {
mult_mod = self.ability.extra.mult,
chip_mod = self.ability.extra.chips,
Xmult_mod = self.ability.extra.Xmult,
card = self
}
end
does modding stop you from unlocks?
yes, but you can disable that
is there a way to get tags for which mods in #1209506514763522108 use which system?
I've been looking through them all and I feel like it'd be much more convenient to allow mods to label which system they use on the thread
burnt joker + seltzer?
i like it, but maybe a little less than 5
yeah i changed it to 4
I would've said my RandomSprites mof but I don't see that in the images
how can i get some mods?
github idk u need a modloader
9ioooooooooooooooooo888888888888
i agree
Wholeheartedly
deckseer.lua stopped working for some reason? :/
I didn't realize there were actually so few mods. I should start picking through the suggestions thread.
@grave panther heya, i believe #1212395714920054864 got unpinned?
Hmm - having trouble repinning it from mobile. I’ll take a look in a bit. Thanks!
What are the pixel art dimensions for the cards
71x95 with a 1 pixel transparent border included
So 73x97?
69x93
the sprite file is 71x95
I understand now
and it's 71x95 in the spritesheet
the game also renders it as 71x95 ingame so it'd be preferrable to stick to that size
Thank you
you are allowed to go into the transparent border if you want
fixed now - thank you!
if there are other modding threads that should go into the second post under the rules - feel free to ping me folks
i'll ping you once i finish my guide
oh yeah while you're still here - can you add a few tags like Jokers, Decks, etc. for easier sorting?
i'm reluctant to ping again but @grave panther
no need to be reluctant - you mean add tags to the modding forum? let me see what i can do
mhm
okay - added "jokers" "decks" and "UI" - if there's other obvious ones lmk. "cheats" maybe?
Challenges, Blinds, Mechanics, Texture, Localization?
Requests (this is a bit popular for some reason), Guide and Misc for ones that are none of those
seems like that's pretty broad - tags aren't required at the moment to post there presumably people want to be sortable
looks good i think, thank you!
Trying to implement this, but no luck so far... I'm implementing it like this:
local wheel_seed = pseudoseed('wheel_of_fortune')
if context.consumeable.ability.name == 'The Wheel of Fortune' then
--Work in progress, right now counts a probability independent from The Wheel of Fortune
local good_luck = 0
if pseudorandom(wheel_seed) < G.GAME.probabilities.normal/context.consumeable.ability.extra then
good_luck = good_luck + 1
end
if good_luck > 0 then
self.ability.extra.x_mult = self.ability.extra.x_mult + self.ability.extra.x_mult_add*good_luck
G.E_MANAGER:add_event(Event({
func = function() card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_xmult',vars={self.ability.extra.x_mult}}}); return true
end}))
end
return
end
any tips?
Anyone know if there might be a way to have my joker increase play hand size to 6 cards?
oh i think james actually did do a legendary joker which does that
#1216754656617693255 message yeah this mod has it
Is there an exact name for the effect where a single hand beats the blind and the scoreboard goes on fire?
I'll see what I can find!
Dunno where exactly to look, but "flame" is the name of the shader being used for the effect (I think), so whatever activates that shader is the key
sneak peek of what I'm working on right now! StS inspired Neow (or Jimbo, I guess) starting blessings!
Any suggestion of what to implement? I was thinking of stuff like start with a common mul joker, common chips joker, +10 gold, etc
oh shit neow
I've also made this cute card but no idea how to change Jimbo's sprite lol so that's a WIP
you can maybe take a look at my YippeeGameOver - that replaces the texture of specifically the jimbo on the win screen
anyways
Start with Double Tag
+1 Hand for Ante 1
uhhhhh
I think I found where it's being controlled, but I'm also realizing that I can't read Lua for the life of me rn 😂
Art boy GML-pilled brain going brrr rn
Btw the reason I was looking for it was cuz I had an idea in mind for a card that gives money when a hand is flaming
Anyone knows where theses messages are going ? (the ones sent by The Egg and Gift Card at the end of the round)
POG
what would "whiteboard" do
x5 mult if you have no cards in hand?
or x2 mult per card in hand below 3
Ah my b lol
genuinely i feel like "Start with Joker" (as in the regular one) would be a very solid option
i've been considering doing a jimbo deck at some point but i have genuinely no idea what to make it mechanically
though i've got some concepts for how the texture could look at least lmao
gros michel deck
start with gros michel
after each blind, 1 out of 4 chance your entire deck is destroyed
monka
incredibly funny, incredibly based
im making this btw
actually that could be interesting if it's just like, after you play a card or something, 1 out of 4 chance to do it. makes a deck that's shrinking forever, which could be neat if there's any amount of control over it, like only for high cards or something...
is it just going to be "Start with Gros Michel" and nothing else??
that one glass card challenge
i hate that challenge
if i did a tierlist of challenges i would put that one on the bottom because it's so boring to me lmao
i was so excited when i saw it, because i saw double negative oops! and was like, "Oh hell yeah! So you can get way better odds, but your whole deck will constantly break. I wonder how you can get around it"
yellow deck sidegrade
and then i looked at the restrictions and how basically every other random thing is banned :)
this is the True Origin Story of the Dice Deck
fair enough
the restrictions are Vampire and every enhancement cards
okay maybe it was just no lucky cards which annoyed me then lmao
which makes sense in the context of the challenge but it was still enough of a reason for me to go "i will make a deck so i can use funny boosted odds lucky cards"
i don't claim to be rational; just ambitious
Where can I find all game's sprites?
you can open up balatro.exe with a program like 7-zip, and it should be in resources -> textures
huge, thank you!
yw!
I think they've all been dumped onto Spriter's Resource as well!
Yeah couldn't find it for some reason
i can confirm they are not
(unless they weren't there yesterday lol)
Balatro itself is not on the spriter's resource rn
I thought that's how I found them, but I could be dead wrong and just forgot 😅
Probably am
card_eval_status_text in common_events.lua I think?
They need to dump em to spriter's resource imo, just in case
yeah someone probably should do that? it's not source code so i don't thiiink localthunk would have an issue with that
but personally i'm gonna be cautious and not do it myself lol
i would rather not be shoved into a Soul card for all eternity
Valid lol
I'm not sure if I should ask it here, (it still relates to modding/creating new cards?), but is there an established palette or list of common colors? I know that some cards do not follow palette, but it'd be nice to have reference colors
like, outside of the colors of the 4 suits?
I know that someone (one of the devs?) mentioned something about black color being isn't black and common joker colors exist
joker colors specifically I think
Afaik a lot of Jokers have a specific outline color, but the colors used beyond that are up to you?
#4F6367 for the outline
yes, exactly that message, tysm!!! pretty sure I've seen it but then lost it
OMG Y'KNOW WHAT ACTUALLY-
I did use winrar to open the game files xD
Omg I feel kinda dumb for forgetting that now lmfao
I literally just open jokers.png and colorpick off of it for my jokers
the game has a full enough palette that I can improvise wherever necessary
#🎨・fan-art message and it doesn't stop me from doing stuff like this
This is what I did too for the most part?
I didn't realize there was a set palette tho cuz of the gradient usage 😅
i have not taken colour pallettes into consideration. oops
at least it doesn't actually matter
Gotta wonder what that base palette actually looks like
oh i had no idea about that message. that's really good info to keep in mind
yeah for mods you could def just ignore it (like I am with the rules for the legendary jokers for ShamPack) but I'm a stickler for keeping things looing as close to base as is possible
not having a palette is much better than having a palette that isn't always respected (like in TBOI)
it just makes things easier
I like both working in palettes and not tbh?
some might say that describes the game as a whole
No palette is more freeing, but I'm also a firm believer in limitations breeding creativity
i'm glad there's a palette, honestly. i think when i did the stuntman for balatro re;shuffled i might have done some color-picking for some parts, just out of habit?
however i could also be wrong lmao
i think that having it Exist is a good idea, because then if modders want to feel more like the official stuff, they can stick to it
and if they don't want to, they don't have to
^
Localthunk isn't going to beat them up with hammers for going against it
Turnip Boy's whole palette is just Zughy-32 + pure white, and that was pretty fun to work around!
don't get me wrong, I love having a palette, but when game does a palette and then refuses to use it sometimes, it makes me cringe
my blinds really can't use palette colors since i asked for colors from a different server lol
Some of us broke it in a couple places, but I tried sticking as close to it as possible lol
yeah tboi makes me cringe too, don't worry
how would you interpret this wording?
and all my jokers follow them except Polydactyly i think
this is incomprehensible
yeah i'm gonna be real not mario: i have no idea what the hell this is saying
ok
be afraid
I might change the effect altogether cuz x8 mult on an Uncommon sounds crazy lol
stunt jonkler
or 7 size with The Hook
True ig?
Me personally, I'd just make it a 2x/3x if your hand has 3 or less cards after playing
x2 mult for each card below 3 cards in hand?
This reads to me as having x6 mult for having 3 cards in your hand after play
hm
Then x4 for 2, x2 for 1
that is true
by the way, I do have an effect planned for Steve and would love to hear y'alls thoughts on it, as he is a Legendary: "x2 Mult for every Food Joker held. Create a negative copy of any Food Joker that expires."
I'm struggling to think of how to word this too tbh 😅
"Gain 2^x multiplier the closer your hand size is to 0 after playing, starting at 3"?
If anyone knows how to simplify that, be my guest xD
i'm fine with doing 246
feels niche
x2 mult for each empty hand space after 3 cards?
nicheish
so are the other legendary jonklers
they're meant to be interesting, not good
That's better!
yeah i like that wording
I might make it Rare, just cuz multipliers are really valuable like that
random ideas
Even if you need to commit to a lower hand size for it
this'd probably be more interesting if it worked in reverse, scaling with how many are in your hand rather than how few
also would you mind if i tried my hand at a sprite for that
if you want
Hello everybody.
Just a quick question, idk if this is the right place to do it. How hard would be to change the "skin" (texture, model, vector... whatever is called) from a single card?
Imagine i want to change the Ace of hearts for a Toyota Corolla picture. Is as simple as change the "base card" and the glass, golden, multi... will change automatically, or i need to replace it once per "type"?
wasn't someone making a hanafuda mod
Wouldn't it be as simple as opening the game with 7-zip/winrar, finding the Cards file in the Textures folder, and editing the sprites?
you change the "base card", yeah
i don't know, that's why i'm asking hahaha
like there's a sprite for just the Ace of Hearts, in... 8BitDeck.png, i think?
i'm a bit bored at work and i was thinking in make a spanish deck mod
and then that is put on a card, on Enhancers.png
I'm still learning how to mod the game myself, so your guess is as good as mine 😅
Sounds like a simple texture swap tho, and that's how I'd figure you do something like that
for example, here's an edit I made for personal use
i see
yeah it's pretty simple stuff
it seems pretty simple
Thanks
im interested in this too cause i wanted to resprite red card to look like this album
Red Card the Joker?
yea
that'd be in Jokers.png then, which is one image file containing All The Jokers
are compatible deck backs a thing yet for steamodded btw
Idk why it didn't occur to me sooner that that's how the cards work, but that makes sense lmao
i know right now there are some mods which can do joker images without changing others, for new ones
oh is it really that simple
huh
but i dunno if that works for like. texture swapping pre-existing jokers
I was, but i got sidetracked by Balatro Archived & Balatro Re;Shuffled
Idk if there's a way to make the background different for just a specific card (without it messing up other enhancements)
i mean, it depends on what you mean
Library Card + 2 Oops all 6s. 4/3 chance. Infinite money
if you actually manage that then go off
if you want it to just be on like, the Ace of Hearts or w/e, you could put the "background" on the same layer
the player can have little an infinite. as a treat
Something like uh-
Adding a Toyota Corola to the background of Ace of Hearts
yeah if you want it on every single ace of hearts then that should be fine. just edit the Ace of Hearts image itself
i'm working on-and-off on a texture mod for cards that will also feature backgrounds, and that's how i plan on doing it
Realizing I kinda interpreted that the wrong way and assumed it was adding some non-transparent background to the card 😅
The glass card challenge where there’s 2 negative eternal 6s
oh no. the sanctity of a challenge, RUINED.....
If you somehow get it, pop off lol
fuck nvm
really i should have more stake in this considering my dice deck exists, meaning some people just play that + get one oops
but also i don't really like.... care balance-wise how other people's mods interact with my own?
if you're installing multiple mods then like
That's On You
i only got 6 of em unlocked i guess i should probably play the game more before getting into homebrew
I’m down to breaking the challenge. That one’s hard as hell
i'm gonna be real: if folks want to play challenges and keep them balanced, they are probably not installing gameplay-changing mods
i think that kind of defeats the point of it
its not like shit like that doesnt exist in vanilla either
so i think they're not really super worth considering when it comes to stuff like this
swashbuckler in omlette is just a free win
I’ve been recreating challenges from the old suggestions
be so STUPID as to lose that challenge with swashbuckler....
they'd be so DUMB and FOOLISH
and NEVER named BLACKBANDO....
played, past tense lmao
i haven't tried the challenge again in a while but it was one of my early gameplay moments
when i was but a wee gal, much worse at the game....
when gold stake was just a glimmer in my eye....
gold stake is really good at raising your resting heart rate
the only things we're considering for cross-mod support for ShamPack is:
- Splitting off Enhancements/Seals/similar to their own submods
- Making a Joker taglist system that allows you to add Jokers to a tag (this is how Steve will work, food jokers will be a list of jokers that have a specific tag)
the second one is WAY down the road, Gepsi is burnt out on making Balatro mods for now so they're likely going to be touching up one of our previous projects (which I shall not be discussing here, self promo and all that)
entirely understandable!
for me i'm like.
not good at coding????? so i think it's in my best interest to just worry about if my mods Work At All
and I too really want to return to that project because like
holy fuck making that was SO FUN
and try my best to keep my own stuff compatible with my own stuff (hence why dice deck and pact deck got the texture update)
I think I wanna try making a mod here. Been too long since I've modded a game.
Best of luck to ya!
#1215516228525760543 would be a great place to start
it's open, and you can just create a joker that seems like it'd be fun to implement
Thanks for the suggestion
mmmmmm i want to make two more blinds and a showdown before i release my mod
but spriting hard
Showdown?
ante 8 bosses are showdowns
get beaten up by the power of chips
is showdown a real in-game term for them???
yes
yo
search showdown = true in game.lua
LIME????
gros michel background is lime
i suppose that's true
I've been trying to tie not one, but two joker's abilities to the result from the Wheel of Fortune tarot card to no avail. The last thing I tried was using the psuedorandom function. Any tips?
i would've expected you'd just use michel's background for the deck back though
Plus Yellow deck is taken lol
oh that is true
or even made it like a brown banana or something lol
Banana deck
er, like, covered in the spots i mean
(just in case you can't
oh sorry i got completely distracted by limes
anyways, glad to know there's an official term for them! i'd just been calling them "big bosses" until now lol
something something the ultimate showdown of ultimate destiny
Something kinda like this?
yeah that's more what i expected
maybe not necessarily with the Generic Basic Back™️ though
This was like a 2-minute edit, but ye
was this just taking Yellow Deck and adding brown spots
Yea LMAO
yeah i'll do gros michel back tmr
personally i do think that using gros michel's background on the joker would look nice
Also making the yellow deck color the Gros Michael yellow
i did that for dice deck but with oops! all 6s and i really like how it looks
genuinely been considering doing more just because i think it's like. fun
Btw while all this was happening, I had the silly idea of making a bunch of Jokers themed around Rivals of Aether (cuz I love the game lol)
Just finished concepting how each one might work
dungeons of aether could be an interesting tie-in if you do anything like that
i think they put the protag of that in rivals 2 iirc
I did make Fleet into a card, so-
Btw her gimmick is basically re-triggering the next 6 tarot cards, cuz that's kinda what she's gonna do in Rivals 2 with her gimmick
would it be possible to make a joker that increases the rank of each card in the first hand of the round
Don't see why not - just depends on if you know how to code that in/where to find the rank up code in the game files
no idea but im gonna learn
i have nearly 0 coding experience
not having coding experience is roughhhhh
i do minecraft command blocks T~T
i wish you luck though
I know quite a bit of GML through Rivals of Aether modding, but that's mostly code/systems that have already been built for you 😅
autism brain likes rules and structure so it shouldnt be too tough
i dont even know where to start learning how to mod this game so im just gonna do the art and concepts first and get them to display over someone else's work by changing the png T~T
at the moment my own coding experience with this game is like. knowing how to do lua stuff from years ago, and i haven't touched it in over 5 years lol
so a big part of the process has been re-learning stuff lmao
people here have been incredibly helpful though!
in which language is programmed?
Lua, using the Love2D engine
never heard
am i tripping or is this the pico-8 font
tripping

p8 is different
i feel like i recognize that font
have you heard of this little game called rhythm doct-
ah thats why
minor question
message = localize{type='variable',key='a_mult',vars={self.ability.mult}},
mult_mod = self.ability.mult + self.ability.extra.mult
}```
am i stupid or something
everything about my joker works just fine
EXCEPT
the message for the mult shows up as +0 mult (but it still applies the mult normally, its literally just this visual bug)
okay i think i just had it formatted wrong
swapped it to just self.ability.extra.mult and it was just fine
im confuse if i want to download balamod where is the balamod exe?
i dont have the exe
it injects your balatro.exe
Any idea or link where to download balamod:
I want to inject code into this part of the card.lua internal file to add a flag for wheel of fortune triggering where --insert flag here is. I also would need to use an external file and prefer to use SteamModded to do so.
if self.ability.name == 'The Wheel of Fortune' or self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex' then
local temp_pool = (self.ability.name == 'The Wheel of Fortune' and self.eligible_strength_jokers) or
((self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex') and self.eligible_editionless_jokers) or {}
if self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex' or pseudorandom('wheel_of_fortune') < G.GAME.probabilities.normal/self.ability.extra then
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.4, func = function()
local over = false
local eligible_card = pseudorandom_element(temp_pool, pseudoseed(
(self.ability.name == 'The Wheel of Fortune' and 'wheel_of_fortune') or
(self.ability.name == 'Ectoplasm' and 'ectoplasm') or
(self.ability.name == 'Hex' and 'hex')
))
local edition = nil
if self.ability.name == 'Ectoplasm' then
edition = {negative = true}
elseif self.ability.name == 'Hex' then
edition = {polychrome = true}
elseif self.ability.name == 'The Wheel of Fortune' then
edition = poll_edition('wheel_of_fortune', nil, true, true)
end
eligible_card:set_edition(edition, true)
if self.ability.name == 'The Wheel of Fortune' or self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex' then check_for_unlock({type = 'have_edition'}) end
if self.ability.name == 'Hex' then
local _first_dissolve = nil
for k, v in pairs(G.jokers.cards) do
if v ~= eligible_card and (not v.ability.eternal) then v:start_dissolve(nil, _first_dissolve);_first_dissolve = true end
end
end
if self.ability.name == 'Ectoplasm' then
G.GAME.ecto_minus = G.GAME.ecto_minus or 1
G.hand:change_size(-G.GAME.ecto_minus)
G.GAME.ecto_minus = G.GAME.ecto_minus + 1
end
used_tarot:juice_up(0.3, 0.5)
return true end }))
--insert flag here
else
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.4, func = function()
attention_text({
text = localize('k_nope_ex'),
scale = 1.3,
hold = 1.4,
major = used_tarot,
backdrop_colour = G.C.SECONDARY_SET.Tarot,
align = (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK) and 'tm' or 'cm',
offset = {x = 0, y = (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK) and -0.2 or 0},
silent = true
})
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.06*G.SETTINGS.GAMESPEED, blockable = false, blocking = false, func = function()
play_sound('tarot2', 0.76, 0.4);return true end}))
play_sound('tarot2', 1, 0.4)
used_tarot:juice_up(0.3, 0.5)
return true end }))
end
delay(0.6)
--insert flag here
end
Where to find the balamod?
thign is if you wanna inject code right in the middle of a function then you have to either
- use balamod
- redeclare the entire function
Any idea how to instal balamod?
@grand geode any idea? i see you are the mod dev in balamod
Does it not say in the Balamod page?
The balamod github page doesnt have balamod exe
but the people in the balamod discord have the exe
i feel very dumb rn XD
this guy in history have this
i dont see any exe in the github
go to the Releases page on the right
also i just make mods i don't work on Balamod itself
I redid the entire function and tested wheel of fortune, but Lucky Swallow is not at x1.2 mult despite the 6 wheel of fortune attempts giving two enhancments...
how are you checking for a listed probability paying out out of curiousity?
that makes it so that after burning two hands it's a benefit
yeah
i mean its like certain builds with serpent
tbh serpent is much more likely to just screw up your run than it is to benefit compared to playing 2 hands
unlike serpent you kinda don't need a specific build to gain a benefit here
but while it is a benefit after 2 turns, it still requires you to burn 2 hands and makes your initial discards really bad
which i suppose serpent does too
the design i wanna go here is burning hands early and saving discards for after hand size has increased
honestly i don't think i've had a single time in my life where serpent was hard to deal with
every time i've seen that boss it's like "oh excellent, a free win"
i interpret Serpent as "only discard 3"
me looking at my hand of 4 random number cards
also the more i try to think of a concept to encourage this i just end back to the one blind that takes away all your discards, but a Little nicer
The Water hhh
the high tide
clearly i should make it Play only 1 Blind at x6 chips req
1 Hand
not 1 blind fuck
i interpret serpent as "i burn every single discard to have a gigantic 16 card hand, taking zero risks and being rewarded immensely for it"
serpent is piss easy
because why wouldn't you just discard 1 card at a time, only removing the worst cards in your hand
i genuinely think Serpent is easier than Small Blind lmao
it's a boss blind which just kind of buffs you
even if your deck wants to play 5-card hands it's like
thats where i find myself getting messed up by serpent
you can usually just use up your discards on 1-by-1 cards you don't want
to get a giant hand, never having to take 50/50s
"Do i discard the diamonds i have a lot of, or the hearts ih ave a lot of? since i have 3 of each in hand and need a flush of either"
serpent: "neither!"
oh there's really no reason to discard more than 1 card is there
"enjoy them both"
yeah
the only possible reason would be if you don't want to kill it early, like if you're trying to grind out supernova or something
but otherwise you should p much always use every single discard immediately and for 1 card at a time
Serpent buffs you lmao
ESPECIALLY if you have steel cards
ive got it
🤓 ":Uhm achtually bando what if you have a purple seal card" okay then use a discard on that one too then BOZO
but yeah overall Serpent just helps you lol
MurphyObv fan spotted
i think if you're playing a deck with only 1 hand (Golden Needle challenge, maybe a black deck theoretically) it might hurt
since you would draw less than discarding 5 cards
but even then i doubt it
i have literally no idea who that is.
The guy on the balatro steam page
oh, i see!
actually
yeah
if not for the fact that Flint is strictly harder
wait no that says chips not Base Chips
idk if I got the sprite rules right (this is test sprite I made)
I am confused about black/darkest color because seems like most of the time "black" is #4f6367, but campfire card has colors darker than black then
different problem, the amount of chips you score in a hand is a local var in a different function
so i cannot read it during hand evaluation
the sprite looks pretty appropriate to me given the style of other games
ill check that black agains what ive been using
there are obviously exceptions but that is usually the black used everywhere
is this going to be a certified hell like that one joker you have that calculates end score
huh, weird that campfire is darker
i can understand why though, helps make the flames pop out more
well technically here i can just hardcore the blind into the evaluate function
hardmode
wtf
hardcode
yeah I mean it helps me in the same situation with the explosion
still weird
i think this is a game you can have a little bit of artistic liberty when it comes to joker design
looking at you lumpytouch
shoutouts to lumpy touch lmaooooo
is that a nuke
castle also has a darker black
can't believe they are involved in balatro
ig the exceptions to the palette are the full art cards

Wait seriously???
That’s so awesome omg
yea check game credits
they did the art broke boy joker
holy shit, this is a banger
(i literally forgot his name everyone of my friends just affectionally refers to tarot generator lad as broke boy joker)
Vagabond
yeah, broke boy
lumpy's chill AF, I've had the opportunity to sit and talk with him before and he's a really great guy
wowwww
lucky
quite
there are two constants in my mod's art style, bald jokers and space backgrounds
THe
its times like this i wish i could favorite and bookmark discord posts
Fr fr
I feel like inconsistency is key to consistency in this artstyle
it is consistent as long as everything is inconsistent, sounds crazy
just idk
look at food cards
tbh if you're going to break the rules, save it for legendaries
At least it’s pinned, if anything
why popcorn has darker outline and ramen doesn't?
ive just been copying jimbo as base for literally everything
i just need to fix the borders of all my jokers
Woe, blank joker be upon ye
all of them 
LMAO
why this joker has the same outline color as jokers with white border, but has green border?
because its a flash card
not a playing card
i have a really consistent artstyle for my jokers, currently: i plan out the art and then don't draw them
i'd say it works pretty well
TRUE
LOL
see, i WILL do the art once the mechanics are done!! therefore it's not my lack of art skills, but my lack of CODING skills!
take THAT!!!
most of mine are dumb references (Steve, Vince Joker, the upcoming Frozen Joker) and others are just Edits (Slothful & Prideful joker)
You and me both lmao
i do actually need to get off my ass and do the 5 jokers i've had planned for a while. i have 2 of them done, only need to finish 3 more
but also sometimes i look at code and am reminded why it is that i went into writing instead
Is it weird for me to start with art, then do implementing?
I might honestly wanna ask if someone else can/would be down to code stuff, and then I can make art from there
nope
i think you should do it in whatever order you prefer
nope
but i've done too many creative projects where i do it in that order, and it sucks when it's like
i have such a hard time following tutorials because they give me an asset pack and i want to stop coding just to make my own assets
Community Jokers! We're trying to get more programmers and less Ideas Guys, though
"Wow, I just literally cannot handle the mechanical part of this, so the art is either going unused or is being applied to a vastly different mechanical concept"
SO true bestie
I wouldn’t say so!
Hell, in a lot of places, ik the art is typically made first before implementation, even if it’s just something half-baked
of course, that's mostly been for tabletop design, so that's usually more an issue of "it's not fun" rather than "it doesn't work at all"
programming is great because instead of not having fun because it's bad, i get to not have fun because Balatro.exe has crashed. Sending a crash report...
That’s fairrrrrr lol
Seems to be how it usually is for a modding scene lmao
ok adding the border makes this feel much more authentic
Thank goodness I have the art skills to back up being an ideas guy lmao
thank you for enlightening me dank
np np
oh yeah, that's CLEAN
so clean it almost makes me forget the fact you put jace the mind sculptor in this game....

Epic
if its any consolation his buggy code gives me a headache just like the real card
this is the only time in my life i will be happy to hear code is being frustrating

however i do hope you're able to get it working how you want to soon enough!
thinking about making a "Jonkler" legendary that simply does x4 mult and is just a poor redrawing of the normal joker
the ultimate Jank Jonkler
oh man, you want BAD ART? let me tell you: i've got that in SPADES
also i know we're talking about not breaking the rules and all that but
i mean
its literally expanded art
i think thats a pass
expanded art joker breaking the rules does make more sense, yeah
its like them borderless cards in mtg
realizing now im gonna have to redo the art for the old man joker since hes using way too many shades of super darker colors
the hubris of knowledge
the best part about doing art for big sets of things: realizing you messed something up and you have to go back and redo all of them
i have done like 100+ cards for fanmade content of a board game, and someone pointed out to me there's an error on all of them
and honestly i'm just putting off fixing it lmao
balatro coding is scary but it's less scary than that
The Horrors
we back to swagging
also the star system in question
not sure if should be common or not, feelin like it could be
its really underpowered for an uncommon
cuz its just another type of superposition that has 2 limiting factors to it
its just this ones sometimes easier
very good comparison
would it be possible to make a joker that retriggers depending on the amount of cards not in your hand
like a 4 card hand retriggers once a 3 card hand retriggers twice etc
like in your deck?
i feel like it would be cool if it was fill your consumables with planets
tweaked nuclear joker to have "true joker black"™️
that would be deserving of a uncomon and would make sense with what the card is
as u could fill 3 slots at once if u had magic ball
like a 4 card hand retriggers once a 3 card hand retriggers twice etc
Not exactly what you said, but you got me to make this abomination
the jonkler
MOVE HIS NECK THINGY
it obscures the red dingly thingy in a very uncomfortable way T~T
What was worse before is that it has a drop shadow behind it to give the legendary card effect, so uh...
Yea I did not intend that, good catch
Something kinda weird is going on and I don't know why. Sometimes some mods have special art for their jokers, and it shows up, but sometimes the special art just.... doesn't know up, and I also can't find it in the files
but sometimes I can?
It's weird
sometimes cards that have custom art show up with said art, but sometimes they're completely invisible instead
is there some fix to this????
if they're completely invisible, that likely means you have multiple mods on at once, which change the same image
for instance, the backs of decks are all found in the Enhancers.png file--so unless a deck is either using a back already found in there, or they're made compatible by the mod maker, they can make that issue
Hmmmm
for jokers i believe at this point you don't NEED to change the jokers.png file to have custom art for it? but there's probably some mods which still do
I know, some mods have them each as their own assets
and sometimes those show up!
But sometimes they just don't
ShamPack does some shenanigans to make the textures load-- I think Golden Epsilon wrote his own API for it
And one thing I found with the JankJonklers thing. It actually has art for some jokers, and descriptions for it in the files, but they just don't show up
huh?
they're probably not properly added to the pools
oh, yeah
.... oh
yeah i have a lot of sitting assets in my github
:y
if its not listed on the github.io page its not implemented
Has anyone made an Inscryption card as a Joker yet?
There's also the Sentai Joker, which your mod says is there, but isn't in the game
Same with the pawn joker
don't show up in game
Kinda wondering cuz that's, like, free capital for a banger card idea lol
ah i dont think i updated the release for it yet, i just pushed out the update for it
Inscryption Joker
Rare
Removes 1 of your eyeballs.
lmao
Lmao
ill be pushing out an update and release today
ah, ok
I had a thought, but it might be, like, WAY too much lol
debating on removing minimalist joker since MultiJokers has the same thing
if i were to make an inscryption joker i'd probably make it involve destroying jokers

