#💻・modding-dev
1 messages · Page 489 of 1
rule #1 never copy code from cryptid
My advice has always been that if you don’t understand how balatro code or code generally works in a deep way, dont copy cryptid code
hooks are completely separate
So it would be something like ```lua
local oldsetcost = Card.set_cost
function Card:set_cost()
local g = oldsetcost(self)
if next(SMODS.find_card("j_tngt_dealmaker")) then pseudorandom('dealmaker_cost_'..self.sort_id, 3, 8) end
return g
end
It is not user friendly
a hook modifies an existing function, you're adding functions to a joker that won't be called
i should probably try and transition the myriad of set_cost patches i have to just be hooks
You shouldn't be using rawget unless you're in an __index function.
oh
just use what somethingcom sent
Looking at the description it might be better to hook Game:update
whys that
will make them randomize a lot more
speaking of
essentially randomizing shop prices every time the game, well, updates
will the price tag actually change
yeah
Card:set_cost only runs once.
set_cost does that
ohhhh
although once you click on it i think it keeps its price until you re-select?
well thats good
just like spamton
buying the fucking loadedisk
you'd probably hook Game:update() and call your new, hooked :set_cost() on every item in the shop, only if you're in the shop
so every time the game updates, it runs through every shop item and calls set_cost(), which is now poised to randomize prices to a set range if your joker is present
just go scorched earth and remove those functions from hell
your hooks are going to be completely separate from your joker code
they're fine to be in the same file
Make sure you use dt unless you want it to change every frame.
but just copy/paste somethingcom's code he sent above
then hook Game:update() and just call your new set_cost() every however only if the game is currently in a shop state
what does dt do again
delta time i assume
I think it's the time since the last frame.
probably don't use delay() though, that may fully pause the game's updating logic lol
although for all i know that could be the solution
No, it would just block the events I think.
oh yeah, makes sense
otherwise that function would be much less convenient
makes sense, i couldn't remember if it was specific to only events or not
so really it'd be useless in this context
i have no idea whats wrong here
add_to_deck = function(self, card, from_debuff)
G.hand:change_size(card.ability.extra.h_size)
end,
remove_from_deck = function(self, card, from_debuff)
G.hand:change_size(-card.ability.extra.h_size)
end,
if context.joker_main and not context.blueprint then
card.ability.extra.h_size = card.ability.extra.h_size - card.ability.extra.h_mod
G.hand:change_size(-card.ability.extra.h_mod)
end
end
}```
how do you turn this into a game:update hook
You don't, you keep it and you also have this: ```lua
local cost_dt = 0
local oldgameupdate = Game.update
function Game:update(dt)
local g = oldgameupdate(self, dt)
if G.shop and G.jokers and next(SMODS.find_card("j_tngt_dealmaker")) then
cost_dt = cost_dt + dt
if cost_dt > 0.2 then
cost_dt = cost_dt - 0.2
for i, v in ipairs({G.shop_jokers, G.shop_vouchers, G.shop_booster}) do
for ii, vv in ipairs(v.cards) do
vv:set_cost()
end
end
end
end
return g
end
help me please i have no idea what im doing wrong
Those functions don't go inside calculate
thanks
doesnt work for some reason
Code?
Hey I have problem with adding custom sounds
Is there anything more i need to add?
because it's not working
Hey! I'm adding new stickers, but their tooltip is showing up blank when I hover over them.
The badge does not show also.
I've set the key and even tried using loc_vars, but no luck so far.
Anyone knows how to properly hook up sticker descriptions in tooltips? Do I need to define something specific in localization files (other than the key) or elsewhere?
You need to keep the Card:set_cost hook.
oh
I have no idea why it's not working
My pathing is good and the wiki didin't say anything more
yeah
where are you using it
It works thx
doesn't seem to work with both of them
Code?
<@&1133519078540185692>
<@&1133519078540185692>
this is very much related to just lua and not really balatro modding but does anyone see a missing end
it's the same code like the last time i sent to you but with set cost hook added above it
I'm greeting someone rn
elseif
ok now how do i display this
how do i change the size of tarots cards
like the pixel range
i want to change it to 58, 74
i this even possible
If you type eval dp.hovered:set_cost() in the console while hovering over a joker in the shop does the cost change?
let me try
forgot to include the joker in the ss
hold
What is Nxkoo cooking
shh
Okay :3
Is "j_tngt_dealmaker" the key?
Also did you do that after doing eval dp.hovered:set_cost()?
Never mind I see the issue.
local oldsetcost = Card.set_cost
function Card:set_cost()
local g = oldsetcost(self)
if next(SMODS.find_card("j_tngt_dealmaker")) then self.cost = pseudorandom('dealmaker_cost_'..self.sort_id, 3, 8) end
return g
end
Replace the hook with this.
W something
ir doesn't undpate when it should, basically at each rearoll the prob of getting a negative is getting higher and resets at each end of shop but it doesn't undpates help ._.
Where's your loc var
I think that's what it's called I don't have my computer on me
Firstly, you need loc_vars, Secondly, use pseudorandom
NOOOO NOT THE PSEUDO RANDOM T-T
i don't wanna do it all again T-T
argh f#ck it there will be no counting
What's wrong with pseudorandom?
it doesn't do what i want in this siutation
i don't want no random things like misprint, i wanna upgrade a probabilty at each rerol land then reset it
math.random is the same as pseudorandom except pseudorandom takes a seed.
How is pseudorandom bad and math.random good
It's the same thing
Pseudorandom literally uses math.random in it's implementation
math.random is good if you want your jokers to still be completely random on seeded runs
the proper use of math.random in lua projects is using math.randomseed beforehand so that the output is consistent, pseudorandom does this for you
Complete random on seeded runs seems against the point of a seeded run but I can see someone wanting that
it's fine to use in cases like misprint text or particle effects
Does anybody know why my Blind defeat hook works, but cash out doesn't?
local blind_defeat_hook = Blind.defeat
function Blind:defeat(silent)
blind_defeat_hook(self, silent)
local blind_type = BlindStation.FUNCS.get_current_blind_type()
if BlindStation.HOOKS[blind_type] and BlindStation.HOOKS[blind_type].post_defeat then
local game = BlindStation.HOOKS[blind_type].game
sendDebugMessage(
"Running `post_defeat` hook for game '" .. game.key .. "' on Blind type '" .. blind_type .. "'",
'BlindStation'
)
BlindStation.HOOKS[blind_type].post_defeat(game, self, silent)
end
end
-- TODO: Fix cash out hook not working
local g_funcs_cash_out_hook = G.FUNCS.cash_out
G.FUNCS.cash_out = function(e)
g_funcs_cash_out_hook(e)
local blind_type = BlindStation.FUNCS.get_current_blind_type()
if BlindStation.HOOKS[blind_type] and
BlindStation.HOOKS[blind_type].post_cash_out then
local game = BlindStation.HOOKS[blind_type].game
sendDebugMessage(
"Running `post_cash_out` hook for game '" .. game.key .. "' on Blind type '" .. blind_type .. "'",
'BlindStation'
)
BlindStation.HOOKS[blind_type].post_cash_out(game, e)
end
end
This seems to have broken with a recent Steamodded update
how can i upscale joker art without it looking bad
its literally the last thing until i can test it out
how do you make reroll free in a deck
try looking at chaos the clown in the code
pixel_size = { w = 100, h = 200 }
Or maybe display_size
i mean x2 ver
using krita go to images then in rescale image at new size, change the H and W to the double and choose nearest neighbor scaling
that's what i do on krita cuz i use krita
I use pixelorama and export at 200%
yeah it depends on what you use
Doesn't matter what you use as long as it's nearest neighbor upscaling
yeah also
thanks
i have the mod in the folder but the game doesnt recognize it
whats that font
also do you have a json or a header?
dwarven stonecraft
also no how do i do it
for some reason anytime i use score modification the score becomes infinity
it didn't do this like a week ago so im not sure what's wrong
G.GAME.current_round.free_rerolls = G.GAME.current_round.free_rerolls + 1
is this a thing
SMODS.change_free_rerolls(number)
the game crashes every time i try to check it on the mods menu
i have a scaling joker, and i want to show how much Xmult it currently has in it's description (for example hologram has this)
how do i do that
{C:inactive}(Currently {C:white,X:mult} X#1# {C:inactive} Mult)
we love double spaces
if you have another variable the #1# should be #2# or more instead
whichever number is next
Okay, so
I kinda want to create a simple texture mod, what do i have to do?
I'm trying to understand but brain is frying
and then add it as a variable in the loc_vars
bump
afaict you can either look into malverk https://discord.com/channels/1116389027176787968/1300851004186820690 or you can hardcode the mod
Since I'm hella rusty on modding and all of that, i will look into this
unrelated does anyone know if malverk can swap atlases
what do you mean
What's an appropriate cost for +1 hand size?
this code works completely fine but whenever i use it alongside talisman the videos only appear for a split second before disappearing
could it be that i need to make it compatible by any way?
how so
also coming here to compliment your pfp
thanks fellow ena enjoyer
"HAAH!! Are you kidding?! I HATE THIS STUPID JOB!!!"
do you know how to do it, is what im asking
i cant figure out why my node isnt being displayed... for clarficiation i have the main_mult node because the joker will only display mult and chips values if it has them
So I tried working it out by looking at examples and I thought it worked but this gave 54 chips...
you need scale in your text config
what do i put into SMODS.pseudorandom_probability() if im running it in a UI function?
i mean what do i put into the trigger_obj field
or do i just use pseudorandom
which UI function?
my ui function
in short im making minesweeper
and if the field isn't there i want to generate it
guys how do i make a joker that when you have it, it sets the game speed to higher than it should be
probably just put an empty table then
can a joker have multiple 'soul' sprites and can you configure their position on the joker?
ive taken this code from exponentia (just the init function hook) and attempted to modify it for my own means, and its so confusing, how do i fix this
Joker was made with jokerforge btw, ive tried to change the atlas to the name of the png of the card but it still crashes
is this a dark souls themed mod?
also show your atlas
How does soul_set work? Does it mean you can find this consumable in a specified pool?
it means it can replace a card of that set in places where it is allowed (basically boosters) like the soul replaces tarots
How do I make “Shrine Spectral Card” create a random “Infamous” Joker?
guys how do i check if a joker is in hand with an if statement
you would have to elaborate as to what those are
if next(SMODS.find_Card("j_modprefix_key")) then
Shrine is literally just the Soul of my “Infamous” Jokers collection, they used to be called Hyper Jokers.
do you have an ObjectType
No
rather, it's Infamous a rarity or a collection of jokers?
Infamous is a rarity yes
then just look at the soul in vanillaremade
I still have yet to properly show their title instead of having it written as “error”
Like it displays their actual rarity, it has the color.
it's the soul but you replace legendary = true with rarity = "modprefix_key"
How about spawn_legendary
how do i make a joker that when you have it, it sets the game speed to higher than it should be
i already have the if statement part
no idea
real
What does c_vremade_soul mean?
Is “c” the modprefix?
And vremade_soul is the key?
c is the prefix for the set, vremade is the modprefix and soul is the key
consumables start with c_
c_busterb_shrine
yeah
This targets the soul_pos I presume
whats the default scale value for all text in loc_txt?
why no work ```SMODS.Joker {
key = 'fiction',
loc_txt = {
name = '{C:blue}Fiction{}',
text = {
'Who Wins?'
}
},
atlas = 'fiction',
pos = { x = 0, y = 0 },
rarity = 3,
cost = 5,
add_to_deck = function(self, card, from_debuff)
if next(SMODS.find_Card("j_silly_fiction")) then
G.SETTINGS.GAMESPEED = G.GAME.normalgamespeed
G.GAME.normalgamespeed = 100
end
end,
remove_from_deck = function(self, card, from_debuff)
if next(SMODS.find_Card("j_silly_fiction")) == false then
G.SETTINGS.GAMESPEED = G.GAME.normalgamespeed
G.GAME.normalgamespeed = nil
end
end
}```
when i set scale = 1 in a node this is the size
0.32
nvm
does next return a boolean? i dont remember
i would've assumed it'd return nil if there was no match from the name
no
but it doesnt set gamespeed to 100 like its supposed to
yknow why this isnt working
yeah == false is wrong
oopsies poopsies
it appears it still does not work
cus it's find_card not find_Card
i fixed that
goober
is it js not constant
key = 'fiction',
loc_txt = {
name = '{C:blue}Fiction{}',
text = {
'Who Wins?'
}
},
atlas = 'fiction',
pos = { x = 0, y = 0 },
rarity = 3,
cost = 5,
add_to_deck = function(self, card, from_debuff)
if next(SMODS.find_card("j_silly_fiction")) then
G.SETTINGS.GAMESPEED = 100
end
end,
remove_from_deck = function(self, card, from_debuff)
if next(SMODS.find_card("j_silly_fiction")) then
G.SETTINGS.GAMESPEED = 2
end
end
}```
if it's checking for itself then that's not true unless you own another
idk how the speed stuff works but i would start by removing those if conditions
but you can set the speed back
key = 'fiction',
loc_txt = {
name = '{C:blue}Fiction{}',
text = {
'Who Wins?'
}
},
atlas = 'fiction',
pos = { x = 0, y = 0 },
rarity = 3,
cost = 5,
add_to_deck = function(self, card, from_debuff)
G.SETTINGS.GAMESPEED = 100
end
end,
remove_from_deck = function(self, card, from_debuff)
G.SETTINGS.GAMESPEED = 2
end
}
if it was like this it would js change the speed but you could go into settings and change it back
right?
i guess yeah, like i said idk anything about speed
the if conditions weren't going to solve that however
you might need to do it in update instead
Wave emoji
wha
i'm doing this the wrong way ;u; how do i display a seal tooltip?
might you know the padding and r values of these elements with X:colour values?
do u know anything about speed?
@daring fern u said u knew something about speed, right?
these are all in localize
i would also advise removing the find_joker checks entirely and handling multiple copies in a different way
cheers :D
ah res is waht i was missing
Am I able to replace the texture on only one joker in a way that I could have two texture packs at the same time? Or are you only able to replace the entire sprite sheet at once
yeah you can replace the texture on individual jokers
you might wanna look into https://discord.com/channels/1116389027176787968/1300851004186820690
now onto displaying the text
Oo nice, ty
what's the atlas definition?
oh shit i missed that
# Exponential functionality [[patches]] [patches.pattern] target = "functions/state_events.lua" pattern = ''' if effect.Xmult_mod then mult = mod_mult(mult*effect.Xmult_mod); extras.mult = true end ''' position = "before" payload = ''' if effect.Emult_mod then mult = mod_mult(mult*effect.Emult_mod);extras.mult = true end ''' match_indent = false
Can someone helpe me solve why lovely doesn't encounter this pattern?
do you have smods installed, because that line seems to be patched out by smods
oh
I do yep
So if a line gets patched out by smods how should I proceed to modify it?
You would need to see how SMODS handles it and patch that instead (unless you want compatibility with no mods)
Also is there a reason you're implementing your own emult instead of using Talisman?
I actually didn't know there was already a solution for this. So talisman implements an emult?
yes
That will be helpful lol HAHAHA
Thanks mate, ill try see if it works
it actually works
Thanks!
what are you cooking
Minesweeper
Is there any way to manipulate required score mid round?
would it be better to implement your own for cases where you want dual compat with and without talisman
Hi Dilly
that cant be good
joker not doing a thing i want it to and my bestie bepis couldnt figure it out either
i think emult gets so out of hand that it doesnt make sense without bignum imo
its better to just do it manually with the mult global
thats fair enough yea, i just figured if you wanted it but didnt have talisman in then it would make sense
also i wave emojid earlier and you didnt say hi..
how are you feeling today
tired
does anyone have a joker that has multiple soul sprites at once?
victin maybe?
what did i do wrong with my gradient ?
I have rarity though?
i never did table how could it be/looks like ?
hey dats my message 
thx
what if we watched anime together and had snacks
.
@red flower I have a json
may i see it
does anyone have a drawstepi can take a look at?
i read that as in it is a drawstep for your soul, like its good for the soul
drawstep drains your soul
Eyes doesn't show up in the right colour, is there something extra i need to do for it to appear?
can i see the suit definition
so im looking through all of smods inate drawsteps and i cant figure out how it actually draws card art
i dont think it does
hmmm no idea
tried looking at paperback and it uses the G.C. values for the colour fields, but i can't find where those get defined
maybe try printing G.ARGS.LOC_COLOURS to see if it's there in any form
fuck it ill just ask @zealous glen when they get online
did you see the floating sprite one in smods
i did
N what's the screenshot extension called
easy codesnap
hm
I don’t usually use SMODS.DrawStep
i was just wondering what you used to have multiple floating sprites on one card?
A custom draw function for the soul sprite, usually
key = 'fiction',
loc_txt = {
name = '{C:blue}Fiction{}',
text = {
'Who Wins?'
}
},
atlas = 'fiction',
pos = { x = 0, y = 0 },
rarity = 3,
cost = 5,
add_to_deck = function(self, card, from_debuff)
G.SETTINGS.GAMESPEED = 100
end,
remove_from_deck = function(self, card, from_debuff)
G.SETTINGS.GAMESPEED = G.GAME.normalgamespeed
G.GAME.normalgamespeed = nil
end
}```
this still dont work 😦
hoow many sprites do you need and how many jokers is it for?
1 joker, basically its a joker that "consumes" food jokers when they expire, i have everything else working but when it "consumes" a food joker i want a small custom sprite of said food to appear as a floating sprite in my joker
if that makes sense
I want to make that a specific joker plays a sound when it's added to your inventory
have you already created the sprites?
I did it like this but it only plays when a copy is added
is there a way to do it?
Try putting it in a 'add_to_deck' function instead
do it in add_to_deck
i do not have the finished sprites so im just using placeholders
I mean code wise, have you already set them up to be added to your joker?
Is there anything else i need to add? because now it's just not working
Its not a context its a function like calculate
oh ok
as in the sprites being drawn onto the card?
yeah, what code have you already got?
Toma was doing something similar recently and using my code as reference
i do not have that code, only the gameplay stuff for adding chips and mult when a food joker expires
okay, so I would create the sprite and add it to a table within the joker when you do that, then use a drawstep to iterate over the table and draw them all
Thx it works
oh and also
is there a one for when a joker is sold/destroyed?
remove_from_deck = function
thx
I think you’d need to save information about the Jokers in the Joker itself
To recreate the Sprites
Removed_from_deck
Same as add_to_deck
potentially, but if they're all on the same atlas you can just save positions
and then create the sprite in the drawstep
how would one create the sprite in a drawstep?
I mean, how would you know where they are?
I probably wouldn’t
do you know what your function was called?
kindof, im just adding things from videogames/movies that come to my mind
Take a look at Hallucination and Heartbreak
what do you mean?
its there
or do you mean the atlas from other file
How do you know if the atlii will all be the same or not?
I was assuming they were using custom sprites to represent each joker?
i cant find anything with that ref in your github
Change branches
ah right got ity
I thought they were using the sprite used by the Jokers
that's not what they said
but even if that were the case, you'd just store that info too
That’s what I said
I had interpreted “custom sprite” as “custom sprite object” instead of “custom artwork”
i am still so confused 😭
how would i go abt removing debuffs on a specific rank as a joker effect
i feel like im starting to understand stuff but cant tell what context to go for here
Images
hi vic vic
hi dilly dilly
how are you
Why thumb down
still crashes
key = 'fiction',
loc_txt = {
name = '{C:blue}Fiction{}',
text = {
'Who Wins?'
}
},
atlas = 'fiction',
pos = { x = 0, y = 0 },
rarity = 3,
cost = 5,
add_to_deck = function(self, card, from_debuff)
G.GAME.normalgamespeed = 100
end,
remove_from_deck = function(self, card, from_debuff)
G.GAME.normalgamespeed = 1
end
}
why no work, anybody know how to do speed stuff
🍤
Is there a way to detect if player beats big/boss blind while having a joker?
look for rockets code
context.end_of_round and context.main_eval and context.game_over == false and (G.GAME.blind:get_type() == "Big" or context.beat_boss)
Its not documented but I think theres something called context.prevent_debuff in SMODS code
that is pretty much exactly half of the solution
what are you missing
the rank part but i got it i think
Me when I mix up the answer
it's ok, it's the code's fault for being undocumented
do i have to change the image name or add the format or something
it just wont set the speed to 100 like its supposed to
did you make an smods.atlas
Did you create the Atlas object
Not good
whys this not work im confused
calculate = function(self, card, context)
if context.prevent_debuff then
if card:get_id() == 14 then
return { debuff_card = false }
end
end
end
:(
Im sorry
sorry if its annoying but how do i do this i have no idea
pls read the docs
n can you take over development for me

would there be a way to check repetition count?
idk if it's a me thing but deck creator keeps on crashing
how can i change the size of the ingame tarots? like i wanna change it from 71, 95 to something else
i know you got directed here but #⚙・modding-general is for crashes when playing
anyway, deck creator seems to usually have problems
yeah i just wanted to see if it was a me issue
but i'm glad it's just not me being a dumb stupid dumb fuck
check pixel and display size in the docs
eyes cards also give base mult instead of base chips, how do i change this text to reflect that?
What is the equivalent of context.main_eval for decks
Specifically to use with context.end_of_round
what is “the docs”
not context.individual and not context.repetition
smods docs
Can someone tell me why is it crashing and what i need to change?
thank you N
when i remove the calculation the sound and message in return work fine
so it must be it
hooking SMODS.calculate_repetitions probably
is there a context that when you have the joker, the function always happens, as long as you have it?
for context, this card xmult should go up every time you beat big or boss blind
if you wanna do something every frame (?) use the update function
99% of the time you don’t need it though
did you start a new run after adding this config
thx that works
oh and also
is there a way to display current xmult in the cards description
because vanilla remade dosn't have descriptions
they do, in their localization file
still doesnt work :p
am i just blind because i can’t find it in the smods wiki
and you do that through the loc_vars function
or are you referencing something else
can i see
not rlly much to see, card is debuffed, code doesnt do what its suppose 2
context.debuff_card:get_id()
card is the joker
also it should be prevent_debuff = true
ohh makes sense
i was abotut o say it should prob be true
should I add main_eval to deck and blind calcs?
You could clean up your text to be more consistent
You can use Vagabond as a base
is there a way to just spawn the card so i can try it
@zealous glen okay so would you know what function would draw a child sprite ontop of a card?
im trying to wrap my head around hearbreak and im struggling
"{X:mult,C:white}X2 Mult",
"if hand is played",
"with {C:money}$1{} or less"
What is the goal?
How can I make discards usable even with 0 discards remaining?
Hook G.FUNCS.can_discard
I'm still somewhat new to hooking in lua. Is this the right way to modify the return value?
Yes, but G.FUNCS.can_discard doesn't return anything, it just changes the button.
I see. If I copy what the else statement does will it make the button functional or just appear to be?
1 joker, basically its a joker that "consumes" food jokers when they expire, i have everything else working but when it "consumes" a food joker i want a small custom sprite of said food to appear as a floating sprite in my joker
I have the same thing in my mod lol
except without the mini sprite part
Maybe you could hook/patch SMODS.insert_repetitions and put something in effect?
does anyone know how to make the card flip animation play like when using death/strength?
Yes.
how does one achieve that?
Double checking that I'm doing the hook correctly. Will this run before or after the base?
bump
ah I found the event, thanks
No, you put return old_can_discard in else.
how can you get the amount of scoring mult in a winning hand?
mult?
yeah mult
mult
its a global
OH LMAO
Works now, thanks
mult
waow
Also is there a localize key for discards?
why does this seem to still only take from a 71 x 95 area in the top-left corner of my image
i want tyrone to be super hd
wtf, aikoyori's balatro looking normal?!
i cleaned my mods folder
i'm proud of you
it was taking 5 years to load
tho it was definitely more fun to look at your videos and just seeing weird stuff happen
hi toma
👁️ 👄 👁️
oh
hi there
ok now how to implement it into gameplay
now only N is missing
missiNg
hungry humpfry ah
PLEASE let tyrone be hd
i have not
i wonder what i've been doing /s/lh

im still finding gaming time smh my head
DILLY.
toma.
your poor computer dawg
shes a strong gal
if you leave your computer on 24/7 it will live longer
i use and abuse her but she does what she was built for
out of context lol
only cost me 5 grand to build so im gonna get 5 grand of use out of it
does remind me i should start moving some thigns over to my server rig soon
youll pay for this....
that's a meme screenshot right
no this is my rig
dilly you cannot be serious
wtf
how
How does one patch DebugPlus?
i am quite serious
what are you doing with your storage dawg
'what are u doing withs torage' mf what do u think
Same way you'd do vanilla, the target would be =[modid _ "path/to/file.lua"]
alot of it is games, alot of it is storage for projects, programs, various other files
i think youre being stupid is what i tink
i will say for my expansion drive a big holder of space is the fact i have the entirety of flashpoint ultimate 13
which is like several terabytes
No, DebugPlus is not an SMODS mod.
i will consume u
it's not, but that would still work. they would need to figure out the right target string via --dump-all and looking at the .txt file in dumps.
how would you use a draw = func to draw a floating sprite on top of a card?
im not edible youll choke
ill be the judge of that.
fair
I thought that was how lovely loaded chunks
i do have an entire extra rig i intend on putting several terabytes into so i can move most of my shit off here
never again......
cause i only want games and a few things on here
i already have my ftp setup and all that
I JUST WANT MULTIPLE SOUL SPRITES AT ONE TIME 😭
I KNOW WHAT YOU WANT DAMNIT
i want no sprites
it just might not follow the same chunk naming scheme as smods
hence why they would need to figure it out elsewhere
WHY WONT YOU HELP ME
yeah that makes sense, I just wasn't aware that was the SMODS naming convention, thought that was just how lovely did things
hook into soul_pos and additionally have a set_sprites function
nah, lovely doesn't touch chunk names
in case there is ever a time i do not have internet and things are inaccessible
this ensures i have the full access to the things i have paid for
plus imagine waiting for downloads if you want to game immediately
eg. it doesn't change or set them
you are seeding Linux t*rrents
for the 1200 games im about 51% through, and i intend on 100% everything
(t*rrent gets you timed out for 5 mins iirc)
im assuming you have code i can peek at 😼
so it lets me do as i please on a whim

I've made the mistake myself and gotten timed out o7
for the funny i was gonan say 'id never say -word-'
i was just trying to make a more powerful version of splash
but i guess i shouldnt play with fate
victin's collection
red hand and heartbreak
id send mine but you dont want mine
it's only 5 or 10 mins. was pretty funny at the time
my favorite trap, tial tribute
yea but i like yapping
peak
call me yappy the yapster
wanna know something real funny
not enough hours
still have not beaten the game once
please play ds1 its the best in the trilogy argue with a wall
i start ds3, get a little into it, get bored, stop playing, come back, restart cause idr what happened, repeat
elden ring grabbed me because it let me go out and explore and do whatever
but ds3 felt too linear and i grew bored
I had that same issue
since i have now obliterated elden ring though i hope i have a new found love for ds
cause i loved elden ring
the older souls games feel weird to play after you've played alot of Elden Ring, since Elden Ring is much more forgiving and responsive with rolls and defensive options
imo
play Noita
i recently beat puss! which was a game to get mad at sometimes
but a pretty fun little game for what it is
i took alook at the hooks in victins on heartbreak branch and i couldnt find anything like that
i have heard of this game what it be
did i write heartbreak
oml mb
sorry i was thinking champion belt but my fingers weren't
wati have you heard of balatro its pretty good
what the hecks a bala to
finland simulator
🏀 a toe
icicic
play hollow knight now goober
but it's got some really incredible mechanics wrt. wandbuilding and stuff
i dont think i have a ton of experience in roguelites but i liked things like voidigo
soon...
I feel like you either love it or hate roguelikes
I've heard a little bit about it
looking through it i similarly cant find anything relating to multiple soul sprites
it has a nice story and cool combat, but unfortunately falls a bit flat because i feel like they couldve done more combat wise
just is alot of walking and right clicking
??? it's quite literally right there
i almost applied to work at their studio because they need an it specialist and im well overqualified for that and hey work visa time
but i wouldnt be able to just uproot my gf here
where is the studio located? sounds like fun
Bielsko-Biała in Poland
youre on the wrong branch
I figured
just realised lmao
yeye
its mostly a waiting game and all that blah blah
i forgot i closed the tab earlier lol
for now i have fun vacationing and i have to wait for the gf to finish her masters anyway
shes a ornithologist
she loves it, i dont know alot about birds but ill let her yap about it
real
🐦
shes currently doing research for the department of energy regarding birds and the impacts solar sites have on them for things like the 'lake effect' which is birds seeing the reflection of them and thinking its water resulting in crash landings
which i think is neat
found a weird bug where my joker which adds cards isnt compatible with hologram (or one of the add card jokers from my mod) which is odd because i thought that was excatly what it checked for? is there another approach i need to take
actually i could probably try that smods add card thing ill do that first
Add this line into your calculate playing_card_joker_effects({true})
oh its soooo simple tysm!
can you guys give me a random number that's a multiple of 3 i wanna see something
3
the real answer i can give you thats interesting is 123,456,789
which is 3 x 41,152,263
okay so do they load the first soul_pos sprite then change it with this
return {
card.children.vic_floating_sprite = Sprite(card.T.x, card.T.y, card.T.w, card.T.h,
G.ASSET_ATLAS[card.config.center.atlas], {
x = 0,
y = 2
})```
you still draw it in draw though
writing this one down too
can you write me down
oh my
okay why are we in #1233188028613394514]-dev(𝓯𝓻𝓮𝓪𝓴𝔂)
also dilly you gave the highest number so ill use this one
huge
we're so besties
we shoudl go get some brats together
i should clarify
bratwurst
i love bratwurst
wait me too?? we shouldddd
i love getting the spicier ones they make me so happy
Make maybe, give away no
now do pok-wait.........
how would i make a blind that debuffs cards on play prior to scoring? (only during the boss blind)
i should make toma
do you need a ref
wym, what cards are being debuffed? all of them? specific ranks
all i need is you 😎
enhanced cards
look at like most basegame boss blinds
they debuff cards in hand as well
and prior to play
i don't want to do that
thats not how it works
that
that didnt really answer the
i just get passed a bunch of cards when the blind loads up from context.debuff_card
actually hold on
could i use context.before in a boss blind?
it being how it works:
would context.press_play work out for you better then context.before
How would I check all cards when I stop moving them
what that
show me where i can only debuff played cards
What is the goal?
dilly
press_play(self)
Effects that activate when a hand is played
https://github.com/Steamodded/smods/wiki/SMODS.Blind
i hate to be somethingcom but ?
thank you dilly
oh nvm
we're such bestie westies
oh yeah thats definitely more useful ty
To check the arragnement of the held hand cards
how do you merge a pull request
hiiii nxkoo
at the bottom you should see a buttont hat says to merge
typicall there should be a merge button on GitHub
hit the uh merge button
but if you have a merge conflict you're fucked
theres none
the pr was closed
the PR is closed
oh
nkxoo are we fr
it's ok jeez
who wants to deep clean my mod
fytgyuio9uhy
does it work now
what would that entail
yay :-)
i keep wanting to call you niko
Did you take a look at my jokers?
its alright, alot of people calls me niko
i did i finally might have a slight idea how to do it?
Kodak 🧐
that's how i pronounced it since you told me i just spell it as it is
i keep wanting to call metherul mithril
I pronounce it “Nxkoo” but I think I’d prefer not to due to how it sounds in Portuguese
how would i loop through the scoring hand (no context, not in calculate)
10 y/o me intended it to be that
huh
we fw mithril
NO
alright meth
I was reading it as “mehterul”
ok Panasonic flat screen television 4k HDR with optional intuitive touch remote
“te” as in, idk, “temple”
Hmmm?
youve now made me want to scan the facebook marketplace for a panasonic crt curse you
Also the tag 
i just stopped looking a couple days ago
I've pretty much always pronounced it as "meth E rule"
bump
https://youtu.be/c0kP1GHyrAE So when we getting these for Balatro...
CLAAAAAAAAAAAAAARKSOOOOOOOOOOON!!!!
The Grand Tour in Minecraft
Contact me on Instagram: @splexar for any questions
#TheGrandTour #MinecraftMeme #ClarksonInMinecraft #MemeMashup #GamingHumor
Is the difficulty finding the scoring part of the hand
theoritcally with my final code in place of my placeholders would this work
i don't know what game thing i need to access to find the hand at all
-ish
Card.set_sprites is usually just run when the card is created, I think
are you not doing it throught he blind? blinds do have calculate so
Played cards are in G.play
it's through a blind's press_play function
isnt that what you suggested
You can use context.press_play
thats what you use in champions belt...
oh
I’m not updating the art mid run
I guess you can always create all sprites and just not draw them
That’s what I had suggested Toma
oh... i want to have a freezer that fills up with different food sprites if conditions are met essentially
what da freezer do
hjoly shit
ive been shooting myself trying to make seals work inside of it to no avail though
essentially i want the expired and consumed food to appear in my freezer :3
cause i be joker sealing too
𝓶𝓮 𝔀𝓱𝓮𝓷 𝓲𝓶 𝓳𝓸𝓴𝓮𝓻 𝓼𝓮𝓪𝓵𝓲𝓷𝓰 👅:
looks like we all had similar ideas

if theres one thing ive learned here, is that there is no such thing as an original idea
hey its a good one, can't blame anybody
@daring fern i see u reacting but the issue is that for some reason my fridge is not reading any contexts from the seals
when i print my stored_steal_ret its nil and for some reason gold and red seal dont trigger on the fridge itself either
although both purple and blue do

i dont quite got that one but ig ot this one
hes a cool guy
i bet u dont have a him
did you have multiple different soul sprites at one time?
my goatie woaty
i could if i wanted but i dont so i undraw it
wyd if i devoured him
id kill you
what if i said no
id kill you again
wtf
leave my son alone
ive decided to take ownership
so now my son
pain and suffering
there gonna be alot of pain and suffering if u dont freaking help them
you and i both know it's gonna be ui again
and you love ui
FALSE
😵💫

no the multiple souls sprites that are different assets
dont worry before winter made it better this was the best i managed
i do not like ui myself
wait do you know what game shes playing?
i drew them
in soul_pos
where's the R
this is a no R household
listen toma i didnt read the message you responded to
-# yes im stupid or sleep deprived or both
dilly
Celeste?
i forgot the joke and thought you guys were losing it
This is my attempt at making an enhancement It crashes and says rarity is nil and Idk cause it is clearly 3
function init()
SMODS.Enhancement({
key = "rotten",
atlas = "enhancers/e_rotten",
pos = { x = 0, y = 0 },
config = { extra = { chance_of_destroy = 2 } },
rarity = 3,
weight = 0,
overrides_base_rank = true,
loc_vars = function(self, info_queue, center)
return { vars = { center.ability.extra.chance_of_destroy } }
end,
calculate = function (self, card, context)
if context.discard then
if math.random(card.ability.extra.chance_of_destroy) == 1 then
SMODS.destroy_cards(card)
end
end
end,
set_badges = function(self, card, badges)
badges[#badges+1] = create_badge(localize('k_p_rotten'), G.C.RED, G.C.BLACK, 1.2 )
end
})
SMODS.Enhancement({.....
why are you returning center.....
where is your perknado code >:(

It was like that and it does work
WHAT IS THAT FONT
readable
oh well in that case it's Hardpixel
winter did end up making it much better though
0.05 seconds in i hear sneaky snitch
holy shit that looks amazing
not watching ts 🥀
(this)
Original song is Scheming Weasel by Kevin MacLeod
wtf is this concept
enhancement doesn't have rarity field
excellent work
it's the MIX version 😭
i feel like the mf grinch listening bruh
a great most of it was with insane help from winter who is a goddess
currently i just need seals to work with it
but hopefully i can bug something soon for more help there
can you do that whenever
so if the mult gains and i put it in the fridge will it save it from possible destruction
also that's not how math.random works,
after 5 rounds though cards become rotten, which then doubles the values of the cards inthe fridge and turns it negative
ie, popcorn is 40 mult in the fridge, but if in for 5 rounds it becomes -80
rotten is an edition only acquired in the fridge
turns it negative! vs
turns it negative (the fridge)
i cant post gifs but hank schrader
i wish we had gif access
now i just have to hope the person is rotted enough to get it
so where do you declare hpfx_floating_sprite :p
toma since you looooove ui you should make me a health bar that always displays underneath this guy
I can't find hardpixel 
-# im dumb as always
you should probably use SMODS.pseudorandom_probability either way (if you're on the newest version of smods)
that actually doesnt even sounds that difficult
i also LOVE going in to debt
alright make it for me rn
hm okay what do i get in return {}
its the balatro font i think. you can find it in game files named m6x11plus.ttf
wdym ☝️?
ok
oh no
a debt collector
right there
you just have to make sure you set it's draw_ignore_keys to true
you love debt huh
time to abuse The Ox to get to -50 for a free X150 mult
balatro font is called m6x11plus
he can go up to like x192 or so with all of the debt cards
yay
i wonder what the message is
gulp
all im hearin is free winnings
key = "matchstick",
loc_txt = {
name = "Matchstick",
text = {
"Gains {X:mult,C:white}X#1#{} Mult when scored hand is more than blind",
"{C:attention}Resets{} if scored hand is not more than blind",
"{C:inactive}(Currently {X:red,C:white}X#2#{C:inactive} Mult){}"
}
},
config = { extra = {cur = 1, gain = 0.5} },
loc_vars = function(self,info_queue, card)
return {vars = {card.ability.extra.gain, card.ability.extra.cur}}
end,
rarity = 3,
atlas = "main",
pos = {x=5, y=10},
cost = 10,
demicoloncompat = true,
calculate = function(self, card, context)
if card.ability.extra.triggered == nil then
card.ability.extra.triggered = false
end
if context.joker_main or context.scoring then
return {xmult = card.ability.extra.cur}
end
if to_number(G.GAME.chips) > to_number(G.GAME.blind.chips) then
if card.ability.extra.triggered == false then
card.ability.extra.cur = card.ability.extra.cur + card.ability.extra.gain
quick_card_speak(card, "Upgraded!")
card.ability.extra.triggered = true
end
end
if context.before or context.setting_blind then
card.ability.extra.triggered = false
end
end,
}```
how would i make a reset function for this, so if the hand is not worth more than the blind, it resets the xmult

i am very oopid, i want to have a sprite for all vanilla food jokers so would i need card.childen.michel_floating_sprite = floating sprite or smth idk for each of them and then do card.children.michel_floating_sprite:draw_shder(...
if i wanted to make a custom background color combo for a booster pack, how would i go about that?
That's fine
was wong here
if you're in context.end_of_round can you call G.GAME.current_round.hands_played?
No, because it's not a function, but you can access it.
i need to word things better but i meant to ask if i could access it, ty
step 1 of being a new modder that wants to add jokers to balatro that could fit in the game
brainstorming
After a while, the mod I'm working on seems to cause signfiicant drops in framerate, and I'm not sure why that'd be the case. What advice is there for diagnosing framerate drops? I verified the issue isn't the event manager (it's empty).
how do i make a draw_ignore_keys true?
im trying to make a joker unlock after losing with x money
where is the check for unlock of mr bones so i can see how to make something unlock through losing
whats the context for when a card is destroyed? trying to make it so that when a card with a new seal is destroyed, it gives you a consumable
context.remove_playing_cards
gotcha, thank you
how would i check in context.remove_playing_cards that the card being removed is the card with the seal?
if context.remove_playing_cards and context.other_card:has_seal() (or whatever the seal detection function is for SMODS I don't remember)
you could try that
Can one add a text node to a rarity?

