#💻・modding-dev

1 messages · Page 146 of 1

glass scaffold
#

On Windows, go in your smods-main and search for ModdedVanilla.lua

It should pop it up.

runic pecan
#

Should I change it to "when defeat a boss blind", "after each played hand", "after each discard", or keep it as it is?

limber oriole
runic pecan
frosty dock
#

Mult refers to the score, that's confusing

#

I'd go for after each played hand i think

solar eagle
#

how do i get the current ante number?

frosty dock
#

G.GAME.round_resets.ante

solar eagle
#

ty!

crystal willow
#

Hey! How would I go about checking if a hand has a specific rank in a hand, give xmult from the joker itself? May be a silly question lol

worthy stirrup
#

Would i use this to do it?

jokertoselect:calculate_joker(context)
solar eagle
#

an array of card objects

#

to get the rank/ID, G.hand.highlighted[i]:get_id()
where numbered are as expected, and then jacks are 11, queens are 12, kings are 13, aces are 14
above line assumes you are in a for loop, example
for i = 1, #G.hand.highlighted do
which will loop over the length of the array of all highlighted cards

limber oriole
#

i dont see usage of psuedorandom_element in the example jokers mod either

#

nevermind

solar eagle
#

is there a way to force a specific boss blind to appear?

crystal willow
#

Retcon + golden ticket (I have no idea, probably)

cerulean rose
solar eagle
#

yea that rerolls

#

i want to pick a specific one

maiden phoenix
#

Try trough the blind collection maybe?

#

If you have debugplus ofc

solar eagle
#

yea i do

cerulean rose
#

works well with modded ranks

solar eagle
#

ooh ok

cerulean rose
#

open the blinds in the collection then press 3 on the one you want

solar eagle
#

yea i got it

#

will adjust to base.value

runic pecan
#

Which variable does Oops all 6s access to multiply the probabilities? I only remotely remember its name includes probabilities_mod but not entirely sure.

solar eagle
#

G.GAME.probabilities.normal i believe

limber oriole
#

aight lets see if my first-

solar eagle
#

yeag

cerulean rose
solar eagle
#

with a boss blind, i assume this function flags cards as debuffed?
recalc_debuff(self, card, from_blind) -> bool
but how would i mark a card as being debuffed

#

is there a property?

maiden phoenix
#

card.debuff = true

solar eagle
#

got it ty

#

is there an easy way to check if a card has been flipped?

runic pecan
#

Is 1 + (6*pseudorandom('Hakos Baelz'))//1 the correct way to roll a D6?

solar eagle
#

do you want it to always be in 1 in 6?

#

or should oops all 6's be able to modify

runic pecan
solar eagle
#

should work i think

long sun
#

a cool joker i made! :D

solar eagle
#

inktype joker

long sun
#

charcoal, actually :D

solar eagle
#

nicee

scarlet trellis
#

i think it looks great :3

long sun
#

thanks!!

scarlet trellis
#

you have a lot of talent and i hope your mod goes really well :D

cerulean rose
runic pecan
#

Nice

cerulean rose
solar eagle
#

SMODS.set_debuff(card)?

tight thistle
#

whats the context for a joker being removed from the joker slots? i may be overlooking it somewhere but i cant seem to find it in the wiki

limber oriole
#

how do I get the played hand? not the poker hand string that's being played, i want the cards that's being played

runic pecan
#

Does lua have a moddiv operator,
or do I need to use math.floor(a/b) instead?

zealous glen
#

do you have an animation?

zealous glen
runic pecan
zealous glen
solemn crypt
#
      if context.individual and context.cardarea == G.play and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
        -- Ask someone to explain how to use the event manager in detail here.
        G.E_MANAGER:add_event(Event({
          trigger = 'after',
                    delay = 0.0,
          func = function()
            if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
              -- pseudorandom_element is a vanilla function that chooses a single random value from a table of values, which in this case, is your consumables.

              local card = create_card('Tarot',G.consumeables, nil, nil, nil, nil, nil, 'car')

              G.consumeables:emplace(card)

              G.GAME.consumeable_buffer = 0
            end
            return true
          end
        }))
        -- Ask someone who knows eval_status_text better to elaborate on this.
        card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, { message = localize('k_plus_tarot'), colour = G.C.PURPLE })
        end
      end``` so i have this (ignore comments they r from example joker Steammodded) and i basically want every card triggered to give me a tarot card (i am gona change it later so every 31st card gives a tarot but tryna figure this out first) and basically i have the part with the tarots sorted i think but the message is saying it when there is 1 tarot slot left and i play 5 cards it says the message ffive times is there a way to only play msg if it goes through the other stages?
zealous glen
solemn crypt
#

i want every card played to give me a tarot and i think ive done it but the "+1 tarot" text is off is there a way to like only do it if the event works? Like only if a tarot is made or something

#

because the if for the Event Manager is working different to the 1 inside

candid epoch
#

wdym by "+1 tarot text is off"?

#

can you show the code?

solemn crypt
#

srry i should of said it better

zealous glen
solemn crypt
#

oh really

#

let me try getting rid of it

zealous glen
#

So I think you can either have the Event just create the card or move it to the return

zealous glen
#

but Idk if it's documented yet

#

maybe ask in the main Steamodded thread

solemn crypt
candid epoch
#

you should but the text status near line of code of creating that tarrot instead at the end

solemn crypt
zealous glen
solemn crypt
#

for example

zealous glen
#

usually it would be card = card

#

but yes

#

maybe also func = … as I said

solemn crypt
#

and do i put it with the return true or replace it

solemn crypt
wintry solar
#

message_card = card

solemn crypt
wintry solar
#

Funcs aren’t automatically timed (probably an oversight I’ll look later if it’s feasible to do) so you’re fine to use your event still

solemn crypt
solemn crypt
wintry solar
#

You still need to use an event in the func = part rather than the function you put in being thrown in an event by the calculation handling

solemn crypt
weary jungle
#

how would i replace all consumables with my own consumable type for a deck

pallid vapor
#

Hi, what are some resources for me to start learning to make mods? I'm currently more interested in making new decks

tight thistle
#

hello! apologies for interrupting, how do i make it so that a joker has a sound for being added AND removed from the deck? i believe i know about add_to_deck and remove_from_deck but am unsure how to use them

wild patrol
#

add_to_deck from what can tell is when it's activated it adds the ability

#

And remove is the code to remove it

#

When it's removed

crisp coral
tight thistle
#

thank you! i did not expect the way its used

#

i want to make it so that each LCB Sinner joker has a greeting for being obtained (and additionally for don quixote to scream when removed from the deck)

crisp coral
wooden nexus
#

well this is kinda working

#

ok this is DEFINITELY not going the way it should

worthy stirrup
#

how does blueprint shows what modifier it copied.

crisp coral
#

?

#

wdym

wooden nexus
#

Suddenly more stuff

worthy stirrup
#

like how it gives the same message as the card it copied

crisp coral
#

it uses the same returns as the original card

#

just with the display target being the blueprint card

weary jungle
#

where does the shop get generated

leaden wren
#

pretty happy with my card art so far

crisp coral
worthy stirrup
#

Just to be sure, this is the part where the message is shown and where its calculated, yes?

 if self.ability.name == "Blueprint" then
            local other_joker = nil
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == self then other_joker = G.jokers.cards[i+1] end
            end
            if other_joker and other_joker ~= self then
                context.blueprint = (context.blueprint and (context.blueprint + 1)) or 1
                context.blueprint_card = context.blueprint_card or self
                if context.blueprint > #G.jokers.cards + 1 then return end
                local other_joker_ret = other_joker:calculate_joker(context)
                if other_joker_ret then 
                    other_joker_ret.card = context.blueprint_card or self
                    other_joker_ret.colour = G.C.BLUE
                    return other_joker_ret
                end
            end
        end
crisp coral
#

yes

worthy stirrup
#

thank you, just wanted to be sure

obsidian nexus
#

I was wondering, is it possible to "un-stone" a card ?

worthy stirrup
#

would this work?

    end
    local jokertoselect = #jokers > 0 and pseudorandom_element(jokers, pseudoseed('crypto')) or nil
    print(jokertoselect.ability.name)
    local other_joker_ret = other_joker:calculate_joker(context)
    if other_joker_ret then 
      other_joker_ret.card = context.blueprint_card or self
      other_joker_ret.colour = G.C.BLUE
      return other_joker_ret
    end
    end
  end 
    return {
    }
  end
}
wild patrol
#

I need to try again with custom Yu-Gi-Oh cards

#

But still haven't figured out how to get the use button to work

leaden wren
worthy stirrup
#

im getting a crash log

tight thistle
worthy stirrup
#

okay, it no longer crashes but it doesnt copy the card

weary jungle
#

how do i allow negatives to be taken when there is no slots left?

worthy stirrup
#

im trying to get it to copy a random cards effects

#

a nudge in a right direction is all i need most likely

wooden nexus
#

dang it, it's still adding when I told it not to

#

and i don't even see chips on there

worthy stirrup
tight thistle
#

why is the game asking for .ogg files? and why is it trying to open a different folder than other mods use?

#

even if i create donmanager.ogg in resources/sounds, the game still crashes as if theres Nothing There

leaden wren
#

e.g. mine is myo so i call myo_(soundname)

#

not (soundname)

tight thistle
#

oh, okay!

leaden wren
#

otherwise you're calling basegame sound effects

tight thistle
#

that did it, thank you!

orchid thunder
#

How can I edit a jokers config values outside of the joker

elder vapor
#

card.ability.extra?

orchid thunder
#

Done

elder vapor
#

yeah it should

orchid thunder
#

Ok

orchid thunder
elder vapor
#

where are you accessing the card

orchid thunder
#

In an update function

#

So that it can scale based on time

#

I also need to be able to detect any input

tight thistle
#

ruh roh!

orchid thunder
#

OK wtf

#

Someone get the admins

limpid flint
#

<@&1133519078540185692>

orchid thunder
#

Thanks mods

orchid thunder
worthy stirrup
#

How do i make it do the cards ablity?

violet void
#

Rambleyy

worthy stirrup
#

yea... and i still need help

weary jungle
#

ok somethings wrong

worthy stirrup
#

hm

wild patrol
zenith ridge
leaden wren
#

i'm so confused

worthy stirrup
#

im still trying to find out how the blueprint is able to copy the other jokers

weary jungle
limber oriole
#

I'm assuming it's not possible to have the boss background be the blue-red swirl when making a custom finisher boss blind?

weary jungle
#

is it in the room with us right now...

wild patrol
weary jungle
#

its gonna be funny

wild patrol
#

On the cash out screen menu

orchid thunder
#

I'm stillstuck not knowing how to check ANY key input

zealous glen
weary jungle
#

oh event manager geniuses.... i am so lost....

zealous glen
#

But really Bunco has colorful boss blind backgrounds

worthy stirrup
#

i am so confused

limber oriole
zealous glen
#

For example:

zealous glen
ionic verge
#

has to be doing that all the time, and also sets context.blueprint to true, so things that cant be copied arent

weary jungle
ionic verge
worthy stirrup
limber oriole
worthy stirrup
limber oriole
#

but yea i was just askin if someone here has made a finisher blind where the swirl background isn't the same color as the accent color, like with vanilla finishers

zealous glen
limber oriole
#

My apologies

weary jungle
zealous glen
#

I see something

primal robin
#

Why Steamodded loads faster than lovely patches? lumaangry

ionic verge
# worthy stirrup sure, make sure to ping me when you post it if you dont mind

theres a lot of extra stuff, because this joker selects a random joker to copy every round, but the important part is assigning other_joker (or another local variable of your choice) to a specific joker in your hand and then putting
context.blueprint = true (so it doesnt copy incompatible stuff)
and other_joker:calculate_joker(context)

coral cobalt
#

maybe it wasnt the update maybe one of my mods decided to cook me

worthy stirrup
ionic verge
#

yeah sure
before i do that though how tf do i put code in that box that everyone does

#

'''this?'''

#

no

zealous glen
zealous glen
#

also

coral cobalt
#

nah i got it

zealous glen
#

```lua
this
```

coral cobalt
#

its either bunco or extra credit messing me stuff up rn

ionic verge
#
calculate = function(self,card,context)
    if context.setting_blind then
        local jokerList = {}
        local j = 0
        for i,v in ipairs(G.jokers.cards) do
            if v.ability.name ~= 'Blueprint' and v.ability.name ~= 'Brainstorm' and v.ability.name ~= 'Mimic Joker' and v.config.center.blueprint_compat then
                jokerList[#jokerList + 1] = v
            end
        end
        card.ability.extra.selectedJoker = pseudorandom_element(jokerList,pseudoseed('fuckthispieceofshit'))
    end
    local other_joker = card.ability.extra.selectedJoker
    if other_joker ~= nil then
        context.blueprint = (context.blueprint and (context.blueprint + 1)) or 1
        local copy_return = other_joker:calculate_joker(context)
        if copy_return then
            return other_joker:calculate_joker(context)
        end
    end
end
#

here ya go @worthy stirrup

zealous glen
#

please do lua

worthy stirrup
#

thank you so much

ionic verge
#

cool

#

finally i know how tf to do that

weary jungle
#

i am so bad at events

#

do NOT let me do events

worthy stirrup
coral cobalt
#

quick question, anyone here have the bunco mod and are you having issues with it?

ionic verge
#

yeah sure

#

just change the context

#

the setting_blind context

worthy stirrup
#

just wanted to get permission before i started changing

weary jungle
#

ok that didnt work

#

i cant stop losing

ionic verge
#

i made the mod to help get artists' jokers into the game, feels kinda fitting to also be helping a modder to get their joker in

ionic verge
worthy stirrup
#

I did add that

#

i added a comment

ionic verge
#

cool

worthy stirrup
#

it does seem to crash if you exit to the menu and go back to the game

ionic verge
#

ah

#

great

ionic verge
#

tested both when it could copy something and when it could not

#

actually it just crashed randomly before my eyes so

#

seems to have to do something with the loc_vars

#

i never got a proper answer for this problem
that being that a bit of text stays behind when i upgrade last played hand at end of round

#

any thoughts?

dry hamlet
#

recently started modding balatro, I'm loving the Saturn mod, however the main branch has all the cool features but no consumable stacking. I know the mod is still a WIP but for the meantime I made a fork that merges the consumable stacking from the alpha-0.2.1-A tag into the main branch, here's the repo if anyone else is interested

wintry solar
ionic verge
#

noted
ill have to work on it later, but thanks for the idea

#

the newest jokers have been implemented into the sprite sheet so i dont forget who to add

#

anyways i gtg cyall

dry hamlet
compact olive
#

hey guys, how do i set multiple card editions simultaniously?

local edition = {polychrome = true}
local edition = {negative = true}
_card:set_edition(edition, true)

this seems to just do the negative part since the top line is overwritten, and i thought this being an object i could merge them but that doesnt work in lua, im a compleet newb here and i just want to add this one thing since i want to try something out

wintry solar
dry hamlet
royal ridge
coral cobalt
dry hamlet
#

are you using my saturn fork?

compact olive
coral cobalt
#

no im just trying to absorb information to see if i can fix my game lol

dry hamlet
#

ah i feel

candid epoch
#

why its so hard to think about a mod idea

coral cobalt
#

it stopped crashing on launch but now crashes when i play a hanf

#

hand*

#

and idk what any of this means lol

dry hamlet
# coral cobalt

well it is happening inside Ortalab, you can see that on the second line from the top

coral cobalt
#

so its just ortlab? cause im seeing so much other stuff too

compact olive
#

a mod that lets you add historical politcians

coral cobalt
#

yup deleting ortlab fixed it

#

weird i wonder why

weary jungle
#

is my patch bad??

candid epoch
weary jungle
#

it is not patching

compact olive
#

damn

weary jungle
candid epoch
weary jungle
#

think of the dumbest, most useless mod, and do that

compact olive
#

xD

#

is there a way to have a joker create or reference a specific other joker?

#

like lets say mewtwo also creating a mew? like do jokers have some sort of id or something

dry hamlet
coral cobalt
#

@dry hamlet are you able to help me find out why its crashing my game

weary jungle
#

i fixed it

coral cobalt
#

if not its all good

#

ill just play without that mod

#

still the same error i believe

#

i just dont know what any of it means

dry hamlet
#

i just don't know what mod_chips/mod_chips_ref is doing, and why it would be getting called with a table instead of a number

coral cobalt
#

i see

#

yeah it does crash only as soon as i play a hand

#

weird...

#

is the creator for the ortalab mod active in the community or nah im sure theyd be able to help if willing

dry hamlet
#

it's possible one of the other mods you have has a mod_chips function that expects a table instead of a number

coral cobalt
#

i can take a look

#

how would i go about finding that

coarse cape
#

Hello! Sorry for bursting in; i've been trying to fix my modpack for the last few days now

#

I've reached a point where I can get into the game itself, but it crashes once I play any cards.

#

Here's the ingame crash log

coral cobalt
#

sounds like the same issue im having lol

dry hamlet
coarse cape
#

and checking the location stated at the top of the log, this is what's there

            local deck_effect = G.GAME.selected_back:trigger_effect({full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_joker = _card.ability.set == 'Joker' and _card or false, other_consumeable = _card.ability.set ~= 'Joker' and _card or false})
            if deck_effect then SMODS.calculate_effect(deck_effect, G.deck.cards[1] or G.deck) end
        end```
#

and this is my mod folder

coral cobalt
dry hamlet
coral cobalt
#

yer

#

im checking out the last log

compact olive
#

sorry for the re ask
is there a way to have a joker create or reference a specific other joker?
like lets say mewtwo also creating a mew? like do jokers have some sort of id or something

coral cobalt
#

this is what im looking at rn

dry hamlet
#

you'll want to look into the lua files in the dump folder and look for any calls to dump_chips, that's where it'd be i'd bet

candid epoch
#

guys question, is it possible to make a mod with 16 potions consumable but at start of the run it would shuffle their effects and only reveal them once that potion is used

coral cobalt
dry hamlet
#

you could

#

or i can give you a little powershell script that'll search through everything in the folder and tell you where it finds it

#

of course there's the rule of never run code someone on the internet gives you and this is very basic, but if you're not comfy with that i totally respect it

coarse cape
#

I do see this in my lovely logs

coral cobalt
#

theres nothing referencingdump_chips

#

which confuses me even more tbh

dry hamlet
#

even the ones in dump/functions?

coral cobalt
#

i would have to assume ortalab just simply conflicts with how another mod calculates chips

coral cobalt
dry hamlet
#

strange

#

yeah that's most likely what it is

weary jungle
#

wow i dont know how events work

coral cobalt
#

super unfortunate

#

i dont have the skills to fix this myself so unfortunately it just looks like i cant use the mod

#

ty for the help opal

compact olive
#

is this the correct way to have a joker make another joker?

local mew_joker = SMODS.create_card(G.cards['Mew'], nil, nil, nil, nil, nil, nil)
          mew_joker.config.center.key = G.jokers.cards[1].config.center.key```
candid epoch
dry hamlet
#

okay i think there's just something wrong with steamodded as a whole because it crashes under a few circumstances with no mods enabled lmao

#

should i not be using 1.0.0-alpha

coral cobalt
#

does the steamodded have an update?

#

nope

#

weird

dry hamlet
#

no, but apparently the latest version is incompatible with some stuff so i may have not read the wiki enough

coral cobalt
#

so the update did effect stuff odd

dry hamlet
#

yeah steamodded main branch crashes when i play a hand, and text is replaced with nil and ERROR all over the place, so it's gotta be steamodded

coral cobalt
#

yeah cause steamodded hasnt been updated in like 9 months

coral cobalt
#

version.lua was changed 4 hours ago

dry hamlet
#

why can't people just use lovely it's so much simpler 😭

sturdy compass
#

So what I'm hearing is don't pull from the Steamodded repo rn

coral cobalt
#

thats what its seeming like anyways

sturdy compass
#

rip lmao

#

oh well

dry hamlet
#

wiki says to try the old-calc tag, i can play a hand now at least

compact olive
#

does anyone know what im missing here? is the joker not found or what? im new to this modding stuff and just trying to figure out what does what

dry hamlet
#

wonder if the stacked consumable crashing the game has something to do with the fact that i started this run before installing steamodded

sturdy compass
sturdy compass
compact olive
#

my bad

dry hamlet
compact olive
#

ah i set a center var that wasnt needed i guess

#
local mew_joker = SMODS.create_card({
            set = 'Joker',
            key = 'mew',
            legendary = true,
            area = G.jokers,
            no_edition = false,
          })``` trying to do this
#

but its just not working out for me rn

sturdy compass
compact olive
dry hamlet
#

might be easier to delay it so it doesn't proc until after the round, but earlier would be a bit more intuitive so you get the reward right then

sturdy compass
#

the key would be "j_[mod prefix]_mew"

compact olive
#

hmm, how would i find this? j_[mod prefix]_mew
is there some sort of rule for this?

coral cobalt
dry hamlet
#

luigishrug about to find out

coral cobalt
#

i can no longer test someone else in my family is playing balatro now 💀

#

i got pranked

#

its up to you now opal 🫡

sturdy compass
dry hamlet
coral cobalt
#

ooooh something else crashed it i see

#

didnt scroll up enough

#

so multiple things are broken with steam modded it sounds like

#

unfortunate

dry hamlet
#

yeah, it crashing from playing a hand was from using main branch steamodded probably, and it crashing from hovering a stacked consumabe form my saturn fork was probably just a quirk with the fact that the run started before steamodded was installed

#

all seems fine now

coral cobalt
#

ok so is it possible for me to fix ortalab mod then or is that maybe a diff issue in a sense

dry hamlet
#

maybe? it's probably something unrelated to steamodded i'm willing to bet

coral cobalt
#

well it was crashing when i played a hand

dry hamlet
coral cobalt
#

i shall try

compact olive
#

@sturdy compass just one question sorry, but is there an id definition somewhere? i cant seem to find it using grep. neither do i see create_card used anywhere. im mostly learnign here

coral cobalt
#

do i just put this in my mods folder or my balatro folder itself its been a while since i downloaded steamodded

plain apex
#

is there a reason this would cause a crash? its working fine for me but crashing someone else?

SMODS.Enhancement({
    loc_txt = {
        name = 'Brick',
        text = {
            '{X:mult,C:white}X#1#{} Mult {C:chips}#2#{} Chips',
            '{C:green}#4# in #3#{} chance to',
            'summon a {C:red}Gnome',
        },
    },
    key = "Brick",
    atlas = "Jokers",
    pos = {x = 4, y = 6},
    discovered = false,
    no_rank = false,
    no_suit = false,
    replace_base_card = false,
    always_scores = false,
    config = {
        extra = {
            base_x = 1.3,
            chips = 40,
            odds = 100
        },
    },
    loc_vars = function(self, info_queue, card)
        local card_ability = card and card.ability or self.config
        return {
            vars = {
                card_ability.extra.base_x,           -- Multiplier
                card_ability.extra.chips,           -- Chip bonus
                card_ability.extra.odds,            -- Odds for gnome 
                G.GAME.probabilities.normal         -- Base probability
            }
        }
    end,
    calculate = function(self, card, context, effect)
        if context.cardarea == G.play and not context.repetition then
            -- Apply the enhancement effects
            effect.x_mult = self.config.extra.base_x
            effect.chips = self.config.extra.chips

            if pseudorandom('Gnome') < G.GAME.probabilities.normal / card.ability.extra.odds then
                G.E_MANAGER:add_event(Event({
                    func = function() 
                        local c = create_card(
                            nil, G.consumeables, nil, nil, nil, nil, 'c_fn_Gnome', 'sup'
                        )
                        c:add_to_deck()
                        G.consumeables:emplace(c)
                        play_sound("fn_gnome")
                        return true
                    end
                }))
            end
        end
    end,
})
sturdy compass
compact olive
frosty dock
# plain apex

yeah this person is using a newer version of steamodded but the enhancements is made with old calc

compact olive
#

im used to id's being created by a function or atleast a builtin mechanism. but im trying to retrace

sturdy compass
compact olive
#

this is just for me locally ofcourse

coral cobalt
#

@dry hamlet should i delete the old steamodded folder

dry hamlet
#

yeah replace the one you have with the new one

frosty dock
#

yeah make sure you don't have duplicates

dry hamlet
#

i will say the nice thing about steamodded is i can just reload the mod without restarting the whole game, little quicker

sturdy compass
coral cobalt
#

nope still crashes with ortlab

compact olive
sturdy compass
#

The prefix is set by the mod author and is meant to be a short "code" of sorts to distinguish what objects come from where

compact olive
#

very helpfull man thank you

sturdy compass
#

👍

compact olive
#

rather then just giving me the answer i actually learned something

#

❤️

weary jungle
#

how do i make a return wait

#

or how do i make a return a event

versed swan
#

How do I make a card do a little shake (like when you sell it or it's telegraphing that its effect can occur, like DNA or Trading Card)

rough furnace
#

card:juice_up()

obsidian nexus
#

hello, how do i play a custom sound ? i tried to mimic other mods but it doesn't work :/

compact olive
#

does anyone know why in this code "left most" is index 1 and not 0?

local leftmost = G.jokers.cards[1]```
#

is this a design choice or whatsgoing on with lua

frosty dock
sturdy compass
versed swan
compact olive
sturdy compass
#

We love coding languages that break standards of virtually every other coding language

dry hamlet
sturdy compass
frosty dock
#

just wait til you find out about debugplus watch commands

#

-# i don't use them myself because they're useless for what i do

rough furnace
sturdy compass
#

lmfaoooooo

rough furnace
violet void
#

I always wondered what that did

frosty dock
violet void
#

and I still dont understand it 😅

frosty dock
#

can work nicely for testing util functions though

rough furnace
#

also I imagine steamodded doesn't like being reloaded when the game is running that much

frosty dock
#

besides if I have something like utils or overrides I can just re-run the file manually, a lot of the other stuff happens at load time

rough furnace
#

I have a little chunk of code to detect if being watched and then I can do some printing if I'm watching one of my core files

#

was super useful for working on the config system

#

But yeah like if I modify the console I pretty much need to reboot the game

sturdy compass
#

Is anyone active rn good with game states?

#

I'll take that as a no and will wait on it lmao

wintry solar
#

What do you mean?

sturdy compass
#

I'm having an issue with one of my Joker's mechanics that's causing a conflicting game state. Here's what I'm trying to fix

rough furnace
#

generally my advice is just be extremly careful about which state oyur in when changing states

#

How are you spawning the tag?

tepid crow
#

(even Thunk messes up his gamestates sometimes and softlocks the game)

sturdy compass
rough furnace
#

I wouldn't apply to run

sturdy compass
#

Wouldn't that just delay application of the tag then?

rough furnace
#

yes

#

the other solution would be somehow delaying the state change that's already been started which sounds like a nightmare

#

Also the game doesn't work with anything messing with your hand in the middle of a round

sturdy compass
#

hmm I see

rough furnace
#

iirc cryptid made a card that lets you go to a shop mid round and its soltuin for this was to prevent you from having booster packs to open

wintry solar
#

I had some aimilar issues like that

hollow locust
#

Hey, chat
How does one code new suits?

sturdy compass
#

Sucks tho, delay application it is I guess. I really wanted it to apply immediately but if it's that involved I can pass on it

frosty dock
sturdy compass
#

lmfao

gaunt thistle
#

who made that artwork

frosty dock
#

some guy named ethan, idk if you know him

dry hamlet
#

anyone know why the shadows here are inconsistent in terms of being behind or in front of the button below? in one case the second button is in front of the shadow on the first pic, and the second button is behind the shadow on the second pic

gaunt thistle
frosty dock
hollow locust
#

sobs

tepid crow
#

random ethans in chat catching strays

frosty dock
#

wtf

gaunt thistle
blissful dagger
#

where can I find the code for the cards such as the duo, tribe, and familty? I can't seem to find it in card.lua

sturdy compass
gaunt thistle
#

if I see an ethan I automatically go in for a neck jab

#

also idk why I've been waking up covered in bruises

tepid crow
rough furnace
#

yeah I sure hope noone named ethan works on a project to help modify the lua code of löve games at runtime

sturdy compass
#

surely not

tepid crow
#

oh damnit I messed up the quote

hollow locust
#

DAMN!!!!!!!!!!!!!!!!!!!

sturdy compass
#

That's WILD

frosty dock
#

imagine context.cardarea == G.jokers and not context.before and not context.after

sturdy compass
minor gyro
#

Y'all prob recieve this question allot, but is there any website talking about modding balatro?

sturdy compass
#

SMODS wiki is probs your best bet

minor gyro
#

the github?

sturdy compass
#

yeah

frosty dock
minor gyro
#

danke!

sturdy compass
#

oh happy day lovely 0.7.1 released Prayge

#

I can finally update my mod lol

blissful dagger
compact olive
#

can 1 mod create a card of another mod? or is that too deep

frosty dock
#

if you first check if that mod is loaded, sure

compact olive
wintry solar
#

I love how the new logo comes up on all the links now

frosty dock
#

lmao

compact olive
#

what if its like triboulet

frosty dock
#

what do you want to do with triboulet

compact olive
#

well by experimenting i came to the idea of having mewtwo create a triboulet card

#

not rlly for a purpose

#

could be any joker of the base set

frosty dock
#

SMODS.add_card{key='j_triboulet'}

compact olive
#

ohhh i see

#

so its basically the same, but no mod prefix since its no mod

#

understood

compact olive
candid epoch
#

it says you have 5 jokers

compact olive
#

oh lol

candid epoch
#

meaning that theres an invisible one

compact olive
#

someone is hiding

frosty dock
#

there's a ghost card

compact olive
#

must be the invisible joker

sturdy compass
compact olive
frosty dock
#

sometimes

rough furnace
#

I don't think I've seen a ghost joker before

sturdy compass
#

It can be if you skill issued

rough furnace
#

but it's not impossibel

candid epoch
#

most of time when makeing a joker
but not actually defining it

#

lets say that it has texture assigned that is just blank

sturdy compass
#

I've accidentally made a ghost joker by doing a poor job of removing cards before lol

compact olive
#

let the hate begin

local mew_joker = SMODS.add_card{key='j_triboulet'}
          local mew_edition = {negative = true}
          mew_joker:set_edition(mew_edition, true)
          mew_joker:add_to_deck()
          G.jokers:emplace(mew_joker)
          card_eval_status_text(mew_joker, 'extra', nil, nil, nil, {message = localize('k_plus_joker'), colour = G.C.BLUE})```
sturdy compass
#

Does a description box pop up when you mouse over the blank space?

wintry solar
#

Eww jank ass edition code

sturdy compass
#

I didn't want to mention it

compact olive
#

shush shush i knoww

wintry solar
#

set_edition(‘e_negative’, true)

compact olive
#

im just replacing what i had

compact olive
frosty dock
#

actually you can just

compact olive
#

yeah i feel like this is still too much

frosty dock
#
SMODS.add_card{key='j_triboulet',edition='e_negative'}
compact olive
#

arent there any better args to be set in 1 line

frosty dock
#

no need to add_to_deck or emplace when using add_card btw

compact olive
frosty dock
#

it already does it for you, that's why you're getting ghost cards

wintry solar
#

I forget add card has an edition tag

frosty dock
#

SMODS.add_card is just SMODS.create_card but with add_to_deck and emplace added

#

i need to remember there's like 3 different things called create_card

dry hamlet
#

is there any way to get the left button on the stacked moons to show over the jokers instead of behind?

#

i'm thinking no, and that it's just due to the order the rendering takes place, but maybe i'm wrong

pulsar flower
#

did something recently change in smods regarding joker calculation? all my jokers are broken, i think context.other_card is returning nil now?

frosty dock
#

yes something did change

maiden phoenix
#

Thoughts on this legendary joker? Kinda tried to do an alt Perkeo but idk if it's better or worst

thin surge
#

Certainly worse than Perkeo, but still interesting. Since it's not a negative copy, you generally lose 2 of your consumable slots (1 for the Fool itself, then 1 for whichever item you're copying). Also, being unable to copy Spectral cards hurts it (e.g. no Immolate/Seal/Cryptid spam). If it added 1 consumable slot along with this effect, I think it'd be more legendary-worthy

tight thistle
#

is there a guide somewhere to make jokers have text boxes for certain effects? i know it has to do with add_speech_bubble and say_stuff but im unsure how to make them actually work

maiden phoenix
maiden phoenix
tight thistle
#

no, i mean literal text boxes, like when Jimbo says something to you

maiden phoenix
#

Ooooh

tight thistle
#

some mods do that, but im unsure how they make it work

maiden phoenix
#

I think Bunco's dev did something similar

#

But yea if you know the mod and joker you can check its code see which function it uses

#

Or even the base code with the tutorial sequence or game over

tight thistle
#

yeah ive been looking at card_character and modded jokers like roche that use text boxes

dry hamlet
#

i may just write my own card stacking mod, with incantation and saturn as reference it shouldn't be too hard, i know visually i want a combination of the two

thin surge
# maiden phoenix Oh yea in some way this doesn't copy Spectral cards, what if both The Fool cards...

Negative Fool would be strong, but that just starts to become "Perkeo but Slightly Different." if you can swing it, it might be worth having the effect be "add a copy of the last consumable you used" so it can also add Spectral cards to your consumable slot. Would be a unique effect while still being perkeo-like

This is my alt account, yeah. My main account is one that I've had forever and also my IRL family is friended on there, so I use this for a bunch of other random stuff I'm interested in

maiden phoenix
#

Mh, fair, trying to do something close to Perkeo is kinda hard to balance, I'll scrap it for now.

Oh I thought you were someone from this server already, I was just curious.

weary jungle
#

i love patches

#

(lie)

#

How do i stop this from running untill all my events are done

pulsar flower
wintry solar
weary jungle
pulsar flower
#

i thought i was already in better calc is the thing

ionic verge
#

how would i go about upgrading a specifc hand?

#

instead of the last used one

weary jungle
#

level_up_hand iirc

ionic verge
#

and then what are the names/keys formatted like?

#

like how do i input said hand to that function

pulsar flower
#

so this

#

putting it outside the event works, so does making a local other_card = context.other_card before the return statement

weary jungle
frosty dock
weary jungle
#

why is the negative fix from cryptid not just preinstalled on smods

#

it would be so awesome

#

how do i make an event return something?

frosty dock
#

what negative fix

frosty dock
weary jungle
weary jungle
frosty dock
#

0 slots as in 0 slots left?

weary jungle
#

yea

#

like i have a deck with 0 consumable slots, but you cant take any negatives

#

its time to destroy a selected part of card.lua

frosty dock
#

iirc it just doesn't work if you're above full?

autumn geode
#

how do i make my joker juice up per trigger rather than just once same way as it would be in game normally for base jokers like lusty?

minor gyro
weary jungle
solar eagle
autumn geode
solar eagle
#

where hand name here by default is just the name of it - "Pair", "Flush Five", "Full House"

#

if it's for newly added hands that will be different

ionic verge
#

is there no key for hand types like there are for jokers?

#

like h_pair or something

solar eagle
#

there is, it's called game.lua and ctrl+f

#

but no

frosty dock
#

keys of hands are just their names

solar eagle
frosty dock
#

for modded hands, it's like 'six_Straight Spectrum'

solar eagle
#

if you've added hands with your mod those will be named prefix_key
where prefix is the name of ur mod prefix, and key is what you put as the key property

minor gyro
solar eagle
#

for whatever reason it is not prefix_name

autumn geode
#

i have more in my stashes

minor gyro
#

I have stolen the ones in your lupus book

weary jungle
#

ok crisis averted

solar eagle
#

im not sure how you level a hand multiple times at once

#

it could just be u pass a number as the third arg but i wouldnt be surprised if it isnt a base game function

weary jungle
#

level_up_hand(card_thats_leveling, "HAND_NAME_HERE", nil, amtHere)

solar eagle
#

wait whats argument 3 then

weary jungle
#

instant

#

if the level up happens instantly

solar eagle
#

ahh

#

instead of animating

frosty dock
solar eagle
#

i swear i found it somewhere but idk where

ionic verge
#

ok i have another question, i created a context that reads whether a card with a blue seal failed to make a card at end of the round, is there a way to tie a message to the card that failed?
currently the message is tied to the joker thats doing magic based on this, but id prefer it to tie the message to the card

#

any thoughts?

weary jungle
#

so this tecnically SHOULD work

runic pecan
#

Speaking of, what is the context when a hand type is leveled up?

solar eagle
ionic verge
#

so put that where = card is?

#

ah that makes it the whole line ok

weary jungle
solar eagle
#

space joker can trigger during the played card phase

#

planet cards can be played mostly whenever

#

during shop, opening packs, during a blind, on the cash out screen

random sleet
#

hand type level ups don't trigger a context

solar eagle
#

thats what i figured

ionic verge
#

gonna have to make a patch like i did

random sleet
#

if you mean when they're allowed to happen, basically whenever? but if it happens during scoring you might need to do some jank

tight thistle
solar eagle
#

i do not

#

sorry :(

random sleet
#

anyone familiar with enhancement API around? why're modded enhancements impossible to add extra messages to lol

autumn geode
#

currently it just triggers once if the joker goes off but not on every card

random sleet
#

what's your joker doing?

tepid crow
#

wassup

zealous glen
#

Do you know about adding messages to Enhanced?

random sleet
#

and why it might be different for modded enhancements vs. vanilla

tepid crow
#

I'm unfamiliar with the enhancements tbh

autumn geode
random sleet
zealous glen
#

you probably want context.individual

autumn geode
zealous glen
#

The return can handle the juice

#

I think card = card

random sleet
#

card = card in return yeah

autumn geode
#

i tried it in there first also same shit happened

zealous glen
#

Maybe it needs something else

random sleet
#

ohhhh

#

extra = {focus = card} maybe

autumn geode
#

i can try that

random sleet
#

i forget when you need one or the other

autumn geode
#

so put juice up back in return and try the extra = {focus = card}

random sleet
#

nah dont put the juice up at all

#

it'll happen automatically if you focus the card properly

autumn geode
#

oh ok

random sleet
#

hm it looks like the basegame jokers that do suit mult just return card = card ||technically card = self but the basegame code is slightly different than smods compatible code!||

minor gyro
#

Dumb question here... But where are the default decks, vouchers, jokers etc textures?

#

from the game

random sleet
#

use 7zip and open balatro.exe and go into resources/1x or resources/2x

random sleet
#

it's not obvious but at least it's easy

tight thistle
#

ill figure it out

random sleet
#

eremel do you know how modded enhancements don't work

wintry solar
#

Hmmm?

ionic verge
sturdy compass
#

Very confused how this timing isn't correct to get Flower Pot triggering. I have this happening in context.before which should be well before Flower Pot starts counting suits, right?

wintry solar
#

I mean where you call calc context

wintry solar
wintry solar
ionic verge
sturdy compass
wintry solar
ionic verge
#

working on it

wintry solar
random sleet
#

cuz i know it's something enhancement API-wise i just dont know if its actually a bug with the enhancement api or if im just dum

#

and should be hooking something im not

wintry solar
#

Do hiker chips work?

random sleet
#

yes hiker chips work

#

its super weird bc im hooking like all the same places hiker chips are added to tooltips

ionic verge
# ionic verge working on it

actually was slightly wrong on placement (instead it was an if statement checking before the other one, does practically the same thing tho) but this is what it looks like

minor gyro
#

I've been reading the SMODS wiki for some minutes so I can get on and do my mods, but I already have a question...
if I want to create more then 1 joker with 1 image, how would I code that? just set the table and then the offset?

#

like that

wintry solar
#

Do message_card = context.card

ionic verge
minor gyro
#

np

ionic verge
#

initialize this at the start with the atlas image youre using, the px and py determine how big a 'tile' is

wintry solar
ionic verge
#

then on every joker put these two lines of code, saying to which atlas it goes to, then what tile it is, starting at 0,0 for top right most

#

then one more thing

random sleet
#

ohhhhh ok i see i see

#

thanks

minor gyro
random sleet
#

i guess this is a good reason to try out that new lovely feature

ionic verge
#

in your mod folder put an assets folder, followed by two folders named 1x and 2x, followed by jokers.png or whatever you used in each, and in 1x you use normal sized sprites and in 2x you use 2x upscaled varients (shocking)

#

my sprite sheets for example

random sleet
#

oh god im gonna have to regex

wintry solar
#

You can multi line pattern patch

random sleet
#

oh for real

wintry solar
#

Yeah I think that was a 0.6 feature

minor gyro
#

the only thing is, how about the space in between each tile?

ionic verge
#

mhm?

random sleet
#

its ok i cant read and i will be incessantly mocked for it

ionic verge
#

oh like the little transparent bits?

minor gyro
#

yh

wintry solar
#

None of us knew until one person randomly was doing it

minor gyro
#

does it eliminate since we defined the size at he begginig?

ionic verge
#

thats because of how jokers are, joker cards are actually 69 x 93 px, with an extra 1px transparent border

minor gyro
#

ohh ok

solar eagle
minor gyro
#

nvm nvm

iron plover
#

how do you make a deck?

iron plover
solar eagle
#

my atlas i work at with 2x size and then export at 50%

#

so there's 4 pixels between jokers

minor gyro
#

Y'all did firstly the 2x version and then downgraded it right?

solar eagle
#

yeah

solar eagle
#

tarot/planet/spectral cards aren't as wide, those have 8 pixels between rows

#

but still 4 between height

random sleet
#

what no i draw at 1x what kind of animal draws at 2x

solar eagle
#

here's how my atlas looks

solar eagle
random sleet
#

oh that one

sturdy compass
#

outer wilds mentioned

random sleet
#

that one does

solar eagle
#

yes!

minor gyro
solar eagle
#

i love outer wilds

sturdy compass
#

fav game of all time here

solar eagle
#

i beat it a few days ago

#

its peak

minor gyro
#

I want to make something related to phasmophobia... Idk how to make ghost types turn into jokers tho lmao

solar eagle
#

the mod im working on isnt really related to outer wilds we just all like the game

#

so we used its planets

urban veldt
#

How hard would it be to code a Joker that does nothing, except cost 0 in the shop and sell for, I dunno, $10?

#

$25?

#

Some amount I've yet to decide

solar eagle
#

youd have to do something related to sell price

#

look at the egg for how thats handled

ionic verge
solar eagle
#

and then just have it do nothing

solar eagle
#

projesterone turns all cards in hand to queens, but each has a 1 in 7 chance to then become a stone card

#

(removing/replacing the enhancement reveals the card is still a queen)

random sleet
#

estrogen

ionic verge
#

lol
thats pretty good

#

and would testosterone make kings/jacks?

solar eagle
#

ritalin removes enhancements from 1 card (such as your unlucky projesterone rolls) in exchange for 50 bonus chips

solar eagle
ionic verge
#

fair nuff

urban veldt
#

Can I make a channel for my mod, actually? Is there a process or review or something?

solar eagle
#

wdym?

iron plover
#

how does the cryptid CCD deck work or how can i view it

solar eagle
#

look at the cryptid src

fathom verge
#

Hey there, new here. I've been learning to do game dev for a whole and felt like wanting to try my hand at making a mod for balatro. I was able to look at the source code and how other mods work but I'm a bit confused on where to actually start

minor gyro
#

same wiki, diferent pages

fathom verge
#

Cool beans

#

Thank ou very much

ionic verge
#

what is context.other_card refering to anyways?

#

like is it just always the card thats currently being processed?

frosty dock
ionic verge
#

so with this itd be the failed blue seal card right?

frosty dock
#

if you're passing it that way, sure

ionic verge
#

i think thats how itd work

frosty dock
#

if you're passing it as context.card, it's context.card

#

if you're passing it as context.my_blue_seal_card, it's context.my_blue_seal_card

ionic verge
#

the blueseal context trigger is happening during get_end_of_round_effect

#

since its triggering from self.seal stuff id presume that self is will turn into other_card in my joker's calculate, right?

#

this is the code im patching in, do i need to change anything with that to get other_card to work?

frosty dock
#

you're passing the card as context.card

#

in which case, refer to it as context.card

#

you don't magically pass anything through that you're not putting in the call

ionic verge
#

got it

#

it worked

random sleet
ionic verge
#

thanks!

minor gyro
#

do y'all use vscode?

ionic verge
#

ill be real i use notepad++

#

i imagine vscode is much better for the job though

minor gyro
tender gale
#

does anyone know how to code a joker that gives x3 mult if played hand contains a 2 and an 8

#

everything I tried failed

ionic verge
stray warren
#

neovim

frosty dock
#

i use vscode with an nvim extension i barely use

#

-# i'm too lazy to learn how to use it

minor gyro
#

neovim?

frosty dock
#

yes

stray warren
#

Once I started using it I can't go back lol

minor gyro
#

never ever heard of it lmao

random sleet
#

aure im making a coremod nyeh heh heh >:)

ionic verge
# tender gale everything I tried failed

set up two boolean values checking for a two and eight respectively, then scan through the played hand and set the bools to true as they appear, then if statement checking if both are true

frosty dock
#

mainly what's stopping me is that I already have mousekeys and vim keybinds suck ass on colemak

frosty dock
random sleet
#

hey as long as i dont have to figure out how to do it >:)

frosty dock
#

merging patches that target steamodded is really simple, i just replace the file with its dumped version

minor gyro
#

ik u just asked something but, what would u do to differentiate the default card from mine? I used the same base and idk if just changing the background color would be that usefull

frosty dock
#

I think it fits the base game's style

solar tide
#

why i cant made three juice_up in row ?

random sleet
#

well the smods patch is just to make modded enhancements work right with it

minor gyro
random sleet
#

assuming they dont provide their own generate_ui in which case godspeed

random sleet
#

the left card is hologram's base, i dont think people recognize it without the giant flashy jimbo

frosty dock
#

that's hologram but most of it is missing

#

so eh

tender gale
#

I used something similar but with a black border for my joker

ionic verge
# tender gale How to do that

set up the bools in config, set them to false at the start of if context.playinghand (whatever its called), set to true via for loop checking for 2s and 8s in playing hand, then in the if context.joker_main also check if the bools are true as well, then apply 3x mult in there

grave arch
#

Hey! Any idea why the juice up only works once?

                    if  math.random(1, 100) <= 80 then
                        ease_dollars(math.random(1,3))
                        card:juice_up(1, 3)
                        play_sound('cardFan2')
                        delay(1.0)
                    end
                    if  math.random(1, 100) <= 70 then
                        ease_dollars(math.random(2,3))
                        card:juice_up(1, 3)
                        play_sound('cardFan2')
                        delay(1.0)
                    end
                    if  math.random(1, 100) <= 50 then
                        ease_dollars(math.random(1,2))
                        card:juice_up(1, 3)
                        play_sound('cardFan2')
                        delay(1.0)
                    end
random sleet
#

wooo dirt cards show their mult finally yippee !

ionic verge
random sleet
#

no it's like hiker chips

tender gale
#

But I don't know how to set up a Boolean

reef gale
#

this is showing up on my hologram joker i dont know why 😭

ionic verge
#

fair nuff

ionic verge
#

something like

#

twos = false

raw geyser
#

Is Balatro on lua 5.3? I would love to use __pairs

random sleet
#

insomuch that i could do this

tender gale
random sleet
#

or even:

ionic verge
#

consdiering that mime + blue seals normally works just fine i dont know why it shouldnt with my joker

#

considering it works off the same code as blue seals do

#

wait lemme get code

#

(that context is something i patched in to check if a blue seal would have triggered, but the consumable slots were full, and it works at the same time as blue seals normally do in get_end_of_round_effect in card.lua)

#

where it would have patched and the patch itself for context

frosty dock
#

uhh that card_eval_status_text doesn't look right

#

i don't think retriggers happen if there's no effect

minor gyro
frosty dock
#

try returning { triggered = true } or something equally meaningless after the calculate_context

ionic verge
frosty dock
ionic verge
#

cus you said its meaningless right?

minor gyro
#

idk

#

you know better than me so yh

ionic verge
frosty dock
#

else you would get a bunch of again messages for nothing

#

the main blue seal calc sets ret.effect = true

ionic verge
#

and one last thing, theres another return in getroundendofeffect, would that break things?

#

ah i see

frosty dock
#

yeah i guess it's more accurate to just modify ret instead of returning something yourself

#

doesn't really matter since you don't need to prevent other blue seal code from running at that's all there really is here

ionic verge
#

theres also the dollar return thing

#

for presumably gold cards

frosty dock
#

yeah fair enough

#

just put ret.effect = true

ionic verge
#

cool

minor gyro
#

idk if it's going to look good 😭

ionic verge
#

oh howdy it works

minor gyro
#

lmao it's so shit

ionic verge
minor gyro
#

lmao

ionic verge
#

the torn joker was just there so i won instantly

tender gale
#

whats the issue with this code?

#

I keep getting this error message

ionic verge
#

needs comma

#

after the first false

tender gale
#

I got the same issue when I had the comma

ionic verge
#

actually

#

those dont need to be in a return

#

just set them to equal false after the if statement

tender gale
#

oh

runic pecan
#

Is for i,j in pairs(G.jokers.cards) do valid?
Or is for i=1, #G.jokers.cards do the only available way?

tender gale
#

still in brackets?

ionic verge
#

then j gets assigned to the indexed joker from the array you put in

tender gale
#

I removed the return and it still has the exact sameerror

ionic verge
#

show code

#

and error

tender gale
#

they really hate line 228

ionic verge
#

its the comma

#

add an enter there instead

#

something like

twosvar = false
eightsvar = false
rest of code
tender gale
#

Ok, thanks

runic pecan
ionic verge
#

put it after the else if

#

not the first if

tender gale
#

Oh, I though it didn't need one if there was a elseif

runic pecan
tender gale
#

I also forgot then💀

#

Half of my code is syntax errors

frosty dock
#

do you not have a lua extension

tender gale
#

finally it runs without crashing on the first screen

tender gale
frosty dock
#

then install one if you don't want to spend half your time debugging syntax errors

tender gale
#

Is there one you recommend

frosty dock
#

just the stock lua extension for whatever editor you're using should do

zealous glen
#

there are two I know about for vscode

#

one provides auto-formatting which can be helpful

#

alt + shift + F

runic pecan
#

This just reminds me that I also haven't got my vscode lua extension yet.
sumneko one, keyring one, or gccfeli one?

zealous glen
#

wh

frosty dock
#

sumneko has the most DLs, its what I use and has that feature

#

gccfeli I haven't heard of

tender gale
#

After all that the Joker doesn't actually do anything

frosty dock
#

oh it has 100k DLs lmao

runic pecan
tender gale
#

It doesn't crash but it doesn't work either

zealous glen
runic pecan
#

Tencent is... unreliable. Like, in general.

zealous glen
#

how so

leaden wren
runic pecan
leaden wren
frosty dock
#

i don't use tencent either, i think i briefly looked at it and didn't trust it lmao

zealous glen
#

I think it's the one with auto-formatting

#

that I use

frosty dock
#

I only use sumneko's and it defo has auto formatting

tender gale
#

Anyone know what the issue might be?

zealous glen
#

I remember first trying some auto-formatting which I didn't like

zealous glen
tender gale
#

This is the joker's code

#

I tested in with full house eights and twos and nothing happened, no message, no xmult, nothing

frosty dock
#

well your check is messed up

#

rn what extra.twos and extra.eights keeps track of is if the last card scored is a 2 or 8

#

you should just perform your checks in joker_main on context.scoring_hand

runic pecan
#

Just downloaded the Lua extension and it just starts screaming at me "Undefined global 'SMODS' " lol

leaden wren
#

there's a config for it

frosty dock
leaden wren
#

that lets you disable each error

leaden wren
zealous glen
#

I put Balatro in the same workspace and it was still complaining

#

so Idk

tender gale
leaden wren
runic pecan
#

Just found it hilarious but not as annoying as it could be

leaden wren
#

oh yeah i was actually going to ask about this but forgot
how do I turn SMODS.Suits into something i can insert into change_base
i kept trying to figure it out but gave up

#

no matter what i did it seemed to break somewhere