#💻・modding-dev

1 messages · Page 508 of 1

distant junco
#

wouldnt it be context.*buying_*card.ability.set == "Joker" ? or do i combine the two

#

with and

#

or something

red flower
#

you combine the two with and

normal crest
#

Use both, context.buying_card is just a boolean

distant junco
#

ahh okay

#

sweet

#

so what does context.card.ability.set actually do then

rocky plaza
normal crest
#

context.card is the card that was bought in context.buying_card

distant junco
#

ahhh

#

ok

#

that makes sense

#

thank you both for your help

knotty orchid
#

How do I get cards in back hand? Like context.scoring_hand and context.full_hand

red flower
#

held in hand?

knotty orchid
#

Yea

red flower
#

G.hand.cards

knotty orchid
#

Ou

#

thanks

foggy ginkgo
#

Cause when I click a flipped card it crashes

#

And also when I turn off talisman it works fine

languid canopy
#

hi hello, how do i make the shop gain a pack ? ping me pls

modern kindle
#

Had this issue recently

#

Only for flipped cards as well

foggy ginkgo
#

Funny

#

It works

#

Let's goo

modern kindle
#

That'll be 300 bucks

foggy ginkgo
#

Sir yes sir

#

Cash or credit

modern kindle
#

Soup cans

foggy ginkgo
#

Mail or email

brittle tide
#

bump

rocky plaza
brittle tide
#

yes

#

every few hands this joker switches itself into a different one then switches back

rocky plaza
#

oh, so like there's a pool of editions and you want this joker to cycle between choices?

brittle tide
rocky plaza
#

`card:set_edition(edition_key)

brittle yacht
#

theres no crash for this, but why does it not work?

    key = 'diamond',
    loc_txt = {
        name = 'Diamond',
        text = {
            'Copies ability of {C:attention}Joker{} to the right if played hand contains a {C:diamonds}#1#{} suit'
        }
    },
    atlas = 'diamond',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 9,
    unlocked = true,
    discovered = true,
    blueprint_compat = false,
    config = { extra = { suit = 'Diamond' }, },

    loc_vars = function(self, info_queue, card)
        if card.area and card.area == G.jokers then
            local other_joker
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i + 1] end
            end
            local compatible = other_joker and other_joker ~= card and other_joker.config.center.blueprint_compat
            main_end = {
                {
                    n = G.UIT.C,
                    config = { align = "bm", minh = 0.4 },
                    nodes = {
                        {
                            n = G.UIT.C,
                            config = { ref_table = card, align = "m", colour = compatible and mix_colours(G.C.GREEN, G.C.JOKER_GREY, 0.8) or mix_colours(G.C.RED, G.C.JOKER_GREY, 0.8), r = 0.05, padding = 0.06 },
                            nodes = {
                                { n = G.UIT.T, config = { text = ' ' .. localize('k_' .. (compatible and 'compatible' or 'incompatible')) .. ' ', colour = G.C.UI.TEXT_LIGHT, scale = 0.32 * 0.8 } },
                            }
                        }
                    }
                }
            }
            return { main_end = main_end }
        end

        return { vars = { card.ability.extra.suit, 'Diamonds' } }

    end,

    calculate = function(self, card, context)
        local other_joker = nil
        if context.individual and context.cardarea == G.play and context.other_card:is_suit(card.ability.extra.suit) then
            for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i + 1] end
        end
        return SMODS.blueprint_effect(card, other_joker, context) end
    end
}```
rocky plaza
brittle tide
#

yes

long sun
#

okay, so i'm coming back to the problems i'm having with giving Zodiac cards upgrade arrows

brittle tide
#

like if you picked up the intial joker in negative it would stay negative when converting to the other

long sun
#

things are complicated and i'm getting a bit lost

#

but here's what i have so far

long sun
#

these are methods on cards, and these should work, as they all deal with cards

brittle tide
short girder
#

keys

long sun
#

this won't, however, as v here is a center

short girder
#

i dont have the full context what does your joker do

long sun
#

i need a way of having cards update their arrows when loaded

short girder
#

because from what im getting you can just idk

long sun
#

and i've got no idea how to do that ^^; suggestions?

short girder
#

store the edition key locally

rocky plaza
#

at least thats how I'd try to do it

#

unless theres a better way

short girder
#

hold on let me go on the wiki

#

i need to see what function fetches a card's edition

rocky plaza
#

card.edition stores it i think

brittle tide
#

I just dont know how to grab its edition

short girder
#

OH YOU'RE MAKING A LIY JOKER

brittle tide
#

yesss

brittle yacht
#

peak

short girder
#

are you creating another card to make the other phase

brittle tide
#

I've actually fully released my mod I'm just bug fixing

knotty orchid
#

Any reason the sticker badge says error?

rocky plaza
# brittle tide yes

ok in that case u can make the created card have the same edition as the initial then

daring fern
red flower
long sun
#

oh somethingcom haihai :D

#

i'm struggling a little ^^;

brittle tide
rocky plaza
brittle tide
long sun
#

i'd like to add arrow animations to Zodiacs that are affected by upgrade effects, and the way i've thought of doing this is,

brittle yacht
brittle tide
#

I know how to set a jokers edition I'm not sure how to find and store the edition of an existing joker

long sun
#

the animation should be updated whenever the upgrade effect changes, or the card starts being rendered

daring fern
loud silo
#

does anyone know what this is happening to my skin?? the 1x and 2x files have the same colors and nothing seems weird untill i open the game

long sun
#

oh! lemme check that out

rocky plaza
long sun
#

big if true

brittle yacht
brittle tide
daring fern
brittle yacht
# brittle yacht also, i edited the code a bit, let me send the new version

it still dont work though

    key = 'diamond',
    loc_txt = {
        name = 'Diamond',
        text = {
            'Copies ability of {C:attention}Joker{} to the right if played hand contains a {C:diamonds}#1#{} suit'
        }
    },
    atlas = 'diamond',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 9,
    unlocked = true,
    discovered = true,
    blueprint_compat = false,
    config = { extra = { suit = 'Diamond' }, },

    loc_vars = function(self, info_queue, card)
        if card.area and card.area == G.jokers then
            local other_joker
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i + 1] end
            end
            local compatible = other_joker and other_joker ~= card and other_joker.config.center.blueprint_compat
            main_end = {
                {
                    n = G.UIT.C,
                    config = { align = "bm", minh = 0.4 },
                    nodes = {
                        {
                            n = G.UIT.C,
                            config = { ref_table = card, align = "m", colour = compatible and mix_colours(G.C.GREEN, G.C.JOKER_GREY, 0.8) or mix_colours(G.C.RED, G.C.JOKER_GREY, 0.8), r = 0.05, padding = 0.06 },
                            nodes = {
                                { n = G.UIT.T, config = { text = ' ' .. localize('k_' .. (compatible and 'compatible' or 'incompatible')) .. ' ', colour = G.C.UI.TEXT_LIGHT, scale = 0.32 * 0.8 } },
                            }
                        }
                    }
                }
            }
            return { main_end = main_end }
        end

        return { vars = { localize(card.ability.extra.suit) } }

    end,

    calculate = function(self, card, context)
        local other_joker = nil
        if context.individual and context.cardarea == G.play and context.other_card:is_suit(card.ability.extra.suit) then
            for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i + 1] end
        end
        return SMODS.blueprint_effect(card, other_joker, context) end
    end
}```
modern kindle
#

Hi smt 👋

long sun
#

the framework for that works perfectly, the bit i'm struggling with is getting the card to keep its state up to date

#

card centers have an anim_state and an anim_extra_state, which are the base card and anything on top respectively

#

and also a bunch of animations that have keys, which the states relate to

#

so Space Invader has the states crab, squid, octopus

daring fern
long sun
#

ah that's true, i'll change over to that after

#

i've set up the Zodiac cards to have working animations — 0, 1, 2, 3 and 4+

distant junco
#

how to do custom mod icon hehe

daring fern
long sun
#

their states need to be kept up-to-date, and i'm struggling with that ^^;

#

gimme a minute while i test something though

distant junco
long sun
#

mm, right, this doesn't seem to be working right now

#

but anyway

#

the top method here updates the arrows to whatever they should be, and is attached to Card

#

like i said earlier, this needs to be called when the number changes, and also when the card is loaded

#

and i don't know how i'd go about doing that ^^;

rocky plaza
#

basically do the suit check by iterating through context.scoring_hand

daring fern
rocky plaza
#

oh oops\

#

wait

#

from the steamodded wiki

#

huh?

daring fern
rocky plaza
#

yeah, so the suit check would work then

#

ohhh

daring fern
rocky plaza
red flower
#

context.before without a cardarea works

slim ferry
red flower
rocky plaza
long sun
#

screw ittttt let's do this every frameeeeeee i can't be bothereddddd

#

HAHAHAHAHA OKAY AT LEAST IT WORKS :D

#

yay >:3

hybrid shadow
#

how do i make code only run if a certain mod is active

slim ferry
#

im pretty sure its SMODS:find_mod("<mod id>")? not entirely sure though since i havent actually seen it much

formal parrot
faint leaf
#

how do i make it so a hand is ALWAYS set to a certain one, no matter what i play?

red flower
faint leaf
#

like my least played hand

daring fern
red flower
faint leaf
#

oh awesome

#

waiiiit a minute... YOU made that....

#

awesome sauce

red flower
hybrid shadow
#

crash says attempt to call a nil value?

slim ferry
#

at that line specifically?

#

oh

#

no you need to do

#

assert(SMODS.load_file("src/joker.lua"))()

hybrid shadow
#

the other lines like it load fine apparently

carmine burrow
slim ferry
#

assert is required afaik

#

but idk

red flower
#

it's not it just gives you a nicer error

carmine burrow
#

for instance it might actually be src/jokers.lua idk

hybrid shadow
#

yeah doing the assert for some reason told me the actual reason why it didnt like it

carmine burrow
#

i had problems with that before

#

although then it should be callable and the callable should return nil, right?

frosty rampart
hybrid shadow
#

yeah but normally it would just tell me the issue with the file not tell me everything is wrong

knotty orchid
#

Is there any way to know if other joker has triggered? I want to make a joker that scales each time the joker to his left triggers

knotty orchid
knotty orchid
#

I meant context.other_card == G.jokers.cards[i-1] sorry

#

i being the index of actual joker

daring fern
hybrid shadow
#

how do i hook the main_menu function

daring fern
languid mirage
#

shouldnt you also pass self

#

nvm it has 0 params, you just named it that

red flower
#

main menu has a param

hybrid shadow
#

does negative priority make things load before others

hybrid shadow
#

alr

frosty rampart
#

having trouble finding code to reference for making a new consumable visually act like a planet
(i'd like it to move to the center of the screen + clear/move the other UI as needed, juice itself and maybe play a sprite animation, but i'll deal with that later, and then move back into the consumables area)

normal crest
#

it is probably in Card:use_consumeable

frosty rampart
#

gotcha

normal crest
#

probably in state_events.lua or button_callbacks.lua

frosty rampart
#

yea, looks like use_consumeable just handles the hand text for planets

modern kindle
#

<@&1133519078540185692>

#

Please kill him

#

Thanks bestie

karmic creek
#

ok

modern kindle
#

I'll buy you chicken wing later

karmic creek
#

thx bud I’m hungry

modern kindle
#

Npnp

frosty rampart
#

<@&1133519078540185692> another one

charred widget
#

Hello friends

#

I have a problem with a joker

red flower
#

that's sad to hear

charred widget
#

i would like some help if you can

red flower
charred widget
#

ok sorry about that i'll elaborate

#

so I have a joker that is supposed to detect when 3 cards are discarded, delete those cards and instead replace them with a randomly enhanced jack, king, and queen

#

but in testing it immediately crashed as soon as i discarded the three cards

#

and i'll send the code for you to check out

red flower
#

yeah please send the code and the crash

charred widget
red flower
#

I think the problem is that youre trying to return a message for a card that was destroyed

#

this will also add 3 cards for each card discarded

faint yacht
#

Missing something here for XMult trigger off of debuffed items?

local curcard = context.other_card or context.other_joker or context.other_consumeable
if curcard and curcard.debuff then return { xmult = card.ability.extra.debuffxmult } end
daring fern
charred widget
red flower
charred widget
#

Ok thanks

red flower
# charred widget Ok thanks

this is how i would do it
i didnt test it tho

if context.pre_discard and #context.full_hand == 3 then
    card.ability.extra.added = nil
    local cards = {}
    for _, rank in ipairs({ "J", "Q", "K" }) do
        local added_card = SMODS.create_card {
            set = "Enhanced",
            rank = rank,
            area = G.discard,
            edition = poll_edition("modprefix_add_card_enhancement", nil, true, true),
            seal = SMODS.poll_seal({ guaranteed = true })
        }
        G.playing_card = (G.playing_card and G.playing_card + 1) or 1
        added_card.playing_card = G.playing_card
        table.insert(G.playing_cards, added_card)
        table.insert(cards, added_card)
        G.E_MANAGER:add_event(Event({
            func = function()
                added_card:start_materialize()
                G.play:emplace(added_card)
                return true
            end
        }))
    end

    card.ability.extra.added = true

    return {
        message = "Added cards!",
        func = function()
            G.E_MANAGER:add_event(Event({
                func = function()
                    G.deck.config.card_limit = G.deck.config.card_limit + 3
                    return true
                end
            }))
            draw_card(G.play, G.deck, 90, 'up')
            draw_card(G.play, G.deck, 90, 'up')
            draw_card(G.play, G.deck, 90, 'up')
            SMODS.calculate_context({ playing_card_added = true, cards = { cards } })
        end
    }
end
if context.discard and card.ability.extra.added then
    return {
        remove = true,
        message = "Destroyed!",
    }
end
charred widget
ivory citrus
#

Hello, how can I create negative square jokers even though all the joker slots are full?

frosty rampart
rotund sable
#

how would i disable a joker from showing up in the shop but still being able to show up from a consumable?

daring fern
rotund sable
#

yeah

#

or custom consumables

ivory citrus
daring fern
rotund sable
#

i'll try that ty

frosty rampart
# ivory citrus Sorry, I copied this code from Joker Forge and I don't know where the verifier i...

the check is the line if #G.jokers.cards + G.GAME.joker_buffer < G.jokers.config.card_limit then. that checks if you're already at the joker limit, and only does stuff if you're not. remove that line, along with the end associated with it (and fix the indentation for everything inside it), and you should be good
there's more stuff you could do to make the code cleaner afterwards, but it wouldn't really affect the joker's behavior

ivory citrus
sonic cedar
#

how to check if a card's suit matches another card's suit?

#

(hiiiiiiiiii somecom!!)

daring fern
sonic cedar
#

awesome thank you!

subtle merlin
#

I need UI help (again):
I have a stake that adds a timer to the run, however currently that timer is implemented by just printing the number the timer is at every time it updates. How would i instead make it a meter that fills up gradually?

sonic cedar
sonic cedar
daring fern
sonic cedar
#

thanku somecomm

manic rune
#

though currently it doesnt have any easing, so you would need to do it yourself

charred widget
subtle merlin
red flower
manic rune
#

:3

#

what do you have rn

subtle merlin
#

for this in particular? nothing other than the aformentioned print()

charred widget
sonic cedar
manic rune
#

well you might want to learn ui basics then :3

red flower
sonic cedar
#

got you got you

charred widget
red flower
#

thankfully all my prs are simple so they usually get accepted or rejected immediately

charred widget
#

aaaand the game immediately crashed

red flower
#

if it immediately crashed then it's a syntax error

subtle merlin
manic rune
#

its just wrapping nodes around one another

#

:3

charred widget
#

so this is a syntax error?

red flower
#

yes

#

can you screenshot what you have rn

charred widget
#

i'll just send the file

red flower
#

i prefer a screenshot because im on my phone lol

charred widget
#

oh

#

ok

red flower
#

yesh you're missing an end and a } there at the end

#

you deleted too much lol

charred widget
#

oh shit

#

so just put another line, type 'end', another line and a bracket?

red flower
#

yes

#

i think

charred widget
#

aight cool

#

well, we'll see how it goes

#

oh cool it works

#

the operations don't work exactly how i intended it but i can work with this

rocky plaza
#

bringing this back up since I still cannot figure out what is going on with the atlas being nil

red flower
#

animation atlas doesn't work with consumables

rocky plaza
#

oh

#

so i cant have animated consumables?

unborn bay
#

you'll have to animate it manuallh

manic rune
#

you can, just that you gotta make the code yourself

rocky plaza
#

without some other sorcery

#

oh

rotund sable
#

you have to manually animate them in the update function

rocky plaza
#

dt in the update function is supposed to be the time between one frame to the next, correct?

charred widget
#

after i discard the three cards, all other discards get destroyed no matter how many cards there are

#

but the discards before the three-card discard are fine

red flower
#

oops

red flower
#

you can remove the other line that says = nil

sonic cedar
#

he is in the table so i am confuzzled

charred widget
red flower
#

yeah

charred widget
#

ok

daring fern
red flower
# charred widget ok

basically i didnt realize that i was resetting the flag only when you discard 3

sonic cedar
charred widget
red flower
#

delete it?

charred widget
#

i phrased that weirdly

#

which lines do i delete to remove the text without it crashing?

red flower
#

the line that says message
im not chatgpt lol you can try things out dont be afraid of crashes

charred widget
daring fern
sonic cedar
#

the ui box?

daring fern
sonic cedar
#

yeah tha

#

ill test

hollow mango
#

hey so im calling card:explode() on a normal playing card. after that it doesn't actually get removed properly from the deck and can be drawn to hand later completely invisible lmao
is there a function to just...delete a card. straight up. besides start_dissolve because that produces unwanted visual effects

jolly shadow
#

look into context.destroy_card

#

prob

rocky plaza
#

so i want to access this new field that i gave this consumable, how would i do so?

hollow mango
#

oh remove ok thank you

#

i was typing out everything i could think to get suggestions from visual studio code of but i didnt guess remove lmao

hollow mango
#

hey it worked thanks a ton

#

i can now explode my cards in peace

frosty rampart
red flower
#

i like the sound

frosty rampart
#

it's a stock royalty free sound i found lol

charred widget
#

so N there are just two more things I want for this joker i'm making

#

i want stone cards to be excluded

#

and I want to put the new enhanced face cards in your hand instead of the deck

#

hope it's not too much of a hassle

red flower
#

you should have said that from the beginning 😭

#

anyway im going to sleep sadly

charred widget
#

oh ok

#

yeah nevermind

charred widget
red flower
#

you need to change the area it gets drawn to tho

#

not the area it gets created in

charred widget
#

wait there are a lot of 'G.deck's in the code

#

do i just replace all of them?

jolly shadow
#

i think it's the 3 draw_cards at the bottom

charred widget
#

ok i'll try that

jolly shadow
#

if im remembering the arguments correctly u should change G.play to G.hand in those

red flower
#

no it's g.deck

charred widget
#

ok it worked

jolly shadow
charred widget
#

ok i know this is getting really picky but i just want the cards to appear in your hand, without the animation of them sliding onto the screen

red flower
#

im going to cry lol

charred widget
#

IM SORRYYYYYYY

hybrid shadow
#

isnt this emplace

old bane
#

😭

charred widget
#

you know what N just go to bed i can do this later

red flower
#

i was going to make a simple version without the animation but because you had it i kept it in..

hybrid shadow
red flower
#

you can change create_card for add_card and change the area to G.hand

#

then delete all the animation stuff

charred widget
#

idk what the animation stuff is

red flower
#

all the events

charred widget
#

ok i tried deleting a few things but the game just keeps crashing

#

i'll send another screenshot and just tell me what i need to delete

fading kiln
#

is there a priority when getting most and least played hands?

#

cause if its tied for some reason full house always gets upgraded

red flower
# charred widget
if context.pre_discard and #context.full_hand == 3 then
    local cards = {}
    for _, rank in ipairs({ "J", "Q", "K" }) do
        local added_card = SMODS.add_card {
            set = "Enhanced",
            rank = rank,
            area = G.hand,
            edition = poll_edition("modprefix_add_card_enhancement", nil, true, true),
            seal = SMODS.poll_seal({ guaranteed = true })
        }
        table.insert(cards, added_card)
    end

    card.ability.extra.added = true

     SMODS.calculate_context({ playing_card_added = true, cards = { cards } })
    return {
        message = "Added cards!"
    }
end
if context.discard and card.ability.extra.added then
    return {
        remove = true,
        message = "Destroyed!",
    }
end
red flower
fading kiln
charred widget
red flower
red flower
fading kiln
#

if its tied i want it to choose the best hand

#

in the order of the run info tab

charred widget
#

im sorry, im not a programmer

red flower
#

then i would recommend you learn some basics

red flower
jolly shadow
sonic cedar
#

i know it's the print, because commenting it out makes everything work fine

compact basin
#

Wa

charred widget
daring fern
jolly shadow
sonic cedar
charred widget
#

i'm sorry for being such a headache

#

but i think i can figure out the rest

sonic cedar
#

no wait yeah cant i

daring fern
sonic cedar
#

ill test

sonic cedar
sonic cedar
# sonic cedar

@daring fern this means they ARE being stored, then, right?

#

forgot to ask

sonic cedar
#

ok ok cool
so then why isnt ijiraq tracking them?

#

i discard a hand, and then hover. i did this until i ran out of discards

daring fern
sonic cedar
#

the G.GAME one right?

#

in the safe_set_ability?

daring fern
sonic cedar
#

ill try it rq

#

should i have it print the [card.sort_id][v] bit?

sonic cedar
#

one moment

sonic cedar
# daring fern Yes.
INFO - [G] Table:
extra: Table:
  discards: 23
  xmult: 1

x_chips: 1
hands_played_at_create: 0
mult: 0
h_x_chips: 1
perma_mult: 0
t_mult: 0
h_dollars: 0
set: Joker
perma_p_dollars: 0
extra_value: 0
perma_bonus: 0
p_dollars: 0
perma_x_mult: 0
h_size: 0
bonus: 0
h_mult: 0
perma_h_dollars: 0
yorick_discards: 23
perma_h_x_mult: 0
perma_h_mult: 0
d_size: 0
perma_h_chips: 0
effect:
perma_x_chips: 0
perma_h_x_chips: 0
x_mult: 1
order: 145
h_x_mult: 0
type:
t_chips: 0
name: Yorick
h_chips: 0
daring fern
sonic cedar
#

well it also printed the 1, 23, 23, 1 thing because i didnt remove it

#

but otherwise, yes

#

is that bad?

daring fern
sonic cedar
#

oh let me see

#

discarded 5 cards then hovered

#
INFO - [G] Table:
extra: Table:
  discards: 23
  xmult: 1

x_chips: 1
hands_played_at_create: 0
mult: 0
h_x_chips: 1
perma_mult: 0
order: 145
h_dollars: 0
set: Joker
perma_p_dollars: 0
extra_value: 0
perma_bonus: 0
p_dollars: 0
perma_x_mult: 0
h_size: 0
bonus: 0
h_mult: 0
perma_h_dollars: 0
effect:
perma_h_x_mult: 0
perma_h_mult: 0
d_size: 0
perma_h_chips: 0
yorick_discards: 23
perma_x_chips: 0
perma_h_x_chips: 0
x_mult: 1
t_mult: 0
h_x_mult: 0
type:
t_chips: 0
name: Yorick
h_chips: 0
daring fern
modern kindle
#

hi chat ive returned from my concert

#

he gave me a pick and gave me an autograph which apparently he doesnt usually do but i pulled my veteran card on him

sonic cedar
sonic cedar
umbral zodiac
#

in the game what actually removes the card? i tried hooking card:remove in order to make certain cards not be able to be removed but it still stayed upon selling

modern kindle
crude umbra
#

Hello, could you tell me how to transfer the save data of Balatro from the old iPhone to the new iPhone?

daring fern
charred widget
#

wait

#

i might have figured it out myself

umbral zodiac
#

ok well i fixced the rest of it other than this
is there a way to revert the dissolve shader

#

the joker functions and all its just,,,, not visually there because the dissolve shader already ran and finished

sonic cedar
#

@daring fern is it because i have it like this now?

umbral zodiac
# daring fern `card.states.visible = true`?

its not invisible
the dissolve shader is overlayed on top, which is making it invisible since thats the purpose of the dissolve shader, to make it dissolve and turn invisible before fully removing the card

umbral zodiac
#

that works ty

chrome widget
#

when you use ipairs on a table that has numbered indices as well as string/other type keys, will it always go through all those numbered keys assuming they're continuous?

normal crest
#

starting from 1

sonic cedar
sonic cedar
modern kindle
#

why your shit so dark

sonic cedar
#

it's behind the debug print from hover

modern kindle
#

icic

#

thot u dimmed ur shit for some reason

sonic cedar
#

no lmao

chrome widget
#

Hi dilly!!!

modern kindle
#

how ar eu winter

chrome widget
#

ehh, kinda okay

sonic cedar
#

ok yeah it's just yorick
(hi winter!!!!!!!!!!!!!)

modern kindle
#

i hope you become awesome

#

would you like some of my mcdonalds to feel better

#

I promise I have enough coming

sonic cedar
#

huge back

modern kindle
#

i ahvent eaten yet today and just got back from the concert i deserve this

sturdy compass
#

Biggest back known to modding dev

modern kindle
#

sicne ur mean maybe i wont sharte with u and will instead break ur mod

modern kindle
sturdy compass
#

And you’re eating THAT much????

modern kindle
#

ive eaten this much since i was a teenager yea

#

the ongoing theory is i have a tapeworm

#

i think its just cause as a kid i only ate sparingly due to no money so i eat as much as i can when i can

#

sorta a survival type beat

sonic cedar
#

so ive been going back through old jokester code and fixing it up right

#

why the FUCK is hit the road looking for NINES

#

"oh no it's not working ill have to figure it out later i guess...."

modern kindle
#

i be doing that

#

i still ahvent fixed that edition thing

sonic cedar
#

this whole setup sucks actually

#

why am i returning a global

modern kindle
#

cause you are my world

#

thusly being global

sonic cedar
#

oh my

#

why was she counting all the jacks in calculate if they're going to be destroyed anyway

#

like i get in loc vars, it's for the description

#

"HTR desc render bug" is the checklist item

#

a real mystery

jolly shadow
sonic cedar
#

no that's dilly

modern kindle
#

yea im dilly

nova violet
#

new to modding, fumbling my way through getting my first joker set up. It shows up in collections and whatnot, but is there a way that i can force the modded joker to appear in a run play with it?

frosty rampart
#

grab the debugplus mod. then you can go into the collection during a run and press 3 to spawn it

nova violet
#

heard, thank you!

#

any other tips for a new modder? I work as a dev, new to lua, and the steammodded docs are helpful but i feel like im missing some stuff. using another mod as a guide. anything yall wish you knew when you started?

frosty rampart
sonic cedar
sturdy compass
nova violet
#

yall are sick, thank you!

#

its a cool side project

sonic cedar
#

im going to kill past jolyne

sturdy compass
#

LOL

sonic cedar
#

there is literally no excuse

#

do you know why

#

would you like to guess exactly what is in joker main

#

the only thing that was done right

#

was the scoring

#

just because it's debuffed
does not mean
it's not a ranked card

#

"oh but that's how the basega-" youre going to destroy them. why are you playing nice

#

didnt even mention her calling pre_discard instead of checking for the discard cardarea in destroy_card

#

im tired boss

ivory citrus
#

This isn't working

rapid stag
#

how can i specifically retrigger steel cards in hand

jolly shadow
#

check vanillaremade for something like sock & then change the face card check to a steel card check?

rapid stag
#

...sock is only in played hand

#

i'm talking held in hand

#

neither vremade's baron nor mime help cirLost

sonic cedar
#

vampire:

rapid stag
#

nothing useful there either

sonic cedar
sturdy compass
#

I feel like mime would be the most useful starting point ngl

normal crest
#

if context.repetition and context.cardarea == G.hand and SMODS.has_enhancement(context.other_card, 'm_steel') and not context.end_of_round then maybe

sonic cedar
sturdy compass
#

Lmao

sonic cedar
#

no cause astra

rapid stag
sonic cedar
#

that indentation is killing my brain cells

normal crest
#

that looks fine to me, if your goal is to retrigger all played and held in hand enhanced cards

sonic cedar
#

except theyre trying to only retrigger steel cards in hand

#

why are you calling G.play then....

rapid stag
sonic cedar
#

i see i see

manic rune
sonic cedar
manic rune
#

ic

modern kindle
#

bepis

sonic cedar
#

ignore the parentheses

#

also hi bepis

manic rune
#

hi dilly, hi toma

modern kindle
#

hihi

#

this sleep im gonna have soon is gonna be diabolical

manic rune
#

:3

sonic cedar
#

i cant believe i forgot this part

#

it's gonna render blank dummy...

modern kindle
manic rune
#

whats the uhhhhhhhhhhh thingy u add to return to make it run another return or smt

#

i forgor

normal crest
#

extra

manic rune
#

thank

sonic cedar
rapid stag
normal crest
sonic cedar
#

fuck i forgot how to remove the obvious blank line of fakeness

normal crest
#

it's whatever you have inside

sonic cedar
#

curse

#

s

normal crest
#

idk if the rest of your code is correct

sonic cedar
# sonic cedar

does anyone remember how to remove the extra line completely instead of returning false or being set blank

#

extra line in question

#

i forgot to close the loop

rapid stag
#

yep, fixed cirBlech
the problem was elsewhere cirDerp
the joker was loading in the wrong state and i hadn't put it in my thing that forces my jokers with states into the correct state on loading the save

normal crest
sonic cedar
#

obviously since its alternative is a blank space, itll still keep the line

normal crest
#

i see

#

you shouldn't do that, either use main_end or change the localization key for different stuff

sonic cedar
#

im trying to remove that line and i swear it was main_e-

normal crest
#

otherwise the line is never gonna go away

sonic cedar
#

ughhhhhhhhhh main end,,,,

#

i dont have the brain for main end rn ill do it tomorrow

#

or hell ill do it later and then do all the main end stuff at once

#

yeah

#

for now im gonna make sure this joker works and go to SLEEP

normal crest
#
loc_vars = function(self, info_queue, card)
  local main_end

  if G.jokers then
    for _, v in ipairs(G.jokers.cards) do
      if v.edition and v.edition.negative then
        main_end = {}
        localize {
          type = 'other',
          key = 'remove_negative',
          nodes = main_end
        }
        break
      end
    end
  end

  return {
    main_end = main_end and main_end[1]
  }
end,

here's an example of a joker that adds the (Removes Negative from copy) like invisible joker

#

which has no other variables

sonic cedar
#

saving this for later

#

yoink

#

somehow made things worse and now hovering over my joker crashes the game

#

like hard crash

#

game closes

#

whats wrong with this

#

no
tomorrow
i will figure it out
with sleep

#

nvm it was quantum enhancemetns

charred widget
#

Hello friends! I'm having trouble with a joker making the game crash.

#

apparently it's trying to insert the object into an empty pool

#

and i don't know how to fix it

normal crest
#

what's your code?

charred widget
normal crest
#

what about your rarity code

charred widget
#

idk where the rarity code is, i'm working with jokerforge

normal crest
#

well, the rarity on your joker is wrong, it doesn't exist

#

so that's the empty pool it's referring to

charred widget
#

idk how the rarity doesn't exist

normal crest
#

well, the rarity specified on your joker doesn't exist

#

likely got the wrong key

#

what's your mod prefix?

charred widget
#

legendar

normal crest
#

set rarity = "legendar_legendpkmn" on your joker

charred widget
#

ok i think i figured it out

#

aaaaaaand nevermind

normal crest
#

are you doing this fully with jokerforge

#

or modifying the code yourself

charred widget
#

i'm doing it partially with jokerforge and i'm coming here for help and additional assistance

#

please note i can't actually code (see above) so please be patient with my bullshit

normal crest
#

i see

normal crest
charred widget
#

how can we fix that?

#

i can send the main lua file if that would help

normal crest
#

by finding where your atlas is defined

charred widget
#

it's just in the assets folder in the mod folder

normal crest
#

should be a mention to SMODS.Atlas somewhere in your code

charred widget
#

yeah i found that

#

the path is just this

#

path = "CustomJokers.png",

normal crest
#

what's the key?

charred widget
#

key = "CustomJokers",

normal crest
#

on your joker set atlas = "CustomJokers" then

charred widget
#

ok did that

#

i'll see if it works

#

well it's not crashing

#

but it's using the wrong texture

normal crest
#

is the correct texture on the atlas

charred widget
#

yes

normal crest
#

then you need to modify the pos of your joker

charred widget
#

i see

normal crest
#

top left of your atlas is x = 0, y = 0

#

soul_pos is the same but handles the floating sprite on top of the joker

charred widget
#

ok to give you a better sense of this i'm gonna send the atlas as a file

#

the textures i'm looking for are the dark cloudy sky and the red and black bird (yveltal)

#

but instead i'm getting the first two textures, the galaxy and the white creature (arceus)

normal crest
#

since you have only one row, y should always be 0 on the position

#

the leftmost x is 0

charred widget
normal crest
#

what you want is, for the background x = 4, for the pokemon x = 5

charred widget
#

oh so the increments are in the textures themselves, not in pixels

normal crest
#

correct, your atlas is split in sections of px and py (which you specify in SMODS.Atlas)

charred widget
#

i see

#

alright thank you for your help so far

#

but i have a couple of other ideas that i want to try out

#

if you're willing to sit through my lack of experience and general bullshit

#

if you don't want to that's completely ok

normal crest
#

sure, i'll help where i can, i've never used jokerforge tho

charred widget
#

thank you so much

#

alright so there's two slight tweaks that i want to do for another joker i'm working on

#

for this one, i already have the main ability set up thanks to someone that was helping me earlier

#

this one detects exactly three cards being discarded, destroys them, and replaces them with three randomly enhanced face cards

#

my two tweaks are as follows: i want to exclude stone cards from the enhancement options, and I want to make the message "Revived!" appear at the same time as the enhanced face cards

#

i feel like the first one can be done pretty easily, but i think the second one might be tricky due to the order of operations

normal crest
#

for the first one you only need to modify the stuff passed to SMODS.add_card

#

you want to set set = "Base" and enhancement = SMODS.poll_enhancement({ guaranteed = true, no_replace = true })

#

no_replace = true will also exclude modded cards that behave like vanilla stone cards, if you only want to remove stone cards it's a bit longer

charred widget
#

i'm not seeing "enhancement", i just see set, rank, area, addition, and seal

normal crest
#

yeah, you have to add it

charred widget
#

oh just paste it in between two of them

normal crest
#

and make sure to add a comma at the end

charred widget
#

yep made sure of that

normal crest
#

as for making the message appear at the same time, maybe putting it in an event will do it

G.E_MANAGER:add_event(Event{
  func = function()
    for _, rank in ipairs({ "J", "Q", "K" }) do
        local added_card = SMODS.add_card {
            -- put what you already have here
        }
        table.insert(cards, added_card)
    end

    SMODS.calculate_context({ playing_card_added = true, cards = cards })
    return true
  end
})
card.ability.extra.added = true
#

actually, that will probably cause more issues

#

there, i edited it, that should work

charred widget
#

ok so where in the .lua file should i paste it

normal crest
#

should overwrite this part of the code

#

note I removed the stuff inside SMODS.add_card cus you modified it for the stone exclusion

oak meadow
#

I see you guys are having a conversation but uhhh
I just have one question:
why isn’t my mod appearing in the mod list
(can’t send files, on my phone sending this because of… Limitations.)
I have all the things that the .json file has in one of the steamodded examples, and even copy/pasted the tutorial for it that’s on the steamodded wiki, but it’s not appearing

normal crest
#

if it's not appearing it's cus something in the json file is wrong

#

without seeing the file I wouldn't be able to know what's wrong in it

charred widget
#

ok so you put in some text that says "-- put what you already have here"

#

i don't really know what to put there, could you elaborate?

oak meadow
#

does this work @normal crest

normal crest
charred widget
#

oh that stuff

normal crest
oak meadow
#

thank you
so the problem was: I’m blind
and can’t type
thanks lol

charred widget
normal crest
#

that means there are syntax errors, can you send a screenshot?

charred widget
#

atp i'll just send the .lua file again

oak meadow
#

…so
the mod is now loading but there is an error with my code
it is currently trying to close the atlas on the second line
I do not know why.

normal crest
normal crest
#

same on name = 'cat' below

#

and maybe more places that i can't see in the pic

charred widget
#

alright I'll test it and see how it goes

normal crest
charred widget
#

LETS GOOOO IT WORKS

#

THIS IS PERFECT TYSMMMMMM

#

ok so next thing

#

i went into jokerforge and I added a new effect to one of my jokers

#

and i'm gonna go into the game to test it out

#

and i'll come back with results

#

ok

#

and jokerforge itself says it's not 100% reliable so these kinds of outcomes are expected

#

so the effect is that this joker wants to destroy another joker (giratina) when the shop is exited

normal crest
#

you seem to have a blueprint effect on the joker too? it seems jokerforge didn't do that properly

#

and made two calculatefunctions, which shouldn't happen

charred widget
#

oh right i forgor

#

the arceus jokerforge makes is unstable

#

i fiddled with the correct arceus file and put in the new code that does the joker destroying bit

#

so i'll test it out to see what happens

#

here's what it gave me

oak meadow
#

why does testcat not have the cat sprite
(also im like 99% sure that the coords are correct
also its not giving 1 chip for some reason)

#

(also omg its so helpful to have it actually colored in because im just editing this in notepad lol)

oak meadow
#

i have lost all faith in coders because of that one rhetorical question.
this includes myself.

dreamy thunder
#

lol

oak meadow
#

srsly why tho
do anyone know

ancient mango
#

in vscode how do i do text coloring specificly for smods cause i saw people with that but i dont know how to do it

oak meadow
#

theres probably an extension for it

normal crest
oak meadow
#

ye
the pictures have 1 pixel of empty space on x and y around them

normal crest
#

x and y are not pixels

oak meadow
#

you know what i mean

normal crest
#

yes, and you don't know what i mean

oak meadow
#

wait no
IT WAS 2 PIXELS
im stupid

normal crest
#

the atlas is split in portions of px and py as defined in SMODS.Atlas

#

x and y refer to said portions

oak meadow
#

oh so the thing i used to put the images together screwed me
kk

normal crest
#

no

#

just put x = 0, y = 0

oak meadow
#

still dont work, its just default joker

ancient mango
#

i have a pokerhandpart which is four fingered flush but just not needing four fingers and another one thats the same but with straight and i want to make a pokerhand thats both of them but not on the same four like the image but i dont know how to do that

also how do i explain it for the run info

languid canopy
#

hello hi, i made a custom rarity but th error thingy keeps coming up, how do i fix this ?

ancient mango
#

maybe localization idk?

normal crest
oak meadow
#

ye

normal crest
#

What does your code look like right now

oak meadow
#

SMODS.Joker {
key = 'testcat',
loc_txt = {
name = 'testcat',
text = {
"Gives 1 chip. Thats it.",
"{C:inactive,s:0.7}'omg is that inspired by jen walter from hit balatro mod Jen's 'almanac' Almanac, the one that youtubers frequently made videos about and personal favorite of the mod creator???????????'{}",
"{C:inactive,s:0.7}(its not inspired by jen walter from hit balatro mod Jen's 'almanac' Almanac, the one that youtubers frequently made videos about and personal favorite of the mod creator???????????){}"
},
config = { extra = { chips = 1 } },
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.extra.mult } }
end,
rarity = 1,
atlas = 'spr',
pos = { x = 0, y = 0 },
cost = 0,
calculate = function(self, card, context)
if context.joker_main then
return {
chips_mod = card.ability.extra.chips,
message = localise { type = 'variable', key = 'a_chips', vars = { card.ability.extra.chips } }
}
end
end
}
}

#

same thing as before for atlas

normal crest
#

you have everything inside loc_txt, remove the last } and add }, before config

languid canopy
#

(you're right)

ancient mango
#

what do you mean?

normal crest
ancient mango
#

those 2 should work read them

charred widget
#

ok @normal crest scratch what was happening with arceus we have some debugging to do

#

a few things are happening with ho-oh

#

and it's also destroying cards after the three-card discard

normal crest
#

But replace active with added

#

Cus I misread it

normal crest
normal crest
charred widget
#

alright i'll see how it goes

normal crest
ancient mango
#

nothing really i tried but nothing worked

#

like i only have the parts and the poker hand skeleton

normal crest
ancient mango
#

hmm

#
SMODS.PokerHandPart {
    key = "flush4",
    func = function(hand)
        local ret = {}
        local suits = SMODS.Suit.obj_buffer
        if #hand > 4 then return ret else
            for j = 1, #suits do
                local t = {}
                local suit = suits[j]
                local flush_count = 0
                for i=1, #hand do
                    if hand[i]:is_suit(suit, nil, true) then flush_count = flush_count + 1;    t[#t+1] = hand[i] end 
                end
                if flush_count == 4 then
                    table.insert(ret, t)
                    return ret
                end
            end
            return {}
        end
    end
}```
#
SMODS.PokerHandPart {
    key = "straight4",
    func = function(hand)
        local ret = {}
        if #hand < 4 then return ret else
            local t = {}
            local IDS = {}
            for i=1, #hand do
                local id = hand[i]:get_id()
                if id > 1 and id < 15 then
                    if IDS[id] then
                        IDS[id][#IDS[id]+1] = hand[i]
                    else
                        IDS[id] = {hand[i]}
                    end
                end
            end

            local straight_length = 0
            local straight = false
            local can_skip = next(find_joker('Shortcut')) 
            local skipped_rank = false
            for j = 1, 14 do
                if IDS[j == 1 and 14 or j] then
                    straight_length = straight_length + 1
                    skipped_rank = false
                    for k, v in ipairs(IDS[j == 1 and 14 or j]) do
                        t[#t+1] = v
                    end
                elseif can_skip and not skipped_rank and j ~= 14 then
                        skipped_rank = true
                else
                    straight_length = 0
                    skipped_rank = false
                    if not straight then t = {} end
                    if straight then break end
                end
                if straight_length == 4 then straight = true end 
            end
            if not straight then return ret end
            table.insert(ret, t)
            return ret
        end
    end
}```
#
SMODS.PokerHand {
    key = "gay_clog",
    mult = 10,
    chips = 110,
    l_mult = 5,
    l_chips = 45,
    example = {
        { 'S_K', true },
        { 'S_J', true },
        { 'S_T', true },
        { 'S_9', true },
        { 'H_8', true }
    },
    evaluate = function(parts, hand)
        return parts._highest -- Temporary
    end
}```
#

there

#

@normal crest

normal crest
#

well I'm gonna assume the straight part is correct cus it's too much of a hassle to read

ancient mango
#

yea i just copied the smods straight and flush code and hardcoded four finger to 4

oak meadow
#

how would i check if it is your last hand and you have no discards remaining

daring fern
oak meadow
#

ty

normal crest
#

That took so long to type

daring fern
normal crest
#

i blame phone typing

#

You can add it mentally

ancient mango
#

no cause that could let it be like ♠️J♠️10♠️9♠️8 instead of it needing to be like ♠️K♠️J♠️10♠️9♥️8 cause there needs to be both parts but not fully overlapping

normal crest
#

try adding and #hand >= 5 to the condition is my first thought

#

Or the opposite

#

or #hand < 5

ancient mango
#

oh also what is next(part) in smods i forgot

normal crest
#

next is a lua function, just tells you if a table has at least one key/value pair in this scenario

#

I'm sleeping, ask Somethingcom515 for help

ancient mango
#

i encountered a problem

#

works fine(gay clog(yes thats the name of the poker hand)) \/

#

works fine(flush) \/

#

works fine(straight flush) \/

#

but gives gay clog instead of straight \/

#

why

#

@daring fern(srockw told me to ask you)

daring fern
feral topaz
#

what tools are there for testing a mod? i wanted to look into patching overflow and need to put a perkeo and some consumables in the game.

oak meadow
#

you can download DebugPlus to be able to spawn cards and stuff from collection

feral topaz
#

ty!

oak meadow
#

how do i do something if an ante passes with a joker

daring fern
ancient mango
#

or no

daring fern
ancient mango
oak meadow
ancient mango
#

but straight flush and flush worked

daring fern
oak meadow
#

what if i want it to activate every ante

daring fern
oak meadow
#

ty

ancient mango
#

hello?

#

bru

#

can you help me

#

bro

#

is there a rarity level so you cant get like to make it so that a joker is only attainable using debug or like given in a challage

daring fern
feral topaz
#

'shop_voucher' _booster _jokers' not instantiated befoore load is this a common error that i need to do somthing about?

subtle merlin
feral topaz
#

ok thanks

unborn bay
#

basically card stuff gets saved but doesn't get loaded normally as the cardarea for it doesn't exist yet

#

so the game makes one up on the spot when that happens

#

its only really an error that matters for modders when messing around with cardareas

feral topaz
#

with debug plus do i add cards by running some lua code during runtime? is there a breakdown of some basic functions, or should i look through the balatro source code?

feral topaz
#

ah much easier, ty

oak meadow
#
    key = 'america',
    loc_txt = {
    name = 'America',
    text = {
        "Gains {C:mult}+#2#{} Mult every ante.",
        "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)",
        "{C:inactive, s:0.8}'He's on a journey! (bet you 10 bucks nobody gets this reference)'"
}
},
config = { extra = { mult = 0, mult_gain = 15 } },
rarity = 2,
loc_vars = function(self, info_queue, card)
    return { vars = { card.ability.extra.mult, card.ability.extra.mult_gain } }
end,
calculate = function(self, card, context)
if context.joker_main then
return {
mult_mod = card.ability.extra.mult,
message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult } }
}
end
if context.end_of_round and context.main_eval and context.beat_boss and not context.blueprint then
card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.mult_gain
return {
message = 'Upgraded!',
colour = G.C.MULT,
card = card
}
end
}```
w h y
maiden phoenix
#

Get the lua extension if you haven't yet

lament agate
#

HOLY indentation

oak meadow
#

ty

#

sadly, i cant see that nearly as easily because
im working in notepad

subtle merlin
oak meadow
#

yeah ik i should

#

i dont feel like doing it right this instant tho

subtle merlin
#

working in notepad is like taking a driver's test on a bus with a windshield that hasn't been washed in 10 years

#

you can do it, but it isnt easy

feral topaz
#

at very least get notepad++

wintry solar
#

No dont get notepad++

#

If you’re going to install something why would you choose something that also isn’t good enough

oak meadow
#

why do my jokers say "Incompatible" with blueprint, but they do work

manic rune
#

blueprint_compat = true add this to your joker

oak meadow
#

ty

subtle merlin
#

i once again ask for help with UI: im starting to understand ui in general, but no matter what i do nothing pops up or it just crashes. Currently it's the former

#

-# (yes that one line is the only one i have for ui rn)

ancient mango
#

Gimme ideas for jokers that you want in balatro

oak meadow
#

put america from america's journey (jk im doing that one)

manic rune
#

and you really shouldnt modify G.UIT.ROOT directly imo

#

.

#

wait ignore that, im not used to one line ui

manic rune
subtle merlin
#

a table containing what? (the extension i have doesn't show all of it's options)

manic rune
#

-# yes im showing a patch because im currently patching it :3

ancient mango
#

oh

#

im stupid

formal parrot
#

Gang stop using the # we see the fit

#

💔💔

oak meadow
#

how do i make a joker detect another joker

manic rune
#
if next(SMODS.find_card("j_joker")) then ... end

change "j_joker" with whatever key of your joker

oak meadow
#

ty

formal parrot
#

If its a modded joker shouldn’t they use the mod prefix

#

Aswell

ocean sinew
#

thats what he said

manic rune
#

yes but vanilla jokers dont have mod prefix

oak meadow
#

so would it be "tmod_j_joker" for it

#

(if ur prefix is tmod)

knotty orchid
#

any way to spawn vouchers to test them?

daring fern
formal parrot
ocean sinew
formal parrot
#

Oh im stupid

#

Nvm

#

(I haven’t modded in forever leave me alone)😭

ocean sinew
#

hahahahahahahahahaha

formal parrot
ocean sinew
#

I'm gonna cyberbully you for missing a prefix

formal parrot
#

(Mod)

knotty orchid
#

thanks

manic rune
#

rare something's ❌

formal parrot
subtle merlin
daring fern
formal parrot
#

Glad to be 3rd

manic rune
manic rune
#

the progress bar changes whenever this value changes

subtle merlin
#

what if the value i want to check is just a local variable?

gusty iron
#

How would I go about adding a new thing that affects chips gain?

daring fern
toxic hound
daring fern
gusty iron
gusty iron
manic rune
oak meadow
#
    key = 'america',
    loc_txt = {
    name = 'America',
    text = {
        "Gains {C:mult}+#2#{} Mult every ante.",
        "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)",
        "{C:inactive, s:0.8}'He's on a journey! (bet you 10 bucks nobody gets this reference)'"
}
},
config = { extra = { mult = 0, mult_gain = 15 } },
rarity = 2,
loc_vars = function(self, info_queue, card)
    return { vars = { card.ability.extra.mult, card.ability.extra.mult_gain } }
end,
calculate = function(self, card, context)
if context.joker_main then
return {
mult_mod = card.ability.extra.mult,
message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult } }
}
end
if context.end_of_round and context.main_eval and context.beat_boss and not context.blueprint then
card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.mult_gain
return {
message = 'Upgraded!',
colour = G.C.MULT,
card = card
},
-- next line is 115
if next(SMODS.find_card("j_tmod_sweden")) then
card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.mult_gain
return {
message = 'Teamwork!',
colour = G.C.CHIPS,
card = card
}
end
end
end
}```
what is it talking about
manic rune
#

this wouldve been prevented if you didnt use notepad.......

oak meadow
#

probably yes

#

im making everyone around me go insane by using notepad

manic rune
#

like no kidding, you are making it hard for both YOU and US 😭

gusty iron
oak meadow
#

im sorry

#

ill download notepad
i mean vscode

gusty iron
#

I have vscode, the only issue is that its the 2017 version because i used to be a ktane modder

ocean sinew
#

whats ktane

oak meadow
#

im sorry yall im downloading vscode

gusty iron
ocean sinew
gusty iron
#

I'm gonna have to hook into actual SCORE calculation!

#

I'M SO SCREWED!!

manic rune
#

i think itd be easier if you use patching

#

its in the middle of the code lol

gusty iron
wintry solar
#

you cannot hook this function to do what you want

gusty iron
#

👁️👄👁️

manic rune
#

im not kidding theres like 200 lines above this, youd have a MUCH easier time patching

gusty iron
#

Oookay time to learn how to patch

wintry solar
#

y'know whats fun?

oak meadow
#

whats the name of the vscode extension for this

gusty iron
manic rune
#

-# was it their name

manic rune
oak meadow
#

sum packer?

gusty iron
wintry solar
#

no it's that when I merge operators this patch that you're making will break!

#

🥳

dreamy thunder
#

love it when a patch breaks

wintry solar
#

-# it should also in theory make this really easy to modify for you

manic rune
#

gotta love breaking ptaches

oak meadow
gusty iron
#

-# im gonna lose it

manic rune
#

also eremel do u think ease_progress_bar needs to rise vertically too

#

im losing my marbles trying to figure this out

#

sob

subtle merlin
#

still nothing appears

wintry solar
#

yes

#

if you throw your work in a PR I can look at making vertical ones work too

manic rune
gusty iron
#

Is it bad that i made a stake thats literally just taxes

#

(3+ rounds of <10 dollars = game over)

subtle merlin
wintry solar
#

what are you trying to do

#

I can't tell at all from your code

oak meadow
#

so i put my script into vscode and started trying to fix it
everything has fallen apart
notepad worked better

subtle merlin
manic rune
slim ferry
wintry solar
manic rune
slim ferry
#

you cant break it that badly

oak meadow
#

my code worked fine until i added synergy with 2 cards
then everything fell apart

slim ferry
#

then thjats not vscode

manic rune
#

fix the indentation and send it over here

oak meadow
#

im going to restart fully back from when i was using notepad, and remove the synergy mechanic, then re-implement it

slim ferry
#

if you do the same thing twice it wont give a different result just fyi

manic rune
#

there is literally NO circumstance where notepad is better than vsc when you are editing code, unless you hate microsoft or something
-# but in that case, theres a visual studio version thats not associated with microsoft i think?

manic rune
#

their issue seems to be syntax related

oak meadow
#

just hold on im fixing it

subtle merlin
# wintry solar where are you using this event?

the modifiers function of a custom stake (i wanted this mechanic to be tied to a stake n it was the only way i could find), im using a modified version of the timer at the bottom of the event manager smods guide

manic rune
#

so having an ACTUAL code editor can help prevent this

slim ferry
#

if you fix the syntax its not really the same thing anymore

#

at least not the exact same

wintry solar
subtle merlin
oak meadow
#

ok so i put some comments and it broke more
how? i have no clue
it says <exp> expected.
on the line that the comment ends
and it errors out when i try to run it in balatro

#

(just says unexpected symbol near end)

subtle merlin
slim ferry
#

i dont think you can put square brackets there

manic rune
#

this is how you use square brackets

primal robin
oak meadow
#

oh
its done like that in the example code so i just did it like that

#

it fixed nothing

slim ferry
#

did the error change

#

though

oak meadow
#

no

manic rune
#

show another ss

oak meadow
#

same error in vscode, same error in balatro

manic rune
#

ss of MORE code than that please :3

lament agate
#

can you actually mess with the player's frame limit?

wintry solar
oak meadow
primal robin
#

Bepis what are you doing with progress bar thing

manic rune
#

thats not supposed to be there

subtle merlin
oak meadow
#

heyyy it loaded

manic rune
wintry solar
#

it's just a stake that changes one random thing?

slim ferry
#

what stake isnt tbf

manic rune
#

-# because turned out progress bar already exists in balala

lament agate
slim ferry
#

then you should do

dreamy thunder
slim ferry
#

yeah that

lament agate
#

fuck me

manic rune
#

tangents you should be ashamed of yourself

lament agate