#⚙・modding-general
1 messages · Page 67 of 1
it should probably support custom stuff
How is this working like other colours if it gives nothing concrete?
Oh in that way
drawing a Pictured as Perfect jimbo would be cool
i wish i had jokers to fuse
oh no wait i dont want that
wait this frame with jimbo would go so hard i think
"Who are you running from" type of screenshot
Might as well jump on the logo train
equality logo because why not
equality is busted
has it changed?
yes
to what?
1.5x
#1229810016387596349 message
sorry for breaking it
nah its fine
it was clearly too powerful and the fact that its possible to reach mult that high that fast was just a side effect of it being imbalanced
dang
my 2 billion mult would translate to 300k mult with the 1.5 change lmao
it took 30 ish hands lol
only 300k mult, rookie numbers
the run took forever cause i had to lock in every time i went to the shop so i can have $1 left
if im being honest the only reason i couldn't go higher is because in 1 round i went from beating the blind in a couple hands to one shotting when i didn't want to
yeah i can understand that with 2x
lol
i could've hit e18 :(
@cunning silo what is extra_stat for
when you carry a stat, place true in extra_stat if the stat is a part of the extra field, and false if it's not
so
card.ability.mult -> extra_stat = false
card.ability.extra.hiii -> extra_stat = true
love it
i didn't know The Serpent was here
I'm trying to create a slightly more complicated Joker whose ability triggers off getting another Joker. Has anyone done anything similar?
The closest base Joker I can think of is Hologram, but it triggers off adding playing cards, so I don't think that's the same context
i mean does abstract count
technically ceremonial dagger/blueprint/brainstorm as well
i thin it's more of the act of obtaining the joker
yeah
like 1 in x chance to gain money when a joker is bought or something
i feel like the most useful thing would be a way to detect whenever a joker is gained
maybe detecting whenever used joker slots goes up?
those are definitely equivalent
Looking at the code, I think Abstract just checks the number of Jokers as you need it to compute the score
So no
There are Jokers that react to selling
But I want to know if there's a way to detect adding a Joker to the deck
detect whenever the amount of used joker slots goes up
and abstract measures the amount of used joker slots so theres probably a way to implement that
Guys, I'm trying to define an effect to a joker that gives the user $5 when you play a straight that contains a 6. What should I do to achieve that?
Abstract just checks how many you have when you need the number, if I understood correctly
I'd look at Superposition's code and go from there
alr ty
yes
My idea is to scale when you get a Joker, so it doesn't work similarly
The Card.lua file defines add_to_deck, which is the function I need to detect, I believe, but I don't know how to do it
they all work now yay!
I mean, if there's not something built-in I imagine I could add a call to calculate Jokers myself (which I don't know how to do either), but I imagine there should be a way to make it work natively
HOW MANY SLOTS??????
custom challenge
would this do it?
if 6 >= 1 and next(context.poker_hands["Straight"]) then
ease_dollars(5)
end
i should make a +1 consumable slot voucher
fusion jokers also happened
I don't think the 6 >= 1 would do what you want it to do. Unless there's something funky going on, I'd imagine this is just asking "is 6 greater than or equal to 1?"
yes thats exactly what that says
idk, i just copied it from superposition and changed "aces" to "6" lmao
Looking at another mod, there does seem to be a context for buying Jokers, but I wonder if there's a context for adding cards to deck
See if they define a variable aces somewhere
oh boy does that mean i get to pull out my "check for X" code
what do you mean
whip out that code
its funny you mention 6 because i have code that i usually show people to check the hand containing something
So question: where do i find the code for vouchers?
and the example i use is for sixes
so you don't need the 6>=1 part of the code, it can just be the next(context.poker etc)
give me one moment to write out a miniguide
alr ty
who up papping thee joker
Welp, made my voucher test
vouchme
And it crashed. I think because I bought every voucher or something
idk
I'll take a look
so this might be a bit intimidating, but i tried my best to explain every piece of code here, this would all go under "if next(blah blah)" basically where you currently have ease_dollars(5)
local has_a_six = false -- we declare a variable, starting as false
for k, v in ipairs(context.full_hand) do -- for every card in your full hand
if v:get_id() == 6 then -- check if the current card we're looking at is a 6
has_a_six = true -- if it is, we set the variable to true!
end
end
if not has_a_six then -- if its not true...
return nil -- then we return nothing, this ends our function and ignores the rest of the code
end
ease_dollars(5) --other wise we give 5 dollars
return { --and we return a message showing we got money
message = localize('$')..self.ability.extra.penalty,
colour = G.C.MONEY,
delay = 0.45,
card = self
}```
Okay so it's not with the vouchers
it might not be exactly this you might need to change your message
Does Lua have a break?
tysm!
and here's if i utterly murder fusionjokers
I meant that you don't need to continue the for loop once you set it to true
i wouldnt use my code exactly, because, mind you, i did edit this from My joker code that has some specifically named variables like self.ability.extra.penalty
oh yeah definitely
Okay it definitely is something with the vouchers
i just hand edited the code in discord lmao
the original code is actually checking if its exclusively 6s so i tweaked it
so how would i do it without those variables?
its actually probably a good idea to figure out how to do those variables
so when you define your joker, you have a config field, with extra slots
you can put almost any type of variable inside of these extra slots
an example declaration
local wanted_poster = {
loc = {
name = "Wanted Poster",
text = {
"Gain {C:attention}$10{} when you",
"beat a {C:attention}Blind{} first hand.",
"Lose {C:attention}$2{} when you play",
"a hand past your first"
}
},
ability_name = "Wanted Poster",
slug = "wanted_poster",
ability = {
extra = {
dollars = 10,
penalty = 2, }
},
rarity = 2,
cost = 5,
unlocked = true,
discovered = true,
blueprint_compat = true,
eternal_compat = true
}```
and if i want to get the variable "penalty" thats where we use self.ability.extra.penalty to call the "2" here
Huh... I think the challenges don't know how to deal with you grabbing all the vouchers lol
it defaults you getting blank does it not
or having 4 at the start
Hang on, might be because of the rerolls
It's either freaking out because you have more than 3 vouchers at the start of challenge or freaking out because it's trying to do reroll at the start of challenge
Okay so it was v_reroll_surplus and v_reroll_glut
But hey, at least I can test the other vouchers once i add them now
oh crap lol forgot i have the wip archived installed
Anyways, while I can't figure out how to check for the context I want to, let me see if i can figure out how to do a random effect that's not succeed or fail
try checking my mod (i dont remember what i did lul)
rip
use version 0.2.1 if you need my seals in collection
Overstock++ is not plus plusing
ill figure out how to collect my stamps later
which mod?
yea sorry
you may also need to check where i register the seals proper in data.lua if memory serves
i'll figure out a comfortable way to organize things someday
i love your personality
Welp, one voucher added. No i am not fixing the UI
well...
I gave myself every other voucher aside from the reroll ones
oops
and what does self.ability.extra.penalty do?
it's so cool
hm?
fusion jonklers lets go
its a variable thats defined in my joker. whatever joker you're running this code for, there should also be an "extra" field
penalty can be whatever, its what i named my variable
ooh got it
I know this probably is a messy way of doing this for the code, but I'm copying all the effects over into the tier 3 mod and changing it to what i need
I rather it work without affecting the originals with messier code than it conflict with other mods
okay now i need to sprite pebbler joker. animated jonkler time
You tried to call register which isn't defined
time to figure out how feder did that cool fusion display thing
oh
and do i set "penalty" (or whatever i'd name it) to 0?
so ```lua
extra = {
penalty = 0, }
why
XD love it
yarp
you got it
alr
you can have multiple things in that area, like i did in that other example, but youll probably only need 1 for now
thats not how this works
obviously , how does it work?
How can I change existing game functions to add my own context to them?
you need to make a SMODS.Seal to register it
yo! now to get it to work.
-1(or2) Joker slot might be good too
that's what i had before but it didn't display the text
local j_test = SMODS.Joker:new('Test', 'test', {
ability_name = 'test',
ability = {
extra = {
penalty = 0}
}
```is this correct?
theres usually a lot of things here besides just this but this is the general idea
stuff like cost, rarity, etc- but this is how you would doit
still have waking up brain
There was an example which I think you can refer to for the options
oh i remember, you cant use underscores in the slug
Implementing fusions to the base template?
you have to end with _seal
oh i could probably do that
and cant use any others
lets go
it makes no sense and i dont understand it
so it should be goldenegg_seal?
yeah i have it below that
yea try it
@strange frigate https://discord.com/channels/1116389027176787968/1227289111862448290
ty
By the way, does anyone know about this? Specifically, I want to make it so Jokers are calculated when Jokers are added
@strange frigate also this #1228599493914656788
mood
oh yeah ive seen that one
But I don't know how to overwrite the game code
loads the sprite and doesn't crash but still ERROR and blank text
shit
i can try copying the code for the green seal mod and see if that loads the text
if there's no context you have to
- declare a copy of the base game's function you want to edit (in this case it would be add_to_deck i think)
- write whatever you want to write in the function
- at the end of the function, return the local copy you stored
Currently struggling with my card designs
example using calculate_dollar_bonus
local calculate_dollar_bonusref = Card.calculate_dollar_bonus
function Card:calculate_dollar_bonus()
local calc_dollar_ret_val = calculate_dollar_bonusref(self)
if self.debuff then return end
if self.ability.set == "Joker" then
if self.ability.name == 'Wanted Poster' and G.GAME.current_round.hands_played == 1 then
return self.ability.extra.dollars
end
end
return calc_dollar_ret_val
end```

graphic?
(i dead ass had this variable declared as dollaf_bonusref and didnt notice it i hate myself)
Nah just coming up with designs
Thank you for the example. Where should I put this definition? Inside or outside the SMODS.INIT.ModName?
I’m making the designs for the mod I’m working on, like, on the spot with no planning
Like art or mechanics?
Art
And I remembered I made those designs ages ago and didn’t think of making a mod for them
finally
What's the difference between Card.calculate and Card:calculate?
the balatro rpg
i enjoy second row fourth column
Good designs
I guess I’m gonna make two mods now lol
Balatro dating sim
the former needs self as the first variable
What cards are these?
When are we adding a dating sim to Balatro that lets you make out with your joker cards
The jokers had babies….
ah yes, make out with the ceremonial knife
🔪
SDV MENTIONED!!!
yuri joker is ceremonial dagger and madness
Toxic yuri joker
dont spoil fusions 1.1
XD
Kuru joker when?
Not that one
I’m guessing the fusion is only like, jokers from the base game getting fused right?
ye but theres an api
there's an api
so you can write whatever
If I say something and there happens to be a H:SR or GI character named after it, assume I’m NOT talking about the character
Link link I wanna see the fusion mod stuff
ok so i think i have the joker, where do I put this?
didn't work
If the original function took in an argument, would the syntax for the first line inside the function be:
local func_val = func_ref(self, arg)``` ?
wherever you're calculating joker effects. as in the literal calculate joker function
kurukuru
im not entirely sure to be honest
someone either plays HSR or knows the meme
latter
ive done it with calculate_dollar_bonus and add_to_deck
calculate = function(self,context)?
and with add_to_deck i didnt need to delcare any extra args
man , i need to build herta
i still stand by the fact that hsr gameplay sucks
I'm doing it to add_to_deck, but add_to_deck takes from_debuff as an argument
me too XD have her at E6 but i don't use her
ah yeah youre going to want to at least keep that same for the actual func declaration
so like
local add_to_deckref = Card.add_to_deck
function Card:add_to_deck(from_debuff)
if not self.added_to_deck then
if self.ability.name == 'Mind Mage' then
G.hand:change_size(self.ability.extra.h_size)
end
end
add_to_deckref(self, from_debuff)
end
sorry had to scrounge some old versions of my code
mind mage will come back one day

does someone know why this shows as ERROR under the blank description of the seal?
local localization = {
name = "Golden Egg Seal",
text = {
"When played gives {X:blue, C:attention}X1.2 chips{}",
"and {C:yellow} 1$ {}"
}
}
local seal = SMODS.Seal:new("Golden Egg Seal","goldenegg_seal"," Golden Egg Seal",{x=0 , y=0}, localization ,"Golden Egg Seal", true , HEX('6c3082') )
seal:register()
local sprite = SMODS.Sprite:new("Golden Egg Seal", SMODS.findModByID("Splat_Jokers").path,"goldenegg_seal.png", 71, 95, "asset_atli" )
sprite:register()
and then i put the if next(...) below this right
Yes, I'm doing something similar. I think what I need to do is call calculate_jokers
this is huge
well you said "whenever you add a joker" right?
Dicey Dungeons Jester
yeah,
add_to_deck would be the function you would want to hack
And it's the one I'm hacking, but inside I'm adding calculate_jokers so my Jokers can be calculated with the correct context
That's the idea anyways
ah, that sounds like it might be dicey
regardless, all i laid out here should be enough to get you through function injection though


Do you know when to add events to the event manager and when not to?
buy_from_shop adds an event which does multiple things, including iterate over Jokers to calculate them, but there's also a separate event created inside of it in some specific circunstance
i do quite like the little ascii progress bar the colours have
The piss card
make the bar yellow maybe, would look cool
last new colour for tonight
still need crimson, brown, grey, silver, green, and peach
Where is purple?
can you make red's number 40
not in the pico8 palette
also good morning chatroom
There’s no purple?
Good morning!
there's a shade close to purple in the extended palette
which counts
but i'm doing the base 16 first
i woke up and immediately figured out how to do something i was stuck on last night
Purple’s my favorite color ):
i love sleeping on problems
now we need huge joker + wee joker
oh hm
what's that 👀
Vouchers
ik
does this make sense? 2 in 2 is from oops
big money gaming
reroll addiction starts you at $0 for reroll
It decreases by 1 actually but that puts it to 0
may i suggest an alternate ability?
I mean... eh but sure
"Rerolls only increase price by $1 every 2 Rerolls"
if you want to call it reroll addiction, make it so every reroll increases the number of times you reroll each time you do it. so the first time's free, the second time it rerolls twice and you can't control it, and so on
that sounds mostly useless
i mean, the name "reroll addiction" made me think of that
fair
would probably require rewriting it which doesn't seem like it'd ruin compatibility? idk
i didn't want to touch modding until i had everything unlocked and wow y'all have a beautiful canvas to work with and things are very nice. this game could get an uncommon added called "odder todder" that gave a larger boost but only every other day and it would cause me to rethink my entire strategy for the game
that sounds amazing
what if it got stronger based on how many odd numbers are in the date
i.e 1/1/2025 is strongest
the +1 reroll cost house rule:
I reworded it, don’t worry
11/11/2031
11/11/3111
my greatx10 grandchildren fulfilling my will of playing the strongest odder todder
so true
opinions on this jokers design?
very nice art
what do colour cards do
EGG
i've already done the egg one
I love this reference
if only i undestood how stamps/seals worked i could start actually implementing these
I love this
im sorry i cant be of more help
don't worry i tried contacting the creator of green seal to see if he can help
More tier 3s will be done later. I feel like trash and Gotta get ready for something
same
I hope you’ll get well soon!
glhf
That egg stamp is so pretty
thank you
Thanks. I blame myself. I ate something and it’s causing stomach problems and air problems at the same time
It’s really painful
get well soon
That sucks
get well soon
3 vouchers so far is not bad though
chat how do i channel my burning rage and fury i have today into joker ideas
political jokers
lmao
Parade Marshall (Uncommon)
+6 Mult per Planet, Tarot or Spectral card used without consecutive card types. (last card used: [TYPE])
Band Maestro (Uncommon)
+25 Chips per consecutive Planet, Tarot or Spectral card used. (last card used: [TYPE])
The inspiration?
I’m at a concert with a parade group and the clothes looked neat, in addition to the Showman Joker
what if wojak joker
+Mult per hand of five with either a one rank or suit deviation
wojoker...
Draw all the politicians in a really ugly political cartoon style
It’d be so fitting
but they have to be 18th century politicans
Oh my god nobody would get the references then
yeah its great
listen i feel like i can safely say that most of the legendary jokers are from pieces of literature most people have never even heard of or read
with the exception of yorick
Sanzang
Do a swear word 😈
So evil
frick!!
!!!!
Ni
lyman , i have a new design
what if grawlix joker
Knight Joker
oo i saw
the goop needs reworking
i should draw goop joker
that's a great idea
gooper
ur a gooper
Been getting distracted by watching tiktoks back to drawing I go 
thanks
yw gooper
dude what the fuck is wrong with you
a lot of things
real...
1 nothing wrong with me
modding chat is so wholesome
it did not work 😭
can anyone help me the mod makes the game crash at startup
Might wanna take a picture of the crash log
can i ask if anyone else is having the problem of when i install the steammoded modloader it comes up as a blocked download because of a virus
i can download it anyway just wanted to ask if anyone else has the problem
you might try asking the autor of #1229389178857324574
he had a similar problem
was playing around with mods and realized reshuffed added this had a good chuckle lmfao
thats because the lua cannot be compiled, as in you prolly miswrote something or misplaced a character
Oh alr
When is modding likely to be officially supported in Balatro? Something like Steamodded just feels like a temporary hack to get modding working, than a proper answer to long term mod support. Especially how Windows likes to flag it as a trojan, which definitely doesnt feel like thats how modding should be (having to disable Windows Security to allow modding is insane)
yeah I cant seem to find the issue
is anyone available to help in dms
Looks pretty
anyone know if balatro will be getting official mod support (i.e. steam workshop or similar?)
out for thunderstore pretty sure
thunderstore? never heard of that before
1.0 is almost there I think...
Thunk said steam workshop is planned iirc
reverie lore
It is??? Can’t wait!
So many interesting projects are coming out soon
I’m so happy with how this community evolved
"oh yeah making a balatro mod should be easy right its lua"
...
pls if anyone is available to help I'm struggling a lot 😭
how does steam modded work
Run tk_debug_window in Steamodded/debug then run the game
👍 very cool card
yes
alr
fyi if its crashing without an error log its usually a formatting error
like a missing comma somewhere or a misplaced bracket
alright
Is there a guide somewhere for getting started creating mods?
i hope that after the first joker its smooth sailing from there
I'm on my second Joker and it's not smooth sailing
whats reshuffled
The mod loads but the Joker doesn't get added >_<
wow what mod is tha
i would also like to know this
same
i dont think theres a guide, you just gotta read other mods source code
and learn from them
its so frustrating
the master directory just gives you the source code if you want to manually build it
then what do i do
w
do the lovely method
which is
what coro linked
I use firefox, but you should have the little arrow on the right that lets you allow the download
you need version.dll from the lovely github
then you download the steamodded source code
version.dll goes in the same folder as balatro.exe
steamodded goes in the mods folder
yes
go to releases
where
on the right
yes
roaming?
the one with the exe
in future hopefully
the one that steam opens when you browse files
right click on steam and browse local files
here
yea
yes
download the steamodded source code and put it in the mods folder
source code zip and extract it into mods like this
yup
open game and check if it says steamodded top right
i don't remember for sure but that version of lovely may require balatro 1.0.1 (the public beta branch)
thats the debug console from lovely probably
yeah now you can just download mods
yeah
how would you inject into a function like that?
the same way you wrap any other function
should keep them in their only folders if they have more than 1 file btw, so anything with a lua + assets should be in its own folder inside mods
funcs_evaluate_play = G.FUNCS.evaluate_play
G.FUNCS.evaluate_play = function(e)
funcs_evaluate_play(e)
-- your code here
end``` like that
oops
thank you!
if its just luas it can be in mods
ok
perfect
downloads mods just to play the game while knowing the score of what they're gonna play and doesn't bother downloading other mods
@wanton rapids hey sorry for the ping, how did you do the progress bars for colours? can you just pass in the {C:attention} stuff in through loc_vars/loc_defs/whatever steamodded calls it?
It's my mod I'm working on 👀 https://discord.com/channels/1116389027176787968/1226234529413468190
Okay need some eyes that aren’t my own to gimme their thoughts
Drawing a Queen of hearts right now, is her hair too red?
I’m thinking I can’t make her too pink in case I want to make a six deck expansion, cause the star suit uses pink in that
alright that didnt work
Himeko????
It genuinely looks amazing
Himeko? 
Honkai star rail
She just has long, very red hair, and it reminded me
Ohhh I haven’t played that game
Oh you should. It’s fun
No
ok ty
just say which file+line it is
I mean, they say don’t do that
alright there we go
Is it small?
so my question is to do with standard pack ability. and the create card functio nwhen creating a card for a standard pack.
where are the bonuses decided?
i do not have card art yet unfortunately
i see seal and editions and wherer the card is decided (suit and number) but no bonus decisions
card.lua line 1707
wdym bonus decisions
wow great, I rerolled the card into itself (actually awesome that nothing broke)
like when the game decides if a card out of a pack is lucky/mult/gives bonus points/etc
it uses poll_edition in the create_card function
wait am i mixing up editions and enhancements
does that not just do if its poly/multed/foil?
oh it does it in the create_card call
it looks like its something to do with the inline if in the create_card line
depending on the string parsed
"Enhanced" is enhancements
but then i dont see anything in create_card or get_pool that actually does the enhancment
so basically it generates a random number between 0 and 1, and if its >0.6 it chooses a random enhancement
in the first line in the standard pack generation if block
if you ctrl+f "stdset" thats the random number generator
its weird syntax
i thought that just decides if it should pass "enhanced" or "base" into the create card function
yea
so basically if it passes "Enhanced" then create_card will choose a random enhancement
sorry my question is bad
i was unsure on where the create_card function does the enhancment decision
mb
ohh
like i have followed it through but im not sure where it says this string is "enhanced" i will now decide the enhancment
its like it treats both strings the same
common_events file line 2120 looks like the one
but i cant see it selecting any enhancments just the actual suit and rank
so in the create_card function, once we pass "Enhanced", it becomes the _type, which informs the function which 'pool' that create_card will pull from
which is the "_pool" variable
that _pool variable contains all the different enhancements
in the next line, it chooses a random enhancement by using pseudorandom_element
npnp
its so hidden away cuz it forces the base to be a forced key
and lets the enhanced go through to the pool
i think base being a forced key is to just save on computation
not having 2 monitors is killing me when tryna look through
hence the slow response
all good all good
i think it then skips the pool selection so it dosent get an enhancment then both strings get a random card on line 2120
this is such a jank way to do it but it works...
technically, if the base forced key didnt exist, it should do the same thing
it just does a bunch of extra things it doesnt need to
like searching the "Base" pool, which is literally just the base type
also, i think you might be misunderstanding, but enhancements REPLACE the 'base' card rather than go on top of them
which is the mod people use to be able to spawn in jokers and rotate through editions on them?
im not too sure on this
im 100% sure on that
i have to deal with it in my code
base is basically just an enhancement that does nothing
but on line 2100 if the string is base then it sets a forced key
which then skips the pool selection in the if statement after
then on line 2120 the card is selected
from my understanding
like i said, im pretty sure thats to save computation time
if it didnt skip the pool selection, it would just choose base anyways
o yh cuz it wont select the pool of enhancments
yea
ok i appreciate the help
np np
Do you know how to edit Balatro's localization for a mod?
yh im tryna replicate it and ima have to rip some code apart to get it to work
I'm curious if you know how they work because I'm interested in adding "bad enhancements", but I wouldn't want them to mix them with normal enhancements
the conversation me and @stone brook had above kinda goes over it
anyone know of a mod that adds certain jokers/cards to a run?
i'd suggest the https://discord.com/channels/1116389027176787968/1231184565444415628 that numbuh made
Has anyone else made a Joker that adds Chips and Mult at the same time? (I guess any combination of Chips, Mult, and xMult would work)
yes, but the message will only show mult
I was trying to get the message to show both
I think if I edit the localization dictionary I can do it
But the question is how to edit it
technically i did do that, but its because i used a completely different scoring step
My backup option was to call calculate_joker from inside calculate_joker just to trigger itself again
Welp, stomach's feeling better now, so back to work on Tier 3 Vouchers
the code i have for it is in https://discord.com/channels/1116389027176787968/1230703637223833661
you can reference it if you'd like
Did you write the message for Mult in the inner calculate_joker or outer?
outer
Oh, the Joker I'm trying to code is inspired by SAP too ^^
Good ol' Dog
I'll come back to the harder ones like omniscience and exoplanets
dog my goat
you might be able to get away with wrapping calculate_joker, then specifically checking for if its Dog
then just card_eval_status_text the chips message
I was going to create a context like is_this_dog=true and use that
id definitely suggest against calling calculate_joker from calculate_joker
it will definitely break something, and also lag
I agree, which is why I wanted to try and mod the localization files
hello yes, this is dog
What is the Joker name?
there is no name
it is all of them
ctrl+f card_eval_status_text
the ones in calculate_joker are the ones youre looking for
Ah, so you just call card_eval_status_text directly, instead of calling it through localize?
gaff deck to make your shop even worse. Surely they could start coming with seals and editions
It works… sorta. I'm getting 5 messages, one of them empty, but it's incrementing by the correct amount
the bonus...
Is it at all possible for a mod to control what cards are selected when giving you a hand?
Bones
Lot of mods I find end up making the game far too easy or be way too overpowered, taking the fun away. But it would be neat for a mod to slightly weight the deck to be more likely to deal you better hands based on what jokers youve got. Say you have "The Order" then its more likely to deal you cards that let you get a straight, without it just giving you a 100% chance of getting that hand
its sad when you have the perfect jokers, then a run dies the moment all your dealt hands dont give you the right stuff
A mod to tilt the odds slightly more in your favour would go a long way, and wouldnt feel super broken
And some people (me included) just want to make funny jokers for the funny gambling game and don’t balance
At all
In either direction
the perfect joker doesnt exist
"+100 Mult per consecutive hand played"
"Win all rounds if you do anything"
+naneinf mult if there is at least 1 hand remaining
disable the boss blind if hand would trigger ability
I try to make thematically fun cards at the very least
Does anyone here make mods with Balamod? I can't figure out how to structure my files so that I can use apis. It seems like a lot of mods use GE_API and I can never get that to work
0.1.11 I believe latest release
alright gimme a sec i needa dig through ge_api to refresh my mind
You forgot it comes with the other two vouchers
Because y'know... Tier 3
Yeah, those other two vouchers are uh, bad
I'm trying to just do the "Planet Multiplicator" example mod, but formatted with GE:inject
1 in 52 to get a rank/suit you want, ooh, it might be an enhanced card, worth about $3
How instead of complaining about it you just do that, Okay?
lol I really broke it
what did you do?
I think you mistook my intention, I want to make the mod shine, not break it down. For a tier 3 voucher, it's just underwhelming. Cards are already $1, you are generally not happy to see them in your shops. So making those cards actually good, would make the vouchers actually worth it.
gaff deck could also just start with smaller amount of cards imo
that'd be a neat angle
chungus
hi autumn!!
i think gaff deck is a voucher
tier 3 of the playing cards in shop voucher line, which tier 2 permits seals, enhancements, and editions iirc
only enchanments iirc?
its all three
My bad
if it was just enhancements then I would've added edition and seals as the tier 3 option
@stone brook @rare shell Thanks to you (and other people) I got my second Joker to work
chat should i be evil with enhanceapi
what do you mean
DOG
yes
can i channel my anger today into also being evil with enhanceapi
bad enhancements,,,
I do want to create "bad enhancements" in the future
Oh you figured it out then? Nice. What did you use?
what does "or" mean
you can pick it? or do mult jokers give mult
and chip give chip
And isn't or.
be angry at me then
i mean lmk what you add
i wanna see the chaos people unfold with it
(and help test it out)
I changed Card.add_to_deck to call calculate_joker
No. I could specify it's random but depending on the game the randomness is implied
Ooh interesting, haven't tought of that, kept thinking I had to change "create_card" func, thanks for the info 👍
Contrivance
Gets all gains of Joker to the left.
randomly gains
Or I can just write "gains A or B"
or "randomly gains A or B"
One alternative uses fewer words
one alternative is better communication
what was the problem youre having exactly?
i copied everything i found from luchador joker to matador joker and replaced all about it in card and game
matador doesnt work ingame . luchador works fine. i set rarity 3 for matador. any ideas why? codes are identical i dont see a reason why this would happen
i finally managed to pull it up
why many word when few words work
why word when few word?
So I'm making a mod, I put a lua file in balatro/mods
and I have balatro/apis/GE_API
If I do "inject" the change works, but if I use GE:init and GE:inject nothing happens
@stone brook If I may ask a question, do you know if I can change the color of the square when I call card_eval_status_text?
I don't know if i have to because honestly I don't know what color the game uses, but I feel like +Mult shouldn't have a blue square
its in my code, you just need to add colour to the table you pass to card_eval_status_text
does anyone know where selecting played cards (during hand) is located in the files? even just file name is amazing
card:click() in card.lua i believe
thank you
I do have parameters: modid, filename, funciton name, [[ old ]], [[ new ]]
Sorry, I'm already doing that. I meant to ask the other way around. I'm doing:
return {
message = localize{type='variable', key='a_mult', vars = {self.ability.extra.mult}},
chip_mod = self.ability.extra.chips,
mult_mod = self.ability.extra.mult,
colour = G.C.MULT
}```
but the color isn't red
This is the full excerpt, maybe it helps more
oh wait i think i know why, GE:inject still does a thing where it escapes every character when injecting, which was required before 1.10, but we fixed it since then
how tf do i install balamod
just use steammodded instead trust
are balamod and steammodded modding any diffrent?
balamod supports injection
thats about the one advantage it has over steamodded
i love it tho so
it is very good!
Sorry, I'm not sure what to adjust to account for that?
doesnt steamodded support injection too through lovely
idk i dont use it xdd
you can change your version of GE_API.lua to have it not do the escaping
so you remove gsubs from the inject(path, function_name, to_replace:gsub(), replacement:gsub()) line
Ah I see. Thank you
oh you also need to change the one in GE:disable
Makes sense
How did you prevent recursion doing this?
Wait this might have not happen to you nvm
in general use steamodded injection unless you NEED the power of a lovely patch or want to make it modloader-independent
always use the most simple tool possible, it makes things easier in the long run
this is just kinda wrong, i've had a lot of bad experiences with the default injector
I'm talking about the API, not the actual injector which installs steamodded into the game
I should've been more clear about that
Oh yea the Steamodded API definitly makes things easier
I mean, unless a Joker creates a Joker when you create a Joker, then it wouldn't recur
It's ok now I fixed it 🙂 Used an ability extra variable as a T-flip flop
ok that makes a lot more sense
Is there anywhere with documentation on steamodded though? I couldn't find anything about the apis at first glance
Ah, that is helpful thanks
Oh thanks
👍
hey do you guys know where this one mod download is ?
it was one where you could hold right click to slide and select cards really easily
you could also scroll up to play the hand or scroll down to discard
THANK YOU
whats up chat, the mod im making rn keeps crashing at startup, and i cant really find whats making it crash.
anyone available to help?
fitting
Run tk_debug_window in Steamodded/debug
But it's probably a syntax error
ive done that, still cant really get whats going on
If you look through the log, you'll find something like
[string "--- STEAMODDED HEADER..."]```
In the middle of it
What comes next should inform you the error
Try searching for "Oops"
main.lua:6163: [string "--- STEAMODDED HEADER..."]:22: '}' expected (to close '{' at line 16) near 'config'```
what does this mean?
something went wrong relating to line 16 of your code
You can google it, but I guess you opened a { but didn't close it }
you didn't close your brackets
Does anyone know the function that removes the cards after they are played?
😔
Here I'd google something like "lua '}' expected (to close '{' at line 16) near"
yeah i figured, but all of the brackets that i opened on line 16 are closed
ive only hacked in a way of doing that
next lovely release will the log output to a file as well
check for missing commas
I'm deleting the cards but the sound of them moving out of bounds stays lol
Sometimes the error happens earlier but the code finds the issue when it runs into something that should happen after the bracket was closed
it pops that error when youre missing a comma too
so it'll be easier to debug when raw dogging it
damn
because the way i do it is "delete" the card, then delete it again at end of round so it properly gets baleted
it kinda behaves like cards are still here
maybe the sound is played based on some table that I don't know about
could you maybe take a look at the mod code to see whats wrong? (its just one card rn)
honestly if you paste your code block into chatgpt and ask it "am i missing a closed bracket in this lua code?" it usually gets it
alr ill try that
listen say what you will about chatgpt but it is excellent for telling me im an idiot because i missed a comma somewhere
chatgpt is good for assistance as a tool, but not as someting to generate ideas
which is why i suggested it as more of a "validator" of sorts
theres other tools that do the same thing ftr
did a whole class where we researched AI and learned to use chatgpt in an academic enviroment
it was so much fun
okay different question: what is the cardarea of played cards? (might be stupid but I forgot)
also ya'll should absolutely be using a lua lsp
like, vscode has an extension that works and will catch this sorta stuff
most of the time ™️
context.scoring_hand or context.full_hand
oh
cardarea
i am also stupid
use less evil words like silly instead of stupid
i mean i run my deletion code in G.jokers for fortuno
this "no" implies that I'm the only stupid out here lmaoo
srry im an intellect devourer
v**e?
jason voorheez??
chat do i open it
"I'm stupid" evil
"I'm a joker, a jester, a clown" fashionable, harmonious, serendipious
real
chat is soooooo mean womp womp
how many homestuck fans are there
There's two of them, maybe even three
balatro really is the beacon for all homestuck fans to congregate it seems
The clowns needed a circus
Yes, her art is phenomenal
I didn't expect to find Homestuck in 2024
And here we are (poyo)
bingus

how dare you

Isn't that what Reno Jackson says
dont make me get reno jackson piss cannon asmr
did not work :(

Okay my solution to nonexistent cards making sound is to make their destroy animation slower lol
im guessing that my code is so bad that even human assistance wouldnt help
dms?
No, it's probably just missing a bracket or something
got my whole vibe messed up today
or here, doesnt matter
alr
but you can find wooper outside
You can use triple crasis pairs and write the language name to write code in multiline in Discord
:)
i have never heard anyone describe it as that
but now i know that is what that is refered to as
i wish i could find wooper outside...
function foo()
return
end
ah the problem is that you have an invalid Unicode glyph at byte index 14
Actually in English it's grave accent
what the mod should do is that the joker gives $5 if played hand is straight and contains a 6
i told ya it was a missing comma smh
i call it triple lowercase tilde
ability = {
extra = {
penalty = 0}
} ```
xdd
oh?
where does ability end
This is tilde ~, and it doesn't have upper or lowercase
Not on my keyboard
o
on beyblades, tilde is its own key
for me n my friends keyboards thats how we get tilde, so thats why we call it lowercase tilde
ooh
I don't think you do but Idk Lua
My brackets don't end in commas but they work
do you use any programs like visual studio code?
yeah im using vsc


)
