#💻・modding-dev
1 messages · Page 150 of 1
am i forgetting something obvious in terms of the icon not changing (there is def an image file in the folders)
what are all the description function things (i.e. the C: X: S: etc)
or where can i find them listed
well thanks, but i was asking about the things those can be assigned to
like is there anything other than C: X: and S:?
cus i kinda want a specific thing of my description text shaking
or something
You might need to look into Cryptid's codes for that...
mmm
would that involve downloading cryptid?
No, there's source code online
https://github.com/MathIsFun0/Cryptid/blob/main/localization/en-us.lua
to be able to use them
How do you go about modifying the sprites in the game? do i need any particular programs?
I use Libresprite, it was recommended to me from someone on this channel/server.
i use aseprite for the purpose of editing the sprites, i was wondering about how to actually replace them in the files, unless libresprite has that functionality? it looks like a drawing program
i've opened the executable with winrar but it doesn't let me make any changes, what else can i use?
you can crack open the .exe of the game using something like 7zip
going to try with 7zip
Wait, which executable are we talking about?
And which sprite do you want to replace, and with what change?
i'm trying to replace the file holding the sprites for the jokers, both the x1 and x2 versions, with an altered version i did for some sprites
So you're doing a texture pack, now I get it.
oh yes
I think there's a texture pack manager mod post in the modding channel, maybe check those up to see if you can get any help from there.
for now if just replacing the files works i can just use that, then i can do the verify file integrity thing to restore to default probably
how does the trigger "ease" work? i dont understand the guide's explanation
I have a guess.
Are you directly change the sprites of the vanilla jokers? In the folder you extracted from Balatro.exe?
ah, yes, will modifying the game's files directly not work?
When you extract an .exe, you essentially create a copy of that thing.
Making changes in the branched out timeline doesn't make any change to your past.
i believe i picked the option to open it instead of extracting
plus, the changes seem to actually have taken place in-game
Would you elaborate more about "doesn't let me make any changes"?
Anybody know if it's possible to make the spawn rate of edition jokers INCLUDING NEGATIVES in shops and booster packs into a variable or something?
when i opened the executable with winrar, anytime i tried to replace a file it then gave me a warning saying the file was corrupted
using 7zip i can replace files
That... would not be a correct way to edit those sprites, I think.
The safer way would be drawing a new sprite sheet and link the jokers to the new paths. Which I don't know how to but know it's doable.
seems reasonable, how do i make it so that the game looks at that other spritesheet instead? i don't know LUA but i can probably figure it out if i know which file to look in
oh well, i'll check the files
it's just a joke edit so i'll do it the bruteforce way if i can't find it
You may also ask the same question some time later when there's a different set of people on-line. Maybe they can help you.
can't seem to find the file, will ask later
how would one go about making an item create a joker from a list of modded ones? ive made an item that creates a random joker but unsure where to go from here
Anybody know if it's possible to make the spawn rate of edition jokers INCLUDING NEGATIVES in shops and booster packs into a variable or something?
I'd look at that code for the one voucher that increases their chances (yes I know it doesn't increase negative chances)
"add_event also has a third argument, front. This is a boolean that will put the event at the front of the queue. Useful to block stuff already in the queue."
can anybody tell me how to use this?
sounds like it might be what i need to stop my events and base game's events from overlapping
Exodia
so in my mod since its based on dungeons and degenerate gamblers it needs to add cards like 0, 1, 11, 12, 13 etc.
but apparently there's a mod that already DOES that (UnStable, though my spriting of those cards is admittedly alot worse) so i was wondering if ther was a way i could do this without my mod being incompatible with UnStable
elaborate on "overlapping" please
regardless if that's true the event you add will always be processed first, before any of the other events in that queue
ideally your event should also be blocking
but blocking is on by default so bleh
i made a joker thats supposed plays 5 different text boxes in succession with no interruption, the issue is that for some reason the game events (reshuffling the deck, entering the cashout screen) happen inbetween each text box, causing the text boxes to be misaligned and some missing entirely
@weary jungle idk if you figured this out already but set timer to "REAL" in your event call to make it unaffected by game speed
is it possible that these text boxes are returning true early
what do you mean?
okay there's two possible issues i could imagine
- text box event returns true and allows for more events to run even if the text box is still visible and/or
- the events for the text boxes are being added after the previous text box is gone, and not all at once
i believe its the latter
because all my events are set up one after the other like this
if you want to use front (which i don't think you should) youd need to apply them in reverse order
ah
secret third issye
that add_event is unreachable because you return early
oh wait
comma
First of all nooo I've seen your spritework and they looks great, please don't say that aaa
Also, I'm pretty sure I've already seen other mods do something similar like rank 0, 1, and inbetweens as well. Since SMODS applies mod prefix automatically, I'm pretty sure they could have been loaded alongside without any problem.
They would occupied a different slot though, as internally they would count as a different rank
I think the problem part is less so of a conflict between our mods but rather a support for these rank for the other (especially modded) Jokers and boss blinds. (I made UnStableEX handle stuff like odd/even based on the rank's nominal value though, so technically it should made your ranks also works with those by default)
ohh hi adsf
yeah try using front and if that doesn't fix your issue then add those all at once
TWO whole users of smods rank api
yeah my mod is basically porting stuff from dungeons and degenerate gamblers and apparently i wasnt the first to think of porting the weird number cards it has 😅
nevermind three unstable
lol same inspiration technically
i was actually going to use unstable as reference to figure out how to add the ranks in the first place hehe
how should i use front?
add_event(event, nil, true)
if you're applying them one at a time you don't need reverse order shenanigans
i added 0,1,11-20,three face cards,21-30, three face cards, þ, and oracle
im adding 0, 0.5, 1, pi, 11, 12, 13 and 21
and also making it so negative playing cards are possible to get
(one of the jokers added so far is capable of adding them but they drop at standard rate so they still are very rare)
never released it tho cuz i wanted to add jokers for em
i made it so my Chance spectral can make negative playing cards
DNDG types out pi instead of using the symbol so i did the same thing and it looks so silly
pi!
using pi symbol would have been easier but it would be less funny and also not accurate to the source material 
sorry i mean, where does the front go?
been super drained and tired today but ill probs work on adding these tmrw and then figure out UnStable compatibility (i.e. not having two copies of the same cards) way down the line cus idfk lmao,,
true is front
in that message
sorry i shouldve specified
GOT IT, thank you, sorry for the denseness lol
lol it's alright
the number is much funnier
if you change it to the pi symbol ever let me know so i can kill you
true!
na the designs for these are likely finalized
i just have to make like
the other suit versions
(and the Nothing suit from DnDG)
I think having two different versions of the cards are fine if they have different functions imo, cause they have unique function here and changing them would break one or the other
if you mean the straights thing i actually wanted to add that to mine too heh
cus uh
im pretty sure in DnDG they have that same mechanic
like pi can be both 3 or 4
it's called "round-up" in that game but same thing really
who woulda

true, that's the reason I came up with the inbetween gimmick to begin with
i actually left it open and took a nap
that's so real
id sooner play a game of hockey than spend 7 hours doing anything
havent actually done anything with it i kinda just leave it on in the background and forget its there since its just
another program
id sooner play hockey than do a lot of things honestly it seems hella fun
and i can skate relatively well
ill make sure to credit for any snippets
oh also
what, like this?
really appreciate your kind comments to me and complimenting the sprites i did that was really nice :)
not like that
i figured, it crashed my game when i tried it
the event is a placeholder for your Event({ stuff
after the closing brace and parentheses of that event you'd put a comma, then nil and true
it's a little bit jank but technically it's just the weird way of using steamodded already built-in feature so dw about the credits lol
so G.E_MANAGER:add_event(Event({ --args }), nil, true)
--args?
ohh i see
placeholder again
i know its common practice in balatro modding but i always feel slightly bad when using code from others
anything you normally put in your event
feels like theft ,,
oh ok, got it
more like a gift except instead of it being handed to you it's left on a counter with a paper saying "whoever finds this, take it it's yours"
i guess its true
that's what I tell myself whenever i steal things from people anyways
yeah its different to something like artwork
alot of my jokers actually utilize stock imagery believe it or not lol
how does that work
i have 2 seconds on aseprite i wouldn't know
fair enough ,
i think i just bought it made a really shitty logo for tmj (that i could have made in mspaint or anything else) and never did anything of value with it ever again
i was gonna compile it but i couldn't figure that out so bleh
i bought it before knowing you could compile it but i have literal hundreds of hours in it so i got my money's worth lmao
I started doing Balatro modding back in around September/October last year when lots of documentation aren't as complete as it is today so most of my modding knowledge are either completely trial and error and/or study how other mods work
so uh, question... how many of them should i ideally be putting nil, true on?
all of them except the first
that's so true even with the documentation that exists today
alternatively all of them
okay, i did all of them including the first and somethign very bad happened
i miss when i could complain about smods not having documentation
now i complain about it not having annotation
(it started playing the sound effect VERY loudly, over and over, froze up my game and prevented me from alt tabbing or closing the game without the task managed)
next i will complain about it not having a complete luals addon
yeah no matter what it always crashes, badly
like, all of it? including all the nil, true that make it crash?
also this is what happens, the game freezes and stops working entirely (LOUD WARNING)
by "all at once", what do you mean
cause someone already told me before to do my events "outside" and all it led to was them not actually working
ill send you my code if you need to look at it
so ```G.E_MANAGER:add_event(Event({
--args
}))
--event two
G.E_MANAGER:add_event(Event({
--args two
}))
accidentally pasted the so
my life is over
like so?
looks good
alright, ill keep doing this and let you know if it works
i was already told to do this before, not sure why i expected it to work this time
yeah idk
hello balatroians
what code editor should i be using for this whole modding thing
i don't code
(i'm on windows)
Visual Studio Code is probably the option you’d be recommended most
Ok cool tyyy
Notepad++ if you're an elitist
VisualCode if ur a hobbist
Notepad if ur a masochist
no vim????
use vscode
people who use notepad++ are wild
(not in a bad way mind you)
It was a joke
vim users don't get jokes

ahem..
petition to include the allowed usage of "non-ai OSS" to #📜・modding-rules
well, I guess an oss isnt required so my petition is useless

the lovers
outside of calculate, how do you make a card have a message? I tried card_eval_status_text but nothing happened
Can you show the full code for your events?
sure thing, good morning
https://hastebin.skyra.pw/vodubibovi.pgsql too large to send in a discord message, apologies
That’s perfect
So the reason it isn’t working is because you’re adding the next event within the event itself, so it only gets added to the queue when that event triggers. If you unnest them all it should work correctly
is there something im not understanding about how to unnest them? because this is the third time im recommended this
would this not be how you do that?
Hmmm, what do your add speech bubble and say stuff functions look like?
I don’t think sounds would block future events like that
my add speech bubble and say stuff functions? like, how they are in the code?
Yeah
card:jcbb_add_speech_bubble(text_key,align,loc_vars)
card:jcbb_say_stuff(n,false)```
No, what are these functions?
what do you mean?
I need to see the code for these functions
I can have animated consumable cards right? Has that been done before?
dont know if anyone did it, but it shouldnt be any different from animated joker cards
Do the speech bubbles ever show up?
What's a quick way to create a random joker card?
yeah, this is what happens
the 4th text box is eaten up by the cashout screen
its supposed to say
"...drag it to the deepest corners of inferno..."
Does it happen to anyone else that the pc freezes completely after starting the game and the lovely console opens?
I wonder if it’s the event in the sat stuff function
how so?
i´ve got a question regarding changing some of the localization and globals with SMODS to make custom suit names and colours but i´m not sure if i understand the info on the github correctly:
i´m currently making a custom deck with custom art and suits but now i want to change the name of the suits with the en-us localization and the colour of the text with the globals.lua (both changes work with direct injection into the .exe)
since i want to make it semi-public i´ve started making it compatible with SMODS but i´m currently stumped on how to edit/replace the en-us.lua and globals.lua of the game with in-mod alternatives.
Looking at the github documentation i gather that localizations, when in the mod root directory under "localization -> en-us.lua" in this case, should be loaded into the language as well? But do i understand it correctly that i can only input new text with this and not just have it use my .lua?
what i´ve changed in the modded files is:
replace all suit mentions (plural and singular) with their respective counterpart in en-us.lua
changed the HEX codes of the LC default suits to their new colour code
(note: every change was made into the whole standard file, aka the 2 modded files are complete like used in the unmodded game, just the right parts edited)
U run the game in window or fullscreen
Sounds like the game going fullscreen but not fully loaded yet
Localization files with smods can replace existing text
you think that causes it? weird
Not entirely sure
But sometimes programs kinda load a blank window before fully appearing
Run the game in windowed mode see if it still happens
If it doesn't then it's just the game loading in
I was using borderless
Borderless still fills the screen
Windowed it is
When u say freeze
U mean like everything locks up key presses like windows key doesn't work
Yes, I have to reboot the pc
Or just the screen looks Frozen but u can still open task manager
the former
thats the latter
Then yeah just sounds like the game not fully loading
And since ur in borderless full screen
Just looks like ur frozen
I'll see how it goes now
U used nvme SSD or HDD?
it happens after restarting a few times
Also balatro for some fucking reason really hates discord?
And crashes the game
Maybe it's discord overlay
do i understand it correctly that already existing key localizations are first loaded from the modfolder and if nothing is there it defaults to the standard ones?
SSD
localization from the game itself is loaded first, then overwritten with whatever mods provide in load order
that's functionally almost the same though, except for the fact that you can replace keys partially (i.e. change only the name and not the description or vice versa)
@frosty dock hey quick question what's the best function for generating a random joker card using the crate card thing
how did you fare with smods.add_card
Otherwise it turns nil
I got pot of greed working
Right now trying figure out random generation
SMODS.add_card { set = 'Joker', key_append = 'whatever' }
wait technically there should be an RNG key
Isn't Derek the flag for joker cards?
there
is this correct for the RNG key
local new_card = SMODS.add_card({set = 'Tarot', key_append = 'randomteleport'})
Ok so this would be for the use function?
I didn't see it, my bad
For when the card is used
if that's when you're creating a joker, yes
Alright
Background looks better but depends on the theme
Theme isnt really decided yet
Im going for like an occult type thing
Or perhaps i should darken the background
I like the background ones better
so it should grab it out of this localization folder and use it? or am i understanding something fundamental wrong? (this is my first time modding and for now it hasnt grabbed it)
This will look very dark in game btw
How dark is very dark
Okay i just compared
I think i have enough contrast here tho
And the background is only supplementary anyway
Adjusted for contrast
looks alright, you'd have to show me the files to see if there's anything wrong with it
this is the changed localization (i´ve just used ctrl+H to swap the standard suit names with the custom ones, which worked on direct injecting) (suits are: Peach-Peaches; Ducky-Duckies; Piplow-Piplows; Pumpkin-Pumpkins)
(does this type of changing files also work with the globals.lua?)
file looks good, though you don't need to include unchanged keys. Does the mod show up in the mods menu?
other values like from globals.lua you just change in your main mod file
and third what version of smods are you using?
i suppose something is wrong
maybe something is wrong?
maybe, just maybe
something is wrong
perhaps, something is wrong
The mod loads correctly, as it shows up in the "mods" tab ingame and the custom Sprite work
That's good to hear, i was hoping that was the case ^^
Should be the latest, i've installed it like 3 days ago from the github directly, am not on my PC currently to check though (windows)
releases or main branch?
"1.0.0~ALPHA-1323b-STEAMODDED" says the version.lua of my smods-main
yep that's latest, should be all good then
I do recommend removing the parts of the localization you're not changing, just so you're not overriding changes of other mods that load before you
yeah, i figured that as soon as you said i dont need unchanged stuff, i´ll pick it apart when i find the time later, thanks!
👍
I am still locked out, but what's the link for the modding wiki discord server?
if its allowed to be shared
Joined, ty
thoughts on this ability for Shackles?
+250 Chips, forces 1 card to always be selected
exactly
how does it interact with cerulean bell
i haven't implemented it yet, so i'll guess it forces two selected cards
this also applies to tarot card selection does it not
no, it doesn't
I feel like it wouldn't really do much then unless it forced you to use that card beforehand
pretty much similar strength to stuntman
banger
high card builds gonna be lovin that one
hello guys. nice to meet you all. i wanted to ask a question. ive been playing balatro on my windows steam and messing around with game.lua. since now im using macos i couldnt find the file. can i ask you guys where to find it on my macos? thank you for the advance
how do i deal with this grey outline
like this
Right click balatro.app, click Show Package Contents. Then right click contents/resources/Balatro.love and click Open With > Archive Utility
What was the line of code to add a seperate lua file to the main one
front specifically causes a freeze
i dont know if im using it wrong or what but it does not work
ah ok
aside from manually reordering them in the code, is there a way to reorder jokers you make in the collection?
okay gonna try this. thank you
thanks it worked
if im done editing after using archive utility, should i zip them again intoBalatro.love or just save them and play the game?
I've never personally modded the game by just altering the source code directly. I think you should zip the contents into Balatro.love again
assert(SMODS.load_file('yugiohcards.lua'))()
is this all I need for the assert fuction?
thats why i thought initially, thank you so much
hi! how would i go about adding a font to a language?
this is not loading the font
the font is located in /assets/fonts/m6x11plusCZ.ttf
@frosty dock so getting an error saying that an atlas doesn't exist but it's trying to combine both the atlas of the booster and the card into one as an error?
and nothing in my code is typo'd as what the atlas the error is looking for?
key = "joeymod",
path = "joeypacks.png",
px = 71,
py = 95
})
SMODS.Atlas({ -- png for yugioh cards
key = 'TCGyugioh', --atlas key
path = 'TCGyugioh.png', --atlas' path in (yourMod)/assets/1x or (yourMod)/assets/2x
px = 71, --width of one card
py = 95 -- height of one card
})```
both are closed properly
and both pngs are in the right directory
are we just not allowed to have two atlas next to each other?
wait nvm I found the issue it was a typo on my end
ffs
Isn’t that “reuse”?
Didn’t think about that but that does make more sense
reduce: 1 in 4 chance for consumable not to be consumed on use
reuse: 1 in 4 chance for consumable to be duplicated on use
recycle: 1 in 4 chance when using a consumable to create a random consumable of the same type
you know I haven't figured out how I made the text under booster say yugioh card

and I don't know how to change it lol
How do I change the text under the booster tag?
I honestly can't find it lol
wait I see it
hi! how would i go about adding a font to a new language?
i cannot get it to set properly
the properties of the font go in a font table inside the language
ah ok will try 👍
okay so it works but now it looks like this
is there a context like drawn_to_hand (Blinds) for Jokers?
but i assume this may be an issue with my font file itself
(i'm making a joker that does something every time your hand is stocked back up to full)
is this config_tab or extra_tabs
@frosty dock is there away to change the text under booster in the booster packs menu or is it restricted to the mod_name?
this what I mean
can somebody explain to me in detail how front works?
what's a mod_name
all its doing is making the game freeze up
--- MOD_NAME: Yu-gi-oh Cards
--- MOD_ID: Yugioh
--- MOD_AUTHOR: [elial1]
--- MOD_DESCRIPTION: An example mod on how to create Jokers.
--- PREFIX: tcgyugi
----------------------------------------------
------------MOD CODE -------------------------```
oh that
you can set a display name
it's display_name for json metadata, if you're still using old headers that's on you
pretty sure it's on the wiki what it is for that though
couldn't find anything in the booster section
well mod badges are anything but specific to boosters?
it's a global property of your mod
Reason using the old method was becauise was the only template tutorial I could find to get started with lol
this literally exists
It's been for a while but all my display texts have disappeared, what could possibly be the problem?
@frosty dock wait I though this was something I could put in the smod.booster part
I have two boosters in the same mod
"id": "CrazyStairs",
"name": "Crazy Stairs",
"display_name": "Crazy Stairs",
"author": ["Roloversion"],
"description": "New Jokers and new item (Alignments)",
"prefix": "cs",
"main_file": "CrazyStairs.lua",
"priority": -2,
"badge_colour": "ef9553",
"badge_text_colour": "6429a9",
"version": "0.1",
"dependencies": [
"Steamodded (>=1.0.0~ALPHA-1310*)",
"Lovely (==0.6.0)"
],
"dump_loc": false
}```
but wanna have them have two different names is what I was saying
no like
in your game
so you mean the "Booster" badge and not the mod name badge??
yeah that's your mod badge
Press 9 iirc
is there anyway to change it would I have to make a seperate mod for that lol
you can set no_mod_badges = true on any object to get rid of it and use set_badges to make a new one
it was enabled, I didnt even remember doing that lol
thanks
set mod badges go in the .json
I don't want everyone using it because mod badges are supposed to be standard, hence why it's not in the docs
or is it part of the smod.booster code
read the docs again, there's set_badges under API methods on boosters
no_mod_badges goes on the booster
you could also just change the badge to more clearly describe the mod rather than the cards?
k_ is the prefix for key
i'm gonna guess?
or is that for G.localization.misc.dictionary
yes
ok
you can also just put a string in directly if you don't need it to be localized
-# (not recommended)
key = 'varg_Thumb',
loc_txt = {
name = 'vargThumb Pack',
group_name = 'vargThumb',
text = { 'A collection of terrible cards' }
},
atlas = 'joeymod',
pos = { x = 1, y = 0 },
config = { extra = 5, choose = 1 },
weight = 998,
cost = 4,
group_key = 'vargThumb',
draw_hand = true,
unlocked = true,
discovered = true,
MOD_NAME = 'Joey Cards',
kind = { Tarot, Jokers },
no_mod_badges = true,
{
set_badges = function(self, card, badges)
badges[#badges+1] = create_badge(localize('k_JoelCards'), G.C.RED, G.C.BLACK, 1.2 )
end,
}
create_card = function(self)
return { set = 'varg_Thumb', area = G.pack_cards }
end
})```
make sure doing this right
ask some questions
how to add new language to mods without modify mods files because i want the localization works normally after the mods upgraded
let me know if any questions come up
thanks
Should be C:white for the first, and what does your loc vars function look like?
Why are you using a bizarre way of doing loc vars instead of the standard?
I get an error trying to use a G.localization.misc.dictionary
like not a crash error just a big red error badge lol
show code
I figured it out
apparetnly u don't need the k_?
if ur doing G.localization.misc.dictionary
well I figured it was needed since u need a mod prefix for custom cards for some things
but this will def be usefull in the future tho
I def should update the mod header tho
is there a way to see whats happening in the event queue? i really would love to see whats going on with the order these events are being executed
just anything that would get me closer to figuring out why this is working the way its working
also a little update to the yugioh part of the mod
scapegoat works

not gonna add joker limit
more fun that way
I still need to learn how to do these text stuff
like x5 logo
and how to change color properly
You can refer to vanilla localization
nobody knows? dang
How could i make a mod that replaces the joker art
DebugPlus displays the amount of events in queue, you could go off that. Though events are inherently mostly the same shape, so you'd have to either use debug to inspect function data or add other info to the event itself
How do i count for spectral cards in context.other_consumeable?
oh yeah, i already know that but it doesnt really help me much outside of cases where for some reason the event queue reaches the 10k mark
context.other_consumeable.ability.set == 'Spectral'
i think the more effective thing to do is to just add debug logs to the events you're trying to trace
thanks
that sounds lovely, how would i go about doing that
but just print also works if you use debugplus
kitty
It seems like the cat image for the repo has been a very popular change lol
best thing to happen to steamodded since 1.0
where is that in smods git?
i am using debugplus, but how does that change print specifically?
doesnt print just print what you write in it?
does print just not work without debugplus? ive always remembered it working fine
it shows ingame what is being printed
regardless print is overrated use io.write
no it does, just not if you're using the smods debug socket for some reason
moment
wdym
joker calculation
danke
calculate functions actually, i think joker calculation is the outdated one
clearly theres something im not understanding, how am i supposed to be using print?
if context.setting_blind then
if #G.jokers.cards > 1 then
local wraith_index
for i, joker in ipairs(G.jokers.cards) do
if joker == self.card then
wraith_index = i
break
end
end
local swap_index
repeat
swap_index = math.random(#G.jokers.cards)
until swap_index ~= wraith_index
G.jokers.cards[wraith_index], G.jokers.cards[swap_index] =
G.jokers.cards[swap_index], G.jokers.cards[wraith_index]
G.E_MANAGER:add_event(Event({
func = function()
G.jokers:align_cards()
return true
end
}))
print(string.format("[Wraith Joker] Swapped positions with Joker at index %d", swap_index))
end
end
in this case, it will print what happend in the bottom of the screen
if u have the debug+ mod
I want a joker to check te consum cards for spectral and give mult per spectral card (just like the observatory), but i cannot find the code for that voucher in any of the .luas...
if context.other_consumeable and context.other_consumeable.ability.set == 'Spectral'
Use the context aure gave you and return your Xmult
My problem is the for loop actually, but imma take a look at the game's joker codes and see how they work
thanks
You don’t need a for loop
nope, sorry, i still dont understand
Idk what u want, i just was talking about how the print works in game
i want to be able to see whats happening in the event queue, i was told to add debug logs
then why does this not work?
the second print is not fully funcional also, but at least it does not crash when i hover, and it just adds mult instead of Xmult (if I put Xmult(mod ) = new_mod it does not work also
events get cleared when you start a run, I'm pretty sure
@dry hamlet Are you available rn? I had a question for you if you dont mind and you were super helpful the other day
is this what im supposed to be seeing?
You’re using joker_main, which doesn’t have other_consumeable
yuhhh
what up
could you dm me so we dont fill the chat too much
yeah for sure
if your not ok with that we can discuss here
go for it
oki cool, your dms are closed tho so you gotta start it
i mean discussing here is usually better so others can pitch in to help too
ok well the baseline is i wanna go into the cryptid mod folder and toggle certain things to only have the more balanced stuff active
but idk how i would do that
i have no experience messing with balatro mods
we all start somewhere
uhhh don't play cryptid if you want it to be balanced? lmao
oh my b lol
anyways cryptid splits its files by item types
well theres some really cool and interesting jokers in there
if you go into each file in Cryptid/items/, there's a list returned at the bottom of the file
there just also happens to be some heinous crimes against humanity in there too lol
use the refactor branch
you can edit that list to remove anything
i don't know much about cryptid, but i do know lua and yeah there's probably a list somewhere you can edit
there's also the refactor branch
mr smods would probably be a better help than me lol
i see thats helpful
this is what i do with my code
whats a refractor branch idk what that means sorry
just add those brackets, then the set of them on the top remove the back space
a different branch on github, it's like a different version of the mod
ooooh
im still lost on how to use print for this
it's an in-progress update of cryptid
Can someone help me find a function to detect if any key is pressed
code?
Yeah I can't access the balatro code rn
well i figured that
if you click on the dropdown called main on the top left third of the window, you can see the different branches of a github repo
i will see what i can do
love.keypressed or G.CONTROLLER:key_press
i see
I really need to send a copy to my school computer to look at
How can I mKe it check for ANY key that's for specific key
whats generally different about the rerefacor branch?
is there a draft on the cryptid PR's
or refactor
Or is key press just all keys
it's called with the key as an argument
the refactor adds gamesets so that you can somewhat control how busted the game is
Oh ok nvm I'm dumb yeah thanks
oh dope
i only play refactor branch now, cuz that is the best way to test the compat with the mod im working on
that's just a temp branch based off refactor
as i already expect people to play the mod with cryptid
ah ok
what kinda print doesn't even print
ask 
this was all super helpful thanks guys
How can I turn this into a function
oh.
same way you'd hook any other function
I'm looking at what crypid does for cry_press but I don't know how controller works
can we change text color for important stuff like missing dependencies and the such? is that even a thing we can do
local kp = love.keypressed
function love.keypressed(key)
-- do whatever here
kp(key)
end
Oh ok
?
oh sorry that wasn't directed at you
If it's just key will it detect all keys
and outdated cryptid but that's not why it's dying
i just downloaded it again lol
haven't tried but seems possible
not steamodded cryptid
atleast it should be moved up
im worried about it maybe being rendered as one big piece of text which would make love.graphics.setColor (or setTextColor i forget) not do much
Thanks I GTG now
https://love2d.org/wiki/Text:addf looks perfect
oh this is super cool
thanks for the refracted suggestion @frosty dock, @cedar stream and @dry hamlet

imma test to see if its compatable with some other mods now yall take care
the crash info is just collected as one huge string
unrelated question! sorry for butting in.
currently trying to make my custom joker incompatible with Oops! All 6s due to calculation bugs, also just redundancy.
from what i've read and understood, this code should make my joker not spawn if all 6s is in my hand, but is there a way to do the opposite?
return not SMODS.find_card("j_oops"), {allow_duplicates = false}
end```
why not just don't include oa6 compatibility
right, how would i go about doing that?
also your code doesn't work, find_card always returns something so you've effectively made your joker unable to spawn ever
that's true
that does explain a lot. tbh i really didn't understand how this function worked lol
you'd need not next(SMODS.find_card("j_oops")) to check if there's actually anything in the returned table
basically it returns a list of jokers that you have with this key
should i use context.before? or context.cardarea = G.consumables (if that exists)?
Ive encountered an odd bug, why are my high contrast cards funky lol
some are and some arent
context.other_consumeable qualifies as a valid context by itself
imma mess with stuff a bit to see if i can fix it
btw we should maybe add a generic other_main to be able to catch all of these contexts at the same time if anyone ever needed that
also worth mentioning that this doesn't stop oa6 from spawning when your joker is present, so you can get both that way
you CAN take ownership of the oa6 in_pool function but that's mod incompat any%
i think its bunco that messed it up for some reason, or this version of cryptid
i can make it compat
is there another way to modify probabilities without messing with this array? my joker is the exact opposite of oa6
ya in_pool functions probably stack fine
ah i see
you can just ref whatever it currently is and hook on top of that
in that case just set the normal probability to 0
funny
all oa6 does is double/half it so
right, but it leads to issues if oa6 is in the mix
im not sure i see the issues in question
that's why i just want to make them impossible to be in your possession at the same time
there's some weirdness with selling oops, right
mhm
i mean you can just make something like G.GAME.probabilities.saved to save the old value and just put that back when you sell it
Thanks!
oops modifies all values in G.GAME.probabilities iirc
even though only normal is used
holy futureproofing
wait for real?
ah i see what happened with my high contrast cards, bunco adds new suits so thats whats going on
when you sell chud just set probability to 1*(#SMODS.find_card("j_oops")+1) idk
i mean if it works lmao
i can think of at least one mod that's incompatible with but sure
I still like just making another probabilities entry
it's okay nothing ever happens
being in here is dangerous, i'm gonna start another project and never finish it lmao
also wouldn't it be 2^#find_card
also works
thats gonna be me 100% if i figure out how to mod for this game 😭
how does yours work exactly

we have egg emoji? sweet
true


eg
cg
i mean i think if i do anything it'll be more ui/qol style, i don't find myself using any gameplay mods
anywho thank you for the help i will try to implement ur code
outside of super simple stuff yk
i'm super ass at lua all i've done with it is some ring racers stuff
paperback and extra credit gamer i assume
love the vanilla mods so so much
i just want to finish the collection before i add anything new, call it pride or ego or whatever but i just don't wanna cheat the collection
just make a new profile ez
I might have fully working code now
probably a good idea
i could never
my joker specific searching still doesn't work
that's okay because nobody uses it
but still
just to recap, there's no way i could change the in_pool function for oa6?
that is the opposite of what we said
i understand
^
take_ownership has steamodded documentation
oh i didn't see that message sorry
fuck it my vars is not working imma just delete it and people will need to do the math themselves
what would one add to make it so the numbers from a mod doesnt cap at e308 when using talisman
?
tried to do a thing that is not coded by default in main game and couldn't do it 👍
I have 18 mor jokers to code so I'll go back after if needed
is there a public source of this code i can see?
a git? not yet, but if u add me I can send u in your dm the file
bro someone copied my shit https://x.com/deathisforming/status/1882535228222427160
ive seen it like 5 different times
i came up with it first
pfft im not salty 😅
Nothing ever happens
Is this still the spectral thing or something else?
It's the spectral but it's fine, it's working as I want
thanks again
So my game seems to crash when i play rusty cards for some reason o.o
imma try a diff version of demo 3
Yeah that’s an old calc ortalab install
got chudjoker working with oa6, now i'm gonna make a challenge with it :)
can i use card:set_edition for jokers?
like
G.jokers:set_edition? cuz mine is crashing
G.jokers is a CardArea, not a Card
if you have an actual joker card, yes you can use set_edition on that
so i get a value at g.jokers and then use set edition?
G.jokers.cards[1] would get you the leftmost joker, for example
func = function()
G.jokers:remove_card(card)
card:remove()
card = nil
return true;
```that's how gros michael is writen in the example mod
idk, at least not if you don't tell what it's doing
oh sorry
basically i'm trying to add relics (which act like jokers but are permanent & in a new card area) but i'm having trouble figuring out how to get the card size to be smaller
so... they're still card-sized with this?
I think u just need to scale them in the atlas
try adding display_size with the same value as pixel_size
An atlas doesn't scale
trying this
still 71x95
The wee joker is smaller in the atlas image
because the center is scaled down
smods version?
Hi, someone know why this doesnt create the Joker pinata ? (the key is good) :
local card = create_card('Joker',G.Jokers, nil, nil, nil, nil, 'pinata', nil)
card:add_to_deck()
G.jokers:emplace(card)
G.GAME.joker_buffer = 1
The key is not good
why ?
SMODS.Joker{
key = 'pinata', --joker key
loc_txt = { -- local text
name = 'Pinata',
atlas = 'pinata',
j_modprefix_pinata
hmm
but we didnt create mod_prefix
no I'm trippin
First four characters of your mod id then
I dunno then, though I only tested the resizing on jokers
ty it work
might be something about how you're creating the cards then
it works for other centers too normally
🤔
When to do the Card:shatter()? If it is what I should use
I want to make Glass Cards shatter 100% after play (I do NOT want to change the probability). I have the if glass card but just don't know where/at what context it has to be
so for some reason even on the other version the games still crashing
I thought returning remove = true would do it but it doesn't somehow. Or wait I got an idea
not odd, you're using old calc mods on better calc
Debugplus:
one of your other mods is old calc
the crash is from ortalab
i just downloaded newcalc version
its only when i play rusty cards
from my limited knowledge i wanna say the issues are paperback and pampa with the ortalab stuff
imma double check tho
I thought this would remove/shatter the glass cards, but it doesn't. What am I doing wrong?
you don't get to remove cards during scoring
use context.destroying_card to destroy after play
Aaaaah oke thanks
Also you don't need a debuff check
also I don't think it would be self.debuff 🤔
This isn’t the new calc version of ortalab still
New calc is demo 3.1
Idk I just saw it and use it xD
highest i see is 3.0
Download from main, not releases
which branch?
Main
i assume main is "master" for theres
ty
ill let ya know how it goes
:^)
imma do a backflip
You’ll need to start a new run
game pulls a nil atlas error when i open my challenge. am i calling my joker wrong? i saw it was j_prefix_key iirc
key = 'chudchallenge',
loc_txt = {
name = 'Betting Man'
},
jokers = {
{id = 'j_chjk_chud', eternal = true}
}
}```
np

Finally put my mod on GitHub before something happens to my code
Can't wait to abandon this project in a few weeks
Need to think of some more cards I could slap into this mode
fixed it
anyone know how to properly intercept the game's controller functionality? tried using this function but the button values it prints from this are always some weird random long string of numbers, but the game code compares it with strings like "dpup". very confused by this
https://i.imgur.com/l8WELPl.png
its extra confusing cause these button values that are being printed below are all me pressing the A button. but none of them are the same. the hell is going on here
https://i.imgur.com/CXkwXO1.png
that looks more like dt 🤔
That's dt
huh? oh. did I mess up the function values then?
if i change the print to print dt its the same thing.
weird
That should not be happening since all the times vanilla checks it there's an assumption it's a string value.
yeah i dunno what i did wrong here
ok i fixed it? still not sure how that happened or how i fixed it but its printing the right values now
sounds like the file not being saved or something?
i use IntelliJ IDEA to code Lua so it always saves upon any edit
whatever the case its good now
me when I don't notice I'm editing dumps again
Any good mods to help with playtesting Jokers?
500 base event queue lmao
what are these "+[X] more values"?
print a specific element and you'll see
how?
DebugPlus
do we know how to add the "compatible" indicator to a joker, like on blueprint/brainstorm?
or does anyone know of a modded joker that does this so i can look at it for reference?
i still have no idea how to use print, anything that manages to happen is because im throwing out random shit and some of it seems to stick
...? I don't think I understand what you're confused about
what do you mean by "a specific element"
like if you're printing t, you could try printing t[1] to see more closely what an element of t generally looks like
adding [1] to my print prints nothing
for reference this was print(G.E_MANAGER)
like i said printing events won't give you a lot of information, as what they do is always inside a function
then why did you tell me to use print?
... I didn't say you should print events, did I?
I said you could add debug logs to the events you're trying to trace, whatever they are
doesn't every ide have this
/ every text editor
could you please tell me how to do that then? because thats what ive been trying to figure out all night long
i think even base windows notepad has autosave
... you've given nowhere near enough information about what you're trying to do for me to get any more specific than that
i made this joker that is supposed to say 5 text boxes in quick succession with no interruption, but for some reason ingame events, such as reshuffling the deck and entering the cash out screen, play inbetween the text boxes, causing them to be misaligned and one of them doesnt even appear at all
what im trying to do is figure out whats causing base game events to play overlapped with the joker's events
not anymore
very much seems like a result of that
well, its not
can I see some code then
it's hard to give instructions on how to debug something if I don't know what you're doing
yeah that's just an effect of how you're using delays
nvm i can't read
your events are still nested
what you have now is basically
G.E_MANAGER:add_event(Event({
func = function()
return true, G.E_MANAGER:add_event(Event({...}))
end
}))
with a formatting that suggests the events aren't actually nested
denest it properly and adjust the delays so they don't all go off that the same time
how do i "denest it properly"? because ive been told to "denest the events" 4 times, including you, and all 3 previous times they told me "yeah that looks good"
is it something to do with the return trues?
The new event needs to be entirely outside of the other event
1 (one) event manager call should look like
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.0,
blocking = true,
blockable = false,
func = function ()
local text_key = 'bodysack_corrosion_1'
local align = nil
local loc_vars = {quip = true}
local n = 5
card:jcbb_add_speech_bubble(text_key,align,loc_vars)
card:jcbb_say_stuff(n,false)
play_sound('jcbb_bodysackcorrosion')
return true
end,
}))
what you're doing is put the next event manager call into the return of the previous
you're unlucky this isn't a syntax error, this is because lua supports returning multiple values from a function
so your code tells lua to "the first value you should return is true, and the second value you should return is the return value of this function call I'm making to add another event"
so like this?
not the formatting of my choice, but yes
plays the sound, does not show any of the text boxes, seemingly plays all say_stuff all at once before going into the cash out screen
...
the delays don't stack, they all count down at the same time
the delays are all set to values greater than the previous one, this still happens
also, shouldnt the first text box at least show up regardless of the next delays?
show code again
🤔
not super confident with the event manager tbh, but try without blockable = false?
not much changes, i believe it locks up the game slightly longer, but doesnt show any of the text boxes
this is so weird
is there a way for a joker to check how many OTHER jokers there are that have the negative effect?
local negative_joker_count = 0
for _, joker in ipairs(G.jokers.cards or {}) do
if joker:has_edition('e_negative') then
negative_joker_count = negative_joker_count + 1
end
end
that does not work and crashes...
Hey everyone! I wanna learn Lua syntax! Does anybody have any idea on idea on how to install Lua on a Windows 10? I tried to look at getting lua 5.4.7 binaries or whatever but it needs to be compiled via Linux, so I'm probably doing something wrong :|. Also, any idea on a good and fast tutorial to learn the ropes?
98% of Balatro modders don't have a standalone lua installation, if you were to let me guess
also i wouldn't recommend starting with lua 5.4 if you're looking to make balatro mods
balatro uses LuaJIT with a 5.1 featureset
Yee but I kinda wanna learn the language overall
what's the crash log
Are the differences that big?
I'm used to mod to a game whose language version is way older that the current version
i mean there's quite a few
i just recommend learning the versn the game uses if you want to learn it for making balatro mods. otherwise do whatever, really
I'm very surprised to see that integers and bitwise operators are only available on 5.3 lmao. I guess it's better to just learn 5.1 at this point you're right
LuaJIT does take some stuff from lua versions past 5.1.
yeah, some
You should be able to safely assume that all Lua 5.1 features + this extensions list (minus 5.2 flag required) found here: https://luajit.org/extensions.html
(LOVE uses LuaJIT 2.1 w/o DLUAJIT_ENABLE_LUA52COMPAT flag enabled iirc).
I am making a joker that, among other things, debuffs all figures
I have no idea about how to do that and came up with this, which does not work
Does anyone have a list of Joker IDs so I can make custom OP "challenges" with weird combos of negative jokers and such?
no dice, trimmed both files down to only changed whole parts (aka all of the influenced joker/boss/etc) and only affected hexcodes and neither works (and now the colour of the joker descriptions talking about the suitnames is default black, even when only the localization is in the folder and not the edited globals.lua?)
use the key of the joker you want
it's the keys in this list that are important (j_joker and so on), not the order
anything else not working beside the colours?
because for localization colours, there's a separate function loc_colour in misc_functions.lua that defines them
the valid keys for this can be modified without hooking any functions #💻・modding-dev message
Ok, thats most of it. Now i just need to know how to make them negative and such
no that's always been wrong
your Hearts aren't in quotes
oh damn
so you're refencing a global named Hearts that doesn't exist
the localization doesnt change the text but removes the standard colours of the suit descriptions and the global does nothing as far as i can see
i´m wondering if i edited too much in the localization and accidentally swapped a keyword to a custom one and that causes the colour to fail because it can no longer find the right one?
hm can you send me the mod in full?
is it possible to make a joker that decreases the level of the hand played?
same way in which the boss blind does
sure, just plop it in this chat?
either that or in DMs if you don't want it public
i´ll make it available later anyways and noone i could spoil should be here ^^
(dont worry about the vandalism of the OG joker)
oh you´re kidding me, i´ve gone through a bunch of tutorials on how to mod the textures, might be that they were on the old version
but the textures work
yeah there's a compat layer
i don't think it should prevent the loc files from being loaded though?
the globals.lua plopped into the mod folder like this certainly doesn't do anything
the localization and globals .lua are both directly from the game as well, and the modloader says it is 1.0.0 in the version info
is gain +4 mult for every 5 heart cards scored too good for an uncommon? I want to keep the +4 mult but open to suggestions on number of cards required
yeah we've established you're using latest steamodded
wasnt it supposed to go in the mod root folder? i assumed because it is the same in the .exe
sorry for the delay, since u didn't @ me at the answer i didn't see...
the first crash happens when i hover it in the collection tabs in the home screen
the second is if in mid game.
that works for localization files because smods loads them specifically
I saw something like that in the smods git.. I'l try to find it
it does seem you're trying to use a changed internal name of the suits in some places
anyone know how i can make a timer work for 1 second no matter game speed
becuase stupid ass dt has to be affected by game speed
wait is it?
yep
damn
-atleast for undate funtion
alright, i thought it meant that all of the files get checked for edited files in the modfolder
update*
yeah i know i suck at coding and modding ^^'
there's no chance to make mods any compatible with each other like that lmao
@autumn geode
https://github.com/Steamodded/smods/wiki/calculate_functions#step-3-returning-effects
it only mentions leveling it up tho...
thanks just found it myself and it does work if i return a negative number
now i just need to find the played level hand and dont go off if its less than one or it sets it to 0 lol
i just got to where i am by looking at other modfiles and tutorials to kinda understand what is going on and what to look out for so it can certainly just be an incomprehensible mess ^^' but on direct injection it works like intended, so it cant be THAT wrong... right? Just have no idea how to load them via the modloader
wait
do you know how i could force set the game speed
NO WAY
fuck\
i mean you can force set the setting whenever it's changed
how cna i make the jokers eval status text have no delay
would anyone happen to know how to get the level of the currently played poker hand i know i can check for if a hand type was played but nothing on the level of it that i can see
Alright I think I got it. What you were doing before was replacing the suits across the entire game files, right? so changing internal names would work with that approach, but that's a total mess for turning into a mod
Changes I've made:
- Convert sprites to smods 1.0 format
- Move colour overrides to the main mod file so they actually apply
- Revert any references to internal names, i.e. object keys and colour identifiers
- Remove some redundant localization strings, mostly from collabs
hey, Mr.Smods... Do you know how can i check if a joker has a negative edition?
joker.ability.edition == 'e_negative'?
joker:has_edition('e_negative') (I know it ain't this one cuz it's crashing so yh)
