#đŸ’»ăƒ»modding-dev

1 messages · Page 221 of 1

shell belfry
#

What context would I use to check if a joker is being activated

umbral zodiac
#

anyone know why this results in 'attempt to index field "colour" (a nil value)'? i am very stupid with balatro modding pls be patient with me 🙏😭

umbral zodiac
#

one sec i caused another error while trying to do something intentionally wrong

tall wharf
#

😭

umbral zodiac
paper zealot
tall wharf
#

wait

#

is that old ahh steamodded

umbral zodiac
#

yeah lol

#

i play almanac so i cannot update atm

tall wharf
#

😭

umbral zodiac
#

its still on oldcalc

umbral zodiac
paper zealot
#

Alright, so in engine/ui.lua when initializing a UIBox, it first calls Moveable.init(), but butchers args.T in a way that means Moveable.init() will never actually use the contents of args.T.

function UIBox:init(args)
    --First initialize the moveable
    Moveable.init(self,{args.T})
```and
```lua
function Moveable:init(X,Y,W,H)
    local args = (type(X) == 'table') and X or {T ={X or 0,Y or 0,W or 0,H or 0}}
    Node.init(self, args)

Does anyone forsee any issues if I patch fix this? Is this behaviour that other mods are likely to depend upon?

#

Or maybe it's better if I entirely write my own init instead

#

It's not as long as I thought

shell belfry
#

how can I check If a joker has been triggered.

tall wharf
shell belfry
#

Im trying to make a joker that gains +1 mult every time a joker is scored.

#

This is what I have so far

#

Right now it is gaining 1 mult for every joker

#

I don't know what the context is

plush cove
#

do you have any sort of schema or anything set up?

crystal perch
#

i'll let you know if i find a solution

sturdy compass
shell belfry
#

I'll try that

plush cove
sturdy compass
#

very weird

plush cove
#

did you set up any workspace settings or changes to your plugins that got the toml autocomplete working?

sturdy compass
#

Nope

#

Literally all I did was make that file

#

Nothing more, nothing less

plush cove
#

I am so confused

simple mural
#

I have this joker and its works well...

#

But this not fully works with the Oops! joker because its doubles only when adding and removing from joker slot

#

How can I fix this so that the points from the HUE joker don't conflict with the Oops! joker?

hushed field
#

I think your best bet is either to check for the presence of Oops all Sixes, and have a separate counter that doubles the probability gained afterwards, or to write a patch

zealous glen
pearl jacinth
#

how do i make a consumable that generates a specific card

#

i'm making a mod around the chemical elements

zealous glen
#

What type of card

pearl jacinth
#

another consumable

zealous glen
#

Not too different from how vanilla does it but SMODS provides add_card as an utility to help

#

Check the wiki

nocturne aspen
#

does anyone know how to detect when a card w/ a seal is destroyed? im trying to make a seal trigger some things when its card is destroyed, but im a fair bit new to balatro modding

safe cobalt
#

hmm, what's G

nocturne aspen
#

G.play i think? should it be differnt?

safe cobalt
#

oh oops meant that as a general question

nocturne aspen
#

ah lol

hushed field
nocturne aspen
#

oh! thank you!

hushed field
#

I do think you may need to check separately for hanged man destruction 😬

simple mural
hushed field
#

And I haven't tested anything like it myself yet, but I also think spectral cards that destroy cards don't trigger it? đŸ€”

simple mural
nocturne aspen
simple mural
#

It's not that difficult and overall it will work.

hushed field
simple mural
hushed field
#

clever effective solve!

simple mural
#

It will be quite interesting to play when I make at least all the jokers.
The only problem is to balance everything +-

hushed field
#

balancing's a skill, and it's impressive that people ever learn it, honestly

#

I've been considering doing a devlog-esque thingy in my too abundant free time that's just me playing my mod and taking notes on balancing, just so I actually feel motivate to do it, haha

simple mural
#

To balance, it is enough to look at the usual jokers and deduce the approximate rate of each type (probability, money, mult, chips, etc.)

hushed field
#

Best way to balance things is just to play some rounds with it and see how it feels

#

some synergies feel stronger than they are, others feel weaker than they are. Make a good guess when you make the joker, and just play around with it

zealous glen
nocturne aspen
# nocturne aspen i try it out and report back đŸ«Ą

report: goal - make a seal do somthing when the card its on is destroyed
using 'context.remove_playing_cards' will trigger in any context where card is destroyed, wether in blind via somthing like trading card / 6th sense or in the hand that apears when using a consumable in a booster pack. like hanged man / immolate. but the condition triggers whenever any card in the displayed hand is destroyed, not just specifically the one w/ the seal, ive tried a few different things to limit it to the destruction of the sealed card, but idk lol

hushed field
#

that's any creative field, honestly. Probably outside of it too 😛 In my dayjob, whenever a client has feedback, their own posed solutions are rarely ever an actually good translation. And in fiction writing, I also generally notice that readers rarely pitch an alternative that's better 😛 But what they're trying to change probably does need changing

nocturne aspen
#

it apears i am occasionaly stupid - also oop didnt mean to interupt soz

hushed field
zealous glen
hushed field
#

because I have some non-coded jokers that I was gonna need that answer for, haha

zealous glen
#

Me three

#

Well

#

Enhancement not Joker

zealous glen
#

Sometimes you just need to change the dressing

#

And people flip their opinion even though in practice everything is the same

#

Would you rather be taxed for all but 1 option, or to get a discount for 1 option? đŸ€”

hushed field
#

part of why Obelisk is a controversial design, honestly. Resets feel bad, so the joker is seen as worse than it is

zealous glen
#

brb

hushed field
#

i don't use it much either, but it's situationally strong, rather than weak, i'd say

zealous glen
hushed field
#

yeah, that's fair

#

I don't think a buff would be bad, but I think the reason a lot of players really dislike it is not because its niche, but because of how it feels punishing.

zealous glen
#

Well, just in principle anyways. I can also see the argument for it being strong in its niche. It depends on what is trying to be said

zealous glen
simple mural
#

How can i get a count of current jokers in the joker hand?

zealous glen
#

As in, changing how you view your long term strategy and that you can eventually pivot out of it

zealous glen
hushed field
#

#G.jokers.cards gives you the count, no?

zealous glen
#

I think the right way to look at balancing is to look at general strategies than individual Jokers, especially as more Jokers are added

simple mural
frosty dock
#

#G.jokers.cards

hushed field
zealous glen
simple mural
frosty dock
#

???

zealous glen
hushed field
#

But for mods, I do think it's something worth solving

zealous glen
#

But also it’s not asking for Jokers that break the game harder, it’s asking for more variety in how to do it

hushed field
#

Yeah, fair

zealous glen
#

So the difficult part is introducing new synergies without making them too common

hushed field
#

It's a hard line to walk. The more varied endless options there are, the easier beating ante 8 becomes, I reckon

simple mural
zealous glen
#

A system identical to Legendary Jokers

#

You can’t find them in the shop, so the entrance point is heavily gated

#

Which also touches on my opinion that I think Legendary as a rarity is poorly designed for what it is

#

Flavorfully it’s great, but the juice isn’t worth the squeeze necessarily

simple mural
zealous glen
#

Don’t

#

That’s my suggestion

#

Do it multiplicatively

#

That way it’ll also work with mods

tall wharf
#

😭

sacred lily
#

how can i add a new card type?

zealous glen
zealous glen
hushed field
#

I like the way legendaries work in vanilla. It's not as great a mechanic when mods start increasing the pool, I find. Especially when legendaries are synergy specific, which makes finding it when you're not aiming for that build a feel-bad

sacred lily
zealous glen
#

I think I forgot to say that for vanilla, Legendaries work

#

Because they’re heavily curated

simple mural
zealous glen
#

So you don’t see the issues

tall wharf
sacred lily
#

yeah like that

zealous glen
#

Check the wiki

gleaming zealot
#

i wanna code my mod but i dont wanna code my mod

gleaming zealot
zealous glen
#

Anyways if you just wanna count O!A6s you can use find_card provided by SMODS

simple mural
zealous glen
#

You can try dividing by the current value

hushed field
#

I haven't figured out exactly how I wanna do it, but it's why I'm changing the way Legendaries spawn for Kino's legendaries. I want them to be able to spawn if you're meeting certain requirements. I'm thinking of having you match ~3 meta elements of the legendary joker for it to be added to the rare pool. So if your current movie jokers have an actor, director, genre, release decade or so shared.

zealous glen
#

Then multiplying it back later

hushed field
#

I might add keyword to that, to make them easier within synergy, because currently, the spawn conditions for the legendary Rattatouille joker don't really cater towards builds that benefit it

zealous glen
#

So they’re always relevant

hushed field
#

Yeah, internally at least, they'll for sure be their own rarity. I might make it a config option to allow them into the soul pool

#

My preferred legendary design is generally good, nichely fucking amazing

hushed field
#

hahaha

zealous glen
#

The 0.5 is pending a slight rework

simple mural
zealous glen
#

I also want to give them unlock conditions

#

And a Joker that makes finding one of them easier

hushed field
zealous glen
hushed field
#

why didn't I think to have a joker for Soul that actually does something with the Soul card??? My current WIP version spawns a negative and quickly perishable version of a joker that's been destroyed this ante

zealous glen
tall wharf
#

alrugth

zealous glen
simple mural
#

oh

hushed field
#

I need to think twice before giving coding advice 😛

zealous glen
#

Yeah earlier I suggested counting manually lol

#

Brain hasn’t loaded yet

hushed field
#

But doesn't find_card return a true or false value, rather than a count?

#

The only legendary I have code for currently is the Indiana Jones one, which is a stacking version of the Idol. Though I haven't tested it enough to know whether it's fun or feels like it's worth it

tall wharf
#

uh drunkard

zealous glen
hushed field
#

Oh, that Solomon David does sound fun

zealous glen
#

Solomon already kept the remaining hands, I’ll just change the code behind it. The condition is different though

hushed field
#

I do think maybe that's better suited for a deck or challenge than a legendary, though đŸ€”

zealous glen
#

It’ll either be making everything into a Boss, or making every Boss into two Bosses

zealous glen
hushed field
#

what does play it again mean in this context?

zealous glen
#

“You’re in my world now, not your world”

zealous glen
#

-# I prefer asking before responding

hushed field
#

I'd say just a really fundamental level of retrigger, basically. But the 'if you can't' implies to me that it'd try and play a hand of the same type from cards in your hand

zealous glen
#

It takes the same hand and plays it

#

Oh, you played a hand, let’s play it again

#

Oh, you played a hand, let’s play it again

hushed field
#

My current planned legendaries are Barbie, Rattatouille, 2001: a space odyssey, Indiana Jones, and The Avengers. I might add Citizen Kane too, but I haven't seen that movie in years, and don't have a good concept for it, but I do want a b&w era representative in the legendary pool.

zealous glen
#

Oh, you played a hand, let’s—oh, you’ve won. Goodbye, cards

hushed field
#

Aaah, that makes more sense

zealous glen
#

Alternatively, you run out of hands and lose

hushed field
#

Is winning the only context in which you wouldn't be able to play the hand again đŸ€”

#

I guess certain modded boss blinds?

#

The wording would definitely have me confused, currently

zealous glen
zealous glen
#

I know people would struggle with it

#

But I hope they’ll at least recognize the Joker did exactly what it told them it’d do

sacred lily
#

This card is supposed to gain +4 Mult every time a glass card is played, but ends up getting +8 instead. Anyone know why this is?

zealous glen
#

“After you play a hand, play it again”

It triggers upon playing a hand, and it itself plays a hand

hushed field
#

So each time you play a hand, it costs an additional hand

zealous glen
#

It costs all hands

hushed field
#

The wording does say exactly that, that's true 😛

zealous glen
#

Because it keeps triggering itself

#

I suppose if you played only Glass they could break and it would stop before all were played

hushed field
#

Ah, I guess I interpreted 'you' from a humanist perspective that implies the existence of the soul 😛

zealous glen
#

It forces you to play it again

#

Automatically, but you

hushed field
#

Yeah but in that case the wording does run into Balatro using shorthand. But I don't think that's fundamentally an issue

zealous glen
#

Either way, this Joker should be locked behind a Boss Blind that applies this effect

maiden phoenix
sacred lily
#

ok

sacred lily
maiden phoenix
#

Check the SMODS wiki on the github page on the calculate point, see which context refers before

sacred lily
#

alright

sacred lily
#

i've noticed that if the played hand contains more than one glass card the mult isn't given

#

how do i fix this

red flower
#

don't break inside the for loop and also only return after the for loop if has_glass is true

#

the break I added before was because it stopped when it found 1 glass card, if you need to find all you need to get rid of it

sacred lily
#

ok

#

i've also seen that the hand is played before the upgrade is given, which is weird

red flower
#

oh, because you're calling it in final_scoring_step which is... the final scoring step

sacred lily
#

shit

#

accidentally pressed undo too many times probably

#

i remember setting it to joker main

red flower
#

if you put it in joker_main it will not reach the second return

sacred lily
#

so context.before then?

red flower
#

probably

sacred lily
#

ok thanks

frosty dock
#

that is usually when upgrades happen

hushed field
#

reading through the way cardareas function, and am I right into thinking that the deck cardarea actually displays and contains all cards in it? That's not a visual trick, but an actual stack of your cards?

frosty dock
hushed field
#

fascinating

#

I fully assumed it'd just be sprites of the back, but then I was surprised by not being able to find where it turned the display for the cards off

woven turtle
#

how could i test out custom stickers? apply it to what i want anytime preferably ingame?

hushed field
#

for custom stickers you do not to add some code to debugplus yourself to apply them, iirc

dreamy thunder
#

oh wait

#

i forgot ye

#

mb

woven turtle
#

cant see sticker in debugplus keybinds

dreamy thunder
#

ASD for Eternal/Perishable/Rental

frosty dock
#

you need to use console commands

#

for custom stickers

dreamy thunder
#

i missed the custom part ;-;

bold sleet
#

Help. The text isn't vertical idk why aaaaa

wintry solar
#

assuming you have debugplus you can run eval dp.hovered:add_sticker('sticker_key', true) when you hover a card

woven turtle
#

ah thanks

#

where can i find other commands aswell

pale temple
#

still cant wrap my head around destroying cards, can you do it at the end of a round

#

while doing a check for the card to be destroyed

red flower
stuck seal
#

Hello fellas, I need a bit of help. I'm making a consumable that halfs the current blinds chip requirement. However the UI doesn't update, any way of fixing that?

    key = 'Bewilder_untarot_uncounter',
    set = 'Bewilder_untarot_type',
    loc_txt = {
        name = "The great uncounter",
        text = {
            "{C:attention}Half{} the blind's ",
            "{C:chips}chip{} requirement",
        },
    },
    discovered = true,
    pools = { ["tarot"]=true },
    config = { extra = { time_blind_by = 0.5, }, },
    cost = 4,
    can_use = function(self, card)
        if G.GAME.blind.chips then return true end
        return false
    end,
    use = function(self, card, area, copier)
        G.GAME.blind.chips = G.GAME.blind.chips * card.ability.extra.time_blind_by
    end,
    keep_on_use = function(self, card)
        return false
    end,
}```
red flower
#

G.GAME.blind.chip_text = number_format(G.GAME.blind.chips)

hushed field
#

I'm working on my abduction mechanic, and I know I need to make a new card area to store abducted cards, but I'm trying to figure out specific behaviours of cardareas to see what the best way to go about it. I'm considering either making a general 'G.abduction' that contains all abducted cards, and then just marks each card for its abductor internally, though that'd require that I'd have to iterate and check each abducted card each time I go in there. The other option is to make it so that jokers that can abduct cards create a card area when you buy the joker and have a dictionary of abduction areas with the specific jokers as keys đŸ€”

#

I'm wondering if giving a card a cardarea as a child (which is as a default set to invisible) is going to create potential issues

red flower
#

It's not going to be saved on reload I'm pretty sure

hushed field
#

Aaaah, that's good to know

tall wharf
#

does time variable in shader not update in real time 😭

hushed field
#

I should check out how the save function works at some point, because I think Confections run into problems with it too.

#

I guess making a general cardarea, and then just tying card behaviour to that is probably the best way to go.

unkempt thicket
#

how do i check a jokers rarity?

red flower
#

card.config.center.rarity

stuck seal
hushed field
#

The base game declares every cardarea with 0,0 to start with. That's because it's actual position is set later by another function, right?

wintry solar
tall wharf
#

like live rotation

wintry solar
tall wharf
#

i mean i just copied it from debuff as a base

#

my end goal is to make it look like this

wintry solar
#

do sliced.y

tall wharf
#

a

wintry solar
#

that'll be G.TIMERS.REAL

tall wharf
#

ok that works

#

thank you

#

what does time even do then

hushed field
tall wharf
#

glsl.app

wintry solar
#

the "time" value is this 123.33412*(_draw_major.ID/1.14212 or 12.5123152)%3000

#

I don't know why this is named time

hushed field
#

oooh, sick. Thanks aiko

tall wharf
#

😭

#

this is probably thunk moment

runic pecan
#

Not sure if this is going to be a good idea or just another 15th standard thing, but what if we replace G.GAME.probabilities.normal with a function, so that any joker/etc that alters probability in one way or another can just define something like calc_probability = function(self, card, prob) and then define a global function function get_probability() if G.jokers == nil then return 1 end local probabilities = {normal=1} for _,J in ipairs(G.jokers.cards) do if J.config and J.config.center and J.config.center.calc_probability then J.config.center.calc_probability(J,probabilities) end end return probabilities.normal end

#

Anyway, this is what I'm going to do in my mod.

tall wharf
#

is it possible to retrigger cards entirely as if it wasn't a retrigger

frosty dock
#

you could probably do that in-place with metatables though

runic pecan
#

Gotta spend some time learning about metatables, I guess.

simple mural
#

What happens if you add more vars to the vanilla probabilities? Will the game break?

runic pecan
simple mural
runic pecan
#

Yeah, I believe you should be able to do that.
Just have to remember the nil check, though.

hushed field
#

If I'm moving a playing card out of the deck and into a separate card area, just calling G.deck:remove_card(card) would still keep that card contained in G.playing_cards, right? So I would need to remove it from that table still?

simple mural
#

Please vedalBwaa

hushed field
#

I'm seeing that the Remove() function iterates over G.playing_cards after removing something from the table. Is that to set the indexes right, so instead of a gap at the removed spot, the count is correct?

simple mural
red flower
#

a list of all the ones you have

bold sleet
#

why is it so smol?

simple mural
simple mural
red flower
#

# gets the length of a list

simple mural
red flower
#

#SMODS.find_card(...)

hushed field
simple mural
#

# returns quantity?

red flower
#

yes, it returns a number indicating how many values are in a list

simple mural
#

thx

#

I'll try when I'm home.

bold sleet
red flower
hushed field
#

it's not encouraging to see you say that 😛

bold sleet
#

Like the menu simply gets larger the more stuff I put inside it.

red flower
#

well yeah

pale temple
#

is it possible in the first place

red flower
#

what do you want to do?

#

like exactly

simple mural
pale temple
red flower
#

does G.hand.cards[1]:start_dissolve() work

tall tangle
#

Take a look at the Lobotomy Corp mod, several of the abnormalities destroy cards

simple mural
red flower
#

take a look at lobotomy corp but because it's rad

simple mural
pale temple
red flower
#

try this

sacred lily
#

i can't tell how to actually get this to work

#

i want the card to trigger upon a hand with a 3, 6, and 9

hushed field
#

you're checking each individual card, and whether they are a 3, 6 and 9. No single card will be both a 3 and a 6 and a 9

red flower
#

you want or instead of and

runic pecan
sacred lily
#

Ok.

modern kindle
runic pecan
manic rune
#

once again adding niche functions to maybe reduce lines my jokers take up by like 2% :3

quartz ravine
#

oh god I have spent a day working on a cool ass shader for a Risk / Reward style glass card idea for a special edition card. And I just now realized that enhancements don't support shaders without me doing a lot of extra work

sacred lily
quartz ravine
#

So someone could...get by edition applied ontop of a glass card for something truly unhinged

modern kindle
manic rune
#

fair ❀

modern kindle
#

i support your efforts

quartz ravine
modern kindle
#

i am in love with poor practices myself

manic rune
#

i have a whole different file for functions :3

modern kindle
#

no localization file my beloved ♄

tall wharf
modern kindle
#

(one day i will fix this)

red flower
tall wharf
#

😭😭😭😭

quartz ravine
#

meanwhile half of my loc_vars use the weird [0] syntax while the other half use string concatenation

manic rune
modern kindle
# tall wharf

im gonna need you to speed up your freaking game fam
out here waiting years

quartz ravine
# tall wharf

Soon you will just be mining meme coins in your jokers

tall wharf
#

I'm at 4x

modern kindle
#

this dont feel like no 4x

quartz ravine
#

if the game is running at 4x speed we just need to add 4x the effects, animations and joker popups to compensate

sacred lily
red flower
#

yes, how does the code look now

sacred lily
modern kindle
# tall wharf

it feels so slow still, at 4x my cards score significantly faster

but either way i fw ur ideas

pale temple
#

apparently

red flower
# sacred lily

oh you need to add another context still, probably context.joker_main
and you need to iterate through context.scoring_hand like you did with glass cards

sacred lily
#

ok cool

onyx sonnet
#

Im trying to create a random playing card with equal chance for all seals, editions, enhancements and lack thereof but instead of the card being added to the deck it gets created on the screen and it kinda just stays there?

quartz ravine
#

Where is the behavior of where glass cards are handled? I am hunting all over for it

hushed field
#

vanilla behaviours aren't really centralized

quartz ravine
#

I am reimplementing it on my own with a twist and wanted to know how it determines it it's going to oof itself

If I had to guess, I would say it has a calculate set to context.after and context.individual where it checks probabilities

runic pecan
sacred lily
hushed field
red flower
sacred lily
#

aight

onyx sonnet
quartz ravine
#

interesting, their behavior isnt in the enhancemet logic at all.

sacred lily
hushed field
manic rune
#

i wonder if this is even useful 😭

#

(that one function replaces what i turned into comments)

#

unnecessarily convoluted code đŸ—Łïž

sacred lily
quartz ravine
#

Sweet I have discovered yet another self inflicted problem. I copied something and forgot to change self to card

sacred lily
#

n

red flower
onyx sonnet
manic rune
#

75 lines function

#

in place of uhhh

#

6 lines

#

❀

#

probably will be worth it on the long run, idfk

red flower
sacred lily
#

alright

onyx sonnet
#

it gets added to the hand but not the actual deck

tall wharf
#

@frosty dock funky!

quartz ravine
#

hmm, do you see what i am doing wrong here? I am getting this error

     (*temporary) = Lua function '?' (defined at line 31 of chunk [SMODS _ "src/logging.lua"])
     (*temporary) = string: "Oops! The game crashed\
"
(2) L..VE function at file 'boot.lua:352' (best guess)
    Local variables:
     errhand = Lua function '?' (defined at line 598 of chunk main.lua)
     handler = Lua function '?' (defined at line 598 of chunk main.lua)
(3) global C function 'ipairs'
(4) Lua global 'init_localization' at file 'functions/misc_functions.lua:1695'
    Local variables:
     (for generator) = C function: next
     (for state) = table: 0x16d81a68  {descriptions:table: 0x16d81ac8, tutorial_parsed:table: 0x16fc78e8, quips_parsed:table: 0x170be360 (more...)}
     (for control) = number: nan
     g_k = string: "descriptions"
     group = table: 0x16d81ac8  {Back:table: 0x16dc2508, Tag:table: 0x16928610, Blind:table: 0x16dc3160 (more...)}
     (for generator) = C function: next
     (for state) = table: 0x16d81ac8  {Back:table: 0x16dc2508, Tag:table: 0x16928610, Blind:table: 0x16dc3160 (more...)}
     (for control) = number: nan
     _ = string: "Edition"

for this edition code

    key = "fragileRelic",
        loc_txt = {
            name = "Ether Overdrive",
            label = "Ether Overdrive",
            text =  "{X:mult,C:white}X#1#{} Mult",
            "{C:green}#2# in #3#{} chance to destroy card"
        },
        discovered = true,
        unlocked = true,
        shader = 'etherOverdrive',        
        config = {            
            x_mult = 3,
            odds = 3
        },
        in_shop = true,
        weight = 80,
        extra_cost = 4,
        apply_to_float = true,--false,
        loc_vars = function(self)
            return { vars = { card.config.x_mult, G.GAME.probabilities.normal, card.config.odds } }
        end,```
hushed field
runic pecan
red flower
#

that doesn't work for playing cards

#

use create_playing_card

quartz ravine
#

Commenting out that edition does let the game load gain, so I think my problem is definitely in here somewhere

        key = "fragileRelic",
        loc_txt = {
            name = "Ether Overdrive",
            label = "Ether Overdrive",
            text =  "{X:mult,C:white}X#1#{} Mult",
            "{C:green}#2# in #3#{} chance to destroy card"
        },
        discovered = true,
        unlocked = true,
        shader = 'etherOverdrive',
        config = {            
            x_mult = 3,
            odds = 3
        },
        in_shop = true,
        weight = 80,
        extra_cost = 4,
        apply_to_float = true,--false,
        loc_vars = function(self, card)
            return { vars = { card.config.x_mult, G.GAME.probabilities.normal, card.config.odds } }
        end,
        sound = {
            sound = "Fox_ghostRare",
            per = 1,
            vol = 0.3,
        },
        calculate = function(self, card, context)
            if
                context.joker_triggered
                or context.from_consumable
                or (
                    context.from_playing_card
                    and context.cardarea
                    and context.cardarea == G.play                    
                )
            then
                ease_dollars(self.config.dollars)
                card_eval_status_text(
                    card,
                    "extra",
                    nil,
                    nil,
                    nil,
                    { message = localize("$") .. self.config.dollars, colour = G.C.MONEY }
                )
                return {
                    message = localize('k_again_ex'),
                    repetitions = 1,
                    card = self
                }
            end
        end,
    })
pale temple
#

so close yet so far

red flower
#

purged

tall wharf
#

how do i reset card ability to its original value :P

pale temple
tall wharf
#

n vm i think i might figure something out

onyx sonnet
red flower
#

no, it's a standalone function

#

i dont remember the syntax tho

onyx sonnet
#

ill look it up on smods, thank you!

red flower
hushed field
manic rune
#

oh crap

#

i forgot to report to 🧙 about the no_retrigger bug

#

ghhhh

quartz ravine
#

Found my issue

onyx sonnet
quartz ravine
red flower
onyx sonnet
#

ah, i see

sacred lily
red flower
#

please format your code

hushed field
# sacred lily yeah idk

the error tells you what went wrong. In this case, it's saying you're attempting to call a field that's nil. That makes sense, because you're trying to call a function. The difference there is that you need to do SMODS:has_card()

red flower
#

no?

#

has_card doesn't exist

#

that's the issue

manic rune
#

what would i do if i want to uhhh add more text in playing cards' description

#

like how Hiker adds +15 Bonus Chips or something

sacred lily
manic rune
#

if so, :get_id() should work

red flower
#

i told you, what you were using was fine

sacred lily
#

ok

hushed field
#

I should think before giving advice, proof #2

manic rune
#

please dont tell me i need to patch

#

this is a bad sign

red flower
hushed field
#

bit my fault, but luckily not fully mine 😛

quartz ravine
#

Is this wrong here?

https://github.com/Steamodded/smods/wiki/calculate_functions

{
    cardarea = G.play, -- G.hand, (G.deck and G.discard optionally enabled)
    full_hand = G.play.cards,
    scoring_hand = scoring_hand,
    scoring_name = text,
    poker_hands = poker_hands,
    destroy_card = card,
    destroying_card = card -- only when calculating in G.play
}

I think this section should be changed to

if context.destroying_card and context.cardarea == G.play then
{
GitHub

A Balatro Modding Framework. Contribute to Steamodded/smods development by creating an account on GitHub.

hushed field
manic rune
#

my jokers can inflict debuffs on playing cards, which allow other jokers to have stronger attacks

#

so uh

red flower
manic rune
#

i want those playing cards to show exactly what debuffs they got

red flower
#

idk if editions can add that

#

or stickers

pale temple
#

figured it out apparently it's just whatever was in the joker calculation page of the docs

manic rune
#

so, it would probably be something like

Queen of Spades
+10 Chips
Affected Debuffs: something something (+ blah blah)

when a debuff is inflicted

pale temple
manic rune
quartz ravine
#

Well I have done something weird to myself

My consumable appears but I cannot use it!

manic rune
#

this thing

#

it should always be a function, if it returns true then the consumable can be used

quartz ravine
#

Thanks! I have this function here, I don't remember what I was trying to do with it

     can_use = function(self, card)
            if G.STATE ~= G.STATES.HAND_PLAYED and G.STATE ~= G.STATES.DRAW_TO_HAND and G.STATE ~= G.STATES.PLAY_TAROT or
                any_state then
                if next(SMODS.Edition:get_edition_cards(G.jokers, true)) then
                    return true
                end
            end
        end,
manic rune
#

uhhh

#

im guessing it adds the editions to jokers specifically?

#

oh, but i thought you can only highlight 1 joker every time?

#

-# or am i missing something here, i actually dont know how this is supposed to work

quartz ravine
#

I forgot I was even trying to do that! Ok I removed that and am good. Now to see how my logic crashes the game too!

manic rune
#

im guessing what your consumable do is applying an edition to a highlighted joker

#

but two actually doesnt work unless you tweak some other stuffs by increasing the number of jokers you can highlight, which i kinda advise against

manic rune
#

i still cant find it

#

im probably too dumb for this 😭

#

this MIGHT be it, but im not sure myself

sacred lily
manic rune
#

s_card:get_id() is a nil value?

sacred lily
#

apparently so??

manic rune
#

also, you dont have this "do" part

sacred lily
#

alright

#

this is currently where i'm at.

manic rune
#

wha

#

you still need the for loop

pale temple
#

does start_dissolve() always go first before message

#

i want them to be at the same time

manic rune
#
for _,v in ipairs(context.scoring_hand) do
  if v:get_id() == blah blah blah
end
#

and also, unrelated, but fix your indentation ❀

red flower
manic rune
#

-# at least its not as bad as peak

pale temple
#

oh func

#

ic

sacred lily
#

same error as usual

red flower
#

because you're not checking for a context

#

you need context.joker_main or something

#

I recommend heavily to look at the example mod

sacred lily
#

i keep reading about this kinda stuff but none of it ever stays in my head

sacred lily
manic rune
manic rune
manic rune
#

all you had to do was just replacing the content inside it

sacred lily
#

a lot of this is coming to trial and error for me really as there are so many things that have to be changed around and whatnot

red flower
manic rune
hushed field
#

UI will be my fucking death đŸ„Č

sacred lily
#

i'm not afraid, just more slightly annoyed

red flower
#

i love UI i wish balatro didn't have gameplay and it was just UI

manic rune
red flower
manic rune
#

oh yeah, forgot about quantum enhancements

#

do their descriptions stack upon each other though

#

or its just their effects, while the description has some sort of priority going on

red flower
#

I would guess so, but never used them

manic rune
#

welp, its worth a shot i suppose, or alternatively i can just let players blindly calculate the debuffs they inflicted ❀

hushed field
#

quantum enhancements don't change the descriptions, as far as I'm aware. though I've removed any reliance on quantum enhancements because it caused a lot of bugs for me

manic rune
#

đŸ”«

sacred lily
#

i'm sure the error is an incredibly easy fix i'm just failing to see

manic rune
#

welp, fuck me sideways i suppose

red flower
#

i think stickers and info_queues would look better anyway

hushed field
#

I'm trying to figure out how to make a display atop of the joker, and god the amount of nodes I need to just display a sprite and some information. And I can't even see how the coordinates impact the placement until I launch the game

red flower
#

also you need "or" not "and"

red flower
hushed field
#

haha, I'm browsing your code already

red flower
#

it's basically just adding a UIBox child to the joker

hushed field
#

Once Kino is finished, my code will just be your code with some variable names changed. I also checked your graveyard and banishment implementation to check how you did new cardareas, and I'm also quite sure JoyousSpring's got the best example of a toggleable card area, so I'll dive into your code again when I'm implementing the snack pack, haha

red flower
#

: )

#

I'm trying to figure out how to fit the field spell area on screen rn

manic rune
hushed field
#

The main issue with ui is the amount of information that's passed on in shorthand

red flower
#

idk how you do it without that

sacred lily
hushed field
manic rune
#

damn, but if there were a LOT of debuffs (look at this), can the sticker's info queue dynamically change

red flower
sacred lily
#

alright

red flower
#

if it needs to contain all of them then you need booleans for each value

hushed field
exotic island
#

alright im new to balatro modding and all i want to do is change the graphics of a card enhancement, how could i do that

manic rune
#

i seeeeee

#

i can just make the stickers having no sprite right :3

#

thats very useful, thanks everyone

hushed field
#

the only issue I think is that stickers don't have ability fields or anything, but I do think you can have them read out the information that's on the card they're applied to

hushed field
manic rune
#

mhm, thats what i intend to do

#

since i mostly add debuffs to card.ability

red flower
#

pinned is a sticker? i guess it makes sense

manic rune
#

for my jokers to read

hushed field
#

Stickers are weird. They're really a support object that allows you to toggle variables and get a sprite to possible go with it, honestly. I made a custom sticker set for Confections, just because the sticker back end works for it, but their functionality is really largely separate

manic rune
#

stickers sound incredibly useful

#

i should learn them

#

motherf-

low matrix
#

do yall have any tips on how to code a mod on a mac for someone who knows basically nothing about coding lmao

#

i have a big idea and am very bored

manic rune
#

do you know how to mod yet...

#

:3

low matrix
#

yea

#

i gots lotsa mods

manic rune
#

-# damn it, that was the perfect opportunity to release the copypasta

hushed field
red flower
#

for text

manic rune
#

r there any sticker mod examples

#

hmm

#

surely joyousspring doesnt have stickers

red flower
#

no

#

yet

manic rune
#

damn.

hushed field
low matrix
#

cryptid has stickers im pretty sure

#

the rigged stuff

manic rune
#

i am NOT touching cryptid, no offense, it usually only works because of a shit ton of patches and hooks 😭

red flower
#

looking at cryptid for references is hard

manic rune
#

yup

low matrix
#

ah

manic rune
hushed field
# red flower for text

Ah okay. I guess if I want the sprite to jiggle a bit, I'll have to tie it to the update function as well then

sacred lily
#

yeah so the crashes have stopped but now the mult doesn't get applied

red flower
hushed field
#

can you call juice_up on just anything?

sacred lily
#

writing this from scratch instead of messing with the walkie talkie code was probably a terrible idea

hushed field
manic rune
#

oh wonderful

#

im downloading your mod with 20kb/s 😭

#

thanks!

hushed field
sacred lily
#

yeah ive realised that now

manic rune
#

i think adding mult in context.before doesnt work very well

#

someone told me that before

red flower
sacred lily
#

my issue was really stupid actually

exotic island
#

hey lads i want to make a mod that changes the sprite of stone cards, how do i do that

sacred lily
#

i apparently forgot to capitalise something or other

hushed field
# manic rune oh wonderful

I'm not using the loc_vars on any stickers, btw, but I think you can just pass the parent to it through there

manic rune
#

im very inexperienced with stickers so i might post some dumb questions relating to them here 😭

hushed field
red flower
#

i will try that

hushed field
#

the most important thing with stickers is that every time you say sticker, you have to follow it up by saying 'sticker? I hardly know 'r!'

red flower
#

i will tag the mods

manic rune
#

tag the what

manic rune
#

im deleting all of her accounts.

#

:3

red flower
waxen mesa
#

uh

stupid question

how do i do that

manic rune
#

make it 🧃 everything :3

manic rune
hushed field
# red flower hehe funny

i now have the strong urge to make a mod in which jokers have weight, and they can unbalance the joker cardarea and fall off

waxen mesa
#

is there some kind of card constructer?

manic rune
#

now thats a good 🧃

manic rune
manic rune
# red flower

i actually think it would be cool if a boss blind has a passive thats so strong it shakes everything like an earthquake 😭

hushed field
#

vertigo boss blind that makes everything juice up depending on your mouse velocity

manic rune
#

is this how i do it (im thinking about removing the badge_color part too)

manic rune
#

im a bit dumb, how do i uhh change what text it should be showing :3

hushed field
#

I am now realizing that I'm not sure stickers have access to their parent. Probably, that would seem logical, but let me check

manic rune
#

if i can set a variable inside the sticker as the parent, and tell the sticker to check it, it should be fine

#

which should be simple as i can do that through apply

#

(i was dumb)

red flower
quartz ravine
#

this shader tweaking is too slow, I am now just installing Love2d and learning how to do this properly

manic rune
#

does this work for stickers

waxen mesa
#

am i doing this correctly? i feel kinda bad

hushed field
quartz ravine
#

You need commas after each parameter

manic rune
#

ohh yeah, it would be cool to see the entire game shake when you summon a high level monster

quartz ravine
red flower
manic rune
#

pot of greed is forbidden.

#

we dont talk about that here

quartz ravine
#

I opened a pack yesterday and actually drew a 'Ash Blossom and Joyous Spring'

waxen mesa
red flower
runic pecan
#

Is there any way to make a card's soul_pos sprite jiggle like The Soul's gem
...that is easier than this?

red flower
manic rune
waxen mesa
manic rune
#

is it card:apply_sticker("key")

#

or something

red flower
#

i love ash blossom

quartz ravine
#

My son is little and loves Eldlich and dragons, I can't bring myself to use a card like this against him

red flower
#

we have the mulcharmy now

manic rune
#

isnt it worse maxx C tho

runic pecan
waxen mesa
manic rune
quartz ravine
#

There is a shader I saw on shadertoy of bugs...

waxen mesa
red flower
#

there's none i don't think

manic rune
#

is this it

sacred lily
#

wait never mind i just realised i still need to add that other thing

manic rune
#

actually wait, probably doesnt have the "s_" at the beginning

glad osprey
#

can jokers have seals

quartz ravine
#

here is a Yugioh referencing shader I was working on. Warning for seizure folks

glad osprey
manic rune
#

...doesnt seem to show anything, hm

quartz ravine
quartz ravine
glad osprey
manic rune
#

im so confused, how do i call the key of a modded sticker, s_modprefix_key?

waxen mesa
#

create_playing_card({front = G.P_CARDS[suit..'_'..rank], center = G.P_CENTERS.c_base}, G.hand, nil, nil, {G.C.PURPLE})

#

something from the pokermon mod

manic rune
#

this doesnt seem to print anything

waxen mesa
#

exceptionally not helpful lol

red flower
quartz ravine
#

Sorry but I can't figure out how to select a joker to act on

waxen mesa
glad osprey
waxen mesa
#

dont even know what the purple is for

glad osprey
red flower
manic rune
#

😭

quartz ravine
#

One normal dev thing I would do is rely on external utility classes but I am still learning how these fragment shaders work. I want to not have this boilerPlate in everything I am working on

manic rune
#

ghhh nothings working

quartz ravine
#

boo, Love, the base game engine does not support includes yet 😩

waxen mesa
red flower
#

you need localbefore your variables

#

also you have to remove -> Card,

exotic island
#

im doing a thing

#

@lament agate

waxen mesa
#

still does burn like a charismas tree

red flower
#

remove all the commas at the end

tall wharf
#

how do i reset card ability to the base value 😭

hushed field
#

you know what, giving up on this ui thing for now, and just doing it in the text box for the time being

quartz ravine
tall wharf
#

do i yank it out of the P_CENTERS

red flower
pale temple
#

does context.full_hand reference the played cards

waxen mesa
pale temple
red flower
#

both work

manic rune
#

how

#

do

#

you apply stickers 😭

#

im so confused

simple mural
#

How to use degree in Lua?

manic rune
#

math.rad() or something

#

:3

#

im actually not sure myself, did a lot of degree-related stuff back in roblox but idk about 2d

simple mural
#

I was wrong, I was talking about the power of the number

manic rune
#

oh

red flower
#

^

manic rune
#

so like, 6^3 or something?

manic rune
#

ggghhh

red flower
manic rune
#

oh.

#

so its not card:add_sticker

#

this cat gif shall fully represent my emotions right now.

graceful plover
#

how do you start modding balatro? i couldn't find any guides

plain apex
#

this should be applying x_chips on new calc but is only applying the x_mult what did i do wrong?

if config.newcalccompat ~= false then
    Cubic = SMODS.Enhancement({
        object_type = "Enhancement",
        key = "Cubic",
        loc_txt = {
            name = "Cubic",
            text = {
                "{X:chips,C:white}X#1#{} Chips {X:mult,C:white}X#2#{} Mult",
                "Idea: BoiRowan",
            },
        },
        atlas = "Jokers",
        pos = { x = 1, y = 17 },
        config = { extra = { x_chips = 3, x_mult = 0.6 } },
        weight = 0,

        loc_vars = function(self, info_queue, card)
            return {
                vars = { 
                    card.ability.extra.x_chips, 
                    card.ability.extra.x_mult 
                }
            }
        end,

        calculate = function(self, card, context)
            if context.main_scoring and context.cardarea == G.play then
                return {
                    x_chips = card.ability.extra.x_chips,
                    x_mult = card.ability.extra.x_mult
                }
            end
        end
    })
end
manic rune
# graceful plover how do you start modding balatro? i couldn't find any guides

Balatro Modding Starter Pack, the copypasta :3

If you are new to modding, make sure that you understand the basics of LUA first before proceeding. There are a lot of good tutorials out there, so I won't link one here :)

For beginners, here are some links you should check out in order to familiarize yourself with what you are getting into:

  1. https://github.com/Steamodded/smods/wiki/Your-First-Mod
    ◩ This should give you some instructions, and it also serves as Steamodded's Documentation. Please read it :)
  2. https://www.youtube.com/watch?v=Zp-4U5TlbxY&t=7s
    ◩ A Modding Tutorial video. It is a bit outdated, but generally does well at telling you what to do.
    -# (Note: There are some parts in the video where they called cards "center". Don't do that, it's bad practice, they are cards.)
  3. https://github.com/Steamodded/examples/blob/master/Mods/EditionExamples/EditionExamples.lua
    ◩ It's good practice to check out the example mods, as well as other mods too for reference.

Once again, remember to read the Documentation. There also other links which you might find useful, such as:

  1. https://github.com/ethangreen-dev/lovely-injector?tab=readme-ov-file#patches
    ◩ Patches.
  2. https://discord.com/channels/1116389027176787968/1228149931257237664
    ◩ DebugPlus, a very useful tool for modding.

-# Sent: 7 times

quartz ravine
manic rune
red flower
#

how's the code

waxen mesa
manic rune
#

i initially thought what i needed to do was just finding the sticker object, and use :apply() onto the card, which is conceptually easy enough

where do find it

#

and i think im dumb for actually thinking thats how it works

red flower
#

SMODS.Stickers["key"]

manic rune
#

ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

#

nothing is showing though

#

hm

quartz ravine
# waxen mesa what lol

Ok, I have a fully working tarot for you. Just mod it to suit your needs. One thing I did not handle was contraining the suit. So you could just write some little function to randomly give you either Hearts or Diamonds, then change the suit

manic rune
#

MAN

#

if only autumn was still here

#

his mod had stickers :(

pale temple
#

wait i dont know how card comparisons work

how do you know if a card in hand was played

manic rune
#

isnt that just checking for when a hand is played

#

if thats the case, context.before should suffice

pale temple
#

context is already at end of round

manic rune
#

your jokers can have multiple context

#

not just one

pale temple
#

wait yeah

#

forgot about that

simple mural
manic rune
#

if my theory is correct and "card" here means the card the sticker is applied to

#

do i have to add info queue...

#

hm

pale temple
#

actually hold on

#

my brain is so fried rn nothing is coming in

manic rune
#

me too

#

ive been coding since about 1 pm

red flower
#

go to sleep

manic rune
#

stickers are wrecking my brain wide open

#

😭

manic rune
pale temple
red flower
manic rune
#

no i do

#

i NEED to get this working

#

else i will have nightmares about stickers

#

i cant be hunted by white stickers man

red flower
pale temple
#

at the end of round

red flower
#

yeah

pale temple
#

apparently it doesn't do anything

red flower
#

oh i get it, you might need to do your own context

exotic island
#

not looking bad so far

pale temple
#

something like getting the 7h

#

i think what it picks up is the ace dia

manic rune
#

how do i refer to a modded sticker again...
-# now that i think about it, its the first time i used this

red flower
pale temple
#

we have collectively fried our brains i see

red flower
pale temple
manic rune
#

and uhhh

#

G.hand.cards[1]

#

like N' said

#

im going mildly insane

green plank
#

idek if this is right AAAA

red flower
#

no

manic rune
#

nope

manic rune
#

ghghghghghghghghgh

pale temple
# red flower can i see your code
calculate = function(self, card, context)
        if context.end_of_round and context.game_over == false and not context.individual and not context.repetition then
            local leftmost = G.hand.cards[1]
            G.playing_card = (G.playing_card and G.playing_card + 1) or 1
            local copied = copy_card(G.hand.cards[#G.hand.cards], nil, nil, G.playing_card)
            copied:add_to_deck()
            G.deck.config.card_limit = G.deck.config.card_limit + 1
            table.insert(G.playing_cards, copied)
            G.hand:emplace(copied)
            copied.states.visible = nil
            G.E_MANAGER:add_event(Event({
                func = function()
                    copied:start_materialize()
                    return true
                end
            })) 
            return {
                func = function () leftmost:start_dissolve() end,
                message = "Converted"
            }
            
        end
    end
#

oh thats not it lol

red flower
pale temple
#

that for loop is a placeholder

#

lesson: dont do this at 2am

manic rune
#

...welp

#

i guess it really comes down to this after all

#

im gonna read cryptid code 😭

#

-# please dont be complex, for god sake

red flower
#

like, what does it do wrong

pale temple
#

i'll get a recording

#

hold on

quartz ravine
#

When using Debug plus, how does the watch command work? I can't figure out the path syntax

Ah, I got it, it wants front slashes in the path! It would be cool if it swapped slashes so it would work the same in windows as mac

latent portal
#

hi chat

#

so

#

i'm trying to make a suitless suit

#

what's the best way to go about this?

#

should i make a suit and then somehow assign the suitless property to it?

#

or should i use enhancements instead?

frosty dock
latent portal
#

how exactly would i do that

#

im kind of new to lua

manic rune
#

they DO use info queue, hm

#

weird

green plank
#

maybe but still doubting

manic rune
#

nevermind, that was the wrong place to look at

pale temple
#

oh hmmm start_dissolve didnt work again

distant grove
#

Good afternoon fr!

pale temple
#

oh

#

i see the issue now

latent portal
pale temple
#

for some reason

manic rune
#

this is the sticker, just how did they add the info_queue

hushed field
manic rune
#

i tried

#

this was my code

#

the apply was definitely successful

#

BUT no info queue

pale temple
hushed field
pale temple
#

i just need the timing of the destroy and the copy to be the sam

#

e

manic rune
#

oh my 🩆ing god i will go punch my fumos if thats the case

sonic cedar
#

Any of you guys know how turn a joker into another joker?
like after it triggers

manic rune
#

ADsadASKL IT IS

hushed field
#

I'd have to check, but I have the info queue turned off for the confection stickers, which hide it, and turned on for the award sticker, which doesn't hide it

manic rune
#

IT IS REALLY becaUSE OF THAT

#

OH MY GODDDDD

latent portal
sonic cedar
latent portal
tall apex
manic rune
distant grove
#

I’m going to turn into a truck now

manic rune
#

is this what you are looking for :3

tall apex
#

the joker im making is just a chain smoker smh

distant grove
#

W

#

Gotta build that smoke stack

tall apex
sonic cedar
# manic rune

holddddd- what does this do actually? does it just change the ability or does it actually change the whole guy

latent portal
manic rune
latent portal
#

it does

sonic cedar
#

here we go then

manic rune
#

fun fact: the reason why cherry knows that (probably) is because of the exact message i took a ss of 😭

distant grove
manic rune
#

you could make it give either chips or mult, 50/50

distant grove
#

Yeaaa I don’t think i should make it both

#

Maybe just chips

#

And money

#

Gotta sell those gutsđŸ”„

distant grove
#

That sounds so wrong without context

latent portal
#

PLEASE HELP ME I DONT KNOW SHIT FROM FUCK

manic rune
#

huh?

hushed field
manic rune
#

yeah it is, i just realized in the localizations file i just put it:
key = {"text"}

#

without the name =, text = thingies

#

😭

latent portal
#

so um

#

how exactly do I make a hook

manic rune
#

SDASKLDMSADLSAMKL IT WORKSSSSSSSSSSS

hushed field
#

a hook is done by storing the original function in a variable, first

manic rune
# latent portal how exactly do I make a hook
Klei Entertainment Forums

In LUA, it is a very important concept to understand that everything is a variable and all variables may be edited in runtime. This includes functions. With modding other peoples' LUA files, like Klei's basegame code, you may find yourself wanting to run your code before or after the original fun...

hushed field
#

that's probably better as a tutorial, haha

manic rune
#

can i remove this somehow?

simple mural
#

How can i change the chips?

exotic island
#

rate the stone card sprite

simple mural
#

From the joker

manic rune
#

đŸ”„

manic rune
simple mural
manic rune
#

:3 uhh its related to G.GAME something

simple mural
#

I need to multiply the number of chips counted by the number

manic rune
#

oh, so x_chips

teal herald
#

what code destroys a joker?

manic rune
#

return{
x_chips = number,
}

tall wharf
latent portal
#

i want to understand how to make SMODS.has_no_suit look for my suit and recognize it

manic rune
#

hi aiko

manic rune
simple mural
#

Can an edition completely change the behavior of a joker, card, or anything else?

manic rune
#

nope

#

i mean, yes, but you will have to do a lot of work for that

simple mural
#

Oke

safe cobalt
#

i feel like im committing a crime haha

#

im not a fan of lua syntax so im compiling typescript to lua for a mod

manic rune
#

oh, thats really cool

safe cobalt
#

blursed

manic rune
#

thats really nice

teal herald
manic rune
#

but the bad thing about coding in an entirely different language compared to others is that asking for help can be significantly harder lol

safe cobalt
#

true true

manic rune
#

but thats super cool, i didnt know you can do that :D

safe cobalt
#

me neither until now hahaha

distant grove
#

I’m going to eat a gros michel

manic rune
#

dont peak

#

1/6 it will make you combust

distant grove
#

Nuh uh

#

1/10000 chance I become candevish

granite turret
distant grove
#

And than I become Roland

#

It’s called metamorphosis trust!

tall wharf
#

aAAAAAAAAAAAAAAA

distant grove
#

Bro is imploding

latent portal
#

okay so i got this.

SMODS.has_no_suit = function(card)
    
end```
#

and now im lost

#

what now

manic rune
#

im as insane as you if anything :3

simple mural
distant grove
#

Is there a way to change the background of balatro?

#

Or nah

latent portal
manic rune
manic rune
#

you can try reading the og function code and see if you can make sense out of it

manic rune
latent portal
#

where could that be

manic rune
#

just return x_chips

tall wharf
#

i think has_no_suit automatically checks if the card has NO suit at all

latent portal
manic rune
#

x_chips = card.ability.extra.Xchips

#

suitless suit

#

doesnt that make it then?

latent portal
#

no it makes it an undershirt

hushed field
manic rune
#

(it will be the LAST question i ask about stickers, i promise)

hushed field
manic rune
#

no

#

uhh

#

the entire thingy

tall wharf
#

😡

manic rune
#

did you give up on the shader aiko

hushed field
#

let me check, i'm not sure which badge funcs stickers have

simple mural
manic rune
#

what version is your smods

simple mural
#

1421a

manic rune
#

is it the latest ver

#

try updating

#

:3

manic rune
#

its not the latest version

#

omg firefly

tall wharf
#

❀

distant grove
#

Mmmm gros michel