#⚙・modding-general
1 messages · Page 32 of 1
Maybe try using sendDebugMessage to a random joker and see what context triggers when a hand is drawn
i was able to sort of mimic it, but that's like 3 parts of repetitive codes
i don't recall a context for hand drawn
im fine with not being able to make it more concise, just curious
Yea doesn't seem to be any context for that, the last context that triggers is after, before the next card are drawn
@lean dune you are amazing (i just saw the new loc def stuff)
ty xD
it's a life saver
this is way too easy
make it showdown bosses only

3 joker slots
hm
the main issue is in a normal game you can get perkeo + soul quite easily with this
so it has to destroy itself when you defeat a boss blind
but then this challenge cannot exist
it could lose its benefit bit keep the X2 base blind size drawback
Sounds cool yea
Ayo! I'm trying to port the sprites to Italian and I was wondering if the font for the BANK / BANQUE is custom or known?
i'd assume it'd be custom
I think it was just made up on the spot
Yeah that's what I thought, I'll try to replicate the style then!
Thanks a bunch! 🤗
is there a mod that adds +1 selectable card in hand or smth like that? so you could play or discard 6 cards at once (would also require adding more hand types but would be neat I guess)
oh nice thank you
redid golden carrot to be more in line with the other food jokers
(..and i made the text white)
does anyone have experience with the save manager? i wanna know where i can save a numerical value and it would save properly
wait actually i think i can just throw it into G.GAME
lemme try that
Food jokers have a white outline around the food too
minceraft
a minecraft mod would be really fun
oo how did you make that gradient effect
cobblestone jimbo
can i see the layers
black and white pattern, magic wand white part, put gradient, magic wand black part, put reverse gradient
same principle as a layer mask
can you speak in aseprite
ok so
pattern
colors are arbitrary, im just using them to select with magic wand
select all the red pixels
copy and paste them on their own layer
while still selected, draw a gradient with them selected (you might need to uncheck continous)
then do the same thing, but with the blue pixels instead
it's a cool effect for not much effort
subscribe to xXLymanSprytezzXz for more pixel art tips 👍
you don't really need layers for that tho
optimize!
i am a 1 layer andy
it gets rendered out to a png anyways
but yes, you can also do it a dozen of different ways, having two gradient layers and then deleting the parts that arent on the pattern for 1 layer, and then the inverse for the one that is
end process is the same
no reason for me not to use layers unless i forget
which happens far more often than you'd think
actually true
you gotta get on that 1 layer grindset
despair as you mess up one part of the process 5 hours ago but you merged your layers already

might as well pixel art on mspaint at that point...
If I ever do more than 1 layer I do it only for this
fair enough
nah i have a jimbo template i made for myself thats all nice and layered up
very handy
gib
oh gog ..... so much thinking .... no coding ...

oh thank god, i figured out my own way to fake loc_vars
XD
Hey! So I intend to make a custom joker, I found the JokerAPI example, I haven't messed around with lua since playing GMOD around 2014, are there any good resources for modding Balatro? Like a list of variables that I can use or such.
Editing the example seems doable without help, but I don't know Lua that well to do any additional code.
you can look at the game's source with 7zip or look at other extant mods, no formal docs as of yet
Alright thanks @sleek granite!
Okay so another quick question. I really care about my personal save file, I do not want to disable any achievements or anything, is it fine to use a pirated copy of the same version (I've paid for the games two times already) and inject Steamodded on that one? It shares the save files but how do you guys go about it?
That and you can just use a different profile
ctrl c ctrl v the exe
If anything goes wrong you just validate your files
lol lmao
that too
my vanilla has only MoreSpeed and AchievementsEnabler, modded is the one i use to work on mods, balamod is self explanatory
anyways semi related um
ive been having issues with this one joker im coding and im not really sure whats going wrong
this is the code
and this is the crash
two into one?
two into one!
the idea is just like
if pair is played, then the cards give mult equal to their rank
hand contains a pair or pair is played
pair specifically was what i was going for
context.individual doesn't pass through context.poker_hands
ah
oh hey spam bot
<@&1133519078540185692>
perfect, thanks
,,,what does that mean
you'd want to do context.individual and context.area == G.play
Banned 👍
ahhhh i see
you could also avoid a crash here by checking if context.individual and context.poker_hands and next(context.poker_hands['Pair']) then
that would also trigger with context.area being G.hand
oh what
i think
well,,
i just find checking if the thing exists before checking its contents is good practice 
nod
that's fair, i suppose i shouldve expected that
if you look in the box and there is no box, the universe explodes
though
this one also crashes the game
this one stops the crash but it also just disables the effect
aa
Wtf can tags overwrite edition added by G.E.MANAGER:add_event?? Had a holo voucher on and when the card got created it go the holo
oh what
rip
darn lag
what is the effect you're going for anyway
oh um
oh it should be context.cardarea instead of context.area
heck
right
if hand is a pair, then cards played also give mult equal to their rank
Oh
radical
it works!!
thanks!!
np
A little tease of my next mod
oh good we can put MORE random things on our carsd
oh nice
oh goodness
cant wait to have 18 different modifiers
Ooh, consistency!
no
can you tell the bookmarked cards from each other if they're flipped
wait that last one sounds dumb
no
I love this
Are they guaranteed to appear in the starting hand?
does this overwrite steel/lucky/etc
Ah, crap.
ok ye
would The Stone debuff it i wonder
Not great in endless.
probably yeah
I also have a Mirror card, but it would take me some time to make that work
By the time you're a few antes into endless, you should have good enough deck manipulation to not need this.
Ooh, what does mirror do?
mirrors the card to its right
Huh.
but by default, it has no suit or rank
I know there's a mod that does that and calls it a blank card.
my only suggestion tbh is that it might be nice to have green bookmarks instead of yellow but this looks pretty good either way!
that sounds pretty situational tbh
Mirror is good.
good idea actually
Mirror is another card for outside of endless.
can this api also be used to add deck backs?
how do shops work in balatro
or like more specifically how does the showman joker enable cards to show up multiple times
@alpine cosmos it is included with the bit of code that normally prevents that from happening, and negates that prevention.
and as i go pass out: let's see who can guess what this code is supposed to do, and if anyone can find errors i can't see right now, before i test it at some point tomorrow.
straights loop around
i want to create a joker that guarantees an editioned joker to appear in buffoon packs but i honest to god do not know where to start
loop around straights?
rad
Card:open deals with booster pack logic, it probably actually isnt too hard
oh fr?
alright ill look into that later
thanks for telling me!
I would like to propose the creation of collectible items for the game. I will elaborate on this concept further.
also im trying out samsung AI to make me sound all posh
edited: I am currently experimenting with Samsung AI to enhance my professional communication style.
you are winner
How hard would it be for someone to make a mod for me to test runs by allowing me to add an amount of money I want?
thats a good thing
That is a positive development.
Rather than using cheat engine
i think that's a thing in debug mode?
you can also just spawn in jokers you want
Debug only gives 10 per click
you can also spawn arbitrary jokers by pressing 3 on them in the collection
Yeah but for a test I want to add like alot of money
Like over 100k
So that won't be enough
Make a custom challenge that makes you start with 100000 money, or a custom joker that sells for a lot.
done
it's true
i can just remove the description lmao
it was intended comedically anyway lol
i know
oh btw it seems like we can customize our mod's name now
i think i also recognize that line from somewhere
yeah its a Popular Tweet
anybody has an example of how to change the style of that?
btw is it just 100k or 100k per click?
its 100000 right at the start of the run
i mean i can just change the value so it doesnt really matter
yeah
Stupid math question
If I have an ability that says 1/4 cards get flipped face down on the deck and then get the wheel
Does that mean 1 in 11, 1 in 28, or something weird like 4/7?
depends on the way it's implemented
it means 1/7 because we all know 1/4 doesn't work
How does it work in the challenge deck
because i straight up turned the modifier from the challenge deck into a config
(btw, may make a resource that turns all the modifiers into configs, not 100% sure yet)
that feels like
it'd be something like 1 - (6/7 * 3/4) + 1/28
13/28 cards?
so about a 39.28% chance to be face down
Ah okay
celestial packs if they were good
first off you're returning the function get_straight_ref and not the result get_straight_ref(hand)
second, the way get_straight works is that it returns the cards that make the straight, and not just a boolean value
Even works with tags
third, you're breaking all compatibility with the playing card api I carefully constructed
fourth, 🏳️🌈
Fifth, Notepad++ white mode
🏳️🌈
from a math standpoint, 1 - ((1 - 1/4) * (1 - 1/7)) = 1 - (3/4)*(6/7) = 5/14 or like 35,71% (the chance a card doesn't get drawn face down is exactly the probability that neither check succeeds)
that given the game does these checks independently, which I have not checked
yeah that's right
lmao
how do I add my own card here, or maybe even better, just some non-card sprite?
(probably a sixsuits specific question)
thanks for reminding me I need to fix that
Is there a way for me to add a new line in mod description?
I don't think doing \n or whatever normally would work, but thought I'd ask
i would say \n but that definitely does not work
you need to give it a rank prefix and a suit suffix. In case of added ranks/suits these can change depending on what else is loaded and you need to get them from the return value of the add suit / rank function
Can I just use some other image insted?
I think number of lines is fixed, not sure how it would handle empty lines? maybe putting a var on its own line and sometimes leaving it temp achieves something
I figured that it currently loads from the same sprite as the cards
if you temporarily insert it into G.P_CARDS, maybe
is there a decent compilation of resources for modding the game because i need documentation
i’m not gonna go in blind and not knowing any function calls and whatnot
or is the current state of modding just “figure it out lol”
oh balamod has all of it available
- the game's code (yes, literally. Just extract the executable with 7-zip)
- https://github.com/Steamopollys/Steamodded/wiki it's incomplete, but I'm on it
- Other mods' source code as well as the source code of steamodded/balamod
ok maybe trying to undertake this while i’m still only a computer science student and also only understand java is a bad idea
eyy same
the community around here is able to help out with pretty much anything, so there's no harm to be done in giving something a try
i was thinking of making a basic mod which allows cards to gain a wild value and not just suite
i assume that’s already been done numerous times
hm, I don't think so actually
effectively acts as every card in that suite, including face cards, and can be played like a stone card (scores regardless of hand)
that requires some pretty hefty modifications on top of what was already required to make adding suits and ranks work
So I don't think that's a good first project tbh
there’s probably a janky solution to make it barely work though
you can go look at the playing card API I made
you'd have to change up all of what's there and then some
what would be a simple first project
since i don’t wanna make something already made a thousand times
but the stuff that hasn’t been made is complex
probably asking too much
something supported by the APIs in place... custom jokers, tarots, blinds or whatever
there's plenty ideas to be had with those
are challenges supported?
there's no API for them yet, but it's not overly complex to add them
In fact I have an example of one somewhere, let me find it
they’re effectively just deck modifiers on top of the deck you’ve selected aren’t they?
as well as different starting conditions
sort of, except they all use a special challenge deck (which you don't need to use)
hm
because it's not parsed as loc text, I guess?
fair enough. I'll just keep it without the coloring
hey, modders, has anyone made negative for playing cards yet? (kinda silly)
uh they exist, but they don't do anything
wdym
you can make playing cards negative with #1209857245316255744
but they have no effect at all
what if they make it so you have +1 hand size
is there a way to get a random seal from all possible seals, even modded ones without adding them manually to a list?
like i said, kinda silly
G.P_SEALS has all seals
ok, i wasnt sure if modded seals are in that aswell
What does one do if there's a constant steam apps thing that says 'INFO - [GAME] Failed to connect to the debug server'? Does that mean it'll constantly crash if I try doing something mod related?
funding for this joker was made possible by you (etc.)
corporation corporation corporation corpo- corpo- corpo- corpo-
no, it'll be fine. it just means you aren't running the tk debug console
TK Debug Console? What's that? Also, do I need to have the program files bit of it on 24/7 in order to still play the game, because whenever I close it, the game closes as well
if you aren't debugging your mods don't worry about it
also by program files you mean the command prompt?
if so then yea
I mean this batch (I typically have it minimized, but just having it up to show what I mean by it)
yea
yeah that's tied to the games process
Ah, ok
balancing question
Options currently costs $4, should Credits cost $4 or $5?
considering discarding is more used than playing hands
does that really make a difference in the end?
both should be uncommon imho
uhh, updating steammodded just disabled all my mods
what
think serpent boss blind
which is already really beneficial
but then without the drawback
hm
i forgot troubadour existed
by themselves they're technically weaker than half a troubadour but ig i'll make them uncommon
second ever 4 cost uncommon
It might be too OP if this is not Balatro
I am so, so, so happy to announce that Version 1.0 of Codex Arcanum is out!!!
Unleash the power of alchemical magic using** 12 new special consumable cards.** Obtain more hands and discards, reduce the blind itself, add temporary buffs to cards, and much more! There are even more alchemical cards coming in the future!
The mod also adds **7 new exciting jokers **to play with, 2 new vouchers, and a new deck to try out the alchemical cards with.
We hope you will enjoy the mod!
(If you have been following, this mod took a while for me and @rare shell to make, and we are in a position where we are very very proud of it.)
https://github.com/itayfeder/Codex-Arcanum
finally, good job!
BTW, also included in the GitHub is a small wiki with all of the cards, jokers, and vouchers of the mod!
gj guys
op
I thought I replied pinged but I have that turned off by default luckily
😉
lma
omg
has somebody figured out a way to send multiple messages? card_eval_status_text displays the message way to late
try adding extra.instant
😭 i cant keep playing
What ante is that,
39, round 120
Still wondering too
you are a genius, than you
Wait how does that change anything? You can only return one message no?
card_eval_status_text works independent from the calculate returns
how exactly does pseudorandom work?
pseudorandom('cancer') < self.ability.extra.chance/100
this should have a 5/100 chance to trigger, but it feels like it procs way more
Add the pants and you got infinite money!
What does your code looks like? Gave it a try and the messages show on any context
yeah that seems about right, about how many procs are you getting? it might be within reason to just happen that way by chance
i only did a small test, discarded ~10 cards and 3 got a seal.
well that's not impossible odds
function fakemessage(_message,_card,_colour)
G.E_MANAGER:add_event(Event({
func = function() card_eval_status_text(_card, 'extra', nil, nil, nil, {message = _message, colour = _colour, instant=true}); return true
end}))
return
end
if context.individual and context.cardarea == G.play and (context.other_card:get_id() == 8) then
addtokentocosmic(self,1)
fakemessage("Test1",self,G.C.PURPLE)
fakemessage("Test2",self,G.C.PURPLE)
fakemessage("Test3",self,G.C.PURPLE)
fakemessage("Test4",self,G.C.PURPLE)
end
Thats a crude test, but this returns all 4 messages at the same time for example
Was looking through Steammodded, what are "custom badges"
something like this, where you can define your own text. I think
these in particular aren't really custom, they're customizable mod name badges handled by the loader
What're the best mods to start with?
but yeah you can add your own ones on top of that
biased opinion, #1210728178201526373
I like the fold button mod
PSA: The "Hold For Final Hand Score" mod breaks the Plasma Deck's special balancing effect.
Thank you 
i wouldn’t recommend Mika’s to start. it’s an amazing mod but it has some funky jokers that probably wouldn’t be good for someone just starting modded gameplay
Hey, can somebody help me to download Steamodded? I'm sitting here just trying to download it, but every time I try it it shows THOSE two!
Try following this, the classic injector isn't really recommended in most cases
It gets flagged because file injectors are very powerful tools that are easy to destroy stuff with.
Windows AV really doesn't like what the injector does (it modifies an executable, so it's in a way a Trojan to the anti-virus)
Yup.
it's a false positive and you can build it yourself if you don't trust us with it, but the recommended method st this point in time is lovely anyways
hey everyone, I've started to mod a little, and I was wondering beacuse I can't find any documentation - but how do you guys test stuff? Like I made a new joker. Do I just do a run and hope to encounter it?
thank you!
Is -$50 too much?
BTW who curates AwesomeBalatro?
Not sure, but you can create a PR to add your own mod to it
Will do!
does this mean anything to anyone? This happens when I hover over the joker for a bit
I think a negative is worth $50. If we compare that to antimatter, antimatter asks you to buy 2 vouchers and you need to roll these vouchers in the shop
Maybe allowing a perkeo + riff raff strat would be a bit too insane though
Okay, I thought so too, thank you!
Or something like perkeo + a mix of bribe and judgement/wraith
I'll have to see what I can do about that
perkeo doing something crazy with a spectral in hand doesnt seem like a problem to me really
perkeo+ bribe and temperance
I don't mind that much too, perkeo is broken to begin with
$50 feels steep to me but its hard to actually tell
trying it out would probably make it clearer
Fair point, I'll keep it for now then 😎
Don't you already pay for the card sometimes?
Feels odd to have to pay for it
Then add 50 more
Rare Joker one is at least versatile
well, trying to download steam modded and windows keeps eliminating it as a virus
The downside is consistent
damn, random thought just popped up, wonder if it's possible (I defo have no idea how) to give an option for jokers to "evolve", would be cool for pokémon themed jokers
Yes, but I like the fact that it will most likely give you a negative balance, since this synergizes with some of my jokers, one of my tarot cards and the spectral that sets your money to 0 (basically giving you back the $50)
this happens if a joker defines an effect function iirc (used to be an interface in an older version of steamodded)
that has to be changed to set_ability
Totally possible, and could maybe be fun
(Now I really wanna make that XD)
that would be @gilded gale
ohh... I'm using the JokerAPI example file as a base
yeah that's outdated af
Negatives are just tricky to balance in that game. I understand why localthunk disallowed any negative infinite strat but honestly I think they're fine when talking about modded content
need to update that at some point
okay good to know. I removed the effect part, now it's crashing for some other reason but I think I can figure it out from here
refer to this or other joker mods (not JellyMod) for joker examples
thanks
and feel free to ask if any other questions come up, of course
windows keeps flagging up this when I try to download the most recent update of steammodded
#1217867725532041369 try this instead
same
(didn't mean to respond lol
Yeah about that, I'm trying to download the lovely injector and I just can't find where to do that? (Please help I'm really that stupid)
the classic injector is prone to being detected as a virus by pretty much any AV due to the way it modifies an executable
just grab dwmapi.dll from the latest release 0.3.1 and put it in the game directory
the guide should be fairly clear on the rest, but lmk if you need further assistance
Sorry but where exactly is the dwmapi.dll..?
I have 2 ideas for my next projects. One is smaller and one is pretty big as well
ortalab should be your next project 
XD
click on that release, and dwmapi.dll is the first file listed under assets
I would love to advise you with that though
mostly crimson you'd be advising since its his mod
That’s the second thing I wanna do now that Codex is out. Be able to help other people with their projects
tbh we kinda need custom center type and booster APIs in steamodded at this point
Also that
Custom enhancements are pretty easy
OH, Thank you I was at it for a good while now 
I briefly looked at the code for codex arcanum and gosh, it's boilerplate hell
XD
Booster pack api? 
It'll be fun remaking that for Ortalab! (clueless)
I can write an enhancement API that can be ready for tomorrow
That… would be really weird to make. Since packs are tied to game states, which is something I need to research more about
I have a “booster pack API” already present in Codex, but it does not allow adding new kinds of boosters
There is none
awww...
hm yeah that sounds like something that requires some digging in the game's code to make work fully
but so was the playing card API lmao
is there any speak about adding the workshop to the game? ngl discord is awful to sort throught
I am going to do some digging about it tomorrow
thats a question for localthunk
As always I'm up to adapt/incorporate stuff for loader support
I just have to be careful not to dig myself too deep into things, I do have finals coming up for a bit
I'm trying to create a joker that upgrades it's chip value. I looked at Sqaure joker as a reference :
But when I write a similar code, upgrading the extra.chips value of the config, it doesn't change anything. I saw that you return mult_mod as a value in the return - so do I need to return the value? Why does the base game one does not do that ?
my code
iirc thunk said steam workshop is planned
hold on, let me check something
that's end_calculate_context being weird, I think
if I don't use the end_calculate_context it tries to look at #context.full_hand when I'm not even in a round for some reason
try context.cardarea == G.jokers and context.before as a condition
alright
The joker upgrades its value in context.before, which is applied automatically later
that might break things, I'm not too familiar with these contexts and where they're called from
So this is correct
It still doesn't work, even with before
show code again?
Oh, this is Steamodded's API, I only know how the base game does it, mb
I replaced full_hand with scoring hand but basically
also note that with hanging_chad it did not trigger twice interestingly
It just says "upgrade" but nothing is saved, or upgraded
what is your joker's loc text?
also you'll need something like this in end_calculate_context for it to actually apply
yeah that way nothing will update
ohh I need to also have a definition here for chips and mult
you'll want to put a variable #1# for chips and #2# for mult somewhere
then you need a loc_def function on your joker that returns {self.ability.extra.chips, self.ability.extra.mult}
and for the effect to actually trigger, the thing with end_calculate_context that I said before
I guess I don't entirely understand how loc_def operates here
can you give me an example of a modded joker that does something similar? Maybe I can just look and understand
local j_clan = SMODS.Joker:new('The Clan', 'clan', { Xmult = 2, type = 'Spectrum' },
{ x = 0, y = 1 }, {
name = 'The Clan',
text = {
[1] = '{X:mult,C:white} X#1# {} Mult if played',
[2] = 'hand contains',
[3] = 'a {C:attention}#2#'
}
}, 3, 8, true, false, true, true, nil, 'six_suit_jokers')
j_clan:register()
here, I don't explicity specify the Xmult of the joker in the loc def, but put a variable
loc_def function then simply looks like this, passing in that xmult as the first parameter
function SMODS.Jokers.j_clan.loc_def(card)
return { card.ability.x_mult, localize(card.ability.type, 'poker_hands') }
end
so from what I'm seeing, context.cardarea == G.jokers and context.before runs before everything, and once other jokers trigger it runs whataver is in end_calculate_context. I'm still not getting it to work, but the interactions with retriggers means the first one runs once, and the second one runs for retriggers. It's so weird
retriggers act on cards, in that case you probably want context.individual which runs whenever a card is scored, including retriggers
which means you'll want to operate somewhat similar to hiker, but instead of upgrading a playing card, the joker upgrades itself
the cond there would be context.individual and context.cardarea == G.play
which language is this written in?
Lua, with the love2d engine
oh bollocks
I don't know lua
I'm attempting to assist with archipelago / balatro connectivity and we were trying to figure out how to inject code into balatro itself(to give the user a pack for example)
everytime i try downloading the base mod it says it cant download cuz theres a virus or its unsage
#1217867725532041369 try following this guide
the windows AV really hates the classic injector
because, well it technically is a trojan
Windows AV Hates a lot of things
for trying to figure out what you'll need to inject into, I'd recommend starting by inspecting the game's source code
you'll just need to extract the executable for that
Which is why I asked what language the game was written in
at least lua is really easy to understand
it has its quirks, surely
I have knowledge in python and some others
like 1-indexed arrays
ok actually now that i think about it, figuring out what a ternary operation is supposed to do is fucking annoying
when you know enough of the basics, syntax is basically just flavor
but other than that lua is pretty intuitive
but please let me use && and ||
frfr
&& is fricking and, literally
doesnt python do that too i dont remember
I think so
ew
neq is swirly tilde thingy I don't even have on my keyboard, so I'll usually do not (x == y) 💀
anyway main injection method we have is #1214591552903716954
I want my
for(i = 0, i < var, i++){ alert(you're stinky bozo :balatrojoker:) }
you want for loops that separate with commas? unimaginable
usually you'd have semicolons where you put commas
there is no language I know of that uses commas in that place
Man, Steamodded 0.9.7 is laggy
yeah you right
It's just laggy moving stuff around and all that
It might just be that i have like 40 jokers and a bunch of decks but eh, idk
yeah might be that
lmao
haven't heard any other reports of the sort
But at the same time it lags when i have 3 decks
ok question
idk why, it's literally 3 decks
is it possible to give someone a pack outside of a shop / blind selection page
mostly just to see the limitations
yeah, some tags do that at least
i think you can, but it would most definitely do something weird
like popping a pack during a blind, right?
though it would defo go bananas if you tried to do that during a round
basically wondering whether I make pack opening / delivery instant or make it a menu that shows up on the shop page
probably better to lean menu
yeah i only have a deck on my screen and moving cards is laggy
and it's not consistent
probs you'd wanna give the player a tag
can I not give them a pack open seperately?
is this for archipelago?
yes
ig that'd also work
basically I don't want to give them like
depends on how hard you wanna go on UI mods
in case you didn't get an answer, a single space in one line variable does the trick for that
29 tags at the beginning of every run
but in principle, UI sucks for this game
bleh
thanks but i actually didn't need the new ling anymore.
maybe giving tags is easier but we plan on allowing the packs / tags / vouchers redeemable at the beginning of every run
which means we will need a menu to claim them
(to not lag the shit out of the game)
if youve seen arch it'll be really similar to STS
literally...
As a game developer, UI is hell on earth to implement
We could steal a menu and repurpose during arch runs
that way we don't actually need
yk
and yes I've had to mess with that and completely overwrite the function this is in to make custom playing cards work
there is a debug menu in the game that you might be able to pull from
i have no clue where it is in the code tho
the hard part is replacing tags, vouchers, blinds, skips, money rewards, with randomized rewards :)))))
hm yeah
for a good bit of base level interactions with the game's code, the source code of steamodded might also prove useful to you
I'll look into both
😭
I tried to use Balamod but couldn't wrap my head around how to make it work
And gave up
yeah balamod also exists i guess
just saying
that seems like it will not go very well for a long time
once I am home I will probably be able to investigate
I mean there was that jimbo's invitational thingy, but that just had observing functionality, it didn't actually interact with gameplay
observing is actually hugely important to start with
this feels like a manipulation method lol
if you think about it interaction is just two-way observation, or something
eh
the only issue is that due to balatros 18+ pegi rating, this has a much smaller set of eyes on it.
(technically this discord should probably be 18+ but whatever)
currently I just want to get basic code injection off the ground so that I can showcase it to the other members of my team.
Is it normal for steamodded_injector to trigger win defender?
it's not supposed to be 18+
(doesn't mean it isnt unfortunately)
the classic injector will trigger AV due to the way it functions
it's technically a trojan for it modifies an executable
i get this everytime i try booting up balatro now
ah okay thank you, I'm using a separate balatro exe so I'll just go ahead
what files are in your steamodded folder? it might be nested one layer too deep
I think our best bet for actually making the mod function is to make a deck with a custom menu inside of it.
(to connect to the server)
i have the steam modded and the lovely toml
can you show me the file structure?
uh yeah that's wrong
this is when i open the steam modded
oh that's backwords
you just need the contents of the extracted zip archive in the top-layer folder
lovely.toml is already in there, you don't need to explicitly put it anywhere
so what should i get rid of and add
move the core, debug and loader folders out into Mods/Steamodded
then just delete the Steamodded-0.9.7 subfolder, these folders and lovely.toml are all you need
double nesting folders is usually incorrect
ok i think it worked ty
that would mean you can't play it with arbitrary decks? seems like a weird restriction
usually you just unzip it into your Mods directory
make sure it has a separate subfolder if it has any assets, else just the lua file on top-level is good enough
the reason is because there needs to be a connection menu somewhere
and either it'll be in an additional settings segment, or on a deck menu
probably the former
you could try to shove it onto the deck select screen, but even that doesn't mean it's specific to one deck
pretty much nothing is
ah
Sorry, a lot of nooby questions from me today. Is this something I should enable?
I'm clearly very knowledgeable 😭
In settings
i think that's for the badges?
by default, the loader adds a badge below every custom joker, consumable and so on that shows what mod it's from
if you don't want to see that, you should check that checkbox
(can be useful in case you need to troubleshoot)
yeah, some don't like it so we added an option to disable it
I tried to edit Challenges.LUA but messed up somewhere. Could I get some help figuring out what I did wrong?
uh for the most part, you shouldn't edit game files directly
no, it demolishes mod compatibility. you want to use decorator functions
I wish there was a good tutorial out there then.
the game has only been out for like 6 weeks
I've never used LUA, never really modded a game before... I'm trying for the first time basically.
there's a lot of mods out here that you can use for reference
besides also inspecting the game's source, you should give the steamodded wiki a read, even though it's still incomplete
gosh i can't type huh
What's a good mod to check out for that?
Six Suits (not threaten by Aure at all my family is safe)
💀
theres a couple challenge decks that exist in #1209506514763522108 , just search up "challenge" in there
https://canary.discord.com/channels/1116389027176787968/1211082061251874866 is a challenge mod I made, never really got any traction though
okay, is there a way for me to specify that i want a variable to be the value returned from a function, and not the function itself?
i want to debug my "straight looping" code (which i fixed, thank you)
why is this saying it's trying to get the length of a function?
is it wrong timing to put it in init or something?
might still be that you're returning a function instead of a value
and how would i fix that?
by returning the call result of the function instead
can poll_edition return modded editions (if there are any)?
if that function is also modified, yes
there's no standardized edition API yet and not a lot of edition mod, that I know of anyway
ah okay
'nother thing about this, you're indexing G.P_CARDS by globals of the name H_Q, H_K and so on, these should be strings
otherwise they'll just be nil
also yes, the timing is off
at load, you have no jokers
so superposition is for sure not present
if anyone would be willing to help with arch were open btw
Lacking time atm, but the least I can do is get any loader functionality you might need up and running
might consider joining the effort down the line
whats arch?
ah yea I know that.
What would you use for checks tho? Card unlocks?
How is the wording on this? Not sure if i can make it shorter somehow
"change edition" to me implies that it can affect already editioned cards
still suggesting the more vanilla way of putting scaling in the scheme of
"Gains +X thing per Y (currently Z thing)"
you can probably cut "on this"
thats import as I planed jokers that count the tokens on all jokers
From most recent steamodded injector exe on github, I don't think this is normal
we would use blind clears, blind skips, card unlocks, hand plays, deck unlocks, etc
This is very normal
Very on theme for windows
It goes oh its injecting why don't i have a cry about it
But why is a trojan virus being detected in the executable, wouldn't it have to be in Steamodded for it to be detected
the problem I have with that is the base +X that I already have.
"Gains 1% chance to add a edition to discarded cards per Cosmic-Tokens on this"
"Currently 5%"
Even tho no tokens are on that card yet
steamoddeds injector is seen as a trojan
I couldn't tell you why windows detects it like that cuz im not a genius but i know its safe
It detects it as a trojan because, technically, by the way it operates, it IS a trojan
Its just not a dangerous one lol
yea, steamodded functions exactly the same as a trojan
so windows goes like "hey! thats a trojan!"
if you really dont want to go thru with the .exe, you can use lovely to patch steamodded in on runtime
Someone innocently gifts a wooden horse
Windows goes "We don't get fooled again"
so this is completely safe then?
I'll need to ask an arch expert x3
that sounds reasonable xD
local thunk please fix!!1!1!1!!1111! /j
How do I load my mod with steamodded? I put the LUA file in pretty much every single possible folder.
you just uhh enable visibility os hidden folders and find AppData in Users
I probably wrote something wrong in my file
make a folder if you need
if you do get it to run, there's a syntax error in your file, line 49 is missing a }
yeah
I was basing it off two other mods that look like that to me. Where on that line should I be putting it?
... does math.random(2) always return 2?
no it doesnt...
what the fuck is this luck
you'll need that line as }}) to have everything closed properly
uh wtf
Odd. What did I do different? The other two mods don't have that.
i genuinely do not know whats going on here. math.random is a lua function, right?
i changed it so it repeats until b==1, and it ALWAYS starts on 2
looks like you just missed a bracket, that's all-
dunno about bounds with this but try math.random(2.0)
Um... huh. I put another mod in the same place, that mod works, mine doesn't
Mine doesn't show up
actually looks like that mismatch is actually somewhere else, you're not closing deck.cards properly
you guys ever faced the final boss of Balatro named Three Pair?
yes
fun fact: this is how the game looks when you set CRT to 500%
have you renamed the file to have a lowercase extension (lua instead of LUA)?
balatro horror game
yes
and this is 1000% with crt bloom off
phuck
stop increasing it please 🙂
with bloom on it looks a bit worse
ok i begone
oh god no
I have
okay im pretty sure math.random is just flawed
here i was spending hours trying to figure out why my joker kept giving me photograph, out of hundreds of options
...
LOL
heres crt at -1000%
doesn't the game use a custom pseudorandom function?
But... where is the problem with the Deck?
the game's pseudorandom relies on math.random
thanks for not increasing it, but this isn't any better
might still be about there being no seed
the games pseudorandom func will ensure it's consistent with the game's seed
(who said 10 of spades?)
Cursed
can you make it oscillate back and forth
new joker: X2 mult for free but you have to play at -1000% crt
Anyone that has been modding. How easy is it to add like a new deck or a new joker. If I start I'd want to make something that doesn't stray too far from vanilla
thats a lot more effort than changing 1 line in the code
How am I closing it wrong?
https://github.com/Steamopollys/Steamodded/wiki has resources on these things
ah
you have a bracket mismatch, you're opening one more bracket than you're closing
localthunk remove some glitches dawg /j
wait until you stumble over the game's UI code at all
Wait until you find an <eof> expected near "end" error
searching through 2.5K lines of code to find where you forgot an end
does anyone know what the lua version of balatro is? (just for some math utilities that I see are only available from a certain version onwards)
okay i figured it out, if anyone else has issues with random, the first call of math.random() after setting math.randomseed() is pretty much not random. calling math.random() after the first call is ACTUALLY (pseudo)random
this will be balatro in 500BC (10000% crt)
STOP INCREASING IT PLEASE
We need to go higher
NO
yes!
Jimbo: "what did you do
"
sorry i wont be able to navigate the menus
(flashbang alert) this is -10 000%
why is it frowning :(
:(
i still find it cool how you can a function can go "yeah sure, -10000 input value, ill render that just fine"
When I turn off my virus protection, and then download steam modded, then turn my protection back on, it automatically deletes the file. Any clue how to stop this from happening
thats math, nyeah
I got my mod working, thank you. Tweaking my challenge - "Yacht" - now
so I got my modded joker to work, functionaly, but visually I'm having some issues. this is my calculate code:
my expectation was that it would send an "upgrade" message for each card, but it doesn't
and I don't know how to display a message at "end_calculate" that displays the chips and multi both
the context.individual is exactly the same as the one I see in the source code for hiker and stuff
so I don't really understand it
oh never mind the first question I just figured it out. So it's just about how do I display two messages basically at the end
🤔
Time for me to make a github account? That's where we upload our mods, right?
I think in an individual you don't need message, like other jokers in that context
(beside upgrade)
What if you put everything in the same return?
Have we found the issue that causes games to CTD when hovering jokers? It dosent seem to be mod specific based on my testing
I tried that. Tried returning mult and chip like in the core game code but it just won't work
also tried setting it first then returning it
Which steamodded version you have?
0.97
Dunno if it's a Steamodded issue, usually that happened to me when my mod didn't had something properly linked
if nobody else has this issue anymore its probably on me. Ill check if i have everything installed correctly
Put everything in the first return and replace the 'message' line with extra = {message = localize('k_upgrade_ex')}
No no. You don't understand. It's like Wee Joke. Each card played triggers an upgrade - and then at the end it adds mult and chips. The setup is correct and functionally working as intended. The only thing I don't know is how to make the joker itself display two messages (jokers like scholar do it per card, but here it should be the joker itself). There's no example in core code of something similar
Oh add a check for this context and add your chips and mult inside it elseif context.cardarea == G.jokers and not (context.before or context.after)
how do you implement a tarot card in 0.9.7 because my way of doing it results in this crash when i hover over it
that... doesn't sem to work. I also don
'*don't really understand it
Show your code
I tried sending these as chips and mult too, just to try and see if these are keywords
Wait you only got the calculate function so far?
Also its elseif context.cardarea.. nor just "if"
oh there's more code but I don't see how relevant it is
and I don't understand why it matters that it's an elseif
It's late for me rn so I'll just give you this, it will help a lot good luck https://github.com/Steamopollys/Steamodded/wiki/Creating-new-game-objects#creating-jokers
I'm familiar with this and I've gone over it. It's okay, thank you for trying to help, I'm new to this so I'm picking it up as I go
Yea actually nvm that prob
Someone more competent might help you lol, I'm off, gl 👍
thanks!
I'm of no help but my crashlog looks identical when hovering over jokers in 0.97. Didn't have this issue with prior iterations of steamodded
same
is this rare negative brainstorm
i didn't even use dev tools
i just got it normally is this rare?
What problem are you having exactly?
i think i encountered 2 separate lua quirks today that caused me to be stuck on one singular feature of my joker
fun fact if you try to make a set where the keys are numbers, you have to manually track the size of the set!
my first time makin a joker, how's this balance-wise? should i add a max or smth or is it good as-is
this is like
scaling money if you have a build involving gold cards
maybe only scale on boss blinds?
i like the idea, but its def really stronf
stronf*
strong*
lmao
by round, do you mean small blind & big blind & boss? im pretty sure thats what they mean
yeah, currently its just any blind; i kinda like the idea of it bein boss-only though
i think boss-only is the way to go
what about like:
for every round beaten with one hand, gain +2 hand size
for every hand played after the first, -1 hand size
though that works too
hand size is a 'premium' stat, so you have to be really conservative with adding it if you want it to be balanced
does anyone know if showman lets you get cavendish without destroying banana first?
ooh, i kinda like that too
itd definitely still be powerful but at least itd punish u for reckless plays
then again if u got the right setup a +1 hand size would guarantee a first turn win even early on, but then again again the right setup could win with just 1 hand size so idk
ill put both ideas on the grill for now, thanks fellas
not sure, but i could check with debug tools rq; one min
doesnt look like it, no; just getting more gros michels
👍 ty ty
Is there a known way to hook up VSCode to debug the game when youve injected code via lovely/steamodded?
i don't think baron mime red seal steel builds really need to be more powerful
Is there a way to have the starting hand be one size, but draw more or less cards after the first hand?
In a challenge, I mean?
On a similar note, has anyone gotten breakpoints working?
im so confused right now :/ I can provide mod list, but ive made a few for myself
if your in 0.9.6 this happens to me when playing a retrigger joker, it affects other things as well. Try downloading 0.9.7
while trying to reduce the motion of balatro I actually increased it
the game is scared.
quaking in fear
this would honestly be an interesting effect for the final bosses
i mean maybe a little less excessively
great fixed
playing balatro in new jersey when the earthquake hit
balatro is more important then earthquake
thats a ) it wants
you dont supply the index to table.insert
take #G.CHALLENGES+1, out of the table.insert call
earthquakes are temporary but balatro is forever
true
Odd, my other one and the other mod I use have those in it???
well you dont need it lol
so just
maybe its not The Problem here tho i'll keep looking
yeah
Wonder why the other mod I checked out had it.
Actually... quite a few that I see have it
this should have been a part of Extremely Normal Mod
¯_(ツ)_/¯

