#đŸ’»ăƒ»modding-dev

1 messages · Page 408 of 1

red flower
#

or do what you said

#

thats funny

summer furnace
#

so I do SMODS.change_base(suit) right?

normal crest
#

don't forget the card

#

SMODS.change_base(playing_card, suit)

summer furnace
#

oh okay

red flower
#

i hate lua today

summer furnace
#

it works now hooray

#

thanks so much

solemn shuttle
#

say if im making a card that adds/removes an eternal sticker, what do i refer to the sticker as in uhhh
the desc/the info queue
info_queue[#info_queue + 1] = G.P_CENTERS.m_lucky
as opposed to the lucky card center here ofc i copypasted it from another tarot card i made

#

basically im wondering the G.[etc] that defines Eternal Stickers

daring fern
sturdy compass
#

That sounds right

sonic cedar
#

afternoon guys tired_smile
trying to trigger the mult gain with bloodstone
it doesnt work, as in bloodstone will proc and chud won't gain the xmult

did i patch wrong

red flower
sturdy compass
sonic cedar
#

oml

sturdy compass
#

That too

sonic cedar
#

im so dumb lmfao

red flower
#

also dont you need to call the context also?

sonic cedar
#

do i-

#

i do

#

ts so ass

sturdy compass
#

<@&1133519078540185692> get ‘im

sonic cedar
#

the everyone ping is foul you gotta burn

exotic hedge
#

i just missed it damn

sturdy compass
#

Lmao

#

Too slow on the trigger, been there before 😭

karmic creek
sonic cedar
#

TRUE

#

failed aura farm

red flower
#

the code and the text dont say the same thing

sonic cedar
#

you killed bro

sturdy compass
#

Anyways
Honestly you could probably patch in a call to you own custom context instead. Something like SMODS.calculate_context({bloodstone_trigger = true})

sonic cedar
#

wait are you serious

sturdy compass
#

Yes

sonic cedar
#

thats so much easier what

sturdy compass
#

This is a thing you can do lmao

#

Actual game changer learning that function exists

sonic cedar
#

look astra this is like my second ever context 😭

red flower
#

if it's for the chud card i would just use the same context you were using before

sonic cedar
#

ofc

sonic cedar
sturdy compass
#

Oh lmao

sonic cedar
#

i might just be braindead

sturdy compass
#

😭

sonic cedar
#

(im sick)

sturdy compass
#

Ah damn :/

sonic cedar
#

it's fine though it's just why i HATE spring and why the world should SKIP it

#

the beauty is a LIE and a FALSEHOOD

sturdy compass
#

POLLEN HATERS RISE UP

#

GRAHHH

sonic cedar
#

RAAAH

sturdy compass
#

~~I say as I’m lounging on my deck in the sun rn Sob_praying ~~

sonic cedar
#

i hope you have a sneezing fit

#

/j

undone slate
#

Bit lost currently, any leads of where I should start?

sonic cedar
#

did i fix it

sturdy compass
sturdy compass
orchid thunder
#

is it possible to change the font of the text for certin text?

sonic cedar
#

so i can trigger it again later

sturdy compass
#

Could you not just handle that in the chud joker code?

sonic cedar
#

<-- the face of a gal who has no idea

sturdy compass
#

LMAO

#

Actually what does this joker do

sonic cedar
#

oh my god i totally can cant i

undone slate
sonic cedar
#

thats what the pollen and dust is for <3

red star
#

I return after beating my head against this wall for a few hours. Can I use smods to draw new objects, particularly a new CardArea? If so, how? For example, there's a separate CardArea below the Consumables in the Balatro Multiplayer mod, but I can't seem to find where in their code they added it.

Also, sorry for interrupting current conversation.

sturdy compass
sonic cedar
#

you asked if you could after seeing that you can speed_im_watching_ur_stream /lh

sturdy compass
#

Toma what does the chud do and is a +mult for every failed probability check or smthn

red star
#

Okay. Time to do more due diligent research. Thanks for the redirect.

sonic cedar
red flower
# red star I return after beating my head against this wall for a few hours. Can I use smod...

here's where i define my cardareas, you need lovely patches for smods to acknowledge them tho. i can send you those if you want
https://github.com/nh6574/JoyousSpring/blob/ba699ffdde89a3bcd438e1111ecff78c1bdd2924/src/extra_deck.lua#L255

GitHub

Yu-Gi-Oh! Mod for Balatro. Contribute to nh6574/JoyousSpring development by creating an account on GitHub.

sturdy compass
#

Ah ok

sonic cedar
#

there is of course a catch

sturdy compass
#

Cuz I have a card that does the inverse

red flower
sturdy compass
#

Mult gain for failing a check

sonic cedar
#

(this is how you get cain)

red star
sonic cedar
#

wait is balatro multiplayer not smods am i stupid

sturdy compass
#

It is

#

I think

shell timber
#

balatro multiplayer is smods

sonic cedar
#

wait im in the server i can just look

red star
sonic cedar
sturdy compass
shell timber
#

or at least it has smods for stuff like the h. chad rework

sonic cedar
sturdy compass
#

NOTHING EVER HAPPENS

sonic cedar
red star
#

@sonic cedar Yeah, the ultimate point is that I f#cked up, and you caught me. XD /lh

sturdy compass
#

So I take it G.GAME.probabilities.normal gets divided by 10?

#

If so that’s funny asf

sonic cedar
sturdy compass
#

Yep lol

sonic cedar
#

also it was supposed to multiply by 10

#

and it does

#

but for some reason it

#

triggers twice

#

so 2->200

sturdy compass
#

😭

burnt quartz
#

How i can make my mod compatible with JokerDisplay?

sturdy compass
#

What a wonderful question

sonic cedar
#

n was just here

#

come back

#

hi something

red star
sonic cedar
#

check the toml file

long sun
#

what's wrong with my tooltip?

loc_vars = function(self, info_queue, card)
    info_queue[#info_queue + 1] = G.P_CENTERS.tag_double
    return {  }
end,```
#

it's not showing the Double Tag tooltip ^^

sturdy compass
long sun
#

ah ^^" grand

#

tyty

analog spoke
#

I think I messed up doing such a large shift in my mod and start doing gamedev at the same time lmao

red flower
unborn bay
#

chanceper

sturdy compass
#

You get a glimpse

red flower
#

sticker jumpscare

maiden phoenix
#

joyouschance

unborn bay
#

sticker appears for 1 millisecond before getting blasted into oblivion by thunk himself

long sun
#

Keep it up, baby!

unborn bay
#

i can confirm this i have met localthunk in real life

red star
#

Biggest thanks to everybody.

unborn bay
#

(he is local thunk)

sonic cedar
#

Looking cool, Joker!

long sun
sonic cedar
#

OBELISK do_not_say_that_again

shell timber
#

Cool Looking Joker

sonic cedar
#

wait it's not consecutive

long sun
#

:}

sonic cedar
#

(without screwing everything up isaac_grin )

sturdy compass
#

with your context you could pass in a value along with the initial context key and use that

#

like calc_context({key = true, value = 1})

sonic cedar
#

huh

#

OH

#

wai

#

huh

#

OH

sturdy compass
#

It'd be way easier than tracking it with a global variable

sonic cedar
#

ok nvm im lost again

#

ok so

#

instead of the global varible

#

varaibl

#

variable

#

i just only have the calc context thing in there

#

BUT

#

i add a comma

#

and then the vale thinh

#

value

#

thing

#

WHY IS THIS IN MY CARD.LUAAAAA NAAAAAAWWWWWWW

sturdy compass
#

LMAOOOOO

sonic cedar
#

im so cooked

sonic cedar
#

do i just say like

#

false, value = 0

sturdy compass
#

You wouldn't have to reset it with this method I don't think

sonic cedar
#

wait actually

#

bet

sturdy compass
#

Cuz the context is always changing

sonic cedar
#

ok so first of all here's the new patch

#

yay or nay

sturdy compass
#

yay

sonic cedar
#

yay!

sturdy compass
#

and then you can add context.value to Chud's mult within chud itself

sonic cedar
#

same thing with wheel ofc

sonic cedar
sturdy compass
#

Oh I didn't realize the gain wasn't variable lol

#

I thought it was

sonic cedar
#

gulp

sturdy compass
#

you could actually do away with that value stuff entirely and just look for context.chudhit 😭

sonic cedar
#

at least,,, it's easy to undo,,,,,,,,,

hard mica
#

Anyone know how to fix this?

red flower
normal crest
#

it's cut off

red flower
#

why pregnant man

placid star
#

my fav reaction emoji

#

it conveys no emotions or intent

#

and only serves to confuse

red flower
#

mine is this one đŸ•Žïž

sonic cedar
#

mine is this one ⁉

placid star
shell timber
#

☃ is so whimsical

#

one day i dream to be as whimsical as them

red flower
#

it is yeah

shell timber
#

as joyous even

sonic cedar
#

joyous

#

in the spring

placid star
#

i wish i had as much as a spring in my step as them

red flower
#

joyousspring

sonic cedar
#

i miss gifs

sturdy compass
normal crest
#

are gifs disabled

sturdy compass
#

Yes

#

Have been for a bit now

normal crest
#

will the message just get deleted if i try to send one

sonic cedar
#

at least tenor wise

#

idk if sent ones are yet

red flower
#

writing (dot)gif is also banned

sonic cedar
#

stickers,,,, cry_sob

shell timber
#

.‌gif

normal crest
#

myth debunked

sonic cedar
#

I think he meant with a link but that was funny

shell timber
#

no it is just banned

#

try it

sonic cedar
#

im

#

Im looking right at it

shell timber
#

send it yourself

sturdy compass
sonic cedar
#

I’ve seen this before

sonic cedar
sturdy compass
#

The blacklist literally just looks for the (dot)gif link

unborn bay
sonic cedar
#

modding related (rare event) but I had hit the .1 in 2 chance on the first bloodstone hand so I had to double check the probability 😭

red flower
sonic cedar
#

you got fluffed

sturdy compass
#

SOMETHING HAPPENED yaaaaaa

sonic cedar
#

TRUE

shell timber
#

the devious zero width non joiner:

sonic cedar
#

WAIT IT WAS?

#

I SHOULDVE CALLED IT GDI

shell timber
#

‌

red flower
#

you didn't have to be so rude about it tho

normal crest
shell timber
#

my apologies

hard needle
sonic cedar
hard needle
#

wait cant i do this

sonic cedar
#

_ _

hard needle
#

aw

#

_ _

shell timber
#

the devious zero width non-joiner:

daring fern
#

‎

sonic cedar
#

just don’t use more than 2 ever

#

problem solved

#

thumbs up sticker

sonic cedar
#

astra it

#

it triggered after

#

8 *hands of

#

flush five heart kings

sturdy compass
#

😭

sonic cedar
#

HOWEVER 😭

sturdy compass
#

LMFAO

sonic cedar
#

almost lost the blind btw

sturdy compass
#

oops

sonic cedar
#

no that guy doesn-

#

oh my god do i make it affect oops

sturdy compass
sonic cedar
#

i still gotta do maximus 😭

sturdy compass
#

Do it once 1.0 comes out

#

(soon)

sonic cedar
#

i got so many mods i wanna catch up on

sonic cedar
sturdy compass
#

No but like actually

sonic cedar
#

oh i gotta update my day count

sturdy compass
#

It's 4 card arts I'm waiting on lol

sonic cedar
#

i just have to fix the ijiraq patches

#

somehow

sonic cedar
sturdy compass
#

Oops should actually work fine out of the box since it’s multiplicative too

sonic cedar
#

ye

#

0.2 FINALLY it WORKS

sturdy compass
#

yeye

sonic cedar
#

(You now need 5 copies of oops for a guaranteed 2 in 2)

sturdy compass
#

funne

sonic cedar
#

next is hallucination

#

luckily the orchard should be mad east

#

what am I SAYING

#

the PATCH should be mad EASY

sturdy compass
#

LOL

sonic cedar
#

if this is sickness hiding in allergies im gonna be so pissed

sonic cedar
#

(Naw really?)

#

oh my god I knew I wasn’t crazy

#

the INTELLISENSE

#

is turning them into QUOTE MARKS

snow vale
#

oh so then do i use SMODS.blueprint_effect and what do i add then?
(sry for late answer i was having dinner :p)

daring fern
snow vale
#

oh i see

#

but i want 6 different jokers to act, how do i do it?

#

7

#

actually

daring fern
snow vale
#

then uh

#

do i simply code each joker by hand?

daring fern
# snow vale 7

You want a joker to have the ability of seven random jokers?

daring fern
sonic cedar
#

doesn’t RNJoker do something like this

snow vale
#

i want a joker that each round it changes what joker it uses out of 7 different jokers that are in the game, but you dont have to have em in the joker slots

daring fern
#

I meant you would just call its calculate instead.

snow vale
#

oh

daring fern
snow vale
#

do i use like joker:calculate_joker(context)?

sonic cedar
#

yeah I know but is this similar in execution i mean

sonic cedar
#

oh ok

#

Carry on

daring fern
snow vale
#

using smods.blueprint_effect

#

?

#

or how

daring fern
snow vale
#

smods.joker?

daring fern
snow vale
#

okk

#

oh do i create a function?

daring fern
snow vale
#

ah

#

okk

sonic cedar
#

was confused as to what happened to my game and i started panicking

#

(i opened the unmodded instance)

plain gazelle
#

Is there a context for a Joker/Consumable being added to Joker/Consumable slots? (Specifically added, not just bought. I want to account for cases with Judgement, Vagabond, Seance, etc)

hard needle
#

how do i add a tag to info queue

daring fern
hard mica
# normal crest can you show the full code

SMODS.Joker{
    key = 'luckiestjoker',
    atlas = 'luckiestjoker',
    no_collection = true,
    discovered = true,

    in_pool = function (self, args)
        return false
    end,

    loc_txt = {
        name = 'Luckiest Joker',
        text = {   "Gains 10 {C:attention}Lucky Cards{} " ,
                    "at end of an ante",}
        },

    calculate = function (self, card, context)
        if context.end_of_round and context.main_eval and G.GAME.blind.boss then
            for i = 1, 10, 1 do
                local _card = create_playing_card({front = pseudorandom_element(G.P_CARDS, pseudoseed('JNKR_luckiestjoker')), center = G.P_CENTERS.m_lucky}, G.deck, true, nil, { G.C.SECONDARY_SET.Enhanced }, true)
                return {
                func = function()
                    G.E_MANAGER:add_event(Event({
                        func = function()
                            _card:add_to_deck()
                            G.deck.config.card_limit = G.deck.config.card_limit + 1
                            table.insert(G.playing_cards, _card)
                            G.hand:emplace(_card)
                            _card:start_materialize()
                            G.GAME.blind:debuff_card(_card)
                            G.hand:sort()
                        
                            return true
                        end
                    }))
                    SMODS.calculate_context({ playing_card_added = true, cards = { _card } })
                end
            }
            end
            
           
        end
    end
}

#

heres the full code

daring fern
normal crest
sonic cedar
# sturdy compass LOL

you wouldn’t happen to know how to spawn boosters would you
Ctrl c didnt work

hard needle
#

then into booster pacs

#

and then click 3

#

or someing

normal crest
sonic cedar
#

oh my god ctrl 3

normal crest
#

i'm looking at cert's code and it's not the same at all

hard mica
snow vale
# daring fern Yes.

ok i got the function, now what parameters do i give on calculate? (i mean, in the create_fake_joker inside calculate)

hard mica
sonic cedar
#

does anyone know anything about a field index crash when you click on your deck??

normal crest
daring fern
pure salmon
#

what variable tracks how many hands the player has at the start of a blind

normal crest
#

it's a value in G.GAME.round_resets

#

maybe it's G.GAME.round_resets.hands

pure salmon
#

alright

hard mica
normal crest
#

once you return you exit the function

hard mica
#

so i return it outside the for loop then?

daring fern
sonic cedar
# sonic cedar

apparently it's the copy card function which i uhhhhhhhhh dont use anywhere? was it just a bug?

red flower
sonic cedar
#

why 😭

red flower
#

idk

sonic cedar
#

i didnt put anything in the- is this because i tried to ctrl c the booster pack

#

did i yoshiskip (smw ver)

daring fern
sonic cedar
#

ill see if it happens again but i dont think it was me

#

this time

#

oh no it’s consistent

midnight coyote
#

how do i check if a given joker is in a certain pool?

daring fern
unborn bay
sonic cedar
daring fern
snow vale
normal crest
midnight coyote
unborn bay
#
for k, v in pairs(G.P_CENTER_POOLS[poolname]) do
    - ...
end
midnight coyote
#

alright

#

i have a joker that gains strength depending on how many jokers are in a certain pool

unborn bay
#

you can also just check for the center's pool value but that doesn't work if a center was injected into a pool somewhere else

#

hence this

sonic cedar
midnight coyote
#

so k would an instance of a card in that pool

#

correct

#

and then V would be the contents of the card table

tired skiff
#

i have a joker that kinda works like anchient joker but when the card is scoring the mult isnt above the card is below the joker

how do i change this

snow vale
#

@daring fern it aint working 😭
can you fix it plz

daring fern
midnight coyote
#

i need to check for every joker in G.jokers.cards to see if it is matching up with any card in the pool

red flower
#

hmm how bad would it be to have a reference in every center to its objecttypes

midnight coyote
#

could i do v.label?

tired skiff
daring fern
normal crest
unborn bay
#

v is the actual value

midnight coyote
#

okay thank you

sonic cedar
tired skiff
midnight coyote
#

so if G.jokers.cards[i] == v then

#

would work?

red flower
midnight coyote
#

assuming i is defined in an upper for loop

unborn bay
sonic cedar
red flower
normal crest
snow vale
normal crest
#

G.jokers.cards[i].config.center.key == v.key

unborn bay
#

center - definition of an object
card - instance of an object as a card

daring fern
unborn bay
#

firm reminder

midnight coyote
midnight coyote
#

right?

tired skiff
#

what is the hotkey to restart the game i forgot :<

red flower
#

i think thunk is really cool for naming them front center and back but that has caused modders a lot of confusion

midnight coyote
sonic cedar
snow vale
tired skiff
#

yeah ty

daring fern
normal crest
tired skiff
#

yeah i know i i replied to the wrong message my bad

gentle rain
#

is the game's current round stored in G.GAME.round_resets

#

?

tired skiff
#

sry :<

daring fern
tired skiff
#

god i sound so rude sorry

sonic cedar
#

where

normal crest
#

when you use SMODS.Joker you're making a center, that later on can be applied to a card

midnight coyote
snow vale
midnight coyote
#

genuinely

daring fern
# snow vale

No, I meant put local where you define the function.

snow vale
daring fern
snow vale
#

wait a second

#

wait

daring fern
untold vigil
#

Syntax error

snow vale
daring fern
snow vale
daring fern
sonic cedar
#

for some reason

daring fern
snow vale
silver tusk
#

Does anyone know how I would find the value of the current best hand played in a run?

sonic cedar
urban wasp
#

is there a way to make a joker return a bunch of things in succession? i want it to be like this:
"-1" (chip; balatro code automatically doesn't specify if it is chips, only mult)
"-1 Mult"
"Ă·1" (ditto)
"Ă·1 Mult"
"quote"

the code that i tried to use is listed below, which just didn't work at all:

return {
    { chip_mod = lenient_bignum(card.ability.extra.chips) * -1, message = "-" .. lenient_bignum(card.ability.extra.chips) * -1, colour = G.C.CHIPS },
    { mult_mod = lenient_bignum(card.ability.extra.mult) * -1, message = "-" .. lenient_bignum(card.ability.extra.mult) * -1 .. " Mult", colour = G.C.MULT },
    { chip_mod = 1 / lenient_bignum(card.ability.extra.Xchips), message = "Ă·" .. lenient_bignum(card.ability.extra.Xchips), colour = G.C.CHIPS },
    { Xmult_mod = 1 / lenient_bignum(card.ability.extra.Xmult), message = "Ă·" .. lenient_bignum(card.ability.extra.Xmult) .. " Mult", colour = G.C.MULT },
    { message = quote, colour = G.C.RARITY["crp_self-insert"] }
}

quote is defined earlier in the joker's code fyi

midnight coyote
#

how do i grab a joker’s sell value

snow vale
silver tusk
urban wasp
snow vale
#

wait no

urban wasp
#

is there like an example joker or something that i could use?

daring fern
#

return {extra = {extra = {extra = {extra = {}}}}}

red flower
urban wasp
#

ooh ok

normal crest
#

okay that's indentation hell

#

there needs to be a better way to do that

sonic cedar
#

not doing it catsmirk

gaunt thistle
#

indentation is fine

normal crest
#

I mean they want to send 5 messages in succession, that's gonna be hard to look at

sonic cedar
#

lua also doesn’t care abt indentation iirc

normal crest
#

for my brain at least

gaunt thistle
#

there's a difference between unavoidable indentation and indentation that's the result of weird code

#

but yeah, indentation is pretty arbitrary in lua

normal crest
#

you could definitely avoid this indentation by adding the ability to send a list of effects instead of extra! extra!

normal crest
#

their current level, chip and mult and how much they increae each level

plain gazelle
#

This got buried under a chunk of code so I'll ask again

Is there a context for a Joker/Consumable being added to Joker/Consumable slots? (Specifically added, not just bought. I want to account for cases with Judgement, Vagabond, Seance, etc)

sonic cedar
red flower
daring fern
normal crest
sonic cedar
#

get ready to read all about it then

red flower
#

why would i want to send 10 messages

silver tusk
#

like this value?

plain gazelle
gaunt thistle
#

I mean, yeah, in extreme cases you should probably just write a helper that builds the table for you

red flower
#

god designed extra tables for use in my transfer abilities feature only

normal crest
normal crest
daring fern
red flower
silver tusk
#

Yeah i didnt know how to say it differently other then a screenshot 😂

normal crest
silver tusk
#

i cant find where that value is stored

plain gazelle
red flower
#

you can probably just do SMODS.calculate_effect as well if you're not using repetitions exactly

unborn bay
#

i wonder if you can make an extra table lead back to itself

daring fern
gaunt thistle
unborn bay
#

actually no thats a terrible idea

gaunt thistle
#

I've done my best to keep lovely from turning into indentation hell haha

sonic cedar
red flower
unborn bay
#

i will use this when someone attempts to use a joker that retriggers 1e300 times

gaunt thistle
#

UI code is always bad

#

especially flexbox ui code

normal crest
#

i will forgive your ui code

gaunt thistle
#

not much you can do about it

unborn bay
#

wtf!

#

rust!!!!

#

unbelievable

gaunt thistle
#

crab

normal crest
urban wasp
#

so

#

would this atrocity work

sonic cedar
#

gulp

urban wasp
#
return {
    chip_mod = -lenient_bignum(card.ability.extra.chips),
    message =  "-" .. lenient_bignum(card.ability.extra.chips),
    colour = G.C.CHIPS,
    extra = {
        mult_mod = -lenient_bignum(card.ability.extra.mult),
        message =  "-" .. lenient_bignum(card.ability.extra.mult),
        colour = G.C.MULT,
        extra = {
            Xchip_mod = 1 / lenient_bignum(card.ability.extra.Xchips),
            message = "Ă·" .. lenient_bignum(card.ability.extra.Xchips),
            colour = G.C.CHIPS,
            extra = {
                Xmult_mod = 1 / lenient_bignum(card.ability.extra.Xmult),
                message = "Ă·" .. lenient_bignum(card.ability.extra.Xmult) .. " Mult",
                colour = G.C.MULT,
                extra = {
                    message = quote,
                    colour = G.C.RARITY["crp_self-insert"]
                }
            }
        }
    }
}
red flower
normal crest
#

lovely needs to be remade now

urban wasp
#

i'm just gonna test it

gaunt thistle
#

dang time to refactor things so each source file is only 100 lines long

#

and I need to make everything an interface

#

and test every line of code

urban wasp
#

it works

outer basalt
#

looking at the vanilla remade glass enhancement but i do not understand how the probabilities thing works 😭

wintry solar
#

đŸ€”

urban wasp
sonic cedar
#

I don’t know 😭

red flower
gaunt thistle
#

no offense

#

I admire your tenacity

urban wasp
#

well like

#

is there any way to make it better 😭

unborn bay
#

you can REALLY condense most of the extra tables

red flower
#

if it works it works

gaunt thistle
#

yeah I mean if it works don't change it

sonic cedar
tired skiff
#

ignore the $0 issue but how can i word this better?

unborn bay
#

a reminder that xchips_message and xmult_message exists to give xchips and xmult different messages

wintry solar
#

does simply not doing chips = -lenient_bignum(bla) not work?

unborn bay
#

or was it xchip_message

urban wasp
unborn bay
#

it exists

red flower
#

it's in the docs kinda

#

not explicitly

normal crest
#

i was about to mention undocumented features

unborn bay
#

this way you can combine these into one single return table

normal crest
#

but i guess if it's in the docs then good

urban wasp
#

could i get an example

sonic cedar
gaunt thistle
#

you could probably improve it with a lovely patch tbh

urban wasp
#

i've never lovely patched in modding and i don't plan to yet

red flower
#

that's what big lovely wants us to think

unborn bay
silver tusk
normal crest
unborn bay
#

you WILL use a lovely patch one day

urban wasp
gaunt thistle
#

release your inhibitions, feel the rain on your skin

urban wasp
hardy wasp
#

or whatever

long sun
#

hi again ^^
i'd like to make a menu for making things with my resource cards — where can i get started with learning how to make modded menus?

sonic cedar
urban wasp
long sun
#

cheers ^^

gaunt thistle
hardy wasp
sonic cedar
urban wasp
#

i'm TRYING 💔

unborn bay
#

fix it fix it fix it fix it or whatever

gaunt thistle
#

fix it with a lovely patch

urban wasp
#

No.

sonic cedar
#

hit the big fix it button on the wall

gaunt thistle
#

dang

red flower
hardy wasp
urban wasp
gaunt thistle
#

nice work

hardy wasp
#

i press the button and my code instantly works

red flower
#

ty ❀

hardy wasp
#

doesnt fix much else tho

gaunt thistle
#

impossible unless you're writing haskell

hushed field
#

Embrace lovely patches, then after you've made a bunch, edit them out because they're unnecessary

midnight coyote
#

how do i spawn tags

untold vigil
#

How do I set the (card.ability.extra.invis_rounds >= card.ability.extra.total_rounds) true?

daring fern
primal robin
#

Lumaflute what's happening here

gaunt thistle
untold vigil
#

I have been told that is always false and I have no idea to set it to true

midnight coyote
hushed field
sonic cedar
hardy wasp
normal crest
midnight coyote
red flower
#

anyway I'm going to PR the objecttypes thing and let Eremel and ewju deal with the consequences

normal crest
#

makes it easier to read for all of us trying to help you

red flower
# hushed field Objecttypes thing?

ive seen multiple people want to either have a look up table for cards in an objecttype or that cards themselves have a reference to their objecttypes

midnight coyote
#

how would i check if the blind defeated is a boss blind

hushed field
scarlet imp
red flower
urban wasp
normal crest
red flower
normal crest
#

welcome home

hushed field
sonic cedar
normal crest
#

welcome home

sonic cedar
#

ok thanks

wintry solar
#

who was planning on working on 'rates' for individual jokers?

hardy wasp
sonic cedar
#

H

hushed field
sonic cedar
wintry solar
#

can I see it?

primal robin
#

What about stickers on booster packs?

normal crest
hushed field
#

Just still testing some edge cases before I make it generic enough to PR it

red flower
hushed field
urban wasp
sonic cedar
#

you can keep it actually im full

untold vigil
red flower
#

Invisible Joker (VanillaRemade) sounds like the wiki disambiguation

untold vigil
#

Also it seems that I can't write or erase a single line of code in a afternoon cuz something happens

normal crest
hushed field
normal crest
#

right

#
if context.end_of_round and context.main_eval and not context.blueprint then
  card.ability.extra.invis_rounds = card.ability.extra.invis_rounds + 1
end
#

something like that

hushed field
#

If I PR'd it I'd wanna set it up with some clear patch targets as well, and ways to alter the weight logic through other objects, but because it's not a Kino feature, I hadn't really given it thought for my specific implementation

gentle rain
#

does anyone know the cause of this crash

#

i cant find what the error in my code is

gaunt thistle
#

how many of you would use regex lookarounds? I've been throwing around the idea of adding support for them in a future release.

normal crest
gentle rain
hushed field
#

I'd use it if other people would convince me it's useful, and I figure out what it is after googling it, haha

unborn bay
normal crest
#

also don't forget to run the lua formatter

gaunt thistle
#

like, it's really easy to do so

untold vigil
gaunt thistle
untold vigil
#

I have to work, can't code without anything else happening

#

Why did I think on making the mod frfr

gentle rain
#

removing my mod DOES let it run so its def an issue with my mod

#

so weird

midnight coyote
#

whats the context for when any card gets destroyed

red flower
midnight coyote
red flower
#

you can

midnight coyote
#

k im doing that then

wintry solar
gentle rain
normal crest
#

yep there you go

#

text is meant to be a table

#

you forgot the {}

gentle rain
#

ooooh lolol

hushed field
#

what do you mean by tags?

wintry solar
#

like it just reads the rarity property of a card, right?

hushed field
#

yeah

#

it's agnostic of implementation, so it works on any object

midnight coyote
#

this should work, right?

wintry solar
#

so how does it work to increase the rate of an individual rare joker spawning?

normal crest
hushed field
red flower
normal crest
#

nom nom

midnight coyote
red flower
red flower
#

but the idea is fine, you just need to add some flag in one context

midnight coyote
#

this context im making feels like it would have a good place in base SMODS

wintry solar
#

a context on dissolving cards is too generic to be useful

wintry solar
red flower
#

havent read Ice's in detail

wintry solar
#

so if I call get_current_pool('Joker') I'd get back a table of all rarities of jokers with keys and weights?

red flower
#

yes

wintry solar
#

hmmm, that's an interesting choice

#

does that mean if I had a rare joker with an astronomically high weight, it would lower the chances of common/uncommon spawns?

red flower
#

i mean i think we both made a different function just to not mess up with get_current_pool haha

wintry solar
#

okay

red flower
#

but it would also lower other rares so i dont think it would break the basic rarity logic

normal crest
#

wouldn't you want each joker to have its weight on its respective rarity only

red flower
wintry solar
#

I don't think that's how a weighting system should function

#

is this how the kino one works @hushed field ?

normal crest
hardy wasp
#

Is there a function that runs when a joker is removed? (ex. destroyed or sold)

hushed field
#

it doesn't normalize on a per rarity basis, no, so making something more common will make everything else less common, regardless of rarity. But it's one of those things that's definitely possible to account for, due it using a separate function, so you could still just use the regular rarity generation chances before you enter the complex get pool function, just with a rarity key instead of a generic key

red flower
#

yeah if you want it to be relative to its rarity you would use the base rarity weight in your calculation

wintry solar
#

Because weighting and rarity are two different properties. Weights should only effect the chance of a card spawning once it's spawning criteria is in play. If I set a rare to have a weight of 1000000, that should only take effect when the game has already decided to spawn a rare joker.

hushed field
#

I did consider trying to properly normalize it, generally, but to truly minimize the way odds influence each other is a maths challenge that my linguistics-brain isn't capabel of understanding, haha

untold vigil
hushed field
#

For my own implementation it doesn't really matter because I don't want to introduce effects that would shift the odds in noticable ways, due to the size of the general joker pool. But I can definitely see why you'd wanna maintain the rarity selection first, as that's how vanilla does it. But that'd be very easy to set up

red flower
#

It will only be messed up when a modder spcifically decides to mess it up, and that should be to modders discretion imo

untold vigil
long sun
#

hey, at least something worked! :D

wintry solar
#

I mean I can understand why you'd want it your way too, but I'm coming at it from a generic, smods pov

#

so that we can do this

#

and it's consistent in it's implementation across all objects

untold vigil
#

It seems it didn't work

normal crest
# untold vigil It seems it didn't work

oh right, you want

if context.end_of_round and context.main_eval and not context.blueprint then
  -- the increase line

  if card.ability.extra.invis_rounds >= card.ability.extra.total_rounds then
    -- the destroying and spawning
  end
end
untold vigil
midnight coyote
#
calculate = function(self,card,context)
        if context.individual and context.cardarea == G.play then
            if SMODS.has_enhancement(context.other_card, "m_charcuterie_cursed") then
                context.other_card:set_ability(nil)
                return {
                    message = "Cleansed!"
                }
            end
        end
hushed field
# wintry solar I mean I can understand why you'd want it your way too, but I'm coming at it fro...

I think it depends on what you think spawn chances should affect. I also think it's one of those things that are hard to judge once you've touched the code. The game never states that the rarities are set pools, rather than generic spawn chances, so I think how you visualize what 'this rare joker is twice as common' means is going to depend on what definition you've internalized. But setting it up as a pool shouldn't be hard, you'd just pre-generate the rarity before you call that function

midnight coyote
#

why is this crashing?

normal crest
#

cus you're setting the ability to nil

midnight coyote
normal crest
#

if you want to remove the enhancement you need to :set_ability(G.P_CENTERS.c_base) iirc

midnight coyote
#

ah

normal crest
hardy wasp
#

How can I run something (ex; adding to multiplier of round) when a joker is removed? (sold, destroyed by other joker, etc.)

red flower
untold vigil
red flower
#

i already implemented it tho so i dont care :3

normal crest
#

no, that's not the last one i sent

wintry solar
#

don't worry N I will break your implementation 🙃

untold vigil
#

Remove it?

hardy wasp
red flower
#

also it does a bunch of other yugioh things

paper wharf
#

I need some help, my game won't boot

#

Oops! The game crashed:
Syntax error: blind.lua:579: unexpected symbol near '+'

Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-0509c-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.7.1
Platform: Windows

Stack Traceback

(3) C function 'function: 0x1fe6ba90'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 886
(6) global C function 'require'
(7) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x1fe64798 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x1fe67728, gammacorrect:false, title:Balatro, externalstorage:false (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(8) global C function 'xpcall'
(9) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(10) global C function 'xpcall'
(11) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
inerror = boolean: true
deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])

wintry solar
#

damn you got me

hushed field
unborn bay
#

hi eremel smods

untold vigil
midnight coyote
hushed field
#

There's a reason I didn't steal N's code entirely, but actually had to port it 😛

#

I wouldn't be doing work if a better coder had already done all of it for me, haha

red flower
normal crest
# untold vigil

okay can you copy the last 2 if statements and send them here as text, i'll just send what you have to put

paper wharf
untold vigil
normal crest
#

not that

#

from your own code

chrome widget
#

How can I tell when a UI node is hovered over, versus a card?

untold vigil
#
            card.ability.extra.invis_rounds = card.ability.extra.invis_rounds + 1
        end
        if context.individual and context.cardarea == G.play and
            (card.ability.extra.invis_rounds >= card.ability.extra.total_rounds) then
            SMODS.destroy_cards(card)
            SMODS.add_card { key = 'j_sab_spade_king' }
            return { message = "Fusion Queen! Evolution King!" }
        end
    end,```
#

I think this were the ones

normal crest
#
if context.end_of_round and context.main_eval and not context.blueprint then
    card.ability.extra.invis_rounds = card.ability.extra.invis_rounds + 1

    if card.ability.extra.invis_rounds >= card.ability.extra.total_rounds then
        SMODS.destroy_cards(card)
        SMODS.add_card { key = 'j_sab_spade_king' }
        return { message = "Fusion Queen! Evolution King!" }
    end
end
hushed field
# red flower arent both the same? im bad at math

Maybe I'm getting confused by my own napkin math, but no, right? I think it's easier to grok if you forget about the fact that there are multiple rare cards. If there's a 90% chance of a common, and a 10% of a rare, and each has 2 jokers in there, it'd treat the spawn chances as such:
Common A - 45%
Common B - 45%
Rare A - 5%
Rare B - 5%

if you say 'Rare B is twice as common' and treat that as applying generally, it'd turn into:
Common A - 41%
Common B - 41%
Rare A - 4.5%
Rare B - 9%

while if it's only adjusting odds in pool, it'd turn into:
Common A - 45%
Common B - 45%
Rare A - 3.33%
Rare B - 6.66%

The actual math is fuzzier than that because it involves squashing the odds down, and you can't actually keep odds symmetrical when you change the size of the total pool, but I tried to read an article on it and decided it wasn't going to matter enough for me to truly understand, haha

normal crest
#

Honestly the adjusting odds per rarity pool makes more sense to me

gentle rain
#

hmmmmmm, this is supposed to mark each card with a certain suit, then randomly reset that suit in context.before, then cards with that mark give 2x mult when scored, but it keeps crashing because context.other_card is a nil value

midnight coyote
normal crest
#

you're not making rare jokers more common, you're making a specific rare joker more common

midnight coyote
#
function Card.start_dissolve(self,dissolve_colours,silent,dissolve_time_fac,no_juice)
  SMODS.calculate_context({card_killed = true})
  return sd_ref(self,dissolve_colours,silent,dissolve_time_fac,no_juice)
end
wintry solar
wintry solar
normal crest
#

so other card is not always defiend

red flower
hushed field
midnight coyote
gentle rain
red star
#

Thinking out loud here for a moment; feel free to ignore.

  • Extra Deck is not visible unless called.
  • Field Spell is where I want my object to be, so I have that reference.
  • I only want the object to appear for a certain deck, so I put the calling event in the backs section for that specific deck, and I'll have to have something remove the object when that deck is not in use.
  • Extra Deck and Field Spell have an independent Joker limit... how was that obtained?
midnight coyote
#

so how would i check to see if im currently in a run before calculating the context

wintry solar
red flower
#

not just because im lazy (i am)

midnight coyote
#

wait when is G.GAME initialized

#

at the start of a run right

normal crest
#

idk when but it's defined outside of a run too

midnight coyote
normal crest
solid mesa
normal crest
midnight coyote
#

i could check for a variable like G.GAME.Risk that i KNOW FOR A FACT is defined at the start of a run because i defined it myself

normal crest
midnight coyote
#

or alternatively i could set up something in the start_run function so i’m not relying on a random variable i defined there

#

just like G.GAME.in_run = true or smtn

wintry solar
untold vigil
hushed field
normal crest
# untold vigil

add one more end between those two above loc_txt and just run the formatter, it'll make it look nice for you

#

and omg please learn lua next time

hushed field
#

I think at the vanilla joker pool's size, it's only really going to matter if you make anything have a weight that's multiplied by a few tenfolds. At which point, I think you may have been better off just using the forced_key option 😛

red flower
#

yeah i designed this system for my 300+ (soon 400+) jokers mod

wintry solar
#

I think I'm settling on letting any smods object able to have a weight = X property, where the default value is 5, that will effect it's chance to spawn within whatever pool it finds itself in

sonic cedar
#

oh my god what the peak

untold vigil
hushed field
#

but I guess, in the same way that reducing the pool to 4 jokers for an example, I do think making the phrasing example way extreme also illustrates why it can feel unintuitive. If you read "Baron is one million times as likely to spawn', and you have one reroll, I think most people would be surprised if it turns out baron doesn't show up when they click reroll

normal crest
untold vigil
normal crest
#

the 2nd if is meant to be inside the first if

hardy wasp
#

Is there a way to remotely trigger a game over when a function is run?

red flower
#

SMODS.poll_object gives you an edition? put it in the shop

#

just the edition

maiden phoenix
normal crest
#

that's kinda how I see it

wintry solar
red flower
#

damn cant have new ideas anymore theyre all taken by ortalab

hushed field
red flower
#

{C:attention}baron{} is more {E:2,C:edition}more likely

hardy wasp
normal crest
sonic cedar
red flower
#

honestly i might

normal crest
#

it's better to be more specific than to save up on some screen space i guess

wintry solar
#

yeah I think that's the correct conclusion here

wild escarp
#

Would I be able to have a challenge start you off with just one random playing card?

sonic cedar
untold vigil
#

I'm not silly
I'm directly idiot

#

Omg I took so much time to understand

red flower
#

the center.object_types part

hushed field
#

Would it be too complicated if there's just two weights that can be altered? So the modder can decide which effect they want?

wintry solar
red flower
#

adds a reference to the object types in the center

#

so you dont have to iterate G.P_CENTER_POOLS.key

normal crest
hushed field
#

I think I do basically that in Kino, for genres

wintry solar
#

oh this is in SMODS.ObjectType?

red flower
#

yes

red flower
wintry solar
#

used to check if the center is in a specific object type, right?

normal crest
#

idk if that's sarcastic :(

red flower
#

yes

red flower
normal crest
#

also would modifying the pools table that centers have cause issues

untold vigil
#

Nvm the struggles continue

normal crest
#

instead of adding a new one

red flower
#

because i dont know :3

wintry solar
#

seems reasonably useful

untold vigil
hushed field
#

Caught in 4k

midnight coyote
#

could i substitute a blind object for card?

#

in a calculate function? because im trying to make something like the arm

normal crest
#

yeah it's way better than having to loop through a possibly very very long list every time you want to check if a center is in a pool

red flower
unborn bay
#

aka once

untold vigil
wintry solar
#

oh weightings, I have not missed you

midnight coyote
#

it wont work cuz its not the same type, just realized.

normal crest
#

you need to update to the latest release

untold vigil
#

Just realized

rapid stag
#

ok so the progress with my cursed alchemy - i've found a pretty clean way to remove the quit button from the main menu.

and i've worked out how to add it to options, but i need to... uh, make it not look like this. what do?

hushed field
# wintry solar seems reasonably useful

It's very helpful for allowing Crossmod pool compatibility to not be as invasive in your own code. You could set up a specific file for Cryptid compat, instead of having to adjust your code to account for it, for example

normal crest
hushed field
wintry solar
#

same and I wrote the damn thing đŸ€Ł

unborn bay
#

weights,,,,,

rapid stag
#

...wait, this is just in a G.UIT.ROOT cirDerp oh god

silver tusk
#

Does anyone know how I could make it so this function is called after defeating the boss blind

red star
untold vigil
#

Thank yall... Man I feel demotivated

midnight coyote
#

okay

#

how do i level down a hand similar to arm

red flower
sonic cedar
sonic cedar
midnight coyote
untold vigil
#

So I can either make better next time or fumble it up less times

hallow slate
#

How do I edit a card upon drawing it to hand?

red flower
midnight coyote
#

oh nvm

#

im a fool

rapid stag
#

IT DOESN'T EVEN CLOSE THE GAME muiminCry

midnight coyote
sonic cedar
red flower
#

im adding the blinds to vanillaremade tomorrow

#

using blind calc

midnight coyote
#

MY SAVIOR

sonic cedar
#

I wonder if I can change the total in the same way

Like 1 in 2 to 1 in 4

Probably possible

red flower
#

btw im really thankful to wilson for making it so you can move the cursor

normal crest
#

oh my god

wintry solar
#

oh my god tell me about it

#

it's so good

sonic cedar
#

It’s peak

normal crest
#

no longer need to write evals in a text editor before pasting them ingame

sonic cedar
#

TRUE

hushed field
sonic cedar
#

won’t need this notepad anymore FINALLY

north swallow
#

how would i make it so it does the blueprint effect 2 times?

rapid stag
#

nope, still weird. no clue what's going on

normal crest
rapid stag
normal crest
#

oh

#

it's just the position now?

rapid stag
#

yes

normal crest
#

try putting the button as a node of a row

#

{ n = G.UIT.R, nodes = { button here } }

rapid stag
#

it is

normal crest
#

oh uhmm

wintry solar
#

not in that code it isnt

normal crest
#

i think the UIBox function thing returns it in a row

#

that's what i interpreted

wild escarp
#

What are all the suit and rank keys I should be using for cards in a challenge deck?

sonic cedar
#

whwre is it

rapid stag
#

i see

drifting vapor
#

Small Question! how would i detect if a card is being retriggered or not for a joker?

brazen shard
#

Yo, sorry if I'm intruding in a conversation, but I'm trying to make a texturepack for my friend and me, and thought it would be nice to use Malverk to be able to turn it on and off. I've already gotten it to work without it, but wanna try to make it toggleable.

I'm using the Seal Seals mod (https://www.nexusmods.com/balatro/mods/438?tab=description) as a start point, but don't know exactly how to get the texture to replace the cards instead of the seals as the seal seal mod does.

Anyone got any quick solutions, or maybe just some better malverk documentation, cuz this line on the github doesnt tell me anything without finding an actual wiki? The wiki I've found is basically just "Malverk is a thing that exists. I'm not gonna tell you how to use it tho" (https://balatromods.miraheze.org/wiki/Malverk)

Nexus Mods :: Balatro

A mod that turns seals into seals :)

Modded Balatro Wiki

Malverk is a texture pack manager developed by Eremel_. It was first released on October 29, 2024.
Malverk adds a new UI in the menu that allows seamless management of installed Malverk-compatible texture packs. It also provides an API to add Malverk compatibility for custom textures.
See Category:Malverk-Compatible Texture Packs for supported t...

normal crest
#

i think all you have to do is remove that from the function

#

@rapid stag

rapid stag
#

ahhhh, i was wondering about that cirDerp

yeah that fixed it

wintry solar
sonic cedar
north swallow
brazen shard
wintry solar
#

that's not what malverk is for

brazen shard
#

ah okay, so im trying to use a hammer to turn a bolt, got it

sonic cedar
red flower
brazen shard
red flower
sonic cedar
#

aure’s cat is so cute if we’re being fr

red flower
#

i never remove embeds from smods wiki

sonic cedar
#

Why would you

long sun
#

i'd like to add a button between Run Info and Options — how would i go about doing that?

sonic cedar
#

aure’s cat

normal crest
#

people are more likely to look at them thanks to the cat

sonic cedar
wild escarp
long sun
#

proooobably? i'm unsure if there's a better method that i'm unaware of though

red flower
#

or at the top but the logic should be the same