#💻・modding-dev
1 messages · Page 531 of 1
Hiii :D
heyo
How can i add the text pops beside the joker
That says lucky cards for example
In lucky cat joker
oops yep I see it-
Heyyyyyy
It didn<t fix my center error but it problably solve another lol
hmm no idea then
welp, thank you for your help regardl;ess!
Thanksssssssss
questions: can the same center be in two different pools, can centers from two different sets be in the same pool
like an objecttype? yes to both
yo N sup uhh code for if you have a specific joker, a different joker can appear in the shop?
like if I have the inator, perry appears
but if i don't have it, perry is hidden
Should I have each consumable/joker/etc in one file, or one file per category?
you could do either or im guessing
What's best practice though
that i dont know
it doesn't particularly matter tbh. probably easier to manage one individual card per file if you have a lot of jokers or whatever, but if you only have like 3 new consumables total and they don't use a lot of code then there's nothing wrong with having one single "consumables" file
in_pool = function(self, args)
return next(SMODS.find_card("j_modprefix_key"))
end
on the one that doesn't appear
How do you use the multi boxs?
You can just add an additional table under the description text in a localization entry
So each table with a description is a box, grouped under a parent table
So another text table?
two things:
- how would i apply a sticker to a card?
- how would i check if a card has a sticker?
never used stickers much but i think it's SMODS.Stickers["modprefix_key"]:apply(card) and card.ability.modprefix_key
👍 will try this thank you
is there an eval to check if the joker is still hidden or not?
no because its checked each time a card would be created
but you can check eval G.P_CENTERS["j_modprefix_key"]:in_pool()
hi dilly
Did you see my cookage
flappy bird?
Ye
very cool and awesome
:)
Hi dilly!!!
Hi winter!!
Three games from yesterday btw 💅
My dad primarily
Awsum
the SMODS.Stickers["modprefix_key"]:apply(card) didn't seem to work
(in my case it was SMODS.Stickers["votd_neopsychosis"]:apply(scored_card))
,,,we serve modding-dev here ma'am
-# please excuse me if im bein stupid
If the score of the hand played is greater than the blind size
Slr i fell asleep
yeah this is where devs chat
i mean cant you just directly look at the hand score instead
because flames are also like
oh okie
time based and stuff
I mean i could, its just idk how to check if hand played one shots the blind.
This channel is my general, my shitpost, my dev questions, my dev assistance
oh okie
Dilly does what dilly wants
Modding chat is just too overwhelming for me I think
So I just hang here pretty much exclusively
Its also where ive made my besties.... N my beloved
Oh I can give you this btw
Oh that would be greatly appreciated please, thanks
sent it to u
Yeah I send my bowling games sometimes b/c I bowl regularly and most of my afternoons recently have been bowling > lunch > mod dev
sounds fun
What, being unemployed? It's really not
That said people should pay me for being unemployed and sexy and cool and having good ideas
thats true!
i should buy both of u pretty things
can i buy u then
can i marry u
no
Ok thanks
is there a specific function that does the max_highlighted stuff for consumables since its done automatically
Dang 
Card:use_consumeable im pretty sure
does it take the max_highlighted as an argument or does it just take Card.ability.max_highlighted directly
N im going to da retro store
what u getting
Jet set radio, shenmue, sone sega genesis model 1 controllers
And then whatever else I find
nice
I hurt myself bowling so I'll have to slow down for a bit
nooo
😔
Let me fix u
I just need some carbuprofen it's fine
if i change any of the variables taken from Card in the method, will that leave the actual variable in the card untouched?
no, it will get changed
where are a joker's stickers stored?
card.ability
card.ability.stickers or just card.ability
oh thats, cool
idk if there's a function for it
so if i wanted to hook the function to change the variables could i instead copy the Card into a different table, then edit the value there and call the original function with that copied table?
I'll look, thanks N
yes but i would worry about doing that haha
hi how to start making a mod
help
if what you mean is copy the entire card then thats 1) hard 2) would make anything in the consumable that requires the original card not work properly
if you mean only copying the values then thats fine but it would also break anything that requires checking those values properly
how to start making a mod?
how do i change a joker's sell value again
card.sell_cost
i use mods currently
thanks
do i need do things https://github.com/Steamodded/smods/wiki/Your-First-Mod
because i already got mods folder
do i need to use :set_cost() too
did you read what i sent
also, your name reminds me of metherul......
yes
I thought it was metherul being funny for a frame
well what im trying to do is modify the incoming max_highlighted, but i dont want it to permanently affect the card
i would just patch that part of the function instead of hooking
yes but
it doesn't say anything about lovely
and I already got steammoded
yes it does?
where?
Its the 6th word
also if you have smods you have lovely
where??
https://github.com/Steamodded/smods/wiki/Your-First-Mod i got redirected to this
because i clicked on how to make mod
no you didnt
ok i do
Okay, I'm making a different joker now. It triggers when a card is scored, which means it needs to be in context.individual and context.cardarea == G.play, but since it's here, a normal return { message = ""} puts the message on the card being scored and not the joker. I should use an Event here, right?
i did not know that that field existed
Thats why N makes the big bucks
i knew about the other ones 😭
speaking of things we don't know, does anyone have any documentation on deckskin credits 
i still don't know how to do it 
in step 3 it says "Open a folder that contains your mod, the smods folder and the lovely/dump folder (such as opening your entire Mods folder). This is the easiest way but it can lead to your workspace being disorganized and harder to navigate in."
but i didn't create a folder that contains my mod, do I just create an empty folder in my mods folder?
can i make a sprite for an edition then just try to match it with the card in shaders or smth?
yes
ok
"Lua.workspace.library": ["Steamodded", "lovely/dump"]
is this correct?
i opened my mods folder
when I paste entire path it shows errors
why are you doing both methods 😭
what do you mean both methods
it says either open the mod folder or do the workspace thing
i thought you're supposed to do both
oh well
i'll just open folder
oh it's in lua
nice
wow do I keep have to restarting my game?
seeing as theres no way to reload code after the fact, yeah. You can hold M to restart the game though
or alt+f5
i should add this to the wiki
that doesn't work for me, i dunno why
how do i get a card enhancement's ability table
when making mulotiple jokers, do I just add on to mod.lua or make a new file
you can put any object definition anywhere, so long as its loaded
some mod creators set up infrastructure so they can have each joker be it's own file and have them load automagically, but it's not necessary. Lots of mods just have 1 massive file
card.ability
I personally have jokers split up into groups so they can be loaded configurablely
My way of operation is to just have a file per category
Ie I have a modules folder which contains
Jokers.lua
Consumables.lua
Blinds.lua
Etc
do quantum enhancements cause anything weird with this
you can do anything, though you have to load files outside your main file with assert(SMODS.load_file("<file path>"))()
i dont think so but ive never used them
i haven't either i just wanted to make sure one wouldn't break my mod somehow
yo! im trying to have my joker upgrade when a certain rank is discarded, but it doesnt seem to be doing anything... could someone give us a hand?
Bump
Is there no voucher_redeemed context?!
Question: How does atlas works with custom consumable type?
---@type SMODS.ConsumableType
SMODS.ConsumableType {
key = 'cpp_dwarf_Planet',
default = 'c_cpp_sedna',
primary_colour = G.C.SET.Planet,
secondary_colour = G.C.SECONDARY_SET.Planet,
collection_rows = { 4, 4 },
shop_rate = 4,
}
SMODS.Atlas({
key = 'dwarf_sedna',
path = 'dp_sedna.png',
px = ATLAS_PIXEL_WIDTH,
py = ATLAS_PIXEL_HEIGHT,
})
---@type SMODS.Consumable
SMODS.Consumable {
set = 'cpp_dwarf_Planet',
atlas = 'dwarf_sedna',
key = 'dwarf_sedna',
cost = 3,
pos = {
x = 4,
y = 4,
}
}
I assume atlas inside the consumable type must be the same as the key ath the atlas definition so it can find the image of the card, amirite?
it's buying_card
N' still helping, the goat
why wouldnt i
I'm on Linux, idk if you are too, but it turned out that the reason this didn't work for me was that it was a system shortcut thingy so balatro literally never "heard" the alt+f5
so i disabled that and it works now
mint :v
whatever os you're actually on could be doing a similar thing, you'd know better than me how to check that I've been on Linux for maybe three years and i already forgot everything i ever knew about Windows
it may be stolen by everything search, but it doesnt really matter
ah i get it because your name is-

-# i mean it did also seem like legitimately the best option for my use case, but being named like my name was absolutely a bonus
..bump?
whats rank2
its just a random number between 2 and 14
can i see the whole code
NO! (sure)
yeah lol, i'd worry that you havent truncated it so it can also produce a number with a decimal
calculate = function(self, card, context)
if context.starting_shop and not context.blueprint then
card.ability.extra.rank1 = math.random(2, 14)
card.ability.extra.rank2 = math.random(2, 14)
end
if context.cardarea == G.play and context.individual and context.other_card then
local rank = context.other_card:get_id()
if rank == card.ability.extra.rank1 then
card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.chips_gain
return {
message = 'Upgrade!'
}
end
if context.discard and not context.other_card.debuff and context.other_card:get_id() == card.ability.extra.rank2 then
card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.chips_gain
return {
message = 'Upgrade!'
}
end
end
end,
the the rank1 part works fine
pls dont use math.random..
why not
its not the problem tho
it doesnt respect the seed
it's nested inside the other condition
ohh what should i use instead
Why would we respect the seed anyway, it rarely respects me
remember that time it gave you the soul?
No
well im sorry for you
i wish i had 339 dollars
bank account
woah.. a months wages
hey dilly ya cutie how ya doin today!
your poor bank account
hows the dihlatro going
i wonder what the issue is then..
I bought some genesis controllers, I got sonic adventure, street fighter, Aladdin, and sonic 3d blast for the genesis, then also got n64 rumble and transfer pak, then also got jet set radio and shenmue for dreamcast
Took only like 3 hours or so
also this is crazy, i got a solid 23p in there lmaoo
Alot of it was simple after improving yahimods dino to be better
So i also use this because mine is not the exact same and has ducking and birds
doom in balatro when?
Actually thats also an outdated video
Rn the cards also dont draw
Just like flappy
I want to see if I can do some form of a bullet hell next
Ive been fascinated by getting stuff like this to work
Ive been stumped for ages on what blinds to add
And this has been tons of fun
please tell me youve turned down CRT since then tho 😭
How much code did you need for that, if I may ask?
Oh u mean the anim flickering on the bird
Off the top of my head i think its less than 300 lines
Ill be able to tell you once im home in a half an hour
That doesn't sound like much
Soon....
Anyway, is there a way to get the xmult, mult, xchips, chips and other stuff from Jokers currently in play (Joker area)?
@red flower figured it out. i put the discard check inside the cardarea check
thats what eremel said yes
I wish eremel was real
Why misprint?
cryptid (the mod) has a mechanic where joker values become random called misprint
and also changing values and stuff too
Gonna try to find something in there that might help
It's funny what comments one might find in mods xD
Just found this in the cryptid misprint file:
#but this should fix it```
day old bump
yes
it's in functions/misc_functions.lua
replace all the card with random_joker
card is the consumable
looking at the vanillaremade booster packs have weights too but not sure if there's a way to tell the difference between normal, jumbo, and mega
Alrighty
i dont think there is other than checking the key
checking if it contains jumbo or mega?
Is everything else correct then?
yeah
and then doubling the weight?
dunno
Hmmmm need some help with something a little more technical
what are you trying to do?
Alrighty, ill test it and then ill ask if anything goes wrong
double the chances of a jumbo booster pack spawning in and another one doing the same for mega
I need to do an override for SMODS.score_card, because I have a Joker to the effect of "retriggers scored enhancement effects", meaning rather than a full retrigger, it calculates each enhancement again. However, my attempt at doing so for some reason seems to have completely eliminated Red Seal retriggers, though it respects card effect retriggers such as via Sock and Buskin'
function SMODS.score_card(card, context)
local reps = { 1 }
local j = 1
while j <= #reps do
if reps[j] ~= 1 then
local _, eff = next(reps[j])
while eff.retrigger_flag do
SMODS.calculate_effect(eff, eff.card); j = j+1; _, eff = next(reps[j])
end
SMODS.calculate_effect(eff, eff.card)
percent = percent + percent_delta
end
context.main_scoring = true
local effects = { eval_card(card, context) }
SMODS.calculate_quantum_enhancements(card, effects, context)
context.main_scoring = nil
context.individual = true
context.other_card = card
if next(effects) then
SMODS.calculate_card_areas('jokers', context, effects, { main_scoring = true })
SMODS.calculate_card_areas('individual', context, effects, { main_scoring = true })
end
local flags = SMODS.trigger_effects(effects, card)
context.individual = nil
if reps[j] == 1 and flags.calculated then
context.repetition = true
context.card_effects = effects
SMODS.calculate_repetitions(card, context, reps)
context.repetition = nil
context.card_effects = nil
end
j = j + (flags.calculated and 1 or #reps)
context.other_card = nil
card.lucky_trigger = nil
end
end```
(for record this is the original SMODS code)
The actual calculation is wrapped by the retrigger behavior, but I'm not entirely certain how to insert the additional effects to solve this
doesn't look like it looking at the voucher code and loc section
i mean detecting booster types
ohh
uhhhhh
can i see the code now
do values in G.GAME get tied to run saves by default, or do they need to be reset/saved manually
yeah that
yes they do
you missed all of these
ill look into it and credit paya
the dev is haya
sorry haya
replace all those cards (i.e.card.children.center) to random_joker
yes
If I may ask, what does “juice_up” reffers to? What is it? :0
I see it a bunch and I have no clue what it does lol
it does the wiggle animation
Oooh alr
code for changing rank?
And what does the values after do? Is it the amounth of wiggling?
absolute goat sorry didn't wanna bother you anymore in dms
Ty!! You’re a life saver lol
i should bother n in dms
ok, does the pool have anything
why is this crash happening when i hover over the joker in the collection?
where should I check the pool, because it should be a set that is destroys
how does blue joker not crash the game when you look at it through the collection? doesn't it also use G.deck to check for cards in your deck?
Does anyone know where in balatro's code it handles the floating effect for legionaries?
doesn't look like it works
just print pool and see if it has anything but is_doctor doesnt seem to be a valid value
doctor shoe?!?
I think I set it to is_doctor because I have it in their extras lol

I got 1-7 in here yers
we fight like animals and we die like animals
I might sound a bit sill, but how do I print the pool
oh yeh, just put it in the command bar?
on the bright side who wants a natural negative throwback
sorry but im still not getting it :(
admittedly not fully sure how the code works
and i mean it was a joker so that might be why
try setting it to 100% or so
oh thamnk
100% where
the chance? isn't that whatt you were testing?
or rather, set it to a million or something
i plagirised copied the code from paya which upgrades all of them instead
oh i see
[SMODS ChaosControl "jokers/jokers.lua"]:461: Tried to call SMODS.change_base with invalid arguments: suit="nil", rank="Queen"```
error
i might have done stuff wrong
my best guess is either it relies on a library or was only meant to work as a joker
might need to check lovely patches
still not sure how do either it might be out of reach as im not too experienced
huh that looks correct
what version of smods do you have
oh no sorry
at least it was a good idea while it lasted might be some api call smods can work on
card should be context.other_card
now need to come up with another voucher set idea as four sets look nice
and you need to save it to a local
because you shouldnt use context in an event
wdym
maybe just have it spawn a random jumbo and then upgrade it to a random mega each shop(?)
hmmm?
what is the idea
is there a way to configure the chances that a jumbo or mega booster pack spawn or replace a normal size
mr fox man
local playing_card = context.other_card
-- imagine this is in an event
assert(SMODS.change_base(playing_card, nil, "Queen"))
if you change the weights of them, sure
yeah pretty much
something similar to the rarities which was another voucher i made with help from nh
how does the code for these look
oh okay we're doing jank x2
i love jank code got to be my favourite gender
so they stick together
I'm assuming loading by alphabetical order
I put it in right under the use but its not printing anything
I changed it all back to card because it'd crash if I didn't
what does the key have to do with loading
also it can still be descriptive
oh
it has to be... after pool is defined
and after you fill it
of course it doesnt exist before you create it
oh
Asking again if anyone has thoughts on why this doesn't work
I want to give the other lucky card proc on trigger with a joker, what am I doing wrong
uh should i like either just work on something else like the art or another section
Need help
SMODS.PokerHandPart({
key = 'six_played',
func = function(hand)
if get_X_same(6, hand) then
return {}
else
return {}
end
end
})
Not sure how to use PokerHandPart
What it should return? I am using the get_X_same function from the game (not sure if that's fine)
Or should I return it directly?
SMODS.PokerHandPart({
key = '_6',
func = function(hand)
return get_X_same(6, hand)
end
})
Like this?
So in my PokerHand I can use parts.myprefix_6 ?
nothing is printing
can i see the code
i am not sure what to do lol
...can I somehow call a context whenever a held in hand ability (excluding retriggers) triggers? i.e. something like post_trigger but not on Jokers.
So I know how to make a set, just not a pool, or am i dumb and they're the same thing because what I'm reading they seem the same
theyre the same thing
i don't understand that 😭
oh
loc_vars = function(self, info_queue, card)
return {
vars = {
-- your vars here
colours = {
-- your colors here
}
},
}
end,
so I have a pool, but the destruction half isn't tied to anything
Bump
it's because your pool variable is empty because you're checking wrong
so what should I change then
well, I was getting there but you didn't do the thing I said earlier so it's hard for me to tell you if you ignore what I say lmao
I'm not ignoring you, I'm just struggling to wrap my head around it
i don't understand what to put for vars
you know how the descriptions have like +#1# mult and stuff? the #1# is what goes in vars
if you dont need it you can ignore that comment
but colours still goes inside vars
Like this?
return {
vars = {
colours = { (G.GAME.hands[card.ability.hand_type].level == 1 and G.C.UI.TEXT_DARK or G.C.HAND_LEVELS[math.min(7, G.GAME.hands[card.ability.hand_type].level)]) }
}
}
yes
So I see it access the game hands hand_type table to check the level (if one, default color TEXT_DARK) otherwise get the color level from HAND_LEVELS
So vars is like 1, 2, 3, 4, 5
1 -> Level
2 -> Poker hand description
3 -> Multi level
4 -> Chip level
5 -> colours
Amirite?
ok now i dont understand what you mean
oh yeah
In that order
yep
it's saying '<name>' expected near '1' for {B:1,V:2}Trans!{} what do i put there?
does that not crash in the collection
did i test that lol
without the code i cannot tell
what part of the code do you need?
the part near this
How do you make some cards periodically juice up while a condition is met?
Bruh... so I did something wrong
i'll just screenshot it
juice_card_until (badly named)
Crashed when I entered enhancements, no idea why
ok yeah thats not valid lua code
is there somewhere this can be added so it's applied to all cards?
i think you would manually have to go through all cards
either all cardareas or G.I.CARD
did i mention this is my first time coding?
What would the context be to check if the Joker has a specific edition? I'd like my Joker to say a different message if it's Negative but if context.edition == "e_negative" then doesn't seem to be working.
Oh wow, thank you!
Bump
Just started learning about hooks. If I wanted to change how the debuff_hand function from the Blind class works (I want it to retain all of its functionality + to add some of mine), would I do it something like this:
local old_debuff_hand = Blind:debuff_hand
Blind:debuff_hand = function(cards, hand, handname, check)
--some code
return old_debuff_hand
end
that specific syntax doesnt work, it needs to be either
local old_debuff_hand = Blind.debuff_hand
Blind.debuff_hand = function(self, cards, hand, handname, check)
--some code
return old_debuff_hand(self, cards, hand, handname, check)
end
or
local old_debuff_hand = Blind.debuff_hand
function Blind:debuff_hand(cards, hand, handname, check)
--some code
return old_debuff_hand(self, cards, hand, handname, check)
end
thanks, I obviously still do not understand corretly the difference between : and . but either way, I think I get it enough now
: basically forces self as the first argument
so like
Blind.debuff_hand(self, cards, hand, handname, check)
and
Blind:debuff_hand(cards, hand, handname, check)
are the same
yeah at the end of the day : is just syntactic sugar
so a function Blind:debuff_hand would implicitly have a self parameter
If you're trying to get a message to pop up on a card, the calculate function should return the following table after the main calculation is finished:
{
message = "Trans!",
colour = G.C.<color>,
message_card = (card that the message should pop up on),
sound = (sound name)
}
The only important parameter is message but I'll present the other options (that are optional, no need to include) so you can customize the message
And to be specific regarding colour, you can put either an item in the table G.C, or a fully custom color with HEX(<hexcode>) where <hexcode> is the hex code of a color, without the hashtag
(make sure this is inside the if-end block)
thanks for the long reply. Thats how I initially understood it. I guess what actually confuses me then is the line:
return old_debuff_hand(self, cards, hand, handname, check)
I thought the return old_debuff_hand as is would work, since im returning a pointer to a function, not sure why I would need to pass arguments here?
Oh nvm, I just realized why; so stupid
yep, old_debuff_hand will still need a self parameter
local old_debuff_hand does not remember which table it came from
but it still has a self parameter
the self is ambiguous
hence u need to pass in a self arg when calling the old function
and returning a function will not call it
I guess I should say what I'm trying to do - A consumable can be used on specific Jokers (vanilla and modded); I want said specific Jokers to juice up when the consumable is held on hand
hmm i dont think that can be done in the code of the consumable
unless i am missing critical knowledge
you can do it in the consumable's add_to_deck and then just add the condition to juice_card_until that it stops when you dont have the consumable anymore
oh and then you would need to do it in calculate too
hmm maybe it would be easier with a drawstep
drawstep?
or a Card:update hook, you would check if the card is the specific joker and if you are holding the consumable
before i try to do it myself, is there an easy way to make a card stay in your hand after playing it? (visually)
I tried doing that, but it just kept spamming events, and juicing was not occurring
(and then using juice_ui kept spamming juice)
did you try using juice_card_until and adding some flag to the joker so you only call it once
Uh... game launch error with the mod... Says I am trying to put a variable in a empty pool
are you using pools or a custom rarity
c_cpp_dwarf_sedna
Not sure if I put the wrong localization or key for the consumable
I don't think I'm using a flag?
if Ovn_f.joker_is_corruptible(self.config.center.key) then
local eval = function(card) return next(SMODS.find_card("c_ovn_abyss")) and not G.RESET_JIGGLES end
juice_card_until(self, eval, true, 0.75)
end
-- Haumea.lua
SMODS.Atlas({
key = 'dwarf_haumea',
path = 'dp_haumea.png',
px = ATLAS_PIXEL_WIDTH,
py = ATLAS_PIXEL_HEIGHT,
})
---@type SMODS.Consumable
SMODS.Consumable {
set = 'cpp_dwarf_Planet',
atlas = 'dwarf_haumea',
key = 'dwarf_haumea',
cost = 3,
}
you can do
if not self.juicing and Ovn_f.joker_is_corruptible(self.config.center.key) and next(SMODS.find_card("c_ovn_abyss")) then
local eval = function(card) return next(SMODS.find_card("c_ovn_abyss")) and not G.RESET_JIGGLES end
juice_card_until(self, eval, true, 0.75)
self.juicing = true
end
-- localization.lua
return {
descriptions = {
cpp_dwarf_Planet = {
c_cpp_dwarf_haumea = {
name = "Haumea",
text = {
"{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up",
"{C:attention}#2#",
"{C:mult}+#3#{} Mult and",
"{C:chips}+#4#{} chips",
}
},
did you make an SMODS.ConsumableType
Yes
---@type SMODS.ConsumableType
SMODS.ConsumableType {
key = 'dwarf_Planet',
default = 'c_cpp_sedna',
primary_colour = G.C.SET.Planet,
secondary_colour = G.C.SECONDARY_SET.Planet,
collection_rows = { 4, 4 },
shop_rate = 4,
}
copied the wrong thing lol
consumable types dont add the prefix
Hmmmm so I need to add the cpp_dwarf_Planet to the consumableType key?
yes
Ok!
Oh hell yeah, this works really well, thank you
something is missing in the localization
idk what i would check vremade
Maybe that extra c_ prefix?
how do I change paths because my game thinks the file is in the main game resources
stack traceback:
[C]: at 0x7fffd84758a0
[C]: in function 'newSource'
engine/sound_manager.lua:63: in function 'PLAY_SOUND'
engine/sound_manager.lua:197: in main chunk```
<@&1133519078540185692>
uh oh
Bump
So, I want my mod to load after Cryptid loads, which is priority 114, does that mean I just need my mod's priority to be less than 114?
it should be greater
yeah the error always says that, it doesnt mean its actually trying to look there
Oh, greater?
well then what do i do-
can i see the code
mods get loaded from smallest to largest priority
well i have this at the top of the whole file ```path = {
['default'] = 'CC_wow.ogg',
}and this in the actual joker return {
message = "Trans!",
colour = G.C.CC_trans,
sound = 'CC_wow'
}```
is the first thing in an SMODS.Sound?
wdym
like this
goddamn
...not here either, hm...
How do I pass a loc_text to the ConsumableType? Or does it take it from the localization?
key = "wow",
path = "CC_wow.ogg"
})```
``` return {
message = "Trans!",
colour = G.C.CC_trans,
sound = 'wow'
}```
k i changed it, but it's the same error
it should be CC_wow in the return
Oh wait... I found this old message:
put it under misc -> dictionary -> b_key_cards (replace key by your consumabletype key)
stack traceback:
[C]: in function 'newDecoder'
engine/sound_manager.lua:62: in function 'PLAY_SOUND'
engine/sound_manager.lua:197: in main chunk```
now it's this
that one i have no idea sorry lol
what are you trying to do?
Anddd doesnt work, ugh
might be a dumb question, where is the sound file in your mod structure?
assets/sound_effects
iirc its assets/sounds where it needs to be
thank you
@red flower is it deck sleeves the other mod you recommend compatiablity
I give up for today
me when i can't scroll down
if you add decks yes
i can give it a try, trying to learn how to make one of each
Really frustrating how localization works T.T
I really need to get on starting mod compats
better start early then later for me hah
wait why is this shockingly easy (its broken in every way but it moved back gracefully)
might rework the vouchers but its more of a learning excerise
I initially had no real plans for mod compat
But because ive made friends in here I want to ensure compat with their mods (bepis, N, winter, and more)
In my credits i also tell people to play their mods if they haven't
still appreciate the help from jga and flopprdog
i love this kind of community spirit might even change the credits to "mellowthumber and friends" or something
lol i cant interact with it but the part i was worrying about (gracefully going back to my hand) is literally just G.hand:emplace lmfao
Bump
im here to hinder everyone
is the video working?
Yet you do nothing but make my life better
i can see it
might be me then
U gotta flip da card
its also technically played already and shows as transparent in deck view so uhh
but that should be easy to fix right? :clueless:
yeah because it also tried to emplace it in G.discard
Yeye I was gonna say
might be steam using an evil advanced encoder, mb
im not too familiar with how cardareas work this joker is supposed to be the exercise for me to understand them
so ill see what i can do
might be my fedora instalation forgetting the evil advanced encoder, mb
but tbf i try to have all the codecs as i like to collect different kinds of formats and for backwards compatibility of old windows games
steam uses the HEVC codec in case you dont wanna google
yeah i think i have that instaled might just be discord being weird again 💔
still need to get around to installing the sims 1-3 via bottles some time as i need my sims fix
or specifically, this one, im not too familiar with codecs
i even got the first one complete edition on physical
any other mods you recommend compatibility let me know (i'll add more text and metalinks in a sec)
do you want mods we don't recommend compatibility for too? 🙃
does it start with t and end with alisman
how would i stop it from doing that
Isn't card sleeves more of a cross mod?
uhhhhhhhhhhhhhhh
its more saying "tailsman support isn't a propriety, but feel free to submit an issue"
that is not at all what listing it as compatible means
Is there a way to make it that when the player opens a custom boosterpack, that the original Soundtrack gets changed to my own kind of version while also remaining at that same moment in the Soundtrack? Basically like Balatro does it but with my own version and boosterpack
i know yahimod does that
i think cryptid code packs do that
the header is about mod compatibility and in-compatibility saying in general it should be compatible but there are some notable (in)compatible mods
i hope that makes sense
i dont know if it keeps the timing i have worked with sounds
But i have it compat...
Gonna look into the code for them then
Thank you :3
Bump
for crediting tailsman, what is the proper way. spectral pack? math is fun? cryptid team?
this shit so ass lmfao
i can select the right two "discarded" cards
🔥
Helo, I wanted to ask what you think of this code and if you think it will work.
i think it's not very well formated
if you have the lua extension (if you dont, get it), right click > format
I have the extension
Ah, I see.
Only change the indentation of the text.
honestly i hate it when extensions format my code
that's fine when you know how to format code
i dont code in lua but with other languages besides python its honestly just annoying
i have it to autoformat on save
i love lua and ruby and languages like that
most of the time it's fine
my brother had that, and it made me pull my hair
Looks like someone is using jokerforge 
my autoformatter doesn't do much i wouldn't do manually
sometimes you need to configure it right
i hate the autoformatters that try to align tables
i have an issue where adding oops all sixes makes my joker not trigger both effects
anyway, as i said i dont use lua. but i know a fair bit of it
how do i get into modding this game?
try it and see
i just noticed it too, the if (function())() then is odd
when the blind is selected
i don't like using the lua extention when coding for smods cuz it always yells at me for undefined globals 🤷♀️
Jokerforge generally uses the functions like this in if statements and sucks at formatting the code (because it doesn't format it)
According to the error message, here is the problem.
Is it just like not possible? Cause dayum
how would i temporarily change the shop pool when a consumable is used? (say for one shop)
What's the error message
This
what about the pool do you want to change?
ideally just completely replace the pool temporarily?
you did some change and moved to line 767 now
what do you mean by replace?
thanks
ive read most of it, seems promising
as in ignore whatever the shop normally wouldve generated to replace it with a custom pool
could manually generate the cards as well and use pseudorandom
I think it's wrong, but I don't know how to fix it.
I understand that part but it depends on what and how you want to replace it with
If you want to make your own logic then you would need to patch/hook create_card_for_shop
ty
will look into it
Finally dear god
Aaaaand got an error code ugh
SMODS.Consumable({
set = 'cpp_dwarf_Planet',
atlas = 'dwarf_sedna',
key = 'dwarf_sedna',
cost = 3,
pos = {
x = 0,
y = 0,
},
config = { hand_type = 'flush_six' },
unlocked = true,
discovered = true,
loc_vars = function(self, info_queue, card)
return {
vars = {
G.GAME.hands[card.ability.hand_type].level,
localize(card.ability.hand_type, 'poker_hands'),
G.GAME.hands[card.ability.hand_type].l_mult,
G.GAME.hands[card.ability.hand_type].l_chips,
colours = { (G.GAME.hands[card.ability.hand_type].level == 1 and G.C.UI.TEXT_DARK or G.C.HAND_LEVELS[math.min(7, G.GAME.hands[card.ability.hand_type].level)]) }
},
}
end
})
I can only guess the stuff inside loc_vars doesn't work. I copied it from https://github.com/nh6574/VanillaRemade/blob/1618a7660d84a41efa2275e78b79a66e666400c8/src/planets.lua#L237
Ahhhh
Tried to send a cat kiss gif
Thank you so much ❤️
Really convoluted stuff but I am starting to get the deal
how can I make it so that jokers that are not in pool can appear in certain boosters??
because from what I have seen, if they are not in pool they cannot spawn right?
pls help
<@&1133519078540185692>
@red flower Any potential suggestions for how to trigger effects on a card whenever a held in hand card's effect is triggered, be it XMult from Steel or a Joker?
Yes.
So, is it possible to make boosters that create cards even if they are not in pool?
Perhaps you could hook SMODS.score_card and set a flag and then hook SMODS.calculate_effect to see if anything triggers while that flag is active?
i'm making a language mod
where do i find the template
-# or at the very least the english localization file
In the Balatro extracted exe
no
key_shop_card_generation = function(area)
return Card(area.T.x + area.T.w/2, area.T.y, G.CARD_W, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS.c_empress, {bypass_discovery_center = true, bypass_discovery_ui = true})
end
local shop_card_generation_old = create_card_for_shop
create_card_for_shop = function(area)
if key_enabled then
return key_shop_card_generation(area)
else
return shop_card_generation_old(area)
end
end
why doesn't this change the generation of cards in shops even with key_enabled set to true?
i have a card that forcefully opens a booster and it makes the game act very strangely afterwards
the booster UI is overlaid on top of other UI (sometimes even behind playing cards), the background doesn't update properly upon exiting the booster, and the music only changes back after openening and exiting a different booster
anyone know how i could address this?
the code included is the function which opens the pack
ok im getting closer
i no longer go above the deck limit
but it is still unplayable
What is the goal?
that a card stays in hand after being played
and can essentially be played again
basically copying it to hand and deleting the original
but without actually doing that
I have a lovely patch for this that works.
oh thats cool
im currently seeing if i can do it without without lovely patches (because i dont know how to)
can someone help me figure out what needs update or a bug on my modded thing?
[[patches]]
[patches.pattern]
target = '''functions/state_events.lua'''
pattern = '''
for k, v in ipairs(G.play.cards) do
if (not v.shattered) and (not v.destroyed) then
draw_card(G.play,G.discard, it*100/play_count,'down', false, v)
it = it + 1
end
end
'''
position = "at"
payload = '''
local handcards = {}
for k, v in ipairs(G.play.cards) do
if (not v.shattered) and (not v.destroyed) and not conditions then
draw_card(G.play,G.discard, it*100/play_count,'down', false, v)
it = it + 1
end
if (not v.shattered) and (not v.destroyed) and conditions then
table.insert(handcards, v)
it = it + 1
end
end
if #handcards > 0 then
G.FUNCS.draw_from_play_to_hand(handcards)
end
'''
overwrite = true
match_indent = true
I installed a new update to a mod I've been playing #1350574384267526195 and it isn't liking the new mods
Is the range of weight = from 0 to 1?
iirc it doesn't have one
it's a weighted pool
just dont put zero cuz youd be a moron
oh wow thank you!
still need help with this one
How would i trigger an effect when exiting the shop under any circumstances? (eg. not in any sort of calculate)
...sort of figured this out, but that's a lot of pairs to dig into the table.
goddamn blind_states looks like a pain in the ass to fiddle with
How does one change the challenge description? (preferably without the localization file 🙂 )
with a localization file
made a little mod icon what do you guys think
you would add a custom rule:
https://github.com/nh6574/JoyousSpring/blob/e03cb29969f60c373d28e838b4cb10a575c1e5d0/src/others/Challenges.lua#L84
and then have it in the localization:
https://github.com/nh6574/JoyousSpring/blob/e03cb29969f60c373d28e838b4cb10a575c1e5d0/localization/default/03Challenges.lua#L10
😮💨 thank you
does anyone know why this doesn't work? im trying to detect when joker directly to the left is triggered
ahh yes, I didn't account for ultra dark theme discord. On 'ash' its fine
i like my oled screens
Is there any function that's called whenever the shop is exited?
where would i find that
still have no clue why this isn't working as it's similar to the recreated voucher tag code yet still produces bugs even on the blind selection screen
A mod i'm making uses some modified base game textures (a couple recoloured or basic modifications, others like empty cards used to create fully custom things on top)
Can i actually do that, or do i need to redo some or nearly all my textures?
There's not a rule against that
i was telling you to not search it myself 😭
its G.FUNCS.toggle_shop
how would i get a list of all possible ranks?
i tried printing stuff out and all that, no luck :[
dont want to hardcode them
SMODS.Ranks
ty!
Thanks, guess i've seen enough mods that have copied parts from base game.
Just wanted to be sure
did not know it required enabling, thats on me
what do you think about this
i could remove the abstract joker part and have the gimmick with zero or one joker slot and gain one per boss blind
that sounds more like a challenge than a deck
ill keep that in mind for challanges then hm
what about this or does this still sound like a challange
thank you so much!
that just sounds like one of the best decks in the game
what would be a good tradeoff?
especially for endless
or you can start with a low number of jokers with the tradeoff
consumable slots locked at 0?
well some jokers including powerful ones like perkeo won't work. maybe
exactly
Bump
more jokers at the cost of your consmables
good idea
and to be fair you can get crystal ball if you really need one consumable slot
if this sounds like more like a challange i can go back to the drawing board
Is there a way to change the texture of a single instance of a joker card?
the deck selves could be have a starter joker depending on the deck like nebula could be supernova or constellation.
maybe 1 joker slot might be a good trade off since you cannot rely on strong synergies early in the game
idk
what do you guys think
im sorry, can you elaborate?
So like, similar to how enhancements are, i just use a sprite instead of shaders.
you can use SMODS.Joker:take_ownership and point to a different atlas and position
wait single instance
mb i cant read
im afraid thats going to be a custom drawstep
Yes.
but definitely possible
Oof idk what that is soooo… where do i start?
and also reading the source code of smods as they say to show how they implemented them
tbf i learned how to kind of use this two days ago so there may be better sources
Oh. how?
Because right now i'm directly changing self.pos.x and all that does is change the texture of every instance of that card, including the one in the collection screen.
You would do card.children.center:set_sprite_pos({x = number, y = number})
I forgot smods wiki had that, ok thanks
how would i remove the perishable sticker from a neighboring joker?
does anyone happen to know which shader is used for the background during a run
Thanks, also i think the message before your edit had what i needed but how do i see the current pos value (i only really need x)
Then you would do card.children.center:set_sprite_pos({x = number, y = card.children.center.sprite_pos.y})
thinking on have the abstract sleeves at least for the other decks starting with a joker related, not sure if i should go ahead and add the effect of the abstract deck
looking at the other sleeves its basically adds the decks ability and does something special if you pair it with the deck like red deck with red sleeve
am I stupid lmao. My first test joker loads in my collection but not my second one. Any guesses why? :0
(nvm I found out why lol- thx however!)
(this is my second joker for refference)
Thanks so much, the issue have been bugging me for quite a while.
And it did also remind me i need to clean up my code at some point, as i found the load function placed inside the calculate function 
finished with my first deck not sure if its good or not but i'll go ahead and work on the art
Huh, when I play the card with the new enhancement, it's considered as still in hand and trying to iterate over the played cards, they can't find themselves?
-# No, I am not using Hyperlink Seal.
rascal 👍
oop wrong chat. eh whatever close enogh
i mean i do have a question actually. is the yellow text at all intuitive
i dont know what defense is meant to be so it doesnt tell me much besides i apparently have 15 of it
also minor spelling mistake
defence is the correct spelling in british english
theres a reason the brits aint reppin smh
i mean yeah hopefully by the time the mod is fully set up the player should be able to learn what these mean, im specifically asking if it makes any sense where the yellow numbers come from
i mean hopefully theyll make more sense when editions and enhancements show the correct text
i mean i cant speak for something being intuitive if i cant know what it does
so if you think its intuitive when people know what things do then sure
cause blue traditionally means chips
idk
or it even could mean hands
the yellow numbers are meant to be the base number plus whatever boosts it gets from editions and enhancements and such
cause basically everything in rascal works on ranks instead of chips or mult
does lua/smods natively support post and get requests without external dependencies
like does it have some form of http api
what do you think of this
LETS FUCKING GOOOOOOOOOOOOOO
new art for my Three Pair planet card 🔥🔥
ingame joker forge creator 😈
by any chance do you have a planet card for a platypus
also i love doof's hair going into the text
Just an ordinary platypus.
smods is OVER
W
What am I missing for my boosterpack in the localization?
name = "Chip Stack",
text = {
"Test"
}
},```
what is a juice_up?
the shake that a joker does when it is triggered
ohhhh
oddly named but whatever
LMAO yeah
it should be named shake_card_object_effect
What do you guys think would fit the style of the original Balatro soundtrack when opening one of my booster packs? The pack in question would be one where you get tokens (poker chips) as a consumable.
How can i get the ante score (not the blind/G.GAME.blind.chips score)
planet
?
make it saxophone /j
But would that fit poker chips? And what do you mean by 'different'?
yes cuz poker chip get incremented by planet cards in vanilla game
anyone got that problem where only 1 atlas' shows up lmao?
pretty sure its just a position problem but still lol
what kind of assets are needed?
hey
anywas config = { extra = { x_mult = 3, odds = 2 } }, loc_vars = function(self, info_queue, card) return { vars = { card.ability.extra.x_mult, (G.GAME.probabilities.normal or 1), card.ability.extra.odds } } end, calculate = function(self, card, context) if context.joker_main then if pseudorandom('fly') < G.GAME.probabilities.normal / card.ability.extra.odds then return { message = "Absolute Cinema!", colour = G.ARGS.LOC_COLOURS.CC_gold, sound = 'CC_succeed', x_mult = card.ability.extra.x_mult } else return { message = "Absolute Dogshit...", colour = G.ARGS.LOC_COLOURS.CC_poo, sound = 'CC_fail' } end end end
and i'm getting an error saying odds is a nil value in line 746 if pseudorandom('fly') < G.GAME.probabilities.normal / card.ability.extra.odds then
https://en.wikipedia.org/wiki/Roses_(suit) would you prefer roses or flowers
Roses or Flowers is one of the four playing card suits in a deck of Swiss-suited playing cards. This suit was invented in 15th century German speaking Switzerland and is a survivor from a large pool of experimental suit signs created to replace the Latin suits. It is equivalent to the Hearts suit in German and French decks. It is equivalent to t...
unless it would be cool to come up with a new suit along with these three
Im trying to make an edition that retriggers any joker/card it is applied on, but it doesn't work. Could anyone help?
config = { extra = { repetitions = 1 } },
loc_vars = function(self, info_queue, card)
return { vars = { card.edition.extra.repititions } }
end,
get_weight = function(self)
return G.GAME.edition_rate * self.weight
end,
calculate = function(self, card, context)
if context.post_joker or (context.main_scoring and context.cardarea == G.play) then
if context.repetition then
return {
repetitions = card.ability.extra.repetitions
}
end
end
end
if (context.repetition or context.retrigger_joker_check) and context.other_card == card then
return {repetitions = card.edition.extra.repetitions}
end
oh, lemme test that, thanks!
You should hire a coder, it helps alot trust
When on a joker, it retriggers the playing cards
no >:)
Prob check if type is joker/card, idk i dont code
did you use the edited version of the code
you are literally the main coder for our mod
looks like this is what the assets i need
I know and i was swimming so can you blame me for not being there
Yes, I fixed the code.
oh, alright
Somethingcom the goat
The joker still doesn't retrigger, but it no longer retriggers the card
did you enable the optional feature
optional schmoptional
Hi dilly
hi
which one?
retrigger_joker
SMODS.current_mod.optional_features = function()
return {
retrigger_joker = true
}
end
alright, thank you!
no problem i am edward robinson
omg it edward robinson
is this what all you need?
Well shit, https://github.com/Steamodded/smods/commit/2de11100d2668b9996cc92ff3521aa5a58a25974 kinda broke my hook...
Ah, no context for the start of a new ante (would also settle for enter store)
Oh well guess i store the ante in my joker then check that to the actual ante and if new ante update jokers stored ante and do code.
anyone knows the name of the function for randomness please lmao ?
pseudorandom(seed, min, max)
so random numbers arent exactly random
they are generated based on a preexisting condition
this initial condition is called a seed
you can set the seed to any string you want, typically you use something related to what you're using the random function for
theres more to it, like Meta said the seed doesnt matter
just name it something relevant to the source of the randomness
Much like Cloudflare uses lava lamps for randomness. https://www.cloudflare.com/learning/ssl/lava-lamp-encryption/
alr i'll try it! thanks yall!
hecc.
Is score called score or is that also chips?
G.GAME.chips
I'm on localization on a joker that deals with the score, and i don't know if i should call it score or chips.
"Score" is what I used.
chat is it possible for a joker to give -5 mult?
yes
cool
like for the mult do I just put -5 or will that crash the game?
like mult = -5
I guess i'll move over to it too. And i see you also used purple 
Just feel the sentence (Currently 345 Score) feels a bit weird, guess i can reword it
You can mention Score outside of the (Currently ...) bit and color the number purple.
Yes.
I guess i could do that, and already use purple there.
Image of the text that is currently used:
(Currnetly
cool
Oh yea that image still had that typeo
is it even possible to rebuff a perishable debuffed joker?
SMODS.debuff_card(card, 'reset')?
This seems a little better now
The primary reason I made that Joker is to fill this slot on the modded wiki. 😂
doesn't work
Code?
Yes, you also have to do card:set_debuff(false)
I guess my joker also does that as at end of round it sets the score to the blind score (except for if in a game over state where it adds back that score)
hey! its me again lol. So using the pseudorandom I was trying to pull a random seal out of a table but it gives me an error stating that my table has a value nil, any idea how to fix it? Or maybe i'm approaching the situation the wrong way?
Use pseudorandom_element also RandomSeal wouldn't exist yet.
Still nothing, im trying to get it to rebuff a perishable joker after it gets debuffed
Did you try card.debuff = false?
oh lmao that's a thing? imma try it out then
Also you're right I forgot there was an order of things. I'll try something else thanks!
tf the difference between SMODS.debuff_card, set_debuff and card.debuff?
Changed some stuff from the original soundtrack, does this sound good? It's for my boosterpacks :3
Looks nice :)
is there a way to make the shading/gradating similar to the high contrast cards where its darker upwards
what does _t reffers to in the pseudorandom_element? :0
The table.
local shfref = Card.should_hide_front
function Card:should_hide_front()
local ret = shfref(self)
if ret and next(SMODS.find_card('j_toga_cavingjkr')) and not self.config.center.replace_base_card then return false end
return ret
end
What isG.pack_cards.cards[1].config.center.mod.id?
Internal mod identifier string.
specifically, the ID of the mod that the first card in some booster pack comes from
Why does this not work for my boosterpack?
(In localization->descriptions->Others)
name = "Chip Stack",
group_name = "Gambler's Thing",
text = {
"Test"
}
},```
(i assume cstorm is your mod prefix) it needs to be p_cstorm_chip_stack
Why does it say error there?
Missing localization
you did not specify group_name in loc_txt (or group_key if you're using localization file)
^ if you do group_key, then you assign a string to the group key in misc -> dictionary in the loc file
also if you used group_name but also specified a group_key (common mistake i see) then it wont appear either
if G.GAME.blind.chips is for the required chip blind then what's the chip score one?
hey, how i make the game to generate a random tag?
she has received a glow up courtesy of my friend fox
name = "Chip Stack",
group_key = "Gambler's Thing",
text = {
"Test"
}
},```
and this in my dictionary
`group_key = "Gambler's Thing",`
So what is the wrong thing?
group_key goes in the SMODS.Booster definitions, and you should make it something like 'k_chip_stack if it's for a chip stack
and the thing in the dictionary needs to be [whatever you defined as the group_key] = "Gambler's Thing" (assuming you want it to read "Gambler's Thing" in the text at the bottom)
SMODS.Rarity {
key = "btct_Elite",
loc_txt = {
name = "Elite"
},
default_weight = 0.0067,
badge_colour = HEX('f59827'),
get_weight = function(self, weight, object_type)
return weight
end,
}
My friend said he did not see an elite after 400 rerolls with 12 shop slots, what did I do wrong? (1/150 = 0.00666...)
It works, thank you :D
You need pools = {Joker = true}
this used to function, although that may be because of circumstance rather than it actually working: lua local use_consumeable_ref = Card.use_consumeable ---@diagnostic disable-next-line: duplicate-set-field function Card:use_consumeable(area,copier) local joker = SMODS.find_card("j_mode_poor_bonus") if next(joker) and self.area == G.consumeables then G.hand:change_size(next(joker).ability.extra.h_mod) end return use_consumeable_ref(self,area,copier) end
It's supposed to add 1 (or rather add h_mod) if you use a consumable, but it doesn't do it. After checking with some prints it seems like it never enters the if block, even if the card is definitely there. Any ideas?
Why do I crash
SMODS.Rarity {
key = "btct_Elite",
loc_txt = {
name = "Elite"
},
default_weight = 0.0067,
badge_colour = HEX('f59827'),
pools = {Joker = true},
get_weight = function(self, weight, object_type)
return weight
end,
}
like this?
it works thanks
What do I need to do to change this "ERROR" for my consumables?
Anyone here have experience with custom hands? Because I could use a little (a lot of) help. I'd like to make a hand called split flush, where the three of a kind is all one suit, and the pair is all one, different suit. I'll attach my code, but as it is, it detects the hand in at least: two pair where the pairs are each one different, suit, three of a kind of all one suit, and NOT the proper hand.
does anyone know how to check if a lucky_mult procs with context.identifier == 'lucky_mult'
N said before thats its for probability context but I cant seem to figure out what to do still
I get this crash too
context.pseudorandom_result and context.result and context.identifier == 'lucky_mult'
thank you
I was missing the context.result 🙏
How does ease_background_colour() work?
im trying to make a practice area where people can play the minigames but i cant seem to figure out how to get to a 'blank' splash screen, ideally it would just be the normal swirls in the background and the title card, but remove any cards present and close whatever menus i got there with but i am at a loss
so any uiers in chat
G.FUNCS.close_overlay_menu() iirc
epic thanks
...genuinely stuck with this.
local shfref = Card.should_hide_front
function Card:should_hide_front()
local ret = shfref(self)
if ret and next(SMODS.find_card('j_toga_cavingjkr')) then return false else return ret end
end
Hey all, apologies for how crap my code probably is, but I'm having an issue with my Joker. Her ability is that she has a rotating poker hand, and whenever that hand is the first hand played in a round, she destroys the first scored card and permanently adds the scoring values of that card to the base values for the poker hand. (For example, a Mult Ace gives +11 Chips and +4 Mult, a Polychrome 4 gives +4 Chips and multiplies the base mult of the hand at that time by x1.5). In any case, this ability works, but whenever a planet card is used for a hand that has been augmented, it actually reduces the values of the hand back down to what they would normally be at that level. Is there any way that I can prevent that? Here is her Lua for reference.
hmm close overlay caused a nil crash..
I can’t help you but I gotta say
Wha
Flappy bird in balatro lmao that’s so cool
here ill record better vids for u one sec
I think this make me crash
On another note (while I wait for the vid lol-) anyone knows a good seed idea for pseudorandom that keeps changing?
Thought I would check on the Vanilla mod but they use a custom seed that I have no clue what it reffers to lol-